@midscene/web 0.1.1 → 0.1.2

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.
Files changed (36) hide show
  1. package/dist/es/playwright-report.js +3 -22
  2. package/dist/lib/playwright-report.js +3 -22
  3. package/dist/visualizer-report/index.html +1 -0
  4. package/dist/visualizer-report/modern.config.json +196 -0
  5. package/dist/visualizer-report/route.json +36 -0
  6. package/dist/visualizer-report/static/css/index.c7751597.css +1 -0
  7. package/dist/visualizer-report/static/css/index.c7751597.css.map +1 -0
  8. package/dist/visualizer-report/static/js/915.d3f73af1.js +6 -0
  9. package/dist/visualizer-report/static/js/915.d3f73af1.js.LICENSE.txt +105 -0
  10. package/dist/visualizer-report/static/js/915.d3f73af1.js.map +1 -0
  11. package/dist/visualizer-report/static/js/async/16.8b96d0ce.js +151 -0
  12. package/dist/visualizer-report/static/js/async/16.8b96d0ce.js.map +1 -0
  13. package/dist/visualizer-report/static/js/async/212.b25a2c30.js +157 -0
  14. package/dist/visualizer-report/static/js/async/212.b25a2c30.js.map +1 -0
  15. package/dist/visualizer-report/static/js/async/353.78fcb703.js +147 -0
  16. package/dist/visualizer-report/static/js/async/353.78fcb703.js.map +1 -0
  17. package/dist/visualizer-report/static/js/async/399.84fa60a7.js +248 -0
  18. package/dist/visualizer-report/static/js/async/399.84fa60a7.js.map +1 -0
  19. package/dist/visualizer-report/static/js/async/453.782b249a.js +41 -0
  20. package/dist/visualizer-report/static/js/async/453.782b249a.js.map +1 -0
  21. package/dist/visualizer-report/static/js/async/544.ee973964.js +1 -0
  22. package/dist/visualizer-report/static/js/async/544.ee973964.js.map +1 -0
  23. package/dist/visualizer-report/static/js/async/983.ef821e39.js +1 -0
  24. package/dist/visualizer-report/static/js/index.ae9a86c5.js +1 -0
  25. package/dist/visualizer-report/static/js/index.ae9a86c5.js.map +1 -0
  26. package/dist/visualizer-report/static/js/lib-antd.55d65804.js +189 -0
  27. package/dist/visualizer-report/static/js/lib-antd.55d65804.js.map +1 -0
  28. package/dist/visualizer-report/static/js/lib-polyfill.3da3e38e.js +1 -0
  29. package/dist/visualizer-report/static/js/lib-polyfill.3da3e38e.js.map +1 -0
  30. package/dist/visualizer-report/static/js/lib-react.c011fc71.js +2 -0
  31. package/dist/visualizer-report/static/js/lib-react.c011fc71.js.LICENSE.txt +39 -0
  32. package/dist/visualizer-report/static/js/lib-react.c011fc71.js.map +1 -0
  33. package/dist/visualizer-report/static/js/lib-router.226970ff.js +2 -0
  34. package/dist/visualizer-report/static/js/lib-router.226970ff.js.LICENSE.txt +32 -0
  35. package/dist/visualizer-report/static/js/lib-router.226970ff.js.map +1 -0
  36. package/package.json +4 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static/js/async/212.b25a2c30.js","sources":["webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/app/ResizePlugin.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/app/TickerPlugin.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/app/init.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/FilterPipe.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/bounds/getFastGlobalBounds.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/FilterSystem.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/bounds/getRenderableBounds.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/init.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/shader/batchSamplersUniformGroup.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/texture/CanvasPool.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/graphics/shared/GraphicsPipe.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/graphics/init.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh/shared/MeshPipe.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh/init.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh/shared/BatchableMesh.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh/shared/MeshGeometry.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh-plane/PlaneGeometry.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-nine-slice/NineSliceGeometry.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-nine-slice/NineSliceSpritePipe.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-nine-slice/init.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/shader/TilingSpriteShader.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/shader/tilingBit.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/utils/QuadGeometry.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/TilingSpritePipe.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/utils/setUvs.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/utils/applyMatrix.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/utils/setPositions.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/init.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/AbstractBitmapFont.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/utils/resolveCharacters.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/DynamicBitmapFont.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/utils/getBitmapTextLayout.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/BitmapFontManager.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/BitmapFont.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/asset/bitmapFontTextParser.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/asset/bitmapFontXMLParser.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/asset/bitmapFontXMLStringParser.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/asset/loadBitmapFont.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/sdfShader/shader-bits/localUniformMSDFBit.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/sdfShader/shader-bits/mSDFBit.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/sdfShader/SdfShader.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/BitmapTextPipe.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/init.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/measureHtmlText.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/HTMLTextPipe.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/HTMLTextRenderData.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/textStyleToCSS.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/HtmlTextStyle.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/loadFontAsBase64.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/loadFontCSS.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/getFontCss.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/HTMLTextSystem.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/loadSVGImage.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/extractFontFamilies.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/getSVGUrl.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/utils/browser/isSafari.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/getTemporaryCanvasFromImage.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/init.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/canvas/utils/getCanvasFillStyle.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/canvas/CanvasTextPipe.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/utils/canvas/getCanvasBoundingBox.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/canvas/CanvasTextSystem.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/init.mjs","webpack://@midscene/visualizer-report/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/utils/getPo2TextureFromSource.mjs"],"sourcesContent":["import { ExtensionType } from '../extensions/Extensions.mjs';\n\n\"use strict\";\nclass ResizePlugin {\n /**\n * Initialize the plugin with scope of application instance\n * @static\n * @private\n * @param {object} [options] - See application options\n */\n static init(options) {\n Object.defineProperty(\n this,\n \"resizeTo\",\n /**\n * The HTML element or window to automatically resize the\n * renderer's view element to match width and height.\n * @member {Window|HTMLElement}\n * @name resizeTo\n * @memberof app.Application#\n */\n {\n set(dom) {\n globalThis.removeEventListener(\"resize\", this.queueResize);\n this._resizeTo = dom;\n if (dom) {\n globalThis.addEventListener(\"resize\", this.queueResize);\n this.resize();\n }\n },\n get() {\n return this._resizeTo;\n }\n }\n );\n this.queueResize = () => {\n if (!this._resizeTo) {\n return;\n }\n this._cancelResize();\n this._resizeId = requestAnimationFrame(() => this.resize());\n };\n this._cancelResize = () => {\n if (this._resizeId) {\n cancelAnimationFrame(this._resizeId);\n this._resizeId = null;\n }\n };\n this.resize = () => {\n if (!this._resizeTo) {\n return;\n }\n this._cancelResize();\n let width;\n let height;\n if (this._resizeTo === globalThis.window) {\n width = globalThis.innerWidth;\n height = globalThis.innerHeight;\n } else {\n const { clientWidth, clientHeight } = this._resizeTo;\n width = clientWidth;\n height = clientHeight;\n }\n this.renderer.resize(width, height);\n this.render();\n };\n this._resizeId = null;\n this._resizeTo = null;\n this.resizeTo = options.resizeTo || null;\n }\n /**\n * Clean up the ticker, scoped to application\n * @static\n * @private\n */\n static destroy() {\n globalThis.removeEventListener(\"resize\", this.queueResize);\n this._cancelResize();\n this._cancelResize = null;\n this.queueResize = null;\n this.resizeTo = null;\n this.resize = null;\n }\n}\n/** @ignore */\nResizePlugin.extension = ExtensionType.Application;\n\nexport { ResizePlugin };\n//# sourceMappingURL=ResizePlugin.mjs.map\n","import { ExtensionType } from '../extensions/Extensions.mjs';\nimport { UPDATE_PRIORITY } from '../ticker/const.mjs';\nimport { Ticker } from '../ticker/Ticker.mjs';\n\n\"use strict\";\nclass TickerPlugin {\n /**\n * Initialize the plugin with scope of application instance\n * @static\n * @private\n * @param {object} [options] - See application options\n */\n static init(options) {\n options = Object.assign({\n autoStart: true,\n sharedTicker: false\n }, options);\n Object.defineProperty(\n this,\n \"ticker\",\n {\n set(ticker) {\n if (this._ticker) {\n this._ticker.remove(this.render, this);\n }\n this._ticker = ticker;\n if (ticker) {\n ticker.add(this.render, this, UPDATE_PRIORITY.LOW);\n }\n },\n get() {\n return this._ticker;\n }\n }\n );\n this.stop = () => {\n this._ticker.stop();\n };\n this.start = () => {\n this._ticker.start();\n };\n this._ticker = null;\n this.ticker = options.sharedTicker ? Ticker.shared : new Ticker();\n if (options.autoStart) {\n this.start();\n }\n }\n /**\n * Clean up the ticker, scoped to application.\n * @static\n * @private\n */\n static destroy() {\n if (this._ticker) {\n const oldTicker = this._ticker;\n this.ticker = null;\n oldTicker.destroy();\n }\n }\n}\n/** @ignore */\nTickerPlugin.extension = ExtensionType.Application;\n\nexport { TickerPlugin };\n//# sourceMappingURL=TickerPlugin.mjs.map\n","import { extensions } from '../extensions/Extensions.mjs';\nimport { ResizePlugin } from './ResizePlugin.mjs';\nimport { TickerPlugin } from './TickerPlugin.mjs';\n\n\"use strict\";\nextensions.add(ResizePlugin);\nextensions.add(TickerPlugin);\n//# sourceMappingURL=init.mjs.map\n","import { ExtensionType } from '../extensions/Extensions.mjs';\n\n\"use strict\";\nclass FilterPipe {\n constructor(renderer) {\n this._renderer = renderer;\n }\n push(filterEffect, container, instructionSet) {\n const renderPipes = this._renderer.renderPipes;\n renderPipes.batch.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"filter\",\n canBundle: false,\n action: \"pushFilter\",\n container,\n filterEffect\n });\n }\n pop(_filterEffect, _container, instructionSet) {\n this._renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"filter\",\n action: \"popFilter\",\n canBundle: false\n });\n }\n execute(instruction) {\n if (instruction.action === \"pushFilter\") {\n this._renderer.filter.push(instruction);\n } else if (instruction.action === \"popFilter\") {\n this._renderer.filter.pop();\n }\n }\n destroy() {\n this._renderer = null;\n }\n}\nFilterPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"filter\"\n};\n\nexport { FilterPipe };\n//# sourceMappingURL=FilterPipe.mjs.map\n","import { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { boundsPool } from './utils/matrixAndBoundsPool.mjs';\n\n\"use strict\";\nconst tempMatrix = new Matrix();\nfunction getFastGlobalBounds(target, bounds) {\n bounds.clear();\n _getGlobalBoundsRecursive(target, bounds);\n if (!bounds.isValid) {\n bounds.set(0, 0, 0, 0);\n }\n if (!target.isRenderGroupRoot) {\n bounds.applyMatrix(target.renderGroup.worldTransform);\n } else {\n bounds.applyMatrix(target.renderGroup.localTransform);\n }\n return bounds;\n}\nfunction _getGlobalBoundsRecursive(target, bounds) {\n if (target.localDisplayStatus !== 7 || !target.measurable) {\n return;\n }\n const manageEffects = !!target.effects.length;\n let localBounds = bounds;\n if (target.isRenderGroupRoot || manageEffects) {\n localBounds = boundsPool.get().clear();\n }\n if (target.boundsArea) {\n bounds.addRect(target.boundsArea, target.worldTransform);\n } else {\n if (target.renderPipeId) {\n const viewBounds = target.bounds;\n localBounds.addFrame(\n viewBounds.minX,\n viewBounds.minY,\n viewBounds.maxX,\n viewBounds.maxY,\n target.groupTransform\n );\n }\n const children = target.children;\n for (let i = 0; i < children.length; i++) {\n _getGlobalBoundsRecursive(children[i], localBounds);\n }\n }\n if (manageEffects) {\n let advanced = false;\n for (let i = 0; i < target.effects.length; i++) {\n if (target.effects[i].addBounds) {\n if (!advanced) {\n advanced = true;\n localBounds.applyMatrix(target.renderGroup.worldTransform);\n }\n target.effects[i].addBounds(localBounds, true);\n }\n }\n if (advanced) {\n localBounds.applyMatrix(target.renderGroup.worldTransform.copyTo(tempMatrix).invert());\n bounds.addBounds(localBounds, target.relativeGroupTransform);\n }\n bounds.addBounds(localBounds);\n boundsPool.return(localBounds);\n } else if (target.isRenderGroupRoot) {\n bounds.addBounds(localBounds, target.relativeGroupTransform);\n boundsPool.return(localBounds);\n }\n}\n\nexport { _getGlobalBoundsRecursive, getFastGlobalBounds };\n//# sourceMappingURL=getFastGlobalBounds.mjs.map\n","import { ExtensionType } from '../extensions/Extensions.mjs';\nimport { Matrix } from '../maths/matrix/Matrix.mjs';\nimport { Point } from '../maths/point/Point.mjs';\nimport { BindGroup } from '../rendering/renderers/gpu/shader/BindGroup.mjs';\nimport { Geometry } from '../rendering/renderers/shared/geometry/Geometry.mjs';\nimport { UniformGroup } from '../rendering/renderers/shared/shader/UniformGroup.mjs';\nimport { Texture } from '../rendering/renderers/shared/texture/Texture.mjs';\nimport { TexturePool } from '../rendering/renderers/shared/texture/TexturePool.mjs';\nimport { RendererType } from '../rendering/renderers/types.mjs';\nimport { Bounds } from '../scene/container/bounds/Bounds.mjs';\nimport { getFastGlobalBounds } from '../scene/container/bounds/getFastGlobalBounds.mjs';\nimport { getGlobalRenderableBounds } from '../scene/container/bounds/getRenderableBounds.mjs';\nimport { warn } from '../utils/logging/warn.mjs';\n\n\"use strict\";\nconst quadGeometry = new Geometry({\n attributes: {\n aPosition: {\n buffer: new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]),\n location: 0,\n format: \"float32x2\",\n stride: 2 * 4,\n offset: 0\n }\n },\n indexBuffer: new Uint32Array([0, 1, 2, 0, 2, 3])\n});\nclass FilterSystem {\n constructor(renderer) {\n this._filterStackIndex = 0;\n this._filterStack = [];\n this._filterGlobalUniforms = new UniformGroup({\n uInputSize: { value: new Float32Array(4), type: \"vec4<f32>\" },\n uInputPixel: { value: new Float32Array(4), type: \"vec4<f32>\" },\n uInputClamp: { value: new Float32Array(4), type: \"vec4<f32>\" },\n uOutputFrame: { value: new Float32Array(4), type: \"vec4<f32>\" },\n uGlobalFrame: { value: new Float32Array(4), type: \"vec4<f32>\" },\n uOutputTexture: { value: new Float32Array(4), type: \"vec4<f32>\" }\n });\n this._globalFilterBindGroup = new BindGroup({});\n this.renderer = renderer;\n }\n /**\n * The back texture of the currently active filter. Requires the filter to have `blendRequired` set to true.\n * @readonly\n */\n get activeBackTexture() {\n return this._activeFilterData?.backTexture;\n }\n push(instruction) {\n const renderer = this.renderer;\n const filters = instruction.filterEffect.filters;\n if (!this._filterStack[this._filterStackIndex]) {\n this._filterStack[this._filterStackIndex] = this._getFilterData();\n }\n const filterData = this._filterStack[this._filterStackIndex];\n this._filterStackIndex++;\n if (filters.length === 0) {\n filterData.skip = true;\n return;\n }\n const bounds = filterData.bounds;\n if (instruction.renderables) {\n getGlobalRenderableBounds(instruction.renderables, bounds);\n } else if (instruction.filterEffect.filterArea) {\n bounds.clear();\n bounds.addRect(instruction.filterEffect.filterArea);\n bounds.applyMatrix(instruction.container.worldTransform);\n } else {\n getFastGlobalBounds(instruction.container, bounds);\n }\n const colorTextureSource = renderer.renderTarget.rootRenderTarget.colorTexture.source;\n let resolution = colorTextureSource._resolution;\n let padding = 0;\n let antialias = colorTextureSource.antialias;\n let blendRequired = false;\n let enabled = false;\n for (let i = 0; i < filters.length; i++) {\n const filter = filters[i];\n resolution = Math.min(resolution, filter.resolution);\n padding += filter.padding;\n if (filter.antialias !== \"inherit\") {\n if (filter.antialias === \"on\") {\n antialias = true;\n } else {\n antialias = false;\n }\n }\n const isCompatible = !!(filter.compatibleRenderers & renderer.type);\n if (!isCompatible) {\n enabled = false;\n break;\n }\n if (filter.blendRequired && !(renderer.backBuffer?.useBackBuffer ?? true)) {\n warn(\"Blend filter requires backBuffer on WebGL renderer to be enabled. Set `useBackBuffer: true` in the renderer options.\");\n enabled = false;\n break;\n }\n enabled = filter.enabled || enabled;\n blendRequired = blendRequired || filter.blendRequired;\n }\n if (!enabled) {\n filterData.skip = true;\n return;\n }\n const viewPort = renderer.renderTarget.rootViewPort;\n bounds.scale(resolution).fitBounds(0, viewPort.width, 0, viewPort.height).scale(1 / resolution).pad(padding).ceil();\n if (!bounds.isPositive) {\n filterData.skip = true;\n return;\n }\n filterData.skip = false;\n filterData.bounds = bounds;\n filterData.blendRequired = blendRequired;\n filterData.container = instruction.container;\n filterData.filterEffect = instruction.filterEffect;\n filterData.previousRenderSurface = renderer.renderTarget.renderSurface;\n filterData.inputTexture = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n resolution,\n antialias\n );\n renderer.renderTarget.bind(filterData.inputTexture, true);\n renderer.globalUniforms.push({\n offset: bounds\n });\n }\n pop() {\n const renderer = this.renderer;\n this._filterStackIndex--;\n const filterData = this._filterStack[this._filterStackIndex];\n if (filterData.skip) {\n return;\n }\n this._activeFilterData = filterData;\n const inputTexture = filterData.inputTexture;\n const bounds = filterData.bounds;\n let backTexture = Texture.EMPTY;\n renderer.renderTarget.finishRenderPass();\n if (filterData.blendRequired) {\n const previousBounds = this._filterStackIndex > 0 ? this._filterStack[this._filterStackIndex - 1].bounds : null;\n const renderTarget = renderer.renderTarget.getRenderTarget(filterData.previousRenderSurface);\n backTexture = this.getBackTexture(renderTarget, bounds, previousBounds);\n }\n filterData.backTexture = backTexture;\n const filters = filterData.filterEffect.filters;\n this._globalFilterBindGroup.setResource(inputTexture.source.style, 2);\n this._globalFilterBindGroup.setResource(backTexture.source, 3);\n renderer.globalUniforms.pop();\n if (filters.length === 1) {\n filters[0].apply(this, inputTexture, filterData.previousRenderSurface, false);\n TexturePool.returnTexture(inputTexture);\n } else {\n let flip = filterData.inputTexture;\n let flop = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n flip.source._resolution,\n false\n );\n let i = 0;\n for (i = 0; i < filters.length - 1; ++i) {\n const filter = filters[i];\n filter.apply(this, flip, flop, true);\n const t = flip;\n flip = flop;\n flop = t;\n }\n filters[i].apply(this, flip, filterData.previousRenderSurface, false);\n TexturePool.returnTexture(flip);\n TexturePool.returnTexture(flop);\n }\n if (filterData.blendRequired) {\n TexturePool.returnTexture(backTexture);\n }\n }\n getBackTexture(lastRenderSurface, bounds, previousBounds) {\n const backgroundResolution = lastRenderSurface.colorTexture.source._resolution;\n const backTexture = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n backgroundResolution,\n false\n );\n let x = bounds.minX;\n let y = bounds.minY;\n if (previousBounds) {\n x -= previousBounds.minX;\n y -= previousBounds.minY;\n }\n x = Math.floor(x * backgroundResolution);\n y = Math.floor(y * backgroundResolution);\n const width = Math.ceil(bounds.width * backgroundResolution);\n const height = Math.ceil(bounds.height * backgroundResolution);\n this.renderer.renderTarget.copyToTexture(\n lastRenderSurface,\n backTexture,\n { x, y },\n { width, height },\n { x: 0, y: 0 }\n );\n return backTexture;\n }\n applyFilter(filter, input, output, clear) {\n const renderer = this.renderer;\n const filterData = this._filterStack[this._filterStackIndex];\n const bounds = filterData.bounds;\n const offset = Point.shared;\n const previousRenderSurface = filterData.previousRenderSurface;\n const isFinalTarget = previousRenderSurface === output;\n let resolution = this.renderer.renderTarget.rootRenderTarget.colorTexture.source._resolution;\n let currentIndex = this._filterStackIndex - 1;\n while (currentIndex > 0 && this._filterStack[currentIndex].skip) {\n --currentIndex;\n }\n if (currentIndex > 0) {\n resolution = this._filterStack[currentIndex].inputTexture.source._resolution;\n }\n const filterUniforms = this._filterGlobalUniforms;\n const uniforms = filterUniforms.uniforms;\n const outputFrame = uniforms.uOutputFrame;\n const inputSize = uniforms.uInputSize;\n const inputPixel = uniforms.uInputPixel;\n const inputClamp = uniforms.uInputClamp;\n const globalFrame = uniforms.uGlobalFrame;\n const outputTexture = uniforms.uOutputTexture;\n if (isFinalTarget) {\n let lastIndex = this._filterStackIndex;\n while (lastIndex > 0) {\n lastIndex--;\n const filterData2 = this._filterStack[this._filterStackIndex - 1];\n if (!filterData2.skip) {\n offset.x = filterData2.bounds.minX;\n offset.y = filterData2.bounds.minY;\n break;\n }\n }\n outputFrame[0] = bounds.minX - offset.x;\n outputFrame[1] = bounds.minY - offset.y;\n } else {\n outputFrame[0] = 0;\n outputFrame[1] = 0;\n }\n outputFrame[2] = input.frame.width;\n outputFrame[3] = input.frame.height;\n inputSize[0] = input.source.width;\n inputSize[1] = input.source.height;\n inputSize[2] = 1 / inputSize[0];\n inputSize[3] = 1 / inputSize[1];\n inputPixel[0] = input.source.pixelWidth;\n inputPixel[1] = input.source.pixelHeight;\n inputPixel[2] = 1 / inputPixel[0];\n inputPixel[3] = 1 / inputPixel[1];\n inputClamp[0] = 0.5 * inputPixel[2];\n inputClamp[1] = 0.5 * inputPixel[3];\n inputClamp[2] = input.frame.width * inputSize[2] - 0.5 * inputPixel[2];\n inputClamp[3] = input.frame.height * inputSize[3] - 0.5 * inputPixel[3];\n const rootTexture = this.renderer.renderTarget.rootRenderTarget.colorTexture;\n globalFrame[0] = offset.x * resolution;\n globalFrame[1] = offset.y * resolution;\n globalFrame[2] = rootTexture.source.width * resolution;\n globalFrame[3] = rootTexture.source.height * resolution;\n const renderTarget = this.renderer.renderTarget.getRenderTarget(output);\n renderer.renderTarget.bind(output, !!clear);\n if (output instanceof Texture) {\n outputTexture[0] = output.frame.width;\n outputTexture[1] = output.frame.height;\n } else {\n outputTexture[0] = renderTarget.width;\n outputTexture[1] = renderTarget.height;\n }\n outputTexture[2] = renderTarget.isRoot ? -1 : 1;\n filterUniforms.update();\n if (renderer.renderPipes.uniformBatch) {\n const batchUniforms = renderer.renderPipes.uniformBatch.getUboResource(filterUniforms);\n this._globalFilterBindGroup.setResource(batchUniforms, 0);\n } else {\n this._globalFilterBindGroup.setResource(filterUniforms, 0);\n }\n this._globalFilterBindGroup.setResource(input.source, 1);\n this._globalFilterBindGroup.setResource(input.source.style, 2);\n filter.groups[0] = this._globalFilterBindGroup;\n renderer.encoder.draw({\n geometry: quadGeometry,\n shader: filter,\n state: filter._state,\n topology: \"triangle-list\"\n });\n if (renderer.type === RendererType.WEBGL) {\n renderer.renderTarget.finishRenderPass();\n }\n }\n _getFilterData() {\n return {\n skip: false,\n inputTexture: null,\n bounds: new Bounds(),\n container: null,\n filterEffect: null,\n blendRequired: false,\n previousRenderSurface: null\n };\n }\n /**\n * Multiply _input normalized coordinates_ to this matrix to get _sprite texture normalized coordinates_.\n *\n * Use `outputMatrix * vTextureCoord` in the shader.\n * @param outputMatrix - The matrix to output to.\n * @param {Sprite} sprite - The sprite to map to.\n * @returns The mapped matrix.\n */\n calculateSpriteMatrix(outputMatrix, sprite) {\n const data = this._activeFilterData;\n const mappedMatrix = outputMatrix.set(\n data.inputTexture._source.width,\n 0,\n 0,\n data.inputTexture._source.height,\n data.bounds.minX,\n data.bounds.minY\n );\n const worldTransform = sprite.worldTransform.copyTo(Matrix.shared);\n worldTransform.invert();\n mappedMatrix.prepend(worldTransform);\n mappedMatrix.scale(\n 1 / sprite.texture.frame.width,\n 1 / sprite.texture.frame.height\n );\n mappedMatrix.translate(sprite.anchor.x, sprite.anchor.y);\n return mappedMatrix;\n }\n}\n/** @ignore */\nFilterSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem\n ],\n name: \"filter\"\n};\n\nexport { FilterSystem };\n//# sourceMappingURL=FilterSystem.mjs.map\n","\"use strict\";\nfunction getGlobalRenderableBounds(renderables, bounds) {\n bounds.clear();\n const tempMatrix = bounds.matrix;\n for (let i = 0; i < renderables.length; i++) {\n const renderable = renderables[i];\n if (renderable.globalDisplayStatus < 7) {\n continue;\n }\n bounds.matrix = renderable.worldTransform;\n renderable.addBounds(bounds);\n }\n bounds.matrix = tempMatrix;\n return bounds;\n}\n\nexport { getGlobalRenderableBounds };\n//# sourceMappingURL=getRenderableBounds.mjs.map\n","import { extensions } from '../extensions/Extensions.mjs';\nimport { FilterPipe } from './FilterPipe.mjs';\nimport { FilterSystem } from './FilterSystem.mjs';\n\n\"use strict\";\nextensions.add(FilterSystem);\nextensions.add(FilterPipe);\n//# sourceMappingURL=init.mjs.map\n","import { MAX_TEXTURES } from '../../../batcher/shared/const.mjs';\nimport { UniformGroup } from '../../shared/shader/UniformGroup.mjs';\n\n\"use strict\";\nconst sampleValues = new Int32Array(MAX_TEXTURES);\nfor (let i = 0; i < MAX_TEXTURES; i++) {\n sampleValues[i] = i;\n}\nconst batchSamplersUniformGroup = new UniformGroup({\n uTextures: { value: sampleValues, type: `i32`, size: MAX_TEXTURES }\n}, { isStatic: true });\n\nexport { batchSamplersUniformGroup };\n//# sourceMappingURL=batchSamplersUniformGroup.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { nextPow2 } from '../../../../maths/misc/pow2.mjs';\n\n\"use strict\";\nclass CanvasPoolClass {\n constructor(canvasOptions) {\n this._canvasPool = /* @__PURE__ */ Object.create(null);\n this.canvasOptions = canvasOptions || {};\n this.enableFullScreen = false;\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 _createCanvasAndContext(pixelWidth, pixelHeight) {\n const canvas = DOMAdapter.get().createCanvas();\n canvas.width = pixelWidth;\n canvas.height = pixelHeight;\n const context = canvas.getContext(\"2d\");\n return { canvas, context };\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 getOptimalCanvasAndContext(minWidth, minHeight, resolution = 1) {\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 const key = (minWidth << 17) + (minHeight << 1);\n if (!this._canvasPool[key]) {\n this._canvasPool[key] = [];\n }\n let canvasAndContext = this._canvasPool[key].pop();\n if (!canvasAndContext) {\n canvasAndContext = this._createCanvasAndContext(minWidth, minHeight);\n }\n return canvasAndContext;\n }\n /**\n * Place a render texture back into the pool.\n * @param canvasAndContext\n */\n returnCanvasAndContext(canvasAndContext) {\n const { width, height } = canvasAndContext.canvas;\n const key = (width << 17) + (height << 1);\n this._canvasPool[key].push(canvasAndContext);\n }\n clear() {\n this._canvasPool = {};\n }\n}\nconst CanvasPool = new CanvasPoolClass();\n\nexport { CanvasPool, CanvasPoolClass };\n//# sourceMappingURL=CanvasPool.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { State } from '../../../rendering/renderers/shared/state/State.mjs';\nimport { BigPool } from '../../../utils/pool/PoolGroup.mjs';\nimport { color32BitToUniform } from '../gpu/colorToUniform.mjs';\nimport { BatchableGraphics } from './BatchableGraphics.mjs';\n\n\"use strict\";\nclass GraphicsPipe {\n constructor(renderer, adaptor) {\n this.state = State.for2d();\n // batchable graphics list, used to render batches\n this._graphicsBatchesHash = /* @__PURE__ */ Object.create(null);\n this.renderer = renderer;\n this._adaptor = adaptor;\n this._adaptor.init();\n }\n validateRenderable(graphics) {\n const context = graphics.context;\n const wasBatched = !!this._graphicsBatchesHash[graphics.uid];\n const gpuContext = this.renderer.graphicsContext.updateGpuContext(context);\n if (gpuContext.isBatchable || wasBatched !== gpuContext.isBatchable) {\n return true;\n }\n return false;\n }\n addRenderable(graphics, instructionSet) {\n const gpuContext = this.renderer.graphicsContext.updateGpuContext(graphics.context);\n if (graphics._didGraphicsUpdate) {\n graphics._didGraphicsUpdate = false;\n this._rebuild(graphics);\n }\n if (gpuContext.isBatchable) {\n this._addToBatcher(graphics, instructionSet);\n } else {\n this.renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add(graphics);\n }\n }\n updateRenderable(graphics) {\n const batches = this._graphicsBatchesHash[graphics.uid];\n if (batches) {\n for (let i = 0; i < batches.length; i++) {\n const batch = batches[i];\n batch.batcher.updateElement(batch);\n }\n }\n }\n destroyRenderable(graphics) {\n if (this._graphicsBatchesHash[graphics.uid]) {\n this._removeBatchForRenderable(graphics.uid);\n }\n }\n execute(graphics) {\n if (!graphics.isRenderable)\n return;\n const renderer = this.renderer;\n const context = graphics.context;\n const contextSystem = renderer.graphicsContext;\n if (!contextSystem.getGpuContext(context).batches.length) {\n return;\n }\n const shader = context.customShader || this._adaptor.shader;\n this.state.blendMode = graphics.groupBlendMode;\n const localUniforms = shader.resources.localUniforms.uniforms;\n localUniforms.uTransformMatrix = graphics.groupTransform;\n localUniforms.uRound = renderer._roundPixels | graphics._roundPixels;\n color32BitToUniform(\n graphics.groupColorAlpha,\n localUniforms.uColor,\n 0\n );\n this._adaptor.execute(this, graphics);\n }\n _rebuild(graphics) {\n const wasBatched = !!this._graphicsBatchesHash[graphics.uid];\n const gpuContext = this.renderer.graphicsContext.updateGpuContext(graphics.context);\n if (wasBatched) {\n this._removeBatchForRenderable(graphics.uid);\n }\n if (gpuContext.isBatchable) {\n this._initBatchesForRenderable(graphics);\n }\n graphics.batched = gpuContext.isBatchable;\n }\n _addToBatcher(graphics, instructionSet) {\n const batchPipe = this.renderer.renderPipes.batch;\n const batches = this._getBatchesForRenderable(graphics);\n for (let i = 0; i < batches.length; i++) {\n const batch = batches[i];\n batchPipe.addToBatch(batch, instructionSet);\n }\n }\n _getBatchesForRenderable(graphics) {\n return this._graphicsBatchesHash[graphics.uid] || this._initBatchesForRenderable(graphics);\n }\n _initBatchesForRenderable(graphics) {\n const context = graphics.context;\n const gpuContext = this.renderer.graphicsContext.getGpuContext(context);\n const roundPixels = this.renderer._roundPixels | graphics._roundPixels;\n const batches = gpuContext.batches.map((batch) => {\n const batchClone = BigPool.get(BatchableGraphics);\n batch.copyTo(batchClone);\n batchClone.renderable = graphics;\n batchClone.roundPixels = roundPixels;\n return batchClone;\n });\n this._graphicsBatchesHash[graphics.uid] = batches;\n graphics.on(\"destroyed\", () => {\n this.destroyRenderable(graphics);\n });\n return batches;\n }\n _removeBatchForRenderable(graphicsUid) {\n this._graphicsBatchesHash[graphicsUid].forEach((batch) => {\n BigPool.return(batch);\n });\n this._graphicsBatchesHash[graphicsUid] = null;\n }\n destroy() {\n this.renderer = null;\n this._adaptor.destroy();\n this._adaptor = null;\n this.state = null;\n for (const i in this._graphicsBatchesHash) {\n this._removeBatchForRenderable(i);\n }\n this._graphicsBatchesHash = null;\n }\n}\n/** @ignore */\nGraphicsPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"graphics\"\n};\n\nexport { GraphicsPipe };\n//# sourceMappingURL=GraphicsPipe.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { GraphicsContextSystem } from './shared/GraphicsContextSystem.mjs';\nimport { GraphicsPipe } from './shared/GraphicsPipe.mjs';\n\n\"use strict\";\nextensions.add(GraphicsPipe);\nextensions.add(GraphicsContextSystem);\n//# sourceMappingURL=init.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { BindGroup } from '../../../rendering/renderers/gpu/shader/BindGroup.mjs';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup.mjs';\nimport { BigPool } from '../../../utils/pool/PoolGroup.mjs';\nimport { color32BitToUniform } from '../../graphics/gpu/colorToUniform.mjs';\nimport { BatchableMesh } from './BatchableMesh.mjs';\n\n\"use strict\";\nclass MeshPipe {\n constructor(renderer, adaptor) {\n this.localUniforms = new UniformGroup({\n uTransformMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: \"vec4<f32>\" },\n uRound: { value: 0, type: \"f32\" }\n });\n this.localUniformsBindGroup = new BindGroup({\n 0: this.localUniforms\n });\n this._meshDataHash = /* @__PURE__ */ Object.create(null);\n this._gpuBatchableMeshHash = /* @__PURE__ */ Object.create(null);\n this.renderer = renderer;\n this._adaptor = adaptor;\n this._adaptor.init();\n }\n validateRenderable(mesh) {\n const meshData = this._getMeshData(mesh);\n const wasBatched = meshData.batched;\n const isBatched = mesh.batched;\n meshData.batched = isBatched;\n if (wasBatched !== isBatched) {\n return true;\n } else if (isBatched) {\n const geometry = mesh._geometry;\n if (geometry.indices.length !== meshData.indexSize || geometry.positions.length !== meshData.vertexSize) {\n meshData.indexSize = geometry.indices.length;\n meshData.vertexSize = geometry.positions.length;\n return true;\n }\n const batchableMesh = this._getBatchableMesh(mesh);\n const texture = mesh.texture;\n if (batchableMesh.texture._source !== texture._source) {\n if (batchableMesh.texture._source !== texture._source) {\n return !batchableMesh.batcher.checkAndUpdateTexture(batchableMesh, texture);\n }\n }\n }\n return false;\n }\n addRenderable(mesh, instructionSet) {\n const batcher = this.renderer.renderPipes.batch;\n const { batched } = this._getMeshData(mesh);\n if (batched) {\n const gpuBatchableMesh = this._getBatchableMesh(mesh);\n gpuBatchableMesh.texture = mesh._texture;\n gpuBatchableMesh.geometry = mesh._geometry;\n batcher.addToBatch(gpuBatchableMesh);\n } else {\n batcher.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"mesh\",\n mesh\n });\n }\n }\n updateRenderable(mesh) {\n if (mesh.batched) {\n const gpuBatchableMesh = this._gpuBatchableMeshHash[mesh.uid];\n gpuBatchableMesh.texture = mesh._texture;\n gpuBatchableMesh.geometry = mesh._geometry;\n gpuBatchableMesh.batcher.updateElement(gpuBatchableMesh);\n }\n }\n destroyRenderable(mesh) {\n this._meshDataHash[mesh.uid] = null;\n const gpuMesh = this._gpuBatchableMeshHash[mesh.uid];\n if (gpuMesh) {\n BigPool.return(gpuMesh);\n this._gpuBatchableMeshHash[mesh.uid] = null;\n }\n }\n execute({ mesh }) {\n if (!mesh.isRenderable)\n return;\n mesh.state.blendMode = mesh.groupBlendMode;\n const localUniforms = this.localUniforms;\n localUniforms.uniforms.uTransformMatrix = mesh.groupTransform;\n localUniforms.uniforms.uRound = this.renderer._roundPixels | mesh._roundPixels;\n localUniforms.update();\n color32BitToUniform(\n mesh.groupColorAlpha,\n localUniforms.uniforms.uColor,\n 0\n );\n this._adaptor.execute(this, mesh);\n }\n _getMeshData(mesh) {\n return this._meshDataHash[mesh.uid] || this._initMeshData(mesh);\n }\n _initMeshData(mesh) {\n this._meshDataHash[mesh.uid] = {\n batched: mesh.batched,\n indexSize: mesh._geometry.indices?.length,\n vertexSize: mesh._geometry.positions?.length\n };\n mesh.on(\"destroyed\", () => {\n this.destroyRenderable(mesh);\n });\n return this._meshDataHash[mesh.uid];\n }\n _getBatchableMesh(mesh) {\n return this._gpuBatchableMeshHash[mesh.uid] || this._initBatchableMesh(mesh);\n }\n _initBatchableMesh(mesh) {\n const gpuMesh = BigPool.get(BatchableMesh);\n gpuMesh.mesh = mesh;\n gpuMesh.texture = mesh._texture;\n gpuMesh.roundPixels = this.renderer._roundPixels | mesh._roundPixels;\n this._gpuBatchableMeshHash[mesh.uid] = gpuMesh;\n gpuMesh.mesh = mesh;\n return gpuMesh;\n }\n destroy() {\n for (const i in this._gpuBatchableMeshHash) {\n if (this._gpuBatchableMeshHash[i]) {\n BigPool.return(this._gpuBatchableMeshHash[i]);\n }\n }\n this._gpuBatchableMeshHash = null;\n this._meshDataHash = null;\n this.localUniforms = null;\n this.localUniformsBindGroup = null;\n this._adaptor.destroy();\n this._adaptor = null;\n this.renderer = null;\n }\n}\n/** @ignore */\nMeshPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"mesh\"\n};\n\nexport { MeshPipe };\n//# sourceMappingURL=MeshPipe.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { MeshPipe } from './shared/MeshPipe.mjs';\n\n\"use strict\";\nextensions.add(MeshPipe);\n//# sourceMappingURL=init.mjs.map\n","\"use strict\";\nclass BatchableMesh {\n constructor() {\n this.batcher = null;\n this.batch = null;\n this.roundPixels = 0;\n this._uvUpdateId = -1;\n this._textureMatrixUpdateId = -1;\n }\n get blendMode() {\n return this.mesh.groupBlendMode;\n }\n reset() {\n this.mesh = null;\n this.texture = null;\n this.batcher = null;\n this.batch = null;\n }\n packIndex(indexBuffer, index, indicesOffset) {\n const indices = this.geometry.indices;\n for (let i = 0; i < indices.length; i++) {\n indexBuffer[index++] = indices[i] + indicesOffset;\n }\n }\n packAttributes(float32View, uint32View, index, textureId) {\n const mesh = this.mesh;\n const geometry = this.geometry;\n const wt = mesh.groupTransform;\n const textureIdAndRound = textureId << 16 | this.roundPixels & 65535;\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n const positions = geometry.positions;\n const uvBuffer = geometry.getBuffer(\"aUV\");\n const uvs = uvBuffer.data;\n let transformedUvs = uvs;\n const textureMatrix = this.texture.textureMatrix;\n if (!textureMatrix.isSimple) {\n transformedUvs = this._transformedUvs;\n if (this._textureMatrixUpdateId !== textureMatrix._updateID || this._uvUpdateId !== uvBuffer._updateID) {\n if (!transformedUvs || transformedUvs.length < uvs.length) {\n transformedUvs = this._transformedUvs = new Float32Array(uvs.length);\n }\n this._textureMatrixUpdateId = textureMatrix._updateID;\n this._uvUpdateId = uvBuffer._updateID;\n textureMatrix.multiplyUvs(uvs, transformedUvs);\n }\n }\n const abgr = mesh.groupColorAlpha;\n for (let i = 0; i < positions.length; i += 2) {\n const x = positions[i];\n const y = positions[i + 1];\n float32View[index] = a * x + c * y + tx;\n float32View[index + 1] = b * x + d * y + ty;\n float32View[index + 2] = transformedUvs[i];\n float32View[index + 3] = transformedUvs[i + 1];\n uint32View[index + 4] = abgr;\n uint32View[index + 5] = textureIdAndRound;\n index += 6;\n }\n }\n get vertexSize() {\n return this.geometry.positions.length / 2;\n }\n get indexSize() {\n return this.geometry.indices.length;\n }\n}\n\nexport { BatchableMesh };\n//# sourceMappingURL=BatchableMesh.mjs.map\n","import { Buffer } from '../../../rendering/renderers/shared/buffer/Buffer.mjs';\nimport { BufferUsage } from '../../../rendering/renderers/shared/buffer/const.mjs';\nimport { Geometry } from '../../../rendering/renderers/shared/geometry/Geometry.mjs';\nimport { deprecation, v8_0_0 } from '../../../utils/logging/deprecation.mjs';\n\n\"use strict\";\nconst _MeshGeometry = class _MeshGeometry extends Geometry {\n constructor(...args) {\n let options = args[0] ?? {};\n if (options instanceof Float32Array) {\n deprecation(v8_0_0, \"use new MeshGeometry({ positions, uvs, indices }) instead\");\n options = {\n positions: options,\n uvs: args[1],\n indices: args[2]\n };\n }\n options = { ..._MeshGeometry.defaultOptions, ...options };\n const positions = options.positions || new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]);\n const uvs = options.uvs || new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]);\n const indices = options.indices || new Uint32Array([0, 1, 2, 0, 2, 3]);\n const shrinkToFit = options.shrinkBuffersToFit;\n const positionBuffer = new Buffer({\n data: positions,\n label: \"attribute-mesh-positions\",\n shrinkToFit,\n usage: BufferUsage.VERTEX | BufferUsage.COPY_DST\n });\n const uvBuffer = new Buffer({\n data: uvs,\n label: \"attribute-mesh-uvs\",\n shrinkToFit,\n usage: BufferUsage.VERTEX | BufferUsage.COPY_DST\n });\n const indexBuffer = new Buffer({\n data: indices,\n label: \"index-mesh-buffer\",\n shrinkToFit,\n usage: BufferUsage.INDEX | BufferUsage.COPY_DST\n });\n super({\n attributes: {\n aPosition: {\n buffer: positionBuffer,\n format: \"float32x2\",\n stride: 2 * 4,\n offset: 0\n },\n aUV: {\n buffer: uvBuffer,\n format: \"float32x2\",\n stride: 2 * 4,\n offset: 0\n }\n },\n indexBuffer,\n topology: options.topology\n });\n this.batchMode = \"auto\";\n }\n /** The positions of the mesh. */\n get positions() {\n return this.attributes.aPosition.buffer.data;\n }\n set positions(value) {\n this.attributes.aPosition.buffer.data = value;\n }\n /** The UVs of the mesh. */\n get uvs() {\n return this.attributes.aUV.buffer.data;\n }\n set uvs(value) {\n this.attributes.aUV.buffer.data = value;\n }\n /** The indices of the mesh. */\n get indices() {\n return this.indexBuffer.data;\n }\n set indices(value) {\n this.indexBuffer.data = value;\n }\n};\n_MeshGeometry.defaultOptions = {\n topology: \"triangle-list\",\n shrinkBuffersToFit: false\n};\nlet MeshGeometry = _MeshGeometry;\n\nexport { MeshGeometry };\n//# sourceMappingURL=MeshGeometry.mjs.map\n","import { deprecation, v8_0_0 } from '../../utils/logging/deprecation.mjs';\nimport { MeshGeometry } from '../mesh/shared/MeshGeometry.mjs';\n\n\"use strict\";\nconst _PlaneGeometry = class _PlaneGeometry extends MeshGeometry {\n constructor(...args) {\n super({});\n let options = args[0] ?? {};\n if (typeof options === \"number\") {\n deprecation(v8_0_0, \"PlaneGeometry constructor changed please use { width, height, verticesX, verticesY } instead\");\n options = {\n width: options,\n height: args[1],\n verticesX: args[2],\n verticesY: args[3]\n };\n }\n this.build(options);\n }\n /**\n * Refreshes plane coordinates\n * @param options - Options to be applied to plane geometry\n */\n build(options) {\n options = { ..._PlaneGeometry.defaultOptions, ...options };\n this.verticesX = this.verticesX ?? options.verticesX;\n this.verticesY = this.verticesY ?? options.verticesY;\n this.width = this.width ?? options.width;\n this.height = this.height ?? options.height;\n const total = this.verticesX * this.verticesY;\n const verts = [];\n const uvs = [];\n const indices = [];\n const verticesX = this.verticesX - 1;\n const verticesY = this.verticesY - 1;\n const sizeX = this.width / verticesX;\n const sizeY = this.height / verticesY;\n for (let i = 0; i < total; i++) {\n const x = i % this.verticesX;\n const y = i / this.verticesX | 0;\n verts.push(x * sizeX, y * sizeY);\n uvs.push(x / verticesX, y / verticesY);\n }\n const totalSub = verticesX * verticesY;\n for (let i = 0; i < totalSub; i++) {\n const xpos = i % verticesX;\n const ypos = i / verticesX | 0;\n const value = ypos * this.verticesX + xpos;\n const value2 = ypos * this.verticesX + xpos + 1;\n const value3 = (ypos + 1) * this.verticesX + xpos;\n const value4 = (ypos + 1) * this.verticesX + xpos + 1;\n indices.push(\n value,\n value2,\n value3,\n value2,\n value4,\n value3\n );\n }\n this.buffers[0].data = new Float32Array(verts);\n this.buffers[1].data = new Float32Array(uvs);\n this.indexBuffer.data = new Uint32Array(indices);\n this.buffers[0].update();\n this.buffers[1].update();\n this.indexBuffer.update();\n }\n};\n_PlaneGeometry.defaultOptions = {\n width: 100,\n height: 100,\n verticesX: 10,\n verticesY: 10\n};\nlet PlaneGeometry = _PlaneGeometry;\n\nexport { PlaneGeometry };\n//# sourceMappingURL=PlaneGeometry.mjs.map\n","import { PlaneGeometry } from '../mesh-plane/PlaneGeometry.mjs';\n\n\"use strict\";\nconst _NineSliceGeometry = class _NineSliceGeometry extends PlaneGeometry {\n constructor(options = {}) {\n options = { ..._NineSliceGeometry.defaultOptions, ...options };\n super({\n width: options.width,\n height: options.height,\n verticesX: 4,\n verticesY: 4\n });\n this.update(options);\n }\n /**\n * Updates the NineSliceGeometry with the options.\n * @param options - The options of the NineSliceGeometry.\n */\n update(options) {\n this.width = options.width ?? this.width;\n this.height = options.height ?? this.height;\n this._originalWidth = options.originalWidth ?? this._originalWidth;\n this._originalHeight = options.originalHeight ?? this._originalHeight;\n this._leftWidth = options.leftWidth ?? this._leftWidth;\n this._rightWidth = options.rightWidth ?? this._rightWidth;\n this._topHeight = options.topHeight ?? this._topHeight;\n this._bottomHeight = options.bottomHeight ?? this._bottomHeight;\n this.updateUvs();\n this.updatePositions();\n }\n /** Updates the positions of the vertices. */\n updatePositions() {\n const positions = this.positions;\n const w = this._leftWidth + this._rightWidth;\n const scaleW = this.width > w ? 1 : this.width / w;\n const h = this._topHeight + this._bottomHeight;\n const scaleH = this.height > h ? 1 : this.height / h;\n const scale = Math.min(scaleW, scaleH);\n positions[9] = positions[11] = positions[13] = positions[15] = this._topHeight * scale;\n positions[17] = positions[19] = positions[21] = positions[23] = this.height - this._bottomHeight * scale;\n positions[25] = positions[27] = positions[29] = positions[31] = this.height;\n positions[2] = positions[10] = positions[18] = positions[26] = this._leftWidth * scale;\n positions[4] = positions[12] = positions[20] = positions[28] = this.width - this._rightWidth * scale;\n positions[6] = positions[14] = positions[22] = positions[30] = this.width;\n this.getBuffer(\"aPosition\").update();\n }\n /** Updates the UVs of the vertices. */\n updateUvs() {\n const uvs = this.uvs;\n uvs[0] = uvs[8] = uvs[16] = uvs[24] = 0;\n uvs[1] = uvs[3] = uvs[5] = uvs[7] = 0;\n uvs[6] = uvs[14] = uvs[22] = uvs[30] = 1;\n uvs[25] = uvs[27] = uvs[29] = uvs[31] = 1;\n const _uvw = 1 / this._originalWidth;\n const _uvh = 1 / this._originalHeight;\n uvs[2] = uvs[10] = uvs[18] = uvs[26] = _uvw * this._leftWidth;\n uvs[9] = uvs[11] = uvs[13] = uvs[15] = _uvh * this._topHeight;\n uvs[4] = uvs[12] = uvs[20] = uvs[28] = 1 - _uvw * this._rightWidth;\n uvs[17] = uvs[19] = uvs[21] = uvs[23] = 1 - _uvh * this._bottomHeight;\n this.getBuffer(\"aUV\").update();\n }\n};\n/** The default options for the NineSliceGeometry. */\n_NineSliceGeometry.defaultOptions = {\n /** The width of the NineSlicePlane, setting this will actually modify the vertices and UV's of this plane. */\n width: 100,\n /** The height of the NineSlicePlane, setting this will actually modify the vertices and UV's of this plane. */\n height: 100,\n /** The width of the left column. */\n leftWidth: 10,\n /** The height of the top row. */\n topHeight: 10,\n /** The width of the right column. */\n rightWidth: 10,\n /** The height of the bottom row. */\n bottomHeight: 10,\n /** The original width of the texture */\n originalWidth: 100,\n /** The original height of the texture */\n originalHeight: 100\n};\nlet NineSliceGeometry = _NineSliceGeometry;\n\nexport { NineSliceGeometry };\n//# sourceMappingURL=NineSliceGeometry.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { BigPool } from '../../utils/pool/PoolGroup.mjs';\nimport { BatchableMesh } from '../mesh/shared/BatchableMesh.mjs';\nimport { NineSliceGeometry } from './NineSliceGeometry.mjs';\n\n\"use strict\";\nclass NineSliceSpritePipe {\n constructor(renderer) {\n this._gpuSpriteHash = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n addRenderable(sprite, _instructionSet) {\n const gpuSprite = this._getGpuSprite(sprite);\n if (sprite._didSpriteUpdate)\n this._updateBatchableSprite(sprite, gpuSprite);\n this._renderer.renderPipes.batch.addToBatch(gpuSprite);\n }\n updateRenderable(sprite) {\n const gpuSprite = this._gpuSpriteHash[sprite.uid];\n if (sprite._didSpriteUpdate)\n this._updateBatchableSprite(sprite, gpuSprite);\n gpuSprite.batcher.updateElement(gpuSprite);\n }\n validateRenderable(sprite) {\n const texture = sprite._texture;\n const gpuSprite = this._getGpuSprite(sprite);\n if (gpuSprite.texture._source !== texture._source) {\n return !gpuSprite.batcher.checkAndUpdateTexture(gpuSprite, texture);\n }\n return false;\n }\n destroyRenderable(sprite) {\n const batchableSprite = this._gpuSpriteHash[sprite.uid];\n BigPool.return(batchableSprite);\n this._gpuSpriteHash[sprite.uid] = null;\n }\n _updateBatchableSprite(sprite, batchableSprite) {\n sprite._didSpriteUpdate = false;\n batchableSprite.geometry.update(sprite);\n batchableSprite.texture = sprite._texture;\n }\n _getGpuSprite(sprite) {\n return this._gpuSpriteHash[sprite.uid] || this._initGPUSprite(sprite);\n }\n _initGPUSprite(sprite) {\n const batchableMesh = new BatchableMesh();\n batchableMesh.geometry = new NineSliceGeometry();\n batchableMesh.mesh = sprite;\n batchableMesh.texture = sprite._texture;\n batchableMesh.roundPixels = this._renderer._roundPixels | sprite._roundPixels;\n this._gpuSpriteHash[sprite.uid] = batchableMesh;\n sprite.on(\"destroyed\", () => {\n this.destroyRenderable(sprite);\n });\n return batchableMesh;\n }\n destroy() {\n for (const i in this._gpuSpriteHash) {\n const batchableMesh = this._gpuSpriteHash[i];\n batchableMesh.geometry.destroy();\n }\n this._gpuSpriteHash = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nNineSliceSpritePipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"nineSliceSprite\"\n};\n\nexport { NineSliceSpritePipe };\n//# sourceMappingURL=NineSliceSpritePipe.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { NineSliceSpritePipe } from './NineSliceSpritePipe.mjs';\n\n\"use strict\";\nextensions.add(NineSliceSpritePipe);\n//# sourceMappingURL=init.mjs.map\n","import { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { compileHighShaderGpuProgram, compileHighShaderGlProgram } from '../../../rendering/high-shader/compileHighShaderToProgram.mjs';\nimport { localUniformBit, localUniformBitGl } from '../../../rendering/high-shader/shader-bits/localUniformBit.mjs';\nimport { roundPixelsBit, roundPixelsBitGl } from '../../../rendering/high-shader/shader-bits/roundPixelsBit.mjs';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader.mjs';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup.mjs';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture.mjs';\nimport { tilingBit, tilingBitGl } from './tilingBit.mjs';\n\n\"use strict\";\nlet gpuProgram;\nlet glProgram;\nclass TilingSpriteShader extends Shader {\n constructor() {\n gpuProgram ?? (gpuProgram = compileHighShaderGpuProgram({\n name: \"tiling-sprite-shader\",\n bits: [\n localUniformBit,\n tilingBit,\n roundPixelsBit\n ]\n }));\n glProgram ?? (glProgram = compileHighShaderGlProgram({\n name: \"tiling-sprite-shader\",\n bits: [\n localUniformBitGl,\n tilingBitGl,\n roundPixelsBitGl\n ]\n }));\n const tilingUniforms = new UniformGroup({\n uMapCoord: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uClampFrame: { value: new Float32Array([0, 0, 1, 1]), type: \"vec4<f32>\" },\n uClampOffset: { value: new Float32Array([0, 0]), type: \"vec2<f32>\" },\n uTextureTransform: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uSizeAnchor: { value: new Float32Array([100, 100, 0.5, 0.5]), type: \"vec4<f32>\" }\n });\n super({\n glProgram,\n gpuProgram,\n resources: {\n localUniforms: new UniformGroup({\n uTransformMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: \"vec4<f32>\" },\n uRound: { value: 0, type: \"f32\" }\n }),\n tilingUniforms,\n uTexture: Texture.EMPTY.source,\n uSampler: Texture.EMPTY.source.style\n }\n });\n }\n updateUniforms(width, height, matrix, anchorX, anchorY, texture) {\n const tilingUniforms = this.resources.tilingUniforms;\n const textureWidth = texture.width;\n const textureHeight = texture.height;\n const textureMatrix = texture.textureMatrix;\n const uTextureTransform = tilingUniforms.uniforms.uTextureTransform;\n uTextureTransform.set(\n matrix.a * textureWidth / width,\n matrix.b * textureWidth / height,\n matrix.c * textureHeight / width,\n matrix.d * textureHeight / height,\n matrix.tx / width,\n matrix.ty / height\n );\n uTextureTransform.invert();\n tilingUniforms.uniforms.uMapCoord = textureMatrix.mapCoord;\n tilingUniforms.uniforms.uClampFrame = textureMatrix.uClampFrame;\n tilingUniforms.uniforms.uClampOffset = textureMatrix.uClampOffset;\n tilingUniforms.uniforms.uTextureTransform = uTextureTransform;\n tilingUniforms.uniforms.uSizeAnchor[0] = width;\n tilingUniforms.uniforms.uSizeAnchor[1] = height;\n tilingUniforms.uniforms.uSizeAnchor[2] = anchorX;\n tilingUniforms.uniforms.uSizeAnchor[3] = anchorY;\n if (texture) {\n this.resources.uTexture = texture.source;\n this.resources.uSampler = texture.source.style;\n }\n }\n}\n\nexport { TilingSpriteShader };\n//# sourceMappingURL=TilingSpriteShader.mjs.map\n","\"use strict\";\nconst tilingBit = {\n name: \"tiling-bit\",\n vertex: {\n header: (\n /* wgsl */\n `\n struct TilingUniforms {\n uMapCoord:mat3x3<f32>,\n uClampFrame:vec4<f32>,\n uClampOffset:vec2<f32>,\n uTextureTransform:mat3x3<f32>,\n uSizeAnchor:vec4<f32>\n };\n\n @group(2) @binding(0) var<uniform> tilingUniforms: TilingUniforms;\n @group(2) @binding(1) var uTexture: texture_2d<f32>;\n @group(2) @binding(2) var uSampler: sampler;\n `\n ),\n main: (\n /* wgsl */\n `\n uv = (tilingUniforms.uTextureTransform * vec3(uv, 1.0)).xy;\n\n position = (position - tilingUniforms.uSizeAnchor.zw) * tilingUniforms.uSizeAnchor.xy;\n `\n )\n },\n fragment: {\n header: (\n /* wgsl */\n `\n struct TilingUniforms {\n uMapCoord:mat3x3<f32>,\n uClampFrame:vec4<f32>,\n uClampOffset:vec2<f32>,\n uTextureTransform:mat3x3<f32>,\n uSizeAnchor:vec4<f32>\n };\n\n @group(2) @binding(0) var<uniform> tilingUniforms: TilingUniforms;\n @group(2) @binding(1) var uTexture: texture_2d<f32>;\n @group(2) @binding(2) var uSampler: sampler;\n `\n ),\n main: (\n /* wgsl */\n `\n\n var coord = vUV + ceil(tilingUniforms.uClampOffset - vUV);\n coord = (tilingUniforms.uMapCoord * vec3(coord, 1.0)).xy;\n var unclamped = coord;\n coord = clamp(coord, tilingUniforms.uClampFrame.xy, tilingUniforms.uClampFrame.zw);\n\n var bias = 0.;\n\n if(unclamped.x == coord.x && unclamped.y == coord.y)\n {\n bias = -32.;\n } \n\n outColor = textureSampleBias(uTexture, uSampler, coord, bias);\n `\n )\n }\n};\nconst tilingBitGl = {\n name: \"tiling-bit\",\n vertex: {\n header: (\n /* glsl */\n `\n uniform mat3 uTextureTransform;\n uniform vec4 uSizeAnchor;\n \n `\n ),\n main: (\n /* glsl */\n `\n uv = (uTextureTransform * vec3(aUV, 1.0)).xy;\n\n position = (position - uSizeAnchor.zw) * uSizeAnchor.xy;\n `\n )\n },\n fragment: {\n header: (\n /* glsl */\n `\n uniform sampler2D uTexture;\n uniform mat3 uMapCoord;\n uniform vec4 uClampFrame;\n uniform vec2 uClampOffset;\n `\n ),\n main: (\n /* glsl */\n `\n\n vec2 coord = vUV + ceil(uClampOffset - vUV);\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\n vec2 unclamped = coord;\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n \n outColor = texture(uTexture, coord, unclamped == coord ? 0.0 : -32.0);// lod-bias very negative to force lod 0\n \n `\n )\n }\n};\n\nexport { tilingBit, tilingBitGl };\n//# sourceMappingURL=tilingBit.mjs.map\n","import { MeshGeometry } from '../../mesh/shared/MeshGeometry.mjs';\n\n\"use strict\";\nclass QuadGeometry extends MeshGeometry {\n constructor() {\n super({\n positions: new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]),\n uvs: new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]),\n indices: new Uint32Array([0, 1, 2, 0, 2, 3])\n });\n }\n}\n\nexport { QuadGeometry };\n//# sourceMappingURL=QuadGeometry.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { State } from '../../rendering/renderers/shared/state/State.mjs';\nimport { RendererType } from '../../rendering/renderers/types.mjs';\nimport { color32BitToUniform } from '../graphics/gpu/colorToUniform.mjs';\nimport { BatchableMesh } from '../mesh/shared/BatchableMesh.mjs';\nimport { MeshGeometry } from '../mesh/shared/MeshGeometry.mjs';\nimport { TilingSpriteShader } from './shader/TilingSpriteShader.mjs';\nimport { QuadGeometry } from './utils/QuadGeometry.mjs';\nimport { setPositions } from './utils/setPositions.mjs';\nimport { setUvs } from './utils/setUvs.mjs';\n\n\"use strict\";\nconst sharedQuad = new QuadGeometry();\nclass TilingSpritePipe {\n constructor(renderer) {\n this._tilingSpriteDataHash = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n validateRenderable(renderable) {\n const tilingSpriteData = this._getTilingSpriteData(renderable);\n const couldBatch = tilingSpriteData.canBatch;\n this._updateCanBatch(renderable);\n const canBatch = tilingSpriteData.canBatch;\n if (canBatch && canBatch === couldBatch) {\n const { batchableMesh } = tilingSpriteData;\n if (batchableMesh.texture._source !== renderable.texture._source) {\n return !batchableMesh.batcher.checkAndUpdateTexture(batchableMesh, renderable.texture);\n }\n }\n return couldBatch !== canBatch;\n }\n addRenderable(tilingSprite, instructionSet) {\n const batcher = this._renderer.renderPipes.batch;\n this._updateCanBatch(tilingSprite);\n const tilingSpriteData = this._getTilingSpriteData(tilingSprite);\n const { geometry, canBatch } = tilingSpriteData;\n if (canBatch) {\n tilingSpriteData.batchableMesh || (tilingSpriteData.batchableMesh = new BatchableMesh());\n const batchableMesh = tilingSpriteData.batchableMesh;\n if (tilingSprite._didTilingSpriteUpdate) {\n tilingSprite._didTilingSpriteUpdate = false;\n this._updateBatchableMesh(tilingSprite);\n batchableMesh.geometry = geometry;\n batchableMesh.mesh = tilingSprite;\n batchableMesh.texture = tilingSprite._texture;\n }\n batchableMesh.roundPixels = this._renderer._roundPixels | tilingSprite._roundPixels;\n batcher.addToBatch(batchableMesh);\n } else {\n batcher.break(instructionSet);\n tilingSpriteData.shader || (tilingSpriteData.shader = new TilingSpriteShader());\n this.updateRenderable(tilingSprite);\n instructionSet.add(tilingSprite);\n }\n }\n execute(tilingSprite) {\n const { shader } = this._tilingSpriteDataHash[tilingSprite.uid];\n shader.groups[0] = this._renderer.globalUniforms.bindGroup;\n const localUniforms = shader.resources.localUniforms.uniforms;\n localUniforms.uTransformMatrix = tilingSprite.groupTransform;\n localUniforms.uRound = this._renderer._roundPixels | tilingSprite._roundPixels;\n color32BitToUniform(\n tilingSprite.groupColorAlpha,\n localUniforms.uColor,\n 0\n );\n this._renderer.encoder.draw({\n geometry: sharedQuad,\n shader,\n state: State.default2d\n });\n }\n updateRenderable(tilingSprite) {\n const tilingSpriteData = this._getTilingSpriteData(tilingSprite);\n const { canBatch } = tilingSpriteData;\n if (canBatch) {\n const { batchableMesh } = tilingSpriteData;\n if (tilingSprite._didTilingSpriteUpdate)\n this._updateBatchableMesh(tilingSprite);\n batchableMesh.batcher.updateElement(batchableMesh);\n } else if (tilingSprite._didTilingSpriteUpdate) {\n const { shader } = tilingSpriteData;\n shader.updateUniforms(\n tilingSprite.width,\n tilingSprite.height,\n tilingSprite._tileTransform.matrix,\n tilingSprite.anchor.x,\n tilingSprite.anchor.y,\n tilingSprite.texture\n );\n }\n tilingSprite._didTilingSpriteUpdate = false;\n }\n destroyRenderable(tilingSprite) {\n const tilingSpriteData = this._getTilingSpriteData(tilingSprite);\n tilingSpriteData.batchableMesh = null;\n tilingSpriteData.shader?.destroy();\n this._tilingSpriteDataHash[tilingSprite.uid] = null;\n }\n _getTilingSpriteData(renderable) {\n return this._tilingSpriteDataHash[renderable.uid] || this._initTilingSpriteData(renderable);\n }\n _initTilingSpriteData(tilingSprite) {\n const geometry = new MeshGeometry({\n indices: sharedQuad.indices,\n positions: sharedQuad.positions.slice(),\n uvs: sharedQuad.uvs.slice()\n });\n this._tilingSpriteDataHash[tilingSprite.uid] = {\n canBatch: true,\n renderable: tilingSprite,\n geometry\n };\n tilingSprite.on(\"destroyed\", () => {\n this.destroyRenderable(tilingSprite);\n });\n return this._tilingSpriteDataHash[tilingSprite.uid];\n }\n _updateBatchableMesh(tilingSprite) {\n const renderableData = this._getTilingSpriteData(tilingSprite);\n const { geometry } = renderableData;\n const style = tilingSprite.texture.source.style;\n if (style.addressMode !== \"repeat\") {\n style.addressMode = \"repeat\";\n style.update();\n }\n setUvs(tilingSprite, geometry.uvs);\n setPositions(tilingSprite, geometry.positions);\n }\n destroy() {\n for (const i in this._tilingSpriteDataHash) {\n this.destroyRenderable(this._tilingSpriteDataHash[i].renderable);\n }\n this._tilingSpriteDataHash = null;\n this._renderer = null;\n }\n _updateCanBatch(tilingSprite) {\n const renderableData = this._getTilingSpriteData(tilingSprite);\n const texture = tilingSprite.texture;\n let _nonPowOf2wrapping = true;\n if (this._renderer.type === RendererType.WEBGL) {\n _nonPowOf2wrapping = this._renderer.context.supports.nonPowOf2wrapping;\n }\n renderableData.canBatch = texture.textureMatrix.isSimple && (_nonPowOf2wrapping || texture.source.isPowerOfTwo);\n return renderableData.canBatch;\n }\n}\n/** @ignore */\nTilingSpritePipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"tilingSprite\"\n};\n\nexport { TilingSpritePipe };\n//# sourceMappingURL=TilingSpritePipe.mjs.map\n","import { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { applyMatrix } from './applyMatrix.mjs';\n\n\"use strict\";\nfunction setUvs(tilingSprite, uvs) {\n const texture = tilingSprite.texture;\n const width = texture.frame.width;\n const height = texture.frame.height;\n let anchorX = 0;\n let anchorY = 0;\n if (tilingSprite._applyAnchorToTexture) {\n anchorX = tilingSprite.anchor.x;\n anchorY = tilingSprite.anchor.y;\n }\n uvs[0] = uvs[6] = -anchorX;\n uvs[2] = uvs[4] = 1 - anchorX;\n uvs[1] = uvs[3] = -anchorY;\n uvs[5] = uvs[7] = 1 - anchorY;\n const textureMatrix = Matrix.shared;\n textureMatrix.copyFrom(tilingSprite._tileTransform.matrix);\n textureMatrix.tx /= tilingSprite.width;\n textureMatrix.ty /= tilingSprite.height;\n textureMatrix.invert();\n textureMatrix.scale(tilingSprite.width / width, tilingSprite.height / height);\n applyMatrix(uvs, 2, 0, textureMatrix);\n}\n\nexport { setUvs };\n//# sourceMappingURL=setUvs.mjs.map\n","\"use strict\";\nfunction applyMatrix(array, stride, offset, matrix) {\n let index = 0;\n const size = array.length / (stride || 2);\n const a = matrix.a;\n const b = matrix.b;\n const c = matrix.c;\n const d = matrix.d;\n const tx = matrix.tx;\n const ty = matrix.ty;\n offset *= stride;\n while (index < size) {\n const x = array[offset];\n const y = array[offset + 1];\n array[offset] = a * x + c * y + tx;\n array[offset + 1] = b * x + d * y + ty;\n offset += stride;\n index++;\n }\n}\n\nexport { applyMatrix };\n//# sourceMappingURL=applyMatrix.mjs.map\n","\"use strict\";\nfunction setPositions(tilingSprite, positions) {\n const anchorX = tilingSprite.anchor.x;\n const anchorY = tilingSprite.anchor.y;\n positions[0] = -anchorX * tilingSprite.width;\n positions[1] = -anchorY * tilingSprite.height;\n positions[2] = (1 - anchorX) * tilingSprite.width;\n positions[3] = -anchorY * tilingSprite.height;\n positions[4] = (1 - anchorX) * tilingSprite.width;\n positions[5] = (1 - anchorY) * tilingSprite.height;\n positions[6] = -anchorX * tilingSprite.width;\n positions[7] = (1 - anchorY) * tilingSprite.height;\n}\n\nexport { setPositions };\n//# sourceMappingURL=setPositions.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { TilingSpritePipe } from './TilingSpritePipe.mjs';\n\n\"use strict\";\nextensions.add(TilingSpritePipe);\n//# sourceMappingURL=init.mjs.map\n","import EventEmitter from 'eventemitter3';\nimport { deprecation, v8_0_0 } from '../../utils/logging/deprecation.mjs';\n\n\"use strict\";\nclass AbstractBitmapFont extends EventEmitter {\n constructor() {\n super(...arguments);\n /** The map of characters by character code. */\n this.chars = /* @__PURE__ */ Object.create(null);\n /**\n * The line-height of the font face in pixels.\n * @type {number}\n */\n this.lineHeight = 0;\n /**\n * The name of the font face\n * @type {string}\n */\n this.fontFamily = \"\";\n /** The metrics of the font face. */\n this.fontMetrics = { fontSize: 0, ascent: 0, descent: 0 };\n /**\n * The offset of the font face from the baseline.\n * @type {number}\n */\n this.baseLineOffset = 0;\n /** The range and type of the distance field for this font. */\n this.distanceField = { type: \"none\", range: 0 };\n /** The map of base page textures (i.e., sheets of glyphs). */\n this.pages = [];\n /** The size of the font face in pixels. */\n this.baseMeasurementFontSize = 100;\n this.baseRenderedFontSize = 100;\n }\n /**\n * The name of the font face.\n * @deprecated since 8.0.0 Use `fontFamily` instead.\n */\n get font() {\n deprecation(v8_0_0, \"BitmapFont.font is deprecated, please use BitmapFont.fontFamily instead.\");\n return this.fontFamily;\n }\n /**\n * The map of base page textures (i.e., sheets of glyphs).\n * @deprecated since 8.0.0 Use `pages` instead.\n */\n get pageTextures() {\n deprecation(v8_0_0, \"BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead.\");\n return this.pages;\n }\n /**\n * The size of the font face in pixels.\n * @deprecated since 8.0.0 Use `fontMetrics.fontSize` instead.\n */\n get size() {\n deprecation(v8_0_0, \"BitmapFont.size is deprecated, please use BitmapFont.fontMetrics.fontSize instead.\");\n return this.fontMetrics.fontSize;\n }\n /**\n * The kind of distance field for this font or \"none\".\n * @deprecated since 8.0.0 Use `distanceField.type` instead.\n */\n get distanceFieldRange() {\n deprecation(v8_0_0, \"BitmapFont.distanceFieldRange is deprecated, please use BitmapFont.distanceField.range instead.\");\n return this.distanceField.range;\n }\n /**\n * The range of the distance field in pixels.\n * @deprecated since 8.0.0 Use `distanceField.range` instead.\n */\n get distanceFieldType() {\n deprecation(v8_0_0, \"BitmapFont.distanceFieldType is deprecated, please use BitmapFont.distanceField.type instead.\");\n return this.distanceField.type;\n }\n destroy(destroyTextures = false) {\n this.emit(\"destroy\", this);\n this.removeAllListeners();\n for (const i in this.chars) {\n this.chars[i].texture.destroy();\n }\n this.chars = null;\n if (destroyTextures) {\n this.pages.forEach((page) => page.texture.destroy(true));\n this.pages = null;\n }\n }\n}\n\nexport { AbstractBitmapFont };\n//# sourceMappingURL=AbstractBitmapFont.mjs.map\n","\"use strict\";\nfunction resolveCharacters(chars) {\n if (chars === \"\") {\n return [];\n }\n if (typeof chars === \"string\") {\n chars = [chars];\n }\n const result = [];\n for (let i = 0, j = chars.length; i < j; i++) {\n const item = chars[i];\n if (Array.isArray(item)) {\n if (item.length !== 2) {\n throw new Error(`[BitmapFont]: Invalid character range length, expecting 2 got ${item.length}.`);\n }\n if (item[0].length === 0 || item[1].length === 0) {\n throw new Error(\"[BitmapFont]: Invalid character delimiter.\");\n }\n const startCode = item[0].charCodeAt(0);\n const endCode = item[1].charCodeAt(0);\n if (endCode < startCode) {\n throw new Error(\"[BitmapFont]: Invalid character range.\");\n }\n for (let i2 = startCode, j2 = endCode; i2 <= j2; i2++) {\n result.push(String.fromCharCode(i2));\n }\n } else {\n result.push(...Array.from(item));\n }\n }\n if (result.length === 0) {\n throw new Error(\"[BitmapFont]: Empty set when resolving characters.\");\n }\n return result;\n}\n\nexport { resolveCharacters };\n//# sourceMappingURL=resolveCharacters.mjs.map\n","import { Color } from '../../color/Color.mjs';\nimport { Rectangle } from '../../maths/shapes/Rectangle.mjs';\nimport { CanvasPool } from '../../rendering/renderers/shared/texture/CanvasPool.mjs';\nimport { ImageSource } from '../../rendering/renderers/shared/texture/sources/ImageSource.mjs';\nimport { Texture } from '../../rendering/renderers/shared/texture/Texture.mjs';\nimport { deprecation, v8_0_0 } from '../../utils/logging/deprecation.mjs';\nimport { CanvasTextMetrics } from '../text/canvas/CanvasTextMetrics.mjs';\nimport { fontStringFromTextStyle } from '../text/canvas/utils/fontStringFromTextStyle.mjs';\nimport { getCanvasFillStyle } from '../text/canvas/utils/getCanvasFillStyle.mjs';\nimport { AbstractBitmapFont } from './AbstractBitmapFont.mjs';\nimport { resolveCharacters } from './utils/resolveCharacters.mjs';\n\n\"use strict\";\nclass DynamicBitmapFont extends AbstractBitmapFont {\n /**\n * @param options - The options for the dynamic bitmap font.\n */\n constructor(options) {\n super();\n /**\n * this is a resolution modifier for the font size..\n * texture resolution will also be used to scale texture according to its font size also\n */\n this.resolution = 1;\n /** The pages of the font. */\n this.pages = [];\n this._padding = 4;\n this._measureCache = /* @__PURE__ */ Object.create(null);\n this._currentChars = [];\n this._currentX = 0;\n this._currentY = 0;\n this._currentPageIndex = -1;\n this._skipKerning = false;\n const dynamicOptions = options;\n const style = dynamicOptions.style.clone();\n if (dynamicOptions.overrideFill) {\n style._fill.color = 16777215;\n style._fill.alpha = 1;\n style._fill.texture = Texture.WHITE;\n style._fill.fill = null;\n }\n const requestedFontSize = style.fontSize;\n style.fontSize = this.baseMeasurementFontSize;\n const font = fontStringFromTextStyle(style);\n if (dynamicOptions.overrideSize) {\n if (style._stroke) {\n style._stroke.width *= this.baseRenderedFontSize / requestedFontSize;\n }\n } else {\n style.fontSize = this.baseRenderedFontSize = requestedFontSize;\n }\n this._style = style;\n this._skipKerning = dynamicOptions.skipKerning ?? false;\n this.resolution = dynamicOptions.resolution ?? 1;\n this._padding = dynamicOptions.padding ?? 4;\n this.fontMetrics = CanvasTextMetrics.measureFont(font);\n this.lineHeight = style.lineHeight || this.fontMetrics.fontSize || style.fontSize;\n }\n ensureCharacters(chars) {\n const charList = resolveCharacters(chars).filter((char) => !this._currentChars.includes(char)).filter((char, index, self) => self.indexOf(char) === index);\n if (!charList.length)\n return;\n this._currentChars = [...this._currentChars, ...charList];\n let pageData;\n if (this._currentPageIndex === -1) {\n pageData = this._nextPage();\n } else {\n pageData = this.pages[this._currentPageIndex];\n }\n let { canvas, context } = pageData.canvasAndContext;\n let textureSource = pageData.texture.source;\n const style = this._style;\n let currentX = this._currentX;\n let currentY = this._currentY;\n const fontScale = this.baseRenderedFontSize / this.baseMeasurementFontSize;\n const padding = this._padding * fontScale;\n const widthScale = style.fontStyle === \"italic\" ? 2 : 1;\n let maxCharHeight = 0;\n let skipTexture = false;\n for (let i = 0; i < charList.length; i++) {\n const char = charList[i];\n const metrics = CanvasTextMetrics.measureText(char, style, canvas, false);\n metrics.lineHeight = metrics.height;\n const width = widthScale * metrics.width * fontScale;\n const height = metrics.height * fontScale;\n const paddedWidth = width + padding * 2;\n const paddedHeight = height + padding * 2;\n skipTexture = false;\n if (char !== \"\\n\" && char !== \"\\r\" && char !== \"\t\" && char !== \" \") {\n skipTexture = true;\n maxCharHeight = Math.ceil(Math.max(paddedHeight, maxCharHeight));\n }\n if (currentX + paddedWidth > 512) {\n currentY += maxCharHeight;\n maxCharHeight = paddedHeight;\n currentX = 0;\n if (currentY + maxCharHeight > 512) {\n textureSource.update();\n const pageData2 = this._nextPage();\n canvas = pageData2.canvasAndContext.canvas;\n context = pageData2.canvasAndContext.context;\n textureSource = pageData2.texture.source;\n currentY = 0;\n }\n }\n const xAdvance = width / fontScale - (style.dropShadow?.distance ?? 0) - (style._stroke?.width ?? 0);\n this.chars[char] = {\n id: char.codePointAt(0),\n xOffset: -this._padding,\n yOffset: -this._padding,\n xAdvance,\n kerning: {}\n };\n if (skipTexture) {\n this._drawGlyph(\n context,\n metrics,\n currentX + padding,\n currentY + padding,\n fontScale,\n style\n );\n const px = textureSource.width * fontScale;\n const py = textureSource.height * fontScale;\n const frame = new Rectangle(\n currentX / px * textureSource.width,\n currentY / py * textureSource.height,\n paddedWidth / px * textureSource.width,\n paddedHeight / py * textureSource.height\n );\n this.chars[char].texture = new Texture({\n source: textureSource,\n frame\n });\n currentX += Math.ceil(paddedWidth);\n }\n }\n textureSource.update();\n this._currentX = currentX;\n this._currentY = currentY;\n this._skipKerning && this._applyKerning(charList, context);\n }\n /**\n * @deprecated since 8.0.0\n * The map of base page textures (i.e., sheets of glyphs).\n */\n get pageTextures() {\n deprecation(v8_0_0, \"BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead.\");\n return this.pages;\n }\n _applyKerning(newChars, context) {\n const measureCache = this._measureCache;\n for (let i = 0; i < newChars.length; i++) {\n const first = newChars[i];\n for (let j = 0; j < this._currentChars.length; j++) {\n const second = this._currentChars[j];\n let c1 = measureCache[first];\n if (!c1)\n c1 = measureCache[first] = context.measureText(first).width;\n let c2 = measureCache[second];\n if (!c2)\n c2 = measureCache[second] = context.measureText(second).width;\n let total = context.measureText(first + second).width;\n let amount = total - (c1 + c2);\n if (amount) {\n this.chars[first].kerning[second] = amount;\n }\n total = context.measureText(first + second).width;\n amount = total - (c1 + c2);\n if (amount) {\n this.chars[second].kerning[first] = amount;\n }\n }\n }\n }\n _nextPage() {\n this._currentPageIndex++;\n const textureResolution = this.resolution;\n const canvasAndContext = CanvasPool.getOptimalCanvasAndContext(512, 512, textureResolution);\n this._setupContext(canvasAndContext.context, this._style, textureResolution);\n const resolution = textureResolution * (this.baseRenderedFontSize / this.baseMeasurementFontSize);\n const texture = new Texture({\n source: new ImageSource({\n resource: canvasAndContext.canvas,\n resolution,\n alphaMode: \"premultiply-alpha-on-upload\"\n })\n });\n const pageData = {\n canvasAndContext,\n texture\n };\n this.pages[this._currentPageIndex] = pageData;\n return pageData;\n }\n // canvas style!\n _setupContext(context, style, resolution) {\n style.fontSize = this.baseRenderedFontSize;\n context.scale(resolution, resolution);\n context.font = fontStringFromTextStyle(style);\n style.fontSize = this.baseMeasurementFontSize;\n context.textBaseline = style.textBaseline;\n const stroke = style._stroke;\n const strokeThickness = stroke?.width ?? 0;\n if (stroke) {\n context.lineWidth = strokeThickness;\n context.lineJoin = stroke.join;\n context.miterLimit = stroke.miterLimit;\n context.strokeStyle = getCanvasFillStyle(stroke, context);\n }\n if (style._fill) {\n context.fillStyle = getCanvasFillStyle(style._fill, context);\n }\n if (style.dropShadow) {\n const shadowOptions = style.dropShadow;\n const rgb = Color.shared.setValue(shadowOptions.color).toArray();\n const dropShadowBlur = shadowOptions.blur * resolution;\n const dropShadowDistance = shadowOptions.distance * resolution;\n context.shadowColor = `rgba(${rgb[0] * 255},${rgb[1] * 255},${rgb[2] * 255},${shadowOptions.alpha})`;\n context.shadowBlur = dropShadowBlur;\n context.shadowOffsetX = Math.cos(shadowOptions.angle) * dropShadowDistance;\n context.shadowOffsetY = Math.sin(shadowOptions.angle) * dropShadowDistance;\n } else {\n context.shadowColor = \"black\";\n context.shadowBlur = 0;\n context.shadowOffsetX = 0;\n context.shadowOffsetY = 0;\n }\n }\n _drawGlyph(context, metrics, x, y, fontScale, style) {\n const char = metrics.text;\n const fontProperties = metrics.fontProperties;\n const stroke = style._stroke;\n const strokeThickness = (stroke?.width ?? 0) * fontScale;\n const tx = x + strokeThickness / 2;\n const ty = y - strokeThickness / 2;\n const descent = fontProperties.descent * fontScale;\n const lineHeight = metrics.lineHeight * fontScale;\n if (style.stroke && strokeThickness) {\n context.strokeText(char, tx, ty + lineHeight - descent);\n }\n if (style._fill) {\n context.fillText(char, tx, ty + lineHeight - descent);\n }\n }\n destroy() {\n super.destroy();\n for (let i = 0; i < this.pages.length; i++) {\n const { canvasAndContext, texture } = this.pages[i];\n CanvasPool.returnCanvasAndContext(canvasAndContext);\n texture.destroy(true);\n }\n this.pages = null;\n }\n}\n\nexport { DynamicBitmapFont };\n//# sourceMappingURL=DynamicBitmapFont.mjs.map\n","\"use strict\";\nfunction getBitmapTextLayout(chars, style, font) {\n const layoutData = {\n width: 0,\n height: 0,\n offsetY: 0,\n scale: style.fontSize / font.baseMeasurementFontSize,\n lines: [{\n width: 0,\n charPositions: [],\n spaceWidth: 0,\n spacesIndex: [],\n chars: []\n }]\n };\n layoutData.offsetY = font.baseLineOffset;\n let currentLine = layoutData.lines[0];\n let previousChar = null;\n let firstWord = true;\n const currentWord = {\n spaceWord: false,\n width: 0,\n start: 0,\n index: 0,\n // use index to not modify the array as we use it a lot!\n positions: [],\n chars: []\n };\n const nextWord = (word) => {\n const start = currentLine.width;\n for (let j = 0; j < currentWord.index; j++) {\n const position = word.positions[j];\n currentLine.chars.push(word.chars[j]);\n currentLine.charPositions.push(position + start);\n }\n currentLine.width += word.width;\n firstWord = false;\n currentWord.width = 0;\n currentWord.index = 0;\n currentWord.chars.length = 0;\n };\n const nextLine = () => {\n let index = currentLine.chars.length - 1;\n let lastChar = currentLine.chars[index];\n while (lastChar === \" \") {\n currentLine.width -= font.chars[lastChar].xAdvance;\n lastChar = currentLine.chars[--index];\n }\n layoutData.width = Math.max(layoutData.width, currentLine.width);\n currentLine = {\n width: 0,\n charPositions: [],\n chars: [],\n spaceWidth: 0,\n spacesIndex: []\n };\n firstWord = true;\n layoutData.lines.push(currentLine);\n layoutData.height += font.lineHeight;\n };\n const scale = font.baseMeasurementFontSize / style.fontSize;\n const adjustedLetterSpacing = style.letterSpacing * scale;\n const adjustedWordWrapWidth = style.wordWrapWidth * scale;\n for (let i = 0; i < chars.length + 1; i++) {\n let char;\n const isEnd = i === chars.length;\n if (!isEnd) {\n char = chars[i];\n }\n const charData = font.chars[char] || font.chars[\" \"];\n const isSpace = /(?:\\s)/.test(char);\n const isWordBreak = isSpace || char === \"\\r\" || char === \"\\n\" || isEnd;\n if (isWordBreak) {\n const addWordToNextLine = !firstWord && style.wordWrap && currentLine.width + currentWord.width - adjustedLetterSpacing > adjustedWordWrapWidth;\n if (addWordToNextLine) {\n nextLine();\n nextWord(currentWord);\n if (!isEnd) {\n currentLine.charPositions.push(0);\n }\n } else {\n currentWord.start = currentLine.width;\n nextWord(currentWord);\n if (!isEnd) {\n currentLine.charPositions.push(0);\n }\n }\n if (char === \"\\r\" || char === \"\\n\") {\n if (currentLine.width !== 0) {\n nextLine();\n }\n } else if (!isEnd) {\n const spaceWidth = charData.xAdvance + (charData.kerning[previousChar] || 0) + adjustedLetterSpacing;\n currentLine.width += spaceWidth;\n currentLine.spaceWidth = spaceWidth;\n currentLine.spacesIndex.push(currentLine.charPositions.length);\n currentLine.chars.push(char);\n }\n } else {\n const kerning = charData.kerning[previousChar] || 0;\n const nextCharWidth = charData.xAdvance + kerning + adjustedLetterSpacing;\n currentWord.positions[currentWord.index++] = currentWord.width + kerning;\n currentWord.chars.push(char);\n currentWord.width += nextCharWidth;\n }\n previousChar = char;\n }\n nextLine();\n if (style.align === \"center\") {\n alignCenter(layoutData);\n } else if (style.align === \"right\") {\n alignRight(layoutData);\n } else if (style.align === \"justify\") {\n alignJustify(layoutData);\n }\n return layoutData;\n}\nfunction alignCenter(measurementData) {\n for (let i = 0; i < measurementData.lines.length; i++) {\n const line = measurementData.lines[i];\n const offset = measurementData.width / 2 - line.width / 2;\n for (let j = 0; j < line.charPositions.length; j++) {\n line.charPositions[j] += offset;\n }\n }\n}\nfunction alignRight(measurementData) {\n for (let i = 0; i < measurementData.lines.length; i++) {\n const line = measurementData.lines[i];\n const offset = measurementData.width - line.width;\n for (let j = 0; j < line.charPositions.length; j++) {\n line.charPositions[j] += offset;\n }\n }\n}\nfunction alignJustify(measurementData) {\n const width = measurementData.width;\n for (let i = 0; i < measurementData.lines.length; i++) {\n const line = measurementData.lines[i];\n let indy = 0;\n let spaceIndex = line.spacesIndex[indy++];\n let offset = 0;\n const totalSpaces = line.spacesIndex.length;\n const newSpaceWidth = (width - line.width) / totalSpaces;\n const spaceWidth = newSpaceWidth;\n for (let j = 0; j < line.charPositions.length; j++) {\n if (j === spaceIndex) {\n spaceIndex = line.spacesIndex[indy++];\n offset += spaceWidth;\n }\n line.charPositions[j] += offset;\n }\n }\n}\n\nexport { getBitmapTextLayout };\n//# sourceMappingURL=getBitmapTextLayout.mjs.map\n","import { Cache } from '../../assets/cache/Cache.mjs';\nimport { deprecation, v8_0_0 } from '../../utils/logging/deprecation.mjs';\nimport { TextStyle } from '../text/TextStyle.mjs';\nimport { DynamicBitmapFont } from './DynamicBitmapFont.mjs';\nimport { getBitmapTextLayout } from './utils/getBitmapTextLayout.mjs';\nimport { resolveCharacters } from './utils/resolveCharacters.mjs';\n\n\"use strict\";\nclass BitmapFontManagerClass {\n constructor() {\n /**\n * This character set includes all the letters in the alphabet (both lower- and upper- case).\n * @type {string[][]}\n * @example\n * BitmapFont.from('ExampleFont', style, { chars: BitmapFont.ALPHA })\n */\n this.ALPHA = [[\"a\", \"z\"], [\"A\", \"Z\"], \" \"];\n /**\n * This character set includes all decimal digits (from 0 to 9).\n * @type {string[][]}\n * @example\n * BitmapFont.from('ExampleFont', style, { chars: BitmapFont.NUMERIC })\n */\n this.NUMERIC = [[\"0\", \"9\"]];\n /**\n * This character set is the union of `BitmapFont.ALPHA` and `BitmapFont.NUMERIC`.\n * @type {string[][]}\n */\n this.ALPHANUMERIC = [[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \" \"];\n /**\n * This character set consists of all the ASCII table.\n * @member {string[][]}\n * @see http://www.asciitable.com/\n */\n this.ASCII = [[\" \", \"~\"]];\n /** Default options for installing a new BitmapFont. */\n this.defaultOptions = {\n chars: this.ALPHANUMERIC,\n resolution: 1,\n padding: 4,\n skipKerning: false\n };\n }\n /**\n * Get a font for the specified text and style.\n * @param text - The text to get the font for\n * @param style - The style to use\n */\n getFont(text, style) {\n let fontFamilyKey = `${style.fontFamily}-bitmap`;\n let overrideFill = true;\n if (style._fill.fill) {\n fontFamilyKey += style._fill.fill.uid;\n overrideFill = false;\n }\n if (!Cache.has(fontFamilyKey)) {\n const fnt = new DynamicBitmapFont({\n style,\n overrideFill,\n overrideSize: true,\n ...this.defaultOptions\n });\n fnt.once(\"destroy\", () => Cache.remove(fontFamilyKey));\n Cache.set(\n fontFamilyKey,\n fnt\n );\n }\n const dynamicFont = Cache.get(fontFamilyKey);\n dynamicFont.ensureCharacters?.(text);\n return dynamicFont;\n }\n /**\n * Get the layout of a text for the specified style.\n * @param text - The text to get the layout for\n * @param style - The style to use\n */\n getLayout(text, style) {\n const bitmapFont = this.getFont(text, style);\n return getBitmapTextLayout(text.split(\"\"), style, bitmapFont);\n }\n /**\n * Measure the text using the specified style.\n * @param text - The text to measure\n * @param style - The style to use\n */\n measureText(text, style) {\n return this.getLayout(text, style);\n }\n // eslint-disable-next-line max-len\n install(...args) {\n let options = args[0];\n if (typeof options === \"string\") {\n options = {\n name: options,\n style: args[1],\n chars: args[2]?.chars,\n resolution: args[2]?.resolution,\n padding: args[2]?.padding,\n skipKerning: args[2]?.skipKerning\n };\n deprecation(v8_0_0, \"BitmapFontManager.install(name, style, options) is deprecated, use BitmapFontManager.install({name, style, ...options})\");\n }\n const name = options?.name;\n if (!name) {\n throw new Error(\"[BitmapFontManager] Property `name` is required.\");\n }\n options = { ...this.defaultOptions, ...options };\n const textStyle = options.style;\n const style = textStyle instanceof TextStyle ? textStyle : new TextStyle(textStyle);\n const overrideFill = style._fill.fill !== null && style._fill.fill !== void 0;\n const font = new DynamicBitmapFont({\n style,\n overrideFill,\n skipKerning: options.skipKerning,\n padding: options.padding,\n resolution: options.resolution,\n overrideSize: false\n });\n const flatChars = resolveCharacters(options.chars);\n font.ensureCharacters(flatChars.join(\"\"));\n Cache.set(`${name}-bitmap`, font);\n font.once(\"destroy\", () => Cache.remove(`${name}-bitmap`));\n return font;\n }\n /**\n * Uninstalls a bitmap font from the cache.\n * @param {string} name - The name of the bitmap font to uninstall.\n */\n uninstall(name) {\n const cacheKey = `${name}-bitmap`;\n const font = Cache.get(cacheKey);\n if (font) {\n Cache.remove(cacheKey);\n font.destroy();\n }\n }\n}\nconst BitmapFontManager = new BitmapFontManagerClass();\n\nexport { BitmapFontManager };\n//# sourceMappingURL=BitmapFontManager.mjs.map\n","import { Rectangle } from '../../maths/shapes/Rectangle.mjs';\nimport { Texture } from '../../rendering/renderers/shared/texture/Texture.mjs';\nimport { AbstractBitmapFont } from './AbstractBitmapFont.mjs';\nimport { BitmapFontManager } from './BitmapFontManager.mjs';\n\n\"use strict\";\nclass BitmapFont extends AbstractBitmapFont {\n constructor(options, url) {\n super();\n const { textures, data } = options;\n Object.keys(data.pages).forEach((key) => {\n const pageData = data.pages[parseInt(key, 10)];\n const texture = textures[pageData.id];\n this.pages.push({ texture });\n });\n Object.keys(data.chars).forEach((key) => {\n const charData = data.chars[key];\n const {\n frame: textureFrame,\n source: textureSource\n } = textures[charData.page];\n const frameReal = new Rectangle(\n charData.x + textureFrame.x,\n charData.y + textureFrame.y,\n charData.width,\n charData.height\n );\n const texture = new Texture({\n source: textureSource,\n frame: frameReal\n });\n this.chars[key] = {\n id: key.codePointAt(0),\n xOffset: charData.xOffset,\n yOffset: charData.yOffset,\n xAdvance: charData.xAdvance,\n kerning: charData.kerning ?? {},\n texture\n };\n });\n this.baseRenderedFontSize = data.fontSize;\n this.baseMeasurementFontSize = data.fontSize;\n this.fontMetrics = {\n ascent: 0,\n descent: 0,\n fontSize: data.fontSize\n };\n this.baseLineOffset = data.baseLineOffset;\n this.lineHeight = data.lineHeight;\n this.fontFamily = data.fontFamily;\n this.distanceField = data.distanceField ?? {\n type: \"none\",\n range: 0\n };\n this.url = url;\n }\n /** Destroys the BitmapFont object. */\n destroy() {\n super.destroy();\n for (let i = 0; i < this.pages.length; i++) {\n const { texture } = this.pages[i];\n texture.destroy(true);\n }\n this.pages = null;\n }\n /**\n * Generates a bitmap-font for the given style and character set\n * @param options - Setup options for font generation.\n * @returns Font generated by style options.\n * @example\n * import { BitmapFont, BitmapText } from 'pixi.js';\n *\n * BitmapFont.install('TitleFont', {\n * fontFamily: 'Arial',\n * fontSize: 12,\n * strokeThickness: 2,\n * fill: 'purple',\n * });\n *\n * const title = new BitmapText({ text: 'This is the title', fontFamily: 'TitleFont' });\n */\n static install(options) {\n BitmapFontManager.install(options);\n }\n /**\n * Uninstalls a bitmap font from the cache.\n * @param {string} name - The name of the bitmap font to uninstall.\n */\n static uninstall(name) {\n BitmapFontManager.uninstall(name);\n }\n}\n\nexport { BitmapFont };\n//# sourceMappingURL=BitmapFont.mjs.map\n","\"use strict\";\nconst bitmapFontTextParser = {\n test(data) {\n return typeof data === \"string\" && data.startsWith(\"info face=\");\n },\n parse(txt) {\n const items = txt.match(/^[a-z]+\\s+.+$/gm);\n const rawData = {\n info: [],\n common: [],\n page: [],\n char: [],\n chars: [],\n kerning: [],\n kernings: [],\n distanceField: []\n };\n for (const i in items) {\n const name = items[i].match(/^[a-z]+/gm)[0];\n const attributeList = items[i].match(/[a-zA-Z]+=([^\\s\"']+|\"([^\"]*)\")/gm);\n const itemData = {};\n for (const i2 in attributeList) {\n const split = attributeList[i2].split(\"=\");\n const key = split[0];\n const strValue = split[1].replace(/\"/gm, \"\");\n const floatValue = parseFloat(strValue);\n const value = isNaN(floatValue) ? strValue : floatValue;\n itemData[key] = value;\n }\n rawData[name].push(itemData);\n }\n const font = {\n chars: {},\n pages: [],\n lineHeight: 0,\n fontSize: 0,\n fontFamily: \"\",\n distanceField: null,\n baseLineOffset: 0\n };\n const [info] = rawData.info;\n const [common] = rawData.common;\n const [distanceField] = rawData.distanceField ?? [];\n if (distanceField) {\n font.distanceField = {\n range: parseInt(distanceField.distanceRange, 10),\n type: distanceField.fieldType\n };\n }\n font.fontSize = parseInt(info.size, 10);\n font.fontFamily = info.face;\n font.lineHeight = parseInt(common.lineHeight, 10);\n const page = rawData.page;\n for (let i = 0; i < page.length; i++) {\n font.pages.push({\n id: parseInt(page[i].id, 10) || 0,\n file: page[i].file\n });\n }\n const map = {};\n font.baseLineOffset = font.lineHeight - parseInt(common.base, 10);\n const char = rawData.char;\n for (let i = 0; i < char.length; i++) {\n const charNode = char[i];\n const id = parseInt(charNode.id, 10);\n let letter = charNode.letter ?? charNode.char ?? String.fromCharCode(id);\n if (letter === \"space\")\n letter = \" \";\n map[id] = letter;\n font.chars[letter] = {\n id,\n // texture deets..\n page: parseInt(charNode.page, 10) || 0,\n x: parseInt(charNode.x, 10),\n y: parseInt(charNode.y, 10),\n width: parseInt(charNode.width, 10),\n height: parseInt(charNode.height, 10),\n xOffset: parseInt(charNode.xoffset, 10),\n yOffset: parseInt(charNode.yoffset, 10),\n xAdvance: parseInt(charNode.xadvance, 10),\n kerning: {}\n };\n }\n const kerning = rawData.kerning || [];\n for (let i = 0; i < kerning.length; i++) {\n const first = parseInt(kerning[i].first, 10);\n const second = parseInt(kerning[i].second, 10);\n const amount = parseInt(kerning[i].amount, 10);\n font.chars[map[second]].kerning[map[first]] = amount;\n }\n return font;\n }\n};\n\nexport { bitmapFontTextParser };\n//# sourceMappingURL=bitmapFontTextParser.mjs.map\n","\"use strict\";\nconst bitmapFontXMLParser = {\n test(data) {\n const xml = data;\n return typeof xml !== \"string\" && \"getElementsByTagName\" in xml && xml.getElementsByTagName(\"page\").length && xml.getElementsByTagName(\"info\")[0].getAttribute(\"face\") !== null;\n },\n parse(xml) {\n const data = {\n chars: {},\n pages: [],\n lineHeight: 0,\n fontSize: 0,\n fontFamily: \"\",\n distanceField: null,\n baseLineOffset: 0\n };\n const info = xml.getElementsByTagName(\"info\")[0];\n const common = xml.getElementsByTagName(\"common\")[0];\n const distanceField = xml.getElementsByTagName(\"distanceField\")[0];\n if (distanceField) {\n data.distanceField = {\n type: distanceField.getAttribute(\"fieldType\"),\n range: parseInt(distanceField.getAttribute(\"distanceRange\"), 10)\n };\n }\n const page = xml.getElementsByTagName(\"page\");\n const char = xml.getElementsByTagName(\"char\");\n const kerning = xml.getElementsByTagName(\"kerning\");\n data.fontSize = parseInt(info.getAttribute(\"size\"), 10);\n data.fontFamily = info.getAttribute(\"face\");\n data.lineHeight = parseInt(common.getAttribute(\"lineHeight\"), 10);\n for (let i = 0; i < page.length; i++) {\n data.pages.push({\n id: parseInt(page[i].getAttribute(\"id\"), 10) || 0,\n file: page[i].getAttribute(\"file\")\n });\n }\n const map = {};\n data.baseLineOffset = data.lineHeight - parseInt(common.getAttribute(\"base\"), 10);\n for (let i = 0; i < char.length; i++) {\n const charNode = char[i];\n const id = parseInt(charNode.getAttribute(\"id\"), 10);\n let letter = charNode.getAttribute(\"letter\") ?? charNode.getAttribute(\"char\") ?? String.fromCharCode(id);\n if (letter === \"space\")\n letter = \" \";\n map[id] = letter;\n data.chars[letter] = {\n id,\n // texture deets..\n page: parseInt(charNode.getAttribute(\"page\"), 10) || 0,\n x: parseInt(charNode.getAttribute(\"x\"), 10),\n y: parseInt(charNode.getAttribute(\"y\"), 10),\n width: parseInt(charNode.getAttribute(\"width\"), 10),\n height: parseInt(charNode.getAttribute(\"height\"), 10),\n // render deets..\n xOffset: parseInt(charNode.getAttribute(\"xoffset\"), 10),\n yOffset: parseInt(charNode.getAttribute(\"yoffset\"), 10),\n // + baseLineOffset,\n xAdvance: parseInt(charNode.getAttribute(\"xadvance\"), 10),\n kerning: {}\n };\n }\n for (let i = 0; i < kerning.length; i++) {\n const first = parseInt(kerning[i].getAttribute(\"first\"), 10);\n const second = parseInt(kerning[i].getAttribute(\"second\"), 10);\n const amount = parseInt(kerning[i].getAttribute(\"amount\"), 10);\n data.chars[map[second]].kerning[map[first]] = amount;\n }\n return data;\n }\n};\n\nexport { bitmapFontXMLParser };\n//# sourceMappingURL=bitmapFontXMLParser.mjs.map\n","import { DOMAdapter } from '../../../environment/adapter.mjs';\nimport { bitmapFontXMLParser } from './bitmapFontXMLParser.mjs';\n\n\"use strict\";\nconst bitmapFontXMLStringParser = {\n test(data) {\n if (typeof data === \"string\" && data.includes(\"<font>\")) {\n return bitmapFontXMLParser.test(DOMAdapter.get().parseXML(data));\n }\n return false;\n },\n parse(data) {\n return bitmapFontXMLParser.parse(DOMAdapter.get().parseXML(data));\n }\n};\n\nexport { bitmapFontXMLStringParser };\n//# sourceMappingURL=bitmapFontXMLStringParser.mjs.map\n","import { LoaderParserPriority } from '../../../assets/loader/parsers/LoaderParser.mjs';\nimport { copySearchParams } from '../../../assets/utils/copySearchParams.mjs';\nimport { DOMAdapter } from '../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { path } from '../../../utils/path.mjs';\nimport { BitmapFont } from '../BitmapFont.mjs';\nimport { bitmapFontTextParser } from './bitmapFontTextParser.mjs';\nimport { bitmapFontXMLStringParser } from './bitmapFontXMLStringParser.mjs';\n\n\"use strict\";\nconst validExtensions = [\".xml\", \".fnt\"];\nconst bitmapFontCachePlugin = {\n extension: ExtensionType.CacheParser,\n test: (asset) => asset instanceof BitmapFont,\n getCacheableAssets(keys, asset) {\n const out = {};\n keys.forEach((key) => {\n out[key] = asset;\n });\n out[`${asset.fontFamily}-bitmap`] = asset;\n return out;\n }\n};\nconst loadBitmapFont = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Normal\n },\n test(url) {\n return validExtensions.includes(path.extname(url).toLowerCase());\n },\n async testParse(data) {\n return bitmapFontTextParser.test(data) || bitmapFontXMLStringParser.test(data);\n },\n async parse(asset, data, loader) {\n const bitmapFontData = bitmapFontTextParser.test(asset) ? bitmapFontTextParser.parse(asset) : bitmapFontXMLStringParser.parse(asset);\n const { src } = data;\n const { pages } = bitmapFontData;\n const textureUrls = [];\n for (let i = 0; i < pages.length; ++i) {\n const pageFile = pages[i].file;\n let imagePath = path.join(path.dirname(src), pageFile);\n imagePath = copySearchParams(imagePath, src);\n textureUrls.push(imagePath);\n }\n const loadedTextures = await loader.load(textureUrls);\n const textures = textureUrls.map((url) => loadedTextures[url]);\n const bitmapFont = new BitmapFont({\n data: bitmapFontData,\n textures\n }, src);\n return bitmapFont;\n },\n async load(url, _options) {\n const response = await DOMAdapter.get().fetch(url);\n return await response.text();\n },\n async unload(bitmapFont, _resolvedAsset, loader) {\n await Promise.all(bitmapFont.pages.map((page) => loader.unload(page.texture.source._sourceOrigin)));\n bitmapFont.destroy();\n }\n};\n\nexport { bitmapFontCachePlugin, loadBitmapFont };\n//# sourceMappingURL=loadBitmapFont.mjs.map\n","\"use strict\";\nconst localUniformMSDFBit = {\n name: \"local-uniform-msdf-bit\",\n vertex: {\n header: (\n /* wgsl */\n `\n struct LocalUniforms {\n uColor:vec4<f32>,\n uTransformMatrix:mat3x3<f32>,\n uDistance: f32,\n uRound:f32,\n }\n\n @group(2) @binding(0) var<uniform> localUniforms : LocalUniforms;\n `\n ),\n main: (\n /* wgsl */\n `\n vColor *= localUniforms.uColor;\n modelMatrix *= localUniforms.uTransformMatrix;\n `\n ),\n end: (\n /* wgsl */\n `\n if(localUniforms.uRound == 1)\n {\n vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);\n }\n `\n )\n },\n fragment: {\n header: (\n /* wgsl */\n `\n struct LocalUniforms {\n uColor:vec4<f32>,\n uTransformMatrix:mat3x3<f32>,\n uDistance: f32\n }\n\n @group(2) @binding(0) var<uniform> localUniforms : LocalUniforms;\n `\n ),\n main: (\n /* wgsl */\n ` \n outColor = vColor * calculateMSDFAlpha(outColor, localUniforms.uDistance);\n `\n )\n }\n};\nconst localUniformMSDFBitGl = {\n name: \"local-uniform-msdf-bit\",\n vertex: {\n header: (\n /* glsl */\n `\n uniform mat3 uTransformMatrix;\n uniform vec4 uColor;\n uniform float uRound;\n `\n ),\n main: (\n /* glsl */\n `\n vColor *= uColor;\n modelMatrix *= uTransformMatrix;\n `\n ),\n end: (\n /* glsl */\n `\n if(uRound == 1.)\n {\n gl_Position.xy = roundPixels(gl_Position.xy, uResolution);\n }\n `\n )\n },\n fragment: {\n header: (\n /* glsl */\n `\n uniform float uDistance;\n `\n ),\n main: (\n /* glsl */\n ` \n outColor = vColor * calculateMSDFAlpha(outColor, uDistance);\n `\n )\n }\n};\n\nexport { localUniformMSDFBit, localUniformMSDFBitGl };\n//# sourceMappingURL=localUniformMSDFBit.mjs.map\n","\"use strict\";\nconst mSDFBit = {\n name: \"msdf-bit\",\n fragment: {\n header: (\n /* wgsl */\n `\n fn calculateMSDFAlpha(msdfColor:vec4<f32>, distance:f32) -> f32 {\n \n // MSDF\n var median = msdfColor.r + msdfColor.g + msdfColor.b -\n min(msdfColor.r, min(msdfColor.g, msdfColor.b)) -\n max(msdfColor.r, max(msdfColor.g, msdfColor.b));\n \n // SDF\n median = min(median, msdfColor.a);\n\n var screenPxDistance = distance * (median - 0.5);\n var alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0);\n if (median < 0.01) {\n alpha = 0.0;\n } else if (median > 0.99) {\n alpha = 1.0;\n }\n\n return alpha;\n }\n `\n )\n }\n};\nconst mSDFBitGl = {\n name: \"msdf-bit\",\n fragment: {\n header: (\n /* glsl */\n `\n float calculateMSDFAlpha(vec4 msdfColor, float distance) {\n \n // MSDF\n float median = msdfColor.r + msdfColor.g + msdfColor.b -\n min(msdfColor.r, min(msdfColor.g, msdfColor.b)) -\n max(msdfColor.r, max(msdfColor.g, msdfColor.b));\n \n // SDF\n median = min(median, msdfColor.a);\n \n float screenPxDistance = distance * (median - 0.5);\n float alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0);\n \n if (median < 0.01) {\n alpha = 0.0;\n } else if (median > 0.99) {\n alpha = 1.0;\n }\n\n return alpha;\n }\n `\n )\n }\n};\n\nexport { mSDFBit, mSDFBitGl };\n//# sourceMappingURL=mSDFBit.mjs.map\n","import { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { MAX_TEXTURES } from '../../../rendering/batcher/shared/const.mjs';\nimport { compileHighShaderGpuProgram, compileHighShaderGlProgram } from '../../../rendering/high-shader/compileHighShaderToProgram.mjs';\nimport { colorBit, colorBitGl } from '../../../rendering/high-shader/shader-bits/colorBit.mjs';\nimport { generateTextureBatchBit, generateTextureBatchBitGl } from '../../../rendering/high-shader/shader-bits/generateTextureBatchBit.mjs';\nimport { roundPixelsBit, roundPixelsBitGl } from '../../../rendering/high-shader/shader-bits/roundPixelsBit.mjs';\nimport { batchSamplersUniformGroup } from '../../../rendering/renderers/gl/shader/batchSamplersUniformGroup.mjs';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader.mjs';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup.mjs';\nimport { localUniformMSDFBit, localUniformMSDFBitGl } from './shader-bits/localUniformMSDFBit.mjs';\nimport { mSDFBit, mSDFBitGl } from './shader-bits/mSDFBit.mjs';\n\n\"use strict\";\nclass SdfShader extends Shader {\n constructor() {\n const uniforms = new UniformGroup({\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: \"vec4<f32>\" },\n uTransformMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uDistance: { value: 4, type: \"f32\" },\n uRound: { value: 0, type: \"f32\" }\n });\n const gpuProgram = compileHighShaderGpuProgram({\n name: \"sdf-shader\",\n bits: [\n colorBit,\n generateTextureBatchBit(MAX_TEXTURES),\n localUniformMSDFBit,\n mSDFBit,\n roundPixelsBit\n ]\n });\n const glProgram = compileHighShaderGlProgram({\n name: \"sdf-shader\",\n bits: [\n colorBitGl,\n generateTextureBatchBitGl(MAX_TEXTURES),\n localUniformMSDFBitGl,\n mSDFBitGl,\n roundPixelsBitGl\n ]\n });\n super({\n glProgram,\n gpuProgram,\n resources: {\n localUniforms: uniforms,\n batchSamplers: batchSamplersUniformGroup\n }\n });\n }\n}\n\nexport { SdfShader };\n//# sourceMappingURL=SdfShader.mjs.map\n","import { Cache } from '../../assets/cache/Cache.mjs';\nimport { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { BigPool } from '../../utils/pool/PoolGroup.mjs';\nimport { Graphics } from '../graphics/shared/Graphics.mjs';\nimport { SdfShader } from '../text/sdfShader/SdfShader.mjs';\nimport { BitmapFontManager } from './BitmapFontManager.mjs';\nimport { getBitmapTextLayout } from './utils/getBitmapTextLayout.mjs';\n\n\"use strict\";\nclass BitmapTextPipe {\n constructor(renderer) {\n this._gpuBitmapText = {};\n this._renderer = renderer;\n }\n validateRenderable(bitmapText) {\n const graphicsRenderable = this._getGpuBitmapText(bitmapText);\n if (bitmapText._didTextUpdate) {\n bitmapText._didTextUpdate = false;\n this._updateContext(bitmapText, graphicsRenderable);\n }\n return this._renderer.renderPipes.graphics.validateRenderable(graphicsRenderable);\n }\n addRenderable(bitmapText, instructionSet) {\n const graphicsRenderable = this._getGpuBitmapText(bitmapText);\n syncWithProxy(bitmapText, graphicsRenderable);\n if (bitmapText._didTextUpdate) {\n bitmapText._didTextUpdate = false;\n this._updateContext(bitmapText, graphicsRenderable);\n }\n this._renderer.renderPipes.graphics.addRenderable(graphicsRenderable, instructionSet);\n if (graphicsRenderable.context.customShader) {\n this._updateDistanceField(bitmapText);\n }\n }\n destroyRenderable(bitmapText) {\n this._destroyRenderableByUid(bitmapText.uid);\n }\n _destroyRenderableByUid(renderableUid) {\n BigPool.return(this._gpuBitmapText[renderableUid]);\n this._gpuBitmapText[renderableUid] = null;\n }\n updateRenderable(bitmapText) {\n const graphicsRenderable = this._getGpuBitmapText(bitmapText);\n syncWithProxy(bitmapText, graphicsRenderable);\n this._renderer.renderPipes.graphics.updateRenderable(graphicsRenderable);\n if (graphicsRenderable.context.customShader) {\n this._updateDistanceField(bitmapText);\n }\n }\n _updateContext(bitmapText, proxyGraphics) {\n const { context } = proxyGraphics;\n const bitmapFont = BitmapFontManager.getFont(bitmapText.text, bitmapText._style);\n context.clear();\n if (bitmapFont.distanceField.type !== \"none\") {\n if (!context.customShader) {\n if (!this._sdfShader) {\n this._sdfShader = new SdfShader();\n }\n context.customShader = this._sdfShader;\n }\n }\n const chars = Array.from(bitmapText.text);\n const style = bitmapText._style;\n let currentY = (style._stroke?.width || 0) / 2;\n currentY += bitmapFont.baseLineOffset;\n const bitmapTextLayout = getBitmapTextLayout(chars, style, bitmapFont);\n let index = 0;\n const padding = style.padding;\n const scale = bitmapTextLayout.scale;\n context.translate(\n -bitmapText._anchor._x * bitmapTextLayout.width - padding,\n -bitmapText._anchor._y * (bitmapTextLayout.height + bitmapTextLayout.offsetY) - padding\n ).scale(scale, scale);\n const tint = style._fill.color;\n for (let i = 0; i < bitmapTextLayout.lines.length; i++) {\n const line = bitmapTextLayout.lines[i];\n for (let j = 0; j < line.charPositions.length; j++) {\n const char = chars[index++];\n const charData = bitmapFont.chars[char];\n if (charData?.texture) {\n context.texture(\n charData.texture,\n tint ? tint : \"black\",\n Math.round(line.charPositions[j] + charData.xOffset),\n Math.round(currentY + charData.yOffset)\n );\n }\n }\n currentY += bitmapFont.lineHeight;\n }\n }\n _getGpuBitmapText(bitmapText) {\n return this._gpuBitmapText[bitmapText.uid] || this.initGpuText(bitmapText);\n }\n initGpuText(bitmapText) {\n const proxyRenderable = BigPool.get(Graphics);\n this._gpuBitmapText[bitmapText.uid] = proxyRenderable;\n this._updateContext(bitmapText, proxyRenderable);\n bitmapText.on(\"destroyed\", () => {\n this.destroyRenderable(bitmapText);\n });\n return this._gpuBitmapText[bitmapText.uid];\n }\n _updateDistanceField(bitmapText) {\n const context = this._getGpuBitmapText(bitmapText).context;\n const fontFamily = bitmapText._style.fontFamily;\n const dynamicFont = Cache.get(`${fontFamily}-bitmap`);\n const { a, b, c, d } = bitmapText.groupTransform;\n const dx = Math.sqrt(a * a + b * b);\n const dy = Math.sqrt(c * c + d * d);\n const worldScale = (Math.abs(dx) + Math.abs(dy)) / 2;\n const fontScale = dynamicFont.baseRenderedFontSize / bitmapText._style.fontSize;\n const resolution = bitmapText.resolution ?? this._renderer.resolution;\n const distance = worldScale * dynamicFont.distanceField.range * (1 / fontScale) * resolution;\n context.customShader.resources.localUniforms.uniforms.uDistance = distance;\n }\n destroy() {\n for (const uid in this._gpuBitmapText) {\n this._destroyRenderableByUid(uid);\n }\n this._gpuBitmapText = null;\n this._sdfShader?.destroy(true);\n this._sdfShader = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nBitmapTextPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"bitmapText\"\n};\nfunction syncWithProxy(container, proxy) {\n proxy.groupTransform = container.groupTransform;\n proxy.groupColorAlpha = container.groupColorAlpha;\n proxy.groupColor = container.groupColor;\n proxy.groupBlendMode = container.groupBlendMode;\n proxy.globalDisplayStatus = container.globalDisplayStatus;\n proxy.groupTransform = container.groupTransform;\n proxy.localDisplayStatus = container.localDisplayStatus;\n proxy.groupAlpha = container.groupAlpha;\n proxy._roundPixels = container._roundPixels;\n}\n\nexport { BitmapTextPipe };\n//# sourceMappingURL=BitmapTextPipe.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { loadBitmapFont, bitmapFontCachePlugin } from './asset/loadBitmapFont.mjs';\nimport { BitmapTextPipe } from './BitmapTextPipe.mjs';\n\n\"use strict\";\nextensions.add(BitmapTextPipe, loadBitmapFont, bitmapFontCachePlugin);\n//# sourceMappingURL=init.mjs.map\n","import { CanvasTextMetrics } from '../../text/canvas/CanvasTextMetrics.mjs';\nimport { HTMLTextRenderData } from '../HTMLTextRenderData.mjs';\n\n\"use strict\";\nlet tempHTMLTextRenderData;\nfunction measureHtmlText(text, style, fontStyleCSS, htmlTextRenderData) {\n htmlTextRenderData = htmlTextRenderData || tempHTMLTextRenderData || (tempHTMLTextRenderData = new HTMLTextRenderData());\n const { domElement, styleElement, svgRoot } = htmlTextRenderData;\n domElement.innerHTML = `<style>${style.cssStyle}</style><div>${text}</div>`;\n domElement.setAttribute(\"style\", \"transform-origin: top left; display: inline-block\");\n if (fontStyleCSS) {\n styleElement.textContent = fontStyleCSS;\n }\n document.body.appendChild(svgRoot);\n const contentBounds = domElement.getBoundingClientRect();\n svgRoot.remove();\n const descenderPadding = CanvasTextMetrics.measureFont(style.fontStyle).descent;\n return {\n width: contentBounds.width,\n height: contentBounds.height + descenderPadding\n };\n}\n\nexport { measureHtmlText };\n//# sourceMappingURL=measureHtmlText.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { Texture } from '../../rendering/renderers/shared/texture/Texture.mjs';\nimport { updateQuadBounds } from '../../utils/data/updateQuadBounds.mjs';\nimport { BigPool } from '../../utils/pool/PoolGroup.mjs';\nimport { BatchableSprite } from '../sprite/BatchableSprite.mjs';\n\n\"use strict\";\nclass HTMLTextPipe {\n constructor(renderer) {\n this._gpuText = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n validateRenderable(htmlText) {\n const gpuText = this._getGpuText(htmlText);\n const newKey = htmlText._getKey();\n if (gpuText.textureNeedsUploading) {\n gpuText.textureNeedsUploading = false;\n return true;\n }\n if (gpuText.currentKey !== newKey) {\n return true;\n }\n return false;\n }\n addRenderable(htmlText) {\n const gpuText = this._getGpuText(htmlText);\n const batchableSprite = gpuText.batchableSprite;\n if (htmlText._didTextUpdate) {\n this._updateText(htmlText);\n }\n this._renderer.renderPipes.batch.addToBatch(batchableSprite);\n }\n updateRenderable(htmlText) {\n const gpuText = this._getGpuText(htmlText);\n const batchableSprite = gpuText.batchableSprite;\n if (htmlText._didTextUpdate) {\n this._updateText(htmlText);\n }\n batchableSprite.batcher.updateElement(batchableSprite);\n }\n destroyRenderable(htmlText) {\n this._destroyRenderableById(htmlText.uid);\n }\n _destroyRenderableById(htmlTextUid) {\n const gpuText = this._gpuText[htmlTextUid];\n this._renderer.htmlText.decreaseReferenceCount(gpuText.currentKey);\n BigPool.return(gpuText.batchableSprite);\n this._gpuText[htmlTextUid] = null;\n }\n _updateText(htmlText) {\n const newKey = htmlText._getKey();\n const gpuText = this._getGpuText(htmlText);\n const batchableSprite = gpuText.batchableSprite;\n if (gpuText.currentKey !== newKey) {\n this._updateGpuText(htmlText).catch((e) => {\n console.error(e);\n });\n }\n htmlText._didTextUpdate = false;\n const padding = htmlText._style.padding;\n updateQuadBounds(batchableSprite.bounds, htmlText._anchor, batchableSprite.texture, padding);\n }\n async _updateGpuText(htmlText) {\n htmlText._didTextUpdate = false;\n const gpuText = this._getGpuText(htmlText);\n if (gpuText.generatingTexture)\n return;\n const newKey = htmlText._getKey();\n this._renderer.htmlText.decreaseReferenceCount(gpuText.currentKey);\n gpuText.generatingTexture = true;\n gpuText.currentKey = newKey;\n const resolution = htmlText.resolution ?? this._renderer.resolution;\n const texture = await this._renderer.htmlText.getManagedTexture(\n htmlText.text,\n resolution,\n htmlText._style,\n htmlText._getKey()\n );\n const batchableSprite = gpuText.batchableSprite;\n batchableSprite.texture = gpuText.texture = texture;\n gpuText.generatingTexture = false;\n gpuText.textureNeedsUploading = true;\n htmlText.onViewUpdate();\n const padding = htmlText._style.padding;\n updateQuadBounds(batchableSprite.bounds, htmlText._anchor, batchableSprite.texture, padding);\n }\n _getGpuText(htmlText) {\n return this._gpuText[htmlText.uid] || this.initGpuText(htmlText);\n }\n initGpuText(htmlText) {\n const gpuTextData = {\n texture: Texture.EMPTY,\n currentKey: \"--\",\n batchableSprite: BigPool.get(BatchableSprite),\n textureNeedsUploading: false,\n generatingTexture: false\n };\n const batchableSprite = gpuTextData.batchableSprite;\n batchableSprite.renderable = htmlText;\n batchableSprite.texture = Texture.EMPTY;\n batchableSprite.bounds = { minX: 0, maxX: 1, minY: 0, maxY: 0 };\n batchableSprite.roundPixels = this._renderer._roundPixels | htmlText._roundPixels;\n this._gpuText[htmlText.uid] = gpuTextData;\n htmlText.on(\"destroyed\", () => {\n this.destroyRenderable(htmlText);\n });\n return gpuTextData;\n }\n destroy() {\n for (const i in this._gpuText) {\n this._destroyRenderableById(i);\n }\n this._gpuText = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nHTMLTextPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"htmlText\"\n};\n\nexport { HTMLTextPipe };\n//# sourceMappingURL=HTMLTextPipe.mjs.map\n","\"use strict\";\nconst nssvg = \"http://www.w3.org/2000/svg\";\nconst nsxhtml = \"http://www.w3.org/1999/xhtml\";\nclass HTMLTextRenderData {\n constructor() {\n this.svgRoot = document.createElementNS(nssvg, \"svg\");\n this.foreignObject = document.createElementNS(nssvg, \"foreignObject\");\n this.domElement = document.createElementNS(nsxhtml, \"div\");\n this.styleElement = document.createElementNS(nsxhtml, \"style\");\n this.image = new Image();\n const { foreignObject, svgRoot, styleElement, domElement } = this;\n foreignObject.setAttribute(\"width\", \"10000\");\n foreignObject.setAttribute(\"height\", \"10000\");\n foreignObject.style.overflow = \"hidden\";\n svgRoot.appendChild(foreignObject);\n foreignObject.appendChild(styleElement);\n foreignObject.appendChild(domElement);\n }\n}\n\nexport { HTMLTextRenderData, nssvg, nsxhtml };\n//# sourceMappingURL=HTMLTextRenderData.mjs.map\n","import { Color } from '../../../color/Color.mjs';\n\n\"use strict\";\nfunction textStyleToCSS(style) {\n const stroke = style._stroke;\n const fill = style._fill;\n const cssStyleString = [\n `color: ${Color.shared.setValue(fill.color).toHex()}`,\n `font-size: ${style.fontSize}px`,\n `font-family: ${style.fontFamily}`,\n `font-weight: ${style.fontWeight}`,\n `font-style: ${style.fontStyle}`,\n `font-variant: ${style.fontVariant}`,\n `letter-spacing: ${style.letterSpacing}px`,\n `text-align: ${style.align}`,\n `padding: ${style.padding}px`,\n `white-space: ${style.whiteSpace === \"pre\" && style.wordWrap ? \"pre-wrap\" : style.whiteSpace}`,\n ...style.lineHeight ? [`line-height: ${style.lineHeight}px`] : [],\n ...style.wordWrap ? [\n `word-wrap: ${style.breakWords ? \"break-all\" : \"break-word\"}`,\n `max-width: ${style.wordWrapWidth}px`\n ] : [],\n ...stroke ? [strokeToCSS(stroke)] : [],\n ...style.dropShadow ? [dropShadowToCSS(style.dropShadow)] : [],\n ...style.cssOverrides\n ].join(\";\");\n const cssStyles = [`div { ${cssStyleString} }`];\n tagStyleToCSS(style.tagStyles, cssStyles);\n return cssStyles.join(\" \");\n}\nfunction dropShadowToCSS(dropShadowStyle) {\n const color = Color.shared.setValue(dropShadowStyle.color).setAlpha(dropShadowStyle.alpha).toHexa();\n const x = Math.round(Math.cos(dropShadowStyle.angle) * dropShadowStyle.distance);\n const y = Math.round(Math.sin(dropShadowStyle.angle) * dropShadowStyle.distance);\n const position = `${x}px ${y}px`;\n if (dropShadowStyle.blur > 0) {\n return `text-shadow: ${position} ${dropShadowStyle.blur}px ${color}`;\n }\n return `text-shadow: ${position} ${color}`;\n}\nfunction strokeToCSS(stroke) {\n return [\n `-webkit-text-stroke-width: ${stroke.width}px`,\n `-webkit-text-stroke-color: ${Color.shared.setValue(stroke.color).toHex()}`,\n `text-stroke-width: ${stroke.width}px`,\n `text-stroke-color: ${Color.shared.setValue(stroke.color).toHex()}`,\n \"paint-order: stroke\"\n ].join(\";\");\n}\nconst templates = {\n fontSize: `font-size: {{VALUE}}px`,\n fontFamily: `font-family: {{VALUE}}`,\n fontWeight: `font-weight: {{VALUE}}`,\n fontStyle: `font-style: {{VALUE}}`,\n fontVariant: `font-variant: {{VALUE}}`,\n letterSpacing: `letter-spacing: {{VALUE}}px`,\n align: `text-align: {{VALUE}}`,\n padding: `padding: {{VALUE}}px`,\n whiteSpace: `white-space: {{VALUE}}`,\n lineHeight: `line-height: {{VALUE}}px`,\n wordWrapWidth: `max-width: {{VALUE}}px`\n};\nconst transform = {\n fill: (value) => `color: ${Color.shared.setValue(value).toHex()}`,\n breakWords: (value) => `word-wrap: ${value ? \"break-all\" : \"break-word\"}`,\n stroke: strokeToCSS,\n dropShadow: dropShadowToCSS\n};\nfunction tagStyleToCSS(tagStyles, out) {\n for (const i in tagStyles) {\n const tagStyle = tagStyles[i];\n const cssTagStyle = [];\n for (const j in tagStyle) {\n if (transform[j]) {\n cssTagStyle.push(transform[j](tagStyle[j]));\n } else if (templates[j]) {\n cssTagStyle.push(templates[j].replace(\"{{VALUE}}\", tagStyle[j]));\n }\n }\n out.push(`${i} { ${cssTagStyle.join(\";\")} }`);\n }\n}\n\nexport { textStyleToCSS };\n//# sourceMappingURL=textStyleToCSS.mjs.map\n","import { warn } from '../../utils/logging/warn.mjs';\nimport { TextStyle } from '../text/TextStyle.mjs';\nimport { generateTextStyleKey } from '../text/utils/generateTextStyleKey.mjs';\nimport { textStyleToCSS } from './utils/textStyleToCSS.mjs';\n\n\"use strict\";\nclass HTMLTextStyle extends TextStyle {\n constructor(options = {}) {\n super(options);\n this._cssOverrides = [];\n this.cssOverrides ?? (this.cssOverrides = options.cssOverrides);\n this.tagStyles = options.tagStyles ?? {};\n }\n /** List of style overrides that will be applied to the HTML text. */\n set cssOverrides(value) {\n this._cssOverrides = value instanceof Array ? value : [value];\n this.update();\n }\n get cssOverrides() {\n return this._cssOverrides;\n }\n _generateKey() {\n this._styleKey = generateTextStyleKey(this) + this._cssOverrides.join(\"-\");\n return this._styleKey;\n }\n update() {\n this._cssStyle = null;\n super.update();\n }\n /**\n * Creates a new HTMLTextStyle object with the same values as this one.\n * @returns New cloned HTMLTextStyle object\n */\n clone() {\n return new HTMLTextStyle({\n align: this.align,\n breakWords: this.breakWords,\n dropShadow: this.dropShadow,\n fill: this._fill,\n fontFamily: this.fontFamily,\n fontSize: this.fontSize,\n fontStyle: this.fontStyle,\n fontVariant: this.fontVariant,\n fontWeight: this.fontWeight,\n letterSpacing: this.letterSpacing,\n lineHeight: this.lineHeight,\n padding: this.padding,\n stroke: this._stroke,\n whiteSpace: this.whiteSpace,\n wordWrap: this.wordWrap,\n wordWrapWidth: this.wordWrapWidth,\n cssOverrides: this.cssOverrides\n });\n }\n get cssStyle() {\n if (!this._cssStyle) {\n this._cssStyle = textStyleToCSS(this);\n }\n return this._cssStyle;\n }\n /**\n * Add a style override, this can be any CSS property\n * it will override any built-in style. This is the\n * property and the value as a string (e.g., `color: red`).\n * This will override any other internal style.\n * @param {string} value - CSS style(s) to add.\n * @example\n * style.addOverride('background-color: red');\n */\n addOverride(...value) {\n const toAdd = value.filter((v) => !this.cssOverrides.includes(v));\n if (toAdd.length > 0) {\n this.cssOverrides.push(...toAdd);\n this.update();\n }\n }\n /**\n * Remove any overrides that match the value.\n * @param {string} value - CSS style to remove.\n * @example\n * style.removeOverride('background-color: red');\n */\n removeOverride(...value) {\n const toRemove = value.filter((v) => this.cssOverrides.includes(v));\n if (toRemove.length > 0) {\n this.cssOverrides = this.cssOverrides.filter((v) => !toRemove.includes(v));\n this.update();\n }\n }\n set fill(value) {\n if (typeof value !== \"string\" && typeof value !== \"number\") {\n warn(\"[HTMLTextStyle] only color fill is not supported by HTMLText\");\n }\n super.fill = value;\n }\n set stroke(value) {\n if (value && typeof value !== \"string\" && typeof value !== \"number\") {\n warn(\"[HTMLTextStyle] only color stroke is not supported by HTMLText\");\n }\n super.stroke = value;\n }\n}\n\nexport { HTMLTextStyle };\n//# sourceMappingURL=HtmlTextStyle.mjs.map\n","import { DOMAdapter } from '../../../environment/adapter.mjs';\n\n\"use strict\";\nasync function loadFontAsBase64(url) {\n const response = await DOMAdapter.get().fetch(url);\n const blob = await response.blob();\n const reader = new FileReader();\n const dataSrc = await new Promise((resolve, reject) => {\n reader.onloadend = () => resolve(reader.result);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n return dataSrc;\n}\n\nexport { loadFontAsBase64 };\n//# sourceMappingURL=loadFontAsBase64.mjs.map\n","import { loadFontAsBase64 } from './loadFontAsBase64.mjs';\n\n\"use strict\";\nasync function loadFontCSS(style, url) {\n const dataSrc = await loadFontAsBase64(url);\n return `@font-face {\n font-family: \"${style.fontFamily}\";\n src: url('${dataSrc}');\n font-weight: ${style.fontWeight};\n font-style: ${style.fontStyle};\n }`;\n}\n\nexport { loadFontCSS };\n//# sourceMappingURL=loadFontCSS.mjs.map\n","import { Cache } from '../../../assets/cache/Cache.mjs';\nimport { loadFontCSS } from './loadFontCSS.mjs';\n\n\"use strict\";\nconst FontStylePromiseCache = /* @__PURE__ */ new Map();\nasync function getFontCss(fontFamilies, style, defaultOptions) {\n const fontPromises = fontFamilies.filter((fontFamily) => Cache.has(`${fontFamily}-and-url`)).map((fontFamily, i) => {\n if (!FontStylePromiseCache.has(fontFamily)) {\n const { url } = Cache.get(`${fontFamily}-and-url`);\n if (i === 0) {\n FontStylePromiseCache.set(fontFamily, loadFontCSS(style, url));\n } else {\n FontStylePromiseCache.set(fontFamily, loadFontCSS({\n fontWeight: defaultOptions.fontWeight,\n fontStyle: defaultOptions.fontStyle,\n fontFamily\n }, url));\n }\n }\n return FontStylePromiseCache.get(fontFamily);\n });\n return (await Promise.all(fontPromises)).join(\"\\n\");\n}\n\nexport { FontStylePromiseCache, getFontCss };\n//# sourceMappingURL=getFontCss.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { TexturePool } from '../../rendering/renderers/shared/texture/TexturePool.mjs';\nimport { RendererType } from '../../rendering/renderers/types.mjs';\nimport { isSafari } from '../../utils/browser/isSafari.mjs';\nimport { warn } from '../../utils/logging/warn.mjs';\nimport { BigPool } from '../../utils/pool/PoolGroup.mjs';\nimport { getPo2TextureFromSource } from '../text/utils/getPo2TextureFromSource.mjs';\nimport { HTMLTextRenderData } from './HTMLTextRenderData.mjs';\nimport { HTMLTextStyle } from './HtmlTextStyle.mjs';\nimport { extractFontFamilies } from './utils/extractFontFamilies.mjs';\nimport { getFontCss } from './utils/getFontCss.mjs';\nimport { getSVGUrl } from './utils/getSVGUrl.mjs';\nimport { getTemporaryCanvasFromImage } from './utils/getTemporaryCanvasFromImage.mjs';\nimport { loadSVGImage } from './utils/loadSVGImage.mjs';\nimport { measureHtmlText } from './utils/measureHtmlText.mjs';\n\n\"use strict\";\nclass HTMLTextSystem {\n constructor(renderer) {\n this._activeTextures = {};\n this._renderer = renderer;\n this._createCanvas = renderer.type === RendererType.WEBGPU;\n }\n getTexture(options) {\n return this._buildTexturePromise(\n options.text,\n options.resolution,\n options.style\n );\n }\n getManagedTexture(text, resolution, style, textKey) {\n if (this._activeTextures[textKey]) {\n this._increaseReferenceCount(textKey);\n return this._activeTextures[textKey].promise;\n }\n const promise = this._buildTexturePromise(text, resolution, style).then((texture) => {\n this._activeTextures[textKey].texture = texture;\n return texture;\n });\n this._activeTextures[textKey] = {\n texture: null,\n promise,\n usageCount: 1\n };\n return promise;\n }\n async _buildTexturePromise(text, resolution, style) {\n const htmlTextData = BigPool.get(HTMLTextRenderData);\n const fontFamilies = extractFontFamilies(text, style);\n const fontCSS = await getFontCss(\n fontFamilies,\n style,\n HTMLTextStyle.defaultTextStyle\n );\n const measured = measureHtmlText(text, style, fontCSS, htmlTextData);\n const width = Math.ceil(Math.ceil(Math.max(1, measured.width) + style.padding * 2) * resolution);\n const height = Math.ceil(Math.ceil(Math.max(1, measured.height) + style.padding * 2) * resolution);\n const image = htmlTextData.image;\n image.width = width | 0;\n image.height = height | 0;\n const svgURL = getSVGUrl(text, style, resolution, fontCSS, htmlTextData);\n await loadSVGImage(image, svgURL, isSafari() && fontFamilies.length > 0);\n let resource = image;\n if (this._createCanvas) {\n resource = getTemporaryCanvasFromImage(image, resolution);\n }\n const texture = getPo2TextureFromSource(resource, image.width, image.height, resolution);\n if (this._createCanvas) {\n this._renderer.texture.initSource(texture.source);\n }\n BigPool.return(htmlTextData);\n return texture;\n }\n _increaseReferenceCount(textKey) {\n this._activeTextures[textKey].usageCount++;\n }\n decreaseReferenceCount(textKey) {\n const activeTexture = this._activeTextures[textKey];\n if (!activeTexture)\n return;\n activeTexture.usageCount--;\n if (activeTexture.usageCount === 0) {\n if (activeTexture.texture) {\n this._cleanUp(activeTexture);\n } else {\n activeTexture.promise.then((texture) => {\n activeTexture.texture = texture;\n this._cleanUp(activeTexture);\n }).catch(() => {\n warn(\"HTMLTextSystem: Failed to clean texture\");\n });\n }\n this._activeTextures[textKey] = null;\n }\n }\n _cleanUp(activeTexture) {\n TexturePool.returnTexture(activeTexture.texture);\n activeTexture.texture.source.resource = null;\n activeTexture.texture.source.uploadMethodId = \"unknown\";\n }\n getReferenceCount(textKey) {\n return this._activeTextures[textKey].usageCount;\n }\n destroy() {\n this._activeTextures = null;\n }\n}\n/** @ignore */\nHTMLTextSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"htmlText\"\n};\nHTMLTextSystem.defaultFontOptions = {\n fontFamily: \"Arial\",\n fontStyle: \"normal\",\n fontWeight: \"normal\"\n};\n\nexport { HTMLTextSystem };\n//# sourceMappingURL=HTMLTextSystem.mjs.map\n","\"use strict\";\nfunction loadSVGImage(image, url, delay) {\n return new Promise(async (resolve) => {\n if (delay) {\n await new Promise((resolve2) => setTimeout(resolve2, 100));\n }\n image.onload = () => {\n resolve();\n };\n image.src = `data:image/svg+xml;charset=utf8,${encodeURIComponent(url)}`;\n image.crossOrigin = \"anonymous\";\n });\n}\n\nexport { loadSVGImage };\n//# sourceMappingURL=loadSVGImage.mjs.map\n","\"use strict\";\nfunction extractFontFamilies(text, style) {\n const fontFamily = style.fontFamily;\n const fontFamilies = [];\n const dedupe = {};\n const regex = /font-family:([^;\"\\s]+)/g;\n const matches = text.match(regex);\n function addFontFamily(fontFamily2) {\n if (!dedupe[fontFamily2]) {\n fontFamilies.push(fontFamily2);\n dedupe[fontFamily2] = true;\n }\n }\n if (Array.isArray(fontFamily)) {\n for (let i = 0; i < fontFamily.length; i++) {\n addFontFamily(fontFamily[i]);\n }\n } else {\n addFontFamily(fontFamily);\n }\n if (matches) {\n matches.forEach((match) => {\n const fontFamily2 = match.split(\":\")[1].trim();\n addFontFamily(fontFamily2);\n });\n }\n for (const i in style.tagStyles) {\n const fontFamily2 = style.tagStyles[i].fontFamily;\n addFontFamily(fontFamily2);\n }\n return fontFamilies;\n}\n\nexport { extractFontFamilies };\n//# sourceMappingURL=extractFontFamilies.mjs.map\n","\"use strict\";\nfunction getSVGUrl(text, style, resolution, fontCSS, htmlTextData) {\n const { domElement, styleElement, svgRoot } = htmlTextData;\n domElement.innerHTML = `<style>${style.cssStyle}</style><div>${text}</div>`;\n domElement.setAttribute(\"style\", `transform: scale(${resolution});transform-origin: top left; display: inline-block`);\n styleElement.textContent = fontCSS;\n const { width, height } = htmlTextData.image;\n svgRoot.setAttribute(\"width\", width.toString());\n svgRoot.setAttribute(\"height\", height.toString());\n return new XMLSerializer().serializeToString(svgRoot);\n}\n\nexport { getSVGUrl };\n//# sourceMappingURL=getSVGUrl.mjs.map\n","import { DOMAdapter } from '../../environment/adapter.mjs';\n\n\"use strict\";\nfunction isSafari() {\n const { userAgent } = DOMAdapter.get().getNavigator();\n return /^((?!chrome|android).)*safari/i.test(userAgent);\n}\n\nexport { isSafari };\n//# sourceMappingURL=isSafari.mjs.map\n","import { CanvasPool } from '../../../rendering/renderers/shared/texture/CanvasPool.mjs';\n\n\"use strict\";\nfunction getTemporaryCanvasFromImage(image, resolution) {\n const canvasAndContext = CanvasPool.getOptimalCanvasAndContext(\n image.width,\n image.height,\n resolution\n );\n const { context } = canvasAndContext;\n context.clearRect(0, 0, image.width, image.height);\n context.drawImage(image, 0, 0);\n CanvasPool.returnCanvasAndContext(canvasAndContext);\n return canvasAndContext.canvas;\n}\n\nexport { getTemporaryCanvasFromImage };\n//# sourceMappingURL=getTemporaryCanvasFromImage.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { HTMLTextPipe } from './HTMLTextPipe.mjs';\nimport { HTMLTextSystem } from './HTMLTextSystem.mjs';\n\n\"use strict\";\nextensions.add(HTMLTextSystem);\nextensions.add(HTMLTextPipe);\n//# sourceMappingURL=init.mjs.map\n","import { Color } from '../../../../color/Color.mjs';\nimport { Matrix } from '../../../../maths/matrix/Matrix.mjs';\nimport { Texture } from '../../../../rendering/renderers/shared/texture/Texture.mjs';\nimport { warn } from '../../../../utils/logging/warn.mjs';\nimport { FillGradient } from '../../../graphics/shared/fill/FillGradient.mjs';\nimport { FillPattern } from '../../../graphics/shared/fill/FillPattern.mjs';\n\n\"use strict\";\nfunction getCanvasFillStyle(fillStyle, context) {\n if (fillStyle.texture === Texture.WHITE && !fillStyle.fill) {\n return Color.shared.setValue(fillStyle.color).toHex();\n } else if (!fillStyle.fill) {\n const pattern = context.createPattern(fillStyle.texture.source.resource, \"repeat\");\n const tempMatrix = fillStyle.matrix.copyTo(Matrix.shared);\n tempMatrix.scale(fillStyle.texture.frame.width, fillStyle.texture.frame.height);\n pattern.setTransform(tempMatrix);\n return pattern;\n } else if (fillStyle.fill instanceof FillPattern) {\n const fillPattern = fillStyle.fill;\n const pattern = context.createPattern(fillPattern.texture.source.resource, \"repeat\");\n const tempMatrix = fillPattern.transform.copyTo(Matrix.shared);\n tempMatrix.scale(\n fillPattern.texture.frame.width,\n fillPattern.texture.frame.height\n );\n pattern.setTransform(tempMatrix);\n return pattern;\n } else if (fillStyle.fill instanceof FillGradient) {\n const fillGradient = fillStyle.fill;\n if (fillGradient.type === \"linear\") {\n const gradient = context.createLinearGradient(\n fillGradient.x0,\n fillGradient.y0,\n fillGradient.x1,\n fillGradient.y1\n );\n fillGradient.gradientStops.forEach((stop) => {\n gradient.addColorStop(stop.offset, Color.shared.setValue(stop.color).toHex());\n });\n return gradient;\n }\n }\n warn(\"FillStyle not recognised\", fillStyle);\n return \"red\";\n}\n\nexport { getCanvasFillStyle };\n//# sourceMappingURL=getCanvasFillStyle.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { updateQuadBounds } from '../../../utils/data/updateQuadBounds.mjs';\nimport { BigPool } from '../../../utils/pool/PoolGroup.mjs';\nimport { BatchableSprite } from '../../sprite/BatchableSprite.mjs';\n\n\"use strict\";\nclass CanvasTextPipe {\n constructor(renderer) {\n this._gpuText = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n validateRenderable(text) {\n const gpuText = this._getGpuText(text);\n const newKey = text._getKey();\n if (gpuText.currentKey !== newKey) {\n const resolution = text.resolution ?? this._renderer.resolution;\n const { width, height } = this._renderer.canvasText.getTextureSize(\n text.text,\n resolution,\n text._style\n );\n if (\n // is only being used by this text:\n this._renderer.canvasText.getReferenceCount(gpuText.currentKey) === 1 && width === gpuText.texture._source.width && height === gpuText.texture._source.height\n ) {\n return false;\n }\n return true;\n }\n return false;\n }\n addRenderable(text, _instructionSet) {\n const gpuText = this._getGpuText(text);\n const batchableSprite = gpuText.batchableSprite;\n if (text._didTextUpdate) {\n this._updateText(text);\n }\n this._renderer.renderPipes.batch.addToBatch(batchableSprite);\n }\n updateRenderable(text) {\n const gpuText = this._getGpuText(text);\n const batchableSprite = gpuText.batchableSprite;\n if (text._didTextUpdate) {\n this._updateText(text);\n }\n batchableSprite.batcher.updateElement(batchableSprite);\n }\n destroyRenderable(text) {\n this._destroyRenderableById(text.uid);\n }\n _destroyRenderableById(textUid) {\n const gpuText = this._gpuText[textUid];\n this._renderer.canvasText.decreaseReferenceCount(gpuText.currentKey);\n BigPool.return(gpuText.batchableSprite);\n this._gpuText[textUid] = null;\n }\n _updateText(text) {\n const newKey = text._getKey();\n const gpuText = this._getGpuText(text);\n const batchableSprite = gpuText.batchableSprite;\n if (gpuText.currentKey !== newKey) {\n this._updateGpuText(text);\n }\n text._didTextUpdate = false;\n const padding = text._style.padding;\n updateQuadBounds(batchableSprite.bounds, text._anchor, batchableSprite.texture, padding);\n }\n _updateGpuText(text) {\n const gpuText = this._getGpuText(text);\n const batchableSprite = gpuText.batchableSprite;\n if (gpuText.texture) {\n this._renderer.canvasText.decreaseReferenceCount(gpuText.currentKey);\n }\n gpuText.texture = batchableSprite.texture = this._renderer.canvasText.getManagedTexture(text);\n gpuText.currentKey = text._getKey();\n batchableSprite.texture = gpuText.texture;\n }\n _getGpuText(text) {\n return this._gpuText[text.uid] || this.initGpuText(text);\n }\n initGpuText(text) {\n const gpuTextData = {\n texture: null,\n currentKey: \"--\",\n batchableSprite: BigPool.get(BatchableSprite)\n };\n gpuTextData.batchableSprite.renderable = text;\n gpuTextData.batchableSprite.bounds = { minX: 0, maxX: 1, minY: 0, maxY: 0 };\n gpuTextData.batchableSprite.roundPixels = this._renderer._roundPixels | text._roundPixels;\n this._gpuText[text.uid] = gpuTextData;\n this._updateText(text);\n text.on(\"destroyed\", () => {\n this.destroyRenderable(text);\n });\n return gpuTextData;\n }\n destroy() {\n for (const i in this._gpuText) {\n this._destroyRenderableById(i);\n }\n this._gpuText = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nCanvasTextPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"text\"\n};\n\nexport { CanvasTextPipe };\n//# sourceMappingURL=CanvasTextPipe.mjs.map\n","import { Rectangle } from '../../maths/shapes/Rectangle.mjs';\n\n\"use strict\";\nfunction checkRow(data, width, y) {\n for (let x = 0, index = 4 * y * width; x < width; ++x, index += 4) {\n if (data[index + 3] !== 0)\n return false;\n }\n return true;\n}\nfunction checkColumn(data, width, x, top, bottom) {\n const stride = 4 * width;\n for (let y = top, index = top * stride + 4 * x; y <= bottom; ++y, index += stride) {\n if (data[index + 3] !== 0)\n return false;\n }\n return true;\n}\nfunction getCanvasBoundingBox(canvas, resolution = 1) {\n const { width, height } = canvas;\n const context = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n if (context === null) {\n throw new TypeError(\"Failed to get canvas 2D context\");\n }\n const imageData = context.getImageData(0, 0, width, height);\n const data = imageData.data;\n let left = 0;\n let top = 0;\n let right = width - 1;\n let bottom = height - 1;\n while (top < height && checkRow(data, width, top))\n ++top;\n if (top === height)\n return Rectangle.EMPTY;\n while (checkRow(data, width, bottom))\n --bottom;\n while (checkColumn(data, width, left, top, bottom))\n ++left;\n while (checkColumn(data, width, right, top, bottom))\n --right;\n ++right;\n ++bottom;\n return new Rectangle(left / resolution, top / resolution, (right - left) / resolution, (bottom - top) / resolution);\n}\n\nexport { getCanvasBoundingBox };\n//# sourceMappingURL=getCanvasBoundingBox.mjs.map\n","import { Color } from '../../../color/Color.mjs';\nimport { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { nextPow2 } from '../../../maths/misc/pow2.mjs';\nimport { CanvasPool } from '../../../rendering/renderers/shared/texture/CanvasPool.mjs';\nimport { TexturePool } from '../../../rendering/renderers/shared/texture/TexturePool.mjs';\nimport { getCanvasBoundingBox } from '../../../utils/canvas/getCanvasBoundingBox.mjs';\nimport { deprecation } from '../../../utils/logging/deprecation.mjs';\nimport { TextStyle } from '../TextStyle.mjs';\nimport { getPo2TextureFromSource } from '../utils/getPo2TextureFromSource.mjs';\nimport { CanvasTextMetrics } from './CanvasTextMetrics.mjs';\nimport { fontStringFromTextStyle } from './utils/fontStringFromTextStyle.mjs';\nimport { getCanvasFillStyle } from './utils/getCanvasFillStyle.mjs';\n\n\"use strict\";\nclass CanvasTextSystem {\n constructor(_renderer) {\n this._activeTextures = {};\n this._renderer = _renderer;\n }\n getTextureSize(text, resolution, style) {\n const measured = CanvasTextMetrics.measureText(text || \" \", style);\n let width = Math.ceil(Math.ceil(Math.max(1, measured.width) + style.padding * 2) * resolution);\n let height = Math.ceil(Math.ceil(Math.max(1, measured.height) + style.padding * 2) * resolution);\n width = Math.ceil(width - 1e-6);\n height = Math.ceil(height - 1e-6);\n width = nextPow2(width);\n height = nextPow2(height);\n return { width, height };\n }\n getTexture(options, resolution, style, _textKey) {\n if (typeof options === \"string\") {\n deprecation(\"8.0.0\", \"CanvasTextSystem.getTexture: Use object TextOptions instead of separate arguments\");\n options = {\n text: options,\n style,\n resolution\n };\n }\n if (!(options.style instanceof TextStyle)) {\n options.style = new TextStyle(options.style);\n }\n const { texture, canvasAndContext } = this.createTextureAndCanvas(\n options\n );\n this._renderer.texture.initSource(texture._source);\n CanvasPool.returnCanvasAndContext(canvasAndContext);\n return texture;\n }\n createTextureAndCanvas(options) {\n const { text, style } = options;\n const resolution = options.resolution ?? this._renderer.resolution;\n const measured = CanvasTextMetrics.measureText(text || \" \", style);\n const width = Math.ceil(Math.ceil(Math.max(1, measured.width) + style.padding * 2) * resolution);\n const height = Math.ceil(Math.ceil(Math.max(1, measured.height) + style.padding * 2) * resolution);\n const canvasAndContext = CanvasPool.getOptimalCanvasAndContext(width, height);\n const { canvas } = canvasAndContext;\n this.renderTextToCanvas(text, style, resolution, canvasAndContext);\n const texture = getPo2TextureFromSource(canvas, width, height, resolution);\n if (style.trim) {\n const trimmed = getCanvasBoundingBox(canvas, resolution);\n texture.frame.copyFrom(trimmed);\n texture.updateUvs();\n }\n return { texture, canvasAndContext };\n }\n getManagedTexture(text) {\n const textKey = text._getKey();\n if (this._activeTextures[textKey]) {\n this._increaseReferenceCount(textKey);\n return this._activeTextures[textKey].texture;\n }\n const { texture, canvasAndContext } = this.createTextureAndCanvas(text);\n this._activeTextures[textKey] = {\n canvasAndContext,\n texture,\n usageCount: 1\n };\n return texture;\n }\n _increaseReferenceCount(textKey) {\n this._activeTextures[textKey].usageCount++;\n }\n decreaseReferenceCount(textKey) {\n const activeTexture = this._activeTextures[textKey];\n activeTexture.usageCount--;\n if (activeTexture.usageCount === 0) {\n CanvasPool.returnCanvasAndContext(activeTexture.canvasAndContext);\n TexturePool.returnTexture(activeTexture.texture);\n const source = activeTexture.texture.source;\n source.resource = null;\n source.uploadMethodId = \"unknown\";\n source.alphaMode = \"no-premultiply-alpha\";\n this._activeTextures[textKey] = null;\n }\n }\n getReferenceCount(textKey) {\n return this._activeTextures[textKey].usageCount;\n }\n /**\n * Renders text to its canvas, and updates its texture.\n *\n * By default this is used internally to ensure the texture is correct before rendering,\n * but it can be used called externally, for example from this class to 'pre-generate' the texture from a piece of text,\n * and then shared across multiple Sprites.\n * @param text\n * @param style\n * @param resolution\n * @param canvasAndContext\n */\n renderTextToCanvas(text, style, resolution, canvasAndContext) {\n const { canvas, context } = canvasAndContext;\n const font = fontStringFromTextStyle(style);\n const measured = CanvasTextMetrics.measureText(text || \" \", style);\n const lines = measured.lines;\n const lineHeight = measured.lineHeight;\n const lineWidths = measured.lineWidths;\n const maxLineWidth = measured.maxLineWidth;\n const fontProperties = measured.fontProperties;\n const height = canvas.height;\n context.resetTransform();\n context.scale(resolution, resolution);\n const padding = style.padding * 2;\n context.clearRect(0, 0, measured.width + 4 + padding, measured.height + 4 + padding);\n if (style._stroke?.width) {\n const strokeStyle = style._stroke;\n context.lineWidth = strokeStyle.width;\n context.miterLimit = strokeStyle.miterLimit;\n context.lineJoin = strokeStyle.join;\n context.lineCap = strokeStyle.cap;\n }\n context.font = font;\n let linePositionX;\n let linePositionY;\n const passesCount = style.dropShadow ? 2 : 1;\n for (let i = 0; i < passesCount; ++i) {\n const isShadowPass = style.dropShadow && i === 0;\n const dsOffsetText = isShadowPass ? Math.ceil(Math.max(1, height) + style.padding * 2) : 0;\n const dsOffsetShadow = dsOffsetText * resolution;\n if (isShadowPass) {\n context.fillStyle = \"black\";\n context.strokeStyle = \"black\";\n const shadowOptions = style.dropShadow;\n const dropShadowColor = shadowOptions.color;\n const dropShadowAlpha = shadowOptions.alpha;\n context.shadowColor = Color.shared.setValue(dropShadowColor).setAlpha(dropShadowAlpha).toRgbaString();\n const dropShadowBlur = shadowOptions.blur * resolution;\n const dropShadowDistance = shadowOptions.distance * resolution;\n context.shadowBlur = dropShadowBlur;\n context.shadowOffsetX = Math.cos(shadowOptions.angle) * dropShadowDistance;\n context.shadowOffsetY = Math.sin(shadowOptions.angle) * dropShadowDistance + dsOffsetShadow;\n } else {\n context.globalAlpha = style._fill?.alpha ?? 1;\n context.fillStyle = style._fill ? getCanvasFillStyle(style._fill, context) : null;\n if (style._stroke?.width) {\n context.strokeStyle = getCanvasFillStyle(style._stroke, context);\n }\n context.shadowColor = \"black\";\n }\n let linePositionYShift = (lineHeight - fontProperties.fontSize) / 2;\n if (lineHeight - fontProperties.fontSize < 0) {\n linePositionYShift = 0;\n }\n const strokeWidth = style._stroke?.width ?? 0;\n for (let i2 = 0; i2 < lines.length; i2++) {\n linePositionX = strokeWidth / 2;\n linePositionY = strokeWidth / 2 + i2 * lineHeight + fontProperties.ascent + linePositionYShift;\n if (style.align === \"right\") {\n linePositionX += maxLineWidth - lineWidths[i2];\n } else if (style.align === \"center\") {\n linePositionX += (maxLineWidth - lineWidths[i2]) / 2;\n }\n if (style._stroke?.width) {\n this._drawLetterSpacing(\n lines[i2],\n style,\n canvasAndContext,\n linePositionX + style.padding,\n linePositionY + style.padding - dsOffsetText,\n true\n );\n }\n if (style._fill !== void 0) {\n this._drawLetterSpacing(\n lines[i2],\n style,\n canvasAndContext,\n linePositionX + style.padding,\n linePositionY + style.padding - dsOffsetText\n );\n }\n }\n }\n }\n /**\n * Render the text with letter-spacing.\n * @param text - The text to draw\n * @param style\n * @param canvasAndContext\n * @param x - Horizontal position to draw the text\n * @param y - Vertical position to draw the text\n * @param isStroke - Is this drawing for the outside stroke of the\n * text? If not, it's for the inside fill\n */\n _drawLetterSpacing(text, style, canvasAndContext, x, y, isStroke = false) {\n const { context } = canvasAndContext;\n const letterSpacing = style.letterSpacing;\n let useExperimentalLetterSpacing = false;\n if (CanvasTextMetrics.experimentalLetterSpacingSupported) {\n if (CanvasTextMetrics.experimentalLetterSpacing) {\n context.letterSpacing = `${letterSpacing}px`;\n context.textLetterSpacing = `${letterSpacing}px`;\n useExperimentalLetterSpacing = true;\n } else {\n context.letterSpacing = \"0px\";\n context.textLetterSpacing = \"0px\";\n }\n }\n if (letterSpacing === 0 || useExperimentalLetterSpacing) {\n if (isStroke) {\n context.strokeText(text, x, y);\n } else {\n context.fillText(text, x, y);\n }\n return;\n }\n let currentPosition = x;\n const stringArray = CanvasTextMetrics.graphemeSegmenter(text);\n let previousWidth = context.measureText(text).width;\n let currentWidth = 0;\n for (let i = 0; i < stringArray.length; ++i) {\n const currentChar = stringArray[i];\n if (isStroke) {\n context.strokeText(currentChar, currentPosition, y);\n } else {\n context.fillText(currentChar, currentPosition, y);\n }\n let textStr = \"\";\n for (let j = i + 1; j < stringArray.length; ++j) {\n textStr += stringArray[j];\n }\n currentWidth = context.measureText(textStr).width;\n currentPosition += previousWidth - currentWidth + letterSpacing;\n previousWidth = currentWidth;\n }\n }\n destroy() {\n this._activeTextures = null;\n }\n}\n/** @ignore */\nCanvasTextSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"canvasText\"\n};\n\nexport { CanvasTextSystem };\n//# sourceMappingURL=CanvasTextSystem.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { CanvasTextPipe } from './canvas/CanvasTextPipe.mjs';\nimport { CanvasTextSystem } from './canvas/CanvasTextSystem.mjs';\n\n\"use strict\";\nextensions.add(CanvasTextSystem);\nextensions.add(CanvasTextPipe);\n//# sourceMappingURL=init.mjs.map\n","import { TexturePool } from '../../../rendering/renderers/shared/texture/TexturePool.mjs';\nimport { Bounds } from '../../container/bounds/Bounds.mjs';\n\n\"use strict\";\nconst tempBounds = new Bounds();\nfunction getPo2TextureFromSource(image, width, height, resolution) {\n const bounds = tempBounds;\n bounds.minX = 0;\n bounds.minY = 0;\n bounds.maxX = image.width / resolution | 0;\n bounds.maxY = image.height / resolution | 0;\n const texture = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n resolution,\n false\n );\n texture.source.uploadMethodId = \"image\";\n texture.source.resource = image;\n texture.source.alphaMode = \"premultiply-alpha-on-upload\";\n texture.frame.width = width / resolution;\n texture.frame.height = height / resolution;\n texture.source.emit(\"update\", texture.source);\n texture.updateUvs();\n return texture;\n}\n\nexport { getPo2TextureFromSource };\n//# sourceMappingURL=getPo2TextureFromSource.mjs.map\n"],"names":["ResizePlugin","init","options","Object","defineProperty","set","dom","globalThis","removeEventListener","queueResize","_resizeTo","addEventListener","resize","get","_cancelResize","_resizeId","requestAnimationFrame","cancelAnimationFrame","width","height","window","innerWidth","innerHeight","clientWidth","clientHeight","renderer","render","resizeTo","destroy","extension","TickerPlugin","assign","autoStart","sharedTicker","ticker","_ticker","remove","add","stop","start","oldTicker","FilterPipe","constructor","_renderer","push","filterEffect","container","instructionSet","renderPipes","batch","break","renderPipeId","canBundle","action","pop","_filterEffect","_container","execute","instruction","filter","type","name","quadGeometry","attributes","aPosition","buffer","Float32Array","location","format","stride","offset","indexBuffer","Uint32Array","FilterSystem","_filterStackIndex","_filterStack","_filterGlobalUniforms","uInputSize","value","uInputPixel","uInputClamp","uOutputFrame","uGlobalFrame","uOutputTexture","_globalFilterBindGroup","activeBackTexture","_activeFilterData","backTexture","filters","_getFilterData","filterData","length","skip","bounds","renderables","getGlobalRenderableBounds","clear","tempMatrix","matrix","i","renderable","globalDisplayStatus","worldTransform","addBounds","filterArea","addRect","applyMatrix","target","_getGlobalBoundsRecursive","localDisplayStatus","measurable","manageEffects","effects","localBounds","isRenderGroupRoot","boundsArea","viewBounds","addFrame","minX","minY","maxX","maxY","groupTransform","children","advanced","renderGroup","copyTo","invert","relativeGroupTransform","isValid","localTransform","colorTextureSource","renderTarget","rootRenderTarget","colorTexture","source","resolution","_resolution","padding","antialias","blendRequired","enabled","Math","min","compatibleRenderers","backBuffer","useBackBuffer","viewPort","rootViewPort","scale","fitBounds","pad","ceil","isPositive","previousRenderSurface","renderSurface","inputTexture","bind","globalUniforms","finishRenderPass","previousBounds","getRenderTarget","getBackTexture","setResource","style","apply","flip","flop","t","lastRenderSurface","backgroundResolution","x","y","floor","copyToTexture","applyFilter","input","output","isFinalTarget","currentIndex","filterUniforms","uniforms","outputFrame","inputSize","inputPixel","inputClamp","globalFrame","outputTexture","lastIndex","filterData2","frame","pixelWidth","pixelHeight","rootTexture","isRoot","update","uniformBatch","batchUniforms","getUboResource","groups","encoder","draw","geometry","shader","state","_state","topology","calculateSpriteMatrix","outputMatrix","sprite","data","mappedMatrix","_source","prepend","texture","translate","anchor","sampleValues","Int32Array","batchSamplersUniformGroup","uTextures","size","isStatic","CanvasPool","CanvasPoolClass","canvasOptions","_canvasPool","create","enableFullScreen","_createCanvasAndContext","canvas","createCanvas","context","getContext","getOptimalCanvasAndContext","minWidth","minHeight","key","canvasAndContext","returnCanvasAndContext","GraphicsPipe","adaptor","_graphicsBatchesHash","_adaptor","validateRenderable","graphics","wasBatched","uid","gpuContext","graphicsContext","updateGpuContext","isBatchable","addRenderable","_didGraphicsUpdate","_rebuild","_addToBatcher","updateRenderable","batches","batcher","updateElement","destroyRenderable","_removeBatchForRenderable","isRenderable","contextSystem","getGpuContext","customShader","blendMode","groupBlendMode","localUniforms","resources","uTransformMatrix","uRound","_roundPixels","groupColorAlpha","uColor","_initBatchesForRenderable","batched","batchPipe","_getBatchesForRenderable","addToBatch","roundPixels","map","batchClone","on","graphicsUid","forEach","MeshPipe","localUniformsBindGroup","_meshDataHash","_gpuBatchableMeshHash","mesh","meshData","_getMeshData","isBatched","_geometry","indices","indexSize","positions","vertexSize","batchableMesh","_getBatchableMesh","checkAndUpdateTexture","gpuBatchableMesh","_texture","gpuMesh","_initMeshData","_initBatchableMesh","BatchableMesh","_uvUpdateId","_textureMatrixUpdateId","reset","packIndex","index","indicesOffset","packAttributes","float32View","uint32View","textureId","wt","textureIdAndRound","a","b","c","d","tx","ty","uvBuffer","getBuffer","uvs","transformedUvs","textureMatrix","isSimple","_transformedUvs","_updateID","multiplyUvs","abgr","_MeshGeometry","args","defaultOptions","shrinkToFit","shrinkBuffersToFit","positionBuffer","label","usage","aUV","batchMode","MeshGeometry","_PlaneGeometry","verticesX","verticesY","build","total","verts","sizeX","sizeY","totalSub","xpos","ypos","value2","value3","value4","buffers","PlaneGeometry","_NineSliceGeometry","_originalWidth","originalWidth","_originalHeight","originalHeight","_leftWidth","leftWidth","_rightWidth","rightWidth","_topHeight","topHeight","_bottomHeight","bottomHeight","updateUvs","updatePositions","w","scaleW","h","_uvw","_uvh","NineSliceSpritePipe","_gpuSpriteHash","_instructionSet","gpuSprite","_getGpuSprite","_didSpriteUpdate","_updateBatchableSprite","batchableSprite","_initGPUSprite","gpuProgram","glProgram","tilingBit","vertex","header","main","fragment","tilingBitGl","TilingSpriteShader","bits","tilingUniforms","uMapCoord","uClampFrame","uClampOffset","uTextureTransform","uSizeAnchor","uTexture","uSampler","updateUniforms","anchorX","anchorY","textureWidth","textureHeight","mapCoord","QuadGeometry","sharedQuad","TilingSpritePipe","_tilingSpriteDataHash","tilingSpriteData","_getTilingSpriteData","couldBatch","canBatch","_updateCanBatch","tilingSprite","_didTilingSpriteUpdate","_updateBatchableMesh","bindGroup","_tileTransform","_initTilingSpriteData","slice","addressMode","setUvs","_applyAnchorToTexture","copyFrom","array","setPositions","renderableData","_nonPowOf2wrapping","supports","nonPowOf2wrapping","isPowerOfTwo","AbstractBitmapFont","arguments","chars","lineHeight","fontFamily","fontMetrics","fontSize","ascent","descent","baseLineOffset","distanceField","range","pages","baseMeasurementFontSize","baseRenderedFontSize","font","pageTextures","distanceFieldRange","distanceFieldType","destroyTextures","emit","removeAllListeners","page","resolveCharacters","result","j","item","Array","isArray","Error","startCode","charCodeAt","endCode","i2","String","fromCharCode","from","DynamicBitmapFont","_padding","_measureCache","_currentChars","_currentX","_currentY","_currentPageIndex","_skipKerning","dynamicOptions","clone","overrideFill","_fill","color","alpha","fill","requestedFontSize","overrideSize","_stroke","_style","skipKerning","ensureCharacters","pageData","charList","char","includes","self","indexOf","_nextPage","textureSource","currentX","currentY","fontScale","widthScale","fontStyle","maxCharHeight","skipTexture","metrics","paddedWidth","paddedHeight","max","pageData2","xAdvance","dropShadow","distance","id","codePointAt","xOffset","yOffset","kerning","_drawGlyph","px","py","_applyKerning","newChars","measureCache","first","second","c1","measureText","c2","amount","textureResolution","_setupContext","resource","alphaMode","textBaseline","stroke","strokeThickness","lineWidth","lineJoin","join","miterLimit","strokeStyle","fillStyle","shadowOptions","rgb","toArray","dropShadowBlur","blur","dropShadowDistance","shadowColor","shadowBlur","shadowOffsetX","cos","angle","shadowOffsetY","sin","text","fontProperties","strokeText","fillText","getBitmapTextLayout","layoutData","offsetY","lines","charPositions","spaceWidth","spacesIndex","currentLine","previousChar","firstWord","currentWord","spaceWord","nextWord","word","position","nextLine","lastChar","adjustedLetterSpacing","letterSpacing","adjustedWordWrapWidth","wordWrapWidth","isEnd","charData","isSpace","test","wordWrap","nextCharWidth","align","alignCenter","measurementData","line","alignRight","alignJustify","indy","spaceIndex","totalSpaces","newSpaceWidth","BitmapFontManager","BitmapFontManagerClass","ALPHA","NUMERIC","ALPHANUMERIC","ASCII","getFont","fontFamilyKey","C","fnt","once","dynamicFont","getLayout","bitmapFont","split","install","textStyle","flatChars","uninstall","cacheKey","BitmapFont","url","textures","keys","parseInt","textureFrame","frameReal","bitmapFontTextParser","startsWith","parse","txt","items","match","rawData","info","common","kernings","attributeList","itemData","strValue","replace","floatValue","parseFloat","isNaN","distanceRange","fieldType","face","file","base","charNode","letter","xoffset","yoffset","xadvance","bitmapFontXMLParser","xml","getElementsByTagName","getAttribute","bitmapFontXMLStringParser","parseXML","validExtensions","bitmapFontCachePlugin","asset","getCacheableAssets","out","loadBitmapFont","priority","toLowerCase","testParse","loader","bitmapFontData","src","textureUrls","pageFile","imagePath","loadedTextures","load","_options","response","fetch","unload","_resolvedAsset","Promise","all","_sourceOrigin","localUniformMSDFBit","end","localUniformMSDFBitGl","mSDFBit","mSDFBitGl","SdfShader","uDistance","batchSamplers","BitmapTextPipe","_gpuBitmapText","bitmapText","graphicsRenderable","_getGpuBitmapText","_didTextUpdate","_updateContext","syncWithProxy","_updateDistanceField","_destroyRenderableByUid","renderableUid","proxyGraphics","_sdfShader","bitmapTextLayout","_anchor","_x","_y","tint","round","initGpuText","proxyRenderable","worldScale","abs","sqrt","proxy","groupColor","groupAlpha","tempHTMLTextRenderData","HTMLTextPipe","_gpuText","htmlText","gpuText","_getGpuText","newKey","_getKey","textureNeedsUploading","currentKey","_updateText","_destroyRenderableById","htmlTextUid","decreaseReferenceCount","_updateGpuText","catch","e","console","error","generatingTexture","getManagedTexture","onViewUpdate","gpuTextData","nssvg","nsxhtml","HTMLTextRenderData","svgRoot","document","createElementNS","foreignObject","domElement","styleElement","image","Image","setAttribute","overflow","appendChild","dropShadowToCSS","dropShadowStyle","setAlpha","toHexa","strokeToCSS","toHex","templates","fontWeight","fontVariant","whiteSpace","transform","breakWords","HTMLTextStyle","_cssOverrides","cssOverrides","tagStyles","_generateKey","_styleKey","_cssStyle","cssStyle","textStyleToCSS","cssStyleString","cssStyles","tagStyleToCSS","tagStyle","cssTagStyle","addOverride","toAdd","v","removeOverride","toRemove","loadFontAsBase64","blob","reader","FileReader","resolve","reject","onloadend","onerror","readAsDataURL","loadFontCSS","dataSrc","FontStylePromiseCache","Map","getFontCss","fontFamilies","fontPromises","has","HTMLTextSystem","_activeTextures","_createCanvas","getTexture","_buildTexturePromise","textKey","_increaseReferenceCount","promise","then","usageCount","delay","htmlTextData","extractFontFamilies","dedupe","matches","addFontFamily","fontFamily2","trim","fontCSS","defaultTextStyle","measured","measureHtmlText","fontStyleCSS","htmlTextRenderData","innerHTML","textContent","body","contentBounds","getBoundingClientRect","descenderPadding","svgURL","getSVGUrl","toString","XMLSerializer","serializeToString","isSafari","userAgent","getNavigator","resolve2","setTimeout","onload","encodeURIComponent","crossOrigin","getTemporaryCanvasFromImage","clearRect","drawImage","initSource","activeTexture","_cleanUp","uploadMethodId","getReferenceCount","defaultFontOptions","getCanvasFillStyle","fillPattern","pattern","createPattern","setTransform","fillGradient","gradient","createLinearGradient","x0","y0","x1","y1","gradientStops","addColorStop","CanvasTextPipe","canvasText","getTextureSize","textUid","checkRow","checkColumn","top","bottom","CanvasTextSystem","_textKey","createTextureAndCanvas","renderTextToCanvas","trimmed","getCanvasBoundingBox","willReadFrequently","TypeError","imageData","getImageData","left","right","linePositionX","linePositionY","lineWidths","maxLineWidth","resetTransform","lineCap","cap","passesCount","isShadowPass","dsOffsetText","dsOffsetShadow","dropShadowColor","dropShadowAlpha","toRgbaString","globalAlpha","linePositionYShift","strokeWidth","_drawLetterSpacing","isStroke","useExperimentalLetterSpacing","textLetterSpacing","currentPosition","stringArray","previousWidth","currentWidth","currentChar","textStr","tempBounds","getPo2TextureFromSource"],"mappings":"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"}