@omnimedia/omnitool 1.1.0-76 → 1.1.0-77
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/README.md +54 -4
- package/package.json +2 -1
- package/s/driver/fns/schematic.ts +11 -2
- package/s/driver/parts/compositor.ts +46 -2
- package/s/driver/utils/find-pixi-filter.ts +24 -0
- package/s/timeline/index.ts +1 -1
- package/s/timeline/parts/filters.ts +484 -0
- package/s/timeline/parts/item.ts +17 -1
- package/s/timeline/renderers/parts/samplers/visual/parts/sample.ts +9 -3
- package/s/timeline/sugar/helpers.ts +35 -2
- package/s/timeline/sugar/o.ts +38 -1
- package/s/timeline/types.ts +2 -0
- package/x/WebGLRenderer-4CHIZDHY.js +2 -0
- package/x/WebGPURenderer-O6WXU2QR.js +2 -0
- package/x/browserAll-WNIOTNNP.js +2 -0
- package/x/{demo/chunk-USLRKDKD.js → chunk-23FOBGX6.js} +2 -2
- package/x/{chunk-A45M2HJC.js.map → chunk-23FOBGX6.js.map} +1 -1
- package/x/{chunk-MWCIWPRL.js → chunk-73XOWA4F.js} +3 -3
- package/x/{chunk-Q7JBQNE4.js → chunk-IAWJKNX5.js} +2 -2
- package/x/{demo/chunk-Q4MWBZHL.js → chunk-KCMVLWBS.js} +2 -2
- package/x/{chunk-4ONWQOPX.js.map → chunk-KCMVLWBS.js.map} +1 -1
- package/x/{chunk-D5CIWPNS.js → chunk-MR32SQ27.js} +2 -2
- package/x/{chunk-W5CN46AR.js → chunk-VCUJJYRJ.js} +3 -3
- package/x/{chunk-WFT3KTZG.js → chunk-XNIZ4L5W.js} +2 -2
- package/x/{chunk-OTQK6FAJ.js → chunk-ZLGNQFUI.js} +2 -2
- package/x/demo/WebGLRenderer-RSJAHIG2.js +2 -0
- package/x/demo/WebGPURenderer-MGFAJCYY.js +2 -0
- package/x/demo/browserAll-PTRBXBRP.js +2 -0
- package/x/demo/{chunk-P3PTHHFE.js → chunk-CUYOGHWU.js} +2 -2
- package/x/demo/{chunk-P3PTHHFE.js.map → chunk-CUYOGHWU.js.map} +1 -1
- package/x/demo/{chunk-IRDQEA6B.js → chunk-DGTDNJ7W.js} +2 -2
- package/x/demo/{chunk-T3METYEY.js → chunk-FZ5BYF63.js} +2 -2
- package/x/demo/{chunk-T3METYEY.js.map → chunk-FZ5BYF63.js.map} +1 -1
- package/x/demo/{chunk-PYG4RZZ2.js → chunk-KWN4NNES.js} +15 -15
- package/x/demo/{chunk-PYG4RZZ2.js.map → chunk-KWN4NNES.js.map} +1 -1
- package/x/{chunk-4ONWQOPX.js → demo/chunk-OJ3FPXW7.js} +2 -2
- package/x/demo/{chunk-Q4MWBZHL.js.map → chunk-OJ3FPXW7.js.map} +1 -1
- package/x/demo/{chunk-RWJ2UHV4.js → chunk-PSLUOGTZ.js} +3 -3
- package/x/demo/{chunk-RWJ2UHV4.js.map → chunk-PSLUOGTZ.js.map} +1 -1
- package/x/demo/{chunk-YISSXWBT.js → chunk-VLCVEIFU.js} +3 -3
- package/x/demo/{chunk-YISSXWBT.js.map → chunk-VLCVEIFU.js.map} +1 -1
- package/x/demo/chunk-ZWCPT5FR.js +2 -0
- package/x/demo/demo.bundle.min.js +4921 -11
- package/x/demo/demo.bundle.min.js.map +4 -4
- package/x/demo/webworkerAll-JENRT6BT.js +2 -0
- package/x/driver/fns/schematic.d.ts +10 -1
- package/x/driver/parts/compositor.js +32 -1
- package/x/driver/parts/compositor.js.map +1 -1
- package/x/driver/utils/find-pixi-filter.d.ts +5 -0
- package/x/driver/utils/find-pixi-filter.js +13 -0
- package/x/driver/utils/find-pixi-filter.js.map +1 -0
- package/x/index.html +2 -2
- package/x/tests.bundle.min.js +4926 -16
- package/x/tests.bundle.min.js.map +4 -4
- package/x/tests.html +1 -1
- package/x/timeline/index.d.ts +1 -0
- package/x/timeline/index.js +1 -0
- package/x/timeline/index.js.map +1 -1
- package/x/timeline/parts/filters.d.ts +113 -0
- package/x/timeline/parts/filters.js +355 -0
- package/x/timeline/parts/filters.js.map +1 -0
- package/x/timeline/parts/item.d.ts +16 -2
- package/x/timeline/parts/item.js +1 -0
- package/x/timeline/parts/item.js.map +1 -1
- package/x/timeline/parts/waveform/parts/collect.d.ts +1 -1
- package/x/timeline/renderers/parts/samplers/visual/parts/sample.js +8 -2
- package/x/timeline/renderers/parts/samplers/visual/parts/sample.js.map +1 -1
- package/x/timeline/sugar/helpers.d.ts +11 -2
- package/x/timeline/sugar/helpers.js +15 -0
- package/x/timeline/sugar/helpers.js.map +1 -1
- package/x/timeline/sugar/o.d.ts +3 -1
- package/x/timeline/sugar/o.js +31 -0
- package/x/timeline/sugar/o.js.map +1 -1
- package/x/webworkerAll-RLCTMSDD.js +2 -0
- package/x/WebGLRenderer-7X274AYV.js +0 -2
- package/x/WebGPURenderer-XMCMEXAO.js +0 -2
- package/x/browserAll-LRGVU2GN.js +0 -2
- package/x/chunk-A45M2HJC.js +0 -2
- package/x/demo/WebGLRenderer-NLGJGAXK.js +0 -2
- package/x/demo/WebGPURenderer-RBOFXPL5.js +0 -2
- package/x/demo/browserAll-QEV2P3ED.js +0 -2
- package/x/demo/webworkerAll-ELLD4M57.js +0 -2
- package/x/webworkerAll-KR5SWEBU.js +0 -2
- /package/x/{WebGLRenderer-7X274AYV.js.map → WebGLRenderer-4CHIZDHY.js.map} +0 -0
- /package/x/{WebGPURenderer-XMCMEXAO.js.map → WebGPURenderer-O6WXU2QR.js.map} +0 -0
- /package/x/{browserAll-LRGVU2GN.js.map → browserAll-WNIOTNNP.js.map} +0 -0
- /package/x/{chunk-MWCIWPRL.js.map → chunk-73XOWA4F.js.map} +0 -0
- /package/x/{chunk-Q7JBQNE4.js.map → chunk-IAWJKNX5.js.map} +0 -0
- /package/x/{chunk-D5CIWPNS.js.map → chunk-MR32SQ27.js.map} +0 -0
- /package/x/{chunk-W5CN46AR.js.map → chunk-VCUJJYRJ.js.map} +0 -0
- /package/x/{chunk-WFT3KTZG.js.map → chunk-XNIZ4L5W.js.map} +0 -0
- /package/x/{chunk-OTQK6FAJ.js.map → chunk-ZLGNQFUI.js.map} +0 -0
- /package/x/demo/{WebGLRenderer-NLGJGAXK.js.map → WebGLRenderer-RSJAHIG2.js.map} +0 -0
- /package/x/demo/{WebGPURenderer-RBOFXPL5.js.map → WebGPURenderer-MGFAJCYY.js.map} +0 -0
- /package/x/demo/{browserAll-QEV2P3ED.js.map → browserAll-PTRBXBRP.js.map} +0 -0
- /package/x/demo/{chunk-IRDQEA6B.js.map → chunk-DGTDNJ7W.js.map} +0 -0
- /package/x/demo/{chunk-USLRKDKD.js.map → chunk-ZWCPT5FR.js.map} +0 -0
- /package/x/demo/{webworkerAll-ELLD4M57.js.map → webworkerAll-JENRT6BT.js.map} +0 -0
- /package/x/{webworkerAll-KR5SWEBU.js.map → webworkerAll-RLCTMSDD.js.map} +0 -0
package/s/timeline/types.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
|
|
1
2
|
export type Interpolation = "linear" | "catmullRom"
|
|
2
3
|
export type Keyframe<Value = number> = [time: number, value: Value]
|
|
3
4
|
export type Keyframes<Value = number> = Keyframe<Value>[]
|
|
@@ -27,3 +28,4 @@ export type TransformOptions = {
|
|
|
27
28
|
scale?: Vec2
|
|
28
29
|
rotation?: number
|
|
29
30
|
}
|
|
31
|
+
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as i,b as o,c as m,d as p,e}from"./chunk-ZLGNQFUI.js";import"./chunk-MR32SQ27.js";import"./chunk-73XOWA4F.js";import"./chunk-23FOBGX6.js";import{P as t,e as r}from"./chunk-XNIZ4L5W.js";r.add(i);r.mixin(t,o);r.add(m);r.mixin(t,p);r.add(e);
|
|
2
|
+
//# sourceMappingURL=browserAll-WNIOTNNP.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{D as a,J as f,T as v,X as x,q as p}from"./chunk-XNIZ4L5W.js";var h={};function G(c,t,r){let e=2166136261;for(let o=0;o<t;o++)e^=c[o].uid,e=Math.imul(e,16777619),e>>>=0;return h[e]||d(c,t,e,r)}function d(c,t,r,e){let o={},s=0;for(let n=0;n<e;n++){let i=n<t?c[n]:f.EMPTY.source;o[s++]=i.source,o[s++]=i.style}let l=new x(o);return h[r]=l,l}var u=class{constructor(t){this._canvasPool=Object.create(null),this.canvasOptions=t||{},this.enableFullScreen=!1}_createCanvasAndContext(t,r){let e=v.get().createCanvas();e.width=t,e.height=r;let o=e.getContext("2d");return{canvas:e,context:o}}getOptimalCanvasAndContext(t,r,e=1){t=Math.ceil(t*e-1e-6),r=Math.ceil(r*e-1e-6),t=a(t),r=a(r);let o=(t<<17)+(r<<1);this._canvasPool[o]||(this._canvasPool[o]=[]);let s=this._canvasPool[o].pop();return s||(s=this._createCanvasAndContext(t,r)),s}returnCanvasAndContext(t){let r=t.canvas,{width:e,height:o}=r,s=(e<<17)+(o<<1);t.context.resetTransform(),t.context.clearRect(0,0,e,o),this._canvasPool[s].push(t)}clear(){this._canvasPool={}}},P=new u;p.register(P);export{G as a,P as b};
|
|
2
|
+
//# sourceMappingURL=chunk-23FOBGX6.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../node_modules/pixi.js/src/rendering/batcher/gpu/getTextureBatchBindGroup.ts", "../node_modules/pixi.js/src/rendering/renderers/shared/texture/CanvasPool.ts"],
|
|
4
4
|
"sourcesContent": ["import { BindGroup } from '../../renderers/gpu/shader/BindGroup';\nimport { Texture } from '../../renderers/shared/texture/Texture';\n\nimport type { TextureSource } from '../../renderers/shared/texture/sources/TextureSource';\n\nconst cachedGroups: Record<number, BindGroup> = {};\n\n/**\n * @param textures\n * @param size\n * @param maxTextures\n * @internal\n */\nexport function getTextureBatchBindGroup(textures: TextureSource[], size: number, maxTextures: number)\n{\n let uid = 2166136261; // FNV-1a 32-bit offset basis\n\n for (let i = 0; i < size; i++)\n {\n uid ^= textures[i].uid;\n uid = Math.imul(uid, 16777619);\n uid >>>= 0;\n }\n\n return cachedGroups[uid] || generateTextureBatchBindGroup(textures, size, uid, maxTextures);\n}\n\nfunction generateTextureBatchBindGroup(textures: TextureSource[], size: number, key: number, maxTextures: number): BindGroup\n{\n const bindGroupResources: Record<string, any> = {};\n\n let bindIndex = 0;\n\n for (let i = 0; i < maxTextures; i++)\n {\n const texture = i < size ? textures[i] : Texture.EMPTY.source;\n\n bindGroupResources[bindIndex++] = texture.source;\n bindGroupResources[bindIndex++] = texture.style;\n }\n\n // pad out with empty textures\n const bindGroup = new BindGroup(bindGroupResources);\n\n cachedGroups[key] = bindGroup;\n\n return bindGroup;\n}\n\n", "import { DOMAdapter } from '../../../../environment/adapter';\nimport { nextPow2 } from '../../../../maths/misc/pow2';\nimport { GlobalResourceRegistry } from '../../../../utils/pool/GlobalResourceRegistry';\n\nimport type { ICanvas, ICanvasRenderingContext2DSettings } from '../../../../environment/canvas/ICanvas';\nimport type { ICanvasRenderingContext2D } from '../../../../environment/canvas/ICanvasRenderingContext2D';\n\n/**\n * A utility type that represents a canvas and its rendering context.\n * @category rendering\n * @internal\n */\nexport interface CanvasAndContext\n{\n /** The canvas element. */\n canvas: ICanvas;\n /** The rendering context of the canvas. */\n context: ICanvasRenderingContext2D;\n}\n\n/**\n * CanvasPool is a utility class that manages a pool of reusable canvas elements\n * @category rendering\n * @internal\n */\nexport class CanvasPoolClass\n{\n public canvasOptions: ICanvasRenderingContext2DSettings;\n\n /**\n * Allow renderTextures of the same size as screen, not just pow2\n *\n * Automatically sets to true after `setScreenSize`\n * @default false\n */\n public enableFullScreen: boolean;\n private _canvasPool: {[x in string | number]: CanvasAndContext[]};\n\n constructor(canvasOptions?: ICanvasRenderingContext2DSettings)\n {\n this._canvasPool = Object.create(null);\n this.canvasOptions = canvasOptions || {};\n this.enableFullScreen = false;\n }\n\n /**\n * Creates texture with params that were specified in pool constructor.\n * @param pixelWidth - Width of texture in pixels.\n * @param pixelHeight - Height of texture in pixels.\n */\n private _createCanvasAndContext(pixelWidth: number, pixelHeight: number): CanvasAndContext\n {\n const canvas = DOMAdapter.get().createCanvas();\n\n canvas.width = pixelWidth;\n canvas.height = pixelHeight;\n\n const context = canvas.getContext('2d');\n\n return { canvas, context };\n }\n\n /**\n * Gets a Power-of-Two render texture or fullScreen texture\n * @param minWidth - The minimum width of the render texture.\n * @param minHeight - The minimum height of the render texture.\n * @param resolution - The resolution of the render texture.\n * @returns The new render texture.\n */\n public getOptimalCanvasAndContext(minWidth: number, minHeight: number, resolution = 1): CanvasAndContext\n {\n minWidth = Math.ceil((minWidth * resolution) - 1e-6);\n minHeight = Math.ceil((minHeight * resolution) - 1e-6);\n minWidth = nextPow2(minWidth);\n minHeight = nextPow2(minHeight);\n\n const key = (minWidth << 17) + (minHeight << 1);\n\n if (!this._canvasPool[key])\n {\n this._canvasPool[key] = [];\n }\n\n let canvasAndContext = this._canvasPool[key].pop();\n\n if (!canvasAndContext)\n {\n canvasAndContext = this._createCanvasAndContext(minWidth, minHeight);\n }\n\n return canvasAndContext;\n }\n\n /**\n * Place a render texture back into the pool.\n * @param canvasAndContext\n */\n public returnCanvasAndContext(canvasAndContext: CanvasAndContext): void\n {\n const canvas = canvasAndContext.canvas;\n const { width, height } = canvas;\n\n const key = (width << 17) + (height << 1);\n\n canvasAndContext.context.resetTransform();\n canvasAndContext.context.clearRect(0, 0, width, height);\n\n this._canvasPool[key].push(canvasAndContext);\n }\n\n public clear(): void\n {\n this._canvasPool = {};\n }\n}\n\n/**\n * CanvasPool is a utility class that manages a pool of reusable canvas elements\n * @category rendering\n * @internal\n */\nexport const CanvasPool = new CanvasPoolClass();\nGlobalResourceRegistry.register(CanvasPool);\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": "oEAKA,IAAMA,EAA0C,CAAA,EAQhC,SAAAC,EAAyBC,EAA2BC,EAAcC,EAClF,CACI,IAAIC,EAAM,WAEV,QAASC,EAAI,EAAGA,EAAIH,EAAMG,IAEfD,GAAAH,EAASI,CAAC,EAAE,IACbD,EAAA,KAAK,KAAKA,EAAK,QAAQ,EACpBA,KAAA,EAGb,OAAOL,EAAaK,CAAG,GAAKE,EAA8BL,EAAUC,EAAME,EAAKD,CAAW,CAC9F,CAEA,SAASG,EAA8BL,EAA2BC,EAAcK,EAAaJ,EAC7F,CACI,IAAMK,EAA0C,CAAA,EAE5CC,EAAY,EAEhB,QAASJ,EAAI,EAAGA,EAAIF,EAAaE,IACjC,CACI,IAAMK,EAAUL,EAAIH,EAAOD,EAASI,CAAC,EAAIM,EAAQ,MAAM,OAEpCH,EAAAC,GAAW,EAAIC,EAAQ,OACvBF,EAAAC,GAAW,EAAIC,EAAQ,KAAA,CAIxC,IAAAE,EAAY,IAAIC,EAAUL,CAAkB,EAElD,OAAAT,EAAaQ,CAAG,EAAIK,EAEbA,CACX,CCtBO,IAAME,EAAN,KACP,CAYI,YAAYC,EACZ,CACS,KAAA,YAAqB,OAAA,OAAO,IAAI,EAChC,KAAA,cAAgBA,GAAiB,CAAA,EACtC,KAAK,iBAAmB,EAAA,CAQpB,wBAAwBC,EAAoBC,EACpD,CACI,IAAMC,EAASC,EAAW,IAAI,EAAE,aAAa,EAE7CD,EAAO,MAAQF,EACfE,EAAO,OAASD,EAEV,IAAAG,EAAUF,EAAO,WAAW,IAAI,EAE/B,MAAA,CAAE,OAAAA,EAAQ,QAAAE,CAAQ,CAAA,CAUtB,2BAA2BC,EAAkBC,EAAmBC,EAAa,EACpF,CACIF,EAAW,KAAK,KAAMA,EAAWE,EAAc,IAAI,EACnDD,EAAY,KAAK,KAAMA,EAAYC,EAAc,IAAI,EACrDF,EAAWG,EAASH,CAAQ,EAC5BC,EAAYE,EAASF,CAAS,EAExB,IAAAG,GAAOJ,GAAY,KAAOC,GAAa,GAExC,KAAK,YAAYG,CAAG,IAEhB,KAAA,YAAYA,CAAG,EAAI,CAAA,GAG5B,IAAIC,EAAmB,KAAK,YAAYD,CAAG,EAAE,IAAI,EAEjD,OAAKC,IAEkBA,EAAA,KAAK,wBAAwBL,EAAUC,CAAS,GAGhEI,CAAA,CAOJ,uBAAuBA,EAC9B,CACI,IAAMR,EAASQ,EAAiB,OAC1B,CAAE,MAAAC,EAAO,OAAAC,CAAA,EAAWV,EAEpBO,GAAOE,GAAS,KAAOC,GAAU,GAEvCF,EAAiB,QAAQ,eAAe,EACxCA,EAAiB,QAAQ,UAAU,EAAG,EAAGC,EAAOC,CAAM,EAEtD,KAAK,YAAYH,CAAG,EAAE,KAAKC,CAAgB,CAAA,CAGxC,OACP,CACI,KAAK,YAAc,CAAA,CAAC,CAE5B,EAOaG,EAAa,IAAIf,EAC9BgB,EAAuB,SAASD,CAAU",
|
|
6
6
|
"names": ["cachedGroups", "getTextureBatchBindGroup", "textures", "size", "maxTextures", "uid", "i", "generateTextureBatchBindGroup", "key", "bindGroupResources", "bindIndex", "texture", "Texture", "bindGroup", "BindGroup", "CanvasPoolClass", "canvasOptions", "pixelWidth", "pixelHeight", "canvas", "DOMAdapter", "context", "minWidth", "minHeight", "resolution", "nextPow2", "key", "canvasAndContext", "width", "height", "CanvasPool", "GlobalResourceRegistry"]
|
|
7
7
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as Ps,b as nt}from"./chunk-A45M2HJC.js";import{A as ms,Aa as Us,B as gs,Ba as Es,C as rr,D as xs,E as mt,F as it,G as _s,I as E,J as q,O as ys,P as bs,Q as gt,R as Ss,S as j,T as Ts,U as sr,V as ws,W as de,X as Zt,_ as Et,a as Fn,aa as Q,ba as Pt,c as Bn,ca as Gt,d as w,e as lt,ea as fe,f as Ut,fa as Jt,g as W,ga as pe,h as ct,ha as me,i as G,ia as ge,ja as vs,k as rt,ka as Cs,l as D,la as Ms,m as ds,ma as As,n as U,na as xe,o as L,oa as _e,pa as J,q as X,qa as ks,ra as It,sa as zt,t as H,ta as Fs,u as st,ua as Bs,v as tr,va as vt,w as er,wa as xt,x as fs,xa as ye,y as ps,ya as Rs}from"./chunk-WFT3KTZG.js";var pi=Fn((Ph,fi)=>{fi.exports=Jn;var Ar={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},Zn=/([astvzqmhlc])([^astvzqmhlc]*)/ig;function Jn(n){var t=[];return n.replace(Zn,function(e,r,s){var i=r.toLowerCase();for(s=eo(s),i=="m"&&s.length>2&&(t.push([r].concat(s.splice(0,2))),i="l",r=r=="m"?"l":"L");;){if(s.length==Ar[i])return s.unshift(r),t.push(s);if(s.length<Ar[i])throw new Error("malformed path data");t.push([r].concat(s.splice(0,Ar[i])))}}),t}var to=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/ig;function eo(n){var t=n.match(to);return t?t.map(Number):[]}});var ir=(n=>(n[n.Low=0]="Low",n[n.Normal=1]="Normal",n[n.High=2]="High",n))(ir||{});function tt(n){if(typeof n!="string")throw new TypeError(`Path must be a string. Received ${JSON.stringify(n)}`)}function te(n){return n.split("?")[0].split("#")[0]}function Rn(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Un(n,t,e){return n.replace(new RegExp(Rn(t),"g"),e)}function En(n,t){let e="",r=0,s=-1,i=0,o=-1;for(let a=0;a<=n.length;++a){if(a<n.length)o=n.charCodeAt(a);else{if(o===47)break;o=47}if(o===47){if(!(s===a-1||i===1))if(s!==a-1&&i===2){if(e.length<2||r!==2||e.charCodeAt(e.length-1)!==46||e.charCodeAt(e.length-2)!==46){if(e.length>2){let l=e.lastIndexOf("/");if(l!==e.length-1){l===-1?(e="",r=0):(e=e.slice(0,l),r=e.length-1-e.lastIndexOf("/")),s=a,i=0;continue}}else if(e.length===2||e.length===1){e="",r=0,s=a,i=0;continue}}t&&(e.length>0?e+="/..":e="..",r=2)}else e.length>0?e+=`/${n.slice(s+1,a)}`:e=n.slice(s+1,a),r=a-s-1;s=a,i=0}else o===46&&i!==-1?++i:i=-1}return e}var Ct={toPosix(n){return Un(n,"\\","/")},isUrl(n){return/^https?:/.test(this.toPosix(n))},isDataUrl(n){return/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(n)},isBlobUrl(n){return n.startsWith("blob:")},hasProtocol(n){return/^[^/:]+:/.test(this.toPosix(n))},getProtocol(n){tt(n),n=this.toPosix(n);let t=/^file:\/\/\//.exec(n);if(t)return t[0];let e=/^[^/:]+:\/{0,2}/.exec(n);return e?e[0]:""},toAbsolute(n,t,e){if(tt(n),this.isDataUrl(n)||this.isBlobUrl(n))return n;let r=te(this.toPosix(t??j.get().getBaseUrl())),s=te(this.toPosix(e??this.rootname(r)));return n=this.toPosix(n),n.startsWith("/")?Ct.join(s,n.slice(1)):this.isAbsolute(n)?n:this.join(r,n)},normalize(n){if(tt(n),n.length===0)return".";if(this.isDataUrl(n)||this.isBlobUrl(n))return n;n=this.toPosix(n);let t="",e=n.startsWith("/");this.hasProtocol(n)&&(t=this.rootname(n),n=n.slice(t.length));let r=n.endsWith("/");return n=En(n,!1),n.length>0&&r&&(n+="/"),e?`/${n}`:t+n},isAbsolute(n){return tt(n),n=this.toPosix(n),this.hasProtocol(n)?!0:n.startsWith("/")},join(...n){if(n.length===0)return".";let t;for(let e=0;e<n.length;++e){let r=n[e];if(tt(r),r.length>0)if(t===void 0)t=r;else{let s=n[e-1]??"";this.joinExtensions.includes(this.extname(s).toLowerCase())?t+=`/../${r}`:t+=`/${r}`}}return t===void 0?".":this.normalize(t)},dirname(n){if(tt(n),n.length===0)return".";n=this.toPosix(n);let t=n.charCodeAt(0),e=t===47,r=-1,s=!0,i=this.getProtocol(n),o=n;n=n.slice(i.length);for(let a=n.length-1;a>=1;--a)if(t=n.charCodeAt(a),t===47){if(!s){r=a;break}}else s=!1;return r===-1?e?"/":this.isUrl(o)?i+n:i:e&&r===1?"//":i+n.slice(0,r)},rootname(n){tt(n),n=this.toPosix(n);let t="";if(n.startsWith("/")?t="/":t=this.getProtocol(n),this.isUrl(n)){let e=n.indexOf("/",t.length);e!==-1?t=n.slice(0,e):t=n,t.endsWith("/")||(t+="/")}return t},basename(n,t){tt(n),t&&tt(t),n=te(this.toPosix(n));let e=0,r=-1,s=!0,i;if(t!==void 0&&t.length>0&&t.length<=n.length){if(t.length===n.length&&t===n)return"";let o=t.length-1,a=-1;for(i=n.length-1;i>=0;--i){let l=n.charCodeAt(i);if(l===47){if(!s){e=i+1;break}}else a===-1&&(s=!1,a=i+1),o>=0&&(l===t.charCodeAt(o)?--o===-1&&(r=i):(o=-1,r=a))}return e===r?r=a:r===-1&&(r=n.length),n.slice(e,r)}for(i=n.length-1;i>=0;--i)if(n.charCodeAt(i)===47){if(!s){e=i+1;break}}else r===-1&&(s=!1,r=i+1);return r===-1?"":n.slice(e,r)},extname(n){tt(n),n=te(this.toPosix(n));let t=-1,e=0,r=-1,s=!0,i=0;for(let o=n.length-1;o>=0;--o){let a=n.charCodeAt(o);if(a===47){if(!s){e=o+1;break}continue}r===-1&&(s=!1,r=o+1),a===46?t===-1?t=o:i!==1&&(i=1):t!==-1&&(i=-1)}return t===-1||r===-1||i===0||i===1&&t===r-1&&t===e+1?"":n.slice(t,r)},parse(n){tt(n);let t={root:"",dir:"",base:"",ext:"",name:""};if(n.length===0)return t;n=te(this.toPosix(n));let e=n.charCodeAt(0),r=this.isAbsolute(n),s,i="";t.root=this.rootname(n),r||this.hasProtocol(n)?s=1:s=0;let o=-1,a=0,l=-1,h=!0,c=n.length-1,u=0;for(;c>=s;--c){if(e=n.charCodeAt(c),e===47){if(!h){a=c+1;break}continue}l===-1&&(h=!1,l=c+1),e===46?o===-1?o=c:u!==1&&(u=1):o!==-1&&(u=-1)}return o===-1||l===-1||u===0||u===1&&o===l-1&&o===a+1?l!==-1&&(a===0&&r?t.base=t.name=n.slice(1,l):t.base=t.name=n.slice(a,l)):(a===0&&r?(t.name=n.slice(1,o),t.base=n.slice(1,l)):(t.name=n.slice(a,o),t.base=n.slice(a,l)),t.ext=n.slice(o,l)),t.dir=this.dirname(n),i&&(t.dir=i+t.dir),t},sep:"/",delimiter:":",joinExtensions:[".html"]};var _t=(n,t,e=!1)=>(Array.isArray(n)||(n=[n]),t?n.map(r=>typeof r=="string"||e?t(r):r):n);function Gs(n,t,e,r,s){let i=t[e];for(let o=0;o<i.length;o++){let a=i[o];e<t.length-1?Gs(n.replace(r[e],a),t,e+1,r,s):s.push(n.replace(r[e],a))}}function Is(n){let t=/\{(.*?)\}/g,e=n.match(t),r=[];if(e){let s=[];e.forEach(i=>{let o=i.substring(1,i.length-1).split(",");s.push(o)}),Gs(n,s,0,e,r)}else r.push(n);return r}var nr=n=>!Array.isArray(n);var ee=class{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(t,e)=>`${t}${this._bundleIdConnector}${e}`,extractAssetIdFromBundle:(t,e)=>e.replace(`${t}${this._bundleIdConnector}`,"")},this._bundleIdConnector=this._defaultBundleIdentifierOptions.connector,this._createBundleAssetId=this._defaultBundleIdentifierOptions.createBundleAssetId,this._extractAssetIdFromBundle=this._defaultBundleIdentifierOptions.extractAssetIdFromBundle,this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}setBundleIdentifier(t){if(this._bundleIdConnector=t.connector??this._bundleIdConnector,this._createBundleAssetId=t.createBundleAssetId??this._createBundleAssetId,this._extractAssetIdFromBundle=t.extractAssetIdFromBundle??this._extractAssetIdFromBundle,this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar"))!=="bar")throw new Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(...t){t.forEach(e=>{this._preferredOrder.push(e),e.priority||(e.priority=Object.keys(e.params))}),this._resolverHash={}}set basePath(t){this._basePath=t}get basePath(){return this._basePath}set rootPath(t){this._rootPath=t}get rootPath(){return this._rootPath}get parsers(){return this._parsers}reset(){this.setBundleIdentifier(this._defaultBundleIdentifierOptions),this._assetMap={},this._preferredOrder=[],this._resolverHash={},this._rootPath=null,this._basePath=null,this._manifest=null,this._bundles={},this._defaultSearchParams=null}setDefaultSearchParams(t){if(typeof t=="string")this._defaultSearchParams=t;else{let e=t;this._defaultSearchParams=Object.keys(e).map(r=>`${encodeURIComponent(r)}=${encodeURIComponent(e[r])}`).join("&")}}getAlias(t){let{alias:e,src:r}=t;return _t(e||r,i=>typeof i=="string"?i:Array.isArray(i)?i.map(o=>o?.src??o):i?.src?i.src:i,!0)}addManifest(t){this._manifest&&L("[Resolver] Manifest already exists, this will be overwritten"),this._manifest=t,t.bundles.forEach(e=>{this.addBundle(e.name,e.assets)})}addBundle(t,e){let r=[],s=e;Array.isArray(e)||(s=Object.entries(e).map(([i,o])=>typeof o=="string"||Array.isArray(o)?{alias:i,src:o}:{alias:i,...o})),s.forEach(i=>{let o=i.src,a=i.alias,l;if(typeof a=="string"){let h=this._createBundleAssetId(t,a);r.push(h),l=[a,h]}else{let h=a.map(c=>this._createBundleAssetId(t,c));r.push(...h),l=[...a,...h]}this.add({...i,alias:l,src:o})}),this._bundles[t]=r}add(t){let e=[];Array.isArray(t)?e.push(...t):e.push(t);let r;r=i=>{this.hasKey(i)&&L(`[Resolver] already has key: ${i} overwriting`)},_t(e).forEach(i=>{let{src:o}=i,{data:a,format:l,loadParser:h,parser:c}=i,u=_t(o).map(m=>typeof m=="string"?Is(m):Array.isArray(m)?m:[m]),f=this.getAlias(i);Array.isArray(f)?f.forEach(r):r(f);let d=[],p=m=>({...this._parsers.find(g=>g.test(m))?.parse(m),src:m});u.forEach(m=>{m.forEach(x=>{let g={};if(typeof x!="object"?g=p(x):(a=x.data??a,l=x.format??l,(x.loadParser||x.parser)&&(h=x.loadParser??h,c=x.parser??c),g={...p(x.src),...x}),!f)throw new Error(`[Resolver] alias is undefined for this asset: ${g.src}`);g=this._buildResolvedAsset(g,{aliases:f,data:a,format:l,loadParser:h,parser:c,progressSize:i.progressSize}),d.push(g)})}),f.forEach(m=>{this._assetMap[m]=d})})}resolveBundle(t){let e=nr(t);t=_t(t);let r={};return t.forEach(s=>{let i=this._bundles[s];if(i){let o=this.resolve(i),a={};for(let l in o){let h=o[l];a[this._extractAssetIdFromBundle(s,l)]=h}r[s]=a}}),e?r[t[0]]:r}resolveUrl(t){let e=this.resolve(t);if(typeof t!="string"){let r={};for(let s in e)r[s]=e[s].src;return r}return e.src}resolve(t){let e=nr(t);t=_t(t);let r={};return t.forEach(s=>{if(!this._resolverHash[s])if(this._assetMap[s]){let i=this._assetMap[s],o=this._getPreferredOrder(i);o?.priority.forEach(a=>{o.params[a].forEach(l=>{let h=i.filter(c=>c[a]?c[a]===l:!1);h.length&&(i=h)})}),this._resolverHash[s]=i[0]}else this._resolverHash[s]=this._buildResolvedAsset({alias:[s],src:s},{});r[s]=this._resolverHash[s]}),e?r[t[0]]:r}hasKey(t){return!!this._assetMap[t]}hasBundle(t){return!!this._bundles[t]}_getPreferredOrder(t){for(let e=0;e<t.length;e++){let r=t[e],s=this._preferredOrder.find(i=>i.params.format.includes(r.format));if(s)return s}return this._preferredOrder[0]}_appendDefaultSearchParams(t){if(!this._defaultSearchParams)return t;let e=/\?/.test(t)?"&":"?";return`${t}${e}${this._defaultSearchParams}`}_buildResolvedAsset(t,e){let{aliases:r,data:s,loadParser:i,parser:o,format:a,progressSize:l}=e;return(this._basePath||this._rootPath)&&(t.src=Ct.toAbsolute(t.src,this._basePath,this._rootPath)),t.alias=r??t.alias??[t.src],t.src=this._appendDefaultSearchParams(t.src),t.data={...s||{},...t.data},t.loadParser=i??t.loadParser,t.parser=o??t.parser,t.format=a??t.format??Gn(t.src),l!==void 0&&(t.progressSize=l),t}};ee.RETINA_PREFIX=/@([0-9\.]+)x/;function Gn(n){return n.split(".").pop().split("?").shift().split("#").shift()}var or=(n,t)=>{let e=t.split("?")[1];return e&&(n+=`?${e}`),n};var zs=class re{constructor(t,e){this.linkedSheets=[];let r=t;t?.source instanceof it&&(r={texture:t,data:e});let{texture:s,data:i,cachePrefix:o=""}=r;this.cachePrefix=o,this._texture=s instanceof E?s:null,this.textureSource=s.source,this.textures={},this.animations={},this.data=i;let a=parseFloat(i.meta.scale);a?(this.resolution=a,s.source.resolution=this.resolution):this.resolution=s.source._resolution,this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}parse(){return new Promise(t=>{this._callback=t,this._batchIndex=0,this._frameKeys.length<=re.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}_processFrames(t){let e=t,r=re.BATCH_SIZE;for(;e-t<r&&e<this._frameKeys.length;){let s=this._frameKeys[e],i=this._frames[s],o=i.frame;if(o){let a=null,l=null,h=i.trimmed!==!1&&i.sourceSize?i.sourceSize:i.frame,c=new H(0,0,Math.floor(h.w)/this.resolution,Math.floor(h.h)/this.resolution);i.rotated?a=new H(Math.floor(o.x)/this.resolution,Math.floor(o.y)/this.resolution,Math.floor(o.h)/this.resolution,Math.floor(o.w)/this.resolution):a=new H(Math.floor(o.x)/this.resolution,Math.floor(o.y)/this.resolution,Math.floor(o.w)/this.resolution,Math.floor(o.h)/this.resolution),i.trimmed!==!1&&i.spriteSourceSize&&(l=new H(Math.floor(i.spriteSourceSize.x)/this.resolution,Math.floor(i.spriteSourceSize.y)/this.resolution,Math.floor(o.w)/this.resolution,Math.floor(o.h)/this.resolution)),this.textures[s]=new E({source:this.textureSource,frame:a,orig:c,trim:l,rotate:i.rotated?2:0,defaultAnchor:i.anchor,defaultBorders:i.borders,label:s.toString()})}e++}}_processAnimations(){let t=this.data.animations||{};for(let e in t){this.animations[e]=[];for(let r=0;r<t[e].length;r++){let s=t[e][r];this.animations[e].push(this.textures[s])}}}_parseComplete(){let t=this._callback;this._callback=null,this._batchIndex=0,t.call(this,this.textures)}_nextBatch(){this._processFrames(this._batchIndex*re.BATCH_SIZE),this._batchIndex++,setTimeout(()=>{this._batchIndex*re.BATCH_SIZE<this._frameKeys.length?this._nextBatch():(this._processAnimations(),this._parseComplete())},0)}destroy(t=!1){for(let e in this.textures)this.textures[e].destroy();this._frames=null,this._frameKeys=null,this.data=null,this.textures=null,t&&(this._texture?.destroy(),this.textureSource.destroy()),this._texture=null,this.textureSource=null,this.linkedSheets=[]}};zs.BATCH_SIZE=1e3;var ar=zs;var In=["jpg","png","jpeg","avif","webp","basis","etc2","bc7","bc6h","bc5","bc4","bc3","bc2","bc1","eac","astc"];function Ds(n,t,e){let r={};if(n.forEach(s=>{r[s]=t}),Object.keys(t.textures).forEach(s=>{r[`${t.cachePrefix}${s}`]=t.textures[s]}),!e){let s=Ct.dirname(n[0]);t.linkedSheets.forEach((i,o)=>{let a=Ds([`${s}/${t.data.meta.related_multi_packs[o]}`],i,!0);Object.assign(r,a)})}return r}var Ls={extension:w.Asset,cache:{test:n=>n instanceof ar,getCacheableAssets:(n,t)=>Ds(n,t,!1)},resolver:{extension:{type:w.ResolveParser,name:"resolveSpritesheet"},test:n=>{let e=n.split("?")[0].split("."),r=e.pop(),s=e.pop();return r==="json"&&In.includes(s)},parse:n=>{let t=n.split(".");return{resolution:parseFloat(ee.RETINA_PREFIX.exec(n)?.[1]??"1"),format:t[t.length-2],src:n}}},loader:{name:"spritesheetLoader",id:"spritesheet",extension:{type:w.LoadParser,priority:ir.Normal,name:"spritesheetLoader"},async testParse(n,t){return Ct.extname(t.src).toLowerCase()===".json"&&!!n.frames},async parse(n,t,e){let{texture:r,imageFilename:s,textureOptions:i,cachePrefix:o}=t?.data??{},a=Ct.dirname(t.src);a&&a.lastIndexOf("/")!==a.length-1&&(a+="/");let l;if(r instanceof E)l=r;else{let u=or(a+(s??n.meta.image),t.src);l=(await e.load([{src:u,data:i}]))[u]}let h=new ar({texture:l.source,data:n,cachePrefix:o});await h.parse();let c=n?.meta?.related_multi_packs;if(Array.isArray(c)){let u=[];for(let d of c){if(typeof d!="string")continue;let p=a+d;t.data?.ignoreMultiPack||(p=or(p,t.src),u.push(e.load({src:p,data:{textureOptions:i,ignoreMultiPack:!0}})))}let f=await Promise.all(u);h.linkedSheets=f,f.forEach(d=>{d.linkedSheets=[h].concat(h.linkedSheets.filter(p=>p!==d))})}return h},async unload(n,t,e){await e.unload(n.textureSource._sourceOrigin),n.destroy(!1)}}};lt.add(Ls);var zn=new st;function be(n,t,e){let r=zn;n.measurable=!0,fs(n,e,r),t.addBoundsMask(r),n.measurable=!1}function Se(n,t,e){let r=er.get();n.measurable=!0;let s=tr.get().identity(),i=Ws(n,e,s);ms(n,r,i),n.measurable=!1,t.addBoundsMask(r),tr.return(s),er.return(r)}function Ws(n,t,e){return n?(n!==t&&(Ws(n.parent,t,e),n.updateLocalTransform(),e.append(n.localTransform)),e):(L("Mask bounds, renderable is not inside the root container"),e)}var se=class{constructor(t){this.priority=0,this.inverse=!1,this.pipe="alphaMask",t?.mask&&this.init(t.mask)}init(t){this.mask=t,this.renderMaskToTexture=!(t instanceof sr),this.mask.renderable=this.renderMaskToTexture,this.mask.includeInBuild=!this.renderMaskToTexture,this.mask.measurable=!1}reset(){this.mask!==null&&(this.mask.measurable=!0,this.mask=null)}addBounds(t,e){this.inverse||be(this.mask,t,e)}addLocalBounds(t,e){Se(this.mask,t,e)}containsPoint(t,e){let r=this.mask;return e(r,t)}destroy(){this.reset()}static test(t){return t instanceof sr}};se.extension=w.MaskEffect;var ie=class{constructor(t){this.priority=0,this.pipe="colorMask",t?.mask&&this.init(t.mask)}init(t){this.mask=t}destroy(){}static test(t){return typeof t=="number"}};ie.extension=w.MaskEffect;var ne=class{constructor(t){this.priority=0,this.pipe="stencilMask",t?.mask&&this.init(t.mask)}init(t){this.mask=t,this.mask.includeInBuild=!1,this.mask.measurable=!1}reset(){this.mask!==null&&(this.mask.measurable=!0,this.mask.includeInBuild=!0,this.mask=null)}addBounds(t,e){be(this.mask,t,e)}addLocalBounds(t,e){Se(this.mask,t,e)}containsPoint(t,e){let r=this.mask;return e(r,t)}destroy(){this.reset()}static test(t){return t instanceof ys}};ne.extension=w.MaskEffect;var ot=class extends it{constructor(t){super(t),this.uploadMethodId="image",this.autoGarbageCollect=!0}static test(t){return globalThis.HTMLImageElement&&t instanceof HTMLImageElement||typeof ImageBitmap<"u"&&t instanceof ImageBitmap||globalThis.VideoFrame&&t instanceof VideoFrame}};ot.extension=w.TextureSource;var lr;async function Hs(){return lr??(lr=(async()=>{let t=j.get().createCanvas(1,1).getContext("webgl");if(!t)return"premultiply-alpha-on-upload";let e=await new Promise(o=>{let a=document.createElement("video");a.onloadeddata=()=>o(a),a.onerror=()=>o(null),a.autoplay=!1,a.crossOrigin="anonymous",a.preload="auto",a.src="data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=",a.load()});if(!e)return"premultiply-alpha-on-upload";let r=t.createTexture();t.bindTexture(t.TEXTURE_2D,r);let s=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,s),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,r,0),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,t.NONE),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e);let i=new Uint8Array(4);return t.readPixels(0,0,1,1,t.RGBA,t.UNSIGNED_BYTE,i),t.deleteFramebuffer(s),t.deleteTexture(r),t.getExtension("WEBGL_lose_context")?.loseContext(),i[0]<=i[3]?"premultiplied-alpha":"premultiply-alpha-on-upload"})()),lr}var Te=class Os extends it{constructor(t){super(t),this.isReady=!1,this.uploadMethodId="video",t={...Os.defaultOptions,...t},this._autoUpdate=!0,this._isConnectedToTicker=!1,this._updateFPS=t.updateFPS||0,this._msToNextUpdate=0,this.autoPlay=t.autoPlay!==!1,this.alphaMode=t.alphaMode??"premultiply-alpha-on-upload",this._videoFrameRequestCallback=this._videoFrameRequestCallback.bind(this),this._videoFrameRequestCallbackHandle=null,this._load=null,this._resolve=null,this._reject=null,this._onCanPlay=this._onCanPlay.bind(this),this._onCanPlayThrough=this._onCanPlayThrough.bind(this),this._onError=this._onError.bind(this),this._onPlayStart=this._onPlayStart.bind(this),this._onPlayStop=this._onPlayStop.bind(this),this._onSeeked=this._onSeeked.bind(this),t.autoLoad!==!1&&this.load()}updateFrame(){if(!this.destroyed){if(this._updateFPS){let t=gt.shared.elapsedMS*this.resource.playbackRate;this._msToNextUpdate=Math.floor(this._msToNextUpdate-t)}(!this._updateFPS||this._msToNextUpdate<=0)&&(this._msToNextUpdate=this._updateFPS?Math.floor(1e3/this._updateFPS):0),this.isValid&&this.update()}}_videoFrameRequestCallback(){this.updateFrame(),this.destroyed?this._videoFrameRequestCallbackHandle=null:this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback)}get isValid(){return!!this.resource.videoWidth&&!!this.resource.videoHeight}async load(){if(this._load)return this._load;let t=this.resource,e=this.options;return(t.readyState===t.HAVE_ENOUGH_DATA||t.readyState===t.HAVE_FUTURE_DATA)&&t.width&&t.height&&(t.complete=!0),t.addEventListener("play",this._onPlayStart),t.addEventListener("pause",this._onPlayStop),t.addEventListener("seeked",this._onSeeked),this._isSourceReady()?this._mediaReady():(e.preload||t.addEventListener("canplay",this._onCanPlay),t.addEventListener("canplaythrough",this._onCanPlayThrough),t.addEventListener("error",this._onError,!0)),this.alphaMode=await Hs(),this._load=new Promise((r,s)=>{this.isValid?r(this):(this._resolve=r,this._reject=s,e.preloadTimeoutMs!==void 0&&(this._preloadTimeout=setTimeout(()=>{this._onError(new ErrorEvent(`Preload exceeded timeout of ${e.preloadTimeoutMs}ms`))})),t.load())}),this._load}_onError(t){this.resource.removeEventListener("error",this._onError,!0),this.emit("error",t),this._reject&&(this._reject(t),this._reject=null,this._resolve=null)}_isSourcePlaying(){let t=this.resource;return!t.paused&&!t.ended}_isSourceReady(){return this.resource.readyState>2}_onPlayStart(){this.isValid||this._mediaReady(),this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0)}_onCanPlay(){this.resource.removeEventListener("canplay",this._onCanPlay),this._mediaReady()}_onCanPlayThrough(){this.resource.removeEventListener("canplaythrough",this._onCanPlay),this._preloadTimeout&&(clearTimeout(this._preloadTimeout),this._preloadTimeout=void 0),this._mediaReady()}_mediaReady(){let t=this.resource;this.isValid&&(this.isReady=!0,this.resize(t.videoWidth,t.videoHeight)),this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0,this._resolve&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&this.resource.play()}destroy(){this._configureAutoUpdate();let t=this.resource;t&&(t.removeEventListener("play",this._onPlayStart),t.removeEventListener("pause",this._onPlayStop),t.removeEventListener("seeked",this._onSeeked),t.removeEventListener("canplay",this._onCanPlay),t.removeEventListener("canplaythrough",this._onCanPlayThrough),t.removeEventListener("error",this._onError,!0),t.pause(),t.src="",t.load()),super.destroy()}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t!==this._autoUpdate&&(this._autoUpdate=t,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS(t){t!==this._updateFPS&&(this._updateFPS=t,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.resource.requestVideoFrameCallback?(this._isConnectedToTicker&&(gt.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||(gt.shared.add(this.updateFrame,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&(gt.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test(t){return globalThis.HTMLVideoElement&&t instanceof HTMLVideoElement}};Te.extension=w.TextureSource;Te.defaultOptions={...it.defaultOptions,autoLoad:!0,autoPlay:!0,updateFPS:0,crossorigin:!0,loop:!1,muted:!0,playsinline:!0,preload:!1};Te.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};var Vs=Te;var cr=class{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(t){return this._cache.has(t)}get(t){let e=this._cache.get(t);return e||L(`[Assets] Asset id ${t} was not found in the Cache`),e}set(t,e){let r=_t(t),s;for(let l=0;l<this.parsers.length;l++){let h=this.parsers[l];if(h.test(e)){s=h.getCacheableAssets(r,e);break}}let i=new Map(Object.entries(s||{}));s||r.forEach(l=>{i.set(l,e)});let o=[...i.keys()],a={cacheKeys:o,keys:r};r.forEach(l=>{this._cacheMap.set(l,a)}),o.forEach(l=>{let h=s?s[l]:e;this._cache.has(l)&&this._cache.get(l)!==h&&L("[Cache] already has key:",l),this._cache.set(l,i.get(l))})}remove(t){if(!this._cacheMap.has(t)){L(`[Assets] Asset id ${t} was not found in the Cache`);return}let e=this._cacheMap.get(t);e.cacheKeys.forEach(s=>{this._cache.delete(s)}),e.keys.forEach(s=>{this._cacheMap.delete(s)})}get parsers(){return this._parsers}},N=new cr;var hr=[];lt.handleByList(w.TextureSource,hr);function Ns(n={}){let t=n&&n.resource,e=t?n.resource:n,r=t?n:{resource:n};for(let s=0;s<hr.length;s++){let i=hr[s];if(i.test(e))return new i(r)}throw new Error(`Could not find a source type for resource: ${r.resource}`)}function Dn(n={},t=!1){let e=n&&n.resource,r=e?n.resource:n,s=e?n:{resource:n};if(!t&&N.has(r))return N.get(r);let i=new E({source:Ns(s)});return i.on("destroy",()=>{N.has(r)&&N.remove(r)}),t||N.set(r,i),i}function Ln(n,t=!1){return typeof n=="string"?N.get(n):n instanceof it?new E({source:n}):Dn(n,t)}E.from=Ln;it.from=Ns;lt.add(se,ie,ne,Vs,ot,ws,_s);var ur=class{static init(t){Object.defineProperty(this,"resizeTo",{configurable:!0,set(e){globalThis.removeEventListener("resize",this.queueResize),this._resizeTo=e,e&&(globalThis.addEventListener("resize",this.queueResize),this.resize())},get(){return this._resizeTo}}),this.queueResize=()=>{this._resizeTo&&(this._cancelResize(),this._resizeId=requestAnimationFrame(()=>this.resize()))},this._cancelResize=()=>{this._resizeId&&(cancelAnimationFrame(this._resizeId),this._resizeId=null)},this.resize=()=>{if(!this._resizeTo)return;this._cancelResize();let e,r;if(this._resizeTo===globalThis.window)e=globalThis.innerWidth,r=globalThis.innerHeight;else{let{clientWidth:s,clientHeight:i}=this._resizeTo;e=s,r=i}this.renderer.resize(e,r),this.render()},this._resizeId=null,this._resizeTo=null,this.resizeTo=t.resizeTo||null}static destroy(){globalThis.removeEventListener("resize",this.queueResize),this._cancelResize(),this._cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}};ur.extension=w.Application;var dr=class{static init(t){t=Object.assign({autoStart:!0,sharedTicker:!1},t),Object.defineProperty(this,"ticker",{configurable:!0,set(e){this._ticker&&this._ticker.remove(this.render,this),this._ticker=e,e&&e.add(this.render,this,bs.LOW)},get(){return this._ticker}}),this.stop=()=>{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=t.sharedTicker?gt.shared:new gt,t.autoStart&&this.start()}static destroy(){if(this._ticker){let t=this._ticker;this.ticker=null,t.destroy()}}};dr.extension=w.Application;function js(n,t,e,r,s,i,o,a=null){let l=0;e*=t,s*=i;let h=a.a,c=a.b,u=a.c,f=a.d,d=a.tx,p=a.ty;for(;l<o;){let m=n[e],x=n[e+1];r[s]=h*m+u*x+d,r[s+1]=c*m+f*x+p,s+=i,e+=t,l++}}function qs(n,t,e,r){let s=0;for(t*=e;s<r;)n[t]=0,n[t+1]=0,t+=e,s++}function fr(n,t,e,r,s){let i=t.a,o=t.b,a=t.c,l=t.d,h=t.tx,c=t.ty;e||(e=0),r||(r=2),s||(s=n.length/r-e);let u=e*r;for(let f=0;f<s;f++){let d=n[u],p=n[u+1];n[u]=i*d+a*p+h,n[u+1]=o*d+l*p+c,u+=r}}var Wn=new G,Mt=class{constructor(){this.packAsQuad=!1,this.batcherName="default",this.topology="triangle-list",this.applyTransform=!0,this.roundPixels=0,this._batcher=null,this._batch=null}get uvs(){return this.geometryData.uvs}get positions(){return this.geometryData.vertices}get indices(){return this.geometryData.indices}get blendMode(){return this.renderable&&this.applyTransform?this.renderable.groupBlendMode:"normal"}get color(){let t=this.baseColor,e=t>>16|t&65280|(t&255)<<16,r=this.renderable;return r?ps(e,r.groupColor)+(this.alpha*r.groupAlpha*255<<24):e+(this.alpha*255<<24)}get transform(){return this.renderable?.groupTransform||Wn}copyTo(t){t.indexOffset=this.indexOffset,t.indexSize=this.indexSize,t.attributeOffset=this.attributeOffset,t.attributeSize=this.attributeSize,t.baseColor=this.baseColor,t.alpha=this.alpha,t.texture=this.texture,t.geometryData=this.geometryData,t.topology=this.topology}reset(){this.applyTransform=!0,this.renderable=null,this.topology="triangle-list"}destroy(){this.renderable=null,this.texture=null,this.geometryData=null,this._batcher=null,this._batch=null}};var Dt={extension:{type:w.ShapeBuilder,name:"circle"},build(n,t){let e,r,s,i,o,a;if(n.type==="circle"){let T=n;if(o=a=T.radius,o<=0)return!1;e=T.x,r=T.y,s=i=0}else if(n.type==="ellipse"){let T=n;if(o=T.halfWidth,a=T.halfHeight,o<=0||a<=0)return!1;e=T.x,r=T.y,s=i=0}else{let T=n,M=T.width/2,y=T.height/2;e=T.x+M,r=T.y+y,o=a=Math.max(0,Math.min(T.radius,Math.min(M,y))),s=M-o,i=y-a}if(s<0||i<0)return!1;let l=Math.ceil(2.3*Math.sqrt(o+a)),h=l*8+(s?4:0)+(i?4:0);if(h===0)return!1;if(l===0)return t[0]=t[6]=e+s,t[1]=t[3]=r+i,t[2]=t[4]=e-s,t[5]=t[7]=r-i,!0;let c=0,u=l*4+(s?2:0)+2,f=u,d=h,p=s+o,m=i,x=e+p,g=e-p,_=r+m;if(t[c++]=x,t[c++]=_,t[--u]=_,t[--u]=g,i){let T=r-m;t[f++]=g,t[f++]=T,t[--d]=T,t[--d]=x}for(let T=1;T<l;T++){let M=Math.PI/2*(T/l),y=s+Math.cos(M)*o,b=i+Math.sin(M)*a,B=e+y,P=e-y,C=r+b,v=r-b;t[c++]=B,t[c++]=C,t[--u]=C,t[--u]=P,t[f++]=P,t[f++]=v,t[--d]=v,t[--d]=B}p=s,m=i+a,x=e+p,g=e-p,_=r+m;let S=r-m;return t[c++]=x,t[c++]=_,t[--d]=S,t[--d]=x,s&&(t[c++]=g,t[c++]=_,t[--d]=S,t[--d]=g),!0},triangulate(n,t,e,r,s,i){if(n.length===0)return;let o=0,a=0;for(let c=0;c<n.length;c+=2)o+=n[c],a+=n[c+1];o/=n.length/2,a/=n.length/2;let l=r;t[l*e]=o,t[l*e+1]=a;let h=l++;for(let c=0;c<n.length;c+=2)t[l*e]=n[c],t[l*e+1]=n[c+1],c>0&&(s[i++]=l,s[i++]=h,s[i++]=l-1),l++;s[i++]=h+1,s[i++]=h,s[i++]=l-1}},$s={...Dt,extension:{...Dt.extension,name:"ellipse"}},Ys={...Dt,extension:{...Dt.extension,name:"roundedRectangle"}};function Xs(n){let t=n.length;if(t<6)return 1;let e=0;for(let r=0,s=n[t-2],i=n[t-1];r<t;r+=2){let o=n[r],a=n[r+1];e+=(o-s)*(a+i),s=o,i=a}return e<0?-1:1}function Ks(n,t,e,r,s,i,o,a){let l=n-e*s,h=t-r*s,c=n+e*i,u=t+r*i,f,d;o?(f=r,d=-e):(f=-r,d=e);let p=l+f,m=h+d,x=c+f,g=u+d;return a.push(p,m),a.push(x,g),2}function At(n,t,e,r,s,i,o,a){let l=e-n,h=r-t,c=Math.atan2(l,h),u=Math.atan2(s-n,i-t);a&&c<u?c+=Math.PI*2:!a&&c>u&&(u+=Math.PI*2);let f=c,d=u-c,p=Math.abs(d),m=Math.sqrt(l*l+h*h),x=(15*p*Math.sqrt(m)/Math.PI>>0)+1,g=d/x;if(f+=g,a){o.push(n,t),o.push(e,r);for(let _=1,S=f;_<x;_++,S+=g)o.push(n,t),o.push(n+Math.sin(S)*m,t+Math.cos(S)*m);o.push(n,t),o.push(s,i)}else{o.push(e,r),o.push(n,t);for(let _=1,S=f;_<x;_++,S+=g)o.push(n+Math.sin(S)*m,t+Math.cos(S)*m),o.push(n,t);o.push(s,i),o.push(n,t)}return x*2}function Qs(n,t,e,r,s,i){let o=1e-4;if(n.length===0)return;let a=t,l=a.alignment;if(t.alignment!==.5){let z=Xs(n);e&&(z*=-1),l=(l-.5)*z+.5}let h=new ct(n[0],n[1]),c=new ct(n[n.length-2],n[n.length-1]),u=r,f=Math.abs(h.x-c.x)<o&&Math.abs(h.y-c.y)<o;if(u){n=n.slice(),f&&(n.pop(),n.pop(),c.set(n[n.length-2],n[n.length-1]));let z=(h.x+c.x)*.5,pt=(c.y+h.y)*.5;n.unshift(z,pt),n.push(z,pt)}let d=s,p=n.length/2,m=n.length,x=d.length/2,g=a.width/2,_=g*g,S=a.miterLimit*a.miterLimit,T=n[0],M=n[1],y=n[2],b=n[3],B=0,P=0,C=-(M-b),v=T-y,R=0,I=0,O=Math.sqrt(C*C+v*v);C/=O,v/=O,C*=g,v*=g;let Rt=l,A=(1-Rt)*2,F=Rt*2;u||(a.cap==="round"?m+=At(T-C*(A-F)*.5,M-v*(A-F)*.5,T-C*A,M-v*A,T+C*F,M+v*F,d,!0)+2:a.cap==="square"&&(m+=Ks(T,M,C,v,A,F,!0,d))),d.push(T-C*A,M-v*A),d.push(T+C*F,M+v*F);for(let z=1;z<p-1;++z){T=n[(z-1)*2],M=n[(z-1)*2+1],y=n[z*2],b=n[z*2+1],B=n[(z+1)*2],P=n[(z+1)*2+1],C=-(M-b),v=T-y,O=Math.sqrt(C*C+v*v),C/=O,v/=O,C*=g,v*=g,R=-(b-P),I=y-B,O=Math.sqrt(R*R+I*I),R/=O,I/=O,R*=g,I*=g;let pt=y-T,Yt=M-b,Xt=y-B,Kt=P-b,ls=pt*Xt+Yt*Kt,ce=Yt*Xt-Kt*pt,Qt=ce<0;if(Math.abs(ce)<.001*Math.abs(ls)){d.push(y-C*A,b-v*A),d.push(y+C*F,b+v*F),ls>=0&&(a.join==="round"?m+=At(y,b,y-C*A,b-v*A,y-R*A,b-I*A,d,!1)+4:m+=2,d.push(y-R*F,b-I*F),d.push(y+R*A,b+I*A));continue}let cs=(-C+T)*(-v+b)-(-C+y)*(-v+M),hs=(-R+B)*(-I+b)-(-R+y)*(-I+P),he=(pt*hs-Xt*cs)/ce,ue=(Kt*cs-Yt*hs)/ce,Je=(he-y)*(he-y)+(ue-b)*(ue-b),bt=y+(he-y)*A,St=b+(ue-b)*A,Tt=y-(he-y)*F,wt=b-(ue-b)*F,An=Math.min(pt*pt+Yt*Yt,Xt*Xt+Kt*Kt),us=Qt?A:F,kn=An+us*us*_;Je<=kn?a.join==="bevel"||Je/_>S?(Qt?(d.push(bt,St),d.push(y+C*F,b+v*F),d.push(bt,St),d.push(y+R*F,b+I*F)):(d.push(y-C*A,b-v*A),d.push(Tt,wt),d.push(y-R*A,b-I*A),d.push(Tt,wt)),m+=2):a.join==="round"?Qt?(d.push(bt,St),d.push(y+C*F,b+v*F),m+=At(y,b,y+C*F,b+v*F,y+R*F,b+I*F,d,!0)+4,d.push(bt,St),d.push(y+R*F,b+I*F)):(d.push(y-C*A,b-v*A),d.push(Tt,wt),m+=At(y,b,y-C*A,b-v*A,y-R*A,b-I*A,d,!1)+4,d.push(y-R*A,b-I*A),d.push(Tt,wt)):(d.push(bt,St),d.push(Tt,wt)):(d.push(y-C*A,b-v*A),d.push(y+C*F,b+v*F),a.join==="round"?Qt?m+=At(y,b,y+C*F,b+v*F,y+R*F,b+I*F,d,!0)+2:m+=At(y,b,y-C*A,b-v*A,y-R*A,b-I*A,d,!1)+2:a.join==="miter"&&Je/_<=S&&(Qt?(d.push(Tt,wt),d.push(Tt,wt)):(d.push(bt,St),d.push(bt,St)),m+=2),d.push(y-R*A,b-I*A),d.push(y+R*F,b+I*F),m+=2)}T=n[(p-2)*2],M=n[(p-2)*2+1],y=n[(p-1)*2],b=n[(p-1)*2+1],C=-(M-b),v=T-y,O=Math.sqrt(C*C+v*v),C/=O,v/=O,C*=g,v*=g,d.push(y-C*A,b-v*A),d.push(y+C*F,b+v*F),u||(a.cap==="round"?m+=At(y-C*(A-F)*.5,b-v*(A-F)*.5,y-C*A,b-v*A,y+C*F,b+v*F,d,!1)+2:a.cap==="square"&&(m+=Ks(y,b,C,v,A,F,!1,d)));let $t=1e-4*1e-4;for(let z=x;z<m+x-2;++z)T=d[z*2],M=d[z*2+1],y=d[(z+1)*2],b=d[(z+1)*2+1],B=d[(z+2)*2],P=d[(z+2)*2+1],!(Math.abs(T*(b-P)+y*(P-M)+B*(M-b))<$t)&&i.push(z,z+1,z+2)}function Zs(n,t,e,r){let s=1e-4;if(n.length===0)return;let i=n[0],o=n[1],a=n[n.length-2],l=n[n.length-1],h=t||Math.abs(i-a)<s&&Math.abs(o-l)<s,c=e,u=n.length/2,f=c.length/2;for(let d=0;d<u;d++)c.push(n[d*2]),c.push(n[d*2+1]);for(let d=0;d<u-1;d++)r.push(f+d,f+d+1);h&&r.push(f+u-1,f)}function we(n,t,e,r,s,i,o){let a=Bs(n,t,2);if(!a)return;for(let h=0;h<a.length;h+=3)i[o++]=a[h]+s,i[o++]=a[h+1]+s,i[o++]=a[h+2]+s;let l=s*r;for(let h=0;h<n.length;h+=2)e[l]=n[h],e[l+1]=n[h+1],l+=r}var Vn=[],Js={extension:{type:w.ShapeBuilder,name:"polygon"},build(n,t){for(let e=0;e<n.points.length;e++)t[e]=n.points[e];return!0},triangulate(n,t,e,r,s,i){we(n,Vn,t,e,r,s,i)}};var ti={extension:{type:w.ShapeBuilder,name:"rectangle"},build(n,t){let e=n,r=e.x,s=e.y,i=e.width,o=e.height;return i>0&&o>0?(t[0]=r,t[1]=s,t[2]=r+i,t[3]=s,t[4]=r+i,t[5]=s+o,t[6]=r,t[7]=s+o,!0):!1},triangulate(n,t,e,r,s,i){let o=0;r*=e,t[r+o]=n[0],t[r+o+1]=n[1],o+=e,t[r+o]=n[2],t[r+o+1]=n[3],o+=e,t[r+o]=n[6],t[r+o+1]=n[7],o+=e,t[r+o]=n[4],t[r+o+1]=n[5],o+=e;let a=r/e;s[i++]=a,s[i++]=a+1,s[i++]=a+2,s[i++]=a+1,s[i++]=a+3,s[i++]=a+2}};var ei={extension:{type:w.ShapeBuilder,name:"triangle"},build(n,t){return t[0]=n.x,t[1]=n.y,t[2]=n.x2,t[3]=n.y2,t[4]=n.x3,t[5]=n.y3,!0},triangulate(n,t,e,r,s,i){let o=0;r*=e,t[r+o]=n[0],t[r+o+1]=n[1],o+=e,t[r+o]=n[2],t[r+o+1]=n[3],o+=e,t[r+o]=n[4],t[r+o+1]=n[5];let a=r/e;s[i++]=a,s[i++]=a+1,s[i++]=a+2}};var ri=[{offset:0,color:"white"},{offset:1,color:"black"}],mr=class pr{constructor(...t){this.uid=rt("fillGradient"),this._tick=0,this.type="linear",this.colorStops=[];let e=Nn(t);e={...e.type==="radial"?pr.defaultRadialOptions:pr.defaultLinearOptions,...xs(e)},this._textureSize=e.textureSize,this._wrapMode=e.wrapMode,e.type==="radial"?(this.center=e.center,this.outerCenter=e.outerCenter??this.center,this.innerRadius=e.innerRadius,this.outerRadius=e.outerRadius,this.scale=e.scale,this.rotation=e.rotation):(this.start=e.start,this.end=e.end),this.textureSpace=e.textureSpace,this.type=e.type,e.colorStops.forEach(s=>{this.addColorStop(s.offset,s.color)})}addColorStop(t,e){return this.colorStops.push({offset:t,color:W.shared.setValue(e).toHexa()}),this}buildLinearGradient(){if(this.texture)return;let{x:t,y:e}=this.start,{x:r,y:s}=this.end,i=r-t,o=s-e,a=i<0||o<0;if(this._wrapMode==="clamp-to-edge"){if(i<0){let x=t;t=r,r=x,i*=-1}if(o<0){let x=e;e=s,s=x,o*=-1}}let l=this.colorStops.length?this.colorStops:ri,h=this._textureSize,{canvas:c,context:u}=ii(h,1),f=a?u.createLinearGradient(this._textureSize,0,0,0):u.createLinearGradient(0,0,this._textureSize,0);si(f,l),u.fillStyle=f,u.fillRect(0,0,h,1),this.texture=new E({source:new ot({resource:c,addressMode:this._wrapMode})});let d=Math.sqrt(i*i+o*o),p=Math.atan2(o,i),m=new G;m.scale(d/h,1),m.rotate(p),m.translate(t,e),this.textureSpace==="local"&&m.scale(h,h),this.transform=m}buildGradient(){this.texture||this._tick++,this.type==="linear"?this.buildLinearGradient():this.buildRadialGradient()}buildRadialGradient(){if(this.texture)return;let t=this.colorStops.length?this.colorStops:ri,e=this._textureSize,{canvas:r,context:s}=ii(e,e),{x:i,y:o}=this.center,{x:a,y:l}=this.outerCenter,h=this.innerRadius,c=this.outerRadius,u=a-c,f=l-c,d=e/(c*2),p=(i-u)*d,m=(o-f)*d,x=s.createRadialGradient(p,m,h*d,(a-u)*d,(l-f)*d,c*d);si(x,t),s.fillStyle=t[t.length-1].color,s.fillRect(0,0,e,e),s.fillStyle=x,s.translate(p,m),s.rotate(this.rotation),s.scale(1,this.scale),s.translate(-p,-m),s.fillRect(0,0,e,e),this.texture=new E({source:new ot({resource:r,addressMode:this._wrapMode})});let g=new G;g.scale(1/d,1/d),g.translate(u,f),this.textureSpace==="local"&&g.scale(e,e),this.transform=g}destroy(){this.texture?.destroy(!0),this.texture=null,this.transform=null,this.colorStops=[],this.start=null,this.end=null,this.center=null,this.outerCenter=null}get styleKey(){return`fill-gradient-${this.uid}-${this._tick}`}};mr.defaultLinearOptions={start:{x:0,y:0},end:{x:0,y:1},colorStops:[],textureSpace:"local",type:"linear",textureSize:256,wrapMode:"clamp-to-edge"};mr.defaultRadialOptions={center:{x:.5,y:.5},innerRadius:0,outerRadius:.5,colorStops:[],scale:1,textureSpace:"local",type:"radial",textureSize:256,wrapMode:"clamp-to-edge"};var $=mr;function si(n,t){for(let e=0;e<t.length;e++){let r=t[e];n.addColorStop(r.offset,r.color)}}function ii(n,t){let e=j.get().createCanvas(n,t),r=e.getContext("2d");return{canvas:e,context:r}}function Nn(n){let t=n[0]??{};return(typeof t=="number"||n[1])&&(U("8.5.2","use options object instead"),t={type:"linear",start:{x:n[0],y:n[1]},end:{x:n[2],y:n[3]},textureSpace:n[4],textureSize:n[5]??$.defaultLinearOptions.textureSize}),t}var jn=new G,qn=new H;function ni(n,t,e,r){let s=t.matrix?n.copyFrom(t.matrix).invert():n.identity();if(t.textureSpace==="local"){let o=e.getBounds(qn);t.width&&o.pad(t.width);let{x:a,y:l}=o,h=1/o.width,c=1/o.height,u=-a*h,f=-l*c,d=s.a,p=s.b,m=s.c,x=s.d;s.a*=h,s.b*=h,s.c*=c,s.d*=c,s.tx=u*d+f*m+s.tx,s.ty=u*p+f*x+s.ty}else s.translate(t.texture.frame.x,t.texture.frame.y),s.scale(1/t.texture.source.width,1/t.texture.source.height);let i=t.texture.source.style;return!(t.fill instanceof $)&&i.addressMode==="clamp-to-edge"&&(i.addressMode="repeat",i.update()),r&&s.append(jn.copyFrom(r).invert()),s}var Pe={};lt.handleByMap(w.ShapeBuilder,Pe);lt.add(ti,Js,ei,Dt,$s,Ys);var $n=new H,Yn=new G;function ai(n,t){let{geometryData:e,batches:r}=t;r.length=0,e.indices.length=0,e.vertices.length=0,e.uvs.length=0;for(let s=0;s<n.instructions.length;s++){let i=n.instructions[s];if(i.action==="texture")Xn(i.data,r,e);else if(i.action==="fill"||i.action==="stroke"){let o=i.action==="stroke",a=i.data.path.shapePath,l=i.data.style,h=i.data.hole;o&&h&&oi(h.shapePath,l,!0,r,e),h&&(a.shapePrimitives[a.shapePrimitives.length-1].holes=h.shapePath.shapePrimitives),oi(a,l,o,r,e)}}}function Xn(n,t,e){let r=[],s=Pe.rectangle,i=$n;i.x=n.dx,i.y=n.dy,i.width=n.dw,i.height=n.dh;let o=n.transform;if(!s.build(i,r))return;let{vertices:a,uvs:l,indices:h}=e,c=h.length,u=a.length/2;o&&fr(r,o),s.triangulate(r,a,2,u,h,c);let f=n.image,d=f.uvs;l.push(d.x0,d.y0,d.x1,d.y1,d.x3,d.y3,d.x2,d.y2);let p=X.get(Mt);p.indexOffset=c,p.indexSize=h.length-c,p.attributeOffset=u,p.attributeSize=a.length/2-u,p.baseColor=n.style,p.alpha=n.alpha,p.texture=f,p.geometryData=e,t.push(p)}function oi(n,t,e,r,s){let{vertices:i,uvs:o,indices:a}=s;n.shapePrimitives.forEach(({shape:l,transform:h,holes:c})=>{let u=[],f=Pe[l.type];if(!f.build(l,u))return;let d=a.length,p=i.length/2,m="triangle-list";if(h&&fr(u,h),e){let S=l.closePath??!0,T=t;T.pixelLine?(Zs(u,S,i,a),m="line-list"):Qs(u,T,!1,S,i,a)}else if(c){let S=[],T=u.slice();Kn(c).forEach(y=>{S.push(T.length/2),T.push(...y)}),we(T,S,i,2,p,a,d)}else f.triangulate(u,i,2,p,a,d);let x=o.length/2,g=t.texture;if(g!==E.WHITE){let S=ni(Yn,t,l,h);js(i,2,p,o,x,2,i.length/2-p,S)}else qs(o,x,2,i.length/2-p);let _=X.get(Mt);_.indexOffset=d,_.indexSize=a.length-d,_.attributeOffset=p,_.attributeSize=i.length/2-p,_.baseColor=t.color,_.alpha=t.alpha,_.texture=g,_.geometryData=s,_.topology=m,r.push(_)})}function Kn(n){let t=[];for(let e=0;e<n.length;e++){let r=n[e].shape,s=[];Pe[r.type].build(r,s)&&t.push(s)}return t}var gr=class{constructor(){this.batches=[],this.geometryData={vertices:[],uvs:[],indices:[]}}},xr=class{constructor(){this.instructions=new gs}init(t){let e=t.maxTextures;this.batcher?this.batcher._updateMaxTextures(e):this.batcher=new Fs({maxTextures:e}),this.instructions.reset()}get geometry(){return U(ds,"GraphicsContextRenderData#geometry is deprecated, please use batcher.geometry instead."),this.batcher.geometry}destroy(){this.batcher.destroy(),this.instructions.destroy(),this.batcher=null,this.instructions=null}},yr=class _r{constructor(t){this._gpuContextHash={},this._graphicsDataContextHash=Object.create(null),this._renderer=t,t.renderableGC.addManagedHash(this,"_gpuContextHash"),t.renderableGC.addManagedHash(this,"_graphicsDataContextHash")}init(t){_r.defaultOptions.bezierSmoothness=t?.bezierSmoothness??_r.defaultOptions.bezierSmoothness}getContextRenderData(t){return this._graphicsDataContextHash[t.uid]||this._initContextRenderData(t)}updateGpuContext(t){let e=this._gpuContextHash[t.uid]||this._initContext(t);if(t.dirty){e?this._cleanGraphicsContextData(t):e=this._initContext(t),ai(t,e);let r=t.batchMode;t.customShader||r==="no-batch"?e.isBatchable=!1:r==="auto"?e.isBatchable=e.geometryData.vertices.length<400:e.isBatchable=!0,t.dirty=!1}return e}getGpuContext(t){return this._gpuContextHash[t.uid]||this._initContext(t)}_initContextRenderData(t){let e=X.get(xr,{maxTextures:this._renderer.limits.maxBatchableTextures}),{batches:r,geometryData:s}=this._gpuContextHash[t.uid],i=s.vertices.length,o=s.indices.length;for(let c=0;c<r.length;c++)r[c].applyTransform=!1;let a=e.batcher;a.ensureAttributeBuffer(i),a.ensureIndexBuffer(o),a.begin();for(let c=0;c<r.length;c++){let u=r[c];a.add(u)}a.finish(e.instructions);let l=a.geometry;l.indexBuffer.setDataWithSize(a.indexBuffer,a.indexSize,!0),l.buffers[0].setDataWithSize(a.attributeBuffer.float32View,a.attributeSize,!0);let h=a.batches;for(let c=0;c<h.length;c++){let u=h[c];u.bindGroup=Ps(u.textures.textures,u.textures.count,this._renderer.limits.maxBatchableTextures)}return this._graphicsDataContextHash[t.uid]=e,e}_initContext(t){let e=new gr;return e.context=t,this._gpuContextHash[t.uid]=e,t.on("destroy",this.onGraphicsContextDestroy,this),this._gpuContextHash[t.uid]}onGraphicsContextDestroy(t){this._cleanGraphicsContextData(t),t.off("destroy",this.onGraphicsContextDestroy,this),this._gpuContextHash[t.uid]=null}_cleanGraphicsContextData(t){let e=this._gpuContextHash[t.uid];e.isBatchable||this._graphicsDataContextHash[t.uid]&&(X.return(this.getContextRenderData(t)),this._graphicsDataContextHash[t.uid]=null),e.batches&&e.batches.forEach(r=>{X.return(r)})}destroy(){for(let t in this._gpuContextHash)this._gpuContextHash[t]&&this.onGraphicsContextDestroy(this._gpuContextHash[t].context);this._gpuContextHash={},this._graphicsDataContextHash={},this._renderer=null}};yr.extension={type:[w.WebGLSystem,w.WebGPUSystem,w.CanvasSystem],name:"graphicsContext"};yr.defaultOptions={bezierSmoothness:.5};var ve=yr;var br=class{constructor(){this.batches=[],this.batched=!1}destroy(){this.batches.forEach(t=>{X.return(t)}),this.batches.length=0}},Sr=class{constructor(t,e){this.state=vt.for2d(),this.renderer=t,this._adaptor=e,this.renderer.runners.contextChange.add(this)}contextChange(){this._adaptor.contextChange(this.renderer)}validateRenderable(t){let e=t.context,r=!!t._gpuData,s=this.renderer.graphicsContext.updateGpuContext(e);return!!(s.isBatchable||r!==s.isBatchable)}addRenderable(t,e){let r=this.renderer.graphicsContext.updateGpuContext(t.context);t.didViewUpdate&&this._rebuild(t),r.isBatchable?this._addToBatcher(t,e):(this.renderer.renderPipes.batch.break(e),e.add(t))}updateRenderable(t){let r=this._getGpuDataForRenderable(t).batches;for(let s=0;s<r.length;s++){let i=r[s];i._batcher.updateElement(i)}}execute(t){if(!t.isRenderable)return;let e=this.renderer,r=t.context;if(!e.graphicsContext.getGpuContext(r).batches.length)return;let i=r.customShader||this._adaptor.shader;this.state.blendMode=t.groupBlendMode;let o=i.resources.localUniforms.uniforms;o.uTransformMatrix=t.groupTransform,o.uRound=e._roundPixels|t._roundPixels,xt(t.groupColorAlpha,o.uColor,0),this._adaptor.execute(this,t)}_rebuild(t){let e=this._getGpuDataForRenderable(t),r=this.renderer.graphicsContext.updateGpuContext(t.context);e.destroy(),r.isBatchable&&this._updateBatchesForRenderable(t,e)}_addToBatcher(t,e){let r=this.renderer.renderPipes.batch,s=this._getGpuDataForRenderable(t).batches;for(let i=0;i<s.length;i++){let o=s[i];r.addToBatch(o,e)}}_getGpuDataForRenderable(t){return t._gpuData[this.renderer.uid]||this._initGpuDataForRenderable(t)}_initGpuDataForRenderable(t){let e=new br;return t._gpuData[this.renderer.uid]=e,e}_updateBatchesForRenderable(t,e){let r=t.context,s=this.renderer.graphicsContext.getGpuContext(r),i=this.renderer._roundPixels|t._roundPixels;e.batches=s.batches.map(o=>{let a=X.get(Mt);return o.copyTo(a),a.renderable=t,a.roundPixels=i,a})}destroy(){this.renderer=null,this._adaptor.destroy(),this._adaptor=null,this.state=null}};Sr.extension={type:[w.WebGLPipes,w.WebGPUPipes,w.CanvasPipes],name:"graphics"};var yt=class{constructor(){this.batcherName="default",this.packAsQuad=!1,this.indexOffset=0,this.attributeOffset=0,this.roundPixels=0,this._batcher=null,this._batch=null,this._textureMatrixUpdateId=-1,this._uvUpdateId=-1}get blendMode(){return this.renderable.groupBlendMode}get topology(){return this._topology||this.geometry.topology}set topology(t){this._topology=t}reset(){this.renderable=null,this.texture=null,this._batcher=null,this._batch=null,this.geometry=null,this._uvUpdateId=-1,this._textureMatrixUpdateId=-1}setTexture(t){this.texture!==t&&(this.texture=t,this._textureMatrixUpdateId=-1)}get uvs(){let e=this.geometry.getBuffer("aUV"),r=e.data,s=r,i=this.texture.textureMatrix;return i.isSimple||(s=this._transformedUvs,(this._textureMatrixUpdateId!==i._updateID||this._uvUpdateId!==e._updateID)&&((!s||s.length<r.length)&&(s=this._transformedUvs=new Float32Array(r.length)),this._textureMatrixUpdateId=i._updateID,this._uvUpdateId=e._updateID,i.multiplyUvs(r,s))),s}get positions(){return this.geometry.positions}get indices(){return this.geometry.indices}get color(){return this.renderable.groupColorAlpha}get groupTransform(){return this.renderable.groupTransform}get attributeSize(){return this.geometry.positions.length/2}get indexSize(){return this.geometry.indices.length}};var Ce=class{destroy(){}},Tr=class{constructor(t,e){this.localUniforms=new J({uTransformMatrix:{value:new G,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}}),this.localUniformsBindGroup=new de({0:this.localUniforms}),this.renderer=t,this._adaptor=e,this._adaptor.init()}validateRenderable(t){let e=this._getMeshData(t),r=e.batched,s=t.batched;if(e.batched=s,r!==s)return!0;if(s){let i=t._geometry;if(i.indices.length!==e.indexSize||i.positions.length!==e.vertexSize)return e.indexSize=i.indices.length,e.vertexSize=i.positions.length,!0;let o=this._getBatchableMesh(t);return o.texture.uid!==t._texture.uid&&(o._textureMatrixUpdateId=-1),!o._batcher.checkAndUpdateTexture(o,t._texture)}return!1}addRenderable(t,e){let r=this.renderer.renderPipes.batch,s=this._getMeshData(t);if(t.didViewUpdate&&(s.indexSize=t._geometry.indices?.length,s.vertexSize=t._geometry.positions?.length),s.batched){let i=this._getBatchableMesh(t);i.setTexture(t._texture),i.geometry=t._geometry,r.addToBatch(i,e)}else r.break(e),e.add(t)}updateRenderable(t){if(t.batched){let e=this._getBatchableMesh(t);e.setTexture(t._texture),e.geometry=t._geometry,e._batcher.updateElement(e)}}execute(t){if(!t.isRenderable)return;t.state.blendMode=Et(t.groupBlendMode,t.texture._source);let e=this.localUniforms;e.uniforms.uTransformMatrix=t.groupTransform,e.uniforms.uRound=this.renderer._roundPixels|t._roundPixels,e.update(),xt(t.groupColorAlpha,e.uniforms.uColor,0),this._adaptor.execute(this,t)}_getMeshData(t){var e,r;return(e=t._gpuData)[r=this.renderer.uid]||(e[r]=new Ce),t._gpuData[this.renderer.uid].meshData||this._initMeshData(t)}_initMeshData(t){return t._gpuData[this.renderer.uid].meshData={batched:t.batched,indexSize:0,vertexSize:0},t._gpuData[this.renderer.uid].meshData}_getBatchableMesh(t){var e,r;return(e=t._gpuData)[r=this.renderer.uid]||(e[r]=new Ce),t._gpuData[this.renderer.uid].batchableMesh||this._initBatchableMesh(t)}_initBatchableMesh(t){let e=new yt;return e.renderable=t,e.setTexture(t._texture),e.transform=t.groupTransform,e.roundPixels=this.renderer._roundPixels|t._roundPixels,t._gpuData[this.renderer.uid].batchableMesh=e,e}destroy(){this.localUniforms=null,this.localUniformsBindGroup=null,this._adaptor.destroy(),this._adaptor=null,this.renderer=null}};Tr.extension={type:[w.WebGLPipes,w.WebGPUPipes,w.CanvasPipes],name:"mesh"};var Me=class{execute(t,e){let r=t.state,s=t.renderer,i=e.shader||t.defaultShader;i.resources.uTexture=e.texture._source,i.resources.uniforms=t.localUniforms;let o=s.gl,a=t.getBuffers(e);s.shader.bind(i),s.state.set(r),s.geometry.bind(a.geometry,i.glProgram);let h=a.geometry.indexBuffer.data.BYTES_PER_ELEMENT===2?o.UNSIGNED_SHORT:o.UNSIGNED_INT;o.drawElements(o.TRIANGLES,e.particleChildren.length*6,h,0)}};function wr(n,t=null){let e=n*6;if(e>65535?t||(t=new Uint32Array(e)):t||(t=new Uint16Array(e)),t.length!==e)throw new Error(`Out buffer length is incorrect, got ${t.length} and expected ${e}`);for(let r=0,s=0;r<e;r+=6,s+=4)t[r+0]=s+0,t[r+1]=s+1,t[r+2]=s+2,t[r+3]=s+0,t[r+4]=s+2,t[r+5]=s+3;return t}function ci(n){return{dynamicUpdate:li(n,!0),staticUpdate:li(n,!1)}}function li(n,t){let e=[];e.push(`
|
|
1
|
+
import{a as Ps,b as nt}from"./chunk-23FOBGX6.js";import{$ as Et,B as ms,Ba as Us,C as gs,Ca as Es,D as rr,E as xs,F as mt,G as it,H as _s,J as E,K as q,P as ys,Q as bs,R as gt,S as Ss,T as j,U as Ts,V as sr,W as ws,X as de,Y as Zt,a as Fn,ba as Q,c as Bn,ca as Pt,d as w,da as Gt,e as lt,f as Ut,fa as fe,g as W,ga as Jt,ha as pe,i as ct,ia as me,j as G,ja as ge,ka as vs,l as rt,la as Cs,m as D,ma as Ms,n as ds,na as As,o as U,oa as xe,p as L,pa as _e,qa as J,r as X,ra as ks,sa as It,ta as zt,u as H,ua as Fs,v as st,va as Bs,w as tr,wa as vt,x as er,xa as xt,y as fs,ya as ye,z as ps,za as Rs}from"./chunk-XNIZ4L5W.js";var pi=Fn((Ph,fi)=>{fi.exports=Jn;var Ar={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},Zn=/([astvzqmhlc])([^astvzqmhlc]*)/ig;function Jn(n){var t=[];return n.replace(Zn,function(e,r,s){var i=r.toLowerCase();for(s=eo(s),i=="m"&&s.length>2&&(t.push([r].concat(s.splice(0,2))),i="l",r=r=="m"?"l":"L");;){if(s.length==Ar[i])return s.unshift(r),t.push(s);if(s.length<Ar[i])throw new Error("malformed path data");t.push([r].concat(s.splice(0,Ar[i])))}}),t}var to=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/ig;function eo(n){var t=n.match(to);return t?t.map(Number):[]}});var ir=(n=>(n[n.Low=0]="Low",n[n.Normal=1]="Normal",n[n.High=2]="High",n))(ir||{});function tt(n){if(typeof n!="string")throw new TypeError(`Path must be a string. Received ${JSON.stringify(n)}`)}function te(n){return n.split("?")[0].split("#")[0]}function Rn(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Un(n,t,e){return n.replace(new RegExp(Rn(t),"g"),e)}function En(n,t){let e="",r=0,s=-1,i=0,o=-1;for(let a=0;a<=n.length;++a){if(a<n.length)o=n.charCodeAt(a);else{if(o===47)break;o=47}if(o===47){if(!(s===a-1||i===1))if(s!==a-1&&i===2){if(e.length<2||r!==2||e.charCodeAt(e.length-1)!==46||e.charCodeAt(e.length-2)!==46){if(e.length>2){let l=e.lastIndexOf("/");if(l!==e.length-1){l===-1?(e="",r=0):(e=e.slice(0,l),r=e.length-1-e.lastIndexOf("/")),s=a,i=0;continue}}else if(e.length===2||e.length===1){e="",r=0,s=a,i=0;continue}}t&&(e.length>0?e+="/..":e="..",r=2)}else e.length>0?e+=`/${n.slice(s+1,a)}`:e=n.slice(s+1,a),r=a-s-1;s=a,i=0}else o===46&&i!==-1?++i:i=-1}return e}var Ct={toPosix(n){return Un(n,"\\","/")},isUrl(n){return/^https?:/.test(this.toPosix(n))},isDataUrl(n){return/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(n)},isBlobUrl(n){return n.startsWith("blob:")},hasProtocol(n){return/^[^/:]+:/.test(this.toPosix(n))},getProtocol(n){tt(n),n=this.toPosix(n);let t=/^file:\/\/\//.exec(n);if(t)return t[0];let e=/^[^/:]+:\/{0,2}/.exec(n);return e?e[0]:""},toAbsolute(n,t,e){if(tt(n),this.isDataUrl(n)||this.isBlobUrl(n))return n;let r=te(this.toPosix(t??j.get().getBaseUrl())),s=te(this.toPosix(e??this.rootname(r)));return n=this.toPosix(n),n.startsWith("/")?Ct.join(s,n.slice(1)):this.isAbsolute(n)?n:this.join(r,n)},normalize(n){if(tt(n),n.length===0)return".";if(this.isDataUrl(n)||this.isBlobUrl(n))return n;n=this.toPosix(n);let t="",e=n.startsWith("/");this.hasProtocol(n)&&(t=this.rootname(n),n=n.slice(t.length));let r=n.endsWith("/");return n=En(n,!1),n.length>0&&r&&(n+="/"),e?`/${n}`:t+n},isAbsolute(n){return tt(n),n=this.toPosix(n),this.hasProtocol(n)?!0:n.startsWith("/")},join(...n){if(n.length===0)return".";let t;for(let e=0;e<n.length;++e){let r=n[e];if(tt(r),r.length>0)if(t===void 0)t=r;else{let s=n[e-1]??"";this.joinExtensions.includes(this.extname(s).toLowerCase())?t+=`/../${r}`:t+=`/${r}`}}return t===void 0?".":this.normalize(t)},dirname(n){if(tt(n),n.length===0)return".";n=this.toPosix(n);let t=n.charCodeAt(0),e=t===47,r=-1,s=!0,i=this.getProtocol(n),o=n;n=n.slice(i.length);for(let a=n.length-1;a>=1;--a)if(t=n.charCodeAt(a),t===47){if(!s){r=a;break}}else s=!1;return r===-1?e?"/":this.isUrl(o)?i+n:i:e&&r===1?"//":i+n.slice(0,r)},rootname(n){tt(n),n=this.toPosix(n);let t="";if(n.startsWith("/")?t="/":t=this.getProtocol(n),this.isUrl(n)){let e=n.indexOf("/",t.length);e!==-1?t=n.slice(0,e):t=n,t.endsWith("/")||(t+="/")}return t},basename(n,t){tt(n),t&&tt(t),n=te(this.toPosix(n));let e=0,r=-1,s=!0,i;if(t!==void 0&&t.length>0&&t.length<=n.length){if(t.length===n.length&&t===n)return"";let o=t.length-1,a=-1;for(i=n.length-1;i>=0;--i){let l=n.charCodeAt(i);if(l===47){if(!s){e=i+1;break}}else a===-1&&(s=!1,a=i+1),o>=0&&(l===t.charCodeAt(o)?--o===-1&&(r=i):(o=-1,r=a))}return e===r?r=a:r===-1&&(r=n.length),n.slice(e,r)}for(i=n.length-1;i>=0;--i)if(n.charCodeAt(i)===47){if(!s){e=i+1;break}}else r===-1&&(s=!1,r=i+1);return r===-1?"":n.slice(e,r)},extname(n){tt(n),n=te(this.toPosix(n));let t=-1,e=0,r=-1,s=!0,i=0;for(let o=n.length-1;o>=0;--o){let a=n.charCodeAt(o);if(a===47){if(!s){e=o+1;break}continue}r===-1&&(s=!1,r=o+1),a===46?t===-1?t=o:i!==1&&(i=1):t!==-1&&(i=-1)}return t===-1||r===-1||i===0||i===1&&t===r-1&&t===e+1?"":n.slice(t,r)},parse(n){tt(n);let t={root:"",dir:"",base:"",ext:"",name:""};if(n.length===0)return t;n=te(this.toPosix(n));let e=n.charCodeAt(0),r=this.isAbsolute(n),s,i="";t.root=this.rootname(n),r||this.hasProtocol(n)?s=1:s=0;let o=-1,a=0,l=-1,h=!0,c=n.length-1,u=0;for(;c>=s;--c){if(e=n.charCodeAt(c),e===47){if(!h){a=c+1;break}continue}l===-1&&(h=!1,l=c+1),e===46?o===-1?o=c:u!==1&&(u=1):o!==-1&&(u=-1)}return o===-1||l===-1||u===0||u===1&&o===l-1&&o===a+1?l!==-1&&(a===0&&r?t.base=t.name=n.slice(1,l):t.base=t.name=n.slice(a,l)):(a===0&&r?(t.name=n.slice(1,o),t.base=n.slice(1,l)):(t.name=n.slice(a,o),t.base=n.slice(a,l)),t.ext=n.slice(o,l)),t.dir=this.dirname(n),i&&(t.dir=i+t.dir),t},sep:"/",delimiter:":",joinExtensions:[".html"]};var _t=(n,t,e=!1)=>(Array.isArray(n)||(n=[n]),t?n.map(r=>typeof r=="string"||e?t(r):r):n);function Gs(n,t,e,r,s){let i=t[e];for(let o=0;o<i.length;o++){let a=i[o];e<t.length-1?Gs(n.replace(r[e],a),t,e+1,r,s):s.push(n.replace(r[e],a))}}function Is(n){let t=/\{(.*?)\}/g,e=n.match(t),r=[];if(e){let s=[];e.forEach(i=>{let o=i.substring(1,i.length-1).split(",");s.push(o)}),Gs(n,s,0,e,r)}else r.push(n);return r}var nr=n=>!Array.isArray(n);var ee=class{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(t,e)=>`${t}${this._bundleIdConnector}${e}`,extractAssetIdFromBundle:(t,e)=>e.replace(`${t}${this._bundleIdConnector}`,"")},this._bundleIdConnector=this._defaultBundleIdentifierOptions.connector,this._createBundleAssetId=this._defaultBundleIdentifierOptions.createBundleAssetId,this._extractAssetIdFromBundle=this._defaultBundleIdentifierOptions.extractAssetIdFromBundle,this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}setBundleIdentifier(t){if(this._bundleIdConnector=t.connector??this._bundleIdConnector,this._createBundleAssetId=t.createBundleAssetId??this._createBundleAssetId,this._extractAssetIdFromBundle=t.extractAssetIdFromBundle??this._extractAssetIdFromBundle,this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar"))!=="bar")throw new Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(...t){t.forEach(e=>{this._preferredOrder.push(e),e.priority||(e.priority=Object.keys(e.params))}),this._resolverHash={}}set basePath(t){this._basePath=t}get basePath(){return this._basePath}set rootPath(t){this._rootPath=t}get rootPath(){return this._rootPath}get parsers(){return this._parsers}reset(){this.setBundleIdentifier(this._defaultBundleIdentifierOptions),this._assetMap={},this._preferredOrder=[],this._resolverHash={},this._rootPath=null,this._basePath=null,this._manifest=null,this._bundles={},this._defaultSearchParams=null}setDefaultSearchParams(t){if(typeof t=="string")this._defaultSearchParams=t;else{let e=t;this._defaultSearchParams=Object.keys(e).map(r=>`${encodeURIComponent(r)}=${encodeURIComponent(e[r])}`).join("&")}}getAlias(t){let{alias:e,src:r}=t;return _t(e||r,i=>typeof i=="string"?i:Array.isArray(i)?i.map(o=>o?.src??o):i?.src?i.src:i,!0)}addManifest(t){this._manifest&&L("[Resolver] Manifest already exists, this will be overwritten"),this._manifest=t,t.bundles.forEach(e=>{this.addBundle(e.name,e.assets)})}addBundle(t,e){let r=[],s=e;Array.isArray(e)||(s=Object.entries(e).map(([i,o])=>typeof o=="string"||Array.isArray(o)?{alias:i,src:o}:{alias:i,...o})),s.forEach(i=>{let o=i.src,a=i.alias,l;if(typeof a=="string"){let h=this._createBundleAssetId(t,a);r.push(h),l=[a,h]}else{let h=a.map(c=>this._createBundleAssetId(t,c));r.push(...h),l=[...a,...h]}this.add({...i,alias:l,src:o})}),this._bundles[t]=r}add(t){let e=[];Array.isArray(t)?e.push(...t):e.push(t);let r;r=i=>{this.hasKey(i)&&L(`[Resolver] already has key: ${i} overwriting`)},_t(e).forEach(i=>{let{src:o}=i,{data:a,format:l,loadParser:h,parser:c}=i,u=_t(o).map(m=>typeof m=="string"?Is(m):Array.isArray(m)?m:[m]),f=this.getAlias(i);Array.isArray(f)?f.forEach(r):r(f);let d=[],p=m=>({...this._parsers.find(g=>g.test(m))?.parse(m),src:m});u.forEach(m=>{m.forEach(x=>{let g={};if(typeof x!="object"?g=p(x):(a=x.data??a,l=x.format??l,(x.loadParser||x.parser)&&(h=x.loadParser??h,c=x.parser??c),g={...p(x.src),...x}),!f)throw new Error(`[Resolver] alias is undefined for this asset: ${g.src}`);g=this._buildResolvedAsset(g,{aliases:f,data:a,format:l,loadParser:h,parser:c,progressSize:i.progressSize}),d.push(g)})}),f.forEach(m=>{this._assetMap[m]=d})})}resolveBundle(t){let e=nr(t);t=_t(t);let r={};return t.forEach(s=>{let i=this._bundles[s];if(i){let o=this.resolve(i),a={};for(let l in o){let h=o[l];a[this._extractAssetIdFromBundle(s,l)]=h}r[s]=a}}),e?r[t[0]]:r}resolveUrl(t){let e=this.resolve(t);if(typeof t!="string"){let r={};for(let s in e)r[s]=e[s].src;return r}return e.src}resolve(t){let e=nr(t);t=_t(t);let r={};return t.forEach(s=>{if(!this._resolverHash[s])if(this._assetMap[s]){let i=this._assetMap[s],o=this._getPreferredOrder(i);o?.priority.forEach(a=>{o.params[a].forEach(l=>{let h=i.filter(c=>c[a]?c[a]===l:!1);h.length&&(i=h)})}),this._resolverHash[s]=i[0]}else this._resolverHash[s]=this._buildResolvedAsset({alias:[s],src:s},{});r[s]=this._resolverHash[s]}),e?r[t[0]]:r}hasKey(t){return!!this._assetMap[t]}hasBundle(t){return!!this._bundles[t]}_getPreferredOrder(t){for(let e=0;e<t.length;e++){let r=t[e],s=this._preferredOrder.find(i=>i.params.format.includes(r.format));if(s)return s}return this._preferredOrder[0]}_appendDefaultSearchParams(t){if(!this._defaultSearchParams)return t;let e=/\?/.test(t)?"&":"?";return`${t}${e}${this._defaultSearchParams}`}_buildResolvedAsset(t,e){let{aliases:r,data:s,loadParser:i,parser:o,format:a,progressSize:l}=e;return(this._basePath||this._rootPath)&&(t.src=Ct.toAbsolute(t.src,this._basePath,this._rootPath)),t.alias=r??t.alias??[t.src],t.src=this._appendDefaultSearchParams(t.src),t.data={...s||{},...t.data},t.loadParser=i??t.loadParser,t.parser=o??t.parser,t.format=a??t.format??Gn(t.src),l!==void 0&&(t.progressSize=l),t}};ee.RETINA_PREFIX=/@([0-9\.]+)x/;function Gn(n){return n.split(".").pop().split("?").shift().split("#").shift()}var or=(n,t)=>{let e=t.split("?")[1];return e&&(n+=`?${e}`),n};var zs=class re{constructor(t,e){this.linkedSheets=[];let r=t;t?.source instanceof it&&(r={texture:t,data:e});let{texture:s,data:i,cachePrefix:o=""}=r;this.cachePrefix=o,this._texture=s instanceof E?s:null,this.textureSource=s.source,this.textures={},this.animations={},this.data=i;let a=parseFloat(i.meta.scale);a?(this.resolution=a,s.source.resolution=this.resolution):this.resolution=s.source._resolution,this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}parse(){return new Promise(t=>{this._callback=t,this._batchIndex=0,this._frameKeys.length<=re.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}_processFrames(t){let e=t,r=re.BATCH_SIZE;for(;e-t<r&&e<this._frameKeys.length;){let s=this._frameKeys[e],i=this._frames[s],o=i.frame;if(o){let a=null,l=null,h=i.trimmed!==!1&&i.sourceSize?i.sourceSize:i.frame,c=new H(0,0,Math.floor(h.w)/this.resolution,Math.floor(h.h)/this.resolution);i.rotated?a=new H(Math.floor(o.x)/this.resolution,Math.floor(o.y)/this.resolution,Math.floor(o.h)/this.resolution,Math.floor(o.w)/this.resolution):a=new H(Math.floor(o.x)/this.resolution,Math.floor(o.y)/this.resolution,Math.floor(o.w)/this.resolution,Math.floor(o.h)/this.resolution),i.trimmed!==!1&&i.spriteSourceSize&&(l=new H(Math.floor(i.spriteSourceSize.x)/this.resolution,Math.floor(i.spriteSourceSize.y)/this.resolution,Math.floor(o.w)/this.resolution,Math.floor(o.h)/this.resolution)),this.textures[s]=new E({source:this.textureSource,frame:a,orig:c,trim:l,rotate:i.rotated?2:0,defaultAnchor:i.anchor,defaultBorders:i.borders,label:s.toString()})}e++}}_processAnimations(){let t=this.data.animations||{};for(let e in t){this.animations[e]=[];for(let r=0;r<t[e].length;r++){let s=t[e][r];this.animations[e].push(this.textures[s])}}}_parseComplete(){let t=this._callback;this._callback=null,this._batchIndex=0,t.call(this,this.textures)}_nextBatch(){this._processFrames(this._batchIndex*re.BATCH_SIZE),this._batchIndex++,setTimeout(()=>{this._batchIndex*re.BATCH_SIZE<this._frameKeys.length?this._nextBatch():(this._processAnimations(),this._parseComplete())},0)}destroy(t=!1){for(let e in this.textures)this.textures[e].destroy();this._frames=null,this._frameKeys=null,this.data=null,this.textures=null,t&&(this._texture?.destroy(),this.textureSource.destroy()),this._texture=null,this.textureSource=null,this.linkedSheets=[]}};zs.BATCH_SIZE=1e3;var ar=zs;var In=["jpg","png","jpeg","avif","webp","basis","etc2","bc7","bc6h","bc5","bc4","bc3","bc2","bc1","eac","astc"];function Ds(n,t,e){let r={};if(n.forEach(s=>{r[s]=t}),Object.keys(t.textures).forEach(s=>{r[`${t.cachePrefix}${s}`]=t.textures[s]}),!e){let s=Ct.dirname(n[0]);t.linkedSheets.forEach((i,o)=>{let a=Ds([`${s}/${t.data.meta.related_multi_packs[o]}`],i,!0);Object.assign(r,a)})}return r}var Ls={extension:w.Asset,cache:{test:n=>n instanceof ar,getCacheableAssets:(n,t)=>Ds(n,t,!1)},resolver:{extension:{type:w.ResolveParser,name:"resolveSpritesheet"},test:n=>{let e=n.split("?")[0].split("."),r=e.pop(),s=e.pop();return r==="json"&&In.includes(s)},parse:n=>{let t=n.split(".");return{resolution:parseFloat(ee.RETINA_PREFIX.exec(n)?.[1]??"1"),format:t[t.length-2],src:n}}},loader:{name:"spritesheetLoader",id:"spritesheet",extension:{type:w.LoadParser,priority:ir.Normal,name:"spritesheetLoader"},async testParse(n,t){return Ct.extname(t.src).toLowerCase()===".json"&&!!n.frames},async parse(n,t,e){let{texture:r,imageFilename:s,textureOptions:i,cachePrefix:o}=t?.data??{},a=Ct.dirname(t.src);a&&a.lastIndexOf("/")!==a.length-1&&(a+="/");let l;if(r instanceof E)l=r;else{let u=or(a+(s??n.meta.image),t.src);l=(await e.load([{src:u,data:i}]))[u]}let h=new ar({texture:l.source,data:n,cachePrefix:o});await h.parse();let c=n?.meta?.related_multi_packs;if(Array.isArray(c)){let u=[];for(let d of c){if(typeof d!="string")continue;let p=a+d;t.data?.ignoreMultiPack||(p=or(p,t.src),u.push(e.load({src:p,data:{textureOptions:i,ignoreMultiPack:!0}})))}let f=await Promise.all(u);h.linkedSheets=f,f.forEach(d=>{d.linkedSheets=[h].concat(h.linkedSheets.filter(p=>p!==d))})}return h},async unload(n,t,e){await e.unload(n.textureSource._sourceOrigin),n.destroy(!1)}}};lt.add(Ls);var zn=new st;function be(n,t,e){let r=zn;n.measurable=!0,fs(n,e,r),t.addBoundsMask(r),n.measurable=!1}function Se(n,t,e){let r=er.get();n.measurable=!0;let s=tr.get().identity(),i=Ws(n,e,s);ms(n,r,i),n.measurable=!1,t.addBoundsMask(r),tr.return(s),er.return(r)}function Ws(n,t,e){return n?(n!==t&&(Ws(n.parent,t,e),n.updateLocalTransform(),e.append(n.localTransform)),e):(L("Mask bounds, renderable is not inside the root container"),e)}var se=class{constructor(t){this.priority=0,this.inverse=!1,this.pipe="alphaMask",t?.mask&&this.init(t.mask)}init(t){this.mask=t,this.renderMaskToTexture=!(t instanceof sr),this.mask.renderable=this.renderMaskToTexture,this.mask.includeInBuild=!this.renderMaskToTexture,this.mask.measurable=!1}reset(){this.mask!==null&&(this.mask.measurable=!0,this.mask=null)}addBounds(t,e){this.inverse||be(this.mask,t,e)}addLocalBounds(t,e){Se(this.mask,t,e)}containsPoint(t,e){let r=this.mask;return e(r,t)}destroy(){this.reset()}static test(t){return t instanceof sr}};se.extension=w.MaskEffect;var ie=class{constructor(t){this.priority=0,this.pipe="colorMask",t?.mask&&this.init(t.mask)}init(t){this.mask=t}destroy(){}static test(t){return typeof t=="number"}};ie.extension=w.MaskEffect;var ne=class{constructor(t){this.priority=0,this.pipe="stencilMask",t?.mask&&this.init(t.mask)}init(t){this.mask=t,this.mask.includeInBuild=!1,this.mask.measurable=!1}reset(){this.mask!==null&&(this.mask.measurable=!0,this.mask.includeInBuild=!0,this.mask=null)}addBounds(t,e){be(this.mask,t,e)}addLocalBounds(t,e){Se(this.mask,t,e)}containsPoint(t,e){let r=this.mask;return e(r,t)}destroy(){this.reset()}static test(t){return t instanceof ys}};ne.extension=w.MaskEffect;var ot=class extends it{constructor(t){super(t),this.uploadMethodId="image",this.autoGarbageCollect=!0}static test(t){return globalThis.HTMLImageElement&&t instanceof HTMLImageElement||typeof ImageBitmap<"u"&&t instanceof ImageBitmap||globalThis.VideoFrame&&t instanceof VideoFrame}};ot.extension=w.TextureSource;var lr;async function Hs(){return lr??(lr=(async()=>{let t=j.get().createCanvas(1,1).getContext("webgl");if(!t)return"premultiply-alpha-on-upload";let e=await new Promise(o=>{let a=document.createElement("video");a.onloadeddata=()=>o(a),a.onerror=()=>o(null),a.autoplay=!1,a.crossOrigin="anonymous",a.preload="auto",a.src="data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=",a.load()});if(!e)return"premultiply-alpha-on-upload";let r=t.createTexture();t.bindTexture(t.TEXTURE_2D,r);let s=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,s),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,r,0),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,t.NONE),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e);let i=new Uint8Array(4);return t.readPixels(0,0,1,1,t.RGBA,t.UNSIGNED_BYTE,i),t.deleteFramebuffer(s),t.deleteTexture(r),t.getExtension("WEBGL_lose_context")?.loseContext(),i[0]<=i[3]?"premultiplied-alpha":"premultiply-alpha-on-upload"})()),lr}var Te=class Os extends it{constructor(t){super(t),this.isReady=!1,this.uploadMethodId="video",t={...Os.defaultOptions,...t},this._autoUpdate=!0,this._isConnectedToTicker=!1,this._updateFPS=t.updateFPS||0,this._msToNextUpdate=0,this.autoPlay=t.autoPlay!==!1,this.alphaMode=t.alphaMode??"premultiply-alpha-on-upload",this._videoFrameRequestCallback=this._videoFrameRequestCallback.bind(this),this._videoFrameRequestCallbackHandle=null,this._load=null,this._resolve=null,this._reject=null,this._onCanPlay=this._onCanPlay.bind(this),this._onCanPlayThrough=this._onCanPlayThrough.bind(this),this._onError=this._onError.bind(this),this._onPlayStart=this._onPlayStart.bind(this),this._onPlayStop=this._onPlayStop.bind(this),this._onSeeked=this._onSeeked.bind(this),t.autoLoad!==!1&&this.load()}updateFrame(){if(!this.destroyed){if(this._updateFPS){let t=gt.shared.elapsedMS*this.resource.playbackRate;this._msToNextUpdate=Math.floor(this._msToNextUpdate-t)}(!this._updateFPS||this._msToNextUpdate<=0)&&(this._msToNextUpdate=this._updateFPS?Math.floor(1e3/this._updateFPS):0),this.isValid&&this.update()}}_videoFrameRequestCallback(){this.updateFrame(),this.destroyed?this._videoFrameRequestCallbackHandle=null:this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback)}get isValid(){return!!this.resource.videoWidth&&!!this.resource.videoHeight}async load(){if(this._load)return this._load;let t=this.resource,e=this.options;return(t.readyState===t.HAVE_ENOUGH_DATA||t.readyState===t.HAVE_FUTURE_DATA)&&t.width&&t.height&&(t.complete=!0),t.addEventListener("play",this._onPlayStart),t.addEventListener("pause",this._onPlayStop),t.addEventListener("seeked",this._onSeeked),this._isSourceReady()?this._mediaReady():(e.preload||t.addEventListener("canplay",this._onCanPlay),t.addEventListener("canplaythrough",this._onCanPlayThrough),t.addEventListener("error",this._onError,!0)),this.alphaMode=await Hs(),this._load=new Promise((r,s)=>{this.isValid?r(this):(this._resolve=r,this._reject=s,e.preloadTimeoutMs!==void 0&&(this._preloadTimeout=setTimeout(()=>{this._onError(new ErrorEvent(`Preload exceeded timeout of ${e.preloadTimeoutMs}ms`))})),t.load())}),this._load}_onError(t){this.resource.removeEventListener("error",this._onError,!0),this.emit("error",t),this._reject&&(this._reject(t),this._reject=null,this._resolve=null)}_isSourcePlaying(){let t=this.resource;return!t.paused&&!t.ended}_isSourceReady(){return this.resource.readyState>2}_onPlayStart(){this.isValid||this._mediaReady(),this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0)}_onCanPlay(){this.resource.removeEventListener("canplay",this._onCanPlay),this._mediaReady()}_onCanPlayThrough(){this.resource.removeEventListener("canplaythrough",this._onCanPlay),this._preloadTimeout&&(clearTimeout(this._preloadTimeout),this._preloadTimeout=void 0),this._mediaReady()}_mediaReady(){let t=this.resource;this.isValid&&(this.isReady=!0,this.resize(t.videoWidth,t.videoHeight)),this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0,this._resolve&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&this.resource.play()}destroy(){this._configureAutoUpdate();let t=this.resource;t&&(t.removeEventListener("play",this._onPlayStart),t.removeEventListener("pause",this._onPlayStop),t.removeEventListener("seeked",this._onSeeked),t.removeEventListener("canplay",this._onCanPlay),t.removeEventListener("canplaythrough",this._onCanPlayThrough),t.removeEventListener("error",this._onError,!0),t.pause(),t.src="",t.load()),super.destroy()}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t!==this._autoUpdate&&(this._autoUpdate=t,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS(t){t!==this._updateFPS&&(this._updateFPS=t,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.resource.requestVideoFrameCallback?(this._isConnectedToTicker&&(gt.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||(gt.shared.add(this.updateFrame,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&(gt.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test(t){return globalThis.HTMLVideoElement&&t instanceof HTMLVideoElement}};Te.extension=w.TextureSource;Te.defaultOptions={...it.defaultOptions,autoLoad:!0,autoPlay:!0,updateFPS:0,crossorigin:!0,loop:!1,muted:!0,playsinline:!0,preload:!1};Te.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};var Vs=Te;var cr=class{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(t){return this._cache.has(t)}get(t){let e=this._cache.get(t);return e||L(`[Assets] Asset id ${t} was not found in the Cache`),e}set(t,e){let r=_t(t),s;for(let l=0;l<this.parsers.length;l++){let h=this.parsers[l];if(h.test(e)){s=h.getCacheableAssets(r,e);break}}let i=new Map(Object.entries(s||{}));s||r.forEach(l=>{i.set(l,e)});let o=[...i.keys()],a={cacheKeys:o,keys:r};r.forEach(l=>{this._cacheMap.set(l,a)}),o.forEach(l=>{let h=s?s[l]:e;this._cache.has(l)&&this._cache.get(l)!==h&&L("[Cache] already has key:",l),this._cache.set(l,i.get(l))})}remove(t){if(!this._cacheMap.has(t)){L(`[Assets] Asset id ${t} was not found in the Cache`);return}let e=this._cacheMap.get(t);e.cacheKeys.forEach(s=>{this._cache.delete(s)}),e.keys.forEach(s=>{this._cacheMap.delete(s)})}get parsers(){return this._parsers}},N=new cr;var hr=[];lt.handleByList(w.TextureSource,hr);function Ns(n={}){let t=n&&n.resource,e=t?n.resource:n,r=t?n:{resource:n};for(let s=0;s<hr.length;s++){let i=hr[s];if(i.test(e))return new i(r)}throw new Error(`Could not find a source type for resource: ${r.resource}`)}function Dn(n={},t=!1){let e=n&&n.resource,r=e?n.resource:n,s=e?n:{resource:n};if(!t&&N.has(r))return N.get(r);let i=new E({source:Ns(s)});return i.on("destroy",()=>{N.has(r)&&N.remove(r)}),t||N.set(r,i),i}function Ln(n,t=!1){return typeof n=="string"?N.get(n):n instanceof it?new E({source:n}):Dn(n,t)}E.from=Ln;it.from=Ns;lt.add(se,ie,ne,Vs,ot,ws,_s);var ur=class{static init(t){Object.defineProperty(this,"resizeTo",{configurable:!0,set(e){globalThis.removeEventListener("resize",this.queueResize),this._resizeTo=e,e&&(globalThis.addEventListener("resize",this.queueResize),this.resize())},get(){return this._resizeTo}}),this.queueResize=()=>{this._resizeTo&&(this._cancelResize(),this._resizeId=requestAnimationFrame(()=>this.resize()))},this._cancelResize=()=>{this._resizeId&&(cancelAnimationFrame(this._resizeId),this._resizeId=null)},this.resize=()=>{if(!this._resizeTo)return;this._cancelResize();let e,r;if(this._resizeTo===globalThis.window)e=globalThis.innerWidth,r=globalThis.innerHeight;else{let{clientWidth:s,clientHeight:i}=this._resizeTo;e=s,r=i}this.renderer.resize(e,r),this.render()},this._resizeId=null,this._resizeTo=null,this.resizeTo=t.resizeTo||null}static destroy(){globalThis.removeEventListener("resize",this.queueResize),this._cancelResize(),this._cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}};ur.extension=w.Application;var dr=class{static init(t){t=Object.assign({autoStart:!0,sharedTicker:!1},t),Object.defineProperty(this,"ticker",{configurable:!0,set(e){this._ticker&&this._ticker.remove(this.render,this),this._ticker=e,e&&e.add(this.render,this,bs.LOW)},get(){return this._ticker}}),this.stop=()=>{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=t.sharedTicker?gt.shared:new gt,t.autoStart&&this.start()}static destroy(){if(this._ticker){let t=this._ticker;this.ticker=null,t.destroy()}}};dr.extension=w.Application;function js(n,t,e,r,s,i,o,a=null){let l=0;e*=t,s*=i;let h=a.a,c=a.b,u=a.c,f=a.d,d=a.tx,p=a.ty;for(;l<o;){let m=n[e],x=n[e+1];r[s]=h*m+u*x+d,r[s+1]=c*m+f*x+p,s+=i,e+=t,l++}}function qs(n,t,e,r){let s=0;for(t*=e;s<r;)n[t]=0,n[t+1]=0,t+=e,s++}function fr(n,t,e,r,s){let i=t.a,o=t.b,a=t.c,l=t.d,h=t.tx,c=t.ty;e||(e=0),r||(r=2),s||(s=n.length/r-e);let u=e*r;for(let f=0;f<s;f++){let d=n[u],p=n[u+1];n[u]=i*d+a*p+h,n[u+1]=o*d+l*p+c,u+=r}}var Wn=new G,Mt=class{constructor(){this.packAsQuad=!1,this.batcherName="default",this.topology="triangle-list",this.applyTransform=!0,this.roundPixels=0,this._batcher=null,this._batch=null}get uvs(){return this.geometryData.uvs}get positions(){return this.geometryData.vertices}get indices(){return this.geometryData.indices}get blendMode(){return this.renderable&&this.applyTransform?this.renderable.groupBlendMode:"normal"}get color(){let t=this.baseColor,e=t>>16|t&65280|(t&255)<<16,r=this.renderable;return r?ps(e,r.groupColor)+(this.alpha*r.groupAlpha*255<<24):e+(this.alpha*255<<24)}get transform(){return this.renderable?.groupTransform||Wn}copyTo(t){t.indexOffset=this.indexOffset,t.indexSize=this.indexSize,t.attributeOffset=this.attributeOffset,t.attributeSize=this.attributeSize,t.baseColor=this.baseColor,t.alpha=this.alpha,t.texture=this.texture,t.geometryData=this.geometryData,t.topology=this.topology}reset(){this.applyTransform=!0,this.renderable=null,this.topology="triangle-list"}destroy(){this.renderable=null,this.texture=null,this.geometryData=null,this._batcher=null,this._batch=null}};var Dt={extension:{type:w.ShapeBuilder,name:"circle"},build(n,t){let e,r,s,i,o,a;if(n.type==="circle"){let T=n;if(o=a=T.radius,o<=0)return!1;e=T.x,r=T.y,s=i=0}else if(n.type==="ellipse"){let T=n;if(o=T.halfWidth,a=T.halfHeight,o<=0||a<=0)return!1;e=T.x,r=T.y,s=i=0}else{let T=n,M=T.width/2,y=T.height/2;e=T.x+M,r=T.y+y,o=a=Math.max(0,Math.min(T.radius,Math.min(M,y))),s=M-o,i=y-a}if(s<0||i<0)return!1;let l=Math.ceil(2.3*Math.sqrt(o+a)),h=l*8+(s?4:0)+(i?4:0);if(h===0)return!1;if(l===0)return t[0]=t[6]=e+s,t[1]=t[3]=r+i,t[2]=t[4]=e-s,t[5]=t[7]=r-i,!0;let c=0,u=l*4+(s?2:0)+2,f=u,d=h,p=s+o,m=i,x=e+p,g=e-p,_=r+m;if(t[c++]=x,t[c++]=_,t[--u]=_,t[--u]=g,i){let T=r-m;t[f++]=g,t[f++]=T,t[--d]=T,t[--d]=x}for(let T=1;T<l;T++){let M=Math.PI/2*(T/l),y=s+Math.cos(M)*o,b=i+Math.sin(M)*a,B=e+y,P=e-y,C=r+b,v=r-b;t[c++]=B,t[c++]=C,t[--u]=C,t[--u]=P,t[f++]=P,t[f++]=v,t[--d]=v,t[--d]=B}p=s,m=i+a,x=e+p,g=e-p,_=r+m;let S=r-m;return t[c++]=x,t[c++]=_,t[--d]=S,t[--d]=x,s&&(t[c++]=g,t[c++]=_,t[--d]=S,t[--d]=g),!0},triangulate(n,t,e,r,s,i){if(n.length===0)return;let o=0,a=0;for(let c=0;c<n.length;c+=2)o+=n[c],a+=n[c+1];o/=n.length/2,a/=n.length/2;let l=r;t[l*e]=o,t[l*e+1]=a;let h=l++;for(let c=0;c<n.length;c+=2)t[l*e]=n[c],t[l*e+1]=n[c+1],c>0&&(s[i++]=l,s[i++]=h,s[i++]=l-1),l++;s[i++]=h+1,s[i++]=h,s[i++]=l-1}},$s={...Dt,extension:{...Dt.extension,name:"ellipse"}},Ys={...Dt,extension:{...Dt.extension,name:"roundedRectangle"}};function Xs(n){let t=n.length;if(t<6)return 1;let e=0;for(let r=0,s=n[t-2],i=n[t-1];r<t;r+=2){let o=n[r],a=n[r+1];e+=(o-s)*(a+i),s=o,i=a}return e<0?-1:1}function Ks(n,t,e,r,s,i,o,a){let l=n-e*s,h=t-r*s,c=n+e*i,u=t+r*i,f,d;o?(f=r,d=-e):(f=-r,d=e);let p=l+f,m=h+d,x=c+f,g=u+d;return a.push(p,m),a.push(x,g),2}function At(n,t,e,r,s,i,o,a){let l=e-n,h=r-t,c=Math.atan2(l,h),u=Math.atan2(s-n,i-t);a&&c<u?c+=Math.PI*2:!a&&c>u&&(u+=Math.PI*2);let f=c,d=u-c,p=Math.abs(d),m=Math.sqrt(l*l+h*h),x=(15*p*Math.sqrt(m)/Math.PI>>0)+1,g=d/x;if(f+=g,a){o.push(n,t),o.push(e,r);for(let _=1,S=f;_<x;_++,S+=g)o.push(n,t),o.push(n+Math.sin(S)*m,t+Math.cos(S)*m);o.push(n,t),o.push(s,i)}else{o.push(e,r),o.push(n,t);for(let _=1,S=f;_<x;_++,S+=g)o.push(n+Math.sin(S)*m,t+Math.cos(S)*m),o.push(n,t);o.push(s,i),o.push(n,t)}return x*2}function Qs(n,t,e,r,s,i){let o=1e-4;if(n.length===0)return;let a=t,l=a.alignment;if(t.alignment!==.5){let z=Xs(n);e&&(z*=-1),l=(l-.5)*z+.5}let h=new ct(n[0],n[1]),c=new ct(n[n.length-2],n[n.length-1]),u=r,f=Math.abs(h.x-c.x)<o&&Math.abs(h.y-c.y)<o;if(u){n=n.slice(),f&&(n.pop(),n.pop(),c.set(n[n.length-2],n[n.length-1]));let z=(h.x+c.x)*.5,pt=(c.y+h.y)*.5;n.unshift(z,pt),n.push(z,pt)}let d=s,p=n.length/2,m=n.length,x=d.length/2,g=a.width/2,_=g*g,S=a.miterLimit*a.miterLimit,T=n[0],M=n[1],y=n[2],b=n[3],B=0,P=0,C=-(M-b),v=T-y,R=0,I=0,O=Math.sqrt(C*C+v*v);C/=O,v/=O,C*=g,v*=g;let Rt=l,A=(1-Rt)*2,F=Rt*2;u||(a.cap==="round"?m+=At(T-C*(A-F)*.5,M-v*(A-F)*.5,T-C*A,M-v*A,T+C*F,M+v*F,d,!0)+2:a.cap==="square"&&(m+=Ks(T,M,C,v,A,F,!0,d))),d.push(T-C*A,M-v*A),d.push(T+C*F,M+v*F);for(let z=1;z<p-1;++z){T=n[(z-1)*2],M=n[(z-1)*2+1],y=n[z*2],b=n[z*2+1],B=n[(z+1)*2],P=n[(z+1)*2+1],C=-(M-b),v=T-y,O=Math.sqrt(C*C+v*v),C/=O,v/=O,C*=g,v*=g,R=-(b-P),I=y-B,O=Math.sqrt(R*R+I*I),R/=O,I/=O,R*=g,I*=g;let pt=y-T,Yt=M-b,Xt=y-B,Kt=P-b,ls=pt*Xt+Yt*Kt,ce=Yt*Xt-Kt*pt,Qt=ce<0;if(Math.abs(ce)<.001*Math.abs(ls)){d.push(y-C*A,b-v*A),d.push(y+C*F,b+v*F),ls>=0&&(a.join==="round"?m+=At(y,b,y-C*A,b-v*A,y-R*A,b-I*A,d,!1)+4:m+=2,d.push(y-R*F,b-I*F),d.push(y+R*A,b+I*A));continue}let cs=(-C+T)*(-v+b)-(-C+y)*(-v+M),hs=(-R+B)*(-I+b)-(-R+y)*(-I+P),he=(pt*hs-Xt*cs)/ce,ue=(Kt*cs-Yt*hs)/ce,Je=(he-y)*(he-y)+(ue-b)*(ue-b),bt=y+(he-y)*A,St=b+(ue-b)*A,Tt=y-(he-y)*F,wt=b-(ue-b)*F,An=Math.min(pt*pt+Yt*Yt,Xt*Xt+Kt*Kt),us=Qt?A:F,kn=An+us*us*_;Je<=kn?a.join==="bevel"||Je/_>S?(Qt?(d.push(bt,St),d.push(y+C*F,b+v*F),d.push(bt,St),d.push(y+R*F,b+I*F)):(d.push(y-C*A,b-v*A),d.push(Tt,wt),d.push(y-R*A,b-I*A),d.push(Tt,wt)),m+=2):a.join==="round"?Qt?(d.push(bt,St),d.push(y+C*F,b+v*F),m+=At(y,b,y+C*F,b+v*F,y+R*F,b+I*F,d,!0)+4,d.push(bt,St),d.push(y+R*F,b+I*F)):(d.push(y-C*A,b-v*A),d.push(Tt,wt),m+=At(y,b,y-C*A,b-v*A,y-R*A,b-I*A,d,!1)+4,d.push(y-R*A,b-I*A),d.push(Tt,wt)):(d.push(bt,St),d.push(Tt,wt)):(d.push(y-C*A,b-v*A),d.push(y+C*F,b+v*F),a.join==="round"?Qt?m+=At(y,b,y+C*F,b+v*F,y+R*F,b+I*F,d,!0)+2:m+=At(y,b,y-C*A,b-v*A,y-R*A,b-I*A,d,!1)+2:a.join==="miter"&&Je/_<=S&&(Qt?(d.push(Tt,wt),d.push(Tt,wt)):(d.push(bt,St),d.push(bt,St)),m+=2),d.push(y-R*A,b-I*A),d.push(y+R*F,b+I*F),m+=2)}T=n[(p-2)*2],M=n[(p-2)*2+1],y=n[(p-1)*2],b=n[(p-1)*2+1],C=-(M-b),v=T-y,O=Math.sqrt(C*C+v*v),C/=O,v/=O,C*=g,v*=g,d.push(y-C*A,b-v*A),d.push(y+C*F,b+v*F),u||(a.cap==="round"?m+=At(y-C*(A-F)*.5,b-v*(A-F)*.5,y-C*A,b-v*A,y+C*F,b+v*F,d,!1)+2:a.cap==="square"&&(m+=Ks(y,b,C,v,A,F,!1,d)));let $t=1e-4*1e-4;for(let z=x;z<m+x-2;++z)T=d[z*2],M=d[z*2+1],y=d[(z+1)*2],b=d[(z+1)*2+1],B=d[(z+2)*2],P=d[(z+2)*2+1],!(Math.abs(T*(b-P)+y*(P-M)+B*(M-b))<$t)&&i.push(z,z+1,z+2)}function Zs(n,t,e,r){let s=1e-4;if(n.length===0)return;let i=n[0],o=n[1],a=n[n.length-2],l=n[n.length-1],h=t||Math.abs(i-a)<s&&Math.abs(o-l)<s,c=e,u=n.length/2,f=c.length/2;for(let d=0;d<u;d++)c.push(n[d*2]),c.push(n[d*2+1]);for(let d=0;d<u-1;d++)r.push(f+d,f+d+1);h&&r.push(f+u-1,f)}function we(n,t,e,r,s,i,o){let a=Bs(n,t,2);if(!a)return;for(let h=0;h<a.length;h+=3)i[o++]=a[h]+s,i[o++]=a[h+1]+s,i[o++]=a[h+2]+s;let l=s*r;for(let h=0;h<n.length;h+=2)e[l]=n[h],e[l+1]=n[h+1],l+=r}var Vn=[],Js={extension:{type:w.ShapeBuilder,name:"polygon"},build(n,t){for(let e=0;e<n.points.length;e++)t[e]=n.points[e];return!0},triangulate(n,t,e,r,s,i){we(n,Vn,t,e,r,s,i)}};var ti={extension:{type:w.ShapeBuilder,name:"rectangle"},build(n,t){let e=n,r=e.x,s=e.y,i=e.width,o=e.height;return i>0&&o>0?(t[0]=r,t[1]=s,t[2]=r+i,t[3]=s,t[4]=r+i,t[5]=s+o,t[6]=r,t[7]=s+o,!0):!1},triangulate(n,t,e,r,s,i){let o=0;r*=e,t[r+o]=n[0],t[r+o+1]=n[1],o+=e,t[r+o]=n[2],t[r+o+1]=n[3],o+=e,t[r+o]=n[6],t[r+o+1]=n[7],o+=e,t[r+o]=n[4],t[r+o+1]=n[5],o+=e;let a=r/e;s[i++]=a,s[i++]=a+1,s[i++]=a+2,s[i++]=a+1,s[i++]=a+3,s[i++]=a+2}};var ei={extension:{type:w.ShapeBuilder,name:"triangle"},build(n,t){return t[0]=n.x,t[1]=n.y,t[2]=n.x2,t[3]=n.y2,t[4]=n.x3,t[5]=n.y3,!0},triangulate(n,t,e,r,s,i){let o=0;r*=e,t[r+o]=n[0],t[r+o+1]=n[1],o+=e,t[r+o]=n[2],t[r+o+1]=n[3],o+=e,t[r+o]=n[4],t[r+o+1]=n[5];let a=r/e;s[i++]=a,s[i++]=a+1,s[i++]=a+2}};var ri=[{offset:0,color:"white"},{offset:1,color:"black"}],mr=class pr{constructor(...t){this.uid=rt("fillGradient"),this._tick=0,this.type="linear",this.colorStops=[];let e=Nn(t);e={...e.type==="radial"?pr.defaultRadialOptions:pr.defaultLinearOptions,...xs(e)},this._textureSize=e.textureSize,this._wrapMode=e.wrapMode,e.type==="radial"?(this.center=e.center,this.outerCenter=e.outerCenter??this.center,this.innerRadius=e.innerRadius,this.outerRadius=e.outerRadius,this.scale=e.scale,this.rotation=e.rotation):(this.start=e.start,this.end=e.end),this.textureSpace=e.textureSpace,this.type=e.type,e.colorStops.forEach(s=>{this.addColorStop(s.offset,s.color)})}addColorStop(t,e){return this.colorStops.push({offset:t,color:W.shared.setValue(e).toHexa()}),this}buildLinearGradient(){if(this.texture)return;let{x:t,y:e}=this.start,{x:r,y:s}=this.end,i=r-t,o=s-e,a=i<0||o<0;if(this._wrapMode==="clamp-to-edge"){if(i<0){let x=t;t=r,r=x,i*=-1}if(o<0){let x=e;e=s,s=x,o*=-1}}let l=this.colorStops.length?this.colorStops:ri,h=this._textureSize,{canvas:c,context:u}=ii(h,1),f=a?u.createLinearGradient(this._textureSize,0,0,0):u.createLinearGradient(0,0,this._textureSize,0);si(f,l),u.fillStyle=f,u.fillRect(0,0,h,1),this.texture=new E({source:new ot({resource:c,addressMode:this._wrapMode})});let d=Math.sqrt(i*i+o*o),p=Math.atan2(o,i),m=new G;m.scale(d/h,1),m.rotate(p),m.translate(t,e),this.textureSpace==="local"&&m.scale(h,h),this.transform=m}buildGradient(){this.texture||this._tick++,this.type==="linear"?this.buildLinearGradient():this.buildRadialGradient()}buildRadialGradient(){if(this.texture)return;let t=this.colorStops.length?this.colorStops:ri,e=this._textureSize,{canvas:r,context:s}=ii(e,e),{x:i,y:o}=this.center,{x:a,y:l}=this.outerCenter,h=this.innerRadius,c=this.outerRadius,u=a-c,f=l-c,d=e/(c*2),p=(i-u)*d,m=(o-f)*d,x=s.createRadialGradient(p,m,h*d,(a-u)*d,(l-f)*d,c*d);si(x,t),s.fillStyle=t[t.length-1].color,s.fillRect(0,0,e,e),s.fillStyle=x,s.translate(p,m),s.rotate(this.rotation),s.scale(1,this.scale),s.translate(-p,-m),s.fillRect(0,0,e,e),this.texture=new E({source:new ot({resource:r,addressMode:this._wrapMode})});let g=new G;g.scale(1/d,1/d),g.translate(u,f),this.textureSpace==="local"&&g.scale(e,e),this.transform=g}destroy(){this.texture?.destroy(!0),this.texture=null,this.transform=null,this.colorStops=[],this.start=null,this.end=null,this.center=null,this.outerCenter=null}get styleKey(){return`fill-gradient-${this.uid}-${this._tick}`}};mr.defaultLinearOptions={start:{x:0,y:0},end:{x:0,y:1},colorStops:[],textureSpace:"local",type:"linear",textureSize:256,wrapMode:"clamp-to-edge"};mr.defaultRadialOptions={center:{x:.5,y:.5},innerRadius:0,outerRadius:.5,colorStops:[],scale:1,textureSpace:"local",type:"radial",textureSize:256,wrapMode:"clamp-to-edge"};var $=mr;function si(n,t){for(let e=0;e<t.length;e++){let r=t[e];n.addColorStop(r.offset,r.color)}}function ii(n,t){let e=j.get().createCanvas(n,t),r=e.getContext("2d");return{canvas:e,context:r}}function Nn(n){let t=n[0]??{};return(typeof t=="number"||n[1])&&(U("8.5.2","use options object instead"),t={type:"linear",start:{x:n[0],y:n[1]},end:{x:n[2],y:n[3]},textureSpace:n[4],textureSize:n[5]??$.defaultLinearOptions.textureSize}),t}var jn=new G,qn=new H;function ni(n,t,e,r){let s=t.matrix?n.copyFrom(t.matrix).invert():n.identity();if(t.textureSpace==="local"){let o=e.getBounds(qn);t.width&&o.pad(t.width);let{x:a,y:l}=o,h=1/o.width,c=1/o.height,u=-a*h,f=-l*c,d=s.a,p=s.b,m=s.c,x=s.d;s.a*=h,s.b*=h,s.c*=c,s.d*=c,s.tx=u*d+f*m+s.tx,s.ty=u*p+f*x+s.ty}else s.translate(t.texture.frame.x,t.texture.frame.y),s.scale(1/t.texture.source.width,1/t.texture.source.height);let i=t.texture.source.style;return!(t.fill instanceof $)&&i.addressMode==="clamp-to-edge"&&(i.addressMode="repeat",i.update()),r&&s.append(jn.copyFrom(r).invert()),s}var Pe={};lt.handleByMap(w.ShapeBuilder,Pe);lt.add(ti,Js,ei,Dt,$s,Ys);var $n=new H,Yn=new G;function ai(n,t){let{geometryData:e,batches:r}=t;r.length=0,e.indices.length=0,e.vertices.length=0,e.uvs.length=0;for(let s=0;s<n.instructions.length;s++){let i=n.instructions[s];if(i.action==="texture")Xn(i.data,r,e);else if(i.action==="fill"||i.action==="stroke"){let o=i.action==="stroke",a=i.data.path.shapePath,l=i.data.style,h=i.data.hole;o&&h&&oi(h.shapePath,l,!0,r,e),h&&(a.shapePrimitives[a.shapePrimitives.length-1].holes=h.shapePath.shapePrimitives),oi(a,l,o,r,e)}}}function Xn(n,t,e){let r=[],s=Pe.rectangle,i=$n;i.x=n.dx,i.y=n.dy,i.width=n.dw,i.height=n.dh;let o=n.transform;if(!s.build(i,r))return;let{vertices:a,uvs:l,indices:h}=e,c=h.length,u=a.length/2;o&&fr(r,o),s.triangulate(r,a,2,u,h,c);let f=n.image,d=f.uvs;l.push(d.x0,d.y0,d.x1,d.y1,d.x3,d.y3,d.x2,d.y2);let p=X.get(Mt);p.indexOffset=c,p.indexSize=h.length-c,p.attributeOffset=u,p.attributeSize=a.length/2-u,p.baseColor=n.style,p.alpha=n.alpha,p.texture=f,p.geometryData=e,t.push(p)}function oi(n,t,e,r,s){let{vertices:i,uvs:o,indices:a}=s;n.shapePrimitives.forEach(({shape:l,transform:h,holes:c})=>{let u=[],f=Pe[l.type];if(!f.build(l,u))return;let d=a.length,p=i.length/2,m="triangle-list";if(h&&fr(u,h),e){let S=l.closePath??!0,T=t;T.pixelLine?(Zs(u,S,i,a),m="line-list"):Qs(u,T,!1,S,i,a)}else if(c){let S=[],T=u.slice();Kn(c).forEach(y=>{S.push(T.length/2),T.push(...y)}),we(T,S,i,2,p,a,d)}else f.triangulate(u,i,2,p,a,d);let x=o.length/2,g=t.texture;if(g!==E.WHITE){let S=ni(Yn,t,l,h);js(i,2,p,o,x,2,i.length/2-p,S)}else qs(o,x,2,i.length/2-p);let _=X.get(Mt);_.indexOffset=d,_.indexSize=a.length-d,_.attributeOffset=p,_.attributeSize=i.length/2-p,_.baseColor=t.color,_.alpha=t.alpha,_.texture=g,_.geometryData=s,_.topology=m,r.push(_)})}function Kn(n){let t=[];for(let e=0;e<n.length;e++){let r=n[e].shape,s=[];Pe[r.type].build(r,s)&&t.push(s)}return t}var gr=class{constructor(){this.batches=[],this.geometryData={vertices:[],uvs:[],indices:[]}}},xr=class{constructor(){this.instructions=new gs}init(t){let e=t.maxTextures;this.batcher?this.batcher._updateMaxTextures(e):this.batcher=new Fs({maxTextures:e}),this.instructions.reset()}get geometry(){return U(ds,"GraphicsContextRenderData#geometry is deprecated, please use batcher.geometry instead."),this.batcher.geometry}destroy(){this.batcher.destroy(),this.instructions.destroy(),this.batcher=null,this.instructions=null}},yr=class _r{constructor(t){this._gpuContextHash={},this._graphicsDataContextHash=Object.create(null),this._renderer=t,t.renderableGC.addManagedHash(this,"_gpuContextHash"),t.renderableGC.addManagedHash(this,"_graphicsDataContextHash")}init(t){_r.defaultOptions.bezierSmoothness=t?.bezierSmoothness??_r.defaultOptions.bezierSmoothness}getContextRenderData(t){return this._graphicsDataContextHash[t.uid]||this._initContextRenderData(t)}updateGpuContext(t){let e=this._gpuContextHash[t.uid]||this._initContext(t);if(t.dirty){e?this._cleanGraphicsContextData(t):e=this._initContext(t),ai(t,e);let r=t.batchMode;t.customShader||r==="no-batch"?e.isBatchable=!1:r==="auto"?e.isBatchable=e.geometryData.vertices.length<400:e.isBatchable=!0,t.dirty=!1}return e}getGpuContext(t){return this._gpuContextHash[t.uid]||this._initContext(t)}_initContextRenderData(t){let e=X.get(xr,{maxTextures:this._renderer.limits.maxBatchableTextures}),{batches:r,geometryData:s}=this._gpuContextHash[t.uid],i=s.vertices.length,o=s.indices.length;for(let c=0;c<r.length;c++)r[c].applyTransform=!1;let a=e.batcher;a.ensureAttributeBuffer(i),a.ensureIndexBuffer(o),a.begin();for(let c=0;c<r.length;c++){let u=r[c];a.add(u)}a.finish(e.instructions);let l=a.geometry;l.indexBuffer.setDataWithSize(a.indexBuffer,a.indexSize,!0),l.buffers[0].setDataWithSize(a.attributeBuffer.float32View,a.attributeSize,!0);let h=a.batches;for(let c=0;c<h.length;c++){let u=h[c];u.bindGroup=Ps(u.textures.textures,u.textures.count,this._renderer.limits.maxBatchableTextures)}return this._graphicsDataContextHash[t.uid]=e,e}_initContext(t){let e=new gr;return e.context=t,this._gpuContextHash[t.uid]=e,t.on("destroy",this.onGraphicsContextDestroy,this),this._gpuContextHash[t.uid]}onGraphicsContextDestroy(t){this._cleanGraphicsContextData(t),t.off("destroy",this.onGraphicsContextDestroy,this),this._gpuContextHash[t.uid]=null}_cleanGraphicsContextData(t){let e=this._gpuContextHash[t.uid];e.isBatchable||this._graphicsDataContextHash[t.uid]&&(X.return(this.getContextRenderData(t)),this._graphicsDataContextHash[t.uid]=null),e.batches&&e.batches.forEach(r=>{X.return(r)})}destroy(){for(let t in this._gpuContextHash)this._gpuContextHash[t]&&this.onGraphicsContextDestroy(this._gpuContextHash[t].context);this._gpuContextHash={},this._graphicsDataContextHash={},this._renderer=null}};yr.extension={type:[w.WebGLSystem,w.WebGPUSystem,w.CanvasSystem],name:"graphicsContext"};yr.defaultOptions={bezierSmoothness:.5};var ve=yr;var br=class{constructor(){this.batches=[],this.batched=!1}destroy(){this.batches.forEach(t=>{X.return(t)}),this.batches.length=0}},Sr=class{constructor(t,e){this.state=vt.for2d(),this.renderer=t,this._adaptor=e,this.renderer.runners.contextChange.add(this)}contextChange(){this._adaptor.contextChange(this.renderer)}validateRenderable(t){let e=t.context,r=!!t._gpuData,s=this.renderer.graphicsContext.updateGpuContext(e);return!!(s.isBatchable||r!==s.isBatchable)}addRenderable(t,e){let r=this.renderer.graphicsContext.updateGpuContext(t.context);t.didViewUpdate&&this._rebuild(t),r.isBatchable?this._addToBatcher(t,e):(this.renderer.renderPipes.batch.break(e),e.add(t))}updateRenderable(t){let r=this._getGpuDataForRenderable(t).batches;for(let s=0;s<r.length;s++){let i=r[s];i._batcher.updateElement(i)}}execute(t){if(!t.isRenderable)return;let e=this.renderer,r=t.context;if(!e.graphicsContext.getGpuContext(r).batches.length)return;let i=r.customShader||this._adaptor.shader;this.state.blendMode=t.groupBlendMode;let o=i.resources.localUniforms.uniforms;o.uTransformMatrix=t.groupTransform,o.uRound=e._roundPixels|t._roundPixels,xt(t.groupColorAlpha,o.uColor,0),this._adaptor.execute(this,t)}_rebuild(t){let e=this._getGpuDataForRenderable(t),r=this.renderer.graphicsContext.updateGpuContext(t.context);e.destroy(),r.isBatchable&&this._updateBatchesForRenderable(t,e)}_addToBatcher(t,e){let r=this.renderer.renderPipes.batch,s=this._getGpuDataForRenderable(t).batches;for(let i=0;i<s.length;i++){let o=s[i];r.addToBatch(o,e)}}_getGpuDataForRenderable(t){return t._gpuData[this.renderer.uid]||this._initGpuDataForRenderable(t)}_initGpuDataForRenderable(t){let e=new br;return t._gpuData[this.renderer.uid]=e,e}_updateBatchesForRenderable(t,e){let r=t.context,s=this.renderer.graphicsContext.getGpuContext(r),i=this.renderer._roundPixels|t._roundPixels;e.batches=s.batches.map(o=>{let a=X.get(Mt);return o.copyTo(a),a.renderable=t,a.roundPixels=i,a})}destroy(){this.renderer=null,this._adaptor.destroy(),this._adaptor=null,this.state=null}};Sr.extension={type:[w.WebGLPipes,w.WebGPUPipes,w.CanvasPipes],name:"graphics"};var yt=class{constructor(){this.batcherName="default",this.packAsQuad=!1,this.indexOffset=0,this.attributeOffset=0,this.roundPixels=0,this._batcher=null,this._batch=null,this._textureMatrixUpdateId=-1,this._uvUpdateId=-1}get blendMode(){return this.renderable.groupBlendMode}get topology(){return this._topology||this.geometry.topology}set topology(t){this._topology=t}reset(){this.renderable=null,this.texture=null,this._batcher=null,this._batch=null,this.geometry=null,this._uvUpdateId=-1,this._textureMatrixUpdateId=-1}setTexture(t){this.texture!==t&&(this.texture=t,this._textureMatrixUpdateId=-1)}get uvs(){let e=this.geometry.getBuffer("aUV"),r=e.data,s=r,i=this.texture.textureMatrix;return i.isSimple||(s=this._transformedUvs,(this._textureMatrixUpdateId!==i._updateID||this._uvUpdateId!==e._updateID)&&((!s||s.length<r.length)&&(s=this._transformedUvs=new Float32Array(r.length)),this._textureMatrixUpdateId=i._updateID,this._uvUpdateId=e._updateID,i.multiplyUvs(r,s))),s}get positions(){return this.geometry.positions}get indices(){return this.geometry.indices}get color(){return this.renderable.groupColorAlpha}get groupTransform(){return this.renderable.groupTransform}get attributeSize(){return this.geometry.positions.length/2}get indexSize(){return this.geometry.indices.length}};var Ce=class{destroy(){}},Tr=class{constructor(t,e){this.localUniforms=new J({uTransformMatrix:{value:new G,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}}),this.localUniformsBindGroup=new de({0:this.localUniforms}),this.renderer=t,this._adaptor=e,this._adaptor.init()}validateRenderable(t){let e=this._getMeshData(t),r=e.batched,s=t.batched;if(e.batched=s,r!==s)return!0;if(s){let i=t._geometry;if(i.indices.length!==e.indexSize||i.positions.length!==e.vertexSize)return e.indexSize=i.indices.length,e.vertexSize=i.positions.length,!0;let o=this._getBatchableMesh(t);return o.texture.uid!==t._texture.uid&&(o._textureMatrixUpdateId=-1),!o._batcher.checkAndUpdateTexture(o,t._texture)}return!1}addRenderable(t,e){let r=this.renderer.renderPipes.batch,s=this._getMeshData(t);if(t.didViewUpdate&&(s.indexSize=t._geometry.indices?.length,s.vertexSize=t._geometry.positions?.length),s.batched){let i=this._getBatchableMesh(t);i.setTexture(t._texture),i.geometry=t._geometry,r.addToBatch(i,e)}else r.break(e),e.add(t)}updateRenderable(t){if(t.batched){let e=this._getBatchableMesh(t);e.setTexture(t._texture),e.geometry=t._geometry,e._batcher.updateElement(e)}}execute(t){if(!t.isRenderable)return;t.state.blendMode=Et(t.groupBlendMode,t.texture._source);let e=this.localUniforms;e.uniforms.uTransformMatrix=t.groupTransform,e.uniforms.uRound=this.renderer._roundPixels|t._roundPixels,e.update(),xt(t.groupColorAlpha,e.uniforms.uColor,0),this._adaptor.execute(this,t)}_getMeshData(t){var e,r;return(e=t._gpuData)[r=this.renderer.uid]||(e[r]=new Ce),t._gpuData[this.renderer.uid].meshData||this._initMeshData(t)}_initMeshData(t){return t._gpuData[this.renderer.uid].meshData={batched:t.batched,indexSize:0,vertexSize:0},t._gpuData[this.renderer.uid].meshData}_getBatchableMesh(t){var e,r;return(e=t._gpuData)[r=this.renderer.uid]||(e[r]=new Ce),t._gpuData[this.renderer.uid].batchableMesh||this._initBatchableMesh(t)}_initBatchableMesh(t){let e=new yt;return e.renderable=t,e.setTexture(t._texture),e.transform=t.groupTransform,e.roundPixels=this.renderer._roundPixels|t._roundPixels,t._gpuData[this.renderer.uid].batchableMesh=e,e}destroy(){this.localUniforms=null,this.localUniformsBindGroup=null,this._adaptor.destroy(),this._adaptor=null,this.renderer=null}};Tr.extension={type:[w.WebGLPipes,w.WebGPUPipes,w.CanvasPipes],name:"mesh"};var Me=class{execute(t,e){let r=t.state,s=t.renderer,i=e.shader||t.defaultShader;i.resources.uTexture=e.texture._source,i.resources.uniforms=t.localUniforms;let o=s.gl,a=t.getBuffers(e);s.shader.bind(i),s.state.set(r),s.geometry.bind(a.geometry,i.glProgram);let h=a.geometry.indexBuffer.data.BYTES_PER_ELEMENT===2?o.UNSIGNED_SHORT:o.UNSIGNED_INT;o.drawElements(o.TRIANGLES,e.particleChildren.length*6,h,0)}};function wr(n,t=null){let e=n*6;if(e>65535?t||(t=new Uint32Array(e)):t||(t=new Uint16Array(e)),t.length!==e)throw new Error(`Out buffer length is incorrect, got ${t.length} and expected ${e}`);for(let r=0,s=0;r<e;r+=6,s+=4)t[r+0]=s+0,t[r+1]=s+1,t[r+2]=s+2,t[r+3]=s+0,t[r+4]=s+2,t[r+5]=s+3;return t}function ci(n){return{dynamicUpdate:li(n,!0),staticUpdate:li(n,!1)}}function li(n,t){let e=[];e.push(`
|
|
2
2
|
|
|
3
3
|
var index = 0;
|
|
4
4
|
|
|
@@ -378,7 +378,7 @@ fn mainFragment(
|
|
|
378
378
|
) -> @location(0) vec4<f32> {
|
|
379
379
|
return textureSample(uTexture, uSampler, uv);
|
|
380
380
|
}
|
|
381
|
-
`;var Ze=class extends Es{constructor(){let t=pe.from({vertex:{source:ns,entryPoint:"mainVertex"},fragment:{source:ns,entryPoint:"mainFragment"},name:"passthrough-filter"}),e=fe.from({vertex:Pn,fragment:vn,name:"passthrough-filter"});super({gpuProgram:t,glProgram:e})}};var Cn=new G;function Mn(n,t){t.clear();let e=t.matrix;for(let r=0;r<n.length;r++){let s=n[r];if(s.globalDisplayStatus<7)continue;let i=s.renderGroup??s.parentRenderGroup;i?.isCachedAsTexture?t.matrix=Cn.copyFrom(i.textureOffsetInverseTransform).append(s.worldTransform):i?._parentCacheAsTextureRenderGroup?t.matrix=Cn.copyFrom(i._parentCacheAsTextureRenderGroup.inverseWorldTransform).append(s.groupTransform):t.matrix=s.worldTransform,t.addBounds(s.bounds)}return t.matrix=e,t}var Bo=new Gt({attributes:{aPosition:{buffer:new Float32Array([0,0,1,0,1,1,0,1]),format:"float32x2",stride:8,offset:0}},indexBuffer:new Uint32Array([0,1,2,0,2,3])}),os=class{constructor(){this.skip=!1,this.inputTexture=null,this.backTexture=null,this.filters=null,this.bounds=new st,this.container=null,this.blendRequired=!1,this.outputRenderSurface=null,this.globalFrame={x:0,y:0,width:0,height:0},this.firstEnabledIndex=-1,this.lastEnabledIndex=-1}},as=class{constructor(t){this._filterStackIndex=0,this._filterStack=[],this._filterGlobalUniforms=new J({uInputSize:{value:new Float32Array(4),type:"vec4<f32>"},uInputPixel:{value:new Float32Array(4),type:"vec4<f32>"},uInputClamp:{value:new Float32Array(4),type:"vec4<f32>"},uOutputFrame:{value:new Float32Array(4),type:"vec4<f32>"},uGlobalFrame:{value:new Float32Array(4),type:"vec4<f32>"},uOutputTexture:{value:new Float32Array(4),type:"vec4<f32>"}}),this._globalFilterBindGroup=new de({}),this.renderer=t}get activeBackTexture(){return this._activeFilterData?.backTexture}push(t){let e=this.renderer,r=t.filterEffect.filters,s=this._pushFilterData();s.skip=!1,s.filters=r,s.container=t.container,s.outputRenderSurface=e.renderTarget.renderSurface;let i=e.renderTarget.renderTarget.colorTexture.source,o=i.resolution,a=i.antialias;if(r.every(d=>!d.enabled)){s.skip=!0;return}let l=s.bounds;if(this._calculateFilterArea(t,l),this._calculateFilterBounds(s,e.renderTarget.rootViewPort,a,o,1),s.skip)return;let h=this._getPreviousFilterData(),c=this._findFilterResolution(o),u=0,f=0;h&&(u=h.bounds.minX,f=h.bounds.minY),this._calculateGlobalFrame(s,u,f,c,i.width,i.height),this._setupFilterTextures(s,l,e,h)}generateFilteredTexture({texture:t,filters:e}){let r=this._pushFilterData();this._activeFilterData=r,r.skip=!1,r.filters=e;let s=t.source,i=s.resolution,o=s.antialias;if(e.every(d=>!d.enabled))return r.skip=!0,t;let a=r.bounds;if(a.addRect(t.frame),this._calculateFilterBounds(r,a.rectangle,o,i,0),r.skip)return t;let l=i;this._calculateGlobalFrame(r,0,0,l,s.width,s.height),r.outputRenderSurface=q.getOptimalTexture(a.width,a.height,r.resolution,r.antialias),r.backTexture=E.EMPTY,r.inputTexture=t,this.renderer.renderTarget.finishRenderPass(),this._applyFiltersToTexture(r,!0);let f=r.outputRenderSurface;return f.source.alphaMode="premultiplied-alpha",f}pop(){let t=this.renderer,e=this._popFilterData();e.skip||(t.globalUniforms.pop(),t.renderTarget.finishRenderPass(),this._activeFilterData=e,this._applyFiltersToTexture(e,!1),e.blendRequired&&q.returnTexture(e.backTexture),q.returnTexture(e.inputTexture))}getBackTexture(t,e,r){let s=t.colorTexture.source._resolution,i=q.getOptimalTexture(e.width,e.height,s,!1),o=e.minX,a=e.minY;r&&(o-=r.minX,a-=r.minY),o=Math.floor(o*s),a=Math.floor(a*s);let l=Math.ceil(e.width*s),h=Math.ceil(e.height*s);return this.renderer.renderTarget.copyToTexture(t,i,{x:o,y:a},{width:l,height:h},{x:0,y:0}),i}applyFilter(t,e,r,s){let i=this.renderer,o=this._activeFilterData,l=o.outputRenderSurface===r,h=i.renderTarget.rootRenderTarget.colorTexture.source._resolution,c=this._findFilterResolution(h),u=0,f=0;if(l){let p=this._findPreviousFilterOffset();u=p.x,f=p.y}this._updateFilterUniforms(e,r,o,u,f,c,l,s);let d=t.enabled?t:this._getPassthroughFilter();this._setupBindGroupsAndRender(d,e,i)}calculateSpriteMatrix(t,e){let r=this._activeFilterData,s=t.set(r.inputTexture._source.width,0,0,r.inputTexture._source.height,r.bounds.minX,r.bounds.minY),i=e.worldTransform.copyTo(G.shared),o=e.renderGroup||e.parentRenderGroup;return o&&o.cacheToLocalTransform&&i.prepend(o.cacheToLocalTransform),i.invert(),s.prepend(i),s.scale(1/e.texture.orig.width,1/e.texture.orig.height),s.translate(e.anchor.x,e.anchor.y),s}destroy(){this._passthroughFilter?.destroy(!0),this._passthroughFilter=null}_getPassthroughFilter(){return this._passthroughFilter??(this._passthroughFilter=new Ze),this._passthroughFilter}_setupBindGroupsAndRender(t,e,r){if(r.renderPipes.uniformBatch){let s=r.renderPipes.uniformBatch.getUboResource(this._filterGlobalUniforms);this._globalFilterBindGroup.setResource(s,0)}else this._globalFilterBindGroup.setResource(this._filterGlobalUniforms,0);this._globalFilterBindGroup.setResource(e.source,1),this._globalFilterBindGroup.setResource(e.source.style,2),t.groups[0]=this._globalFilterBindGroup,r.encoder.draw({geometry:Bo,shader:t,state:t._state,topology:"triangle-list"}),r.type===It.WEBGL&&r.renderTarget.finishRenderPass()}_setupFilterTextures(t,e,r,s){if(t.backTexture=E.EMPTY,t.inputTexture=q.getOptimalTexture(e.width,e.height,t.resolution,t.antialias),t.blendRequired){r.renderTarget.finishRenderPass();let i=r.renderTarget.getRenderTarget(t.outputRenderSurface);t.backTexture=this.getBackTexture(i,e,s?.bounds)}r.renderTarget.bind(t.inputTexture,!0),r.globalUniforms.push({offset:e})}_calculateGlobalFrame(t,e,r,s,i,o){let a=t.globalFrame;a.x=e*s,a.y=r*s,a.width=i*s,a.height=o*s}_updateFilterUniforms(t,e,r,s,i,o,a,l){let h=this._filterGlobalUniforms.uniforms,c=h.uOutputFrame,u=h.uInputSize,f=h.uInputPixel,d=h.uInputClamp,p=h.uGlobalFrame,m=h.uOutputTexture;a?(c[0]=r.bounds.minX-s,c[1]=r.bounds.minY-i):(c[0]=0,c[1]=0),c[2]=t.frame.width,c[3]=t.frame.height,u[0]=t.source.width,u[1]=t.source.height,u[2]=1/u[0],u[3]=1/u[1],f[0]=t.source.pixelWidth,f[1]=t.source.pixelHeight,f[2]=1/f[0],f[3]=1/f[1],d[0]=.5*f[2],d[1]=.5*f[3],d[2]=t.frame.width*u[2]-.5*f[2],d[3]=t.frame.height*u[3]-.5*f[3];let x=this.renderer.renderTarget.rootRenderTarget.colorTexture;p[0]=s*o,p[1]=i*o,p[2]=x.source.width*o,p[3]=x.source.height*o,e instanceof E&&(e.source.resource=null);let g=this.renderer.renderTarget.getRenderTarget(e);this.renderer.renderTarget.bind(e,!!l),e instanceof E?(m[0]=e.frame.width,m[1]=e.frame.height):(m[0]=g.width,m[1]=g.height),m[2]=g.isRoot?-1:1,this._filterGlobalUniforms.update()}_findFilterResolution(t){let e=this._filterStackIndex-1;for(;e>0&&this._filterStack[e].skip;)--e;return e>0&&this._filterStack[e].inputTexture?this._filterStack[e].inputTexture.source._resolution:t}_findPreviousFilterOffset(){let t=0,e=0,r=this._filterStackIndex;for(;r>0;){r--;let s=this._filterStack[r];if(!s.skip){t=s.bounds.minX,e=s.bounds.minY;break}}return{x:t,y:e}}_calculateFilterArea(t,e){if(t.renderables?Mn(t.renderables,e):t.filterEffect.filterArea?(e.clear(),e.addRect(t.filterEffect.filterArea),e.applyMatrix(t.container.worldTransform)):t.container.getFastGlobalBounds(!0,e),t.container){let s=(t.container.renderGroup||t.container.parentRenderGroup).cacheToLocalTransform;s&&e.applyMatrix(s)}}_applyFiltersToTexture(t,e){let r=t.inputTexture,s=t.bounds,i=t.filters,o=t.firstEnabledIndex,a=t.lastEnabledIndex;if(this._globalFilterBindGroup.setResource(r.source.style,2),this._globalFilterBindGroup.setResource(t.backTexture.source,3),o===a)i[o].apply(this,r,t.outputRenderSurface,e);else{let l=t.inputTexture,h=q.getOptimalTexture(s.width,s.height,l.source._resolution,!1),c=h;for(let u=o;u<a;u++){let f=i[u];if(!f.enabled)continue;f.apply(this,l,c,!0);let d=l;l=c,c=d}i[a].apply(this,l,t.outputRenderSurface,e),q.returnTexture(h)}}_calculateFilterBounds(t,e,r,s,i){let o=this.renderer,a=t.bounds,l=t.filters,h=1/0,c=0,u=!0,f=!1,d=!1,p=!0,m=-1,x=-1;for(let g=0;g<l.length;g++){let _=l[g];if(!_.enabled)continue;if(m===-1&&(m=g),x=g,h=Math.min(h,_.resolution==="inherit"?s:_.resolution),c+=_.padding,_.antialias==="off"?u=!1:_.antialias==="inherit"&&u&&(u=r),_.clipToViewport||(p=!1),!!!(_.compatibleRenderers&o.type)){d=!1;break}if(_.blendRequired&&!(o.backBuffer?.useBackBuffer??!0)){L("Blend filter requires backBuffer on WebGL renderer to be enabled. Set `useBackBuffer: true` in the renderer options."),d=!1;break}d=!0,f||(f=_.blendRequired)}if(!d){t.skip=!0;return}if(p&&a.fitBounds(0,e.width/s,0,e.height/s),a.scale(h).ceil().scale(1/h).pad((c|0)*i),!a.isPositive){t.skip=!0;return}t.antialias=u,t.resolution=h,t.blendRequired=f,t.firstEnabledIndex=m,t.lastEnabledIndex=x}_popFilterData(){return this._filterStackIndex--,this._filterStack[this._filterStackIndex]}_getPreviousFilterData(){let t,e=this._filterStackIndex-1;for(;e>0&&(e--,t=this._filterStack[e],!!t.skip););return t}_pushFilterData(){let t=this._filterStack[this._filterStackIndex];return t||(t=this._filterStack[this._filterStackIndex]=new os),this._filterStackIndex++,t}};as.extension={type:[w.WebGLSystem,w.WebGPUSystem],name:"filter"};export{ur as a,dr as b,ot as c,ve as d,Sr as e,Tr as f,vr as g,Cr as h,Mr as i,dt as j,Y as k,Oe as l,Or as m,Ve as n,Yr as o,Xr as p,Qr as q,es as r,ss as s,is as t,as as
|
|
381
|
+
`;var Ze=class extends Es{constructor(){let t=pe.from({vertex:{source:ns,entryPoint:"mainVertex"},fragment:{source:ns,entryPoint:"mainFragment"},name:"passthrough-filter"}),e=fe.from({vertex:Pn,fragment:vn,name:"passthrough-filter"});super({gpuProgram:t,glProgram:e})}};var Cn=new G;function Mn(n,t){t.clear();let e=t.matrix;for(let r=0;r<n.length;r++){let s=n[r];if(s.globalDisplayStatus<7)continue;let i=s.renderGroup??s.parentRenderGroup;i?.isCachedAsTexture?t.matrix=Cn.copyFrom(i.textureOffsetInverseTransform).append(s.worldTransform):i?._parentCacheAsTextureRenderGroup?t.matrix=Cn.copyFrom(i._parentCacheAsTextureRenderGroup.inverseWorldTransform).append(s.groupTransform):t.matrix=s.worldTransform,t.addBounds(s.bounds)}return t.matrix=e,t}var Bo=new Gt({attributes:{aPosition:{buffer:new Float32Array([0,0,1,0,1,1,0,1]),format:"float32x2",stride:8,offset:0}},indexBuffer:new Uint32Array([0,1,2,0,2,3])}),os=class{constructor(){this.skip=!1,this.inputTexture=null,this.backTexture=null,this.filters=null,this.bounds=new st,this.container=null,this.blendRequired=!1,this.outputRenderSurface=null,this.globalFrame={x:0,y:0,width:0,height:0},this.firstEnabledIndex=-1,this.lastEnabledIndex=-1}},as=class{constructor(t){this._filterStackIndex=0,this._filterStack=[],this._filterGlobalUniforms=new J({uInputSize:{value:new Float32Array(4),type:"vec4<f32>"},uInputPixel:{value:new Float32Array(4),type:"vec4<f32>"},uInputClamp:{value:new Float32Array(4),type:"vec4<f32>"},uOutputFrame:{value:new Float32Array(4),type:"vec4<f32>"},uGlobalFrame:{value:new Float32Array(4),type:"vec4<f32>"},uOutputTexture:{value:new Float32Array(4),type:"vec4<f32>"}}),this._globalFilterBindGroup=new de({}),this.renderer=t}get activeBackTexture(){return this._activeFilterData?.backTexture}push(t){let e=this.renderer,r=t.filterEffect.filters,s=this._pushFilterData();s.skip=!1,s.filters=r,s.container=t.container,s.outputRenderSurface=e.renderTarget.renderSurface;let i=e.renderTarget.renderTarget.colorTexture.source,o=i.resolution,a=i.antialias;if(r.every(d=>!d.enabled)){s.skip=!0;return}let l=s.bounds;if(this._calculateFilterArea(t,l),this._calculateFilterBounds(s,e.renderTarget.rootViewPort,a,o,1),s.skip)return;let h=this._getPreviousFilterData(),c=this._findFilterResolution(o),u=0,f=0;h&&(u=h.bounds.minX,f=h.bounds.minY),this._calculateGlobalFrame(s,u,f,c,i.width,i.height),this._setupFilterTextures(s,l,e,h)}generateFilteredTexture({texture:t,filters:e}){let r=this._pushFilterData();this._activeFilterData=r,r.skip=!1,r.filters=e;let s=t.source,i=s.resolution,o=s.antialias;if(e.every(d=>!d.enabled))return r.skip=!0,t;let a=r.bounds;if(a.addRect(t.frame),this._calculateFilterBounds(r,a.rectangle,o,i,0),r.skip)return t;let l=i;this._calculateGlobalFrame(r,0,0,l,s.width,s.height),r.outputRenderSurface=q.getOptimalTexture(a.width,a.height,r.resolution,r.antialias),r.backTexture=E.EMPTY,r.inputTexture=t,this.renderer.renderTarget.finishRenderPass(),this._applyFiltersToTexture(r,!0);let f=r.outputRenderSurface;return f.source.alphaMode="premultiplied-alpha",f}pop(){let t=this.renderer,e=this._popFilterData();e.skip||(t.globalUniforms.pop(),t.renderTarget.finishRenderPass(),this._activeFilterData=e,this._applyFiltersToTexture(e,!1),e.blendRequired&&q.returnTexture(e.backTexture),q.returnTexture(e.inputTexture))}getBackTexture(t,e,r){let s=t.colorTexture.source._resolution,i=q.getOptimalTexture(e.width,e.height,s,!1),o=e.minX,a=e.minY;r&&(o-=r.minX,a-=r.minY),o=Math.floor(o*s),a=Math.floor(a*s);let l=Math.ceil(e.width*s),h=Math.ceil(e.height*s);return this.renderer.renderTarget.copyToTexture(t,i,{x:o,y:a},{width:l,height:h},{x:0,y:0}),i}applyFilter(t,e,r,s){let i=this.renderer,o=this._activeFilterData,l=o.outputRenderSurface===r,h=i.renderTarget.rootRenderTarget.colorTexture.source._resolution,c=this._findFilterResolution(h),u=0,f=0;if(l){let p=this._findPreviousFilterOffset();u=p.x,f=p.y}this._updateFilterUniforms(e,r,o,u,f,c,l,s);let d=t.enabled?t:this._getPassthroughFilter();this._setupBindGroupsAndRender(d,e,i)}calculateSpriteMatrix(t,e){let r=this._activeFilterData,s=t.set(r.inputTexture._source.width,0,0,r.inputTexture._source.height,r.bounds.minX,r.bounds.minY),i=e.worldTransform.copyTo(G.shared),o=e.renderGroup||e.parentRenderGroup;return o&&o.cacheToLocalTransform&&i.prepend(o.cacheToLocalTransform),i.invert(),s.prepend(i),s.scale(1/e.texture.orig.width,1/e.texture.orig.height),s.translate(e.anchor.x,e.anchor.y),s}destroy(){this._passthroughFilter?.destroy(!0),this._passthroughFilter=null}_getPassthroughFilter(){return this._passthroughFilter??(this._passthroughFilter=new Ze),this._passthroughFilter}_setupBindGroupsAndRender(t,e,r){if(r.renderPipes.uniformBatch){let s=r.renderPipes.uniformBatch.getUboResource(this._filterGlobalUniforms);this._globalFilterBindGroup.setResource(s,0)}else this._globalFilterBindGroup.setResource(this._filterGlobalUniforms,0);this._globalFilterBindGroup.setResource(e.source,1),this._globalFilterBindGroup.setResource(e.source.style,2),t.groups[0]=this._globalFilterBindGroup,r.encoder.draw({geometry:Bo,shader:t,state:t._state,topology:"triangle-list"}),r.type===It.WEBGL&&r.renderTarget.finishRenderPass()}_setupFilterTextures(t,e,r,s){if(t.backTexture=E.EMPTY,t.inputTexture=q.getOptimalTexture(e.width,e.height,t.resolution,t.antialias),t.blendRequired){r.renderTarget.finishRenderPass();let i=r.renderTarget.getRenderTarget(t.outputRenderSurface);t.backTexture=this.getBackTexture(i,e,s?.bounds)}r.renderTarget.bind(t.inputTexture,!0),r.globalUniforms.push({offset:e})}_calculateGlobalFrame(t,e,r,s,i,o){let a=t.globalFrame;a.x=e*s,a.y=r*s,a.width=i*s,a.height=o*s}_updateFilterUniforms(t,e,r,s,i,o,a,l){let h=this._filterGlobalUniforms.uniforms,c=h.uOutputFrame,u=h.uInputSize,f=h.uInputPixel,d=h.uInputClamp,p=h.uGlobalFrame,m=h.uOutputTexture;a?(c[0]=r.bounds.minX-s,c[1]=r.bounds.minY-i):(c[0]=0,c[1]=0),c[2]=t.frame.width,c[3]=t.frame.height,u[0]=t.source.width,u[1]=t.source.height,u[2]=1/u[0],u[3]=1/u[1],f[0]=t.source.pixelWidth,f[1]=t.source.pixelHeight,f[2]=1/f[0],f[3]=1/f[1],d[0]=.5*f[2],d[1]=.5*f[3],d[2]=t.frame.width*u[2]-.5*f[2],d[3]=t.frame.height*u[3]-.5*f[3];let x=this.renderer.renderTarget.rootRenderTarget.colorTexture;p[0]=s*o,p[1]=i*o,p[2]=x.source.width*o,p[3]=x.source.height*o,e instanceof E&&(e.source.resource=null);let g=this.renderer.renderTarget.getRenderTarget(e);this.renderer.renderTarget.bind(e,!!l),e instanceof E?(m[0]=e.frame.width,m[1]=e.frame.height):(m[0]=g.width,m[1]=g.height),m[2]=g.isRoot?-1:1,this._filterGlobalUniforms.update()}_findFilterResolution(t){let e=this._filterStackIndex-1;for(;e>0&&this._filterStack[e].skip;)--e;return e>0&&this._filterStack[e].inputTexture?this._filterStack[e].inputTexture.source._resolution:t}_findPreviousFilterOffset(){let t=0,e=0,r=this._filterStackIndex;for(;r>0;){r--;let s=this._filterStack[r];if(!s.skip){t=s.bounds.minX,e=s.bounds.minY;break}}return{x:t,y:e}}_calculateFilterArea(t,e){if(t.renderables?Mn(t.renderables,e):t.filterEffect.filterArea?(e.clear(),e.addRect(t.filterEffect.filterArea),e.applyMatrix(t.container.worldTransform)):t.container.getFastGlobalBounds(!0,e),t.container){let s=(t.container.renderGroup||t.container.parentRenderGroup).cacheToLocalTransform;s&&e.applyMatrix(s)}}_applyFiltersToTexture(t,e){let r=t.inputTexture,s=t.bounds,i=t.filters,o=t.firstEnabledIndex,a=t.lastEnabledIndex;if(this._globalFilterBindGroup.setResource(r.source.style,2),this._globalFilterBindGroup.setResource(t.backTexture.source,3),o===a)i[o].apply(this,r,t.outputRenderSurface,e);else{let l=t.inputTexture,h=q.getOptimalTexture(s.width,s.height,l.source._resolution,!1),c=h;for(let u=o;u<a;u++){let f=i[u];if(!f.enabled)continue;f.apply(this,l,c,!0);let d=l;l=c,c=d}i[a].apply(this,l,t.outputRenderSurface,e),q.returnTexture(h)}}_calculateFilterBounds(t,e,r,s,i){let o=this.renderer,a=t.bounds,l=t.filters,h=1/0,c=0,u=!0,f=!1,d=!1,p=!0,m=-1,x=-1;for(let g=0;g<l.length;g++){let _=l[g];if(!_.enabled)continue;if(m===-1&&(m=g),x=g,h=Math.min(h,_.resolution==="inherit"?s:_.resolution),c+=_.padding,_.antialias==="off"?u=!1:_.antialias==="inherit"&&u&&(u=r),_.clipToViewport||(p=!1),!!!(_.compatibleRenderers&o.type)){d=!1;break}if(_.blendRequired&&!(o.backBuffer?.useBackBuffer??!0)){L("Blend filter requires backBuffer on WebGL renderer to be enabled. Set `useBackBuffer: true` in the renderer options."),d=!1;break}d=!0,f||(f=_.blendRequired)}if(!d){t.skip=!0;return}if(p&&a.fitBounds(0,e.width/s,0,e.height/s),a.scale(h).ceil().scale(1/h).pad((c|0)*i),!a.isPositive){t.skip=!0;return}t.antialias=u,t.resolution=h,t.blendRequired=f,t.firstEnabledIndex=m,t.lastEnabledIndex=x}_popFilterData(){return this._filterStackIndex--,this._filterStack[this._filterStackIndex]}_getPreviousFilterData(){let t,e=this._filterStackIndex-1;for(;e>0&&(e--,t=this._filterStack[e],!!t.skip););return t}_pushFilterData(){let t=this._filterStack[this._filterStackIndex];return t||(t=this._filterStack[this._filterStackIndex]=new os),this._filterStackIndex++,t}};as.extension={type:[w.WebGLSystem,w.WebGPUSystem],name:"filter"};export{ur as a,dr as b,ot as c,ve as d,Sr as e,Tr as f,vr as g,Cr as h,Mr as i,dt as j,Y as k,Oe as l,Or as m,Ve as n,Yr as o,Xr as p,Qr as q,es as r,ss as s,is as t,Pn as u,as as v};
|
|
382
382
|
/*! Bundled license information:
|
|
383
383
|
|
|
384
384
|
tiny-lru/dist/tiny-lru.js:
|
|
@@ -390,4 +390,4 @@ tiny-lru/dist/tiny-lru.js:
|
|
|
390
390
|
* @version 11.4.5
|
|
391
391
|
*)
|
|
392
392
|
*/
|
|
393
|
-
//# sourceMappingURL=chunk-
|
|
393
|
+
//# sourceMappingURL=chunk-73XOWA4F.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as N,b as ne}from"./chunk-A45M2HJC.js";import{a as G,b as _e,c as xe,e as be,f as ye,g as Ge,i as Be,k as Se,l as Pe,m as Te,n as Ce,o as ve}from"./chunk-W5CN46AR.js";import{F as ue,I as ie,S as b,V as ce,W as V,Y as de,Z as P,aa as j,ba as pe,d,da as oe,e as S,ha as K,i as W,ja as he,la as le,na as q,o as y,pa as Y,ra as fe,sa as $,va as X,ya as me,za as ge}from"./chunk-WFT3KTZG.js";var T=class{constructor(){this._maxTextures=0}contextChange(e){let t=new Y({uTransformMatrix:{value:new W,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}});this._maxTextures=e.limits.maxBatchableTextures;let r=K({name:"graphics",bits:[he,le(this._maxTextures),ge,q]});this.shader=new $({gpuProgram:r,resources:{localUniforms:t}})}execute(e,t){let r=t.context,s=r.customShader||this.shader,i=e.renderer,o=i.graphicsContext,{batcher:n,instructions:u}=o.getContextRenderData(r),c=i.encoder;c.setGeometry(n.geometry,s.gpuProgram);let l=i.globalUniforms.bindGroup;c.setBindGroup(0,l,s.gpuProgram);let h=i.renderPipes.uniformBatch.getUniformBindGroup(s.resources.localUniforms,!0);c.setBindGroup(2,h,s.gpuProgram);let f=u.instructions,p=null;for(let _=0;_<u.instructionSize;_++){let g=f[_];if(g.topology!==p&&(p=g.topology,c.setPipelineFromGeometryProgramAndState(n.geometry,s.gpuProgram,e.state,g.topology)),s.groups[1]=g.bindGroup,!g.gpuBindGroup){let se=g.textures;g.bindGroup=N(se.textures,se.count,this._maxTextures),g.gpuBindGroup=i.bindGroup.getBindGroup(g.bindGroup,s.gpuProgram,1)}c.setBindGroup(1,g.bindGroup,s.gpuProgram),c.renderPassEncoder.drawIndexed(g.size,1,g.start)}}destroy(){this.shader.destroy(!0),this.shader=null}};T.extension={type:[d.WebGPUPipesAdaptor],name:"graphics"};var C=class{init(){let e=K({name:"mesh",bits:[me,xe,q]});this._shader=new $({gpuProgram:e,resources:{uTexture:ie.EMPTY._source,uSampler:ie.EMPTY._source.style,textureUniforms:{uTextureMatrix:{type:"mat3x3<f32>",value:new W}}}})}execute(e,t){let r=e.renderer,s=t._shader;if(!s)s=this._shader,s.groups[2]=r.texture.getTextureBindGroup(t.texture);else if(!s.gpuProgram){y("Mesh shader has no gpuProgram",t.shader);return}let i=s.gpuProgram;if(i.autoAssignGlobalUniforms&&(s.groups[0]=r.globalUniforms.bindGroup),i.autoAssignLocalUniforms){let o=e.localUniforms;s.groups[1]=r.renderPipes.uniformBatch.getUniformBindGroup(o,!0)}r.encoder.draw({geometry:t._geometry,shader:s,state:t.state})}destroy(){this._shader.destroy(!0),this._shader=null}};C.extension={type:[d.WebGPUPipesAdaptor],name:"mesh"};var Z=X.for2d(),v=class{start(e,t,r){let s=e.renderer,i=s.encoder,o=r.gpuProgram;this._shader=r,this._geometry=t,i.setGeometry(t,o),Z.blendMode="normal",s.pipeline.getPipeline(t,o,Z);let n=s.globalUniforms.bindGroup;i.resetBindGroup(1),i.setBindGroup(0,n,o)}execute(e,t){let r=this._shader.gpuProgram,s=e.renderer,i=s.encoder;if(!t.bindGroup){let u=t.textures;t.bindGroup=N(u.textures,u.count,s.limits.maxBatchableTextures)}Z.blendMode=t.blendMode;let o=s.bindGroup.getBindGroup(t.bindGroup,r,1),n=s.pipeline.getPipeline(this._geometry,r,Z,t.topology);t.bindGroup._touch(s.textureGC.count),i.setPipeline(n),i.renderPassEncoder.setBindGroup(1,o),i.renderPassEncoder.drawIndexed(t.size,1,t.start)}};v.extension={type:[d.WebGPUPipesAdaptor],name:"batch"};var U=class{constructor(e){this._hash=Object.create(null),this._renderer=e,this._renderer.renderableGC.addManagedHash(this,"_hash")}contextChange(e){this._gpu=e}getBindGroup(e,t,r){return e._updateKey(),this._hash[e._key]||this._createBindGroup(e,t,r)}_createBindGroup(e,t,r){let s=this._gpu.device,i=t.layout[r],o=[],n=this._renderer;for(let l in i){let h=e.resources[l]??e.resources[i[l]],f;if(h._resourceType==="uniformGroup"){let p=h;n.ubo.updateUniformGroup(p);let _=p.buffer;f={buffer:n.buffer.getGPUBuffer(_),offset:0,size:_.descriptor.size}}else if(h._resourceType==="buffer"){let p=h;f={buffer:n.buffer.getGPUBuffer(p),offset:0,size:p.descriptor.size}}else if(h._resourceType==="bufferResource"){let p=h;f={buffer:n.buffer.getGPUBuffer(p.buffer),offset:p.offset,size:p.size}}else if(h._resourceType==="textureSampler"){let p=h;f=n.texture.getGpuSampler(p)}else if(h._resourceType==="textureSource"){let p=h;f=n.texture.getGpuSource(p).createView({})}o.push({binding:i[l],resource:f})}let u=n.shader.getProgramData(t).bindGroups[r],c=s.createBindGroup({layout:u,entries:o});return this._hash[e._key]=c,c}destroy(){for(let e of Object.keys(this._hash))this._hash[e]=null;this._hash=null,this._renderer=null}};U.extension={type:[d.WebGPUSystem],name:"bindGroup"};var M=class{constructor(e){this._gpuBuffers=Object.create(null),e.renderableGC.addManagedHash(this,"_gpuBuffers")}contextChange(e){this._gpu=e}getGPUBuffer(e){return this._gpuBuffers[e.uid]||this.createGPUBuffer(e)}updateBuffer(e){let t=this._gpuBuffers[e.uid]||this.createGPUBuffer(e),r=e.data;return e._updateID&&r&&(e._updateID=0,this._gpu.device.queue.writeBuffer(t,0,r.buffer,0,(e._updateSize||r.byteLength)+3&-4)),t}destroyAll(){for(let e in this._gpuBuffers)this._gpuBuffers[e]?.destroy();this._gpuBuffers={}}createGPUBuffer(e){this._gpuBuffers[e.uid]||(e.on("update",this.updateBuffer,this),e.on("change",this.onBufferChange,this),e.on("destroy",this.onBufferDestroy,this));let t=this._gpu.device.createBuffer(e.descriptor);return e._updateID=0,e.data&&(de(e.data.buffer,t.getMappedRange()),t.unmap()),this._gpuBuffers[e.uid]=t,t}onBufferChange(e){this._gpuBuffers[e.uid].destroy(),e._updateID=0,this._gpuBuffers[e.uid]=this.createGPUBuffer(e)}onBufferDestroy(e){this._destroyBuffer(e)}destroy(){this.destroyAll(),this._gpuBuffers={}}_destroyBuffer(e){if(e.off("update",this.updateBuffer,this),e.off("change",this.onBufferChange,this),e.off("destroy",this.onBufferDestroy,this),!this._gpuBuffers[e.uid])return;this._gpuBuffers[e.uid].destroy(),this._gpuBuffers[e.uid]=null}};M.extension={type:[d.WebGPUSystem],name:"buffer"};var E=class{constructor(e){this._colorMaskCache=15,this._renderer=e}setMask(e){this._colorMaskCache!==e&&(this._colorMaskCache=e,this._renderer.pipeline.setColorMask(e))}destroy(){this._renderer=null,this._colorMaskCache=null}};E.extension={type:[d.WebGPUSystem],name:"colorMask"};var B=class{constructor(e){this._renderer=e}async init(e){return this._initPromise?this._initPromise:(this._initPromise=(e.gpu?Promise.resolve(e.gpu):this._createDeviceAndAdaptor(e)).then(t=>{this.gpu=t,this._renderer.runners.contextChange.emit(this.gpu)}),this._initPromise)}contextChange(e){this._renderer.gpu=e}async _createDeviceAndAdaptor(e){let t=await b.get().getNavigator().gpu.requestAdapter({powerPreference:e.powerPreference,forceFallbackAdapter:e.forceFallbackAdapter}),r=["texture-compression-bc","texture-compression-astc","texture-compression-etc2"].filter(i=>t.features.has(i)),s=await t.requestDevice({requiredFeatures:r});return{adapter:t,device:s}}destroy(){this.gpu=null,this._renderer=null}};B.extension={type:[d.WebGPUSystem],name:"device"};B.defaultOptions={powerPreference:void 0,forceFallbackAdapter:!1};var w=class{constructor(e){this._boundBindGroup=Object.create(null),this._boundVertexBuffer=Object.create(null),this._renderer=e}renderStart(){this.commandFinished=new Promise(e=>{this._resolveCommandFinished=e}),this.commandEncoder=this._renderer.gpu.device.createCommandEncoder()}beginRenderPass(e){this.endRenderPass(),this._clearCache(),this.renderPassEncoder=this.commandEncoder.beginRenderPass(e.descriptor)}endRenderPass(){this.renderPassEncoder&&this.renderPassEncoder.end(),this.renderPassEncoder=null}setViewport(e){this.renderPassEncoder.setViewport(e.x,e.y,e.width,e.height,0,1)}setPipelineFromGeometryProgramAndState(e,t,r,s){let i=this._renderer.pipeline.getPipeline(e,t,r,s);this.setPipeline(i)}setPipeline(e){this._boundPipeline!==e&&(this._boundPipeline=e,this.renderPassEncoder.setPipeline(e))}_setVertexBuffer(e,t){this._boundVertexBuffer[e]!==t&&(this._boundVertexBuffer[e]=t,this.renderPassEncoder.setVertexBuffer(e,this._renderer.buffer.updateBuffer(t)))}_setIndexBuffer(e){if(this._boundIndexBuffer===e)return;this._boundIndexBuffer=e;let t=e.data.BYTES_PER_ELEMENT===2?"uint16":"uint32";this.renderPassEncoder.setIndexBuffer(this._renderer.buffer.updateBuffer(e),t)}resetBindGroup(e){this._boundBindGroup[e]=null}setBindGroup(e,t,r){if(this._boundBindGroup[e]===t)return;this._boundBindGroup[e]=t,t._touch(this._renderer.textureGC.count);let s=this._renderer.bindGroup.getBindGroup(t,r,e);this.renderPassEncoder.setBindGroup(e,s)}setGeometry(e,t){let r=this._renderer.pipeline.getBufferNamesToBind(e,t);for(let s in r)this._setVertexBuffer(parseInt(s,10),e.attributes[r[s]].buffer);e.indexBuffer&&this._setIndexBuffer(e.indexBuffer)}_setShaderBindGroups(e,t){for(let r in e.groups){let s=e.groups[r];t||this._syncBindGroup(s),this.setBindGroup(r,s,e.gpuProgram)}}_syncBindGroup(e){for(let t in e.resources){let r=e.resources[t];r.isUniformGroup&&this._renderer.ubo.updateUniformGroup(r)}}draw(e){let{geometry:t,shader:r,state:s,topology:i,size:o,start:n,instanceCount:u,skipSync:c}=e;this.setPipelineFromGeometryProgramAndState(t,r.gpuProgram,s,i),this.setGeometry(t,r.gpuProgram),this._setShaderBindGroups(r,c),t.indexBuffer?this.renderPassEncoder.drawIndexed(o||t.indexBuffer.data.length,u??t.instanceCount,n||0):this.renderPassEncoder.draw(o||t.getSize(),u??t.instanceCount,n||0)}finishRenderPass(){this.renderPassEncoder&&(this.renderPassEncoder.end(),this.renderPassEncoder=null)}postrender(){this.finishRenderPass(),this._gpu.device.queue.submit([this.commandEncoder.finish()]),this._resolveCommandFinished(),this.commandEncoder=null}restoreRenderPass(){let e=this._renderer.renderTarget.adaptor.getDescriptor(this._renderer.renderTarget.renderTarget,!1,[0,0,0,1]);this.renderPassEncoder=this.commandEncoder.beginRenderPass(e);let t=this._boundPipeline,r={...this._boundVertexBuffer},s=this._boundIndexBuffer,i={...this._boundBindGroup};this._clearCache();let o=this._renderer.renderTarget.viewport;this.renderPassEncoder.setViewport(o.x,o.y,o.width,o.height,0,1),this.setPipeline(t);for(let n in r)this._setVertexBuffer(n,r[n]);for(let n in i)this.setBindGroup(n,i[n],null);this._setIndexBuffer(s)}_clearCache(){for(let e=0;e<16;e++)this._boundBindGroup[e]=null,this._boundVertexBuffer[e]=null;this._boundIndexBuffer=null,this._boundPipeline=null}destroy(){this._renderer=null,this._gpu=null,this._boundBindGroup=null,this._boundVertexBuffer=null,this._boundIndexBuffer=null,this._boundPipeline=null}contextChange(e){this._gpu=e}};w.extension={type:[d.WebGPUSystem],name:"encoder",priority:1};var R=class{constructor(e){this._renderer=e}contextChange(){this.maxTextures=this._renderer.device.gpu.device.limits.maxSampledTexturesPerShaderStage,this.maxBatchableTextures=this.maxTextures}destroy(){}};R.extension={type:[d.WebGPUSystem],name:"limits"};var L=class{constructor(e){this._renderTargetStencilState=Object.create(null),this._renderer=e,e.renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(e){let t=this._renderTargetStencilState[e.uid];t||(t=this._renderTargetStencilState[e.uid]={stencilMode:P.DISABLED,stencilReference:0}),this._activeRenderTarget=e,this.setStencilMode(t.stencilMode,t.stencilReference)}setStencilMode(e,t){let r=this._renderTargetStencilState[this._activeRenderTarget.uid];r.stencilMode=e,r.stencilReference=t;let s=this._renderer;s.pipeline.setStencilMode(e),s.encoder.renderPassEncoder.setStencilReference(t)}destroy(){this._renderer.renderTarget.onRenderTargetChange.remove(this),this._renderer=null,this._activeRenderTarget=null,this._renderTargetStencilState=null}};L.extension={type:[d.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 Ue(a){let e=a.map(r=>({data:r,offset:0,size:0})),t=0;for(let r=0;r<e.length;r++){let s=e[r],i=A[s.data.type].size,o=A[s.data.type].align;if(!A[s.data.type])throw new Error(`[Pixi.js] WebGPU UniformBuffer: Unknown type ${s.data.type}`);s.data.size>1&&(i=Math.max(i,o)*s.data.size),t=Math.ceil(t/o)*o,s.size=i,s.offset=t,t+=i}return t=Math.ceil(t/16)*16,{uboElements:e,size:t}}function Me(a,e){let{size:t,align:r}=A[a.data.type],s=(r-t)/4,i=a.data.type.indexOf("i32")>=0?"dataInt32":"data";return`
|
|
1
|
+
import{a as N,b as ne}from"./chunk-23FOBGX6.js";import{a as G,b as _e,c as xe,f as be,g as ye,h as Ge,j as Be,l as Se,m as Pe,n as Te,o as Ce,p as ve}from"./chunk-VCUJJYRJ.js";import{Aa as ge,G as ue,J as ie,T as b,W as ce,X as V,Z as de,_ as P,ba as j,ca as pe,d,e as S,ea as oe,ia as K,j as W,ka as he,ma as le,oa as q,p as y,qa as Y,sa as fe,ta as $,wa as X,za as me}from"./chunk-XNIZ4L5W.js";var T=class{constructor(){this._maxTextures=0}contextChange(e){let t=new Y({uTransformMatrix:{value:new W,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}});this._maxTextures=e.limits.maxBatchableTextures;let r=K({name:"graphics",bits:[he,le(this._maxTextures),ge,q]});this.shader=new $({gpuProgram:r,resources:{localUniforms:t}})}execute(e,t){let r=t.context,s=r.customShader||this.shader,i=e.renderer,o=i.graphicsContext,{batcher:n,instructions:u}=o.getContextRenderData(r),c=i.encoder;c.setGeometry(n.geometry,s.gpuProgram);let l=i.globalUniforms.bindGroup;c.setBindGroup(0,l,s.gpuProgram);let h=i.renderPipes.uniformBatch.getUniformBindGroup(s.resources.localUniforms,!0);c.setBindGroup(2,h,s.gpuProgram);let f=u.instructions,p=null;for(let _=0;_<u.instructionSize;_++){let g=f[_];if(g.topology!==p&&(p=g.topology,c.setPipelineFromGeometryProgramAndState(n.geometry,s.gpuProgram,e.state,g.topology)),s.groups[1]=g.bindGroup,!g.gpuBindGroup){let se=g.textures;g.bindGroup=N(se.textures,se.count,this._maxTextures),g.gpuBindGroup=i.bindGroup.getBindGroup(g.bindGroup,s.gpuProgram,1)}c.setBindGroup(1,g.bindGroup,s.gpuProgram),c.renderPassEncoder.drawIndexed(g.size,1,g.start)}}destroy(){this.shader.destroy(!0),this.shader=null}};T.extension={type:[d.WebGPUPipesAdaptor],name:"graphics"};var C=class{init(){let e=K({name:"mesh",bits:[me,xe,q]});this._shader=new $({gpuProgram:e,resources:{uTexture:ie.EMPTY._source,uSampler:ie.EMPTY._source.style,textureUniforms:{uTextureMatrix:{type:"mat3x3<f32>",value:new W}}}})}execute(e,t){let r=e.renderer,s=t._shader;if(!s)s=this._shader,s.groups[2]=r.texture.getTextureBindGroup(t.texture);else if(!s.gpuProgram){y("Mesh shader has no gpuProgram",t.shader);return}let i=s.gpuProgram;if(i.autoAssignGlobalUniforms&&(s.groups[0]=r.globalUniforms.bindGroup),i.autoAssignLocalUniforms){let o=e.localUniforms;s.groups[1]=r.renderPipes.uniformBatch.getUniformBindGroup(o,!0)}r.encoder.draw({geometry:t._geometry,shader:s,state:t.state})}destroy(){this._shader.destroy(!0),this._shader=null}};C.extension={type:[d.WebGPUPipesAdaptor],name:"mesh"};var Z=X.for2d(),v=class{start(e,t,r){let s=e.renderer,i=s.encoder,o=r.gpuProgram;this._shader=r,this._geometry=t,i.setGeometry(t,o),Z.blendMode="normal",s.pipeline.getPipeline(t,o,Z);let n=s.globalUniforms.bindGroup;i.resetBindGroup(1),i.setBindGroup(0,n,o)}execute(e,t){let r=this._shader.gpuProgram,s=e.renderer,i=s.encoder;if(!t.bindGroup){let u=t.textures;t.bindGroup=N(u.textures,u.count,s.limits.maxBatchableTextures)}Z.blendMode=t.blendMode;let o=s.bindGroup.getBindGroup(t.bindGroup,r,1),n=s.pipeline.getPipeline(this._geometry,r,Z,t.topology);t.bindGroup._touch(s.textureGC.count),i.setPipeline(n),i.renderPassEncoder.setBindGroup(1,o),i.renderPassEncoder.drawIndexed(t.size,1,t.start)}};v.extension={type:[d.WebGPUPipesAdaptor],name:"batch"};var U=class{constructor(e){this._hash=Object.create(null),this._renderer=e,this._renderer.renderableGC.addManagedHash(this,"_hash")}contextChange(e){this._gpu=e}getBindGroup(e,t,r){return e._updateKey(),this._hash[e._key]||this._createBindGroup(e,t,r)}_createBindGroup(e,t,r){let s=this._gpu.device,i=t.layout[r],o=[],n=this._renderer;for(let l in i){let h=e.resources[l]??e.resources[i[l]],f;if(h._resourceType==="uniformGroup"){let p=h;n.ubo.updateUniformGroup(p);let _=p.buffer;f={buffer:n.buffer.getGPUBuffer(_),offset:0,size:_.descriptor.size}}else if(h._resourceType==="buffer"){let p=h;f={buffer:n.buffer.getGPUBuffer(p),offset:0,size:p.descriptor.size}}else if(h._resourceType==="bufferResource"){let p=h;f={buffer:n.buffer.getGPUBuffer(p.buffer),offset:p.offset,size:p.size}}else if(h._resourceType==="textureSampler"){let p=h;f=n.texture.getGpuSampler(p)}else if(h._resourceType==="textureSource"){let p=h;f=n.texture.getGpuSource(p).createView({})}o.push({binding:i[l],resource:f})}let u=n.shader.getProgramData(t).bindGroups[r],c=s.createBindGroup({layout:u,entries:o});return this._hash[e._key]=c,c}destroy(){for(let e of Object.keys(this._hash))this._hash[e]=null;this._hash=null,this._renderer=null}};U.extension={type:[d.WebGPUSystem],name:"bindGroup"};var M=class{constructor(e){this._gpuBuffers=Object.create(null),e.renderableGC.addManagedHash(this,"_gpuBuffers")}contextChange(e){this._gpu=e}getGPUBuffer(e){return this._gpuBuffers[e.uid]||this.createGPUBuffer(e)}updateBuffer(e){let t=this._gpuBuffers[e.uid]||this.createGPUBuffer(e),r=e.data;return e._updateID&&r&&(e._updateID=0,this._gpu.device.queue.writeBuffer(t,0,r.buffer,0,(e._updateSize||r.byteLength)+3&-4)),t}destroyAll(){for(let e in this._gpuBuffers)this._gpuBuffers[e]?.destroy();this._gpuBuffers={}}createGPUBuffer(e){this._gpuBuffers[e.uid]||(e.on("update",this.updateBuffer,this),e.on("change",this.onBufferChange,this),e.on("destroy",this.onBufferDestroy,this));let t=this._gpu.device.createBuffer(e.descriptor);return e._updateID=0,e.data&&(de(e.data.buffer,t.getMappedRange()),t.unmap()),this._gpuBuffers[e.uid]=t,t}onBufferChange(e){this._gpuBuffers[e.uid].destroy(),e._updateID=0,this._gpuBuffers[e.uid]=this.createGPUBuffer(e)}onBufferDestroy(e){this._destroyBuffer(e)}destroy(){this.destroyAll(),this._gpuBuffers={}}_destroyBuffer(e){if(e.off("update",this.updateBuffer,this),e.off("change",this.onBufferChange,this),e.off("destroy",this.onBufferDestroy,this),!this._gpuBuffers[e.uid])return;this._gpuBuffers[e.uid].destroy(),this._gpuBuffers[e.uid]=null}};M.extension={type:[d.WebGPUSystem],name:"buffer"};var E=class{constructor(e){this._colorMaskCache=15,this._renderer=e}setMask(e){this._colorMaskCache!==e&&(this._colorMaskCache=e,this._renderer.pipeline.setColorMask(e))}destroy(){this._renderer=null,this._colorMaskCache=null}};E.extension={type:[d.WebGPUSystem],name:"colorMask"};var B=class{constructor(e){this._renderer=e}async init(e){return this._initPromise?this._initPromise:(this._initPromise=(e.gpu?Promise.resolve(e.gpu):this._createDeviceAndAdaptor(e)).then(t=>{this.gpu=t,this._renderer.runners.contextChange.emit(this.gpu)}),this._initPromise)}contextChange(e){this._renderer.gpu=e}async _createDeviceAndAdaptor(e){let t=await b.get().getNavigator().gpu.requestAdapter({powerPreference:e.powerPreference,forceFallbackAdapter:e.forceFallbackAdapter}),r=["texture-compression-bc","texture-compression-astc","texture-compression-etc2"].filter(i=>t.features.has(i)),s=await t.requestDevice({requiredFeatures:r});return{adapter:t,device:s}}destroy(){this.gpu=null,this._renderer=null}};B.extension={type:[d.WebGPUSystem],name:"device"};B.defaultOptions={powerPreference:void 0,forceFallbackAdapter:!1};var w=class{constructor(e){this._boundBindGroup=Object.create(null),this._boundVertexBuffer=Object.create(null),this._renderer=e}renderStart(){this.commandFinished=new Promise(e=>{this._resolveCommandFinished=e}),this.commandEncoder=this._renderer.gpu.device.createCommandEncoder()}beginRenderPass(e){this.endRenderPass(),this._clearCache(),this.renderPassEncoder=this.commandEncoder.beginRenderPass(e.descriptor)}endRenderPass(){this.renderPassEncoder&&this.renderPassEncoder.end(),this.renderPassEncoder=null}setViewport(e){this.renderPassEncoder.setViewport(e.x,e.y,e.width,e.height,0,1)}setPipelineFromGeometryProgramAndState(e,t,r,s){let i=this._renderer.pipeline.getPipeline(e,t,r,s);this.setPipeline(i)}setPipeline(e){this._boundPipeline!==e&&(this._boundPipeline=e,this.renderPassEncoder.setPipeline(e))}_setVertexBuffer(e,t){this._boundVertexBuffer[e]!==t&&(this._boundVertexBuffer[e]=t,this.renderPassEncoder.setVertexBuffer(e,this._renderer.buffer.updateBuffer(t)))}_setIndexBuffer(e){if(this._boundIndexBuffer===e)return;this._boundIndexBuffer=e;let t=e.data.BYTES_PER_ELEMENT===2?"uint16":"uint32";this.renderPassEncoder.setIndexBuffer(this._renderer.buffer.updateBuffer(e),t)}resetBindGroup(e){this._boundBindGroup[e]=null}setBindGroup(e,t,r){if(this._boundBindGroup[e]===t)return;this._boundBindGroup[e]=t,t._touch(this._renderer.textureGC.count);let s=this._renderer.bindGroup.getBindGroup(t,r,e);this.renderPassEncoder.setBindGroup(e,s)}setGeometry(e,t){let r=this._renderer.pipeline.getBufferNamesToBind(e,t);for(let s in r)this._setVertexBuffer(parseInt(s,10),e.attributes[r[s]].buffer);e.indexBuffer&&this._setIndexBuffer(e.indexBuffer)}_setShaderBindGroups(e,t){for(let r in e.groups){let s=e.groups[r];t||this._syncBindGroup(s),this.setBindGroup(r,s,e.gpuProgram)}}_syncBindGroup(e){for(let t in e.resources){let r=e.resources[t];r.isUniformGroup&&this._renderer.ubo.updateUniformGroup(r)}}draw(e){let{geometry:t,shader:r,state:s,topology:i,size:o,start:n,instanceCount:u,skipSync:c}=e;this.setPipelineFromGeometryProgramAndState(t,r.gpuProgram,s,i),this.setGeometry(t,r.gpuProgram),this._setShaderBindGroups(r,c),t.indexBuffer?this.renderPassEncoder.drawIndexed(o||t.indexBuffer.data.length,u??t.instanceCount,n||0):this.renderPassEncoder.draw(o||t.getSize(),u??t.instanceCount,n||0)}finishRenderPass(){this.renderPassEncoder&&(this.renderPassEncoder.end(),this.renderPassEncoder=null)}postrender(){this.finishRenderPass(),this._gpu.device.queue.submit([this.commandEncoder.finish()]),this._resolveCommandFinished(),this.commandEncoder=null}restoreRenderPass(){let e=this._renderer.renderTarget.adaptor.getDescriptor(this._renderer.renderTarget.renderTarget,!1,[0,0,0,1]);this.renderPassEncoder=this.commandEncoder.beginRenderPass(e);let t=this._boundPipeline,r={...this._boundVertexBuffer},s=this._boundIndexBuffer,i={...this._boundBindGroup};this._clearCache();let o=this._renderer.renderTarget.viewport;this.renderPassEncoder.setViewport(o.x,o.y,o.width,o.height,0,1),this.setPipeline(t);for(let n in r)this._setVertexBuffer(n,r[n]);for(let n in i)this.setBindGroup(n,i[n],null);this._setIndexBuffer(s)}_clearCache(){for(let e=0;e<16;e++)this._boundBindGroup[e]=null,this._boundVertexBuffer[e]=null;this._boundIndexBuffer=null,this._boundPipeline=null}destroy(){this._renderer=null,this._gpu=null,this._boundBindGroup=null,this._boundVertexBuffer=null,this._boundIndexBuffer=null,this._boundPipeline=null}contextChange(e){this._gpu=e}};w.extension={type:[d.WebGPUSystem],name:"encoder",priority:1};var R=class{constructor(e){this._renderer=e}contextChange(){this.maxTextures=this._renderer.device.gpu.device.limits.maxSampledTexturesPerShaderStage,this.maxBatchableTextures=this.maxTextures}destroy(){}};R.extension={type:[d.WebGPUSystem],name:"limits"};var L=class{constructor(e){this._renderTargetStencilState=Object.create(null),this._renderer=e,e.renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(e){let t=this._renderTargetStencilState[e.uid];t||(t=this._renderTargetStencilState[e.uid]={stencilMode:P.DISABLED,stencilReference:0}),this._activeRenderTarget=e,this.setStencilMode(t.stencilMode,t.stencilReference)}setStencilMode(e,t){let r=this._renderTargetStencilState[this._activeRenderTarget.uid];r.stencilMode=e,r.stencilReference=t;let s=this._renderer;s.pipeline.setStencilMode(e),s.encoder.renderPassEncoder.setStencilReference(t)}destroy(){this._renderer.renderTarget.onRenderTargetChange.remove(this),this._renderer=null,this._activeRenderTarget=null,this._renderTargetStencilState=null}};L.extension={type:[d.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 Ue(a){let e=a.map(r=>({data:r,offset:0,size:0})),t=0;for(let r=0;r<e.length;r++){let s=e[r],i=A[s.data.type].size,o=A[s.data.type].align;if(!A[s.data.type])throw new Error(`[Pixi.js] WebGPU UniformBuffer: Unknown type ${s.data.type}`);s.data.size>1&&(i=Math.max(i,o)*s.data.size),t=Math.ceil(t/o)*o,s.size=i,s.offset=t,t+=i}return t=Math.ceil(t/16)*16,{uboElements:e,size:t}}function Me(a,e){let{size:t,align:r}=A[a.data.type],s=(r-t)/4,i=a.data.type.indexOf("i32")>=0?"dataInt32":"data";return`
|
|
2
2
|
v = uv.${a.data.name};
|
|
3
3
|
${e!==0?`offset += ${e};`:""}
|
|
4
4
|
|
|
@@ -39,4 +39,4 @@ import{a as N,b as ne}from"./chunk-A45M2HJC.js";import{a as G,b as _e,c as xe,e
|
|
|
39
39
|
return textureSample(img, imgSampler, texCoord);
|
|
40
40
|
}
|
|
41
41
|
`})),t=this.device.createRenderPipeline({layout:"auto",vertex:{module:this.mipmapShaderModule,entryPoint:"vertexMain"},fragment:{module:this.mipmapShaderModule,entryPoint:"fragmentMain",targets:[{format:e}]}}),this.pipelines[e]=t),t}generateMipmap(e){let t=this._getMipmapPipeline(e.format);if(e.dimension==="3d"||e.dimension==="1d")throw new Error("Generating mipmaps for non-2d textures is currently unsupported!");let r=e,s=e.depthOrArrayLayers||1,i=e.usage&GPUTextureUsage.RENDER_ATTACHMENT;if(!i){let u={size:{width:Math.ceil(e.width/2),height:Math.ceil(e.height/2),depthOrArrayLayers:s},format:e.format,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.RENDER_ATTACHMENT,mipLevelCount:e.mipLevelCount-1};r=this.device.createTexture(u)}let o=this.device.createCommandEncoder({}),n=t.getBindGroupLayout(0);for(let u=0;u<s;++u){let c=e.createView({baseMipLevel:0,mipLevelCount:1,dimension:"2d",baseArrayLayer:u,arrayLayerCount:1}),l=i?1:0;for(let h=1;h<e.mipLevelCount;++h){let f=r.createView({baseMipLevel:l++,mipLevelCount:1,dimension:"2d",baseArrayLayer:u,arrayLayerCount:1}),p=o.beginRenderPass({colorAttachments:[{view:f,storeOp:"store",loadOp:"clear",clearValue:{r:0,g:0,b:0,a:0}}]}),_=this.device.createBindGroup({layout:n,entries:[{binding:0,resource:this.sampler},{binding:1,resource:c}]});p.setPipeline(t),p.setBindGroup(0,_),p.draw(3,1,0,0),p.end(),c=f}}if(!i){let u={width:Math.ceil(e.width/2),height:Math.ceil(e.height/2),depthOrArrayLayers:s};for(let c=1;c<e.mipLevelCount;++c)o.copyTextureToTexture({texture:r,mipLevel:c-1},{texture:e,mipLevel:c},u),u.width=Math.ceil(u.width/2),u.height=Math.ceil(u.height/2)}return this.device.queue.submit([o.finish()]),i||r.destroy(),e}};var I=class{constructor(e){this.managedTextures=[],this._gpuSources=Object.create(null),this._gpuSamplers=Object.create(null),this._bindGroupHash=Object.create(null),this._textureViewHash=Object.create(null),this._uploads={image:te,buffer:we,video:Le,compressed:Re},this._renderer=e,e.renderableGC.addManagedHash(this,"_gpuSources"),e.renderableGC.addManagedHash(this,"_gpuSamplers"),e.renderableGC.addManagedHash(this,"_bindGroupHash"),e.renderableGC.addManagedHash(this,"_textureViewHash")}contextChange(e){this._gpu=e}initSource(e){return this._gpuSources[e.uid]?this._gpuSources[e.uid]:this._initSource(e)}_initSource(e){if(e.autoGenerateMipmaps){let u=Math.max(e.pixelWidth,e.pixelHeight);e.mipLevelCount=Math.floor(Math.log2(u))+1}let t=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST;e.uploadMethodId!=="compressed"&&(t|=GPUTextureUsage.RENDER_ATTACHMENT,t|=GPUTextureUsage.COPY_SRC);let r=ae[e.format]||{blockBytes:4,blockWidth:1,blockHeight:1},s=Math.ceil(e.pixelWidth/r.blockWidth)*r.blockWidth,i=Math.ceil(e.pixelHeight/r.blockHeight)*r.blockHeight,o={label:e.label,size:{width:s,height:i},format:e.format,sampleCount:e.sampleCount,mipLevelCount:e.mipLevelCount,dimension:e.dimension,usage:t},n=this._gpuSources[e.uid]=this._gpu.device.createTexture(o);return this.managedTextures.includes(e)||(e.on("update",this.onSourceUpdate,this),e.on("resize",this.onSourceResize,this),e.on("destroy",this.onSourceDestroy,this),e.on("unload",this.onSourceUnload,this),e.on("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.push(e)),this.onSourceUpdate(e),n}onSourceUpdate(e){let t=this.getGpuSource(e);t&&(this._uploads[e.uploadMethodId]&&this._uploads[e.uploadMethodId].upload(e,t,this._gpu),e.autoGenerateMipmaps&&e.mipLevelCount>1&&this.onUpdateMipmaps(e))}onSourceUnload(e){let t=this._gpuSources[e.uid];t&&(this._gpuSources[e.uid]=null,t.destroy())}onUpdateMipmaps(e){this._mipmapGenerator||(this._mipmapGenerator=new re(this._gpu.device));let t=this.getGpuSource(e);this._mipmapGenerator.generateMipmap(t)}onSourceDestroy(e){e.off("update",this.onSourceUpdate,this),e.off("unload",this.onSourceUnload,this),e.off("destroy",this.onSourceDestroy,this),e.off("resize",this.onSourceResize,this),e.off("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.splice(this.managedTextures.indexOf(e),1),this.onSourceUnload(e)}onSourceResize(e){let t=this._gpuSources[e.uid];t?(t.width!==e.pixelWidth||t.height!==e.pixelHeight)&&(this._textureViewHash[e.uid]=null,this._bindGroupHash[e.uid]=null,this.onSourceUnload(e),this.initSource(e)):this.initSource(e)}_initSampler(e){return this._gpuSamplers[e._resourceId]=this._gpu.device.createSampler(e),this._gpuSamplers[e._resourceId]}getGpuSampler(e){return this._gpuSamplers[e._resourceId]||this._initSampler(e)}getGpuSource(e){return this._gpuSources[e.uid]||this.initSource(e)}getTextureBindGroup(e){return this._bindGroupHash[e.uid]??this._createTextureBindGroup(e)}_createTextureBindGroup(e){let t=e.source;return this._bindGroupHash[e.uid]=new V({0:t,1:t.style,2:new Y({uTextureMatrix:{type:"mat3x3<f32>",value:e.textureMatrix.mapCoord}})}),this._bindGroupHash[e.uid]}getTextureView(e){let t=e.source;return this._textureViewHash[t.uid]??this._createTextureView(t)}_createTextureView(e){return this._textureViewHash[e.uid]=this.getGpuSource(e).createView(),this._textureViewHash[e.uid]}generateCanvas(e){let t=this._renderer,r=t.gpu.device.createCommandEncoder(),s=b.get().createCanvas();s.width=e.source.pixelWidth,s.height=e.source.pixelHeight;let i=s.getContext("webgpu");return i.configure({device:t.gpu.device,usage:GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC,format:b.get().getNavigator().gpu.getPreferredCanvasFormat(),alphaMode:"premultiplied"}),r.copyTextureToTexture({texture:t.texture.getGpuSource(e.source),origin:{x:0,y:0}},{texture:i.getCurrentTexture()},{width:s.width,height:s.height}),t.gpu.device.queue.submit([r.finish()]),s}getPixels(e){let t=this.generateCanvas(e),r=ne.getOptimalCanvasAndContext(t.width,t.height),s=r.context;s.drawImage(t,0,0);let{width:i,height:o}=t,n=s.getImageData(0,0,i,o),u=new Uint8ClampedArray(n.data.buffer);return ne.returnCanvasAndContext(r),{pixels:u,width:i,height:o}}destroy(){this.managedTextures.slice().forEach(e=>this.onSourceDestroy(e)),this.managedTextures=null;for(let e of Object.keys(this._bindGroupHash)){let t=Number(e);this._bindGroupHash[t]?.destroy(),this._bindGroupHash[t]=null}this._renderer=null,this._gpu=null,this._mipmapGenerator=null,this._gpuSources=null,this._bindGroupHash=null,this._textureViewHash=null,this._gpuSamplers=null}};I.extension={type:[d.WebGPUSystem],name:"texture"};var We=[...be,D,w,B,R,M,I,O,z,F,H,E,L,U],Ve=[...ye,k],Ne=[v,C,T],De=[],ke=[],He=[];S.handleByNamedList(d.WebGPUSystem,De);S.handleByNamedList(d.WebGPUPipes,ke);S.handleByNamedList(d.WebGPUPipesAdaptor,He);S.add(...We,...Ve,...Ne);var Ae=class extends _e{constructor(){let e={name:"webgpu",type:fe.WEBGPU,systems:De,renderPipes:ke,renderPipeAdaptors:He};super(e)}};export{Ae as a};
|
|
42
|
-
//# sourceMappingURL=chunk-
|
|
42
|
+
//# sourceMappingURL=chunk-IAWJKNX5.js.map
|