@annotorious/openseadragon 3.2.0 → 3.2.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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-Bxy_vBCw.js","sources":["../../annotorious-core/dist/annotorious-core.es.js","../../annotorious/dist/annotorious.es.js","../../../node_modules/svelte/src/runtime/internal/utils.js","../../../node_modules/svelte/src/runtime/internal/globals.js","../../../node_modules/svelte/src/runtime/internal/dom.js","../../../node_modules/svelte/src/runtime/internal/lifecycle.js","../../../node_modules/svelte/src/runtime/internal/scheduler.js","../../../node_modules/svelte/src/runtime/internal/transitions.js","../../../node_modules/svelte/src/runtime/internal/each.js","../../../node_modules/svelte/src/runtime/internal/Component.js","../../../node_modules/svelte/src/shared/version.js","../../../node_modules/svelte/src/runtime/internal/disclose-version/index.js","../../../node_modules/pixi.js/lib/extensions/Extensions.mjs","../../../node_modules/pixi.js/lib/environment-browser/browserExt.mjs","../../../node_modules/pixi.js/lib/environment-webworker/webworkerExt.mjs","../../../node_modules/pixi.js/lib/maths/point/ObservablePoint.mjs","../../../node_modules/eventemitter3/index.js","../../../node_modules/pixi.js/lib/maths/misc/const.mjs","../../../node_modules/pixi.js/lib/maths/point/Point.mjs","../../../node_modules/pixi.js/lib/maths/matrix/Matrix.mjs","../../../node_modules/pixi.js/lib/maths/matrix/groupD8.mjs","../../../node_modules/pixi.js/lib/maths/shapes/Rectangle.mjs","../../../node_modules/pixi.js/lib/utils/data/uid.mjs","../../../node_modules/pixi.js/lib/utils/logging/deprecation.mjs","../../../node_modules/pixi.js/lib/utils/misc/NOOP.mjs","../../../node_modules/pixi.js/lib/maths/misc/pow2.mjs","../../../node_modules/pixi.js/lib/scene/container/utils/definedProps.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/texture/TextureStyle.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/texture/sources/TextureSource.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/texture/sources/BufferImageSource.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/texture/TextureMatrix.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/texture/Texture.mjs","../../../node_modules/pixi.js/lib/utils/data/updateQuadBounds.mjs","../../../node_modules/pixi.js/lib/scene/container/bounds/Bounds.mjs","../../../node_modules/@pixi/colord/index.mjs","../../../node_modules/@pixi/colord/plugins/names.mjs","../../../node_modules/pixi.js/lib/color/Color.mjs","../../../node_modules/pixi.js/lib/culling/cullingMixin.mjs","../../../node_modules/pixi.js/lib/utils/pool/Pool.mjs","../../../node_modules/pixi.js/lib/utils/pool/PoolGroup.mjs","../../../node_modules/pixi.js/lib/scene/container/container-mixins/cacheAsTextureMixin.mjs","../../../node_modules/pixi.js/lib/utils/data/removeItems.mjs","../../../node_modules/pixi.js/lib/scene/container/container-mixins/childrenHelperMixin.mjs","../../../node_modules/pixi.js/lib/scene/container/container-mixins/collectRenderablesMixin.mjs","../../../node_modules/pixi.js/lib/filters/FilterEffect.mjs","../../../node_modules/pixi.js/lib/rendering/mask/MaskEffectManager.mjs","../../../node_modules/pixi.js/lib/scene/container/container-mixins/effectsMixin.mjs","../../../node_modules/pixi.js/lib/scene/container/container-mixins/findMixin.mjs","../../../node_modules/pixi.js/lib/scene/container/bounds/utils/matrixAndBoundsPool.mjs","../../../node_modules/pixi.js/lib/scene/container/container-mixins/getFastGlobalBoundsMixin.mjs","../../../node_modules/pixi.js/lib/scene/container/bounds/getGlobalBounds.mjs","../../../node_modules/pixi.js/lib/scene/container/utils/multiplyHexColors.mjs","../../../node_modules/pixi.js/lib/scene/container/utils/multiplyColors.mjs","../../../node_modules/pixi.js/lib/scene/container/container-mixins/getGlobalMixin.mjs","../../../node_modules/pixi.js/lib/utils/logging/warn.mjs","../../../node_modules/pixi.js/lib/scene/container/bounds/getLocalBounds.mjs","../../../node_modules/pixi.js/lib/scene/container/utils/checkChildrenDidChange.mjs","../../../node_modules/pixi.js/lib/scene/container/container-mixins/measureMixin.mjs","../../../node_modules/pixi.js/lib/scene/container/container-mixins/onRenderMixin.mjs","../../../node_modules/pixi.js/lib/scene/container/container-mixins/sortMixin.mjs","../../../node_modules/pixi.js/lib/scene/container/container-mixins/toLocalGlobalMixin.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/instructions/InstructionSet.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/texture/TexturePool.mjs","../../../node_modules/pixi.js/lib/scene/container/RenderGroup.mjs","../../../node_modules/pixi.js/lib/scene/container/utils/assignWithIgnore.mjs","../../../node_modules/pixi.js/lib/scene/container/Container.mjs","../../../node_modules/pixi.js/lib/scene/view/ViewContainer.mjs","../../../node_modules/pixi.js/lib/scene/sprite/Sprite.mjs","../../../node_modules/pixi.js/lib/rendering/mask/utils/addMaskBounds.mjs","../../../node_modules/pixi.js/lib/rendering/mask/utils/addMaskLocalBounds.mjs","../../../node_modules/pixi.js/lib/rendering/mask/alpha/AlphaMask.mjs","../../../node_modules/pixi.js/lib/rendering/mask/color/ColorMask.mjs","../../../node_modules/pixi.js/lib/rendering/mask/stencil/StencilMask.mjs","../../../node_modules/pixi.js/lib/environment-browser/BrowserAdapter.mjs","../../../node_modules/pixi.js/lib/environment/adapter.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/texture/sources/CanvasSource.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/texture/sources/ImageSource.mjs","../../../node_modules/pixi.js/lib/ticker/const.mjs","../../../node_modules/pixi.js/lib/ticker/TickerListener.mjs","../../../node_modules/pixi.js/lib/ticker/Ticker.mjs","../../../node_modules/pixi.js/lib/utils/browser/detectVideoAlphaMode.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/texture/sources/VideoSource.mjs","../../../node_modules/pixi.js/lib/assets/utils/convertToList.mjs","../../../node_modules/pixi.js/lib/assets/cache/Cache.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/texture/utils/textureFrom.mjs","../../../node_modules/pixi.js/lib/rendering/init.mjs","../../../node_modules/pixi.js/lib/assets/loader/parsers/LoaderParser.mjs","../../../node_modules/pixi.js/lib/utils/path.mjs","../../../node_modules/pixi.js/lib/assets/utils/createStringVariations.mjs","../../../node_modules/pixi.js/lib/assets/utils/isSingleItem.mjs","../../../node_modules/pixi.js/lib/assets/resolver/Resolver.mjs","../../../node_modules/pixi.js/lib/assets/utils/copySearchParams.mjs","../../../node_modules/pixi.js/lib/spritesheet/Spritesheet.mjs","../../../node_modules/pixi.js/lib/spritesheet/spritesheetAsset.mjs","../../../node_modules/pixi.js/lib/spritesheet/init.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/utils/createIdFromString.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/getTestContext.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/getMaxFragmentPrecision.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/preprocessors/addProgramDefines.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/preprocessors/ensurePrecision.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/preprocessors/insertVersion.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/preprocessors/setProgramName.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/preprocessors/stripVersion.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/GlProgram.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/geometry/utils/getAttributeInfoFromFormat.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/extractAttributesFromGpuProgram.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/extractStructAndGroups.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/shader/const.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/generateGpuLayoutGroups.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/generateLayoutHash.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/removeStructAndGroupDuplicates.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/GpuProgram.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/shader/types.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/shader/utils/getDefaultUniformValue.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/shader/UniformGroup.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/BindGroup.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/types.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/shader/Shader.mjs","../../../node_modules/pixi.js/lib/environment/autoDetectEnvironment.mjs","../../../node_modules/pixi.js/lib/utils/browser/unsafeEvalSupported.mjs","../../../node_modules/earcut/src/earcut.js","../../../node_modules/pixi.js/lib/rendering/renderers/gl/const.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/system/SystemRunner.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/system/AbstractRenderer.mjs","../../../node_modules/pixi.js/lib/utils/browser/isWebGLSupported.mjs","../../../node_modules/pixi.js/lib/utils/browser/isWebGPUSupported.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/autoDetectRenderer.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/fill/FillGradient.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/fill/FillPattern.mjs","../../../node_modules/parse-svg-path/index.js","../../../node_modules/pixi.js/lib/scene/graphics/shared/svg/parseSVGPath.mjs","../../../node_modules/pixi.js/lib/maths/shapes/Circle.mjs","../../../node_modules/pixi.js/lib/maths/shapes/Ellipse.mjs","../../../node_modules/pixi.js/lib/maths/misc/squaredDistanceToLineSegment.mjs","../../../node_modules/pixi.js/lib/maths/shapes/Polygon.mjs","../../../node_modules/pixi.js/lib/maths/shapes/RoundedRectangle.mjs","../../../node_modules/pixi.js/lib/rendering/batcher/gl/utils/checkMaxIfStatementsInShader.mjs","../../../node_modules/pixi.js/lib/rendering/batcher/gl/utils/maxRecommendedTextures.mjs","../../../node_modules/pixi.js/lib/rendering/batcher/gpu/getTextureBatchBindGroup.mjs","../../../node_modules/pixi.js/lib/utils/data/ViewableBuffer.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/buffer/utils/fastCopy.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/state/const.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/state/getAdjustedBlendModeBlend.mjs","../../../node_modules/pixi.js/lib/rendering/batcher/shared/BatchTextureArray.mjs","../../../node_modules/pixi.js/lib/rendering/batcher/shared/Batcher.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/buffer/const.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/geometry/utils/ensureIsBuffer.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/geometry/utils/getGeometryBounds.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/geometry/Geometry.mjs","../../../node_modules/pixi.js/lib/rendering/batcher/shared/BatchGeometry.mjs","../../../node_modules/pixi.js/lib/rendering/high-shader/compiler/utils/addBits.mjs","../../../node_modules/pixi.js/lib/rendering/high-shader/compiler/utils/compileHooks.mjs","../../../node_modules/pixi.js/lib/rendering/high-shader/compiler/utils/compileInputs.mjs","../../../node_modules/pixi.js/lib/rendering/high-shader/compiler/utils/compileOutputs.mjs","../../../node_modules/pixi.js/lib/rendering/high-shader/compiler/utils/injectBits.mjs","../../../node_modules/pixi.js/lib/rendering/high-shader/compiler/compileHighShader.mjs","../../../node_modules/pixi.js/lib/rendering/high-shader/defaultProgramTemplate.mjs","../../../node_modules/pixi.js/lib/rendering/high-shader/shader-bits/globalUniformsBit.mjs","../../../node_modules/pixi.js/lib/rendering/high-shader/compileHighShaderToProgram.mjs","../../../node_modules/pixi.js/lib/rendering/high-shader/shader-bits/colorBit.mjs","../../../node_modules/pixi.js/lib/rendering/high-shader/shader-bits/generateTextureBatchBit.mjs","../../../node_modules/pixi.js/lib/rendering/high-shader/shader-bits/roundPixelsBit.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/getBatchSamplersUniformGroup.mjs","../../../node_modules/pixi.js/lib/rendering/batcher/shared/DefaultShader.mjs","../../../node_modules/pixi.js/lib/rendering/batcher/shared/DefaultBatcher.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/geometry/utils/buildUvs.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/geometry/utils/transformVertices.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/BatchableGraphics.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildCircle.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/const.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/utils/getOrientationOfPoints.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildLine.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildPixelLine.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/utils/triangulateWithHoles.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildPolygon.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildRectangle.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildTriangle.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/utils/generateTextureFillMatrix.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/utils/buildContextBatches.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/GraphicsContextSystem.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildAdaptiveBezier.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildAdaptiveQuadratic.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildArc.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildArcTo.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildArcToSvg.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/path/roundShape.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/path/ShapePath.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/path/GraphicsPath.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/svg/parseSVGFloatAttribute.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/svg/parseSVGDefinitions.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/svg/utils/extractSvgUrlId.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/svg/parseSVGStyle.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/svg/SVGParser.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/utils/convertFillInputToFillStyle.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/GraphicsContext.mjs","../../../node_modules/pixi.js/lib/scene/graphics/shared/Graphics.mjs","../../../node_modules/pixi.js/lib/index.mjs","../src/annotation/pixi/stageRenderer.ts","../src/annotation/pixi/PixiLayer.svelte","../../../node_modules/uuid/dist/esm-browser/stringify.js","../../../node_modules/uuid/dist/esm-browser/rng.js","../../../node_modules/uuid/dist/esm-browser/native.js","../../../node_modules/uuid/dist/esm-browser/v4.js","../../annotorious/src/model/core/Shape.ts","../../annotorious/src/model/core/shapeUtils.ts","../../annotorious/src/model/core/ellipse/ellipseUtils.ts","../../annotorious/src/model/core/multipolygon/multiPolygonUtils.ts","../../annotorious/src/model/core/polygon/polygonUtils.ts","../../annotorious/src/model/core/rectangle/rectangleUtils.ts","../../annotorious/src/annotation/editors/polygon/PolygonEditor.svelte","../../annotorious/src/annotation/utils/touch.ts","../../annotorious/src/annotation/editors/Handle.svelte","../../annotorious/src/annotation/editors/rectangle/RectangleEditor.svelte","../../annotorious/src/annotation/editors/multipolygon/MultiPolygonEditor.svelte","../../annotorious/src/annotation/editors/editorsRegistry.ts","../../annotorious/src/annotation/editors/Editor.svelte","../../annotorious/src/annotation/utils/styling.ts","../../annotorious/src/annotation/editors/EditorMount.svelte","../../annotorious/src/keyboardCommands.ts","../src/utils/updateSelection.ts","../src/annotation/svg/OSDLayer.svelte","../src/annotation/svg/drawing/OSDToolMount.svelte","../src/annotation/svg/drawing/SVGDrawingLayer.svelte","../src/annotation/svg/presence/SVGPresenceLabel.svelte","../src/annotation/svg/presence/shapes/PresencePolygon.svelte","../src/annotation/svg/presence/shapes/PresenceRectangle.svelte","../src/annotation/svg/presence/SVGPresenceLayer.svelte","../src/annotation/svg/selection/shapes/SelectedRectangle.svelte","../src/annotation/svg/selection/shapes/SelectedPolygon.svelte","../src/annotation/svg/selection/shapes/SelectedEllipse.svelte","../src/annotation/svg/selection/SVGSelectionLayer.svelte","../src/themes/setTheme.ts","../src/api/fitBounds.ts","../src/Annotorious.ts"],"sourcesContent":["var M = Object.prototype.hasOwnProperty;\nfunction k(e, t) {\n var n, o;\n if (e === t) return !0;\n if (e && t && (n = e.constructor) === t.constructor) {\n if (n === Date) return e.getTime() === t.getTime();\n if (n === RegExp) return e.toString() === t.toString();\n if (n === Array) {\n if ((o = e.length) === t.length)\n for (; o-- && k(e[o], t[o]); ) ;\n return o === -1;\n }\n if (!n || typeof e == \"object\") {\n o = 0;\n for (n in e)\n if (M.call(e, n) && ++o && !M.call(t, n) || !(n in t) || !k(e[n], t[n])) return !1;\n return Object.keys(t).length === o;\n }\n }\n return e !== e && t !== t;\n}\nfunction V() {\n}\nfunction X(e, t) {\n return e != e ? t == t : e !== t || e && typeof e == \"object\" || typeof e == \"function\";\n}\nconst N = [];\nfunction j(e, t = V) {\n let n;\n const o = /* @__PURE__ */ new Set();\n function s(b) {\n if (X(e, b) && (e = b, n)) {\n const w = !N.length;\n for (const m of o)\n m[1](), N.push(m, e);\n if (w) {\n for (let m = 0; m < N.length; m += 2)\n N[m][0](N[m + 1]);\n N.length = 0;\n }\n }\n }\n function f(b) {\n s(b(e));\n }\n function A(b, w = V) {\n const m = [b, w];\n return o.add(m), o.size === 1 && (n = t(s, f) || V), b(e), () => {\n o.delete(m), o.size === 0 && n && (n(), n = null);\n };\n }\n return { set: s, update: f, subscribe: A };\n}\nconst Ue = (e) => {\n const { subscribe: t, set: n } = j();\n let o;\n return t((s) => o = s), e.observe(({ changes: s }) => {\n if (o) {\n (s.deleted || []).some((b) => b.id === o) && n(void 0);\n const A = (s.updated || []).find(({ oldValue: b }) => b.id === o);\n A && n(A.newValue.id);\n }\n }), {\n get current() {\n return o;\n },\n subscribe: t,\n set: n\n };\n};\nvar Z = /* @__PURE__ */ ((e) => (e.EDIT = \"EDIT\", e.SELECT = \"SELECT\", e.NONE = \"NONE\", e))(Z || {});\nconst z = { selected: [] }, Se = (e, t, n) => {\n const { subscribe: o, set: s } = j(z);\n let f = t, A = z;\n o((h) => A = h);\n const b = () => {\n k(A, z) || s(z);\n }, w = () => {\n var h;\n return ((h = A.selected) == null ? void 0 : h.length) === 0;\n }, m = (h) => {\n if (w())\n return !1;\n const C = typeof h == \"string\" ? h : h.id;\n return A.selected.some((D) => D.id === C);\n }, U = (h, C) => {\n let D;\n if (Array.isArray(h)) {\n if (D = h.map((i) => e.getAnnotation(i)).filter(Boolean), D.length < h.length) {\n console.warn(\"Invalid selection: \" + h.filter((i) => !D.some((p) => p.id === i)));\n return;\n }\n } else {\n const i = e.getAnnotation(h);\n if (!i) {\n console.warn(\"Invalid selection: \" + h);\n return;\n }\n D = [i];\n }\n const a = D.reduce((i, p) => {\n const v = W(p, f, n);\n return v === \"EDIT\" ? [...i, { id: p.id, editable: !0 }] : v === \"SELECT\" ? [...i, { id: p.id }] : i;\n }, []);\n s({ selected: a, event: C });\n }, c = (h, C) => {\n const D = Array.isArray(h) ? h : [h], a = D.map((i) => e.getAnnotation(i)).filter((i) => !!i);\n s({\n selected: a.map((i) => {\n const p = C === void 0 ? W(i, f, n) === \"EDIT\" : C;\n return { id: i.id, editable: p };\n })\n }), a.length !== D.length && console.warn(\"Invalid selection\", h);\n }, E = (h) => {\n if (w())\n return !1;\n const { selected: C } = A;\n C.some(({ id: a }) => h.includes(a)) && s({ selected: C.filter(({ id: a }) => !h.includes(a)) });\n }, T = (h) => {\n f = h, c(A.selected.map(({ id: C }) => C));\n };\n return e.observe(\n ({ changes: h }) => E((h.deleted || []).map((C) => C.id))\n ), {\n get event() {\n return A ? A.event : null;\n },\n get selected() {\n return A ? [...A.selected] : null;\n },\n get userSelectAction() {\n return f;\n },\n clear: b,\n isEmpty: w,\n isSelected: m,\n setSelected: c,\n setUserSelectAction: T,\n subscribe: o,\n userSelect: U\n };\n}, W = (e, t, n) => {\n const o = n ? n.serialize(e) : e;\n return typeof t == \"function\" ? t(o) : t || \"EDIT\";\n}, R = [];\nfor (let e = 0; e < 256; ++e)\n R.push((e + 256).toString(16).slice(1));\nfunction F(e, t = 0) {\n return (R[e[t + 0]] + R[e[t + 1]] + R[e[t + 2]] + R[e[t + 3]] + \"-\" + R[e[t + 4]] + R[e[t + 5]] + \"-\" + R[e[t + 6]] + R[e[t + 7]] + \"-\" + R[e[t + 8]] + R[e[t + 9]] + \"-\" + R[e[t + 10]] + R[e[t + 11]] + R[e[t + 12]] + R[e[t + 13]] + R[e[t + 14]] + R[e[t + 15]]).toLowerCase();\n}\nlet _;\nconst K = new Uint8Array(16);\nfunction ee() {\n if (!_) {\n if (typeof crypto > \"u\" || !crypto.getRandomValues)\n throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");\n _ = crypto.getRandomValues.bind(crypto);\n }\n return _(K);\n}\nconst te = typeof crypto < \"u\" && crypto.randomUUID && crypto.randomUUID.bind(crypto), q = { randomUUID: te };\nfunction G(e, t, n) {\n var s;\n if (q.randomUUID && !e)\n return q.randomUUID();\n e = e || {};\n const o = e.random ?? ((s = e.rng) == null ? void 0 : s.call(e)) ?? ee();\n if (o.length < 16)\n throw new Error(\"Random bytes length must be >= 16\");\n return o[6] = o[6] & 15 | 64, o[8] = o[8] & 63 | 128, F(o);\n}\nconst Te = (e) => {\n const { creator: t, updatedBy: n } = e.target, o = e.bodies.reduce((s, f) => [...s, f.creator, f.updatedBy].filter(Boolean), []);\n return [\n t,\n n,\n ...o\n ].filter((s) => s);\n}, Y = (e) => {\n const t = (n) => {\n const o = { ...n };\n return n.created && typeof n.created == \"string\" && (o.created = new Date(n.created)), n.updated && typeof n.updated == \"string\" && (o.updated = new Date(n.updated)), o;\n };\n return {\n ...e,\n bodies: (e.bodies || []).map(t),\n target: t(e.target)\n };\n}, De = (e, t, n, o) => ({\n id: G(),\n annotation: typeof e == \"string\" ? e : e.id,\n created: n || /* @__PURE__ */ new Date(),\n creator: o,\n ...t\n}), ne = (e, t) => {\n const n = new Set(e.bodies.map((o) => o.id));\n return t.bodies.filter((o) => !n.has(o.id));\n}, oe = (e, t) => {\n const n = new Set(t.bodies.map((o) => o.id));\n return e.bodies.filter((o) => !n.has(o.id));\n}, se = (e, t) => t.bodies.map((n) => {\n const o = e.bodies.find((s) => s.id === n.id);\n return { newBody: n, oldBody: o && !k(o, n) ? o : void 0 };\n}).filter(({ oldBody: n }) => n).map(({ oldBody: n, newBody: o }) => ({ oldBody: n, newBody: o })), ie = (e, t) => !k(e.target, t.target), J = (e, t) => {\n const n = ne(e, t), o = oe(e, t), s = se(e, t);\n return {\n oldValue: e,\n newValue: t,\n bodiesCreated: n.length > 0 ? n : void 0,\n bodiesDeleted: o.length > 0 ? o : void 0,\n bodiesUpdated: s.length > 0 ? s : void 0,\n targetUpdated: ie(e, t) ? { oldTarget: e.target, newTarget: t.target } : void 0\n };\n};\nvar de = /* @__PURE__ */ ((e) => (e.BODY_ONLY = \"BODY_ONLY\", e.TARGET_ONLY = \"TARGET_ONLY\", e))(de || {}), O = /* @__PURE__ */ ((e) => (e.LOCAL = \"LOCAL\", e.REMOTE = \"REMOTE\", e.SILENT = \"SILENT\", e))(O || {});\nconst re = (e, t) => {\n var f, A;\n const { changes: n, origin: o } = t;\n if (!(e.options.origin ? e.options.origin === o : o !== \"SILENT\"))\n return !1;\n if (e.options.ignore) {\n const { ignore: b } = e.options, w = (U) => U && U.length > 0;\n if (!(w(n.created) || w(n.deleted))) {\n const U = (f = n.updated) == null ? void 0 : f.some((E) => w(E.bodiesCreated) || w(E.bodiesDeleted) || w(E.bodiesUpdated)), c = (A = n.updated) == null ? void 0 : A.some((E) => E.targetUpdated);\n if (b === \"BODY_ONLY\" && U && !c || b === \"TARGET_ONLY\" && c && !U)\n return !1;\n }\n }\n if (e.options.annotations) {\n const b = /* @__PURE__ */ new Set([\n ...(n.created || []).map((m) => m.id),\n ...(n.deleted || []).map((m) => m.id),\n ...(n.updated || []).map(({ oldValue: m }) => m.id)\n ]);\n return !!(Array.isArray(e.options.annotations) ? e.options.annotations : [e.options.annotations]).find((m) => b.has(m));\n } else\n return !0;\n}, ae = (e, t) => {\n const n = new Set((e.created || []).map((c) => c.id)), o = new Set((e.updated || []).map(({ newValue: c }) => c.id)), s = new Set((t.created || []).map((c) => c.id)), f = new Set((t.deleted || []).map((c) => c.id)), A = new Set((t.updated || []).map(({ oldValue: c }) => c.id)), b = new Set((t.updated || []).filter(({ oldValue: c }) => n.has(c.id) || o.has(c.id)).map(({ oldValue: c }) => c.id)), w = [\n ...(e.created || []).filter((c) => !f.has(c.id)).map((c) => A.has(c.id) ? t.updated.find(({ oldValue: E }) => E.id === c.id).newValue : c),\n ...t.created || []\n ], m = [\n ...(e.deleted || []).filter((c) => !s.has(c.id)),\n ...(t.deleted || []).filter((c) => !n.has(c.id))\n ], U = [\n ...(e.updated || []).filter(({ newValue: c }) => !f.has(c.id)).map((c) => {\n const { oldValue: E, newValue: T } = c;\n if (A.has(T.id)) {\n const h = t.updated.find((C) => C.oldValue.id === T.id).newValue;\n return J(E, h);\n } else\n return c;\n }),\n ...(t.updated || []).filter(({ oldValue: c }) => !b.has(c.id))\n ];\n return { created: w, deleted: m, updated: U };\n}, $ = (e) => {\n const t = e.id === void 0 ? G() : e.id;\n return {\n ...e,\n id: t,\n bodies: e.bodies === void 0 ? [] : e.bodies.map((n) => ({\n ...n,\n annotation: t\n })),\n target: {\n ...e.target,\n annotation: t\n }\n };\n}, ce = (e) => e.id !== void 0, Oe = () => {\n const e = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Map(), n = [], o = (d, l = {}) => {\n n.push({ onChange: d, options: l });\n }, s = (d) => {\n const l = n.findIndex((u) => u.onChange == d);\n l > -1 && n.splice(l, 1);\n }, f = (d, l) => {\n const u = {\n origin: d,\n changes: {\n created: l.created || [],\n updated: l.updated || [],\n deleted: l.deleted || []\n },\n state: [...e.values()]\n };\n n.forEach((g) => {\n re(g, u) && g.onChange(u);\n });\n }, A = (d, l = O.LOCAL) => {\n if (d.id && e.get(d.id))\n throw Error(`Cannot add annotation ${d.id} - exists already`);\n {\n const g = $(d);\n e.set(g.id, g), g.bodies.forEach((S) => t.set(S.id, g.id)), f(l, { created: [g] });\n }\n }, b = (d, l) => {\n const u = $(typeof d == \"string\" ? l : d), g = typeof d == \"string\" ? d : d.id, S = g && e.get(g);\n if (S) {\n const y = J(S, u);\n return g === u.id ? e.set(g, u) : (e.delete(g), e.set(u.id, u)), S.bodies.forEach((x) => t.delete(x.id)), u.bodies.forEach((x) => t.set(x.id, u.id)), y;\n } else\n console.warn(`Cannot update annotation ${g} - does not exist`);\n }, w = (d, l = O.LOCAL, u = O.LOCAL) => {\n const g = ce(l) ? u : l, S = b(d, l);\n S && f(g, { updated: [S] });\n }, m = (d, l = O.LOCAL) => {\n const u = d.reduce((g, S) => {\n const y = b(S);\n return y ? [...g, y] : g;\n }, []);\n u.length > 0 && f(l, { updated: u });\n }, U = (d, l = O.LOCAL) => {\n const u = e.get(d.annotation);\n if (u) {\n const g = {\n ...u,\n bodies: [...u.bodies, d]\n };\n e.set(u.id, g), t.set(d.id, g.id), f(l, { updated: [{\n oldValue: u,\n newValue: g,\n bodiesCreated: [d]\n }] });\n } else\n console.warn(`Attempt to add body to missing annotation: ${d.annotation}`);\n }, c = () => [...e.values()], E = (d = O.LOCAL) => {\n const l = [...e.values()];\n e.clear(), t.clear(), f(d, { deleted: l });\n }, T = (d, l = !0, u = O.LOCAL) => {\n const g = d.map($);\n if (l) {\n const S = [...e.values()];\n e.clear(), t.clear(), g.forEach((y) => {\n e.set(y.id, y), y.bodies.forEach((x) => t.set(x.id, y.id));\n }), f(u, { created: g, deleted: S });\n } else {\n const S = d.reduce((y, x) => {\n const H = x.id && e.get(x.id);\n return H ? [...y, H] : y;\n }, []);\n if (S.length > 0)\n throw Error(`Bulk insert would overwrite the following annotations: ${S.map((y) => y.id).join(\", \")}`);\n g.forEach((y) => {\n e.set(y.id, y), y.bodies.forEach((x) => t.set(x.id, y.id));\n }), f(u, { created: g });\n }\n }, h = (d) => {\n const l = typeof d == \"string\" ? d : d.id, u = e.get(l);\n if (u)\n return e.delete(l), u.bodies.forEach((g) => t.delete(g.id)), u;\n console.warn(`Attempt to delete missing annotation: ${l}`);\n }, C = (d, l = O.LOCAL) => {\n const u = h(d);\n u && f(l, { deleted: [u] });\n }, D = (d, l = O.LOCAL) => {\n const u = d.reduce((g, S) => {\n const y = h(S);\n return y ? [...g, y] : g;\n }, []);\n u.length > 0 && f(l, { deleted: u });\n }, a = (d) => {\n const l = e.get(d.annotation);\n if (l) {\n const u = l.bodies.find((g) => g.id === d.id);\n if (u) {\n t.delete(u.id);\n const g = {\n ...l,\n bodies: l.bodies.filter((y) => y.id !== d.id)\n };\n return e.set(l.id, g), {\n oldValue: l,\n newValue: g,\n bodiesDeleted: [u]\n };\n } else\n console.warn(`Attempt to delete missing body ${d.id} from annotation ${d.annotation}`);\n } else\n console.warn(`Attempt to delete body from missing annotation ${d.annotation}`);\n }, i = (d, l = O.LOCAL) => {\n const u = a(d);\n u && f(l, { updated: [u] });\n }, p = (d, l = O.LOCAL) => {\n const u = d.map((g) => a(g)).filter(Boolean);\n u.length > 0 && f(l, { updated: u });\n }, v = (d) => {\n const l = e.get(d);\n return l ? { ...l } : void 0;\n }, r = (d) => {\n const l = t.get(d);\n if (l) {\n const g = v(l).bodies.find((S) => S.id === d);\n if (g)\n return g;\n console.error(`Store integrity error: body ${d} in index, but not in annotation`);\n } else\n console.warn(`Attempt to retrieve missing body: ${d}`);\n }, L = (d, l) => {\n if (d.annotation !== l.annotation)\n throw \"Annotation integrity violation: annotation ID must be the same when updating bodies\";\n const u = e.get(d.annotation);\n if (u) {\n const g = u.bodies.find((y) => y.id === d.id), S = {\n ...u,\n bodies: u.bodies.map((y) => y.id === g.id ? l : y)\n };\n return e.set(u.id, S), g.id !== l.id && (t.delete(g.id), t.set(l.id, S.id)), {\n oldValue: u,\n newValue: S,\n bodiesUpdated: [{ oldBody: g, newBody: l }]\n };\n } else\n console.warn(`Attempt to add body to missing annotation ${d.annotation}`);\n }, B = (d, l, u = O.LOCAL) => {\n const g = L(d, l);\n g && f(u, { updated: [g] });\n }, I = (d, l = O.LOCAL) => {\n const u = d.map((g) => L({ id: g.id, annotation: g.annotation }, g)).filter(Boolean);\n f(l, { updated: u });\n }, P = (d) => {\n const l = e.get(d.annotation);\n if (l) {\n const u = {\n ...l,\n target: {\n ...l.target,\n ...d\n }\n };\n return e.set(l.id, u), {\n oldValue: l,\n newValue: u,\n targetUpdated: {\n oldTarget: l.target,\n newTarget: d\n }\n };\n } else\n console.warn(`Attempt to update target on missing annotation: ${d.annotation}`);\n };\n return {\n addAnnotation: A,\n addBody: U,\n all: c,\n bulkAddAnnotation: T,\n bulkDeleteAnnotation: D,\n bulkDeleteBodies: p,\n bulkUpdateAnnotation: m,\n bulkUpdateBodies: I,\n bulkUpdateTargets: (d, l = O.LOCAL) => {\n const u = d.map((g) => P(g)).filter(Boolean);\n u.length > 0 && f(l, { updated: u });\n },\n clear: E,\n deleteAnnotation: C,\n deleteBody: i,\n getAnnotation: v,\n getBody: r,\n observe: o,\n unobserve: s,\n updateAnnotation: w,\n updateBody: B,\n updateTarget: (d, l = O.LOCAL) => {\n const u = P(d);\n u && f(l, { updated: [u] });\n }\n };\n}, Re = (e) => ({\n ...e,\n subscribe: (n) => {\n const o = (s) => n(s.state);\n return e.observe(o), n(e.all()), () => e.unobserve(o);\n }\n});\nlet Q = () => ({\n emit(e, ...t) {\n for (let n = this.events[e] || [], o = 0, s = n.length; o < s; o++)\n n[o](...t);\n },\n events: {},\n on(e, t) {\n var n;\n return ((n = this.events)[e] || (n[e] = [])).push(t), () => {\n var o;\n this.events[e] = (o = this.events[e]) == null ? void 0 : o.filter((s) => t !== s);\n };\n }\n});\nconst le = 250, Be = (e, t) => {\n const n = Q(), o = (t == null ? void 0 : t.changes) || [];\n let s = t ? t.pointer : -1, f = !1, A = 0;\n const b = (r) => {\n if (!f) {\n const { changes: L } = r, B = performance.now();\n if (B - A > le)\n o.splice(s + 1), o.push(L), s = o.length - 1;\n else {\n const I = o.length - 1;\n o[I] = ae(o[I], L);\n }\n A = B;\n }\n f = !1;\n };\n e.observe(b, { origin: O.LOCAL });\n const w = (r) => r && r.length > 0 && e.bulkDeleteAnnotation(r), m = (r) => r && r.length > 0 && e.bulkAddAnnotation(r, !1), U = (r) => r && r.length > 0 && e.bulkUpdateAnnotation(r.map(({ oldValue: L }) => L)), c = (r) => r && r.length > 0 && e.bulkUpdateAnnotation(r.map(({ newValue: L }) => L)), E = (r) => r && r.length > 0 && e.bulkAddAnnotation(r, !1), T = (r) => r && r.length > 0 && e.bulkDeleteAnnotation(r);\n return {\n canRedo: () => o.length - 1 > s,\n canUndo: () => s > -1,\n destroy: () => e.unobserve(b),\n getHistory: () => ({ changes: [...o], pointer: s }),\n on: (r, L) => n.on(r, L),\n redo: () => {\n if (o.length - 1 > s) {\n f = !0;\n const { created: r, updated: L, deleted: B } = o[s + 1];\n m(r), c(L), T(B), n.emit(\"redo\", o[s + 1]), s += 1;\n }\n },\n undo: () => {\n if (s > -1) {\n f = !0;\n const { created: r, updated: L, deleted: B } = o[s];\n w(r), U(L), E(B), n.emit(\"undo\", o[s]), s -= 1;\n }\n }\n };\n}, xe = () => {\n const { subscribe: e, set: t } = j([]);\n return {\n subscribe: e,\n set: t\n };\n}, Ie = (e, t, n, o) => {\n const { hover: s, selection: f, store: A, viewport: b } = e, w = /* @__PURE__ */ new Map();\n let m = [], U, c;\n const E = (a, i) => {\n w.has(a) ? w.get(a).push(i) : w.set(a, [i]);\n }, T = (a, i) => {\n const p = w.get(a);\n if (p) {\n const v = p.indexOf(i);\n v !== -1 && p.splice(v, 1);\n }\n }, h = (a, i, p) => {\n w.has(a) && setTimeout(() => {\n w.get(a).forEach((v) => {\n if (n) {\n const r = Array.isArray(i) ? i.map((B) => n.serialize(B)) : n.serialize(i), L = p ? p instanceof PointerEvent ? p : n.serialize(p) : void 0;\n v(r, L);\n } else\n v(i, p);\n });\n }, 1);\n }, C = () => {\n const { selected: a } = f, i = (a || []).map(({ id: p }) => A.getAnnotation(p));\n i.forEach((p) => {\n const v = m.find((r) => r.id === p.id);\n (!v || !k(v, p)) && h(\"updateAnnotation\", p, v);\n }), m = m.map((p) => {\n const v = i.find(({ id: r }) => r === p.id);\n return v || p;\n });\n };\n f.subscribe(({ selected: a }) => {\n if (!(m.length === 0 && a.length === 0)) {\n if (m.length === 0 && a.length > 0)\n m = a.map(({ id: i }) => A.getAnnotation(i));\n else if (m.length > 0 && a.length === 0)\n m.forEach((i) => {\n const p = A.getAnnotation(i.id);\n p && !k(p, i) && h(\"updateAnnotation\", p, i);\n }), m = [];\n else {\n const i = new Set(m.map((r) => r.id)), p = new Set(a.map(({ id: r }) => r));\n m.filter((r) => !p.has(r.id)).forEach((r) => {\n const L = A.getAnnotation(r.id);\n L && !k(L, r) && h(\"updateAnnotation\", L, r);\n }), m = [\n // Remove annotations that were deselected\n ...m.filter((r) => p.has(r.id)),\n // Add editable annotations that were selected\n ...a.filter(({ id: r }) => !i.has(r)).map(({ id: r }) => A.getAnnotation(r))\n ];\n }\n h(\"selectionChanged\", m);\n }\n }), s.subscribe((a) => {\n !U && a ? h(\"mouseEnterAnnotation\", A.getAnnotation(a)) : U && !a ? h(\"mouseLeaveAnnotation\", A.getAnnotation(U)) : U && a && (h(\"mouseLeaveAnnotation\", A.getAnnotation(U)), h(\"mouseEnterAnnotation\", A.getAnnotation(a))), U = a;\n }), b == null || b.subscribe((a) => h(\"viewportIntersect\", a.map((i) => A.getAnnotation(i)))), A.observe((a) => {\n o && (c && clearTimeout(c), c = setTimeout(C, 1e3));\n const { created: i, deleted: p } = a.changes;\n (i || []).forEach((r) => h(\"createAnnotation\", r)), (p || []).forEach((r) => h(\"deleteAnnotation\", r)), (a.changes.updated || []).filter((r) => [\n ...r.bodiesCreated || [],\n ...r.bodiesDeleted || [],\n ...r.bodiesUpdated || []\n ].length > 0).forEach(({ oldValue: r, newValue: L }) => {\n const B = m.find((I) => I.id === r.id) || r;\n m = m.map((I) => I.id === r.id ? L : I), h(\"updateAnnotation\", L, B);\n });\n }, { origin: O.LOCAL }), A.observe((a) => {\n if (m) {\n const i = new Set(m.map((v) => v.id)), p = (a.changes.updated || []).filter(({ newValue: v }) => i.has(v.id)).map(({ newValue: v }) => v);\n p.length > 0 && (m = m.map((v) => {\n const r = p.find((L) => L.id === v.id);\n return r || v;\n }));\n }\n }, { origin: O.REMOTE });\n const D = (a) => (i) => {\n const { updated: p } = i;\n a ? (p || []).forEach((v) => h(\"updateAnnotation\", v.oldValue, v.newValue)) : (p || []).forEach((v) => h(\"updateAnnotation\", v.newValue, v.oldValue));\n };\n return t.on(\"undo\", D(!0)), t.on(\"redo\", D(!1)), { on: E, off: T, emit: h };\n}, ke = (e) => (t) => t.map((n) => e.serialize(n)), ue = (e) => (t) => t.reduce((n, o) => {\n const { parsed: s, error: f } = e.parse(o);\n return f ? {\n parsed: n.parsed,\n failed: [...n.failed, o]\n } : s ? {\n parsed: [...n.parsed, s],\n failed: n.failed\n } : {\n ...n\n };\n}, { parsed: [], failed: [] }), Ne = (e, t, n) => {\n const { store: o, selection: s } = e, f = (a) => {\n if (n) {\n const { parsed: i, error: p } = n.parse(a);\n i ? o.addAnnotation(i, O.REMOTE) : console.error(p);\n } else\n o.addAnnotation(Y(a), O.REMOTE);\n }, A = () => s.clear(), b = () => o.clear(), w = (a) => {\n const i = o.getAnnotation(a);\n return n && i ? n.serialize(i) : i;\n }, m = () => n ? o.all().map(n.serialize) : o.all(), U = () => {\n var p;\n const i = (((p = s.selected) == null ? void 0 : p.map((v) => v.id)) || []).map((v) => o.getAnnotation(v)).filter(Boolean);\n return n ? i.map(n.serialize) : i;\n }, c = (a, i = !0) => fetch(a).then((p) => p.json()).then((p) => (T(p, i), p)), E = (a) => {\n if (typeof a == \"string\") {\n const i = o.getAnnotation(a);\n if (o.deleteAnnotation(a), i)\n return n ? n.serialize(i) : i;\n } else {\n const i = n ? n.parse(a).parsed : a;\n if (i)\n return o.deleteAnnotation(i), a;\n }\n }, T = (a, i = !0) => {\n if (n) {\n const p = n.parseAll || ue(n), { parsed: v, failed: r } = p(a);\n r.length > 0 && console.warn(`Discarded ${r.length} invalid annotations`, r), o.bulkAddAnnotation(v, i, O.REMOTE);\n } else\n o.bulkAddAnnotation(a.map(Y), i, O.REMOTE);\n }, h = (a, i) => {\n a ? s.setSelected(a, i) : s.clear();\n }, C = (a) => {\n s.clear(), s.setUserSelectAction(a);\n }, D = (a) => {\n if (n) {\n const i = n.parse(a).parsed, p = n.serialize(o.getAnnotation(i.id));\n return o.updateAnnotation(i), p;\n } else {\n const i = o.getAnnotation(a.id);\n return o.updateAnnotation(Y(a)), i;\n }\n };\n return {\n addAnnotation: f,\n cancelSelected: A,\n canRedo: t.canRedo,\n canUndo: t.canUndo,\n clearAnnotations: b,\n getAnnotationById: w,\n getAnnotations: m,\n getHistory: t.getHistory,\n getSelected: U,\n loadAnnotations: c,\n redo: t.redo,\n removeAnnotation: E,\n setAnnotations: T,\n setSelected: h,\n setUserSelectAction: C,\n undo: t.undo,\n updateAnnotation: D\n };\n}, ze = (e, t, n) => typeof t == \"function\" ? t(e, n) : t, $e = (e, t) => typeof e != \"function\" && typeof t != \"function\" ? {\n ...e || {},\n ...t || {}\n} : (n, o) => {\n const s = typeof e == \"function\" ? e(n, o) : e, f = typeof t == \"function\" ? t(n, o) : t;\n return {\n ...s || {},\n ...f || {}\n };\n}, fe = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet pe = (e) => crypto.getRandomValues(new Uint8Array(e)), ge = (e, t, n) => {\n let o = (2 << Math.log2(e.length - 1)) - 1, s = -~(1.6 * o * t / e.length);\n return (f = t) => {\n let A = \"\";\n for (; ; ) {\n let b = n(s), w = s | 0;\n for (; w--; )\n if (A += e[b[w] & o] || \"\", A.length >= f) return A;\n }\n };\n}, he = (e, t = 21) => ge(e, t | 0, pe), me = (e = 21) => {\n let t = \"\", n = crypto.getRandomValues(new Uint8Array(e |= 0));\n for (; e--; )\n t += fe[n[e] & 63];\n return t;\n};\nconst Ve = () => ({ isGuest: !0, id: he(\"1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_\", 20)() }), Ae = (e) => {\n const t = JSON.stringify(e);\n let n = 0;\n for (let o = 0, s = t.length; o < s; o++) {\n let f = t.charCodeAt(o);\n n = (n << 5) - n + f, n |= 0;\n }\n return `${n}`;\n}, be = (e) => e ? typeof e == \"object\" ? { ...e } : e : void 0, _e = (e, t) => (Array.isArray(e) ? e : [e]).map((n) => {\n const { id: o, type: s, purpose: f, value: A, created: b, modified: w, creator: m, ...U } = n;\n return {\n id: o || `temp-${Ae(n)}`,\n annotation: t,\n type: s,\n purpose: f,\n value: A,\n creator: be(m),\n created: b ? new Date(b) : void 0,\n updated: w ? new Date(w) : void 0,\n ...U\n };\n}), Ye = (e) => e.map((t) => {\n var b;\n const { annotation: n, created: o, updated: s, ...f } = t, A = {\n ...f,\n created: o == null ? void 0 : o.toISOString(),\n modified: s == null ? void 0 : s.toISOString()\n };\n return (b = A.id) != null && b.startsWith(\"temp-\") && delete A.id, A;\n}), ve = [\n \"#ff7c00\",\n // orange\n \"#1ac938\",\n // green\n \"#e8000b\",\n // red\n \"#8b2be2\",\n // purple\n \"#9f4800\",\n // brown\n \"#f14cc1\",\n // pink\n \"#ffc400\",\n // khaki\n \"#00d7ff\",\n // cyan\n \"#023eff\"\n // blue\n], Ee = () => {\n const e = [...ve];\n return { assignRandomColor: () => {\n const o = Math.floor(Math.random() * e.length), s = e[o];\n return e.splice(o, 1), s;\n }, releaseColor: (o) => e.push(o) };\n}, we = () => {\n const e = Ee();\n return { addUser: (o, s) => {\n const f = e.assignRandomColor();\n return {\n label: s.name || s.id,\n avatar: s.avatar,\n color: f\n };\n }, removeUser: (o) => e.releaseColor(o.appearance.color) };\n}, Ce = (e, t) => e.every((n) => e.includes(n)) && t.every((n) => e.includes(n)), je = me(), Pe = (e = we()) => {\n const t = Q(), n = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), s = (c, E) => {\n if (n.has(c)) {\n console.warn(\"Attempt to add user that is already present\", c, E);\n return;\n }\n const T = e.addUser(c, E);\n n.set(c, {\n ...E,\n presenceKey: c,\n appearance: T\n });\n }, f = (c) => {\n const E = n.get(c);\n if (!E) {\n console.warn(\"Attempt to remove user that is not present\", c);\n return;\n }\n e.removeUser(E), n.delete(c);\n }, A = (c) => {\n const E = new Set(c.map((C) => C.presenceKey)), T = c.filter(({ presenceKey: C }) => !n.has(C)), h = Array.from(n.values()).filter((C) => !E.has(C.presenceKey));\n T.forEach(({ presenceKey: C, user: D }) => s(C, D)), h.forEach((C) => {\n const { presenceKey: D } = C;\n o.has(D) && t.emit(\"selectionChange\", C, null), f(D);\n }), (T.length > 0 || h.length > 0) && t.emit(\"presence\", m());\n }, b = (c, E) => {\n const T = n.get(c);\n if (!T) {\n console.warn(\"Activity notification from user that is not present\");\n return;\n }\n const h = o.get(c);\n (!h || !Ce(h, E)) && (o.set(c, E), t.emit(\"selectionChange\", T, E));\n }, w = (c, E) => {\n const T = n.get(c);\n if (!T) {\n console.warn(\"Selection change for user that is not present\", c);\n return;\n }\n E ? o.set(c, E) : o.delete(c), t.emit(\"selectionChange\", T, E);\n }, m = () => [...Array.from(n.values())];\n return {\n getPresentUsers: m,\n notifyActivity: b,\n on: (c, E) => t.on(c, E),\n syncUsers: A,\n updateSelection: w\n };\n};\nexport {\n de as Ignore,\n O as Origin,\n je as PRESENCE_KEY,\n Z as UserSelectAction,\n $e as chainStyles,\n ze as computeStyle,\n Ve as createAnonymousGuest,\n Ne as createBaseAnnotator,\n De as createBody,\n we as createDefaultAppearanceProvider,\n Ue as createHoverState,\n Ie as createLifecycleObserver,\n Pe as createPresenceState,\n Se as createSelectionState,\n Oe as createStore,\n Be as createUndoStack,\n xe as createViewportState,\n Ee as defaultColorProvider,\n J as diffAnnotations,\n Te as getContributors,\n ae as mergeChanges,\n W as onUserSelect,\n ue as parseAll,\n _e as parseW3CBodies,\n be as parseW3CUser,\n Y as reviveDates,\n ke as serializeAll,\n Ye as serializeW3CBodies,\n re as shouldNotify,\n Re as toSvelteStore\n};\n//# sourceMappingURL=annotorious-core.es.js.map\n","var Tn = Object.defineProperty;\nvar Mn = (e, t, n) => t in e ? Tn(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;\nvar et = (e, t, n) => Mn(e, typeof t != \"symbol\" ? t + \"\" : t, n);\nfunction G() {\n}\nfunction ht(e, t) {\n for (const n in t) e[n] = t[n];\n return (\n /** @type {T & S} */\n e\n );\n}\nfunction ln(e) {\n return e();\n}\nfunction St() {\n return /* @__PURE__ */ Object.create(null);\n}\nfunction de(e) {\n e.forEach(ln);\n}\nfunction F(e) {\n return typeof e == \"function\";\n}\nfunction W(e, t) {\n return e != e ? t == t : e !== t || e && typeof e == \"object\" || typeof e == \"function\";\n}\nfunction vn(e) {\n return Object.keys(e).length === 0;\n}\nfunction an(e, ...t) {\n if (e == null) {\n for (const o of t)\n o(void 0);\n return G;\n }\n const n = e.subscribe(...t);\n return n.unsubscribe ? () => n.unsubscribe() : n;\n}\nfunction tt(e, t, n) {\n e.$$.on_destroy.push(an(t, n));\n}\nfunction Ln(e, t, n, o) {\n if (e) {\n const i = cn(e, t, n, o);\n return e[0](i);\n }\n}\nfunction cn(e, t, n, o) {\n return e[1] && o ? ht(n.ctx.slice(), e[1](o(t))) : n.ctx;\n}\nfunction kn(e, t, n, o) {\n if (e[2] && o) {\n const i = e[2](o(n));\n if (t.dirty === void 0)\n return i;\n if (typeof i == \"object\") {\n const r = [], s = Math.max(t.dirty.length, i.length);\n for (let l = 0; l < s; l += 1)\n r[l] = t.dirty[l] | i[l];\n return r;\n }\n return t.dirty | i;\n }\n return t.dirty;\n}\nfunction In(e, t, n, o, i, r) {\n if (i) {\n const s = cn(t, n, o, r);\n e.p(s, i);\n }\n}\nfunction On(e) {\n if (e.ctx.length > 32) {\n const t = [], n = e.ctx.length / 32;\n for (let o = 0; o < n; o++)\n t[o] = -1;\n return t;\n }\n return -1;\n}\nfunction Tt(e) {\n const t = {};\n for (const n in e) n[0] !== \"$\" && (t[n] = e[n]);\n return t;\n}\nfunction Ze(e) {\n return e ?? \"\";\n}\nfunction fe(e, t) {\n e.appendChild(t);\n}\nfunction B(e, t, n) {\n e.insertBefore(t, n || null);\n}\nfunction O(e) {\n e.parentNode && e.parentNode.removeChild(e);\n}\nfunction Se(e, t) {\n for (let n = 0; n < e.length; n += 1)\n e[n] && e[n].d(t);\n}\nfunction P(e) {\n return document.createElementNS(\"http://www.w3.org/2000/svg\", e);\n}\nfunction fn(e) {\n return document.createTextNode(e);\n}\nfunction ue() {\n return fn(\" \");\n}\nfunction ae() {\n return fn(\"\");\n}\nfunction j(e, t, n, o) {\n return e.addEventListener(t, n, o), () => e.removeEventListener(t, n, o);\n}\nfunction d(e, t, n) {\n n == null ? e.removeAttribute(t) : e.getAttribute(t) !== n && e.setAttribute(t, n);\n}\nfunction Bn(e) {\n return Array.from(e.childNodes);\n}\nfunction ye(e, t, n) {\n e.classList.toggle(t, !!n);\n}\nfunction Dn(e, t, { bubbles: n = !1, cancelable: o = !1 } = {}) {\n return new CustomEvent(e, { detail: t, bubbles: n, cancelable: o });\n}\nlet Ge;\nfunction Ve(e) {\n Ge = e;\n}\nfunction un() {\n if (!Ge) throw new Error(\"Function called outside component initialization\");\n return Ge;\n}\nfunction He(e) {\n un().$$.on_mount.push(e);\n}\nfunction Pe() {\n const e = un();\n return (t, n, { cancelable: o = !1 } = {}) => {\n const i = e.$$.callbacks[t];\n if (i) {\n const r = Dn(\n /** @type {string} */\n t,\n n,\n { cancelable: o }\n );\n return i.slice().forEach((s) => {\n s.call(e, r);\n }), !r.defaultPrevented;\n }\n return !0;\n };\n}\nfunction ce(e, t) {\n const n = e.$$.callbacks[t.type];\n n && n.slice().forEach((o) => o.call(this, t));\n}\nconst ke = [], Qe = [];\nlet De = [];\nconst Mt = [], Pn = /* @__PURE__ */ Promise.resolve();\nlet gt = !1;\nfunction Yn() {\n gt || (gt = !0, Pn.then(dn));\n}\nfunction mt(e) {\n De.push(e);\n}\nconst nt = /* @__PURE__ */ new Set();\nlet Te = 0;\nfunction dn() {\n if (Te !== 0)\n return;\n const e = Ge;\n do {\n try {\n for (; Te < ke.length; ) {\n const t = ke[Te];\n Te++, Ve(t), Cn(t.$$);\n }\n } catch (t) {\n throw ke.length = 0, Te = 0, t;\n }\n for (Ve(null), ke.length = 0, Te = 0; Qe.length; ) Qe.pop()();\n for (let t = 0; t < De.length; t += 1) {\n const n = De[t];\n nt.has(n) || (nt.add(n), n());\n }\n De.length = 0;\n } while (ke.length);\n for (; Mt.length; )\n Mt.pop()();\n gt = !1, nt.clear(), Ve(e);\n}\nfunction Cn(e) {\n if (e.fragment !== null) {\n e.update(), de(e.before_update);\n const t = e.dirty;\n e.dirty = [-1], e.fragment && e.fragment.p(e.ctx, t), e.after_update.forEach(mt);\n }\n}\nfunction Nn(e) {\n const t = [], n = [];\n De.forEach((o) => e.indexOf(o) === -1 ? t.push(o) : n.push(o)), n.forEach((o) => o()), De = t;\n}\nconst qe = /* @__PURE__ */ new Set();\nlet Ee;\nfunction ne() {\n Ee = {\n r: 0,\n c: [],\n p: Ee\n // parent group\n };\n}\nfunction oe() {\n Ee.r || de(Ee.c), Ee = Ee.p;\n}\nfunction k(e, t) {\n e && e.i && (qe.delete(e), e.i(t));\n}\nfunction D(e, t, n, o) {\n if (e && e.o) {\n if (qe.has(e)) return;\n qe.add(e), Ee.c.push(() => {\n qe.delete(e), o && (n && e.d(1), o());\n }), e.o(t);\n } else o && o();\n}\nfunction ie(e) {\n return (e == null ? void 0 : e.length) !== void 0 ? e : Array.from(e);\n}\nfunction ee(e) {\n e && e.c();\n}\nfunction x(e, t, n) {\n const { fragment: o, after_update: i } = e.$$;\n o && o.m(t, n), mt(() => {\n const r = e.$$.on_mount.map(ln).filter(F);\n e.$$.on_destroy ? e.$$.on_destroy.push(...r) : de(r), e.$$.on_mount = [];\n }), i.forEach(mt);\n}\nfunction $(e, t) {\n const n = e.$$;\n n.fragment !== null && (Nn(n.after_update), de(n.on_destroy), n.fragment && n.fragment.d(t), n.on_destroy = n.fragment = null, n.ctx = []);\n}\nfunction Un(e, t) {\n e.$$.dirty[0] === -1 && (ke.push(e), Yn(), e.$$.dirty.fill(0)), e.$$.dirty[t / 31 | 0] |= 1 << t % 31;\n}\nfunction re(e, t, n, o, i, r, s = null, l = [-1]) {\n const a = Ge;\n Ve(e);\n const c = e.$$ = {\n fragment: null,\n ctx: [],\n // state\n props: r,\n update: G,\n not_equal: i,\n bound: St(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n on_disconnect: [],\n before_update: [],\n after_update: [],\n context: new Map(t.context || (a ? a.$$.context : [])),\n // everything else\n callbacks: St(),\n dirty: l,\n skip_bound: !1,\n root: t.target || a.$$.root\n };\n s && s(c.root);\n let u = !1;\n if (c.ctx = n ? n(e, t.props || {}, (f, h, ...m) => {\n const g = m.length ? m[0] : h;\n return c.ctx && i(c.ctx[f], c.ctx[f] = g) && (!c.skip_bound && c.bound[f] && c.bound[f](g), u && Un(e, f)), h;\n }) : [], c.update(), u = !0, de(c.before_update), c.fragment = o ? o(c.ctx) : !1, t.target) {\n if (t.hydrate) {\n const f = Bn(t.target);\n c.fragment && c.fragment.l(f), f.forEach(O);\n } else\n c.fragment && c.fragment.c();\n t.intro && k(e.$$.fragment), x(e, t.target, t.anchor), dn();\n }\n Ve(a);\n}\nclass se {\n constructor() {\n /**\n * ### PRIVATE API\n *\n * Do not use, may change at any time\n *\n * @type {any}\n */\n et(this, \"$$\");\n /**\n * ### PRIVATE API\n *\n * Do not use, may change at any time\n *\n * @type {any}\n */\n et(this, \"$$set\");\n }\n /** @returns {void} */\n $destroy() {\n $(this, 1), this.$destroy = G;\n }\n /**\n * @template {Extract<keyof Events, string>} K\n * @param {K} type\n * @param {((e: Events[K]) => void) | null | undefined} callback\n * @returns {() => void}\n */\n $on(t, n) {\n if (!F(n))\n return G;\n const o = this.$$.callbacks[t] || (this.$$.callbacks[t] = []);\n return o.push(n), () => {\n const i = o.indexOf(n);\n i !== -1 && o.splice(i, 1);\n };\n }\n /**\n * @param {Partial<Props>} props\n * @returns {void}\n */\n $set(t) {\n this.$$set && !vn(t) && (this.$$.skip_bound = !0, this.$$set(t), this.$$.skip_bound = !1);\n }\n}\nconst Xn = \"4\";\ntypeof window < \"u\" && (window.__svelte || (window.__svelte = { v: /* @__PURE__ */ new Set() })).v.add(Xn);\nvar z = /* @__PURE__ */ ((e) => (e.ELLIPSE = \"ELLIPSE\", e.MULTIPOLYGLON = \"MULTIPOLYGON\", e.POLYGON = \"POLYGON\", e.RECTANGLE = \"RECTANGLE\", e))(z || {});\nconst wt = {}, $e = (e, t) => wt[e] = t, pt = (e) => wt[e.type].area(e), Rn = (e, t, n) => wt[e.type].intersects(e, t, n), Ae = (e) => {\n let t = 1 / 0, n = 1 / 0, o = -1 / 0, i = -1 / 0;\n return e.forEach(([r, s]) => {\n t = Math.min(t, r), n = Math.min(n, s), o = Math.max(o, r), i = Math.max(i, s);\n }), { minX: t, minY: n, maxX: o, maxY: i };\n}, _t = (e) => {\n let t = 0, n = e.length - 1;\n for (let o = 0; o < e.length; o++)\n t += (e[n][0] + e[o][0]) * (e[n][1] - e[o][1]), n = o;\n return Math.abs(0.5 * t);\n}, yt = (e, t, n) => {\n let o = !1;\n for (let i = 0, r = e.length - 1; i < e.length; r = i++) {\n const s = e[i][0], l = e[i][1], a = e[r][0], c = e[r][1];\n l > n != c > n && t < (a - s) * (n - l) / (c - l) + s && (o = !o);\n }\n return o;\n}, Vn = (e, t = !0) => {\n let n = \"M \";\n return e.forEach(([o, i], r) => {\n r === 0 ? n += `${o},${i}` : n += ` L ${o},${i}`;\n }), t && (n += \" Z\"), n;\n}, Gn = {\n area: (e) => Math.PI * e.geometry.rx * e.geometry.ry,\n intersects: (e, t, n) => {\n const { cx: o, cy: i, rx: r, ry: s } = e.geometry, l = 0, a = Math.cos(l), c = Math.sin(l), u = t - o, f = n - i, h = a * u + c * f, m = c * u - a * f;\n return h * h / (r * r) + m * m / (s * s) <= 1;\n }\n};\n$e(z.ELLIPSE, Gn);\nconst Hn = {\n area: (e) => {\n const { polygons: t } = e.geometry;\n return t.reduce((n, o) => {\n const [i, ...r] = o.rings, s = _t(i.points), l = r.reduce((a, c) => a + _t(c.points), 0);\n return n + s - l;\n }, 0);\n },\n intersects: (e, t, n) => {\n const { polygons: o } = e.geometry;\n for (const i of o) {\n const [r, ...s] = i.rings;\n if (yt(r.points, t, n)) {\n let l = !1;\n for (const a of s)\n if (yt(a.points, t, n)) {\n l = !0;\n break;\n }\n if (!l) return !0;\n }\n }\n return !1;\n }\n}, jn = (e) => {\n const t = e.reduce((n, o) => [...n, ...o.rings[0].points], []);\n return Ae(t);\n}, Oe = (e) => e.rings.map((n) => Vn(n.points)).join(\" \");\n$e(z.MULTIPOLYGLON, Hn);\nconst zn = {\n area: (e) => {\n const t = e.geometry.points;\n return _t(t);\n },\n intersects: (e, t, n) => {\n const o = e.geometry.points;\n return yt(o, t, n);\n }\n};\n$e(z.POLYGON, zn);\nconst Fn = {\n area: (e) => e.geometry.w * e.geometry.h,\n intersects: (e, t, n) => t >= e.geometry.x && t <= e.geometry.x + e.geometry.w && n >= e.geometry.y && n <= e.geometry.y + e.geometry.h\n};\n$e(z.RECTANGLE, Fn);\nconst xe = (e) => Je(e.target), Je = (e) => {\n var t, n;\n return (e == null ? void 0 : e.annotation) !== void 0 && ((n = (t = e == null ? void 0 : e.selector) == null ? void 0 : t.geometry) == null ? void 0 : n.bounds) !== void 0;\n}, Kn = (e, t = !1) => {\n const n = typeof e == \"string\" ? e : e.value, o = /^(xywh)=(pixel|percent)?:?(.+?),(.+?),(.+?),(.+)*/g, i = [...n.matchAll(o)][0], [r, s, l, a, c, u, f] = i;\n if (s !== \"xywh\") throw new Error(\"Unsupported MediaFragment: \" + n);\n if (l && l !== \"pixel\") throw new Error(`Unsupported MediaFragment unit: ${l}`);\n const [h, m, g, p] = [a, c, u, f].map(parseFloat);\n return {\n type: z.RECTANGLE,\n geometry: {\n x: h,\n y: m,\n w: g,\n h: p,\n bounds: {\n minX: h,\n minY: t ? m - p : m,\n maxX: h + g,\n maxY: t ? m : m + p\n }\n }\n };\n}, Wn = (e) => {\n const { x: t, y: n, w: o, h: i } = e;\n return {\n type: \"FragmentSelector\",\n conformsTo: \"http://www.w3.org/TR/media-frags/\",\n value: `xywh=pixel:${t},${n},${o},${i}`\n };\n}, hn = \"http://www.w3.org/2000/svg\", vt = (e) => {\n const t = (o) => {\n Array.from(o.attributes).forEach((i) => {\n i.name.startsWith(\"on\") && o.removeAttribute(i.name);\n });\n }, n = e.getElementsByTagName(\"script\");\n return Array.from(n).reverse().forEach((o) => o.parentNode.removeChild(o)), Array.from(e.querySelectorAll(\"*\")).forEach(t), e;\n}, qn = (e) => {\n const o = new XMLSerializer().serializeToString(e.documentElement).replace(\"<svg>\", `<svg xmlns=\"${hn}\">`);\n return new DOMParser().parseFromString(o, \"image/svg+xml\").documentElement;\n}, Jn = (e) => {\n const n = new DOMParser().parseFromString(e, \"image/svg+xml\"), o = n.lookupPrefix(hn), i = n.lookupNamespaceURI(null);\n return o || i ? vt(n).firstChild : vt(qn(n)).firstChild;\n}, Zn = (e) => {\n const [t, n, o] = e.match(/(<polygon points=[\"|'])([^(\"|')]*)/) || [], i = o.split(\" \").map((r) => r.split(\",\").map(parseFloat));\n return {\n type: z.POLYGON,\n geometry: {\n points: i,\n bounds: Ae(i)\n }\n };\n}, Qn = (e) => {\n const t = Jn(e), n = parseFloat(t.getAttribute(\"cx\")), o = parseFloat(t.getAttribute(\"cy\")), i = parseFloat(t.getAttribute(\"rx\")), r = parseFloat(t.getAttribute(\"ry\")), s = {\n minX: n - i,\n minY: o - r,\n maxX: n + i,\n maxY: o + r\n };\n return {\n type: z.ELLIPSE,\n geometry: {\n cx: n,\n cy: o,\n rx: i,\n ry: r,\n bounds: s\n }\n };\n}, xn = (e) => {\n const t = typeof e == \"string\" ? e : e.value;\n if (t.includes(\"<polygon points=\"))\n return Zn(t);\n if (t.includes(\"<ellipse \"))\n return Qn(t);\n throw \"Unsupported SVG shape: \" + t;\n}, $n = (e) => {\n let t;\n if (e.type === z.POLYGON) {\n const n = e.geometry, { points: o } = n;\n t = `<svg><polygon points=\"${o.map((i) => i.join(\",\")).join(\" \")}\" /></svg>`;\n } else if (e.type === z.ELLIPSE) {\n const n = e.geometry;\n t = `<svg><ellipse cx=\"${n.cx}\" cy=\"${n.cy}\" rx=\"${n.rx}\" ry=\"${n.ry}\" /></svg>`;\n }\n if (t)\n return { type: \"SvgSelector\", value: t };\n throw `Unsupported shape type: ${e.type}`;\n}, J = [];\nfor (let e = 0; e < 256; ++e)\n J.push((e + 256).toString(16).slice(1));\nfunction eo(e, t = 0) {\n return (J[e[t + 0]] + J[e[t + 1]] + J[e[t + 2]] + J[e[t + 3]] + \"-\" + J[e[t + 4]] + J[e[t + 5]] + \"-\" + J[e[t + 6]] + J[e[t + 7]] + \"-\" + J[e[t + 8]] + J[e[t + 9]] + \"-\" + J[e[t + 10]] + J[e[t + 11]] + J[e[t + 12]] + J[e[t + 13]] + J[e[t + 14]] + J[e[t + 15]]).toLowerCase();\n}\nlet ot;\nconst to = new Uint8Array(16);\nfunction no() {\n if (!ot) {\n if (typeof crypto > \"u\" || !crypto.getRandomValues)\n throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");\n ot = crypto.getRandomValues.bind(crypto);\n }\n return ot(to);\n}\nconst oo = typeof crypto < \"u\" && crypto.randomUUID && crypto.randomUUID.bind(crypto), Lt = { randomUUID: oo };\nfunction gn(e, t, n) {\n var i;\n if (Lt.randomUUID && !e)\n return Lt.randomUUID();\n e = e || {};\n const o = e.random ?? ((i = e.rng) == null ? void 0 : i.call(e)) ?? no();\n if (o.length < 16)\n throw new Error(\"Random bytes length must be >= 16\");\n return o[6] = o[6] & 15 | 64, o[8] = o[8] & 63 | 128, eo(o);\n}\nvar kt = Object.prototype.hasOwnProperty;\nfunction we(e, t) {\n var n, o;\n if (e === t) return !0;\n if (e && t && (n = e.constructor) === t.constructor) {\n if (n === Date) return e.getTime() === t.getTime();\n if (n === RegExp) return e.toString() === t.toString();\n if (n === Array) {\n if ((o = e.length) === t.length)\n for (; o-- && we(e[o], t[o]); ) ;\n return o === -1;\n }\n if (!n || typeof e == \"object\") {\n o = 0;\n for (n in e)\n if (kt.call(e, n) && ++o && !kt.call(t, n) || !(n in t) || !we(e[n], t[n])) return !1;\n return Object.keys(t).length === o;\n }\n }\n return e !== e && t !== t;\n}\nfunction it() {\n}\nfunction io(e, t) {\n return e != e ? t == t : e !== t || e && typeof e == \"object\" || typeof e == \"function\";\n}\nconst Me = [];\nfunction bt(e, t = it) {\n let n;\n const o = /* @__PURE__ */ new Set();\n function i(l) {\n if (io(e, l) && (e = l, n)) {\n const a = !Me.length;\n for (const c of o)\n c[1](), Me.push(c, e);\n if (a) {\n for (let c = 0; c < Me.length; c += 2)\n Me[c][0](Me[c + 1]);\n Me.length = 0;\n }\n }\n }\n function r(l) {\n i(l(e));\n }\n function s(l, a = it) {\n const c = [l, a];\n return o.add(c), o.size === 1 && (n = t(i, r) || it), l(e), () => {\n o.delete(c), o.size === 0 && n && (n(), n = null);\n };\n }\n return { set: i, update: r, subscribe: s };\n}\nconst ro = (e) => {\n const { subscribe: t, set: n } = bt();\n let o;\n return t((i) => o = i), e.observe(({ changes: i }) => {\n if (o) {\n (i.deleted || []).some((s) => s.id === o) && n(void 0);\n const r = (i.updated || []).find(({ oldValue: s }) => s.id === o);\n r && n(r.newValue.id);\n }\n }), {\n get current() {\n return o;\n },\n subscribe: t,\n set: n\n };\n};\nvar mn = /* @__PURE__ */ ((e) => (e.EDIT = \"EDIT\", e.SELECT = \"SELECT\", e.NONE = \"NONE\", e))(mn || {});\nconst Fe = { selected: [] }, so = (e, t, n) => {\n const { subscribe: o, set: i } = bt(Fe);\n let r = t, s = Fe;\n o((g) => s = g);\n const l = () => {\n we(s, Fe) || i(Fe);\n }, a = () => {\n var g;\n return ((g = s.selected) == null ? void 0 : g.length) === 0;\n }, c = (g) => {\n if (a())\n return !1;\n const p = typeof g == \"string\" ? g : g.id;\n return s.selected.some((A) => A.id === p);\n }, u = (g, p) => {\n let A;\n if (Array.isArray(g)) {\n if (A = g.map((_) => e.getAnnotation(_)).filter(Boolean), A.length < g.length) {\n console.warn(\"Invalid selection: \" + g.filter((_) => !A.some((w) => w.id === _)));\n return;\n }\n } else {\n const _ = e.getAnnotation(g);\n if (!_) {\n console.warn(\"Invalid selection: \" + g);\n return;\n }\n A = [_];\n }\n const y = A.reduce((_, w) => {\n const E = It(w, r, n);\n return E === \"EDIT\" ? [..._, { id: w.id, editable: !0 }] : E === \"SELECT\" ? [..._, { id: w.id }] : _;\n }, []);\n i({ selected: y, event: p });\n }, f = (g, p) => {\n const A = Array.isArray(g) ? g : [g], y = A.map((_) => e.getAnnotation(_)).filter((_) => !!_);\n i({\n selected: y.map((_) => {\n const w = p === void 0 ? It(_, r, n) === \"EDIT\" : p;\n return { id: _.id, editable: w };\n })\n }), y.length !== A.length && console.warn(\"Invalid selection\", g);\n }, h = (g) => {\n if (a())\n return !1;\n const { selected: p } = s;\n p.some(({ id: A }) => g.includes(A)) && i({ selected: p.filter(({ id: A }) => !g.includes(A)) });\n }, m = (g) => {\n r = g, f(s.selected.map(({ id: p }) => p));\n };\n return e.observe(\n ({ changes: g }) => h((g.deleted || []).map((p) => p.id))\n ), {\n get event() {\n return s ? s.event : null;\n },\n get selected() {\n return s ? [...s.selected] : null;\n },\n get userSelectAction() {\n return r;\n },\n clear: l,\n isEmpty: a,\n isSelected: c,\n setSelected: f,\n setUserSelectAction: m,\n subscribe: o,\n userSelect: u\n };\n}, It = (e, t, n) => {\n const o = n ? n.serialize(e) : e;\n return typeof t == \"function\" ? t(o) : t || \"EDIT\";\n}, Z = [];\nfor (let e = 0; e < 256; ++e)\n Z.push((e + 256).toString(16).slice(1));\nfunction lo(e, t = 0) {\n return (Z[e[t + 0]] + Z[e[t + 1]] + Z[e[t + 2]] + Z[e[t + 3]] + \"-\" + Z[e[t + 4]] + Z[e[t + 5]] + \"-\" + Z[e[t + 6]] + Z[e[t + 7]] + \"-\" + Z[e[t + 8]] + Z[e[t + 9]] + \"-\" + Z[e[t + 10]] + Z[e[t + 11]] + Z[e[t + 12]] + Z[e[t + 13]] + Z[e[t + 14]] + Z[e[t + 15]]).toLowerCase();\n}\nlet rt;\nconst ao = new Uint8Array(16);\nfunction co() {\n if (!rt) {\n if (typeof crypto > \"u\" || !crypto.getRandomValues)\n throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");\n rt = crypto.getRandomValues.bind(crypto);\n }\n return rt(ao);\n}\nconst fo = typeof crypto < \"u\" && crypto.randomUUID && crypto.randomUUID.bind(crypto), Ot = { randomUUID: fo };\nfunction pn(e, t, n) {\n var o;\n if (Ot.randomUUID && !e)\n return Ot.randomUUID();\n e = e || {};\n const i = e.random ?? ((o = e.rng) == null ? void 0 : o.call(e)) ?? co();\n if (i.length < 16)\n throw new Error(\"Random bytes length must be >= 16\");\n return i[6] = i[6] & 15 | 64, i[8] = i[8] & 63 | 128, lo(i);\n}\nconst st = (e) => {\n const t = (n) => {\n const o = { ...n };\n return n.created && typeof n.created == \"string\" && (o.created = new Date(n.created)), n.updated && typeof n.updated == \"string\" && (o.updated = new Date(n.updated)), o;\n };\n return {\n ...e,\n bodies: (e.bodies || []).map(t),\n target: t(e.target)\n };\n}, ur = (e, t, n, o) => ({\n id: pn(),\n annotation: typeof e == \"string\" ? e : e.id,\n created: n || /* @__PURE__ */ new Date(),\n creator: o,\n ...t\n}), uo = (e, t) => {\n const n = new Set(e.bodies.map((o) => o.id));\n return t.bodies.filter((o) => !n.has(o.id));\n}, ho = (e, t) => {\n const n = new Set(t.bodies.map((o) => o.id));\n return e.bodies.filter((o) => !n.has(o.id));\n}, go = (e, t) => t.bodies.map((n) => {\n const o = e.bodies.find((i) => i.id === n.id);\n return { newBody: n, oldBody: o && !we(o, n) ? o : void 0 };\n}).filter(({ oldBody: n }) => n).map(({ oldBody: n, newBody: o }) => ({ oldBody: n, newBody: o })), mo = (e, t) => !we(e.target, t.target), _n = (e, t) => {\n const n = uo(e, t), o = ho(e, t), i = go(e, t);\n return {\n oldValue: e,\n newValue: t,\n bodiesCreated: n.length > 0 ? n : void 0,\n bodiesDeleted: o.length > 0 ? o : void 0,\n bodiesUpdated: i.length > 0 ? i : void 0,\n targetUpdated: mo(e, t) ? { oldTarget: e.target, newTarget: t.target } : void 0\n };\n};\nvar H = /* @__PURE__ */ ((e) => (e.LOCAL = \"LOCAL\", e.REMOTE = \"REMOTE\", e.SILENT = \"SILENT\", e))(H || {});\nconst po = (e, t) => {\n var n, o;\n const { changes: i, origin: r } = t;\n if (!(e.options.origin ? e.options.origin === r : r !== \"SILENT\"))\n return !1;\n if (e.options.ignore) {\n const { ignore: s } = e.options, l = (a) => a && a.length > 0;\n if (!(l(i.created) || l(i.deleted))) {\n const a = (n = i.updated) == null ? void 0 : n.some((u) => l(u.bodiesCreated) || l(u.bodiesDeleted) || l(u.bodiesUpdated)), c = (o = i.updated) == null ? void 0 : o.some((u) => u.targetUpdated);\n if (s === \"BODY_ONLY\" && a && !c || s === \"TARGET_ONLY\" && c && !a)\n return !1;\n }\n }\n if (e.options.annotations) {\n const s = /* @__PURE__ */ new Set([\n ...(i.created || []).map((l) => l.id),\n ...(i.deleted || []).map((l) => l.id),\n ...(i.updated || []).map(({ oldValue: l }) => l.id)\n ]);\n return !!(Array.isArray(e.options.annotations) ? e.options.annotations : [e.options.annotations]).find((l) => s.has(l));\n } else\n return !0;\n}, _o = (e, t) => {\n const n = new Set((e.created || []).map((f) => f.id)), o = new Set((e.updated || []).map(({ newValue: f }) => f.id)), i = new Set((t.created || []).map((f) => f.id)), r = new Set((t.deleted || []).map((f) => f.id)), s = new Set((t.updated || []).map(({ oldValue: f }) => f.id)), l = new Set((t.updated || []).filter(({ oldValue: f }) => n.has(f.id) || o.has(f.id)).map(({ oldValue: f }) => f.id)), a = [\n ...(e.created || []).filter((f) => !r.has(f.id)).map((f) => s.has(f.id) ? t.updated.find(({ oldValue: h }) => h.id === f.id).newValue : f),\n ...t.created || []\n ], c = [\n ...(e.deleted || []).filter((f) => !i.has(f.id)),\n ...(t.deleted || []).filter((f) => !n.has(f.id))\n ], u = [\n ...(e.updated || []).filter(({ newValue: f }) => !r.has(f.id)).map((f) => {\n const { oldValue: h, newValue: m } = f;\n if (s.has(m.id)) {\n const g = t.updated.find((p) => p.oldValue.id === m.id).newValue;\n return _n(h, g);\n } else\n return f;\n }),\n ...(t.updated || []).filter(({ oldValue: f }) => !l.has(f.id))\n ];\n return { created: a, deleted: c, updated: u };\n}, lt = (e) => {\n const t = e.id === void 0 ? pn() : e.id;\n return {\n ...e,\n id: t,\n bodies: e.bodies === void 0 ? [] : e.bodies.map((n) => ({\n ...n,\n annotation: t\n })),\n target: {\n ...e.target,\n annotation: t\n }\n };\n}, yo = (e) => e.id !== void 0, wo = () => {\n const e = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Map(), n = [], o = (S, v = {}) => {\n n.push({ onChange: S, options: v });\n }, i = (S) => {\n const v = n.findIndex((b) => b.onChange == S);\n v > -1 && n.splice(v, 1);\n }, r = (S, v) => {\n const b = {\n origin: S,\n changes: {\n created: v.created || [],\n updated: v.updated || [],\n deleted: v.deleted || []\n },\n state: [...e.values()]\n };\n n.forEach((T) => {\n po(T, b) && T.onChange(b);\n });\n }, s = (S, v = H.LOCAL) => {\n if (S.id && e.get(S.id))\n throw Error(`Cannot add annotation ${S.id} - exists already`);\n {\n const b = lt(S);\n e.set(b.id, b), b.bodies.forEach((T) => t.set(T.id, b.id)), r(v, { created: [b] });\n }\n }, l = (S, v) => {\n const b = lt(typeof S == \"string\" ? v : S), T = typeof S == \"string\" ? S : S.id, C = T && e.get(T);\n if (C) {\n const Y = _n(C, b);\n return T === b.id ? e.set(T, b) : (e.delete(T), e.set(b.id, b)), C.bodies.forEach((K) => t.delete(K.id)), b.bodies.forEach((K) => t.set(K.id, b.id)), Y;\n } else\n console.warn(`Cannot update annotation ${T} - does not exist`);\n }, a = (S, v = H.LOCAL, b = H.LOCAL) => {\n const T = yo(v) ? b : v, C = l(S, v);\n C && r(T, { updated: [C] });\n }, c = (S, v = H.LOCAL) => {\n const b = S.reduce((T, C) => {\n const Y = l(C);\n return Y ? [...T, Y] : T;\n }, []);\n b.length > 0 && r(v, { updated: b });\n }, u = (S, v = H.LOCAL) => {\n const b = e.get(S.annotation);\n if (b) {\n const T = {\n ...b,\n bodies: [...b.bodies, S]\n };\n e.set(b.id, T), t.set(S.id, T.id), r(v, { updated: [{\n oldValue: b,\n newValue: T,\n bodiesCreated: [S]\n }] });\n } else\n console.warn(`Attempt to add body to missing annotation: ${S.annotation}`);\n }, f = () => [...e.values()], h = (S = H.LOCAL) => {\n const v = [...e.values()];\n e.clear(), t.clear(), r(S, { deleted: v });\n }, m = (S, v = !0, b = H.LOCAL) => {\n const T = S.map(lt);\n if (v) {\n const C = [...e.values()];\n e.clear(), t.clear(), T.forEach((Y) => {\n e.set(Y.id, Y), Y.bodies.forEach((K) => t.set(K.id, Y.id));\n }), r(b, { created: T, deleted: C });\n } else {\n const C = S.reduce((Y, K) => {\n const Q = K.id && e.get(K.id);\n return Q ? [...Y, Q] : Y;\n }, []);\n if (C.length > 0)\n throw Error(`Bulk insert would overwrite the following annotations: ${C.map((Y) => Y.id).join(\", \")}`);\n T.forEach((Y) => {\n e.set(Y.id, Y), Y.bodies.forEach((K) => t.set(K.id, Y.id));\n }), r(b, { created: T });\n }\n }, g = (S) => {\n const v = typeof S == \"string\" ? S : S.id, b = e.get(v);\n if (b)\n return e.delete(v), b.bodies.forEach((T) => t.delete(T.id)), b;\n console.warn(`Attempt to delete missing annotation: ${v}`);\n }, p = (S, v = H.LOCAL) => {\n const b = g(S);\n b && r(v, { deleted: [b] });\n }, A = (S, v = H.LOCAL) => {\n const b = S.reduce((T, C) => {\n const Y = g(C);\n return Y ? [...T, Y] : T;\n }, []);\n b.length > 0 && r(v, { deleted: b });\n }, y = (S) => {\n const v = e.get(S.annotation);\n if (v) {\n const b = v.bodies.find((T) => T.id === S.id);\n if (b) {\n t.delete(b.id);\n const T = {\n ...v,\n bodies: v.bodies.filter((C) => C.id !== S.id)\n };\n return e.set(v.id, T), {\n oldValue: v,\n newValue: T,\n bodiesDeleted: [b]\n };\n } else\n console.warn(`Attempt to delete missing body ${S.id} from annotation ${S.annotation}`);\n } else\n console.warn(`Attempt to delete body from missing annotation ${S.annotation}`);\n }, _ = (S, v = H.LOCAL) => {\n const b = y(S);\n b && r(v, { updated: [b] });\n }, w = (S, v = H.LOCAL) => {\n const b = S.map((T) => y(T)).filter(Boolean);\n b.length > 0 && r(v, { updated: b });\n }, E = (S) => {\n const v = e.get(S);\n return v ? { ...v } : void 0;\n }, I = (S) => {\n const v = t.get(S);\n if (v) {\n const b = E(v).bodies.find((T) => T.id === S);\n if (b)\n return b;\n console.error(`Store integrity error: body ${S} in index, but not in annotation`);\n } else\n console.warn(`Attempt to retrieve missing body: ${S}`);\n }, N = (S, v) => {\n if (S.annotation !== v.annotation)\n throw \"Annotation integrity violation: annotation ID must be the same when updating bodies\";\n const b = e.get(S.annotation);\n if (b) {\n const T = b.bodies.find((Y) => Y.id === S.id), C = {\n ...b,\n bodies: b.bodies.map((Y) => Y.id === T.id ? v : Y)\n };\n return e.set(b.id, C), T.id !== v.id && (t.delete(T.id), t.set(v.id, C.id)), {\n oldValue: b,\n newValue: C,\n bodiesUpdated: [{ oldBody: T, newBody: v }]\n };\n } else\n console.warn(`Attempt to add body to missing annotation ${S.annotation}`);\n }, U = (S, v, b = H.LOCAL) => {\n const T = N(S, v);\n T && r(b, { updated: [T] });\n }, X = (S, v = H.LOCAL) => {\n const b = S.map((T) => N({ id: T.id, annotation: T.annotation }, T)).filter(Boolean);\n r(v, { updated: b });\n }, q = (S) => {\n const v = e.get(S.annotation);\n if (v) {\n const b = {\n ...v,\n target: {\n ...v.target,\n ...S\n }\n };\n return e.set(v.id, b), {\n oldValue: v,\n newValue: b,\n targetUpdated: {\n oldTarget: v.target,\n newTarget: S\n }\n };\n } else\n console.warn(`Attempt to update target on missing annotation: ${S.annotation}`);\n };\n return {\n addAnnotation: s,\n addBody: u,\n all: f,\n bulkAddAnnotation: m,\n bulkDeleteAnnotation: A,\n bulkDeleteBodies: w,\n bulkUpdateAnnotation: c,\n bulkUpdateBodies: X,\n bulkUpdateTargets: (S, v = H.LOCAL) => {\n const b = S.map((T) => q(T)).filter(Boolean);\n b.length > 0 && r(v, { updated: b });\n },\n clear: h,\n deleteAnnotation: p,\n deleteBody: _,\n getAnnotation: E,\n getBody: I,\n observe: o,\n unobserve: i,\n updateAnnotation: a,\n updateBody: U,\n updateTarget: (S, v = H.LOCAL) => {\n const b = q(S);\n b && r(v, { updated: [b] });\n }\n };\n}, bo = (e) => ({\n ...e,\n subscribe: (t) => {\n const n = (o) => t(o.state);\n return e.observe(n), t(e.all()), () => e.unobserve(n);\n }\n});\nlet Eo = () => ({\n emit(e, ...t) {\n for (let n = this.events[e] || [], o = 0, i = n.length; o < i; o++)\n n[o](...t);\n },\n events: {},\n on(e, t) {\n var n;\n return ((n = this.events)[e] || (n[e] = [])).push(t), () => {\n var o;\n this.events[e] = (o = this.events[e]) == null ? void 0 : o.filter((i) => t !== i);\n };\n }\n});\nconst Ao = 250, So = (e, t) => {\n const n = Eo(), o = (t == null ? void 0 : t.changes) || [];\n let i = t ? t.pointer : -1, r = !1, s = 0;\n const l = (g) => {\n if (!r) {\n const { changes: p } = g, A = performance.now();\n if (A - s > Ao)\n o.splice(i + 1), o.push(p), i = o.length - 1;\n else {\n const y = o.length - 1;\n o[y] = _o(o[y], p);\n }\n s = A;\n }\n r = !1;\n };\n e.observe(l, { origin: H.LOCAL });\n const a = (g) => g && g.length > 0 && e.bulkDeleteAnnotation(g), c = (g) => g && g.length > 0 && e.bulkAddAnnotation(g, !1), u = (g) => g && g.length > 0 && e.bulkUpdateAnnotation(g.map(({ oldValue: p }) => p)), f = (g) => g && g.length > 0 && e.bulkUpdateAnnotation(g.map(({ newValue: p }) => p)), h = (g) => g && g.length > 0 && e.bulkAddAnnotation(g, !1), m = (g) => g && g.length > 0 && e.bulkDeleteAnnotation(g);\n return {\n canRedo: () => o.length - 1 > i,\n canUndo: () => i > -1,\n destroy: () => e.unobserve(l),\n getHistory: () => ({ changes: [...o], pointer: i }),\n on: (g, p) => n.on(g, p),\n redo: () => {\n if (o.length - 1 > i) {\n r = !0;\n const { created: g, updated: p, deleted: A } = o[i + 1];\n c(g), f(p), m(A), n.emit(\"redo\", o[i + 1]), i += 1;\n }\n },\n undo: () => {\n if (i > -1) {\n r = !0;\n const { created: g, updated: p, deleted: A } = o[i];\n a(g), u(p), h(A), n.emit(\"undo\", o[i]), i -= 1;\n }\n }\n };\n}, To = () => {\n const { subscribe: e, set: t } = bt([]);\n return {\n subscribe: e,\n set: t\n };\n}, Mo = (e, t, n, o) => {\n const { hover: i, selection: r, store: s, viewport: l } = e, a = /* @__PURE__ */ new Map();\n let c = [], u, f;\n const h = (y, _) => {\n a.has(y) ? a.get(y).push(_) : a.set(y, [_]);\n }, m = (y, _) => {\n const w = a.get(y);\n if (w) {\n const E = w.indexOf(_);\n E !== -1 && w.splice(E, 1);\n }\n }, g = (y, _, w) => {\n a.has(y) && setTimeout(() => {\n a.get(y).forEach((E) => {\n if (n) {\n const I = Array.isArray(_) ? _.map((U) => n.serialize(U)) : n.serialize(_), N = w ? w instanceof PointerEvent ? w : n.serialize(w) : void 0;\n E(I, N);\n } else\n E(_, w);\n });\n }, 1);\n }, p = () => {\n const { selected: y } = r, _ = (y || []).map(({ id: w }) => s.getAnnotation(w));\n _.forEach((w) => {\n const E = c.find((I) => I.id === w.id);\n (!E || !we(E, w)) && g(\"updateAnnotation\", w, E);\n }), c = c.map((w) => _.find(({ id: I }) => I === w.id) || w);\n };\n r.subscribe(({ selected: y }) => {\n if (!(c.length === 0 && y.length === 0)) {\n if (c.length === 0 && y.length > 0)\n c = y.map(({ id: _ }) => s.getAnnotation(_));\n else if (c.length > 0 && y.length === 0)\n c.forEach((_) => {\n const w = s.getAnnotation(_.id);\n w && !we(w, _) && g(\"updateAnnotation\", w, _);\n }), c = [];\n else {\n const _ = new Set(c.map((E) => E.id)), w = new Set(y.map(({ id: E }) => E));\n c.filter((E) => !w.has(E.id)).forEach((E) => {\n const I = s.getAnnotation(E.id);\n I && !we(I, E) && g(\"updateAnnotation\", I, E);\n }), c = [\n // Remove annotations that were deselected\n ...c.filter((E) => w.has(E.id)),\n // Add editable annotations that were selected\n ...y.filter(({ id: E }) => !_.has(E)).map(({ id: E }) => s.getAnnotation(E))\n ];\n }\n g(\"selectionChanged\", c);\n }\n }), i.subscribe((y) => {\n !u && y ? g(\"mouseEnterAnnotation\", s.getAnnotation(y)) : u && !y ? g(\"mouseLeaveAnnotation\", s.getAnnotation(u)) : u && y && (g(\"mouseLeaveAnnotation\", s.getAnnotation(u)), g(\"mouseEnterAnnotation\", s.getAnnotation(y))), u = y;\n }), l == null || l.subscribe((y) => g(\"viewportIntersect\", y.map((_) => s.getAnnotation(_)))), s.observe((y) => {\n o && (f && clearTimeout(f), f = setTimeout(p, 1e3));\n const { created: _, deleted: w } = y.changes;\n (_ || []).forEach((E) => g(\"createAnnotation\", E)), (w || []).forEach((E) => g(\"deleteAnnotation\", E)), (y.changes.updated || []).filter((E) => [\n ...E.bodiesCreated || [],\n ...E.bodiesDeleted || [],\n ...E.bodiesUpdated || []\n ].length > 0).forEach(({ oldValue: E, newValue: I }) => {\n const N = c.find((U) => U.id === E.id) || E;\n c = c.map((U) => U.id === E.id ? I : U), g(\"updateAnnotation\", I, N);\n });\n }, { origin: H.LOCAL }), s.observe((y) => {\n if (c) {\n const _ = new Set(c.map((E) => E.id)), w = (y.changes.updated || []).filter(({ newValue: E }) => _.has(E.id)).map(({ newValue: E }) => E);\n w.length > 0 && (c = c.map((E) => w.find((N) => N.id === E.id) || E));\n }\n }, { origin: H.REMOTE });\n const A = (y) => (_) => {\n const { updated: w } = _;\n y ? (w || []).forEach((E) => g(\"updateAnnotation\", E.oldValue, E.newValue)) : (w || []).forEach((E) => g(\"updateAnnotation\", E.newValue, E.oldValue));\n };\n return t.on(\"undo\", A(!0)), t.on(\"redo\", A(!1)), { on: h, off: m, emit: g };\n}, vo = (e) => (t) => t.reduce((n, o) => {\n const { parsed: i, error: r } = e.parse(o);\n return r ? {\n parsed: n.parsed,\n failed: [...n.failed, o]\n } : i ? {\n parsed: [...n.parsed, i],\n failed: n.failed\n } : {\n ...n\n };\n}, { parsed: [], failed: [] }), Lo = (e, t, n) => {\n const { store: o, selection: i } = e, r = (y) => {\n if (n) {\n const { parsed: _, error: w } = n.parse(y);\n _ ? o.addAnnotation(_, H.REMOTE) : console.error(w);\n } else\n o.addAnnotation(st(y), H.REMOTE);\n }, s = () => i.clear(), l = () => o.clear(), a = (y) => {\n const _ = o.getAnnotation(y);\n return n && _ ? n.serialize(_) : _;\n }, c = () => n ? o.all().map(n.serialize) : o.all(), u = () => {\n var y;\n const _ = (((y = i.selected) == null ? void 0 : y.map((w) => w.id)) || []).map((w) => o.getAnnotation(w)).filter(Boolean);\n return n ? _.map(n.serialize) : _;\n }, f = (y, _ = !0) => fetch(y).then((w) => w.json()).then((w) => (m(w, _), w)), h = (y) => {\n if (typeof y == \"string\") {\n const _ = o.getAnnotation(y);\n if (o.deleteAnnotation(y), _)\n return n ? n.serialize(_) : _;\n } else {\n const _ = n ? n.parse(y).parsed : y;\n if (_)\n return o.deleteAnnotation(_), y;\n }\n }, m = (y, _ = !0) => {\n if (n) {\n const w = n.parseAll || vo(n), { parsed: E, failed: I } = w(y);\n I.length > 0 && console.warn(`Discarded ${I.length} invalid annotations`, I), o.bulkAddAnnotation(E, _, H.REMOTE);\n } else\n o.bulkAddAnnotation(y.map(st), _, H.REMOTE);\n }, g = (y, _) => {\n y ? i.setSelected(y, _) : i.clear();\n }, p = (y) => {\n i.clear(), i.setUserSelectAction(y);\n }, A = (y) => {\n if (n) {\n const _ = n.parse(y).parsed, w = n.serialize(o.getAnnotation(_.id));\n return o.updateAnnotation(_), w;\n } else {\n const _ = o.getAnnotation(y.id);\n return o.updateAnnotation(st(y)), _;\n }\n };\n return {\n addAnnotation: r,\n cancelSelected: s,\n canRedo: t.canRedo,\n canUndo: t.canUndo,\n clearAnnotations: l,\n getAnnotationById: a,\n getAnnotations: c,\n getHistory: t.getHistory,\n getSelected: u,\n loadAnnotations: f,\n redo: t.redo,\n removeAnnotation: h,\n setAnnotations: m,\n setSelected: g,\n setUserSelectAction: p,\n undo: t.undo,\n updateAnnotation: A\n };\n}, dr = (e, t, n) => typeof t == \"function\" ? t(e, n) : t, hr = (e, t) => typeof e != \"function\" && typeof t != \"function\" ? {\n ...e || {},\n ...t || {}\n} : (n, o) => {\n const i = typeof e == \"function\" ? e(n, o) : e, r = typeof t == \"function\" ? t(n, o) : t;\n return {\n ...i || {},\n ...r || {}\n };\n}, ko = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet Io = (e) => crypto.getRandomValues(new Uint8Array(e)), Oo = (e, t, n) => {\n let o = (2 << Math.log2(e.length - 1)) - 1, i = -~(1.6 * o * t / e.length);\n return (r = t) => {\n let s = \"\";\n for (; ; ) {\n let l = n(i), a = i | 0;\n for (; a--; )\n if (s += e[l[a] & o] || \"\", s.length >= r) return s;\n }\n };\n}, Bo = (e, t = 21) => Oo(e, t | 0, Io), Do = (e = 21) => {\n let t = \"\", n = crypto.getRandomValues(new Uint8Array(e |= 0));\n for (; e--; )\n t += ko[n[e] & 63];\n return t;\n};\nconst Po = () => ({ isGuest: !0, id: Bo(\"1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_\", 20)() }), Yo = (e) => {\n const t = JSON.stringify(e);\n let n = 0;\n for (let o = 0, i = t.length; o < i; o++) {\n let r = t.charCodeAt(o);\n n = (n << 5) - n + r, n |= 0;\n }\n return `${n}`;\n}, yn = (e) => e ? typeof e == \"object\" ? { ...e } : e : void 0, Co = (e, t) => (Array.isArray(e) ? e : [e]).map((n) => {\n const { id: o, type: i, purpose: r, value: s, created: l, modified: a, creator: c, ...u } = n;\n return {\n id: o || `temp-${Yo(n)}`,\n annotation: t,\n type: i,\n purpose: r,\n value: s,\n creator: yn(c),\n created: l ? new Date(l) : void 0,\n updated: a ? new Date(a) : void 0,\n ...u\n };\n}), No = (e) => e.map((t) => {\n var n;\n const { annotation: o, created: i, updated: r, ...s } = t, l = {\n ...s,\n created: i == null ? void 0 : i.toISOString(),\n modified: r == null ? void 0 : r.toISOString()\n };\n return (n = l.id) != null && n.startsWith(\"temp-\") && delete l.id, l;\n}), Uo = [\n \"#ff7c00\",\n // orange\n \"#1ac938\",\n // green\n \"#e8000b\",\n // red\n \"#8b2be2\",\n // purple\n \"#9f4800\",\n // brown\n \"#f14cc1\",\n // pink\n \"#ffc400\",\n // khaki\n \"#00d7ff\",\n // cyan\n \"#023eff\"\n // blue\n], gr = () => {\n const e = [...Uo];\n return { assignRandomColor: () => {\n const t = Math.floor(Math.random() * e.length), n = e[t];\n return e.splice(t, 1), n;\n }, releaseColor: (t) => e.push(t) };\n};\nDo();\nconst mr = (e, t = { strict: !0, invertY: !1 }) => ({ parse: (i) => Xo(i, t), serialize: (i) => Ro(i, e, t) }), Xo = (e, t = { strict: !0, invertY: !1 }) => {\n const n = e.id || gn(), {\n creator: o,\n created: i,\n modified: r,\n body: s,\n ...l\n } = e, a = Co(s || [], n), c = Array.isArray(e.target) ? e.target[0] : e.target, u = Array.isArray(c.selector) ? c.selector[0] : c.selector, f = (u == null ? void 0 : u.type) === \"FragmentSelector\" ? Kn(u, t.invertY) : (u == null ? void 0 : u.type) === \"SvgSelector\" ? xn(u) : void 0;\n return f || !t.strict ? {\n parsed: {\n ...l,\n id: n,\n bodies: a,\n target: {\n created: i ? new Date(i) : void 0,\n creator: yn(o),\n updated: r ? new Date(r) : void 0,\n ...Array.isArray(l.target) ? l.target[0] : l.target,\n annotation: n,\n selector: f || u\n }\n }\n } : {\n error: Error(`Invalid selector: ${JSON.stringify(u)}`)\n };\n}, Ro = (e, t, n = { strict: !0, invertY: !1 }) => {\n const {\n selector: o,\n creator: i,\n created: r,\n updated: s,\n updatedBy: l,\n // Excluded from serialization\n ...a\n } = e.target;\n let c;\n try {\n c = o.type == z.RECTANGLE ? Wn(o.geometry) : $n(o);\n } catch (f) {\n if (n.strict)\n throw f;\n c = o;\n }\n const u = {\n ...e,\n \"@context\": \"http://www.w3.org/ns/anno.jsonld\",\n id: e.id,\n type: \"Annotation\",\n body: No(e.bodies),\n created: r == null ? void 0 : r.toISOString(),\n creator: i,\n modified: s == null ? void 0 : s.toISOString(),\n target: {\n ...a,\n source: t,\n selector: c\n }\n };\n return delete u.bodies, \"annotation\" in u.target && delete u.target.annotation, u;\n};\nfunction Bt(e, t, n) {\n const o = e.slice();\n return o[10] = t[n], o[12] = n, o;\n}\nfunction Dt(e) {\n let t, n;\n return t = new Be({\n props: {\n x: (\n /*point*/\n e[10][0]\n ),\n y: (\n /*point*/\n e[10][1]\n ),\n scale: (\n /*viewportScale*/\n e[3]\n )\n }\n }), t.$on(\"pointerdown\", function() {\n F(\n /*grab*/\n e[9](`HANDLE-${/*idx*/\n e[12]}`)\n ) && e[9](`HANDLE-${/*idx*/\n e[12]}`).apply(this, arguments);\n }), {\n c() {\n ee(t.$$.fragment);\n },\n m(o, i) {\n x(t, o, i), n = !0;\n },\n p(o, i) {\n e = o;\n const r = {};\n i & /*geom*/\n 16 && (r.x = /*point*/\n e[10][0]), i & /*geom*/\n 16 && (r.y = /*point*/\n e[10][1]), i & /*viewportScale*/\n 8 && (r.scale = /*viewportScale*/\n e[3]), t.$set(r);\n },\n i(o) {\n n || (k(t.$$.fragment, o), n = !0);\n },\n o(o) {\n D(t.$$.fragment, o), n = !1;\n },\n d(o) {\n $(t, o);\n }\n };\n}\nfunction Vo(e) {\n let t, n, o, i, r, s, l, a, c, u, f, h = ie(\n /*geom*/\n e[4].points\n ), m = [];\n for (let p = 0; p < h.length; p += 1)\n m[p] = Dt(Bt(e, h, p));\n const g = (p) => D(m[p], 1, 1, () => {\n m[p] = null;\n });\n return {\n c() {\n t = P(\"polygon\"), i = ue(), r = P(\"polygon\"), l = ue();\n for (let p = 0; p < m.length; p += 1)\n m[p].c();\n a = ae(), d(t, \"class\", \"a9s-outer\"), d(t, \"style\", n = /*computedStyle*/\n e[1] ? \"display:none;\" : void 0), d(t, \"points\", o = /*geom*/\n e[4].points.map(Pt).join(\" \")), d(r, \"class\", \"a9s-inner a9s-shape-handle\"), d(\n r,\n \"style\",\n /*computedStyle*/\n e[1]\n ), d(r, \"points\", s = /*geom*/\n e[4].points.map(Yt).join(\" \"));\n },\n m(p, A) {\n B(p, t, A), B(p, i, A), B(p, r, A), B(p, l, A);\n for (let y = 0; y < m.length; y += 1)\n m[y] && m[y].m(p, A);\n B(p, a, A), c = !0, u || (f = [\n j(t, \"pointerdown\", function() {\n F(\n /*grab*/\n e[9](\"SHAPE\")\n ) && e[9](\"SHAPE\").apply(this, arguments);\n }),\n j(r, \"pointerdown\", function() {\n F(\n /*grab*/\n e[9](\"SHAPE\")\n ) && e[9](\"SHAPE\").apply(this, arguments);\n })\n ], u = !0);\n },\n p(p, A) {\n if (e = p, (!c || A & /*computedStyle*/\n 2 && n !== (n = /*computedStyle*/\n e[1] ? \"display:none;\" : void 0)) && d(t, \"style\", n), (!c || A & /*geom*/\n 16 && o !== (o = /*geom*/\n e[4].points.map(Pt).join(\" \"))) && d(t, \"points\", o), (!c || A & /*computedStyle*/\n 2) && d(\n r,\n \"style\",\n /*computedStyle*/\n e[1]\n ), (!c || A & /*geom*/\n 16 && s !== (s = /*geom*/\n e[4].points.map(Yt).join(\" \"))) && d(r, \"points\", s), A & /*geom, viewportScale, grab*/\n 536) {\n h = ie(\n /*geom*/\n e[4].points\n );\n let y;\n for (y = 0; y < h.length; y += 1) {\n const _ = Bt(e, h, y);\n m[y] ? (m[y].p(_, A), k(m[y], 1)) : (m[y] = Dt(_), m[y].c(), k(m[y], 1), m[y].m(a.parentNode, a));\n }\n for (ne(), y = h.length; y < m.length; y += 1)\n g(y);\n oe();\n }\n },\n i(p) {\n if (!c) {\n for (let A = 0; A < h.length; A += 1)\n k(m[A]);\n c = !0;\n }\n },\n o(p) {\n m = m.filter(Boolean);\n for (let A = 0; A < m.length; A += 1)\n D(m[A]);\n c = !1;\n },\n d(p) {\n p && (O(t), O(i), O(r), O(l), O(a)), Se(m, p), u = !1, de(f);\n }\n };\n}\nfunction Go(e) {\n let t, n;\n return t = new Et({\n props: {\n shape: (\n /*shape*/\n e[0]\n ),\n transform: (\n /*transform*/\n e[2]\n ),\n editor: (\n /*editor*/\n e[5]\n ),\n $$slots: {\n default: [\n Vo,\n ({ grab: o }) => ({ 9: o }),\n ({ grab: o }) => o ? 512 : 0\n ]\n },\n $$scope: { ctx: e }\n }\n }), t.$on(\n \"change\",\n /*change_handler*/\n e[6]\n ), t.$on(\n \"grab\",\n /*grab_handler*/\n e[7]\n ), t.$on(\n \"release\",\n /*release_handler*/\n e[8]\n ), {\n c() {\n ee(t.$$.fragment);\n },\n m(o, i) {\n x(t, o, i), n = !0;\n },\n p(o, [i]) {\n const r = {};\n i & /*shape*/\n 1 && (r.shape = /*shape*/\n o[0]), i & /*transform*/\n 4 && (r.transform = /*transform*/\n o[2]), i & /*$$scope, geom, viewportScale, grab, computedStyle*/\n 8730 && (r.$$scope = { dirty: i, ctx: o }), t.$set(r);\n },\n i(o) {\n n || (k(t.$$.fragment, o), n = !0);\n },\n o(o) {\n D(t.$$.fragment, o), n = !1;\n },\n d(o) {\n $(t, o);\n }\n };\n}\nconst Pt = (e) => e.join(\",\"), Yt = (e) => e.join(\",\");\nfunction Ho(e, t, n) {\n let o, { shape: i } = t, { computedStyle: r } = t, { transform: s } = t, { viewportScale: l = 1 } = t;\n const a = (h, m, g) => {\n let p;\n const A = h.geometry;\n m === \"SHAPE\" ? p = A.points.map(([_, w]) => [_ + g[0], w + g[1]]) : p = A.points.map(([_, w], E) => m === `HANDLE-${E}` ? [_ + g[0], w + g[1]] : [_, w]);\n const y = Ae(p);\n return { ...h, geometry: { points: p, bounds: y } };\n };\n function c(h) {\n ce.call(this, e, h);\n }\n function u(h) {\n ce.call(this, e, h);\n }\n function f(h) {\n ce.call(this, e, h);\n }\n return e.$$set = (h) => {\n \"shape\" in h && n(0, i = h.shape), \"computedStyle\" in h && n(1, r = h.computedStyle), \"transform\" in h && n(2, s = h.transform), \"viewportScale\" in h && n(3, l = h.viewportScale);\n }, e.$$.update = () => {\n e.$$.dirty & /*shape*/\n 1 && n(4, o = i.geometry);\n }, [\n i,\n r,\n s,\n l,\n o,\n a,\n c,\n u,\n f\n ];\n}\nclass jo extends se {\n constructor(t) {\n super(), re(this, t, Ho, Go, W, {\n shape: 0,\n computedStyle: 1,\n transform: 2,\n viewportScale: 3\n });\n }\n}\nconst at = (e, t) => {\n const n = Math.abs(t[0] - e[0]), o = Math.abs(t[1] - e[1]);\n return Math.sqrt(Math.pow(n, 2) + Math.pow(o, 2));\n}, ve = [];\nfunction zo(e, t = G) {\n let n;\n const o = /* @__PURE__ */ new Set();\n function i(l) {\n if (W(e, l) && (e = l, n)) {\n const a = !ve.length;\n for (const c of o)\n c[1](), ve.push(c, e);\n if (a) {\n for (let c = 0; c < ve.length; c += 2)\n ve[c][0](ve[c + 1]);\n ve.length = 0;\n }\n }\n }\n function r(l) {\n i(l(e));\n }\n function s(l, a = G) {\n const c = [l, a];\n return o.add(c), o.size === 1 && (n = t(i, r) || G), l(e), () => {\n o.delete(c), o.size === 0 && n && (n(), n = null);\n };\n }\n return { set: i, update: r, subscribe: s };\n}\nconst Fo = (e, t) => {\n const { naturalWidth: n, naturalHeight: o } = e;\n if (!n && !o) {\n const { width: i, height: r } = e;\n t.setAttribute(\"viewBox\", `0 0 ${i} ${r}`), e.addEventListener(\"load\", (s) => {\n const l = s.target;\n t.setAttribute(\"viewBox\", `0 0 ${l.naturalWidth} ${l.naturalHeight}`);\n });\n } else\n t.setAttribute(\"viewBox\", `0 0 ${n} ${o}`);\n}, Ko = (e, t) => {\n Fo(e, t);\n const { subscribe: n, set: o } = zo(1);\n let i;\n return window.ResizeObserver && (i = new ResizeObserver(() => {\n const s = t.getBoundingClientRect(), { width: l, height: a } = t.viewBox.baseVal, c = Math.max(\n s.width / l,\n s.height / a\n );\n o(c);\n }), i.observe(t.parentElement)), { destroy: () => {\n i && i.disconnect();\n }, subscribe: n };\n}, Wo = typeof window > \"u\" || typeof navigator > \"u\" ? !1 : \"ontouchstart\" in window || navigator.maxTouchPoints > 0 || // @ts-ignore\nnavigator.msMaxTouchPoints > 0;\nfunction qo(e) {\n let t, n, o, i, r, s;\n return {\n c() {\n t = P(\"rect\"), d(t, \"class\", n = Ze(`a9s-handle ${/*$$props*/\n e[8].class || \"\"}`.trim()) + \" svelte-1sgkh33\"), d(t, \"x\", o = /*x*/\n e[0] - /*handleSize*/\n e[5] / 2), d(t, \"y\", i = /*y*/\n e[1] - /*handleSize*/\n e[5] / 2), d(\n t,\n \"width\",\n /*handleSize*/\n e[5]\n ), d(\n t,\n \"height\",\n /*handleSize*/\n e[5]\n );\n },\n m(l, a) {\n B(l, t, a), r || (s = j(\n t,\n \"pointerdown\",\n /*pointerdown_handler_2*/\n e[11]\n ), r = !0);\n },\n p(l, a) {\n a & /*$$props*/\n 256 && n !== (n = Ze(`a9s-handle ${/*$$props*/\n l[8].class || \"\"}`.trim()) + \" svelte-1sgkh33\") && d(t, \"class\", n), a & /*x, handleSize*/\n 33 && o !== (o = /*x*/\n l[0] - /*handleSize*/\n l[5] / 2) && d(t, \"x\", o), a & /*y, handleSize*/\n 34 && i !== (i = /*y*/\n l[1] - /*handleSize*/\n l[5] / 2) && d(t, \"y\", i), a & /*handleSize*/\n 32 && d(\n t,\n \"width\",\n /*handleSize*/\n l[5]\n ), a & /*handleSize*/\n 32 && d(\n t,\n \"height\",\n /*handleSize*/\n l[5]\n );\n },\n d(l) {\n l && O(t), r = !1, s();\n }\n };\n}\nfunction Jo(e) {\n let t, n, o, i, r, s, l, a, c;\n return {\n c() {\n t = P(\"g\"), n = P(\"circle\"), i = P(\"rect\"), d(\n n,\n \"cx\",\n /*x*/\n e[0]\n ), d(\n n,\n \"cy\",\n /*y*/\n e[1]\n ), d(n, \"r\", o = /*radius*/\n e[3] / /*scale*/\n e[2]), d(n, \"class\", \"a9s-touch-halo svelte-1sgkh33\"), ye(\n n,\n \"touched\",\n /*touched*/\n e[4]\n ), d(i, \"class\", r = Ze(`a9s-handle ${/*$$props*/\n e[8].class || \"\"}`.trim()) + \" svelte-1sgkh33\"), d(i, \"x\", s = /*x*/\n e[0] - /*handleSize*/\n e[5] / 2), d(i, \"y\", l = /*y*/\n e[1] - /*handleSize*/\n e[5] / 2), d(\n i,\n \"width\",\n /*handleSize*/\n e[5]\n ), d(\n i,\n \"height\",\n /*handleSize*/\n e[5]\n ), d(t, \"class\", \"a9s-touch-handle\");\n },\n m(u, f) {\n B(u, t, f), fe(t, n), fe(t, i), a || (c = [\n j(\n n,\n \"pointerdown\",\n /*pointerdown_handler*/\n e[10]\n ),\n j(\n n,\n \"pointerdown\",\n /*onPointerDown*/\n e[6]\n ),\n j(\n n,\n \"pointerup\",\n /*onPointerUp*/\n e[7]\n ),\n j(\n i,\n \"pointerdown\",\n /*pointerdown_handler_1*/\n e[9]\n ),\n j(\n i,\n \"pointerdown\",\n /*onPointerDown*/\n e[6]\n ),\n j(\n i,\n \"pointerup\",\n /*onPointerUp*/\n e[7]\n )\n ], a = !0);\n },\n p(u, f) {\n f & /*x*/\n 1 && d(\n n,\n \"cx\",\n /*x*/\n u[0]\n ), f & /*y*/\n 2 && d(\n n,\n \"cy\",\n /*y*/\n u[1]\n ), f & /*radius, scale*/\n 12 && o !== (o = /*radius*/\n u[3] / /*scale*/\n u[2]) && d(n, \"r\", o), f & /*touched*/\n 16 && ye(\n n,\n \"touched\",\n /*touched*/\n u[4]\n ), f & /*$$props*/\n 256 && r !== (r = Ze(`a9s-handle ${/*$$props*/\n u[8].class || \"\"}`.trim()) + \" svelte-1sgkh33\") && d(i, \"class\", r), f & /*x, handleSize*/\n 33 && s !== (s = /*x*/\n u[0] - /*handleSize*/\n u[5] / 2) && d(i, \"x\", s), f & /*y, handleSize*/\n 34 && l !== (l = /*y*/\n u[1] - /*handleSize*/\n u[5] / 2) && d(i, \"y\", l), f & /*handleSize*/\n 32 && d(\n i,\n \"width\",\n /*handleSize*/\n u[5]\n ), f & /*handleSize*/\n 32 && d(\n i,\n \"height\",\n /*handleSize*/\n u[5]\n );\n },\n d(u) {\n u && O(t), a = !1, de(c);\n }\n };\n}\nfunction Zo(e) {\n let t;\n function n(r, s) {\n return Wo ? Jo : qo;\n }\n let i = n()(e);\n return {\n c() {\n i.c(), t = ae();\n },\n m(r, s) {\n i.m(r, s), B(r, t, s);\n },\n p(r, [s]) {\n i.p(r, s);\n },\n i: G,\n o: G,\n d(r) {\n r && O(t), i.d(r);\n }\n };\n}\nfunction Qo(e, t, n) {\n let o, { x: i } = t, { y: r } = t, { scale: s } = t, { radius: l = 30 } = t, a = !1;\n const c = (g) => {\n g.pointerType === \"touch\" && n(4, a = !0);\n }, u = () => n(4, a = !1);\n function f(g) {\n ce.call(this, e, g);\n }\n function h(g) {\n ce.call(this, e, g);\n }\n function m(g) {\n ce.call(this, e, g);\n }\n return e.$$set = (g) => {\n n(8, t = ht(ht({}, t), Tt(g))), \"x\" in g && n(0, i = g.x), \"y\" in g && n(1, r = g.y), \"scale\" in g && n(2, s = g.scale), \"radius\" in g && n(3, l = g.radius);\n }, e.$$.update = () => {\n e.$$.dirty & /*scale*/\n 4 && n(5, o = 10 / s);\n }, t = Tt(t), [\n i,\n r,\n s,\n l,\n a,\n o,\n c,\n u,\n t,\n f,\n h,\n m\n ];\n}\nclass Be extends se {\n constructor(t) {\n super(), re(this, t, Qo, Zo, W, { x: 0, y: 1, scale: 2, radius: 3 });\n }\n}\nfunction xo(e) {\n let t, n, o, i, r, s, l, a, c, u, f, h, m, g, p, A, y, _, w, E, I, N, U, X, q, S, v, b, T, C, Y, K, Q, le, _e, he, Ye, ge, Ce, me, R, Ne, ze;\n return le = new Be({\n props: {\n class: \"a9s-corner-handle-topleft\",\n x: (\n /*geom*/\n e[4].x\n ),\n y: (\n /*geom*/\n e[4].y\n ),\n scale: (\n /*viewportScale*/\n e[3]\n )\n }\n }), le.$on(\"pointerdown\", function() {\n F(\n /*grab*/\n e[9](\"TOP_LEFT\")\n ) && e[9](\"TOP_LEFT\").apply(this, arguments);\n }), he = new Be({\n props: {\n class: \"a9s-corner-handle-topright\",\n x: (\n /*geom*/\n e[4].x + /*geom*/\n e[4].w\n ),\n y: (\n /*geom*/\n e[4].y\n ),\n scale: (\n /*viewportScale*/\n e[3]\n )\n }\n }), he.$on(\"pointerdown\", function() {\n F(\n /*grab*/\n e[9](\"TOP_RIGHT\")\n ) && e[9](\"TOP_RIGHT\").apply(this, arguments);\n }), ge = new Be({\n props: {\n class: \"a9s-corner-handle-bottomright\",\n x: (\n /*geom*/\n e[4].x + /*geom*/\n e[4].w\n ),\n y: (\n /*geom*/\n e[4].y + /*geom*/\n e[4].h\n ),\n scale: (\n /*viewportScale*/\n e[3]\n )\n }\n }), ge.$on(\"pointerdown\", function() {\n F(\n /*grab*/\n e[9](\"BOTTOM_RIGHT\")\n ) && e[9](\"BOTTOM_RIGHT\").apply(this, arguments);\n }), me = new Be({\n props: {\n class: \"a9s-corner-handle-bottomleft\",\n x: (\n /*geom*/\n e[4].x\n ),\n y: (\n /*geom*/\n e[4].y + /*geom*/\n e[4].h\n ),\n scale: (\n /*viewportScale*/\n e[3]\n )\n }\n }), me.$on(\"pointerdown\", function() {\n F(\n /*grab*/\n e[9](\"BOTTOM_LEFT\")\n ) && e[9](\"BOTTOM_LEFT\").apply(this, arguments);\n }), {\n c() {\n t = P(\"rect\"), l = ue(), a = P(\"rect\"), m = ue(), g = P(\"rect\"), _ = ue(), w = P(\"rect\"), U = ue(), X = P(\"rect\"), b = ue(), T = P(\"rect\"), Q = ue(), ee(le.$$.fragment), _e = ue(), ee(he.$$.fragment), Ye = ue(), ee(ge.$$.fragment), Ce = ue(), ee(me.$$.fragment), d(t, \"class\", \"a9s-outer\"), d(t, \"style\", n = /*computedStyle*/\n e[1] ? \"display:none;\" : void 0), d(t, \"x\", o = /*geom*/\n e[4].x), d(t, \"y\", i = /*geom*/\n e[4].y), d(t, \"width\", r = /*geom*/\n e[4].w), d(t, \"height\", s = /*geom*/\n e[4].h), d(a, \"class\", \"a9s-inner a9s-shape-handle\"), d(\n a,\n \"style\",\n /*computedStyle*/\n e[1]\n ), d(a, \"x\", c = /*geom*/\n e[4].x), d(a, \"y\", u = /*geom*/\n e[4].y), d(a, \"width\", f = /*geom*/\n e[4].w), d(a, \"height\", h = /*geom*/\n e[4].h), d(g, \"class\", \"a9s-edge-handle a9s-edge-handle-top\"), d(g, \"x\", p = /*geom*/\n e[4].x), d(g, \"y\", A = /*geom*/\n e[4].y), d(g, \"height\", 1), d(g, \"width\", y = /*geom*/\n e[4].w), d(w, \"class\", \"a9s-edge-handle a9s-edge-handle-right\"), d(w, \"x\", E = /*geom*/\n e[4].x + /*geom*/\n e[4].w), d(w, \"y\", I = /*geom*/\n e[4].y), d(w, \"height\", N = /*geom*/\n e[4].h), d(w, \"width\", 1), d(X, \"class\", \"a9s-edge-handle a9s-edge-handle-bottom\"), d(X, \"x\", q = /*geom*/\n e[4].x), d(X, \"y\", S = /*geom*/\n e[4].y + /*geom*/\n e[4].h), d(X, \"height\", 1), d(X, \"width\", v = /*geom*/\n e[4].w), d(T, \"class\", \"a9s-edge-handle a9s-edge-handle-left\"), d(T, \"x\", C = /*geom*/\n e[4].x), d(T, \"y\", Y = /*geom*/\n e[4].y), d(T, \"height\", K = /*geom*/\n e[4].h), d(T, \"width\", 1);\n },\n m(M, L) {\n B(M, t, L), B(M, l, L), B(M, a, L), B(M, m, L), B(M, g, L), B(M, _, L), B(M, w, L), B(M, U, L), B(M, X, L), B(M, b, L), B(M, T, L), B(M, Q, L), x(le, M, L), B(M, _e, L), x(he, M, L), B(M, Ye, L), x(ge, M, L), B(M, Ce, L), x(me, M, L), R = !0, Ne || (ze = [\n j(t, \"pointerdown\", function() {\n F(\n /*grab*/\n e[9](\"SHAPE\")\n ) && e[9](\"SHAPE\").apply(this, arguments);\n }),\n j(a, \"pointerdown\", function() {\n F(\n /*grab*/\n e[9](\"SHAPE\")\n ) && e[9](\"SHAPE\").apply(this, arguments);\n }),\n j(g, \"pointerdown\", function() {\n F(\n /*grab*/\n e[9](\"TOP\")\n ) && e[9](\"TOP\").apply(this, arguments);\n }),\n j(w, \"pointerdown\", function() {\n F(\n /*grab*/\n e[9](\"RIGHT\")\n ) && e[9](\"RIGHT\").apply(this, arguments);\n }),\n j(X, \"pointerdown\", function() {\n F(\n /*grab*/\n e[9](\"BOTTOM\")\n ) && e[9](\"BOTTOM\").apply(this, arguments);\n }),\n j(T, \"pointerdown\", function() {\n F(\n /*grab*/\n e[9](\"LEFT\")\n ) && e[9](\"LEFT\").apply(this, arguments);\n })\n ], Ne = !0);\n },\n p(M, L) {\n e = M, (!R || L & /*computedStyle*/\n 2 && n !== (n = /*computedStyle*/\n e[1] ? \"display:none;\" : void 0)) && d(t, \"style\", n), (!R || L & /*geom*/\n 16 && o !== (o = /*geom*/\n e[4].x)) && d(t, \"x\", o), (!R || L & /*geom*/\n 16 && i !== (i = /*geom*/\n e[4].y)) && d(t, \"y\", i), (!R || L & /*geom*/\n 16 && r !== (r = /*geom*/\n e[4].w)) && d(t, \"width\", r), (!R || L & /*geom*/\n 16 && s !== (s = /*geom*/\n e[4].h)) && d(t, \"height\", s), (!R || L & /*computedStyle*/\n 2) && d(\n a,\n \"style\",\n /*computedStyle*/\n e[1]\n ), (!R || L & /*geom*/\n 16 && c !== (c = /*geom*/\n e[4].x)) && d(a, \"x\", c), (!R || L & /*geom*/\n 16 && u !== (u = /*geom*/\n e[4].y)) && d(a, \"y\", u), (!R || L & /*geom*/\n 16 && f !== (f = /*geom*/\n e[4].w)) && d(a, \"width\", f), (!R || L & /*geom*/\n 16 && h !== (h = /*geom*/\n e[4].h)) && d(a, \"height\", h), (!R || L & /*geom*/\n 16 && p !== (p = /*geom*/\n e[4].x)) && d(g, \"x\", p), (!R || L & /*geom*/\n 16 && A !== (A = /*geom*/\n e[4].y)) && d(g, \"y\", A), (!R || L & /*geom*/\n 16 && y !== (y = /*geom*/\n e[4].w)) && d(g, \"width\", y), (!R || L & /*geom*/\n 16 && E !== (E = /*geom*/\n e[4].x + /*geom*/\n e[4].w)) && d(w, \"x\", E), (!R || L & /*geom*/\n 16 && I !== (I = /*geom*/\n e[4].y)) && d(w, \"y\", I), (!R || L & /*geom*/\n 16 && N !== (N = /*geom*/\n e[4].h)) && d(w, \"height\", N), (!R || L & /*geom*/\n 16 && q !== (q = /*geom*/\n e[4].x)) && d(X, \"x\", q), (!R || L & /*geom*/\n 16 && S !== (S = /*geom*/\n e[4].y + /*geom*/\n e[4].h)) && d(X, \"y\", S), (!R || L & /*geom*/\n 16 && v !== (v = /*geom*/\n e[4].w)) && d(X, \"width\", v), (!R || L & /*geom*/\n 16 && C !== (C = /*geom*/\n e[4].x)) && d(T, \"x\", C), (!R || L & /*geom*/\n 16 && Y !== (Y = /*geom*/\n e[4].y)) && d(T, \"y\", Y), (!R || L & /*geom*/\n 16 && K !== (K = /*geom*/\n e[4].h)) && d(T, \"height\", K);\n const V = {};\n L & /*geom*/\n 16 && (V.x = /*geom*/\n e[4].x), L & /*geom*/\n 16 && (V.y = /*geom*/\n e[4].y), L & /*viewportScale*/\n 8 && (V.scale = /*viewportScale*/\n e[3]), le.$set(V);\n const te = {};\n L & /*geom*/\n 16 && (te.x = /*geom*/\n e[4].x + /*geom*/\n e[4].w), L & /*geom*/\n 16 && (te.y = /*geom*/\n e[4].y), L & /*viewportScale*/\n 8 && (te.scale = /*viewportScale*/\n e[3]), he.$set(te);\n const pe = {};\n L & /*geom*/\n 16 && (pe.x = /*geom*/\n e[4].x + /*geom*/\n e[4].w), L & /*geom*/\n 16 && (pe.y = /*geom*/\n e[4].y + /*geom*/\n e[4].h), L & /*viewportScale*/\n 8 && (pe.scale = /*viewportScale*/\n e[3]), ge.$set(pe);\n const be = {};\n L & /*geom*/\n 16 && (be.x = /*geom*/\n e[4].x), L & /*geom*/\n 16 && (be.y = /*geom*/\n e[4].y + /*geom*/\n e[4].h), L & /*viewportScale*/\n 8 && (be.scale = /*viewportScale*/\n e[3]), me.$set(be);\n },\n i(M) {\n R || (k(le.$$.fragment, M), k(he.$$.fragment, M), k(ge.$$.fragment, M), k(me.$$.fragment, M), R = !0);\n },\n o(M) {\n D(le.$$.fragment, M), D(he.$$.fragment, M), D(ge.$$.fragment, M), D(me.$$.fragment, M), R = !1;\n },\n d(M) {\n M && (O(t), O(l), O(a), O(m), O(g), O(_), O(w), O(U), O(X), O(b), O(T), O(Q), O(_e), O(Ye), O(Ce)), $(le, M), $(he, M), $(ge, M), $(me, M), Ne = !1, de(ze);\n }\n };\n}\nfunction $o(e) {\n let t, n;\n return t = new Et({\n props: {\n shape: (\n /*shape*/\n e[0]\n ),\n transform: (\n /*transform*/\n e[2]\n ),\n editor: (\n /*editor*/\n e[5]\n ),\n $$slots: {\n default: [\n xo,\n ({ grab: o }) => ({ 9: o }),\n ({ grab: o }) => o ? 512 : 0\n ]\n },\n $$scope: { ctx: e }\n }\n }), t.$on(\n \"grab\",\n /*grab_handler*/\n e[6]\n ), t.$on(\n \"change\",\n /*change_handler*/\n e[7]\n ), t.$on(\n \"release\",\n /*release_handler*/\n e[8]\n ), {\n c() {\n ee(t.$$.fragment);\n },\n m(o, i) {\n x(t, o, i), n = !0;\n },\n p(o, [i]) {\n const r = {};\n i & /*shape*/\n 1 && (r.shape = /*shape*/\n o[0]), i & /*transform*/\n 4 && (r.transform = /*transform*/\n o[2]), i & /*$$scope, geom, viewportScale, grab, computedStyle*/\n 1562 && (r.$$scope = { dirty: i, ctx: o }), t.$set(r);\n },\n i(o) {\n n || (k(t.$$.fragment, o), n = !0);\n },\n o(o) {\n D(t.$$.fragment, o), n = !1;\n },\n d(o) {\n $(t, o);\n }\n };\n}\nfunction ei(e, t, n) {\n let o, { shape: i } = t, { computedStyle: r } = t, { transform: s } = t, { viewportScale: l = 1 } = t;\n const a = (h, m, g) => {\n const p = h.geometry.bounds;\n let [A, y] = [p.minX, p.minY], [_, w] = [p.maxX, p.maxY];\n const [E, I] = g;\n if (m === \"SHAPE\")\n A += E, _ += E, y += I, w += I;\n else {\n switch (m) {\n case \"TOP\":\n case \"TOP_LEFT\":\n case \"TOP_RIGHT\": {\n y += I;\n break;\n }\n case \"BOTTOM\":\n case \"BOTTOM_LEFT\":\n case \"BOTTOM_RIGHT\": {\n w += I;\n break;\n }\n }\n switch (m) {\n case \"LEFT\":\n case \"TOP_LEFT\":\n case \"BOTTOM_LEFT\": {\n A += E;\n break;\n }\n case \"RIGHT\":\n case \"TOP_RIGHT\":\n case \"BOTTOM_RIGHT\": {\n _ += E;\n break;\n }\n }\n }\n const N = Math.min(A, _), U = Math.min(y, w), X = Math.abs(_ - A), q = Math.abs(w - y);\n return {\n ...h,\n geometry: {\n x: N,\n y: U,\n w: X,\n h: q,\n bounds: {\n minX: N,\n minY: U,\n maxX: N + X,\n maxY: U + q\n }\n }\n };\n };\n function c(h) {\n ce.call(this, e, h);\n }\n function u(h) {\n ce.call(this, e, h);\n }\n function f(h) {\n ce.call(this, e, h);\n }\n return e.$$set = (h) => {\n \"shape\" in h && n(0, i = h.shape), \"computedStyle\" in h && n(1, r = h.computedStyle), \"transform\" in h && n(2, s = h.transform), \"viewportScale\" in h && n(3, l = h.viewportScale);\n }, e.$$.update = () => {\n e.$$.dirty & /*shape*/\n 1 && n(4, o = i.geometry);\n }, [\n i,\n r,\n s,\n l,\n o,\n a,\n c,\n u,\n f\n ];\n}\nclass ti extends se {\n constructor(t) {\n super(), re(this, t, ei, $o, W, {\n shape: 0,\n computedStyle: 1,\n transform: 2,\n viewportScale: 3\n });\n }\n}\nfunction Ct(e, t, n) {\n const o = e.slice();\n return o[10] = t[n], o[12] = n, o;\n}\nfunction Nt(e, t, n) {\n const o = e.slice();\n return o[13] = t[n], o[15] = n, o;\n}\nfunction Ut(e, t, n) {\n const o = e.slice();\n return o[16] = t[n], o[18] = n, o;\n}\nfunction Xt(e) {\n let t, n;\n return t = new Be({\n props: {\n x: (\n /*point*/\n e[16][0]\n ),\n y: (\n /*point*/\n e[16][1]\n ),\n scale: (\n /*viewportScale*/\n e[3]\n )\n }\n }), t.$on(\"pointerdown\", function() {\n F(\n /*grab*/\n e[9](`HANDLE-${/*elementIdx*/\n e[12]}-${/*ringIdx*/\n e[15]}-${/*pointIdx*/\n e[18]}`)\n ) && e[9](`HANDLE-${/*elementIdx*/\n e[12]}-${/*ringIdx*/\n e[15]}-${/*pointIdx*/\n e[18]}`).apply(this, arguments);\n }), {\n c() {\n ee(t.$$.fragment);\n },\n m(o, i) {\n x(t, o, i), n = !0;\n },\n p(o, i) {\n e = o;\n const r = {};\n i & /*geom*/\n 16 && (r.x = /*point*/\n e[16][0]), i & /*geom*/\n 16 && (r.y = /*point*/\n e[16][1]), i & /*viewportScale*/\n 8 && (r.scale = /*viewportScale*/\n e[3]), t.$set(r);\n },\n i(o) {\n n || (k(t.$$.fragment, o), n = !0);\n },\n o(o) {\n D(t.$$.fragment, o), n = !1;\n },\n d(o) {\n $(t, o);\n }\n };\n}\nfunction Rt(e) {\n let t, n, o = ie(\n /*ring*/\n e[13].points\n ), i = [];\n for (let s = 0; s < o.length; s += 1)\n i[s] = Xt(Ut(e, o, s));\n const r = (s) => D(i[s], 1, 1, () => {\n i[s] = null;\n });\n return {\n c() {\n for (let s = 0; s < i.length; s += 1)\n i[s].c();\n t = ae();\n },\n m(s, l) {\n for (let a = 0; a < i.length; a += 1)\n i[a] && i[a].m(s, l);\n B(s, t, l), n = !0;\n },\n p(s, l) {\n if (l & /*geom, viewportScale, grab*/\n 536) {\n o = ie(\n /*ring*/\n s[13].points\n );\n let a;\n for (a = 0; a < o.length; a += 1) {\n const c = Ut(s, o, a);\n i[a] ? (i[a].p(c, l), k(i[a], 1)) : (i[a] = Xt(c), i[a].c(), k(i[a], 1), i[a].m(t.parentNode, t));\n }\n for (ne(), a = o.length; a < i.length; a += 1)\n r(a);\n oe();\n }\n },\n i(s) {\n if (!n) {\n for (let l = 0; l < o.length; l += 1)\n k(i[l]);\n n = !0;\n }\n },\n o(s) {\n i = i.filter(Boolean);\n for (let l = 0; l < i.length; l += 1)\n D(i[l]);\n n = !1;\n },\n d(s) {\n s && O(t), Se(i, s);\n }\n };\n}\nfunction Vt(e) {\n let t, n, o, i, r, s, l, a, c, u = ie(\n /*element*/\n e[10].rings\n ), f = [];\n for (let m = 0; m < u.length; m += 1)\n f[m] = Rt(Nt(e, u, m));\n const h = (m) => D(f[m], 1, 1, () => {\n f[m] = null;\n });\n return {\n c() {\n t = P(\"g\"), n = P(\"path\"), r = P(\"path\");\n for (let m = 0; m < f.length; m += 1)\n f[m].c();\n d(n, \"class\", \"a9s-outer\"), d(n, \"style\", o = /*computedStyle*/\n e[1] ? \"display:none;\" : void 0), d(n, \"fill-rule\", \"evenodd\"), d(n, \"d\", i = Oe(\n /*element*/\n e[10]\n )), d(r, \"class\", \"a9s-inner\"), d(\n r,\n \"style\",\n /*computedStyle*/\n e[1]\n ), d(r, \"fill-rule\", \"evenodd\"), d(r, \"d\", s = Oe(\n /*element*/\n e[10]\n ));\n },\n m(m, g) {\n B(m, t, g), fe(t, n), fe(t, r);\n for (let p = 0; p < f.length; p += 1)\n f[p] && f[p].m(t, null);\n l = !0, a || (c = [\n j(n, \"pointerdown\", function() {\n F(\n /*grab*/\n e[9](\"SHAPE\")\n ) && e[9](\"SHAPE\").apply(this, arguments);\n }),\n j(r, \"pointerdown\", function() {\n F(\n /*grab*/\n e[9](\"SHAPE\")\n ) && e[9](\"SHAPE\").apply(this, arguments);\n })\n ], a = !0);\n },\n p(m, g) {\n if (e = m, (!l || g & /*computedStyle*/\n 2 && o !== (o = /*computedStyle*/\n e[1] ? \"display:none;\" : void 0)) && d(n, \"style\", o), (!l || g & /*geom*/\n 16 && i !== (i = Oe(\n /*element*/\n e[10]\n ))) && d(n, \"d\", i), (!l || g & /*computedStyle*/\n 2) && d(\n r,\n \"style\",\n /*computedStyle*/\n e[1]\n ), (!l || g & /*geom*/\n 16 && s !== (s = Oe(\n /*element*/\n e[10]\n ))) && d(r, \"d\", s), g & /*geom, viewportScale, grab*/\n 536) {\n u = ie(\n /*element*/\n e[10].rings\n );\n let p;\n for (p = 0; p < u.length; p += 1) {\n const A = Nt(e, u, p);\n f[p] ? (f[p].p(A, g), k(f[p], 1)) : (f[p] = Rt(A), f[p].c(), k(f[p], 1), f[p].m(t, null));\n }\n for (ne(), p = u.length; p < f.length; p += 1)\n h(p);\n oe();\n }\n },\n i(m) {\n if (!l) {\n for (let g = 0; g < u.length; g += 1)\n k(f[g]);\n l = !0;\n }\n },\n o(m) {\n f = f.filter(Boolean);\n for (let g = 0; g < f.length; g += 1)\n D(f[g]);\n l = !1;\n },\n d(m) {\n m && O(t), Se(f, m), a = !1, de(c);\n }\n };\n}\nfunction ni(e) {\n let t, n, o = ie(\n /*geom*/\n e[4].polygons\n ), i = [];\n for (let s = 0; s < o.length; s += 1)\n i[s] = Vt(Ct(e, o, s));\n const r = (s) => D(i[s], 1, 1, () => {\n i[s] = null;\n });\n return {\n c() {\n for (let s = 0; s < i.length; s += 1)\n i[s].c();\n t = ae();\n },\n m(s, l) {\n for (let a = 0; a < i.length; a += 1)\n i[a] && i[a].m(s, l);\n B(s, t, l), n = !0;\n },\n p(s, l) {\n if (l & /*geom, viewportScale, grab, computedStyle, undefined*/\n 538) {\n o = ie(\n /*geom*/\n s[4].polygons\n );\n let a;\n for (a = 0; a < o.length; a += 1) {\n const c = Ct(s, o, a);\n i[a] ? (i[a].p(c, l), k(i[a], 1)) : (i[a] = Vt(c), i[a].c(), k(i[a], 1), i[a].m(t.parentNode, t));\n }\n for (ne(), a = o.length; a < i.length; a += 1)\n r(a);\n oe();\n }\n },\n i(s) {\n if (!n) {\n for (let l = 0; l < o.length; l += 1)\n k(i[l]);\n n = !0;\n }\n },\n o(s) {\n i = i.filter(Boolean);\n for (let l = 0; l < i.length; l += 1)\n D(i[l]);\n n = !1;\n },\n d(s) {\n s && O(t), Se(i, s);\n }\n };\n}\nfunction oi(e) {\n let t, n;\n return t = new Et({\n props: {\n shape: (\n /*shape*/\n e[0]\n ),\n transform: (\n /*transform*/\n e[2]\n ),\n editor: (\n /*editor*/\n e[5]\n ),\n $$slots: {\n default: [\n ni,\n ({ grab: o }) => ({ 9: o }),\n ({ grab: o }) => o ? 512 : 0\n ]\n },\n $$scope: { ctx: e }\n }\n }), t.$on(\n \"change\",\n /*change_handler*/\n e[6]\n ), t.$on(\n \"grab\",\n /*grab_handler*/\n e[7]\n ), t.$on(\n \"release\",\n /*release_handler*/\n e[8]\n ), {\n c() {\n ee(t.$$.fragment);\n },\n m(o, i) {\n x(t, o, i), n = !0;\n },\n p(o, [i]) {\n const r = {};\n i & /*shape*/\n 1 && (r.shape = /*shape*/\n o[0]), i & /*transform*/\n 4 && (r.transform = /*transform*/\n o[2]), i & /*$$scope, geom, viewportScale, grab, computedStyle*/\n 524826 && (r.$$scope = { dirty: i, ctx: o }), t.$set(r);\n },\n i(o) {\n n || (k(t.$$.fragment, o), n = !0);\n },\n o(o) {\n D(t.$$.fragment, o), n = !1;\n },\n d(o) {\n $(t, o);\n }\n };\n}\nfunction ii(e, t, n) {\n let o, { shape: i } = t, { computedStyle: r } = t, { transform: s } = t, { viewportScale: l = 1 } = t;\n const a = (h, m, g) => {\n const p = h.geometry.polygons;\n let A;\n if (m === \"SHAPE\")\n A = p.map((y) => {\n const _ = y.rings.map((E, I) => ({ points: E.points.map((U, X) => [U[0] + g[0], U[1] + g[1]]) })), w = Ae(_[0].points);\n return { rings: _, bounds: w };\n });\n else {\n const [y, _, w, E] = m.split(\"-\").map((I) => parseInt(I));\n A = p.map((I, N) => {\n if (N === _) {\n const U = I.rings.map((q, S) => S === w ? { points: q.points.map((b, T) => T === E ? [b[0] + g[0], b[1] + g[1]] : b) } : q), X = Ae(U[0].points);\n return { rings: U, bounds: X };\n } else\n return I;\n });\n }\n return {\n ...h,\n geometry: {\n polygons: A,\n bounds: jn(A)\n }\n };\n };\n function c(h) {\n ce.call(this, e, h);\n }\n function u(h) {\n ce.call(this, e, h);\n }\n function f(h) {\n ce.call(this, e, h);\n }\n return e.$$set = (h) => {\n \"shape\" in h && n(0, i = h.shape), \"computedStyle\" in h && n(1, r = h.computedStyle), \"transform\" in h && n(2, s = h.transform), \"viewportScale\" in h && n(3, l = h.viewportScale);\n }, e.$$.update = () => {\n e.$$.dirty & /*shape*/\n 1 && n(4, o = i.geometry);\n }, [\n i,\n r,\n s,\n l,\n o,\n a,\n c,\n u,\n f\n ];\n}\nclass ri extends se {\n constructor(t) {\n super(), re(this, t, ii, oi, W, {\n shape: 0,\n computedStyle: 1,\n transform: 2,\n viewportScale: 3\n });\n }\n}\nconst wn = /* @__PURE__ */ new Map([\n [z.RECTANGLE, ti],\n [z.POLYGON, jo],\n [z.MULTIPOLYGLON, ri]\n]), si = (e) => wn.get(e.type), li = (e, t) => wn.set(e, t), ai = (e) => ({}), Gt = (e) => ({ grab: (\n /*onGrab*/\n e[0]\n) });\nfunction ci(e) {\n let t, n, o, i;\n const r = (\n /*#slots*/\n e[7].default\n ), s = Ln(\n r,\n e,\n /*$$scope*/\n e[6],\n Gt\n );\n return {\n c() {\n t = P(\"g\"), s && s.c(), d(t, \"class\", \"a9s-annotation selected\");\n },\n m(l, a) {\n B(l, t, a), s && s.m(t, null), n = !0, o || (i = [\n j(\n t,\n \"pointerup\",\n /*onRelease*/\n e[2]\n ),\n j(\n t,\n \"pointermove\",\n /*onPointerMove*/\n e[1]\n )\n ], o = !0);\n },\n p(l, [a]) {\n s && s.p && (!n || a & /*$$scope*/\n 64) && In(\n s,\n r,\n l,\n /*$$scope*/\n l[6],\n n ? kn(\n r,\n /*$$scope*/\n l[6],\n a,\n ai\n ) : On(\n /*$$scope*/\n l[6]\n ),\n Gt\n );\n },\n i(l) {\n n || (k(s, l), n = !0);\n },\n o(l) {\n D(s, l), n = !1;\n },\n d(l) {\n l && O(t), s && s.d(l), o = !1, de(i);\n }\n };\n}\nfunction fi(e, t, n) {\n let { $$slots: o = {}, $$scope: i } = t;\n const r = Pe();\n let { shape: s } = t, { editor: l } = t, { transform: a } = t, c, u, f;\n const h = (p) => (A) => {\n c = p, u = a.elementToImage(A.offsetX, A.offsetY), f = s, A.target.setPointerCapture(A.pointerId), r(\"grab\", A);\n }, m = (p) => {\n if (c) {\n const [A, y] = a.elementToImage(p.offsetX, p.offsetY), _ = [A - u[0], y - u[1]];\n n(3, s = l(f, c, _)), r(\"change\", s);\n }\n }, g = (p) => {\n p.target.releasePointerCapture(p.pointerId), c = void 0, f = s, r(\"release\", p);\n };\n return e.$$set = (p) => {\n \"shape\" in p && n(3, s = p.shape), \"editor\" in p && n(4, l = p.editor), \"transform\" in p && n(5, a = p.transform), \"$$scope\" in p && n(6, i = p.$$scope);\n }, [h, m, g, s, l, a, i, o];\n}\nclass Et extends se {\n constructor(t) {\n super(), re(this, t, fi, ci, W, { shape: 3, editor: 4, transform: 5 });\n }\n}\nconst je = (e, t) => {\n const n = typeof t == \"function\" ? t(e) : t;\n if (n) {\n const { fill: o, fillOpacity: i, stroke: r, strokeWidth: s, strokeOpacity: l } = n;\n let a = \"\";\n return o && (a += `fill:${o};`, a += `fill-opacity:${i || \"0.25\"};`), r && (a += `stroke:${r};`, a += `stroke-width:${s || \"1\"};`, a += `stroke-opacity:${l || \"1\"};`), a;\n }\n};\nfunction ui(e, t, n) {\n let o;\n const i = Pe();\n let { annotation: r } = t, { editor: s } = t, { style: l } = t, { target: a } = t, { transform: c } = t, { viewportScale: u } = t, f;\n return He(() => (n(6, f = new s({\n target: a,\n props: {\n shape: r.target.selector,\n computedStyle: o,\n transform: c,\n viewportScale: u\n }\n })), f.$on(\"change\", (h) => {\n f.$$set({ shape: h.detail }), i(\"change\", h.detail);\n }), f.$on(\"grab\", (h) => i(\"grab\", h.detail)), f.$on(\"release\", (h) => i(\"release\", h.detail)), () => {\n f.$destroy();\n })), e.$$set = (h) => {\n \"annotation\" in h && n(0, r = h.annotation), \"editor\" in h && n(1, s = h.editor), \"style\" in h && n(2, l = h.style), \"target\" in h && n(3, a = h.target), \"transform\" in h && n(4, c = h.transform), \"viewportScale\" in h && n(5, u = h.viewportScale);\n }, e.$$.update = () => {\n e.$$.dirty & /*annotation, style*/\n 5 && n(7, o = je(r, l)), e.$$.dirty & /*annotation, editorComponent*/\n 65 && r && (f == null || f.$set({ shape: r.target.selector })), e.$$.dirty & /*editorComponent, transform*/\n 80 && f && f.$set({ transform: c }), e.$$.dirty & /*editorComponent, viewportScale*/\n 96 && f && f.$set({ viewportScale: u }), e.$$.dirty & /*editorComponent, computedStyle*/\n 192 && f && o && f.$set({ computedStyle: o });\n }, [\n r,\n s,\n l,\n a,\n c,\n u,\n f,\n o\n ];\n}\nclass di extends se {\n constructor(t) {\n super(), re(this, t, ui, null, W, {\n annotation: 0,\n editor: 1,\n style: 2,\n target: 3,\n transform: 4,\n viewportScale: 5\n });\n }\n}\nfunction hi(e, t, n) {\n const o = Pe();\n let { drawingMode: i } = t, { target: r } = t, { tool: s } = t, { transform: l } = t, { viewportScale: a } = t, c;\n return He(() => {\n const u = r.closest(\"svg\"), f = [], h = (m, g, p) => {\n u == null || u.addEventListener(m, g, p), f.push(() => u == null ? void 0 : u.removeEventListener(m, g, p));\n };\n return n(5, c = new s({\n target: r,\n props: {\n addEventListener: h,\n drawingMode: i,\n transform: l,\n viewportScale: a\n }\n })), c.$on(\"create\", (m) => o(\"create\", m.detail)), () => {\n f.forEach((m) => m()), c.$destroy();\n };\n }), e.$$set = (u) => {\n \"drawingMode\" in u && n(0, i = u.drawingMode), \"target\" in u && n(1, r = u.target), \"tool\" in u && n(2, s = u.tool), \"transform\" in u && n(3, l = u.transform), \"viewportScale\" in u && n(4, a = u.viewportScale);\n }, e.$$.update = () => {\n e.$$.dirty & /*toolComponent, transform*/\n 40 && c && c.$set({ transform: l }), e.$$.dirty & /*toolComponent, viewportScale*/\n 48 && c && c.$set({ viewportScale: a });\n }, [i, r, s, l, a, c];\n}\nclass gi extends se {\n constructor(t) {\n super(), re(this, t, hi, null, W, {\n drawingMode: 0,\n target: 1,\n tool: 2,\n transform: 3,\n viewportScale: 4\n });\n }\n}\nfunction Ht(e) {\n let t, n;\n return {\n c() {\n t = P(\"rect\"), n = P(\"rect\"), d(t, \"class\", \"a9s-outer\"), d(\n t,\n \"x\",\n /*x*/\n e[1]\n ), d(\n t,\n \"y\",\n /*y*/\n e[2]\n ), d(\n t,\n \"width\",\n /*w*/\n e[3]\n ), d(\n t,\n \"height\",\n /*h*/\n e[4]\n ), d(n, \"class\", \"a9s-inner\"), d(\n n,\n \"x\",\n /*x*/\n e[1]\n ), d(\n n,\n \"y\",\n /*y*/\n e[2]\n ), d(\n n,\n \"width\",\n /*w*/\n e[3]\n ), d(\n n,\n \"height\",\n /*h*/\n e[4]\n );\n },\n m(o, i) {\n B(o, t, i), B(o, n, i);\n },\n p(o, i) {\n i & /*x*/\n 2 && d(\n t,\n \"x\",\n /*x*/\n o[1]\n ), i & /*y*/\n 4 && d(\n t,\n \"y\",\n /*y*/\n o[2]\n ), i & /*w*/\n 8 && d(\n t,\n \"width\",\n /*w*/\n o[3]\n ), i & /*h*/\n 16 && d(\n t,\n \"height\",\n /*h*/\n o[4]\n ), i & /*x*/\n 2 && d(\n n,\n \"x\",\n /*x*/\n o[1]\n ), i & /*y*/\n 4 && d(\n n,\n \"y\",\n /*y*/\n o[2]\n ), i & /*w*/\n 8 && d(\n n,\n \"width\",\n /*w*/\n o[3]\n ), i & /*h*/\n 16 && d(\n n,\n \"height\",\n /*h*/\n o[4]\n );\n },\n d(o) {\n o && (O(t), O(n));\n }\n };\n}\nfunction mi(e) {\n let t, n = (\n /*origin*/\n e[0] && Ht(e)\n );\n return {\n c() {\n t = P(\"g\"), n && n.c(), d(t, \"class\", \"a9s-annotation a9s-rubberband\");\n },\n m(o, i) {\n B(o, t, i), n && n.m(t, null);\n },\n p(o, [i]) {\n /*origin*/\n o[0] ? n ? n.p(o, i) : (n = Ht(o), n.c(), n.m(t, null)) : n && (n.d(1), n = null);\n },\n i: G,\n o: G,\n d(o) {\n o && O(t), n && n.d();\n }\n };\n}\nfunction pi(e, t, n) {\n const o = Pe();\n let { addEventListener: i } = t, { drawingMode: r } = t, { transform: s } = t, l, a, c, u, f, h, m;\n const g = (_) => {\n const w = _;\n l = performance.now(), r === \"drag\" && (n(0, a = s.elementToImage(w.offsetX, w.offsetY)), c = a, n(1, u = a[0]), n(2, f = a[1]), n(3, h = 1), n(4, m = 1));\n }, p = (_) => {\n const w = _;\n a && (c = s.elementToImage(w.offsetX, w.offsetY), n(1, u = Math.min(c[0], a[0])), n(2, f = Math.min(c[1], a[1])), n(3, h = Math.abs(c[0] - a[0])), n(4, m = Math.abs(c[1] - a[1])));\n }, A = (_) => {\n const w = _, E = performance.now() - l;\n if (r === \"click\") {\n if (E > 300) return;\n a ? y() : (n(0, a = s.elementToImage(w.offsetX, w.offsetY)), c = a, n(1, u = a[0]), n(2, f = a[1]), n(3, h = 1), n(4, m = 1));\n } else a && (E > 300 || h * m > 100 ? (w.stopPropagation(), y()) : (n(0, a = void 0), c = void 0));\n }, y = () => {\n if (h * m > 15) {\n const _ = {\n type: z.RECTANGLE,\n geometry: {\n bounds: {\n minX: u,\n minY: f,\n maxX: u + h,\n maxY: f + m\n },\n x: u,\n y: f,\n w: h,\n h: m\n }\n };\n o(\"create\", _);\n }\n n(0, a = void 0), c = void 0;\n };\n return He(() => {\n i(\"pointerdown\", g), i(\"pointermove\", p), i(\"pointerup\", A, !0);\n }), e.$$set = (_) => {\n \"addEventListener\" in _ && n(5, i = _.addEventListener), \"drawingMode\" in _ && n(6, r = _.drawingMode), \"transform\" in _ && n(7, s = _.transform);\n }, [a, u, f, h, m, i, r, s];\n}\nclass _i extends se {\n constructor(t) {\n super(), re(this, t, pi, mi, W, {\n addEventListener: 5,\n drawingMode: 6,\n transform: 7\n });\n }\n}\nfunction ct(e) {\n const t = e.slice(), n = (\n /*isClosable*/\n (t[2] ? (\n /*points*/\n t[0]\n ) : [\n .../*points*/\n t[0],\n /*cursor*/\n t[1]\n ]).map((o) => o.join(\",\")).join(\" \")\n );\n return t[16] = n, t;\n}\nfunction jt(e) {\n let t, n, o, i, r, s = (\n /*isClosable*/\n e[2] && zt(e)\n );\n return {\n c() {\n t = P(\"polygon\"), o = P(\"polygon\"), s && s.c(), r = ae(), d(t, \"class\", \"a9s-outer\"), d(t, \"points\", n = /*coords*/\n e[16]), d(o, \"class\", \"a9s-inner\"), d(o, \"points\", i = /*coords*/\n e[16]);\n },\n m(l, a) {\n B(l, t, a), B(l, o, a), s && s.m(l, a), B(l, r, a);\n },\n p(l, a) {\n a & /*isClosable, points, cursor*/\n 7 && n !== (n = /*coords*/\n l[16]) && d(t, \"points\", n), a & /*isClosable, points, cursor*/\n 7 && i !== (i = /*coords*/\n l[16]) && d(o, \"points\", i), /*isClosable*/\n l[2] ? s ? s.p(l, a) : (s = zt(l), s.c(), s.m(r.parentNode, r)) : s && (s.d(1), s = null);\n },\n d(l) {\n l && (O(t), O(o), O(r)), s && s.d(l);\n }\n };\n}\nfunction zt(e) {\n let t, n, o;\n return {\n c() {\n t = P(\"rect\"), d(t, \"class\", \"a9s-handle\"), d(t, \"x\", n = /*points*/\n e[0][0][0] - /*handleSize*/\n e[3] / 2), d(t, \"y\", o = /*points*/\n e[0][0][1] - /*handleSize*/\n e[3] / 2), d(\n t,\n \"height\",\n /*handleSize*/\n e[3]\n ), d(\n t,\n \"width\",\n /*handleSize*/\n e[3]\n );\n },\n m(i, r) {\n B(i, t, r);\n },\n p(i, r) {\n r & /*points, handleSize*/\n 9 && n !== (n = /*points*/\n i[0][0][0] - /*handleSize*/\n i[3] / 2) && d(t, \"x\", n), r & /*points, handleSize*/\n 9 && o !== (o = /*points*/\n i[0][0][1] - /*handleSize*/\n i[3] / 2) && d(t, \"y\", o), r & /*handleSize*/\n 8 && d(\n t,\n \"height\",\n /*handleSize*/\n i[3]\n ), r & /*handleSize*/\n 8 && d(\n t,\n \"width\",\n /*handleSize*/\n i[3]\n );\n },\n d(i) {\n i && O(t);\n }\n };\n}\nfunction yi(e) {\n let t, n = (\n /*cursor*/\n e[1] && jt(ct(e))\n );\n return {\n c() {\n t = P(\"g\"), n && n.c(), d(t, \"class\", \"a9s-annotation a9s-rubberband\");\n },\n m(o, i) {\n B(o, t, i), n && n.m(t, null);\n },\n p(o, [i]) {\n /*cursor*/\n o[1] ? n ? n.p(ct(o), i) : (n = jt(ct(o)), n.c(), n.m(t, null)) : n && (n.d(1), n = null);\n },\n i: G,\n o: G,\n d(o) {\n o && O(t), n && n.d();\n }\n };\n}\nconst wi = 20, bi = 1500;\nfunction Ei(e, t, n) {\n let o;\n const i = Pe();\n let { addEventListener: r } = t, { drawingMode: s } = t, { transform: l } = t, { viewportScale: a = 1 } = t, c, u = [], f, h, m = !1;\n const g = (w) => {\n const E = w, { timeStamp: I, offsetX: N, offsetY: U } = E;\n if (c = { timeStamp: I, offsetX: N, offsetY: U }, s === \"drag\" && u.length === 0) {\n const X = l.elementToImage(E.offsetX, E.offsetY);\n u.push(X), n(1, f = X);\n }\n }, p = (w) => {\n const E = w;\n if (h && clearTimeout(h), u.length > 0) {\n if (n(1, f = l.elementToImage(E.offsetX, E.offsetY)), u.length > 2) {\n const I = at(f, u[0]) * a;\n n(2, m = I < wi);\n }\n E.pointerType === \"touch\" && (h = setTimeout(\n () => {\n y();\n },\n bi\n ));\n }\n }, A = (w) => {\n const E = w;\n if (h && clearTimeout(h), s === \"click\") {\n const I = E.timeStamp - c.timeStamp, N = at([c.offsetX, c.offsetY], [E.offsetX, E.offsetY]);\n if (I > 300 || N > 15) return;\n if (m)\n _();\n else if (u.length === 0) {\n const U = l.elementToImage(E.offsetX, E.offsetY);\n u.push(U), n(1, f = U);\n } else\n u.push(f);\n } else {\n if (u.length === 1 && at(u[0], f) <= 4) {\n n(0, u = []), n(1, f = void 0);\n return;\n }\n E.stopImmediatePropagation(), m ? _() : u.push(f);\n }\n }, y = () => {\n if (!f) return;\n const w = u.slice(0, -1);\n if (w.length < 3) return;\n const E = {\n type: z.POLYGON,\n geometry: {\n bounds: Ae(u),\n points: w\n }\n };\n pt(E) > 4 && (n(0, u = []), n(1, f = void 0), i(\"create\", E));\n }, _ = () => {\n const w = {\n type: z.POLYGON,\n geometry: {\n bounds: Ae(u),\n points: [...u]\n }\n };\n n(0, u = []), n(1, f = void 0), i(\"create\", w);\n };\n return He(() => {\n r(\"pointerdown\", g, !0), r(\"pointermove\", p), r(\"pointerup\", A, !0), r(\"dblclick\", y, !0);\n }), e.$$set = (w) => {\n \"addEventListener\" in w && n(4, r = w.addEventListener), \"drawingMode\" in w && n(5, s = w.drawingMode), \"transform\" in w && n(6, l = w.transform), \"viewportScale\" in w && n(7, a = w.viewportScale);\n }, e.$$.update = () => {\n e.$$.dirty & /*viewportScale*/\n 128 && n(3, o = 10 / a);\n }, [\n u,\n f,\n m,\n o,\n r,\n s,\n l,\n a\n ];\n}\nclass Ai extends se {\n constructor(t) {\n super(), re(this, t, Ei, yi, W, {\n addEventListener: 4,\n drawingMode: 5,\n transform: 6,\n viewportScale: 7\n });\n }\n}\nconst At = /* @__PURE__ */ new Map([\n [\"rectangle\", { tool: _i }],\n [\"polygon\", { tool: Ai }]\n]), bn = () => [...At.keys()], En = (e) => At.get(e), Si = (e, t, n) => At.set(e, { tool: t, opts: n });\nfunction Ti(e) {\n let t, n, o, i, r;\n return {\n c() {\n t = P(\"g\"), n = P(\"ellipse\"), i = P(\"ellipse\"), d(n, \"class\", \"a9s-outer\"), d(n, \"style\", o = /*computedStyle*/\n e[1] ? \"display:none;\" : void 0), d(\n n,\n \"cx\",\n /*cx*/\n e[2]\n ), d(\n n,\n \"cy\",\n /*cy*/\n e[3]\n ), d(\n n,\n \"rx\",\n /*rx*/\n e[4]\n ), d(\n n,\n \"ry\",\n /*ry*/\n e[5]\n ), d(i, \"class\", \"a9s-inner\"), d(\n i,\n \"style\",\n /*computedStyle*/\n e[1]\n ), d(\n i,\n \"cx\",\n /*cx*/\n e[2]\n ), d(\n i,\n \"cy\",\n /*cy*/\n e[3]\n ), d(\n i,\n \"rx\",\n /*rx*/\n e[4]\n ), d(\n i,\n \"ry\",\n /*ry*/\n e[5]\n ), d(t, \"class\", \"a9s-annotation\"), d(t, \"data-id\", r = /*annotation*/\n e[0].id);\n },\n m(s, l) {\n B(s, t, l), fe(t, n), fe(t, i);\n },\n p(s, [l]) {\n l & /*computedStyle*/\n 2 && o !== (o = /*computedStyle*/\n s[1] ? \"display:none;\" : void 0) && d(n, \"style\", o), l & /*computedStyle*/\n 2 && d(\n i,\n \"style\",\n /*computedStyle*/\n s[1]\n ), l & /*annotation*/\n 1 && r !== (r = /*annotation*/\n s[0].id) && d(t, \"data-id\", r);\n },\n i: G,\n o: G,\n d(s) {\n s && O(t);\n }\n };\n}\nfunction Mi(e, t, n) {\n let o, { annotation: i } = t, { geom: r } = t, { style: s } = t;\n const { cx: l, cy: a, rx: c, ry: u } = r;\n return e.$$set = (f) => {\n \"annotation\" in f && n(0, i = f.annotation), \"geom\" in f && n(6, r = f.geom), \"style\" in f && n(7, s = f.style);\n }, e.$$.update = () => {\n e.$$.dirty & /*annotation, style*/\n 129 && n(1, o = je(i, s));\n }, [i, o, l, a, c, u, r, s];\n}\nclass vi extends se {\n constructor(t) {\n super(), re(this, t, Mi, Ti, W, { annotation: 0, geom: 6, style: 7 });\n }\n}\nfunction Ft(e, t, n) {\n const o = e.slice();\n return o[5] = t[n], o;\n}\nfunction Kt(e) {\n let t, n, o;\n return {\n c() {\n t = P(\"path\"), o = P(\"path\"), d(t, \"class\", \"a9s-outer\"), d(t, \"style\", n = /*computedStyle*/\n e[1] ? \"display:none;\" : void 0), d(t, \"fill-rule\", \"evenodd\"), d(t, \"d\", Oe(\n /*polygonElement*/\n e[5]\n )), d(o, \"class\", \"a9s-inner\"), d(\n o,\n \"style\",\n /*computedStyle*/\n e[1]\n ), d(o, \"fill-rule\", \"evenodd\"), d(o, \"d\", Oe(\n /*polygonElement*/\n e[5]\n ));\n },\n m(i, r) {\n B(i, t, r), B(i, o, r);\n },\n p(i, r) {\n r & /*computedStyle*/\n 2 && n !== (n = /*computedStyle*/\n i[1] ? \"display:none;\" : void 0) && d(t, \"style\", n), r & /*computedStyle*/\n 2 && d(\n o,\n \"style\",\n /*computedStyle*/\n i[1]\n );\n },\n d(i) {\n i && (O(t), O(o));\n }\n };\n}\nfunction Li(e) {\n let t, n, o = ie(\n /*polygons*/\n e[2]\n ), i = [];\n for (let r = 0; r < o.length; r += 1)\n i[r] = Kt(Ft(e, o, r));\n return {\n c() {\n t = P(\"g\");\n for (let r = 0; r < i.length; r += 1)\n i[r].c();\n d(t, \"class\", \"a9s-annotation\"), d(t, \"data-id\", n = /*annotation*/\n e[0].id);\n },\n m(r, s) {\n B(r, t, s);\n for (let l = 0; l < i.length; l += 1)\n i[l] && i[l].m(t, null);\n },\n p(r, [s]) {\n if (s & /*computedStyle, polygons, undefined*/\n 6) {\n o = ie(\n /*polygons*/\n r[2]\n );\n let l;\n for (l = 0; l < o.length; l += 1) {\n const a = Ft(r, o, l);\n i[l] ? i[l].p(a, s) : (i[l] = Kt(a), i[l].c(), i[l].m(t, null));\n }\n for (; l < i.length; l += 1)\n i[l].d(1);\n i.length = o.length;\n }\n s & /*annotation*/\n 1 && n !== (n = /*annotation*/\n r[0].id) && d(t, \"data-id\", n);\n },\n i: G,\n o: G,\n d(r) {\n r && O(t), Se(i, r);\n }\n };\n}\nfunction ki(e, t, n) {\n let o, { annotation: i } = t, { geom: r } = t, { style: s } = t;\n const { polygons: l } = r;\n return e.$$set = (a) => {\n \"annotation\" in a && n(0, i = a.annotation), \"geom\" in a && n(3, r = a.geom), \"style\" in a && n(4, s = a.style);\n }, e.$$.update = () => {\n e.$$.dirty & /*annotation, style*/\n 17 && n(1, o = je(i, s));\n }, [i, o, l, r, s];\n}\nclass Ii extends se {\n constructor(t) {\n super(), re(this, t, ki, Li, W, { annotation: 0, geom: 3, style: 4 });\n }\n}\nfunction Oi(e) {\n let t, n, o, i, r;\n return {\n c() {\n t = P(\"g\"), n = P(\"polygon\"), i = P(\"polygon\"), d(n, \"class\", \"a9s-outer\"), d(n, \"style\", o = /*computedStyle*/\n e[1] ? \"display:none;\" : void 0), d(\n n,\n \"points\",\n /*points*/\n e[2].map(Bi).join(\" \")\n ), d(i, \"class\", \"a9s-inner\"), d(\n i,\n \"style\",\n /*computedStyle*/\n e[1]\n ), d(\n i,\n \"points\",\n /*points*/\n e[2].map(Di).join(\" \")\n ), d(t, \"class\", \"a9s-annotation\"), d(t, \"data-id\", r = /*annotation*/\n e[0].id);\n },\n m(s, l) {\n B(s, t, l), fe(t, n), fe(t, i);\n },\n p(s, [l]) {\n l & /*computedStyle*/\n 2 && o !== (o = /*computedStyle*/\n s[1] ? \"display:none;\" : void 0) && d(n, \"style\", o), l & /*computedStyle*/\n 2 && d(\n i,\n \"style\",\n /*computedStyle*/\n s[1]\n ), l & /*annotation*/\n 1 && r !== (r = /*annotation*/\n s[0].id) && d(t, \"data-id\", r);\n },\n i: G,\n o: G,\n d(s) {\n s && O(t);\n }\n };\n}\nconst Bi = (e) => e.join(\",\"), Di = (e) => e.join(\",\");\nfunction Pi(e, t, n) {\n let o, { annotation: i } = t, { geom: r } = t, { style: s } = t;\n const { points: l } = r;\n return e.$$set = (a) => {\n \"annotation\" in a && n(0, i = a.annotation), \"geom\" in a && n(3, r = a.geom), \"style\" in a && n(4, s = a.style);\n }, e.$$.update = () => {\n e.$$.dirty & /*annotation, style*/\n 17 && n(1, o = je(i, s));\n }, [i, o, l, r, s];\n}\nclass Yi extends se {\n constructor(t) {\n super(), re(this, t, Pi, Oi, W, { annotation: 0, geom: 3, style: 4 });\n }\n}\nfunction Ci(e) {\n let t, n, o, i, r;\n return {\n c() {\n t = P(\"g\"), n = P(\"rect\"), i = P(\"rect\"), d(n, \"class\", \"a9s-outer\"), d(n, \"style\", o = /*computedStyle*/\n e[5] ? \"display:none;\" : void 0), d(\n n,\n \"x\",\n /*x*/\n e[4]\n ), d(\n n,\n \"y\",\n /*y*/\n e[3]\n ), d(\n n,\n \"width\",\n /*w*/\n e[2]\n ), d(\n n,\n \"height\",\n /*h*/\n e[1]\n ), d(i, \"class\", \"a9s-inner\"), d(\n i,\n \"style\",\n /*computedStyle*/\n e[5]\n ), d(\n i,\n \"x\",\n /*x*/\n e[4]\n ), d(\n i,\n \"y\",\n /*y*/\n e[3]\n ), d(\n i,\n \"width\",\n /*w*/\n e[2]\n ), d(\n i,\n \"height\",\n /*h*/\n e[1]\n ), d(t, \"class\", \"a9s-annotation\"), d(t, \"data-id\", r = /*annotation*/\n e[0].id);\n },\n m(s, l) {\n B(s, t, l), fe(t, n), fe(t, i);\n },\n p(s, [l]) {\n l & /*computedStyle*/\n 32 && o !== (o = /*computedStyle*/\n s[5] ? \"display:none;\" : void 0) && d(n, \"style\", o), l & /*x*/\n 16 && d(\n n,\n \"x\",\n /*x*/\n s[4]\n ), l & /*y*/\n 8 && d(\n n,\n \"y\",\n /*y*/\n s[3]\n ), l & /*w*/\n 4 && d(\n n,\n \"width\",\n /*w*/\n s[2]\n ), l & /*h*/\n 2 && d(\n n,\n \"height\",\n /*h*/\n s[1]\n ), l & /*computedStyle*/\n 32 && d(\n i,\n \"style\",\n /*computedStyle*/\n s[5]\n ), l & /*x*/\n 16 && d(\n i,\n \"x\",\n /*x*/\n s[4]\n ), l & /*y*/\n 8 && d(\n i,\n \"y\",\n /*y*/\n s[3]\n ), l & /*w*/\n 4 && d(\n i,\n \"width\",\n /*w*/\n s[2]\n ), l & /*h*/\n 2 && d(\n i,\n \"height\",\n /*h*/\n s[1]\n ), l & /*annotation*/\n 1 && r !== (r = /*annotation*/\n s[0].id) && d(t, \"data-id\", r);\n },\n i: G,\n o: G,\n d(s) {\n s && O(t);\n }\n };\n}\nfunction Ni(e, t, n) {\n let o, i, r, s, l, { annotation: a } = t, { geom: c } = t, { style: u } = t;\n return e.$$set = (f) => {\n \"annotation\" in f && n(0, a = f.annotation), \"geom\" in f && n(6, c = f.geom), \"style\" in f && n(7, u = f.style);\n }, e.$$.update = () => {\n e.$$.dirty & /*annotation, style*/\n 129 && n(5, o = je(a, u)), e.$$.dirty & /*geom*/\n 64 && n(4, { x: i, y: r, w: s, h: l } = c, i, (n(3, r), n(6, c)), (n(2, s), n(6, c)), (n(1, l), n(6, c)));\n }, [a, l, s, r, i, o, c, u];\n}\nclass Ui extends se {\n constructor(t) {\n super(), re(this, t, Ni, Ci, W, { annotation: 0, geom: 6, style: 7 });\n }\n}\nconst pr = {\n elementToImage: (e, t) => [e, t]\n}, Xi = (e) => ({\n elementToImage: (t, n) => {\n const o = e.getBoundingClientRect(), i = e.createSVGPoint();\n i.x = t + o.x, i.y = n + o.y;\n const { x: r, y: s } = i.matrixTransform(e.getScreenCTM().inverse());\n return [r, s];\n }\n}), Ri = 250, Vi = (e, t) => {\n const n = Pe();\n let o;\n return { onPointerDown: () => o = performance.now(), onPointerUp: (s) => {\n if (performance.now() - o < Ri) {\n const { x: a, y: c } = An(s, e), u = t.getAt(a, c);\n u ? n(\"click\", { originalEvent: s, annotation: u }) : n(\"click\", { originalEvent: s });\n }\n } };\n}, An = (e, t) => {\n const n = t.createSVGPoint(), o = t.getBoundingClientRect(), i = e.clientX - o.x, r = e.clientY - o.y, { left: s, top: l } = t.getBoundingClientRect();\n return n.x = i + s, n.y = r + l, n.matrixTransform(t.getScreenCTM().inverse());\n};\nfunction Wt(e, t, n) {\n const o = e.slice();\n o[39] = t[n];\n const i = (\n /*getEditor*/\n o[24](\n /*editable*/\n o[39].target.selector\n )\n );\n return o[40] = i, o;\n}\nfunction qt(e, t, n) {\n const o = e.slice();\n return o[43] = t[n], o;\n}\nfunction ft(e) {\n const t = e.slice(), n = (\n /*annotation*/\n t[43].target.selector\n );\n return t[46] = n, t;\n}\nfunction Jt(e) {\n let t = (\n /*annotation*/\n e[43]\n ), n, o, i = Zt(e);\n return {\n c() {\n i.c(), n = ae();\n },\n m(r, s) {\n i.m(r, s), B(r, n, s), o = !0;\n },\n p(r, s) {\n s[0] & /*$store*/\n 65536 && W(t, t = /*annotation*/\n r[43]) ? (ne(), D(i, 1, 1, G), oe(), i = Zt(r), i.c(), k(i, 1), i.m(n.parentNode, n)) : i.p(r, s);\n },\n i(r) {\n o || (k(i), o = !0);\n },\n o(r) {\n D(i), o = !1;\n },\n d(r) {\n r && O(n), i.d(r);\n }\n };\n}\nfunction Gi(e) {\n let t, n;\n return t = new Ii({\n props: {\n annotation: (\n /*annotation*/\n e[43]\n ),\n geom: (\n /*selector*/\n e[46].geometry\n ),\n style: (\n /*style*/\n e[1]\n )\n }\n }), {\n c() {\n ee(t.$$.fragment);\n },\n m(o, i) {\n x(t, o, i), n = !0;\n },\n p(o, i) {\n const r = {};\n i[0] & /*$store*/\n 65536 && (r.annotation = /*annotation*/\n o[43]), i[0] & /*$store*/\n 65536 && (r.geom = /*selector*/\n o[46].geometry), i[0] & /*style*/\n 2 && (r.style = /*style*/\n o[1]), t.$set(r);\n },\n i(o) {\n n || (k(t.$$.fragment, o), n = !0);\n },\n o(o) {\n D(t.$$.fragment, o), n = !1;\n },\n d(o) {\n $(t, o);\n }\n };\n}\nfunction Hi(e) {\n let t, n;\n return t = new Yi({\n props: {\n annotation: (\n /*annotation*/\n e[43]\n ),\n geom: (\n /*selector*/\n e[46].geometry\n ),\n style: (\n /*style*/\n e[1]\n )\n }\n }), {\n c() {\n ee(t.$$.fragment);\n },\n m(o, i) {\n x(t, o, i), n = !0;\n },\n p(o, i) {\n const r = {};\n i[0] & /*$store*/\n 65536 && (r.annotation = /*annotation*/\n o[43]), i[0] & /*$store*/\n 65536 && (r.geom = /*selector*/\n o[46].geometry), i[0] & /*style*/\n 2 && (r.style = /*style*/\n o[1]), t.$set(r);\n },\n i(o) {\n n || (k(t.$$.fragment, o), n = !0);\n },\n o(o) {\n D(t.$$.fragment, o), n = !1;\n },\n d(o) {\n $(t, o);\n }\n };\n}\nfunction ji(e) {\n let t, n;\n return t = new Ui({\n props: {\n annotation: (\n /*annotation*/\n e[43]\n ),\n geom: (\n /*selector*/\n e[46].geometry\n ),\n style: (\n /*style*/\n e[1]\n )\n }\n }), {\n c() {\n ee(t.$$.fragment);\n },\n m(o, i) {\n x(t, o, i), n = !0;\n },\n p(o, i) {\n const r = {};\n i[0] & /*$store*/\n 65536 && (r.annotation = /*annotation*/\n o[43]), i[0] & /*$store*/\n 65536 && (r.geom = /*selector*/\n o[46].geometry), i[0] & /*style*/\n 2 && (r.style = /*style*/\n o[1]), t.$set(r);\n },\n i(o) {\n n || (k(t.$$.fragment, o), n = !0);\n },\n o(o) {\n D(t.$$.fragment, o), n = !1;\n },\n d(o) {\n $(t, o);\n }\n };\n}\nfunction zi(e) {\n var o;\n let t, n;\n return t = new vi({\n props: {\n annotation: (\n /*annotation*/\n e[43]\n ),\n geom: (\n /*selector*/\n (o = e[46]) == null ? void 0 : o.geometry\n ),\n style: (\n /*style*/\n e[1]\n )\n }\n }), {\n c() {\n ee(t.$$.fragment);\n },\n m(i, r) {\n x(t, i, r), n = !0;\n },\n p(i, r) {\n var l;\n const s = {};\n r[0] & /*$store*/\n 65536 && (s.annotation = /*annotation*/\n i[43]), r[0] & /*$store*/\n 65536 && (s.geom = /*selector*/\n (l = i[46]) == null ? void 0 : l.geometry), r[0] & /*style*/\n 2 && (s.style = /*style*/\n i[1]), t.$set(s);\n },\n i(i) {\n n || (k(t.$$.fragment, i), n = !0);\n },\n o(i) {\n D(t.$$.fragment, i), n = !1;\n },\n d(i) {\n $(t, i);\n }\n };\n}\nfunction Zt(e) {\n let t, n, o, i;\n const r = [zi, ji, Hi, Gi], s = [];\n function l(a, c) {\n var u, f, h, m;\n return (\n /*selector*/\n ((u = a[46]) == null ? void 0 : u.type) === z.ELLIPSE ? 0 : (\n /*selector*/\n ((f = a[46]) == null ? void 0 : f.type) === z.RECTANGLE ? 1 : (\n /*selector*/\n ((h = a[46]) == null ? void 0 : h.type) === z.POLYGON ? 2 : (\n /*selector*/\n ((m = a[46]) == null ? void 0 : m.type) === z.MULTIPOLYGLON ? 3 : -1\n )\n )\n )\n );\n }\n return ~(t = l(e)) && (n = s[t] = r[t](e)), {\n c() {\n n && n.c(), o = ae();\n },\n m(a, c) {\n ~t && s[t].m(a, c), B(a, o, c), i = !0;\n },\n p(a, c) {\n let u = t;\n t = l(a), t === u ? ~t && s[t].p(a, c) : (n && (ne(), D(s[u], 1, 1, () => {\n s[u] = null;\n }), oe()), ~t ? (n = s[t], n ? n.p(a, c) : (n = s[t] = r[t](a), n.c()), k(n, 1), n.m(o.parentNode, o)) : n = null);\n },\n i(a) {\n i || (k(n), i = !0);\n },\n o(a) {\n D(n), i = !1;\n },\n d(a) {\n a && O(o), ~t && s[t].d(a);\n }\n };\n}\nfunction Qt(e) {\n let t = xe(\n /*annotation*/\n e[43]\n ) && !/*isEditable*/\n e[9](\n /*annotation*/\n e[43]\n ), n, o, i = t && Jt(ft(e));\n return {\n c() {\n i && i.c(), n = ae();\n },\n m(r, s) {\n i && i.m(r, s), B(r, n, s), o = !0;\n },\n p(r, s) {\n s[0] & /*$store, isEditable*/\n 66048 && (t = xe(\n /*annotation*/\n r[43]\n ) && !/*isEditable*/\n r[9](\n /*annotation*/\n r[43]\n )), t ? i ? (i.p(ft(r), s), s[0] & /*$store, isEditable*/\n 66048 && k(i, 1)) : (i = Jt(ft(r)), i.c(), k(i, 1), i.m(n.parentNode, n)) : i && (ne(), D(i, 1, 1, () => {\n i = null;\n }), oe());\n },\n i(r) {\n o || (k(i), o = !0);\n },\n o(r) {\n D(i), o = !1;\n },\n d(r) {\n r && O(n), i && i.d(r);\n }\n };\n}\nfunction xt(e) {\n let t, n, o, i;\n const r = [Ki, Fi], s = [];\n function l(a, c) {\n return (\n /*editableAnnotations*/\n a[8] ? 0 : (\n /*tool*/\n a[14] && /*drawingEnabled*/\n a[0] ? 1 : -1\n )\n );\n }\n return ~(t = l(e)) && (n = s[t] = r[t](e)), {\n c() {\n n && n.c(), o = ae();\n },\n m(a, c) {\n ~t && s[t].m(a, c), B(a, o, c), i = !0;\n },\n p(a, c) {\n let u = t;\n t = l(a), t === u ? ~t && s[t].p(a, c) : (n && (ne(), D(s[u], 1, 1, () => {\n s[u] = null;\n }), oe()), ~t ? (n = s[t], n ? n.p(a, c) : (n = s[t] = r[t](a), n.c()), k(n, 1), n.m(o.parentNode, o)) : n = null);\n },\n i(a) {\n i || (k(n), i = !0);\n },\n o(a) {\n D(n), i = !1;\n },\n d(a) {\n a && O(o), ~t && s[t].d(a);\n }\n };\n}\nfunction Fi(e) {\n let t = `${/*toolName*/\n e[2]}-${/*toolMountKey*/\n e[5]}`, n, o, i = $t(e);\n return {\n c() {\n i.c(), n = ae();\n },\n m(r, s) {\n i.m(r, s), B(r, n, s), o = !0;\n },\n p(r, s) {\n s[0] & /*toolName, toolMountKey*/\n 36 && W(t, t = `${/*toolName*/\n r[2]}-${/*toolMountKey*/\n r[5]}`) ? (ne(), D(i, 1, 1, G), oe(), i = $t(r), i.c(), k(i, 1), i.m(n.parentNode, n)) : i.p(r, s);\n },\n i(r) {\n o || (k(i), o = !0);\n },\n o(r) {\n D(i), o = !1;\n },\n d(r) {\n r && O(n), i.d(r);\n }\n };\n}\nfunction Ki(e) {\n let t, n, o = ie(\n /*editableAnnotations*/\n e[8]\n ), i = [];\n for (let s = 0; s < o.length; s += 1)\n i[s] = nn(Wt(e, o, s));\n const r = (s) => D(i[s], 1, 1, () => {\n i[s] = null;\n });\n return {\n c() {\n for (let s = 0; s < i.length; s += 1)\n i[s].c();\n t = ae();\n },\n m(s, l) {\n for (let a = 0; a < i.length; a += 1)\n i[a] && i[a].m(s, l);\n B(s, t, l), n = !0;\n },\n p(s, l) {\n if (l[0] & /*editableAnnotations, drawingEl, getEditor, style, transform, $scale, onChangeSelected*/\n 21107010) {\n o = ie(\n /*editableAnnotations*/\n s[8]\n );\n let a;\n for (a = 0; a < o.length; a += 1) {\n const c = Wt(s, o, a);\n i[a] ? (i[a].p(c, l), k(i[a], 1)) : (i[a] = nn(c), i[a].c(), k(i[a], 1), i[a].m(t.parentNode, t));\n }\n for (ne(), a = o.length; a < i.length; a += 1)\n r(a);\n oe();\n }\n },\n i(s) {\n if (!n) {\n for (let l = 0; l < o.length; l += 1)\n k(i[l]);\n n = !0;\n }\n },\n o(s) {\n i = i.filter(Boolean);\n for (let l = 0; l < i.length; l += 1)\n D(i[l]);\n n = !1;\n },\n d(s) {\n s && O(t), Se(i, s);\n }\n };\n}\nfunction $t(e) {\n let t, n;\n return t = new gi({\n props: {\n target: (\n /*drawingEl*/\n e[6]\n ),\n tool: (\n /*tool*/\n e[14]\n ),\n drawingMode: (\n /*drawingMode*/\n e[13]\n ),\n transform: (\n /*transform*/\n e[12]\n ),\n viewportScale: (\n /*$scale*/\n e[17]\n )\n }\n }), t.$on(\n \"create\",\n /*onSelectionCreated*/\n e[21]\n ), {\n c() {\n ee(t.$$.fragment);\n },\n m(o, i) {\n x(t, o, i), n = !0;\n },\n p(o, i) {\n const r = {};\n i[0] & /*drawingEl*/\n 64 && (r.target = /*drawingEl*/\n o[6]), i[0] & /*tool*/\n 16384 && (r.tool = /*tool*/\n o[14]), i[0] & /*drawingMode*/\n 8192 && (r.drawingMode = /*drawingMode*/\n o[13]), i[0] & /*transform*/\n 4096 && (r.transform = /*transform*/\n o[12]), i[0] & /*$scale*/\n 131072 && (r.viewportScale = /*$scale*/\n o[17]), t.$set(r);\n },\n i(o) {\n n || (k(t.$$.fragment, o), n = !0);\n },\n o(o) {\n D(t.$$.fragment, o), n = !1;\n },\n d(o) {\n $(t, o);\n }\n };\n}\nfunction en(e) {\n let t = (\n /*editable*/\n e[39].id\n ), n, o, i = tn(e);\n return {\n c() {\n i.c(), n = ae();\n },\n m(r, s) {\n i.m(r, s), B(r, n, s), o = !0;\n },\n p(r, s) {\n s[0] & /*editableAnnotations*/\n 256 && W(t, t = /*editable*/\n r[39].id) ? (ne(), D(i, 1, 1, G), oe(), i = tn(r), i.c(), k(i, 1), i.m(n.parentNode, n)) : i.p(r, s);\n },\n i(r) {\n o || (k(i), o = !0);\n },\n o(r) {\n D(i), o = !1;\n },\n d(r) {\n r && O(n), i.d(r);\n }\n };\n}\nfunction tn(e) {\n let t, n;\n return t = new di({\n props: {\n target: (\n /*drawingEl*/\n e[6]\n ),\n editor: (\n /*getEditor*/\n e[24](\n /*editable*/\n e[39].target.selector\n )\n ),\n annotation: (\n /*editable*/\n e[39]\n ),\n style: (\n /*style*/\n e[1]\n ),\n transform: (\n /*transform*/\n e[12]\n ),\n viewportScale: (\n /*$scale*/\n e[17]\n )\n }\n }), t.$on(\"change\", function() {\n F(\n /*onChangeSelected*/\n e[22](\n /*editable*/\n e[39]\n )\n ) && e[22](\n /*editable*/\n e[39]\n ).apply(this, arguments);\n }), {\n c() {\n ee(t.$$.fragment);\n },\n m(o, i) {\n x(t, o, i), n = !0;\n },\n p(o, i) {\n e = o;\n const r = {};\n i[0] & /*drawingEl*/\n 64 && (r.target = /*drawingEl*/\n e[6]), i[0] & /*editableAnnotations*/\n 256 && (r.editor = /*getEditor*/\n e[24](\n /*editable*/\n e[39].target.selector\n )), i[0] & /*editableAnnotations*/\n 256 && (r.annotation = /*editable*/\n e[39]), i[0] & /*style*/\n 2 && (r.style = /*style*/\n e[1]), i[0] & /*transform*/\n 4096 && (r.transform = /*transform*/\n e[12]), i[0] & /*$scale*/\n 131072 && (r.viewportScale = /*$scale*/\n e[17]), t.$set(r);\n },\n i(o) {\n n || (k(t.$$.fragment, o), n = !0);\n },\n o(o) {\n D(t.$$.fragment, o), n = !1;\n },\n d(o) {\n $(t, o);\n }\n };\n}\nfunction nn(e) {\n let t, n, o = (\n /*editor*/\n e[40] && en(e)\n );\n return {\n c() {\n o && o.c(), t = ae();\n },\n m(i, r) {\n o && o.m(i, r), B(i, t, r), n = !0;\n },\n p(i, r) {\n /*editor*/\n i[40] ? o ? (o.p(i, r), r[0] & /*editableAnnotations*/\n 256 && k(o, 1)) : (o = en(i), o.c(), k(o, 1), o.m(t.parentNode, t)) : o && (ne(), D(o, 1, 1, () => {\n o = null;\n }), oe());\n },\n i(i) {\n n || (k(o), n = !0);\n },\n o(i) {\n D(o), n = !1;\n },\n d(i) {\n i && O(t), o && o.d(i);\n }\n };\n}\nfunction Wi(e) {\n let t, n, o, i, r, s, l = ie(\n /*$store*/\n e[16].filter(\n /*func*/\n e[34]\n )\n ), a = [];\n for (let f = 0; f < l.length; f += 1)\n a[f] = Qt(qt(e, l, f));\n const c = (f) => D(a[f], 1, 1, () => {\n a[f] = null;\n });\n let u = (\n /*drawingEl*/\n e[6] && xt(e)\n );\n return {\n c() {\n t = P(\"svg\"), n = P(\"g\");\n for (let f = 0; f < a.length; f += 1)\n a[f].c();\n o = P(\"g\"), u && u.c(), d(o, \"class\", \"drawing\"), d(t, \"class\", \"a9s-annotationlayer\"), ye(\n t,\n \"drawing\",\n /*tool*/\n e[14]\n ), ye(t, \"hidden\", !/*visible*/\n e[3]), ye(\n t,\n \"hover\",\n /*$hover*/\n e[15]\n );\n },\n m(f, h) {\n B(f, t, h), fe(t, n);\n for (let m = 0; m < a.length; m += 1)\n a[m] && a[m].m(n, null);\n fe(t, o), u && u.m(o, null), e[35](o), e[36](t), i = !0, r || (s = [\n j(t, \"pointerup\", function() {\n F(\n /*onPointerUp*/\n e[10]\n ) && e[10].apply(this, arguments);\n }),\n j(t, \"pointerdown\", function() {\n F(\n /*onPointerDown*/\n e[11]\n ) && e[11].apply(this, arguments);\n }),\n j(\n t,\n \"pointermove\",\n /*onPointerMove*/\n e[23]\n )\n ], r = !0);\n },\n p(f, h) {\n if (e = f, h[0] & /*$store, style, isEditable*/\n 66050) {\n l = ie(\n /*$store*/\n e[16].filter(\n /*func*/\n e[34]\n )\n );\n let m;\n for (m = 0; m < l.length; m += 1) {\n const g = qt(e, l, m);\n a[m] ? (a[m].p(g, h), k(a[m], 1)) : (a[m] = Qt(g), a[m].c(), k(a[m], 1), a[m].m(n, null));\n }\n for (ne(), m = l.length; m < a.length; m += 1)\n c(m);\n oe();\n }\n /*drawingEl*/\n e[6] ? u ? (u.p(e, h), h[0] & /*drawingEl*/\n 64 && k(u, 1)) : (u = xt(e), u.c(), k(u, 1), u.m(o, null)) : u && (ne(), D(u, 1, 1, () => {\n u = null;\n }), oe()), (!i || h[0] & /*tool*/\n 16384) && ye(\n t,\n \"drawing\",\n /*tool*/\n e[14]\n ), (!i || h[0] & /*visible*/\n 8) && ye(t, \"hidden\", !/*visible*/\n e[3]), (!i || h[0] & /*$hover*/\n 32768) && ye(\n t,\n \"hover\",\n /*$hover*/\n e[15]\n );\n },\n i(f) {\n if (!i) {\n for (let h = 0; h < l.length; h += 1)\n k(a[h]);\n k(u), i = !0;\n }\n },\n o(f) {\n a = a.filter(Boolean);\n for (let h = 0; h < a.length; h += 1)\n D(a[h]);\n D(u), i = !1;\n },\n d(f) {\n f && O(t), Se(a, f), u && u.d(), e[35](null), e[36](null), r = !1, de(s);\n }\n };\n}\nfunction qi(e, t, n) {\n let o, i, r, s, l, a, c, u, f, h, m, g = G, p = () => (g(), g = an(C, (M) => n(17, m = M)), C);\n e.$$.on_destroy.push(() => g());\n let { drawingEnabled: A } = t, { image: y } = t, { preferredDrawingMode: _ } = t, { state: w } = t, { style: E = void 0 } = t, { toolName: I = bn()[0] } = t, { user: N } = t, { visible: U = !0 } = t, X = 0;\n const q = () => n(5, X += 1), S = () => I, v = () => A;\n let b, T, C;\n He(() => p(n(7, C = Ko(y, T))));\n const { hover: Y, selection: K, store: Q } = w;\n tt(e, Y, (M) => n(15, u = M)), tt(e, K, (M) => n(33, f = M)), tt(e, Q, (M) => n(16, h = M));\n let le, _e;\n const he = (M) => {\n le && Q.unobserve(le);\n const L = M.filter(({ editable: V }) => V).map(({ id: V }) => V);\n L.length > 0 ? (n(8, _e = L.map((V) => Q.getAnnotation(V)).filter((V) => V && xe(V))), le = (V) => {\n const { updated: te } = V.changes;\n n(8, _e = te == null ? void 0 : te.map((pe) => pe.newValue));\n }, Q.observe(le, { annotations: L })) : n(8, _e = void 0);\n }, Ye = (M) => {\n const L = gn(), V = {\n id: L,\n bodies: [],\n target: {\n annotation: L,\n selector: M.detail,\n creator: N,\n created: /* @__PURE__ */ new Date()\n }\n };\n Q.addAnnotation(V), K.setSelected(V.id);\n }, ge = (M) => (L) => {\n var be;\n const { target: V } = M, te = 10 * 60 * 1e3, pe = ((be = V.creator) == null ? void 0 : be.id) !== N.id || !V.created || (/* @__PURE__ */ new Date()).getTime() - V.created.getTime() > te;\n Q.updateTarget({\n ...V,\n selector: L.detail,\n created: pe ? V.created : /* @__PURE__ */ new Date(),\n updated: pe ? /* @__PURE__ */ new Date() : void 0,\n updatedBy: pe ? N : void 0\n });\n }, Ce = (M) => {\n const { x: L, y: V } = An(M, T), te = Q.getAt(L, V);\n te ? u !== te.id && Y.set(te.id) : Y.set(void 0);\n }, me = (M) => si(M), R = (M) => xe(M);\n function Ne(M) {\n Qe[M ? \"unshift\" : \"push\"](() => {\n b = M, n(6, b);\n });\n }\n function ze(M) {\n Qe[M ? \"unshift\" : \"push\"](() => {\n T = M, n(4, T);\n });\n }\n return e.$$set = (M) => {\n \"drawingEnabled\" in M && n(0, A = M.drawingEnabled), \"image\" in M && n(25, y = M.image), \"preferredDrawingMode\" in M && n(26, _ = M.preferredDrawingMode), \"state\" in M && n(27, w = M.state), \"style\" in M && n(1, E = M.style), \"toolName\" in M && n(2, I = M.toolName), \"user\" in M && n(28, N = M.user), \"visible\" in M && n(3, U = M.visible);\n }, e.$$.update = () => {\n e.$$.dirty[0] & /*toolName*/\n 4 && n(14, { tool: o, opts: i } = En(I) || { tool: void 0, opts: void 0 }, o, (n(32, i), n(2, I))), e.$$.dirty[0] & /*preferredDrawingMode*/\n 67108864 | e.$$.dirty[1] & /*opts*/\n 2 && n(13, r = (i == null ? void 0 : i.drawingMode) || _), e.$$.dirty[0] & /*svgEl*/\n 16 && n(12, s = Xi(T)), e.$$.dirty[0] & /*svgEl*/\n 16 && n(11, { onPointerDown: l, onPointerUp: a } = Vi(T, Q), l, (n(10, a), n(4, T))), e.$$.dirty[1] & /*$selection*/\n 4 && n(9, c = (M) => f.selected.find((L) => L.id === M.id && L.editable)), e.$$.dirty[1] & /*$selection*/\n 4 && he(f.selected);\n }, [\n A,\n E,\n I,\n U,\n T,\n X,\n b,\n C,\n _e,\n c,\n a,\n l,\n s,\n r,\n o,\n u,\n h,\n m,\n Y,\n K,\n Q,\n Ye,\n ge,\n Ce,\n me,\n y,\n _,\n w,\n N,\n q,\n S,\n v,\n i,\n f,\n R,\n Ne,\n ze\n ];\n}\nclass Ji extends se {\n constructor(t) {\n super(), re(\n this,\n t,\n qi,\n Wi,\n W,\n {\n drawingEnabled: 0,\n image: 25,\n preferredDrawingMode: 26,\n state: 27,\n style: 1,\n toolName: 2,\n user: 28,\n visible: 3,\n cancelDrawing: 29,\n getDrawingTool: 30,\n isDrawingEnabled: 31\n },\n null,\n [-1, -1]\n );\n }\n get cancelDrawing() {\n return this.$$.ctx[29];\n }\n get getDrawingTool() {\n return this.$$.ctx[30];\n }\n get isDrawingEnabled() {\n return this.$$.ctx[31];\n }\n}\nfunction Sn(e, t, n = 0, o = e.length - 1, i = Zi) {\n for (; o > n; ) {\n if (o - n > 600) {\n const a = o - n + 1, c = t - n + 1, u = Math.log(a), f = 0.5 * Math.exp(2 * u / 3), h = 0.5 * Math.sqrt(u * f * (a - f) / a) * (c - a / 2 < 0 ? -1 : 1), m = Math.max(n, Math.floor(t - c * f / a + h)), g = Math.min(o, Math.floor(t + (a - c) * f / a + h));\n Sn(e, t, m, g, i);\n }\n const r = e[t];\n let s = n, l = o;\n for (Ue(e, n, t), i(e[o], r) > 0 && Ue(e, n, o); s < l; ) {\n for (Ue(e, s, l), s++, l--; i(e[s], r) < 0; ) s++;\n for (; i(e[l], r) > 0; ) l--;\n }\n i(e[n], r) === 0 ? Ue(e, n, l) : (l++, Ue(e, l, o)), l <= t && (n = l + 1), t <= l && (o = l - 1);\n }\n}\nfunction Ue(e, t, n) {\n const o = e[t];\n e[t] = e[n], e[n] = o;\n}\nfunction Zi(e, t) {\n return e < t ? -1 : e > t ? 1 : 0;\n}\nclass Qi {\n constructor(t = 9) {\n this._maxEntries = Math.max(4, t), this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4)), this.clear();\n }\n all() {\n return this._all(this.data, []);\n }\n search(t) {\n let n = this.data;\n const o = [];\n if (!We(t, n)) return o;\n const i = this.toBBox, r = [];\n for (; n; ) {\n for (let s = 0; s < n.children.length; s++) {\n const l = n.children[s], a = n.leaf ? i(l) : l;\n We(t, a) && (n.leaf ? o.push(l) : dt(t, a) ? this._all(l, o) : r.push(l));\n }\n n = r.pop();\n }\n return o;\n }\n collides(t) {\n let n = this.data;\n if (!We(t, n)) return !1;\n const o = [];\n for (; n; ) {\n for (let i = 0; i < n.children.length; i++) {\n const r = n.children[i], s = n.leaf ? this.toBBox(r) : r;\n if (We(t, s)) {\n if (n.leaf || dt(t, s)) return !0;\n o.push(r);\n }\n }\n n = o.pop();\n }\n return !1;\n }\n load(t) {\n if (!(t && t.length)) return this;\n if (t.length < this._minEntries) {\n for (let o = 0; o < t.length; o++)\n this.insert(t[o]);\n return this;\n }\n let n = this._build(t.slice(), 0, t.length - 1, 0);\n if (!this.data.children.length)\n this.data = n;\n else if (this.data.height === n.height)\n this._splitRoot(this.data, n);\n else {\n if (this.data.height < n.height) {\n const o = this.data;\n this.data = n, n = o;\n }\n this._insert(n, this.data.height - n.height - 1, !0);\n }\n return this;\n }\n insert(t) {\n return t && this._insert(t, this.data.height - 1), this;\n }\n clear() {\n return this.data = Ie([]), this;\n }\n remove(t, n) {\n if (!t) return this;\n let o = this.data;\n const i = this.toBBox(t), r = [], s = [];\n let l, a, c;\n for (; o || r.length; ) {\n if (o || (o = r.pop(), a = r[r.length - 1], l = s.pop(), c = !0), o.leaf) {\n const u = xi(t, o.children, n);\n if (u !== -1)\n return o.children.splice(u, 1), r.push(o), this._condense(r), this;\n }\n !c && !o.leaf && dt(o, i) ? (r.push(o), s.push(l), l = 0, a = o, o = o.children[0]) : a ? (l++, o = a.children[l], c = !1) : o = null;\n }\n return this;\n }\n toBBox(t) {\n return t;\n }\n compareMinX(t, n) {\n return t.minX - n.minX;\n }\n compareMinY(t, n) {\n return t.minY - n.minY;\n }\n toJSON() {\n return this.data;\n }\n fromJSON(t) {\n return this.data = t, this;\n }\n _all(t, n) {\n const o = [];\n for (; t; )\n t.leaf ? n.push(...t.children) : o.push(...t.children), t = o.pop();\n return n;\n }\n _build(t, n, o, i) {\n const r = o - n + 1;\n let s = this._maxEntries, l;\n if (r <= s)\n return l = Ie(t.slice(n, o + 1)), Le(l, this.toBBox), l;\n i || (i = Math.ceil(Math.log(r) / Math.log(s)), s = Math.ceil(r / Math.pow(s, i - 1))), l = Ie([]), l.leaf = !1, l.height = i;\n const a = Math.ceil(r / s), c = a * Math.ceil(Math.sqrt(s));\n on(t, n, o, c, this.compareMinX);\n for (let u = n; u <= o; u += c) {\n const f = Math.min(u + c - 1, o);\n on(t, u, f, a, this.compareMinY);\n for (let h = u; h <= f; h += a) {\n const m = Math.min(h + a - 1, f);\n l.children.push(this._build(t, h, m, i - 1));\n }\n }\n return Le(l, this.toBBox), l;\n }\n _chooseSubtree(t, n, o, i) {\n for (; i.push(n), !(n.leaf || i.length - 1 === o); ) {\n let r = 1 / 0, s = 1 / 0, l;\n for (let a = 0; a < n.children.length; a++) {\n const c = n.children[a], u = ut(c), f = tr(t, c) - u;\n f < s ? (s = f, r = u < r ? u : r, l = c) : f === s && u < r && (r = u, l = c);\n }\n n = l || n.children[0];\n }\n return n;\n }\n _insert(t, n, o) {\n const i = o ? t : this.toBBox(t), r = [], s = this._chooseSubtree(i, this.data, n, r);\n for (s.children.push(t), Re(s, i); n >= 0 && r[n].children.length > this._maxEntries; )\n this._split(r, n), n--;\n this._adjustParentBBoxes(i, r, n);\n }\n // split overflowed node into two\n _split(t, n) {\n const o = t[n], i = o.children.length, r = this._minEntries;\n this._chooseSplitAxis(o, r, i);\n const s = this._chooseSplitIndex(o, r, i), l = Ie(o.children.splice(s, o.children.length - s));\n l.height = o.height, l.leaf = o.leaf, Le(o, this.toBBox), Le(l, this.toBBox), n ? t[n - 1].children.push(l) : this._splitRoot(o, l);\n }\n _splitRoot(t, n) {\n this.data = Ie([t, n]), this.data.height = t.height + 1, this.data.leaf = !1, Le(this.data, this.toBBox);\n }\n _chooseSplitIndex(t, n, o) {\n let i, r = 1 / 0, s = 1 / 0;\n for (let l = n; l <= o - n; l++) {\n const a = Xe(t, 0, l, this.toBBox), c = Xe(t, l, o, this.toBBox), u = nr(a, c), f = ut(a) + ut(c);\n u < r ? (r = u, i = l, s = f < s ? f : s) : u === r && f < s && (s = f, i = l);\n }\n return i || o - n;\n }\n // sorts node children by the best axis for split\n _chooseSplitAxis(t, n, o) {\n const i = t.leaf ? this.compareMinX : $i, r = t.leaf ? this.compareMinY : er, s = this._allDistMargin(t, n, o, i), l = this._allDistMargin(t, n, o, r);\n s < l && t.children.sort(i);\n }\n // total margin of all possible split distributions where each node is at least m full\n _allDistMargin(t, n, o, i) {\n t.children.sort(i);\n const r = this.toBBox, s = Xe(t, 0, n, r), l = Xe(t, o - n, o, r);\n let a = Ke(s) + Ke(l);\n for (let c = n; c < o - n; c++) {\n const u = t.children[c];\n Re(s, t.leaf ? r(u) : u), a += Ke(s);\n }\n for (let c = o - n - 1; c >= n; c--) {\n const u = t.children[c];\n Re(l, t.leaf ? r(u) : u), a += Ke(l);\n }\n return a;\n }\n _adjustParentBBoxes(t, n, o) {\n for (let i = o; i >= 0; i--)\n Re(n[i], t);\n }\n _condense(t) {\n for (let n = t.length - 1, o; n >= 0; n--)\n t[n].children.length === 0 ? n > 0 ? (o = t[n - 1].children, o.splice(o.indexOf(t[n]), 1)) : this.clear() : Le(t[n], this.toBBox);\n }\n}\nfunction xi(e, t, n) {\n if (!n) return t.indexOf(e);\n for (let o = 0; o < t.length; o++)\n if (n(e, t[o])) return o;\n return -1;\n}\nfunction Le(e, t) {\n Xe(e, 0, e.children.length, t, e);\n}\nfunction Xe(e, t, n, o, i) {\n i || (i = Ie(null)), i.minX = 1 / 0, i.minY = 1 / 0, i.maxX = -1 / 0, i.maxY = -1 / 0;\n for (let r = t; r < n; r++) {\n const s = e.children[r];\n Re(i, e.leaf ? o(s) : s);\n }\n return i;\n}\nfunction Re(e, t) {\n return e.minX = Math.min(e.minX, t.minX), e.minY = Math.min(e.minY, t.minY), e.maxX = Math.max(e.maxX, t.maxX), e.maxY = Math.max(e.maxY, t.maxY), e;\n}\nfunction $i(e, t) {\n return e.minX - t.minX;\n}\nfunction er(e, t) {\n return e.minY - t.minY;\n}\nfunction ut(e) {\n return (e.maxX - e.minX) * (e.maxY - e.minY);\n}\nfunction Ke(e) {\n return e.maxX - e.minX + (e.maxY - e.minY);\n}\nfunction tr(e, t) {\n return (Math.max(t.maxX, e.maxX) - Math.min(t.minX, e.minX)) * (Math.max(t.maxY, e.maxY) - Math.min(t.minY, e.minY));\n}\nfunction nr(e, t) {\n const n = Math.max(e.minX, t.minX), o = Math.max(e.minY, t.minY), i = Math.min(e.maxX, t.maxX), r = Math.min(e.maxY, t.maxY);\n return Math.max(0, i - n) * Math.max(0, r - o);\n}\nfunction dt(e, t) {\n return e.minX <= t.minX && e.minY <= t.minY && t.maxX <= e.maxX && t.maxY <= e.maxY;\n}\nfunction We(e, t) {\n return t.minX <= e.maxX && t.minY <= e.maxY && t.maxX >= e.minX && t.maxY >= e.minY;\n}\nfunction Ie(e) {\n return {\n children: e,\n height: 1,\n leaf: !0,\n minX: 1 / 0,\n minY: 1 / 0,\n maxX: -1 / 0,\n maxY: -1 / 0\n };\n}\nfunction on(e, t, n, o, i) {\n const r = [t, n];\n for (; r.length; ) {\n if (n = r.pop(), t = r.pop(), n - t <= o) continue;\n const s = t + Math.ceil((n - t) / o / 2) * o;\n Sn(e, s, t, n, i), r.push(t, s, s, n);\n }\n}\nconst or = () => {\n const e = new Qi(), t = /* @__PURE__ */ new Map(), n = () => [...t.values()], o = () => {\n e.clear(), t.clear();\n }, i = (f) => {\n if (!Je(f)) return;\n const { minX: h, minY: m, maxX: g, maxY: p } = f.selector.geometry.bounds, A = { minX: h, minY: m, maxX: g, maxY: p, target: f };\n e.insert(A), t.set(f.annotation, A);\n }, r = (f) => {\n if (!Je(f)) return;\n const h = t.get(f.annotation);\n h && e.remove(h), t.delete(f.annotation);\n };\n return {\n all: n,\n clear: o,\n getAt: (f, h) => {\n const g = e.search({\n minX: f,\n minY: h,\n maxX: f,\n maxY: h\n }).map((p) => p.target).filter((p) => p.selector.type === z.RECTANGLE || Rn(p.selector, f, h));\n if (g.length > 0)\n return g.sort((p, A) => pt(p.selector) - pt(A.selector)), g[0];\n },\n getIntersecting: (f, h, m, g) => e.search({\n minX: f,\n minY: h,\n maxX: f + m,\n maxY: h + g\n }).map((p) => p.target),\n insert: i,\n remove: r,\n set: (f, h = !0) => {\n h && o();\n const m = f.reduce((g, p) => {\n if (Je(p)) {\n const { minX: A, minY: y, maxX: _, maxY: w } = p.selector.geometry.bounds;\n return [...g, { minX: A, minY: y, maxX: _, maxY: w, target: p }];\n } else\n return g;\n }, []);\n m.forEach((g) => t.set(g.target.annotation, g)), e.load(m);\n },\n size: () => e.all().length,\n update: (f, h) => {\n r(f), i(h);\n }\n };\n}, ir = (e) => {\n const t = wo(), n = or(), o = so(t, e.userSelectAction, e.adapter), i = ro(t), r = To();\n return t.observe(({ changes: a }) => {\n n.set((a.created || []).map((c) => c.target), !1), (a.deleted || []).forEach((c) => n.remove(c.target)), (a.updated || []).forEach(({ oldValue: c, newValue: u }) => n.update(c.target, u.target));\n }), {\n store: {\n ...t,\n getAt: (a, c) => {\n const u = n.getAt(a, c);\n return u ? t.getAnnotation(u.annotation) : void 0;\n },\n getIntersecting: (a, c, u, f) => n.getIntersecting(a, c, u, f).map((h) => t.getAnnotation(h.annotation))\n },\n selection: o,\n hover: i,\n viewport: r\n };\n}, rr = (e) => {\n const t = ir(e);\n return {\n ...t,\n store: bo(t.store)\n };\n}, sr = (e) => {\n let t, n;\n if (e.nodeName === \"CANVAS\")\n t = e, n = t.getContext(\"2d\", { willReadFrequently: !0 });\n else {\n const i = e;\n t = document.createElement(\"canvas\"), t.width = i.width, t.height = i.height, n = t.getContext(\"2d\", { willReadFrequently: !0 }), n.drawImage(i, 0, 0, i.width, i.height);\n }\n let o = 0;\n for (let i = 1; i < 10; i++)\n for (let r = 1; r < 10; r++) {\n const s = Math.round(r * t.width / 10), l = Math.round(i * t.height / 10), a = n.getImageData(s, l, 1, 1).data, c = (0.299 * a[0] + 0.587 * a[1] + 0.114 * a[2]) / 255;\n o += c;\n }\n return o / 81;\n}, lr = (e) => {\n const t = sr(e), n = t > 0.6 ? \"dark\" : \"light\";\n return console.log(`[Annotorious] Image brightness: ${t.toFixed(1)}. Setting ${n} theme.`), n;\n}, rn = (e, t, n) => t.setAttribute(\"data-theme\", n === \"auto\" ? lr(e) : n), ar = (e, t) => ({\n ...e,\n drawingEnabled: e.drawingEnabled === void 0 ? t.drawingEnabled : e.drawingEnabled,\n drawingMode: e.drawingMode || t.drawingMode,\n userSelectAction: e.userSelectAction || t.userSelectAction,\n theme: e.theme || t.theme\n}), sn = typeof navigator > \"u\" ? !1 : navigator.userAgent.indexOf(\"Mac OS X\") !== -1, cr = (e, t) => {\n const n = t || document, o = (s) => {\n const l = s;\n l.key === \"z\" && l.ctrlKey ? e.undo() : l.key === \"y\" && l.ctrlKey && e.redo();\n }, i = (s) => {\n const l = s;\n l.key === \"z\" && l.metaKey && (l.shiftKey ? e.redo() : e.undo());\n }, r = () => {\n sn ? n.removeEventListener(\"keydown\", i) : n.removeEventListener(\"keydown\", o);\n };\n return sn ? n.addEventListener(\"keydown\", i) : n.addEventListener(\"keydown\", o), {\n destroy: r\n };\n}, _r = (e, t = {}) => {\n if (!e)\n throw \"Missing argument: image\";\n const n = typeof e == \"string\" ? document.getElementById(e) : e, o = ar(t, {\n drawingEnabled: !0,\n drawingMode: \"drag\",\n userSelectAction: mn.EDIT,\n theme: \"light\"\n }), i = rr(o), { selection: r, store: s } = i, l = So(s, o.initialHistory), a = Mo(\n i,\n l,\n o.adapter,\n o.autoSave\n ), c = document.createElement(\"DIV\");\n c.style.position = \"relative\", c.style.display = \"inline-block\", n.style.display = \"block\", n.parentNode.insertBefore(c, n), c.appendChild(n);\n const u = cr(l);\n let f = Po();\n rn(n, c, o.theme);\n const h = new Ji({\n target: c,\n props: {\n drawingEnabled: !!o.drawingEnabled,\n image: n,\n preferredDrawingMode: o.drawingMode,\n state: i,\n style: o.style,\n user: f\n }\n });\n h.$on(\"click\", (b) => {\n const { originalEvent: T, annotation: C } = b.detail;\n C ? r.userSelect(C.id, T) : r.isEmpty() || r.clear();\n });\n const m = Lo(i, l, o.adapter), g = () => h.cancelDrawing(), p = () => {\n h.$destroy(), c.parentNode.insertBefore(n, c), c.parentNode.removeChild(c), u.destroy(), l.destroy();\n }, A = () => h.getDrawingTool(), y = () => f, _ = () => h.isDrawingEnabled(), w = (b, T, C) => Si(b, T, C), E = (b, T) => li(b, T), I = (b) => {\n if (!En(b))\n throw `No drawing tool named ${b}`;\n h.$set({ toolName: b });\n }, N = (b) => h.$set({ drawingEnabled: b }), U = (b) => {\n console.warn(\"Filter not implemented yet\");\n }, X = (b) => h.$set({ style: b }), q = (b) => rn(n, c, b), S = (b) => {\n f = b, h.$set({ user: b });\n }, v = (b) => (\n // @ts-ignore\n h.$set({ visible: b })\n );\n return {\n ...m,\n cancelDrawing: g,\n destroy: p,\n getDrawingTool: A,\n getUser: y,\n isDrawingEnabled: _,\n listDrawingTools: bn,\n on: a.on,\n off: a.off,\n registerDrawingTool: w,\n registerShapeEditor: E,\n setDrawingEnabled: N,\n setDrawingTool: I,\n setFilter: U,\n setStyle: X,\n setTheme: q,\n setUser: S,\n setVisible: v,\n element: c,\n state: i\n };\n};\nexport {\n Et as Editor,\n di as EditorMount,\n Be as Handle,\n pr as IdentityTransform,\n jo as PolygonEditor,\n ti as RectangleEditor,\n Fn as RectangleUtil,\n _i as RubberbandRectangle,\n Ji as SVGAnnotationLayer,\n z as ShapeType,\n gi as ToolMount,\n mn as UserSelectAction,\n mr as W3CImageFormat,\n Vi as addEventListeners,\n jn as boundsFromMultiPolygonElements,\n Ae as boundsFromPoints,\n hr as chainStyles,\n pt as computeArea,\n _t as computePolygonArea,\n dr as computeStyle,\n ur as createBody,\n _r as createImageAnnotator,\n ir as createImageAnnotatorState,\n Xi as createSVGTransform,\n rr as createSvelteImageAnnotatorState,\n gr as defaultColorProvider,\n lr as detectTheme,\n at as distance,\n Ko as enableResponsive,\n ar as fillDefaults,\n si as getEditor,\n An as getSVGPoint,\n En as getTool,\n cr as initKeyboardCommands,\n Rn as intersects,\n xe as isImageAnnotation,\n Je as isImageAnnotationTarget,\n sn as isMac,\n yt as isPointInPolygon,\n Wo as isTouch,\n bn as listDrawingTools,\n Oe as multipolygonElementToPath,\n Kn as parseFragmentSelector,\n xn as parseSVGSelector,\n Xo as parseW3CImageAnnotation,\n Vn as pointsToPath,\n li as registerEditor,\n $e as registerShapeUtil,\n Si as registerTool,\n sr as sampleBrightness,\n Wn as serializeFragmentSelector,\n $n as serializeSVGSelector,\n Ro as serializeW3CImageAnnotation,\n rn as setTheme\n};\n//# sourceMappingURL=annotorious.es.js.map\n","/** @returns {void} */\nexport function noop() {}\n\nexport const identity = (x) => x;\n\n/**\n * @template T\n * @template S\n * @param {T} tar\n * @param {S} src\n * @returns {T & S}\n */\nexport function assign(tar, src) {\n\t// @ts-ignore\n\tfor (const k in src) tar[k] = src[k];\n\treturn /** @type {T & S} */ (tar);\n}\n\n// Adapted from https://github.com/then/is-promise/blob/master/index.js\n// Distributed under MIT License https://github.com/then/is-promise/blob/master/LICENSE\n/**\n * @param {any} value\n * @returns {value is PromiseLike<any>}\n */\nexport function is_promise(value) {\n\treturn (\n\t\t!!value &&\n\t\t(typeof value === 'object' || typeof value === 'function') &&\n\t\ttypeof (/** @type {any} */ (value).then) === 'function'\n\t);\n}\n\n/** @returns {void} */\nexport function add_location(element, file, line, column, char) {\n\telement.__svelte_meta = {\n\t\tloc: { file, line, column, char }\n\t};\n}\n\nexport function run(fn) {\n\treturn fn();\n}\n\nexport function blank_object() {\n\treturn Object.create(null);\n}\n\n/**\n * @param {Function[]} fns\n * @returns {void}\n */\nexport function run_all(fns) {\n\tfns.forEach(run);\n}\n\n/**\n * @param {any} thing\n * @returns {thing is Function}\n */\nexport function is_function(thing) {\n\treturn typeof thing === 'function';\n}\n\n/** @returns {boolean} */\nexport function safe_not_equal(a, b) {\n\treturn a != a ? b == b : a !== b || (a && typeof a === 'object') || typeof a === 'function';\n}\n\nlet src_url_equal_anchor;\n\n/**\n * @param {string} element_src\n * @param {string} url\n * @returns {boolean}\n */\nexport function src_url_equal(element_src, url) {\n\tif (element_src === url) return true;\n\tif (!src_url_equal_anchor) {\n\t\tsrc_url_equal_anchor = document.createElement('a');\n\t}\n\t// This is actually faster than doing URL(..).href\n\tsrc_url_equal_anchor.href = url;\n\treturn element_src === src_url_equal_anchor.href;\n}\n\n/** @param {string} srcset */\nfunction split_srcset(srcset) {\n\treturn srcset.split(',').map((src) => src.trim().split(' ').filter(Boolean));\n}\n\n/**\n * @param {HTMLSourceElement | HTMLImageElement} element_srcset\n * @param {string | undefined | null} srcset\n * @returns {boolean}\n */\nexport function srcset_url_equal(element_srcset, srcset) {\n\tconst element_urls = split_srcset(element_srcset.srcset);\n\tconst urls = split_srcset(srcset || '');\n\n\treturn (\n\t\turls.length === element_urls.length &&\n\t\turls.every(\n\t\t\t([url, width], i) =>\n\t\t\t\twidth === element_urls[i][1] &&\n\t\t\t\t// We need to test both ways because Vite will create an a full URL with\n\t\t\t\t// `new URL(asset, import.meta.url).href` for the client when `base: './'`, and the\n\t\t\t\t// relative URLs inside srcset are not automatically resolved to absolute URLs by\n\t\t\t\t// browsers (in contrast to img.src). This means both SSR and DOM code could\n\t\t\t\t// contain relative or absolute URLs.\n\t\t\t\t(src_url_equal(element_urls[i][0], url) || src_url_equal(url, element_urls[i][0]))\n\t\t)\n\t);\n}\n\n/** @returns {boolean} */\nexport function not_equal(a, b) {\n\treturn a != a ? b == b : a !== b;\n}\n\n/** @returns {boolean} */\nexport function is_empty(obj) {\n\treturn Object.keys(obj).length === 0;\n}\n\n/** @returns {void} */\nexport function validate_store(store, name) {\n\tif (store != null && typeof store.subscribe !== 'function') {\n\t\tthrow new Error(`'${name}' is not a store with a 'subscribe' method`);\n\t}\n}\n\nexport function subscribe(store, ...callbacks) {\n\tif (store == null) {\n\t\tfor (const callback of callbacks) {\n\t\t\tcallback(undefined);\n\t\t}\n\t\treturn noop;\n\t}\n\tconst unsub = store.subscribe(...callbacks);\n\treturn unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\n\n/**\n * Get the current value from a store by subscribing and immediately unsubscribing.\n *\n * https://svelte.dev/docs/svelte-store#get\n * @template T\n * @param {import('../store/public.js').Readable<T>} store\n * @returns {T}\n */\nexport function get_store_value(store) {\n\tlet value;\n\tsubscribe(store, (_) => (value = _))();\n\treturn value;\n}\n\n/** @returns {void} */\nexport function component_subscribe(component, store, callback) {\n\tcomponent.$$.on_destroy.push(subscribe(store, callback));\n}\n\nexport function create_slot(definition, ctx, $$scope, fn) {\n\tif (definition) {\n\t\tconst slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n\t\treturn definition[0](slot_ctx);\n\t}\n}\n\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n\treturn definition[1] && fn ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) : $$scope.ctx;\n}\n\nexport function get_slot_changes(definition, $$scope, dirty, fn) {\n\tif (definition[2] && fn) {\n\t\tconst lets = definition[2](fn(dirty));\n\t\tif ($$scope.dirty === undefined) {\n\t\t\treturn lets;\n\t\t}\n\t\tif (typeof lets === 'object') {\n\t\t\tconst merged = [];\n\t\t\tconst len = Math.max($$scope.dirty.length, lets.length);\n\t\t\tfor (let i = 0; i < len; i += 1) {\n\t\t\t\tmerged[i] = $$scope.dirty[i] | lets[i];\n\t\t\t}\n\t\t\treturn merged;\n\t\t}\n\t\treturn $$scope.dirty | lets;\n\t}\n\treturn $$scope.dirty;\n}\n\n/** @returns {void} */\nexport function update_slot_base(\n\tslot,\n\tslot_definition,\n\tctx,\n\t$$scope,\n\tslot_changes,\n\tget_slot_context_fn\n) {\n\tif (slot_changes) {\n\t\tconst slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n\t\tslot.p(slot_context, slot_changes);\n\t}\n}\n\n/** @returns {void} */\nexport function update_slot(\n\tslot,\n\tslot_definition,\n\tctx,\n\t$$scope,\n\tdirty,\n\tget_slot_changes_fn,\n\tget_slot_context_fn\n) {\n\tconst slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n\tupdate_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn);\n}\n\n/** @returns {any[] | -1} */\nexport function get_all_dirty_from_scope($$scope) {\n\tif ($$scope.ctx.length > 32) {\n\t\tconst dirty = [];\n\t\tconst length = $$scope.ctx.length / 32;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tdirty[i] = -1;\n\t\t}\n\t\treturn dirty;\n\t}\n\treturn -1;\n}\n\n/** @returns {{}} */\nexport function exclude_internal_props(props) {\n\tconst result = {};\n\tfor (const k in props) if (k[0] !== '$') result[k] = props[k];\n\treturn result;\n}\n\n/** @returns {{}} */\nexport function compute_rest_props(props, keys) {\n\tconst rest = {};\n\tkeys = new Set(keys);\n\tfor (const k in props) if (!keys.has(k) && k[0] !== '$') rest[k] = props[k];\n\treturn rest;\n}\n\n/** @returns {{}} */\nexport function compute_slots(slots) {\n\tconst result = {};\n\tfor (const key in slots) {\n\t\tresult[key] = true;\n\t}\n\treturn result;\n}\n\n/** @returns {(this: any, ...args: any[]) => void} */\nexport function once(fn) {\n\tlet ran = false;\n\treturn function (...args) {\n\t\tif (ran) return;\n\t\tran = true;\n\t\tfn.call(this, ...args);\n\t};\n}\n\nexport function null_to_empty(value) {\n\treturn value == null ? '' : value;\n}\n\nexport function set_store_value(store, ret, value) {\n\tstore.set(value);\n\treturn ret;\n}\n\nexport const has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\n\nexport function action_destroyer(action_result) {\n\treturn action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\n/** @param {number | string} value\n * @returns {[number, string]}\n */\nexport function split_css_unit(value) {\n\tconst split = typeof value === 'string' && value.match(/^\\s*(-?[\\d.]+)([^\\s]*)\\s*$/);\n\treturn split ? [parseFloat(split[1]), split[2] || 'px'] : [/** @type {number} */ (value), 'px'];\n}\n\nexport const contenteditable_truthy_values = ['', true, 1, 'true', 'contenteditable'];\n","/** @type {typeof globalThis} */\nexport const globals =\n\ttypeof window !== 'undefined'\n\t\t? window\n\t\t: typeof globalThis !== 'undefined'\n\t\t? globalThis\n\t\t: // @ts-ignore Node typings have this\n\t\t global;\n","import { contenteditable_truthy_values, has_prop } from './utils.js';\n\nimport { ResizeObserverSingleton } from './ResizeObserverSingleton.js';\n\n// Track which nodes are claimed during hydration. Unclaimed nodes can then be removed from the DOM\n// at the end of hydration without touching the remaining nodes.\nlet is_hydrating = false;\n\n/**\n * @returns {void}\n */\nexport function start_hydrating() {\n\tis_hydrating = true;\n}\n\n/**\n * @returns {void}\n */\nexport function end_hydrating() {\n\tis_hydrating = false;\n}\n\n/**\n * @param {number} low\n * @param {number} high\n * @param {(index: number) => number} key\n * @param {number} value\n * @returns {number}\n */\nfunction upper_bound(low, high, key, value) {\n\t// Return first index of value larger than input value in the range [low, high)\n\twhile (low < high) {\n\t\tconst mid = low + ((high - low) >> 1);\n\t\tif (key(mid) <= value) {\n\t\t\tlow = mid + 1;\n\t\t} else {\n\t\t\thigh = mid;\n\t\t}\n\t}\n\treturn low;\n}\n\n/**\n * @param {NodeEx} target\n * @returns {void}\n */\nfunction init_hydrate(target) {\n\tif (target.hydrate_init) return;\n\ttarget.hydrate_init = true;\n\t// We know that all children have claim_order values since the unclaimed have been detached if target is not <head>\n\n\tlet children = /** @type {ArrayLike<NodeEx2>} */ (target.childNodes);\n\t// If target is <head>, there may be children without claim_order\n\tif (target.nodeName === 'HEAD') {\n\t\tconst my_children = [];\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\tconst node = children[i];\n\t\t\tif (node.claim_order !== undefined) {\n\t\t\t\tmy_children.push(node);\n\t\t\t}\n\t\t}\n\t\tchildren = my_children;\n\t}\n\t/*\n\t * Reorder claimed children optimally.\n\t * We can reorder claimed children optimally by finding the longest subsequence of\n\t * nodes that are already claimed in order and only moving the rest. The longest\n\t * subsequence of nodes that are claimed in order can be found by\n\t * computing the longest increasing subsequence of .claim_order values.\n\t *\n\t * This algorithm is optimal in generating the least amount of reorder operations\n\t * possible.\n\t *\n\t * Proof:\n\t * We know that, given a set of reordering operations, the nodes that do not move\n\t * always form an increasing subsequence, since they do not move among each other\n\t * meaning that they must be already ordered among each other. Thus, the maximal\n\t * set of nodes that do not move form a longest increasing subsequence.\n\t */\n\t// Compute longest increasing subsequence\n\t// m: subsequence length j => index k of smallest value that ends an increasing subsequence of length j\n\tconst m = new Int32Array(children.length + 1);\n\t// Predecessor indices + 1\n\tconst p = new Int32Array(children.length);\n\tm[0] = -1;\n\tlet longest = 0;\n\tfor (let i = 0; i < children.length; i++) {\n\t\tconst current = children[i].claim_order;\n\t\t// Find the largest subsequence length such that it ends in a value less than our current value\n\t\t// upper_bound returns first greater value, so we subtract one\n\t\t// with fast path for when we are on the current longest subsequence\n\t\tconst seq_len =\n\t\t\t(longest > 0 && children[m[longest]].claim_order <= current\n\t\t\t\t? longest + 1\n\t\t\t\t: upper_bound(1, longest, (idx) => children[m[idx]].claim_order, current)) - 1;\n\t\tp[i] = m[seq_len] + 1;\n\t\tconst new_len = seq_len + 1;\n\t\t// We can guarantee that current is the smallest value. Otherwise, we would have generated a longer sequence.\n\t\tm[new_len] = i;\n\t\tlongest = Math.max(new_len, longest);\n\t}\n\t// The longest increasing subsequence of nodes (initially reversed)\n\n\t/**\n\t * @type {NodeEx2[]}\n\t */\n\tconst lis = [];\n\t// The rest of the nodes, nodes that will be moved\n\n\t/**\n\t * @type {NodeEx2[]}\n\t */\n\tconst to_move = [];\n\tlet last = children.length - 1;\n\tfor (let cur = m[longest] + 1; cur != 0; cur = p[cur - 1]) {\n\t\tlis.push(children[cur - 1]);\n\t\tfor (; last >= cur; last--) {\n\t\t\tto_move.push(children[last]);\n\t\t}\n\t\tlast--;\n\t}\n\tfor (; last >= 0; last--) {\n\t\tto_move.push(children[last]);\n\t}\n\tlis.reverse();\n\t// We sort the nodes being moved to guarantee that their insertion order matches the claim order\n\tto_move.sort((a, b) => a.claim_order - b.claim_order);\n\t// Finally, we move the nodes\n\tfor (let i = 0, j = 0; i < to_move.length; i++) {\n\t\twhile (j < lis.length && to_move[i].claim_order >= lis[j].claim_order) {\n\t\t\tj++;\n\t\t}\n\t\tconst anchor = j < lis.length ? lis[j] : null;\n\t\ttarget.insertBefore(to_move[i], anchor);\n\t}\n}\n\n/**\n * @param {Node} target\n * @param {Node} node\n * @returns {void}\n */\nexport function append(target, node) {\n\ttarget.appendChild(node);\n}\n\n/**\n * @param {Node} target\n * @param {string} style_sheet_id\n * @param {string} styles\n * @returns {void}\n */\nexport function append_styles(target, style_sheet_id, styles) {\n\tconst append_styles_to = get_root_for_style(target);\n\tif (!append_styles_to.getElementById(style_sheet_id)) {\n\t\tconst style = element('style');\n\t\tstyle.id = style_sheet_id;\n\t\tstyle.textContent = styles;\n\t\tappend_stylesheet(append_styles_to, style);\n\t}\n}\n\n/**\n * @param {Node} node\n * @returns {ShadowRoot | Document}\n */\nexport function get_root_for_style(node) {\n\tif (!node) return document;\n\tconst root = node.getRootNode ? node.getRootNode() : node.ownerDocument;\n\tif (root && /** @type {ShadowRoot} */ (root).host) {\n\t\treturn /** @type {ShadowRoot} */ (root);\n\t}\n\treturn node.ownerDocument;\n}\n\n/**\n * @param {Node} node\n * @returns {CSSStyleSheet}\n */\nexport function append_empty_stylesheet(node) {\n\tconst style_element = element('style');\n\t// For transitions to work without 'style-src: unsafe-inline' Content Security Policy,\n\t// these empty tags need to be allowed with a hash as a workaround until we move to the Web Animations API.\n\t// Using the hash for the empty string (for an empty tag) works in all browsers except Safari.\n\t// So as a workaround for the workaround, when we append empty style tags we set their content to /* empty */.\n\t// The hash 'sha256-9OlNO0DNEeaVzHL4RZwCLsBHA8WBQ8toBp/4F5XV2nc=' will then work even in Safari.\n\tstyle_element.textContent = '/* empty */';\n\tappend_stylesheet(get_root_for_style(node), style_element);\n\treturn style_element.sheet;\n}\n\n/**\n * @param {ShadowRoot | Document} node\n * @param {HTMLStyleElement} style\n * @returns {CSSStyleSheet}\n */\nfunction append_stylesheet(node, style) {\n\tappend(/** @type {Document} */ (node).head || node, style);\n\treturn style.sheet;\n}\n\n/**\n * @param {NodeEx} target\n * @param {NodeEx} node\n * @returns {void}\n */\nexport function append_hydration(target, node) {\n\tif (is_hydrating) {\n\t\tinit_hydrate(target);\n\t\tif (\n\t\t\ttarget.actual_end_child === undefined ||\n\t\t\t(target.actual_end_child !== null && target.actual_end_child.parentNode !== target)\n\t\t) {\n\t\t\ttarget.actual_end_child = target.firstChild;\n\t\t}\n\t\t// Skip nodes of undefined ordering\n\t\twhile (target.actual_end_child !== null && target.actual_end_child.claim_order === undefined) {\n\t\t\ttarget.actual_end_child = target.actual_end_child.nextSibling;\n\t\t}\n\t\tif (node !== target.actual_end_child) {\n\t\t\t// We only insert if the ordering of this node should be modified or the parent node is not target\n\t\t\tif (node.claim_order !== undefined || node.parentNode !== target) {\n\t\t\t\ttarget.insertBefore(node, target.actual_end_child);\n\t\t\t}\n\t\t} else {\n\t\t\ttarget.actual_end_child = node.nextSibling;\n\t\t}\n\t} else if (node.parentNode !== target || node.nextSibling !== null) {\n\t\ttarget.appendChild(node);\n\t}\n}\n\n/**\n * @param {Node} target\n * @param {Node} node\n * @param {Node} [anchor]\n * @returns {void}\n */\nexport function insert(target, node, anchor) {\n\ttarget.insertBefore(node, anchor || null);\n}\n\n/**\n * @param {NodeEx} target\n * @param {NodeEx} node\n * @param {NodeEx} [anchor]\n * @returns {void}\n */\nexport function insert_hydration(target, node, anchor) {\n\tif (is_hydrating && !anchor) {\n\t\tappend_hydration(target, node);\n\t} else if (node.parentNode !== target || node.nextSibling != anchor) {\n\t\ttarget.insertBefore(node, anchor || null);\n\t}\n}\n\n/**\n * @param {Node} node\n * @returns {void}\n */\nexport function detach(node) {\n\tif (node.parentNode) {\n\t\tnode.parentNode.removeChild(node);\n\t}\n}\n\n/**\n * @returns {void} */\nexport function destroy_each(iterations, detaching) {\n\tfor (let i = 0; i < iterations.length; i += 1) {\n\t\tif (iterations[i]) iterations[i].d(detaching);\n\t}\n}\n\n/**\n * @template {keyof HTMLElementTagNameMap} K\n * @param {K} name\n * @returns {HTMLElementTagNameMap[K]}\n */\nexport function element(name) {\n\treturn document.createElement(name);\n}\n\n/**\n * @template {keyof HTMLElementTagNameMap} K\n * @param {K} name\n * @param {string} is\n * @returns {HTMLElementTagNameMap[K]}\n */\nexport function element_is(name, is) {\n\treturn document.createElement(name, { is });\n}\n\n/**\n * @template T\n * @template {keyof T} K\n * @param {T} obj\n * @param {K[]} exclude\n * @returns {Pick<T, Exclude<keyof T, K>>}\n */\nexport function object_without_properties(obj, exclude) {\n\tconst target = /** @type {Pick<T, Exclude<keyof T, K>>} */ ({});\n\tfor (const k in obj) {\n\t\tif (\n\t\t\thas_prop(obj, k) &&\n\t\t\t// @ts-ignore\n\t\t\texclude.indexOf(k) === -1\n\t\t) {\n\t\t\t// @ts-ignore\n\t\t\ttarget[k] = obj[k];\n\t\t}\n\t}\n\treturn target;\n}\n\n/**\n * @template {keyof SVGElementTagNameMap} K\n * @param {K} name\n * @returns {SVGElement}\n */\nexport function svg_element(name) {\n\treturn document.createElementNS('http://www.w3.org/2000/svg', name);\n}\n\n/**\n * @param {string} data\n * @returns {Text}\n */\nexport function text(data) {\n\treturn document.createTextNode(data);\n}\n\n/**\n * @returns {Text} */\nexport function space() {\n\treturn text(' ');\n}\n\n/**\n * @returns {Text} */\nexport function empty() {\n\treturn text('');\n}\n\n/**\n * @param {string} content\n * @returns {Comment}\n */\nexport function comment(content) {\n\treturn document.createComment(content);\n}\n\n/**\n * @param {EventTarget} node\n * @param {string} event\n * @param {EventListenerOrEventListenerObject} handler\n * @param {boolean | AddEventListenerOptions | EventListenerOptions} [options]\n * @returns {() => void}\n */\nexport function listen(node, event, handler, options) {\n\tnode.addEventListener(event, handler, options);\n\treturn () => node.removeEventListener(event, handler, options);\n}\n\n/**\n * @returns {(event: any) => any} */\nexport function prevent_default(fn) {\n\treturn function (event) {\n\t\tevent.preventDefault();\n\t\t// @ts-ignore\n\t\treturn fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => any} */\nexport function stop_propagation(fn) {\n\treturn function (event) {\n\t\tevent.stopPropagation();\n\t\t// @ts-ignore\n\t\treturn fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => any} */\nexport function stop_immediate_propagation(fn) {\n\treturn function (event) {\n\t\tevent.stopImmediatePropagation();\n\t\t// @ts-ignore\n\t\treturn fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => void} */\nexport function self(fn) {\n\treturn function (event) {\n\t\t// @ts-ignore\n\t\tif (event.target === this) fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => void} */\nexport function trusted(fn) {\n\treturn function (event) {\n\t\t// @ts-ignore\n\t\tif (event.isTrusted) fn.call(this, event);\n\t};\n}\n\n/**\n * @param {Element} node\n * @param {string} attribute\n * @param {string} [value]\n * @returns {void}\n */\nexport function attr(node, attribute, value) {\n\tif (value == null) node.removeAttribute(attribute);\n\telse if (node.getAttribute(attribute) !== value) node.setAttribute(attribute, value);\n}\n/**\n * List of attributes that should always be set through the attr method,\n * because updating them through the property setter doesn't work reliably.\n * In the example of `width`/`height`, the problem is that the setter only\n * accepts numeric values, but the attribute can also be set to a string like `50%`.\n * If this list becomes too big, rethink this approach.\n */\nconst always_set_through_set_attribute = ['width', 'height'];\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {{ [x: string]: string }} attributes\n * @returns {void}\n */\nexport function set_attributes(node, attributes) {\n\t// @ts-ignore\n\tconst descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n\tfor (const key in attributes) {\n\t\tif (attributes[key] == null) {\n\t\t\tnode.removeAttribute(key);\n\t\t} else if (key === 'style') {\n\t\t\tnode.style.cssText = attributes[key];\n\t\t} else if (key === '__value') {\n\t\t\t/** @type {any} */ (node).value = node[key] = attributes[key];\n\t\t} else if (\n\t\t\tdescriptors[key] &&\n\t\t\tdescriptors[key].set &&\n\t\t\talways_set_through_set_attribute.indexOf(key) === -1\n\t\t) {\n\t\t\tnode[key] = attributes[key];\n\t\t} else {\n\t\t\tattr(node, key, attributes[key]);\n\t\t}\n\t}\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {{ [x: string]: string }} attributes\n * @returns {void}\n */\nexport function set_svg_attributes(node, attributes) {\n\tfor (const key in attributes) {\n\t\tattr(node, key, attributes[key]);\n\t}\n}\n\n/**\n * @param {Record<string, unknown>} data_map\n * @returns {void}\n */\nexport function set_custom_element_data_map(node, data_map) {\n\tObject.keys(data_map).forEach((key) => {\n\t\tset_custom_element_data(node, key, data_map[key]);\n\t});\n}\n\n/**\n * @returns {void} */\nexport function set_custom_element_data(node, prop, value) {\n\tconst lower = prop.toLowerCase(); // for backwards compatibility with existing behavior we do lowercase first\n\tif (lower in node) {\n\t\tnode[lower] = typeof node[lower] === 'boolean' && value === '' ? true : value;\n\t} else if (prop in node) {\n\t\tnode[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value;\n\t} else {\n\t\tattr(node, prop, value);\n\t}\n}\n\n/**\n * @param {string} tag\n */\nexport function set_dynamic_element_data(tag) {\n\treturn /-/.test(tag) ? set_custom_element_data_map : set_attributes;\n}\n\n/**\n * @returns {void}\n */\nexport function xlink_attr(node, attribute, value) {\n\tnode.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\n\n/**\n * @param {HTMLElement} node\n * @returns {string}\n */\nexport function get_svelte_dataset(node) {\n\treturn node.dataset.svelteH;\n}\n\n/**\n * @returns {unknown[]} */\nexport function get_binding_group_value(group, __value, checked) {\n\tconst value = new Set();\n\tfor (let i = 0; i < group.length; i += 1) {\n\t\tif (group[i].checked) value.add(group[i].__value);\n\t}\n\tif (!checked) {\n\t\tvalue.delete(__value);\n\t}\n\treturn Array.from(value);\n}\n\n/**\n * @param {HTMLInputElement[]} group\n * @returns {{ p(...inputs: HTMLInputElement[]): void; r(): void; }}\n */\nexport function init_binding_group(group) {\n\t/**\n\t * @type {HTMLInputElement[]} */\n\tlet _inputs;\n\treturn {\n\t\t/* push */ p(...inputs) {\n\t\t\t_inputs = inputs;\n\t\t\t_inputs.forEach((input) => group.push(input));\n\t\t},\n\t\t/* remove */ r() {\n\t\t\t_inputs.forEach((input) => group.splice(group.indexOf(input), 1));\n\t\t}\n\t};\n}\n\n/**\n * @param {number[]} indexes\n * @returns {{ u(new_indexes: number[]): void; p(...inputs: HTMLInputElement[]): void; r: () => void; }}\n */\nexport function init_binding_group_dynamic(group, indexes) {\n\t/**\n\t * @type {HTMLInputElement[]} */\n\tlet _group = get_binding_group(group);\n\n\t/**\n\t * @type {HTMLInputElement[]} */\n\tlet _inputs;\n\n\tfunction get_binding_group(group) {\n\t\tfor (let i = 0; i < indexes.length; i++) {\n\t\t\tgroup = group[indexes[i]] = group[indexes[i]] || [];\n\t\t}\n\t\treturn group;\n\t}\n\n\t/**\n\t * @returns {void} */\n\tfunction push() {\n\t\t_inputs.forEach((input) => _group.push(input));\n\t}\n\n\t/**\n\t * @returns {void} */\n\tfunction remove() {\n\t\t_inputs.forEach((input) => _group.splice(_group.indexOf(input), 1));\n\t}\n\treturn {\n\t\t/* update */ u(new_indexes) {\n\t\t\tindexes = new_indexes;\n\t\t\tconst new_group = get_binding_group(group);\n\t\t\tif (new_group !== _group) {\n\t\t\t\tremove();\n\t\t\t\t_group = new_group;\n\t\t\t\tpush();\n\t\t\t}\n\t\t},\n\t\t/* push */ p(...inputs) {\n\t\t\t_inputs = inputs;\n\t\t\tpush();\n\t\t},\n\t\t/* remove */ r: remove\n\t};\n}\n\n/** @returns {number} */\nexport function to_number(value) {\n\treturn value === '' ? null : +value;\n}\n\n/** @returns {any[]} */\nexport function time_ranges_to_array(ranges) {\n\tconst array = [];\n\tfor (let i = 0; i < ranges.length; i += 1) {\n\t\tarray.push({ start: ranges.start(i), end: ranges.end(i) });\n\t}\n\treturn array;\n}\n\n/**\n * @param {Element} element\n * @returns {ChildNode[]}\n */\nexport function children(element) {\n\treturn Array.from(element.childNodes);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @returns {void}\n */\nfunction init_claim_info(nodes) {\n\tif (nodes.claim_info === undefined) {\n\t\tnodes.claim_info = { last_index: 0, total_claimed: 0 };\n\t}\n}\n\n/**\n * @template {ChildNodeEx} R\n * @param {ChildNodeArray} nodes\n * @param {(node: ChildNodeEx) => node is R} predicate\n * @param {(node: ChildNodeEx) => ChildNodeEx | undefined} process_node\n * @param {() => R} create_node\n * @param {boolean} dont_update_last_index\n * @returns {R}\n */\nfunction claim_node(nodes, predicate, process_node, create_node, dont_update_last_index = false) {\n\t// Try to find nodes in an order such that we lengthen the longest increasing subsequence\n\tinit_claim_info(nodes);\n\tconst result_node = (() => {\n\t\t// We first try to find an element after the previous one\n\t\tfor (let i = nodes.claim_info.last_index; i < nodes.length; i++) {\n\t\t\tconst node = nodes[i];\n\t\t\tif (predicate(node)) {\n\t\t\t\tconst replacement = process_node(node);\n\t\t\t\tif (replacement === undefined) {\n\t\t\t\t\tnodes.splice(i, 1);\n\t\t\t\t} else {\n\t\t\t\t\tnodes[i] = replacement;\n\t\t\t\t}\n\t\t\t\tif (!dont_update_last_index) {\n\t\t\t\t\tnodes.claim_info.last_index = i;\n\t\t\t\t}\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\t// Otherwise, we try to find one before\n\t\t// We iterate in reverse so that we don't go too far back\n\t\tfor (let i = nodes.claim_info.last_index - 1; i >= 0; i--) {\n\t\t\tconst node = nodes[i];\n\t\t\tif (predicate(node)) {\n\t\t\t\tconst replacement = process_node(node);\n\t\t\t\tif (replacement === undefined) {\n\t\t\t\t\tnodes.splice(i, 1);\n\t\t\t\t} else {\n\t\t\t\t\tnodes[i] = replacement;\n\t\t\t\t}\n\t\t\t\tif (!dont_update_last_index) {\n\t\t\t\t\tnodes.claim_info.last_index = i;\n\t\t\t\t} else if (replacement === undefined) {\n\t\t\t\t\t// Since we spliced before the last_index, we decrease it\n\t\t\t\t\tnodes.claim_info.last_index--;\n\t\t\t\t}\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\t// If we can't find any matching node, we create a new one\n\t\treturn create_node();\n\t})();\n\tresult_node.claim_order = nodes.claim_info.total_claimed;\n\tnodes.claim_info.total_claimed += 1;\n\treturn result_node;\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @param {string} name\n * @param {{ [key: string]: boolean }} attributes\n * @param {(name: string) => Element | SVGElement} create_element\n * @returns {Element | SVGElement}\n */\nfunction claim_element_base(nodes, name, attributes, create_element) {\n\treturn claim_node(\n\t\tnodes,\n\t\t/** @returns {node is Element | SVGElement} */\n\t\t(node) => node.nodeName === name,\n\t\t/** @param {Element} node */\n\t\t(node) => {\n\t\t\tconst remove = [];\n\t\t\tfor (let j = 0; j < node.attributes.length; j++) {\n\t\t\t\tconst attribute = node.attributes[j];\n\t\t\t\tif (!attributes[attribute.name]) {\n\t\t\t\t\tremove.push(attribute.name);\n\t\t\t\t}\n\t\t\t}\n\t\t\tremove.forEach((v) => node.removeAttribute(v));\n\t\t\treturn undefined;\n\t\t},\n\t\t() => create_element(name)\n\t);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @param {string} name\n * @param {{ [key: string]: boolean }} attributes\n * @returns {Element | SVGElement}\n */\nexport function claim_element(nodes, name, attributes) {\n\treturn claim_element_base(nodes, name, attributes, element);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @param {string} name\n * @param {{ [key: string]: boolean }} attributes\n * @returns {Element | SVGElement}\n */\nexport function claim_svg_element(nodes, name, attributes) {\n\treturn claim_element_base(nodes, name, attributes, svg_element);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @returns {Text}\n */\nexport function claim_text(nodes, data) {\n\treturn claim_node(\n\t\tnodes,\n\t\t/** @returns {node is Text} */\n\t\t(node) => node.nodeType === 3,\n\t\t/** @param {Text} node */\n\t\t(node) => {\n\t\t\tconst data_str = '' + data;\n\t\t\tif (node.data.startsWith(data_str)) {\n\t\t\t\tif (node.data.length !== data_str.length) {\n\t\t\t\t\treturn node.splitText(data_str.length);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnode.data = data_str;\n\t\t\t}\n\t\t},\n\t\t() => text(data),\n\t\ttrue // Text nodes should not update last index since it is likely not worth it to eliminate an increasing subsequence of actual elements\n\t);\n}\n\n/**\n * @returns {Text} */\nexport function claim_space(nodes) {\n\treturn claim_text(nodes, ' ');\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @returns {Comment}\n */\nexport function claim_comment(nodes, data) {\n\treturn claim_node(\n\t\tnodes,\n\t\t/** @returns {node is Comment} */\n\t\t(node) => node.nodeType === 8,\n\t\t/** @param {Comment} node */\n\t\t(node) => {\n\t\t\tnode.data = '' + data;\n\t\t\treturn undefined;\n\t\t},\n\t\t() => comment(data),\n\t\ttrue\n\t);\n}\n\nfunction get_comment_idx(nodes, text, start) {\n\tfor (let i = start; i < nodes.length; i += 1) {\n\t\tconst node = nodes[i];\n\t\tif (node.nodeType === 8 /* comment node */ && node.textContent.trim() === text) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n/**\n * @param {boolean} is_svg\n * @returns {HtmlTagHydration}\n */\nexport function claim_html_tag(nodes, is_svg) {\n\t// find html opening tag\n\tconst start_index = get_comment_idx(nodes, 'HTML_TAG_START', 0);\n\tconst end_index = get_comment_idx(nodes, 'HTML_TAG_END', start_index + 1);\n\tif (start_index === -1 || end_index === -1) {\n\t\treturn new HtmlTagHydration(is_svg);\n\t}\n\n\tinit_claim_info(nodes);\n\tconst html_tag_nodes = nodes.splice(start_index, end_index - start_index + 1);\n\tdetach(html_tag_nodes[0]);\n\tdetach(html_tag_nodes[html_tag_nodes.length - 1]);\n\tconst claimed_nodes = html_tag_nodes.slice(1, html_tag_nodes.length - 1);\n\tif (claimed_nodes.length === 0) {\n\t\treturn new HtmlTagHydration(is_svg);\n\t}\n\tfor (const n of claimed_nodes) {\n\t\tn.claim_order = nodes.claim_info.total_claimed;\n\t\tnodes.claim_info.total_claimed += 1;\n\t}\n\treturn new HtmlTagHydration(is_svg, claimed_nodes);\n}\n\n/**\n * @param {Text} text\n * @param {unknown} data\n * @returns {void}\n */\nexport function set_data(text, data) {\n\tdata = '' + data;\n\tif (text.data === data) return;\n\ttext.data = /** @type {string} */ (data);\n}\n\n/**\n * @param {Text} text\n * @param {unknown} data\n * @returns {void}\n */\nexport function set_data_contenteditable(text, data) {\n\tdata = '' + data;\n\tif (text.wholeText === data) return;\n\ttext.data = /** @type {string} */ (data);\n}\n\n/**\n * @param {Text} text\n * @param {unknown} data\n * @param {string} attr_value\n * @returns {void}\n */\nexport function set_data_maybe_contenteditable(text, data, attr_value) {\n\tif (~contenteditable_truthy_values.indexOf(attr_value)) {\n\t\tset_data_contenteditable(text, data);\n\t} else {\n\t\tset_data(text, data);\n\t}\n}\n\n/**\n * @returns {void} */\nexport function set_input_value(input, value) {\n\tinput.value = value == null ? '' : value;\n}\n\n/**\n * @returns {void} */\nexport function set_input_type(input, type) {\n\ttry {\n\t\tinput.type = type;\n\t} catch (e) {\n\t\t// do nothing\n\t}\n}\n\n/**\n * @returns {void} */\nexport function set_style(node, key, value, important) {\n\tif (value == null) {\n\t\tnode.style.removeProperty(key);\n\t} else {\n\t\tnode.style.setProperty(key, value, important ? 'important' : '');\n\t}\n}\n\n/**\n * @returns {void} */\nexport function select_option(select, value, mounting) {\n\tfor (let i = 0; i < select.options.length; i += 1) {\n\t\tconst option = select.options[i];\n\t\tif (option.__value === value) {\n\t\t\toption.selected = true;\n\t\t\treturn;\n\t\t}\n\t}\n\tif (!mounting || value !== undefined) {\n\t\tselect.selectedIndex = -1; // no option should be selected\n\t}\n}\n\n/**\n * @returns {void} */\nexport function select_options(select, value) {\n\tfor (let i = 0; i < select.options.length; i += 1) {\n\t\tconst option = select.options[i];\n\t\toption.selected = ~value.indexOf(option.__value);\n\t}\n}\n\nexport function select_value(select) {\n\tconst selected_option = select.querySelector(':checked');\n\treturn selected_option && selected_option.__value;\n}\n\nexport function select_multiple_value(select) {\n\treturn [].map.call(select.querySelectorAll(':checked'), (option) => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\n\n/**\n * @type {boolean} */\nlet crossorigin;\n\n/**\n * @returns {boolean} */\nexport function is_crossorigin() {\n\tif (crossorigin === undefined) {\n\t\tcrossorigin = false;\n\t\ttry {\n\t\t\tif (typeof window !== 'undefined' && window.parent) {\n\t\t\t\tvoid window.parent.document;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tcrossorigin = true;\n\t\t}\n\t}\n\treturn crossorigin;\n}\n\n/**\n * @param {HTMLElement} node\n * @param {() => void} fn\n * @returns {() => void}\n */\nexport function add_iframe_resize_listener(node, fn) {\n\tconst computed_style = getComputedStyle(node);\n\tif (computed_style.position === 'static') {\n\t\tnode.style.position = 'relative';\n\t}\n\tconst iframe = element('iframe');\n\tiframe.setAttribute(\n\t\t'style',\n\t\t'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n\t\t\t'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;'\n\t);\n\tiframe.setAttribute('aria-hidden', 'true');\n\tiframe.tabIndex = -1;\n\tconst crossorigin = is_crossorigin();\n\n\t/**\n\t * @type {() => void}\n\t */\n\tlet unsubscribe;\n\tif (crossorigin) {\n\t\tiframe.src = \"data:text/html,<script>onresize=function(){parent.postMessage(0,'*')}</script>\";\n\t\tunsubscribe = listen(\n\t\t\twindow,\n\t\t\t'message',\n\t\t\t/** @param {MessageEvent} event */ (event) => {\n\t\t\t\tif (event.source === iframe.contentWindow) fn();\n\t\t\t}\n\t\t);\n\t} else {\n\t\tiframe.src = 'about:blank';\n\t\tiframe.onload = () => {\n\t\t\tunsubscribe = listen(iframe.contentWindow, 'resize', fn);\n\t\t\t// make sure an initial resize event is fired _after_ the iframe is loaded (which is asynchronous)\n\t\t\t// see https://github.com/sveltejs/svelte/issues/4233\n\t\t\tfn();\n\t\t};\n\t}\n\tappend(node, iframe);\n\treturn () => {\n\t\tif (crossorigin) {\n\t\t\tunsubscribe();\n\t\t} else if (unsubscribe && iframe.contentWindow) {\n\t\t\tunsubscribe();\n\t\t}\n\t\tdetach(iframe);\n\t};\n}\nexport const resize_observer_content_box = /* @__PURE__ */ new ResizeObserverSingleton({\n\tbox: 'content-box'\n});\nexport const resize_observer_border_box = /* @__PURE__ */ new ResizeObserverSingleton({\n\tbox: 'border-box'\n});\nexport const resize_observer_device_pixel_content_box = /* @__PURE__ */ new ResizeObserverSingleton(\n\t{ box: 'device-pixel-content-box' }\n);\nexport { ResizeObserverSingleton };\n\n/**\n * @returns {void} */\nexport function toggle_class(element, name, toggle) {\n\t// The `!!` is required because an `undefined` flag means flipping the current state.\n\telement.classList.toggle(name, !!toggle);\n}\n\n/**\n * @template T\n * @param {string} type\n * @param {T} [detail]\n * @param {{ bubbles?: boolean, cancelable?: boolean }} [options]\n * @returns {CustomEvent<T>}\n */\nexport function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n\treturn new CustomEvent(type, { detail, bubbles, cancelable });\n}\n\n/**\n * @param {string} selector\n * @param {HTMLElement} parent\n * @returns {ChildNodeArray}\n */\nexport function query_selector_all(selector, parent = document.body) {\n\treturn Array.from(parent.querySelectorAll(selector));\n}\n\n/**\n * @param {string} nodeId\n * @param {HTMLElement} head\n * @returns {any[]}\n */\nexport function head_selector(nodeId, head) {\n\tconst result = [];\n\tlet started = 0;\n\tfor (const node of head.childNodes) {\n\t\tif (node.nodeType === 8 /* comment node */) {\n\t\t\tconst comment = node.textContent.trim();\n\t\t\tif (comment === `HEAD_${nodeId}_END`) {\n\t\t\t\tstarted -= 1;\n\t\t\t\tresult.push(node);\n\t\t\t} else if (comment === `HEAD_${nodeId}_START`) {\n\t\t\t\tstarted += 1;\n\t\t\t\tresult.push(node);\n\t\t\t}\n\t\t} else if (started > 0) {\n\t\t\tresult.push(node);\n\t\t}\n\t}\n\treturn result;\n}\n/** */\nexport class HtmlTag {\n\t/**\n\t * @private\n\t * @default false\n\t */\n\tis_svg = false;\n\t/** parent for creating node */\n\te = undefined;\n\t/** html tag nodes */\n\tn = undefined;\n\t/** target */\n\tt = undefined;\n\t/** anchor */\n\ta = undefined;\n\tconstructor(is_svg = false) {\n\t\tthis.is_svg = is_svg;\n\t\tthis.e = this.n = null;\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\tc(html) {\n\t\tthis.h(html);\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @param {HTMLElement | SVGElement} target\n\t * @param {HTMLElement | SVGElement} anchor\n\t * @returns {void}\n\t */\n\tm(html, target, anchor = null) {\n\t\tif (!this.e) {\n\t\t\tif (this.is_svg)\n\t\t\t\tthis.e = svg_element(/** @type {keyof SVGElementTagNameMap} */ (target.nodeName));\n\t\t\t/** #7364 target for <template> may be provided as #document-fragment(11) */ else\n\t\t\t\tthis.e = element(\n\t\t\t\t\t/** @type {keyof HTMLElementTagNameMap} */ (\n\t\t\t\t\t\ttarget.nodeType === 11 ? 'TEMPLATE' : target.nodeName\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\tthis.t =\n\t\t\t\ttarget.tagName !== 'TEMPLATE'\n\t\t\t\t\t? target\n\t\t\t\t\t: /** @type {HTMLTemplateElement} */ (target).content;\n\t\t\tthis.c(html);\n\t\t}\n\t\tthis.i(anchor);\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\th(html) {\n\t\tthis.e.innerHTML = html;\n\t\tthis.n = Array.from(\n\t\t\tthis.e.nodeName === 'TEMPLATE' ? this.e.content.childNodes : this.e.childNodes\n\t\t);\n\t}\n\n\t/**\n\t * @returns {void} */\n\ti(anchor) {\n\t\tfor (let i = 0; i < this.n.length; i += 1) {\n\t\t\tinsert(this.t, this.n[i], anchor);\n\t\t}\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\tp(html) {\n\t\tthis.d();\n\t\tthis.h(html);\n\t\tthis.i(this.a);\n\t}\n\n\t/**\n\t * @returns {void} */\n\td() {\n\t\tthis.n.forEach(detach);\n\t}\n}\n\nexport class HtmlTagHydration extends HtmlTag {\n\t/** @type {Element[]} hydration claimed nodes */\n\tl = undefined;\n\n\tconstructor(is_svg = false, claimed_nodes) {\n\t\tsuper(is_svg);\n\t\tthis.e = this.n = null;\n\t\tthis.l = claimed_nodes;\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\tc(html) {\n\t\tif (this.l) {\n\t\t\tthis.n = this.l;\n\t\t} else {\n\t\t\tsuper.c(html);\n\t\t}\n\t}\n\n\t/**\n\t * @returns {void} */\n\ti(anchor) {\n\t\tfor (let i = 0; i < this.n.length; i += 1) {\n\t\t\tinsert_hydration(this.t, this.n[i], anchor);\n\t\t}\n\t}\n}\n\n/**\n * @param {NamedNodeMap} attributes\n * @returns {{}}\n */\nexport function attribute_to_object(attributes) {\n\tconst result = {};\n\tfor (const attribute of attributes) {\n\t\tresult[attribute.name] = attribute.value;\n\t}\n\treturn result;\n}\n\nconst escaped = {\n\t'\"': '&quot;',\n\t'&': '&amp;',\n\t'<': '&lt;'\n};\n\nconst regex_attribute_characters_to_escape = /[\"&<]/g;\n\n/**\n * Note that the attribute itself should be surrounded in double quotes\n * @param {any} attribute\n */\nfunction escape_attribute(attribute) {\n\treturn String(attribute).replace(regex_attribute_characters_to_escape, (match) => escaped[match]);\n}\n\n/**\n * @param {Record<string, string>} attributes\n */\nexport function stringify_spread(attributes) {\n\tlet str = ' ';\n\tfor (const key in attributes) {\n\t\tif (attributes[key] != null) {\n\t\t\tstr += `${key}=\"${escape_attribute(attributes[key])}\" `;\n\t\t}\n\t}\n\n\treturn str;\n}\n\n/**\n * @param {HTMLElement} element\n * @returns {{}}\n */\nexport function get_custom_elements_slots(element) {\n\tconst result = {};\n\telement.childNodes.forEach(\n\t\t/** @param {Element} node */ (node) => {\n\t\t\tresult[node.slot || 'default'] = true;\n\t\t}\n\t);\n\treturn result;\n}\n\nexport function construct_svelte_component(component, props) {\n\treturn new component(props);\n}\n\n/**\n * @typedef {Node & {\n * \tclaim_order?: number;\n * \thydrate_init?: true;\n * \tactual_end_child?: NodeEx;\n * \tchildNodes: NodeListOf<NodeEx>;\n * }} NodeEx\n */\n\n/** @typedef {ChildNode & NodeEx} ChildNodeEx */\n\n/** @typedef {NodeEx & { claim_order: number }} NodeEx2 */\n\n/**\n * @typedef {ChildNodeEx[] & {\n * \tclaim_info?: {\n * \t\tlast_index: number;\n * \t\ttotal_claimed: number;\n * \t};\n * }} ChildNodeArray\n */\n","import { custom_event } from './dom.js';\n\nexport let current_component;\n\n/** @returns {void} */\nexport function set_current_component(component) {\n\tcurrent_component = component;\n}\n\nexport function get_current_component() {\n\tif (!current_component) throw new Error('Function called outside component initialization');\n\treturn current_component;\n}\n\n/**\n * Schedules a callback to run immediately before the component is updated after any state change.\n *\n * The first time the callback runs will be before the initial `onMount`\n *\n * https://svelte.dev/docs/svelte#beforeupdate\n * @param {() => any} fn\n * @returns {void}\n */\nexport function beforeUpdate(fn) {\n\tget_current_component().$$.before_update.push(fn);\n}\n\n/**\n * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM.\n * It must be called during the component's initialisation (but doesn't need to live *inside* the component;\n * it can be called from an external module).\n *\n * If a function is returned _synchronously_ from `onMount`, it will be called when the component is unmounted.\n *\n * `onMount` does not run inside a [server-side component](https://svelte.dev/docs#run-time-server-side-component-api).\n *\n * https://svelte.dev/docs/svelte#onmount\n * @template T\n * @param {() => import('./private.js').NotFunction<T> | Promise<import('./private.js').NotFunction<T>> | (() => any)} fn\n * @returns {void}\n */\nexport function onMount(fn) {\n\tget_current_component().$$.on_mount.push(fn);\n}\n\n/**\n * Schedules a callback to run immediately after the component has been updated.\n *\n * The first time the callback runs will be after the initial `onMount`\n *\n * https://svelte.dev/docs/svelte#afterupdate\n * @param {() => any} fn\n * @returns {void}\n */\nexport function afterUpdate(fn) {\n\tget_current_component().$$.after_update.push(fn);\n}\n\n/**\n * Schedules a callback to run immediately before the component is unmounted.\n *\n * Out of `onMount`, `beforeUpdate`, `afterUpdate` and `onDestroy`, this is the\n * only one that runs inside a server-side component.\n *\n * https://svelte.dev/docs/svelte#ondestroy\n * @param {() => any} fn\n * @returns {void}\n */\nexport function onDestroy(fn) {\n\tget_current_component().$$.on_destroy.push(fn);\n}\n\n/**\n * Creates an event dispatcher that can be used to dispatch [component events](https://svelte.dev/docs#template-syntax-component-directives-on-eventname).\n * Event dispatchers are functions that can take two arguments: `name` and `detail`.\n *\n * Component events created with `createEventDispatcher` create a\n * [CustomEvent](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent).\n * These events do not [bubble](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture).\n * The `detail` argument corresponds to the [CustomEvent.detail](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail)\n * property and can contain any type of data.\n *\n * The event dispatcher can be typed to narrow the allowed event names and the type of the `detail` argument:\n * ```ts\n * const dispatch = createEventDispatcher<{\n * loaded: never; // does not take a detail argument\n * change: string; // takes a detail argument of type string, which is required\n * optional: number | null; // takes an optional detail argument of type number\n * }>();\n * ```\n *\n * https://svelte.dev/docs/svelte#createeventdispatcher\n * @template {Record<string, any>} [EventMap=any]\n * @returns {import('./public.js').EventDispatcher<EventMap>}\n */\nexport function createEventDispatcher() {\n\tconst component = get_current_component();\n\treturn (type, detail, { cancelable = false } = {}) => {\n\t\tconst callbacks = component.$$.callbacks[type];\n\t\tif (callbacks) {\n\t\t\t// TODO are there situations where events could be dispatched\n\t\t\t// in a server (non-DOM) environment?\n\t\t\tconst event = custom_event(/** @type {string} */ (type), detail, { cancelable });\n\t\t\tcallbacks.slice().forEach((fn) => {\n\t\t\t\tfn.call(component, event);\n\t\t\t});\n\t\t\treturn !event.defaultPrevented;\n\t\t}\n\t\treturn true;\n\t};\n}\n\n/**\n * Associates an arbitrary `context` object with the current component and the specified `key`\n * and returns that object. The context is then available to children of the component\n * (including slotted content) with `getContext`.\n *\n * Like lifecycle functions, this must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#setcontext\n * @template T\n * @param {any} key\n * @param {T} context\n * @returns {T}\n */\nexport function setContext(key, context) {\n\tget_current_component().$$.context.set(key, context);\n\treturn context;\n}\n\n/**\n * Retrieves the context that belongs to the closest parent component with the specified `key`.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#getcontext\n * @template T\n * @param {any} key\n * @returns {T}\n */\nexport function getContext(key) {\n\treturn get_current_component().$$.context.get(key);\n}\n\n/**\n * Retrieves the whole context map that belongs to the closest parent component.\n * Must be called during component initialisation. Useful, for example, if you\n * programmatically create a component and want to pass the existing context to it.\n *\n * https://svelte.dev/docs/svelte#getallcontexts\n * @template {Map<any, any>} [T=Map<any, any>]\n * @returns {T}\n */\nexport function getAllContexts() {\n\treturn get_current_component().$$.context;\n}\n\n/**\n * Checks whether a given `key` has been set in the context of a parent component.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#hascontext\n * @param {any} key\n * @returns {boolean}\n */\nexport function hasContext(key) {\n\treturn get_current_component().$$.context.has(key);\n}\n\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\n/**\n * @param component\n * @param event\n * @returns {void}\n */\nexport function bubble(component, event) {\n\tconst callbacks = component.$$.callbacks[event.type];\n\tif (callbacks) {\n\t\t// @ts-ignore\n\t\tcallbacks.slice().forEach((fn) => fn.call(this, event));\n\t}\n}\n","import { run_all } from './utils.js';\nimport { current_component, set_current_component } from './lifecycle.js';\n\nexport const dirty_components = [];\nexport const intros = { enabled: false };\nexport const binding_callbacks = [];\n\nlet render_callbacks = [];\n\nconst flush_callbacks = [];\n\nconst resolved_promise = /* @__PURE__ */ Promise.resolve();\n\nlet update_scheduled = false;\n\n/** @returns {void} */\nexport function schedule_update() {\n\tif (!update_scheduled) {\n\t\tupdate_scheduled = true;\n\t\tresolved_promise.then(flush);\n\t}\n}\n\n/** @returns {Promise<void>} */\nexport function tick() {\n\tschedule_update();\n\treturn resolved_promise;\n}\n\n/** @returns {void} */\nexport function add_render_callback(fn) {\n\trender_callbacks.push(fn);\n}\n\n/** @returns {void} */\nexport function add_flush_callback(fn) {\n\tflush_callbacks.push(fn);\n}\n\n// flush() calls callbacks in this order:\n// 1. All beforeUpdate callbacks, in order: parents before children\n// 2. All bind:this callbacks, in reverse order: children before parents.\n// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT\n// for afterUpdates called during the initial onMount, which are called in\n// reverse order: children before parents.\n// Since callbacks might update component values, which could trigger another\n// call to flush(), the following steps guard against this:\n// 1. During beforeUpdate, any updated components will be added to the\n// dirty_components array and will cause a reentrant call to flush(). Because\n// the flush index is kept outside the function, the reentrant call will pick\n// up where the earlier call left off and go through all dirty components. The\n// current_component value is saved and restored so that the reentrant call will\n// not interfere with the \"parent\" flush() call.\n// 2. bind:this callbacks cannot trigger new flush() calls.\n// 3. During afterUpdate, any updated components will NOT have their afterUpdate\n// callback called a second time; the seen_callbacks set, outside the flush()\n// function, guarantees this behavior.\nconst seen_callbacks = new Set();\n\nlet flushidx = 0; // Do *not* move this inside the flush() function\n\n/** @returns {void} */\nexport function flush() {\n\t// Do not reenter flush while dirty components are updated, as this can\n\t// result in an infinite loop. Instead, let the inner flush handle it.\n\t// Reentrancy is ok afterwards for bindings etc.\n\tif (flushidx !== 0) {\n\t\treturn;\n\t}\n\tconst saved_component = current_component;\n\tdo {\n\t\t// first, call beforeUpdate functions\n\t\t// and update components\n\t\ttry {\n\t\t\twhile (flushidx < dirty_components.length) {\n\t\t\t\tconst component = dirty_components[flushidx];\n\t\t\t\tflushidx++;\n\t\t\t\tset_current_component(component);\n\t\t\t\tupdate(component.$$);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// reset dirty state to not end up in a deadlocked state and then rethrow\n\t\t\tdirty_components.length = 0;\n\t\t\tflushidx = 0;\n\t\t\tthrow e;\n\t\t}\n\t\tset_current_component(null);\n\t\tdirty_components.length = 0;\n\t\tflushidx = 0;\n\t\twhile (binding_callbacks.length) binding_callbacks.pop()();\n\t\t// then, once components are updated, call\n\t\t// afterUpdate functions. This may cause\n\t\t// subsequent updates...\n\t\tfor (let i = 0; i < render_callbacks.length; i += 1) {\n\t\t\tconst callback = render_callbacks[i];\n\t\t\tif (!seen_callbacks.has(callback)) {\n\t\t\t\t// ...so guard against infinite loops\n\t\t\t\tseen_callbacks.add(callback);\n\t\t\t\tcallback();\n\t\t\t}\n\t\t}\n\t\trender_callbacks.length = 0;\n\t} while (dirty_components.length);\n\twhile (flush_callbacks.length) {\n\t\tflush_callbacks.pop()();\n\t}\n\tupdate_scheduled = false;\n\tseen_callbacks.clear();\n\tset_current_component(saved_component);\n}\n\n/** @returns {void} */\nfunction update($$) {\n\tif ($$.fragment !== null) {\n\t\t$$.update();\n\t\trun_all($$.before_update);\n\t\tconst dirty = $$.dirty;\n\t\t$$.dirty = [-1];\n\t\t$$.fragment && $$.fragment.p($$.ctx, dirty);\n\t\t$$.after_update.forEach(add_render_callback);\n\t}\n}\n\n/**\n * Useful for example to execute remaining `afterUpdate` callbacks before executing `destroy`.\n * @param {Function[]} fns\n * @returns {void}\n */\nexport function flush_render_callbacks(fns) {\n\tconst filtered = [];\n\tconst targets = [];\n\trender_callbacks.forEach((c) => (fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c)));\n\ttargets.forEach((c) => c());\n\trender_callbacks = filtered;\n}\n","import { identity as linear, is_function, noop, run_all } from './utils.js';\nimport { now } from './environment.js';\nimport { loop } from './loop.js';\nimport { create_rule, delete_rule } from './style_manager.js';\nimport { custom_event } from './dom.js';\nimport { add_render_callback } from './scheduler.js';\n\n/**\n * @type {Promise<void> | null}\n */\nlet promise;\n\n/**\n * @returns {Promise<void>}\n */\nfunction wait() {\n\tif (!promise) {\n\t\tpromise = Promise.resolve();\n\t\tpromise.then(() => {\n\t\t\tpromise = null;\n\t\t});\n\t}\n\treturn promise;\n}\n\n/**\n * @param {Element} node\n * @param {INTRO | OUTRO | boolean} direction\n * @param {'start' | 'end'} kind\n * @returns {void}\n */\nfunction dispatch(node, direction, kind) {\n\tnode.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\n\nconst outroing = new Set();\n\n/**\n * @type {Outro}\n */\nlet outros;\n\n/**\n * @returns {void} */\nexport function group_outros() {\n\toutros = {\n\t\tr: 0,\n\t\tc: [],\n\t\tp: outros // parent group\n\t};\n}\n\n/**\n * @returns {void} */\nexport function check_outros() {\n\tif (!outros.r) {\n\t\trun_all(outros.c);\n\t}\n\toutros = outros.p;\n}\n\n/**\n * @param {import('./private.js').Fragment} block\n * @param {0 | 1} [local]\n * @returns {void}\n */\nexport function transition_in(block, local) {\n\tif (block && block.i) {\n\t\toutroing.delete(block);\n\t\tblock.i(local);\n\t}\n}\n\n/**\n * @param {import('./private.js').Fragment} block\n * @param {0 | 1} local\n * @param {0 | 1} [detach]\n * @param {() => void} [callback]\n * @returns {void}\n */\nexport function transition_out(block, local, detach, callback) {\n\tif (block && block.o) {\n\t\tif (outroing.has(block)) return;\n\t\toutroing.add(block);\n\t\toutros.c.push(() => {\n\t\t\toutroing.delete(block);\n\t\t\tif (callback) {\n\t\t\t\tif (detach) block.d(1);\n\t\t\t\tcallback();\n\t\t\t}\n\t\t});\n\t\tblock.o(local);\n\t} else if (callback) {\n\t\tcallback();\n\t}\n}\n\n/**\n * @type {import('../transition/public.js').TransitionConfig}\n */\nconst null_transition = { duration: 0 };\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {TransitionFn} fn\n * @param {any} params\n * @returns {{ start(): void; invalidate(): void; end(): void; }}\n */\nexport function create_in_transition(node, fn, params) {\n\t/**\n\t * @type {TransitionOptions} */\n\tconst options = { direction: 'in' };\n\tlet config = fn(node, params, options);\n\tlet running = false;\n\tlet animation_name;\n\tlet task;\n\tlet uid = 0;\n\n\t/**\n\t * @returns {void} */\n\tfunction cleanup() {\n\t\tif (animation_name) delete_rule(node, animation_name);\n\t}\n\n\t/**\n\t * @returns {void} */\n\tfunction go() {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = 300,\n\t\t\teasing = linear,\n\t\t\ttick = noop,\n\t\t\tcss\n\t\t} = config || null_transition;\n\t\tif (css) animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n\t\ttick(0, 1);\n\t\tconst start_time = now() + delay;\n\t\tconst end_time = start_time + duration;\n\t\tif (task) task.abort();\n\t\trunning = true;\n\t\tadd_render_callback(() => dispatch(node, true, 'start'));\n\t\ttask = loop((now) => {\n\t\t\tif (running) {\n\t\t\t\tif (now >= end_time) {\n\t\t\t\t\ttick(1, 0);\n\t\t\t\t\tdispatch(node, true, 'end');\n\t\t\t\t\tcleanup();\n\t\t\t\t\treturn (running = false);\n\t\t\t\t}\n\t\t\t\tif (now >= start_time) {\n\t\t\t\t\tconst t = easing((now - start_time) / duration);\n\t\t\t\t\ttick(t, 1 - t);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn running;\n\t\t});\n\t}\n\tlet started = false;\n\treturn {\n\t\tstart() {\n\t\t\tif (started) return;\n\t\t\tstarted = true;\n\t\t\tdelete_rule(node);\n\t\t\tif (is_function(config)) {\n\t\t\t\tconfig = config(options);\n\t\t\t\twait().then(go);\n\t\t\t} else {\n\t\t\t\tgo();\n\t\t\t}\n\t\t},\n\t\tinvalidate() {\n\t\t\tstarted = false;\n\t\t},\n\t\tend() {\n\t\t\tif (running) {\n\t\t\t\tcleanup();\n\t\t\t\trunning = false;\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {TransitionFn} fn\n * @param {any} params\n * @returns {{ end(reset: any): void; }}\n */\nexport function create_out_transition(node, fn, params) {\n\t/** @type {TransitionOptions} */\n\tconst options = { direction: 'out' };\n\tlet config = fn(node, params, options);\n\tlet running = true;\n\tlet animation_name;\n\tconst group = outros;\n\tgroup.r += 1;\n\t/** @type {boolean} */\n\tlet original_inert_value;\n\n\t/**\n\t * @returns {void} */\n\tfunction go() {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = 300,\n\t\t\teasing = linear,\n\t\t\ttick = noop,\n\t\t\tcss\n\t\t} = config || null_transition;\n\n\t\tif (css) animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n\n\t\tconst start_time = now() + delay;\n\t\tconst end_time = start_time + duration;\n\t\tadd_render_callback(() => dispatch(node, false, 'start'));\n\n\t\tif ('inert' in node) {\n\t\t\toriginal_inert_value = /** @type {HTMLElement} */ (node).inert;\n\t\t\tnode.inert = true;\n\t\t}\n\n\t\tloop((now) => {\n\t\t\tif (running) {\n\t\t\t\tif (now >= end_time) {\n\t\t\t\t\ttick(0, 1);\n\t\t\t\t\tdispatch(node, false, 'end');\n\t\t\t\t\tif (!--group.r) {\n\t\t\t\t\t\t// this will result in `end()` being called,\n\t\t\t\t\t\t// so we don't need to clean up here\n\t\t\t\t\t\trun_all(group.c);\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (now >= start_time) {\n\t\t\t\t\tconst t = easing((now - start_time) / duration);\n\t\t\t\t\ttick(1 - t, t);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn running;\n\t\t});\n\t}\n\n\tif (is_function(config)) {\n\t\twait().then(() => {\n\t\t\t// @ts-ignore\n\t\t\tconfig = config(options);\n\t\t\tgo();\n\t\t});\n\t} else {\n\t\tgo();\n\t}\n\n\treturn {\n\t\tend(reset) {\n\t\t\tif (reset && 'inert' in node) {\n\t\t\t\tnode.inert = original_inert_value;\n\t\t\t}\n\t\t\tif (reset && config.tick) {\n\t\t\t\tconfig.tick(1, 0);\n\t\t\t}\n\t\t\tif (running) {\n\t\t\t\tif (animation_name) delete_rule(node, animation_name);\n\t\t\t\trunning = false;\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {TransitionFn} fn\n * @param {any} params\n * @param {boolean} intro\n * @returns {{ run(b: 0 | 1): void; end(): void; }}\n */\nexport function create_bidirectional_transition(node, fn, params, intro) {\n\t/**\n\t * @type {TransitionOptions} */\n\tconst options = { direction: 'both' };\n\tlet config = fn(node, params, options);\n\tlet t = intro ? 0 : 1;\n\n\t/**\n\t * @type {Program | null} */\n\tlet running_program = null;\n\n\t/**\n\t * @type {PendingProgram | null} */\n\tlet pending_program = null;\n\tlet animation_name = null;\n\n\t/** @type {boolean} */\n\tlet original_inert_value;\n\n\t/**\n\t * @returns {void} */\n\tfunction clear_animation() {\n\t\tif (animation_name) delete_rule(node, animation_name);\n\t}\n\n\t/**\n\t * @param {PendingProgram} program\n\t * @param {number} duration\n\t * @returns {Program}\n\t */\n\tfunction init(program, duration) {\n\t\tconst d = /** @type {Program['d']} */ (program.b - t);\n\t\tduration *= Math.abs(d);\n\t\treturn {\n\t\t\ta: t,\n\t\t\tb: program.b,\n\t\t\td,\n\t\t\tduration,\n\t\t\tstart: program.start,\n\t\t\tend: program.start + duration,\n\t\t\tgroup: program.group\n\t\t};\n\t}\n\n\t/**\n\t * @param {INTRO | OUTRO} b\n\t * @returns {void}\n\t */\n\tfunction go(b) {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = 300,\n\t\t\teasing = linear,\n\t\t\ttick = noop,\n\t\t\tcss\n\t\t} = config || null_transition;\n\n\t\t/**\n\t\t * @type {PendingProgram} */\n\t\tconst program = {\n\t\t\tstart: now() + delay,\n\t\t\tb\n\t\t};\n\n\t\tif (!b) {\n\t\t\t// @ts-ignore todo: improve typings\n\t\t\tprogram.group = outros;\n\t\t\toutros.r += 1;\n\t\t}\n\n\t\tif ('inert' in node) {\n\t\t\tif (b) {\n\t\t\t\tif (original_inert_value !== undefined) {\n\t\t\t\t\t// aborted/reversed outro — restore previous inert value\n\t\t\t\t\tnode.inert = original_inert_value;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toriginal_inert_value = /** @type {HTMLElement} */ (node).inert;\n\t\t\t\tnode.inert = true;\n\t\t\t}\n\t\t}\n\n\t\tif (running_program || pending_program) {\n\t\t\tpending_program = program;\n\t\t} else {\n\t\t\t// if this is an intro, and there's a delay, we need to do\n\t\t\t// an initial tick and/or apply CSS animation immediately\n\t\t\tif (css) {\n\t\t\t\tclear_animation();\n\t\t\t\tanimation_name = create_rule(node, t, b, duration, delay, easing, css);\n\t\t\t}\n\t\t\tif (b) tick(0, 1);\n\t\t\trunning_program = init(program, duration);\n\t\t\tadd_render_callback(() => dispatch(node, b, 'start'));\n\t\t\tloop((now) => {\n\t\t\t\tif (pending_program && now > pending_program.start) {\n\t\t\t\t\trunning_program = init(pending_program, duration);\n\t\t\t\t\tpending_program = null;\n\t\t\t\t\tdispatch(node, running_program.b, 'start');\n\t\t\t\t\tif (css) {\n\t\t\t\t\t\tclear_animation();\n\t\t\t\t\t\tanimation_name = create_rule(\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tt,\n\t\t\t\t\t\t\trunning_program.b,\n\t\t\t\t\t\t\trunning_program.duration,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\teasing,\n\t\t\t\t\t\t\tconfig.css\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (running_program) {\n\t\t\t\t\tif (now >= running_program.end) {\n\t\t\t\t\t\ttick((t = running_program.b), 1 - t);\n\t\t\t\t\t\tdispatch(node, running_program.b, 'end');\n\t\t\t\t\t\tif (!pending_program) {\n\t\t\t\t\t\t\t// we're done\n\t\t\t\t\t\t\tif (running_program.b) {\n\t\t\t\t\t\t\t\t// intro — we can tidy up immediately\n\t\t\t\t\t\t\t\tclear_animation();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// outro — needs to be coordinated\n\t\t\t\t\t\t\t\tif (!--running_program.group.r) run_all(running_program.group.c);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\trunning_program = null;\n\t\t\t\t\t} else if (now >= running_program.start) {\n\t\t\t\t\t\tconst p = now - running_program.start;\n\t\t\t\t\t\tt = running_program.a + running_program.d * easing(p / running_program.duration);\n\t\t\t\t\t\ttick(t, 1 - t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!(running_program || pending_program);\n\t\t\t});\n\t\t}\n\t}\n\treturn {\n\t\trun(b) {\n\t\t\tif (is_function(config)) {\n\t\t\t\twait().then(() => {\n\t\t\t\t\tconst opts = { direction: b ? 'in' : 'out' };\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tconfig = config(opts);\n\t\t\t\t\tgo(b);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tgo(b);\n\t\t\t}\n\t\t},\n\t\tend() {\n\t\t\tclear_animation();\n\t\t\trunning_program = pending_program = null;\n\t\t}\n\t};\n}\n\n/** @typedef {1} INTRO */\n/** @typedef {0} OUTRO */\n/** @typedef {{ direction: 'in' | 'out' | 'both' }} TransitionOptions */\n/** @typedef {(node: Element, params: any, options: TransitionOptions) => import('../transition/public.js').TransitionConfig} TransitionFn */\n\n/**\n * @typedef {Object} Outro\n * @property {number} r\n * @property {Function[]} c\n * @property {Object} p\n */\n\n/**\n * @typedef {Object} PendingProgram\n * @property {number} start\n * @property {INTRO|OUTRO} b\n * @property {Outro} [group]\n */\n\n/**\n * @typedef {Object} Program\n * @property {number} a\n * @property {INTRO|OUTRO} b\n * @property {1|-1} d\n * @property {number} duration\n * @property {number} start\n * @property {number} end\n * @property {Outro} [group]\n */\n","import { transition_in, transition_out } from './transitions.js';\nimport { run_all } from './utils.js';\n\n// general each functions:\n\nexport function ensure_array_like(array_like_or_iterator) {\n\treturn array_like_or_iterator?.length !== undefined\n\t\t? array_like_or_iterator\n\t\t: Array.from(array_like_or_iterator);\n}\n\n// keyed each functions:\n\n/** @returns {void} */\nexport function destroy_block(block, lookup) {\n\tblock.d(1);\n\tlookup.delete(block.key);\n}\n\n/** @returns {void} */\nexport function outro_and_destroy_block(block, lookup) {\n\ttransition_out(block, 1, 1, () => {\n\t\tlookup.delete(block.key);\n\t});\n}\n\n/** @returns {void} */\nexport function fix_and_destroy_block(block, lookup) {\n\tblock.f();\n\tdestroy_block(block, lookup);\n}\n\n/** @returns {void} */\nexport function fix_and_outro_and_destroy_block(block, lookup) {\n\tblock.f();\n\toutro_and_destroy_block(block, lookup);\n}\n\n/** @returns {any[]} */\nexport function update_keyed_each(\n\told_blocks,\n\tdirty,\n\tget_key,\n\tdynamic,\n\tctx,\n\tlist,\n\tlookup,\n\tnode,\n\tdestroy,\n\tcreate_each_block,\n\tnext,\n\tget_context\n) {\n\tlet o = old_blocks.length;\n\tlet n = list.length;\n\tlet i = o;\n\tconst old_indexes = {};\n\twhile (i--) old_indexes[old_blocks[i].key] = i;\n\tconst new_blocks = [];\n\tconst new_lookup = new Map();\n\tconst deltas = new Map();\n\tconst updates = [];\n\ti = n;\n\twhile (i--) {\n\t\tconst child_ctx = get_context(ctx, list, i);\n\t\tconst key = get_key(child_ctx);\n\t\tlet block = lookup.get(key);\n\t\tif (!block) {\n\t\t\tblock = create_each_block(key, child_ctx);\n\t\t\tblock.c();\n\t\t} else if (dynamic) {\n\t\t\t// defer updates until all the DOM shuffling is done\n\t\t\tupdates.push(() => block.p(child_ctx, dirty));\n\t\t}\n\t\tnew_lookup.set(key, (new_blocks[i] = block));\n\t\tif (key in old_indexes) deltas.set(key, Math.abs(i - old_indexes[key]));\n\t}\n\tconst will_move = new Set();\n\tconst did_move = new Set();\n\t/** @returns {void} */\n\tfunction insert(block) {\n\t\ttransition_in(block, 1);\n\t\tblock.m(node, next);\n\t\tlookup.set(block.key, block);\n\t\tnext = block.first;\n\t\tn--;\n\t}\n\twhile (o && n) {\n\t\tconst new_block = new_blocks[n - 1];\n\t\tconst old_block = old_blocks[o - 1];\n\t\tconst new_key = new_block.key;\n\t\tconst old_key = old_block.key;\n\t\tif (new_block === old_block) {\n\t\t\t// do nothing\n\t\t\tnext = new_block.first;\n\t\t\to--;\n\t\t\tn--;\n\t\t} else if (!new_lookup.has(old_key)) {\n\t\t\t// remove old block\n\t\t\tdestroy(old_block, lookup);\n\t\t\to--;\n\t\t} else if (!lookup.has(new_key) || will_move.has(new_key)) {\n\t\t\tinsert(new_block);\n\t\t} else if (did_move.has(old_key)) {\n\t\t\to--;\n\t\t} else if (deltas.get(new_key) > deltas.get(old_key)) {\n\t\t\tdid_move.add(new_key);\n\t\t\tinsert(new_block);\n\t\t} else {\n\t\t\twill_move.add(old_key);\n\t\t\to--;\n\t\t}\n\t}\n\twhile (o--) {\n\t\tconst old_block = old_blocks[o];\n\t\tif (!new_lookup.has(old_block.key)) destroy(old_block, lookup);\n\t}\n\twhile (n) insert(new_blocks[n - 1]);\n\trun_all(updates);\n\treturn new_blocks;\n}\n\n/** @returns {void} */\nexport function validate_each_keys(ctx, list, get_context, get_key) {\n\tconst keys = new Map();\n\tfor (let i = 0; i < list.length; i++) {\n\t\tconst key = get_key(get_context(ctx, list, i));\n\t\tif (keys.has(key)) {\n\t\t\tlet value = '';\n\t\t\ttry {\n\t\t\t\tvalue = `with value '${String(key)}' `;\n\t\t\t} catch (e) {\n\t\t\t\t// can't stringify\n\t\t\t}\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot have duplicate keys in a keyed each: Keys at index ${keys.get(\n\t\t\t\t\tkey\n\t\t\t\t)} and ${i} ${value}are duplicates`\n\t\t\t);\n\t\t}\n\t\tkeys.set(key, i);\n\t}\n}\n","import {\n\tadd_render_callback,\n\tflush,\n\tflush_render_callbacks,\n\tschedule_update,\n\tdirty_components\n} from './scheduler.js';\nimport { current_component, set_current_component } from './lifecycle.js';\nimport { blank_object, is_empty, is_function, run, run_all, noop } from './utils.js';\nimport {\n\tchildren,\n\tdetach,\n\tstart_hydrating,\n\tend_hydrating,\n\tget_custom_elements_slots,\n\tinsert,\n\telement,\n\tattr\n} from './dom.js';\nimport { transition_in } from './transitions.js';\n\n/** @returns {void} */\nexport function bind(component, name, callback) {\n\tconst index = component.$$.props[name];\n\tif (index !== undefined) {\n\t\tcomponent.$$.bound[index] = callback;\n\t\tcallback(component.$$.ctx[index]);\n\t}\n}\n\n/** @returns {void} */\nexport function create_component(block) {\n\tblock && block.c();\n}\n\n/** @returns {void} */\nexport function claim_component(block, parent_nodes) {\n\tblock && block.l(parent_nodes);\n}\n\n/** @returns {void} */\nexport function mount_component(component, target, anchor) {\n\tconst { fragment, after_update } = component.$$;\n\tfragment && fragment.m(target, anchor);\n\t// onMount happens before the initial afterUpdate\n\tadd_render_callback(() => {\n\t\tconst new_on_destroy = component.$$.on_mount.map(run).filter(is_function);\n\t\t// if the component was destroyed immediately\n\t\t// it will update the `$$.on_destroy` reference to `null`.\n\t\t// the destructured on_destroy may still reference to the old array\n\t\tif (component.$$.on_destroy) {\n\t\t\tcomponent.$$.on_destroy.push(...new_on_destroy);\n\t\t} else {\n\t\t\t// Edge case - component was destroyed immediately,\n\t\t\t// most likely as a result of a binding initialising\n\t\t\trun_all(new_on_destroy);\n\t\t}\n\t\tcomponent.$$.on_mount = [];\n\t});\n\tafter_update.forEach(add_render_callback);\n}\n\n/** @returns {void} */\nexport function destroy_component(component, detaching) {\n\tconst $$ = component.$$;\n\tif ($$.fragment !== null) {\n\t\tflush_render_callbacks($$.after_update);\n\t\trun_all($$.on_destroy);\n\t\t$$.fragment && $$.fragment.d(detaching);\n\t\t// TODO null out other refs, including component.$$ (but need to\n\t\t// preserve final state?)\n\t\t$$.on_destroy = $$.fragment = null;\n\t\t$$.ctx = [];\n\t}\n}\n\n/** @returns {void} */\nfunction make_dirty(component, i) {\n\tif (component.$$.dirty[0] === -1) {\n\t\tdirty_components.push(component);\n\t\tschedule_update();\n\t\tcomponent.$$.dirty.fill(0);\n\t}\n\tcomponent.$$.dirty[(i / 31) | 0] |= 1 << i % 31;\n}\n\n// TODO: Document the other params\n/**\n * @param {SvelteComponent} component\n * @param {import('./public.js').ComponentConstructorOptions} options\n *\n * @param {import('./utils.js')['not_equal']} not_equal Used to compare props and state values.\n * @param {(target: Element | ShadowRoot) => void} [append_styles] Function that appends styles to the DOM when the component is first initialised.\n * This will be the `add_css` function from the compiled component.\n *\n * @returns {void}\n */\nexport function init(\n\tcomponent,\n\toptions,\n\tinstance,\n\tcreate_fragment,\n\tnot_equal,\n\tprops,\n\tappend_styles = null,\n\tdirty = [-1]\n) {\n\tconst parent_component = current_component;\n\tset_current_component(component);\n\t/** @type {import('./private.js').T$$} */\n\tconst $$ = (component.$$ = {\n\t\tfragment: null,\n\t\tctx: [],\n\t\t// state\n\t\tprops,\n\t\tupdate: noop,\n\t\tnot_equal,\n\t\tbound: blank_object(),\n\t\t// lifecycle\n\t\ton_mount: [],\n\t\ton_destroy: [],\n\t\ton_disconnect: [],\n\t\tbefore_update: [],\n\t\tafter_update: [],\n\t\tcontext: new Map(options.context || (parent_component ? parent_component.$$.context : [])),\n\t\t// everything else\n\t\tcallbacks: blank_object(),\n\t\tdirty,\n\t\tskip_bound: false,\n\t\troot: options.target || parent_component.$$.root\n\t});\n\tappend_styles && append_styles($$.root);\n\tlet ready = false;\n\t$$.ctx = instance\n\t\t? instance(component, options.props || {}, (i, ret, ...rest) => {\n\t\t\t\tconst value = rest.length ? rest[0] : ret;\n\t\t\t\tif ($$.ctx && not_equal($$.ctx[i], ($$.ctx[i] = value))) {\n\t\t\t\t\tif (!$$.skip_bound && $$.bound[i]) $$.bound[i](value);\n\t\t\t\t\tif (ready) make_dirty(component, i);\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t })\n\t\t: [];\n\t$$.update();\n\tready = true;\n\trun_all($$.before_update);\n\t// `false` as a special case of no DOM component\n\t$$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n\tif (options.target) {\n\t\tif (options.hydrate) {\n\t\t\tstart_hydrating();\n\t\t\t// TODO: what is the correct type here?\n\t\t\t// @ts-expect-error\n\t\t\tconst nodes = children(options.target);\n\t\t\t$$.fragment && $$.fragment.l(nodes);\n\t\t\tnodes.forEach(detach);\n\t\t} else {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t$$.fragment && $$.fragment.c();\n\t\t}\n\t\tif (options.intro) transition_in(component.$$.fragment);\n\t\tmount_component(component, options.target, options.anchor);\n\t\tend_hydrating();\n\t\tflush();\n\t}\n\tset_current_component(parent_component);\n}\n\nexport let SvelteElement;\n\nif (typeof HTMLElement === 'function') {\n\tSvelteElement = class extends HTMLElement {\n\t\t/** The Svelte component constructor */\n\t\t$$ctor;\n\t\t/** Slots */\n\t\t$$s;\n\t\t/** The Svelte component instance */\n\t\t$$c;\n\t\t/** Whether or not the custom element is connected */\n\t\t$$cn = false;\n\t\t/** Component props data */\n\t\t$$d = {};\n\t\t/** `true` if currently in the process of reflecting component props back to attributes */\n\t\t$$r = false;\n\t\t/** @type {Record<string, CustomElementPropDefinition>} Props definition (name, reflected, type etc) */\n\t\t$$p_d = {};\n\t\t/** @type {Record<string, Function[]>} Event listeners */\n\t\t$$l = {};\n\t\t/** @type {Map<Function, Function>} Event listener unsubscribe functions */\n\t\t$$l_u = new Map();\n\n\t\tconstructor($$componentCtor, $$slots, use_shadow_dom) {\n\t\t\tsuper();\n\t\t\tthis.$$ctor = $$componentCtor;\n\t\t\tthis.$$s = $$slots;\n\t\t\tif (use_shadow_dom) {\n\t\t\t\tthis.attachShadow({ mode: 'open' });\n\t\t\t}\n\t\t}\n\n\t\taddEventListener(type, listener, options) {\n\t\t\t// We can't determine upfront if the event is a custom event or not, so we have to\n\t\t\t// listen to both. If someone uses a custom event with the same name as a regular\n\t\t\t// browser event, this fires twice - we can't avoid that.\n\t\t\tthis.$$l[type] = this.$$l[type] || [];\n\t\t\tthis.$$l[type].push(listener);\n\t\t\tif (this.$$c) {\n\t\t\t\tconst unsub = this.$$c.$on(type, listener);\n\t\t\t\tthis.$$l_u.set(listener, unsub);\n\t\t\t}\n\t\t\tsuper.addEventListener(type, listener, options);\n\t\t}\n\n\t\tremoveEventListener(type, listener, options) {\n\t\t\tsuper.removeEventListener(type, listener, options);\n\t\t\tif (this.$$c) {\n\t\t\t\tconst unsub = this.$$l_u.get(listener);\n\t\t\t\tif (unsub) {\n\t\t\t\t\tunsub();\n\t\t\t\t\tthis.$$l_u.delete(listener);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tasync connectedCallback() {\n\t\t\tthis.$$cn = true;\n\t\t\tif (!this.$$c) {\n\t\t\t\t// We wait one tick to let possible child slot elements be created/mounted\n\t\t\t\tawait Promise.resolve();\n\t\t\t\tif (!this.$$cn || this.$$c) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfunction create_slot(name) {\n\t\t\t\t\treturn () => {\n\t\t\t\t\t\tlet node;\n\t\t\t\t\t\tconst obj = {\n\t\t\t\t\t\t\tc: function create() {\n\t\t\t\t\t\t\t\tnode = element('slot');\n\t\t\t\t\t\t\t\tif (name !== 'default') {\n\t\t\t\t\t\t\t\t\tattr(node, 'name', name);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t * @param {HTMLElement} target\n\t\t\t\t\t\t\t * @param {HTMLElement} [anchor]\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tm: function mount(target, anchor) {\n\t\t\t\t\t\t\t\tinsert(target, node, anchor);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\td: function destroy(detaching) {\n\t\t\t\t\t\t\t\tif (detaching) {\n\t\t\t\t\t\t\t\t\tdetach(node);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn obj;\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst $$slots = {};\n\t\t\t\tconst existing_slots = get_custom_elements_slots(this);\n\t\t\t\tfor (const name of this.$$s) {\n\t\t\t\t\tif (name in existing_slots) {\n\t\t\t\t\t\t$$slots[name] = [create_slot(name)];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const attribute of this.attributes) {\n\t\t\t\t\t// this.$$data takes precedence over this.attributes\n\t\t\t\t\tconst name = this.$$g_p(attribute.name);\n\t\t\t\t\tif (!(name in this.$$d)) {\n\t\t\t\t\t\tthis.$$d[name] = get_custom_element_value(name, attribute.value, this.$$p_d, 'toProp');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Port over props that were set programmatically before ce was initialized\n\t\t\t\tfor (const key in this.$$p_d) {\n\t\t\t\t\tif (!(key in this.$$d) && this[key] !== undefined) {\n\t\t\t\t\t\tthis.$$d[key] = this[key]; // don't transform, these were set through JavaScript\n\t\t\t\t\t\tdelete this[key]; // remove the property that shadows the getter/setter\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.$$c = new this.$$ctor({\n\t\t\t\t\ttarget: this.shadowRoot || this,\n\t\t\t\t\tprops: {\n\t\t\t\t\t\t...this.$$d,\n\t\t\t\t\t\t$$slots,\n\t\t\t\t\t\t$$scope: {\n\t\t\t\t\t\t\tctx: []\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Reflect component props as attributes\n\t\t\t\tconst reflect_attributes = () => {\n\t\t\t\t\tthis.$$r = true;\n\t\t\t\t\tfor (const key in this.$$p_d) {\n\t\t\t\t\t\tthis.$$d[key] = this.$$c.$$.ctx[this.$$c.$$.props[key]];\n\t\t\t\t\t\tif (this.$$p_d[key].reflect) {\n\t\t\t\t\t\t\tconst attribute_value = get_custom_element_value(\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tthis.$$d[key],\n\t\t\t\t\t\t\t\tthis.$$p_d,\n\t\t\t\t\t\t\t\t'toAttribute'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (attribute_value == null) {\n\t\t\t\t\t\t\t\tthis.removeAttribute(this.$$p_d[key].attribute || key);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.setAttribute(this.$$p_d[key].attribute || key, attribute_value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.$$r = false;\n\t\t\t\t};\n\t\t\t\tthis.$$c.$$.after_update.push(reflect_attributes);\n\t\t\t\treflect_attributes(); // once initially because after_update is added too late for first render\n\n\t\t\t\tfor (const type in this.$$l) {\n\t\t\t\t\tfor (const listener of this.$$l[type]) {\n\t\t\t\t\t\tconst unsub = this.$$c.$on(type, listener);\n\t\t\t\t\t\tthis.$$l_u.set(listener, unsub);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.$$l = {};\n\t\t\t}\n\t\t}\n\n\t\t// We don't need this when working within Svelte code, but for compatibility of people using this outside of Svelte\n\t\t// and setting attributes through setAttribute etc, this is helpful\n\t\tattributeChangedCallback(attr, _oldValue, newValue) {\n\t\t\tif (this.$$r) return;\n\t\t\tattr = this.$$g_p(attr);\n\t\t\tthis.$$d[attr] = get_custom_element_value(attr, newValue, this.$$p_d, 'toProp');\n\t\t\tthis.$$c?.$set({ [attr]: this.$$d[attr] });\n\t\t}\n\n\t\tdisconnectedCallback() {\n\t\t\tthis.$$cn = false;\n\t\t\t// In a microtask, because this could be a move within the DOM\n\t\t\tPromise.resolve().then(() => {\n\t\t\t\tif (!this.$$cn && this.$$c) {\n\t\t\t\t\tthis.$$c.$destroy();\n\t\t\t\t\tthis.$$c = undefined;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t$$g_p(attribute_name) {\n\t\t\treturn (\n\t\t\t\tObject.keys(this.$$p_d).find(\n\t\t\t\t\t(key) =>\n\t\t\t\t\t\tthis.$$p_d[key].attribute === attribute_name ||\n\t\t\t\t\t\t(!this.$$p_d[key].attribute && key.toLowerCase() === attribute_name)\n\t\t\t\t) || attribute_name\n\t\t\t);\n\t\t}\n\t};\n}\n\n/**\n * @param {string} prop\n * @param {any} value\n * @param {Record<string, CustomElementPropDefinition>} props_definition\n * @param {'toAttribute' | 'toProp'} [transform]\n */\nfunction get_custom_element_value(prop, value, props_definition, transform) {\n\tconst type = props_definition[prop]?.type;\n\tvalue = type === 'Boolean' && typeof value !== 'boolean' ? value != null : value;\n\tif (!transform || !props_definition[prop]) {\n\t\treturn value;\n\t} else if (transform === 'toAttribute') {\n\t\tswitch (type) {\n\t\t\tcase 'Object':\n\t\t\tcase 'Array':\n\t\t\t\treturn value == null ? null : JSON.stringify(value);\n\t\t\tcase 'Boolean':\n\t\t\t\treturn value ? '' : null;\n\t\t\tcase 'Number':\n\t\t\t\treturn value == null ? null : value;\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t} else {\n\t\tswitch (type) {\n\t\t\tcase 'Object':\n\t\t\tcase 'Array':\n\t\t\t\treturn value && JSON.parse(value);\n\t\t\tcase 'Boolean':\n\t\t\t\treturn value; // conversion already handled above\n\t\t\tcase 'Number':\n\t\t\t\treturn value != null ? +value : value;\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t}\n}\n\n/**\n * @internal\n *\n * Turn a Svelte component into a custom element.\n * @param {import('./public.js').ComponentType} Component A Svelte component constructor\n * @param {Record<string, CustomElementPropDefinition>} props_definition The props to observe\n * @param {string[]} slots The slots to create\n * @param {string[]} accessors Other accessors besides the ones for props the component has\n * @param {boolean} use_shadow_dom Whether to use shadow DOM\n * @param {(ce: new () => HTMLElement) => new () => HTMLElement} [extend]\n */\nexport function create_custom_element(\n\tComponent,\n\tprops_definition,\n\tslots,\n\taccessors,\n\tuse_shadow_dom,\n\textend\n) {\n\tlet Class = class extends SvelteElement {\n\t\tconstructor() {\n\t\t\tsuper(Component, slots, use_shadow_dom);\n\t\t\tthis.$$p_d = props_definition;\n\t\t}\n\t\tstatic get observedAttributes() {\n\t\t\treturn Object.keys(props_definition).map((key) =>\n\t\t\t\t(props_definition[key].attribute || key).toLowerCase()\n\t\t\t);\n\t\t}\n\t};\n\tObject.keys(props_definition).forEach((prop) => {\n\t\tObject.defineProperty(Class.prototype, prop, {\n\t\t\tget() {\n\t\t\t\treturn this.$$c && prop in this.$$c ? this.$$c[prop] : this.$$d[prop];\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tvalue = get_custom_element_value(prop, value, props_definition);\n\t\t\t\tthis.$$d[prop] = value;\n\t\t\t\tthis.$$c?.$set({ [prop]: value });\n\t\t\t}\n\t\t});\n\t});\n\taccessors.forEach((accessor) => {\n\t\tObject.defineProperty(Class.prototype, accessor, {\n\t\t\tget() {\n\t\t\t\treturn this.$$c?.[accessor];\n\t\t\t}\n\t\t});\n\t});\n\tif (extend) {\n\t\t// @ts-expect-error - assigning here is fine\n\t\tClass = extend(Class);\n\t}\n\tComponent.element = /** @type {any} */ (Class);\n\treturn Class;\n}\n\n/**\n * Base class for Svelte components. Used when dev=false.\n *\n * @template {Record<string, any>} [Props=any]\n * @template {Record<string, any>} [Events=any]\n */\nexport class SvelteComponent {\n\t/**\n\t * ### PRIVATE API\n\t *\n\t * Do not use, may change at any time\n\t *\n\t * @type {any}\n\t */\n\t$$ = undefined;\n\t/**\n\t * ### PRIVATE API\n\t *\n\t * Do not use, may change at any time\n\t *\n\t * @type {any}\n\t */\n\t$$set = undefined;\n\n\t/** @returns {void} */\n\t$destroy() {\n\t\tdestroy_component(this, 1);\n\t\tthis.$destroy = noop;\n\t}\n\n\t/**\n\t * @template {Extract<keyof Events, string>} K\n\t * @param {K} type\n\t * @param {((e: Events[K]) => void) | null | undefined} callback\n\t * @returns {() => void}\n\t */\n\t$on(type, callback) {\n\t\tif (!is_function(callback)) {\n\t\t\treturn noop;\n\t\t}\n\t\tconst callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);\n\t\tcallbacks.push(callback);\n\t\treturn () => {\n\t\t\tconst index = callbacks.indexOf(callback);\n\t\t\tif (index !== -1) callbacks.splice(index, 1);\n\t\t};\n\t}\n\n\t/**\n\t * @param {Partial<Props>} props\n\t * @returns {void}\n\t */\n\t$set(props) {\n\t\tif (this.$$set && !is_empty(props)) {\n\t\t\tthis.$$.skip_bound = true;\n\t\t\tthis.$$set(props);\n\t\t\tthis.$$.skip_bound = false;\n\t\t}\n\t}\n}\n\n/**\n * @typedef {Object} CustomElementPropDefinition\n * @property {string} [attribute]\n * @property {boolean} [reflect]\n * @property {'String'|'Boolean'|'Number'|'Array'|'Object'} [type]\n */\n","// generated during release, do not modify\n\n/**\n * The current version, as set in package.json.\n *\n * https://svelte.dev/docs/svelte-compiler#svelte-version\n * @type {string}\n */\nexport const VERSION = '4.2.19';\nexport const PUBLIC_VERSION = '4';\n","import { PUBLIC_VERSION } from '../../../shared/version.js';\n\nif (typeof window !== 'undefined')\n\t// @ts-ignore\n\t(window.__svelte || (window.__svelte = { v: new Set() })).v.add(PUBLIC_VERSION);\n","\"use strict\";\nvar ExtensionType = /* @__PURE__ */ ((ExtensionType2) => {\n ExtensionType2[\"Application\"] = \"application\";\n ExtensionType2[\"WebGLPipes\"] = \"webgl-pipes\";\n ExtensionType2[\"WebGLPipesAdaptor\"] = \"webgl-pipes-adaptor\";\n ExtensionType2[\"WebGLSystem\"] = \"webgl-system\";\n ExtensionType2[\"WebGPUPipes\"] = \"webgpu-pipes\";\n ExtensionType2[\"WebGPUPipesAdaptor\"] = \"webgpu-pipes-adaptor\";\n ExtensionType2[\"WebGPUSystem\"] = \"webgpu-system\";\n ExtensionType2[\"CanvasSystem\"] = \"canvas-system\";\n ExtensionType2[\"CanvasPipesAdaptor\"] = \"canvas-pipes-adaptor\";\n ExtensionType2[\"CanvasPipes\"] = \"canvas-pipes\";\n ExtensionType2[\"Asset\"] = \"asset\";\n ExtensionType2[\"LoadParser\"] = \"load-parser\";\n ExtensionType2[\"ResolveParser\"] = \"resolve-parser\";\n ExtensionType2[\"CacheParser\"] = \"cache-parser\";\n ExtensionType2[\"DetectionParser\"] = \"detection-parser\";\n ExtensionType2[\"MaskEffect\"] = \"mask-effect\";\n ExtensionType2[\"BlendMode\"] = \"blend-mode\";\n ExtensionType2[\"TextureSource\"] = \"texture-source\";\n ExtensionType2[\"Environment\"] = \"environment\";\n ExtensionType2[\"ShapeBuilder\"] = \"shape-builder\";\n ExtensionType2[\"Batcher\"] = \"batcher\";\n return ExtensionType2;\n})(ExtensionType || {});\nconst normalizeExtension = (ext) => {\n if (typeof ext === \"function\" || typeof ext === \"object\" && ext.extension) {\n if (!ext.extension) {\n throw new Error(\"Extension class must have an extension object\");\n }\n const metadata = typeof ext.extension !== \"object\" ? { type: ext.extension } : ext.extension;\n ext = { ...metadata, ref: ext };\n }\n if (typeof ext === \"object\") {\n ext = { ...ext };\n } else {\n throw new Error(\"Invalid extension type\");\n }\n if (typeof ext.type === \"string\") {\n ext.type = [ext.type];\n }\n return ext;\n};\nconst normalizeExtensionPriority = (ext, defaultPriority) => normalizeExtension(ext).priority ?? defaultPriority;\nconst extensions = {\n /** @ignore */\n _addHandlers: {},\n /** @ignore */\n _removeHandlers: {},\n /** @ignore */\n _queue: {},\n /**\n * Remove extensions from PixiJS.\n * @param extensions - Extensions to be removed.\n * @returns {extensions} For chaining.\n */\n remove(...extensions2) {\n extensions2.map(normalizeExtension).forEach((ext) => {\n ext.type.forEach((type) => this._removeHandlers[type]?.(ext));\n });\n return this;\n },\n /**\n * Register new extensions with PixiJS.\n * @param extensions - The spread of extensions to add to PixiJS.\n * @returns {extensions} For chaining.\n */\n add(...extensions2) {\n extensions2.map(normalizeExtension).forEach((ext) => {\n ext.type.forEach((type) => {\n const handlers = this._addHandlers;\n const queue = this._queue;\n if (!handlers[type]) {\n queue[type] = queue[type] || [];\n queue[type]?.push(ext);\n } else {\n handlers[type]?.(ext);\n }\n });\n });\n return this;\n },\n /**\n * Internal method to handle extensions by name.\n * @param type - The extension type.\n * @param onAdd - Function handler when extensions are added/registered {@link StrictExtensionFormat}.\n * @param onRemove - Function handler when extensions are removed/unregistered {@link StrictExtensionFormat}.\n * @returns {extensions} For chaining.\n */\n handle(type, onAdd, onRemove) {\n const addHandlers = this._addHandlers;\n const removeHandlers = this._removeHandlers;\n if (addHandlers[type] || removeHandlers[type]) {\n throw new Error(`Extension type ${type} already has a handler`);\n }\n addHandlers[type] = onAdd;\n removeHandlers[type] = onRemove;\n const queue = this._queue;\n if (queue[type]) {\n queue[type]?.forEach((ext) => onAdd(ext));\n delete queue[type];\n }\n return this;\n },\n /**\n * Handle a type, but using a map by `name` property.\n * @param type - Type of extension to handle.\n * @param map - The object map of named extensions.\n * @returns {extensions} For chaining.\n */\n handleByMap(type, map) {\n return this.handle(\n type,\n (extension) => {\n if (extension.name) {\n map[extension.name] = extension.ref;\n }\n },\n (extension) => {\n if (extension.name) {\n delete map[extension.name];\n }\n }\n );\n },\n /**\n * Handle a type, but using a list of extensions with a `name` property.\n * @param type - Type of extension to handle.\n * @param map - The array of named extensions.\n * @param defaultPriority - Fallback priority if none is defined.\n * @returns {extensions} For chaining.\n */\n handleByNamedList(type, map, defaultPriority = -1) {\n return this.handle(\n type,\n (extension) => {\n const index = map.findIndex((item) => item.name === extension.name);\n if (index >= 0)\n return;\n map.push({ name: extension.name, value: extension.ref });\n map.sort((a, b) => normalizeExtensionPriority(b.value, defaultPriority) - normalizeExtensionPriority(a.value, defaultPriority));\n },\n (extension) => {\n const index = map.findIndex((item) => item.name === extension.name);\n if (index !== -1) {\n map.splice(index, 1);\n }\n }\n );\n },\n /**\n * Handle a type, but using a list of extensions.\n * @param type - Type of extension to handle.\n * @param list - The list of extensions.\n * @param defaultPriority - The default priority to use if none is specified.\n * @returns {extensions} For chaining.\n */\n handleByList(type, list, defaultPriority = -1) {\n return this.handle(\n type,\n (extension) => {\n if (list.includes(extension.ref)) {\n return;\n }\n list.push(extension.ref);\n list.sort((a, b) => normalizeExtensionPriority(b, defaultPriority) - normalizeExtensionPriority(a, defaultPriority));\n },\n (extension) => {\n const index = list.indexOf(extension.ref);\n if (index !== -1) {\n list.splice(index, 1);\n }\n }\n );\n },\n /**\n * Mixin the source object into the target object.\n * @param Target - The target object to mix into.\n * @param sources - The source(s) object to mix from\n */\n mixin(Target, ...sources) {\n for (const source of sources) {\n Object.defineProperties(Target.prototype, Object.getOwnPropertyDescriptors(source));\n }\n }\n};\n\nexport { ExtensionType, extensions, normalizeExtensionPriority };\n//# sourceMappingURL=Extensions.mjs.map\n","import { ExtensionType } from '../extensions/Extensions.mjs';\n\n\"use strict\";\nconst browserExt = {\n extension: {\n type: ExtensionType.Environment,\n name: \"browser\",\n priority: -1\n },\n test: () => true,\n load: async () => {\n await import('./browserAll.mjs');\n }\n};\n\nexport { browserExt };\n//# sourceMappingURL=browserExt.mjs.map\n","import { ExtensionType } from '../extensions/Extensions.mjs';\n\n\"use strict\";\nconst webworkerExt = {\n extension: {\n type: ExtensionType.Environment,\n name: \"webworker\",\n priority: 0\n },\n test: () => typeof self !== \"undefined\" && self.WorkerGlobalScope !== void 0,\n load: async () => {\n await import('./webworkerAll.mjs');\n }\n};\n\nexport { webworkerExt };\n//# sourceMappingURL=webworkerExt.mjs.map\n","\"use strict\";\nclass ObservablePoint {\n /**\n * Creates a new `ObservablePoint`\n * @param observer - Observer to pass to listen for change events.\n * @param {number} [x=0] - position of the point on the x axis\n * @param {number} [y=0] - position of the point on the y axis\n */\n constructor(observer, x, y) {\n this._x = x || 0;\n this._y = y || 0;\n this._observer = observer;\n }\n /**\n * Creates a clone of this point.\n * @param observer - Optional observer to pass to the new observable point.\n * @returns a copy of this observable point\n */\n clone(observer) {\n return new ObservablePoint(observer ?? this._observer, this._x, this._y);\n }\n /**\n * Sets the point to a new `x` and `y` position.\n * If `y` is omitted, both `x` and `y` will be set to `x`.\n * @param {number} [x=0] - position of the point on the x axis\n * @param {number} [y=x] - position of the point on the y axis\n * @returns The observable point instance itself\n */\n set(x = 0, y = x) {\n if (this._x !== x || this._y !== y) {\n this._x = x;\n this._y = y;\n this._observer._onUpdate(this);\n }\n return this;\n }\n /**\n * Copies x and y from the given point (`p`)\n * @param p - The point to copy from. Can be any of type that is or extends `PointData`\n * @returns The observable point instance itself\n */\n copyFrom(p) {\n if (this._x !== p.x || this._y !== p.y) {\n this._x = p.x;\n this._y = p.y;\n this._observer._onUpdate(this);\n }\n return this;\n }\n /**\n * Copies this point's x and y into that of the given point (`p`)\n * @param p - The point to copy to. Can be any of type that is or extends `PointData`\n * @returns The point (`p`) with values updated\n */\n copyTo(p) {\n p.set(this._x, this._y);\n return p;\n }\n /**\n * Accepts another point (`p`) and returns `true` if the given point is equal to this point\n * @param p - The point to check\n * @returns Returns `true` if both `x` and `y` are equal\n */\n equals(p) {\n return p.x === this._x && p.y === this._y;\n }\n toString() {\n return `[pixi.js/math:ObservablePoint x=${0} y=${0} scope=${this._observer}]`;\n }\n /** Position of the observable point on the x axis. */\n get x() {\n return this._x;\n }\n set x(value) {\n if (this._x !== value) {\n this._x = value;\n this._observer._onUpdate(this);\n }\n }\n /** Position of the observable point on the y axis. */\n get y() {\n return this._y;\n }\n set y(value) {\n if (this._y !== value) {\n this._y = value;\n this._observer._onUpdate(this);\n }\n }\n}\n\nexport { ObservablePoint };\n//# sourceMappingURL=ObservablePoint.mjs.map\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","\"use strict\";\nconst PI_2 = Math.PI * 2;\nconst RAD_TO_DEG = 180 / Math.PI;\nconst DEG_TO_RAD = Math.PI / 180;\n\nexport { DEG_TO_RAD, PI_2, RAD_TO_DEG };\n//# sourceMappingURL=const.mjs.map\n","\"use strict\";\nclass Point {\n /**\n * Creates a new `Point`\n * @param {number} [x=0] - position of the point on the x axis\n * @param {number} [y=0] - position of the point on the y axis\n */\n constructor(x = 0, y = 0) {\n /** Position of the point on the x axis */\n this.x = 0;\n /** Position of the point on the y axis */\n this.y = 0;\n this.x = x;\n this.y = y;\n }\n /**\n * Creates a clone of this point\n * @returns A clone of this point\n */\n clone() {\n return new Point(this.x, this.y);\n }\n /**\n * Copies `x` and `y` from the given point into this point\n * @param p - The point to copy from\n * @returns The point instance itself\n */\n copyFrom(p) {\n this.set(p.x, p.y);\n return this;\n }\n /**\n * Copies this point's x and y into the given point (`p`).\n * @param p - The point to copy to. Can be any of type that is or extends `PointData`\n * @returns The point (`p`) with values updated\n */\n copyTo(p) {\n p.set(this.x, this.y);\n return p;\n }\n /**\n * Accepts another point (`p`) and returns `true` if the given point is equal to this point\n * @param p - The point to check\n * @returns Returns `true` if both `x` and `y` are equal\n */\n equals(p) {\n return p.x === this.x && p.y === this.y;\n }\n /**\n * Sets the point to a new `x` and `y` position.\n * If `y` is omitted, both `x` and `y` will be set to `x`.\n * @param {number} [x=0] - position of the point on the `x` axis\n * @param {number} [y=x] - position of the point on the `y` axis\n * @returns The point instance itself\n */\n set(x = 0, y = x) {\n this.x = x;\n this.y = y;\n return this;\n }\n toString() {\n return `[pixi.js/math:Point x=${this.x} y=${this.y}]`;\n }\n /**\n * A static Point object with `x` and `y` values of `0`. Can be used to avoid creating new objects multiple times.\n * @readonly\n */\n static get shared() {\n tempPoint.x = 0;\n tempPoint.y = 0;\n return tempPoint;\n }\n}\nconst tempPoint = new Point();\n\nexport { Point };\n//# sourceMappingURL=Point.mjs.map\n","import { PI_2 } from '../misc/const.mjs';\nimport { Point } from '../point/Point.mjs';\n\n\"use strict\";\nclass Matrix {\n /**\n * @param a - x scale\n * @param b - y skew\n * @param c - x skew\n * @param d - y scale\n * @param tx - x translation\n * @param ty - y translation\n */\n constructor(a = 1, b = 0, c = 0, d = 1, tx = 0, ty = 0) {\n /** An array of the current matrix. Only populated when `toArray` is called */\n this.array = null;\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.tx = tx;\n this.ty = ty;\n }\n /**\n * Creates a Matrix object based on the given array. The Element to Matrix mapping order is as follows:\n *\n * a = array[0]\n * b = array[1]\n * c = array[3]\n * d = array[4]\n * tx = array[2]\n * ty = array[5]\n * @param array - The array that the matrix will be populated from.\n */\n fromArray(array) {\n this.a = array[0];\n this.b = array[1];\n this.c = array[3];\n this.d = array[4];\n this.tx = array[2];\n this.ty = array[5];\n }\n /**\n * Sets the matrix properties.\n * @param a - Matrix component\n * @param b - Matrix component\n * @param c - Matrix component\n * @param d - Matrix component\n * @param tx - Matrix component\n * @param ty - Matrix component\n * @returns This matrix. Good for chaining method calls.\n */\n set(a, b, c, d, tx, ty) {\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.tx = tx;\n this.ty = ty;\n return this;\n }\n /**\n * Creates an array from the current Matrix object.\n * @param transpose - Whether we need to transpose the matrix or not\n * @param [out=new Float32Array(9)] - If provided the array will be assigned to out\n * @returns The newly created array which contains the matrix\n */\n toArray(transpose, out) {\n if (!this.array) {\n this.array = new Float32Array(9);\n }\n const array = out || this.array;\n if (transpose) {\n array[0] = this.a;\n array[1] = this.b;\n array[2] = 0;\n array[3] = this.c;\n array[4] = this.d;\n array[5] = 0;\n array[6] = this.tx;\n array[7] = this.ty;\n array[8] = 1;\n } else {\n array[0] = this.a;\n array[1] = this.c;\n array[2] = this.tx;\n array[3] = this.b;\n array[4] = this.d;\n array[5] = this.ty;\n array[6] = 0;\n array[7] = 0;\n array[8] = 1;\n }\n return array;\n }\n /**\n * Get a new position with the current transformation applied.\n * Can be used to go from a child's coordinate space to the world coordinate space. (e.g. rendering)\n * @param pos - The origin\n * @param {Point} [newPos] - The point that the new position is assigned to (allowed to be same as input)\n * @returns {Point} The new point, transformed through this matrix\n */\n apply(pos, newPos) {\n newPos = newPos || new Point();\n const x = pos.x;\n const y = pos.y;\n newPos.x = this.a * x + this.c * y + this.tx;\n newPos.y = this.b * x + this.d * y + this.ty;\n return newPos;\n }\n /**\n * Get a new position with the inverse of the current transformation applied.\n * Can be used to go from the world coordinate space to a child's coordinate space. (e.g. input)\n * @param pos - The origin\n * @param {Point} [newPos] - The point that the new position is assigned to (allowed to be same as input)\n * @returns {Point} The new point, inverse-transformed through this matrix\n */\n applyInverse(pos, newPos) {\n newPos = newPos || new Point();\n const a = this.a;\n const b = this.b;\n const c = this.c;\n const d = this.d;\n const tx = this.tx;\n const ty = this.ty;\n const id = 1 / (a * d + c * -b);\n const x = pos.x;\n const y = pos.y;\n newPos.x = d * id * x + -c * id * y + (ty * c - tx * d) * id;\n newPos.y = a * id * y + -b * id * x + (-ty * a + tx * b) * id;\n return newPos;\n }\n /**\n * Translates the matrix on the x and y.\n * @param x - How much to translate x by\n * @param y - How much to translate y by\n * @returns This matrix. Good for chaining method calls.\n */\n translate(x, y) {\n this.tx += x;\n this.ty += y;\n return this;\n }\n /**\n * Applies a scale transformation to the matrix.\n * @param x - The amount to scale horizontally\n * @param y - The amount to scale vertically\n * @returns This matrix. Good for chaining method calls.\n */\n scale(x, y) {\n this.a *= x;\n this.d *= y;\n this.c *= x;\n this.b *= y;\n this.tx *= x;\n this.ty *= y;\n return this;\n }\n /**\n * Applies a rotation transformation to the matrix.\n * @param angle - The angle in radians.\n * @returns This matrix. Good for chaining method calls.\n */\n rotate(angle) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const a1 = this.a;\n const c1 = this.c;\n const tx1 = this.tx;\n this.a = a1 * cos - this.b * sin;\n this.b = a1 * sin + this.b * cos;\n this.c = c1 * cos - this.d * sin;\n this.d = c1 * sin + this.d * cos;\n this.tx = tx1 * cos - this.ty * sin;\n this.ty = tx1 * sin + this.ty * cos;\n return this;\n }\n /**\n * Appends the given Matrix to this Matrix.\n * @param matrix - The matrix to append.\n * @returns This matrix. Good for chaining method calls.\n */\n append(matrix) {\n const a1 = this.a;\n const b1 = this.b;\n const c1 = this.c;\n const d1 = this.d;\n this.a = matrix.a * a1 + matrix.b * c1;\n this.b = matrix.a * b1 + matrix.b * d1;\n this.c = matrix.c * a1 + matrix.d * c1;\n this.d = matrix.c * b1 + matrix.d * d1;\n this.tx = matrix.tx * a1 + matrix.ty * c1 + this.tx;\n this.ty = matrix.tx * b1 + matrix.ty * d1 + this.ty;\n return this;\n }\n /**\n * Appends two matrix's and sets the result to this matrix. AB = A * B\n * @param a - The matrix to append.\n * @param b - The matrix to append.\n * @returns This matrix. Good for chaining method calls.\n */\n appendFrom(a, b) {\n const a1 = a.a;\n const b1 = a.b;\n const c1 = a.c;\n const d1 = a.d;\n const tx = a.tx;\n const ty = a.ty;\n const a2 = b.a;\n const b2 = b.b;\n const c2 = b.c;\n const d2 = b.d;\n this.a = a1 * a2 + b1 * c2;\n this.b = a1 * b2 + b1 * d2;\n this.c = c1 * a2 + d1 * c2;\n this.d = c1 * b2 + d1 * d2;\n this.tx = tx * a2 + ty * c2 + b.tx;\n this.ty = tx * b2 + ty * d2 + b.ty;\n return this;\n }\n /**\n * Sets the matrix based on all the available properties\n * @param x - Position on the x axis\n * @param y - Position on the y axis\n * @param pivotX - Pivot on the x axis\n * @param pivotY - Pivot on the y axis\n * @param scaleX - Scale on the x axis\n * @param scaleY - Scale on the y axis\n * @param rotation - Rotation in radians\n * @param skewX - Skew on the x axis\n * @param skewY - Skew on the y axis\n * @returns This matrix. Good for chaining method calls.\n */\n setTransform(x, y, pivotX, pivotY, scaleX, scaleY, rotation, skewX, skewY) {\n this.a = Math.cos(rotation + skewY) * scaleX;\n this.b = Math.sin(rotation + skewY) * scaleX;\n this.c = -Math.sin(rotation - skewX) * scaleY;\n this.d = Math.cos(rotation - skewX) * scaleY;\n this.tx = x - (pivotX * this.a + pivotY * this.c);\n this.ty = y - (pivotX * this.b + pivotY * this.d);\n return this;\n }\n /**\n * Prepends the given Matrix to this Matrix.\n * @param matrix - The matrix to prepend\n * @returns This matrix. Good for chaining method calls.\n */\n prepend(matrix) {\n const tx1 = this.tx;\n if (matrix.a !== 1 || matrix.b !== 0 || matrix.c !== 0 || matrix.d !== 1) {\n const a1 = this.a;\n const c1 = this.c;\n this.a = a1 * matrix.a + this.b * matrix.c;\n this.b = a1 * matrix.b + this.b * matrix.d;\n this.c = c1 * matrix.a + this.d * matrix.c;\n this.d = c1 * matrix.b + this.d * matrix.d;\n }\n this.tx = tx1 * matrix.a + this.ty * matrix.c + matrix.tx;\n this.ty = tx1 * matrix.b + this.ty * matrix.d + matrix.ty;\n return this;\n }\n /**\n * Decomposes the matrix (x, y, scaleX, scaleY, and rotation) and sets the properties on to a transform.\n * @param transform - The transform to apply the properties to.\n * @returns The transform with the newly applied properties\n */\n decompose(transform) {\n const a = this.a;\n const b = this.b;\n const c = this.c;\n const d = this.d;\n const pivot = transform.pivot;\n const skewX = -Math.atan2(-c, d);\n const skewY = Math.atan2(b, a);\n const delta = Math.abs(skewX + skewY);\n if (delta < 1e-5 || Math.abs(PI_2 - delta) < 1e-5) {\n transform.rotation = skewY;\n transform.skew.x = transform.skew.y = 0;\n } else {\n transform.rotation = 0;\n transform.skew.x = skewX;\n transform.skew.y = skewY;\n }\n transform.scale.x = Math.sqrt(a * a + b * b);\n transform.scale.y = Math.sqrt(c * c + d * d);\n transform.position.x = this.tx + (pivot.x * a + pivot.y * c);\n transform.position.y = this.ty + (pivot.x * b + pivot.y * d);\n return transform;\n }\n /**\n * Inverts this matrix\n * @returns This matrix. Good for chaining method calls.\n */\n invert() {\n const a1 = this.a;\n const b1 = this.b;\n const c1 = this.c;\n const d1 = this.d;\n const tx1 = this.tx;\n const n = a1 * d1 - b1 * c1;\n this.a = d1 / n;\n this.b = -b1 / n;\n this.c = -c1 / n;\n this.d = a1 / n;\n this.tx = (c1 * this.ty - d1 * tx1) / n;\n this.ty = -(a1 * this.ty - b1 * tx1) / n;\n return this;\n }\n /** Checks if this matrix is an identity matrix */\n isIdentity() {\n return this.a === 1 && this.b === 0 && this.c === 0 && this.d === 1 && this.tx === 0 && this.ty === 0;\n }\n /**\n * Resets this Matrix to an identity (default) matrix.\n * @returns This matrix. Good for chaining method calls.\n */\n identity() {\n this.a = 1;\n this.b = 0;\n this.c = 0;\n this.d = 1;\n this.tx = 0;\n this.ty = 0;\n return this;\n }\n /**\n * Creates a new Matrix object with the same values as this one.\n * @returns A copy of this matrix. Good for chaining method calls.\n */\n clone() {\n const matrix = new Matrix();\n matrix.a = this.a;\n matrix.b = this.b;\n matrix.c = this.c;\n matrix.d = this.d;\n matrix.tx = this.tx;\n matrix.ty = this.ty;\n return matrix;\n }\n /**\n * Changes the values of the given matrix to be the same as the ones in this matrix\n * @param matrix - The matrix to copy to.\n * @returns The matrix given in parameter with its values updated.\n */\n copyTo(matrix) {\n matrix.a = this.a;\n matrix.b = this.b;\n matrix.c = this.c;\n matrix.d = this.d;\n matrix.tx = this.tx;\n matrix.ty = this.ty;\n return matrix;\n }\n /**\n * Changes the values of the matrix to be the same as the ones in given matrix\n * @param matrix - The matrix to copy from.\n * @returns this\n */\n copyFrom(matrix) {\n this.a = matrix.a;\n this.b = matrix.b;\n this.c = matrix.c;\n this.d = matrix.d;\n this.tx = matrix.tx;\n this.ty = matrix.ty;\n return this;\n }\n /**\n * check to see if two matrices are the same\n * @param matrix - The matrix to compare to.\n */\n equals(matrix) {\n return matrix.a === this.a && matrix.b === this.b && matrix.c === this.c && matrix.d === this.d && matrix.tx === this.tx && matrix.ty === this.ty;\n }\n toString() {\n return `[pixi.js:Matrix a=${this.a} b=${this.b} c=${this.c} d=${this.d} tx=${this.tx} ty=${this.ty}]`;\n }\n /**\n * A default (identity) matrix.\n *\n * This is a shared object, if you want to modify it consider creating a new `Matrix`\n * @readonly\n */\n static get IDENTITY() {\n return identityMatrix.identity();\n }\n /**\n * A static Matrix that can be used to avoid creating new objects.\n * Will always ensure the matrix is reset to identity when requested.\n * Use this object for fast but temporary calculations, as it may be mutated later on.\n * This is a different object to the `IDENTITY` object and so can be modified without changing `IDENTITY`.\n * @readonly\n */\n static get shared() {\n return tempMatrix.identity();\n }\n}\nconst tempMatrix = new Matrix();\nconst identityMatrix = new Matrix();\n\nexport { Matrix };\n//# sourceMappingURL=Matrix.mjs.map\n","import { Matrix } from './Matrix.mjs';\n\n\"use strict\";\nconst ux = [1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1, 0, 1];\nconst uy = [0, 1, 1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1];\nconst vx = [0, -1, -1, -1, 0, 1, 1, 1, 0, 1, 1, 1, 0, -1, -1, -1];\nconst vy = [1, 1, 0, -1, -1, -1, 0, 1, -1, -1, 0, 1, 1, 1, 0, -1];\nconst rotationCayley = [];\nconst rotationMatrices = [];\nconst signum = Math.sign;\nfunction init() {\n for (let i = 0; i < 16; i++) {\n const row = [];\n rotationCayley.push(row);\n for (let j = 0; j < 16; j++) {\n const _ux = signum(ux[i] * ux[j] + vx[i] * uy[j]);\n const _uy = signum(uy[i] * ux[j] + vy[i] * uy[j]);\n const _vx = signum(ux[i] * vx[j] + vx[i] * vy[j]);\n const _vy = signum(uy[i] * vx[j] + vy[i] * vy[j]);\n for (let k = 0; k < 16; k++) {\n if (ux[k] === _ux && uy[k] === _uy && vx[k] === _vx && vy[k] === _vy) {\n row.push(k);\n break;\n }\n }\n }\n }\n for (let i = 0; i < 16; i++) {\n const mat = new Matrix();\n mat.set(ux[i], uy[i], vx[i], vy[i], 0, 0);\n rotationMatrices.push(mat);\n }\n}\ninit();\nconst groupD8 = {\n /**\n * | Rotation | Direction |\n * |----------|-----------|\n * | 0° | East |\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n E: 0,\n /**\n * | Rotation | Direction |\n * |----------|-----------|\n * | 45°↻ | Southeast |\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n SE: 1,\n /**\n * | Rotation | Direction |\n * |----------|-----------|\n * | 90°↻ | South |\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n S: 2,\n /**\n * | Rotation | Direction |\n * |----------|-----------|\n * | 135°↻ | Southwest |\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n SW: 3,\n /**\n * | Rotation | Direction |\n * |----------|-----------|\n * | 180° | West |\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n W: 4,\n /**\n * | Rotation | Direction |\n * |-------------|--------------|\n * | -135°/225°↻ | Northwest |\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n NW: 5,\n /**\n * | Rotation | Direction |\n * |-------------|--------------|\n * | -90°/270°↻ | North |\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n N: 6,\n /**\n * | Rotation | Direction |\n * |-------------|--------------|\n * | -45°/315°↻ | Northeast |\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n NE: 7,\n /**\n * Reflection about Y-axis.\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n MIRROR_VERTICAL: 8,\n /**\n * Reflection about the main diagonal.\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n MAIN_DIAGONAL: 10,\n /**\n * Reflection about X-axis.\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n MIRROR_HORIZONTAL: 12,\n /**\n * Reflection about reverse diagonal.\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n REVERSE_DIAGONAL: 14,\n /**\n * @memberof maths.groupD8\n * @param {GD8Symmetry} ind - sprite rotation angle.\n * @returns {GD8Symmetry} The X-component of the U-axis\n * after rotating the axes.\n */\n uX: (ind) => ux[ind],\n /**\n * @memberof maths.groupD8\n * @param {GD8Symmetry} ind - sprite rotation angle.\n * @returns {GD8Symmetry} The Y-component of the U-axis\n * after rotating the axes.\n */\n uY: (ind) => uy[ind],\n /**\n * @memberof maths.groupD8\n * @param {GD8Symmetry} ind - sprite rotation angle.\n * @returns {GD8Symmetry} The X-component of the V-axis\n * after rotating the axes.\n */\n vX: (ind) => vx[ind],\n /**\n * @memberof maths.groupD8\n * @param {GD8Symmetry} ind - sprite rotation angle.\n * @returns {GD8Symmetry} The Y-component of the V-axis\n * after rotating the axes.\n */\n vY: (ind) => vy[ind],\n /**\n * @memberof maths.groupD8\n * @param {GD8Symmetry} rotation - symmetry whose opposite\n * is needed. Only rotations have opposite symmetries while\n * reflections don't.\n * @returns {GD8Symmetry} The opposite symmetry of `rotation`\n */\n inv: (rotation) => {\n if (rotation & 8) {\n return rotation & 15;\n }\n return -rotation & 7;\n },\n /**\n * Composes the two D8 operations.\n *\n * Taking `^` as reflection:\n *\n * | | E=0 | S=2 | W=4 | N=6 | E^=8 | S^=10 | W^=12 | N^=14 |\n * |-------|-----|-----|-----|-----|------|-------|-------|-------|\n * | E=0 | E | S | W | N | E^ | S^ | W^ | N^ |\n * | S=2 | S | W | N | E | S^ | W^ | N^ | E^ |\n * | W=4 | W | N | E | S | W^ | N^ | E^ | S^ |\n * | N=6 | N | E | S | W | N^ | E^ | S^ | W^ |\n * | E^=8 | E^ | N^ | W^ | S^ | E | N | W | S |\n * | S^=10 | S^ | E^ | N^ | W^ | S | E | N | W |\n * | W^=12 | W^ | S^ | E^ | N^ | W | S | E | N |\n * | N^=14 | N^ | W^ | S^ | E^ | N | W | S | E |\n *\n * [This is a Cayley table]{@link https://en.wikipedia.org/wiki/Cayley_table}\n * @memberof maths.groupD8\n * @param {GD8Symmetry} rotationSecond - Second operation, which\n * is the row in the above cayley table.\n * @param {GD8Symmetry} rotationFirst - First operation, which\n * is the column in the above cayley table.\n * @returns {GD8Symmetry} Composed operation\n */\n add: (rotationSecond, rotationFirst) => rotationCayley[rotationSecond][rotationFirst],\n /**\n * Reverse of `add`.\n * @memberof maths.groupD8\n * @param {GD8Symmetry} rotationSecond - Second operation\n * @param {GD8Symmetry} rotationFirst - First operation\n * @returns {GD8Symmetry} Result\n */\n sub: (rotationSecond, rotationFirst) => rotationCayley[rotationSecond][groupD8.inv(rotationFirst)],\n /**\n * Adds 180 degrees to rotation, which is a commutative\n * operation.\n * @memberof maths.groupD8\n * @param {number} rotation - The number to rotate.\n * @returns {number} Rotated number\n */\n rotate180: (rotation) => rotation ^ 4,\n /**\n * Checks if the rotation angle is vertical, i.e. south\n * or north. It doesn't work for reflections.\n * @memberof maths.groupD8\n * @param {GD8Symmetry} rotation - The number to check.\n * @returns {boolean} Whether or not the direction is vertical\n */\n isVertical: (rotation) => (rotation & 3) === 2,\n // rotation % 4 === 2\n /**\n * Approximates the vector `V(dx,dy)` into one of the\n * eight directions provided by `groupD8`.\n * @memberof maths.groupD8\n * @param {number} dx - X-component of the vector\n * @param {number} dy - Y-component of the vector\n * @returns {GD8Symmetry} Approximation of the vector into\n * one of the eight symmetries.\n */\n byDirection: (dx, dy) => {\n if (Math.abs(dx) * 2 <= Math.abs(dy)) {\n if (dy >= 0) {\n return groupD8.S;\n }\n return groupD8.N;\n } else if (Math.abs(dy) * 2 <= Math.abs(dx)) {\n if (dx > 0) {\n return groupD8.E;\n }\n return groupD8.W;\n } else if (dy > 0) {\n if (dx > 0) {\n return groupD8.SE;\n }\n return groupD8.SW;\n } else if (dx > 0) {\n return groupD8.NE;\n }\n return groupD8.NW;\n },\n /**\n * Helps sprite to compensate texture packer rotation.\n * @memberof maths.groupD8\n * @param {Matrix} matrix - sprite world matrix\n * @param {GD8Symmetry} rotation - The rotation factor to use.\n * @param {number} tx - sprite anchoring\n * @param {number} ty - sprite anchoring\n */\n matrixAppendRotationInv: (matrix, rotation, tx = 0, ty = 0) => {\n const mat = rotationMatrices[groupD8.inv(rotation)];\n mat.tx = tx;\n mat.ty = ty;\n matrix.append(mat);\n }\n};\n\nexport { groupD8 };\n//# sourceMappingURL=groupD8.mjs.map\n","import { Point } from '../point/Point.mjs';\n\n\"use strict\";\nconst tempPoints = [new Point(), new Point(), new Point(), new Point()];\nclass Rectangle {\n /**\n * @param x - The X coordinate of the upper-left corner of the rectangle\n * @param y - The Y coordinate of the upper-left corner of the rectangle\n * @param width - The overall width of the rectangle\n * @param height - The overall height of the rectangle\n */\n constructor(x = 0, y = 0, width = 0, height = 0) {\n /**\n * The type of the object, mainly used to avoid `instanceof` checks\n * @default 'rectangle'\n */\n this.type = \"rectangle\";\n this.x = Number(x);\n this.y = Number(y);\n this.width = Number(width);\n this.height = Number(height);\n }\n /** Returns the left edge of the rectangle. */\n get left() {\n return this.x;\n }\n /** Returns the right edge of the rectangle. */\n get right() {\n return this.x + this.width;\n }\n /** Returns the top edge of the rectangle. */\n get top() {\n return this.y;\n }\n /** Returns the bottom edge of the rectangle. */\n get bottom() {\n return this.y + this.height;\n }\n /** Determines whether the Rectangle is empty. */\n isEmpty() {\n return this.left === this.right || this.top === this.bottom;\n }\n /** A constant empty rectangle. This is a new object every time the property is accessed */\n static get EMPTY() {\n return new Rectangle(0, 0, 0, 0);\n }\n /**\n * Creates a clone of this Rectangle\n * @returns a copy of the rectangle\n */\n clone() {\n return new Rectangle(this.x, this.y, this.width, this.height);\n }\n /**\n * Converts a Bounds object to a Rectangle object.\n * @param bounds - The bounds to copy and convert to a rectangle.\n * @returns Returns itself.\n */\n copyFromBounds(bounds) {\n this.x = bounds.minX;\n this.y = bounds.minY;\n this.width = bounds.maxX - bounds.minX;\n this.height = bounds.maxY - bounds.minY;\n return this;\n }\n /**\n * Copies another rectangle to this one.\n * @param rectangle - The rectangle to copy from.\n * @returns Returns itself.\n */\n copyFrom(rectangle) {\n this.x = rectangle.x;\n this.y = rectangle.y;\n this.width = rectangle.width;\n this.height = rectangle.height;\n return this;\n }\n /**\n * Copies this rectangle to another one.\n * @param rectangle - The rectangle to copy to.\n * @returns Returns given parameter.\n */\n copyTo(rectangle) {\n rectangle.copyFrom(this);\n return rectangle;\n }\n /**\n * Checks whether the x and y coordinates given are contained within this Rectangle\n * @param x - The X coordinate of the point to test\n * @param y - The Y coordinate of the point to test\n * @returns Whether the x/y coordinates are within this Rectangle\n */\n contains(x, y) {\n if (this.width <= 0 || this.height <= 0) {\n return false;\n }\n if (x >= this.x && x < this.x + this.width) {\n if (y >= this.y && y < this.y + this.height) {\n return true;\n }\n }\n return false;\n }\n /**\n * Checks whether the x and y coordinates given are contained within this rectangle including the stroke.\n * @param x - The X coordinate of the point to test\n * @param y - The Y coordinate of the point to test\n * @param strokeWidth - The width of the line to check\n * @param alignment - The alignment of the stroke, 0.5 by default\n * @returns Whether the x/y coordinates are within this rectangle\n */\n strokeContains(x, y, strokeWidth, alignment = 0.5) {\n const { width, height } = this;\n if (width <= 0 || height <= 0)\n return false;\n const _x = this.x;\n const _y = this.y;\n const strokeWidthOuter = strokeWidth * (1 - alignment);\n const strokeWidthInner = strokeWidth - strokeWidthOuter;\n const outerLeft = _x - strokeWidthOuter;\n const outerRight = _x + width + strokeWidthOuter;\n const outerTop = _y - strokeWidthOuter;\n const outerBottom = _y + height + strokeWidthOuter;\n const innerLeft = _x + strokeWidthInner;\n const innerRight = _x + width - strokeWidthInner;\n const innerTop = _y + strokeWidthInner;\n const innerBottom = _y + height - strokeWidthInner;\n return x >= outerLeft && x <= outerRight && y >= outerTop && y <= outerBottom && !(x > innerLeft && x < innerRight && y > innerTop && y < innerBottom);\n }\n /**\n * Determines whether the `other` Rectangle transformed by `transform` intersects with `this` Rectangle object.\n * Returns true only if the area of the intersection is >0, this means that Rectangles\n * sharing a side are not overlapping. Another side effect is that an arealess rectangle\n * (width or height equal to zero) can't intersect any other rectangle.\n * @param {Rectangle} other - The Rectangle to intersect with `this`.\n * @param {Matrix} transform - The transformation matrix of `other`.\n * @returns {boolean} A value of `true` if the transformed `other` Rectangle intersects with `this`; otherwise `false`.\n */\n intersects(other, transform) {\n if (!transform) {\n const x02 = this.x < other.x ? other.x : this.x;\n const x12 = this.right > other.right ? other.right : this.right;\n if (x12 <= x02) {\n return false;\n }\n const y02 = this.y < other.y ? other.y : this.y;\n const y12 = this.bottom > other.bottom ? other.bottom : this.bottom;\n return y12 > y02;\n }\n const x0 = this.left;\n const x1 = this.right;\n const y0 = this.top;\n const y1 = this.bottom;\n if (x1 <= x0 || y1 <= y0) {\n return false;\n }\n const lt = tempPoints[0].set(other.left, other.top);\n const lb = tempPoints[1].set(other.left, other.bottom);\n const rt = tempPoints[2].set(other.right, other.top);\n const rb = tempPoints[3].set(other.right, other.bottom);\n if (rt.x <= lt.x || lb.y <= lt.y) {\n return false;\n }\n const s = Math.sign(transform.a * transform.d - transform.b * transform.c);\n if (s === 0) {\n return false;\n }\n transform.apply(lt, lt);\n transform.apply(lb, lb);\n transform.apply(rt, rt);\n transform.apply(rb, rb);\n if (Math.max(lt.x, lb.x, rt.x, rb.x) <= x0 || Math.min(lt.x, lb.x, rt.x, rb.x) >= x1 || Math.max(lt.y, lb.y, rt.y, rb.y) <= y0 || Math.min(lt.y, lb.y, rt.y, rb.y) >= y1) {\n return false;\n }\n const nx = s * (lb.y - lt.y);\n const ny = s * (lt.x - lb.x);\n const n00 = nx * x0 + ny * y0;\n const n10 = nx * x1 + ny * y0;\n const n01 = nx * x0 + ny * y1;\n const n11 = nx * x1 + ny * y1;\n if (Math.max(n00, n10, n01, n11) <= nx * lt.x + ny * lt.y || Math.min(n00, n10, n01, n11) >= nx * rb.x + ny * rb.y) {\n return false;\n }\n const mx = s * (lt.y - rt.y);\n const my = s * (rt.x - lt.x);\n const m00 = mx * x0 + my * y0;\n const m10 = mx * x1 + my * y0;\n const m01 = mx * x0 + my * y1;\n const m11 = mx * x1 + my * y1;\n if (Math.max(m00, m10, m01, m11) <= mx * lt.x + my * lt.y || Math.min(m00, m10, m01, m11) >= mx * rb.x + my * rb.y) {\n return false;\n }\n return true;\n }\n /**\n * Pads the rectangle making it grow in all directions.\n * If paddingY is omitted, both paddingX and paddingY will be set to paddingX.\n * @param paddingX - The horizontal padding amount.\n * @param paddingY - The vertical padding amount.\n * @returns Returns itself.\n */\n pad(paddingX = 0, paddingY = paddingX) {\n this.x -= paddingX;\n this.y -= paddingY;\n this.width += paddingX * 2;\n this.height += paddingY * 2;\n return this;\n }\n /**\n * Fits this rectangle around the passed one.\n * @param rectangle - The rectangle to fit.\n * @returns Returns itself.\n */\n fit(rectangle) {\n const x1 = Math.max(this.x, rectangle.x);\n const x2 = Math.min(this.x + this.width, rectangle.x + rectangle.width);\n const y1 = Math.max(this.y, rectangle.y);\n const y2 = Math.min(this.y + this.height, rectangle.y + rectangle.height);\n this.x = x1;\n this.width = Math.max(x2 - x1, 0);\n this.y = y1;\n this.height = Math.max(y2 - y1, 0);\n return this;\n }\n /**\n * Enlarges rectangle that way its corners lie on grid\n * @param resolution - resolution\n * @param eps - precision\n * @returns Returns itself.\n */\n ceil(resolution = 1, eps = 1e-3) {\n const x2 = Math.ceil((this.x + this.width - eps) * resolution) / resolution;\n const y2 = Math.ceil((this.y + this.height - eps) * resolution) / resolution;\n this.x = Math.floor((this.x + eps) * resolution) / resolution;\n this.y = Math.floor((this.y + eps) * resolution) / resolution;\n this.width = x2 - this.x;\n this.height = y2 - this.y;\n return this;\n }\n /**\n * Enlarges this rectangle to include the passed rectangle.\n * @param rectangle - The rectangle to include.\n * @returns Returns itself.\n */\n enlarge(rectangle) {\n const x1 = Math.min(this.x, rectangle.x);\n const x2 = Math.max(this.x + this.width, rectangle.x + rectangle.width);\n const y1 = Math.min(this.y, rectangle.y);\n const y2 = Math.max(this.y + this.height, rectangle.y + rectangle.height);\n this.x = x1;\n this.width = x2 - x1;\n this.y = y1;\n this.height = y2 - y1;\n return this;\n }\n /**\n * Returns the framing rectangle of the rectangle as a Rectangle object\n * @param out - optional rectangle to store the result\n * @returns The framing rectangle\n */\n getBounds(out) {\n out || (out = new Rectangle());\n out.copyFrom(this);\n return out;\n }\n /**\n * Checks if this rectangle fully contains another rectangle.\n *\n * A rectangle contains another rectangle if all four corners of the other rectangle\n * lie within the bounds of this rectangle.\n *\n * ```ts\n * const container = new Rectangle(0, 0, 100, 100);\n * const inside = new Rectangle(25, 25, 50, 50);\n * const partial = new Rectangle(75, 75, 50, 50);\n *\n * container.containsRect(inside); // Returns true\n * container.containsRect(partial); // Returns false - partial overlap\n * ```\n *\n * Note: If either rectangle has a width or height of 0, this method returns false\n * since a zero-area rectangle cannot meaningfully contain another rectangle.\n * @param other - The rectangle to check if it is contained within this one\n * @returns True if the other rectangle is fully contained within this one\n */\n containsRect(other) {\n if (this.width <= 0 || this.height <= 0)\n return false;\n const x1 = other.x;\n const y1 = other.y;\n const x2 = other.x + other.width;\n const y2 = other.y + other.height;\n return x1 >= this.x && x1 < this.x + this.width && y1 >= this.y && y1 < this.y + this.height && x2 >= this.x && x2 < this.x + this.width && y2 >= this.y && y2 < this.y + this.height;\n }\n toString() {\n return `[pixi.js/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`;\n }\n}\n\nexport { Rectangle };\n//# sourceMappingURL=Rectangle.mjs.map\n","\"use strict\";\nconst uidCache = {\n default: -1\n};\nfunction uid(name = \"default\") {\n if (uidCache[name] === void 0) {\n uidCache[name] = -1;\n }\n return ++uidCache[name];\n}\nfunction resetUids() {\n for (const key in uidCache) {\n delete uidCache[key];\n }\n}\n\nexport { resetUids, uid };\n//# sourceMappingURL=uid.mjs.map\n","\"use strict\";\nconst warnings = {};\nconst v8_0_0 = \"8.0.0\";\nconst v8_3_4 = \"8.3.4\";\nfunction deprecation(version, message, ignoreDepth = 3) {\n if (warnings[message]) {\n return;\n }\n let stack = new Error().stack;\n if (typeof stack === \"undefined\") {\n console.warn(\"PixiJS Deprecation Warning: \", `${message}\nDeprecated since v${version}`);\n } else {\n stack = stack.split(\"\\n\").splice(ignoreDepth).join(\"\\n\");\n if (console.groupCollapsed) {\n console.groupCollapsed(\n \"%cPixiJS Deprecation Warning: %c%s\",\n \"color:#614108;background:#fffbe6\",\n \"font-weight:normal;color:#614108;background:#fffbe6\",\n `${message}\nDeprecated since v${version}`\n );\n console.warn(stack);\n console.groupEnd();\n } else {\n console.warn(\"PixiJS Deprecation Warning: \", `${message}\nDeprecated since v${version}`);\n console.warn(stack);\n }\n }\n warnings[message] = true;\n}\n\nexport { deprecation, v8_0_0, v8_3_4 };\n//# sourceMappingURL=deprecation.mjs.map\n","\"use strict\";\nconst NOOP = () => {\n};\n\nexport { NOOP };\n//# sourceMappingURL=NOOP.mjs.map\n","\"use strict\";\nfunction nextPow2(v) {\n v += v === 0 ? 1 : 0;\n --v;\n v |= v >>> 1;\n v |= v >>> 2;\n v |= v >>> 4;\n v |= v >>> 8;\n v |= v >>> 16;\n return v + 1;\n}\nfunction isPow2(v) {\n return !(v & v - 1) && !!v;\n}\nfunction log2(v) {\n let r = (v > 65535 ? 1 : 0) << 4;\n v >>>= r;\n let shift = (v > 255 ? 1 : 0) << 3;\n v >>>= shift;\n r |= shift;\n shift = (v > 15 ? 1 : 0) << 2;\n v >>>= shift;\n r |= shift;\n shift = (v > 3 ? 1 : 0) << 1;\n v >>>= shift;\n r |= shift;\n return r | v >> 1;\n}\n\nexport { isPow2, log2, nextPow2 };\n//# sourceMappingURL=pow2.mjs.map\n","\"use strict\";\nfunction definedProps(obj) {\n const result = {};\n for (const key in obj) {\n if (obj[key] !== void 0) {\n result[key] = obj[key];\n }\n }\n return result;\n}\n\nexport { definedProps };\n//# sourceMappingURL=definedProps.mjs.map\n","import EventEmitter from 'eventemitter3';\nimport { uid } from '../../../../utils/data/uid.mjs';\nimport { deprecation, v8_0_0 } from '../../../../utils/logging/deprecation.mjs';\n\n\"use strict\";\nconst idHash = /* @__PURE__ */ Object.create(null);\nfunction createResourceIdFromString(value) {\n const id = idHash[value];\n if (id === void 0) {\n idHash[value] = uid(\"resource\");\n }\n return id;\n}\nconst _TextureStyle = class _TextureStyle extends EventEmitter {\n /**\n * @param options - options for the style\n */\n constructor(options = {}) {\n super();\n this._resourceType = \"textureSampler\";\n this._touched = 0;\n /**\n * Specifies the maximum anisotropy value clamp used by the sampler.\n * Note: Most implementations support {@link GPUSamplerDescriptor#maxAnisotropy} values in range\n * between 1 and 16, inclusive. The used value of {@link GPUSamplerDescriptor#maxAnisotropy} will\n * be clamped to the maximum value that the platform supports.\n * @internal\n * @ignore\n */\n this._maxAnisotropy = 1;\n /**\n * Has the style been destroyed?\n * @readonly\n */\n this.destroyed = false;\n options = { ..._TextureStyle.defaultOptions, ...options };\n this.addressMode = options.addressMode;\n this.addressModeU = options.addressModeU ?? this.addressModeU;\n this.addressModeV = options.addressModeV ?? this.addressModeV;\n this.addressModeW = options.addressModeW ?? this.addressModeW;\n this.scaleMode = options.scaleMode;\n this.magFilter = options.magFilter ?? this.magFilter;\n this.minFilter = options.minFilter ?? this.minFilter;\n this.mipmapFilter = options.mipmapFilter ?? this.mipmapFilter;\n this.lodMinClamp = options.lodMinClamp;\n this.lodMaxClamp = options.lodMaxClamp;\n this.compare = options.compare;\n this.maxAnisotropy = options.maxAnisotropy ?? 1;\n }\n set addressMode(value) {\n this.addressModeU = value;\n this.addressModeV = value;\n this.addressModeW = value;\n }\n /** setting this will set wrapModeU,wrapModeV and wrapModeW all at once! */\n get addressMode() {\n return this.addressModeU;\n }\n set wrapMode(value) {\n deprecation(v8_0_0, \"TextureStyle.wrapMode is now TextureStyle.addressMode\");\n this.addressMode = value;\n }\n get wrapMode() {\n return this.addressMode;\n }\n set scaleMode(value) {\n this.magFilter = value;\n this.minFilter = value;\n this.mipmapFilter = value;\n }\n /** setting this will set magFilter,minFilter and mipmapFilter all at once! */\n get scaleMode() {\n return this.magFilter;\n }\n /** Specifies the maximum anisotropy value clamp used by the sampler. */\n set maxAnisotropy(value) {\n this._maxAnisotropy = Math.min(value, 16);\n if (this._maxAnisotropy > 1) {\n this.scaleMode = \"linear\";\n }\n }\n get maxAnisotropy() {\n return this._maxAnisotropy;\n }\n // TODO - move this to WebGL?\n get _resourceId() {\n return this._sharedResourceId || this._generateResourceId();\n }\n update() {\n this.emit(\"change\", this);\n this._sharedResourceId = null;\n }\n _generateResourceId() {\n const bigKey = `${this.addressModeU}-${this.addressModeV}-${this.addressModeW}-${this.magFilter}-${this.minFilter}-${this.mipmapFilter}-${this.lodMinClamp}-${this.lodMaxClamp}-${this.compare}-${this._maxAnisotropy}`;\n this._sharedResourceId = createResourceIdFromString(bigKey);\n return this._resourceId;\n }\n /** Destroys the style */\n destroy() {\n this.destroyed = true;\n this.emit(\"destroy\", this);\n this.emit(\"change\", this);\n this.removeAllListeners();\n }\n};\n/** default options for the style */\n_TextureStyle.defaultOptions = {\n addressMode: \"clamp-to-edge\",\n scaleMode: \"linear\"\n};\nlet TextureStyle = _TextureStyle;\n\nexport { TextureStyle };\n//# sourceMappingURL=TextureStyle.mjs.map\n","import EventEmitter from 'eventemitter3';\nimport { isPow2 } from '../../../../../maths/misc/pow2.mjs';\nimport { definedProps } from '../../../../../scene/container/utils/definedProps.mjs';\nimport { uid } from '../../../../../utils/data/uid.mjs';\nimport { TextureStyle } from '../TextureStyle.mjs';\n\n\"use strict\";\nconst _TextureSource = class _TextureSource extends EventEmitter {\n /**\n * @param options - options for creating a new TextureSource\n */\n constructor(options = {}) {\n super();\n this.options = options;\n /** unique id for this Texture source */\n this.uid = uid(\"textureSource\");\n /**\n * The resource type used by this TextureSource. This is used by the bind groups to determine\n * how to handle this resource.\n * @ignore\n * @internal\n */\n this._resourceType = \"textureSource\";\n /**\n * i unique resource id, used by the bind group systems.\n * This can change if the texture is resized or its resource changes\n */\n this._resourceId = uid(\"resource\");\n /**\n * this is how the backends know how to upload this texture to the GPU\n * It changes depending on the resource type. Classes that extend TextureSource\n * should override this property.\n * @ignore\n * @internal\n */\n this.uploadMethodId = \"unknown\";\n // dimensions\n this._resolution = 1;\n /** the pixel width of this texture source. This is the REAL pure number, not accounting resolution */\n this.pixelWidth = 1;\n /** the pixel height of this texture source. This is the REAL pure number, not accounting resolution */\n this.pixelHeight = 1;\n /**\n * the width of this texture source, accounting for resolution\n * eg pixelWidth 200, resolution 2, then width will be 100\n */\n this.width = 1;\n /**\n * the height of this texture source, accounting for resolution\n * eg pixelHeight 200, resolution 2, then height will be 100\n */\n this.height = 1;\n /**\n * The number of samples of a multisample texture. This is always 1 for non-multisample textures.\n * To enable multisample for a texture, set antialias to true\n * @internal\n * @ignore\n */\n this.sampleCount = 1;\n /** The number of mip levels to generate for this texture. this is overridden if autoGenerateMipmaps is true */\n this.mipLevelCount = 1;\n /**\n * Should we auto generate mipmaps for this texture? This will automatically generate mipmaps\n * for this texture when uploading to the GPU. Mipmapped textures take up more memory, but\n * can look better when scaled down.\n *\n * For performance reasons, it is recommended to NOT use this with RenderTextures, as they are often updated every frame.\n * If you do, make sure to call `updateMipmaps` after you update the texture.\n */\n this.autoGenerateMipmaps = false;\n /** the format that the texture data has */\n this.format = \"rgba8unorm\";\n /** how many dimensions does this texture have? currently v8 only supports 2d */\n this.dimension = \"2d\";\n /**\n * Only really affects RenderTextures.\n * Should we use antialiasing for this texture. It will look better, but may impact performance as a\n * Blit operation will be required to resolve the texture.\n */\n this.antialias = false;\n /**\n * Used by automatic texture Garbage Collection, stores last GC tick when it was bound\n * @protected\n */\n this._touched = 0;\n /**\n * Used by the batcher to build texture batches. faster to have the variable here!\n * @protected\n */\n this._batchTick = -1;\n /**\n * A temporary batch location for the texture batching. Here for performance reasons only!\n * @protected\n */\n this._textureBindLocation = -1;\n options = { ..._TextureSource.defaultOptions, ...options };\n this.label = options.label ?? \"\";\n this.resource = options.resource;\n this.autoGarbageCollect = options.autoGarbageCollect;\n this._resolution = options.resolution;\n if (options.width) {\n this.pixelWidth = options.width * this._resolution;\n } else {\n this.pixelWidth = this.resource ? this.resourceWidth ?? 1 : 1;\n }\n if (options.height) {\n this.pixelHeight = options.height * this._resolution;\n } else {\n this.pixelHeight = this.resource ? this.resourceHeight ?? 1 : 1;\n }\n this.width = this.pixelWidth / this._resolution;\n this.height = this.pixelHeight / this._resolution;\n this.format = options.format;\n this.dimension = options.dimensions;\n this.mipLevelCount = options.mipLevelCount;\n this.autoGenerateMipmaps = options.autoGenerateMipmaps;\n this.sampleCount = options.sampleCount;\n this.antialias = options.antialias;\n this.alphaMode = options.alphaMode;\n this.style = new TextureStyle(definedProps(options));\n this.destroyed = false;\n this._refreshPOT();\n }\n /** returns itself */\n get source() {\n return this;\n }\n /** the style of the texture */\n get style() {\n return this._style;\n }\n set style(value) {\n if (this.style === value)\n return;\n this._style?.off(\"change\", this._onStyleChange, this);\n this._style = value;\n this._style?.on(\"change\", this._onStyleChange, this);\n this._onStyleChange();\n }\n /** setting this will set wrapModeU,wrapModeV and wrapModeW all at once! */\n get addressMode() {\n return this._style.addressMode;\n }\n set addressMode(value) {\n this._style.addressMode = value;\n }\n /** setting this will set wrapModeU,wrapModeV and wrapModeW all at once! */\n get repeatMode() {\n return this._style.addressMode;\n }\n set repeatMode(value) {\n this._style.addressMode = value;\n }\n /** Specifies the sampling behavior when the sample footprint is smaller than or equal to one texel. */\n get magFilter() {\n return this._style.magFilter;\n }\n set magFilter(value) {\n this._style.magFilter = value;\n }\n /** Specifies the sampling behavior when the sample footprint is larger than one texel. */\n get minFilter() {\n return this._style.minFilter;\n }\n set minFilter(value) {\n this._style.minFilter = value;\n }\n /** Specifies behavior for sampling between mipmap levels. */\n get mipmapFilter() {\n return this._style.mipmapFilter;\n }\n set mipmapFilter(value) {\n this._style.mipmapFilter = value;\n }\n /** Specifies the minimum and maximum levels of detail, respectively, used internally when sampling a texture. */\n get lodMinClamp() {\n return this._style.lodMinClamp;\n }\n set lodMinClamp(value) {\n this._style.lodMinClamp = value;\n }\n /** Specifies the minimum and maximum levels of detail, respectively, used internally when sampling a texture. */\n get lodMaxClamp() {\n return this._style.lodMaxClamp;\n }\n set lodMaxClamp(value) {\n this._style.lodMaxClamp = value;\n }\n _onStyleChange() {\n this.emit(\"styleChange\", this);\n }\n /** call this if you have modified the texture outside of the constructor */\n update() {\n if (this.resource) {\n const resolution = this._resolution;\n const didResize = this.resize(this.resourceWidth / resolution, this.resourceHeight / resolution);\n if (didResize)\n return;\n }\n this.emit(\"update\", this);\n }\n /** Destroys this texture source */\n destroy() {\n this.destroyed = true;\n this.emit(\"destroy\", this);\n this.emit(\"change\", this);\n if (this._style) {\n this._style.destroy();\n this._style = null;\n }\n this.uploadMethodId = null;\n this.resource = null;\n this.removeAllListeners();\n }\n /**\n * This will unload the Texture source from the GPU. This will free up the GPU memory\n * As soon as it is required fore rendering, it will be re-uploaded.\n */\n unload() {\n this._resourceId = uid(\"resource\");\n this.emit(\"change\", this);\n this.emit(\"unload\", this);\n }\n /** the width of the resource. This is the REAL pure number, not accounting resolution */\n get resourceWidth() {\n const { resource } = this;\n return resource.naturalWidth || resource.videoWidth || resource.displayWidth || resource.width;\n }\n /** the height of the resource. This is the REAL pure number, not accounting resolution */\n get resourceHeight() {\n const { resource } = this;\n return resource.naturalHeight || resource.videoHeight || resource.displayHeight || resource.height;\n }\n /**\n * the resolution of the texture. Changing this number, will not change the number of pixels in the actual texture\n * but will the size of the texture when rendered.\n *\n * changing the resolution of this texture to 2 for example will make it appear twice as small when rendered (as pixel\n * density will have increased)\n */\n get resolution() {\n return this._resolution;\n }\n set resolution(resolution) {\n if (this._resolution === resolution)\n return;\n this._resolution = resolution;\n this.width = this.pixelWidth / resolution;\n this.height = this.pixelHeight / resolution;\n }\n /**\n * Resize the texture, this is handy if you want to use the texture as a render texture\n * @param width - the new width of the texture\n * @param height - the new height of the texture\n * @param resolution - the new resolution of the texture\n * @returns - if the texture was resized\n */\n resize(width, height, resolution) {\n resolution || (resolution = this._resolution);\n width || (width = this.width);\n height || (height = this.height);\n const newPixelWidth = Math.round(width * resolution);\n const newPixelHeight = Math.round(height * resolution);\n this.width = newPixelWidth / resolution;\n this.height = newPixelHeight / resolution;\n this._resolution = resolution;\n if (this.pixelWidth === newPixelWidth && this.pixelHeight === newPixelHeight) {\n return false;\n }\n this._refreshPOT();\n this.pixelWidth = newPixelWidth;\n this.pixelHeight = newPixelHeight;\n this.emit(\"resize\", this);\n this._resourceId = uid(\"resource\");\n this.emit(\"change\", this);\n return true;\n }\n /**\n * Lets the renderer know that this texture has been updated and its mipmaps should be re-generated.\n * This is only important for RenderTexture instances, as standard Texture instances will have their\n * mipmaps generated on upload. You should call this method after you make any change to the texture\n *\n * The reason for this is is can be quite expensive to update mipmaps for a texture. So by default,\n * We want you, the developer to specify when this action should happen.\n *\n * Generally you don't want to have mipmaps generated on Render targets that are changed every frame,\n */\n updateMipmaps() {\n if (this.autoGenerateMipmaps && this.mipLevelCount > 1) {\n this.emit(\"updateMipmaps\", this);\n }\n }\n set wrapMode(value) {\n this._style.wrapMode = value;\n }\n get wrapMode() {\n return this._style.wrapMode;\n }\n set scaleMode(value) {\n this._style.scaleMode = value;\n }\n /** setting this will set magFilter,minFilter and mipmapFilter all at once! */\n get scaleMode() {\n return this._style.scaleMode;\n }\n /**\n * Refresh check for isPowerOfTwo texture based on size\n * @private\n */\n _refreshPOT() {\n this.isPowerOfTwo = isPow2(this.pixelWidth) && isPow2(this.pixelHeight);\n }\n static test(_resource) {\n throw new Error(\"Unimplemented\");\n }\n};\n/** The default options used when creating a new TextureSource. override these to add your own defaults */\n_TextureSource.defaultOptions = {\n resolution: 1,\n format: \"bgra8unorm\",\n alphaMode: \"premultiply-alpha-on-upload\",\n dimensions: \"2d\",\n mipLevelCount: 1,\n autoGenerateMipmaps: false,\n sampleCount: 1,\n antialias: false,\n autoGarbageCollect: false\n};\nlet TextureSource = _TextureSource;\n\nexport { TextureSource };\n//# sourceMappingURL=TextureSource.mjs.map\n","import { ExtensionType } from '../../../../../extensions/Extensions.mjs';\nimport { TextureSource } from './TextureSource.mjs';\n\n\"use strict\";\nclass BufferImageSource extends TextureSource {\n constructor(options) {\n const buffer = options.resource || new Float32Array(options.width * options.height * 4);\n let format = options.format;\n if (!format) {\n if (buffer instanceof Float32Array) {\n format = \"rgba32float\";\n } else if (buffer instanceof Int32Array) {\n format = \"rgba32uint\";\n } else if (buffer instanceof Uint32Array) {\n format = \"rgba32uint\";\n } else if (buffer instanceof Int16Array) {\n format = \"rgba16uint\";\n } else if (buffer instanceof Uint16Array) {\n format = \"rgba16uint\";\n } else if (buffer instanceof Int8Array) {\n format = \"bgra8unorm\";\n } else {\n format = \"bgra8unorm\";\n }\n }\n super({\n ...options,\n resource: buffer,\n format\n });\n this.uploadMethodId = \"buffer\";\n }\n static test(resource) {\n return resource instanceof Int8Array || resource instanceof Uint8Array || resource instanceof Uint8ClampedArray || resource instanceof Int16Array || resource instanceof Uint16Array || resource instanceof Int32Array || resource instanceof Uint32Array || resource instanceof Float32Array;\n }\n}\nBufferImageSource.extension = ExtensionType.TextureSource;\n\nexport { BufferImageSource };\n//# sourceMappingURL=BufferImageSource.mjs.map\n","import { Matrix } from '../../../../maths/matrix/Matrix.mjs';\n\n\"use strict\";\nconst tempMat = new Matrix();\nclass TextureMatrix {\n /**\n * @param texture - observed texture\n * @param clampMargin - Changes frame clamping, 0.5 by default. Use -0.5 for extra border.\n */\n constructor(texture, clampMargin) {\n this.mapCoord = new Matrix();\n this.uClampFrame = new Float32Array(4);\n this.uClampOffset = new Float32Array(2);\n this._textureID = -1;\n this._updateID = 0;\n this.clampOffset = 0;\n if (typeof clampMargin === \"undefined\") {\n this.clampMargin = texture.width < 10 ? 0 : 0.5;\n } else {\n this.clampMargin = clampMargin;\n }\n this.isSimple = false;\n this.texture = texture;\n }\n /** Texture property. */\n get texture() {\n return this._texture;\n }\n set texture(value) {\n if (this.texture === value)\n return;\n this._texture?.removeListener(\"update\", this.update, this);\n this._texture = value;\n this._texture.addListener(\"update\", this.update, this);\n this.update();\n }\n /**\n * Multiplies uvs array to transform\n * @param uvs - mesh uvs\n * @param [out=uvs] - output\n * @returns - output\n */\n multiplyUvs(uvs, out) {\n if (out === void 0) {\n out = uvs;\n }\n const mat = this.mapCoord;\n for (let i = 0; i < uvs.length; i += 2) {\n const x = uvs[i];\n const y = uvs[i + 1];\n out[i] = x * mat.a + y * mat.c + mat.tx;\n out[i + 1] = x * mat.b + y * mat.d + mat.ty;\n }\n return out;\n }\n /**\n * Updates matrices if texture was changed\n * @returns - whether or not it was updated\n */\n update() {\n const tex = this._texture;\n this._updateID++;\n const uvs = tex.uvs;\n this.mapCoord.set(uvs.x1 - uvs.x0, uvs.y1 - uvs.y0, uvs.x3 - uvs.x0, uvs.y3 - uvs.y0, uvs.x0, uvs.y0);\n const orig = tex.orig;\n const trim = tex.trim;\n if (trim) {\n tempMat.set(\n orig.width / trim.width,\n 0,\n 0,\n orig.height / trim.height,\n -trim.x / trim.width,\n -trim.y / trim.height\n );\n this.mapCoord.append(tempMat);\n }\n const texBase = tex.source;\n const frame = this.uClampFrame;\n const margin = this.clampMargin / texBase._resolution;\n const offset = this.clampOffset / texBase._resolution;\n frame[0] = (tex.frame.x + margin + offset) / texBase.width;\n frame[1] = (tex.frame.y + margin + offset) / texBase.height;\n frame[2] = (tex.frame.x + tex.frame.width - margin + offset) / texBase.width;\n frame[3] = (tex.frame.y + tex.frame.height - margin + offset) / texBase.height;\n this.uClampOffset[0] = this.clampOffset / texBase.pixelWidth;\n this.uClampOffset[1] = this.clampOffset / texBase.pixelHeight;\n this.isSimple = tex.frame.width === texBase.width && tex.frame.height === texBase.height && tex.rotate === 0;\n return true;\n }\n}\n\nexport { TextureMatrix };\n//# sourceMappingURL=TextureMatrix.mjs.map\n","import EventEmitter from 'eventemitter3';\nimport { groupD8 } from '../../../../maths/matrix/groupD8.mjs';\nimport { Rectangle } from '../../../../maths/shapes/Rectangle.mjs';\nimport { uid } from '../../../../utils/data/uid.mjs';\nimport { deprecation, v8_0_0 } from '../../../../utils/logging/deprecation.mjs';\nimport { NOOP } from '../../../../utils/misc/NOOP.mjs';\nimport { BufferImageSource } from './sources/BufferImageSource.mjs';\nimport { TextureSource } from './sources/TextureSource.mjs';\nimport { TextureMatrix } from './TextureMatrix.mjs';\n\n\"use strict\";\nclass Texture extends EventEmitter {\n /**\n * @param {rendering.TextureOptions} options - Options for the texture\n */\n constructor({\n source,\n label,\n frame,\n orig,\n trim,\n defaultAnchor,\n defaultBorders,\n rotate,\n dynamic\n } = {}) {\n super();\n /** unique id for this texture */\n this.uid = uid(\"texture\");\n /** A uvs object based on the given frame and the texture source */\n this.uvs = { x0: 0, y0: 0, x1: 0, y1: 0, x2: 0, y2: 0, x3: 0, y3: 0 };\n /**\n * This is the area of the BaseTexture image to actually copy to the Canvas / WebGL when rendering,\n * irrespective of the actual frame size or placement (which can be influenced by trimmed texture atlases)\n */\n this.frame = new Rectangle();\n /**\n * Does this Texture have any frame data assigned to it?\n *\n * This mode is enabled automatically if no frame was passed inside constructor.\n *\n * In this mode texture is subscribed to baseTexture events, and fires `update` on any change.\n *\n * Beware, after loading or resize of baseTexture event can fired two times!\n * If you want more control, subscribe on baseTexture itself.\n * @example\n * texture.on('update', () => {});\n */\n this.noFrame = false;\n /**\n * Set to true if you plan on modifying the uvs of this texture.\n * When this is the case, sprites and other objects using the texture will\n * make sure to listen for changes to the uvs and update their vertices accordingly.\n */\n this.dynamic = false;\n /** is it a texture? yes! used for type checking */\n this.isTexture = true;\n this.label = label;\n this.source = source?.source ?? new TextureSource();\n this.noFrame = !frame;\n if (frame) {\n this.frame.copyFrom(frame);\n } else {\n const { width, height } = this._source;\n this.frame.width = width;\n this.frame.height = height;\n }\n this.orig = orig || this.frame;\n this.trim = trim;\n this.rotate = rotate ?? 0;\n this.defaultAnchor = defaultAnchor;\n this.defaultBorders = defaultBorders;\n this.destroyed = false;\n this.dynamic = dynamic || false;\n this.updateUvs();\n }\n set source(value) {\n if (this._source) {\n this._source.off(\"resize\", this.update, this);\n }\n this._source = value;\n value.on(\"resize\", this.update, this);\n this.emit(\"update\", this);\n }\n /** the underlying source of the texture (equivalent of baseTexture in v7) */\n get source() {\n return this._source;\n }\n /** returns a TextureMatrix instance for this texture. By default, that object is not created because its heavy. */\n get textureMatrix() {\n if (!this._textureMatrix) {\n this._textureMatrix = new TextureMatrix(this);\n }\n return this._textureMatrix;\n }\n /** The width of the Texture in pixels. */\n get width() {\n return this.orig.width;\n }\n /** The height of the Texture in pixels. */\n get height() {\n return this.orig.height;\n }\n /** Call this function when you have modified the frame of this texture. */\n updateUvs() {\n const { uvs, frame } = this;\n const { width, height } = this._source;\n const nX = frame.x / width;\n const nY = frame.y / height;\n const nW = frame.width / width;\n const nH = frame.height / height;\n let rotate = this.rotate;\n if (rotate) {\n const w2 = nW / 2;\n const h2 = nH / 2;\n const cX = nX + w2;\n const cY = nY + h2;\n rotate = groupD8.add(rotate, groupD8.NW);\n uvs.x0 = cX + w2 * groupD8.uX(rotate);\n uvs.y0 = cY + h2 * groupD8.uY(rotate);\n rotate = groupD8.add(rotate, 2);\n uvs.x1 = cX + w2 * groupD8.uX(rotate);\n uvs.y1 = cY + h2 * groupD8.uY(rotate);\n rotate = groupD8.add(rotate, 2);\n uvs.x2 = cX + w2 * groupD8.uX(rotate);\n uvs.y2 = cY + h2 * groupD8.uY(rotate);\n rotate = groupD8.add(rotate, 2);\n uvs.x3 = cX + w2 * groupD8.uX(rotate);\n uvs.y3 = cY + h2 * groupD8.uY(rotate);\n } else {\n uvs.x0 = nX;\n uvs.y0 = nY;\n uvs.x1 = nX + nW;\n uvs.y1 = nY;\n uvs.x2 = nX + nW;\n uvs.y2 = nY + nH;\n uvs.x3 = nX;\n uvs.y3 = nY + nH;\n }\n }\n /**\n * Destroys this texture\n * @param destroySource - Destroy the source when the texture is destroyed.\n */\n destroy(destroySource = false) {\n if (this._source) {\n if (destroySource) {\n this._source.destroy();\n this._source = null;\n }\n }\n this._textureMatrix = null;\n this.destroyed = true;\n this.emit(\"destroy\", this);\n this.removeAllListeners();\n }\n /**\n * Call this if you have modified the `texture outside` of the constructor.\n *\n * If you have modified this texture's source, you must separately call `texture.source.update()` to see those changes.\n */\n update() {\n if (this.noFrame) {\n this.frame.width = this._source.width;\n this.frame.height = this._source.height;\n }\n this.updateUvs();\n this.emit(\"update\", this);\n }\n /** @deprecated since 8.0.0 */\n get baseTexture() {\n deprecation(v8_0_0, \"Texture.baseTexture is now Texture.source\");\n return this._source;\n }\n}\nTexture.EMPTY = new Texture({\n label: \"EMPTY\",\n source: new TextureSource({\n label: \"EMPTY\"\n })\n});\nTexture.EMPTY.destroy = NOOP;\nTexture.WHITE = new Texture({\n source: new BufferImageSource({\n resource: new Uint8Array([255, 255, 255, 255]),\n width: 1,\n height: 1,\n alphaMode: \"premultiply-alpha-on-upload\",\n label: \"WHITE\"\n }),\n label: \"WHITE\"\n});\nTexture.WHITE.destroy = NOOP;\n\nexport { Texture };\n//# sourceMappingURL=Texture.mjs.map\n","\"use strict\";\nfunction updateQuadBounds(bounds, anchor, texture) {\n const { width, height } = texture.orig;\n const trim = texture.trim;\n if (trim) {\n const sourceWidth = trim.width;\n const sourceHeight = trim.height;\n bounds.minX = trim.x - anchor._x * width;\n bounds.maxX = bounds.minX + sourceWidth;\n bounds.minY = trim.y - anchor._y * height;\n bounds.maxY = bounds.minY + sourceHeight;\n } else {\n bounds.minX = -anchor._x * width;\n bounds.maxX = bounds.minX + width;\n bounds.minY = -anchor._y * height;\n bounds.maxY = bounds.minY + height;\n }\n}\n\nexport { updateQuadBounds };\n//# sourceMappingURL=updateQuadBounds.mjs.map\n","import { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { Rectangle } from '../../../maths/shapes/Rectangle.mjs';\n\n\"use strict\";\nconst defaultMatrix = new Matrix();\nclass Bounds {\n constructor(minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity) {\n /** @default Infinity */\n this.minX = Infinity;\n /** @default Infinity */\n this.minY = Infinity;\n /** @default -Infinity */\n this.maxX = -Infinity;\n /** @default -Infinity */\n this.maxY = -Infinity;\n this.matrix = defaultMatrix;\n this.minX = minX;\n this.minY = minY;\n this.maxX = maxX;\n this.maxY = maxY;\n }\n /**\n * Checks if bounds are empty.\n * @returns - True if empty.\n */\n isEmpty() {\n return this.minX > this.maxX || this.minY > this.maxY;\n }\n /** The bounding rectangle of the bounds. */\n get rectangle() {\n if (!this._rectangle) {\n this._rectangle = new Rectangle();\n }\n const rectangle = this._rectangle;\n if (this.minX > this.maxX || this.minY > this.maxY) {\n rectangle.x = 0;\n rectangle.y = 0;\n rectangle.width = 0;\n rectangle.height = 0;\n } else {\n rectangle.copyFromBounds(this);\n }\n return rectangle;\n }\n /** Clears the bounds and resets. */\n clear() {\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = -Infinity;\n this.maxY = -Infinity;\n this.matrix = defaultMatrix;\n return this;\n }\n /**\n * Sets the bounds.\n * @param x0 - left X of frame\n * @param y0 - top Y of frame\n * @param x1 - right X of frame\n * @param y1 - bottom Y of frame\n */\n set(x0, y0, x1, y1) {\n this.minX = x0;\n this.minY = y0;\n this.maxX = x1;\n this.maxY = y1;\n }\n /**\n * Adds sprite frame\n * @param x0 - left X of frame\n * @param y0 - top Y of frame\n * @param x1 - right X of frame\n * @param y1 - bottom Y of frame\n * @param matrix\n */\n addFrame(x0, y0, x1, y1, matrix) {\n matrix || (matrix = this.matrix);\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 let minX = this.minX;\n let minY = this.minY;\n let maxX = this.maxX;\n let maxY = this.maxY;\n let x = a * x0 + c * y0 + tx;\n let y = b * x0 + d * y0 + ty;\n if (x < minX)\n minX = x;\n if (y < minY)\n minY = y;\n if (x > maxX)\n maxX = x;\n if (y > maxY)\n maxY = y;\n x = a * x1 + c * y0 + tx;\n y = b * x1 + d * y0 + ty;\n if (x < minX)\n minX = x;\n if (y < minY)\n minY = y;\n if (x > maxX)\n maxX = x;\n if (y > maxY)\n maxY = y;\n x = a * x0 + c * y1 + tx;\n y = b * x0 + d * y1 + ty;\n if (x < minX)\n minX = x;\n if (y < minY)\n minY = y;\n if (x > maxX)\n maxX = x;\n if (y > maxY)\n maxY = y;\n x = a * x1 + c * y1 + tx;\n y = b * x1 + d * y1 + ty;\n if (x < minX)\n minX = x;\n if (y < minY)\n minY = y;\n if (x > maxX)\n maxX = x;\n if (y > maxY)\n maxY = y;\n this.minX = minX;\n this.minY = minY;\n this.maxX = maxX;\n this.maxY = maxY;\n }\n /**\n * Adds a rectangle to the bounds.\n * @param rect - The rectangle to be added.\n * @param matrix - The matrix to apply to the bounds.\n */\n addRect(rect, matrix) {\n this.addFrame(rect.x, rect.y, rect.x + rect.width, rect.y + rect.height, matrix);\n }\n /**\n * Adds other {@link Bounds}.\n * @param bounds - The Bounds to be added\n * @param matrix\n */\n addBounds(bounds, matrix) {\n this.addFrame(bounds.minX, bounds.minY, bounds.maxX, bounds.maxY, matrix);\n }\n /**\n * Adds other Bounds, masked with Bounds.\n * @param mask - The Bounds to be added.\n */\n addBoundsMask(mask) {\n this.minX = this.minX > mask.minX ? this.minX : mask.minX;\n this.minY = this.minY > mask.minY ? this.minY : mask.minY;\n this.maxX = this.maxX < mask.maxX ? this.maxX : mask.maxX;\n this.maxY = this.maxY < mask.maxY ? this.maxY : mask.maxY;\n }\n /**\n * Adds other Bounds, multiplied with matrix.\n * @param matrix - The matrix to apply to the bounds.\n */\n applyMatrix(matrix) {\n const minX = this.minX;\n const minY = this.minY;\n const maxX = this.maxX;\n const maxY = this.maxY;\n const { a, b, c, d, tx, ty } = matrix;\n let x = a * minX + c * minY + tx;\n let y = b * minX + d * minY + ty;\n this.minX = x;\n this.minY = y;\n this.maxX = x;\n this.maxY = y;\n x = a * maxX + c * minY + tx;\n y = b * maxX + d * minY + ty;\n this.minX = x < this.minX ? x : this.minX;\n this.minY = y < this.minY ? y : this.minY;\n this.maxX = x > this.maxX ? x : this.maxX;\n this.maxY = y > this.maxY ? y : this.maxY;\n x = a * minX + c * maxY + tx;\n y = b * minX + d * maxY + ty;\n this.minX = x < this.minX ? x : this.minX;\n this.minY = y < this.minY ? y : this.minY;\n this.maxX = x > this.maxX ? x : this.maxX;\n this.maxY = y > this.maxY ? y : this.maxY;\n x = a * maxX + c * maxY + tx;\n y = b * maxX + d * maxY + ty;\n this.minX = x < this.minX ? x : this.minX;\n this.minY = y < this.minY ? y : this.minY;\n this.maxX = x > this.maxX ? x : this.maxX;\n this.maxY = y > this.maxY ? y : this.maxY;\n }\n /**\n * Resizes the bounds object to include the given rectangle.\n * @param rect - The rectangle to be included.\n */\n fit(rect) {\n if (this.minX < rect.left)\n this.minX = rect.left;\n if (this.maxX > rect.right)\n this.maxX = rect.right;\n if (this.minY < rect.top)\n this.minY = rect.top;\n if (this.maxY > rect.bottom)\n this.maxY = rect.bottom;\n return this;\n }\n /**\n * Resizes the bounds object to include the given bounds.\n * @param left - The left value of the bounds.\n * @param right - The right value of the bounds.\n * @param top - The top value of the bounds.\n * @param bottom - The bottom value of the bounds.\n */\n fitBounds(left, right, top, bottom) {\n if (this.minX < left)\n this.minX = left;\n if (this.maxX > right)\n this.maxX = right;\n if (this.minY < top)\n this.minY = top;\n if (this.maxY > bottom)\n this.maxY = bottom;\n return this;\n }\n /**\n * Pads bounds object, making it grow in all directions.\n * If paddingY is omitted, both paddingX and paddingY will be set to paddingX.\n * @param paddingX - The horizontal padding amount.\n * @param paddingY - The vertical padding amount.\n */\n pad(paddingX, paddingY = paddingX) {\n this.minX -= paddingX;\n this.maxX += paddingX;\n this.minY -= paddingY;\n this.maxY += paddingY;\n return this;\n }\n /** Ceils the bounds. */\n ceil() {\n this.minX = Math.floor(this.minX);\n this.minY = Math.floor(this.minY);\n this.maxX = Math.ceil(this.maxX);\n this.maxY = Math.ceil(this.maxY);\n return this;\n }\n /** Clones the bounds. */\n clone() {\n return new Bounds(this.minX, this.minY, this.maxX, this.maxY);\n }\n /**\n * Scales the bounds by the given values\n * @param x - The X value to scale by.\n * @param y - The Y value to scale by.\n */\n scale(x, y = x) {\n this.minX *= x;\n this.minY *= y;\n this.maxX *= x;\n this.maxY *= y;\n return this;\n }\n /** the x value of the bounds. */\n get x() {\n return this.minX;\n }\n set x(value) {\n const width = this.maxX - this.minX;\n this.minX = value;\n this.maxX = value + width;\n }\n /** the y value of the bounds. */\n get y() {\n return this.minY;\n }\n set y(value) {\n const height = this.maxY - this.minY;\n this.minY = value;\n this.maxY = value + height;\n }\n /** the width value of the bounds. */\n get width() {\n return this.maxX - this.minX;\n }\n set width(value) {\n this.maxX = this.minX + value;\n }\n /** the height value of the bounds. */\n get height() {\n return this.maxY - this.minY;\n }\n set height(value) {\n this.maxY = this.minY + value;\n }\n /** the left value of the bounds. */\n get left() {\n return this.minX;\n }\n /** the right value of the bounds. */\n get right() {\n return this.maxX;\n }\n /** the top value of the bounds. */\n get top() {\n return this.minY;\n }\n /** the bottom value of the bounds. */\n get bottom() {\n return this.maxY;\n }\n /** Is the bounds positive. */\n get isPositive() {\n return this.maxX - this.minX > 0 && this.maxY - this.minY > 0;\n }\n get isValid() {\n return this.minX + this.minY !== Infinity;\n }\n /**\n * Adds screen vertices from array\n * @param vertexData - calculated vertices\n * @param beginOffset - begin offset\n * @param endOffset - end offset, excluded\n * @param matrix\n */\n addVertexData(vertexData, beginOffset, endOffset, matrix) {\n let minX = this.minX;\n let minY = this.minY;\n let maxX = this.maxX;\n let maxY = this.maxY;\n matrix || (matrix = this.matrix);\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 for (let i = beginOffset; i < endOffset; i += 2) {\n const localX = vertexData[i];\n const localY = vertexData[i + 1];\n const x = a * localX + c * localY + tx;\n const y = b * localX + d * localY + ty;\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n }\n this.minX = minX;\n this.minY = minY;\n this.maxX = maxX;\n this.maxY = maxY;\n }\n /**\n * Checks if the point is contained within the bounds.\n * @param x - x coordinate\n * @param y - y coordinate\n */\n containsPoint(x, y) {\n if (this.minX <= x && this.minY <= y && this.maxX >= x && this.maxY >= y) {\n return true;\n }\n return false;\n }\n toString() {\n return `[pixi.js:Bounds minX=${this.minX} minY=${this.minY} maxX=${this.maxX} maxY=${this.maxY} width=${this.width} height=${this.height}]`;\n }\n /**\n * Copies the bounds from another bounds object.\n * @param bounds - The bounds to copy from.\n * @returns - This bounds object.\n */\n copyFrom(bounds) {\n this.minX = bounds.minX;\n this.minY = bounds.minY;\n this.maxX = bounds.maxX;\n this.maxY = bounds.maxY;\n return this;\n }\n}\n\nexport { Bounds };\n//# sourceMappingURL=Bounds.mjs.map\n","var r={grad:.9,turn:360,rad:360/(2*Math.PI)},t=function(r){return\"string\"==typeof r?r.length>0:\"number\"==typeof r},n=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*r)/n+0},e=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),r>n?n:r>t?r:t},u=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},a=function(r){return{r:e(r.r,0,255),g:e(r.g,0,255),b:e(r.b,0,255),a:e(r.a)}},o=function(r){return{r:n(r.r),g:n(r.g),b:n(r.b),a:n(r.a,3)}},i=/^#([0-9a-f]{3,8})$/i,s=function(r){var t=r.toString(16);return t.length<2?\"0\"+t:t},h=function(r){var t=r.r,n=r.g,e=r.b,u=r.a,a=Math.max(t,n,e),o=a-Math.min(t,n,e),i=o?a===t?(n-e)/o:a===n?2+(e-t)/o:4+(t-n)/o:0;return{h:60*(i<0?i+6:i),s:a?o/a*100:0,v:a/255*100,a:u}},b=function(r){var t=r.h,n=r.s,e=r.v,u=r.a;t=t/360*6,n/=100,e/=100;var a=Math.floor(t),o=e*(1-n),i=e*(1-(t-a)*n),s=e*(1-(1-t+a)*n),h=a%6;return{r:255*[e,i,o,o,s,e][h],g:255*[s,e,e,i,o,o][h],b:255*[o,o,s,e,e,i][h],a:u}},g=function(r){return{h:u(r.h),s:e(r.s,0,100),l:e(r.l,0,100),a:e(r.a)}},d=function(r){return{h:n(r.h),s:n(r.s),l:n(r.l),a:n(r.a,3)}},f=function(r){return b((n=(t=r).s,{h:t.h,s:(n*=((e=t.l)<50?e:100-e)/100)>0?2*n/(e+n)*100:0,v:e+n,a:t.a}));var t,n,e},c=function(r){return{h:(t=h(r)).h,s:(u=(200-(n=t.s))*(e=t.v)/100)>0&&u<200?n*e/100/(u<=100?u:200-u)*100:0,l:u/2,a:t.a};var t,n,e,u},l=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,p=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s+([+-]?\\d*\\.?\\d+)%\\s+([+-]?\\d*\\.?\\d+)%\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,v=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,m=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,y={string:[[function(r){var t=i.exec(r);return t?(r=t[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:4===r.length?n(parseInt(r[3]+r[3],16)/255,2):1}:6===r.length||8===r.length?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:8===r.length?n(parseInt(r.substr(6,2),16)/255,2):1}:null:null},\"hex\"],[function(r){var t=v.exec(r)||m.exec(r);return t?t[2]!==t[4]||t[4]!==t[6]?null:a({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},\"rgb\"],[function(t){var n=l.exec(t)||p.exec(t);if(!n)return null;var e,u,a=g({h:(e=n[1],u=n[2],void 0===u&&(u=\"deg\"),Number(e)*(r[u]||1)),s:Number(n[3]),l:Number(n[4]),a:void 0===n[5]?1:Number(n[5])/(n[6]?100:1)});return f(a)},\"hsl\"]],object:[[function(r){var n=r.r,e=r.g,u=r.b,o=r.a,i=void 0===o?1:o;return t(n)&&t(e)&&t(u)?a({r:Number(n),g:Number(e),b:Number(u),a:Number(i)}):null},\"rgb\"],[function(r){var n=r.h,e=r.s,u=r.l,a=r.a,o=void 0===a?1:a;if(!t(n)||!t(e)||!t(u))return null;var i=g({h:Number(n),s:Number(e),l:Number(u),a:Number(o)});return f(i)},\"hsl\"],[function(r){var n=r.h,a=r.s,o=r.v,i=r.a,s=void 0===i?1:i;if(!t(n)||!t(a)||!t(o))return null;var h=function(r){return{h:u(r.h),s:e(r.s,0,100),v:e(r.v,0,100),a:e(r.a)}}({h:Number(n),s:Number(a),v:Number(o),a:Number(s)});return b(h)},\"hsv\"]]},N=function(r,t){for(var n=0;n<t.length;n++){var e=t[n][0](r);if(e)return[e,t[n][1]]}return[null,void 0]},x=function(r){return\"string\"==typeof r?N(r.trim(),y.string):\"object\"==typeof r&&null!==r?N(r,y.object):[null,void 0]},I=function(r){return x(r)[1]},M=function(r,t){var n=c(r);return{h:n.h,s:e(n.s+100*t,0,100),l:n.l,a:n.a}},H=function(r){return(299*r.r+587*r.g+114*r.b)/1e3/255},$=function(r,t){var n=c(r);return{h:n.h,s:n.s,l:e(n.l+100*t,0,100),a:n.a}},j=function(){function r(r){this.parsed=x(r)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return r.prototype.isValid=function(){return null!==this.parsed},r.prototype.brightness=function(){return n(H(this.rgba),2)},r.prototype.isDark=function(){return H(this.rgba)<.5},r.prototype.isLight=function(){return H(this.rgba)>=.5},r.prototype.toHex=function(){return r=o(this.rgba),t=r.r,e=r.g,u=r.b,i=(a=r.a)<1?s(n(255*a)):\"\",\"#\"+s(t)+s(e)+s(u)+i;var r,t,e,u,a,i},r.prototype.toRgb=function(){return o(this.rgba)},r.prototype.toRgbString=function(){return r=o(this.rgba),t=r.r,n=r.g,e=r.b,(u=r.a)<1?\"rgba(\"+t+\", \"+n+\", \"+e+\", \"+u+\")\":\"rgb(\"+t+\", \"+n+\", \"+e+\")\";var r,t,n,e,u},r.prototype.toHsl=function(){return d(c(this.rgba))},r.prototype.toHslString=function(){return r=d(c(this.rgba)),t=r.h,n=r.s,e=r.l,(u=r.a)<1?\"hsla(\"+t+\", \"+n+\"%, \"+e+\"%, \"+u+\")\":\"hsl(\"+t+\", \"+n+\"%, \"+e+\"%)\";var r,t,n,e,u},r.prototype.toHsv=function(){return r=h(this.rgba),{h:n(r.h),s:n(r.s),v:n(r.v),a:n(r.a,3)};var r},r.prototype.invert=function(){return w({r:255-(r=this.rgba).r,g:255-r.g,b:255-r.b,a:r.a});var r},r.prototype.saturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,r))},r.prototype.desaturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,-r))},r.prototype.grayscale=function(){return w(M(this.rgba,-1))},r.prototype.lighten=function(r){return void 0===r&&(r=.1),w($(this.rgba,r))},r.prototype.darken=function(r){return void 0===r&&(r=.1),w($(this.rgba,-r))},r.prototype.rotate=function(r){return void 0===r&&(r=15),this.hue(this.hue()+r)},r.prototype.alpha=function(r){return\"number\"==typeof r?w({r:(t=this.rgba).r,g:t.g,b:t.b,a:r}):n(this.rgba.a,3);var t},r.prototype.hue=function(r){var t=c(this.rgba);return\"number\"==typeof r?w({h:r,s:t.s,l:t.l,a:t.a}):n(t.h)},r.prototype.isEqual=function(r){return this.toHex()===w(r).toHex()},r}(),w=function(r){return r instanceof j?r:new j(r)},S=[],k=function(r){r.forEach(function(r){S.indexOf(r)<0&&(r(j,y),S.push(r))})},E=function(){return new j({r:255*Math.random(),g:255*Math.random(),b:255*Math.random()})};export{j as Colord,w as colord,k as extend,I as getFormat,E as random};\n","export default function(e,f){var a={white:\"#ffffff\",bisque:\"#ffe4c4\",blue:\"#0000ff\",cadetblue:\"#5f9ea0\",chartreuse:\"#7fff00\",chocolate:\"#d2691e\",coral:\"#ff7f50\",antiquewhite:\"#faebd7\",aqua:\"#00ffff\",azure:\"#f0ffff\",whitesmoke:\"#f5f5f5\",papayawhip:\"#ffefd5\",plum:\"#dda0dd\",blanchedalmond:\"#ffebcd\",black:\"#000000\",gold:\"#ffd700\",goldenrod:\"#daa520\",gainsboro:\"#dcdcdc\",cornsilk:\"#fff8dc\",cornflowerblue:\"#6495ed\",burlywood:\"#deb887\",aquamarine:\"#7fffd4\",beige:\"#f5f5dc\",crimson:\"#dc143c\",cyan:\"#00ffff\",darkblue:\"#00008b\",darkcyan:\"#008b8b\",darkgoldenrod:\"#b8860b\",darkkhaki:\"#bdb76b\",darkgray:\"#a9a9a9\",darkgreen:\"#006400\",darkgrey:\"#a9a9a9\",peachpuff:\"#ffdab9\",darkmagenta:\"#8b008b\",darkred:\"#8b0000\",darkorchid:\"#9932cc\",darkorange:\"#ff8c00\",darkslateblue:\"#483d8b\",gray:\"#808080\",darkslategray:\"#2f4f4f\",darkslategrey:\"#2f4f4f\",deeppink:\"#ff1493\",deepskyblue:\"#00bfff\",wheat:\"#f5deb3\",firebrick:\"#b22222\",floralwhite:\"#fffaf0\",ghostwhite:\"#f8f8ff\",darkviolet:\"#9400d3\",magenta:\"#ff00ff\",green:\"#008000\",dodgerblue:\"#1e90ff\",grey:\"#808080\",honeydew:\"#f0fff0\",hotpink:\"#ff69b4\",blueviolet:\"#8a2be2\",forestgreen:\"#228b22\",lawngreen:\"#7cfc00\",indianred:\"#cd5c5c\",indigo:\"#4b0082\",fuchsia:\"#ff00ff\",brown:\"#a52a2a\",maroon:\"#800000\",mediumblue:\"#0000cd\",lightcoral:\"#f08080\",darkturquoise:\"#00ced1\",lightcyan:\"#e0ffff\",ivory:\"#fffff0\",lightyellow:\"#ffffe0\",lightsalmon:\"#ffa07a\",lightseagreen:\"#20b2aa\",linen:\"#faf0e6\",mediumaquamarine:\"#66cdaa\",lemonchiffon:\"#fffacd\",lime:\"#00ff00\",khaki:\"#f0e68c\",mediumseagreen:\"#3cb371\",limegreen:\"#32cd32\",mediumspringgreen:\"#00fa9a\",lightskyblue:\"#87cefa\",lightblue:\"#add8e6\",midnightblue:\"#191970\",lightpink:\"#ffb6c1\",mistyrose:\"#ffe4e1\",moccasin:\"#ffe4b5\",mintcream:\"#f5fffa\",lightslategray:\"#778899\",lightslategrey:\"#778899\",navajowhite:\"#ffdead\",navy:\"#000080\",mediumvioletred:\"#c71585\",powderblue:\"#b0e0e6\",palegoldenrod:\"#eee8aa\",oldlace:\"#fdf5e6\",paleturquoise:\"#afeeee\",mediumturquoise:\"#48d1cc\",mediumorchid:\"#ba55d3\",rebeccapurple:\"#663399\",lightsteelblue:\"#b0c4de\",mediumslateblue:\"#7b68ee\",thistle:\"#d8bfd8\",tan:\"#d2b48c\",orchid:\"#da70d6\",mediumpurple:\"#9370db\",purple:\"#800080\",pink:\"#ffc0cb\",skyblue:\"#87ceeb\",springgreen:\"#00ff7f\",palegreen:\"#98fb98\",red:\"#ff0000\",yellow:\"#ffff00\",slateblue:\"#6a5acd\",lavenderblush:\"#fff0f5\",peru:\"#cd853f\",palevioletred:\"#db7093\",violet:\"#ee82ee\",teal:\"#008080\",slategray:\"#708090\",slategrey:\"#708090\",aliceblue:\"#f0f8ff\",darkseagreen:\"#8fbc8f\",darkolivegreen:\"#556b2f\",greenyellow:\"#adff2f\",seagreen:\"#2e8b57\",seashell:\"#fff5ee\",tomato:\"#ff6347\",silver:\"#c0c0c0\",sienna:\"#a0522d\",lavender:\"#e6e6fa\",lightgreen:\"#90ee90\",orange:\"#ffa500\",orangered:\"#ff4500\",steelblue:\"#4682b4\",royalblue:\"#4169e1\",turquoise:\"#40e0d0\",yellowgreen:\"#9acd32\",salmon:\"#fa8072\",saddlebrown:\"#8b4513\",sandybrown:\"#f4a460\",rosybrown:\"#bc8f8f\",darksalmon:\"#e9967a\",lightgoldenrodyellow:\"#fafad2\",snow:\"#fffafa\",lightgrey:\"#d3d3d3\",lightgray:\"#d3d3d3\",dimgray:\"#696969\",dimgrey:\"#696969\",olivedrab:\"#6b8e23\",olive:\"#808000\"},r={};for(var d in a)r[a[d]]=d;var l={};e.prototype.toName=function(f){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return\"transparent\";var d,i,n=r[this.toHex()];if(n)return n;if(null==f?void 0:f.closest){var o=this.toRgb(),t=1/0,b=\"black\";if(!l.length)for(var c in a)l[c]=new e(a[c]).toRgb();for(var g in a){var u=(d=o,i=l[g],Math.pow(d.r-i.r,2)+Math.pow(d.g-i.g,2)+Math.pow(d.b-i.b,2));u<t&&(t=u,b=g)}return b}};f.string.push([function(f){var r=f.toLowerCase(),d=\"transparent\"===r?\"#0000\":a[r];return d?new e(d).toRgb():null},\"name\"])}\n","import { extend, colord } from '@pixi/colord';\nimport namesPlugin from '@pixi/colord/plugins/names';\n\n\"use strict\";\nextend([namesPlugin]);\nconst _Color = class _Color {\n /**\n * @param {ColorSource} value - Optional value to use, if not provided, white is used.\n */\n constructor(value = 16777215) {\n this._value = null;\n this._components = new Float32Array(4);\n this._components.fill(1);\n this._int = 16777215;\n this.value = value;\n }\n /** Get red component (0 - 1) */\n get red() {\n return this._components[0];\n }\n /** Get green component (0 - 1) */\n get green() {\n return this._components[1];\n }\n /** Get blue component (0 - 1) */\n get blue() {\n return this._components[2];\n }\n /** Get alpha component (0 - 1) */\n get alpha() {\n return this._components[3];\n }\n /**\n * Set the value, suitable for chaining\n * @param value\n * @see Color.value\n */\n setValue(value) {\n this.value = value;\n return this;\n }\n /**\n * The current color source.\n *\n * When setting:\n * - Setting to an instance of `Color` will copy its color source and components.\n * - Otherwise, `Color` will try to normalize the color source and set the components.\n * If the color source is invalid, an `Error` will be thrown and the `Color` will left unchanged.\n *\n * Note: The `null` in the setter's parameter type is added to match the TypeScript rule: return type of getter\n * must be assignable to its setter's parameter type. Setting `value` to `null` will throw an `Error`.\n *\n * When getting:\n * - A return value of `null` means the previous value was overridden (e.g., {@link Color.multiply multiply},\n * {@link Color.premultiply premultiply} or {@link Color.round round}).\n * - Otherwise, the color source used when setting is returned.\n */\n set value(value) {\n if (value instanceof _Color) {\n this._value = this._cloneSource(value._value);\n this._int = value._int;\n this._components.set(value._components);\n } else if (value === null) {\n throw new Error(\"Cannot set Color#value to null\");\n } else if (this._value === null || !this._isSourceEqual(this._value, value)) {\n this._value = this._cloneSource(value);\n this._normalize(this._value);\n }\n }\n get value() {\n return this._value;\n }\n /**\n * Copy a color source internally.\n * @param value - Color source\n */\n _cloneSource(value) {\n if (typeof value === \"string\" || typeof value === \"number\" || value instanceof Number || value === null) {\n return value;\n } else if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n return value.slice(0);\n } else if (typeof value === \"object\" && value !== null) {\n return { ...value };\n }\n return value;\n }\n /**\n * Equality check for color sources.\n * @param value1 - First color source\n * @param value2 - Second color source\n * @returns `true` if the color sources are equal, `false` otherwise.\n */\n _isSourceEqual(value1, value2) {\n const type1 = typeof value1;\n const type2 = typeof value2;\n if (type1 !== type2) {\n return false;\n } else if (type1 === \"number\" || type1 === \"string\" || value1 instanceof Number) {\n return value1 === value2;\n } else if (Array.isArray(value1) && Array.isArray(value2) || ArrayBuffer.isView(value1) && ArrayBuffer.isView(value2)) {\n if (value1.length !== value2.length) {\n return false;\n }\n return value1.every((v, i) => v === value2[i]);\n } else if (value1 !== null && value2 !== null) {\n const keys1 = Object.keys(value1);\n const keys2 = Object.keys(value2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n return keys1.every((key) => value1[key] === value2[key]);\n }\n return value1 === value2;\n }\n /**\n * Convert to a RGBA color object.\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toRgb(); // returns { r: 1, g: 1, b: 1, a: 1 }\n */\n toRgba() {\n const [r, g, b, a] = this._components;\n return { r, g, b, a };\n }\n /**\n * Convert to a RGB color object.\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toRgb(); // returns { r: 1, g: 1, b: 1 }\n */\n toRgb() {\n const [r, g, b] = this._components;\n return { r, g, b };\n }\n /** Convert to a CSS-style rgba string: `rgba(255,255,255,1.0)`. */\n toRgbaString() {\n const [r, g, b] = this.toUint8RgbArray();\n return `rgba(${r},${g},${b},${this.alpha})`;\n }\n toUint8RgbArray(out) {\n const [r, g, b] = this._components;\n if (!this._arrayRgb) {\n this._arrayRgb = [];\n }\n out || (out = this._arrayRgb);\n out[0] = Math.round(r * 255);\n out[1] = Math.round(g * 255);\n out[2] = Math.round(b * 255);\n return out;\n }\n toArray(out) {\n if (!this._arrayRgba) {\n this._arrayRgba = [];\n }\n out || (out = this._arrayRgba);\n const [r, g, b, a] = this._components;\n out[0] = r;\n out[1] = g;\n out[2] = b;\n out[3] = a;\n return out;\n }\n toRgbArray(out) {\n if (!this._arrayRgb) {\n this._arrayRgb = [];\n }\n out || (out = this._arrayRgb);\n const [r, g, b] = this._components;\n out[0] = r;\n out[1] = g;\n out[2] = b;\n return out;\n }\n /**\n * Convert to a hexadecimal number.\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toNumber(); // returns 16777215\n */\n toNumber() {\n return this._int;\n }\n /**\n * Convert to a BGR number\n * @example\n * import { Color } from 'pixi.js';\n * new Color(0xffcc99).toBgrNumber(); // returns 0x99ccff\n */\n toBgrNumber() {\n const [r, g, b] = this.toUint8RgbArray();\n return (b << 16) + (g << 8) + r;\n }\n /**\n * Convert to a hexadecimal number in little endian format (e.g., BBGGRR).\n * @example\n * import { Color } from 'pixi.js';\n * new Color(0xffcc99).toLittleEndianNumber(); // returns 0x99ccff\n * @returns {number} - The color as a number in little endian format.\n */\n toLittleEndianNumber() {\n const value = this._int;\n return (value >> 16) + (value & 65280) + ((value & 255) << 16);\n }\n /**\n * Multiply with another color. This action is destructive, and will\n * override the previous `value` property to be `null`.\n * @param {ColorSource} value - The color to multiply by.\n */\n multiply(value) {\n const [r, g, b, a] = _Color._temp.setValue(value)._components;\n this._components[0] *= r;\n this._components[1] *= g;\n this._components[2] *= b;\n this._components[3] *= a;\n this._refreshInt();\n this._value = null;\n return this;\n }\n /**\n * Converts color to a premultiplied alpha format. This action is destructive, and will\n * override the previous `value` property to be `null`.\n * @param alpha - The alpha to multiply by.\n * @param {boolean} [applyToRGB=true] - Whether to premultiply RGB channels.\n * @returns {Color} - Itself.\n */\n premultiply(alpha, applyToRGB = true) {\n if (applyToRGB) {\n this._components[0] *= alpha;\n this._components[1] *= alpha;\n this._components[2] *= alpha;\n }\n this._components[3] = alpha;\n this._refreshInt();\n this._value = null;\n return this;\n }\n /**\n * Premultiplies alpha with current color.\n * @param {number} alpha - The alpha to multiply by.\n * @param {boolean} [applyToRGB=true] - Whether to premultiply RGB channels.\n * @returns {number} tint multiplied by alpha\n */\n toPremultiplied(alpha, applyToRGB = true) {\n if (alpha === 1) {\n return (255 << 24) + this._int;\n }\n if (alpha === 0) {\n return applyToRGB ? 0 : this._int;\n }\n let r = this._int >> 16 & 255;\n let g = this._int >> 8 & 255;\n let b = this._int & 255;\n if (applyToRGB) {\n r = r * alpha + 0.5 | 0;\n g = g * alpha + 0.5 | 0;\n b = b * alpha + 0.5 | 0;\n }\n return (alpha * 255 << 24) + (r << 16) + (g << 8) + b;\n }\n /**\n * Convert to a hexadecimal string.\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toHex(); // returns \"#ffffff\"\n */\n toHex() {\n const hexString = this._int.toString(16);\n return `#${\"000000\".substring(0, 6 - hexString.length) + hexString}`;\n }\n /**\n * Convert to a hexadecimal string with alpha.\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toHexa(); // returns \"#ffffffff\"\n */\n toHexa() {\n const alphaValue = Math.round(this._components[3] * 255);\n const alphaString = alphaValue.toString(16);\n return this.toHex() + \"00\".substring(0, 2 - alphaString.length) + alphaString;\n }\n /**\n * Set alpha, suitable for chaining.\n * @param alpha\n */\n setAlpha(alpha) {\n this._components[3] = this._clamp(alpha);\n return this;\n }\n /**\n * Normalize the input value into rgba\n * @param value - Input value\n */\n _normalize(value) {\n let r;\n let g;\n let b;\n let a;\n if ((typeof value === \"number\" || value instanceof Number) && value >= 0 && value <= 16777215) {\n const int = value;\n r = (int >> 16 & 255) / 255;\n g = (int >> 8 & 255) / 255;\n b = (int & 255) / 255;\n a = 1;\n } else if ((Array.isArray(value) || value instanceof Float32Array) && value.length >= 3 && value.length <= 4) {\n value = this._clamp(value);\n [r, g, b, a = 1] = value;\n } else if ((value instanceof Uint8Array || value instanceof Uint8ClampedArray) && value.length >= 3 && value.length <= 4) {\n value = this._clamp(value, 0, 255);\n [r, g, b, a = 255] = value;\n r /= 255;\n g /= 255;\n b /= 255;\n a /= 255;\n } else if (typeof value === \"string\" || typeof value === \"object\") {\n if (typeof value === \"string\") {\n const match = _Color.HEX_PATTERN.exec(value);\n if (match) {\n value = `#${match[2]}`;\n }\n }\n const color = colord(value);\n if (color.isValid()) {\n ({ r, g, b, a } = color.rgba);\n r /= 255;\n g /= 255;\n b /= 255;\n }\n }\n if (r !== void 0) {\n this._components[0] = r;\n this._components[1] = g;\n this._components[2] = b;\n this._components[3] = a;\n this._refreshInt();\n } else {\n throw new Error(`Unable to convert color ${value}`);\n }\n }\n /** Refresh the internal color rgb number */\n _refreshInt() {\n this._clamp(this._components);\n const [r, g, b] = this._components;\n this._int = (r * 255 << 16) + (g * 255 << 8) + (b * 255 | 0);\n }\n /**\n * Clamps values to a range. Will override original values\n * @param value - Value(s) to clamp\n * @param min - Minimum value\n * @param max - Maximum value\n */\n _clamp(value, min = 0, max = 1) {\n if (typeof value === \"number\") {\n return Math.min(Math.max(value, min), max);\n }\n value.forEach((v, i) => {\n value[i] = Math.min(Math.max(v, min), max);\n });\n return value;\n }\n /**\n * Check if the value is a color-like object\n * @param value - Value to check\n * @returns True if the value is a color-like object\n * @static\n * @example\n * import { Color } from 'pixi.js';\n * Color.isColorLike('white'); // returns true\n * Color.isColorLike(0xffffff); // returns true\n * Color.isColorLike([1, 1, 1]); // returns true\n */\n static isColorLike(value) {\n return typeof value === \"number\" || typeof value === \"string\" || value instanceof Number || value instanceof _Color || Array.isArray(value) || value instanceof Uint8Array || value instanceof Uint8ClampedArray || value instanceof Float32Array || value.r !== void 0 && value.g !== void 0 && value.b !== void 0 || value.r !== void 0 && value.g !== void 0 && value.b !== void 0 && value.a !== void 0 || value.h !== void 0 && value.s !== void 0 && value.l !== void 0 || value.h !== void 0 && value.s !== void 0 && value.l !== void 0 && value.a !== void 0 || value.h !== void 0 && value.s !== void 0 && value.v !== void 0 || value.h !== void 0 && value.s !== void 0 && value.v !== void 0 && value.a !== void 0;\n }\n};\n/**\n * Default Color object for static uses\n * @example\n * import { Color } from 'pixi.js';\n * Color.shared.setValue(0xffffff).toHex(); // '#ffffff'\n */\n_Color.shared = new _Color();\n/**\n * Temporary Color object for static uses internally.\n * As to not conflict with Color.shared.\n * @ignore\n */\n_Color._temp = new _Color();\n/** Pattern for hex strings */\n// eslint-disable-next-line @typescript-eslint/naming-convention\n_Color.HEX_PATTERN = /^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;\nlet Color = _Color;\n\nexport { Color };\n//# sourceMappingURL=Color.mjs.map\n","\"use strict\";\nconst cullingMixin = {\n cullArea: null,\n cullable: false,\n cullableChildren: true\n};\n\nexport { cullingMixin };\n//# sourceMappingURL=cullingMixin.mjs.map\n","\"use strict\";\nclass Pool {\n /**\n * Constructs a new Pool.\n * @param ClassType - The constructor of the items in the pool.\n * @param {number} [initialSize] - The initial size of the pool.\n */\n constructor(ClassType, initialSize) {\n this._pool = [];\n this._count = 0;\n this._index = 0;\n this._classType = ClassType;\n if (initialSize) {\n this.prepopulate(initialSize);\n }\n }\n /**\n * Prepopulates the pool with a given number of items.\n * @param total - The number of items to add to the pool.\n */\n prepopulate(total) {\n for (let i = 0; i < total; i++) {\n this._pool[this._index++] = new this._classType();\n }\n this._count += total;\n }\n /**\n * Gets an item from the pool. Calls the item's `init` method if it exists.\n * If there are no items left in the pool, a new one will be created.\n * @param {unknown} [data] - Optional data to pass to the item's constructor.\n * @returns {T} The item from the pool.\n */\n get(data) {\n let item;\n if (this._index > 0) {\n item = this._pool[--this._index];\n } else {\n item = new this._classType();\n }\n item.init?.(data);\n return item;\n }\n /**\n * Returns an item to the pool. Calls the item's `reset` method if it exists.\n * @param {T} item - The item to return to the pool.\n */\n return(item) {\n item.reset?.();\n this._pool[this._index++] = item;\n }\n /**\n * Gets the number of items in the pool.\n * @readonly\n * @member {number}\n */\n get totalSize() {\n return this._count;\n }\n /**\n * Gets the number of items in the pool that are free to use without needing to create more.\n * @readonly\n * @member {number}\n */\n get totalFree() {\n return this._index;\n }\n /**\n * Gets the number of items in the pool that are currently in use.\n * @readonly\n * @member {number}\n */\n get totalUsed() {\n return this._count - this._index;\n }\n /** clears the pool - mainly used for debugging! */\n clear() {\n this._pool.length = 0;\n this._index = 0;\n }\n}\n\nexport { Pool };\n//# sourceMappingURL=Pool.mjs.map\n","import { Pool } from './Pool.mjs';\n\n\"use strict\";\nclass PoolGroupClass {\n constructor() {\n /**\n * A map to store the pools by their class type.\n * @private\n */\n this._poolsByClass = /* @__PURE__ */ new Map();\n }\n /**\n * Prepopulates a specific pool with a given number of items.\n * @template T The type of items in the pool. Must extend PoolItem.\n * @param {PoolItemConstructor<T>} Class - The constructor of the items in the pool.\n * @param {number} total - The number of items to add to the pool.\n */\n prepopulate(Class, total) {\n const classPool = this.getPool(Class);\n classPool.prepopulate(total);\n }\n /**\n * Gets an item from a specific pool.\n * @template T The type of items in the pool. Must extend PoolItem.\n * @param {PoolItemConstructor<T>} Class - The constructor of the items in the pool.\n * @param {unknown} [data] - Optional data to pass to the item's constructor.\n * @returns {T} The item from the pool.\n */\n get(Class, data) {\n const pool = this.getPool(Class);\n return pool.get(data);\n }\n /**\n * Returns an item to its respective pool.\n * @param {PoolItem} item - The item to return to the pool.\n */\n return(item) {\n const pool = this.getPool(item.constructor);\n pool.return(item);\n }\n /**\n * Gets a specific pool based on the class type.\n * @template T The type of items in the pool. Must extend PoolItem.\n * @param {PoolItemConstructor<T>} ClassType - The constructor of the items in the pool.\n * @returns {Pool<T>} The pool of the given class type.\n */\n getPool(ClassType) {\n if (!this._poolsByClass.has(ClassType)) {\n this._poolsByClass.set(ClassType, new Pool(ClassType));\n }\n return this._poolsByClass.get(ClassType);\n }\n /** gets the usage stats of each pool in the system */\n stats() {\n const stats = {};\n this._poolsByClass.forEach((pool) => {\n const name = stats[pool._classType.name] ? pool._classType.name + pool._classType.ID : pool._classType.name;\n stats[name] = {\n free: pool.totalFree,\n used: pool.totalUsed,\n size: pool.totalSize\n };\n });\n return stats;\n }\n}\nconst BigPool = new PoolGroupClass();\n\nexport { BigPool, PoolGroupClass };\n//# sourceMappingURL=PoolGroup.mjs.map\n","import { deprecation } from '../../../utils/logging/deprecation.mjs';\n\n\"use strict\";\nconst cacheAsTextureMixin = {\n /**\n * Is this container cached as a texture?\n * @readonly\n * @type {boolean}\n * @memberof scene.Container#\n */\n get isCachedAsTexture() {\n return !!this.renderGroup?.isCachedAsTexture;\n },\n cacheAsTexture(val) {\n if (typeof val === \"boolean\" && val === false) {\n this.disableRenderGroup();\n } else {\n this.enableRenderGroup();\n this.renderGroup.enableCacheAsTexture(val === true ? {} : val);\n }\n },\n /**\n * Updates the cached texture. Will flag that this container's cached texture needs to be redrawn.\n * This will happen on the next render.\n * @memberof scene.Container#\n */\n updateCacheTexture() {\n this.renderGroup?.updateCacheTexture();\n },\n /**\n * Allows backwards compatibility with pixi.js below version v8. Use `cacheAsTexture` instead.\n * @deprecated\n */\n get cacheAsBitmap() {\n return this.isCachedAsTexture;\n },\n /**\n * @deprecated\n */\n set cacheAsBitmap(val) {\n deprecation(\"v8.6.0\", \"cacheAsBitmap is deprecated, use cacheAsTexture instead.\");\n this.cacheAsTexture(val);\n }\n};\n\nexport { cacheAsTextureMixin };\n//# sourceMappingURL=cacheAsTextureMixin.mjs.map\n","\"use strict\";\nfunction removeItems(arr, startIdx, removeCount) {\n const length = arr.length;\n let i;\n if (startIdx >= length || removeCount === 0) {\n return;\n }\n removeCount = startIdx + removeCount > length ? length - startIdx : removeCount;\n const len = length - removeCount;\n for (i = startIdx; i < len; ++i) {\n arr[i] = arr[i + removeCount];\n }\n arr.length = len;\n}\n\nexport { removeItems };\n//# sourceMappingURL=removeItems.mjs.map\n","import { removeItems } from '../../../utils/data/removeItems.mjs';\nimport { deprecation, v8_0_0 } from '../../../utils/logging/deprecation.mjs';\n\n\"use strict\";\nconst childrenHelperMixin = {\n allowChildren: true,\n /**\n * Removes all children from this container that are within the begin and end indexes.\n * @param beginIndex - The beginning position.\n * @param endIndex - The ending position. Default value is size of the container.\n * @returns - List of removed children\n * @memberof scene.Container#\n */\n removeChildren(beginIndex = 0, endIndex) {\n const end = endIndex ?? this.children.length;\n const range = end - beginIndex;\n const removed = [];\n if (range > 0 && range <= end) {\n for (let i = end - 1; i >= beginIndex; i--) {\n const child = this.children[i];\n if (!child)\n continue;\n removed.push(child);\n child.parent = null;\n }\n removeItems(this.children, beginIndex, end);\n const renderGroup = this.renderGroup || this.parentRenderGroup;\n if (renderGroup) {\n renderGroup.removeChildren(removed);\n }\n for (let i = 0; i < removed.length; ++i) {\n this.emit(\"childRemoved\", removed[i], this, i);\n removed[i].emit(\"removed\", this);\n }\n if (removed.length > 0) {\n this._didViewChangeTick++;\n }\n return removed;\n } else if (range === 0 && this.children.length === 0) {\n return removed;\n }\n throw new RangeError(\"removeChildren: numeric values are outside the acceptable range.\");\n },\n /**\n * Removes a child from the specified index position.\n * @param index - The index to get the child from\n * @returns The child that was removed.\n * @memberof scene.Container#\n */\n removeChildAt(index) {\n const child = this.getChildAt(index);\n return this.removeChild(child);\n },\n /**\n * Returns the child at the specified index\n * @param index - The index to get the child at\n * @returns - The child at the given index, if any.\n * @memberof scene.Container#\n */\n getChildAt(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error(`getChildAt: Index (${index}) does not exist.`);\n }\n return this.children[index];\n },\n /**\n * Changes the position of an existing child in the container\n * @param child - The child Container instance for which you want to change the index number\n * @param index - The resulting index number for the child container\n * @memberof scene.Container#\n */\n setChildIndex(child, index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error(`The index ${index} supplied is out of bounds ${this.children.length}`);\n }\n this.getChildIndex(child);\n this.addChildAt(child, index);\n },\n /**\n * Returns the index position of a child Container instance\n * @param child - The Container instance to identify\n * @returns - The index position of the child container to identify\n * @memberof scene.Container#\n */\n getChildIndex(child) {\n const index = this.children.indexOf(child);\n if (index === -1) {\n throw new Error(\"The supplied Container must be a child of the caller\");\n }\n return index;\n },\n /**\n * Adds a child to the container at a specified index. If the index is out of bounds an error will be thrown.\n * If the child is already in this container, it will be moved to the specified index.\n * @param {Container} child - The child to add.\n * @param {number} index - The absolute index where the child will be positioned at the end of the operation.\n * @returns {Container} The child that was added.\n * @memberof scene.Container#\n */\n addChildAt(child, index) {\n if (!this.allowChildren) {\n deprecation(v8_0_0, \"addChildAt: Only Containers will be allowed to add children in v8.0.0\");\n }\n const { children } = this;\n if (index < 0 || index > children.length) {\n throw new Error(`${child}addChildAt: The index ${index} supplied is out of bounds ${children.length}`);\n }\n if (child.parent) {\n const currentIndex = child.parent.children.indexOf(child);\n if (child.parent === this && currentIndex === index) {\n return child;\n }\n if (currentIndex !== -1) {\n child.parent.children.splice(currentIndex, 1);\n }\n }\n if (index === children.length) {\n children.push(child);\n } else {\n children.splice(index, 0, child);\n }\n child.parent = this;\n child.didChange = true;\n child._updateFlags = 15;\n const renderGroup = this.renderGroup || this.parentRenderGroup;\n if (renderGroup) {\n renderGroup.addChild(child);\n }\n if (this.sortableChildren)\n this.sortDirty = true;\n this.emit(\"childAdded\", child, this, index);\n child.emit(\"added\", this);\n return child;\n },\n /**\n * Swaps the position of 2 Containers within this container.\n * @param child - First container to swap\n * @param child2 - Second container to swap\n * @memberof scene.Container#\n */\n swapChildren(child, child2) {\n if (child === child2) {\n return;\n }\n const index1 = this.getChildIndex(child);\n const index2 = this.getChildIndex(child2);\n this.children[index1] = child2;\n this.children[index2] = child;\n const renderGroup = this.renderGroup || this.parentRenderGroup;\n if (renderGroup) {\n renderGroup.structureDidChange = true;\n }\n this._didContainerChangeTick++;\n },\n /**\n * Remove the Container from its parent Container. If the Container has no parent, do nothing.\n * @memberof scene.Container#\n */\n removeFromParent() {\n this.parent?.removeChild(this);\n },\n /**\n * Reparent the child to this container, keeping the same worldTransform.\n * @param child - The child to reparent\n * @returns The first child that was reparented.\n * @memberof scene.Container#\n */\n reparentChild(...child) {\n if (child.length === 1) {\n return this.reparentChildAt(child[0], this.children.length);\n }\n child.forEach((c) => this.reparentChildAt(c, this.children.length));\n return child[0];\n },\n /**\n * Reparent the child to this container at the specified index, keeping the same worldTransform.\n * @param child - The child to reparent\n * @param index - The index to reparent the child to\n * @memberof scene.Container#\n */\n reparentChildAt(child, index) {\n if (child.parent === this) {\n this.setChildIndex(child, index);\n return child;\n }\n const childMat = child.worldTransform.clone();\n child.removeFromParent();\n this.addChildAt(child, index);\n const newMatrix = this.worldTransform.clone();\n newMatrix.invert();\n childMat.prepend(newMatrix);\n child.setFromMatrix(childMat);\n return child;\n }\n};\n\nexport { childrenHelperMixin };\n//# sourceMappingURL=childrenHelperMixin.mjs.map\n","\"use strict\";\nconst collectRenderablesMixin = {\n /**\n * Main method to collect renderables from the container and its children.\n * It checks the container's properties to decide whether to use a simple or advanced collection method.\n * @param {InstructionSet} instructionSet - The set of instructions to which the renderables will be added.\n * @param {Renderer} renderer - The renderer responsible for rendering the scene.\n * @param {IRenderLayer} currentLayer - The current render layer being processed.\n * @memberof scene.Container#\n */\n collectRenderables(instructionSet, renderer, currentLayer) {\n if (this.parentRenderLayer && this.parentRenderLayer !== currentLayer || this.globalDisplayStatus < 7 || !this.includeInBuild)\n return;\n if (this.sortableChildren) {\n this.sortChildren();\n }\n if (this.isSimple) {\n this.collectRenderablesSimple(instructionSet, renderer, currentLayer);\n } else if (this.renderGroup) {\n renderer.renderPipes.renderGroup.addRenderGroup(this.renderGroup, instructionSet);\n } else {\n this.collectRenderablesWithEffects(instructionSet, renderer, currentLayer);\n }\n },\n /**\n * Simple method for collecting renderables from the container's children.\n * This method is efficient and used when the container is marked as simple.\n * @param {InstructionSet} instructionSet - The set of instructions to which the renderables will be added.\n * @param {Renderer} renderer - The renderer responsible for rendering the scene.\n * @param {IRenderLayer} currentLayer - The current render layer being processed.\n * @memberof scene.Container#\n */\n collectRenderablesSimple(instructionSet, renderer, currentLayer) {\n const children = this.children;\n const length = children.length;\n for (let i = 0; i < length; i++) {\n children[i].collectRenderables(instructionSet, renderer, currentLayer);\n }\n },\n /**\n * Advanced method for collecting renderables, which handles additional effects.\n * This method is used when the container has complex processing needs.\n * @param {InstructionSet} instructionSet - The set of instructions to which the renderables will be added.\n * @param {Renderer} renderer - The renderer responsible for rendering the scene.\n * @param {IRenderLayer} currentLayer - The current render layer being processed.\n * @memberof scene.Container#\n */\n collectRenderablesWithEffects(instructionSet, renderer, currentLayer) {\n const { renderPipes } = renderer;\n for (let i = 0; i < this.effects.length; i++) {\n const effect = this.effects[i];\n const pipe = renderPipes[effect.pipe];\n pipe.push(effect, this, instructionSet);\n }\n this.collectRenderablesSimple(instructionSet, renderer, currentLayer);\n for (let i = this.effects.length - 1; i >= 0; i--) {\n const effect = this.effects[i];\n const pipe = renderPipes[effect.pipe];\n pipe.pop(effect, this, instructionSet);\n }\n }\n};\n\nexport { collectRenderablesMixin };\n//# sourceMappingURL=collectRenderablesMixin.mjs.map\n","\"use strict\";\nclass FilterEffect {\n constructor() {\n /** the pipe that knows how to handle this effect */\n this.pipe = \"filter\";\n /** the priority of this effect */\n this.priority = 1;\n }\n destroy() {\n for (let i = 0; i < this.filters.length; i++) {\n this.filters[i].destroy();\n }\n this.filters = null;\n this.filterArea = null;\n }\n}\n\nexport { FilterEffect };\n//# sourceMappingURL=FilterEffect.mjs.map\n","import { extensions, ExtensionType } from '../../extensions/Extensions.mjs';\nimport { BigPool } from '../../utils/pool/PoolGroup.mjs';\n\n\"use strict\";\nclass MaskEffectManagerClass {\n constructor() {\n /**\n * @private\n */\n this._effectClasses = [];\n this._tests = [];\n this._initialized = false;\n }\n init() {\n if (this._initialized)\n return;\n this._initialized = true;\n this._effectClasses.forEach((test) => {\n this.add({\n test: test.test,\n maskClass: test\n });\n });\n }\n add(test) {\n this._tests.push(test);\n }\n getMaskEffect(item) {\n if (!this._initialized)\n this.init();\n for (let i = 0; i < this._tests.length; i++) {\n const test = this._tests[i];\n if (test.test(item)) {\n return BigPool.get(test.maskClass, item);\n }\n }\n return item;\n }\n returnMaskEffect(effect) {\n BigPool.return(effect);\n }\n}\nconst MaskEffectManager = new MaskEffectManagerClass();\nextensions.handleByList(ExtensionType.MaskEffect, MaskEffectManager._effectClasses);\n\nexport { MaskEffectManager, MaskEffectManagerClass };\n//# sourceMappingURL=MaskEffectManager.mjs.map\n","import { FilterEffect } from '../../../filters/FilterEffect.mjs';\nimport { MaskEffectManager } from '../../../rendering/mask/MaskEffectManager.mjs';\n\n\"use strict\";\nconst effectsMixin = {\n _maskEffect: null,\n _maskOptions: {\n inverse: false\n },\n _filterEffect: null,\n /**\n * @todo Needs docs.\n * @memberof scene.Container#\n * @type {Array<Effect>}\n */\n effects: [],\n _markStructureAsChanged() {\n const renderGroup = this.renderGroup || this.parentRenderGroup;\n if (renderGroup) {\n renderGroup.structureDidChange = true;\n }\n },\n /**\n * @todo Needs docs.\n * @param effect - The effect to add.\n * @memberof scene.Container#\n * @ignore\n */\n addEffect(effect) {\n const index = this.effects.indexOf(effect);\n if (index !== -1)\n return;\n this.effects.push(effect);\n this.effects.sort((a, b) => a.priority - b.priority);\n this._markStructureAsChanged();\n this._updateIsSimple();\n },\n /**\n * @todo Needs docs.\n * @param effect - The effect to remove.\n * @memberof scene.Container#\n * @ignore\n */\n removeEffect(effect) {\n const index = this.effects.indexOf(effect);\n if (index === -1)\n return;\n this.effects.splice(index, 1);\n this._markStructureAsChanged();\n this._updateIsSimple();\n },\n set mask(value) {\n const effect = this._maskEffect;\n if (effect?.mask === value)\n return;\n if (effect) {\n this.removeEffect(effect);\n MaskEffectManager.returnMaskEffect(effect);\n this._maskEffect = null;\n }\n if (value === null || value === void 0)\n return;\n this._maskEffect = MaskEffectManager.getMaskEffect(value);\n this.addEffect(this._maskEffect);\n },\n /**\n * Used to set mask and control mask options.\n * @param options\n * @example\n * import { Graphics, Sprite } from 'pixi.js';\n *\n * const graphics = new Graphics();\n * graphics.beginFill(0xFF3300);\n * graphics.drawRect(50, 250, 100, 100);\n * graphics.endFill();\n *\n * const sprite = new Sprite(texture);\n * sprite.setMask({\n * mask: graphics,\n * inverse: true,\n * });\n * @memberof scene.Container#\n */\n setMask(options) {\n this._maskOptions = {\n ...this._maskOptions,\n ...options\n };\n if (options.mask) {\n this.mask = options.mask;\n }\n this._markStructureAsChanged();\n },\n /**\n * Sets a mask for the displayObject. A mask is an object that limits the visibility of an\n * object to the shape of the mask applied to it. In PixiJS a regular mask must be a\n * {@link Graphics} or a {@link Sprite} object. This allows for much faster masking in canvas as it\n * utilities shape clipping. Furthermore, a mask of an object must be in the subtree of its parent.\n * Otherwise, `getLocalBounds` may calculate incorrect bounds, which makes the container's width and height wrong.\n * To remove a mask, set this property to `null`.\n *\n * For sprite mask both alpha and red channel are used. Black mask is the same as transparent mask.\n * @example\n * import { Graphics, Sprite } from 'pixi.js';\n *\n * const graphics = new Graphics();\n * graphics.beginFill(0xFF3300);\n * graphics.drawRect(50, 250, 100, 100);\n * graphics.endFill();\n *\n * const sprite = new Sprite(texture);\n * sprite.mask = graphics;\n * @memberof scene.Container#\n */\n get mask() {\n return this._maskEffect?.mask;\n },\n set filters(value) {\n if (!Array.isArray(value) && value)\n value = [value];\n const effect = this._filterEffect || (this._filterEffect = new FilterEffect());\n value = value;\n const hasFilters = value?.length > 0;\n const hadFilters = effect.filters?.length > 0;\n const didChange = hasFilters !== hadFilters;\n value = Array.isArray(value) ? value.slice(0) : value;\n effect.filters = Object.freeze(value);\n if (didChange) {\n if (hasFilters) {\n this.addEffect(effect);\n } else {\n this.removeEffect(effect);\n effect.filters = value ?? null;\n }\n }\n },\n /**\n * Sets the filters for the displayObject.\n * IMPORTANT: This is a WebGL only feature and will be ignored by the canvas renderer.\n * To remove filters simply set this property to `'null'`.\n * @memberof scene.Container#\n */\n get filters() {\n return this._filterEffect?.filters;\n },\n set filterArea(value) {\n this._filterEffect || (this._filterEffect = new FilterEffect());\n this._filterEffect.filterArea = value;\n },\n /**\n * The area the filter is applied to. This is used as more of an optimization\n * rather than figuring out the dimensions of the displayObject each frame you can set this rectangle.\n *\n * Also works as an interaction mask.\n * @memberof scene.Container#\n */\n get filterArea() {\n return this._filterEffect?.filterArea;\n }\n};\n\nexport { effectsMixin };\n//# sourceMappingURL=effectsMixin.mjs.map\n","import { deprecation, v8_0_0 } from '../../../utils/logging/deprecation.mjs';\n\n\"use strict\";\nconst findMixin = {\n /**\n * The instance label of the object.\n * @memberof scene.Container#\n * @member {string} label\n */\n label: null,\n /**\n * The instance name of the object.\n * @deprecated since 8.0.0\n * @see scene.Container#label\n * @member {string} name\n * @memberof scene.Container#\n */\n get name() {\n deprecation(v8_0_0, \"Container.name property has been removed, use Container.label instead\");\n return this.label;\n },\n set name(value) {\n deprecation(v8_0_0, \"Container.name property has been removed, use Container.label instead\");\n this.label = value;\n },\n /**\n * @method getChildByName\n * @deprecated since 8.0.0\n * @param {string} name - Instance name.\n * @param {boolean}[deep=false] - Whether to search recursively\n * @returns {Container} The child with the specified name.\n * @see scene.Container#getChildByLabel\n * @memberof scene.Container#\n */\n getChildByName(name, deep = false) {\n return this.getChildByLabel(name, deep);\n },\n /**\n * Returns the first child in the container with the specified label.\n *\n * Recursive searches are done in a pre-order traversal.\n * @memberof scene.Container#\n * @param {string|RegExp} label - Instance label.\n * @param {boolean}[deep=false] - Whether to search recursively\n * @returns {Container} The child with the specified label.\n */\n getChildByLabel(label, deep = false) {\n const children = this.children;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child.label === label || label instanceof RegExp && label.test(child.label))\n return child;\n }\n if (deep) {\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n const found = child.getChildByLabel(label, true);\n if (found) {\n return found;\n }\n }\n }\n return null;\n },\n /**\n * Returns all children in the container with the specified label.\n * @memberof scene.Container#\n * @param {string|RegExp} label - Instance label.\n * @param {boolean}[deep=false] - Whether to search recursively\n * @param {Container[]} [out=[]] - The array to store matching children in.\n * @returns {Container[]} An array of children with the specified label.\n */\n getChildrenByLabel(label, deep = false, out = []) {\n const children = this.children;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child.label === label || label instanceof RegExp && label.test(child.label)) {\n out.push(child);\n }\n }\n if (deep) {\n for (let i = 0; i < children.length; i++) {\n children[i].getChildrenByLabel(label, true, out);\n }\n }\n return out;\n }\n};\n\nexport { findMixin };\n//# sourceMappingURL=findMixin.mjs.map\n","import { Matrix } from '../../../../maths/matrix/Matrix.mjs';\nimport { Pool } from '../../../../utils/pool/Pool.mjs';\nimport { Bounds } from '../Bounds.mjs';\n\n\"use strict\";\nconst matrixPool = new Pool(Matrix);\nconst boundsPool = new Pool(Bounds);\n\nexport { boundsPool, matrixPool };\n//# sourceMappingURL=matrixAndBoundsPool.mjs.map\n","import { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { Bounds } from '../bounds/Bounds.mjs';\nimport { boundsPool } from '../bounds/utils/matrixAndBoundsPool.mjs';\n\n\"use strict\";\nconst tempMatrix = new Matrix();\nconst getFastGlobalBoundsMixin = {\n /**\n * Computes the global bounds for the container, considering its children and optionally\n * factoring in render layers. It starts by clearing the provided bounds object, then\n * recursively calculates the bounds, and finally applies the world transformation.\n * @param {boolean} [factorRenderLayers] - Whether to consider render layers in the calculation.\n * @param {Bounds} [bounds] - The bounds object to store the result. If not provided, a new one is created.\n * @returns {Bounds} The computed bounds.\n * @memberof scene.Container#\n */\n getFastGlobalBounds(factorRenderLayers, bounds) {\n bounds || (bounds = new Bounds());\n bounds.clear();\n this._getGlobalBoundsRecursive(!!factorRenderLayers, bounds, this.parentRenderLayer);\n if (!bounds.isValid) {\n bounds.set(0, 0, 0, 0);\n }\n const renderGroup = this.renderGroup || this.parentRenderGroup;\n bounds.applyMatrix(renderGroup.worldTransform);\n return bounds;\n },\n /**\n * Recursively calculates the global bounds for the container and its children.\n * It considers visibility, measurability, and effects, and applies transformations\n * as necessary to compute the bounds accurately.\n * @param {boolean} factorRenderLayers - Whether to consider render layers in the calculation.\n * @param {Bounds} bounds - The bounds object to update with the calculated values.\n * @param {IRenderLayer} currentLayer - The current render layer being processed.\n * @memberof scene.Container#\n */\n _getGlobalBoundsRecursive(factorRenderLayers, bounds, currentLayer) {\n let localBounds = bounds;\n if (factorRenderLayers && this.parentRenderLayer && this.parentRenderLayer !== currentLayer)\n return;\n if (this.localDisplayStatus !== 7 || !this.measurable) {\n return;\n }\n const manageEffects = !!this.effects.length;\n if (this.renderGroup || manageEffects) {\n localBounds = boundsPool.get().clear();\n }\n if (this.boundsArea) {\n bounds.addRect(this.boundsArea, this.worldTransform);\n } else {\n if (this.renderPipeId) {\n const viewBounds = this.bounds;\n localBounds.addFrame(\n viewBounds.minX,\n viewBounds.minY,\n viewBounds.maxX,\n viewBounds.maxY,\n this.groupTransform\n );\n }\n const children = this.children;\n for (let i = 0; i < children.length; i++) {\n children[i]._getGlobalBoundsRecursive(factorRenderLayers, localBounds, currentLayer);\n }\n }\n if (manageEffects) {\n let advanced = false;\n const renderGroup = this.renderGroup || this.parentRenderGroup;\n for (let i = 0; i < this.effects.length; i++) {\n if (this.effects[i].addBounds) {\n if (!advanced) {\n advanced = true;\n localBounds.applyMatrix(renderGroup.worldTransform);\n }\n this.effects[i].addBounds(localBounds, true);\n }\n }\n if (advanced) {\n localBounds.applyMatrix(renderGroup.worldTransform.copyTo(tempMatrix).invert());\n bounds.addBounds(localBounds, this.relativeGroupTransform);\n }\n bounds.addBounds(localBounds);\n boundsPool.return(localBounds);\n } else if (this.renderGroup) {\n bounds.addBounds(localBounds, this.relativeGroupTransform);\n boundsPool.return(localBounds);\n }\n }\n};\n\nexport { getFastGlobalBoundsMixin };\n//# sourceMappingURL=getFastGlobalBoundsMixin.mjs.map\n","import { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { matrixPool, boundsPool } from './utils/matrixAndBoundsPool.mjs';\n\n\"use strict\";\nfunction getGlobalBounds(target, skipUpdateTransform, bounds) {\n bounds.clear();\n let parentTransform;\n let pooledMatrix;\n if (target.parent) {\n if (!skipUpdateTransform) {\n pooledMatrix = matrixPool.get().identity();\n parentTransform = updateTransformBackwards(target, pooledMatrix);\n } else {\n parentTransform = target.parent.worldTransform;\n }\n } else {\n parentTransform = Matrix.IDENTITY;\n }\n _getGlobalBounds(target, bounds, parentTransform, skipUpdateTransform);\n if (pooledMatrix) {\n matrixPool.return(pooledMatrix);\n }\n if (!bounds.isValid) {\n bounds.set(0, 0, 0, 0);\n }\n return bounds;\n}\nfunction _getGlobalBounds(target, bounds, parentTransform, skipUpdateTransform) {\n if (!target.visible || !target.measurable)\n return;\n let worldTransform;\n if (!skipUpdateTransform) {\n target.updateLocalTransform();\n worldTransform = matrixPool.get();\n worldTransform.appendFrom(target.localTransform, parentTransform);\n } else {\n worldTransform = target.worldTransform;\n }\n const parentBounds = bounds;\n const preserveBounds = !!target.effects.length;\n if (preserveBounds) {\n bounds = boundsPool.get().clear();\n }\n if (target.boundsArea) {\n bounds.addRect(target.boundsArea, worldTransform);\n } else {\n if (target.bounds) {\n bounds.matrix = worldTransform;\n bounds.addBounds(target.bounds);\n }\n for (let i = 0; i < target.children.length; i++) {\n _getGlobalBounds(target.children[i], bounds, worldTransform, skipUpdateTransform);\n }\n }\n if (preserveBounds) {\n for (let i = 0; i < target.effects.length; i++) {\n target.effects[i].addBounds?.(bounds);\n }\n parentBounds.addBounds(bounds, Matrix.IDENTITY);\n boundsPool.return(bounds);\n }\n if (!skipUpdateTransform) {\n matrixPool.return(worldTransform);\n }\n}\nfunction updateTransformBackwards(target, parentTransform) {\n const parent = target.parent;\n if (parent) {\n updateTransformBackwards(parent, parentTransform);\n parent.updateLocalTransform();\n parentTransform.append(parent.localTransform);\n }\n return parentTransform;\n}\n\nexport { _getGlobalBounds, getGlobalBounds, updateTransformBackwards };\n//# sourceMappingURL=getGlobalBounds.mjs.map\n","\"use strict\";\nfunction multiplyHexColors(color1, color2) {\n if (color1 === 16777215 || !color2)\n return color2;\n if (color2 === 16777215 || !color1)\n return color1;\n const r1 = color1 >> 16 & 255;\n const g1 = color1 >> 8 & 255;\n const b1 = color1 & 255;\n const r2 = color2 >> 16 & 255;\n const g2 = color2 >> 8 & 255;\n const b2 = color2 & 255;\n const r = r1 * r2 / 255 | 0;\n const g = g1 * g2 / 255 | 0;\n const b = b1 * b2 / 255 | 0;\n return (r << 16) + (g << 8) + b;\n}\n\nexport { multiplyHexColors };\n//# sourceMappingURL=multiplyHexColors.mjs.map\n","import { multiplyHexColors } from './multiplyHexColors.mjs';\n\n\"use strict\";\nconst WHITE_BGR = 16777215;\nfunction multiplyColors(localBGRColor, parentBGRColor) {\n if (localBGRColor === WHITE_BGR) {\n return parentBGRColor;\n }\n if (parentBGRColor === WHITE_BGR) {\n return localBGRColor;\n }\n return multiplyHexColors(localBGRColor, parentBGRColor);\n}\n\nexport { multiplyColors };\n//# sourceMappingURL=multiplyColors.mjs.map\n","import { updateTransformBackwards } from '../bounds/getGlobalBounds.mjs';\nimport { matrixPool } from '../bounds/utils/matrixAndBoundsPool.mjs';\nimport { multiplyColors } from '../utils/multiplyColors.mjs';\n\n\"use strict\";\nfunction bgr2rgb(color) {\n return ((color & 255) << 16) + (color & 65280) + (color >> 16 & 255);\n}\nconst getGlobalMixin = {\n /**\n * Returns the global (compound) alpha of the container within the scene.\n * @param skipUpdate - Performance optimization flag:\n * - If false (default): Recalculates the entire alpha chain through parents for accuracy\n * - If true: Uses cached worldAlpha from the last render pass for better performance\n * @returns The resulting alpha value (between 0 and 1)\n * @example\n * // Accurate but slower - recalculates entire alpha chain\n * const preciseAlpha = container.getGlobalAlpha();\n *\n * // Faster but may be outdated - uses cached alpha\n * const cachedAlpha = container.getGlobalAlpha(true);\n */\n getGlobalAlpha(skipUpdate) {\n if (skipUpdate) {\n if (this.renderGroup) {\n return this.renderGroup.worldAlpha;\n }\n if (this.parentRenderGroup) {\n return this.parentRenderGroup.worldAlpha * this.alpha;\n }\n return this.alpha;\n }\n let alpha = this.alpha;\n let current = this.parent;\n while (current) {\n alpha *= current.alpha;\n current = current.parent;\n }\n return alpha;\n },\n /**\n * Returns the global transform matrix of the container within the scene.\n * @param matrix - Optional matrix to store the result. If not provided, a new Matrix will be created.\n * @param skipUpdate - Performance optimization flag:\n * - If false (default): Recalculates the entire transform chain for accuracy\n * - If true: Uses cached worldTransform from the last render pass for better performance\n * @returns The resulting transformation matrix (either the input matrix or a new one)\n * @example\n * // Accurate but slower - recalculates entire transform chain\n * const preciseTransform = container.getGlobalTransform();\n *\n * // Faster but may be outdated - uses cached transform\n * const cachedTransform = container.getGlobalTransform(undefined, true);\n *\n * // Reuse existing matrix\n * const existingMatrix = new Matrix();\n * container.getGlobalTransform(existingMatrix);\n */\n getGlobalTransform(matrix, skipUpdate) {\n if (skipUpdate) {\n return matrix.copyFrom(this.worldTransform);\n }\n this.updateLocalTransform();\n const parentTransform = updateTransformBackwards(this, matrixPool.get().identity());\n matrix.appendFrom(this.localTransform, parentTransform);\n matrixPool.return(parentTransform);\n return matrix;\n },\n /**\n * Returns the global (compound) tint color of the container within the scene.\n * @param skipUpdate - Performance optimization flag:\n * - If false (default): Recalculates the entire tint chain through parents for accuracy\n * - If true: Uses cached worldColor from the last render pass for better performance\n * @returns The resulting tint color as a 24-bit RGB number (0xRRGGBB)\n * @example\n * // Accurate but slower - recalculates entire tint chain\n * const preciseTint = container.getGlobalTint();\n *\n * // Faster but may be outdated - uses cached tint\n * const cachedTint = container.getGlobalTint(true);\n */\n getGlobalTint(skipUpdate) {\n if (skipUpdate) {\n if (this.renderGroup) {\n return bgr2rgb(this.renderGroup.worldColor);\n }\n if (this.parentRenderGroup) {\n return bgr2rgb(\n multiplyColors(this.localColor, this.parentRenderGroup.worldColor)\n );\n }\n return this.tint;\n }\n let color = this.localColor;\n let parent = this.parent;\n while (parent) {\n color = multiplyColors(color, parent.localColor);\n parent = parent.parent;\n }\n return bgr2rgb(color);\n }\n};\n\nexport { bgr2rgb, getGlobalMixin };\n//# sourceMappingURL=getGlobalMixin.mjs.map\n","\"use strict\";\nlet warnCount = 0;\nconst maxWarnings = 500;\nfunction warn(...args) {\n if (warnCount === maxWarnings)\n return;\n warnCount++;\n if (warnCount === maxWarnings) {\n console.warn(\"PixiJS Warning: too many warnings, no more warnings will be reported to the console by PixiJS.\");\n } else {\n console.warn(\"PixiJS Warning: \", ...args);\n }\n}\n\nexport { warn };\n//# sourceMappingURL=warn.mjs.map\n","import { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { warn } from '../../../utils/logging/warn.mjs';\nimport { matrixPool, boundsPool } from './utils/matrixAndBoundsPool.mjs';\n\n\"use strict\";\nfunction getLocalBounds(target, bounds, relativeMatrix) {\n bounds.clear();\n relativeMatrix || (relativeMatrix = Matrix.IDENTITY);\n _getLocalBounds(target, bounds, relativeMatrix, target, true);\n if (!bounds.isValid) {\n bounds.set(0, 0, 0, 0);\n }\n return bounds;\n}\nfunction _getLocalBounds(target, bounds, parentTransform, rootContainer, isRoot) {\n let relativeTransform;\n if (!isRoot) {\n if (!target.visible || !target.measurable)\n return;\n target.updateLocalTransform();\n const localTransform = target.localTransform;\n relativeTransform = matrixPool.get();\n relativeTransform.appendFrom(localTransform, parentTransform);\n } else {\n relativeTransform = matrixPool.get();\n relativeTransform = parentTransform.copyTo(relativeTransform);\n }\n const parentBounds = bounds;\n const preserveBounds = !!target.effects.length;\n if (preserveBounds) {\n bounds = boundsPool.get().clear();\n }\n if (target.boundsArea) {\n bounds.addRect(target.boundsArea, relativeTransform);\n } else {\n if (target.renderPipeId) {\n bounds.matrix = relativeTransform;\n bounds.addBounds(target.bounds);\n }\n const children = target.children;\n for (let i = 0; i < children.length; i++) {\n _getLocalBounds(children[i], bounds, relativeTransform, rootContainer, false);\n }\n }\n if (preserveBounds) {\n for (let i = 0; i < target.effects.length; i++) {\n target.effects[i].addLocalBounds?.(bounds, rootContainer);\n }\n parentBounds.addBounds(bounds, Matrix.IDENTITY);\n boundsPool.return(bounds);\n }\n matrixPool.return(relativeTransform);\n}\nfunction getParent(target, root, matrix) {\n const parent = target.parent;\n if (!parent) {\n warn(\"Item is not inside the root container\");\n return;\n }\n if (parent !== root) {\n getParent(parent, root, matrix);\n parent.updateLocalTransform();\n matrix.append(parent.localTransform);\n }\n}\n\nexport { getLocalBounds, getParent };\n//# sourceMappingURL=getLocalBounds.mjs.map\n","\"use strict\";\nfunction checkChildrenDidChange(container, previousData) {\n const children = container.children;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n const uid = child.uid;\n const didChange = (child._didViewChangeTick & 65535) << 16 | child._didContainerChangeTick & 65535;\n const index = previousData.index;\n if (previousData.data[index] !== uid || previousData.data[index + 1] !== didChange) {\n previousData.data[previousData.index] = uid;\n previousData.data[previousData.index + 1] = didChange;\n previousData.didChange = true;\n }\n previousData.index = index + 2;\n if (child.children.length) {\n checkChildrenDidChange(child, previousData);\n }\n }\n return previousData.didChange;\n}\n\nexport { checkChildrenDidChange };\n//# sourceMappingURL=checkChildrenDidChange.mjs.map\n","import { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { Bounds } from '../bounds/Bounds.mjs';\nimport { getGlobalBounds } from '../bounds/getGlobalBounds.mjs';\nimport { getLocalBounds } from '../bounds/getLocalBounds.mjs';\nimport { checkChildrenDidChange } from '../utils/checkChildrenDidChange.mjs';\n\n\"use strict\";\nconst tempMatrix = new Matrix();\nconst measureMixin = {\n _localBoundsCacheId: -1,\n _localBoundsCacheData: null,\n _setWidth(value, localWidth) {\n const sign = Math.sign(this.scale.x) || 1;\n if (localWidth !== 0) {\n this.scale.x = value / localWidth * sign;\n } else {\n this.scale.x = sign;\n }\n },\n _setHeight(value, localHeight) {\n const sign = Math.sign(this.scale.y) || 1;\n if (localHeight !== 0) {\n this.scale.y = value / localHeight * sign;\n } else {\n this.scale.y = sign;\n }\n },\n /**\n * Retrieves the local bounds of the container as a Bounds object.\n * @returns - The bounding area.\n * @memberof scene.Container#\n */\n getLocalBounds() {\n if (!this._localBoundsCacheData) {\n this._localBoundsCacheData = {\n data: [],\n index: 1,\n didChange: false,\n localBounds: new Bounds()\n };\n }\n const localBoundsCacheData = this._localBoundsCacheData;\n localBoundsCacheData.index = 1;\n localBoundsCacheData.didChange = false;\n if (localBoundsCacheData.data[0] !== this._didViewChangeTick) {\n localBoundsCacheData.didChange = true;\n localBoundsCacheData.data[0] = this._didViewChangeTick;\n }\n checkChildrenDidChange(this, localBoundsCacheData);\n if (localBoundsCacheData.didChange) {\n getLocalBounds(this, localBoundsCacheData.localBounds, tempMatrix);\n }\n return localBoundsCacheData.localBounds;\n },\n /**\n * Calculates and returns the (world) bounds of the display object as a [Rectangle]{@link Rectangle}.\n * @param skipUpdate - Setting to `true` will stop the transforms of the scene graph from\n * being updated. This means the calculation returned MAY be out of date BUT will give you a\n * nice performance boost.\n * @param bounds - Optional bounds to store the result of the bounds calculation.\n * @returns - The minimum axis-aligned rectangle in world space that fits around this object.\n * @memberof scene.Container#\n */\n getBounds(skipUpdate, bounds) {\n return getGlobalBounds(this, skipUpdate, bounds || new Bounds());\n }\n};\n\nexport { measureMixin };\n//# sourceMappingURL=measureMixin.mjs.map\n","\"use strict\";\nconst onRenderMixin = {\n _onRender: null,\n set onRender(func) {\n const renderGroup = this.renderGroup || this.parentRenderGroup;\n if (!func) {\n if (this._onRender) {\n renderGroup?.removeOnRender(this);\n }\n this._onRender = null;\n return;\n }\n if (!this._onRender) {\n renderGroup?.addOnRender(this);\n }\n this._onRender = func;\n },\n /**\n * This callback is used when the container is rendered. This is where you should add your custom\n * logic that is needed to be run every frame.\n *\n * In v7 many users used `updateTransform` for this, however the way v8 renders objects is different\n * and \"updateTransform\" is no longer called every frame\n * @example\n * const container = new Container();\n * container.onRender = () => {\n * container.rotation += 0.01;\n * };\n * @memberof scene.Container#\n */\n get onRender() {\n return this._onRender;\n }\n};\n\nexport { onRenderMixin };\n//# sourceMappingURL=onRenderMixin.mjs.map\n","\"use strict\";\nconst sortMixin = {\n _zIndex: 0,\n /**\n * Should children be sorted by zIndex at the next render call.\n *\n * Will get automatically set to true if a new child is added, or if a child's zIndex changes.\n * @type {boolean}\n * @memberof scene.Container#\n */\n sortDirty: false,\n /**\n * If set to true, the container will sort its children by `zIndex` value\n * when the next render is called, or manually if `sortChildren()` is called.\n *\n * This actually changes the order of elements in the array, so should be treated\n * as a basic solution that is not performant compared to other solutions,\n * such as {@link https://github.com/pixijs/layers PixiJS Layers}\n *\n * Also be aware of that this may not work nicely with the `addChildAt()` function,\n * as the `zIndex` sorting may cause the child to automatically sorted to another position.\n * @type {boolean}\n * @memberof scene.Container#\n */\n sortableChildren: false,\n /**\n * The zIndex of the container.\n *\n * Setting this value, will automatically set the parent to be sortable. Children will be automatically\n * sorted by zIndex value; a higher value will mean it will be moved towards the end of the array,\n * and thus rendered on top of other display objects within the same container.\n * @see scene.Container#sortableChildren\n * @memberof scene.Container#\n */\n get zIndex() {\n return this._zIndex;\n },\n set zIndex(value) {\n if (this._zIndex === value)\n return;\n this._zIndex = value;\n this.depthOfChildModified();\n },\n depthOfChildModified() {\n if (this.parent) {\n this.parent.sortableChildren = true;\n this.parent.sortDirty = true;\n }\n if (this.parentRenderGroup) {\n this.parentRenderGroup.structureDidChange = true;\n }\n },\n /**\n * Sorts children by zIndex.\n * @memberof scene.Container#\n */\n sortChildren() {\n if (!this.sortDirty)\n return;\n this.sortDirty = false;\n this.children.sort(sortChildren);\n }\n};\nfunction sortChildren(a, b) {\n return a._zIndex - b._zIndex;\n}\n\nexport { sortMixin };\n//# sourceMappingURL=sortMixin.mjs.map\n","import { Point } from '../../../maths/point/Point.mjs';\nimport { matrixPool } from '../bounds/utils/matrixAndBoundsPool.mjs';\n\n\"use strict\";\nconst toLocalGlobalMixin = {\n /**\n * Returns the global position of the container.\n * @param point - The optional point to write the global value to.\n * @param skipUpdate - Should we skip the update transform.\n * @returns - The updated point.\n * @memberof scene.Container#\n */\n getGlobalPosition(point = new Point(), skipUpdate = false) {\n if (this.parent) {\n this.parent.toGlobal(this._position, point, skipUpdate);\n } else {\n point.x = this._position.x;\n point.y = this._position.y;\n }\n return point;\n },\n /**\n * Calculates the global position of the container.\n * @param position - The world origin to calculate from.\n * @param point - A Point object in which to store the value, optional\n * (otherwise will create a new Point).\n * @param skipUpdate - Should we skip the update transform.\n * @returns - A point object representing the position of this object.\n * @memberof scene.Container#\n */\n toGlobal(position, point, skipUpdate = false) {\n const globalMatrix = this.getGlobalTransform(matrixPool.get(), skipUpdate);\n point = globalMatrix.apply(position, point);\n matrixPool.return(globalMatrix);\n return point;\n },\n /**\n * Calculates the local position of the container relative to another point.\n * @param position - The world origin to calculate from.\n * @param from - The Container to calculate the global position from.\n * @param point - A Point object in which to store the value, optional\n * (otherwise will create a new Point).\n * @param skipUpdate - Should we skip the update transform\n * @returns - A point object representing the position of this object\n * @memberof scene.Container#\n */\n toLocal(position, from, point, skipUpdate) {\n if (from) {\n position = from.toGlobal(position, point, skipUpdate);\n }\n const globalMatrix = this.getGlobalTransform(matrixPool.get(), skipUpdate);\n point = globalMatrix.applyInverse(position, point);\n matrixPool.return(globalMatrix);\n return point;\n }\n};\n\nexport { toLocalGlobalMixin };\n//# sourceMappingURL=toLocalGlobalMixin.mjs.map\n","import { uid } from '../../../../utils/data/uid.mjs';\n\n\"use strict\";\nclass InstructionSet {\n constructor() {\n /** a unique id for this instruction set used through the renderer */\n this.uid = uid(\"instructionSet\");\n /** the array of instructions */\n this.instructions = [];\n /** the actual size of the array (any instructions passed this should be ignored) */\n this.instructionSize = 0;\n this.renderables = [];\n /** used by the garbage collector to track when the instruction set was last used */\n this.gcTick = 0;\n }\n /** reset the instruction set so it can be reused set size back to 0 */\n reset() {\n this.instructionSize = 0;\n }\n /**\n * Add an instruction to the set\n * @param instruction - add an instruction to the set\n */\n add(instruction) {\n this.instructions[this.instructionSize++] = instruction;\n }\n /**\n * Log the instructions to the console (for debugging)\n * @internal\n * @ignore\n */\n log() {\n this.instructions.length = this.instructionSize;\n console.table(this.instructions, [\"type\", \"action\"]);\n }\n}\n\nexport { InstructionSet };\n//# sourceMappingURL=InstructionSet.mjs.map\n","import { nextPow2 } from '../../../../maths/misc/pow2.mjs';\nimport { TextureSource } from './sources/TextureSource.mjs';\nimport { Texture } from './Texture.mjs';\n\n\"use strict\";\nlet count = 0;\nclass TexturePoolClass {\n /**\n * @param textureOptions - options that will be passed to BaseRenderTexture constructor\n * @param {SCALE_MODE} [textureOptions.scaleMode] - See {@link SCALE_MODE} for possible values.\n */\n constructor(textureOptions) {\n this._poolKeyHash = /* @__PURE__ */ Object.create(null);\n this._texturePool = {};\n this.textureOptions = textureOptions || {};\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 * @param antialias\n */\n createTexture(pixelWidth, pixelHeight, antialias) {\n const textureSource = new TextureSource({\n ...this.textureOptions,\n width: pixelWidth,\n height: pixelHeight,\n resolution: 1,\n antialias,\n autoGarbageCollect: false\n });\n return new Texture({\n source: textureSource,\n label: `texturePool_${count++}`\n });\n }\n /**\n * Gets a Power-of-Two render texture or fullScreen texture\n * @param frameWidth - The minimum width of the render texture.\n * @param frameHeight - The minimum height of the render texture.\n * @param resolution - The resolution of the render texture.\n * @param antialias\n * @returns The new render texture.\n */\n getOptimalTexture(frameWidth, frameHeight, resolution = 1, antialias) {\n let po2Width = Math.ceil(frameWidth * resolution - 1e-6);\n let po2Height = Math.ceil(frameHeight * resolution - 1e-6);\n po2Width = nextPow2(po2Width);\n po2Height = nextPow2(po2Height);\n const key = (po2Width << 17) + (po2Height << 1) + (antialias ? 1 : 0);\n if (!this._texturePool[key]) {\n this._texturePool[key] = [];\n }\n let texture = this._texturePool[key].pop();\n if (!texture) {\n texture = this.createTexture(po2Width, po2Height, antialias);\n }\n texture.source._resolution = resolution;\n texture.source.width = po2Width / resolution;\n texture.source.height = po2Height / resolution;\n texture.source.pixelWidth = po2Width;\n texture.source.pixelHeight = po2Height;\n texture.frame.x = 0;\n texture.frame.y = 0;\n texture.frame.width = frameWidth;\n texture.frame.height = frameHeight;\n texture.updateUvs();\n this._poolKeyHash[texture.uid] = key;\n return texture;\n }\n /**\n * Gets extra texture of the same size as input renderTexture\n * @param texture - The texture to check what size it is.\n * @param antialias - Whether to use antialias.\n * @returns A texture that is a power of two\n */\n getSameSizeTexture(texture, antialias = false) {\n const source = texture.source;\n return this.getOptimalTexture(texture.width, texture.height, source._resolution, antialias);\n }\n /**\n * Place a render texture back into the pool.\n * @param renderTexture - The renderTexture to free\n */\n returnTexture(renderTexture) {\n const key = this._poolKeyHash[renderTexture.uid];\n this._texturePool[key].push(renderTexture);\n }\n /**\n * Clears the pool.\n * @param destroyTextures - Destroy all stored textures.\n */\n clear(destroyTextures) {\n destroyTextures = destroyTextures !== false;\n if (destroyTextures) {\n for (const i in this._texturePool) {\n const textures = this._texturePool[i];\n if (textures) {\n for (let j = 0; j < textures.length; j++) {\n textures[j].destroy(true);\n }\n }\n }\n }\n this._texturePool = {};\n }\n}\nconst TexturePool = new TexturePoolClass();\n\nexport { TexturePool, TexturePoolClass };\n//# sourceMappingURL=TexturePool.mjs.map\n","import { Matrix } from '../../maths/matrix/Matrix.mjs';\nimport { InstructionSet } from '../../rendering/renderers/shared/instructions/InstructionSet.mjs';\nimport { TexturePool } from '../../rendering/renderers/shared/texture/TexturePool.mjs';\n\n\"use strict\";\nclass RenderGroup {\n constructor() {\n this.renderPipeId = \"renderGroup\";\n this.root = null;\n this.canBundle = false;\n this.renderGroupParent = null;\n this.renderGroupChildren = [];\n this.worldTransform = new Matrix();\n this.worldColorAlpha = 4294967295;\n this.worldColor = 16777215;\n this.worldAlpha = 1;\n // these updates are transform changes..\n this.childrenToUpdate = /* @__PURE__ */ Object.create(null);\n this.updateTick = 0;\n this.gcTick = 0;\n // these update are renderable changes..\n this.childrenRenderablesToUpdate = { list: [], index: 0 };\n // other\n this.structureDidChange = true;\n this.instructionSet = new InstructionSet();\n this._onRenderContainers = [];\n /**\n * Indicates if the cached texture needs to be updated.\n * @default true\n */\n this.textureNeedsUpdate = true;\n /**\n * Indicates if the container should be cached as a texture.\n * @default false\n */\n this.isCachedAsTexture = false;\n this._matrixDirty = 7;\n }\n init(root) {\n this.root = root;\n if (root._onRender)\n this.addOnRender(root);\n root.didChange = true;\n const children = root.children;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n child._updateFlags = 15;\n this.addChild(child);\n }\n }\n enableCacheAsTexture(options = {}) {\n this.textureOptions = options;\n this.isCachedAsTexture = true;\n this.textureNeedsUpdate = true;\n }\n disableCacheAsTexture() {\n this.isCachedAsTexture = false;\n if (this.texture) {\n TexturePool.returnTexture(this.texture);\n this.texture = null;\n }\n }\n updateCacheTexture() {\n this.textureNeedsUpdate = true;\n }\n reset() {\n this.renderGroupChildren.length = 0;\n for (const i in this.childrenToUpdate) {\n const childrenAtDepth = this.childrenToUpdate[i];\n childrenAtDepth.list.fill(null);\n childrenAtDepth.index = 0;\n }\n this.childrenRenderablesToUpdate.index = 0;\n this.childrenRenderablesToUpdate.list.fill(null);\n this.root = null;\n this.updateTick = 0;\n this.structureDidChange = true;\n this._onRenderContainers.length = 0;\n this.renderGroupParent = null;\n this.disableCacheAsTexture();\n }\n get localTransform() {\n return this.root.localTransform;\n }\n addRenderGroupChild(renderGroupChild) {\n if (renderGroupChild.renderGroupParent) {\n renderGroupChild.renderGroupParent._removeRenderGroupChild(renderGroupChild);\n }\n renderGroupChild.renderGroupParent = this;\n this.renderGroupChildren.push(renderGroupChild);\n }\n _removeRenderGroupChild(renderGroupChild) {\n const index = this.renderGroupChildren.indexOf(renderGroupChild);\n if (index > -1) {\n this.renderGroupChildren.splice(index, 1);\n }\n renderGroupChild.renderGroupParent = null;\n }\n addChild(child) {\n this.structureDidChange = true;\n child.parentRenderGroup = this;\n child.updateTick = -1;\n if (child.parent === this.root) {\n child.relativeRenderGroupDepth = 1;\n } else {\n child.relativeRenderGroupDepth = child.parent.relativeRenderGroupDepth + 1;\n }\n child.didChange = true;\n this.onChildUpdate(child);\n if (child.renderGroup) {\n this.addRenderGroupChild(child.renderGroup);\n return;\n }\n if (child._onRender)\n this.addOnRender(child);\n const children = child.children;\n for (let i = 0; i < children.length; i++) {\n this.addChild(children[i]);\n }\n }\n removeChild(child) {\n this.structureDidChange = true;\n if (child._onRender) {\n if (!child.renderGroup) {\n this.removeOnRender(child);\n }\n }\n child.parentRenderGroup = null;\n if (child.renderGroup) {\n this._removeRenderGroupChild(child.renderGroup);\n return;\n }\n const children = child.children;\n for (let i = 0; i < children.length; i++) {\n this.removeChild(children[i]);\n }\n }\n removeChildren(children) {\n for (let i = 0; i < children.length; i++) {\n this.removeChild(children[i]);\n }\n }\n onChildUpdate(child) {\n let childrenToUpdate = this.childrenToUpdate[child.relativeRenderGroupDepth];\n if (!childrenToUpdate) {\n childrenToUpdate = this.childrenToUpdate[child.relativeRenderGroupDepth] = {\n index: 0,\n list: []\n };\n }\n childrenToUpdate.list[childrenToUpdate.index++] = child;\n }\n updateRenderable(renderable) {\n if (renderable.globalDisplayStatus < 7)\n return;\n this.instructionSet.renderPipes[renderable.renderPipeId].updateRenderable(renderable);\n renderable.didViewUpdate = false;\n }\n onChildViewUpdate(child) {\n this.childrenRenderablesToUpdate.list[this.childrenRenderablesToUpdate.index++] = child;\n }\n get isRenderable() {\n return this.root.localDisplayStatus === 7 && this.worldAlpha > 0;\n }\n /**\n * adding a container to the onRender list will make sure the user function\n * passed in to the user defined 'onRender` callBack\n * @param container - the container to add to the onRender list\n */\n addOnRender(container) {\n this._onRenderContainers.push(container);\n }\n removeOnRender(container) {\n this._onRenderContainers.splice(this._onRenderContainers.indexOf(container), 1);\n }\n runOnRender(renderer) {\n for (let i = 0; i < this._onRenderContainers.length; i++) {\n this._onRenderContainers[i]._onRender(renderer);\n }\n }\n destroy() {\n this.disableCacheAsTexture();\n this.renderGroupParent = null;\n this.root = null;\n this.childrenRenderablesToUpdate = null;\n this.childrenToUpdate = null;\n this.renderGroupChildren = null;\n this._onRenderContainers = null;\n this.instructionSet = null;\n }\n getChildren(out = []) {\n const children = this.root.children;\n for (let i = 0; i < children.length; i++) {\n this._getChildren(children[i], out);\n }\n return out;\n }\n _getChildren(container, out = []) {\n out.push(container);\n if (container.renderGroup)\n return out;\n const children = container.children;\n for (let i = 0; i < children.length; i++) {\n this._getChildren(children[i], out);\n }\n return out;\n }\n invalidateMatrices() {\n this._matrixDirty = 7;\n }\n /**\n * Returns the inverse of the world transform matrix.\n * @returns {Matrix} The inverse of the world transform matrix.\n */\n get inverseWorldTransform() {\n if ((this._matrixDirty & 1) === 0)\n return this._inverseWorldTransform;\n this._matrixDirty &= ~1;\n this._inverseWorldTransform || (this._inverseWorldTransform = new Matrix());\n return this._inverseWorldTransform.copyFrom(this.worldTransform).invert();\n }\n /**\n * Returns the inverse of the texture offset transform matrix.\n * @returns {Matrix} The inverse of the texture offset transform matrix.\n */\n get textureOffsetInverseTransform() {\n if ((this._matrixDirty & 2) === 0)\n return this._textureOffsetInverseTransform;\n this._matrixDirty &= ~2;\n this._textureOffsetInverseTransform || (this._textureOffsetInverseTransform = new Matrix());\n return this._textureOffsetInverseTransform.copyFrom(this.inverseWorldTransform).translate(\n -this._textureBounds.x,\n -this._textureBounds.y\n );\n }\n /**\n * Returns the inverse of the parent texture transform matrix.\n * This is used to properly transform coordinates when rendering into cached textures.\n * @returns {Matrix} The inverse of the parent texture transform matrix.\n */\n get inverseParentTextureTransform() {\n if ((this._matrixDirty & 4) === 0)\n return this._inverseParentTextureTransform;\n this._matrixDirty &= ~4;\n const parentCacheAsTexture = this._parentCacheAsTextureRenderGroup;\n if (parentCacheAsTexture) {\n this._inverseParentTextureTransform || (this._inverseParentTextureTransform = new Matrix());\n return this._inverseParentTextureTransform.copyFrom(this.worldTransform).prepend(parentCacheAsTexture.inverseWorldTransform).translate(\n -parentCacheAsTexture._textureBounds.x,\n -parentCacheAsTexture._textureBounds.y\n );\n }\n return this.worldTransform;\n }\n /**\n * Returns a matrix that transforms coordinates to the correct coordinate space of the texture being rendered to.\n * This is the texture offset inverse transform of the closest parent RenderGroup that is cached as a texture.\n * @returns {Matrix | null} The transform matrix for the cached texture coordinate space,\n * or null if no parent is cached as texture.\n */\n get cacheToLocalTransform() {\n if (!this._parentCacheAsTextureRenderGroup)\n return null;\n return this._parentCacheAsTextureRenderGroup.textureOffsetInverseTransform;\n }\n}\n\nexport { RenderGroup };\n//# sourceMappingURL=RenderGroup.mjs.map\n","\"use strict\";\nfunction assignWithIgnore(target, options, ignore = {}) {\n for (const key in options) {\n if (!ignore[key] && options[key] !== void 0) {\n target[key] = options[key];\n }\n }\n}\n\nexport { assignWithIgnore };\n//# sourceMappingURL=assignWithIgnore.mjs.map\n","import EventEmitter from 'eventemitter3';\nimport { Color } from '../../color/Color.mjs';\nimport { cullingMixin } from '../../culling/cullingMixin.mjs';\nimport { extensions } from '../../extensions/Extensions.mjs';\nimport { Matrix } from '../../maths/matrix/Matrix.mjs';\nimport { RAD_TO_DEG, DEG_TO_RAD } from '../../maths/misc/const.mjs';\nimport { ObservablePoint } from '../../maths/point/ObservablePoint.mjs';\nimport { uid } from '../../utils/data/uid.mjs';\nimport { deprecation, v8_0_0 } from '../../utils/logging/deprecation.mjs';\nimport { BigPool } from '../../utils/pool/PoolGroup.mjs';\nimport { cacheAsTextureMixin } from './container-mixins/cacheAsTextureMixin.mjs';\nimport { childrenHelperMixin } from './container-mixins/childrenHelperMixin.mjs';\nimport { collectRenderablesMixin } from './container-mixins/collectRenderablesMixin.mjs';\nimport { effectsMixin } from './container-mixins/effectsMixin.mjs';\nimport { findMixin } from './container-mixins/findMixin.mjs';\nimport { getFastGlobalBoundsMixin } from './container-mixins/getFastGlobalBoundsMixin.mjs';\nimport { bgr2rgb, getGlobalMixin } from './container-mixins/getGlobalMixin.mjs';\nimport { measureMixin } from './container-mixins/measureMixin.mjs';\nimport { onRenderMixin } from './container-mixins/onRenderMixin.mjs';\nimport { sortMixin } from './container-mixins/sortMixin.mjs';\nimport { toLocalGlobalMixin } from './container-mixins/toLocalGlobalMixin.mjs';\nimport { RenderGroup } from './RenderGroup.mjs';\nimport { assignWithIgnore } from './utils/assignWithIgnore.mjs';\n\n\"use strict\";\nconst defaultSkew = new ObservablePoint(null);\nconst defaultPivot = new ObservablePoint(null);\nconst defaultScale = new ObservablePoint(null, 1, 1);\nconst UPDATE_COLOR = 1;\nconst UPDATE_BLEND = 2;\nconst UPDATE_VISIBLE = 4;\nconst UPDATE_TRANSFORM = 8;\nclass Container extends EventEmitter {\n constructor(options = {}) {\n super();\n /** unique id for this container */\n this.uid = uid(\"renderable\");\n /** @private */\n this._updateFlags = 15;\n // the render group this container owns\n /** @private */\n this.renderGroup = null;\n // the render group this container belongs to\n /** @private */\n this.parentRenderGroup = null;\n // the index of the container in the render group\n /** @private */\n this.parentRenderGroupIndex = 0;\n // set to true if the container has changed. It is reset once the changes have been applied\n // by the transform system\n // its here to stop ensure that when things change, only one update gets registers with the transform system\n /** @private */\n this.didChange = false;\n // same as above, but for the renderable\n /** @private */\n this.didViewUpdate = false;\n // how deep is the container relative to its render group..\n // unless the element is the root render group - it will be relative to its parent\n /** @private */\n this.relativeRenderGroupDepth = 0;\n /**\n * The array of children of this container.\n * @readonly\n */\n this.children = [];\n /** The display object container that contains this display object. */\n this.parent = null;\n // used internally for changing up the render order.. mainly for masks and filters\n // TODO setting this should cause a rebuild??\n /** @private */\n this.includeInBuild = true;\n /** @private */\n this.measurable = true;\n /** @private */\n this.isSimple = true;\n // / /////////////Transform related props//////////////\n // used by the transform system to check if a container needs to be updated that frame\n // if the tick matches the current transform system tick, it is not updated again\n /**\n * @internal\n * @ignore\n */\n this.updateTick = -1;\n /**\n * Current transform of the object based on local factors: position, scale, other stuff.\n * @readonly\n */\n this.localTransform = new Matrix();\n /**\n * The relative group transform is a transform relative to the render group it belongs too. It will include all parent\n * transforms and up to the render group (think of it as kind of like a stage - but the stage can be nested).\n * If this container is is self a render group matrix will be relative to its parent render group\n * @readonly\n */\n this.relativeGroupTransform = new Matrix();\n /**\n * The group transform is a transform relative to the render group it belongs too.\n * If this container is render group then this will be an identity matrix. other wise it\n * will be the same as the relativeGroupTransform.\n * Use this value when actually rendering things to the screen\n * @readonly\n */\n this.groupTransform = this.relativeGroupTransform;\n /** If the object has been destroyed via destroy(). If true, it should not be used. */\n this.destroyed = false;\n // transform data..\n /**\n * The coordinate of the object relative to the local coordinates of the parent.\n * @internal\n * @ignore\n */\n this._position = new ObservablePoint(this, 0, 0);\n /**\n * The scale factor of the object.\n * @internal\n * @ignore\n */\n this._scale = defaultScale;\n /**\n * The pivot point of the container that it rotates around.\n * @internal\n * @ignore\n */\n this._pivot = defaultPivot;\n /**\n * The skew amount, on the x and y axis.\n * @internal\n * @ignore\n */\n this._skew = defaultSkew;\n /**\n * The X-coordinate value of the normalized local X axis,\n * the first column of the local transformation matrix without a scale.\n * @internal\n * @ignore\n */\n this._cx = 1;\n /**\n * The Y-coordinate value of the normalized local X axis,\n * the first column of the local transformation matrix without a scale.\n * @internal\n * @ignore\n */\n this._sx = 0;\n /**\n * The X-coordinate value of the normalized local Y axis,\n * the second column of the local transformation matrix without a scale.\n * @internal\n * @ignore\n */\n this._cy = 0;\n /**\n * The Y-coordinate value of the normalized local Y axis,\n * the second column of the local transformation matrix without a scale.\n * @internal\n * @ignore\n */\n this._sy = 1;\n /**\n * The rotation amount.\n * @internal\n * @ignore\n */\n this._rotation = 0;\n // / COLOR related props //////////////\n // color stored as ABGR\n this.localColor = 16777215;\n this.localAlpha = 1;\n this.groupAlpha = 1;\n // A\n this.groupColor = 16777215;\n // BGR\n this.groupColorAlpha = 4294967295;\n // ABGR\n // / BLEND related props //////////////\n /**\n * @internal\n * @ignore\n */\n this.localBlendMode = \"inherit\";\n /**\n * @internal\n * @ignore\n */\n this.groupBlendMode = \"normal\";\n // / VISIBILITY related props //////////////\n // visibility\n // 0b11\n // first bit is visible, second bit is renderable\n /**\n * This property holds three bits: culled, visible, renderable\n * the third bit represents culling (0 = culled, 1 = not culled) 0b100\n * the second bit represents visibility (0 = not visible, 1 = visible) 0b010\n * the first bit represents renderable (0 = not renderable, 1 = renderable) 0b001\n * @internal\n * @ignore\n */\n this.localDisplayStatus = 7;\n // 0b11 | 0b10 | 0b01 | 0b00\n /**\n * @internal\n * @ignore\n */\n this.globalDisplayStatus = 7;\n /**\n * A value that increments each time the containe is modified\n * eg children added, removed etc\n * @ignore\n */\n this._didContainerChangeTick = 0;\n /**\n * A value that increments each time the container view is modified\n * eg texture swap, geometry change etc\n * @ignore\n */\n this._didViewChangeTick = 0;\n /**\n * property that tracks if the container transform has changed\n * @ignore\n */\n this._didLocalTransformChangeId = -1;\n this.effects = [];\n assignWithIgnore(this, options, {\n children: true,\n parent: true,\n effects: true\n });\n options.children?.forEach((child) => this.addChild(child));\n options.parent?.addChild(this);\n }\n /**\n * Mixes all enumerable properties and methods from a source object to Container.\n * @param source - The source of properties and methods to mix in.\n * @deprecated since 8.8.0\n */\n static mixin(source) {\n deprecation(\"8.8.0\", \"Container.mixin is deprecated, please use extensions.mixin instead.\");\n extensions.mixin(Container, source);\n }\n // = 'default';\n /**\n * We now use the _didContainerChangeTick and _didViewChangeTick to track changes\n * @deprecated since 8.2.6\n * @ignore\n */\n set _didChangeId(value) {\n this._didViewChangeTick = value >> 12 & 4095;\n this._didContainerChangeTick = value & 4095;\n }\n get _didChangeId() {\n return this._didContainerChangeTick & 4095 | (this._didViewChangeTick & 4095) << 12;\n }\n /**\n * Adds one or more children to the container.\n *\n * Multiple items can be added like so: `myContainer.addChild(thingOne, thingTwo, thingThree)`\n * @param {...Container} children - The Container(s) to add to the container\n * @returns {Container} - The first child that was added.\n */\n addChild(...children) {\n if (!this.allowChildren) {\n deprecation(v8_0_0, \"addChild: Only Containers will be allowed to add children in v8.0.0\");\n }\n if (children.length > 1) {\n for (let i = 0; i < children.length; i++) {\n this.addChild(children[i]);\n }\n return children[0];\n }\n const child = children[0];\n const renderGroup = this.renderGroup || this.parentRenderGroup;\n if (child.parent === this) {\n this.children.splice(this.children.indexOf(child), 1);\n this.children.push(child);\n if (renderGroup) {\n renderGroup.structureDidChange = true;\n }\n return child;\n }\n if (child.parent) {\n child.parent.removeChild(child);\n }\n this.children.push(child);\n if (this.sortableChildren)\n this.sortDirty = true;\n child.parent = this;\n child.didChange = true;\n child._updateFlags = 15;\n if (renderGroup) {\n renderGroup.addChild(child);\n }\n this.emit(\"childAdded\", child, this, this.children.length - 1);\n child.emit(\"added\", this);\n this._didViewChangeTick++;\n if (child._zIndex !== 0) {\n child.depthOfChildModified();\n }\n return child;\n }\n /**\n * Removes one or more children from the container.\n * @param {...Container} children - The Container(s) to remove\n * @returns {Container} The first child that was removed.\n */\n removeChild(...children) {\n if (children.length > 1) {\n for (let i = 0; i < children.length; i++) {\n this.removeChild(children[i]);\n }\n return children[0];\n }\n const child = children[0];\n const index = this.children.indexOf(child);\n if (index > -1) {\n this._didViewChangeTick++;\n this.children.splice(index, 1);\n if (this.renderGroup) {\n this.renderGroup.removeChild(child);\n } else if (this.parentRenderGroup) {\n this.parentRenderGroup.removeChild(child);\n }\n if (child.parentRenderLayer) {\n child.parentRenderLayer.detach(child);\n }\n child.parent = null;\n this.emit(\"childRemoved\", child, this, index);\n child.emit(\"removed\", this);\n }\n return child;\n }\n /** @ignore */\n _onUpdate(point) {\n if (point) {\n if (point === this._skew) {\n this._updateSkew();\n }\n }\n this._didContainerChangeTick++;\n if (this.didChange)\n return;\n this.didChange = true;\n if (this.parentRenderGroup) {\n this.parentRenderGroup.onChildUpdate(this);\n }\n }\n set isRenderGroup(value) {\n if (!!this.renderGroup === value)\n return;\n if (value) {\n this.enableRenderGroup();\n } else {\n this.disableRenderGroup();\n }\n }\n /**\n * Returns true if this container is a render group.\n * This means that it will be rendered as a separate pass, with its own set of instructions\n */\n get isRenderGroup() {\n return !!this.renderGroup;\n }\n /**\n * Calling this enables a render group for this container.\n * This means it will be rendered as a separate set of instructions.\n * The transform of the container will also be handled on the GPU rather than the CPU.\n */\n enableRenderGroup() {\n if (this.renderGroup)\n return;\n const parentRenderGroup = this.parentRenderGroup;\n parentRenderGroup?.removeChild(this);\n this.renderGroup = BigPool.get(RenderGroup, this);\n this.groupTransform = Matrix.IDENTITY;\n parentRenderGroup?.addChild(this);\n this._updateIsSimple();\n }\n /** This will disable the render group for this container. */\n disableRenderGroup() {\n if (!this.renderGroup)\n return;\n const parentRenderGroup = this.parentRenderGroup;\n parentRenderGroup?.removeChild(this);\n BigPool.return(this.renderGroup);\n this.renderGroup = null;\n this.groupTransform = this.relativeGroupTransform;\n parentRenderGroup?.addChild(this);\n this._updateIsSimple();\n }\n /** @ignore */\n _updateIsSimple() {\n this.isSimple = !this.renderGroup && this.effects.length === 0;\n }\n /**\n * Current transform of the object based on world (parent) factors.\n * @readonly\n */\n get worldTransform() {\n this._worldTransform || (this._worldTransform = new Matrix());\n if (this.renderGroup) {\n this._worldTransform.copyFrom(this.renderGroup.worldTransform);\n } else if (this.parentRenderGroup) {\n this._worldTransform.appendFrom(this.relativeGroupTransform, this.parentRenderGroup.worldTransform);\n }\n return this._worldTransform;\n }\n /**\n * The position of the container on the x axis relative to the local coordinates of the parent.\n * An alias to position.x\n */\n get x() {\n return this._position.x;\n }\n set x(value) {\n this._position.x = value;\n }\n /**\n * The position of the container on the y axis relative to the local coordinates of the parent.\n * An alias to position.y\n */\n get y() {\n return this._position.y;\n }\n set y(value) {\n this._position.y = value;\n }\n /**\n * The coordinate of the object relative to the local coordinates of the parent.\n * @since 4.0.0\n */\n get position() {\n return this._position;\n }\n set position(value) {\n this._position.copyFrom(value);\n }\n /**\n * The rotation of the object in radians.\n * 'rotation' and 'angle' have the same effect on a display object; rotation is in radians, angle is in degrees.\n */\n get rotation() {\n return this._rotation;\n }\n set rotation(value) {\n if (this._rotation !== value) {\n this._rotation = value;\n this._onUpdate(this._skew);\n }\n }\n /**\n * The angle of the object in degrees.\n * 'rotation' and 'angle' have the same effect on a display object; rotation is in radians, angle is in degrees.\n */\n get angle() {\n return this.rotation * RAD_TO_DEG;\n }\n set angle(value) {\n this.rotation = value * DEG_TO_RAD;\n }\n /**\n * The center of rotation, scaling, and skewing for this display object in its local space. The `position`\n * is the projection of `pivot` in the parent's local space.\n *\n * By default, the pivot is the origin (0, 0).\n * @since 4.0.0\n */\n get pivot() {\n if (this._pivot === defaultPivot) {\n this._pivot = new ObservablePoint(this, 0, 0);\n }\n return this._pivot;\n }\n set pivot(value) {\n if (this._pivot === defaultPivot) {\n this._pivot = new ObservablePoint(this, 0, 0);\n }\n typeof value === \"number\" ? this._pivot.set(value) : this._pivot.copyFrom(value);\n }\n /**\n * The skew factor for the object in radians.\n * @since 4.0.0\n */\n get skew() {\n if (this._skew === defaultSkew) {\n this._skew = new ObservablePoint(this, 0, 0);\n }\n return this._skew;\n }\n set skew(value) {\n if (this._skew === defaultSkew) {\n this._skew = new ObservablePoint(this, 0, 0);\n }\n this._skew.copyFrom(value);\n }\n /**\n * The scale factors of this object along the local coordinate axes.\n *\n * The default scale is (1, 1).\n * @since 4.0.0\n */\n get scale() {\n if (this._scale === defaultScale) {\n this._scale = new ObservablePoint(this, 1, 1);\n }\n return this._scale;\n }\n set scale(value) {\n if (this._scale === defaultScale) {\n this._scale = new ObservablePoint(this, 0, 0);\n }\n typeof value === \"number\" ? this._scale.set(value) : this._scale.copyFrom(value);\n }\n /**\n * The width of the Container, setting this will actually modify the scale to achieve the value set.\n * @memberof scene.Container#\n */\n get width() {\n return Math.abs(this.scale.x * this.getLocalBounds().width);\n }\n set width(value) {\n const localWidth = this.getLocalBounds().width;\n this._setWidth(value, localWidth);\n }\n /**\n * The height of the Container, setting this will actually modify the scale to achieve the value set.\n * @memberof scene.Container#\n */\n get height() {\n return Math.abs(this.scale.y * this.getLocalBounds().height);\n }\n set height(value) {\n const localHeight = this.getLocalBounds().height;\n this._setHeight(value, localHeight);\n }\n /**\n * Retrieves the size of the container as a [Size]{@link Size} object.\n * This is faster than get the width and height separately.\n * @param out - Optional object to store the size in.\n * @returns - The size of the container.\n * @memberof scene.Container#\n */\n getSize(out) {\n if (!out) {\n out = {};\n }\n const bounds = this.getLocalBounds();\n out.width = Math.abs(this.scale.x * bounds.width);\n out.height = Math.abs(this.scale.y * bounds.height);\n return out;\n }\n /**\n * Sets the size of the container to the specified width and height.\n * This is faster than setting the width and height separately.\n * @param value - This can be either a number or a [Size]{@link Size} object.\n * @param height - The height to set. Defaults to the value of `width` if not provided.\n * @memberof scene.Container#\n */\n setSize(value, height) {\n const size = this.getLocalBounds();\n if (typeof value === \"object\") {\n height = value.height ?? value.width;\n value = value.width;\n } else {\n height ?? (height = value);\n }\n value !== void 0 && this._setWidth(value, size.width);\n height !== void 0 && this._setHeight(height, size.height);\n }\n /** Called when the skew or the rotation changes. */\n _updateSkew() {\n const rotation = this._rotation;\n const skew = this._skew;\n this._cx = Math.cos(rotation + skew._y);\n this._sx = Math.sin(rotation + skew._y);\n this._cy = -Math.sin(rotation - skew._x);\n this._sy = Math.cos(rotation - skew._x);\n }\n /**\n * Updates the transform properties of the container (accepts partial values).\n * @param {object} opts - The options for updating the transform.\n * @param {number} opts.x - The x position of the container.\n * @param {number} opts.y - The y position of the container.\n * @param {number} opts.scaleX - The scale factor on the x-axis.\n * @param {number} opts.scaleY - The scale factor on the y-axis.\n * @param {number} opts.rotation - The rotation of the container, in radians.\n * @param {number} opts.skewX - The skew factor on the x-axis.\n * @param {number} opts.skewY - The skew factor on the y-axis.\n * @param {number} opts.pivotX - The x coordinate of the pivot point.\n * @param {number} opts.pivotY - The y coordinate of the pivot point.\n */\n updateTransform(opts) {\n this.position.set(\n typeof opts.x === \"number\" ? opts.x : this.position.x,\n typeof opts.y === \"number\" ? opts.y : this.position.y\n );\n this.scale.set(\n typeof opts.scaleX === \"number\" ? opts.scaleX || 1 : this.scale.x,\n typeof opts.scaleY === \"number\" ? opts.scaleY || 1 : this.scale.y\n );\n this.rotation = typeof opts.rotation === \"number\" ? opts.rotation : this.rotation;\n this.skew.set(\n typeof opts.skewX === \"number\" ? opts.skewX : this.skew.x,\n typeof opts.skewY === \"number\" ? opts.skewY : this.skew.y\n );\n this.pivot.set(\n typeof opts.pivotX === \"number\" ? opts.pivotX : this.pivot.x,\n typeof opts.pivotY === \"number\" ? opts.pivotY : this.pivot.y\n );\n return this;\n }\n /**\n * Updates the local transform using the given matrix.\n * @param matrix - The matrix to use for updating the transform.\n */\n setFromMatrix(matrix) {\n matrix.decompose(this);\n }\n /** Updates the local transform. */\n updateLocalTransform() {\n const localTransformChangeId = this._didContainerChangeTick;\n if (this._didLocalTransformChangeId === localTransformChangeId)\n return;\n this._didLocalTransformChangeId = localTransformChangeId;\n const lt = this.localTransform;\n const scale = this._scale;\n const pivot = this._pivot;\n const position = this._position;\n const sx = scale._x;\n const sy = scale._y;\n const px = pivot._x;\n const py = pivot._y;\n lt.a = this._cx * sx;\n lt.b = this._sx * sx;\n lt.c = this._cy * sy;\n lt.d = this._sy * sy;\n lt.tx = position._x - (px * lt.a + py * lt.c);\n lt.ty = position._y - (px * lt.b + py * lt.d);\n }\n // / ///// color related stuff\n set alpha(value) {\n if (value === this.localAlpha)\n return;\n this.localAlpha = value;\n this._updateFlags |= UPDATE_COLOR;\n this._onUpdate();\n }\n /** The opacity of the object. */\n get alpha() {\n return this.localAlpha;\n }\n set tint(value) {\n const tempColor = Color.shared.setValue(value ?? 16777215);\n const bgr = tempColor.toBgrNumber();\n if (bgr === this.localColor)\n return;\n this.localColor = bgr;\n this._updateFlags |= UPDATE_COLOR;\n this._onUpdate();\n }\n /**\n * The tint applied to the sprite. This is a hex value.\n *\n * A value of 0xFFFFFF will remove any tint effect.\n * @default 0xFFFFFF\n */\n get tint() {\n return bgr2rgb(this.localColor);\n }\n // / //////////////// blend related stuff\n set blendMode(value) {\n if (this.localBlendMode === value)\n return;\n if (this.parentRenderGroup) {\n this.parentRenderGroup.structureDidChange = true;\n }\n this._updateFlags |= UPDATE_BLEND;\n this.localBlendMode = value;\n this._onUpdate();\n }\n /**\n * The blend mode to be applied to the sprite. Apply a value of `'normal'` to reset the blend mode.\n * @default 'normal'\n */\n get blendMode() {\n return this.localBlendMode;\n }\n // / ///////// VISIBILITY / RENDERABLE /////////////////\n /** The visibility of the object. If false the object will not be drawn, and the transform will not be updated. */\n get visible() {\n return !!(this.localDisplayStatus & 2);\n }\n set visible(value) {\n const valueNumber = value ? 2 : 0;\n if ((this.localDisplayStatus & 2) === valueNumber)\n return;\n if (this.parentRenderGroup) {\n this.parentRenderGroup.structureDidChange = true;\n }\n this._updateFlags |= UPDATE_VISIBLE;\n this.localDisplayStatus ^= 2;\n this._onUpdate();\n }\n /** @ignore */\n get culled() {\n return !(this.localDisplayStatus & 4);\n }\n /** @ignore */\n set culled(value) {\n const valueNumber = value ? 0 : 4;\n if ((this.localDisplayStatus & 4) === valueNumber)\n return;\n if (this.parentRenderGroup) {\n this.parentRenderGroup.structureDidChange = true;\n }\n this._updateFlags |= UPDATE_VISIBLE;\n this.localDisplayStatus ^= 4;\n this._onUpdate();\n }\n /** Can this object be rendered, if false the object will not be drawn but the transform will still be updated. */\n get renderable() {\n return !!(this.localDisplayStatus & 1);\n }\n set renderable(value) {\n const valueNumber = value ? 1 : 0;\n if ((this.localDisplayStatus & 1) === valueNumber)\n return;\n this._updateFlags |= UPDATE_VISIBLE;\n this.localDisplayStatus ^= 1;\n if (this.parentRenderGroup) {\n this.parentRenderGroup.structureDidChange = true;\n }\n this._onUpdate();\n }\n /** Whether or not the object should be rendered. */\n get isRenderable() {\n return this.localDisplayStatus === 7 && this.groupAlpha > 0;\n }\n /**\n * Removes all internal references and listeners as well as removes children from the display list.\n * Do not use a Container after calling `destroy`.\n * @param options - Options parameter. A boolean will act as if all options\n * have been set to that value\n * @param {boolean} [options.children=false] - if set to true, all the children will have their destroy\n * method called as well. 'options' will be passed on to those calls.\n * @param {boolean} [options.texture=false] - Only used for children with textures e.g. Sprites. If options.children\n * is set to true it should destroy the texture of the child sprite\n * @param {boolean} [options.textureSource=false] - Only used for children with textures e.g. Sprites.\n * If options.children is set to true it should destroy the texture source of the child sprite\n * @param {boolean} [options.context=false] - Only used for children with graphicsContexts e.g. Graphics.\n * If options.children is set to true it should destroy the context of the child graphics\n */\n destroy(options = false) {\n if (this.destroyed)\n return;\n this.destroyed = true;\n let oldChildren;\n if (this.children.length) {\n oldChildren = this.removeChildren(0, this.children.length);\n }\n this.removeFromParent();\n this.parent = null;\n this._maskEffect = null;\n this._filterEffect = null;\n this.effects = null;\n this._position = null;\n this._scale = null;\n this._pivot = null;\n this._skew = null;\n this.emit(\"destroyed\", this);\n this.removeAllListeners();\n const destroyChildren = typeof options === \"boolean\" ? options : options?.children;\n if (destroyChildren && oldChildren) {\n for (let i = 0; i < oldChildren.length; ++i) {\n oldChildren[i].destroy(options);\n }\n }\n this.renderGroup?.destroy();\n this.renderGroup = null;\n }\n}\nextensions.mixin(\n Container,\n childrenHelperMixin,\n getFastGlobalBoundsMixin,\n toLocalGlobalMixin,\n onRenderMixin,\n measureMixin,\n effectsMixin,\n findMixin,\n sortMixin,\n cullingMixin,\n cacheAsTextureMixin,\n getGlobalMixin,\n collectRenderablesMixin\n);\n\nexport { Container, UPDATE_BLEND, UPDATE_COLOR, UPDATE_TRANSFORM, UPDATE_VISIBLE };\n//# sourceMappingURL=Container.mjs.map\n","import { Bounds } from '../container/bounds/Bounds.mjs';\nimport { Container } from '../container/Container.mjs';\n\n\"use strict\";\nclass ViewContainer extends Container {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(options) {\n super(options);\n /** @private */\n this.canBundle = true;\n /** @private */\n this.allowChildren = false;\n /** @private */\n this._roundPixels = 0;\n /** @private */\n this._lastUsed = -1;\n this._bounds = new Bounds(0, 1, 0, 0);\n this._boundsDirty = true;\n }\n /**\n * The local bounds of the view.\n * @type {rendering.Bounds}\n */\n get bounds() {\n if (!this._boundsDirty)\n return this._bounds;\n this.updateBounds();\n this._boundsDirty = false;\n return this._bounds;\n }\n /**\n * Whether or not to round the x/y position of the sprite.\n * @type {boolean}\n */\n get roundPixels() {\n return !!this._roundPixels;\n }\n set roundPixels(value) {\n this._roundPixels = value ? 1 : 0;\n }\n /**\n * Checks if the object contains the given point.\n * @param point - The point to check\n */\n containsPoint(point) {\n const bounds = this.bounds;\n const { x, y } = point;\n return x >= bounds.minX && x <= bounds.maxX && y >= bounds.minY && y <= bounds.maxY;\n }\n /** @private */\n onViewUpdate() {\n this._didViewChangeTick++;\n this._boundsDirty = true;\n if (this.didViewUpdate)\n return;\n this.didViewUpdate = true;\n const renderGroup = this.renderGroup || this.parentRenderGroup;\n if (renderGroup) {\n renderGroup.onChildViewUpdate(this);\n }\n }\n destroy(options) {\n super.destroy(options);\n this._bounds = null;\n }\n collectRenderablesSimple(instructionSet, renderer, currentLayer) {\n const { renderPipes, renderableGC } = renderer;\n renderPipes.blendMode.setBlendMode(this, this.groupBlendMode, instructionSet);\n const rp = renderPipes;\n rp[this.renderPipeId].addRenderable(this, instructionSet);\n renderableGC.addRenderable(this);\n this.didViewUpdate = false;\n const children = this.children;\n const length = children.length;\n for (let i = 0; i < length; i++) {\n children[i].collectRenderables(instructionSet, renderer, currentLayer);\n }\n }\n}\n\nexport { ViewContainer };\n//# sourceMappingURL=ViewContainer.mjs.map\n","import { ObservablePoint } from '../../maths/point/ObservablePoint.mjs';\nimport { Texture } from '../../rendering/renderers/shared/texture/Texture.mjs';\nimport { updateQuadBounds } from '../../utils/data/updateQuadBounds.mjs';\nimport { deprecation } from '../../utils/logging/deprecation.mjs';\nimport { ViewContainer } from '../view/ViewContainer.mjs';\n\n\"use strict\";\nclass Sprite extends ViewContainer {\n /**\n * @param options - The options for creating the sprite.\n */\n constructor(options = Texture.EMPTY) {\n if (options instanceof Texture) {\n options = { texture: options };\n }\n const { texture = Texture.EMPTY, anchor, roundPixels, width, height, ...rest } = options;\n super({\n label: \"Sprite\",\n ...rest\n });\n this.renderPipeId = \"sprite\";\n this.batched = true;\n this._visualBounds = { minX: 0, maxX: 1, minY: 0, maxY: 0 };\n this._anchor = new ObservablePoint(\n {\n _onUpdate: () => {\n this.onViewUpdate();\n }\n }\n );\n if (anchor) {\n this.anchor = anchor;\n } else if (texture.defaultAnchor) {\n this.anchor = texture.defaultAnchor;\n }\n this.texture = texture;\n this.allowChildren = false;\n this.roundPixels = roundPixels ?? false;\n if (width !== void 0)\n this.width = width;\n if (height !== void 0)\n this.height = height;\n }\n /**\n * Helper function that creates a new sprite based on the source you provide.\n * The source can be - frame id, image, video, canvas element, video element, texture\n * @param source - Source to create texture from\n * @param [skipCache] - Whether to skip the cache or not\n * @returns The newly created sprite\n */\n static from(source, skipCache = false) {\n if (source instanceof Texture) {\n return new Sprite(source);\n }\n return new Sprite(Texture.from(source, skipCache));\n }\n set texture(value) {\n value || (value = Texture.EMPTY);\n const currentTexture = this._texture;\n if (currentTexture === value)\n return;\n if (currentTexture && currentTexture.dynamic)\n currentTexture.off(\"update\", this.onViewUpdate, this);\n if (value.dynamic)\n value.on(\"update\", this.onViewUpdate, this);\n this._texture = value;\n if (this._width) {\n this._setWidth(this._width, this._texture.orig.width);\n }\n if (this._height) {\n this._setHeight(this._height, this._texture.orig.height);\n }\n this.onViewUpdate();\n }\n /** The texture that the sprite is using. */\n get texture() {\n return this._texture;\n }\n /**\n * The bounds of the sprite, taking the texture's trim into account.\n * @type {rendering.Bounds}\n */\n get visualBounds() {\n updateQuadBounds(this._visualBounds, this._anchor, this._texture);\n return this._visualBounds;\n }\n /**\n * @deprecated\n */\n get sourceBounds() {\n deprecation(\"8.6.1\", \"Sprite.sourceBounds is deprecated, use visualBounds instead.\");\n return this.visualBounds;\n }\n /** @private */\n updateBounds() {\n const anchor = this._anchor;\n const texture = this._texture;\n const bounds = this._bounds;\n const { width, height } = texture.orig;\n bounds.minX = -anchor._x * width;\n bounds.maxX = bounds.minX + width;\n bounds.minY = -anchor._y * height;\n bounds.maxY = bounds.minY + height;\n }\n /**\n * Destroys this sprite renderable and optionally its texture.\n * @param options - Options parameter. A boolean will act as if all options\n * have been set to that value\n * @param {boolean} [options.texture=false] - Should it destroy the current texture of the renderable as well\n * @param {boolean} [options.textureSource=false] - Should it destroy the textureSource of the renderable as well\n */\n destroy(options = false) {\n super.destroy(options);\n const destroyTexture = typeof options === \"boolean\" ? options : options?.texture;\n if (destroyTexture) {\n const destroyTextureSource = typeof options === \"boolean\" ? options : options?.textureSource;\n this._texture.destroy(destroyTextureSource);\n }\n this._texture = null;\n this._visualBounds = null;\n this._bounds = null;\n this._anchor = null;\n }\n /**\n * The anchor sets the origin point of the sprite. The default value is taken from the {@link Texture}\n * and passed to the constructor.\n *\n * The default is `(0,0)`, this means the sprite's origin is the top left.\n *\n * Setting the anchor to `(0.5,0.5)` means the sprite's origin is centered.\n *\n * Setting the anchor to `(1,1)` would mean the sprite's origin point will be the bottom right corner.\n *\n * If you pass only single parameter, it will set both x and y to the same value as shown in the example below.\n * @example\n * import { Sprite } from 'pixi.js';\n *\n * const sprite = new Sprite({texture: Texture.WHITE});\n * sprite.anchor.set(0.5); // This will set the origin to center. (0.5) is same as (0.5, 0.5).\n */\n get anchor() {\n return this._anchor;\n }\n set anchor(value) {\n typeof value === \"number\" ? this._anchor.set(value) : this._anchor.copyFrom(value);\n }\n /** The width of the sprite, setting this will actually modify the scale to achieve the value set. */\n get width() {\n return Math.abs(this.scale.x) * this._texture.orig.width;\n }\n set width(value) {\n this._setWidth(value, this._texture.orig.width);\n this._width = value;\n }\n /** The height of the sprite, setting this will actually modify the scale to achieve the value set. */\n get height() {\n return Math.abs(this.scale.y) * this._texture.orig.height;\n }\n set height(value) {\n this._setHeight(value, this._texture.orig.height);\n this._height = value;\n }\n /**\n * Retrieves the size of the Sprite as a [Size]{@link Size} object.\n * This is faster than get the width and height separately.\n * @param out - Optional object to store the size in.\n * @returns - The size of the Sprite.\n */\n getSize(out) {\n out || (out = {});\n out.width = Math.abs(this.scale.x) * this._texture.orig.width;\n out.height = Math.abs(this.scale.y) * this._texture.orig.height;\n return out;\n }\n /**\n * Sets the size of the Sprite to the specified width and height.\n * This is faster than setting the width and height separately.\n * @param value - This can be either a number or a [Size]{@link Size} object.\n * @param height - The height to set. Defaults to the value of `width` if not provided.\n */\n setSize(value, height) {\n if (typeof value === \"object\") {\n height = value.height ?? value.width;\n value = value.width;\n } else {\n height ?? (height = value);\n }\n value !== void 0 && this._setWidth(value, this._texture.orig.width);\n height !== void 0 && this._setHeight(height, this._texture.orig.height);\n }\n}\n\nexport { Sprite };\n//# sourceMappingURL=Sprite.mjs.map\n","import { Bounds } from '../../../scene/container/bounds/Bounds.mjs';\nimport { getGlobalBounds } from '../../../scene/container/bounds/getGlobalBounds.mjs';\n\n\"use strict\";\nconst tempBounds = new Bounds();\nfunction addMaskBounds(mask, bounds, skipUpdateTransform) {\n const boundsToMask = tempBounds;\n mask.measurable = true;\n getGlobalBounds(mask, skipUpdateTransform, boundsToMask);\n bounds.addBoundsMask(boundsToMask);\n mask.measurable = false;\n}\n\nexport { addMaskBounds };\n//# sourceMappingURL=addMaskBounds.mjs.map\n","import { getLocalBounds } from '../../../scene/container/bounds/getLocalBounds.mjs';\nimport { boundsPool, matrixPool } from '../../../scene/container/bounds/utils/matrixAndBoundsPool.mjs';\nimport { warn } from '../../../utils/logging/warn.mjs';\n\n\"use strict\";\nfunction addMaskLocalBounds(mask, bounds, localRoot) {\n const boundsToMask = boundsPool.get();\n mask.measurable = true;\n const tempMatrix = matrixPool.get().identity();\n const relativeMask = getMatrixRelativeToParent(mask, localRoot, tempMatrix);\n getLocalBounds(mask, boundsToMask, relativeMask);\n mask.measurable = false;\n bounds.addBoundsMask(boundsToMask);\n matrixPool.return(tempMatrix);\n boundsPool.return(boundsToMask);\n}\nfunction getMatrixRelativeToParent(target, root, matrix) {\n if (!target) {\n warn(\"Mask bounds, renderable is not inside the root container\");\n return matrix;\n }\n if (target !== root) {\n getMatrixRelativeToParent(target.parent, root, matrix);\n target.updateLocalTransform();\n matrix.append(target.localTransform);\n }\n return matrix;\n}\n\nexport { addMaskLocalBounds, getMatrixRelativeToParent };\n//# sourceMappingURL=addMaskLocalBounds.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Sprite } from '../../../scene/sprite/Sprite.mjs';\nimport { addMaskBounds } from '../utils/addMaskBounds.mjs';\nimport { addMaskLocalBounds } from '../utils/addMaskLocalBounds.mjs';\n\n\"use strict\";\nclass AlphaMask {\n constructor(options) {\n this.priority = 0;\n this.inverse = false;\n this.pipe = \"alphaMask\";\n if (options?.mask) {\n this.init(options.mask);\n }\n }\n init(mask) {\n this.mask = mask;\n this.renderMaskToTexture = !(mask instanceof Sprite);\n this.mask.renderable = this.renderMaskToTexture;\n this.mask.includeInBuild = !this.renderMaskToTexture;\n this.mask.measurable = false;\n }\n reset() {\n this.mask.measurable = true;\n this.mask = null;\n }\n addBounds(bounds, skipUpdateTransform) {\n if (!this.inverse) {\n addMaskBounds(this.mask, bounds, skipUpdateTransform);\n }\n }\n addLocalBounds(bounds, localRoot) {\n addMaskLocalBounds(this.mask, bounds, localRoot);\n }\n containsPoint(point, hitTestFn) {\n const mask = this.mask;\n return hitTestFn(mask, point);\n }\n destroy() {\n this.reset();\n }\n static test(mask) {\n return mask instanceof Sprite;\n }\n}\nAlphaMask.extension = ExtensionType.MaskEffect;\n\nexport { AlphaMask };\n//# sourceMappingURL=AlphaMask.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass ColorMask {\n constructor(options) {\n this.priority = 0;\n this.pipe = \"colorMask\";\n if (options?.mask) {\n this.init(options.mask);\n }\n }\n init(mask) {\n this.mask = mask;\n }\n destroy() {\n }\n static test(mask) {\n return typeof mask === \"number\";\n }\n}\nColorMask.extension = ExtensionType.MaskEffect;\n\nexport { ColorMask };\n//# sourceMappingURL=ColorMask.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Container } from '../../../scene/container/Container.mjs';\nimport { addMaskBounds } from '../utils/addMaskBounds.mjs';\nimport { addMaskLocalBounds } from '../utils/addMaskLocalBounds.mjs';\n\n\"use strict\";\nclass StencilMask {\n constructor(options) {\n this.priority = 0;\n this.pipe = \"stencilMask\";\n if (options?.mask) {\n this.init(options.mask);\n }\n }\n init(mask) {\n this.mask = mask;\n this.mask.includeInBuild = false;\n this.mask.measurable = false;\n }\n reset() {\n this.mask.measurable = true;\n this.mask.includeInBuild = true;\n this.mask = null;\n }\n addBounds(bounds, skipUpdateTransform) {\n addMaskBounds(this.mask, bounds, skipUpdateTransform);\n }\n addLocalBounds(bounds, localRoot) {\n addMaskLocalBounds(this.mask, bounds, localRoot);\n }\n containsPoint(point, hitTestFn) {\n const mask = this.mask;\n return hitTestFn(mask, point);\n }\n destroy() {\n this.reset();\n }\n static test(mask) {\n return mask instanceof Container;\n }\n}\nStencilMask.extension = ExtensionType.MaskEffect;\n\nexport { StencilMask };\n//# sourceMappingURL=StencilMask.mjs.map\n","\"use strict\";\nconst BrowserAdapter = {\n createCanvas: (width, height) => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n },\n getCanvasRenderingContext2D: () => CanvasRenderingContext2D,\n getWebGLRenderingContext: () => WebGLRenderingContext,\n getNavigator: () => navigator,\n getBaseUrl: () => document.baseURI ?? window.location.href,\n getFontFaceSet: () => document.fonts,\n fetch: (url, options) => fetch(url, options),\n parseXML: (xml) => {\n const parser = new DOMParser();\n return parser.parseFromString(xml, \"text/xml\");\n }\n};\n\nexport { BrowserAdapter };\n//# sourceMappingURL=BrowserAdapter.mjs.map\n","import { BrowserAdapter } from '../environment-browser/BrowserAdapter.mjs';\n\n\"use strict\";\nlet currentAdapter = BrowserAdapter;\nconst DOMAdapter = {\n /**\n * Returns the current adapter.\n * @returns {environment.Adapter} The current adapter.\n */\n get() {\n return currentAdapter;\n },\n /**\n * Sets the current adapter.\n * @param adapter - The new adapter.\n */\n set(adapter) {\n currentAdapter = adapter;\n }\n};\n\nexport { DOMAdapter };\n//# sourceMappingURL=adapter.mjs.map\n","import { DOMAdapter } from '../../../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../../../extensions/Extensions.mjs';\nimport { TextureSource } from './TextureSource.mjs';\n\n\"use strict\";\nclass CanvasSource extends TextureSource {\n constructor(options) {\n if (!options.resource) {\n options.resource = DOMAdapter.get().createCanvas();\n }\n if (!options.width) {\n options.width = options.resource.width;\n if (!options.autoDensity) {\n options.width /= options.resolution;\n }\n }\n if (!options.height) {\n options.height = options.resource.height;\n if (!options.autoDensity) {\n options.height /= options.resolution;\n }\n }\n super(options);\n this.uploadMethodId = \"image\";\n this.autoDensity = options.autoDensity;\n this.resizeCanvas();\n this.transparent = !!options.transparent;\n }\n resizeCanvas() {\n if (this.autoDensity) {\n this.resource.style.width = `${this.width}px`;\n this.resource.style.height = `${this.height}px`;\n }\n if (this.resource.width !== this.pixelWidth || this.resource.height !== this.pixelHeight) {\n this.resource.width = this.pixelWidth;\n this.resource.height = this.pixelHeight;\n }\n }\n resize(width = this.width, height = this.height, resolution = this._resolution) {\n const didResize = super.resize(width, height, resolution);\n if (didResize) {\n this.resizeCanvas();\n }\n return didResize;\n }\n static test(resource) {\n return globalThis.HTMLCanvasElement && resource instanceof HTMLCanvasElement || globalThis.OffscreenCanvas && resource instanceof OffscreenCanvas;\n }\n /**\n * Returns the 2D rendering context for the canvas.\n * Caches the context after creating it.\n * @returns The 2D rendering context of the canvas.\n */\n get context2D() {\n return this._context2D || (this._context2D = this.resource.getContext(\"2d\"));\n }\n}\nCanvasSource.extension = ExtensionType.TextureSource;\n\nexport { CanvasSource };\n//# sourceMappingURL=CanvasSource.mjs.map\n","import { DOMAdapter } from '../../../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../../../extensions/Extensions.mjs';\nimport { warn } from '../../../../../utils/logging/warn.mjs';\nimport { TextureSource } from './TextureSource.mjs';\n\n\"use strict\";\nclass ImageSource extends TextureSource {\n constructor(options) {\n if (options.resource && (globalThis.HTMLImageElement && options.resource instanceof HTMLImageElement)) {\n const canvas = DOMAdapter.get().createCanvas(options.resource.width, options.resource.height);\n const context = canvas.getContext(\"2d\");\n context.drawImage(options.resource, 0, 0, options.resource.width, options.resource.height);\n options.resource = canvas;\n warn(\"ImageSource: Image element passed, converting to canvas. Use CanvasSource instead.\");\n }\n super(options);\n this.uploadMethodId = \"image\";\n this.autoGarbageCollect = true;\n }\n static test(resource) {\n return globalThis.HTMLImageElement && resource instanceof HTMLImageElement || typeof ImageBitmap !== \"undefined\" && resource instanceof ImageBitmap || globalThis.VideoFrame && resource instanceof VideoFrame;\n }\n}\nImageSource.extension = ExtensionType.TextureSource;\n\nexport { ImageSource };\n//# sourceMappingURL=ImageSource.mjs.map\n","\"use strict\";\nvar UPDATE_PRIORITY = /* @__PURE__ */ ((UPDATE_PRIORITY2) => {\n UPDATE_PRIORITY2[UPDATE_PRIORITY2[\"INTERACTION\"] = 50] = \"INTERACTION\";\n UPDATE_PRIORITY2[UPDATE_PRIORITY2[\"HIGH\"] = 25] = \"HIGH\";\n UPDATE_PRIORITY2[UPDATE_PRIORITY2[\"NORMAL\"] = 0] = \"NORMAL\";\n UPDATE_PRIORITY2[UPDATE_PRIORITY2[\"LOW\"] = -25] = \"LOW\";\n UPDATE_PRIORITY2[UPDATE_PRIORITY2[\"UTILITY\"] = -50] = \"UTILITY\";\n return UPDATE_PRIORITY2;\n})(UPDATE_PRIORITY || {});\n\nexport { UPDATE_PRIORITY };\n//# sourceMappingURL=const.mjs.map\n","\"use strict\";\nclass TickerListener {\n /**\n * Constructor\n * @private\n * @param fn - The listener function to be added for one update\n * @param context - The listener context\n * @param priority - The priority for emitting\n * @param once - If the handler should fire once\n */\n constructor(fn, context = null, priority = 0, once = false) {\n /** The next item in chain. */\n this.next = null;\n /** The previous item in chain. */\n this.previous = null;\n /** `true` if this listener has been destroyed already. */\n this._destroyed = false;\n this._fn = fn;\n this._context = context;\n this.priority = priority;\n this._once = once;\n }\n /**\n * Simple compare function to figure out if a function and context match.\n * @param fn - The listener function to be added for one update\n * @param context - The listener context\n * @returns `true` if the listener match the arguments\n */\n match(fn, context = null) {\n return this._fn === fn && this._context === context;\n }\n /**\n * Emit by calling the current function.\n * @param ticker - The ticker emitting.\n * @returns Next ticker\n */\n emit(ticker) {\n if (this._fn) {\n if (this._context) {\n this._fn.call(this._context, ticker);\n } else {\n this._fn(ticker);\n }\n }\n const redirect = this.next;\n if (this._once) {\n this.destroy(true);\n }\n if (this._destroyed) {\n this.next = null;\n }\n return redirect;\n }\n /**\n * Connect to the list.\n * @param previous - Input node, previous listener\n */\n connect(previous) {\n this.previous = previous;\n if (previous.next) {\n previous.next.previous = this;\n }\n this.next = previous.next;\n previous.next = this;\n }\n /**\n * Destroy and don't use after this.\n * @param hard - `true` to remove the `next` reference, this\n * is considered a hard destroy. Soft destroy maintains the next reference.\n * @returns The listener to redirect while emitting or removing.\n */\n destroy(hard = false) {\n this._destroyed = true;\n this._fn = null;\n this._context = null;\n if (this.previous) {\n this.previous.next = this.next;\n }\n if (this.next) {\n this.next.previous = this.previous;\n }\n const redirect = this.next;\n this.next = hard ? null : redirect;\n this.previous = null;\n return redirect;\n }\n}\n\nexport { TickerListener };\n//# sourceMappingURL=TickerListener.mjs.map\n","import { UPDATE_PRIORITY } from './const.mjs';\nimport { TickerListener } from './TickerListener.mjs';\n\n\"use strict\";\nconst _Ticker = class _Ticker {\n constructor() {\n /**\n * Whether or not this ticker should invoke the method\n * {@link ticker.Ticker#start|start} automatically when a listener is added.\n */\n this.autoStart = false;\n /**\n * Scalar time value from last frame to this frame.\n * This value is capped by setting {@link ticker.Ticker#minFPS|minFPS}\n * and is scaled with {@link ticker.Ticker#speed|speed}.\n * **Note:** The cap may be exceeded by scaling.\n */\n this.deltaTime = 1;\n /**\n * The last time {@link ticker.Ticker#update|update} was invoked.\n * This value is also reset internally outside of invoking\n * update, but only when a new animation frame is requested.\n * If the platform supports DOMHighResTimeStamp,\n * this value will have a precision of 1 µs.\n */\n this.lastTime = -1;\n /**\n * Factor of current {@link ticker.Ticker#deltaTime|deltaTime}.\n * @example\n * // Scales ticker.deltaTime to what would be\n * // the equivalent of approximately 120 FPS\n * ticker.speed = 2;\n */\n this.speed = 1;\n /**\n * Whether or not this ticker has been started.\n * `true` if {@link ticker.Ticker#start|start} has been called.\n * `false` if {@link ticker.Ticker#stop|Stop} has been called.\n * While `false`, this value may change to `true` in the\n * event of {@link ticker.Ticker#autoStart|autoStart} being `true`\n * and a listener is added.\n */\n this.started = false;\n /** Internal current frame request ID */\n this._requestId = null;\n /**\n * Internal value managed by minFPS property setter and getter.\n * This is the maximum allowed milliseconds between updates.\n */\n this._maxElapsedMS = 100;\n /**\n * Internal value managed by minFPS property setter and getter.\n * This is the minimum allowed milliseconds between updates.\n */\n this._minElapsedMS = 0;\n /** If enabled, deleting is disabled.*/\n this._protected = false;\n /** The last time keyframe was executed. Maintains a relatively fixed interval with the previous value. */\n this._lastFrame = -1;\n this._head = new TickerListener(null, null, Infinity);\n this.deltaMS = 1 / _Ticker.targetFPMS;\n this.elapsedMS = 1 / _Ticker.targetFPMS;\n this._tick = (time) => {\n this._requestId = null;\n if (this.started) {\n this.update(time);\n if (this.started && this._requestId === null && this._head.next) {\n this._requestId = requestAnimationFrame(this._tick);\n }\n }\n };\n }\n /**\n * Conditionally requests a new animation frame.\n * If a frame has not already been requested, and if the internal\n * emitter has listeners, a new frame is requested.\n * @private\n */\n _requestIfNeeded() {\n if (this._requestId === null && this._head.next) {\n this.lastTime = performance.now();\n this._lastFrame = this.lastTime;\n this._requestId = requestAnimationFrame(this._tick);\n }\n }\n /**\n * Conditionally cancels a pending animation frame.\n * @private\n */\n _cancelIfNeeded() {\n if (this._requestId !== null) {\n cancelAnimationFrame(this._requestId);\n this._requestId = null;\n }\n }\n /**\n * Conditionally requests a new animation frame.\n * If the ticker has been started it checks if a frame has not already\n * been requested, and if the internal emitter has listeners. If these\n * conditions are met, a new frame is requested. If the ticker has not\n * been started, but autoStart is `true`, then the ticker starts now,\n * and continues with the previous conditions to request a new frame.\n * @private\n */\n _startIfPossible() {\n if (this.started) {\n this._requestIfNeeded();\n } else if (this.autoStart) {\n this.start();\n }\n }\n /**\n * Register a handler for tick events. Calls continuously unless\n * it is removed or the ticker is stopped.\n * @param fn - The listener function to be added for updates\n * @param context - The listener context\n * @param {number} [priority=UPDATE_PRIORITY.NORMAL] - The priority for emitting\n * @returns This instance of a ticker\n */\n add(fn, context, priority = UPDATE_PRIORITY.NORMAL) {\n return this._addListener(new TickerListener(fn, context, priority));\n }\n /**\n * Add a handler for the tick event which is only execute once.\n * @param fn - The listener function to be added for one update\n * @param context - The listener context\n * @param {number} [priority=UPDATE_PRIORITY.NORMAL] - The priority for emitting\n * @returns This instance of a ticker\n */\n addOnce(fn, context, priority = UPDATE_PRIORITY.NORMAL) {\n return this._addListener(new TickerListener(fn, context, priority, true));\n }\n /**\n * Internally adds the event handler so that it can be sorted by priority.\n * Priority allows certain handler (user, AnimatedSprite, Interaction) to be run\n * before the rendering.\n * @private\n * @param listener - Current listener being added.\n * @returns This instance of a ticker\n */\n _addListener(listener) {\n let current = this._head.next;\n let previous = this._head;\n if (!current) {\n listener.connect(previous);\n } else {\n while (current) {\n if (listener.priority > current.priority) {\n listener.connect(previous);\n break;\n }\n previous = current;\n current = current.next;\n }\n if (!listener.previous) {\n listener.connect(previous);\n }\n }\n this._startIfPossible();\n return this;\n }\n /**\n * Removes any handlers matching the function and context parameters.\n * If no handlers are left after removing, then it cancels the animation frame.\n * @param fn - The listener function to be removed\n * @param context - The listener context to be removed\n * @returns This instance of a ticker\n */\n remove(fn, context) {\n let listener = this._head.next;\n while (listener) {\n if (listener.match(fn, context)) {\n listener = listener.destroy();\n } else {\n listener = listener.next;\n }\n }\n if (!this._head.next) {\n this._cancelIfNeeded();\n }\n return this;\n }\n /**\n * The number of listeners on this ticker, calculated by walking through linked list\n * @readonly\n * @member {number}\n */\n get count() {\n if (!this._head) {\n return 0;\n }\n let count = 0;\n let current = this._head;\n while (current = current.next) {\n count++;\n }\n return count;\n }\n /** Starts the ticker. If the ticker has listeners a new animation frame is requested at this point. */\n start() {\n if (!this.started) {\n this.started = true;\n this._requestIfNeeded();\n }\n }\n /** Stops the ticker. If the ticker has requested an animation frame it is canceled at this point. */\n stop() {\n if (this.started) {\n this.started = false;\n this._cancelIfNeeded();\n }\n }\n /** Destroy the ticker and don't use after this. Calling this method removes all references to internal events. */\n destroy() {\n if (!this._protected) {\n this.stop();\n let listener = this._head.next;\n while (listener) {\n listener = listener.destroy(true);\n }\n this._head.destroy();\n this._head = null;\n }\n }\n /**\n * Triggers an update. An update entails setting the\n * current {@link ticker.Ticker#elapsedMS|elapsedMS},\n * the current {@link ticker.Ticker#deltaTime|deltaTime},\n * invoking all listeners with current deltaTime,\n * and then finally setting {@link ticker.Ticker#lastTime|lastTime}\n * with the value of currentTime that was provided.\n * This method will be called automatically by animation\n * frame callbacks if the ticker instance has been started\n * and listeners are added.\n * @param {number} [currentTime=performance.now()] - the current time of execution\n */\n update(currentTime = performance.now()) {\n let elapsedMS;\n if (currentTime > this.lastTime) {\n elapsedMS = this.elapsedMS = currentTime - this.lastTime;\n if (elapsedMS > this._maxElapsedMS) {\n elapsedMS = this._maxElapsedMS;\n }\n elapsedMS *= this.speed;\n if (this._minElapsedMS) {\n const delta = currentTime - this._lastFrame | 0;\n if (delta < this._minElapsedMS) {\n return;\n }\n this._lastFrame = currentTime - delta % this._minElapsedMS;\n }\n this.deltaMS = elapsedMS;\n this.deltaTime = this.deltaMS * _Ticker.targetFPMS;\n const head = this._head;\n let listener = head.next;\n while (listener) {\n listener = listener.emit(this);\n }\n if (!head.next) {\n this._cancelIfNeeded();\n }\n } else {\n this.deltaTime = this.deltaMS = this.elapsedMS = 0;\n }\n this.lastTime = currentTime;\n }\n /**\n * The frames per second at which this ticker is running.\n * The default is approximately 60 in most modern browsers.\n * **Note:** This does not factor in the value of\n * {@link ticker.Ticker#speed|speed}, which is specific\n * to scaling {@link ticker.Ticker#deltaTime|deltaTime}.\n * @member {number}\n * @readonly\n */\n get FPS() {\n return 1e3 / this.elapsedMS;\n }\n /**\n * Manages the maximum amount of milliseconds allowed to\n * elapse between invoking {@link ticker.Ticker#update|update}.\n * This value is used to cap {@link ticker.Ticker#deltaTime|deltaTime},\n * but does not effect the measured value of {@link ticker.Ticker#FPS|FPS}.\n * When setting this property it is clamped to a value between\n * `0` and `Ticker.targetFPMS * 1000`.\n * @member {number}\n * @default 10\n */\n get minFPS() {\n return 1e3 / this._maxElapsedMS;\n }\n set minFPS(fps) {\n const minFPS = Math.min(this.maxFPS, fps);\n const minFPMS = Math.min(Math.max(0, minFPS) / 1e3, _Ticker.targetFPMS);\n this._maxElapsedMS = 1 / minFPMS;\n }\n /**\n * Manages the minimum amount of milliseconds required to\n * elapse between invoking {@link ticker.Ticker#update|update}.\n * This will effect the measured value of {@link ticker.Ticker#FPS|FPS}.\n * If it is set to `0`, then there is no limit; PixiJS will render as many frames as it can.\n * Otherwise it will be at least `minFPS`\n * @member {number}\n * @default 0\n */\n get maxFPS() {\n if (this._minElapsedMS) {\n return Math.round(1e3 / this._minElapsedMS);\n }\n return 0;\n }\n set maxFPS(fps) {\n if (fps === 0) {\n this._minElapsedMS = 0;\n } else {\n const maxFPS = Math.max(this.minFPS, fps);\n this._minElapsedMS = 1 / (maxFPS / 1e3);\n }\n }\n /**\n * The shared ticker instance used by {@link AnimatedSprite} and by\n * {@link VideoResource} to update animation frames / video textures.\n *\n * It may also be used by {@link Application} if created with the `sharedTicker` option property set to true.\n *\n * The property {@link ticker.Ticker#autoStart|autoStart} is set to `true` for this instance.\n * Please follow the examples for usage, including how to opt-out of auto-starting the shared ticker.\n * @example\n * import { Ticker } from 'pixi.js';\n *\n * const ticker = Ticker.shared;\n * // Set this to prevent starting this ticker when listeners are added.\n * // By default this is true only for the Ticker.shared instance.\n * ticker.autoStart = false;\n *\n * // FYI, call this to ensure the ticker is stopped. It should be stopped\n * // if you have not attempted to render anything yet.\n * ticker.stop();\n *\n * // Call this when you are ready for a running shared ticker.\n * ticker.start();\n * @example\n * import { autoDetectRenderer, Container } from 'pixi.js';\n *\n * // You may use the shared ticker to render...\n * const renderer = autoDetectRenderer();\n * const stage = new Container();\n * document.body.appendChild(renderer.view);\n * ticker.add((time) => renderer.render(stage));\n *\n * // Or you can just update it manually.\n * ticker.autoStart = false;\n * ticker.stop();\n * const animate = (time) => {\n * ticker.update(time);\n * renderer.render(stage);\n * requestAnimationFrame(animate);\n * };\n * animate(performance.now());\n * @member {ticker.Ticker}\n * @readonly\n * @static\n */\n static get shared() {\n if (!_Ticker._shared) {\n const shared = _Ticker._shared = new _Ticker();\n shared.autoStart = true;\n shared._protected = true;\n }\n return _Ticker._shared;\n }\n /**\n * The system ticker instance used by {@link BasePrepare} for core timing\n * functionality that shouldn't usually need to be paused, unlike the `shared`\n * ticker which drives visual animations and rendering which may want to be paused.\n *\n * The property {@link ticker.Ticker#autoStart|autoStart} is set to `true` for this instance.\n * @member {ticker.Ticker}\n * @readonly\n * @static\n */\n static get system() {\n if (!_Ticker._system) {\n const system = _Ticker._system = new _Ticker();\n system.autoStart = true;\n system._protected = true;\n }\n return _Ticker._system;\n }\n};\n/**\n * Target frames per millisecond.\n * @static\n */\n_Ticker.targetFPMS = 0.06;\nlet Ticker = _Ticker;\n\nexport { Ticker };\n//# sourceMappingURL=Ticker.mjs.map\n","\"use strict\";\nlet promise;\nasync function detectVideoAlphaMode() {\n promise ?? (promise = (async () => {\n const canvas = document.createElement(\"canvas\");\n const gl = canvas.getContext(\"webgl\");\n if (!gl) {\n return \"premultiply-alpha-on-upload\";\n }\n const video = await new Promise((resolve) => {\n const video2 = document.createElement(\"video\");\n video2.onloadeddata = () => resolve(video2);\n video2.onerror = () => resolve(null);\n video2.autoplay = false;\n video2.crossOrigin = \"anonymous\";\n video2.preload = \"auto\";\n video2.src = \"data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=\";\n video2.load();\n });\n if (!video) {\n return \"premultiply-alpha-on-upload\";\n }\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n const framebuffer = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0\n );\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false);\n gl.pixelStorei(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, gl.NONE);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, video);\n const pixel = new Uint8Array(4);\n gl.readPixels(0, 0, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, pixel);\n gl.deleteFramebuffer(framebuffer);\n gl.deleteTexture(texture);\n gl.getExtension(\"WEBGL_lose_context\")?.loseContext();\n return pixel[0] <= pixel[3] ? \"premultiplied-alpha\" : \"premultiply-alpha-on-upload\";\n })());\n return promise;\n}\n\nexport { detectVideoAlphaMode };\n//# sourceMappingURL=detectVideoAlphaMode.mjs.map\n","import { ExtensionType } from '../../../../../extensions/Extensions.mjs';\nimport { Ticker } from '../../../../../ticker/Ticker.mjs';\nimport { detectVideoAlphaMode } from '../../../../../utils/browser/detectVideoAlphaMode.mjs';\nimport { TextureSource } from './TextureSource.mjs';\n\n\"use strict\";\nconst _VideoSource = class _VideoSource extends TextureSource {\n constructor(options) {\n super(options);\n // Public\n /** Whether or not the video is ready to play. */\n this.isReady = false;\n /** The upload method for this texture. */\n this.uploadMethodId = \"video\";\n options = {\n ..._VideoSource.defaultOptions,\n ...options\n };\n this._autoUpdate = true;\n this._isConnectedToTicker = false;\n this._updateFPS = options.updateFPS || 0;\n this._msToNextUpdate = 0;\n this.autoPlay = options.autoPlay !== false;\n this.alphaMode = options.alphaMode ?? \"premultiply-alpha-on-upload\";\n this._videoFrameRequestCallback = this._videoFrameRequestCallback.bind(this);\n this._videoFrameRequestCallbackHandle = null;\n this._load = null;\n this._resolve = null;\n this._reject = null;\n this._onCanPlay = this._onCanPlay.bind(this);\n this._onCanPlayThrough = this._onCanPlayThrough.bind(this);\n this._onError = this._onError.bind(this);\n this._onPlayStart = this._onPlayStart.bind(this);\n this._onPlayStop = this._onPlayStop.bind(this);\n this._onSeeked = this._onSeeked.bind(this);\n if (options.autoLoad !== false) {\n void this.load();\n }\n }\n /** Update the video frame if the source is not destroyed and meets certain conditions. */\n updateFrame() {\n if (this.destroyed) {\n return;\n }\n if (this._updateFPS) {\n const elapsedMS = Ticker.shared.elapsedMS * this.resource.playbackRate;\n this._msToNextUpdate = Math.floor(this._msToNextUpdate - elapsedMS);\n }\n if (!this._updateFPS || this._msToNextUpdate <= 0) {\n this._msToNextUpdate = this._updateFPS ? Math.floor(1e3 / this._updateFPS) : 0;\n }\n if (this.isValid) {\n this.update();\n }\n }\n /** Callback to update the video frame and potentially request the next frame update. */\n _videoFrameRequestCallback() {\n this.updateFrame();\n if (this.destroyed) {\n this._videoFrameRequestCallbackHandle = null;\n } else {\n this._videoFrameRequestCallbackHandle = this.resource.requestVideoFrameCallback(\n this._videoFrameRequestCallback\n );\n }\n }\n /**\n * Checks if the resource has valid dimensions.\n * @returns {boolean} True if width and height are set, otherwise false.\n */\n get isValid() {\n return !!this.resource.videoWidth && !!this.resource.videoHeight;\n }\n /**\n * Start preloading the video resource.\n * @returns {Promise<this>} Handle the validate event\n */\n async load() {\n if (this._load) {\n return this._load;\n }\n const source = this.resource;\n const options = this.options;\n if ((source.readyState === source.HAVE_ENOUGH_DATA || source.readyState === source.HAVE_FUTURE_DATA) && source.width && source.height) {\n source.complete = true;\n }\n source.addEventListener(\"play\", this._onPlayStart);\n source.addEventListener(\"pause\", this._onPlayStop);\n source.addEventListener(\"seeked\", this._onSeeked);\n if (!this._isSourceReady()) {\n if (!options.preload) {\n source.addEventListener(\"canplay\", this._onCanPlay);\n }\n source.addEventListener(\"canplaythrough\", this._onCanPlayThrough);\n source.addEventListener(\"error\", this._onError, true);\n } else {\n this._mediaReady();\n }\n this.alphaMode = await detectVideoAlphaMode();\n this._load = new Promise((resolve, reject) => {\n if (this.isValid) {\n resolve(this);\n } else {\n this._resolve = resolve;\n this._reject = reject;\n if (options.preloadTimeoutMs !== void 0) {\n this._preloadTimeout = setTimeout(() => {\n this._onError(new ErrorEvent(`Preload exceeded timeout of ${options.preloadTimeoutMs}ms`));\n });\n }\n source.load();\n }\n });\n return this._load;\n }\n /**\n * Handle video error events.\n * @param event - The error event\n */\n _onError(event) {\n this.resource.removeEventListener(\"error\", this._onError, true);\n this.emit(\"error\", event);\n if (this._reject) {\n this._reject(event);\n this._reject = null;\n this._resolve = null;\n }\n }\n /**\n * Checks if the underlying source is playing.\n * @returns True if playing.\n */\n _isSourcePlaying() {\n const source = this.resource;\n return !source.paused && !source.ended;\n }\n /**\n * Checks if the underlying source is ready for playing.\n * @returns True if ready.\n */\n _isSourceReady() {\n const source = this.resource;\n return source.readyState > 2;\n }\n /** Runs the update loop when the video is ready to play. */\n _onPlayStart() {\n if (!this.isValid) {\n this._mediaReady();\n }\n this._configureAutoUpdate();\n }\n /** Stops the update loop when a pause event is triggered. */\n _onPlayStop() {\n this._configureAutoUpdate();\n }\n /** Handles behavior when the video completes seeking to the current playback position. */\n _onSeeked() {\n if (this._autoUpdate && !this._isSourcePlaying()) {\n this._msToNextUpdate = 0;\n this.updateFrame();\n this._msToNextUpdate = 0;\n }\n }\n _onCanPlay() {\n const source = this.resource;\n source.removeEventListener(\"canplay\", this._onCanPlay);\n this._mediaReady();\n }\n _onCanPlayThrough() {\n const source = this.resource;\n source.removeEventListener(\"canplaythrough\", this._onCanPlay);\n if (this._preloadTimeout) {\n clearTimeout(this._preloadTimeout);\n this._preloadTimeout = void 0;\n }\n this._mediaReady();\n }\n /** Fired when the video is loaded and ready to play. */\n _mediaReady() {\n const source = this.resource;\n if (this.isValid) {\n this.isReady = true;\n this.resize(source.videoWidth, source.videoHeight);\n }\n this._msToNextUpdate = 0;\n this.updateFrame();\n this._msToNextUpdate = 0;\n if (this._resolve) {\n this._resolve(this);\n this._resolve = null;\n this._reject = null;\n }\n if (this._isSourcePlaying()) {\n this._onPlayStart();\n } else if (this.autoPlay) {\n void this.resource.play();\n }\n }\n /** Cleans up resources and event listeners associated with this texture. */\n destroy() {\n this._configureAutoUpdate();\n const source = this.resource;\n if (source) {\n source.removeEventListener(\"play\", this._onPlayStart);\n source.removeEventListener(\"pause\", this._onPlayStop);\n source.removeEventListener(\"seeked\", this._onSeeked);\n source.removeEventListener(\"canplay\", this._onCanPlay);\n source.removeEventListener(\"canplaythrough\", this._onCanPlayThrough);\n source.removeEventListener(\"error\", this._onError, true);\n source.pause();\n source.src = \"\";\n source.load();\n }\n super.destroy();\n }\n /** Should the base texture automatically update itself, set to true by default. */\n get autoUpdate() {\n return this._autoUpdate;\n }\n set autoUpdate(value) {\n if (value !== this._autoUpdate) {\n this._autoUpdate = value;\n this._configureAutoUpdate();\n }\n }\n /**\n * How many times a second to update the texture from the video.\n * Leave at 0 to update at every render.\n * A lower fps can help performance, as updating the texture at 60fps on a 30ps video may not be efficient.\n */\n get updateFPS() {\n return this._updateFPS;\n }\n set updateFPS(value) {\n if (value !== this._updateFPS) {\n this._updateFPS = value;\n this._configureAutoUpdate();\n }\n }\n /**\n * Configures the updating mechanism based on the current state and settings.\n *\n * This method decides between using the browser's native video frame callback or a custom ticker\n * for updating the video frame. It ensures optimal performance and responsiveness\n * based on the video's state, playback status, and the desired frames-per-second setting.\n *\n * - If `_autoUpdate` is enabled and the video source is playing:\n * - It will prefer the native video frame callback if available and no specific FPS is set.\n * - Otherwise, it will use a custom ticker for manual updates.\n * - If `_autoUpdate` is disabled or the video isn't playing, any active update mechanisms are halted.\n */\n _configureAutoUpdate() {\n if (this._autoUpdate && this._isSourcePlaying()) {\n if (!this._updateFPS && this.resource.requestVideoFrameCallback) {\n if (this._isConnectedToTicker) {\n Ticker.shared.remove(this.updateFrame, this);\n this._isConnectedToTicker = false;\n this._msToNextUpdate = 0;\n }\n if (this._videoFrameRequestCallbackHandle === null) {\n this._videoFrameRequestCallbackHandle = this.resource.requestVideoFrameCallback(\n this._videoFrameRequestCallback\n );\n }\n } else {\n if (this._videoFrameRequestCallbackHandle !== null) {\n this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle);\n this._videoFrameRequestCallbackHandle = null;\n }\n if (!this._isConnectedToTicker) {\n Ticker.shared.add(this.updateFrame, this);\n this._isConnectedToTicker = true;\n this._msToNextUpdate = 0;\n }\n }\n } else {\n if (this._videoFrameRequestCallbackHandle !== null) {\n this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle);\n this._videoFrameRequestCallbackHandle = null;\n }\n if (this._isConnectedToTicker) {\n Ticker.shared.remove(this.updateFrame, this);\n this._isConnectedToTicker = false;\n this._msToNextUpdate = 0;\n }\n }\n }\n static test(resource) {\n return globalThis.HTMLVideoElement && resource instanceof HTMLVideoElement;\n }\n};\n_VideoSource.extension = ExtensionType.TextureSource;\n/** The default options for video sources. */\n_VideoSource.defaultOptions = {\n ...TextureSource.defaultOptions,\n /** If true, the video will start loading immediately. */\n autoLoad: true,\n /** If true, the video will start playing as soon as it is loaded. */\n autoPlay: true,\n /** The number of times a second to update the texture from the video. Leave at 0 to update at every render. */\n updateFPS: 0,\n /** If true, the video will be loaded with the `crossorigin` attribute. */\n crossorigin: true,\n /** If true, the video will loop when it ends. */\n loop: false,\n /** If true, the video will be muted. */\n muted: true,\n /** If true, the video will play inline. */\n playsinline: true,\n /** If true, the video will be preloaded. */\n preload: false\n};\n/**\n * Map of video MIME types that can't be directly derived from file extensions.\n * @readonly\n */\n_VideoSource.MIME_TYPES = {\n ogv: \"video/ogg\",\n mov: \"video/quicktime\",\n m4v: \"video/mp4\"\n};\nlet VideoSource = _VideoSource;\n\nexport { VideoSource };\n//# sourceMappingURL=VideoSource.mjs.map\n","\"use strict\";\nconst convertToList = (input, transform, forceTransform = false) => {\n if (!Array.isArray(input)) {\n input = [input];\n }\n if (!transform) {\n return input;\n }\n return input.map((item) => {\n if (typeof item === \"string\" || forceTransform) {\n return transform(item);\n }\n return item;\n });\n};\n\nexport { convertToList };\n//# sourceMappingURL=convertToList.mjs.map\n","import { warn } from '../../utils/logging/warn.mjs';\nimport { convertToList } from '../utils/convertToList.mjs';\n\n\"use strict\";\nclass CacheClass {\n constructor() {\n this._parsers = [];\n this._cache = /* @__PURE__ */ new Map();\n this._cacheMap = /* @__PURE__ */ new Map();\n }\n /** Clear all entries. */\n reset() {\n this._cacheMap.clear();\n this._cache.clear();\n }\n /**\n * Check if the key exists\n * @param key - The key to check\n */\n has(key) {\n return this._cache.has(key);\n }\n /**\n * Fetch entry by key\n * @param key - The key of the entry to get\n */\n get(key) {\n const result = this._cache.get(key);\n if (!result) {\n warn(`[Assets] Asset id ${key} was not found in the Cache`);\n }\n return result;\n }\n /**\n * Set a value by key or keys name\n * @param key - The key or keys to set\n * @param value - The value to store in the cache or from which cacheable assets will be derived.\n */\n set(key, value) {\n const keys = convertToList(key);\n let cacheableAssets;\n for (let i = 0; i < this.parsers.length; i++) {\n const parser = this.parsers[i];\n if (parser.test(value)) {\n cacheableAssets = parser.getCacheableAssets(keys, value);\n break;\n }\n }\n const cacheableMap = new Map(Object.entries(cacheableAssets || {}));\n if (!cacheableAssets) {\n keys.forEach((key2) => {\n cacheableMap.set(key2, value);\n });\n }\n const cacheKeys = [...cacheableMap.keys()];\n const cachedAssets = {\n cacheKeys,\n keys\n };\n keys.forEach((key2) => {\n this._cacheMap.set(key2, cachedAssets);\n });\n cacheKeys.forEach((key2) => {\n const val = cacheableAssets ? cacheableAssets[key2] : value;\n if (this._cache.has(key2) && this._cache.get(key2) !== val) {\n warn(\"[Cache] already has key:\", key2);\n }\n this._cache.set(key2, cacheableMap.get(key2));\n });\n }\n /**\n * Remove entry by key\n *\n * This function will also remove any associated alias from the cache also.\n * @param key - The key of the entry to remove\n */\n remove(key) {\n if (!this._cacheMap.has(key)) {\n warn(`[Assets] Asset id ${key} was not found in the Cache`);\n return;\n }\n const cacheMap = this._cacheMap.get(key);\n const cacheKeys = cacheMap.cacheKeys;\n cacheKeys.forEach((key2) => {\n this._cache.delete(key2);\n });\n cacheMap.keys.forEach((key2) => {\n this._cacheMap.delete(key2);\n });\n }\n /** All loader parsers registered */\n get parsers() {\n return this._parsers;\n }\n}\nconst Cache = new CacheClass();\n\nexport { Cache };\n//# sourceMappingURL=Cache.mjs.map\n","import { Cache } from '../../../../../assets/cache/Cache.mjs';\nimport { extensions, ExtensionType } from '../../../../../extensions/Extensions.mjs';\nimport { TextureSource } from '../sources/TextureSource.mjs';\nimport { Texture } from '../Texture.mjs';\n\n\"use strict\";\nconst sources = [];\nextensions.handleByList(ExtensionType.TextureSource, sources);\nfunction autoDetectSource(options = {}) {\n return textureSourceFrom(options);\n}\nfunction textureSourceFrom(options = {}) {\n const hasResource = options && options.resource;\n const res = hasResource ? options.resource : options;\n const opts = hasResource ? options : { resource: options };\n for (let i = 0; i < sources.length; i++) {\n const Source = sources[i];\n if (Source.test(res)) {\n return new Source(opts);\n }\n }\n throw new Error(`Could not find a source type for resource: ${opts.resource}`);\n}\nfunction resourceToTexture(options = {}, skipCache = false) {\n const hasResource = options && options.resource;\n const resource = hasResource ? options.resource : options;\n const opts = hasResource ? options : { resource: options };\n if (!skipCache && Cache.has(resource)) {\n return Cache.get(resource);\n }\n const texture = new Texture({ source: textureSourceFrom(opts) });\n texture.on(\"destroy\", () => {\n if (Cache.has(resource)) {\n Cache.remove(resource);\n }\n });\n if (!skipCache) {\n Cache.set(resource, texture);\n }\n return texture;\n}\nfunction textureFrom(id, skipCache = false) {\n if (typeof id === \"string\") {\n return Cache.get(id);\n } else if (id instanceof TextureSource) {\n return new Texture({ source: id });\n }\n return resourceToTexture(id, skipCache);\n}\nTexture.from = textureFrom;\nTextureSource.from = textureSourceFrom;\n\nexport { autoDetectSource, resourceToTexture, textureFrom };\n//# sourceMappingURL=textureFrom.mjs.map\n","import { extensions } from '../extensions/Extensions.mjs';\nimport { AlphaMask } from './mask/alpha/AlphaMask.mjs';\nimport { ColorMask } from './mask/color/ColorMask.mjs';\nimport { StencilMask } from './mask/stencil/StencilMask.mjs';\nimport { BufferImageSource } from './renderers/shared/texture/sources/BufferImageSource.mjs';\nimport { CanvasSource } from './renderers/shared/texture/sources/CanvasSource.mjs';\nimport { ImageSource } from './renderers/shared/texture/sources/ImageSource.mjs';\nimport { VideoSource } from './renderers/shared/texture/sources/VideoSource.mjs';\nimport './renderers/shared/texture/utils/textureFrom.mjs';\nimport './mask/MaskEffectManager.mjs';\n\n\"use strict\";\nextensions.add(AlphaMask, ColorMask, StencilMask, VideoSource, ImageSource, CanvasSource, BufferImageSource);\n//# sourceMappingURL=init.mjs.map\n","\"use strict\";\nvar LoaderParserPriority = /* @__PURE__ */ ((LoaderParserPriority2) => {\n LoaderParserPriority2[LoaderParserPriority2[\"Low\"] = 0] = \"Low\";\n LoaderParserPriority2[LoaderParserPriority2[\"Normal\"] = 1] = \"Normal\";\n LoaderParserPriority2[LoaderParserPriority2[\"High\"] = 2] = \"High\";\n return LoaderParserPriority2;\n})(LoaderParserPriority || {});\n\nexport { LoaderParserPriority };\n//# sourceMappingURL=LoaderParser.mjs.map\n","import { DOMAdapter } from '../environment/adapter.mjs';\n\n\"use strict\";\nfunction assertPath(path2) {\n if (typeof path2 !== \"string\") {\n throw new TypeError(`Path must be a string. Received ${JSON.stringify(path2)}`);\n }\n}\nfunction removeUrlParams(url) {\n const re = url.split(\"?\")[0];\n return re.split(\"#\")[0];\n}\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nfunction replaceAll(str, find, replace) {\n return str.replace(new RegExp(escapeRegExp(find), \"g\"), replace);\n}\nfunction normalizeStringPosix(path2, allowAboveRoot) {\n let res = \"\";\n let lastSegmentLength = 0;\n let lastSlash = -1;\n let dots = 0;\n let code = -1;\n for (let i = 0; i <= path2.length; ++i) {\n if (i < path2.length) {\n code = path2.charCodeAt(i);\n } else if (code === 47) {\n break;\n } else {\n code = 47;\n }\n if (code === 47) {\n if (lastSlash === i - 1 || dots === 1) {\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 || res.charCodeAt(res.length - 2) !== 46) {\n if (res.length > 2) {\n const lastSlashIndex = res.lastIndexOf(\"/\");\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = \"\";\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf(\"/\");\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = \"\";\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0) {\n res += \"/..\";\n } else {\n res = \"..\";\n }\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0) {\n res += `/${path2.slice(lastSlash + 1, i)}`;\n } else {\n res = path2.slice(lastSlash + 1, i);\n }\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\nconst path = {\n /**\n * Converts a path to posix format.\n * @param path - The path to convert to posix\n */\n toPosix(path2) {\n return replaceAll(path2, \"\\\\\", \"/\");\n },\n /**\n * Checks if the path is a URL e.g. http://, https://\n * @param path - The path to check\n */\n isUrl(path2) {\n return /^https?:/.test(this.toPosix(path2));\n },\n /**\n * Checks if the path is a data URL\n * @param path - The path to check\n */\n isDataUrl(path2) {\n return /^data:([a-z]+\\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\\-._~:@\\/?%\\s<>]*?)$/i.test(path2);\n },\n /**\n * Checks if the path is a blob URL\n * @param path - The path to check\n */\n isBlobUrl(path2) {\n return path2.startsWith(\"blob:\");\n },\n /**\n * Checks if the path has a protocol e.g. http://, https://, file:///, data:, blob:, C:/\n * This will return true for windows file paths\n * @param path - The path to check\n */\n hasProtocol(path2) {\n return /^[^/:]+:/.test(this.toPosix(path2));\n },\n /**\n * Returns the protocol of the path e.g. http://, https://, file:///, data:, blob:, C:/\n * @param path - The path to get the protocol from\n */\n getProtocol(path2) {\n assertPath(path2);\n path2 = this.toPosix(path2);\n const matchFile = /^file:\\/\\/\\//.exec(path2);\n if (matchFile) {\n return matchFile[0];\n }\n const matchProtocol = /^[^/:]+:\\/{0,2}/.exec(path2);\n if (matchProtocol) {\n return matchProtocol[0];\n }\n return \"\";\n },\n /**\n * Converts URL to an absolute path.\n * When loading from a Web Worker, we must use absolute paths.\n * If the URL is already absolute we return it as is\n * If it's not, we convert it\n * @param url - The URL to test\n * @param customBaseUrl - The base URL to use\n * @param customRootUrl - The root URL to use\n */\n toAbsolute(url, customBaseUrl, customRootUrl) {\n assertPath(url);\n if (this.isDataUrl(url) || this.isBlobUrl(url))\n return url;\n const baseUrl = removeUrlParams(this.toPosix(customBaseUrl ?? DOMAdapter.get().getBaseUrl()));\n const rootUrl = removeUrlParams(this.toPosix(customRootUrl ?? this.rootname(baseUrl)));\n url = this.toPosix(url);\n if (url.startsWith(\"/\")) {\n return path.join(rootUrl, url.slice(1));\n }\n const absolutePath = this.isAbsolute(url) ? url : this.join(baseUrl, url);\n return absolutePath;\n },\n /**\n * Normalizes the given path, resolving '..' and '.' segments\n * @param path - The path to normalize\n */\n normalize(path2) {\n assertPath(path2);\n if (path2.length === 0)\n return \".\";\n if (this.isDataUrl(path2) || this.isBlobUrl(path2))\n return path2;\n path2 = this.toPosix(path2);\n let protocol = \"\";\n const isAbsolute = path2.startsWith(\"/\");\n if (this.hasProtocol(path2)) {\n protocol = this.rootname(path2);\n path2 = path2.slice(protocol.length);\n }\n const trailingSeparator = path2.endsWith(\"/\");\n path2 = normalizeStringPosix(path2, false);\n if (path2.length > 0 && trailingSeparator)\n path2 += \"/\";\n if (isAbsolute)\n return `/${path2}`;\n return protocol + path2;\n },\n /**\n * Determines if path is an absolute path.\n * Absolute paths can be urls, data urls, or paths on disk\n * @param path - The path to test\n */\n isAbsolute(path2) {\n assertPath(path2);\n path2 = this.toPosix(path2);\n if (this.hasProtocol(path2))\n return true;\n return path2.startsWith(\"/\");\n },\n /**\n * Joins all given path segments together using the platform-specific separator as a delimiter,\n * then normalizes the resulting path\n * @param segments - The segments of the path to join\n */\n join(...segments) {\n if (segments.length === 0) {\n return \".\";\n }\n let joined;\n for (let i = 0; i < segments.length; ++i) {\n const arg = segments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === void 0)\n joined = arg;\n else {\n const prevArg = segments[i - 1] ?? \"\";\n if (this.joinExtensions.includes(this.extname(prevArg).toLowerCase())) {\n joined += `/../${arg}`;\n } else {\n joined += `/${arg}`;\n }\n }\n }\n }\n if (joined === void 0) {\n return \".\";\n }\n return this.normalize(joined);\n },\n /**\n * Returns the directory name of a path\n * @param path - The path to parse\n */\n dirname(path2) {\n assertPath(path2);\n if (path2.length === 0)\n return \".\";\n path2 = this.toPosix(path2);\n let code = path2.charCodeAt(0);\n const hasRoot = code === 47;\n let end = -1;\n let matchedSlash = true;\n const proto = this.getProtocol(path2);\n const origpath = path2;\n path2 = path2.slice(proto.length);\n for (let i = path2.length - 1; i >= 1; --i) {\n code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n matchedSlash = false;\n }\n }\n if (end === -1)\n return hasRoot ? \"/\" : this.isUrl(origpath) ? proto + path2 : proto;\n if (hasRoot && end === 1)\n return \"//\";\n return proto + path2.slice(0, end);\n },\n /**\n * Returns the root of the path e.g. /, C:/, file:///, http://domain.com/\n * @param path - The path to parse\n */\n rootname(path2) {\n assertPath(path2);\n path2 = this.toPosix(path2);\n let root = \"\";\n if (path2.startsWith(\"/\"))\n root = \"/\";\n else {\n root = this.getProtocol(path2);\n }\n if (this.isUrl(path2)) {\n const index = path2.indexOf(\"/\", root.length);\n if (index !== -1) {\n root = path2.slice(0, index);\n } else\n root = path2;\n if (!root.endsWith(\"/\"))\n root += \"/\";\n }\n return root;\n },\n /**\n * Returns the last portion of a path\n * @param path - The path to test\n * @param ext - Optional extension to remove\n */\n basename(path2, ext) {\n assertPath(path2);\n if (ext)\n assertPath(ext);\n path2 = removeUrlParams(this.toPosix(path2));\n let start = 0;\n let end = -1;\n let matchedSlash = true;\n let i;\n if (ext !== void 0 && ext.length > 0 && ext.length <= path2.length) {\n if (ext.length === path2.length && ext === path2)\n return \"\";\n let extIdx = ext.length - 1;\n let firstNonSlashEnd = -1;\n for (i = path2.length - 1; i >= 0; --i) {\n const code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n end = i;\n }\n } else {\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n if (start === end)\n end = firstNonSlashEnd;\n else if (end === -1)\n end = path2.length;\n return path2.slice(start, end);\n }\n for (i = path2.length - 1; i >= 0; --i) {\n if (path2.charCodeAt(i) === 47) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n }\n if (end === -1)\n return \"\";\n return path2.slice(start, end);\n },\n /**\n * Returns the extension of the path, from the last occurrence of the . (period) character to end of string in the last\n * portion of the path. If there is no . in the last portion of the path, or if there are no . characters other than\n * the first character of the basename of path, an empty string is returned.\n * @param path - The path to parse\n */\n extname(path2) {\n assertPath(path2);\n path2 = removeUrlParams(this.toPosix(path2));\n let startDot = -1;\n let startPart = 0;\n let end = -1;\n let matchedSlash = true;\n let preDotState = 0;\n for (let i = path2.length - 1; i >= 0; --i) {\n const code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46) {\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n preDotState = -1;\n }\n }\n if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return \"\";\n }\n return path2.slice(startDot, end);\n },\n /**\n * Parses a path into an object containing the 'root', `dir`, `base`, `ext`, and `name` properties.\n * @param path - The path to parse\n */\n parse(path2) {\n assertPath(path2);\n const ret = { root: \"\", dir: \"\", base: \"\", ext: \"\", name: \"\" };\n if (path2.length === 0)\n return ret;\n path2 = removeUrlParams(this.toPosix(path2));\n let code = path2.charCodeAt(0);\n const isAbsolute = this.isAbsolute(path2);\n let start;\n const protocol = \"\";\n ret.root = this.rootname(path2);\n if (isAbsolute || this.hasProtocol(path2)) {\n start = 1;\n } else {\n start = 0;\n }\n let startDot = -1;\n let startPart = 0;\n let end = -1;\n let matchedSlash = true;\n let i = path2.length - 1;\n let preDotState = 0;\n for (; i >= start; --i) {\n code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46) {\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n preDotState = -1;\n }\n }\n if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute)\n ret.base = ret.name = path2.slice(1, end);\n else\n ret.base = ret.name = path2.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path2.slice(1, startDot);\n ret.base = path2.slice(1, end);\n } else {\n ret.name = path2.slice(startPart, startDot);\n ret.base = path2.slice(startPart, end);\n }\n ret.ext = path2.slice(startDot, end);\n }\n ret.dir = this.dirname(path2);\n if (protocol)\n ret.dir = protocol + ret.dir;\n return ret;\n },\n sep: \"/\",\n delimiter: \":\",\n joinExtensions: [\".html\"]\n};\n\nexport { path };\n//# sourceMappingURL=path.mjs.map\n","\"use strict\";\nfunction processX(base, ids, depth, result, tags) {\n const id = ids[depth];\n for (let i = 0; i < id.length; i++) {\n const value = id[i];\n if (depth < ids.length - 1) {\n processX(base.replace(result[depth], value), ids, depth + 1, result, tags);\n } else {\n tags.push(base.replace(result[depth], value));\n }\n }\n}\nfunction createStringVariations(string) {\n const regex = /\\{(.*?)\\}/g;\n const result = string.match(regex);\n const tags = [];\n if (result) {\n const ids = [];\n result.forEach((vars) => {\n const split = vars.substring(1, vars.length - 1).split(\",\");\n ids.push(split);\n });\n processX(string, ids, 0, result, tags);\n } else {\n tags.push(string);\n }\n return tags;\n}\n\nexport { createStringVariations };\n//# sourceMappingURL=createStringVariations.mjs.map\n","\"use strict\";\nconst isSingleItem = (item) => !Array.isArray(item);\n\nexport { isSingleItem };\n//# sourceMappingURL=isSingleItem.mjs.map\n","import { warn } from '../../utils/logging/warn.mjs';\nimport { path } from '../../utils/path.mjs';\nimport { convertToList } from '../utils/convertToList.mjs';\nimport { createStringVariations } from '../utils/createStringVariations.mjs';\nimport { isSingleItem } from '../utils/isSingleItem.mjs';\n\n\"use strict\";\nclass Resolver {\n constructor() {\n this._defaultBundleIdentifierOptions = {\n connector: \"-\",\n createBundleAssetId: (bundleId, assetId) => `${bundleId}${this._bundleIdConnector}${assetId}`,\n extractAssetIdFromBundle: (bundleId, assetBundleId) => assetBundleId.replace(`${bundleId}${this._bundleIdConnector}`, \"\")\n };\n /** The character that is used to connect the bundleId and the assetId when generating a bundle asset id key */\n this._bundleIdConnector = this._defaultBundleIdentifierOptions.connector;\n /**\n * A function that generates a bundle asset id key from a bundleId and an assetId\n * @param bundleId - the bundleId\n * @param assetId - the assetId\n * @returns the bundle asset id key\n */\n this._createBundleAssetId = this._defaultBundleIdentifierOptions.createBundleAssetId;\n /**\n * A function that generates an assetId from a bundle asset id key. This is the reverse of generateBundleAssetId\n * @param bundleId - the bundleId\n * @param assetBundleId - the bundle asset id key\n * @returns the assetId\n */\n this._extractAssetIdFromBundle = this._defaultBundleIdentifierOptions.extractAssetIdFromBundle;\n this._assetMap = {};\n this._preferredOrder = [];\n this._parsers = [];\n this._resolverHash = {};\n this._bundles = {};\n }\n /**\n * Override how the resolver deals with generating bundle ids.\n * must be called before any bundles are added\n * @param bundleIdentifier - the bundle identifier options\n */\n setBundleIdentifier(bundleIdentifier) {\n this._bundleIdConnector = bundleIdentifier.connector ?? this._bundleIdConnector;\n this._createBundleAssetId = bundleIdentifier.createBundleAssetId ?? this._createBundleAssetId;\n this._extractAssetIdFromBundle = bundleIdentifier.extractAssetIdFromBundle ?? this._extractAssetIdFromBundle;\n if (this._extractAssetIdFromBundle(\"foo\", this._createBundleAssetId(\"foo\", \"bar\")) !== \"bar\") {\n throw new Error(\"[Resolver] GenerateBundleAssetId are not working correctly\");\n }\n }\n /**\n * Let the resolver know which assets you prefer to use when resolving assets.\n * Multiple prefer user defined rules can be added.\n * @example\n * resolver.prefer({\n * // first look for something with the correct format, and then then correct resolution\n * priority: ['format', 'resolution'],\n * params:{\n * format:'webp', // prefer webp images\n * resolution: 2, // prefer a resolution of 2\n * }\n * })\n * resolver.add('foo', ['bar@2x.webp', 'bar@2x.png', 'bar.webp', 'bar.png']);\n * resolver.resolveUrl('foo') // => 'bar@2x.webp'\n * @param preferOrders - the prefer options\n */\n prefer(...preferOrders) {\n preferOrders.forEach((prefer) => {\n this._preferredOrder.push(prefer);\n if (!prefer.priority) {\n prefer.priority = Object.keys(prefer.params);\n }\n });\n this._resolverHash = {};\n }\n /**\n * Set the base path to prepend to all urls when resolving\n * @example\n * resolver.basePath = 'https://home.com/';\n * resolver.add('foo', 'bar.ong');\n * resolver.resolveUrl('foo', 'bar.png'); // => 'https://home.com/bar.png'\n * @param basePath - the base path to use\n */\n set basePath(basePath) {\n this._basePath = basePath;\n }\n get basePath() {\n return this._basePath;\n }\n /**\n * Set the root path for root-relative URLs. By default the `basePath`'s root is used. If no `basePath` is set, then the\n * default value for browsers is `window.location.origin`\n * @example\n * // Application hosted on https://home.com/some-path/index.html\n * resolver.basePath = 'https://home.com/some-path/';\n * resolver.rootPath = 'https://home.com/';\n * resolver.add('foo', '/bar.png');\n * resolver.resolveUrl('foo', '/bar.png'); // => 'https://home.com/bar.png'\n * @param rootPath - the root path to use\n */\n set rootPath(rootPath) {\n this._rootPath = rootPath;\n }\n get rootPath() {\n return this._rootPath;\n }\n /**\n * All the active URL parsers that help the parser to extract information and create\n * an asset object-based on parsing the URL itself.\n *\n * Can be added using the extensions API\n * @example\n * resolver.add('foo', [\n * {\n * resolution: 2,\n * format: 'png',\n * src: 'image@2x.png',\n * },\n * {\n * resolution:1,\n * format:'png',\n * src: 'image.png',\n * },\n * ]);\n *\n * // With a url parser the information such as resolution and file format could extracted from the url itself:\n * extensions.add({\n * extension: ExtensionType.ResolveParser,\n * test: loadTextures.test, // test if url ends in an image\n * parse: (value: string) =>\n * ({\n * resolution: parseFloat(Resolver.RETINA_PREFIX.exec(value)?.[1] ?? '1'),\n * format: value.split('.').pop(),\n * src: value,\n * }),\n * });\n *\n * // Now resolution and format can be extracted from the url\n * resolver.add('foo', [\n * 'image@2x.png',\n * 'image.png',\n * ]);\n */\n get parsers() {\n return this._parsers;\n }\n /** Used for testing, this resets the resolver to its initial state */\n reset() {\n this.setBundleIdentifier(this._defaultBundleIdentifierOptions);\n this._assetMap = {};\n this._preferredOrder = [];\n this._resolverHash = {};\n this._rootPath = null;\n this._basePath = null;\n this._manifest = null;\n this._bundles = {};\n this._defaultSearchParams = null;\n }\n /**\n * Sets the default URL search parameters for the URL resolver. The urls can be specified as a string or an object.\n * @param searchParams - the default url parameters to append when resolving urls\n */\n setDefaultSearchParams(searchParams) {\n if (typeof searchParams === \"string\") {\n this._defaultSearchParams = searchParams;\n } else {\n const queryValues = searchParams;\n this._defaultSearchParams = Object.keys(queryValues).map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(queryValues[key])}`).join(\"&\");\n }\n }\n /**\n * Returns the aliases for a given asset\n * @param asset - the asset to get the aliases for\n */\n getAlias(asset) {\n const { alias, src } = asset;\n const aliasesToUse = convertToList(\n alias || src,\n (value) => {\n if (typeof value === \"string\")\n return value;\n if (Array.isArray(value))\n return value.map((v) => v?.src ?? v);\n if (value?.src)\n return value.src;\n return value;\n },\n true\n );\n return aliasesToUse;\n }\n /**\n * Add a manifest to the asset resolver. This is a nice way to add all the asset information in one go.\n * generally a manifest would be built using a tool.\n * @param manifest - the manifest to add to the resolver\n */\n addManifest(manifest) {\n if (this._manifest) {\n warn(\"[Resolver] Manifest already exists, this will be overwritten\");\n }\n this._manifest = manifest;\n manifest.bundles.forEach((bundle) => {\n this.addBundle(bundle.name, bundle.assets);\n });\n }\n /**\n * This adds a bundle of assets in one go so that you can resolve them as a group.\n * For example you could add a bundle for each screen in you pixi app\n * @example\n * resolver.addBundle('animals', [\n * { alias: 'bunny', src: 'bunny.png' },\n * { alias: 'chicken', src: 'chicken.png' },\n * { alias: 'thumper', src: 'thumper.png' },\n * ]);\n * // or\n * resolver.addBundle('animals', {\n * bunny: 'bunny.png',\n * chicken: 'chicken.png',\n * thumper: 'thumper.png',\n * });\n *\n * const resolvedAssets = await resolver.resolveBundle('animals');\n * @param bundleId - The id of the bundle to add\n * @param assets - A record of the asset or assets that will be chosen from when loading via the specified key\n */\n addBundle(bundleId, assets) {\n const assetNames = [];\n let convertedAssets = assets;\n if (!Array.isArray(assets)) {\n convertedAssets = Object.entries(assets).map(([alias, src]) => {\n if (typeof src === \"string\" || Array.isArray(src)) {\n return { alias, src };\n }\n return { alias, ...src };\n });\n }\n convertedAssets.forEach((asset) => {\n const srcs = asset.src;\n const aliases = asset.alias;\n let ids;\n if (typeof aliases === \"string\") {\n const bundleAssetId = this._createBundleAssetId(bundleId, aliases);\n assetNames.push(bundleAssetId);\n ids = [aliases, bundleAssetId];\n } else {\n const bundleIds = aliases.map((name) => this._createBundleAssetId(bundleId, name));\n assetNames.push(...bundleIds);\n ids = [...aliases, ...bundleIds];\n }\n this.add({\n ...asset,\n ...{\n alias: ids,\n src: srcs\n }\n });\n });\n this._bundles[bundleId] = assetNames;\n }\n /**\n * Tells the resolver what keys are associated with witch asset.\n * The most important thing the resolver does\n * @example\n * // Single key, single asset:\n * resolver.add({alias: 'foo', src: 'bar.png');\n * resolver.resolveUrl('foo') // => 'bar.png'\n *\n * // Multiple keys, single asset:\n * resolver.add({alias: ['foo', 'boo'], src: 'bar.png'});\n * resolver.resolveUrl('foo') // => 'bar.png'\n * resolver.resolveUrl('boo') // => 'bar.png'\n *\n * // Multiple keys, multiple assets:\n * resolver.add({alias: ['foo', 'boo'], src: ['bar.png', 'bar.webp']});\n * resolver.resolveUrl('foo') // => 'bar.png'\n *\n * // Add custom data attached to the resolver\n * Resolver.add({\n * alias: 'bunnyBooBooSmooth',\n * src: 'bunny{png,webp}',\n * data: { scaleMode:SCALE_MODES.NEAREST }, // Base texture options\n * });\n *\n * resolver.resolve('bunnyBooBooSmooth') // => { src: 'bunny.png', data: { scaleMode: SCALE_MODES.NEAREST } }\n * @param aliases - the UnresolvedAsset or array of UnresolvedAssets to add to the resolver\n */\n add(aliases) {\n const assets = [];\n if (Array.isArray(aliases)) {\n assets.push(...aliases);\n } else {\n assets.push(aliases);\n }\n let keyCheck;\n keyCheck = (key) => {\n if (this.hasKey(key)) {\n warn(`[Resolver] already has key: ${key} overwriting`);\n }\n };\n const assetArray = convertToList(assets);\n assetArray.forEach((asset) => {\n const { src } = asset;\n let { data, format, loadParser } = asset;\n const srcsToUse = convertToList(src).map((src2) => {\n if (typeof src2 === \"string\") {\n return createStringVariations(src2);\n }\n return Array.isArray(src2) ? src2 : [src2];\n });\n const aliasesToUse = this.getAlias(asset);\n Array.isArray(aliasesToUse) ? aliasesToUse.forEach(keyCheck) : keyCheck(aliasesToUse);\n const resolvedAssets = [];\n srcsToUse.forEach((srcs) => {\n srcs.forEach((src2) => {\n let formattedAsset = {};\n if (typeof src2 !== \"object\") {\n formattedAsset.src = src2;\n for (let i = 0; i < this._parsers.length; i++) {\n const parser = this._parsers[i];\n if (parser.test(src2)) {\n formattedAsset = parser.parse(src2);\n break;\n }\n }\n } else {\n data = src2.data ?? data;\n format = src2.format ?? format;\n loadParser = src2.loadParser ?? loadParser;\n formattedAsset = {\n ...formattedAsset,\n ...src2\n };\n }\n if (!aliasesToUse) {\n throw new Error(`[Resolver] alias is undefined for this asset: ${formattedAsset.src}`);\n }\n formattedAsset = this._buildResolvedAsset(formattedAsset, {\n aliases: aliasesToUse,\n data,\n format,\n loadParser\n });\n resolvedAssets.push(formattedAsset);\n });\n });\n aliasesToUse.forEach((alias) => {\n this._assetMap[alias] = resolvedAssets;\n });\n });\n }\n // TODO: this needs an overload like load did in Assets\n /**\n * If the resolver has had a manifest set via setManifest, this will return the assets urls for\n * a given bundleId or bundleIds.\n * @example\n * // Manifest Example\n * const manifest = {\n * bundles: [\n * {\n * name: 'load-screen',\n * assets: [\n * {\n * alias: 'background',\n * src: 'sunset.png',\n * },\n * {\n * alias: 'bar',\n * src: 'load-bar.{png,webp}',\n * },\n * ],\n * },\n * {\n * name: 'game-screen',\n * assets: [\n * {\n * alias: 'character',\n * src: 'robot.png',\n * },\n * {\n * alias: 'enemy',\n * src: 'bad-guy.png',\n * },\n * ],\n * },\n * ]\n * };\n *\n * resolver.setManifest(manifest);\n * const resolved = resolver.resolveBundle('load-screen');\n * @param bundleIds - The bundle ids to resolve\n * @returns All the bundles assets or a hash of assets for each bundle specified\n */\n resolveBundle(bundleIds) {\n const singleAsset = isSingleItem(bundleIds);\n bundleIds = convertToList(bundleIds);\n const out = {};\n bundleIds.forEach((bundleId) => {\n const assetNames = this._bundles[bundleId];\n if (assetNames) {\n const results = this.resolve(assetNames);\n const assets = {};\n for (const key in results) {\n const asset = results[key];\n assets[this._extractAssetIdFromBundle(bundleId, key)] = asset;\n }\n out[bundleId] = assets;\n }\n });\n return singleAsset ? out[bundleIds[0]] : out;\n }\n /**\n * Does exactly what resolve does, but returns just the URL rather than the whole asset object\n * @param key - The key or keys to resolve\n * @returns - The URLs associated with the key(s)\n */\n resolveUrl(key) {\n const result = this.resolve(key);\n if (typeof key !== \"string\") {\n const out = {};\n for (const i in result) {\n out[i] = result[i].src;\n }\n return out;\n }\n return result.src;\n }\n resolve(keys) {\n const singleAsset = isSingleItem(keys);\n keys = convertToList(keys);\n const result = {};\n keys.forEach((key) => {\n if (!this._resolverHash[key]) {\n if (this._assetMap[key]) {\n let assets = this._assetMap[key];\n const preferredOrder = this._getPreferredOrder(assets);\n preferredOrder?.priority.forEach((priorityKey) => {\n preferredOrder.params[priorityKey].forEach((value) => {\n const filteredAssets = assets.filter((asset) => {\n if (asset[priorityKey]) {\n return asset[priorityKey] === value;\n }\n return false;\n });\n if (filteredAssets.length) {\n assets = filteredAssets;\n }\n });\n });\n this._resolverHash[key] = assets[0];\n } else {\n this._resolverHash[key] = this._buildResolvedAsset({\n alias: [key],\n src: key\n }, {});\n }\n }\n result[key] = this._resolverHash[key];\n });\n return singleAsset ? result[keys[0]] : result;\n }\n /**\n * Checks if an asset with a given key exists in the resolver\n * @param key - The key of the asset\n */\n hasKey(key) {\n return !!this._assetMap[key];\n }\n /**\n * Checks if a bundle with the given key exists in the resolver\n * @param key - The key of the bundle\n */\n hasBundle(key) {\n return !!this._bundles[key];\n }\n /**\n * Internal function for figuring out what prefer criteria an asset should use.\n * @param assets\n */\n _getPreferredOrder(assets) {\n for (let i = 0; i < assets.length; i++) {\n const asset = assets[i];\n const preferred = this._preferredOrder.find((preference) => preference.params.format.includes(asset.format));\n if (preferred) {\n return preferred;\n }\n }\n return this._preferredOrder[0];\n }\n /**\n * Appends the default url parameters to the url\n * @param url - The url to append the default parameters to\n * @returns - The url with the default parameters appended\n */\n _appendDefaultSearchParams(url) {\n if (!this._defaultSearchParams)\n return url;\n const paramConnector = /\\?/.test(url) ? \"&\" : \"?\";\n return `${url}${paramConnector}${this._defaultSearchParams}`;\n }\n _buildResolvedAsset(formattedAsset, data) {\n const { aliases, data: assetData, loadParser, format } = data;\n if (this._basePath || this._rootPath) {\n formattedAsset.src = path.toAbsolute(formattedAsset.src, this._basePath, this._rootPath);\n }\n formattedAsset.alias = aliases ?? formattedAsset.alias ?? [formattedAsset.src];\n formattedAsset.src = this._appendDefaultSearchParams(formattedAsset.src);\n formattedAsset.data = { ...assetData || {}, ...formattedAsset.data };\n formattedAsset.loadParser = loadParser ?? formattedAsset.loadParser;\n formattedAsset.format = format ?? formattedAsset.format ?? getUrlExtension(formattedAsset.src);\n return formattedAsset;\n }\n}\n/**\n * The prefix that denotes a URL is for a retina asset.\n * @static\n * @name RETINA_PREFIX\n * @type {RegExp}\n * @default /@([0-9\\.]+)x/\n * @example `@2x`\n */\nResolver.RETINA_PREFIX = /@([0-9\\.]+)x/;\nfunction getUrlExtension(url) {\n return url.split(\".\").pop().split(\"?\").shift().split(\"#\").shift();\n}\n\nexport { Resolver, getUrlExtension };\n//# sourceMappingURL=Resolver.mjs.map\n","\"use strict\";\nconst copySearchParams = (targetUrl, sourceUrl) => {\n const searchParams = sourceUrl.split(\"?\")[1];\n if (searchParams) {\n targetUrl += `?${searchParams}`;\n }\n return targetUrl;\n};\n\nexport { copySearchParams };\n//# sourceMappingURL=copySearchParams.mjs.map\n","import { Rectangle } from '../maths/shapes/Rectangle.mjs';\nimport { Texture } from '../rendering/renderers/shared/texture/Texture.mjs';\n\n\"use strict\";\nconst _Spritesheet = class _Spritesheet {\n /**\n * @param texture - Reference to the source BaseTexture object.\n * @param {object} data - Spritesheet image data.\n */\n constructor(texture, data) {\n /** For multi-packed spritesheets, this contains a reference to all the other spritesheets it depends on. */\n this.linkedSheets = [];\n this._texture = texture instanceof Texture ? texture : null;\n this.textureSource = texture.source;\n this.textures = {};\n this.animations = {};\n this.data = data;\n const metaResolution = parseFloat(data.meta.scale);\n if (metaResolution) {\n this.resolution = metaResolution;\n texture.source.resolution = this.resolution;\n } else {\n this.resolution = texture.source._resolution;\n }\n this._frames = this.data.frames;\n this._frameKeys = Object.keys(this._frames);\n this._batchIndex = 0;\n this._callback = null;\n }\n /**\n * Parser spritesheet from loaded data. This is done asynchronously\n * to prevent creating too many Texture within a single process.\n */\n parse() {\n return new Promise((resolve) => {\n this._callback = resolve;\n this._batchIndex = 0;\n if (this._frameKeys.length <= _Spritesheet.BATCH_SIZE) {\n this._processFrames(0);\n this._processAnimations();\n this._parseComplete();\n } else {\n this._nextBatch();\n }\n });\n }\n /**\n * Process a batch of frames\n * @param initialFrameIndex - The index of frame to start.\n */\n _processFrames(initialFrameIndex) {\n let frameIndex = initialFrameIndex;\n const maxFrames = _Spritesheet.BATCH_SIZE;\n while (frameIndex - initialFrameIndex < maxFrames && frameIndex < this._frameKeys.length) {\n const i = this._frameKeys[frameIndex];\n const data = this._frames[i];\n const rect = data.frame;\n if (rect) {\n let frame = null;\n let trim = null;\n const sourceSize = data.trimmed !== false && data.sourceSize ? data.sourceSize : data.frame;\n const orig = new Rectangle(\n 0,\n 0,\n Math.floor(sourceSize.w) / this.resolution,\n Math.floor(sourceSize.h) / this.resolution\n );\n if (data.rotated) {\n frame = new Rectangle(\n Math.floor(rect.x) / this.resolution,\n Math.floor(rect.y) / this.resolution,\n Math.floor(rect.h) / this.resolution,\n Math.floor(rect.w) / this.resolution\n );\n } else {\n frame = new Rectangle(\n Math.floor(rect.x) / this.resolution,\n Math.floor(rect.y) / this.resolution,\n Math.floor(rect.w) / this.resolution,\n Math.floor(rect.h) / this.resolution\n );\n }\n if (data.trimmed !== false && data.spriteSourceSize) {\n trim = new Rectangle(\n Math.floor(data.spriteSourceSize.x) / this.resolution,\n Math.floor(data.spriteSourceSize.y) / this.resolution,\n Math.floor(rect.w) / this.resolution,\n Math.floor(rect.h) / this.resolution\n );\n }\n this.textures[i] = new Texture({\n source: this.textureSource,\n frame,\n orig,\n trim,\n rotate: data.rotated ? 2 : 0,\n defaultAnchor: data.anchor,\n defaultBorders: data.borders,\n label: i.toString()\n });\n }\n frameIndex++;\n }\n }\n /** Parse animations config. */\n _processAnimations() {\n const animations = this.data.animations || {};\n for (const animName in animations) {\n this.animations[animName] = [];\n for (let i = 0; i < animations[animName].length; i++) {\n const frameName = animations[animName][i];\n this.animations[animName].push(this.textures[frameName]);\n }\n }\n }\n /** The parse has completed. */\n _parseComplete() {\n const callback = this._callback;\n this._callback = null;\n this._batchIndex = 0;\n callback.call(this, this.textures);\n }\n /** Begin the next batch of textures. */\n _nextBatch() {\n this._processFrames(this._batchIndex * _Spritesheet.BATCH_SIZE);\n this._batchIndex++;\n setTimeout(() => {\n if (this._batchIndex * _Spritesheet.BATCH_SIZE < this._frameKeys.length) {\n this._nextBatch();\n } else {\n this._processAnimations();\n this._parseComplete();\n }\n }, 0);\n }\n /**\n * Destroy Spritesheet and don't use after this.\n * @param {boolean} [destroyBase=false] - Whether to destroy the base texture as well\n */\n destroy(destroyBase = false) {\n for (const i in this.textures) {\n this.textures[i].destroy();\n }\n this._frames = null;\n this._frameKeys = null;\n this.data = null;\n this.textures = null;\n if (destroyBase) {\n this._texture?.destroy();\n this.textureSource.destroy();\n }\n this._texture = null;\n this.textureSource = null;\n this.linkedSheets = [];\n }\n};\n/** The maximum number of Textures to build per process. */\n_Spritesheet.BATCH_SIZE = 1e3;\nlet Spritesheet = _Spritesheet;\n\nexport { Spritesheet };\n//# sourceMappingURL=Spritesheet.mjs.map\n","import { LoaderParserPriority } from '../assets/loader/parsers/LoaderParser.mjs';\nimport { Resolver } from '../assets/resolver/Resolver.mjs';\nimport { copySearchParams } from '../assets/utils/copySearchParams.mjs';\nimport { ExtensionType } from '../extensions/Extensions.mjs';\nimport { Texture } from '../rendering/renderers/shared/texture/Texture.mjs';\nimport { path } from '../utils/path.mjs';\nimport { Spritesheet } from './Spritesheet.mjs';\n\n\"use strict\";\nconst validImages = [\n \"jpg\",\n \"png\",\n \"jpeg\",\n \"avif\",\n \"webp\",\n \"basis\",\n \"etc2\",\n \"bc7\",\n \"bc6h\",\n \"bc5\",\n \"bc4\",\n \"bc3\",\n \"bc2\",\n \"bc1\",\n \"eac\",\n \"astc\"\n];\nfunction getCacheableAssets(keys, asset, ignoreMultiPack) {\n const out = {};\n keys.forEach((key) => {\n out[key] = asset;\n });\n Object.keys(asset.textures).forEach((key) => {\n out[key] = asset.textures[key];\n });\n if (!ignoreMultiPack) {\n const basePath = path.dirname(keys[0]);\n asset.linkedSheets.forEach((item, i) => {\n const out2 = getCacheableAssets([`${basePath}/${asset.data.meta.related_multi_packs[i]}`], item, true);\n Object.assign(out, out2);\n });\n }\n return out;\n}\nconst spritesheetAsset = {\n extension: ExtensionType.Asset,\n /** Handle the caching of the related Spritesheet Textures */\n cache: {\n test: (asset) => asset instanceof Spritesheet,\n getCacheableAssets: (keys, asset) => getCacheableAssets(keys, asset, false)\n },\n /** Resolve the resolution of the asset. */\n resolver: {\n extension: {\n type: ExtensionType.ResolveParser,\n name: \"resolveSpritesheet\"\n },\n test: (value) => {\n const tempURL = value.split(\"?\")[0];\n const split = tempURL.split(\".\");\n const extension = split.pop();\n const format = split.pop();\n return extension === \"json\" && validImages.includes(format);\n },\n parse: (value) => {\n const split = value.split(\".\");\n return {\n resolution: parseFloat(Resolver.RETINA_PREFIX.exec(value)?.[1] ?? \"1\"),\n format: split[split.length - 2],\n src: value\n };\n }\n },\n /**\n * Loader plugin that parses sprite sheets!\n * once the JSON has been loaded this checks to see if the JSON is spritesheet data.\n * If it is, we load the spritesheets image and parse the data into Spritesheet\n * All textures in the sprite sheet are then added to the cache\n */\n loader: {\n name: \"spritesheetLoader\",\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Normal,\n name: \"spritesheetLoader\"\n },\n async testParse(asset, options) {\n return path.extname(options.src).toLowerCase() === \".json\" && !!asset.frames;\n },\n async parse(asset, options, loader) {\n const {\n texture: imageTexture,\n // if user need to use preloaded texture\n imageFilename,\n // if user need to use custom filename (not from jsonFile.meta.image)\n textureOptions\n // if user need to set texture options on texture\n } = options?.data ?? {};\n let basePath = path.dirname(options.src);\n if (basePath && basePath.lastIndexOf(\"/\") !== basePath.length - 1) {\n basePath += \"/\";\n }\n let texture;\n if (imageTexture instanceof Texture) {\n texture = imageTexture;\n } else {\n const imagePath = copySearchParams(basePath + (imageFilename ?? asset.meta.image), options.src);\n const assets = await loader.load([{ src: imagePath, data: textureOptions }]);\n texture = assets[imagePath];\n }\n const spritesheet = new Spritesheet(\n texture.source,\n asset\n );\n await spritesheet.parse();\n const multiPacks = asset?.meta?.related_multi_packs;\n if (Array.isArray(multiPacks)) {\n const promises = [];\n for (const item of multiPacks) {\n if (typeof item !== \"string\") {\n continue;\n }\n let itemUrl = basePath + item;\n if (options.data?.ignoreMultiPack) {\n continue;\n }\n itemUrl = copySearchParams(itemUrl, options.src);\n promises.push(loader.load({\n src: itemUrl,\n data: {\n textureOptions,\n ignoreMultiPack: true\n }\n }));\n }\n const res = await Promise.all(promises);\n spritesheet.linkedSheets = res;\n res.forEach((item) => {\n item.linkedSheets = [spritesheet].concat(spritesheet.linkedSheets.filter((sp) => sp !== item));\n });\n }\n return spritesheet;\n },\n async unload(spritesheet, _resolvedAsset, loader) {\n await loader.unload(spritesheet.textureSource._sourceOrigin);\n spritesheet.destroy(false);\n }\n }\n};\n\nexport { spritesheetAsset };\n//# sourceMappingURL=spritesheetAsset.mjs.map\n","import { extensions } from '../extensions/Extensions.mjs';\nimport { spritesheetAsset } from './spritesheetAsset.mjs';\n\n\"use strict\";\nextensions.add(spritesheetAsset);\n//# sourceMappingURL=init.mjs.map\n","\"use strict\";\nconst idCounts = /* @__PURE__ */ Object.create(null);\nconst idHash = /* @__PURE__ */ Object.create(null);\nfunction createIdFromString(value, groupId) {\n let id = idHash[value];\n if (id === void 0) {\n if (idCounts[groupId] === void 0) {\n idCounts[groupId] = 1;\n }\n idHash[value] = id = idCounts[groupId]++;\n }\n return id;\n}\n\nexport { createIdFromString };\n//# sourceMappingURL=createIdFromString.mjs.map\n","import { DOMAdapter } from '../../../../../environment/adapter.mjs';\n\n\"use strict\";\nlet context;\nfunction getTestContext() {\n if (!context || context?.isContextLost()) {\n const canvas = DOMAdapter.get().createCanvas();\n context = canvas.getContext(\"webgl\", {});\n }\n return context;\n}\n\nexport { getTestContext };\n//# sourceMappingURL=getTestContext.mjs.map\n","import { getTestContext } from './getTestContext.mjs';\n\n\"use strict\";\nlet maxFragmentPrecision;\nfunction getMaxFragmentPrecision() {\n if (!maxFragmentPrecision) {\n maxFragmentPrecision = \"mediump\";\n const gl = getTestContext();\n if (gl) {\n if (gl.getShaderPrecisionFormat) {\n const shaderFragment = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT);\n maxFragmentPrecision = shaderFragment.precision ? \"highp\" : \"mediump\";\n }\n }\n }\n return maxFragmentPrecision;\n}\n\nexport { getMaxFragmentPrecision };\n//# sourceMappingURL=getMaxFragmentPrecision.mjs.map\n","\"use strict\";\nfunction addProgramDefines(src, isES300, isFragment) {\n if (isES300)\n return src;\n if (isFragment) {\n src = src.replace(\"out vec4 finalColor;\", \"\");\n return `\n \n #ifdef GL_ES // This checks if it is WebGL1\n #define in varying\n #define finalColor gl_FragColor\n #define texture texture2D\n #endif\n ${src}\n `;\n }\n return `\n \n #ifdef GL_ES // This checks if it is WebGL1\n #define in attribute\n #define out varying\n #endif\n ${src}\n `;\n}\n\nexport { addProgramDefines };\n//# sourceMappingURL=addProgramDefines.mjs.map\n","\"use strict\";\nfunction ensurePrecision(src, options, isFragment) {\n const maxSupportedPrecision = isFragment ? options.maxSupportedFragmentPrecision : options.maxSupportedVertexPrecision;\n if (src.substring(0, 9) !== \"precision\") {\n let precision = isFragment ? options.requestedFragmentPrecision : options.requestedVertexPrecision;\n if (precision === \"highp\" && maxSupportedPrecision !== \"highp\") {\n precision = \"mediump\";\n }\n return `precision ${precision} float;\n${src}`;\n } else if (maxSupportedPrecision !== \"highp\" && src.substring(0, 15) === \"precision highp\") {\n return src.replace(\"precision highp\", \"precision mediump\");\n }\n return src;\n}\n\nexport { ensurePrecision };\n//# sourceMappingURL=ensurePrecision.mjs.map\n","\"use strict\";\nfunction insertVersion(src, isES300) {\n if (!isES300)\n return src;\n return `#version 300 es\n${src}`;\n}\n\nexport { insertVersion };\n//# sourceMappingURL=insertVersion.mjs.map\n","\"use strict\";\nconst fragmentNameCache = {};\nconst VertexNameCache = {};\nfunction setProgramName(src, { name = `pixi-program` }, isFragment = true) {\n name = name.replace(/\\s+/g, \"-\");\n name += isFragment ? \"-fragment\" : \"-vertex\";\n const nameCache = isFragment ? fragmentNameCache : VertexNameCache;\n if (nameCache[name]) {\n nameCache[name]++;\n name += `-${nameCache[name]}`;\n } else {\n nameCache[name] = 1;\n }\n if (src.indexOf(\"#define SHADER_NAME\") !== -1)\n return src;\n const shaderName = `#define SHADER_NAME ${name}`;\n return `${shaderName}\n${src}`;\n}\n\nexport { setProgramName };\n//# sourceMappingURL=setProgramName.mjs.map\n","\"use strict\";\nfunction stripVersion(src, isES300) {\n if (!isES300)\n return src;\n return src.replace(\"#version 300 es\", \"\");\n}\n\nexport { stripVersion };\n//# sourceMappingURL=stripVersion.mjs.map\n","import { createIdFromString } from '../../shared/utils/createIdFromString.mjs';\nimport { getMaxFragmentPrecision } from './program/getMaxFragmentPrecision.mjs';\nimport { addProgramDefines } from './program/preprocessors/addProgramDefines.mjs';\nimport { ensurePrecision } from './program/preprocessors/ensurePrecision.mjs';\nimport { insertVersion } from './program/preprocessors/insertVersion.mjs';\nimport { setProgramName } from './program/preprocessors/setProgramName.mjs';\nimport { stripVersion } from './program/preprocessors/stripVersion.mjs';\n\n\"use strict\";\nconst processes = {\n // strips any version headers..\n stripVersion,\n // adds precision string if not already present\n ensurePrecision,\n // add some defines if WebGL1 to make it more compatible with WebGL2 shaders\n addProgramDefines,\n // add the program name to the shader\n setProgramName,\n // add the version string to the shader header\n insertVersion\n};\nconst programCache = /* @__PURE__ */ Object.create(null);\nconst _GlProgram = class _GlProgram {\n /**\n * Creates a shiny new GlProgram. Used by WebGL renderer.\n * @param options - The options for the program.\n */\n constructor(options) {\n options = { ..._GlProgram.defaultOptions, ...options };\n const isES300 = options.fragment.indexOf(\"#version 300 es\") !== -1;\n const preprocessorOptions = {\n stripVersion: isES300,\n ensurePrecision: {\n requestedFragmentPrecision: options.preferredFragmentPrecision,\n requestedVertexPrecision: options.preferredVertexPrecision,\n maxSupportedVertexPrecision: \"highp\",\n maxSupportedFragmentPrecision: getMaxFragmentPrecision()\n },\n setProgramName: {\n name: options.name\n },\n addProgramDefines: isES300,\n insertVersion: isES300\n };\n let fragment = options.fragment;\n let vertex = options.vertex;\n Object.keys(processes).forEach((processKey) => {\n const processOptions = preprocessorOptions[processKey];\n fragment = processes[processKey](fragment, processOptions, true);\n vertex = processes[processKey](vertex, processOptions, false);\n });\n this.fragment = fragment;\n this.vertex = vertex;\n this.transformFeedbackVaryings = options.transformFeedbackVaryings;\n this._key = createIdFromString(`${this.vertex}:${this.fragment}`, \"gl-program\");\n }\n /** destroys the program */\n destroy() {\n this.fragment = null;\n this.vertex = null;\n this._attributeData = null;\n this._uniformData = null;\n this._uniformBlockData = null;\n this.transformFeedbackVaryings = null;\n }\n /**\n * Helper function that creates a program for a given source.\n * It will check the program cache if the program has already been created.\n * If it has that one will be returned, if not a new one will be created and cached.\n * @param options - The options for the program.\n * @returns A program using the same source\n */\n static from(options) {\n const key = `${options.vertex}:${options.fragment}`;\n if (!programCache[key]) {\n programCache[key] = new _GlProgram(options);\n }\n return programCache[key];\n }\n};\n/** The default options used by the program. */\n_GlProgram.defaultOptions = {\n preferredVertexPrecision: \"highp\",\n preferredFragmentPrecision: \"mediump\"\n};\nlet GlProgram = _GlProgram;\n\nexport { GlProgram };\n//# sourceMappingURL=GlProgram.mjs.map\n","\"use strict\";\nconst attributeFormatData = {\n uint8x2: { size: 2, stride: 2, normalised: false },\n uint8x4: { size: 4, stride: 4, normalised: false },\n sint8x2: { size: 2, stride: 2, normalised: false },\n sint8x4: { size: 4, stride: 4, normalised: false },\n unorm8x2: { size: 2, stride: 2, normalised: true },\n unorm8x4: { size: 4, stride: 4, normalised: true },\n snorm8x2: { size: 2, stride: 2, normalised: true },\n snorm8x4: { size: 4, stride: 4, normalised: true },\n uint16x2: { size: 2, stride: 4, normalised: false },\n uint16x4: { size: 4, stride: 8, normalised: false },\n sint16x2: { size: 2, stride: 4, normalised: false },\n sint16x4: { size: 4, stride: 8, normalised: false },\n unorm16x2: { size: 2, stride: 4, normalised: true },\n unorm16x4: { size: 4, stride: 8, normalised: true },\n snorm16x2: { size: 2, stride: 4, normalised: true },\n snorm16x4: { size: 4, stride: 8, normalised: true },\n float16x2: { size: 2, stride: 4, normalised: false },\n float16x4: { size: 4, stride: 8, normalised: false },\n float32: { size: 1, stride: 4, normalised: false },\n float32x2: { size: 2, stride: 8, normalised: false },\n float32x3: { size: 3, stride: 12, normalised: false },\n float32x4: { size: 4, stride: 16, normalised: false },\n uint32: { size: 1, stride: 4, normalised: false },\n uint32x2: { size: 2, stride: 8, normalised: false },\n uint32x3: { size: 3, stride: 12, normalised: false },\n uint32x4: { size: 4, stride: 16, normalised: false },\n sint32: { size: 1, stride: 4, normalised: false },\n sint32x2: { size: 2, stride: 8, normalised: false },\n sint32x3: { size: 3, stride: 12, normalised: false },\n sint32x4: { size: 4, stride: 16, normalised: false }\n};\nfunction getAttributeInfoFromFormat(format) {\n return attributeFormatData[format] ?? attributeFormatData.float32;\n}\n\nexport { getAttributeInfoFromFormat };\n//# sourceMappingURL=getAttributeInfoFromFormat.mjs.map\n","import { getAttributeInfoFromFormat } from '../../../shared/geometry/utils/getAttributeInfoFromFormat.mjs';\n\n\"use strict\";\nconst WGSL_TO_VERTEX_TYPES = {\n f32: \"float32\",\n \"vec2<f32>\": \"float32x2\",\n \"vec3<f32>\": \"float32x3\",\n \"vec4<f32>\": \"float32x4\",\n vec2f: \"float32x2\",\n vec3f: \"float32x3\",\n vec4f: \"float32x4\",\n i32: \"sint32\",\n \"vec2<i32>\": \"sint32x2\",\n \"vec3<i32>\": \"sint32x3\",\n \"vec4<i32>\": \"sint32x4\",\n u32: \"uint32\",\n \"vec2<u32>\": \"uint32x2\",\n \"vec3<u32>\": \"uint32x3\",\n \"vec4<u32>\": \"uint32x4\",\n bool: \"uint32\",\n \"vec2<bool>\": \"uint32x2\",\n \"vec3<bool>\": \"uint32x3\",\n \"vec4<bool>\": \"uint32x4\"\n};\nfunction extractAttributesFromGpuProgram({ source, entryPoint }) {\n const results = {};\n const mainVertStart = source.indexOf(`fn ${entryPoint}`);\n if (mainVertStart !== -1) {\n const arrowFunctionStart = source.indexOf(\"->\", mainVertStart);\n if (arrowFunctionStart !== -1) {\n const functionArgsSubstring = source.substring(mainVertStart, arrowFunctionStart);\n const inputsRegex = /@location\\((\\d+)\\)\\s+([a-zA-Z0-9_]+)\\s*:\\s*([a-zA-Z0-9_<>]+)(?:,|\\s|$)/g;\n let match;\n while ((match = inputsRegex.exec(functionArgsSubstring)) !== null) {\n const format = WGSL_TO_VERTEX_TYPES[match[3]] ?? \"float32\";\n results[match[2]] = {\n location: parseInt(match[1], 10),\n format,\n stride: getAttributeInfoFromFormat(format).stride,\n offset: 0,\n instance: false,\n start: 0\n };\n }\n }\n }\n return results;\n}\n\nexport { extractAttributesFromGpuProgram };\n//# sourceMappingURL=extractAttributesFromGpuProgram.mjs.map\n","\"use strict\";\nfunction extractStructAndGroups(wgsl) {\n const linePattern = /(^|[^/])@(group|binding)\\(\\d+\\)[^;]+;/g;\n const groupPattern = /@group\\((\\d+)\\)/;\n const bindingPattern = /@binding\\((\\d+)\\)/;\n const namePattern = /var(<[^>]+>)? (\\w+)/;\n const typePattern = /:\\s*(\\w+)/;\n const structPattern = /struct\\s+(\\w+)\\s*{([^}]+)}/g;\n const structMemberPattern = /(\\w+)\\s*:\\s*([\\w\\<\\>]+)/g;\n const structName = /struct\\s+(\\w+)/;\n const groups = wgsl.match(linePattern)?.map((item) => ({\n group: parseInt(item.match(groupPattern)[1], 10),\n binding: parseInt(item.match(bindingPattern)[1], 10),\n name: item.match(namePattern)[2],\n isUniform: item.match(namePattern)[1] === \"<uniform>\",\n type: item.match(typePattern)[1]\n }));\n if (!groups) {\n return {\n groups: [],\n structs: []\n };\n }\n const structs = wgsl.match(structPattern)?.map((struct) => {\n const name = struct.match(structName)[1];\n const members = struct.match(structMemberPattern).reduce((acc, member) => {\n const [name2, type] = member.split(\":\");\n acc[name2.trim()] = type.trim();\n return acc;\n }, {});\n if (!members) {\n return null;\n }\n return { name, members };\n }).filter(({ name }) => groups.some((group) => group.type === name)) ?? [];\n return {\n groups,\n structs\n };\n}\n\nexport { extractStructAndGroups };\n//# sourceMappingURL=extractStructAndGroups.mjs.map\n","\"use strict\";\nvar ShaderStage = /* @__PURE__ */ ((ShaderStage2) => {\n ShaderStage2[ShaderStage2[\"VERTEX\"] = 1] = \"VERTEX\";\n ShaderStage2[ShaderStage2[\"FRAGMENT\"] = 2] = \"FRAGMENT\";\n ShaderStage2[ShaderStage2[\"COMPUTE\"] = 4] = \"COMPUTE\";\n return ShaderStage2;\n})(ShaderStage || {});\n\nexport { ShaderStage };\n//# sourceMappingURL=const.mjs.map\n","import { ShaderStage } from '../../../shared/shader/const.mjs';\n\n\"use strict\";\nfunction generateGpuLayoutGroups({ groups }) {\n const layout = [];\n for (let i = 0; i < groups.length; i++) {\n const group = groups[i];\n if (!layout[group.group]) {\n layout[group.group] = [];\n }\n if (group.isUniform) {\n layout[group.group].push({\n binding: group.binding,\n visibility: ShaderStage.VERTEX | ShaderStage.FRAGMENT,\n buffer: {\n type: \"uniform\"\n }\n });\n } else if (group.type === \"sampler\") {\n layout[group.group].push({\n binding: group.binding,\n visibility: ShaderStage.FRAGMENT,\n sampler: {\n type: \"filtering\"\n }\n });\n } else if (group.type === \"texture_2d\") {\n layout[group.group].push({\n binding: group.binding,\n visibility: ShaderStage.FRAGMENT,\n texture: {\n sampleType: \"float\",\n viewDimension: \"2d\",\n multisampled: false\n }\n });\n }\n }\n return layout;\n}\n\nexport { generateGpuLayoutGroups };\n//# sourceMappingURL=generateGpuLayoutGroups.mjs.map\n","\"use strict\";\nfunction generateLayoutHash({ groups }) {\n const layout = [];\n for (let i = 0; i < groups.length; i++) {\n const group = groups[i];\n if (!layout[group.group]) {\n layout[group.group] = {};\n }\n layout[group.group][group.name] = group.binding;\n }\n return layout;\n}\n\nexport { generateLayoutHash };\n//# sourceMappingURL=generateLayoutHash.mjs.map\n","\"use strict\";\nfunction removeStructAndGroupDuplicates(vertexStructsAndGroups, fragmentStructsAndGroups) {\n const structNameSet = /* @__PURE__ */ new Set();\n const dupeGroupKeySet = /* @__PURE__ */ new Set();\n const structs = [...vertexStructsAndGroups.structs, ...fragmentStructsAndGroups.structs].filter((struct) => {\n if (structNameSet.has(struct.name)) {\n return false;\n }\n structNameSet.add(struct.name);\n return true;\n });\n const groups = [...vertexStructsAndGroups.groups, ...fragmentStructsAndGroups.groups].filter((group) => {\n const key = `${group.name}-${group.binding}`;\n if (dupeGroupKeySet.has(key)) {\n return false;\n }\n dupeGroupKeySet.add(key);\n return true;\n });\n return { structs, groups };\n}\n\nexport { removeStructAndGroupDuplicates };\n//# sourceMappingURL=removeStructAndGroupDuplicates.mjs.map\n","import { createIdFromString } from '../../shared/utils/createIdFromString.mjs';\nimport { extractAttributesFromGpuProgram } from './utils/extractAttributesFromGpuProgram.mjs';\nimport { extractStructAndGroups } from './utils/extractStructAndGroups.mjs';\nimport { generateGpuLayoutGroups } from './utils/generateGpuLayoutGroups.mjs';\nimport { generateLayoutHash } from './utils/generateLayoutHash.mjs';\nimport { removeStructAndGroupDuplicates } from './utils/removeStructAndGroupDuplicates.mjs';\n\n\"use strict\";\nconst programCache = /* @__PURE__ */ Object.create(null);\nclass GpuProgram {\n /**\n * Create a new GpuProgram\n * @param options - The options for the gpu program\n */\n constructor(options) {\n /**\n * @internal\n * @ignore\n */\n this._layoutKey = 0;\n /**\n * @internal\n * @ignore\n */\n this._attributeLocationsKey = 0;\n const { fragment, vertex, layout, gpuLayout, name } = options;\n this.name = name;\n this.fragment = fragment;\n this.vertex = vertex;\n if (fragment.source === vertex.source) {\n const structsAndGroups = extractStructAndGroups(fragment.source);\n this.structsAndGroups = structsAndGroups;\n } else {\n const vertexStructsAndGroups = extractStructAndGroups(vertex.source);\n const fragmentStructsAndGroups = extractStructAndGroups(fragment.source);\n this.structsAndGroups = removeStructAndGroupDuplicates(vertexStructsAndGroups, fragmentStructsAndGroups);\n }\n this.layout = layout ?? generateLayoutHash(this.structsAndGroups);\n this.gpuLayout = gpuLayout ?? generateGpuLayoutGroups(this.structsAndGroups);\n this.autoAssignGlobalUniforms = !!(this.layout[0]?.globalUniforms !== void 0);\n this.autoAssignLocalUniforms = !!(this.layout[1]?.localUniforms !== void 0);\n this._generateProgramKey();\n }\n // TODO maker this pure\n _generateProgramKey() {\n const { vertex, fragment } = this;\n const bigKey = vertex.source + fragment.source + vertex.entryPoint + fragment.entryPoint;\n this._layoutKey = createIdFromString(bigKey, \"program\");\n }\n get attributeData() {\n this._attributeData ?? (this._attributeData = extractAttributesFromGpuProgram(this.vertex));\n return this._attributeData;\n }\n /** destroys the program */\n destroy() {\n this.gpuLayout = null;\n this.layout = null;\n this.structsAndGroups = null;\n this.fragment = null;\n this.vertex = null;\n }\n /**\n * Helper function that creates a program for a given source.\n * It will check the program cache if the program has already been created.\n * If it has that one will be returned, if not a new one will be created and cached.\n * @param options - The options for the program.\n * @returns A program using the same source\n */\n static from(options) {\n const key = `${options.vertex.source}:${options.fragment.source}:${options.fragment.entryPoint}:${options.vertex.entryPoint}`;\n if (!programCache[key]) {\n programCache[key] = new GpuProgram(options);\n }\n return programCache[key];\n }\n}\n\nexport { GpuProgram };\n//# sourceMappingURL=GpuProgram.mjs.map\n","\"use strict\";\nconst UNIFORM_TYPES_VALUES = [\n \"f32\",\n \"i32\",\n \"vec2<f32>\",\n \"vec3<f32>\",\n \"vec4<f32>\",\n \"mat2x2<f32>\",\n \"mat3x3<f32>\",\n \"mat4x4<f32>\",\n \"mat3x2<f32>\",\n \"mat4x2<f32>\",\n \"mat2x3<f32>\",\n \"mat4x3<f32>\",\n \"mat2x4<f32>\",\n \"mat3x4<f32>\",\n \"vec2<i32>\",\n \"vec3<i32>\",\n \"vec4<i32>\"\n];\nconst UNIFORM_TYPES_MAP = UNIFORM_TYPES_VALUES.reduce((acc, type) => {\n acc[type] = true;\n return acc;\n}, {});\n\nexport { UNIFORM_TYPES_MAP, UNIFORM_TYPES_VALUES };\n//# sourceMappingURL=types.mjs.map\n","\"use strict\";\nfunction getDefaultUniformValue(type, size) {\n switch (type) {\n case \"f32\":\n return 0;\n case \"vec2<f32>\":\n return new Float32Array(2 * size);\n case \"vec3<f32>\":\n return new Float32Array(3 * size);\n case \"vec4<f32>\":\n return new Float32Array(4 * size);\n case \"mat2x2<f32>\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 1\n ]);\n case \"mat3x3<f32>\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1\n ]);\n case \"mat4x4<f32>\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1\n ]);\n }\n return null;\n}\n\nexport { getDefaultUniformValue };\n//# sourceMappingURL=getDefaultUniformValue.mjs.map\n","import { uid } from '../../../../utils/data/uid.mjs';\nimport { createIdFromString } from '../utils/createIdFromString.mjs';\nimport { UNIFORM_TYPES_MAP, UNIFORM_TYPES_VALUES } from './types.mjs';\nimport { getDefaultUniformValue } from './utils/getDefaultUniformValue.mjs';\n\n\"use strict\";\nconst _UniformGroup = class _UniformGroup {\n /**\n * Create a new Uniform group\n * @param uniformStructures - The structures of the uniform group\n * @param options - The optional parameters of this uniform group\n */\n constructor(uniformStructures, options) {\n /** used internally to know if a uniform group was used in the last render pass */\n this._touched = 0;\n /** a unique id for this uniform group used through the renderer */\n this.uid = uid(\"uniform\");\n /** a resource type, used to identify how to handle it when its in a bind group / shader resource */\n this._resourceType = \"uniformGroup\";\n /** the resource id used internally by the renderer to build bind group keys */\n this._resourceId = uid(\"resource\");\n /** used ito identify if this is a uniform group */\n this.isUniformGroup = true;\n /**\n * used to flag if this Uniform groups data is different from what it has stored in its buffer / on the GPU\n * @internal\n * @ignore\n */\n this._dirtyId = 0;\n // implementing the interface - UniformGroup are not destroyed\n this.destroyed = false;\n options = { ..._UniformGroup.defaultOptions, ...options };\n this.uniformStructures = uniformStructures;\n const uniforms = {};\n for (const i in uniformStructures) {\n const uniformData = uniformStructures[i];\n uniformData.name = i;\n uniformData.size = uniformData.size ?? 1;\n if (!UNIFORM_TYPES_MAP[uniformData.type]) {\n throw new Error(`Uniform type ${uniformData.type} is not supported. Supported uniform types are: ${UNIFORM_TYPES_VALUES.join(\", \")}`);\n }\n uniformData.value ?? (uniformData.value = getDefaultUniformValue(uniformData.type, uniformData.size));\n uniforms[i] = uniformData.value;\n }\n this.uniforms = uniforms;\n this._dirtyId = 1;\n this.ubo = options.ubo;\n this.isStatic = options.isStatic;\n this._signature = createIdFromString(Object.keys(uniforms).map(\n (i) => `${i}-${uniformStructures[i].type}`\n ).join(\"-\"), \"uniform-group\");\n }\n /** Call this if you want the uniform groups data to be uploaded to the GPU only useful if `isStatic` is true. */\n update() {\n this._dirtyId++;\n }\n};\n/** The default options used by the uniform group. */\n_UniformGroup.defaultOptions = {\n /** if true the UniformGroup is handled as an Uniform buffer object. */\n ubo: false,\n /** if true, then you are responsible for when the data is uploaded to the GPU by calling `update()` */\n isStatic: false\n};\nlet UniformGroup = _UniformGroup;\n\nexport { UniformGroup };\n//# sourceMappingURL=UniformGroup.mjs.map\n","\"use strict\";\nclass BindGroup {\n /**\n * Create a new instance eof the Bind Group.\n * @param resources - The resources that are bound together for use by a shader.\n */\n constructor(resources) {\n /** The resources that are bound together for use by a shader. */\n this.resources = /* @__PURE__ */ Object.create(null);\n this._dirty = true;\n let index = 0;\n for (const i in resources) {\n const resource = resources[i];\n this.setResource(resource, index++);\n }\n this._updateKey();\n }\n /**\n * Updates the key if its flagged as dirty. This is used internally to\n * match this bind group to a WebGPU BindGroup.\n * @internal\n * @ignore\n */\n _updateKey() {\n if (!this._dirty)\n return;\n this._dirty = false;\n const keyParts = [];\n let index = 0;\n for (const i in this.resources) {\n keyParts[index++] = this.resources[i]._resourceId;\n }\n this._key = keyParts.join(\"|\");\n }\n /**\n * Set a resource at a given index. this function will\n * ensure that listeners will be removed from the current resource\n * and added to the new resource.\n * @param resource - The resource to set.\n * @param index - The index to set the resource at.\n */\n setResource(resource, index) {\n const currentResource = this.resources[index];\n if (resource === currentResource)\n return;\n if (currentResource) {\n resource.off?.(\"change\", this.onResourceChange, this);\n }\n resource.on?.(\"change\", this.onResourceChange, this);\n this.resources[index] = resource;\n this._dirty = true;\n }\n /**\n * Returns the resource at the current specified index.\n * @param index - The index of the resource to get.\n * @returns - The resource at the specified index.\n */\n getResource(index) {\n return this.resources[index];\n }\n /**\n * Used internally to 'touch' each resource, to ensure that the GC\n * knows that all resources in this bind group are still being used.\n * @param tick - The current tick.\n * @internal\n * @ignore\n */\n _touch(tick) {\n const resources = this.resources;\n for (const i in resources) {\n resources[i]._touched = tick;\n }\n }\n /** Destroys this bind group and removes all listeners. */\n destroy() {\n const resources = this.resources;\n for (const i in resources) {\n const resource = resources[i];\n resource.off?.(\"change\", this.onResourceChange, this);\n }\n this.resources = null;\n }\n onResourceChange(resource) {\n this._dirty = true;\n if (resource.destroyed) {\n const resources = this.resources;\n for (const i in resources) {\n if (resources[i] === resource) {\n resources[i] = null;\n }\n }\n } else {\n this._updateKey();\n }\n }\n}\n\nexport { BindGroup };\n//# sourceMappingURL=BindGroup.mjs.map\n","\"use strict\";\nvar RendererType = /* @__PURE__ */ ((RendererType2) => {\n RendererType2[RendererType2[\"WEBGL\"] = 1] = \"WEBGL\";\n RendererType2[RendererType2[\"WEBGPU\"] = 2] = \"WEBGPU\";\n RendererType2[RendererType2[\"BOTH\"] = 3] = \"BOTH\";\n return RendererType2;\n})(RendererType || {});\n\nexport { RendererType };\n//# sourceMappingURL=types.mjs.map\n","import EventEmitter from 'eventemitter3';\nimport { GlProgram } from '../../gl/shader/GlProgram.mjs';\nimport { BindGroup } from '../../gpu/shader/BindGroup.mjs';\nimport { GpuProgram } from '../../gpu/shader/GpuProgram.mjs';\nimport { RendererType } from '../../types.mjs';\nimport { UniformGroup } from './UniformGroup.mjs';\nimport { uid } from '../../../../utils/data/uid.mjs';\n\n\"use strict\";\nclass Shader extends EventEmitter {\n constructor(options) {\n super();\n /** A unique identifier for the shader */\n this.uid = uid(\"shader\");\n /**\n * A record of the uniform groups and resources used by the shader.\n * This is used by WebGL renderer to sync uniform data.\n * @internal\n * @ignore\n */\n this._uniformBindMap = /* @__PURE__ */ Object.create(null);\n this._ownedBindGroups = [];\n let {\n gpuProgram,\n glProgram,\n groups,\n resources,\n compatibleRenderers,\n groupMap\n } = options;\n this.gpuProgram = gpuProgram;\n this.glProgram = glProgram;\n if (compatibleRenderers === void 0) {\n compatibleRenderers = 0;\n if (gpuProgram)\n compatibleRenderers |= RendererType.WEBGPU;\n if (glProgram)\n compatibleRenderers |= RendererType.WEBGL;\n }\n this.compatibleRenderers = compatibleRenderers;\n const nameHash = {};\n if (!resources && !groups) {\n resources = {};\n }\n if (resources && groups) {\n throw new Error(\"[Shader] Cannot have both resources and groups\");\n } else if (!gpuProgram && groups && !groupMap) {\n throw new Error(\"[Shader] No group map or WebGPU shader provided - consider using resources instead.\");\n } else if (!gpuProgram && groups && groupMap) {\n for (const i in groupMap) {\n for (const j in groupMap[i]) {\n const uniformName = groupMap[i][j];\n nameHash[uniformName] = {\n group: i,\n binding: j,\n name: uniformName\n };\n }\n }\n } else if (gpuProgram && groups && !groupMap) {\n const groupData = gpuProgram.structsAndGroups.groups;\n groupMap = {};\n groupData.forEach((data) => {\n groupMap[data.group] = groupMap[data.group] || {};\n groupMap[data.group][data.binding] = data.name;\n nameHash[data.name] = data;\n });\n } else if (resources) {\n groups = {};\n groupMap = {};\n if (gpuProgram) {\n const groupData = gpuProgram.structsAndGroups.groups;\n groupData.forEach((data) => {\n groupMap[data.group] = groupMap[data.group] || {};\n groupMap[data.group][data.binding] = data.name;\n nameHash[data.name] = data;\n });\n }\n let bindTick = 0;\n for (const i in resources) {\n if (nameHash[i])\n continue;\n if (!groups[99]) {\n groups[99] = new BindGroup();\n this._ownedBindGroups.push(groups[99]);\n }\n nameHash[i] = { group: 99, binding: bindTick, name: i };\n groupMap[99] = groupMap[99] || {};\n groupMap[99][bindTick] = i;\n bindTick++;\n }\n for (const i in resources) {\n const name = i;\n let value = resources[i];\n if (!value.source && !value._resourceType) {\n value = new UniformGroup(value);\n }\n const data = nameHash[name];\n if (data) {\n if (!groups[data.group]) {\n groups[data.group] = new BindGroup();\n this._ownedBindGroups.push(groups[data.group]);\n }\n groups[data.group].setResource(value, data.binding);\n }\n }\n }\n this.groups = groups;\n this._uniformBindMap = groupMap;\n this.resources = this._buildResourceAccessor(groups, nameHash);\n }\n /**\n * Sometimes a resource group will be provided later (for example global uniforms)\n * In such cases, this method can be used to let the shader know about the group.\n * @param name - the name of the resource group\n * @param groupIndex - the index of the group (should match the webGPU shader group location)\n * @param bindIndex - the index of the bind point (should match the webGPU shader bind point)\n */\n addResource(name, groupIndex, bindIndex) {\n var _a, _b;\n (_a = this._uniformBindMap)[groupIndex] || (_a[groupIndex] = {});\n (_b = this._uniformBindMap[groupIndex])[bindIndex] || (_b[bindIndex] = name);\n if (!this.groups[groupIndex]) {\n this.groups[groupIndex] = new BindGroup();\n this._ownedBindGroups.push(this.groups[groupIndex]);\n }\n }\n _buildResourceAccessor(groups, nameHash) {\n const uniformsOut = {};\n for (const i in nameHash) {\n const data = nameHash[i];\n Object.defineProperty(uniformsOut, data.name, {\n get() {\n return groups[data.group].getResource(data.binding);\n },\n set(value) {\n groups[data.group].setResource(value, data.binding);\n }\n });\n }\n return uniformsOut;\n }\n /**\n * Use to destroy the shader when its not longer needed.\n * It will destroy the resources and remove listeners.\n * @param destroyPrograms - if the programs should be destroyed as well.\n * Make sure its not being used by other shaders!\n */\n destroy(destroyPrograms = false) {\n this.emit(\"destroy\", this);\n if (destroyPrograms) {\n this.gpuProgram?.destroy();\n this.glProgram?.destroy();\n }\n this.gpuProgram = null;\n this.glProgram = null;\n this.removeAllListeners();\n this._uniformBindMap = null;\n this._ownedBindGroups.forEach((bindGroup) => {\n bindGroup.destroy();\n });\n this._ownedBindGroups = null;\n this.resources = null;\n this.groups = null;\n }\n static from(options) {\n const { gpu, gl, ...rest } = options;\n let gpuProgram;\n let glProgram;\n if (gpu) {\n gpuProgram = GpuProgram.from(gpu);\n }\n if (gl) {\n glProgram = GlProgram.from(gl);\n }\n return new Shader({\n gpuProgram,\n glProgram,\n ...rest\n });\n }\n}\n\nexport { Shader };\n//# sourceMappingURL=Shader.mjs.map\n","import { extensions, ExtensionType } from '../extensions/Extensions.mjs';\n\n\"use strict\";\nconst environments = [];\nextensions.handleByNamedList(ExtensionType.Environment, environments);\nasync function loadEnvironmentExtensions(skip) {\n if (skip)\n return;\n for (let i = 0; i < environments.length; i++) {\n const env = environments[i];\n if (env.value.test()) {\n await env.value.load();\n return;\n }\n }\n}\nasync function autoDetectEnvironment(add) {\n return loadEnvironmentExtensions(!add);\n}\n\nexport { autoDetectEnvironment, loadEnvironmentExtensions };\n//# sourceMappingURL=autoDetectEnvironment.mjs.map\n","\"use strict\";\nlet unsafeEval;\nfunction unsafeEvalSupported() {\n if (typeof unsafeEval === \"boolean\") {\n return unsafeEval;\n }\n try {\n const func = new Function(\"param1\", \"param2\", \"param3\", \"return param1[param2] === param3;\");\n unsafeEval = func({ a: \"b\" }, \"a\", \"b\") === true;\n } catch (_e) {\n unsafeEval = false;\n }\n return unsafeEval;\n}\n\nexport { unsafeEvalSupported };\n//# sourceMappingURL=unsafeEvalSupported.mjs.map\n","'use strict';\n\nmodule.exports = earcut;\nmodule.exports.default = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim | 0);\n triangles.push(ear.i / dim | 0);\n triangles.push(next.i / dim | 0);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n var p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim | 0);\n triangles.push(p.i / dim | 0);\n triangles.push(b.i / dim | 0);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = 0;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n","\"use strict\";\nvar CLEAR = /* @__PURE__ */ ((CLEAR2) => {\n CLEAR2[CLEAR2[\"NONE\"] = 0] = \"NONE\";\n CLEAR2[CLEAR2[\"COLOR\"] = 16384] = \"COLOR\";\n CLEAR2[CLEAR2[\"STENCIL\"] = 1024] = \"STENCIL\";\n CLEAR2[CLEAR2[\"DEPTH\"] = 256] = \"DEPTH\";\n CLEAR2[CLEAR2[\"COLOR_DEPTH\"] = 16640] = \"COLOR_DEPTH\";\n CLEAR2[CLEAR2[\"COLOR_STENCIL\"] = 17408] = \"COLOR_STENCIL\";\n CLEAR2[CLEAR2[\"DEPTH_STENCIL\"] = 1280] = \"DEPTH_STENCIL\";\n CLEAR2[CLEAR2[\"ALL\"] = 17664] = \"ALL\";\n return CLEAR2;\n})(CLEAR || {});\n\nexport { CLEAR };\n//# sourceMappingURL=const.mjs.map\n","\"use strict\";\nclass SystemRunner {\n /**\n * @param name - The function name that will be executed on the listeners added to this Runner.\n */\n constructor(name) {\n this.items = [];\n this._name = name;\n }\n /* jsdoc/check-param-names */\n /**\n * Dispatch/Broadcast Runner to all listeners added to the queue.\n * @param {...any} params - (optional) parameters to pass to each listener\n */\n /* jsdoc/check-param-names */\n emit(a0, a1, a2, a3, a4, a5, a6, a7) {\n const { name, items } = this;\n for (let i = 0, len = items.length; i < len; i++) {\n items[i][name](a0, a1, a2, a3, a4, a5, a6, a7);\n }\n return this;\n }\n /**\n * Add a listener to the Runner\n *\n * Runners do not need to have scope or functions passed to them.\n * All that is required is to pass the listening object and ensure that it has contains a function that has the same name\n * as the name provided to the Runner when it was created.\n *\n * Eg A listener passed to this Runner will require a 'complete' function.\n *\n * ```\n * import { Runner } from 'pixi.js';\n *\n * const complete = new Runner('complete');\n * ```\n *\n * The scope used will be the object itself.\n * @param {any} item - The object that will be listening.\n */\n add(item) {\n if (item[this._name]) {\n this.remove(item);\n this.items.push(item);\n }\n return this;\n }\n /**\n * Remove a single listener from the dispatch queue.\n * @param {any} item - The listener that you would like to remove.\n */\n remove(item) {\n const index = this.items.indexOf(item);\n if (index !== -1) {\n this.items.splice(index, 1);\n }\n return this;\n }\n /**\n * Check to see if the listener is already in the Runner\n * @param {any} item - The listener that you would like to check.\n */\n contains(item) {\n return this.items.indexOf(item) !== -1;\n }\n /** Remove all listeners from the Runner */\n removeAll() {\n this.items.length = 0;\n return this;\n }\n /** Remove all references, don't use after this. */\n destroy() {\n this.removeAll();\n this.items = null;\n this._name = null;\n }\n /**\n * `true` if there are no this Runner contains no listeners\n * @readonly\n */\n get empty() {\n return this.items.length === 0;\n }\n /**\n * The name of the runner.\n * @readonly\n */\n get name() {\n return this._name;\n }\n}\n\nexport { SystemRunner };\n//# sourceMappingURL=SystemRunner.mjs.map\n","import { Color } from '../../../../color/Color.mjs';\nimport { loadEnvironmentExtensions } from '../../../../environment/autoDetectEnvironment.mjs';\nimport { Container } from '../../../../scene/container/Container.mjs';\nimport { unsafeEvalSupported } from '../../../../utils/browser/unsafeEvalSupported.mjs';\nimport { deprecation, v8_0_0 } from '../../../../utils/logging/deprecation.mjs';\nimport '../../../../utils/utils.mjs';\nimport { CLEAR } from '../../gl/const.mjs';\nimport { SystemRunner } from './SystemRunner.mjs';\nimport EventEmitter from 'eventemitter3';\n\n\"use strict\";\nconst defaultRunners = [\n \"init\",\n \"destroy\",\n \"contextChange\",\n \"resolutionChange\",\n \"resetState\",\n \"renderEnd\",\n \"renderStart\",\n \"render\",\n \"update\",\n \"postrender\",\n \"prerender\"\n];\nconst _AbstractRenderer = class _AbstractRenderer extends EventEmitter {\n /**\n * Set up a system with a collection of SystemClasses and runners.\n * Systems are attached dynamically to this class when added.\n * @param config - the config for the system manager\n */\n constructor(config) {\n super();\n this.runners = /* @__PURE__ */ Object.create(null);\n this.renderPipes = /* @__PURE__ */ Object.create(null);\n this._initOptions = {};\n this._systemsHash = /* @__PURE__ */ Object.create(null);\n this.type = config.type;\n this.name = config.name;\n this.config = config;\n const combinedRunners = [...defaultRunners, ...this.config.runners ?? []];\n this._addRunners(...combinedRunners);\n this._unsafeEvalCheck();\n }\n /**\n * Initialize the renderer.\n * @param options - The options to use to create the renderer.\n */\n async init(options = {}) {\n const skip = options.skipExtensionImports === true ? true : options.manageImports === false;\n await loadEnvironmentExtensions(skip);\n this._addSystems(this.config.systems);\n this._addPipes(this.config.renderPipes, this.config.renderPipeAdaptors);\n for (const systemName in this._systemsHash) {\n const system = this._systemsHash[systemName];\n const defaultSystemOptions = system.constructor.defaultOptions;\n options = { ...defaultSystemOptions, ...options };\n }\n options = { ..._AbstractRenderer.defaultOptions, ...options };\n this._roundPixels = options.roundPixels ? 1 : 0;\n for (let i = 0; i < this.runners.init.items.length; i++) {\n await this.runners.init.items[i].init(options);\n }\n this._initOptions = options;\n }\n render(args, deprecated) {\n let options = args;\n if (options instanceof Container) {\n options = { container: options };\n if (deprecated) {\n deprecation(v8_0_0, \"passing a second argument is deprecated, please use render options instead\");\n options.target = deprecated.renderTexture;\n }\n }\n options.target || (options.target = this.view.renderTarget);\n if (options.target === this.view.renderTarget) {\n this._lastObjectRendered = options.container;\n options.clearColor ?? (options.clearColor = this.background.colorRgba);\n options.clear ?? (options.clear = this.background.clearBeforeRender);\n }\n if (options.clearColor) {\n const isRGBAArray = Array.isArray(options.clearColor) && options.clearColor.length === 4;\n options.clearColor = isRGBAArray ? options.clearColor : Color.shared.setValue(options.clearColor).toArray();\n }\n if (!options.transform) {\n options.container.updateLocalTransform();\n options.transform = options.container.localTransform;\n }\n options.container.enableRenderGroup();\n this.runners.prerender.emit(options);\n this.runners.renderStart.emit(options);\n this.runners.render.emit(options);\n this.runners.renderEnd.emit(options);\n this.runners.postrender.emit(options);\n }\n /**\n * Resizes the WebGL view to the specified width and height.\n * @param desiredScreenWidth - The desired width of the screen.\n * @param desiredScreenHeight - The desired height of the screen.\n * @param resolution - The resolution / device pixel ratio of the renderer.\n */\n resize(desiredScreenWidth, desiredScreenHeight, resolution) {\n const previousResolution = this.view.resolution;\n this.view.resize(desiredScreenWidth, desiredScreenHeight, resolution);\n this.emit(\"resize\", this.view.screen.width, this.view.screen.height, this.view.resolution);\n if (resolution !== void 0 && resolution !== previousResolution) {\n this.runners.resolutionChange.emit(resolution);\n }\n }\n clear(options = {}) {\n const renderer = this;\n options.target || (options.target = renderer.renderTarget.renderTarget);\n options.clearColor || (options.clearColor = this.background.colorRgba);\n options.clear ?? (options.clear = CLEAR.ALL);\n const { clear, clearColor, target } = options;\n Color.shared.setValue(clearColor ?? this.background.colorRgba);\n renderer.renderTarget.clear(target, clear, Color.shared.toArray());\n }\n /** The resolution / device pixel ratio of the renderer. */\n get resolution() {\n return this.view.resolution;\n }\n set resolution(value) {\n this.view.resolution = value;\n this.runners.resolutionChange.emit(value);\n }\n /**\n * Same as view.width, actual number of pixels in the canvas by horizontal.\n * @member {number}\n * @readonly\n * @default 800\n */\n get width() {\n return this.view.texture.frame.width;\n }\n /**\n * Same as view.height, actual number of pixels in the canvas by vertical.\n * @default 600\n */\n get height() {\n return this.view.texture.frame.height;\n }\n // NOTE: this was `view` in v7\n /**\n * The canvas element that everything is drawn to.\n * @type {environment.ICanvas}\n */\n get canvas() {\n return this.view.canvas;\n }\n /**\n * the last object rendered by the renderer. Useful for other plugins like interaction managers\n * @readonly\n */\n get lastObjectRendered() {\n return this._lastObjectRendered;\n }\n /**\n * Flag if we are rendering to the screen vs renderTexture\n * @readonly\n * @default true\n */\n get renderingToScreen() {\n const renderer = this;\n return renderer.renderTarget.renderingToScreen;\n }\n /**\n * Measurements of the screen. (0, 0, screenWidth, screenHeight).\n *\n * Its safe to use as filterArea or hitArea for the whole stage.\n */\n get screen() {\n return this.view.screen;\n }\n /**\n * Create a bunch of runners based of a collection of ids\n * @param runnerIds - the runner ids to add\n */\n _addRunners(...runnerIds) {\n runnerIds.forEach((runnerId) => {\n this.runners[runnerId] = new SystemRunner(runnerId);\n });\n }\n _addSystems(systems) {\n let i;\n for (i in systems) {\n const val = systems[i];\n this._addSystem(val.value, val.name);\n }\n }\n /**\n * Add a new system to the renderer.\n * @param ClassRef - Class reference\n * @param name - Property name for system, if not specified\n * will use a static `name` property on the class itself. This\n * name will be assigned as s property on the Renderer so make\n * sure it doesn't collide with properties on Renderer.\n * @returns Return instance of renderer\n */\n _addSystem(ClassRef, name) {\n const system = new ClassRef(this);\n if (this[name]) {\n throw new Error(`Whoops! The name \"${name}\" is already in use`);\n }\n this[name] = system;\n this._systemsHash[name] = system;\n for (const i in this.runners) {\n this.runners[i].add(system);\n }\n return this;\n }\n _addPipes(pipes, pipeAdaptors) {\n const adaptors = pipeAdaptors.reduce((acc, adaptor) => {\n acc[adaptor.name] = adaptor.value;\n return acc;\n }, {});\n pipes.forEach((pipe) => {\n const PipeClass = pipe.value;\n const name = pipe.name;\n const Adaptor = adaptors[name];\n this.renderPipes[name] = new PipeClass(\n this,\n Adaptor ? new Adaptor() : null\n );\n });\n }\n destroy(options = false) {\n this.runners.destroy.items.reverse();\n this.runners.destroy.emit(options);\n Object.values(this.runners).forEach((runner) => {\n runner.destroy();\n });\n this._systemsHash = null;\n this.renderPipes = null;\n }\n /**\n * Generate a texture from a container.\n * @param options - options or container target to use when generating the texture\n * @returns a texture\n */\n generateTexture(options) {\n return this.textureGenerator.generateTexture(options);\n }\n /**\n * Whether the renderer will round coordinates to whole pixels when rendering.\n * Can be overridden on a per scene item basis.\n */\n get roundPixels() {\n return !!this._roundPixels;\n }\n /**\n * Overridable function by `pixi.js/unsafe-eval` to silence\n * throwing an error if platform doesn't support unsafe-evals.\n * @private\n * @ignore\n */\n _unsafeEvalCheck() {\n if (!unsafeEvalSupported()) {\n throw new Error(\"Current environment does not allow unsafe-eval, please use pixi.js/unsafe-eval module to enable support.\");\n }\n }\n /**\n * Resets the rendering state of the renderer.\n * This is useful when you want to use the WebGL context directly and need to ensure PixiJS's internal state\n * stays synchronized. When modifying the WebGL context state externally, calling this method before the next Pixi\n * render will reset all internal caches and ensure it executes correctly.\n *\n * This is particularly useful when combining PixiJS with other rendering engines like Three.js:\n * ```js\n * // Reset Three.js state\n * threeRenderer.resetState();\n *\n * // Render a Three.js scene\n * threeRenderer.render(threeScene, threeCamera);\n *\n * // Reset PixiJS state since Three.js modified the WebGL context\n * pixiRenderer.resetState();\n *\n * // Now render Pixi content\n * pixiRenderer.render(pixiScene);\n * ```\n */\n resetState() {\n this.runners.resetState.emit();\n }\n};\n/** The default options for the renderer. */\n_AbstractRenderer.defaultOptions = {\n /**\n * Default resolution / device pixel ratio of the renderer.\n * @default 1\n */\n resolution: 1,\n /**\n * Should the `failIfMajorPerformanceCaveat` flag be enabled as a context option used in the `isWebGLSupported`\n * function. If set to true, a WebGL renderer can fail to be created if the browser thinks there could be\n * performance issues when using WebGL.\n *\n * In PixiJS v6 this has changed from true to false by default, to allow WebGL to work in as many\n * scenarios as possible. However, some users may have a poor experience, for example, if a user has a gpu or\n * driver version blacklisted by the\n * browser.\n *\n * If your application requires high performance rendering, you may wish to set this to false.\n * We recommend one of two options if you decide to set this flag to false:\n *\n * 1: Use the Canvas renderer as a fallback in case high performance WebGL is\n * not supported.\n *\n * 2: Call `isWebGLSupported` (which if found in the utils package) in your code before attempting to create a\n * PixiJS renderer, and show an error message to the user if the function returns false, explaining that their\n * device & browser combination does not support high performance WebGL.\n * This is a much better strategy than trying to create a PixiJS renderer and finding it then fails.\n * @default false\n */\n failIfMajorPerformanceCaveat: false,\n /**\n * Should round pixels be forced when rendering?\n * @default false\n */\n roundPixels: false\n};\nlet AbstractRenderer = _AbstractRenderer;\n\nexport { AbstractRenderer };\n//# sourceMappingURL=AbstractRenderer.mjs.map\n","import { DOMAdapter } from '../../environment/adapter.mjs';\nimport { AbstractRenderer } from '../../rendering/renderers/shared/system/AbstractRenderer.mjs';\n\n\"use strict\";\nlet _isWebGLSupported;\nfunction isWebGLSupported(failIfMajorPerformanceCaveat) {\n if (_isWebGLSupported !== void 0)\n return _isWebGLSupported;\n _isWebGLSupported = (() => {\n const contextOptions = {\n stencil: true,\n failIfMajorPerformanceCaveat: failIfMajorPerformanceCaveat ?? AbstractRenderer.defaultOptions.failIfMajorPerformanceCaveat\n };\n try {\n if (!DOMAdapter.get().getWebGLRenderingContext()) {\n return false;\n }\n const canvas = DOMAdapter.get().createCanvas();\n let gl = canvas.getContext(\"webgl\", contextOptions);\n const success = !!gl?.getContextAttributes()?.stencil;\n if (gl) {\n const loseContext = gl.getExtension(\"WEBGL_lose_context\");\n if (loseContext) {\n loseContext.loseContext();\n }\n }\n gl = null;\n return success;\n } catch (_e) {\n return false;\n }\n })();\n return _isWebGLSupported;\n}\n\nexport { isWebGLSupported };\n//# sourceMappingURL=isWebGLSupported.mjs.map\n","import { DOMAdapter } from '../../environment/adapter.mjs';\n\n\"use strict\";\nlet _isWebGPUSupported;\nasync function isWebGPUSupported(options = {}) {\n if (_isWebGPUSupported !== void 0)\n return _isWebGPUSupported;\n _isWebGPUSupported = await (async () => {\n const gpu = DOMAdapter.get().getNavigator().gpu;\n if (!gpu) {\n return false;\n }\n try {\n const adapter = await gpu.requestAdapter(options);\n await adapter.requestDevice();\n return true;\n } catch (_e) {\n return false;\n }\n })();\n return _isWebGPUSupported;\n}\n\nexport { isWebGPUSupported };\n//# sourceMappingURL=isWebGPUSupported.mjs.map\n","import { isWebGLSupported } from '../../utils/browser/isWebGLSupported.mjs';\nimport { isWebGPUSupported } from '../../utils/browser/isWebGPUSupported.mjs';\nimport { AbstractRenderer } from './shared/system/AbstractRenderer.mjs';\n\n\"use strict\";\nconst renderPriority = [\"webgl\", \"webgpu\", \"canvas\"];\nasync function autoDetectRenderer(options) {\n let preferredOrder = [];\n if (options.preference) {\n preferredOrder.push(options.preference);\n renderPriority.forEach((item) => {\n if (item !== options.preference) {\n preferredOrder.push(item);\n }\n });\n } else {\n preferredOrder = renderPriority.slice();\n }\n let RendererClass;\n let finalOptions = {};\n for (let i = 0; i < preferredOrder.length; i++) {\n const rendererType = preferredOrder[i];\n if (rendererType === \"webgpu\" && await isWebGPUSupported()) {\n const { WebGPURenderer } = await import('./gpu/WebGPURenderer.mjs');\n RendererClass = WebGPURenderer;\n finalOptions = { ...options, ...options.webgpu };\n break;\n } else if (rendererType === \"webgl\" && isWebGLSupported(\n options.failIfMajorPerformanceCaveat ?? AbstractRenderer.defaultOptions.failIfMajorPerformanceCaveat\n )) {\n const { WebGLRenderer } = await import('./gl/WebGLRenderer.mjs');\n RendererClass = WebGLRenderer;\n finalOptions = { ...options, ...options.webgl };\n break;\n } else if (rendererType === \"canvas\") {\n finalOptions = { ...options };\n throw new Error(\"CanvasRenderer is not yet implemented\");\n }\n }\n delete finalOptions.webgpu;\n delete finalOptions.webgl;\n if (!RendererClass) {\n throw new Error(\"No available renderer for the current environment\");\n }\n const renderer = new RendererClass();\n await renderer.init(finalOptions);\n return renderer;\n}\n\nexport { autoDetectRenderer };\n//# sourceMappingURL=autoDetectRenderer.mjs.map\n","import { Color } from '../../../../color/Color.mjs';\nimport { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { Matrix } from '../../../../maths/matrix/Matrix.mjs';\nimport { ImageSource } from '../../../../rendering/renderers/shared/texture/sources/ImageSource.mjs';\nimport { Texture } from '../../../../rendering/renderers/shared/texture/Texture.mjs';\nimport { uid } from '../../../../utils/data/uid.mjs';\nimport { deprecation } from '../../../../utils/logging/deprecation.mjs';\nimport { definedProps } from '../../../container/utils/definedProps.mjs';\n\n\"use strict\";\nconst emptyColorStops = [{ offset: 0, color: \"white\" }, { offset: 1, color: \"black\" }];\nconst _FillGradient = class _FillGradient {\n constructor(...args) {\n /** Unique identifier for this gradient instance */\n this.uid = uid(\"fillGradient\");\n /** Type of gradient - currently only supports 'linear' */\n this.type = \"linear\";\n /** Array of color stops defining the gradient */\n this.colorStops = [];\n let options = ensureGradientOptions(args);\n const defaults = options.type === \"radial\" ? _FillGradient.defaultRadialOptions : _FillGradient.defaultLinearOptions;\n options = { ...defaults, ...definedProps(options) };\n this._textureSize = options.textureSize;\n if (options.type === \"radial\") {\n this.center = options.center;\n this.outerCenter = options.outerCenter ?? this.center;\n this.innerRadius = options.innerRadius;\n this.outerRadius = options.outerRadius;\n this.scale = options.scale;\n this.rotation = options.rotation;\n } else {\n this.start = options.start;\n this.end = options.end;\n }\n this.textureSpace = options.textureSpace;\n this.type = options.type;\n options.colorStops.forEach((stop) => {\n this.addColorStop(stop.offset, stop.color);\n });\n }\n /**\n * Adds a color stop to the gradient\n * @param offset - Position of the stop (0-1)\n * @param color - Color of the stop\n * @returns This gradient instance for chaining\n */\n addColorStop(offset, color) {\n this.colorStops.push({ offset, color: Color.shared.setValue(color).toHexa() });\n return this;\n }\n /**\n * Builds the internal texture and transform for the gradient.\n * Called automatically when the gradient is first used.\n * @internal\n */\n buildLinearGradient() {\n if (this.texture)\n return;\n const colorStops = this.colorStops.length ? this.colorStops : emptyColorStops;\n const defaultSize = this._textureSize;\n const { canvas, context } = getCanvas(defaultSize, 1);\n const gradient = context.createLinearGradient(0, 0, this._textureSize, 0);\n addColorStops(gradient, colorStops);\n context.fillStyle = gradient;\n context.fillRect(0, 0, defaultSize, 1);\n this.texture = new Texture({\n source: new ImageSource({\n resource: canvas\n })\n });\n const { x: x0, y: y0 } = this.start;\n const { x: x1, y: y1 } = this.end;\n const m = new Matrix();\n const dx = x1 - x0;\n const dy = y1 - y0;\n const dist = Math.sqrt(dx * dx + dy * dy);\n const angle = Math.atan2(dy, dx);\n m.scale(dist / defaultSize, 1);\n m.rotate(angle);\n m.translate(x0, y0);\n if (this.textureSpace === \"local\") {\n m.scale(defaultSize, defaultSize);\n }\n this.transform = m;\n }\n buildGradient() {\n if (this.type === \"linear\") {\n this.buildLinearGradient();\n } else {\n this.buildRadialGradient();\n }\n }\n buildRadialGradient() {\n if (this.texture)\n return;\n const colorStops = this.colorStops.length ? this.colorStops : emptyColorStops;\n const defaultSize = this._textureSize;\n const { canvas, context } = getCanvas(defaultSize, defaultSize);\n const { x: x0, y: y0 } = this.center;\n const { x: x1, y: y1 } = this.outerCenter;\n const r0 = this.innerRadius;\n const r1 = this.outerRadius;\n const ox = x1 - r1;\n const oy = y1 - r1;\n const scale = defaultSize / (r1 * 2);\n const cx = (x0 - ox) * scale;\n const cy = (y0 - oy) * scale;\n const gradient = context.createRadialGradient(\n cx,\n cy,\n r0 * scale,\n (x1 - ox) * scale,\n (y1 - oy) * scale,\n r1 * scale\n );\n addColorStops(gradient, colorStops);\n context.fillStyle = colorStops[colorStops.length - 1].color;\n context.fillRect(0, 0, defaultSize, defaultSize);\n context.fillStyle = gradient;\n context.translate(cx, cy);\n context.rotate(this.rotation);\n context.scale(1, this.scale);\n context.translate(-cx, -cy);\n context.fillRect(0, 0, defaultSize, defaultSize);\n this.texture = new Texture({\n source: new ImageSource({\n resource: canvas,\n addressModeU: \"clamp-to-edge\",\n addressModeV: \"clamp-to-edge\"\n })\n });\n const m = new Matrix();\n m.scale(1 / scale, 1 / scale);\n m.translate(ox, oy);\n if (this.textureSpace === \"local\") {\n m.scale(defaultSize, defaultSize);\n }\n this.transform = m;\n }\n /**\n * Gets a unique key representing the current state of the gradient.\n * Used internally for caching.\n * @returns Unique string key\n */\n get styleKey() {\n return this.uid;\n }\n destroy() {\n this.texture?.destroy(true);\n this.texture = null;\n }\n};\n/**\n * Default options for creating a gradient fill\n * @property {PointData} start - Start point of the gradient (default: { x: 0, y: 0 })\n * @property {PointData} end - End point of the gradient (default: { x: 0, y: 1 })\n * @property {TextureSpace} textureSpace - Whether coordinates are 'global' or 'local' (default: 'local')\n * @property {number} textureSize - The size of the texture to use for the gradient (default: 256)\n * @property {Array<{offset: number, color: ColorSource}>} colorStops - Array of color stops (default: empty array)\n * @property {GradientType} type - Type of gradient (default: 'linear')\n */\n_FillGradient.defaultLinearOptions = {\n start: { x: 0, y: 0 },\n end: { x: 0, y: 1 },\n colorStops: [],\n textureSpace: \"local\",\n type: \"linear\",\n textureSize: 256\n};\n/**\n * Default options for creating a radial gradient fill\n * @property {PointData} innerCenter - Center of the inner circle (default: { x: 0.5, y: 0.5 })\n * @property {number} innerRadius - Radius of the inner circle (default: 0)\n * @property {PointData} outerCenter - Center of the outer circle (default: { x: 0.5, y: 0.5 })\n * @property {number} outerRadius - Radius of the outer circle (default: 0.5)\n * @property {TextureSpace} textureSpace - Whether coordinates are 'global' or 'local' (default: 'local')\n * @property {number} textureSize - The size of the texture to use for the gradient (default: 256)\n * @property {Array<{offset: number, color: ColorSource}>} colorStops - Array of color stops (default: empty array)\n * @property {GradientType} type - Type of gradient (default: 'radial')\n */\n_FillGradient.defaultRadialOptions = {\n center: { x: 0.5, y: 0.5 },\n innerRadius: 0,\n outerRadius: 0.5,\n colorStops: [],\n scale: 1,\n textureSpace: \"local\",\n type: \"radial\",\n textureSize: 256\n};\nlet FillGradient = _FillGradient;\nfunction addColorStops(gradient, colorStops) {\n for (let i = 0; i < colorStops.length; i++) {\n const stop = colorStops[i];\n gradient.addColorStop(stop.offset, stop.color);\n }\n}\nfunction getCanvas(width, height) {\n const canvas = DOMAdapter.get().createCanvas(width, height);\n const context = canvas.getContext(\"2d\");\n return { canvas, context };\n}\nfunction ensureGradientOptions(args) {\n let options = args[0] ?? {};\n if (typeof options === \"number\" || args[1]) {\n deprecation(\"8.5.2\", `use options object instead`);\n options = {\n type: \"linear\",\n start: { x: args[0], y: args[1] },\n end: { x: args[2], y: args[3] },\n textureSpace: args[4],\n textureSize: args[5] ?? FillGradient.defaultLinearOptions.textureSize\n };\n }\n return options;\n}\n\nexport { FillGradient };\n//# sourceMappingURL=FillGradient.mjs.map\n","import { Matrix } from '../../../../maths/matrix/Matrix.mjs';\nimport { uid } from '../../../../utils/data/uid.mjs';\n\n\"use strict\";\nconst repetitionMap = {\n repeat: {\n addressModeU: \"repeat\",\n addressModeV: \"repeat\"\n },\n \"repeat-x\": {\n addressModeU: \"repeat\",\n addressModeV: \"clamp-to-edge\"\n },\n \"repeat-y\": {\n addressModeU: \"clamp-to-edge\",\n addressModeV: \"repeat\"\n },\n \"no-repeat\": {\n addressModeU: \"clamp-to-edge\",\n addressModeV: \"clamp-to-edge\"\n }\n};\nclass FillPattern {\n constructor(texture, repetition) {\n /** unique id for this fill pattern */\n this.uid = uid(\"fillPattern\");\n this.transform = new Matrix();\n this._styleKey = null;\n this.texture = texture;\n this.transform.scale(\n 1 / texture.frame.width,\n 1 / texture.frame.height\n );\n if (repetition) {\n texture.source.style.addressModeU = repetitionMap[repetition].addressModeU;\n texture.source.style.addressModeV = repetitionMap[repetition].addressModeV;\n }\n }\n setTransform(transform) {\n const texture = this.texture;\n this.transform.copyFrom(transform);\n this.transform.invert();\n this.transform.scale(\n 1 / texture.frame.width,\n 1 / texture.frame.height\n );\n this._styleKey = null;\n }\n get styleKey() {\n if (this._styleKey)\n return this._styleKey;\n this._styleKey = `fill-pattern-${this.uid}-${this.texture.uid}-${this.transform.toArray().join(\"-\")}`;\n return this._styleKey;\n }\n}\n\nexport { FillPattern };\n//# sourceMappingURL=FillPattern.mjs.map\n","\nmodule.exports = parse\n\n/**\n * expected argument lengths\n * @type {Object}\n */\n\nvar length = {a: 7, c: 6, h: 1, l: 2, m: 2, q: 4, s: 4, t: 2, v: 1, z: 0}\n\n/**\n * segment pattern\n * @type {RegExp}\n */\n\nvar segment = /([astvzqmhlc])([^astvzqmhlc]*)/ig\n\n/**\n * parse an svg path data string. Generates an Array\n * of commands where each command is an Array of the\n * form `[command, arg1, arg2, ...]`\n *\n * @param {String} path\n * @return {Array}\n */\n\nfunction parse(path) {\n\tvar data = []\n\tpath.replace(segment, function(_, command, args){\n\t\tvar type = command.toLowerCase()\n\t\targs = parseValues(args)\n\n\t\t// overloaded moveTo\n\t\tif (type == 'm' && args.length > 2) {\n\t\t\tdata.push([command].concat(args.splice(0, 2)))\n\t\t\ttype = 'l'\n\t\t\tcommand = command == 'm' ? 'l' : 'L'\n\t\t}\n\n\t\twhile (true) {\n\t\t\tif (args.length == length[type]) {\n\t\t\t\targs.unshift(command)\n\t\t\t\treturn data.push(args)\n\t\t\t}\n\t\t\tif (args.length < length[type]) throw new Error('malformed path data')\n\t\t\tdata.push([command].concat(args.splice(0, length[type])))\n\t\t}\n\t})\n\treturn data\n}\n\nvar number = /-?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)?/ig\n\nfunction parseValues(args) {\n\tvar numbers = args.match(number)\n\treturn numbers ? numbers.map(Number) : []\n}\n","import parse from 'parse-svg-path';\nimport { warn } from '../../../../utils/logging/warn.mjs';\n\n\"use strict\";\nfunction parseSVGPath(svgPath, path) {\n const commands = parse(svgPath);\n const subpaths = [];\n let currentSubPath = null;\n let lastX = 0;\n let lastY = 0;\n for (let i = 0; i < commands.length; i++) {\n const command = commands[i];\n const type = command[0];\n const data = command;\n switch (type) {\n case \"M\":\n lastX = data[1];\n lastY = data[2];\n path.moveTo(lastX, lastY);\n break;\n case \"m\":\n lastX += data[1];\n lastY += data[2];\n path.moveTo(lastX, lastY);\n break;\n case \"H\":\n lastX = data[1];\n path.lineTo(lastX, lastY);\n break;\n case \"h\":\n lastX += data[1];\n path.lineTo(lastX, lastY);\n break;\n case \"V\":\n lastY = data[1];\n path.lineTo(lastX, lastY);\n break;\n case \"v\":\n lastY += data[1];\n path.lineTo(lastX, lastY);\n break;\n case \"L\":\n lastX = data[1];\n lastY = data[2];\n path.lineTo(lastX, lastY);\n break;\n case \"l\":\n lastX += data[1];\n lastY += data[2];\n path.lineTo(lastX, lastY);\n break;\n case \"C\":\n lastX = data[5];\n lastY = data[6];\n path.bezierCurveTo(\n data[1],\n data[2],\n // First control point\n data[3],\n data[4],\n // Second control point\n lastX,\n lastY\n // End point\n );\n break;\n case \"c\":\n path.bezierCurveTo(\n lastX + data[1],\n lastY + data[2],\n // First control point\n lastX + data[3],\n lastY + data[4],\n // Second control point\n lastX + data[5],\n lastY + data[6]\n // End point\n );\n lastX += data[5];\n lastY += data[6];\n break;\n case \"S\":\n lastX = data[3];\n lastY = data[4];\n path.bezierCurveToShort(\n data[1],\n data[2],\n // Control point\n lastX,\n lastY\n // End point\n );\n break;\n case \"s\":\n path.bezierCurveToShort(\n lastX + data[1],\n lastY + data[2],\n // Control point\n lastX + data[3],\n lastY + data[4]\n // End point\n );\n lastX += data[3];\n lastY += data[4];\n break;\n case \"Q\":\n lastX = data[3];\n lastY = data[4];\n path.quadraticCurveTo(\n data[1],\n data[2],\n // Control point\n lastX,\n lastY\n // End point\n );\n break;\n case \"q\":\n path.quadraticCurveTo(\n lastX + data[1],\n lastY + data[2],\n // Control point\n lastX + data[3],\n lastY + data[4]\n // End point\n );\n lastX += data[3];\n lastY += data[4];\n break;\n case \"T\":\n lastX = data[1];\n lastY = data[2];\n path.quadraticCurveToShort(\n lastX,\n lastY\n // End point\n );\n break;\n case \"t\":\n lastX += data[1];\n lastY += data[2];\n path.quadraticCurveToShort(\n lastX,\n lastY\n // End point\n );\n break;\n case \"A\":\n lastX = data[6];\n lastY = data[7];\n path.arcToSvg(\n data[1],\n // rx\n data[2],\n // ry\n data[3],\n // x-axis-rotation\n data[4],\n // large-arc-flag\n data[5],\n // sweep-flag\n lastX,\n lastY\n // End point\n );\n break;\n case \"a\":\n lastX += data[6];\n lastY += data[7];\n path.arcToSvg(\n data[1],\n // rx\n data[2],\n // ry\n data[3],\n // x-axis-rotation\n data[4],\n // large-arc-flag\n data[5],\n // sweep-flag\n lastX,\n lastY\n // End point\n );\n break;\n case \"Z\":\n case \"z\":\n path.closePath();\n if (subpaths.length > 0) {\n currentSubPath = subpaths.pop();\n if (currentSubPath) {\n lastX = currentSubPath.startX;\n lastY = currentSubPath.startY;\n } else {\n lastX = 0;\n lastY = 0;\n }\n }\n currentSubPath = null;\n break;\n default:\n warn(`Unknown SVG path command: ${type}`);\n }\n if (type !== \"Z\" && type !== \"z\") {\n if (currentSubPath === null) {\n currentSubPath = { startX: lastX, startY: lastY };\n subpaths.push(currentSubPath);\n }\n }\n }\n return path;\n}\n\nexport { parseSVGPath };\n//# sourceMappingURL=parseSVGPath.mjs.map\n","import { Rectangle } from './Rectangle.mjs';\n\n\"use strict\";\nclass Circle {\n /**\n * @param x - The X coordinate of the center of this circle\n * @param y - The Y coordinate of the center of this circle\n * @param radius - The radius of the circle\n */\n constructor(x = 0, y = 0, radius = 0) {\n /**\n * The type of the object, mainly used to avoid `instanceof` checks\n * @default 'circle'\n */\n this.type = \"circle\";\n this.x = x;\n this.y = y;\n this.radius = radius;\n }\n /**\n * Creates a clone of this Circle instance\n * @returns A copy of the Circle\n */\n clone() {\n return new Circle(this.x, this.y, this.radius);\n }\n /**\n * Checks whether the x and y coordinates given are contained within this circle\n * @param x - The X coordinate of the point to test\n * @param y - The Y coordinate of the point to test\n * @returns Whether the x/y coordinates are within this Circle\n */\n contains(x, y) {\n if (this.radius <= 0)\n return false;\n const r2 = this.radius * this.radius;\n let dx = this.x - x;\n let dy = this.y - y;\n dx *= dx;\n dy *= dy;\n return dx + dy <= r2;\n }\n /**\n * Checks whether the x and y coordinates given are contained within this circle including the stroke.\n * @param x - The X coordinate of the point to test\n * @param y - The Y coordinate of the point to test\n * @param width - The width of the line to check\n * @param alignment - The alignment of the stroke, 0.5 by default\n * @returns Whether the x/y coordinates are within this Circle\n */\n strokeContains(x, y, width, alignment = 0.5) {\n if (this.radius === 0)\n return false;\n const dx = this.x - x;\n const dy = this.y - y;\n const radius = this.radius;\n const outerWidth = (1 - alignment) * width;\n const distance = Math.sqrt(dx * dx + dy * dy);\n return distance <= radius + outerWidth && distance > radius - (width - outerWidth);\n }\n /**\n * Returns the framing rectangle of the circle as a Rectangle object\n * @param out\n * @returns The framing rectangle\n */\n getBounds(out) {\n out || (out = new Rectangle());\n out.x = this.x - this.radius;\n out.y = this.y - this.radius;\n out.width = this.radius * 2;\n out.height = this.radius * 2;\n return out;\n }\n /**\n * Copies another circle to this one.\n * @param circle - The circle to copy from.\n * @returns Returns itself.\n */\n copyFrom(circle) {\n this.x = circle.x;\n this.y = circle.y;\n this.radius = circle.radius;\n return this;\n }\n /**\n * Copies this circle to another one.\n * @param circle - The circle to copy to.\n * @returns Returns given parameter.\n */\n copyTo(circle) {\n circle.copyFrom(this);\n return circle;\n }\n toString() {\n return `[pixi.js/math:Circle x=${this.x} y=${this.y} radius=${this.radius}]`;\n }\n}\n\nexport { Circle };\n//# sourceMappingURL=Circle.mjs.map\n","import { Rectangle } from './Rectangle.mjs';\n\n\"use strict\";\nclass Ellipse {\n /**\n * @param x - The X coordinate of the center of this ellipse\n * @param y - The Y coordinate of the center of this ellipse\n * @param halfWidth - The half width of this ellipse\n * @param halfHeight - The half height of this ellipse\n */\n constructor(x = 0, y = 0, halfWidth = 0, halfHeight = 0) {\n /**\n * The type of the object, mainly used to avoid `instanceof` checks\n * @default 'ellipse'\n */\n this.type = \"ellipse\";\n this.x = x;\n this.y = y;\n this.halfWidth = halfWidth;\n this.halfHeight = halfHeight;\n }\n /**\n * Creates a clone of this Ellipse instance\n * @returns {Ellipse} A copy of the ellipse\n */\n clone() {\n return new Ellipse(this.x, this.y, this.halfWidth, this.halfHeight);\n }\n /**\n * Checks whether the x and y coordinates given are contained within this ellipse\n * @param x - The X coordinate of the point to test\n * @param y - The Y coordinate of the point to test\n * @returns Whether the x/y coords are within this ellipse\n */\n contains(x, y) {\n if (this.halfWidth <= 0 || this.halfHeight <= 0) {\n return false;\n }\n let normx = (x - this.x) / this.halfWidth;\n let normy = (y - this.y) / this.halfHeight;\n normx *= normx;\n normy *= normy;\n return normx + normy <= 1;\n }\n /**\n * Checks whether the x and y coordinates given are contained within this ellipse including stroke\n * @param x - The X coordinate of the point to test\n * @param y - The Y coordinate of the point to test\n * @param strokeWidth - The width of the line to check\n * @param alignment - The alignment of the stroke\n * @returns Whether the x/y coords are within this ellipse\n */\n strokeContains(x, y, strokeWidth, alignment = 0.5) {\n const { halfWidth, halfHeight } = this;\n if (halfWidth <= 0 || halfHeight <= 0) {\n return false;\n }\n const strokeOuterWidth = strokeWidth * (1 - alignment);\n const strokeInnerWidth = strokeWidth - strokeOuterWidth;\n const innerHorizontal = halfWidth - strokeInnerWidth;\n const innerVertical = halfHeight - strokeInnerWidth;\n const outerHorizontal = halfWidth + strokeOuterWidth;\n const outerVertical = halfHeight + strokeOuterWidth;\n const normalizedX = x - this.x;\n const normalizedY = y - this.y;\n const innerEllipse = normalizedX * normalizedX / (innerHorizontal * innerHorizontal) + normalizedY * normalizedY / (innerVertical * innerVertical);\n const outerEllipse = normalizedX * normalizedX / (outerHorizontal * outerHorizontal) + normalizedY * normalizedY / (outerVertical * outerVertical);\n return innerEllipse > 1 && outerEllipse <= 1;\n }\n /**\n * Returns the framing rectangle of the ellipse as a Rectangle object\n * @param out\n * @returns The framing rectangle\n */\n getBounds(out) {\n out || (out = new Rectangle());\n out.x = this.x - this.halfWidth;\n out.y = this.y - this.halfHeight;\n out.width = this.halfWidth * 2;\n out.height = this.halfHeight * 2;\n return out;\n }\n /**\n * Copies another ellipse to this one.\n * @param ellipse - The ellipse to copy from.\n * @returns Returns itself.\n */\n copyFrom(ellipse) {\n this.x = ellipse.x;\n this.y = ellipse.y;\n this.halfWidth = ellipse.halfWidth;\n this.halfHeight = ellipse.halfHeight;\n return this;\n }\n /**\n * Copies this ellipse to another one.\n * @param ellipse - The ellipse to copy to.\n * @returns Returns given parameter.\n */\n copyTo(ellipse) {\n ellipse.copyFrom(this);\n return ellipse;\n }\n toString() {\n return `[pixi.js/math:Ellipse x=${this.x} y=${this.y} halfWidth=${this.halfWidth} halfHeight=${this.halfHeight}]`;\n }\n}\n\nexport { Ellipse };\n//# sourceMappingURL=Ellipse.mjs.map\n","\"use strict\";\nfunction squaredDistanceToLineSegment(x, y, x1, y1, x2, y2) {\n const a = x - x1;\n const b = y - y1;\n const c = x2 - x1;\n const d = y2 - y1;\n const dot = a * c + b * d;\n const lenSq = c * c + d * d;\n let param = -1;\n if (lenSq !== 0) {\n param = dot / lenSq;\n }\n let xx;\n let yy;\n if (param < 0) {\n xx = x1;\n yy = y1;\n } else if (param > 1) {\n xx = x2;\n yy = y2;\n } else {\n xx = x1 + param * c;\n yy = y1 + param * d;\n }\n const dx = x - xx;\n const dy = y - yy;\n return dx * dx + dy * dy;\n}\n\nexport { squaredDistanceToLineSegment };\n//# sourceMappingURL=squaredDistanceToLineSegment.mjs.map\n","import { squaredDistanceToLineSegment } from '../misc/squaredDistanceToLineSegment.mjs';\nimport { Rectangle } from './Rectangle.mjs';\n\n\"use strict\";\nlet tempRect;\nlet tempRect2;\nclass Polygon {\n /**\n * @param points - This can be an array of Points\n * that form the polygon, a flat array of numbers that will be interpreted as [x,y, x,y, ...], or\n * the arguments passed can be all the points of the polygon e.g.\n * `new Polygon(new Point(), new Point(), ...)`, or the arguments passed can be flat\n * x,y values e.g. `new Polygon(x,y, x,y, x,y, ...)` where `x` and `y` are Numbers.\n */\n constructor(...points) {\n /**\n * The type of the object, mainly used to avoid `instanceof` checks\n * @default 'polygon'\n */\n this.type = \"polygon\";\n let flat = Array.isArray(points[0]) ? points[0] : points;\n if (typeof flat[0] !== \"number\") {\n const p = [];\n for (let i = 0, il = flat.length; i < il; i++) {\n p.push(flat[i].x, flat[i].y);\n }\n flat = p;\n }\n this.points = flat;\n this.closePath = true;\n }\n /**\n * Determines whether the polygon's points are arranged in a clockwise direction.\n * This is calculated using the \"shoelace formula\" (also known as surveyor's formula) to find the signed area.\n * A positive area indicates clockwise winding, while negative indicates counter-clockwise.\n *\n * The formula sums up the cross products of adjacent vertices:\n * For each pair of adjacent points (x1,y1) and (x2,y2), we calculate (x1*y2 - x2*y1)\n * The final sum divided by 2 gives the signed area - positive for clockwise.\n * @returns `true` if the polygon's points are arranged clockwise, `false` if counter-clockwise\n */\n isClockwise() {\n let area = 0;\n const points = this.points;\n const length = points.length;\n for (let i = 0; i < length; i += 2) {\n const x1 = points[i];\n const y1 = points[i + 1];\n const x2 = points[(i + 2) % length];\n const y2 = points[(i + 3) % length];\n area += (x2 - x1) * (y2 + y1);\n }\n return area < 0;\n }\n /**\n * Checks if this polygon completely contains another polygon.\n *\n * This is useful for detecting holes in shapes, like when parsing SVG paths.\n * For example, if you have two polygons:\n * ```ts\n * const outerSquare = new Polygon([0,0, 100,0, 100,100, 0,100]); // A square\n * const innerSquare = new Polygon([25,25, 75,25, 75,75, 25,75]); // A smaller square inside\n *\n * outerSquare.containsPolygon(innerSquare); // Returns true\n * innerSquare.containsPolygon(outerSquare); // Returns false\n * ```\n * @param polygon - The polygon to test for containment\n * @returns True if this polygon completely contains the other polygon\n */\n containsPolygon(polygon) {\n const thisBounds = this.getBounds(tempRect);\n const otherBounds = polygon.getBounds(tempRect2);\n if (!thisBounds.containsRect(otherBounds)) {\n return false;\n }\n const points = polygon.points;\n for (let i = 0; i < points.length; i += 2) {\n const x = points[i];\n const y = points[i + 1];\n if (!this.contains(x, y)) {\n return false;\n }\n }\n return true;\n }\n /**\n * Creates a clone of this polygon.\n * @returns - A copy of the polygon.\n */\n clone() {\n const points = this.points.slice();\n const polygon = new Polygon(points);\n polygon.closePath = this.closePath;\n return polygon;\n }\n /**\n * Checks whether the x and y coordinates passed to this function are contained within this polygon.\n * @param x - The X coordinate of the point to test.\n * @param y - The Y coordinate of the point to test.\n * @returns - Whether the x/y coordinates are within this polygon.\n */\n contains(x, y) {\n let inside = false;\n const length = this.points.length / 2;\n for (let i = 0, j = length - 1; i < length; j = i++) {\n const xi = this.points[i * 2];\n const yi = this.points[i * 2 + 1];\n const xj = this.points[j * 2];\n const yj = this.points[j * 2 + 1];\n const intersect = yi > y !== yj > y && x < (xj - xi) * ((y - yi) / (yj - yi)) + xi;\n if (intersect) {\n inside = !inside;\n }\n }\n return inside;\n }\n /**\n * Checks whether the x and y coordinates given are contained within this polygon including the stroke.\n * @param x - The X coordinate of the point to test\n * @param y - The Y coordinate of the point to test\n * @param strokeWidth - The width of the line to check\n * @param alignment - The alignment of the stroke, 0.5 by default\n * @returns Whether the x/y coordinates are within this polygon\n */\n strokeContains(x, y, strokeWidth, alignment = 0.5) {\n const strokeWidthSquared = strokeWidth * strokeWidth;\n const rightWidthSquared = strokeWidthSquared * (1 - alignment);\n const leftWidthSquared = strokeWidthSquared - rightWidthSquared;\n const { points } = this;\n const iterationLength = points.length - (this.closePath ? 0 : 2);\n for (let i = 0; i < iterationLength; i += 2) {\n const x1 = points[i];\n const y1 = points[i + 1];\n const x2 = points[(i + 2) % points.length];\n const y2 = points[(i + 3) % points.length];\n const distanceSquared = squaredDistanceToLineSegment(x, y, x1, y1, x2, y2);\n const sign = Math.sign((x2 - x1) * (y - y1) - (y2 - y1) * (x - x1));\n if (distanceSquared <= (sign < 0 ? leftWidthSquared : rightWidthSquared)) {\n return true;\n }\n }\n return false;\n }\n /**\n * Returns the framing rectangle of the polygon as a Rectangle object\n * @param out - optional rectangle to store the result\n * @returns The framing rectangle\n */\n getBounds(out) {\n out || (out = new Rectangle());\n const points = this.points;\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n for (let i = 0, n = points.length; i < n; i += 2) {\n const x = points[i];\n const y = points[i + 1];\n minX = x < minX ? x : minX;\n maxX = x > maxX ? x : maxX;\n minY = y < minY ? y : minY;\n maxY = y > maxY ? y : maxY;\n }\n out.x = minX;\n out.width = maxX - minX;\n out.y = minY;\n out.height = maxY - minY;\n return out;\n }\n /**\n * Copies another polygon to this one.\n * @param polygon - The polygon to copy from.\n * @returns Returns itself.\n */\n copyFrom(polygon) {\n this.points = polygon.points.slice();\n this.closePath = polygon.closePath;\n return this;\n }\n /**\n * Copies this polygon to another one.\n * @param polygon - The polygon to copy to.\n * @returns Returns given parameter.\n */\n copyTo(polygon) {\n polygon.copyFrom(this);\n return polygon;\n }\n toString() {\n return `[pixi.js/math:PolygoncloseStroke=${this.closePath}points=${this.points.reduce((pointsDesc, currentPoint) => `${pointsDesc}, ${currentPoint}`, \"\")}]`;\n }\n /**\n * Get the last X coordinate of the polygon\n * @readonly\n */\n get lastX() {\n return this.points[this.points.length - 2];\n }\n /**\n * Get the last Y coordinate of the polygon\n * @readonly\n */\n get lastY() {\n return this.points[this.points.length - 1];\n }\n /**\n * Get the first X coordinate of the polygon\n * @readonly\n */\n get x() {\n return this.points[this.points.length - 2];\n }\n /**\n * Get the first Y coordinate of the polygon\n * @readonly\n */\n get y() {\n return this.points[this.points.length - 1];\n }\n}\n\nexport { Polygon };\n//# sourceMappingURL=Polygon.mjs.map\n","import { Rectangle } from './Rectangle.mjs';\n\n\"use strict\";\nconst isCornerWithinStroke = (pX, pY, cornerX, cornerY, radius, strokeWidthInner, strokeWidthOuter) => {\n const dx = pX - cornerX;\n const dy = pY - cornerY;\n const distance = Math.sqrt(dx * dx + dy * dy);\n return distance >= radius - strokeWidthInner && distance <= radius + strokeWidthOuter;\n};\nclass RoundedRectangle {\n /**\n * @param x - The X coordinate of the upper-left corner of the rounded rectangle\n * @param y - The Y coordinate of the upper-left corner of the rounded rectangle\n * @param width - The overall width of this rounded rectangle\n * @param height - The overall height of this rounded rectangle\n * @param radius - Controls the radius of the rounded corners\n */\n constructor(x = 0, y = 0, width = 0, height = 0, radius = 20) {\n /**\n * The type of the object, mainly used to avoid `instanceof` checks\n * @default 'roundedRectangle'\n */\n this.type = \"roundedRectangle\";\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.radius = radius;\n }\n /**\n * Returns the framing rectangle of the rounded rectangle as a Rectangle object\n * @param out - optional rectangle to store the result\n * @returns The framing rectangle\n */\n getBounds(out) {\n out || (out = new Rectangle());\n out.x = this.x;\n out.y = this.y;\n out.width = this.width;\n out.height = this.height;\n return out;\n }\n /**\n * Creates a clone of this Rounded Rectangle.\n * @returns - A copy of the rounded rectangle.\n */\n clone() {\n return new RoundedRectangle(this.x, this.y, this.width, this.height, this.radius);\n }\n /**\n * Copies another rectangle to this one.\n * @param rectangle - The rectangle to copy from.\n * @returns Returns itself.\n */\n copyFrom(rectangle) {\n this.x = rectangle.x;\n this.y = rectangle.y;\n this.width = rectangle.width;\n this.height = rectangle.height;\n return this;\n }\n /**\n * Copies this rectangle to another one.\n * @param rectangle - The rectangle to copy to.\n * @returns Returns given parameter.\n */\n copyTo(rectangle) {\n rectangle.copyFrom(this);\n return rectangle;\n }\n /**\n * Checks whether the x and y coordinates given are contained within this Rounded Rectangle\n * @param x - The X coordinate of the point to test.\n * @param y - The Y coordinate of the point to test.\n * @returns - Whether the x/y coordinates are within this Rounded Rectangle.\n */\n contains(x, y) {\n if (this.width <= 0 || this.height <= 0) {\n return false;\n }\n if (x >= this.x && x <= this.x + this.width) {\n if (y >= this.y && y <= this.y + this.height) {\n const radius = Math.max(0, Math.min(this.radius, Math.min(this.width, this.height) / 2));\n if (y >= this.y + radius && y <= this.y + this.height - radius || x >= this.x + radius && x <= this.x + this.width - radius) {\n return true;\n }\n let dx = x - (this.x + radius);\n let dy = y - (this.y + radius);\n const radius2 = radius * radius;\n if (dx * dx + dy * dy <= radius2) {\n return true;\n }\n dx = x - (this.x + this.width - radius);\n if (dx * dx + dy * dy <= radius2) {\n return true;\n }\n dy = y - (this.y + this.height - radius);\n if (dx * dx + dy * dy <= radius2) {\n return true;\n }\n dx = x - (this.x + radius);\n if (dx * dx + dy * dy <= radius2) {\n return true;\n }\n }\n }\n return false;\n }\n /**\n * Checks whether the x and y coordinates given are contained within this rectangle including the stroke.\n * @param pX - The X coordinate of the point to test\n * @param pY - The Y coordinate of the point to test\n * @param strokeWidth - The width of the line to check\n * @param alignment - The alignment of the stroke, 0.5 by default\n * @returns Whether the x/y coordinates are within this rectangle\n */\n strokeContains(pX, pY, strokeWidth, alignment = 0.5) {\n const { x, y, width, height, radius } = this;\n const strokeWidthOuter = strokeWidth * (1 - alignment);\n const strokeWidthInner = strokeWidth - strokeWidthOuter;\n const innerX = x + radius;\n const innerY = y + radius;\n const innerWidth = width - radius * 2;\n const innerHeight = height - radius * 2;\n const rightBound = x + width;\n const bottomBound = y + height;\n if ((pX >= x - strokeWidthOuter && pX <= x + strokeWidthInner || pX >= rightBound - strokeWidthInner && pX <= rightBound + strokeWidthOuter) && pY >= innerY && pY <= innerY + innerHeight) {\n return true;\n }\n if ((pY >= y - strokeWidthOuter && pY <= y + strokeWidthInner || pY >= bottomBound - strokeWidthInner && pY <= bottomBound + strokeWidthOuter) && pX >= innerX && pX <= innerX + innerWidth) {\n return true;\n }\n return (\n // Top-left\n pX < innerX && pY < innerY && isCornerWithinStroke(\n pX,\n pY,\n innerX,\n innerY,\n radius,\n strokeWidthInner,\n strokeWidthOuter\n ) || pX > rightBound - radius && pY < innerY && isCornerWithinStroke(\n pX,\n pY,\n rightBound - radius,\n innerY,\n radius,\n strokeWidthInner,\n strokeWidthOuter\n ) || pX > rightBound - radius && pY > bottomBound - radius && isCornerWithinStroke(\n pX,\n pY,\n rightBound - radius,\n bottomBound - radius,\n radius,\n strokeWidthInner,\n strokeWidthOuter\n ) || pX < innerX && pY > bottomBound - radius && isCornerWithinStroke(\n pX,\n pY,\n innerX,\n bottomBound - radius,\n radius,\n strokeWidthInner,\n strokeWidthOuter\n )\n );\n }\n toString() {\n return `[pixi.js/math:RoundedRectangle x=${this.x} y=${this.y}width=${this.width} height=${this.height} radius=${this.radius}]`;\n }\n}\n\nexport { RoundedRectangle };\n//# sourceMappingURL=RoundedRectangle.mjs.map\n","\"use strict\";\nconst fragTemplate = [\n \"precision mediump float;\",\n \"void main(void){\",\n \"float test = 0.1;\",\n \"%forloop%\",\n \"gl_FragColor = vec4(0.0);\",\n \"}\"\n].join(\"\\n\");\nfunction generateIfTestSrc(maxIfs) {\n let src = \"\";\n for (let i = 0; i < maxIfs; ++i) {\n if (i > 0) {\n src += \"\\nelse \";\n }\n if (i < maxIfs - 1) {\n src += `if(test == ${i}.0){}`;\n }\n }\n return src;\n}\nfunction checkMaxIfStatementsInShader(maxIfs, gl) {\n if (maxIfs === 0) {\n throw new Error(\"Invalid value of `0` passed to `checkMaxIfStatementsInShader`\");\n }\n const shader = gl.createShader(gl.FRAGMENT_SHADER);\n try {\n while (true) {\n const fragmentSrc = fragTemplate.replace(/%forloop%/gi, generateIfTestSrc(maxIfs));\n gl.shaderSource(shader, fragmentSrc);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n maxIfs = maxIfs / 2 | 0;\n } else {\n break;\n }\n }\n } finally {\n gl.deleteShader(shader);\n }\n return maxIfs;\n}\n\nexport { checkMaxIfStatementsInShader };\n//# sourceMappingURL=checkMaxIfStatementsInShader.mjs.map\n","import { getTestContext } from '../../../renderers/gl/shader/program/getTestContext.mjs';\nimport { checkMaxIfStatementsInShader } from './checkMaxIfStatementsInShader.mjs';\n\n\"use strict\";\nlet maxTexturesPerBatchCache = null;\nfunction getMaxTexturesPerBatch() {\n if (maxTexturesPerBatchCache)\n return maxTexturesPerBatchCache;\n const gl = getTestContext();\n maxTexturesPerBatchCache = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n maxTexturesPerBatchCache = checkMaxIfStatementsInShader(\n maxTexturesPerBatchCache,\n gl\n );\n gl.getExtension(\"WEBGL_lose_context\")?.loseContext();\n return maxTexturesPerBatchCache;\n}\n\nexport { getMaxTexturesPerBatch };\n//# sourceMappingURL=maxRecommendedTextures.mjs.map\n","import { BindGroup } from '../../renderers/gpu/shader/BindGroup.mjs';\nimport { Texture } from '../../renderers/shared/texture/Texture.mjs';\nimport { getMaxTexturesPerBatch } from '../gl/utils/maxRecommendedTextures.mjs';\n\n\"use strict\";\nconst cachedGroups = {};\nfunction getTextureBatchBindGroup(textures, size) {\n let uid = 2166136261;\n for (let i = 0; i < size; i++) {\n uid ^= textures[i].uid;\n uid = Math.imul(uid, 16777619);\n uid >>>= 0;\n }\n return cachedGroups[uid] || generateTextureBatchBindGroup(textures, size, uid);\n}\nlet maxTextures = 0;\nfunction generateTextureBatchBindGroup(textures, size, key) {\n const bindGroupResources = {};\n let bindIndex = 0;\n if (!maxTextures)\n maxTextures = getMaxTexturesPerBatch();\n for (let i = 0; i < maxTextures; i++) {\n const texture = i < size ? textures[i] : Texture.EMPTY.source;\n bindGroupResources[bindIndex++] = texture.source;\n bindGroupResources[bindIndex++] = texture.style;\n }\n const bindGroup = new BindGroup(bindGroupResources);\n cachedGroups[key] = bindGroup;\n return bindGroup;\n}\n\nexport { getTextureBatchBindGroup };\n//# sourceMappingURL=getTextureBatchBindGroup.mjs.map\n","\"use strict\";\nclass ViewableBuffer {\n constructor(sizeOrBuffer) {\n if (typeof sizeOrBuffer === \"number\") {\n this.rawBinaryData = new ArrayBuffer(sizeOrBuffer);\n } else if (sizeOrBuffer instanceof Uint8Array) {\n this.rawBinaryData = sizeOrBuffer.buffer;\n } else {\n this.rawBinaryData = sizeOrBuffer;\n }\n this.uint32View = new Uint32Array(this.rawBinaryData);\n this.float32View = new Float32Array(this.rawBinaryData);\n this.size = this.rawBinaryData.byteLength;\n }\n /** View on the raw binary data as a `Int8Array`. */\n get int8View() {\n if (!this._int8View) {\n this._int8View = new Int8Array(this.rawBinaryData);\n }\n return this._int8View;\n }\n /** View on the raw binary data as a `Uint8Array`. */\n get uint8View() {\n if (!this._uint8View) {\n this._uint8View = new Uint8Array(this.rawBinaryData);\n }\n return this._uint8View;\n }\n /** View on the raw binary data as a `Int16Array`. */\n get int16View() {\n if (!this._int16View) {\n this._int16View = new Int16Array(this.rawBinaryData);\n }\n return this._int16View;\n }\n /** View on the raw binary data as a `Int32Array`. */\n get int32View() {\n if (!this._int32View) {\n this._int32View = new Int32Array(this.rawBinaryData);\n }\n return this._int32View;\n }\n /** View on the raw binary data as a `Float64Array`. */\n get float64View() {\n if (!this._float64Array) {\n this._float64Array = new Float64Array(this.rawBinaryData);\n }\n return this._float64Array;\n }\n /** View on the raw binary data as a `BigUint64Array`. */\n get bigUint64View() {\n if (!this._bigUint64Array) {\n this._bigUint64Array = new BigUint64Array(this.rawBinaryData);\n }\n return this._bigUint64Array;\n }\n /**\n * Returns the view of the given type.\n * @param type - One of `int8`, `uint8`, `int16`,\n * `uint16`, `int32`, `uint32`, and `float32`.\n * @returns - typed array of given type\n */\n view(type) {\n return this[`${type}View`];\n }\n /** Destroys all buffer references. Do not use after calling this. */\n destroy() {\n this.rawBinaryData = null;\n this._int8View = null;\n this._uint8View = null;\n this._int16View = null;\n this.uint16View = null;\n this._int32View = null;\n this.uint32View = null;\n this.float32View = null;\n }\n /**\n * Returns the size of the given type in bytes.\n * @param type - One of `int8`, `uint8`, `int16`,\n * `uint16`, `int32`, `uint32`, and `float32`.\n * @returns - size of the type in bytes\n */\n static sizeOf(type) {\n switch (type) {\n case \"int8\":\n case \"uint8\":\n return 1;\n case \"int16\":\n case \"uint16\":\n return 2;\n case \"int32\":\n case \"uint32\":\n case \"float32\":\n return 4;\n default:\n throw new Error(`${type} isn't a valid view type`);\n }\n }\n}\n\nexport { ViewableBuffer };\n//# sourceMappingURL=ViewableBuffer.mjs.map\n","\"use strict\";\nfunction fastCopy(sourceBuffer, destinationBuffer) {\n const lengthDouble = sourceBuffer.byteLength / 8 | 0;\n const sourceFloat64View = new Float64Array(sourceBuffer, 0, lengthDouble);\n const destinationFloat64View = new Float64Array(destinationBuffer, 0, lengthDouble);\n destinationFloat64View.set(sourceFloat64View);\n const remainingBytes = sourceBuffer.byteLength - lengthDouble * 8;\n if (remainingBytes > 0) {\n const sourceUint8View = new Uint8Array(sourceBuffer, lengthDouble * 8, remainingBytes);\n const destinationUint8View = new Uint8Array(destinationBuffer, lengthDouble * 8, remainingBytes);\n destinationUint8View.set(sourceUint8View);\n }\n}\n\nexport { fastCopy };\n//# sourceMappingURL=fastCopy.mjs.map\n","\"use strict\";\nconst BLEND_TO_NPM = {\n normal: \"normal-npm\",\n add: \"add-npm\",\n screen: \"screen-npm\"\n};\nvar STENCIL_MODES = /* @__PURE__ */ ((STENCIL_MODES2) => {\n STENCIL_MODES2[STENCIL_MODES2[\"DISABLED\"] = 0] = \"DISABLED\";\n STENCIL_MODES2[STENCIL_MODES2[\"RENDERING_MASK_ADD\"] = 1] = \"RENDERING_MASK_ADD\";\n STENCIL_MODES2[STENCIL_MODES2[\"MASK_ACTIVE\"] = 2] = \"MASK_ACTIVE\";\n STENCIL_MODES2[STENCIL_MODES2[\"INVERSE_MASK_ACTIVE\"] = 3] = \"INVERSE_MASK_ACTIVE\";\n STENCIL_MODES2[STENCIL_MODES2[\"RENDERING_MASK_REMOVE\"] = 4] = \"RENDERING_MASK_REMOVE\";\n STENCIL_MODES2[STENCIL_MODES2[\"NONE\"] = 5] = \"NONE\";\n return STENCIL_MODES2;\n})(STENCIL_MODES || {});\n\nexport { BLEND_TO_NPM, STENCIL_MODES };\n//# sourceMappingURL=const.mjs.map\n","import { BLEND_TO_NPM } from './const.mjs';\n\n\"use strict\";\nfunction getAdjustedBlendModeBlend(blendMode, textureSource) {\n if (textureSource.alphaMode === \"no-premultiply-alpha\") {\n return BLEND_TO_NPM[blendMode] || blendMode;\n }\n return blendMode;\n}\n\nexport { getAdjustedBlendModeBlend };\n//# sourceMappingURL=getAdjustedBlendModeBlend.mjs.map\n","\"use strict\";\nclass BatchTextureArray {\n constructor() {\n /** Respective locations for textures. */\n this.ids = /* @__PURE__ */ Object.create(null);\n this.textures = [];\n this.count = 0;\n }\n /** Clear the textures and their locations. */\n clear() {\n for (let i = 0; i < this.count; i++) {\n const t = this.textures[i];\n this.textures[i] = null;\n this.ids[t.uid] = null;\n }\n this.count = 0;\n }\n}\n\nexport { BatchTextureArray };\n//# sourceMappingURL=BatchTextureArray.mjs.map\n","import { uid } from '../../../utils/data/uid.mjs';\nimport { ViewableBuffer } from '../../../utils/data/ViewableBuffer.mjs';\nimport { fastCopy } from '../../renderers/shared/buffer/utils/fastCopy.mjs';\nimport { getAdjustedBlendModeBlend } from '../../renderers/shared/state/getAdjustedBlendModeBlend.mjs';\nimport { getMaxTexturesPerBatch } from '../gl/utils/maxRecommendedTextures.mjs';\nimport { BatchTextureArray } from './BatchTextureArray.mjs';\n\n\"use strict\";\nclass Batch {\n constructor() {\n this.renderPipeId = \"batch\";\n this.action = \"startBatch\";\n // TODO - eventually this could be useful for flagging batches as dirty and then only rebuilding those ones\n // public elementStart = 0;\n // public elementSize = 0;\n // for drawing..\n this.start = 0;\n this.size = 0;\n this.textures = new BatchTextureArray();\n this.blendMode = \"normal\";\n this.topology = \"triangle-strip\";\n this.canBundle = true;\n }\n destroy() {\n this.textures = null;\n this.gpuBindGroup = null;\n this.bindGroup = null;\n this.batcher = null;\n }\n}\nconst batchPool = [];\nlet batchPoolIndex = 0;\nfunction getBatchFromPool() {\n return batchPoolIndex > 0 ? batchPool[--batchPoolIndex] : new Batch();\n}\nfunction returnBatchToPool(batch) {\n batchPool[batchPoolIndex++] = batch;\n}\nlet BATCH_TICK = 0;\nconst _Batcher = class _Batcher {\n constructor(options = {}) {\n /** unique id for this batcher */\n this.uid = uid(\"batcher\");\n /** Indicates whether the batch data has been modified and needs updating. */\n this.dirty = true;\n /** The current index of the batch being processed. */\n this.batchIndex = 0;\n /** An array of all batches created during the current rendering process. */\n this.batches = [];\n this._elements = [];\n _Batcher.defaultOptions.maxTextures = _Batcher.defaultOptions.maxTextures ?? getMaxTexturesPerBatch();\n options = { ..._Batcher.defaultOptions, ...options };\n const { maxTextures, attributesInitialSize, indicesInitialSize } = options;\n this.attributeBuffer = new ViewableBuffer(attributesInitialSize * 4);\n this.indexBuffer = new Uint16Array(indicesInitialSize);\n this.maxTextures = maxTextures;\n }\n begin() {\n this.elementSize = 0;\n this.elementStart = 0;\n this.indexSize = 0;\n this.attributeSize = 0;\n for (let i = 0; i < this.batchIndex; i++) {\n returnBatchToPool(this.batches[i]);\n }\n this.batchIndex = 0;\n this._batchIndexStart = 0;\n this._batchIndexSize = 0;\n this.dirty = true;\n }\n add(batchableObject) {\n this._elements[this.elementSize++] = batchableObject;\n batchableObject._indexStart = this.indexSize;\n batchableObject._attributeStart = this.attributeSize;\n batchableObject._batcher = this;\n this.indexSize += batchableObject.indexSize;\n this.attributeSize += batchableObject.attributeSize * this.vertexSize;\n }\n checkAndUpdateTexture(batchableObject, texture) {\n const textureId = batchableObject._batch.textures.ids[texture._source.uid];\n if (!textureId && textureId !== 0)\n return false;\n batchableObject._textureId = textureId;\n batchableObject.texture = texture;\n return true;\n }\n updateElement(batchableObject) {\n this.dirty = true;\n const attributeBuffer = this.attributeBuffer;\n if (batchableObject.packAsQuad) {\n this.packQuadAttributes(\n batchableObject,\n attributeBuffer.float32View,\n attributeBuffer.uint32View,\n batchableObject._attributeStart,\n batchableObject._textureId\n );\n } else {\n this.packAttributes(\n batchableObject,\n attributeBuffer.float32View,\n attributeBuffer.uint32View,\n batchableObject._attributeStart,\n batchableObject._textureId\n );\n }\n }\n /**\n * breaks the batcher. This happens when a batch gets too big,\n * or we need to switch to a different type of rendering (a filter for example)\n * @param instructionSet\n */\n break(instructionSet) {\n const elements = this._elements;\n if (!elements[this.elementStart])\n return;\n let batch = getBatchFromPool();\n let textureBatch = batch.textures;\n textureBatch.clear();\n const firstElement = elements[this.elementStart];\n let blendMode = getAdjustedBlendModeBlend(firstElement.blendMode, firstElement.texture._source);\n let topology = firstElement.topology;\n if (this.attributeSize * 4 > this.attributeBuffer.size) {\n this._resizeAttributeBuffer(this.attributeSize * 4);\n }\n if (this.indexSize > this.indexBuffer.length) {\n this._resizeIndexBuffer(this.indexSize);\n }\n const f32 = this.attributeBuffer.float32View;\n const u32 = this.attributeBuffer.uint32View;\n const indexBuffer = this.indexBuffer;\n let size = this._batchIndexSize;\n let start = this._batchIndexStart;\n let action = \"startBatch\";\n const maxTextures = this.maxTextures;\n for (let i = this.elementStart; i < this.elementSize; ++i) {\n const element = elements[i];\n elements[i] = null;\n const texture = element.texture;\n const source = texture._source;\n const adjustedBlendMode = getAdjustedBlendModeBlend(element.blendMode, source);\n const breakRequired = blendMode !== adjustedBlendMode || topology !== element.topology;\n if (source._batchTick === BATCH_TICK && !breakRequired) {\n element._textureId = source._textureBindLocation;\n size += element.indexSize;\n if (element.packAsQuad) {\n this.packQuadAttributes(\n element,\n f32,\n u32,\n element._attributeStart,\n element._textureId\n );\n this.packQuadIndex(\n indexBuffer,\n element._indexStart,\n element._attributeStart / this.vertexSize\n );\n } else {\n this.packAttributes(\n element,\n f32,\n u32,\n element._attributeStart,\n element._textureId\n );\n this.packIndex(\n element,\n indexBuffer,\n element._indexStart,\n element._attributeStart / this.vertexSize\n );\n }\n element._batch = batch;\n continue;\n }\n source._batchTick = BATCH_TICK;\n if (textureBatch.count >= maxTextures || breakRequired) {\n this._finishBatch(\n batch,\n start,\n size - start,\n textureBatch,\n blendMode,\n topology,\n instructionSet,\n action\n );\n action = \"renderBatch\";\n start = size;\n blendMode = adjustedBlendMode;\n topology = element.topology;\n batch = getBatchFromPool();\n textureBatch = batch.textures;\n textureBatch.clear();\n ++BATCH_TICK;\n }\n element._textureId = source._textureBindLocation = textureBatch.count;\n textureBatch.ids[source.uid] = textureBatch.count;\n textureBatch.textures[textureBatch.count++] = source;\n element._batch = batch;\n size += element.indexSize;\n if (element.packAsQuad) {\n this.packQuadAttributes(\n element,\n f32,\n u32,\n element._attributeStart,\n element._textureId\n );\n this.packQuadIndex(\n indexBuffer,\n element._indexStart,\n element._attributeStart / this.vertexSize\n );\n } else {\n this.packAttributes(\n element,\n f32,\n u32,\n element._attributeStart,\n element._textureId\n );\n this.packIndex(\n element,\n indexBuffer,\n element._indexStart,\n element._attributeStart / this.vertexSize\n );\n }\n }\n if (textureBatch.count > 0) {\n this._finishBatch(\n batch,\n start,\n size - start,\n textureBatch,\n blendMode,\n topology,\n instructionSet,\n action\n );\n start = size;\n ++BATCH_TICK;\n }\n this.elementStart = this.elementSize;\n this._batchIndexStart = start;\n this._batchIndexSize = size;\n }\n _finishBatch(batch, indexStart, indexSize, textureBatch, blendMode, topology, instructionSet, action) {\n batch.gpuBindGroup = null;\n batch.bindGroup = null;\n batch.action = action;\n batch.batcher = this;\n batch.textures = textureBatch;\n batch.blendMode = blendMode;\n batch.topology = topology;\n batch.start = indexStart;\n batch.size = indexSize;\n ++BATCH_TICK;\n this.batches[this.batchIndex++] = batch;\n instructionSet.add(batch);\n }\n finish(instructionSet) {\n this.break(instructionSet);\n }\n /**\n * Resizes the attribute buffer to the given size (1 = 1 float32)\n * @param size - the size in vertices to ensure (not bytes!)\n */\n ensureAttributeBuffer(size) {\n if (size * 4 <= this.attributeBuffer.size)\n return;\n this._resizeAttributeBuffer(size * 4);\n }\n /**\n * Resizes the index buffer to the given size (1 = 1 float32)\n * @param size - the size in vertices to ensure (not bytes!)\n */\n ensureIndexBuffer(size) {\n if (size <= this.indexBuffer.length)\n return;\n this._resizeIndexBuffer(size);\n }\n _resizeAttributeBuffer(size) {\n const newSize = Math.max(size, this.attributeBuffer.size * 2);\n const newArrayBuffer = new ViewableBuffer(newSize);\n fastCopy(this.attributeBuffer.rawBinaryData, newArrayBuffer.rawBinaryData);\n this.attributeBuffer = newArrayBuffer;\n }\n _resizeIndexBuffer(size) {\n const indexBuffer = this.indexBuffer;\n let newSize = Math.max(size, indexBuffer.length * 1.5);\n newSize += newSize % 2;\n const newIndexBuffer = newSize > 65535 ? new Uint32Array(newSize) : new Uint16Array(newSize);\n if (newIndexBuffer.BYTES_PER_ELEMENT !== indexBuffer.BYTES_PER_ELEMENT) {\n for (let i = 0; i < indexBuffer.length; i++) {\n newIndexBuffer[i] = indexBuffer[i];\n }\n } else {\n fastCopy(indexBuffer.buffer, newIndexBuffer.buffer);\n }\n this.indexBuffer = newIndexBuffer;\n }\n packQuadIndex(indexBuffer, index, indicesOffset) {\n indexBuffer[index] = indicesOffset + 0;\n indexBuffer[index + 1] = indicesOffset + 1;\n indexBuffer[index + 2] = indicesOffset + 2;\n indexBuffer[index + 3] = indicesOffset + 0;\n indexBuffer[index + 4] = indicesOffset + 2;\n indexBuffer[index + 5] = indicesOffset + 3;\n }\n packIndex(element, indexBuffer, index, indicesOffset) {\n const indices = element.indices;\n const size = element.indexSize;\n const indexOffset = element.indexOffset;\n const attributeOffset = element.attributeOffset;\n for (let i = 0; i < size; i++) {\n indexBuffer[index++] = indicesOffset + indices[i + indexOffset] - attributeOffset;\n }\n }\n destroy() {\n for (let i = 0; i < this.batches.length; i++) {\n returnBatchToPool(this.batches[i]);\n }\n this.batches = null;\n for (let i = 0; i < this._elements.length; i++) {\n this._elements[i]._batch = null;\n }\n this._elements = null;\n this.indexBuffer = null;\n this.attributeBuffer.destroy();\n this.attributeBuffer = null;\n }\n};\n_Batcher.defaultOptions = {\n maxTextures: null,\n attributesInitialSize: 4,\n indicesInitialSize: 6\n};\nlet Batcher = _Batcher;\n\nexport { Batch, Batcher };\n//# sourceMappingURL=Batcher.mjs.map\n","\"use strict\";\nvar BufferUsage = /* @__PURE__ */ ((BufferUsage2) => {\n BufferUsage2[BufferUsage2[\"MAP_READ\"] = 1] = \"MAP_READ\";\n BufferUsage2[BufferUsage2[\"MAP_WRITE\"] = 2] = \"MAP_WRITE\";\n BufferUsage2[BufferUsage2[\"COPY_SRC\"] = 4] = \"COPY_SRC\";\n BufferUsage2[BufferUsage2[\"COPY_DST\"] = 8] = \"COPY_DST\";\n BufferUsage2[BufferUsage2[\"INDEX\"] = 16] = \"INDEX\";\n BufferUsage2[BufferUsage2[\"VERTEX\"] = 32] = \"VERTEX\";\n BufferUsage2[BufferUsage2[\"UNIFORM\"] = 64] = \"UNIFORM\";\n BufferUsage2[BufferUsage2[\"STORAGE\"] = 128] = \"STORAGE\";\n BufferUsage2[BufferUsage2[\"INDIRECT\"] = 256] = \"INDIRECT\";\n BufferUsage2[BufferUsage2[\"QUERY_RESOLVE\"] = 512] = \"QUERY_RESOLVE\";\n BufferUsage2[BufferUsage2[\"STATIC\"] = 1024] = \"STATIC\";\n return BufferUsage2;\n})(BufferUsage || {});\n\nexport { BufferUsage };\n//# sourceMappingURL=const.mjs.map\n","import EventEmitter from 'eventemitter3';\nimport { uid } from '../../../../utils/data/uid.mjs';\nimport { BufferUsage } from './const.mjs';\n\n\"use strict\";\nclass Buffer extends EventEmitter {\n /**\n * Creates a new Buffer with the given options\n * @param options - the options for the buffer\n */\n constructor(options) {\n let { data, size } = options;\n const { usage, label, shrinkToFit } = options;\n super();\n /**\n * emits when the underlying buffer has changed shape (i.e. resized)\n * letting the renderer know that it needs to discard the old buffer on the GPU and create a new one\n * @event change\n */\n /**\n * emits when the underlying buffer data has been updated. letting the renderer know\n * that it needs to update the buffer on the GPU\n * @event update\n */\n /**\n * emits when the buffer is destroyed. letting the renderer know that it needs to destroy the buffer on the GPU\n * @event destroy\n */\n /** a unique id for this uniform group used through the renderer */\n this.uid = uid(\"buffer\");\n /**\n * a resource type, used to identify how to handle it when its in a bind group / shader resource\n * @internal\n * @ignore\n */\n this._resourceType = \"buffer\";\n /**\n * the resource id used internally by the renderer to build bind group keys\n * @internal\n * @ignore\n */\n this._resourceId = uid(\"resource\");\n /**\n * used internally to know if a uniform group was used in the last render pass\n * @internal\n * @ignore\n */\n this._touched = 0;\n /**\n * @internal\n * @ignore\n */\n this._updateID = 1;\n this._dataInt32 = null;\n /**\n * should the GPU buffer be shrunk when the data becomes smaller?\n * changing this will cause the buffer to be destroyed and a new one created on the GPU\n * this can be expensive, especially if the buffer is already big enough!\n * setting this to false will prevent the buffer from being shrunk. This will yield better performance\n * if you are constantly setting data that is changing size often.\n * @default true\n */\n this.shrinkToFit = true;\n /**\n * Has the buffer been destroyed?\n * @readonly\n */\n this.destroyed = false;\n if (data instanceof Array) {\n data = new Float32Array(data);\n }\n this._data = data;\n size ?? (size = data?.byteLength);\n const mappedAtCreation = !!data;\n this.descriptor = {\n size,\n usage,\n mappedAtCreation,\n label\n };\n this.shrinkToFit = shrinkToFit ?? true;\n }\n /** the data in the buffer */\n get data() {\n return this._data;\n }\n set data(value) {\n this.setDataWithSize(value, value.length, true);\n }\n get dataInt32() {\n if (!this._dataInt32) {\n this._dataInt32 = new Int32Array(this.data.buffer);\n }\n return this._dataInt32;\n }\n /** whether the buffer is static or not */\n get static() {\n return !!(this.descriptor.usage & BufferUsage.STATIC);\n }\n set static(value) {\n if (value) {\n this.descriptor.usage |= BufferUsage.STATIC;\n } else {\n this.descriptor.usage &= ~BufferUsage.STATIC;\n }\n }\n /**\n * Sets the data in the buffer to the given value. This will immediately update the buffer on the GPU.\n * If you only want to update a subset of the buffer, you can pass in the size of the data.\n * @param value - the data to set\n * @param size - the size of the data in bytes\n * @param syncGPU - should the buffer be updated on the GPU immediately?\n */\n setDataWithSize(value, size, syncGPU) {\n this._updateID++;\n this._updateSize = size * value.BYTES_PER_ELEMENT;\n if (this._data === value) {\n if (syncGPU)\n this.emit(\"update\", this);\n return;\n }\n const oldData = this._data;\n this._data = value;\n this._dataInt32 = null;\n if (!oldData || oldData.length !== value.length) {\n if (!this.shrinkToFit && oldData && value.byteLength < oldData.byteLength) {\n if (syncGPU)\n this.emit(\"update\", this);\n } else {\n this.descriptor.size = value.byteLength;\n this._resourceId = uid(\"resource\");\n this.emit(\"change\", this);\n }\n return;\n }\n if (syncGPU)\n this.emit(\"update\", this);\n }\n /**\n * updates the buffer on the GPU to reflect the data in the buffer.\n * By default it will update the entire buffer. If you only want to update a subset of the buffer,\n * you can pass in the size of the buffer to update.\n * @param sizeInBytes - the new size of the buffer in bytes\n */\n update(sizeInBytes) {\n this._updateSize = sizeInBytes ?? this._updateSize;\n this._updateID++;\n this.emit(\"update\", this);\n }\n /** Destroys the buffer */\n destroy() {\n this.destroyed = true;\n this.emit(\"destroy\", this);\n this.emit(\"change\", this);\n this._data = null;\n this.descriptor = null;\n this.removeAllListeners();\n }\n}\n\nexport { Buffer };\n//# sourceMappingURL=Buffer.mjs.map\n","import { Buffer } from '../../buffer/Buffer.mjs';\nimport { BufferUsage } from '../../buffer/const.mjs';\n\n\"use strict\";\nfunction ensureIsBuffer(buffer, index) {\n if (!(buffer instanceof Buffer)) {\n let usage = index ? BufferUsage.INDEX : BufferUsage.VERTEX;\n if (buffer instanceof Array) {\n if (index) {\n buffer = new Uint32Array(buffer);\n usage = BufferUsage.INDEX | BufferUsage.COPY_DST;\n } else {\n buffer = new Float32Array(buffer);\n usage = BufferUsage.VERTEX | BufferUsage.COPY_DST;\n }\n }\n buffer = new Buffer({\n data: buffer,\n label: index ? \"index-mesh-buffer\" : \"vertex-mesh-buffer\",\n usage\n });\n }\n return buffer;\n}\n\nexport { ensureIsBuffer };\n//# sourceMappingURL=ensureIsBuffer.mjs.map\n","\"use strict\";\nfunction getGeometryBounds(geometry, attributeId, bounds) {\n const attribute = geometry.getAttribute(attributeId);\n if (!attribute) {\n bounds.minX = 0;\n bounds.minY = 0;\n bounds.maxX = 0;\n bounds.maxY = 0;\n return bounds;\n }\n const data = attribute.buffer.data;\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n const byteSize = data.BYTES_PER_ELEMENT;\n const offset = (attribute.offset || 0) / byteSize;\n const stride = (attribute.stride || 2 * 4) / byteSize;\n for (let i = offset; i < data.length; i += stride) {\n const x = data[i];\n const y = data[i + 1];\n if (x > maxX)\n maxX = x;\n if (y > maxY)\n maxY = y;\n if (x < minX)\n minX = x;\n if (y < minY)\n minY = y;\n }\n bounds.minX = minX;\n bounds.minY = minY;\n bounds.maxX = maxX;\n bounds.maxY = maxY;\n return bounds;\n}\n\nexport { getGeometryBounds };\n//# sourceMappingURL=getGeometryBounds.mjs.map\n","import EventEmitter from 'eventemitter3';\nimport { Bounds } from '../../../../scene/container/bounds/Bounds.mjs';\nimport { uid } from '../../../../utils/data/uid.mjs';\nimport { Buffer } from '../buffer/Buffer.mjs';\nimport { ensureIsBuffer } from './utils/ensureIsBuffer.mjs';\nimport { getGeometryBounds } from './utils/getGeometryBounds.mjs';\n\n\"use strict\";\nfunction ensureIsAttribute(attribute) {\n if (attribute instanceof Buffer || Array.isArray(attribute) || attribute.BYTES_PER_ELEMENT) {\n attribute = {\n buffer: attribute\n };\n }\n attribute.buffer = ensureIsBuffer(attribute.buffer, false);\n return attribute;\n}\nclass Geometry extends EventEmitter {\n /**\n * Create a new instance of a geometry\n * @param options - The options for the geometry.\n */\n constructor(options = {}) {\n super();\n /** The unique id of the geometry. */\n this.uid = uid(\"geometry\");\n /**\n * the layout key will be generated by WebGPU all geometries that have the same structure\n * will have the same layout key. This is used to cache the pipeline layout\n * @internal\n * @ignore\n */\n this._layoutKey = 0;\n /** the instance count of the geometry to draw */\n this.instanceCount = 1;\n this._bounds = new Bounds();\n this._boundsDirty = true;\n const { attributes, indexBuffer, topology } = options;\n this.buffers = [];\n this.attributes = {};\n if (attributes) {\n for (const i in attributes) {\n this.addAttribute(i, attributes[i]);\n }\n }\n this.instanceCount = options.instanceCount ?? 1;\n if (indexBuffer) {\n this.addIndex(indexBuffer);\n }\n this.topology = topology || \"triangle-list\";\n }\n onBufferUpdate() {\n this._boundsDirty = true;\n this.emit(\"update\", this);\n }\n /**\n * Returns the requested attribute.\n * @param id - The name of the attribute required\n * @returns - The attribute requested.\n */\n getAttribute(id) {\n return this.attributes[id];\n }\n /**\n * Returns the index buffer\n * @returns - The index buffer.\n */\n getIndex() {\n return this.indexBuffer;\n }\n /**\n * Returns the requested buffer.\n * @param id - The name of the buffer required.\n * @returns - The buffer requested.\n */\n getBuffer(id) {\n return this.getAttribute(id).buffer;\n }\n /**\n * Used to figure out how many vertices there are in this geometry\n * @returns the number of vertices in the geometry\n */\n getSize() {\n for (const i in this.attributes) {\n const attribute = this.attributes[i];\n const buffer = attribute.buffer;\n return buffer.data.length / (attribute.stride / 4 || attribute.size);\n }\n return 0;\n }\n /**\n * Adds an attribute to the geometry.\n * @param name - The name of the attribute to add.\n * @param attributeOption - The attribute option to add.\n */\n addAttribute(name, attributeOption) {\n const attribute = ensureIsAttribute(attributeOption);\n const bufferIndex = this.buffers.indexOf(attribute.buffer);\n if (bufferIndex === -1) {\n this.buffers.push(attribute.buffer);\n attribute.buffer.on(\"update\", this.onBufferUpdate, this);\n attribute.buffer.on(\"change\", this.onBufferUpdate, this);\n }\n this.attributes[name] = attribute;\n }\n /**\n * Adds an index buffer to the geometry.\n * @param indexBuffer - The index buffer to add. Can be a Buffer, TypedArray, or an array of numbers.\n */\n addIndex(indexBuffer) {\n this.indexBuffer = ensureIsBuffer(indexBuffer, true);\n this.buffers.push(this.indexBuffer);\n }\n /** Returns the bounds of the geometry. */\n get bounds() {\n if (!this._boundsDirty)\n return this._bounds;\n this._boundsDirty = false;\n return getGeometryBounds(this, \"aPosition\", this._bounds);\n }\n /**\n * destroys the geometry.\n * @param destroyBuffers - destroy the buffers associated with this geometry\n */\n destroy(destroyBuffers = false) {\n this.emit(\"destroy\", this);\n this.removeAllListeners();\n if (destroyBuffers) {\n this.buffers.forEach((buffer) => buffer.destroy());\n }\n this.attributes = null;\n this.buffers = null;\n this.indexBuffer = null;\n this._bounds = null;\n }\n}\n\nexport { Geometry };\n//# sourceMappingURL=Geometry.mjs.map\n","import { Buffer } from '../../renderers/shared/buffer/Buffer.mjs';\nimport { BufferUsage } from '../../renderers/shared/buffer/const.mjs';\nimport { Geometry } from '../../renderers/shared/geometry/Geometry.mjs';\n\n\"use strict\";\nconst placeHolderBufferData = new Float32Array(1);\nconst placeHolderIndexData = new Uint32Array(1);\nclass BatchGeometry extends Geometry {\n constructor() {\n const vertexSize = 6;\n const attributeBuffer = new Buffer({\n data: placeHolderBufferData,\n label: \"attribute-batch-buffer\",\n usage: BufferUsage.VERTEX | BufferUsage.COPY_DST,\n shrinkToFit: false\n });\n const indexBuffer = new Buffer({\n data: placeHolderIndexData,\n label: \"index-batch-buffer\",\n usage: BufferUsage.INDEX | BufferUsage.COPY_DST,\n // | BufferUsage.STATIC,\n shrinkToFit: false\n });\n const stride = vertexSize * 4;\n super({\n attributes: {\n aPosition: {\n buffer: attributeBuffer,\n format: \"float32x2\",\n stride,\n offset: 0\n },\n aUV: {\n buffer: attributeBuffer,\n format: \"float32x2\",\n stride,\n offset: 2 * 4\n },\n aColor: {\n buffer: attributeBuffer,\n format: \"unorm8x4\",\n stride,\n offset: 4 * 4\n },\n aTextureIdAndRound: {\n buffer: attributeBuffer,\n format: \"uint16x2\",\n stride,\n offset: 5 * 4\n }\n },\n indexBuffer\n });\n }\n}\n\nexport { BatchGeometry };\n//# sourceMappingURL=BatchGeometry.mjs.map\n","import { warn } from '../../../../utils/logging/warn.mjs';\n\n\"use strict\";\nfunction addBits(srcParts, parts, name) {\n if (srcParts) {\n for (const i in srcParts) {\n const id = i.toLocaleLowerCase();\n const part = parts[id];\n if (part) {\n let sanitisedPart = srcParts[i];\n if (i === \"header\") {\n sanitisedPart = sanitisedPart.replace(/@in\\s+[^;]+;\\s*/g, \"\").replace(/@out\\s+[^;]+;\\s*/g, \"\");\n }\n if (name) {\n part.push(`//----${name}----//`);\n }\n part.push(sanitisedPart);\n } else {\n warn(`${i} placement hook does not exist in shader`);\n }\n }\n }\n}\n\nexport { addBits };\n//# sourceMappingURL=addBits.mjs.map\n","\"use strict\";\nconst findHooksRx = /\\{\\{(.*?)\\}\\}/g;\nfunction compileHooks(programSrc) {\n const parts = {};\n const partMatches = programSrc.match(findHooksRx)?.map((hook) => hook.replace(/[{()}]/g, \"\")) ?? [];\n partMatches.forEach((hook) => {\n parts[hook] = [];\n });\n return parts;\n}\n\nexport { compileHooks, findHooksRx };\n//# sourceMappingURL=compileHooks.mjs.map\n","\"use strict\";\nfunction extractInputs(fragmentSource, out) {\n let match;\n const regex = /@in\\s+([^;]+);/g;\n while ((match = regex.exec(fragmentSource)) !== null) {\n out.push(match[1]);\n }\n}\nfunction compileInputs(fragments, template, sort = false) {\n const results = [];\n extractInputs(template, results);\n fragments.forEach((fragment) => {\n if (fragment.header) {\n extractInputs(fragment.header, results);\n }\n });\n const mainInput = results;\n if (sort) {\n mainInput.sort();\n }\n const finalString = mainInput.map((inValue, i) => ` @location(${i}) ${inValue},`).join(\"\\n\");\n let cleanedString = template.replace(/@in\\s+[^;]+;\\s*/g, \"\");\n cleanedString = cleanedString.replace(\"{{in}}\", `\n${finalString}\n`);\n return cleanedString;\n}\n\nexport { compileInputs };\n//# sourceMappingURL=compileInputs.mjs.map\n","\"use strict\";\nfunction extractOutputs(fragmentSource, out) {\n let match;\n const regex = /@out\\s+([^;]+);/g;\n while ((match = regex.exec(fragmentSource)) !== null) {\n out.push(match[1]);\n }\n}\nfunction extractVariableName(value) {\n const regex = /\\b(\\w+)\\s*:/g;\n const match = regex.exec(value);\n return match ? match[1] : \"\";\n}\nfunction stripVariable(value) {\n const regex = /@.*?\\s+/g;\n return value.replace(regex, \"\");\n}\nfunction compileOutputs(fragments, template) {\n const results = [];\n extractOutputs(template, results);\n fragments.forEach((fragment) => {\n if (fragment.header) {\n extractOutputs(fragment.header, results);\n }\n });\n let index = 0;\n const mainStruct = results.sort().map((inValue) => {\n if (inValue.indexOf(\"builtin\") > -1) {\n return inValue;\n }\n return `@location(${index++}) ${inValue}`;\n }).join(\",\\n\");\n const mainStart = results.sort().map((inValue) => ` var ${stripVariable(inValue)};`).join(\"\\n\");\n const mainEnd = `return VSOutput(\n ${results.sort().map((inValue) => ` ${extractVariableName(inValue)}`).join(\",\\n\")});`;\n let compiledCode = template.replace(/@out\\s+[^;]+;\\s*/g, \"\");\n compiledCode = compiledCode.replace(\"{{struct}}\", `\n${mainStruct}\n`);\n compiledCode = compiledCode.replace(\"{{start}}\", `\n${mainStart}\n`);\n compiledCode = compiledCode.replace(\"{{return}}\", `\n${mainEnd}\n`);\n return compiledCode;\n}\n\nexport { compileOutputs };\n//# sourceMappingURL=compileOutputs.mjs.map\n","\"use strict\";\nfunction injectBits(templateSrc, fragmentParts) {\n let out = templateSrc;\n for (const i in fragmentParts) {\n const parts = fragmentParts[i];\n const toInject = parts.join(\"\\n\");\n if (toInject.length) {\n out = out.replace(`{{${i}}}`, `//-----${i} START-----//\n${parts.join(\"\\n\")}\n//----${i} FINISH----//`);\n } else {\n out = out.replace(`{{${i}}}`, \"\");\n }\n }\n return out;\n}\n\nexport { injectBits };\n//# sourceMappingURL=injectBits.mjs.map\n","import { addBits } from './utils/addBits.mjs';\nimport { compileHooks } from './utils/compileHooks.mjs';\nimport { compileInputs } from './utils/compileInputs.mjs';\nimport { compileOutputs } from './utils/compileOutputs.mjs';\nimport { injectBits } from './utils/injectBits.mjs';\n\n\"use strict\";\nconst cacheMap = /* @__PURE__ */ Object.create(null);\nconst bitCacheMap = /* @__PURE__ */ new Map();\nlet CACHE_UID = 0;\nfunction compileHighShader({\n template,\n bits\n}) {\n const cacheId = generateCacheId(template, bits);\n if (cacheMap[cacheId])\n return cacheMap[cacheId];\n const { vertex, fragment } = compileInputsAndOutputs(template, bits);\n cacheMap[cacheId] = compileBits(vertex, fragment, bits);\n return cacheMap[cacheId];\n}\nfunction compileHighShaderGl({\n template,\n bits\n}) {\n const cacheId = generateCacheId(template, bits);\n if (cacheMap[cacheId])\n return cacheMap[cacheId];\n cacheMap[cacheId] = compileBits(template.vertex, template.fragment, bits);\n return cacheMap[cacheId];\n}\nfunction compileInputsAndOutputs(template, bits) {\n const vertexFragments = bits.map((shaderBit) => shaderBit.vertex).filter((v) => !!v);\n const fragmentFragments = bits.map((shaderBit) => shaderBit.fragment).filter((v) => !!v);\n let compiledVertex = compileInputs(vertexFragments, template.vertex, true);\n compiledVertex = compileOutputs(vertexFragments, compiledVertex);\n const compiledFragment = compileInputs(fragmentFragments, template.fragment, true);\n return {\n vertex: compiledVertex,\n fragment: compiledFragment\n };\n}\nfunction generateCacheId(template, bits) {\n return bits.map((highFragment) => {\n if (!bitCacheMap.has(highFragment)) {\n bitCacheMap.set(highFragment, CACHE_UID++);\n }\n return bitCacheMap.get(highFragment);\n }).sort((a, b) => a - b).join(\"-\") + template.vertex + template.fragment;\n}\nfunction compileBits(vertex, fragment, bits) {\n const vertexParts = compileHooks(vertex);\n const fragmentParts = compileHooks(fragment);\n bits.forEach((shaderBit) => {\n addBits(shaderBit.vertex, vertexParts, shaderBit.name);\n addBits(shaderBit.fragment, fragmentParts, shaderBit.name);\n });\n return {\n vertex: injectBits(vertex, vertexParts),\n fragment: injectBits(fragment, fragmentParts)\n };\n}\n\nexport { compileHighShader, compileHighShaderGl };\n//# sourceMappingURL=compileHighShader.mjs.map\n","\"use strict\";\nconst vertexGPUTemplate = (\n /* wgsl */\n `\n @in aPosition: vec2<f32>;\n @in aUV: vec2<f32>;\n\n @out @builtin(position) vPosition: vec4<f32>;\n @out vUV : vec2<f32>;\n @out vColor : vec4<f32>;\n\n {{header}}\n\n struct VSOutput {\n {{struct}}\n };\n\n @vertex\n fn main( {{in}} ) -> VSOutput {\n\n var worldTransformMatrix = globalUniforms.uWorldTransformMatrix;\n var modelMatrix = mat3x3<f32>(\n 1.0, 0.0, 0.0,\n 0.0, 1.0, 0.0,\n 0.0, 0.0, 1.0\n );\n var position = aPosition;\n var uv = aUV;\n\n {{start}}\n \n vColor = vec4<f32>(1., 1., 1., 1.);\n\n {{main}}\n\n vUV = uv;\n\n var modelViewProjectionMatrix = globalUniforms.uProjectionMatrix * worldTransformMatrix * modelMatrix;\n\n vPosition = vec4<f32>((modelViewProjectionMatrix * vec3<f32>(position, 1.0)).xy, 0.0, 1.0);\n \n vColor *= globalUniforms.uWorldColorAlpha;\n\n {{end}}\n\n {{return}}\n };\n`\n);\nconst fragmentGPUTemplate = (\n /* wgsl */\n `\n @in vUV : vec2<f32>;\n @in vColor : vec4<f32>;\n \n {{header}}\n\n @fragment\n fn main(\n {{in}}\n ) -> @location(0) vec4<f32> {\n \n {{start}}\n\n var outColor:vec4<f32>;\n \n {{main}}\n \n var finalColor:vec4<f32> = outColor * vColor;\n\n {{end}}\n\n return finalColor;\n };\n`\n);\nconst vertexGlTemplate = (\n /* glsl */\n `\n in vec2 aPosition;\n in vec2 aUV;\n\n out vec4 vColor;\n out vec2 vUV;\n\n {{header}}\n\n void main(void){\n\n mat3 worldTransformMatrix = uWorldTransformMatrix;\n mat3 modelMatrix = mat3(\n 1.0, 0.0, 0.0,\n 0.0, 1.0, 0.0,\n 0.0, 0.0, 1.0\n );\n vec2 position = aPosition;\n vec2 uv = aUV;\n \n {{start}}\n \n vColor = vec4(1.);\n \n {{main}}\n \n vUV = uv;\n \n mat3 modelViewProjectionMatrix = uProjectionMatrix * worldTransformMatrix * modelMatrix;\n\n gl_Position = vec4((modelViewProjectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n\n vColor *= uWorldColorAlpha;\n\n {{end}}\n }\n`\n);\nconst fragmentGlTemplate = (\n /* glsl */\n `\n \n in vec4 vColor;\n in vec2 vUV;\n\n out vec4 finalColor;\n\n {{header}}\n\n void main(void) {\n \n {{start}}\n\n vec4 outColor;\n \n {{main}}\n \n finalColor = outColor * vColor;\n \n {{end}}\n }\n`\n);\n\nexport { fragmentGPUTemplate, fragmentGlTemplate, vertexGPUTemplate, vertexGlTemplate };\n//# sourceMappingURL=defaultProgramTemplate.mjs.map\n","\"use strict\";\nconst globalUniformsBit = {\n name: \"global-uniforms-bit\",\n vertex: {\n header: (\n /* wgsl */\n `\n struct GlobalUniforms {\n uProjectionMatrix:mat3x3<f32>,\n uWorldTransformMatrix:mat3x3<f32>,\n uWorldColorAlpha: vec4<f32>,\n uResolution: vec2<f32>,\n }\n\n @group(0) @binding(0) var<uniform> globalUniforms : GlobalUniforms;\n `\n )\n }\n};\nconst globalUniformsUBOBitGl = {\n name: \"global-uniforms-ubo-bit\",\n vertex: {\n header: (\n /* glsl */\n `\n uniform globalUniforms {\n mat3 uProjectionMatrix;\n mat3 uWorldTransformMatrix;\n vec4 uWorldColorAlpha;\n vec2 uResolution;\n };\n `\n )\n }\n};\nconst globalUniformsBitGl = {\n name: \"global-uniforms-bit\",\n vertex: {\n header: (\n /* glsl */\n `\n uniform mat3 uProjectionMatrix;\n uniform mat3 uWorldTransformMatrix;\n uniform vec4 uWorldColorAlpha;\n uniform vec2 uResolution;\n `\n )\n }\n};\n\nexport { globalUniformsBit, globalUniformsBitGl, globalUniformsUBOBitGl };\n//# sourceMappingURL=globalUniformsBit.mjs.map\n","import { GlProgram } from '../renderers/gl/shader/GlProgram.mjs';\nimport { GpuProgram } from '../renderers/gpu/shader/GpuProgram.mjs';\nimport { compileHighShader, compileHighShaderGl } from './compiler/compileHighShader.mjs';\nimport { fragmentGPUTemplate, vertexGPUTemplate, vertexGlTemplate, fragmentGlTemplate } from './defaultProgramTemplate.mjs';\nimport { globalUniformsBit, globalUniformsBitGl } from './shader-bits/globalUniformsBit.mjs';\n\n\"use strict\";\nfunction compileHighShaderGpuProgram({ bits, name }) {\n const source = compileHighShader({\n template: {\n fragment: fragmentGPUTemplate,\n vertex: vertexGPUTemplate\n },\n bits: [\n globalUniformsBit,\n ...bits\n ]\n });\n return GpuProgram.from({\n name,\n vertex: {\n source: source.vertex,\n entryPoint: \"main\"\n },\n fragment: {\n source: source.fragment,\n entryPoint: \"main\"\n }\n });\n}\nfunction compileHighShaderGlProgram({ bits, name }) {\n return new GlProgram({\n name,\n ...compileHighShaderGl({\n template: {\n vertex: vertexGlTemplate,\n fragment: fragmentGlTemplate\n },\n bits: [\n globalUniformsBitGl,\n ...bits\n ]\n })\n });\n}\n\nexport { compileHighShaderGlProgram, compileHighShaderGpuProgram };\n//# sourceMappingURL=compileHighShaderToProgram.mjs.map\n","\"use strict\";\nconst colorBit = {\n name: \"color-bit\",\n vertex: {\n header: (\n /* wgsl */\n `\n @in aColor: vec4<f32>;\n `\n ),\n main: (\n /* wgsl */\n `\n vColor *= vec4<f32>(aColor.rgb * aColor.a, aColor.a);\n `\n )\n }\n};\nconst colorBitGl = {\n name: \"color-bit\",\n vertex: {\n header: (\n /* glsl */\n `\n in vec4 aColor;\n `\n ),\n main: (\n /* glsl */\n `\n vColor *= vec4(aColor.rgb * aColor.a, aColor.a);\n `\n )\n }\n};\n\nexport { colorBit, colorBitGl };\n//# sourceMappingURL=colorBit.mjs.map\n","\"use strict\";\nconst textureBatchBitGpuCache = {};\nfunction generateBindingSrc(maxTextures) {\n const src = [];\n if (maxTextures === 1) {\n src.push(\"@group(1) @binding(0) var textureSource1: texture_2d<f32>;\");\n src.push(\"@group(1) @binding(1) var textureSampler1: sampler;\");\n } else {\n let bindingIndex = 0;\n for (let i = 0; i < maxTextures; i++) {\n src.push(`@group(1) @binding(${bindingIndex++}) var textureSource${i + 1}: texture_2d<f32>;`);\n src.push(`@group(1) @binding(${bindingIndex++}) var textureSampler${i + 1}: sampler;`);\n }\n }\n return src.join(\"\\n\");\n}\nfunction generateSampleSrc(maxTextures) {\n const src = [];\n if (maxTextures === 1) {\n src.push(\"outColor = textureSampleGrad(textureSource1, textureSampler1, vUV, uvDx, uvDy);\");\n } else {\n src.push(\"switch vTextureId {\");\n for (let i = 0; i < maxTextures; i++) {\n if (i === maxTextures - 1) {\n src.push(` default:{`);\n } else {\n src.push(` case ${i}:{`);\n }\n src.push(` outColor = textureSampleGrad(textureSource${i + 1}, textureSampler${i + 1}, vUV, uvDx, uvDy);`);\n src.push(` break;}`);\n }\n src.push(`}`);\n }\n return src.join(\"\\n\");\n}\nfunction generateTextureBatchBit(maxTextures) {\n if (!textureBatchBitGpuCache[maxTextures]) {\n textureBatchBitGpuCache[maxTextures] = {\n name: \"texture-batch-bit\",\n vertex: {\n header: `\n @in aTextureIdAndRound: vec2<u32>;\n @out @interpolate(flat) vTextureId : u32;\n `,\n main: `\n vTextureId = aTextureIdAndRound.y;\n `,\n end: `\n if(aTextureIdAndRound.x == 1)\n {\n vPosition = vec4<f32>(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);\n }\n `\n },\n fragment: {\n header: `\n @in @interpolate(flat) vTextureId: u32;\n\n ${generateBindingSrc(maxTextures)}\n `,\n main: `\n var uvDx = dpdx(vUV);\n var uvDy = dpdy(vUV);\n\n ${generateSampleSrc(maxTextures)}\n `\n }\n };\n }\n return textureBatchBitGpuCache[maxTextures];\n}\nconst textureBatchBitGlCache = {};\nfunction generateSampleGlSrc(maxTextures) {\n const src = [];\n for (let i = 0; i < maxTextures; i++) {\n if (i > 0) {\n src.push(\"else\");\n }\n if (i < maxTextures - 1) {\n src.push(`if(vTextureId < ${i}.5)`);\n }\n src.push(\"{\");\n src.push(`\toutColor = texture(uTextures[${i}], vUV);`);\n src.push(\"}\");\n }\n return src.join(\"\\n\");\n}\nfunction generateTextureBatchBitGl(maxTextures) {\n if (!textureBatchBitGlCache[maxTextures]) {\n textureBatchBitGlCache[maxTextures] = {\n name: \"texture-batch-bit\",\n vertex: {\n header: `\n in vec2 aTextureIdAndRound;\n out float vTextureId;\n\n `,\n main: `\n vTextureId = aTextureIdAndRound.y;\n `,\n end: `\n if(aTextureIdAndRound.x == 1.)\n {\n gl_Position.xy = roundPixels(gl_Position.xy, uResolution);\n }\n `\n },\n fragment: {\n header: `\n in float vTextureId;\n\n uniform sampler2D uTextures[${maxTextures}];\n\n `,\n main: `\n\n ${generateSampleGlSrc(maxTextures)}\n `\n }\n };\n }\n return textureBatchBitGlCache[maxTextures];\n}\n\nexport { generateTextureBatchBit, generateTextureBatchBitGl };\n//# sourceMappingURL=generateTextureBatchBit.mjs.map\n","\"use strict\";\nconst roundPixelsBit = {\n name: \"round-pixels-bit\",\n vertex: {\n header: (\n /* wgsl */\n `\n fn roundPixels(position: vec2<f32>, targetSize: vec2<f32>) -> vec2<f32> \n {\n return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;\n }\n `\n )\n }\n};\nconst roundPixelsBitGl = {\n name: \"round-pixels-bit\",\n vertex: {\n header: (\n /* glsl */\n ` \n vec2 roundPixels(vec2 position, vec2 targetSize)\n { \n return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;\n }\n `\n )\n }\n};\n\nexport { roundPixelsBit, roundPixelsBitGl };\n//# sourceMappingURL=roundPixelsBit.mjs.map\n","import { UniformGroup } from '../../shared/shader/UniformGroup.mjs';\n\n\"use strict\";\nconst batchSamplersUniformGroupHash = {};\nfunction getBatchSamplersUniformGroup(maxTextures) {\n let batchSamplersUniformGroup = batchSamplersUniformGroupHash[maxTextures];\n if (batchSamplersUniformGroup)\n return batchSamplersUniformGroup;\n const sampleValues = new Int32Array(maxTextures);\n for (let i = 0; i < maxTextures; i++) {\n sampleValues[i] = i;\n }\n batchSamplersUniformGroup = batchSamplersUniformGroupHash[maxTextures] = new UniformGroup({\n uTextures: { value: sampleValues, type: `i32`, size: maxTextures }\n }, { isStatic: true });\n return batchSamplersUniformGroup;\n}\n\nexport { getBatchSamplersUniformGroup };\n//# sourceMappingURL=getBatchSamplersUniformGroup.mjs.map\n","import { compileHighShaderGlProgram, compileHighShaderGpuProgram } from '../../high-shader/compileHighShaderToProgram.mjs';\nimport { colorBitGl, colorBit } from '../../high-shader/shader-bits/colorBit.mjs';\nimport { generateTextureBatchBitGl, generateTextureBatchBit } from '../../high-shader/shader-bits/generateTextureBatchBit.mjs';\nimport { roundPixelsBitGl, roundPixelsBit } from '../../high-shader/shader-bits/roundPixelsBit.mjs';\nimport { getBatchSamplersUniformGroup } from '../../renderers/gl/shader/getBatchSamplersUniformGroup.mjs';\nimport { Shader } from '../../renderers/shared/shader/Shader.mjs';\n\n\"use strict\";\nclass DefaultShader extends Shader {\n constructor(maxTextures) {\n const glProgram = compileHighShaderGlProgram({\n name: \"batch\",\n bits: [\n colorBitGl,\n generateTextureBatchBitGl(maxTextures),\n roundPixelsBitGl\n ]\n });\n const gpuProgram = compileHighShaderGpuProgram({\n name: \"batch\",\n bits: [\n colorBit,\n generateTextureBatchBit(maxTextures),\n roundPixelsBit\n ]\n });\n super({\n glProgram,\n gpuProgram,\n resources: {\n batchSamplers: getBatchSamplersUniformGroup(maxTextures)\n }\n });\n }\n}\n\nexport { DefaultShader };\n//# sourceMappingURL=DefaultShader.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Batcher } from './Batcher.mjs';\nimport { BatchGeometry } from './BatchGeometry.mjs';\nimport { DefaultShader } from './DefaultShader.mjs';\n\n\"use strict\";\nlet defaultShader = null;\nconst _DefaultBatcher = class _DefaultBatcher extends Batcher {\n constructor() {\n super(...arguments);\n this.geometry = new BatchGeometry();\n this.shader = defaultShader || (defaultShader = new DefaultShader(this.maxTextures));\n this.name = _DefaultBatcher.extension.name;\n /** The size of one attribute. 1 = 32 bit. x, y, u, v, color, textureIdAndRound -> total = 6 */\n this.vertexSize = 6;\n }\n /**\n * Packs the attributes of a DefaultBatchableMeshElement into the provided views.\n * @param element - The DefaultBatchableMeshElement to pack.\n * @param float32View - The Float32Array view to pack into.\n * @param uint32View - The Uint32Array view to pack into.\n * @param index - The starting index in the views.\n * @param textureId - The texture ID to use.\n */\n packAttributes(element, float32View, uint32View, index, textureId) {\n const textureIdAndRound = textureId << 16 | element.roundPixels & 65535;\n const wt = element.transform;\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, uvs } = element;\n const argb = element.color;\n const offset = element.attributeOffset;\n const end = offset + element.attributeSize;\n for (let i = offset; i < end; i++) {\n const i2 = i * 2;\n const x = positions[i2];\n const y = positions[i2 + 1];\n float32View[index++] = a * x + c * y + tx;\n float32View[index++] = d * y + b * x + ty;\n float32View[index++] = uvs[i2];\n float32View[index++] = uvs[i2 + 1];\n uint32View[index++] = argb;\n uint32View[index++] = textureIdAndRound;\n }\n }\n /**\n * Packs the attributes of a DefaultBatchableQuadElement into the provided views.\n * @param element - The DefaultBatchableQuadElement to pack.\n * @param float32View - The Float32Array view to pack into.\n * @param uint32View - The Uint32Array view to pack into.\n * @param index - The starting index in the views.\n * @param textureId - The texture ID to use.\n */\n packQuadAttributes(element, float32View, uint32View, index, textureId) {\n const texture = element.texture;\n const wt = element.transform;\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 bounds = element.bounds;\n const w0 = bounds.maxX;\n const w1 = bounds.minX;\n const h0 = bounds.maxY;\n const h1 = bounds.minY;\n const uvs = texture.uvs;\n const argb = element.color;\n const textureIdAndRound = textureId << 16 | element.roundPixels & 65535;\n float32View[index + 0] = a * w1 + c * h1 + tx;\n float32View[index + 1] = d * h1 + b * w1 + ty;\n float32View[index + 2] = uvs.x0;\n float32View[index + 3] = uvs.y0;\n uint32View[index + 4] = argb;\n uint32View[index + 5] = textureIdAndRound;\n float32View[index + 6] = a * w0 + c * h1 + tx;\n float32View[index + 7] = d * h1 + b * w0 + ty;\n float32View[index + 8] = uvs.x1;\n float32View[index + 9] = uvs.y1;\n uint32View[index + 10] = argb;\n uint32View[index + 11] = textureIdAndRound;\n float32View[index + 12] = a * w0 + c * h0 + tx;\n float32View[index + 13] = d * h0 + b * w0 + ty;\n float32View[index + 14] = uvs.x2;\n float32View[index + 15] = uvs.y2;\n uint32View[index + 16] = argb;\n uint32View[index + 17] = textureIdAndRound;\n float32View[index + 18] = a * w1 + c * h0 + tx;\n float32View[index + 19] = d * h0 + b * w1 + ty;\n float32View[index + 20] = uvs.x3;\n float32View[index + 21] = uvs.y3;\n uint32View[index + 22] = argb;\n uint32View[index + 23] = textureIdAndRound;\n }\n};\n/** @ignore */\n_DefaultBatcher.extension = {\n type: [\n ExtensionType.Batcher\n ],\n name: \"default\"\n};\nlet DefaultBatcher = _DefaultBatcher;\n\nexport { DefaultBatcher };\n//# sourceMappingURL=DefaultBatcher.mjs.map\n","\"use strict\";\nfunction buildUvs(vertices, verticesStride, verticesOffset, uvs, uvsOffset, uvsStride, size, matrix = null) {\n let index = 0;\n verticesOffset *= verticesStride;\n uvsOffset *= uvsStride;\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 while (index < size) {\n const x = vertices[verticesOffset];\n const y = vertices[verticesOffset + 1];\n uvs[uvsOffset] = a * x + c * y + tx;\n uvs[uvsOffset + 1] = b * x + d * y + ty;\n uvsOffset += uvsStride;\n verticesOffset += verticesStride;\n index++;\n }\n}\nfunction buildSimpleUvs(uvs, uvsOffset, uvsStride, size) {\n let index = 0;\n uvsOffset *= uvsStride;\n while (index < size) {\n uvs[uvsOffset] = 0;\n uvs[uvsOffset + 1] = 0;\n uvsOffset += uvsStride;\n index++;\n }\n}\n\nexport { buildSimpleUvs, buildUvs };\n//# sourceMappingURL=buildUvs.mjs.map\n","\"use strict\";\nfunction transformVertices(vertices, m, offset, stride, size) {\n const a = m.a;\n const b = m.b;\n const c = m.c;\n const d = m.d;\n const tx = m.tx;\n const ty = m.ty;\n offset || (offset = 0);\n stride || (stride = 2);\n size || (size = vertices.length / stride - offset);\n let index = offset * stride;\n for (let i = 0; i < size; i++) {\n const x = vertices[index];\n const y = vertices[index + 1];\n vertices[index] = a * x + c * y + tx;\n vertices[index + 1] = b * x + d * y + ty;\n index += stride;\n }\n}\n\nexport { transformVertices };\n//# sourceMappingURL=transformVertices.mjs.map\n","import { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { multiplyHexColors } from '../../container/utils/multiplyHexColors.mjs';\n\n\"use strict\";\nconst identityMatrix = new Matrix();\nclass BatchableGraphics {\n constructor() {\n this.packAsQuad = false;\n this.batcherName = \"default\";\n this.topology = \"triangle-list\";\n this.applyTransform = true;\n this.roundPixels = 0;\n this._batcher = null;\n this._batch = null;\n }\n get uvs() {\n return this.geometryData.uvs;\n }\n get positions() {\n return this.geometryData.vertices;\n }\n get indices() {\n return this.geometryData.indices;\n }\n get blendMode() {\n if (this.applyTransform) {\n return this.renderable.groupBlendMode;\n }\n return \"normal\";\n }\n get color() {\n const rgb = this.baseColor;\n const bgr = rgb >> 16 | rgb & 65280 | (rgb & 255) << 16;\n const renderable = this.renderable;\n if (renderable) {\n return multiplyHexColors(bgr, renderable.groupColor) + (this.alpha * renderable.groupAlpha * 255 << 24);\n }\n return bgr + (this.alpha * 255 << 24);\n }\n get transform() {\n return this.renderable?.groupTransform || identityMatrix;\n }\n copyTo(gpuBuffer) {\n gpuBuffer.indexOffset = this.indexOffset;\n gpuBuffer.indexSize = this.indexSize;\n gpuBuffer.attributeOffset = this.attributeOffset;\n gpuBuffer.attributeSize = this.attributeSize;\n gpuBuffer.baseColor = this.baseColor;\n gpuBuffer.alpha = this.alpha;\n gpuBuffer.texture = this.texture;\n gpuBuffer.geometryData = this.geometryData;\n gpuBuffer.topology = this.topology;\n }\n reset() {\n this.applyTransform = true;\n this.renderable = null;\n this.topology = \"triangle-list\";\n }\n}\n\nexport { BatchableGraphics };\n//# sourceMappingURL=BatchableGraphics.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\n\n\"use strict\";\nconst buildCircle = {\n extension: {\n type: ExtensionType.ShapeBuilder,\n name: \"circle\"\n },\n build(shape, points) {\n let x;\n let y;\n let dx;\n let dy;\n let rx;\n let ry;\n if (shape.type === \"circle\") {\n const circle = shape;\n x = circle.x;\n y = circle.y;\n rx = ry = circle.radius;\n dx = dy = 0;\n } else if (shape.type === \"ellipse\") {\n const ellipse = shape;\n x = ellipse.x;\n y = ellipse.y;\n rx = ellipse.halfWidth;\n ry = ellipse.halfHeight;\n dx = dy = 0;\n } else {\n const roundedRect = shape;\n const halfWidth = roundedRect.width / 2;\n const halfHeight = roundedRect.height / 2;\n x = roundedRect.x + halfWidth;\n y = roundedRect.y + halfHeight;\n rx = ry = Math.max(0, Math.min(roundedRect.radius, Math.min(halfWidth, halfHeight)));\n dx = halfWidth - rx;\n dy = halfHeight - ry;\n }\n if (!(rx >= 0 && ry >= 0 && dx >= 0 && dy >= 0)) {\n return points;\n }\n const n = Math.ceil(2.3 * Math.sqrt(rx + ry));\n const m = n * 8 + (dx ? 4 : 0) + (dy ? 4 : 0);\n if (m === 0) {\n return points;\n }\n if (n === 0) {\n points[0] = points[6] = x + dx;\n points[1] = points[3] = y + dy;\n points[2] = points[4] = x - dx;\n points[5] = points[7] = y - dy;\n return points;\n }\n let j1 = 0;\n let j2 = n * 4 + (dx ? 2 : 0) + 2;\n let j3 = j2;\n let j4 = m;\n let x0 = dx + rx;\n let y0 = dy;\n let x1 = x + x0;\n let x2 = x - x0;\n let y1 = y + y0;\n points[j1++] = x1;\n points[j1++] = y1;\n points[--j2] = y1;\n points[--j2] = x2;\n if (dy) {\n const y22 = y - y0;\n points[j3++] = x2;\n points[j3++] = y22;\n points[--j4] = y22;\n points[--j4] = x1;\n }\n for (let i = 1; i < n; i++) {\n const a = Math.PI / 2 * (i / n);\n const x02 = dx + Math.cos(a) * rx;\n const y02 = dy + Math.sin(a) * ry;\n const x12 = x + x02;\n const x22 = x - x02;\n const y12 = y + y02;\n const y22 = y - y02;\n points[j1++] = x12;\n points[j1++] = y12;\n points[--j2] = y12;\n points[--j2] = x22;\n points[j3++] = x22;\n points[j3++] = y22;\n points[--j4] = y22;\n points[--j4] = x12;\n }\n x0 = dx;\n y0 = dy + ry;\n x1 = x + x0;\n x2 = x - x0;\n y1 = y + y0;\n const y2 = y - y0;\n points[j1++] = x1;\n points[j1++] = y1;\n points[--j4] = y2;\n points[--j4] = x1;\n if (dx) {\n points[j1++] = x2;\n points[j1++] = y1;\n points[--j4] = y2;\n points[--j4] = x2;\n }\n return points;\n },\n triangulate(points, vertices, verticesStride, verticesOffset, indices, indicesOffset) {\n if (points.length === 0) {\n return;\n }\n let centerX = 0;\n let centerY = 0;\n for (let i = 0; i < points.length; i += 2) {\n centerX += points[i];\n centerY += points[i + 1];\n }\n centerX /= points.length / 2;\n centerY /= points.length / 2;\n let count = verticesOffset;\n vertices[count * verticesStride] = centerX;\n vertices[count * verticesStride + 1] = centerY;\n const centerIndex = count++;\n for (let i = 0; i < points.length; i += 2) {\n vertices[count * verticesStride] = points[i];\n vertices[count * verticesStride + 1] = points[i + 1];\n if (i > 0) {\n indices[indicesOffset++] = count;\n indices[indicesOffset++] = centerIndex;\n indices[indicesOffset++] = count - 1;\n }\n count++;\n }\n indices[indicesOffset++] = centerIndex + 1;\n indices[indicesOffset++] = centerIndex;\n indices[indicesOffset++] = count - 1;\n }\n};\nconst buildEllipse = { ...buildCircle, extension: { ...buildCircle.extension, name: \"ellipse\" } };\nconst buildRoundedRectangle = { ...buildCircle, extension: { ...buildCircle.extension, name: \"roundedRectangle\" } };\n\nexport { buildCircle, buildEllipse, buildRoundedRectangle };\n//# sourceMappingURL=buildCircle.mjs.map\n","\"use strict\";\nconst closePointEps = 1e-4;\nconst curveEps = 1e-4;\n\nexport { closePointEps, curveEps };\n//# sourceMappingURL=const.mjs.map\n","\"use strict\";\nfunction getOrientationOfPoints(points) {\n const m = points.length;\n if (m < 6) {\n return 1;\n }\n let area = 0;\n for (let i = 0, x1 = points[m - 2], y1 = points[m - 1]; i < m; i += 2) {\n const x2 = points[i];\n const y2 = points[i + 1];\n area += (x2 - x1) * (y2 + y1);\n x1 = x2;\n y1 = y2;\n }\n if (area < 0) {\n return -1;\n }\n return 1;\n}\n\nexport { getOrientationOfPoints };\n//# sourceMappingURL=getOrientationOfPoints.mjs.map\n","import { Point } from '../../../../maths/point/Point.mjs';\nimport { closePointEps, curveEps } from '../const.mjs';\nimport { getOrientationOfPoints } from '../utils/getOrientationOfPoints.mjs';\n\n\"use strict\";\nfunction square(x, y, nx, ny, innerWeight, outerWeight, clockwise, verts) {\n const ix = x - nx * innerWeight;\n const iy = y - ny * innerWeight;\n const ox = x + nx * outerWeight;\n const oy = y + ny * outerWeight;\n let exx;\n let eyy;\n if (clockwise) {\n exx = ny;\n eyy = -nx;\n } else {\n exx = -ny;\n eyy = nx;\n }\n const eix = ix + exx;\n const eiy = iy + eyy;\n const eox = ox + exx;\n const eoy = oy + eyy;\n verts.push(eix, eiy);\n verts.push(eox, eoy);\n return 2;\n}\nfunction round(cx, cy, sx, sy, ex, ey, verts, clockwise) {\n const cx2p0x = sx - cx;\n const cy2p0y = sy - cy;\n let angle0 = Math.atan2(cx2p0x, cy2p0y);\n let angle1 = Math.atan2(ex - cx, ey - cy);\n if (clockwise && angle0 < angle1) {\n angle0 += Math.PI * 2;\n } else if (!clockwise && angle0 > angle1) {\n angle1 += Math.PI * 2;\n }\n let startAngle = angle0;\n const angleDiff = angle1 - angle0;\n const absAngleDiff = Math.abs(angleDiff);\n const radius = Math.sqrt(cx2p0x * cx2p0x + cy2p0y * cy2p0y);\n const segCount = (15 * absAngleDiff * Math.sqrt(radius) / Math.PI >> 0) + 1;\n const angleInc = angleDiff / segCount;\n startAngle += angleInc;\n if (clockwise) {\n verts.push(cx, cy);\n verts.push(sx, sy);\n for (let i = 1, angle = startAngle; i < segCount; i++, angle += angleInc) {\n verts.push(cx, cy);\n verts.push(\n cx + Math.sin(angle) * radius,\n cy + Math.cos(angle) * radius\n );\n }\n verts.push(cx, cy);\n verts.push(ex, ey);\n } else {\n verts.push(sx, sy);\n verts.push(cx, cy);\n for (let i = 1, angle = startAngle; i < segCount; i++, angle += angleInc) {\n verts.push(\n cx + Math.sin(angle) * radius,\n cy + Math.cos(angle) * radius\n );\n verts.push(cx, cy);\n }\n verts.push(ex, ey);\n verts.push(cx, cy);\n }\n return segCount * 2;\n}\nfunction buildLine(points, lineStyle, flipAlignment, closed, vertices, indices) {\n const eps = closePointEps;\n if (points.length === 0) {\n return;\n }\n const style = lineStyle;\n let alignment = style.alignment;\n if (lineStyle.alignment !== 0.5) {\n let orientation = getOrientationOfPoints(points);\n if (flipAlignment)\n orientation *= -1;\n alignment = (alignment - 0.5) * orientation + 0.5;\n }\n const firstPoint = new Point(points[0], points[1]);\n const lastPoint = new Point(points[points.length - 2], points[points.length - 1]);\n const closedShape = closed;\n const closedPath = Math.abs(firstPoint.x - lastPoint.x) < eps && Math.abs(firstPoint.y - lastPoint.y) < eps;\n if (closedShape) {\n points = points.slice();\n if (closedPath) {\n points.pop();\n points.pop();\n lastPoint.set(points[points.length - 2], points[points.length - 1]);\n }\n const midPointX = (firstPoint.x + lastPoint.x) * 0.5;\n const midPointY = (lastPoint.y + firstPoint.y) * 0.5;\n points.unshift(midPointX, midPointY);\n points.push(midPointX, midPointY);\n }\n const verts = vertices;\n const length = points.length / 2;\n let indexCount = points.length;\n const indexStart = verts.length / 2;\n const width = style.width / 2;\n const widthSquared = width * width;\n const miterLimitSquared = style.miterLimit * style.miterLimit;\n let x0 = points[0];\n let y0 = points[1];\n let x1 = points[2];\n let y1 = points[3];\n let x2 = 0;\n let y2 = 0;\n let perpX = -(y0 - y1);\n let perpY = x0 - x1;\n let perp1x = 0;\n let perp1y = 0;\n let dist = Math.sqrt(perpX * perpX + perpY * perpY);\n perpX /= dist;\n perpY /= dist;\n perpX *= width;\n perpY *= width;\n const ratio = alignment;\n const innerWeight = (1 - ratio) * 2;\n const outerWeight = ratio * 2;\n if (!closedShape) {\n if (style.cap === \"round\") {\n indexCount += round(\n x0 - perpX * (innerWeight - outerWeight) * 0.5,\n y0 - perpY * (innerWeight - outerWeight) * 0.5,\n x0 - perpX * innerWeight,\n y0 - perpY * innerWeight,\n x0 + perpX * outerWeight,\n y0 + perpY * outerWeight,\n verts,\n true\n ) + 2;\n } else if (style.cap === \"square\") {\n indexCount += square(x0, y0, perpX, perpY, innerWeight, outerWeight, true, verts);\n }\n }\n verts.push(\n x0 - perpX * innerWeight,\n y0 - perpY * innerWeight\n );\n verts.push(\n x0 + perpX * outerWeight,\n y0 + perpY * outerWeight\n );\n for (let i = 1; i < length - 1; ++i) {\n x0 = points[(i - 1) * 2];\n y0 = points[(i - 1) * 2 + 1];\n x1 = points[i * 2];\n y1 = points[i * 2 + 1];\n x2 = points[(i + 1) * 2];\n y2 = points[(i + 1) * 2 + 1];\n perpX = -(y0 - y1);\n perpY = x0 - x1;\n dist = Math.sqrt(perpX * perpX + perpY * perpY);\n perpX /= dist;\n perpY /= dist;\n perpX *= width;\n perpY *= width;\n perp1x = -(y1 - y2);\n perp1y = x1 - x2;\n dist = Math.sqrt(perp1x * perp1x + perp1y * perp1y);\n perp1x /= dist;\n perp1y /= dist;\n perp1x *= width;\n perp1y *= width;\n const dx0 = x1 - x0;\n const dy0 = y0 - y1;\n const dx1 = x1 - x2;\n const dy1 = y2 - y1;\n const dot = dx0 * dx1 + dy0 * dy1;\n const cross = dy0 * dx1 - dy1 * dx0;\n const clockwise = cross < 0;\n if (Math.abs(cross) < 1e-3 * Math.abs(dot)) {\n verts.push(\n x1 - perpX * innerWeight,\n y1 - perpY * innerWeight\n );\n verts.push(\n x1 + perpX * outerWeight,\n y1 + perpY * outerWeight\n );\n if (dot >= 0) {\n if (style.join === \"round\") {\n indexCount += round(\n x1,\n y1,\n x1 - perpX * innerWeight,\n y1 - perpY * innerWeight,\n x1 - perp1x * innerWeight,\n y1 - perp1y * innerWeight,\n verts,\n false\n ) + 4;\n } else {\n indexCount += 2;\n }\n verts.push(\n x1 - perp1x * outerWeight,\n y1 - perp1y * outerWeight\n );\n verts.push(\n x1 + perp1x * innerWeight,\n y1 + perp1y * innerWeight\n );\n }\n continue;\n }\n const c1 = (-perpX + x0) * (-perpY + y1) - (-perpX + x1) * (-perpY + y0);\n const c2 = (-perp1x + x2) * (-perp1y + y1) - (-perp1x + x1) * (-perp1y + y2);\n const px = (dx0 * c2 - dx1 * c1) / cross;\n const py = (dy1 * c1 - dy0 * c2) / cross;\n const pDist = (px - x1) * (px - x1) + (py - y1) * (py - y1);\n const imx = x1 + (px - x1) * innerWeight;\n const imy = y1 + (py - y1) * innerWeight;\n const omx = x1 - (px - x1) * outerWeight;\n const omy = y1 - (py - y1) * outerWeight;\n const smallerInsideSegmentSq = Math.min(dx0 * dx0 + dy0 * dy0, dx1 * dx1 + dy1 * dy1);\n const insideWeight = clockwise ? innerWeight : outerWeight;\n const smallerInsideDiagonalSq = smallerInsideSegmentSq + insideWeight * insideWeight * widthSquared;\n const insideMiterOk = pDist <= smallerInsideDiagonalSq;\n if (insideMiterOk) {\n if (style.join === \"bevel\" || pDist / widthSquared > miterLimitSquared) {\n if (clockwise) {\n verts.push(imx, imy);\n verts.push(x1 + perpX * outerWeight, y1 + perpY * outerWeight);\n verts.push(imx, imy);\n verts.push(x1 + perp1x * outerWeight, y1 + perp1y * outerWeight);\n } else {\n verts.push(x1 - perpX * innerWeight, y1 - perpY * innerWeight);\n verts.push(omx, omy);\n verts.push(x1 - perp1x * innerWeight, y1 - perp1y * innerWeight);\n verts.push(omx, omy);\n }\n indexCount += 2;\n } else if (style.join === \"round\") {\n if (clockwise) {\n verts.push(imx, imy);\n verts.push(x1 + perpX * outerWeight, y1 + perpY * outerWeight);\n indexCount += round(\n x1,\n y1,\n x1 + perpX * outerWeight,\n y1 + perpY * outerWeight,\n x1 + perp1x * outerWeight,\n y1 + perp1y * outerWeight,\n verts,\n true\n ) + 4;\n verts.push(imx, imy);\n verts.push(x1 + perp1x * outerWeight, y1 + perp1y * outerWeight);\n } else {\n verts.push(x1 - perpX * innerWeight, y1 - perpY * innerWeight);\n verts.push(omx, omy);\n indexCount += round(\n x1,\n y1,\n x1 - perpX * innerWeight,\n y1 - perpY * innerWeight,\n x1 - perp1x * innerWeight,\n y1 - perp1y * innerWeight,\n verts,\n false\n ) + 4;\n verts.push(x1 - perp1x * innerWeight, y1 - perp1y * innerWeight);\n verts.push(omx, omy);\n }\n } else {\n verts.push(imx, imy);\n verts.push(omx, omy);\n }\n } else {\n verts.push(x1 - perpX * innerWeight, y1 - perpY * innerWeight);\n verts.push(x1 + perpX * outerWeight, y1 + perpY * outerWeight);\n if (style.join === \"round\") {\n if (clockwise) {\n indexCount += round(\n x1,\n y1,\n x1 + perpX * outerWeight,\n y1 + perpY * outerWeight,\n x1 + perp1x * outerWeight,\n y1 + perp1y * outerWeight,\n verts,\n true\n ) + 2;\n } else {\n indexCount += round(\n x1,\n y1,\n x1 - perpX * innerWeight,\n y1 - perpY * innerWeight,\n x1 - perp1x * innerWeight,\n y1 - perp1y * innerWeight,\n verts,\n false\n ) + 2;\n }\n } else if (style.join === \"miter\" && pDist / widthSquared <= miterLimitSquared) {\n if (clockwise) {\n verts.push(omx, omy);\n verts.push(omx, omy);\n } else {\n verts.push(imx, imy);\n verts.push(imx, imy);\n }\n indexCount += 2;\n }\n verts.push(x1 - perp1x * innerWeight, y1 - perp1y * innerWeight);\n verts.push(x1 + perp1x * outerWeight, y1 + perp1y * outerWeight);\n indexCount += 2;\n }\n }\n x0 = points[(length - 2) * 2];\n y0 = points[(length - 2) * 2 + 1];\n x1 = points[(length - 1) * 2];\n y1 = points[(length - 1) * 2 + 1];\n perpX = -(y0 - y1);\n perpY = x0 - x1;\n dist = Math.sqrt(perpX * perpX + perpY * perpY);\n perpX /= dist;\n perpY /= dist;\n perpX *= width;\n perpY *= width;\n verts.push(x1 - perpX * innerWeight, y1 - perpY * innerWeight);\n verts.push(x1 + perpX * outerWeight, y1 + perpY * outerWeight);\n if (!closedShape) {\n if (style.cap === \"round\") {\n indexCount += round(\n x1 - perpX * (innerWeight - outerWeight) * 0.5,\n y1 - perpY * (innerWeight - outerWeight) * 0.5,\n x1 - perpX * innerWeight,\n y1 - perpY * innerWeight,\n x1 + perpX * outerWeight,\n y1 + perpY * outerWeight,\n verts,\n false\n ) + 2;\n } else if (style.cap === \"square\") {\n indexCount += square(x1, y1, perpX, perpY, innerWeight, outerWeight, false, verts);\n }\n }\n const eps2 = curveEps * curveEps;\n for (let i = indexStart; i < indexCount + indexStart - 2; ++i) {\n x0 = verts[i * 2];\n y0 = verts[i * 2 + 1];\n x1 = verts[(i + 1) * 2];\n y1 = verts[(i + 1) * 2 + 1];\n x2 = verts[(i + 2) * 2];\n y2 = verts[(i + 2) * 2 + 1];\n if (Math.abs(x0 * (y1 - y2) + x1 * (y2 - y0) + x2 * (y0 - y1)) < eps2) {\n continue;\n }\n indices.push(i, i + 1, i + 2);\n }\n}\n\nexport { buildLine };\n//# sourceMappingURL=buildLine.mjs.map\n","import { closePointEps } from '../const.mjs';\n\n\"use strict\";\nfunction buildPixelLine(points, closed, vertices, indices) {\n const eps = closePointEps;\n if (points.length === 0) {\n return;\n }\n const fx = points[0];\n const fy = points[1];\n const lx = points[points.length - 2];\n const ly = points[points.length - 1];\n const closePath = closed || Math.abs(fx - lx) < eps && Math.abs(fy - ly) < eps;\n const verts = vertices;\n const length = points.length / 2;\n const indexStart = verts.length / 2;\n for (let i = 0; i < length; i++) {\n verts.push(points[i * 2]);\n verts.push(points[i * 2 + 1]);\n }\n for (let i = 0; i < length - 1; i++) {\n indices.push(indexStart + i, indexStart + i + 1);\n }\n if (closePath) {\n indices.push(indexStart + length - 1, indexStart);\n }\n}\n\nexport { buildPixelLine };\n//# sourceMappingURL=buildPixelLine.mjs.map\n","import earcut from 'earcut';\n\n\"use strict\";\nfunction triangulateWithHoles(points, holes, vertices, verticesStride, verticesOffset, indices, indicesOffset) {\n const triangles = earcut(points, holes, 2);\n if (!triangles) {\n return;\n }\n for (let i = 0; i < triangles.length; i += 3) {\n indices[indicesOffset++] = triangles[i] + verticesOffset;\n indices[indicesOffset++] = triangles[i + 1] + verticesOffset;\n indices[indicesOffset++] = triangles[i + 2] + verticesOffset;\n }\n let index = verticesOffset * verticesStride;\n for (let i = 0; i < points.length; i += 2) {\n vertices[index] = points[i];\n vertices[index + 1] = points[i + 1];\n index += verticesStride;\n }\n}\n\nexport { triangulateWithHoles };\n//# sourceMappingURL=triangulateWithHoles.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { triangulateWithHoles } from '../utils/triangulateWithHoles.mjs';\n\n\"use strict\";\nconst emptyArray = [];\nconst buildPolygon = {\n extension: {\n type: ExtensionType.ShapeBuilder,\n name: \"polygon\"\n },\n build(shape, points) {\n for (let i = 0; i < shape.points.length; i++) {\n points[i] = shape.points[i];\n }\n return points;\n },\n triangulate(points, vertices, verticesStride, verticesOffset, indices, indicesOffset) {\n triangulateWithHoles(points, emptyArray, vertices, verticesStride, verticesOffset, indices, indicesOffset);\n }\n};\n\nexport { buildPolygon };\n//# sourceMappingURL=buildPolygon.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\n\n\"use strict\";\nconst buildRectangle = {\n extension: {\n type: ExtensionType.ShapeBuilder,\n name: \"rectangle\"\n },\n build(shape, points) {\n const rectData = shape;\n const x = rectData.x;\n const y = rectData.y;\n const width = rectData.width;\n const height = rectData.height;\n if (!(width >= 0 && height >= 0)) {\n return points;\n }\n points[0] = x;\n points[1] = y;\n points[2] = x + width;\n points[3] = y;\n points[4] = x + width;\n points[5] = y + height;\n points[6] = x;\n points[7] = y + height;\n return points;\n },\n triangulate(points, vertices, verticesStride, verticesOffset, indices, indicesOffset) {\n let count = 0;\n verticesOffset *= verticesStride;\n vertices[verticesOffset + count] = points[0];\n vertices[verticesOffset + count + 1] = points[1];\n count += verticesStride;\n vertices[verticesOffset + count] = points[2];\n vertices[verticesOffset + count + 1] = points[3];\n count += verticesStride;\n vertices[verticesOffset + count] = points[6];\n vertices[verticesOffset + count + 1] = points[7];\n count += verticesStride;\n vertices[verticesOffset + count] = points[4];\n vertices[verticesOffset + count + 1] = points[5];\n count += verticesStride;\n const verticesIndex = verticesOffset / verticesStride;\n indices[indicesOffset++] = verticesIndex;\n indices[indicesOffset++] = verticesIndex + 1;\n indices[indicesOffset++] = verticesIndex + 2;\n indices[indicesOffset++] = verticesIndex + 1;\n indices[indicesOffset++] = verticesIndex + 3;\n indices[indicesOffset++] = verticesIndex + 2;\n }\n};\n\nexport { buildRectangle };\n//# sourceMappingURL=buildRectangle.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\n\n\"use strict\";\nconst buildTriangle = {\n extension: {\n type: ExtensionType.ShapeBuilder,\n name: \"triangle\"\n },\n build(shape, points) {\n points[0] = shape.x;\n points[1] = shape.y;\n points[2] = shape.x2;\n points[3] = shape.y2;\n points[4] = shape.x3;\n points[5] = shape.y3;\n return points;\n },\n triangulate(points, vertices, verticesStride, verticesOffset, indices, indicesOffset) {\n let count = 0;\n verticesOffset *= verticesStride;\n vertices[verticesOffset + count] = points[0];\n vertices[verticesOffset + count + 1] = points[1];\n count += verticesStride;\n vertices[verticesOffset + count] = points[2];\n vertices[verticesOffset + count + 1] = points[3];\n count += verticesStride;\n vertices[verticesOffset + count] = points[4];\n vertices[verticesOffset + count + 1] = points[5];\n const verticesIndex = verticesOffset / verticesStride;\n indices[indicesOffset++] = verticesIndex;\n indices[indicesOffset++] = verticesIndex + 1;\n indices[indicesOffset++] = verticesIndex + 2;\n }\n};\n\nexport { buildTriangle };\n//# sourceMappingURL=buildTriangle.mjs.map\n","import { Matrix } from '../../../../maths/matrix/Matrix.mjs';\nimport { Rectangle } from '../../../../maths/shapes/Rectangle.mjs';\n\n\"use strict\";\nconst tempTextureMatrix = new Matrix();\nconst tempRect = new Rectangle();\nfunction generateTextureMatrix(out, style, shape, matrix) {\n const textureMatrix = style.matrix ? out.copyFrom(style.matrix).invert() : out.identity();\n if (style.textureSpace === \"local\") {\n const bounds = shape.getBounds(tempRect);\n textureMatrix.translate(-bounds.x, -bounds.y);\n textureMatrix.scale(1 / bounds.width, 1 / bounds.height);\n } else {\n textureMatrix.translate(style.texture.frame.x, style.texture.frame.y);\n textureMatrix.scale(1 / style.texture.source.width, 1 / style.texture.source.height);\n const sourceStyle = style.texture.source.style;\n if (sourceStyle.addressMode === \"clamp-to-edge\") {\n sourceStyle.addressMode = \"repeat\";\n sourceStyle.update();\n }\n }\n if (matrix) {\n textureMatrix.append(tempTextureMatrix.copyFrom(matrix).invert());\n }\n return textureMatrix;\n}\n\nexport { generateTextureMatrix };\n//# sourceMappingURL=generateTextureFillMatrix.mjs.map\n","import { extensions, ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../../maths/matrix/Matrix.mjs';\nimport { Rectangle } from '../../../../maths/shapes/Rectangle.mjs';\nimport { buildUvs, buildSimpleUvs } from '../../../../rendering/renderers/shared/geometry/utils/buildUvs.mjs';\nimport { transformVertices } from '../../../../rendering/renderers/shared/geometry/utils/transformVertices.mjs';\nimport { Texture } from '../../../../rendering/renderers/shared/texture/Texture.mjs';\nimport { BigPool } from '../../../../utils/pool/PoolGroup.mjs';\nimport { BatchableGraphics } from '../BatchableGraphics.mjs';\nimport { buildCircle, buildEllipse, buildRoundedRectangle } from '../buildCommands/buildCircle.mjs';\nimport { buildLine } from '../buildCommands/buildLine.mjs';\nimport { buildPixelLine } from '../buildCommands/buildPixelLine.mjs';\nimport { buildPolygon } from '../buildCommands/buildPolygon.mjs';\nimport { buildRectangle } from '../buildCommands/buildRectangle.mjs';\nimport { buildTriangle } from '../buildCommands/buildTriangle.mjs';\nimport { generateTextureMatrix } from './generateTextureFillMatrix.mjs';\nimport { triangulateWithHoles } from './triangulateWithHoles.mjs';\n\n\"use strict\";\nconst shapeBuilders = {};\nextensions.handleByMap(ExtensionType.ShapeBuilder, shapeBuilders);\nextensions.add(buildRectangle, buildPolygon, buildTriangle, buildCircle, buildEllipse, buildRoundedRectangle);\nconst tempRect = new Rectangle();\nconst tempTextureMatrix = new Matrix();\nfunction buildContextBatches(context, gpuContext) {\n const { geometryData, batches } = gpuContext;\n batches.length = 0;\n geometryData.indices.length = 0;\n geometryData.vertices.length = 0;\n geometryData.uvs.length = 0;\n for (let i = 0; i < context.instructions.length; i++) {\n const instruction = context.instructions[i];\n if (instruction.action === \"texture\") {\n addTextureToGeometryData(instruction.data, batches, geometryData);\n } else if (instruction.action === \"fill\" || instruction.action === \"stroke\") {\n const isStroke = instruction.action === \"stroke\";\n const shapePath = instruction.data.path.shapePath;\n const style = instruction.data.style;\n const hole = instruction.data.hole;\n if (isStroke && hole) {\n addShapePathToGeometryData(hole.shapePath, style, true, batches, geometryData);\n }\n if (hole) {\n shapePath.shapePrimitives[shapePath.shapePrimitives.length - 1].holes = hole.shapePath.shapePrimitives;\n }\n addShapePathToGeometryData(shapePath, style, isStroke, batches, geometryData);\n }\n }\n}\nfunction addTextureToGeometryData(data, batches, geometryData) {\n const { vertices, uvs, indices } = geometryData;\n const indexOffset = indices.length;\n const vertOffset = vertices.length / 2;\n const points = [];\n const build = shapeBuilders.rectangle;\n const rect = tempRect;\n const texture = data.image;\n rect.x = data.dx;\n rect.y = data.dy;\n rect.width = data.dw;\n rect.height = data.dh;\n const matrix = data.transform;\n build.build(rect, points);\n if (matrix) {\n transformVertices(points, matrix);\n }\n build.triangulate(points, vertices, 2, vertOffset, indices, indexOffset);\n const textureUvs = texture.uvs;\n uvs.push(\n textureUvs.x0,\n textureUvs.y0,\n textureUvs.x1,\n textureUvs.y1,\n textureUvs.x3,\n textureUvs.y3,\n textureUvs.x2,\n textureUvs.y2\n );\n const graphicsBatch = BigPool.get(BatchableGraphics);\n graphicsBatch.indexOffset = indexOffset;\n graphicsBatch.indexSize = indices.length - indexOffset;\n graphicsBatch.attributeOffset = vertOffset;\n graphicsBatch.attributeSize = vertices.length / 2 - vertOffset;\n graphicsBatch.baseColor = data.style;\n graphicsBatch.alpha = data.alpha;\n graphicsBatch.texture = texture;\n graphicsBatch.geometryData = geometryData;\n batches.push(graphicsBatch);\n}\nfunction addShapePathToGeometryData(shapePath, style, isStroke, batches, geometryData) {\n const { vertices, uvs, indices } = geometryData;\n shapePath.shapePrimitives.forEach(({ shape, transform: matrix, holes }) => {\n const indexOffset = indices.length;\n const vertOffset = vertices.length / 2;\n const points = [];\n const build = shapeBuilders[shape.type];\n let topology = \"triangle-list\";\n build.build(shape, points);\n if (matrix) {\n transformVertices(points, matrix);\n }\n if (!isStroke) {\n if (holes) {\n const holeIndices = [];\n const otherPoints = points.slice();\n const holeArrays = getHoleArrays(holes);\n holeArrays.forEach((holePoints) => {\n holeIndices.push(otherPoints.length / 2);\n otherPoints.push(...holePoints);\n });\n triangulateWithHoles(otherPoints, holeIndices, vertices, 2, vertOffset, indices, indexOffset);\n } else {\n build.triangulate(points, vertices, 2, vertOffset, indices, indexOffset);\n }\n } else {\n const close = shape.closePath ?? true;\n const lineStyle = style;\n if (!lineStyle.pixelLine) {\n buildLine(points, lineStyle, false, close, vertices, indices);\n } else {\n buildPixelLine(points, close, vertices, indices);\n topology = \"line-list\";\n }\n }\n const uvsOffset = uvs.length / 2;\n const texture = style.texture;\n if (texture !== Texture.WHITE) {\n const textureMatrix = generateTextureMatrix(tempTextureMatrix, style, shape, matrix);\n buildUvs(vertices, 2, vertOffset, uvs, uvsOffset, 2, vertices.length / 2 - vertOffset, textureMatrix);\n } else {\n buildSimpleUvs(uvs, uvsOffset, 2, vertices.length / 2 - vertOffset);\n }\n const graphicsBatch = BigPool.get(BatchableGraphics);\n graphicsBatch.indexOffset = indexOffset;\n graphicsBatch.indexSize = indices.length - indexOffset;\n graphicsBatch.attributeOffset = vertOffset;\n graphicsBatch.attributeSize = vertices.length / 2 - vertOffset;\n graphicsBatch.baseColor = style.color;\n graphicsBatch.alpha = style.alpha;\n graphicsBatch.texture = texture;\n graphicsBatch.geometryData = geometryData;\n graphicsBatch.topology = topology;\n batches.push(graphicsBatch);\n });\n}\nfunction getHoleArrays(holePrimitives) {\n const holeArrays = [];\n for (let k = 0; k < holePrimitives.length; k++) {\n const holePrimitive = holePrimitives[k].shape;\n const holePoints = [];\n const holeBuilder = shapeBuilders[holePrimitive.type];\n holeBuilder.build(holePrimitive, holePoints);\n holeArrays.push(holePoints);\n }\n return holeArrays;\n}\n\nexport { buildContextBatches, shapeBuilders };\n//# sourceMappingURL=buildContextBatches.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { getTextureBatchBindGroup } from '../../../rendering/batcher/gpu/getTextureBatchBindGroup.mjs';\nimport { DefaultBatcher } from '../../../rendering/batcher/shared/DefaultBatcher.mjs';\nimport { InstructionSet } from '../../../rendering/renderers/shared/instructions/InstructionSet.mjs';\nimport { deprecation, v8_3_4 } from '../../../utils/logging/deprecation.mjs';\nimport { BigPool } from '../../../utils/pool/PoolGroup.mjs';\nimport { buildContextBatches } from './utils/buildContextBatches.mjs';\n\n\"use strict\";\nclass GpuGraphicsContext {\n constructor() {\n this.batches = [];\n this.geometryData = {\n vertices: [],\n uvs: [],\n indices: []\n };\n }\n}\nclass GraphicsContextRenderData {\n constructor() {\n this.batcher = new DefaultBatcher();\n this.instructions = new InstructionSet();\n }\n init() {\n this.instructions.reset();\n }\n /**\n * @deprecated since version 8.0.0\n * Use `batcher.geometry` instead.\n * @see {Batcher#geometry}\n */\n get geometry() {\n deprecation(v8_3_4, \"GraphicsContextRenderData#geometry is deprecated, please use batcher.geometry instead.\");\n return this.batcher.geometry;\n }\n}\nconst _GraphicsContextSystem = class _GraphicsContextSystem {\n constructor(renderer) {\n // the root context batches, used to either make a batch or geometry\n // all graphics use this as a base\n this._gpuContextHash = {};\n // used for non-batchable graphics\n this._graphicsDataContextHash = /* @__PURE__ */ Object.create(null);\n renderer.renderableGC.addManagedHash(this, \"_gpuContextHash\");\n renderer.renderableGC.addManagedHash(this, \"_graphicsDataContextHash\");\n }\n /**\n * Runner init called, update the default options\n * @ignore\n */\n init(options) {\n _GraphicsContextSystem.defaultOptions.bezierSmoothness = options?.bezierSmoothness ?? _GraphicsContextSystem.defaultOptions.bezierSmoothness;\n }\n getContextRenderData(context) {\n return this._graphicsDataContextHash[context.uid] || this._initContextRenderData(context);\n }\n // Context management functions\n updateGpuContext(context) {\n let gpuContext = this._gpuContextHash[context.uid] || this._initContext(context);\n if (context.dirty) {\n if (gpuContext) {\n this._cleanGraphicsContextData(context);\n } else {\n gpuContext = this._initContext(context);\n }\n buildContextBatches(context, gpuContext);\n const batchMode = context.batchMode;\n if (context.customShader || batchMode === \"no-batch\") {\n gpuContext.isBatchable = false;\n } else if (batchMode === \"auto\") {\n gpuContext.isBatchable = gpuContext.geometryData.vertices.length < 400;\n }\n context.dirty = false;\n }\n return gpuContext;\n }\n getGpuContext(context) {\n return this._gpuContextHash[context.uid] || this._initContext(context);\n }\n _initContextRenderData(context) {\n const graphicsData = BigPool.get(GraphicsContextRenderData);\n const { batches, geometryData } = this._gpuContextHash[context.uid];\n const vertexSize = geometryData.vertices.length;\n const indexSize = geometryData.indices.length;\n for (let i = 0; i < batches.length; i++) {\n batches[i].applyTransform = false;\n }\n const batcher = graphicsData.batcher;\n batcher.ensureAttributeBuffer(vertexSize);\n batcher.ensureIndexBuffer(indexSize);\n batcher.begin();\n for (let i = 0; i < batches.length; i++) {\n const batch = batches[i];\n batcher.add(batch);\n }\n batcher.finish(graphicsData.instructions);\n const geometry = batcher.geometry;\n geometry.indexBuffer.setDataWithSize(batcher.indexBuffer, batcher.indexSize, true);\n geometry.buffers[0].setDataWithSize(batcher.attributeBuffer.float32View, batcher.attributeSize, true);\n const drawBatches = batcher.batches;\n for (let i = 0; i < drawBatches.length; i++) {\n const batch = drawBatches[i];\n batch.bindGroup = getTextureBatchBindGroup(batch.textures.textures, batch.textures.count);\n }\n this._graphicsDataContextHash[context.uid] = graphicsData;\n return graphicsData;\n }\n _initContext(context) {\n const gpuContext = new GpuGraphicsContext();\n gpuContext.context = context;\n this._gpuContextHash[context.uid] = gpuContext;\n context.on(\"destroy\", this.onGraphicsContextDestroy, this);\n return this._gpuContextHash[context.uid];\n }\n onGraphicsContextDestroy(context) {\n this._cleanGraphicsContextData(context);\n context.off(\"destroy\", this.onGraphicsContextDestroy, this);\n this._gpuContextHash[context.uid] = null;\n }\n _cleanGraphicsContextData(context) {\n const gpuContext = this._gpuContextHash[context.uid];\n if (!gpuContext.isBatchable) {\n if (this._graphicsDataContextHash[context.uid]) {\n BigPool.return(this.getContextRenderData(context));\n this._graphicsDataContextHash[context.uid] = null;\n }\n }\n if (gpuContext.batches) {\n gpuContext.batches.forEach((batch) => {\n BigPool.return(batch);\n });\n }\n }\n destroy() {\n for (const i in this._gpuContextHash) {\n if (this._gpuContextHash[i]) {\n this.onGraphicsContextDestroy(this._gpuContextHash[i].context);\n }\n }\n }\n};\n/** @ignore */\n_GraphicsContextSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"graphicsContext\"\n};\n/** The default options for the GraphicsContextSystem. */\n_GraphicsContextSystem.defaultOptions = {\n /**\n * A value from 0 to 1 that controls the smoothness of bezier curves (the higher the smoother)\n * @default 0.5\n */\n bezierSmoothness: 0.5\n};\nlet GraphicsContextSystem = _GraphicsContextSystem;\n\nexport { GpuGraphicsContext, GraphicsContextRenderData, GraphicsContextSystem };\n//# sourceMappingURL=GraphicsContextSystem.mjs.map\n","import { GraphicsContextSystem } from '../GraphicsContextSystem.mjs';\n\n\"use strict\";\nconst RECURSION_LIMIT = 8;\nconst FLT_EPSILON = 11920929e-14;\nconst PATH_DISTANCE_EPSILON = 1;\nconst curveAngleToleranceEpsilon = 0.01;\nconst mAngleTolerance = 0;\nconst mCuspLimit = 0;\nfunction buildAdaptiveBezier(points, sX, sY, cp1x, cp1y, cp2x, cp2y, eX, eY, smoothness) {\n const scale = 1;\n const smoothing = Math.min(\n 0.99,\n // a value of 1.0 actually inverts smoothing, so we cap it at 0.99\n Math.max(0, smoothness ?? GraphicsContextSystem.defaultOptions.bezierSmoothness)\n );\n let distanceTolerance = (PATH_DISTANCE_EPSILON - smoothing) / scale;\n distanceTolerance *= distanceTolerance;\n begin(sX, sY, cp1x, cp1y, cp2x, cp2y, eX, eY, points, distanceTolerance);\n return points;\n}\nfunction begin(sX, sY, cp1x, cp1y, cp2x, cp2y, eX, eY, points, distanceTolerance) {\n recursive(sX, sY, cp1x, cp1y, cp2x, cp2y, eX, eY, points, distanceTolerance, 0);\n points.push(eX, eY);\n}\nfunction recursive(x1, y1, x2, y2, x3, y3, x4, y4, points, distanceTolerance, level) {\n if (level > RECURSION_LIMIT) {\n return;\n }\n const pi = Math.PI;\n const x12 = (x1 + x2) / 2;\n const y12 = (y1 + y2) / 2;\n const x23 = (x2 + x3) / 2;\n const y23 = (y2 + y3) / 2;\n const x34 = (x3 + x4) / 2;\n const y34 = (y3 + y4) / 2;\n const x123 = (x12 + x23) / 2;\n const y123 = (y12 + y23) / 2;\n const x234 = (x23 + x34) / 2;\n const y234 = (y23 + y34) / 2;\n const x1234 = (x123 + x234) / 2;\n const y1234 = (y123 + y234) / 2;\n if (level > 0) {\n let dx = x4 - x1;\n let dy = y4 - y1;\n const d2 = Math.abs((x2 - x4) * dy - (y2 - y4) * dx);\n const d3 = Math.abs((x3 - x4) * dy - (y3 - y4) * dx);\n let da1;\n let da2;\n if (d2 > FLT_EPSILON && d3 > FLT_EPSILON) {\n if ((d2 + d3) * (d2 + d3) <= distanceTolerance * (dx * dx + dy * dy)) {\n if (mAngleTolerance < curveAngleToleranceEpsilon) {\n points.push(x1234, y1234);\n return;\n }\n const a23 = Math.atan2(y3 - y2, x3 - x2);\n da1 = Math.abs(a23 - Math.atan2(y2 - y1, x2 - x1));\n da2 = Math.abs(Math.atan2(y4 - y3, x4 - x3) - a23);\n if (da1 >= pi)\n da1 = 2 * pi - da1;\n if (da2 >= pi)\n da2 = 2 * pi - da2;\n if (da1 + da2 < mAngleTolerance) {\n points.push(x1234, y1234);\n return;\n }\n if (mCuspLimit !== 0) {\n if (da1 > mCuspLimit) {\n points.push(x2, y2);\n return;\n }\n if (da2 > mCuspLimit) {\n points.push(x3, y3);\n return;\n }\n }\n }\n } else if (d2 > FLT_EPSILON) {\n if (d2 * d2 <= distanceTolerance * (dx * dx + dy * dy)) {\n if (mAngleTolerance < curveAngleToleranceEpsilon) {\n points.push(x1234, y1234);\n return;\n }\n da1 = Math.abs(Math.atan2(y3 - y2, x3 - x2) - Math.atan2(y2 - y1, x2 - x1));\n if (da1 >= pi)\n da1 = 2 * pi - da1;\n if (da1 < mAngleTolerance) {\n points.push(x2, y2);\n points.push(x3, y3);\n return;\n }\n if (mCuspLimit !== 0) {\n if (da1 > mCuspLimit) {\n points.push(x2, y2);\n return;\n }\n }\n }\n } else if (d3 > FLT_EPSILON) {\n if (d3 * d3 <= distanceTolerance * (dx * dx + dy * dy)) {\n if (mAngleTolerance < curveAngleToleranceEpsilon) {\n points.push(x1234, y1234);\n return;\n }\n da1 = Math.abs(Math.atan2(y4 - y3, x4 - x3) - Math.atan2(y3 - y2, x3 - x2));\n if (da1 >= pi)\n da1 = 2 * pi - da1;\n if (da1 < mAngleTolerance) {\n points.push(x2, y2);\n points.push(x3, y3);\n return;\n }\n if (mCuspLimit !== 0) {\n if (da1 > mCuspLimit) {\n points.push(x3, y3);\n return;\n }\n }\n }\n } else {\n dx = x1234 - (x1 + x4) / 2;\n dy = y1234 - (y1 + y4) / 2;\n if (dx * dx + dy * dy <= distanceTolerance) {\n points.push(x1234, y1234);\n return;\n }\n }\n }\n recursive(x1, y1, x12, y12, x123, y123, x1234, y1234, points, distanceTolerance, level + 1);\n recursive(x1234, y1234, x234, y234, x34, y34, x4, y4, points, distanceTolerance, level + 1);\n}\n\nexport { buildAdaptiveBezier };\n//# sourceMappingURL=buildAdaptiveBezier.mjs.map\n","import { GraphicsContextSystem } from '../GraphicsContextSystem.mjs';\n\n\"use strict\";\nconst RECURSION_LIMIT = 8;\nconst FLT_EPSILON = 11920929e-14;\nconst PATH_DISTANCE_EPSILON = 1;\nconst curveAngleToleranceEpsilon = 0.01;\nconst mAngleTolerance = 0;\nfunction buildAdaptiveQuadratic(points, sX, sY, cp1x, cp1y, eX, eY, smoothness) {\n const scale = 1;\n const smoothing = Math.min(\n 0.99,\n // a value of 1.0 actually inverts smoothing, so we cap it at 0.99\n Math.max(0, smoothness ?? GraphicsContextSystem.defaultOptions.bezierSmoothness)\n );\n let distanceTolerance = (PATH_DISTANCE_EPSILON - smoothing) / scale;\n distanceTolerance *= distanceTolerance;\n begin(sX, sY, cp1x, cp1y, eX, eY, points, distanceTolerance);\n return points;\n}\nfunction begin(sX, sY, cp1x, cp1y, eX, eY, points, distanceTolerance) {\n recursive(points, sX, sY, cp1x, cp1y, eX, eY, distanceTolerance, 0);\n points.push(eX, eY);\n}\nfunction recursive(points, x1, y1, x2, y2, x3, y3, distanceTolerance, level) {\n if (level > RECURSION_LIMIT) {\n return;\n }\n const pi = Math.PI;\n const x12 = (x1 + x2) / 2;\n const y12 = (y1 + y2) / 2;\n const x23 = (x2 + x3) / 2;\n const y23 = (y2 + y3) / 2;\n const x123 = (x12 + x23) / 2;\n const y123 = (y12 + y23) / 2;\n let dx = x3 - x1;\n let dy = y3 - y1;\n const d = Math.abs((x2 - x3) * dy - (y2 - y3) * dx);\n if (d > FLT_EPSILON) {\n if (d * d <= distanceTolerance * (dx * dx + dy * dy)) {\n if (mAngleTolerance < curveAngleToleranceEpsilon) {\n points.push(x123, y123);\n return;\n }\n let da = Math.abs(Math.atan2(y3 - y2, x3 - x2) - Math.atan2(y2 - y1, x2 - x1));\n if (da >= pi)\n da = 2 * pi - da;\n if (da < mAngleTolerance) {\n points.push(x123, y123);\n return;\n }\n }\n } else {\n dx = x123 - (x1 + x3) / 2;\n dy = y123 - (y1 + y3) / 2;\n if (dx * dx + dy * dy <= distanceTolerance) {\n points.push(x123, y123);\n return;\n }\n }\n recursive(points, x1, y1, x12, y12, x123, y123, distanceTolerance, level + 1);\n recursive(points, x123, y123, x23, y23, x3, y3, distanceTolerance, level + 1);\n}\n\nexport { buildAdaptiveQuadratic };\n//# sourceMappingURL=buildAdaptiveQuadratic.mjs.map\n","\"use strict\";\nfunction buildArc(points, x, y, radius, start, end, clockwise, steps) {\n let dist = Math.abs(start - end);\n if (!clockwise && start > end) {\n dist = 2 * Math.PI - dist;\n } else if (clockwise && end > start) {\n dist = 2 * Math.PI - dist;\n }\n steps || (steps = Math.max(6, Math.floor(6 * Math.pow(radius, 1 / 3) * (dist / Math.PI))));\n steps = Math.max(steps, 3);\n let f = dist / steps;\n let t = start;\n f *= clockwise ? -1 : 1;\n for (let i = 0; i < steps + 1; i++) {\n const cs = Math.cos(t);\n const sn = Math.sin(t);\n const nx = x + cs * radius;\n const ny = y + sn * radius;\n points.push(nx, ny);\n t += f;\n }\n}\n\nexport { buildArc };\n//# sourceMappingURL=buildArc.mjs.map\n","import { buildArc } from './buildArc.mjs';\n\n\"use strict\";\nfunction buildArcTo(points, x1, y1, x2, y2, radius) {\n const fromX = points[points.length - 2];\n const fromY = points[points.length - 1];\n const a1 = fromY - y1;\n const b1 = fromX - x1;\n const a2 = y2 - y1;\n const b2 = x2 - x1;\n const mm = Math.abs(a1 * b2 - b1 * a2);\n if (mm < 1e-8 || radius === 0) {\n if (points[points.length - 2] !== x1 || points[points.length - 1] !== y1) {\n points.push(x1, y1);\n }\n return;\n }\n const dd = a1 * a1 + b1 * b1;\n const cc = a2 * a2 + b2 * b2;\n const tt = a1 * a2 + b1 * b2;\n const k1 = radius * Math.sqrt(dd) / mm;\n const k2 = radius * Math.sqrt(cc) / mm;\n const j1 = k1 * tt / dd;\n const j2 = k2 * tt / cc;\n const cx = k1 * b2 + k2 * b1;\n const cy = k1 * a2 + k2 * a1;\n const px = b1 * (k2 + j1);\n const py = a1 * (k2 + j1);\n const qx = b2 * (k1 + j2);\n const qy = a2 * (k1 + j2);\n const startAngle = Math.atan2(py - cy, px - cx);\n const endAngle = Math.atan2(qy - cy, qx - cx);\n buildArc(\n points,\n cx + x1,\n cy + y1,\n radius,\n startAngle,\n endAngle,\n b1 * a2 > b2 * a1\n );\n}\n\nexport { buildArcTo };\n//# sourceMappingURL=buildArcTo.mjs.map\n","import { buildAdaptiveBezier } from './buildAdaptiveBezier.mjs';\n\n\"use strict\";\nconst TAU = Math.PI * 2;\nconst out = {\n centerX: 0,\n centerY: 0,\n ang1: 0,\n ang2: 0\n};\nconst mapToEllipse = ({ x, y }, rx, ry, cosPhi, sinPhi, centerX, centerY, out2) => {\n x *= rx;\n y *= ry;\n const xp = cosPhi * x - sinPhi * y;\n const yp = sinPhi * x + cosPhi * y;\n out2.x = xp + centerX;\n out2.y = yp + centerY;\n return out2;\n};\nfunction approxUnitArc(ang1, ang2) {\n const a1 = ang2 === -1.5707963267948966 ? -0.551915024494 : 4 / 3 * Math.tan(ang2 / 4);\n const a = ang2 === 1.5707963267948966 ? 0.551915024494 : a1;\n const x1 = Math.cos(ang1);\n const y1 = Math.sin(ang1);\n const x2 = Math.cos(ang1 + ang2);\n const y2 = Math.sin(ang1 + ang2);\n return [\n {\n x: x1 - y1 * a,\n y: y1 + x1 * a\n },\n {\n x: x2 + y2 * a,\n y: y2 - x2 * a\n },\n {\n x: x2,\n y: y2\n }\n ];\n}\nconst vectorAngle = (ux, uy, vx, vy) => {\n const sign = ux * vy - uy * vx < 0 ? -1 : 1;\n let dot = ux * vx + uy * vy;\n if (dot > 1) {\n dot = 1;\n }\n if (dot < -1) {\n dot = -1;\n }\n return sign * Math.acos(dot);\n};\nconst getArcCenter = (px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinPhi, cosPhi, pxp, pyp, out2) => {\n const rxSq = Math.pow(rx, 2);\n const rySq = Math.pow(ry, 2);\n const pxpSq = Math.pow(pxp, 2);\n const pypSq = Math.pow(pyp, 2);\n let radicant = rxSq * rySq - rxSq * pypSq - rySq * pxpSq;\n if (radicant < 0) {\n radicant = 0;\n }\n radicant /= rxSq * pypSq + rySq * pxpSq;\n radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1);\n const centerXp = radicant * rx / ry * pyp;\n const centerYp = radicant * -ry / rx * pxp;\n const centerX = cosPhi * centerXp - sinPhi * centerYp + (px + cx) / 2;\n const centerY = sinPhi * centerXp + cosPhi * centerYp + (py + cy) / 2;\n const vx1 = (pxp - centerXp) / rx;\n const vy1 = (pyp - centerYp) / ry;\n const vx2 = (-pxp - centerXp) / rx;\n const vy2 = (-pyp - centerYp) / ry;\n const ang1 = vectorAngle(1, 0, vx1, vy1);\n let ang2 = vectorAngle(vx1, vy1, vx2, vy2);\n if (sweepFlag === 0 && ang2 > 0) {\n ang2 -= TAU;\n }\n if (sweepFlag === 1 && ang2 < 0) {\n ang2 += TAU;\n }\n out2.centerX = centerX;\n out2.centerY = centerY;\n out2.ang1 = ang1;\n out2.ang2 = ang2;\n};\nfunction buildArcToSvg(points, px, py, cx, cy, rx, ry, xAxisRotation = 0, largeArcFlag = 0, sweepFlag = 0) {\n if (rx === 0 || ry === 0) {\n return;\n }\n const sinPhi = Math.sin(xAxisRotation * TAU / 360);\n const cosPhi = Math.cos(xAxisRotation * TAU / 360);\n const pxp = cosPhi * (px - cx) / 2 + sinPhi * (py - cy) / 2;\n const pyp = -sinPhi * (px - cx) / 2 + cosPhi * (py - cy) / 2;\n if (pxp === 0 && pyp === 0) {\n return;\n }\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n const lambda = Math.pow(pxp, 2) / Math.pow(rx, 2) + Math.pow(pyp, 2) / Math.pow(ry, 2);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n getArcCenter(\n px,\n py,\n cx,\n cy,\n rx,\n ry,\n largeArcFlag,\n sweepFlag,\n sinPhi,\n cosPhi,\n pxp,\n pyp,\n out\n );\n let { ang1, ang2 } = out;\n const { centerX, centerY } = out;\n let ratio = Math.abs(ang2) / (TAU / 4);\n if (Math.abs(1 - ratio) < 1e-7) {\n ratio = 1;\n }\n const segments = Math.max(Math.ceil(ratio), 1);\n ang2 /= segments;\n let lastX = points[points.length - 2];\n let lastY = points[points.length - 1];\n const outCurvePoint = { x: 0, y: 0 };\n for (let i = 0; i < segments; i++) {\n const curve = approxUnitArc(ang1, ang2);\n const { x: x1, y: y1 } = mapToEllipse(curve[0], rx, ry, cosPhi, sinPhi, centerX, centerY, outCurvePoint);\n const { x: x2, y: y2 } = mapToEllipse(curve[1], rx, ry, cosPhi, sinPhi, centerX, centerY, outCurvePoint);\n const { x, y } = mapToEllipse(curve[2], rx, ry, cosPhi, sinPhi, centerX, centerY, outCurvePoint);\n buildAdaptiveBezier(\n points,\n lastX,\n lastY,\n x1,\n y1,\n x2,\n y2,\n x,\n y\n );\n lastX = x;\n lastY = y;\n ang1 += ang2;\n }\n}\n\nexport { buildArcToSvg };\n//# sourceMappingURL=buildArcToSvg.mjs.map\n","\"use strict\";\nfunction roundedShapeArc(g, points, radius) {\n const vecFrom = (p, pp) => {\n const x = pp.x - p.x;\n const y = pp.y - p.y;\n const len = Math.sqrt(x * x + y * y);\n const nx = x / len;\n const ny = y / len;\n return { len, nx, ny };\n };\n const sharpCorner = (i, p) => {\n if (i === 0) {\n g.moveTo(p.x, p.y);\n } else {\n g.lineTo(p.x, p.y);\n }\n };\n let p1 = points[points.length - 1];\n for (let i = 0; i < points.length; i++) {\n const p2 = points[i % points.length];\n const pRadius = p2.radius ?? radius;\n if (pRadius <= 0) {\n sharpCorner(i, p2);\n p1 = p2;\n continue;\n }\n const p3 = points[(i + 1) % points.length];\n const v1 = vecFrom(p2, p1);\n const v2 = vecFrom(p2, p3);\n if (v1.len < 1e-4 || v2.len < 1e-4) {\n sharpCorner(i, p2);\n p1 = p2;\n continue;\n }\n let angle = Math.asin(v1.nx * v2.ny - v1.ny * v2.nx);\n let radDirection = 1;\n let drawDirection = false;\n if (v1.nx * v2.nx - v1.ny * -v2.ny < 0) {\n if (angle < 0) {\n angle = Math.PI + angle;\n } else {\n angle = Math.PI - angle;\n radDirection = -1;\n drawDirection = true;\n }\n } else if (angle > 0) {\n radDirection = -1;\n drawDirection = true;\n }\n const halfAngle = angle / 2;\n let cRadius;\n let lenOut = Math.abs(\n Math.cos(halfAngle) * pRadius / Math.sin(halfAngle)\n );\n if (lenOut > Math.min(v1.len / 2, v2.len / 2)) {\n lenOut = Math.min(v1.len / 2, v2.len / 2);\n cRadius = Math.abs(lenOut * Math.sin(halfAngle) / Math.cos(halfAngle));\n } else {\n cRadius = pRadius;\n }\n const cX = p2.x + v2.nx * lenOut + -v2.ny * cRadius * radDirection;\n const cY = p2.y + v2.ny * lenOut + v2.nx * cRadius * radDirection;\n const startAngle = Math.atan2(v1.ny, v1.nx) + Math.PI / 2 * radDirection;\n const endAngle = Math.atan2(v2.ny, v2.nx) - Math.PI / 2 * radDirection;\n if (i === 0) {\n g.moveTo(\n cX + Math.cos(startAngle) * cRadius,\n cY + Math.sin(startAngle) * cRadius\n );\n }\n g.arc(cX, cY, cRadius, startAngle, endAngle, drawDirection);\n p1 = p2;\n }\n}\nfunction roundedShapeQuadraticCurve(g, points, radius, smoothness) {\n const distance = (p1, p2) => Math.sqrt((p1.x - p2.x) ** 2 + (p1.y - p2.y) ** 2);\n const pointLerp = (p1, p2, t) => ({\n x: p1.x + (p2.x - p1.x) * t,\n y: p1.y + (p2.y - p1.y) * t\n });\n const numPoints = points.length;\n for (let i = 0; i < numPoints; i++) {\n const thisPoint = points[(i + 1) % numPoints];\n const pRadius = thisPoint.radius ?? radius;\n if (pRadius <= 0) {\n if (i === 0) {\n g.moveTo(thisPoint.x, thisPoint.y);\n } else {\n g.lineTo(thisPoint.x, thisPoint.y);\n }\n continue;\n }\n const lastPoint = points[i];\n const nextPoint = points[(i + 2) % numPoints];\n const lastEdgeLength = distance(lastPoint, thisPoint);\n let start;\n if (lastEdgeLength < 1e-4) {\n start = thisPoint;\n } else {\n const lastOffsetDistance = Math.min(lastEdgeLength / 2, pRadius);\n start = pointLerp(\n thisPoint,\n lastPoint,\n lastOffsetDistance / lastEdgeLength\n );\n }\n const nextEdgeLength = distance(nextPoint, thisPoint);\n let end;\n if (nextEdgeLength < 1e-4) {\n end = thisPoint;\n } else {\n const nextOffsetDistance = Math.min(nextEdgeLength / 2, pRadius);\n end = pointLerp(\n thisPoint,\n nextPoint,\n nextOffsetDistance / nextEdgeLength\n );\n }\n if (i === 0) {\n g.moveTo(start.x, start.y);\n } else {\n g.lineTo(start.x, start.y);\n }\n g.quadraticCurveTo(thisPoint.x, thisPoint.y, end.x, end.y, smoothness);\n }\n}\n\nexport { roundedShapeArc, roundedShapeQuadraticCurve };\n//# sourceMappingURL=roundShape.mjs.map\n","import { Circle } from '../../../../maths/shapes/Circle.mjs';\nimport { Ellipse } from '../../../../maths/shapes/Ellipse.mjs';\nimport { Polygon } from '../../../../maths/shapes/Polygon.mjs';\nimport { Rectangle } from '../../../../maths/shapes/Rectangle.mjs';\nimport { RoundedRectangle } from '../../../../maths/shapes/RoundedRectangle.mjs';\nimport { Bounds } from '../../../container/bounds/Bounds.mjs';\nimport { buildAdaptiveBezier } from '../buildCommands/buildAdaptiveBezier.mjs';\nimport { buildAdaptiveQuadratic } from '../buildCommands/buildAdaptiveQuadratic.mjs';\nimport { buildArc } from '../buildCommands/buildArc.mjs';\nimport { buildArcTo } from '../buildCommands/buildArcTo.mjs';\nimport { buildArcToSvg } from '../buildCommands/buildArcToSvg.mjs';\nimport { roundedShapeQuadraticCurve, roundedShapeArc } from './roundShape.mjs';\n\n\"use strict\";\nconst tempRectangle = new Rectangle();\nclass ShapePath {\n constructor(graphicsPath2D) {\n /** The list of shape primitives that make up the path. */\n this.shapePrimitives = [];\n this._currentPoly = null;\n this._bounds = new Bounds();\n this._graphicsPath2D = graphicsPath2D;\n this.signed = graphicsPath2D.checkForHoles;\n }\n /**\n * Sets the starting point for a new sub-path. Any subsequent drawing commands are considered part of this path.\n * @param x - The x-coordinate for the starting point.\n * @param y - The y-coordinate for the starting point.\n * @returns The instance of the current object for chaining.\n */\n moveTo(x, y) {\n this.startPoly(x, y);\n return this;\n }\n /**\n * Connects the current point to a new point with a straight line. This method updates the current path.\n * @param x - The x-coordinate of the new point to connect to.\n * @param y - The y-coordinate of the new point to connect to.\n * @returns The instance of the current object for chaining.\n */\n lineTo(x, y) {\n this._ensurePoly();\n const points = this._currentPoly.points;\n const fromX = points[points.length - 2];\n const fromY = points[points.length - 1];\n if (fromX !== x || fromY !== y) {\n points.push(x, y);\n }\n return this;\n }\n /**\n * Adds an arc to the path. The arc is centered at (x, y)\n * position with radius `radius` starting at `startAngle` and ending at `endAngle`.\n * @param x - The x-coordinate of the arc's center.\n * @param y - The y-coordinate of the arc's center.\n * @param radius - The radius of the arc.\n * @param startAngle - The starting angle of the arc, in radians.\n * @param endAngle - The ending angle of the arc, in radians.\n * @param counterclockwise - Specifies whether the arc should be drawn in the anticlockwise direction. False by default.\n * @returns The instance of the current object for chaining.\n */\n arc(x, y, radius, startAngle, endAngle, counterclockwise) {\n this._ensurePoly(false);\n const points = this._currentPoly.points;\n buildArc(points, x, y, radius, startAngle, endAngle, counterclockwise);\n return this;\n }\n /**\n * Adds an arc to the path with the arc tangent to the line joining two specified points.\n * The arc radius is specified by `radius`.\n * @param x1 - The x-coordinate of the first point.\n * @param y1 - The y-coordinate of the first point.\n * @param x2 - The x-coordinate of the second point.\n * @param y2 - The y-coordinate of the second point.\n * @param radius - The radius of the arc.\n * @returns The instance of the current object for chaining.\n */\n arcTo(x1, y1, x2, y2, radius) {\n this._ensurePoly();\n const points = this._currentPoly.points;\n buildArcTo(points, x1, y1, x2, y2, radius);\n return this;\n }\n /**\n * Adds an SVG-style arc to the path, allowing for elliptical arcs based on the SVG spec.\n * @param rx - The x-radius of the ellipse.\n * @param ry - The y-radius of the ellipse.\n * @param xAxisRotation - The rotation of the ellipse's x-axis relative\n * to the x-axis of the coordinate system, in degrees.\n * @param largeArcFlag - Determines if the arc should be greater than or less than 180 degrees.\n * @param sweepFlag - Determines if the arc should be swept in a positive angle direction.\n * @param x - The x-coordinate of the arc's end point.\n * @param y - The y-coordinate of the arc's end point.\n * @returns The instance of the current object for chaining.\n */\n arcToSvg(rx, ry, xAxisRotation, largeArcFlag, sweepFlag, x, y) {\n const points = this._currentPoly.points;\n buildArcToSvg(\n points,\n this._currentPoly.lastX,\n this._currentPoly.lastY,\n x,\n y,\n rx,\n ry,\n xAxisRotation,\n largeArcFlag,\n sweepFlag\n );\n return this;\n }\n /**\n * Adds a cubic Bezier curve to the path.\n * It requires three points: the first two are control points and the third one is the end point.\n * The starting point is the last point in the current path.\n * @param cp1x - The x-coordinate of the first control point.\n * @param cp1y - The y-coordinate of the first control point.\n * @param cp2x - The x-coordinate of the second control point.\n * @param cp2y - The y-coordinate of the second control point.\n * @param x - The x-coordinate of the end point.\n * @param y - The y-coordinate of the end point.\n * @param smoothness - Optional parameter to adjust the smoothness of the curve.\n * @returns The instance of the current object for chaining.\n */\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y, smoothness) {\n this._ensurePoly();\n const currentPoly = this._currentPoly;\n buildAdaptiveBezier(\n this._currentPoly.points,\n currentPoly.lastX,\n currentPoly.lastY,\n cp1x,\n cp1y,\n cp2x,\n cp2y,\n x,\n y,\n smoothness\n );\n return this;\n }\n /**\n * Adds a quadratic curve to the path. It requires two points: the control point and the end point.\n * The starting point is the last point in the current path.\n * @param cp1x - The x-coordinate of the control point.\n * @param cp1y - The y-coordinate of the control point.\n * @param x - The x-coordinate of the end point.\n * @param y - The y-coordinate of the end point.\n * @param smoothing - Optional parameter to adjust the smoothness of the curve.\n * @returns The instance of the current object for chaining.\n */\n quadraticCurveTo(cp1x, cp1y, x, y, smoothing) {\n this._ensurePoly();\n const currentPoly = this._currentPoly;\n buildAdaptiveQuadratic(\n this._currentPoly.points,\n currentPoly.lastX,\n currentPoly.lastY,\n cp1x,\n cp1y,\n x,\n y,\n smoothing\n );\n return this;\n }\n /**\n * Closes the current path by drawing a straight line back to the start.\n * If the shape is already closed or there are no points in the path, this method does nothing.\n * @returns The instance of the current object for chaining.\n */\n closePath() {\n this.endPoly(true);\n return this;\n }\n /**\n * Adds another path to the current path. This method allows for the combination of multiple paths into one.\n * @param path - The `GraphicsPath` object representing the path to add.\n * @param transform - An optional `Matrix` object to apply a transformation to the path before adding it.\n * @returns The instance of the current object for chaining.\n */\n addPath(path, transform) {\n this.endPoly();\n if (transform && !transform.isIdentity()) {\n path = path.clone(true);\n path.transform(transform);\n }\n const shapePrimitives = this.shapePrimitives;\n const start = shapePrimitives.length;\n for (let i = 0; i < path.instructions.length; i++) {\n const instruction = path.instructions[i];\n this[instruction.action](...instruction.data);\n }\n if (path.checkForHoles && shapePrimitives.length - start > 1) {\n let mainShape = null;\n for (let i = start; i < shapePrimitives.length; i++) {\n const shapePrimitive = shapePrimitives[i];\n if (shapePrimitive.shape.type === \"polygon\") {\n const polygon = shapePrimitive.shape;\n const mainPolygon = mainShape?.shape;\n if (mainPolygon && mainPolygon.containsPolygon(polygon)) {\n mainShape.holes || (mainShape.holes = []);\n mainShape.holes.push(shapePrimitive);\n shapePrimitives.copyWithin(i, i + 1);\n shapePrimitives.length--;\n i--;\n } else {\n mainShape = shapePrimitive;\n }\n }\n }\n }\n return this;\n }\n /**\n * Finalizes the drawing of the current path. Optionally, it can close the path.\n * @param closePath - A boolean indicating whether to close the path after finishing. False by default.\n */\n finish(closePath = false) {\n this.endPoly(closePath);\n }\n /**\n * Draws a rectangle shape. This method adds a new rectangle path to the current drawing.\n * @param x - The x-coordinate of the top-left corner of the rectangle.\n * @param y - The y-coordinate of the top-left corner of the rectangle.\n * @param w - The width of the rectangle.\n * @param h - The height of the rectangle.\n * @param transform - An optional `Matrix` object to apply a transformation to the rectangle.\n * @returns The instance of the current object for chaining.\n */\n rect(x, y, w, h, transform) {\n this.drawShape(new Rectangle(x, y, w, h), transform);\n return this;\n }\n /**\n * Draws a circle shape. This method adds a new circle path to the current drawing.\n * @param x - The x-coordinate of the center of the circle.\n * @param y - The y-coordinate of the center of the circle.\n * @param radius - The radius of the circle.\n * @param transform - An optional `Matrix` object to apply a transformation to the circle.\n * @returns The instance of the current object for chaining.\n */\n circle(x, y, radius, transform) {\n this.drawShape(new Circle(x, y, radius), transform);\n return this;\n }\n /**\n * Draws a polygon shape. This method allows for the creation of complex polygons by specifying a sequence of points.\n * @param points - An array of numbers, or or an array of PointData objects eg [{x,y}, {x,y}, {x,y}]\n * representing the x and y coordinates of the polygon's vertices, in sequence.\n * @param close - A boolean indicating whether to close the polygon path. True by default.\n * @param transform - An optional `Matrix` object to apply a transformation to the polygon.\n * @returns The instance of the current object for chaining.\n */\n poly(points, close, transform) {\n const polygon = new Polygon(points);\n polygon.closePath = close;\n this.drawShape(polygon, transform);\n return this;\n }\n /**\n * Draws a regular polygon with a specified number of sides. All sides and angles are equal.\n * @param x - The x-coordinate of the center of the polygon.\n * @param y - The y-coordinate of the center of the polygon.\n * @param radius - The radius of the circumscribed circle of the polygon.\n * @param sides - The number of sides of the polygon. Must be 3 or more.\n * @param rotation - The rotation angle of the polygon, in radians. Zero by default.\n * @param transform - An optional `Matrix` object to apply a transformation to the polygon.\n * @returns The instance of the current object for chaining.\n */\n regularPoly(x, y, radius, sides, rotation = 0, transform) {\n sides = Math.max(sides | 0, 3);\n const startAngle = -1 * Math.PI / 2 + rotation;\n const delta = Math.PI * 2 / sides;\n const polygon = [];\n for (let i = 0; i < sides; i++) {\n const angle = startAngle - i * delta;\n polygon.push(\n x + radius * Math.cos(angle),\n y + radius * Math.sin(angle)\n );\n }\n this.poly(polygon, true, transform);\n return this;\n }\n /**\n * Draws a polygon with rounded corners.\n * Similar to `regularPoly` but with the ability to round the corners of the polygon.\n * @param x - The x-coordinate of the center of the polygon.\n * @param y - The y-coordinate of the center of the polygon.\n * @param radius - The radius of the circumscribed circle of the polygon.\n * @param sides - The number of sides of the polygon. Must be 3 or more.\n * @param corner - The radius of the rounding of the corners.\n * @param rotation - The rotation angle of the polygon, in radians. Zero by default.\n * @param smoothness - Optional parameter to adjust the smoothness of the rounding.\n * @returns The instance of the current object for chaining.\n */\n roundPoly(x, y, radius, sides, corner, rotation = 0, smoothness) {\n sides = Math.max(sides | 0, 3);\n if (corner <= 0) {\n return this.regularPoly(x, y, radius, sides, rotation);\n }\n const sideLength = radius * Math.sin(Math.PI / sides) - 1e-3;\n corner = Math.min(corner, sideLength);\n const startAngle = -1 * Math.PI / 2 + rotation;\n const delta = Math.PI * 2 / sides;\n const internalAngle = (sides - 2) * Math.PI / sides / 2;\n for (let i = 0; i < sides; i++) {\n const angle = i * delta + startAngle;\n const x0 = x + radius * Math.cos(angle);\n const y0 = y + radius * Math.sin(angle);\n const a1 = angle + Math.PI + internalAngle;\n const a2 = angle - Math.PI - internalAngle;\n const x1 = x0 + corner * Math.cos(a1);\n const y1 = y0 + corner * Math.sin(a1);\n const x3 = x0 + corner * Math.cos(a2);\n const y3 = y0 + corner * Math.sin(a2);\n if (i === 0) {\n this.moveTo(x1, y1);\n } else {\n this.lineTo(x1, y1);\n }\n this.quadraticCurveTo(x0, y0, x3, y3, smoothness);\n }\n return this.closePath();\n }\n /**\n * Draws a shape with rounded corners. This function supports custom radius for each corner of the shape.\n * Optionally, corners can be rounded using a quadratic curve instead of an arc, providing a different aesthetic.\n * @param points - An array of `RoundedPoint` representing the corners of the shape to draw.\n * A minimum of 3 points is required.\n * @param radius - The default radius for the corners.\n * This radius is applied to all corners unless overridden in `points`.\n * @param useQuadratic - If set to true, rounded corners are drawn using a quadraticCurve\n * method instead of an arc method. Defaults to false.\n * @param smoothness - Specifies the smoothness of the curve when `useQuadratic` is true.\n * Higher values make the curve smoother.\n * @returns The instance of the current object for chaining.\n */\n roundShape(points, radius, useQuadratic = false, smoothness) {\n if (points.length < 3) {\n return this;\n }\n if (useQuadratic) {\n roundedShapeQuadraticCurve(this, points, radius, smoothness);\n } else {\n roundedShapeArc(this, points, radius);\n }\n return this.closePath();\n }\n /**\n * Draw Rectangle with fillet corners. This is much like rounded rectangle\n * however it support negative numbers as well for the corner radius.\n * @param x - Upper left corner of rect\n * @param y - Upper right corner of rect\n * @param width - Width of rect\n * @param height - Height of rect\n * @param fillet - accept negative or positive values\n */\n filletRect(x, y, width, height, fillet) {\n if (fillet === 0) {\n return this.rect(x, y, width, height);\n }\n const maxFillet = Math.min(width, height) / 2;\n const inset = Math.min(maxFillet, Math.max(-maxFillet, fillet));\n const right = x + width;\n const bottom = y + height;\n const dir = inset < 0 ? -inset : 0;\n const size = Math.abs(inset);\n return this.moveTo(x, y + size).arcTo(x + dir, y + dir, x + size, y, size).lineTo(right - size, y).arcTo(right - dir, y + dir, right, y + size, size).lineTo(right, bottom - size).arcTo(right - dir, bottom - dir, x + width - size, bottom, size).lineTo(x + size, bottom).arcTo(x + dir, bottom - dir, x, bottom - size, size).closePath();\n }\n /**\n * Draw Rectangle with chamfer corners. These are angled corners.\n * @param x - Upper left corner of rect\n * @param y - Upper right corner of rect\n * @param width - Width of rect\n * @param height - Height of rect\n * @param chamfer - non-zero real number, size of corner cutout\n * @param transform\n */\n chamferRect(x, y, width, height, chamfer, transform) {\n if (chamfer <= 0) {\n return this.rect(x, y, width, height);\n }\n const inset = Math.min(chamfer, Math.min(width, height) / 2);\n const right = x + width;\n const bottom = y + height;\n const points = [\n x + inset,\n y,\n right - inset,\n y,\n right,\n y + inset,\n right,\n bottom - inset,\n right - inset,\n bottom,\n x + inset,\n bottom,\n x,\n bottom - inset,\n x,\n y + inset\n ];\n for (let i = points.length - 1; i >= 2; i -= 2) {\n if (points[i] === points[i - 2] && points[i - 1] === points[i - 3]) {\n points.splice(i - 1, 2);\n }\n }\n return this.poly(points, true, transform);\n }\n /**\n * Draws an ellipse at the specified location and with the given x and y radii.\n * An optional transformation can be applied, allowing for rotation, scaling, and translation.\n * @param x - The x-coordinate of the center of the ellipse.\n * @param y - The y-coordinate of the center of the ellipse.\n * @param radiusX - The horizontal radius of the ellipse.\n * @param radiusY - The vertical radius of the ellipse.\n * @param transform - An optional `Matrix` object to apply a transformation to the ellipse. This can include rotations.\n * @returns The instance of the current object for chaining.\n */\n ellipse(x, y, radiusX, radiusY, transform) {\n this.drawShape(new Ellipse(x, y, radiusX, radiusY), transform);\n return this;\n }\n /**\n * Draws a rectangle with rounded corners.\n * The corner radius can be specified to determine how rounded the corners should be.\n * An optional transformation can be applied, which allows for rotation, scaling, and translation of the rectangle.\n * @param x - The x-coordinate of the top-left corner of the rectangle.\n * @param y - The y-coordinate of the top-left corner of the rectangle.\n * @param w - The width of the rectangle.\n * @param h - The height of the rectangle.\n * @param radius - The radius of the rectangle's corners. If not specified, corners will be sharp.\n * @param transform - An optional `Matrix` object to apply a transformation to the rectangle.\n * @returns The instance of the current object for chaining.\n */\n roundRect(x, y, w, h, radius, transform) {\n this.drawShape(new RoundedRectangle(x, y, w, h, radius), transform);\n return this;\n }\n /**\n * Draws a given shape on the canvas.\n * This is a generic method that can draw any type of shape specified by the `ShapePrimitive` parameter.\n * An optional transformation matrix can be applied to the shape, allowing for complex transformations.\n * @param shape - The shape to draw, defined as a `ShapePrimitive` object.\n * @param matrix - An optional `Matrix` for transforming the shape. This can include rotations,\n * scaling, and translations.\n * @returns The instance of the current object for chaining.\n */\n drawShape(shape, matrix) {\n this.endPoly();\n this.shapePrimitives.push({ shape, transform: matrix });\n return this;\n }\n /**\n * Starts a new polygon path from the specified starting point.\n * This method initializes a new polygon or ends the current one if it exists.\n * @param x - The x-coordinate of the starting point of the new polygon.\n * @param y - The y-coordinate of the starting point of the new polygon.\n * @returns The instance of the current object for chaining.\n */\n startPoly(x, y) {\n let currentPoly = this._currentPoly;\n if (currentPoly) {\n this.endPoly();\n }\n currentPoly = new Polygon();\n currentPoly.points.push(x, y);\n this._currentPoly = currentPoly;\n return this;\n }\n /**\n * Ends the current polygon path. If `closePath` is set to true,\n * the path is closed by connecting the last point to the first one.\n * This method finalizes the current polygon and prepares it for drawing or adding to the shape primitives.\n * @param closePath - A boolean indicating whether to close the polygon by connecting the last point\n * back to the starting point. False by default.\n * @returns The instance of the current object for chaining.\n */\n endPoly(closePath = false) {\n const shape = this._currentPoly;\n if (shape && shape.points.length > 2) {\n shape.closePath = closePath;\n this.shapePrimitives.push({ shape });\n }\n this._currentPoly = null;\n return this;\n }\n _ensurePoly(start = true) {\n if (this._currentPoly)\n return;\n this._currentPoly = new Polygon();\n if (start) {\n const lastShape = this.shapePrimitives[this.shapePrimitives.length - 1];\n if (lastShape) {\n let lx = lastShape.shape.x;\n let ly = lastShape.shape.y;\n if (lastShape.transform && !lastShape.transform.isIdentity()) {\n const t = lastShape.transform;\n const tempX = lx;\n lx = t.a * lx + t.c * ly + t.tx;\n ly = t.b * tempX + t.d * ly + t.ty;\n }\n this._currentPoly.points.push(lx, ly);\n } else {\n this._currentPoly.points.push(0, 0);\n }\n }\n }\n /** Builds the path. */\n buildPath() {\n const path = this._graphicsPath2D;\n this.shapePrimitives.length = 0;\n this._currentPoly = null;\n for (let i = 0; i < path.instructions.length; i++) {\n const instruction = path.instructions[i];\n this[instruction.action](...instruction.data);\n }\n this.finish();\n }\n /** Gets the bounds of the path. */\n get bounds() {\n const bounds = this._bounds;\n bounds.clear();\n const shapePrimitives = this.shapePrimitives;\n for (let i = 0; i < shapePrimitives.length; i++) {\n const shapePrimitive = shapePrimitives[i];\n const boundsRect = shapePrimitive.shape.getBounds(tempRectangle);\n if (shapePrimitive.transform) {\n bounds.addRect(boundsRect, shapePrimitive.transform);\n } else {\n bounds.addRect(boundsRect);\n }\n }\n return bounds;\n }\n}\n\nexport { ShapePath };\n//# sourceMappingURL=ShapePath.mjs.map\n","import { Point } from '../../../../maths/point/Point.mjs';\nimport { uid } from '../../../../utils/data/uid.mjs';\nimport { warn } from '../../../../utils/logging/warn.mjs';\nimport { parseSVGPath } from '../svg/parseSVGPath.mjs';\nimport { ShapePath } from './ShapePath.mjs';\n\n\"use strict\";\nclass GraphicsPath {\n /**\n * Creates a `GraphicsPath` instance optionally from an SVG path string or an array of `PathInstruction`.\n * @param instructions - An SVG path string or an array of `PathInstruction` objects.\n * @param signed\n */\n constructor(instructions, signed = false) {\n this.instructions = [];\n /** unique id for this graphics path */\n this.uid = uid(\"graphicsPath\");\n this._dirty = true;\n this.checkForHoles = signed;\n if (typeof instructions === \"string\") {\n parseSVGPath(instructions, this);\n } else {\n this.instructions = instructions?.slice() ?? [];\n }\n }\n /**\n * Provides access to the internal shape path, ensuring it is up-to-date with the current instructions.\n * @returns The `ShapePath` instance associated with this `GraphicsPath`.\n */\n get shapePath() {\n if (!this._shapePath) {\n this._shapePath = new ShapePath(this);\n }\n if (this._dirty) {\n this._dirty = false;\n this._shapePath.buildPath();\n }\n return this._shapePath;\n }\n /**\n * Adds another `GraphicsPath` to this path, optionally applying a transformation.\n * @param path - The `GraphicsPath` to add.\n * @param transform - An optional transformation to apply to the added path.\n * @returns The instance of the current object for chaining.\n */\n addPath(path, transform) {\n path = path.clone();\n this.instructions.push({ action: \"addPath\", data: [path, transform] });\n this._dirty = true;\n return this;\n }\n arc(...args) {\n this.instructions.push({ action: \"arc\", data: args });\n this._dirty = true;\n return this;\n }\n arcTo(...args) {\n this.instructions.push({ action: \"arcTo\", data: args });\n this._dirty = true;\n return this;\n }\n arcToSvg(...args) {\n this.instructions.push({ action: \"arcToSvg\", data: args });\n this._dirty = true;\n return this;\n }\n bezierCurveTo(...args) {\n this.instructions.push({ action: \"bezierCurveTo\", data: args });\n this._dirty = true;\n return this;\n }\n /**\n * Adds a cubic Bezier curve to the path.\n * It requires two points: the second control point and the end point. The first control point is assumed to be\n * The starting point is the last point in the current path.\n * @param cp2x - The x-coordinate of the second control point.\n * @param cp2y - The y-coordinate of the second control point.\n * @param x - The x-coordinate of the end point.\n * @param y - The y-coordinate of the end point.\n * @param smoothness - Optional parameter to adjust the smoothness of the curve.\n * @returns The instance of the current object for chaining.\n */\n bezierCurveToShort(cp2x, cp2y, x, y, smoothness) {\n const last = this.instructions[this.instructions.length - 1];\n const lastPoint = this.getLastPoint(Point.shared);\n let cp1x = 0;\n let cp1y = 0;\n if (!last || last.action !== \"bezierCurveTo\") {\n cp1x = lastPoint.x;\n cp1y = lastPoint.y;\n } else {\n cp1x = last.data[2];\n cp1y = last.data[3];\n const currentX = lastPoint.x;\n const currentY = lastPoint.y;\n cp1x = currentX + (currentX - cp1x);\n cp1y = currentY + (currentY - cp1y);\n }\n this.instructions.push({ action: \"bezierCurveTo\", data: [cp1x, cp1y, cp2x, cp2y, x, y, smoothness] });\n this._dirty = true;\n return this;\n }\n /**\n * Closes the current path by drawing a straight line back to the start.\n * If the shape is already closed or there are no points in the path, this method does nothing.\n * @returns The instance of the current object for chaining.\n */\n closePath() {\n this.instructions.push({ action: \"closePath\", data: [] });\n this._dirty = true;\n return this;\n }\n ellipse(...args) {\n this.instructions.push({ action: \"ellipse\", data: args });\n this._dirty = true;\n return this;\n }\n lineTo(...args) {\n this.instructions.push({ action: \"lineTo\", data: args });\n this._dirty = true;\n return this;\n }\n moveTo(...args) {\n this.instructions.push({ action: \"moveTo\", data: args });\n return this;\n }\n quadraticCurveTo(...args) {\n this.instructions.push({ action: \"quadraticCurveTo\", data: args });\n this._dirty = true;\n return this;\n }\n /**\n * Adds a quadratic curve to the path. It uses the previous point as the control point.\n * @param x - The x-coordinate of the end point.\n * @param y - The y-coordinate of the end point.\n * @param smoothness - Optional parameter to adjust the smoothness of the curve.\n * @returns The instance of the current object for chaining.\n */\n quadraticCurveToShort(x, y, smoothness) {\n const last = this.instructions[this.instructions.length - 1];\n const lastPoint = this.getLastPoint(Point.shared);\n let cpx1 = 0;\n let cpy1 = 0;\n if (!last || last.action !== \"quadraticCurveTo\") {\n cpx1 = lastPoint.x;\n cpy1 = lastPoint.y;\n } else {\n cpx1 = last.data[0];\n cpy1 = last.data[1];\n const currentX = lastPoint.x;\n const currentY = lastPoint.y;\n cpx1 = currentX + (currentX - cpx1);\n cpy1 = currentY + (currentY - cpy1);\n }\n this.instructions.push({ action: \"quadraticCurveTo\", data: [cpx1, cpy1, x, y, smoothness] });\n this._dirty = true;\n return this;\n }\n /**\n * Draws a rectangle shape. This method adds a new rectangle path to the current drawing.\n * @param x - The x-coordinate of the top-left corner of the rectangle.\n * @param y - The y-coordinate of the top-left corner of the rectangle.\n * @param w - The width of the rectangle.\n * @param h - The height of the rectangle.\n * @param transform - An optional `Matrix` object to apply a transformation to the rectangle.\n * @returns The instance of the current object for chaining.\n */\n rect(x, y, w, h, transform) {\n this.instructions.push({ action: \"rect\", data: [x, y, w, h, transform] });\n this._dirty = true;\n return this;\n }\n /**\n * Draws a circle shape. This method adds a new circle path to the current drawing.\n * @param x - The x-coordinate of the center of the circle.\n * @param y - The y-coordinate of the center of the circle.\n * @param radius - The radius of the circle.\n * @param transform - An optional `Matrix` object to apply a transformation to the circle.\n * @returns The instance of the current object for chaining.\n */\n circle(x, y, radius, transform) {\n this.instructions.push({ action: \"circle\", data: [x, y, radius, transform] });\n this._dirty = true;\n return this;\n }\n roundRect(...args) {\n this.instructions.push({ action: \"roundRect\", data: args });\n this._dirty = true;\n return this;\n }\n poly(...args) {\n this.instructions.push({ action: \"poly\", data: args });\n this._dirty = true;\n return this;\n }\n regularPoly(...args) {\n this.instructions.push({ action: \"regularPoly\", data: args });\n this._dirty = true;\n return this;\n }\n roundPoly(...args) {\n this.instructions.push({ action: \"roundPoly\", data: args });\n this._dirty = true;\n return this;\n }\n roundShape(...args) {\n this.instructions.push({ action: \"roundShape\", data: args });\n this._dirty = true;\n return this;\n }\n filletRect(...args) {\n this.instructions.push({ action: \"filletRect\", data: args });\n this._dirty = true;\n return this;\n }\n chamferRect(...args) {\n this.instructions.push({ action: \"chamferRect\", data: args });\n this._dirty = true;\n return this;\n }\n /**\n * Draws a star shape centered at a specified location. This method allows for the creation\n * of stars with a variable number of points, outer radius, optional inner radius, and rotation.\n * The star is drawn as a closed polygon with alternating outer and inner vertices to create the star's points.\n * An optional transformation can be applied to scale, rotate, or translate the star as needed.\n * @param x - The x-coordinate of the center of the star.\n * @param y - The y-coordinate of the center of the star.\n * @param points - The number of points of the star.\n * @param radius - The outer radius of the star (distance from the center to the outer points).\n * @param innerRadius - Optional. The inner radius of the star\n * (distance from the center to the inner points between the outer points).\n * If not provided, defaults to half of the `radius`.\n * @param rotation - Optional. The rotation of the star in radians, where 0 is aligned with the y-axis.\n * Defaults to 0, meaning one point is directly upward.\n * @param transform - An optional `Matrix` object to apply a transformation to the star.\n * This can include rotations, scaling, and translations.\n * @returns The instance of the current object for chaining further drawing commands.\n */\n // eslint-disable-next-line max-len\n star(x, y, points, radius, innerRadius, rotation, transform) {\n innerRadius || (innerRadius = radius / 2);\n const startAngle = -1 * Math.PI / 2 + rotation;\n const len = points * 2;\n const delta = Math.PI * 2 / len;\n const polygon = [];\n for (let i = 0; i < len; i++) {\n const r = i % 2 ? innerRadius : radius;\n const angle = i * delta + startAngle;\n polygon.push(\n x + r * Math.cos(angle),\n y + r * Math.sin(angle)\n );\n }\n this.poly(polygon, true, transform);\n return this;\n }\n /**\n * Creates a copy of the current `GraphicsPath` instance. This method supports both shallow and deep cloning.\n * A shallow clone copies the reference of the instructions array, while a deep clone creates a new array and\n * copies each instruction individually, ensuring that modifications to the instructions of the cloned `GraphicsPath`\n * do not affect the original `GraphicsPath` and vice versa.\n * @param deep - A boolean flag indicating whether the clone should be deep.\n * @returns A new `GraphicsPath` instance that is a clone of the current instance.\n */\n clone(deep = false) {\n const newGraphicsPath2D = new GraphicsPath();\n newGraphicsPath2D.checkForHoles = this.checkForHoles;\n if (!deep) {\n newGraphicsPath2D.instructions = this.instructions.slice();\n } else {\n for (let i = 0; i < this.instructions.length; i++) {\n const instruction = this.instructions[i];\n newGraphicsPath2D.instructions.push({ action: instruction.action, data: instruction.data.slice() });\n }\n }\n return newGraphicsPath2D;\n }\n clear() {\n this.instructions.length = 0;\n this._dirty = true;\n return this;\n }\n /**\n * Applies a transformation matrix to all drawing instructions within the `GraphicsPath`.\n * This method enables the modification of the path's geometry according to the provided\n * transformation matrix, which can include translations, rotations, scaling, and skewing.\n *\n * Each drawing instruction in the path is updated to reflect the transformation,\n * ensuring the visual representation of the path is consistent with the applied matrix.\n *\n * Note: The transformation is applied directly to the coordinates and control points of the drawing instructions,\n * not to the path as a whole. This means the transformation's effects are baked into the individual instructions,\n * allowing for fine-grained control over the path's appearance.\n * @param matrix - A `Matrix` object representing the transformation to apply.\n * @returns The instance of the current object for chaining further operations.\n */\n transform(matrix) {\n if (matrix.isIdentity())\n return this;\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 let x = 0;\n let y = 0;\n let cpx1 = 0;\n let cpy1 = 0;\n let cpx2 = 0;\n let cpy2 = 0;\n let rx = 0;\n let ry = 0;\n for (let i = 0; i < this.instructions.length; i++) {\n const instruction = this.instructions[i];\n const data = instruction.data;\n switch (instruction.action) {\n case \"moveTo\":\n case \"lineTo\":\n x = data[0];\n y = data[1];\n data[0] = a * x + c * y + tx;\n data[1] = b * x + d * y + ty;\n break;\n case \"bezierCurveTo\":\n cpx1 = data[0];\n cpy1 = data[1];\n cpx2 = data[2];\n cpy2 = data[3];\n x = data[4];\n y = data[5];\n data[0] = a * cpx1 + c * cpy1 + tx;\n data[1] = b * cpx1 + d * cpy1 + ty;\n data[2] = a * cpx2 + c * cpy2 + tx;\n data[3] = b * cpx2 + d * cpy2 + ty;\n data[4] = a * x + c * y + tx;\n data[5] = b * x + d * y + ty;\n break;\n case \"quadraticCurveTo\":\n cpx1 = data[0];\n cpy1 = data[1];\n x = data[2];\n y = data[3];\n data[0] = a * cpx1 + c * cpy1 + tx;\n data[1] = b * cpx1 + d * cpy1 + ty;\n data[2] = a * x + c * y + tx;\n data[3] = b * x + d * y + ty;\n break;\n case \"arcToSvg\":\n x = data[5];\n y = data[6];\n rx = data[0];\n ry = data[1];\n data[0] = a * rx + c * ry;\n data[1] = b * rx + d * ry;\n data[5] = a * x + c * y + tx;\n data[6] = b * x + d * y + ty;\n break;\n case \"circle\":\n data[4] = adjustTransform(data[3], matrix);\n break;\n case \"rect\":\n data[4] = adjustTransform(data[4], matrix);\n break;\n case \"ellipse\":\n data[8] = adjustTransform(data[8], matrix);\n break;\n case \"roundRect\":\n data[5] = adjustTransform(data[5], matrix);\n break;\n case \"addPath\":\n data[0].transform(matrix);\n break;\n case \"poly\":\n data[2] = adjustTransform(data[2], matrix);\n break;\n default:\n warn(\"unknown transform action\", instruction.action);\n break;\n }\n }\n this._dirty = true;\n return this;\n }\n get bounds() {\n return this.shapePath.bounds;\n }\n /**\n * Retrieves the last point from the current drawing instructions in the `GraphicsPath`.\n * This method is useful for operations that depend on the path's current endpoint,\n * such as connecting subsequent shapes or paths. It supports various drawing instructions,\n * ensuring the last point's position is accurately determined regardless of the path's complexity.\n *\n * If the last instruction is a `closePath`, the method iterates backward through the instructions\n * until it finds an actionable instruction that defines a point (e.g., `moveTo`, `lineTo`,\n * `quadraticCurveTo`, etc.). For compound paths added via `addPath`, it recursively retrieves\n * the last point from the nested path.\n * @param out - A `Point` object where the last point's coordinates will be stored.\n * This object is modified directly to contain the result.\n * @returns The `Point` object containing the last point's coordinates.\n */\n getLastPoint(out) {\n let index = this.instructions.length - 1;\n let lastInstruction = this.instructions[index];\n if (!lastInstruction) {\n out.x = 0;\n out.y = 0;\n return out;\n }\n while (lastInstruction.action === \"closePath\") {\n index--;\n if (index < 0) {\n out.x = 0;\n out.y = 0;\n return out;\n }\n lastInstruction = this.instructions[index];\n }\n switch (lastInstruction.action) {\n case \"moveTo\":\n case \"lineTo\":\n out.x = lastInstruction.data[0];\n out.y = lastInstruction.data[1];\n break;\n case \"quadraticCurveTo\":\n out.x = lastInstruction.data[2];\n out.y = lastInstruction.data[3];\n break;\n case \"bezierCurveTo\":\n out.x = lastInstruction.data[4];\n out.y = lastInstruction.data[5];\n break;\n case \"arc\":\n case \"arcToSvg\":\n out.x = lastInstruction.data[5];\n out.y = lastInstruction.data[6];\n break;\n case \"addPath\":\n lastInstruction.data[0].getLastPoint(out);\n break;\n }\n return out;\n }\n}\nfunction adjustTransform(currentMatrix, transform) {\n if (currentMatrix) {\n return currentMatrix.prepend(transform);\n }\n return transform.clone();\n}\n\nexport { GraphicsPath };\n//# sourceMappingURL=GraphicsPath.mjs.map\n","\"use strict\";\nfunction parseSVGFloatAttribute(svg, id, defaultValue) {\n const value = svg.getAttribute(id);\n return value ? Number(value) : defaultValue;\n}\n\nexport { parseSVGFloatAttribute };\n//# sourceMappingURL=parseSVGFloatAttribute.mjs.map\n","import { Color } from '../../../../color/Color.mjs';\nimport { warn } from '../../../../utils/logging/warn.mjs';\nimport { FillGradient } from '../fill/FillGradient.mjs';\nimport { parseSVGFloatAttribute } from './parseSVGFloatAttribute.mjs';\n\n\"use strict\";\nfunction parseSVGDefinitions(svg, session) {\n const definitions = svg.querySelectorAll(\"defs\");\n for (let i = 0; i < definitions.length; i++) {\n const definition = definitions[i];\n for (let j = 0; j < definition.children.length; j++) {\n const child = definition.children[j];\n switch (child.nodeName.toLowerCase()) {\n case \"lineargradient\":\n session.defs[child.id] = parseLinearGradient(child);\n break;\n case \"radialgradient\":\n session.defs[child.id] = parseRadialGradient(child);\n break;\n default:\n break;\n }\n }\n }\n}\nfunction parseLinearGradient(child) {\n const x0 = parseSVGFloatAttribute(child, \"x1\", 0);\n const y0 = parseSVGFloatAttribute(child, \"y1\", 0);\n const x1 = parseSVGFloatAttribute(child, \"x2\", 1);\n const y1 = parseSVGFloatAttribute(child, \"y2\", 0);\n const gradientUnit = child.getAttribute(\"gradientUnits\") || \"objectBoundingBox\";\n const gradient = new FillGradient(\n x0,\n y0,\n x1,\n y1,\n gradientUnit === \"objectBoundingBox\" ? \"local\" : \"global\"\n );\n for (let k = 0; k < child.children.length; k++) {\n const stop = child.children[k];\n const offset = parseSVGFloatAttribute(stop, \"offset\", 0);\n const color = Color.shared.setValue(stop.getAttribute(\"stop-color\")).toNumber();\n gradient.addColorStop(offset, color);\n }\n return gradient;\n}\nfunction parseRadialGradient(_child) {\n warn(\"[SVG Parser] Radial gradients are not yet supported\");\n return new FillGradient(0, 0, 1, 0);\n}\n\nexport { parseSVGDefinitions };\n//# sourceMappingURL=parseSVGDefinitions.mjs.map\n","\"use strict\";\nfunction extractSvgUrlId(url) {\n const match = url.match(/url\\s*\\(\\s*['\"]?\\s*#([^'\"\\s)]+)\\s*['\"]?\\s*\\)/i);\n return match ? match[1] : \"\";\n}\n\nexport { extractSvgUrlId };\n//# sourceMappingURL=extractSvgUrlId.mjs.map\n","import { Color } from '../../../../color/Color.mjs';\nimport { extractSvgUrlId } from './utils/extractSvgUrlId.mjs';\n\n\"use strict\";\nconst styleAttributes = {\n // Fill properties\n fill: { type: \"paint\", default: 0 },\n // Fill color/gradient\n \"fill-opacity\": { type: \"number\", default: 1 },\n // Fill transparency\n // Stroke properties\n stroke: { type: \"paint\", default: 0 },\n // Stroke color/gradient\n \"stroke-width\": { type: \"number\", default: 1 },\n // Width of stroke\n \"stroke-opacity\": { type: \"number\", default: 1 },\n // Stroke transparency\n \"stroke-linecap\": { type: \"string\", default: \"butt\" },\n // End cap style: butt, round, square\n \"stroke-linejoin\": { type: \"string\", default: \"miter\" },\n // Join style: miter, round, bevel\n \"stroke-miterlimit\": { type: \"number\", default: 10 },\n // Limit on miter join sharpness\n \"stroke-dasharray\": { type: \"string\", default: \"none\" },\n // Dash pattern\n \"stroke-dashoffset\": { type: \"number\", default: 0 },\n // Offset for dash pattern\n // Global properties\n opacity: { type: \"number\", default: 1 }\n // Overall opacity\n};\nfunction parseSVGStyle(svg, session) {\n const style = svg.getAttribute(\"style\");\n const strokeStyle = {};\n const fillStyle = {};\n const result = {\n strokeStyle,\n fillStyle,\n useFill: false,\n useStroke: false\n };\n for (const key in styleAttributes) {\n const attribute = svg.getAttribute(key);\n if (attribute) {\n parseAttribute(session, result, key, attribute.trim());\n }\n }\n if (style) {\n const styleParts = style.split(\";\");\n for (let i = 0; i < styleParts.length; i++) {\n const stylePart = styleParts[i].trim();\n const [key, value] = stylePart.split(\":\");\n if (styleAttributes[key]) {\n parseAttribute(session, result, key, value.trim());\n }\n }\n }\n return {\n strokeStyle: result.useStroke ? strokeStyle : null,\n fillStyle: result.useFill ? fillStyle : null,\n useFill: result.useFill,\n useStroke: result.useStroke\n };\n}\nfunction parseAttribute(session, result, id, value) {\n switch (id) {\n case \"stroke\":\n if (value !== \"none\") {\n if (value.startsWith(\"url(\")) {\n const id2 = extractSvgUrlId(value);\n result.strokeStyle.fill = session.defs[id2];\n } else {\n result.strokeStyle.color = Color.shared.setValue(value).toNumber();\n }\n result.useStroke = true;\n }\n break;\n case \"stroke-width\":\n result.strokeStyle.width = Number(value);\n break;\n case \"fill\":\n if (value !== \"none\") {\n if (value.startsWith(\"url(\")) {\n const id2 = extractSvgUrlId(value);\n result.fillStyle.fill = session.defs[id2];\n } else {\n result.fillStyle.color = Color.shared.setValue(value).toNumber();\n }\n result.useFill = true;\n }\n break;\n case \"fill-opacity\":\n result.fillStyle.alpha = Number(value);\n break;\n case \"stroke-opacity\":\n result.strokeStyle.alpha = Number(value);\n break;\n case \"opacity\":\n result.fillStyle.alpha = Number(value);\n result.strokeStyle.alpha = Number(value);\n break;\n }\n}\n\nexport { parseAttribute, parseSVGStyle, styleAttributes };\n//# sourceMappingURL=parseSVGStyle.mjs.map\n","import { warn } from '../../../../utils/logging/warn.mjs';\nimport { GraphicsPath } from '../path/GraphicsPath.mjs';\nimport { parseSVGDefinitions } from './parseSVGDefinitions.mjs';\nimport { parseSVGFloatAttribute } from './parseSVGFloatAttribute.mjs';\nimport { parseSVGStyle } from './parseSVGStyle.mjs';\n\n\"use strict\";\nfunction SVGParser(svg, graphicsContext) {\n if (typeof svg === \"string\") {\n const div = document.createElement(\"div\");\n div.innerHTML = svg.trim();\n svg = div.querySelector(\"svg\");\n }\n const session = {\n context: graphicsContext,\n defs: {},\n path: new GraphicsPath()\n };\n parseSVGDefinitions(svg, session);\n const children = svg.children;\n const { fillStyle, strokeStyle } = parseSVGStyle(svg, session);\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child.nodeName.toLowerCase() === \"defs\")\n continue;\n renderChildren(child, session, fillStyle, strokeStyle);\n }\n return graphicsContext;\n}\nfunction renderChildren(svg, session, fillStyle, strokeStyle) {\n const children = svg.children;\n const { fillStyle: f1, strokeStyle: s1 } = parseSVGStyle(svg, session);\n if (f1 && fillStyle) {\n fillStyle = { ...fillStyle, ...f1 };\n } else if (f1) {\n fillStyle = f1;\n }\n if (s1 && strokeStyle) {\n strokeStyle = { ...strokeStyle, ...s1 };\n } else if (s1) {\n strokeStyle = s1;\n }\n const noStyle = !fillStyle && !strokeStyle;\n if (noStyle) {\n fillStyle = { color: 0 };\n }\n let x;\n let y;\n let x1;\n let y1;\n let x2;\n let y2;\n let cx;\n let cy;\n let r;\n let rx;\n let ry;\n let points;\n let pointsString;\n let d;\n let graphicsPath;\n let width;\n let height;\n switch (svg.nodeName.toLowerCase()) {\n case \"path\":\n d = svg.getAttribute(\"d\");\n if (svg.getAttribute(\"fill-rule\") === \"evenodd\") {\n warn(\"SVG Evenodd fill rule not supported, your svg may render incorrectly\");\n }\n graphicsPath = new GraphicsPath(d, true);\n session.context.path(graphicsPath);\n if (fillStyle)\n session.context.fill(fillStyle);\n if (strokeStyle)\n session.context.stroke(strokeStyle);\n break;\n case \"circle\":\n cx = parseSVGFloatAttribute(svg, \"cx\", 0);\n cy = parseSVGFloatAttribute(svg, \"cy\", 0);\n r = parseSVGFloatAttribute(svg, \"r\", 0);\n session.context.ellipse(cx, cy, r, r);\n if (fillStyle)\n session.context.fill(fillStyle);\n if (strokeStyle)\n session.context.stroke(strokeStyle);\n break;\n case \"rect\":\n x = parseSVGFloatAttribute(svg, \"x\", 0);\n y = parseSVGFloatAttribute(svg, \"y\", 0);\n width = parseSVGFloatAttribute(svg, \"width\", 0);\n height = parseSVGFloatAttribute(svg, \"height\", 0);\n rx = parseSVGFloatAttribute(svg, \"rx\", 0);\n ry = parseSVGFloatAttribute(svg, \"ry\", 0);\n if (rx || ry) {\n session.context.roundRect(x, y, width, height, rx || ry);\n } else {\n session.context.rect(x, y, width, height);\n }\n if (fillStyle)\n session.context.fill(fillStyle);\n if (strokeStyle)\n session.context.stroke(strokeStyle);\n break;\n case \"ellipse\":\n cx = parseSVGFloatAttribute(svg, \"cx\", 0);\n cy = parseSVGFloatAttribute(svg, \"cy\", 0);\n rx = parseSVGFloatAttribute(svg, \"rx\", 0);\n ry = parseSVGFloatAttribute(svg, \"ry\", 0);\n session.context.beginPath();\n session.context.ellipse(cx, cy, rx, ry);\n if (fillStyle)\n session.context.fill(fillStyle);\n if (strokeStyle)\n session.context.stroke(strokeStyle);\n break;\n case \"line\":\n x1 = parseSVGFloatAttribute(svg, \"x1\", 0);\n y1 = parseSVGFloatAttribute(svg, \"y1\", 0);\n x2 = parseSVGFloatAttribute(svg, \"x2\", 0);\n y2 = parseSVGFloatAttribute(svg, \"y2\", 0);\n session.context.beginPath();\n session.context.moveTo(x1, y1);\n session.context.lineTo(x2, y2);\n if (strokeStyle)\n session.context.stroke(strokeStyle);\n break;\n case \"polygon\":\n pointsString = svg.getAttribute(\"points\");\n points = pointsString.match(/\\d+/g).map((n) => parseInt(n, 10));\n session.context.poly(points, true);\n if (fillStyle)\n session.context.fill(fillStyle);\n if (strokeStyle)\n session.context.stroke(strokeStyle);\n break;\n case \"polyline\":\n pointsString = svg.getAttribute(\"points\");\n points = pointsString.match(/\\d+/g).map((n) => parseInt(n, 10));\n session.context.poly(points, false);\n if (strokeStyle)\n session.context.stroke(strokeStyle);\n break;\n case \"g\":\n case \"svg\":\n break;\n default: {\n warn(`[SVG parser] <${svg.nodeName}> elements unsupported`);\n break;\n }\n }\n if (noStyle) {\n fillStyle = null;\n }\n for (let i = 0; i < children.length; i++) {\n renderChildren(children[i], session, fillStyle, strokeStyle);\n }\n}\n\nexport { SVGParser };\n//# sourceMappingURL=SVGParser.mjs.map\n","import { Color } from '../../../../color/Color.mjs';\nimport { Texture } from '../../../../rendering/renderers/shared/texture/Texture.mjs';\nimport { FillGradient } from '../fill/FillGradient.mjs';\nimport { FillPattern } from '../fill/FillPattern.mjs';\n\n\"use strict\";\nfunction isColorLike(value) {\n return Color.isColorLike(value);\n}\nfunction isFillPattern(value) {\n return value instanceof FillPattern;\n}\nfunction isFillGradient(value) {\n return value instanceof FillGradient;\n}\nfunction isTexture(value) {\n return value instanceof Texture;\n}\nfunction handleColorLike(fill, value, defaultStyle) {\n const temp = Color.shared.setValue(value ?? 0);\n fill.color = temp.toNumber();\n fill.alpha = temp.alpha === 1 ? defaultStyle.alpha : temp.alpha;\n fill.texture = Texture.WHITE;\n return { ...defaultStyle, ...fill };\n}\nfunction handleTexture(fill, value, defaultStyle) {\n fill.texture = value;\n return { ...defaultStyle, ...fill };\n}\nfunction handleFillPattern(fill, value, defaultStyle) {\n fill.fill = value;\n fill.color = 16777215;\n fill.texture = value.texture;\n fill.matrix = value.transform;\n return { ...defaultStyle, ...fill };\n}\nfunction handleFillGradient(fill, value, defaultStyle) {\n value.buildGradient();\n fill.fill = value;\n fill.color = 16777215;\n fill.texture = value.texture;\n fill.matrix = value.transform;\n fill.textureSpace = value.textureSpace;\n return { ...defaultStyle, ...fill };\n}\nfunction handleFillObject(value, defaultStyle) {\n const style = { ...defaultStyle, ...value };\n const color = Color.shared.setValue(style.color);\n style.alpha *= color.alpha;\n style.color = color.toNumber();\n return style;\n}\nfunction toFillStyle(value, defaultStyle) {\n if (value === void 0 || value === null) {\n return null;\n }\n const fill = {};\n const objectStyle = value;\n if (isColorLike(value)) {\n return handleColorLike(fill, value, defaultStyle);\n } else if (isTexture(value)) {\n return handleTexture(fill, value, defaultStyle);\n } else if (isFillPattern(value)) {\n return handleFillPattern(fill, value, defaultStyle);\n } else if (isFillGradient(value)) {\n return handleFillGradient(fill, value, defaultStyle);\n } else if (objectStyle.fill && isFillPattern(objectStyle.fill)) {\n return handleFillPattern(objectStyle, objectStyle.fill, defaultStyle);\n } else if (objectStyle.fill && isFillGradient(objectStyle.fill)) {\n return handleFillGradient(objectStyle, objectStyle.fill, defaultStyle);\n }\n return handleFillObject(objectStyle, defaultStyle);\n}\nfunction toStrokeStyle(value, defaultStyle) {\n const { width, alignment, miterLimit, cap, join, pixelLine, ...rest } = defaultStyle;\n const fill = toFillStyle(value, rest);\n if (!fill) {\n return null;\n }\n return {\n width,\n alignment,\n miterLimit,\n cap,\n join,\n pixelLine,\n ...fill\n };\n}\n\nexport { toFillStyle, toStrokeStyle };\n//# sourceMappingURL=convertFillInputToFillStyle.mjs.map\n","import EventEmitter from 'eventemitter3';\nimport { Color } from '../../../color/Color.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { Point } from '../../../maths/point/Point.mjs';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture.mjs';\nimport { uid } from '../../../utils/data/uid.mjs';\nimport { deprecation, v8_0_0 } from '../../../utils/logging/deprecation.mjs';\nimport { Bounds } from '../../container/bounds/Bounds.mjs';\nimport { GraphicsPath } from './path/GraphicsPath.mjs';\nimport { SVGParser } from './svg/SVGParser.mjs';\nimport { toFillStyle, toStrokeStyle } from './utils/convertFillInputToFillStyle.mjs';\n\n\"use strict\";\nconst tmpPoint = new Point();\nconst tempMatrix = new Matrix();\nconst _GraphicsContext = class _GraphicsContext extends EventEmitter {\n constructor() {\n super(...arguments);\n /** unique id for this graphics context */\n this.uid = uid(\"graphicsContext\");\n this.dirty = true;\n this.batchMode = \"auto\";\n this.instructions = [];\n this._activePath = new GraphicsPath();\n this._transform = new Matrix();\n this._fillStyle = { ..._GraphicsContext.defaultFillStyle };\n this._strokeStyle = { ..._GraphicsContext.defaultStrokeStyle };\n this._stateStack = [];\n this._tick = 0;\n this._bounds = new Bounds();\n this._boundsDirty = true;\n }\n /**\n * Creates a new GraphicsContext object that is a clone of this instance, copying all properties,\n * including the current drawing state, transformations, styles, and instructions.\n * @returns A new GraphicsContext instance with the same properties and state as this one.\n */\n clone() {\n const clone = new _GraphicsContext();\n clone.batchMode = this.batchMode;\n clone.instructions = this.instructions.slice();\n clone._activePath = this._activePath.clone();\n clone._transform = this._transform.clone();\n clone._fillStyle = { ...this._fillStyle };\n clone._strokeStyle = { ...this._strokeStyle };\n clone._stateStack = this._stateStack.slice();\n clone._bounds = this._bounds.clone();\n clone._boundsDirty = true;\n return clone;\n }\n /**\n * The current fill style of the graphics context. This can be a color, gradient, pattern, or a more complex style defined by a FillStyle object.\n */\n get fillStyle() {\n return this._fillStyle;\n }\n set fillStyle(value) {\n this._fillStyle = toFillStyle(value, _GraphicsContext.defaultFillStyle);\n }\n /**\n * The current stroke style of the graphics context. Similar to fill styles, stroke styles can encompass colors, gradients, patterns, or more detailed configurations via a StrokeStyle object.\n */\n get strokeStyle() {\n return this._strokeStyle;\n }\n set strokeStyle(value) {\n this._strokeStyle = toStrokeStyle(value, _GraphicsContext.defaultStrokeStyle);\n }\n /**\n * Sets the current fill style of the graphics context. The fill style can be a color, gradient,\n * pattern, or a more complex style defined by a FillStyle object.\n * @param style - The fill style to apply. This can be a simple color, a gradient or pattern object,\n * or a FillStyle or ConvertedFillStyle object.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n setFillStyle(style) {\n this._fillStyle = toFillStyle(style, _GraphicsContext.defaultFillStyle);\n return this;\n }\n /**\n * Sets the current stroke style of the graphics context. Similar to fill styles, stroke styles can\n * encompass colors, gradients, patterns, or more detailed configurations via a StrokeStyle object.\n * @param style - The stroke style to apply. Can be defined as a color, a gradient or pattern,\n * or a StrokeStyle or ConvertedStrokeStyle object.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n setStrokeStyle(style) {\n this._strokeStyle = toFillStyle(style, _GraphicsContext.defaultStrokeStyle);\n return this;\n }\n texture(texture, tint, dx, dy, dw, dh) {\n this.instructions.push({\n action: \"texture\",\n data: {\n image: texture,\n dx: dx || 0,\n dy: dy || 0,\n dw: dw || texture.frame.width,\n dh: dh || texture.frame.height,\n transform: this._transform.clone(),\n alpha: this._fillStyle.alpha,\n style: tint ? Color.shared.setValue(tint).toNumber() : 16777215\n }\n });\n this.onUpdate();\n return this;\n }\n /**\n * Resets the current path. Any previous path and its commands are discarded and a new path is\n * started. This is typically called before beginning a new shape or series of drawing commands.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n beginPath() {\n this._activePath = new GraphicsPath();\n return this;\n }\n fill(style, alpha) {\n let path;\n const lastInstruction = this.instructions[this.instructions.length - 1];\n if (this._tick === 0 && lastInstruction && lastInstruction.action === \"stroke\") {\n path = lastInstruction.data.path;\n } else {\n path = this._activePath.clone();\n }\n if (!path)\n return this;\n if (style != null) {\n if (alpha !== void 0 && typeof style === \"number\") {\n deprecation(v8_0_0, \"GraphicsContext.fill(color, alpha) is deprecated, use GraphicsContext.fill({ color, alpha }) instead\");\n style = { color: style, alpha };\n }\n this._fillStyle = toFillStyle(style, _GraphicsContext.defaultFillStyle);\n }\n this.instructions.push({\n action: \"fill\",\n // TODO copy fill style!\n data: { style: this.fillStyle, path }\n });\n this.onUpdate();\n this._initNextPathLocation();\n this._tick = 0;\n return this;\n }\n _initNextPathLocation() {\n const { x, y } = this._activePath.getLastPoint(Point.shared);\n this._activePath.clear();\n this._activePath.moveTo(x, y);\n }\n /**\n * Strokes the current path with the current stroke style. This method can take an optional\n * FillInput parameter to define the stroke's appearance, including its color, width, and other properties.\n * @param style - (Optional) The stroke style to apply. Can be defined as a simple color or a more complex style object. If omitted, uses the current stroke style.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n stroke(style) {\n let path;\n const lastInstruction = this.instructions[this.instructions.length - 1];\n if (this._tick === 0 && lastInstruction && lastInstruction.action === \"fill\") {\n path = lastInstruction.data.path;\n } else {\n path = this._activePath.clone();\n }\n if (!path)\n return this;\n if (style != null) {\n this._strokeStyle = toStrokeStyle(style, _GraphicsContext.defaultStrokeStyle);\n }\n this.instructions.push({\n action: \"stroke\",\n // TODO copy fill style!\n data: { style: this.strokeStyle, path }\n });\n this.onUpdate();\n this._initNextPathLocation();\n this._tick = 0;\n return this;\n }\n /**\n * Applies a cutout to the last drawn shape. This is used to create holes or complex shapes by\n * subtracting a path from the previously drawn path. If a hole is not completely in a shape, it will\n * fail to cut correctly!\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n cut() {\n for (let i = 0; i < 2; i++) {\n const lastInstruction = this.instructions[this.instructions.length - 1 - i];\n const holePath = this._activePath.clone();\n if (lastInstruction) {\n if (lastInstruction.action === \"stroke\" || lastInstruction.action === \"fill\") {\n if (lastInstruction.data.hole) {\n lastInstruction.data.hole.addPath(holePath);\n } else {\n lastInstruction.data.hole = holePath;\n break;\n }\n }\n }\n }\n this._initNextPathLocation();\n return this;\n }\n /**\n * Adds an arc to the current path, which is centered at (x, y) with the specified radius,\n * starting and ending angles, and direction.\n * @param x - The x-coordinate of the arc's center.\n * @param y - The y-coordinate of the arc's center.\n * @param radius - The arc's radius.\n * @param startAngle - The starting angle, in radians.\n * @param endAngle - The ending angle, in radians.\n * @param counterclockwise - (Optional) Specifies whether the arc is drawn counterclockwise (true) or clockwise (false). Defaults to false.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n arc(x, y, radius, startAngle, endAngle, counterclockwise) {\n this._tick++;\n const t = this._transform;\n this._activePath.arc(\n t.a * x + t.c * y + t.tx,\n t.b * x + t.d * y + t.ty,\n radius,\n startAngle,\n endAngle,\n counterclockwise\n );\n return this;\n }\n /**\n * Adds an arc to the current path with the given control points and radius, connected to the previous point\n * by a straight line if necessary.\n * @param x1 - The x-coordinate of the first control point.\n * @param y1 - The y-coordinate of the first control point.\n * @param x2 - The x-coordinate of the second control point.\n * @param y2 - The y-coordinate of the second control point.\n * @param radius - The arc's radius.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n arcTo(x1, y1, x2, y2, radius) {\n this._tick++;\n const t = this._transform;\n this._activePath.arcTo(\n t.a * x1 + t.c * y1 + t.tx,\n t.b * x1 + t.d * y1 + t.ty,\n t.a * x2 + t.c * y2 + t.tx,\n t.b * x2 + t.d * y2 + t.ty,\n radius\n );\n return this;\n }\n /**\n * Adds an SVG-style arc to the path, allowing for elliptical arcs based on the SVG spec.\n * @param rx - The x-radius of the ellipse.\n * @param ry - The y-radius of the ellipse.\n * @param xAxisRotation - The rotation of the ellipse's x-axis relative\n * to the x-axis of the coordinate system, in degrees.\n * @param largeArcFlag - Determines if the arc should be greater than or less than 180 degrees.\n * @param sweepFlag - Determines if the arc should be swept in a positive angle direction.\n * @param x - The x-coordinate of the arc's end point.\n * @param y - The y-coordinate of the arc's end point.\n * @returns The instance of the current object for chaining.\n */\n arcToSvg(rx, ry, xAxisRotation, largeArcFlag, sweepFlag, x, y) {\n this._tick++;\n const t = this._transform;\n this._activePath.arcToSvg(\n rx,\n ry,\n xAxisRotation,\n // should we rotate this with transform??\n largeArcFlag,\n sweepFlag,\n t.a * x + t.c * y + t.tx,\n t.b * x + t.d * y + t.ty\n );\n return this;\n }\n /**\n * Adds a cubic Bezier curve to the path.\n * It requires three points: the first two are control points and the third one is the end point.\n * The starting point is the last point in the current path.\n * @param cp1x - The x-coordinate of the first control point.\n * @param cp1y - The y-coordinate of the first control point.\n * @param cp2x - The x-coordinate of the second control point.\n * @param cp2y - The y-coordinate of the second control point.\n * @param x - The x-coordinate of the end point.\n * @param y - The y-coordinate of the end point.\n * @param smoothness - Optional parameter to adjust the smoothness of the curve.\n * @returns The instance of the current object for chaining.\n */\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y, smoothness) {\n this._tick++;\n const t = this._transform;\n this._activePath.bezierCurveTo(\n t.a * cp1x + t.c * cp1y + t.tx,\n t.b * cp1x + t.d * cp1y + t.ty,\n t.a * cp2x + t.c * cp2y + t.tx,\n t.b * cp2x + t.d * cp2y + t.ty,\n t.a * x + t.c * y + t.tx,\n t.b * x + t.d * y + t.ty,\n smoothness\n );\n return this;\n }\n /**\n * Closes the current path by drawing a straight line back to the start.\n * If the shape is already closed or there are no points in the path, this method does nothing.\n * @returns The instance of the current object for chaining.\n */\n closePath() {\n this._tick++;\n this._activePath?.closePath();\n return this;\n }\n /**\n * Draws an ellipse at the specified location and with the given x and y radii.\n * An optional transformation can be applied, allowing for rotation, scaling, and translation.\n * @param x - The x-coordinate of the center of the ellipse.\n * @param y - The y-coordinate of the center of the ellipse.\n * @param radiusX - The horizontal radius of the ellipse.\n * @param radiusY - The vertical radius of the ellipse.\n * @returns The instance of the current object for chaining.\n */\n ellipse(x, y, radiusX, radiusY) {\n this._tick++;\n this._activePath.ellipse(x, y, radiusX, radiusY, this._transform.clone());\n return this;\n }\n /**\n * Draws a circle shape. This method adds a new circle path to the current drawing.\n * @param x - The x-coordinate of the center of the circle.\n * @param y - The y-coordinate of the center of the circle.\n * @param radius - The radius of the circle.\n * @returns The instance of the current object for chaining.\n */\n circle(x, y, radius) {\n this._tick++;\n this._activePath.circle(x, y, radius, this._transform.clone());\n return this;\n }\n /**\n * Adds another `GraphicsPath` to this path, optionally applying a transformation.\n * @param path - The `GraphicsPath` to add.\n * @returns The instance of the current object for chaining.\n */\n path(path) {\n this._tick++;\n this._activePath.addPath(path, this._transform.clone());\n return this;\n }\n /**\n * Connects the current point to a new point with a straight line. This method updates the current path.\n * @param x - The x-coordinate of the new point to connect to.\n * @param y - The y-coordinate of the new point to connect to.\n * @returns The instance of the current object for chaining.\n */\n lineTo(x, y) {\n this._tick++;\n const t = this._transform;\n this._activePath.lineTo(\n t.a * x + t.c * y + t.tx,\n t.b * x + t.d * y + t.ty\n );\n return this;\n }\n /**\n * Sets the starting point for a new sub-path. Any subsequent drawing commands are considered part of this path.\n * @param x - The x-coordinate for the starting point.\n * @param y - The y-coordinate for the starting point.\n * @returns The instance of the current object for chaining.\n */\n moveTo(x, y) {\n this._tick++;\n const t = this._transform;\n const instructions = this._activePath.instructions;\n const transformedX = t.a * x + t.c * y + t.tx;\n const transformedY = t.b * x + t.d * y + t.ty;\n if (instructions.length === 1 && instructions[0].action === \"moveTo\") {\n instructions[0].data[0] = transformedX;\n instructions[0].data[1] = transformedY;\n return this;\n }\n this._activePath.moveTo(\n transformedX,\n transformedY\n );\n return this;\n }\n /**\n * Adds a quadratic curve to the path. It requires two points: the control point and the end point.\n * The starting point is the last point in the current path.\n * @param cpx - The x-coordinate of the control point.\n * @param cpy - The y-coordinate of the control point.\n * @param x - The x-coordinate of the end point.\n * @param y - The y-coordinate of the end point.\n * @param smoothness - Optional parameter to adjust the smoothness of the curve.\n * @returns The instance of the current object for chaining.\n */\n quadraticCurveTo(cpx, cpy, x, y, smoothness) {\n this._tick++;\n const t = this._transform;\n this._activePath.quadraticCurveTo(\n t.a * cpx + t.c * cpy + t.tx,\n t.b * cpx + t.d * cpy + t.ty,\n t.a * x + t.c * y + t.tx,\n t.b * x + t.d * y + t.ty,\n smoothness\n );\n return this;\n }\n /**\n * Draws a rectangle shape. This method adds a new rectangle path to the current drawing.\n * @param x - The x-coordinate of the top-left corner of the rectangle.\n * @param y - The y-coordinate of the top-left corner of the rectangle.\n * @param w - The width of the rectangle.\n * @param h - The height of the rectangle.\n * @returns The instance of the current object for chaining.\n */\n rect(x, y, w, h) {\n this._tick++;\n this._activePath.rect(x, y, w, h, this._transform.clone());\n return this;\n }\n /**\n * Draws a rectangle with rounded corners.\n * The corner radius can be specified to determine how rounded the corners should be.\n * An optional transformation can be applied, which allows for rotation, scaling, and translation of the rectangle.\n * @param x - The x-coordinate of the top-left corner of the rectangle.\n * @param y - The y-coordinate of the top-left corner of the rectangle.\n * @param w - The width of the rectangle.\n * @param h - The height of the rectangle.\n * @param radius - The radius of the rectangle's corners. If not specified, corners will be sharp.\n * @returns The instance of the current object for chaining.\n */\n roundRect(x, y, w, h, radius) {\n this._tick++;\n this._activePath.roundRect(x, y, w, h, radius, this._transform.clone());\n return this;\n }\n /**\n * Draws a polygon shape by specifying a sequence of points. This method allows for the creation of complex polygons,\n * which can be both open and closed. An optional transformation can be applied, enabling the polygon to be scaled,\n * rotated, or translated as needed.\n * @param points - An array of numbers, or an array of PointData objects eg [{x,y}, {x,y}, {x,y}]\n * representing the x and y coordinates, of the polygon's vertices, in sequence.\n * @param close - A boolean indicating whether to close the polygon path. True by default.\n */\n poly(points, close) {\n this._tick++;\n this._activePath.poly(points, close, this._transform.clone());\n return this;\n }\n /**\n * Draws a regular polygon with a specified number of sides. All sides and angles are equal.\n * @param x - The x-coordinate of the center of the polygon.\n * @param y - The y-coordinate of the center of the polygon.\n * @param radius - The radius of the circumscribed circle of the polygon.\n * @param sides - The number of sides of the polygon. Must be 3 or more.\n * @param rotation - The rotation angle of the polygon, in radians. Zero by default.\n * @param transform - An optional `Matrix` object to apply a transformation to the polygon.\n * @returns The instance of the current object for chaining.\n */\n regularPoly(x, y, radius, sides, rotation = 0, transform) {\n this._tick++;\n this._activePath.regularPoly(x, y, radius, sides, rotation, transform);\n return this;\n }\n /**\n * Draws a polygon with rounded corners.\n * Similar to `regularPoly` but with the ability to round the corners of the polygon.\n * @param x - The x-coordinate of the center of the polygon.\n * @param y - The y-coordinate of the center of the polygon.\n * @param radius - The radius of the circumscribed circle of the polygon.\n * @param sides - The number of sides of the polygon. Must be 3 or more.\n * @param corner - The radius of the rounding of the corners.\n * @param rotation - The rotation angle of the polygon, in radians. Zero by default.\n * @returns The instance of the current object for chaining.\n */\n roundPoly(x, y, radius, sides, corner, rotation) {\n this._tick++;\n this._activePath.roundPoly(x, y, radius, sides, corner, rotation);\n return this;\n }\n /**\n * Draws a shape with rounded corners. This function supports custom radius for each corner of the shape.\n * Optionally, corners can be rounded using a quadratic curve instead of an arc, providing a different aesthetic.\n * @param points - An array of `RoundedPoint` representing the corners of the shape to draw.\n * A minimum of 3 points is required.\n * @param radius - The default radius for the corners.\n * This radius is applied to all corners unless overridden in `points`.\n * @param useQuadratic - If set to true, rounded corners are drawn using a quadraticCurve\n * method instead of an arc method. Defaults to false.\n * @param smoothness - Specifies the smoothness of the curve when `useQuadratic` is true.\n * Higher values make the curve smoother.\n * @returns The instance of the current object for chaining.\n */\n roundShape(points, radius, useQuadratic, smoothness) {\n this._tick++;\n this._activePath.roundShape(points, radius, useQuadratic, smoothness);\n return this;\n }\n /**\n * Draw Rectangle with fillet corners. This is much like rounded rectangle\n * however it support negative numbers as well for the corner radius.\n * @param x - Upper left corner of rect\n * @param y - Upper right corner of rect\n * @param width - Width of rect\n * @param height - Height of rect\n * @param fillet - accept negative or positive values\n */\n filletRect(x, y, width, height, fillet) {\n this._tick++;\n this._activePath.filletRect(x, y, width, height, fillet);\n return this;\n }\n /**\n * Draw Rectangle with chamfer corners. These are angled corners.\n * @param x - Upper left corner of rect\n * @param y - Upper right corner of rect\n * @param width - Width of rect\n * @param height - Height of rect\n * @param chamfer - non-zero real number, size of corner cutout\n * @param transform\n */\n chamferRect(x, y, width, height, chamfer, transform) {\n this._tick++;\n this._activePath.chamferRect(x, y, width, height, chamfer, transform);\n return this;\n }\n /**\n * Draws a star shape centered at a specified location. This method allows for the creation\n * of stars with a variable number of points, outer radius, optional inner radius, and rotation.\n * The star is drawn as a closed polygon with alternating outer and inner vertices to create the star's points.\n * An optional transformation can be applied to scale, rotate, or translate the star as needed.\n * @param x - The x-coordinate of the center of the star.\n * @param y - The y-coordinate of the center of the star.\n * @param points - The number of points of the star.\n * @param radius - The outer radius of the star (distance from the center to the outer points).\n * @param innerRadius - Optional. The inner radius of the star\n * (distance from the center to the inner points between the outer points).\n * If not provided, defaults to half of the `radius`.\n * @param rotation - Optional. The rotation of the star in radians, where 0 is aligned with the y-axis.\n * Defaults to 0, meaning one point is directly upward.\n * @returns The instance of the current object for chaining further drawing commands.\n */\n star(x, y, points, radius, innerRadius = 0, rotation = 0) {\n this._tick++;\n this._activePath.star(x, y, points, radius, innerRadius, rotation, this._transform.clone());\n return this;\n }\n /**\n * Parses and renders an SVG string into the graphics context. This allows for complex shapes and paths\n * defined in SVG format to be drawn within the graphics context.\n * @param svg - The SVG string to be parsed and rendered.\n */\n svg(svg) {\n this._tick++;\n SVGParser(svg, this);\n return this;\n }\n /**\n * Restores the most recently saved graphics state by popping the top of the graphics state stack.\n * This includes transformations, fill styles, and stroke styles.\n */\n restore() {\n const state = this._stateStack.pop();\n if (state) {\n this._transform = state.transform;\n this._fillStyle = state.fillStyle;\n this._strokeStyle = state.strokeStyle;\n }\n return this;\n }\n /** Saves the current graphics state, including transformations, fill styles, and stroke styles, onto a stack. */\n save() {\n this._stateStack.push({\n transform: this._transform.clone(),\n fillStyle: { ...this._fillStyle },\n strokeStyle: { ...this._strokeStyle }\n });\n return this;\n }\n /**\n * Returns the current transformation matrix of the graphics context.\n * @returns The current transformation matrix.\n */\n getTransform() {\n return this._transform;\n }\n /**\n * Resets the current transformation matrix to the identity matrix, effectively removing any transformations (rotation, scaling, translation) previously applied.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n resetTransform() {\n this._transform.identity();\n return this;\n }\n /**\n * Applies a rotation transformation to the graphics context around the current origin.\n * @param angle - The angle of rotation in radians.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n rotate(angle) {\n this._transform.rotate(angle);\n return this;\n }\n /**\n * Applies a scaling transformation to the graphics context, scaling drawings by x horizontally and by y vertically.\n * @param x - The scale factor in the horizontal direction.\n * @param y - (Optional) The scale factor in the vertical direction. If not specified, the x value is used for both directions.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n scale(x, y = x) {\n this._transform.scale(x, y);\n return this;\n }\n setTransform(a, b, c, d, dx, dy) {\n if (a instanceof Matrix) {\n this._transform.set(a.a, a.b, a.c, a.d, a.tx, a.ty);\n return this;\n }\n this._transform.set(a, b, c, d, dx, dy);\n return this;\n }\n transform(a, b, c, d, dx, dy) {\n if (a instanceof Matrix) {\n this._transform.append(a);\n return this;\n }\n tempMatrix.set(a, b, c, d, dx, dy);\n this._transform.append(tempMatrix);\n return this;\n }\n /**\n * Applies a translation transformation to the graphics context, moving the origin by the specified amounts.\n * @param x - The amount to translate in the horizontal direction.\n * @param y - (Optional) The amount to translate in the vertical direction. If not specified, the x value is used for both directions.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n translate(x, y = x) {\n this._transform.translate(x, y);\n return this;\n }\n /**\n * Clears all drawing commands from the graphics context, effectively resetting it. This includes clearing the path,\n * and optionally resetting transformations to the identity matrix.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n clear() {\n this._activePath.clear();\n this.instructions.length = 0;\n this.resetTransform();\n this.onUpdate();\n return this;\n }\n onUpdate() {\n if (this.dirty)\n return;\n this.emit(\"update\", this, 16);\n this.dirty = true;\n this._boundsDirty = true;\n }\n /** The bounds of the graphic shape. */\n get bounds() {\n if (!this._boundsDirty)\n return this._bounds;\n const bounds = this._bounds;\n bounds.clear();\n for (let i = 0; i < this.instructions.length; i++) {\n const instruction = this.instructions[i];\n const action = instruction.action;\n if (action === \"fill\") {\n const data = instruction.data;\n bounds.addBounds(data.path.bounds);\n } else if (action === \"texture\") {\n const data = instruction.data;\n bounds.addFrame(data.dx, data.dy, data.dx + data.dw, data.dy + data.dh, data.transform);\n }\n if (action === \"stroke\") {\n const data = instruction.data;\n const alignment = data.style.alignment;\n const outerPadding = data.style.width * (1 - alignment);\n const _bounds = data.path.bounds;\n bounds.addFrame(\n _bounds.minX - outerPadding,\n _bounds.minY - outerPadding,\n _bounds.maxX + outerPadding,\n _bounds.maxY + outerPadding\n );\n }\n }\n return bounds;\n }\n /**\n * Check to see if a point is contained within this geometry.\n * @param point - Point to check if it's contained.\n * @returns {boolean} `true` if the point is contained within geometry.\n */\n containsPoint(point) {\n if (!this.bounds.containsPoint(point.x, point.y))\n return false;\n const instructions = this.instructions;\n let hasHit = false;\n for (let k = 0; k < instructions.length; k++) {\n const instruction = instructions[k];\n const data = instruction.data;\n const path = data.path;\n if (!instruction.action || !path)\n continue;\n const style = data.style;\n const shapes = path.shapePath.shapePrimitives;\n for (let i = 0; i < shapes.length; i++) {\n const shape = shapes[i].shape;\n if (!style || !shape)\n continue;\n const transform = shapes[i].transform;\n const transformedPoint = transform ? transform.applyInverse(point, tmpPoint) : point;\n if (instruction.action === \"fill\") {\n hasHit = shape.contains(transformedPoint.x, transformedPoint.y);\n } else {\n const strokeStyle = style;\n hasHit = shape.strokeContains(transformedPoint.x, transformedPoint.y, strokeStyle.width, strokeStyle.alignment);\n }\n const holes = data.hole;\n if (holes) {\n const holeShapes = holes.shapePath?.shapePrimitives;\n if (holeShapes) {\n for (let j = 0; j < holeShapes.length; j++) {\n if (holeShapes[j].shape.contains(transformedPoint.x, transformedPoint.y)) {\n hasHit = false;\n }\n }\n }\n }\n if (hasHit) {\n return true;\n }\n }\n }\n return hasHit;\n }\n /**\n * Destroys the GraphicsData object.\n * @param options - Options parameter. A boolean will act as if all options\n * have been set to that value\n * @param {boolean} [options.texture=false] - Should it destroy the current texture of the fill/stroke style?\n * @param {boolean} [options.textureSource=false] - Should it destroy the texture source of the fill/stroke style?\n */\n destroy(options = false) {\n this._stateStack.length = 0;\n this._transform = null;\n this.emit(\"destroy\", this);\n this.removeAllListeners();\n const destroyTexture = typeof options === \"boolean\" ? options : options?.texture;\n if (destroyTexture) {\n const destroyTextureSource = typeof options === \"boolean\" ? options : options?.textureSource;\n if (this._fillStyle.texture) {\n this._fillStyle.texture.destroy(destroyTextureSource);\n }\n if (this._strokeStyle.texture) {\n this._strokeStyle.texture.destroy(destroyTextureSource);\n }\n }\n this._fillStyle = null;\n this._strokeStyle = null;\n this.instructions = null;\n this._activePath = null;\n this._bounds = null;\n this._stateStack = null;\n this.customShader = null;\n this._transform = null;\n }\n};\n/** The default fill style to use when none is provided. */\n_GraphicsContext.defaultFillStyle = {\n /** The color to use for the fill. */\n color: 16777215,\n /** The alpha value to use for the fill. */\n alpha: 1,\n /** The texture to use for the fill. */\n texture: Texture.WHITE,\n /** The matrix to apply. */\n matrix: null,\n /** The fill pattern to use. */\n fill: null,\n /** Whether coordinates are 'global' or 'local' */\n textureSpace: \"local\"\n};\n/** The default stroke style to use when none is provided. */\n_GraphicsContext.defaultStrokeStyle = {\n /** The width of the stroke. */\n width: 1,\n /** The color to use for the stroke. */\n color: 16777215,\n /** The alpha value to use for the stroke. */\n alpha: 1,\n /** The alignment of the stroke. */\n alignment: 0.5,\n /** The miter limit to use. */\n miterLimit: 10,\n /** The line cap style to use. */\n cap: \"butt\",\n /** The line join style to use. */\n join: \"miter\",\n /** The texture to use for the fill. */\n texture: Texture.WHITE,\n /** The matrix to apply. */\n matrix: null,\n /** The fill pattern to use. */\n fill: null,\n /** Whether coordinates are 'global' or 'local' */\n textureSpace: \"local\",\n /** If the stroke is a pixel line. */\n pixelLine: false\n};\nlet GraphicsContext = _GraphicsContext;\n\nexport { GraphicsContext };\n//# sourceMappingURL=GraphicsContext.mjs.map\n","import { deprecation, v8_0_0 } from '../../../utils/logging/deprecation.mjs';\nimport { ViewContainer } from '../../view/ViewContainer.mjs';\nimport { GraphicsContext } from './GraphicsContext.mjs';\n\n\"use strict\";\nclass Graphics extends ViewContainer {\n /**\n * @param options - Options for the Graphics.\n */\n constructor(options) {\n if (options instanceof GraphicsContext) {\n options = { context: options };\n }\n const { context, roundPixels, ...rest } = options || {};\n super({\n label: \"Graphics\",\n ...rest\n });\n this.renderPipeId = \"graphics\";\n if (!context) {\n this._context = this._ownedContext = new GraphicsContext();\n } else {\n this._context = context;\n }\n this._context.on(\"update\", this.onViewUpdate, this);\n this.allowChildren = false;\n this.roundPixels = roundPixels ?? false;\n }\n set context(context) {\n if (context === this._context)\n return;\n this._context.off(\"update\", this.onViewUpdate, this);\n this._context = context;\n this._context.on(\"update\", this.onViewUpdate, this);\n this.onViewUpdate();\n }\n get context() {\n return this._context;\n }\n /**\n * The local bounds of the graphic.\n * @type {rendering.Bounds}\n */\n get bounds() {\n return this._context.bounds;\n }\n /**\n * Graphics objects do not need to update their bounds as the context handles this.\n * @private\n */\n updateBounds() {\n }\n /**\n * Checks if the object contains the given point.\n * @param point - The point to check\n */\n containsPoint(point) {\n return this._context.containsPoint(point);\n }\n /**\n * Destroys this graphics renderable and optionally its context.\n * @param options - Options parameter. A boolean will act as if all options\n *\n * If the context was created by this graphics and `destroy(false)` or `destroy()` is called\n * then the context will still be destroyed.\n *\n * If you want to explicitly not destroy this context that this graphics created,\n * then you should pass destroy({ context: false })\n *\n * If the context was passed in as an argument to the constructor then it will not be destroyed\n * @param {boolean} [options.texture=false] - Should destroy the texture of the graphics context\n * @param {boolean} [options.textureSource=false] - Should destroy the texture source of the graphics context\n * @param {boolean} [options.context=false] - Should destroy the context\n */\n destroy(options) {\n if (this._ownedContext && !options) {\n this._ownedContext.destroy(options);\n } else if (options === true || options?.context === true) {\n this._context.destroy(options);\n }\n this._ownedContext = null;\n this._context = null;\n super.destroy(options);\n }\n _callContextMethod(method, args) {\n this.context[method](...args);\n return this;\n }\n // --------------------------------------- GraphicsContext methods ---------------------------------------\n /**\n * Sets the current fill style of the graphics context. The fill style can be a color, gradient,\n * pattern, or a more complex style defined by a FillStyle object.\n * @param {FillInput} args - The fill style to apply. This can be a simple color, a gradient or\n * pattern object, or a FillStyle or ConvertedFillStyle object.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n setFillStyle(...args) {\n return this._callContextMethod(\"setFillStyle\", args);\n }\n /**\n * Sets the current stroke style of the graphics context. Similar to fill styles, stroke styles can\n * encompass colors, gradients, patterns, or more detailed configurations via a StrokeStyle object.\n * @param {StrokeInput} args - The stroke style to apply. Can be defined as a color, a gradient or pattern,\n * or a StrokeStyle or ConvertedStrokeStyle object.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n setStrokeStyle(...args) {\n return this._callContextMethod(\"setStrokeStyle\", args);\n }\n fill(...args) {\n return this._callContextMethod(\"fill\", args);\n }\n /**\n * Strokes the current path with the current stroke style. This method can take an optional\n * FillStyle parameter to define the stroke's appearance, including its color, width, and other properties.\n * @param {FillStyle} args - (Optional) The stroke style to apply. Can be defined as a simple color or a more\n * complex style object. If omitted, uses the current stroke style.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n stroke(...args) {\n return this._callContextMethod(\"stroke\", args);\n }\n texture(...args) {\n return this._callContextMethod(\"texture\", args);\n }\n /**\n * Resets the current path. Any previous path and its commands are discarded and a new path is\n * started. This is typically called before beginning a new shape or series of drawing commands.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n beginPath() {\n return this._callContextMethod(\"beginPath\", []);\n }\n /**\n * Applies a cutout to the last drawn shape. This is used to create holes or complex shapes by\n * subtracting a path from the previously drawn path. If a hole is not completely in a shape, it will\n * fail to cut correctly!\n */\n cut() {\n return this._callContextMethod(\"cut\", []);\n }\n arc(...args) {\n return this._callContextMethod(\"arc\", args);\n }\n arcTo(...args) {\n return this._callContextMethod(\"arcTo\", args);\n }\n arcToSvg(...args) {\n return this._callContextMethod(\"arcToSvg\", args);\n }\n bezierCurveTo(...args) {\n return this._callContextMethod(\"bezierCurveTo\", args);\n }\n /**\n * Closes the current path by drawing a straight line back to the start.\n * If the shape is already closed or there are no points in the path, this method does nothing.\n * @returns The instance of the current object for chaining.\n */\n closePath() {\n return this._callContextMethod(\"closePath\", []);\n }\n ellipse(...args) {\n return this._callContextMethod(\"ellipse\", args);\n }\n circle(...args) {\n return this._callContextMethod(\"circle\", args);\n }\n path(...args) {\n return this._callContextMethod(\"path\", args);\n }\n lineTo(...args) {\n return this._callContextMethod(\"lineTo\", args);\n }\n moveTo(...args) {\n return this._callContextMethod(\"moveTo\", args);\n }\n quadraticCurveTo(...args) {\n return this._callContextMethod(\"quadraticCurveTo\", args);\n }\n rect(...args) {\n return this._callContextMethod(\"rect\", args);\n }\n roundRect(...args) {\n return this._callContextMethod(\"roundRect\", args);\n }\n poly(...args) {\n return this._callContextMethod(\"poly\", args);\n }\n regularPoly(...args) {\n return this._callContextMethod(\"regularPoly\", args);\n }\n roundPoly(...args) {\n return this._callContextMethod(\"roundPoly\", args);\n }\n roundShape(...args) {\n return this._callContextMethod(\"roundShape\", args);\n }\n filletRect(...args) {\n return this._callContextMethod(\"filletRect\", args);\n }\n chamferRect(...args) {\n return this._callContextMethod(\"chamferRect\", args);\n }\n star(...args) {\n return this._callContextMethod(\"star\", args);\n }\n svg(...args) {\n return this._callContextMethod(\"svg\", args);\n }\n restore(...args) {\n return this._callContextMethod(\"restore\", args);\n }\n /** Saves the current graphics state, including transformations, fill styles, and stroke styles, onto a stack. */\n save() {\n return this._callContextMethod(\"save\", []);\n }\n /**\n * Returns the current transformation matrix of the graphics context.\n * @returns The current transformation matrix.\n */\n getTransform() {\n return this.context.getTransform();\n }\n /**\n * Resets the current transformation matrix to the identity matrix, effectively removing\n * any transformations (rotation, scaling, translation) previously applied.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n resetTransform() {\n return this._callContextMethod(\"resetTransform\", []);\n }\n rotateTransform(...args) {\n return this._callContextMethod(\"rotate\", args);\n }\n scaleTransform(...args) {\n return this._callContextMethod(\"scale\", args);\n }\n setTransform(...args) {\n return this._callContextMethod(\"setTransform\", args);\n }\n transform(...args) {\n return this._callContextMethod(\"transform\", args);\n }\n translateTransform(...args) {\n return this._callContextMethod(\"translate\", args);\n }\n /**\n * Clears all drawing commands from the graphics context, effectively resetting it. This includes clearing the path,\n * and optionally resetting transformations to the identity matrix.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n clear() {\n return this._callContextMethod(\"clear\", []);\n }\n /**\n * The fill style to use.\n * @type {ConvertedFillStyle}\n */\n get fillStyle() {\n return this._context.fillStyle;\n }\n set fillStyle(value) {\n this._context.fillStyle = value;\n }\n /**\n * The stroke style to use.\n * @type {ConvertedStrokeStyle}\n */\n get strokeStyle() {\n return this._context.strokeStyle;\n }\n set strokeStyle(value) {\n this._context.strokeStyle = value;\n }\n /**\n * Creates a new Graphics object.\n * Note that only the context of the object is cloned, not its transform (position,scale,etc)\n * @param deep - Whether to create a deep clone of the graphics object. If false, the context\n * will be shared between the two objects (default false). If true, the context will be\n * cloned (recommended if you need to modify the context in any way).\n * @returns - A clone of the graphics object\n */\n clone(deep = false) {\n if (deep) {\n return new Graphics(this._context.clone());\n }\n this._ownedContext = null;\n const clone = new Graphics(this._context);\n return clone;\n }\n // -------- v7 deprecations ---------\n /**\n * @param width\n * @param color\n * @param alpha\n * @deprecated since 8.0.0 Use {@link Graphics#setStrokeStyle} instead\n */\n lineStyle(width, color, alpha) {\n deprecation(v8_0_0, \"Graphics#lineStyle is no longer needed. Use Graphics#setStrokeStyle to set the stroke style.\");\n const strokeStyle = {};\n width && (strokeStyle.width = width);\n color && (strokeStyle.color = color);\n alpha && (strokeStyle.alpha = alpha);\n this.context.strokeStyle = strokeStyle;\n return this;\n }\n /**\n * @param color\n * @param alpha\n * @deprecated since 8.0.0 Use {@link Graphics#fill} instead\n */\n beginFill(color, alpha) {\n deprecation(v8_0_0, \"Graphics#beginFill is no longer needed. Use Graphics#fill to fill the shape with the desired style.\");\n const fillStyle = {};\n if (color !== void 0)\n fillStyle.color = color;\n if (alpha !== void 0)\n fillStyle.alpha = alpha;\n this.context.fillStyle = fillStyle;\n return this;\n }\n /**\n * @deprecated since 8.0.0 Use {@link Graphics#fill} instead\n */\n endFill() {\n deprecation(v8_0_0, \"Graphics#endFill is no longer needed. Use Graphics#fill to fill the shape with the desired style.\");\n this.context.fill();\n const strokeStyle = this.context.strokeStyle;\n if (strokeStyle.width !== GraphicsContext.defaultStrokeStyle.width || strokeStyle.color !== GraphicsContext.defaultStrokeStyle.color || strokeStyle.alpha !== GraphicsContext.defaultStrokeStyle.alpha) {\n this.context.stroke();\n }\n return this;\n }\n /**\n * @param {...any} args\n * @deprecated since 8.0.0 Use {@link Graphics#circle} instead\n */\n drawCircle(...args) {\n deprecation(v8_0_0, \"Graphics#drawCircle has been renamed to Graphics#circle\");\n return this._callContextMethod(\"circle\", args);\n }\n /**\n * @param {...any} args\n * @deprecated since 8.0.0 Use {@link Graphics#ellipse} instead\n */\n drawEllipse(...args) {\n deprecation(v8_0_0, \"Graphics#drawEllipse has been renamed to Graphics#ellipse\");\n return this._callContextMethod(\"ellipse\", args);\n }\n /**\n * @param {...any} args\n * @deprecated since 8.0.0 Use {@link Graphics#poly} instead\n */\n drawPolygon(...args) {\n deprecation(v8_0_0, \"Graphics#drawPolygon has been renamed to Graphics#poly\");\n return this._callContextMethod(\"poly\", args);\n }\n /**\n * @param {...any} args\n * @deprecated since 8.0.0 Use {@link Graphics#rect} instead\n */\n drawRect(...args) {\n deprecation(v8_0_0, \"Graphics#drawRect has been renamed to Graphics#rect\");\n return this._callContextMethod(\"rect\", args);\n }\n /**\n * @param {...any} args\n * @deprecated since 8.0.0 Use {@link Graphics#roundRect} instead\n */\n drawRoundedRect(...args) {\n deprecation(v8_0_0, \"Graphics#drawRoundedRect has been renamed to Graphics#roundRect\");\n return this._callContextMethod(\"roundRect\", args);\n }\n /**\n * @param {...any} args\n * @deprecated since 8.0.0 Use {@link Graphics#star} instead\n */\n drawStar(...args) {\n deprecation(v8_0_0, \"Graphics#drawStar has been renamed to Graphics#star\");\n return this._callContextMethod(\"star\", args);\n }\n}\n\nexport { Graphics };\n//# sourceMappingURL=Graphics.mjs.map\n","import { browserExt } from './environment-browser/browserExt.mjs';\nimport { webworkerExt } from './environment-webworker/webworkerExt.mjs';\nimport { extensions } from './extensions/Extensions.mjs';\nexport { ExtensionType, normalizeExtensionPriority } from './extensions/Extensions.mjs';\nimport './rendering/init.mjs';\nimport './spritesheet/init.mjs';\nimport './accessibility/index.mjs';\nimport './advanced-blend-modes/index.mjs';\nimport './app/index.mjs';\nimport './assets/index.mjs';\nimport './color/index.mjs';\nimport './compressed-textures/index.mjs';\nimport './culling/index.mjs';\nimport './environment/index.mjs';\nimport './environment-browser/index.mjs';\nimport './environment-webworker/index.mjs';\nimport './events/index.mjs';\nimport './extensions/index.mjs';\nimport './filters/index.mjs';\nimport './maths/index.mjs';\nimport './prepare/index.mjs';\nimport './rendering/index.mjs';\nimport './scene/index.mjs';\nimport './spritesheet/index.mjs';\nimport './ticker/index.mjs';\nimport './utils/index.mjs';\nexport { AccessibilitySystem } from './accessibility/AccessibilitySystem.mjs';\nexport { accessibilityTarget } from './accessibility/accessibilityTarget.mjs';\nexport { ColorBlend } from './advanced-blend-modes/ColorBlend.mjs';\nexport { ColorBurnBlend } from './advanced-blend-modes/ColorBurnBlend.mjs';\nexport { ColorDodgeBlend } from './advanced-blend-modes/ColorDodgeBlend.mjs';\nexport { DarkenBlend } from './advanced-blend-modes/DarkenBlend.mjs';\nexport { DifferenceBlend } from './advanced-blend-modes/DifferenceBlend.mjs';\nexport { DivideBlend } from './advanced-blend-modes/DivideBlend.mjs';\nexport { ExclusionBlend } from './advanced-blend-modes/ExclusionBlend.mjs';\nexport { HardLightBlend } from './advanced-blend-modes/HardLightBlend.mjs';\nexport { HardMixBlend } from './advanced-blend-modes/HardMixBlend.mjs';\nexport { LightenBlend } from './advanced-blend-modes/LightenBlend.mjs';\nexport { LinearBurnBlend } from './advanced-blend-modes/LinearBurnBlend.mjs';\nexport { LinearDodgeBlend } from './advanced-blend-modes/LinearDodgeBlend.mjs';\nexport { LinearLightBlend } from './advanced-blend-modes/LinearLightBlend.mjs';\nexport { LuminosityBlend } from './advanced-blend-modes/LuminosityBlend.mjs';\nexport { NegationBlend } from './advanced-blend-modes/NegationBlend.mjs';\nexport { OverlayBlend } from './advanced-blend-modes/OverlayBlend.mjs';\nexport { PinLightBlend } from './advanced-blend-modes/PinLightBlend.mjs';\nexport { SaturationBlend } from './advanced-blend-modes/SaturationBlend.mjs';\nexport { SoftLightBlend } from './advanced-blend-modes/SoftLightBlend.mjs';\nexport { SubtractBlend } from './advanced-blend-modes/SubtractBlend.mjs';\nexport { VividLightBlend } from './advanced-blend-modes/VividLightBlend.mjs';\nexport { Application } from './app/Application.mjs';\nexport { ResizePlugin } from './app/ResizePlugin.mjs';\nexport { TickerPlugin } from './app/TickerPlugin.mjs';\nexport { Assets, AssetsClass } from './assets/Assets.mjs';\nexport { BackgroundLoader } from './assets/BackgroundLoader.mjs';\nexport { Cache } from './assets/cache/Cache.mjs';\nexport { cacheTextureArray } from './assets/cache/parsers/cacheTextureArray.mjs';\nexport { detectAvif } from './assets/detections/parsers/detectAvif.mjs';\nexport { detectDefaults } from './assets/detections/parsers/detectDefaults.mjs';\nexport { detectMp4 } from './assets/detections/parsers/detectMp4.mjs';\nexport { detectOgv } from './assets/detections/parsers/detectOgv.mjs';\nexport { detectWebm } from './assets/detections/parsers/detectWebm.mjs';\nexport { detectWebp } from './assets/detections/parsers/detectWebp.mjs';\nexport { testImageFormat } from './assets/detections/utils/testImageFormat.mjs';\nexport { testVideoFormat } from './assets/detections/utils/testVideoFormat.mjs';\nexport { Loader } from './assets/loader/Loader.mjs';\nexport { LoaderParserPriority } from './assets/loader/parsers/LoaderParser.mjs';\nexport { loadJson } from './assets/loader/parsers/loadJson.mjs';\nexport { loadTxt } from './assets/loader/parsers/loadTxt.mjs';\nexport { getFontFamilyName, loadWebFont } from './assets/loader/parsers/loadWebFont.mjs';\nexport { loadSvg } from './assets/loader/parsers/textures/loadSVG.mjs';\nexport { loadImageBitmap, loadTextures } from './assets/loader/parsers/textures/loadTextures.mjs';\nexport { crossOrigin, determineCrossOrigin, loadVideoTextures, preloadVideo } from './assets/loader/parsers/textures/loadVideoTextures.mjs';\nexport { createTexture } from './assets/loader/parsers/textures/utils/createTexture.mjs';\nexport { WorkerManager } from './assets/loader/workers/WorkerManager.mjs';\nexport { resolveJsonUrl } from './assets/resolver/parsers/resolveJsonUrl.mjs';\nexport { resolveTextureUrl } from './assets/resolver/parsers/resolveTextureUrl.mjs';\nexport { Resolver, getUrlExtension } from './assets/resolver/Resolver.mjs';\nexport { checkDataUrl } from './assets/utils/checkDataUrl.mjs';\nexport { checkExtension } from './assets/utils/checkExtension.mjs';\nexport { convertToList } from './assets/utils/convertToList.mjs';\nexport { copySearchParams } from './assets/utils/copySearchParams.mjs';\nexport { createStringVariations } from './assets/utils/createStringVariations.mjs';\nexport { isSingleItem } from './assets/utils/isSingleItem.mjs';\nexport { Color } from './color/Color.mjs';\nexport { detectBasis } from './compressed-textures/basis/detectBasis.mjs';\nexport { loadBasis } from './compressed-textures/basis/loadBasis.mjs';\nexport { createLevelBuffers } from './compressed-textures/basis/utils/createLevelBuffers.mjs';\nexport { gpuFormatToBasisTranscoderFormat } from './compressed-textures/basis/utils/gpuFormatToBasisTranscoderFormat.mjs';\nexport { basisTranscoderUrls, setBasisTranscoderPath } from './compressed-textures/basis/utils/setBasisTranscoderPath.mjs';\nexport { loadBasisOnWorker } from './compressed-textures/basis/worker/loadBasisOnWorker.mjs';\nexport { D3D10_RESOURCE_DIMENSION, D3DFMT, DDS, DXGI_FORMAT, DXGI_TO_TEXTURE_FORMAT, FOURCC_TO_TEXTURE_FORMAT, TEXTURE_FORMAT_BLOCK_SIZE } from './compressed-textures/dds/const.mjs';\nexport { loadDDS } from './compressed-textures/dds/loadDDS.mjs';\nexport { parseDDS } from './compressed-textures/dds/parseDDS.mjs';\nexport { loadKTX } from './compressed-textures/ktx/loadKTX.mjs';\nexport { parseKTX } from './compressed-textures/ktx/parseKTX.mjs';\nexport { GL_INTERNAL_FORMAT, KTX } from './compressed-textures/ktx2/const.mjs';\nexport { loadKTX2 } from './compressed-textures/ktx2/loadKTX2.mjs';\nexport { convertFormatIfRequired } from './compressed-textures/ktx2/utils/convertFormatIfRequired.mjs';\nexport { createLevelBuffersFromKTX } from './compressed-textures/ktx2/utils/createLevelBuffersFromKTX.mjs';\nexport { getTextureFormatFromKTXTexture } from './compressed-textures/ktx2/utils/getTextureFormatFromKTXTexture.mjs';\nexport { glFormatToGPUFormat } from './compressed-textures/ktx2/utils/glFormatToGPUFormat.mjs';\nexport { gpuFormatToKTXBasisTranscoderFormat } from './compressed-textures/ktx2/utils/gpuFormatToKTXBasisTranscoderFormat.mjs';\nexport { ktxTranscoderUrls, setKTXTranscoderPath } from './compressed-textures/ktx2/utils/setKTXTranscoderPath.mjs';\nexport { vkFormatToGPUFormat } from './compressed-textures/ktx2/utils/vkFormatToGPUFormat.mjs';\nexport { loadKTX2onWorker } from './compressed-textures/ktx2/worker/loadKTX2onWorker.mjs';\nexport { detectCompressed } from './compressed-textures/shared/detectCompressed.mjs';\nexport { resolveCompressedTextureUrl, validFormats } from './compressed-textures/shared/resolveCompressedTextureUrl.mjs';\nexport { Culler } from './culling/Culler.mjs';\nexport { CullerPlugin } from './culling/CullerPlugin.mjs';\nexport { cullingMixin } from './culling/cullingMixin.mjs';\nexport { DOMAdapter } from './environment/adapter.mjs';\nexport { autoDetectEnvironment, loadEnvironmentExtensions } from './environment/autoDetectEnvironment.mjs';\nexport { BrowserAdapter } from './environment-browser/BrowserAdapter.mjs';\nexport { WebWorkerAdapter } from './environment-webworker/WebWorkerAdapter.mjs';\nexport { EventBoundary } from './events/EventBoundary.mjs';\nexport { EventSystem } from './events/EventSystem.mjs';\nexport { EventsTicker } from './events/EventTicker.mjs';\nexport { FederatedEvent } from './events/FederatedEvent.mjs';\nexport { FederatedContainer } from './events/FederatedEventTarget.mjs';\nexport { FederatedMouseEvent } from './events/FederatedMouseEvent.mjs';\nexport { FederatedPointerEvent } from './events/FederatedPointerEvent.mjs';\nexport { FederatedWheelEvent } from './events/FederatedWheelEvent.mjs';\nexport { default as blendTemplateFrag } from './filters/blend-modes/blend-template.frag.mjs';\nexport { default as blendTemplateVert } from './filters/blend-modes/blend-template.vert.mjs';\nexport { default as blendTemplateWgsl } from './filters/blend-modes/blend-template.wgsl.mjs';\nexport { default as hslWgsl } from './filters/blend-modes/hsl.wgsl.mjs';\nexport { default as alphaFrag } from './filters/defaults/alpha/alpha.frag.mjs';\nexport { default as alphaWgsl } from './filters/defaults/alpha/alpha.wgsl.mjs';\nexport { default as blurTemplateWgsl } from './filters/defaults/blur/gpu/blur-template.wgsl.mjs';\nexport { default as colorMatrixFilterFrag } from './filters/defaults/color-matrix/colorMatrixFilter.frag.mjs';\nexport { default as colorMatrixFilterWgsl } from './filters/defaults/color-matrix/colorMatrixFilter.wgsl.mjs';\nexport { default as defaultFilterVert } from './filters/defaults/defaultFilter.vert.mjs';\nexport { default as displacementFrag } from './filters/defaults/displacement/displacement.frag.mjs';\nexport { default as displacementVert } from './filters/defaults/displacement/displacement.vert.mjs';\nexport { default as displacementWgsl } from './filters/defaults/displacement/displacement.wgsl.mjs';\nexport { default as noiseFrag } from './filters/defaults/noise/noise.frag.mjs';\nexport { default as noiseWgsl } from './filters/defaults/noise/noise.wgsl.mjs';\nexport { default as maskFrag } from './filters/mask/mask.frag.mjs';\nexport { default as maskVert } from './filters/mask/mask.vert.mjs';\nexport { default as maskWgsl } from './filters/mask/mask.wgsl.mjs';\nexport { BlendModeFilter } from './filters/blend-modes/BlendModeFilter.mjs';\nexport { hslgl } from './filters/blend-modes/hls/GLhls.mjs';\nexport { hslgpu } from './filters/blend-modes/hls/GPUhls.mjs';\nexport { AlphaFilter } from './filters/defaults/alpha/AlphaFilter.mjs';\nexport { BlurFilter } from './filters/defaults/blur/BlurFilter.mjs';\nexport { BlurFilterPass } from './filters/defaults/blur/BlurFilterPass.mjs';\nexport { GAUSSIAN_VALUES } from './filters/defaults/blur/const.mjs';\nexport { generateBlurFragSource } from './filters/defaults/blur/gl/generateBlurFragSource.mjs';\nexport { generateBlurGlProgram } from './filters/defaults/blur/gl/generateBlurGlProgram.mjs';\nexport { generateBlurVertSource } from './filters/defaults/blur/gl/generateBlurVertSource.mjs';\nexport { generateBlurProgram } from './filters/defaults/blur/gpu/generateBlurProgram.mjs';\nexport { ColorMatrixFilter } from './filters/defaults/color-matrix/ColorMatrixFilter.mjs';\nexport { DisplacementFilter } from './filters/defaults/displacement/DisplacementFilter.mjs';\nexport { NoiseFilter } from './filters/defaults/noise/NoiseFilter.mjs';\nexport { Filter } from './filters/Filter.mjs';\nexport { FilterEffect } from './filters/FilterEffect.mjs';\nexport { FilterPipe } from './filters/FilterPipe.mjs';\nexport { FilterSystem } from './filters/FilterSystem.mjs';\nexport { MaskFilter } from './filters/mask/MaskFilter.mjs';\nexport { groupD8 } from './maths/matrix/groupD8.mjs';\nexport { Matrix } from './maths/matrix/Matrix.mjs';\nexport { DEG_TO_RAD, PI_2, RAD_TO_DEG } from './maths/misc/const.mjs';\nexport { isPow2, log2, nextPow2 } from './maths/misc/pow2.mjs';\nexport { squaredDistanceToLineSegment } from './maths/misc/squaredDistanceToLineSegment.mjs';\nexport { ObservablePoint } from './maths/point/ObservablePoint.mjs';\nexport { Point } from './maths/point/Point.mjs';\nexport { pointInTriangle } from './maths/point/pointInTriangle.mjs';\nexport { Circle } from './maths/shapes/Circle.mjs';\nexport { Ellipse } from './maths/shapes/Ellipse.mjs';\nexport { Polygon } from './maths/shapes/Polygon.mjs';\nexport { Rectangle } from './maths/shapes/Rectangle.mjs';\nexport { RoundedRectangle } from './maths/shapes/RoundedRectangle.mjs';\nexport { Triangle } from './maths/shapes/Triangle.mjs';\nexport { PrepareBase } from './prepare/PrepareBase.mjs';\nexport { PrepareQueue } from './prepare/PrepareQueue.mjs';\nexport { PrepareSystem } from './prepare/PrepareSystem.mjs';\nexport { PrepareUpload } from './prepare/PrepareUpload.mjs';\nexport { GlBatchAdaptor } from './rendering/batcher/gl/GlBatchAdaptor.mjs';\nexport { checkMaxIfStatementsInShader } from './rendering/batcher/gl/utils/checkMaxIfStatementsInShader.mjs';\nexport { getMaxTexturesPerBatch } from './rendering/batcher/gl/utils/maxRecommendedTextures.mjs';\nexport { generateGPULayout } from './rendering/batcher/gpu/generateGPULayout.mjs';\nexport { generateLayout } from './rendering/batcher/gpu/generateLayout.mjs';\nexport { getTextureBatchBindGroup } from './rendering/batcher/gpu/getTextureBatchBindGroup.mjs';\nexport { GpuBatchAdaptor } from './rendering/batcher/gpu/GpuBatchAdaptor.mjs';\nexport { Batch, Batcher } from './rendering/batcher/shared/Batcher.mjs';\nexport { BatcherPipe } from './rendering/batcher/shared/BatcherPipe.mjs';\nexport { BatchGeometry } from './rendering/batcher/shared/BatchGeometry.mjs';\nexport { BatchTextureArray } from './rendering/batcher/shared/BatchTextureArray.mjs';\nexport { DefaultBatcher } from './rendering/batcher/shared/DefaultBatcher.mjs';\nexport { DefaultShader } from './rendering/batcher/shared/DefaultShader.mjs';\nexport { compileHighShaderGlProgram, compileHighShaderGpuProgram } from './rendering/high-shader/compileHighShaderToProgram.mjs';\nexport { compileHighShader, compileHighShaderGl } from './rendering/high-shader/compiler/compileHighShader.mjs';\nexport { addBits } from './rendering/high-shader/compiler/utils/addBits.mjs';\nexport { compileHooks, findHooksRx } from './rendering/high-shader/compiler/utils/compileHooks.mjs';\nexport { compileInputs } from './rendering/high-shader/compiler/utils/compileInputs.mjs';\nexport { compileOutputs } from './rendering/high-shader/compiler/utils/compileOutputs.mjs';\nexport { formatShader } from './rendering/high-shader/compiler/utils/formatShader.mjs';\nexport { injectBits } from './rendering/high-shader/compiler/utils/injectBits.mjs';\nexport { fragmentGPUTemplate, fragmentGlTemplate, vertexGPUTemplate, vertexGlTemplate } from './rendering/high-shader/defaultProgramTemplate.mjs';\nexport { colorBit, colorBitGl } from './rendering/high-shader/shader-bits/colorBit.mjs';\nexport { generateTextureBatchBit, generateTextureBatchBitGl } from './rendering/high-shader/shader-bits/generateTextureBatchBit.mjs';\nexport { globalUniformsBit, globalUniformsBitGl, globalUniformsUBOBitGl } from './rendering/high-shader/shader-bits/globalUniformsBit.mjs';\nexport { localUniformBit, localUniformBitGl, localUniformBitGroup2 } from './rendering/high-shader/shader-bits/localUniformBit.mjs';\nexport { roundPixelsBit, roundPixelsBitGl } from './rendering/high-shader/shader-bits/roundPixelsBit.mjs';\nexport { textureBit, textureBitGl } from './rendering/high-shader/shader-bits/textureBit.mjs';\nexport { AlphaMask } from './rendering/mask/alpha/AlphaMask.mjs';\nexport { AlphaMaskPipe } from './rendering/mask/alpha/AlphaMaskPipe.mjs';\nexport { ColorMask } from './rendering/mask/color/ColorMask.mjs';\nexport { ColorMaskPipe } from './rendering/mask/color/ColorMaskPipe.mjs';\nexport { MaskEffectManager, MaskEffectManagerClass } from './rendering/mask/MaskEffectManager.mjs';\nexport { ScissorMask } from './rendering/mask/scissor/ScissorMask.mjs';\nexport { StencilMask } from './rendering/mask/stencil/StencilMask.mjs';\nexport { StencilMaskPipe } from './rendering/mask/stencil/StencilMaskPipe.mjs';\nexport { addMaskBounds } from './rendering/mask/utils/addMaskBounds.mjs';\nexport { addMaskLocalBounds, getMatrixRelativeToParent } from './rendering/mask/utils/addMaskLocalBounds.mjs';\nexport { autoDetectRenderer } from './rendering/renderers/autoDetectRenderer.mjs';\nexport { BUFFER_TYPE } from './rendering/renderers/gl/buffer/const.mjs';\nexport { GlBuffer } from './rendering/renderers/gl/buffer/GlBuffer.mjs';\nexport { GlBufferSystem } from './rendering/renderers/gl/buffer/GlBufferSystem.mjs';\nexport { CLEAR } from './rendering/renderers/gl/const.mjs';\nexport { GlContextSystem } from './rendering/renderers/gl/context/GlContextSystem.mjs';\nexport { GlGeometrySystem } from './rendering/renderers/gl/geometry/GlGeometrySystem.mjs';\nexport { getGlTypeFromFormat } from './rendering/renderers/gl/geometry/utils/getGlTypeFromFormat.mjs';\nexport { GlBackBufferSystem } from './rendering/renderers/gl/GlBackBufferSystem.mjs';\nexport { GlColorMaskSystem } from './rendering/renderers/gl/GlColorMaskSystem.mjs';\nexport { GlEncoderSystem } from './rendering/renderers/gl/GlEncoderSystem.mjs';\nexport { GlRenderTarget } from './rendering/renderers/gl/GlRenderTarget.mjs';\nexport { GlStencilSystem } from './rendering/renderers/gl/GlStencilSystem.mjs';\nexport { GlUboSystem } from './rendering/renderers/gl/GlUboSystem.mjs';\nexport { GlRenderTargetAdaptor } from './rendering/renderers/gl/renderTarget/GlRenderTargetAdaptor.mjs';\nexport { GlRenderTargetSystem } from './rendering/renderers/gl/renderTarget/GlRenderTargetSystem.mjs';\nexport { generateShaderSyncCode } from './rendering/renderers/gl/shader/GenerateShaderSyncCode.mjs';\nexport { getBatchSamplersUniformGroup } from './rendering/renderers/gl/shader/getBatchSamplersUniformGroup.mjs';\nexport { GlProgram } from './rendering/renderers/gl/shader/GlProgram.mjs';\nexport { GlProgramData, IGLUniformData } from './rendering/renderers/gl/shader/GlProgramData.mjs';\nexport { GlShaderSystem } from './rendering/renderers/gl/shader/GlShaderSystem.mjs';\nexport { GlUniformGroupSystem } from './rendering/renderers/gl/shader/GlUniformGroupSystem.mjs';\nexport { migrateFragmentFromV7toV8 } from './rendering/renderers/gl/shader/migrateFragmentFromV7toV8.mjs';\nexport { compileShader } from './rendering/renderers/gl/shader/program/compileShader.mjs';\nexport { defaultValue } from './rendering/renderers/gl/shader/program/defaultValue.mjs';\nexport { ensureAttributes } from './rendering/renderers/gl/shader/program/ensureAttributes.mjs';\nexport { extractAttributesFromGlProgram } from './rendering/renderers/gl/shader/program/extractAttributesFromGlProgram.mjs';\nexport { generateProgram } from './rendering/renderers/gl/shader/program/generateProgram.mjs';\nexport { getMaxFragmentPrecision } from './rendering/renderers/gl/shader/program/getMaxFragmentPrecision.mjs';\nexport { getTestContext } from './rendering/renderers/gl/shader/program/getTestContext.mjs';\nexport { getUboData } from './rendering/renderers/gl/shader/program/getUboData.mjs';\nexport { getUniformData } from './rendering/renderers/gl/shader/program/getUniformData.mjs';\nexport { logProgramError } from './rendering/renderers/gl/shader/program/logProgramError.mjs';\nexport { mapSize } from './rendering/renderers/gl/shader/program/mapSize.mjs';\nexport { mapGlToVertexFormat, mapType } from './rendering/renderers/gl/shader/program/mapType.mjs';\nexport { addProgramDefines } from './rendering/renderers/gl/shader/program/preprocessors/addProgramDefines.mjs';\nexport { ensurePrecision } from './rendering/renderers/gl/shader/program/preprocessors/ensurePrecision.mjs';\nexport { insertVersion } from './rendering/renderers/gl/shader/program/preprocessors/insertVersion.mjs';\nexport { setProgramName } from './rendering/renderers/gl/shader/program/preprocessors/setProgramName.mjs';\nexport { stripVersion } from './rendering/renderers/gl/shader/program/preprocessors/stripVersion.mjs';\nexport { WGSL_TO_STD40_SIZE, createUboElementsSTD40 } from './rendering/renderers/gl/shader/utils/createUboElementsSTD40.mjs';\nexport { createUboSyncFunctionSTD40 } from './rendering/renderers/gl/shader/utils/createUboSyncSTD40.mjs';\nexport { generateArraySyncSTD40 } from './rendering/renderers/gl/shader/utils/generateArraySyncSTD40.mjs';\nexport { generateUniformsSync } from './rendering/renderers/gl/shader/utils/generateUniformsSync.mjs';\nexport { UNIFORM_TO_ARRAY_SETTERS, UNIFORM_TO_SINGLE_SETTERS } from './rendering/renderers/gl/shader/utils/generateUniformsSyncTypes.mjs';\nexport { GlStateSystem } from './rendering/renderers/gl/state/GlStateSystem.mjs';\nexport { mapWebGLBlendModesToPixi } from './rendering/renderers/gl/state/mapWebGLBlendModesToPixi.mjs';\nexport { GL_FORMATS, GL_TARGETS, GL_TYPES, GL_WRAP_MODES } from './rendering/renderers/gl/texture/const.mjs';\nexport { GlTexture } from './rendering/renderers/gl/texture/GlTexture.mjs';\nexport { GlTextureSystem } from './rendering/renderers/gl/texture/GlTextureSystem.mjs';\nexport { glUploadBufferImageResource } from './rendering/renderers/gl/texture/uploaders/glUploadBufferImageResource.mjs';\nexport { glUploadCompressedTextureResource } from './rendering/renderers/gl/texture/uploaders/glUploadCompressedTextureResource.mjs';\nexport { glUploadImageResource } from './rendering/renderers/gl/texture/uploaders/glUploadImageResource.mjs';\nexport { glUploadVideoResource } from './rendering/renderers/gl/texture/uploaders/glUploadVideoResource.mjs';\nexport { applyStyleParams } from './rendering/renderers/gl/texture/utils/applyStyleParams.mjs';\nexport { getSupportedGlCompressedTextureFormats } from './rendering/renderers/gl/texture/utils/getSupportedGlCompressedTextureFormats.mjs';\nexport { mapFormatToGlFormat } from './rendering/renderers/gl/texture/utils/mapFormatToGlFormat.mjs';\nexport { mapFormatToGlInternalFormat } from './rendering/renderers/gl/texture/utils/mapFormatToGlInternalFormat.mjs';\nexport { mapFormatToGlType } from './rendering/renderers/gl/texture/utils/mapFormatToGlType.mjs';\nexport { compareModeToGlCompare, mipmapScaleModeToGlFilter, scaleModeToGlFilter, wrapModeToGlAddress } from './rendering/renderers/gl/texture/utils/pixiToGlMaps.mjs';\nexport { unpremultiplyAlpha } from './rendering/renderers/gl/texture/utils/unpremultiplyAlpha.mjs';\nexport { WebGLRenderer } from './rendering/renderers/gl/WebGLRenderer.mjs';\nexport { BindGroupSystem } from './rendering/renderers/gpu/BindGroupSystem.mjs';\nexport { GpuBufferSystem } from './rendering/renderers/gpu/buffer/GpuBufferSystem.mjs';\nexport { GpuReadBuffer } from './rendering/renderers/gpu/buffer/GpuReadBuffer.mjs';\nexport { UboBatch } from './rendering/renderers/gpu/buffer/UboBatch.mjs';\nexport { GpuColorMaskSystem } from './rendering/renderers/gpu/GpuColorMaskSystem.mjs';\nexport { GpuDeviceSystem } from './rendering/renderers/gpu/GpuDeviceSystem.mjs';\nexport { GpuEncoderSystem } from './rendering/renderers/gpu/GpuEncoderSystem.mjs';\nexport { GpuStencilSystem } from './rendering/renderers/gpu/GpuStencilSystem.mjs';\nexport { GpuUboSystem } from './rendering/renderers/gpu/GpuUboSystem.mjs';\nexport { GpuUniformBatchPipe } from './rendering/renderers/gpu/GpuUniformBatchPipe.mjs';\nexport { PipelineSystem } from './rendering/renderers/gpu/pipeline/PipelineSystem.mjs';\nexport { calculateProjection } from './rendering/renderers/gpu/renderTarget/calculateProjection.mjs';\nexport { GpuRenderTarget } from './rendering/renderers/gpu/renderTarget/GpuRenderTarget.mjs';\nexport { GpuRenderTargetAdaptor } from './rendering/renderers/gpu/renderTarget/GpuRenderTargetAdaptor.mjs';\nexport { GpuRenderTargetSystem } from './rendering/renderers/gpu/renderTarget/GpuRenderTargetSystem.mjs';\nexport { BindGroup } from './rendering/renderers/gpu/shader/BindGroup.mjs';\nexport { GpuProgram } from './rendering/renderers/gpu/shader/GpuProgram.mjs';\nexport { GpuShaderSystem } from './rendering/renderers/gpu/shader/GpuShaderSystem.mjs';\nexport { WGSL_ALIGN_SIZE_DATA, createUboElementsWGSL } from './rendering/renderers/gpu/shader/utils/createUboElementsWGSL.mjs';\nexport { createUboSyncFunctionWGSL } from './rendering/renderers/gpu/shader/utils/createUboSyncFunctionWGSL.mjs';\nexport { extractAttributesFromGpuProgram } from './rendering/renderers/gpu/shader/utils/extractAttributesFromGpuProgram.mjs';\nexport { extractStructAndGroups } from './rendering/renderers/gpu/shader/utils/extractStructAndGroups.mjs';\nexport { generateArraySyncWGSL } from './rendering/renderers/gpu/shader/utils/generateArraySyncWGSL.mjs';\nexport { generateGpuLayoutGroups } from './rendering/renderers/gpu/shader/utils/generateGpuLayoutGroups.mjs';\nexport { generateLayoutHash } from './rendering/renderers/gpu/shader/utils/generateLayoutHash.mjs';\nexport { removeStructAndGroupDuplicates } from './rendering/renderers/gpu/shader/utils/removeStructAndGroupDuplicates.mjs';\nexport { GpuBlendModesToPixi } from './rendering/renderers/gpu/state/GpuBlendModesToPixi.mjs';\nexport { GpuStateSystem } from './rendering/renderers/gpu/state/GpuStateSystem.mjs';\nexport { GpuStencilModesToPixi } from './rendering/renderers/gpu/state/GpuStencilModesToPixi.mjs';\nexport { GpuTextureSystem } from './rendering/renderers/gpu/texture/GpuTextureSystem.mjs';\nexport { gpuUploadBufferImageResource } from './rendering/renderers/gpu/texture/uploaders/gpuUploadBufferImageResource.mjs';\nexport { blockDataMap, gpuUploadCompressedTextureResource } from './rendering/renderers/gpu/texture/uploaders/gpuUploadCompressedTextureResource.mjs';\nexport { gpuUploadImageResource } from './rendering/renderers/gpu/texture/uploaders/gpuUploadImageSource.mjs';\nexport { gpuUploadVideoResource } from './rendering/renderers/gpu/texture/uploaders/gpuUploadVideoSource.mjs';\nexport { getSupportedGPUCompressedTextureFormats } from './rendering/renderers/gpu/texture/utils/getSupportedGPUCompressedTextureFormats.mjs';\nexport { GpuMipmapGenerator } from './rendering/renderers/gpu/texture/utils/GpuMipmapGenerator.mjs';\nexport { WebGPURenderer } from './rendering/renderers/gpu/WebGPURenderer.mjs';\nexport { BackgroundSystem } from './rendering/renderers/shared/background/BackgroundSystem.mjs';\nexport { BlendModePipe } from './rendering/renderers/shared/blendModes/BlendModePipe.mjs';\nexport { Buffer } from './rendering/renderers/shared/buffer/Buffer.mjs';\nexport { BufferResource } from './rendering/renderers/shared/buffer/BufferResource.mjs';\nexport { BufferUsage } from './rendering/renderers/shared/buffer/const.mjs';\nexport { fastCopy } from './rendering/renderers/shared/buffer/utils/fastCopy.mjs';\nexport { ExtractSystem } from './rendering/renderers/shared/extract/ExtractSystem.mjs';\nexport { GenerateTextureSystem } from './rendering/renderers/shared/extract/GenerateTextureSystem.mjs';\nexport { DRAW_MODES } from './rendering/renderers/shared/geometry/const.mjs';\nexport { Geometry } from './rendering/renderers/shared/geometry/Geometry.mjs';\nexport { buildSimpleUvs, buildUvs } from './rendering/renderers/shared/geometry/utils/buildUvs.mjs';\nexport { ensureIsBuffer } from './rendering/renderers/shared/geometry/utils/ensureIsBuffer.mjs';\nexport { getAttributeInfoFromFormat } from './rendering/renderers/shared/geometry/utils/getAttributeInfoFromFormat.mjs';\nexport { getGeometryBounds } from './rendering/renderers/shared/geometry/utils/getGeometryBounds.mjs';\nexport { transformVertices } from './rendering/renderers/shared/geometry/utils/transformVertices.mjs';\nexport { InstructionSet } from './rendering/renderers/shared/instructions/InstructionSet.mjs';\nexport { GlobalUniformSystem } from './rendering/renderers/shared/renderTarget/GlobalUniformSystem.mjs';\nexport { isRenderingToScreen } from './rendering/renderers/shared/renderTarget/isRenderingToScreen.mjs';\nexport { RenderTarget } from './rendering/renderers/shared/renderTarget/RenderTarget.mjs';\nexport { RenderTargetSystem } from './rendering/renderers/shared/renderTarget/RenderTargetSystem.mjs';\nexport { viewportFromFrame } from './rendering/renderers/shared/renderTarget/viewportFromFrame.mjs';\nexport { SchedulerSystem } from './rendering/renderers/shared/SchedulerSystem.mjs';\nexport { ShaderStage } from './rendering/renderers/shared/shader/const.mjs';\nexport { Shader } from './rendering/renderers/shared/shader/Shader.mjs';\nexport { UNIFORM_TYPES_MAP, UNIFORM_TYPES_VALUES } from './rendering/renderers/shared/shader/types.mjs';\nexport { UboSystem } from './rendering/renderers/shared/shader/UboSystem.mjs';\nexport { UniformGroup } from './rendering/renderers/shared/shader/UniformGroup.mjs';\nexport { createUboSyncFunction } from './rendering/renderers/shared/shader/utils/createUboSyncFunction.mjs';\nexport { getDefaultUniformValue } from './rendering/renderers/shared/shader/utils/getDefaultUniformValue.mjs';\nexport { uboSyncFunctionsSTD40, uboSyncFunctionsWGSL } from './rendering/renderers/shared/shader/utils/uboSyncFunctions.mjs';\nexport { uniformParsers } from './rendering/renderers/shared/shader/utils/uniformParsers.mjs';\nexport { HelloSystem } from './rendering/renderers/shared/startup/HelloSystem.mjs';\nexport { BLEND_TO_NPM, STENCIL_MODES } from './rendering/renderers/shared/state/const.mjs';\nexport { getAdjustedBlendModeBlend } from './rendering/renderers/shared/state/getAdjustedBlendModeBlend.mjs';\nexport { State } from './rendering/renderers/shared/state/State.mjs';\nexport { AbstractRenderer } from './rendering/renderers/shared/system/AbstractRenderer.mjs';\nexport { SharedRenderPipes, SharedSystems } from './rendering/renderers/shared/system/SharedSystems.mjs';\nexport { SystemRunner } from './rendering/renderers/shared/system/SystemRunner.mjs';\nexport { CanvasPool, CanvasPoolClass } from './rendering/renderers/shared/texture/CanvasPool.mjs';\nexport { DEPRECATED_SCALE_MODES, DEPRECATED_WRAP_MODES, MSAA_QUALITY, SCALE_MODES, WRAP_MODES } from './rendering/renderers/shared/texture/const.mjs';\nexport { RenderableGCSystem } from './rendering/renderers/shared/texture/RenderableGCSystem.mjs';\nexport { RenderTexture } from './rendering/renderers/shared/texture/RenderTexture.mjs';\nexport { BufferImageSource } from './rendering/renderers/shared/texture/sources/BufferImageSource.mjs';\nexport { CanvasSource } from './rendering/renderers/shared/texture/sources/CanvasSource.mjs';\nexport { CompressedSource } from './rendering/renderers/shared/texture/sources/CompressedSource.mjs';\nexport { ImageSource } from './rendering/renderers/shared/texture/sources/ImageSource.mjs';\nexport { TextureSource } from './rendering/renderers/shared/texture/sources/TextureSource.mjs';\nexport { VideoSource } from './rendering/renderers/shared/texture/sources/VideoSource.mjs';\nexport { Texture } from './rendering/renderers/shared/texture/Texture.mjs';\nexport { TextureGCSystem } from './rendering/renderers/shared/texture/TextureGCSystem.mjs';\nexport { TextureMatrix } from './rendering/renderers/shared/texture/TextureMatrix.mjs';\nexport { TexturePool, TexturePoolClass } from './rendering/renderers/shared/texture/TexturePool.mjs';\nexport { TextureStyle } from './rendering/renderers/shared/texture/TextureStyle.mjs';\nexport { TextureUvs } from './rendering/renderers/shared/texture/TextureUvs.mjs';\nexport { generateUID } from './rendering/renderers/shared/texture/utils/generateUID.mjs';\nexport { getCanvasTexture, hasCachedCanvasTexture } from './rendering/renderers/shared/texture/utils/getCanvasTexture.mjs';\nexport { getSupportedCompressedTextureFormats } from './rendering/renderers/shared/texture/utils/getSupportedCompressedTextureFormats.mjs';\nexport { getSupportedTextureFormats, nonCompressedFormats } from './rendering/renderers/shared/texture/utils/getSupportedTextureFormats.mjs';\nexport { autoDetectSource, resourceToTexture, textureFrom } from './rendering/renderers/shared/texture/utils/textureFrom.mjs';\nexport { createIdFromString } from './rendering/renderers/shared/utils/createIdFromString.mjs';\nexport { parseFunctionBody } from './rendering/renderers/shared/utils/parseFunctionBody.mjs';\nexport { ViewSystem } from './rendering/renderers/shared/view/ViewSystem.mjs';\nexport { RendererType } from './rendering/renderers/types.mjs';\nexport { default as particlesFrag } from './scene/particle-container/shared/shader/particles.frag.mjs';\nexport { default as particlesVert } from './scene/particle-container/shared/shader/particles.vert.mjs';\nexport { default as particlesWgsl } from './scene/particle-container/shared/shader/particles.wgsl.mjs';\nexport { Bounds } from './scene/container/bounds/Bounds.mjs';\nexport { getFastGlobalBounds } from './scene/container/bounds/getFastGlobalBounds.mjs';\nexport { _getGlobalBounds, getGlobalBounds, updateTransformBackwards } from './scene/container/bounds/getGlobalBounds.mjs';\nexport { getLocalBounds, getParent } from './scene/container/bounds/getLocalBounds.mjs';\nexport { getGlobalRenderableBounds } from './scene/container/bounds/getRenderableBounds.mjs';\nexport { boundsPool, matrixPool } from './scene/container/bounds/utils/matrixAndBoundsPool.mjs';\nexport { cacheAsTextureMixin } from './scene/container/container-mixins/cacheAsTextureMixin.mjs';\nexport { childrenHelperMixin } from './scene/container/container-mixins/childrenHelperMixin.mjs';\nexport { collectRenderablesMixin } from './scene/container/container-mixins/collectRenderablesMixin.mjs';\nexport { effectsMixin } from './scene/container/container-mixins/effectsMixin.mjs';\nexport { findMixin } from './scene/container/container-mixins/findMixin.mjs';\nexport { getFastGlobalBoundsMixin } from './scene/container/container-mixins/getFastGlobalBoundsMixin.mjs';\nexport { bgr2rgb, getGlobalMixin } from './scene/container/container-mixins/getGlobalMixin.mjs';\nexport { measureMixin } from './scene/container/container-mixins/measureMixin.mjs';\nexport { onRenderMixin } from './scene/container/container-mixins/onRenderMixin.mjs';\nexport { sortMixin } from './scene/container/container-mixins/sortMixin.mjs';\nexport { toLocalGlobalMixin } from './scene/container/container-mixins/toLocalGlobalMixin.mjs';\nexport { Container, UPDATE_BLEND, UPDATE_COLOR, UPDATE_TRANSFORM, UPDATE_VISIBLE } from './scene/container/Container.mjs';\nexport { CustomRenderPipe } from './scene/container/CustomRenderPipe.mjs';\nexport { RenderContainer } from './scene/container/RenderContainer.mjs';\nexport { RenderGroup } from './scene/container/RenderGroup.mjs';\nexport { RenderGroupPipe } from './scene/container/RenderGroupPipe.mjs';\nexport { RenderGroupSystem } from './scene/container/RenderGroupSystem.mjs';\nexport { assignWithIgnore } from './scene/container/utils/assignWithIgnore.mjs';\nexport { checkChildrenDidChange } from './scene/container/utils/checkChildrenDidChange.mjs';\nexport { clearList } from './scene/container/utils/clearList.mjs';\nexport { collectAllRenderables } from './scene/container/utils/collectAllRenderables.mjs';\nexport { definedProps } from './scene/container/utils/definedProps.mjs';\nexport { executeInstructions } from './scene/container/utils/executeInstructions.mjs';\nexport { mixHexColors } from './scene/container/utils/mixHexColors.mjs';\nexport { multiplyColors } from './scene/container/utils/multiplyColors.mjs';\nexport { multiplyHexColors } from './scene/container/utils/multiplyHexColors.mjs';\nexport { updateLocalTransform } from './scene/container/utils/updateLocalTransform.mjs';\nexport { updateRenderGroupTransform, updateRenderGroupTransforms, updateTransformAndChildren } from './scene/container/utils/updateRenderGroupTransforms.mjs';\nexport { updateWorldTransform } from './scene/container/utils/updateWorldTransform.mjs';\nexport { validateRenderables } from './scene/container/utils/validateRenderables.mjs';\nexport { GlGraphicsAdaptor } from './scene/graphics/gl/GlGraphicsAdaptor.mjs';\nexport { color32BitToUniform, colorToUniform } from './scene/graphics/gpu/colorToUniform.mjs';\nexport { GpuGraphicsAdaptor } from './scene/graphics/gpu/GpuGraphicsAdaptor.mjs';\nexport { BatchableGraphics } from './scene/graphics/shared/BatchableGraphics.mjs';\nexport { buildAdaptiveBezier } from './scene/graphics/shared/buildCommands/buildAdaptiveBezier.mjs';\nexport { buildAdaptiveQuadratic } from './scene/graphics/shared/buildCommands/buildAdaptiveQuadratic.mjs';\nexport { buildArc } from './scene/graphics/shared/buildCommands/buildArc.mjs';\nexport { buildArcTo } from './scene/graphics/shared/buildCommands/buildArcTo.mjs';\nexport { buildArcToSvg } from './scene/graphics/shared/buildCommands/buildArcToSvg.mjs';\nexport { buildCircle, buildEllipse, buildRoundedRectangle } from './scene/graphics/shared/buildCommands/buildCircle.mjs';\nexport { buildLine } from './scene/graphics/shared/buildCommands/buildLine.mjs';\nexport { buildPixelLine } from './scene/graphics/shared/buildCommands/buildPixelLine.mjs';\nexport { buildPolygon } from './scene/graphics/shared/buildCommands/buildPolygon.mjs';\nexport { buildRectangle } from './scene/graphics/shared/buildCommands/buildRectangle.mjs';\nexport { buildTriangle } from './scene/graphics/shared/buildCommands/buildTriangle.mjs';\nexport { closePointEps, curveEps } from './scene/graphics/shared/const.mjs';\nexport { FillGradient } from './scene/graphics/shared/fill/FillGradient.mjs';\nexport { FillPattern } from './scene/graphics/shared/fill/FillPattern.mjs';\nexport { Graphics } from './scene/graphics/shared/Graphics.mjs';\nexport { GraphicsContext } from './scene/graphics/shared/GraphicsContext.mjs';\nexport { GpuGraphicsContext, GraphicsContextRenderData, GraphicsContextSystem } from './scene/graphics/shared/GraphicsContextSystem.mjs';\nexport { GraphicsPipe } from './scene/graphics/shared/GraphicsPipe.mjs';\nexport { GraphicsPath } from './scene/graphics/shared/path/GraphicsPath.mjs';\nexport { roundedShapeArc, roundedShapeQuadraticCurve } from './scene/graphics/shared/path/roundShape.mjs';\nexport { ShapePath } from './scene/graphics/shared/path/ShapePath.mjs';\nexport { parseSVGDefinitions } from './scene/graphics/shared/svg/parseSVGDefinitions.mjs';\nexport { parseSVGFloatAttribute } from './scene/graphics/shared/svg/parseSVGFloatAttribute.mjs';\nexport { parseSVGPath } from './scene/graphics/shared/svg/parseSVGPath.mjs';\nexport { parseAttribute, parseSVGStyle, styleAttributes } from './scene/graphics/shared/svg/parseSVGStyle.mjs';\nexport { SVGParser } from './scene/graphics/shared/svg/SVGParser.mjs';\nexport { extractSvgUrlId } from './scene/graphics/shared/svg/utils/extractSvgUrlId.mjs';\nexport { buildContextBatches, shapeBuilders } from './scene/graphics/shared/utils/buildContextBatches.mjs';\nexport { buildGeometryFromPath } from './scene/graphics/shared/utils/buildGeometryFromPath.mjs';\nexport { toFillStyle, toStrokeStyle } from './scene/graphics/shared/utils/convertFillInputToFillStyle.mjs';\nexport { generateTextureMatrix } from './scene/graphics/shared/utils/generateTextureFillMatrix.mjs';\nexport { getOrientationOfPoints } from './scene/graphics/shared/utils/getOrientationOfPoints.mjs';\nexport { triangulateWithHoles } from './scene/graphics/shared/utils/triangulateWithHoles.mjs';\nexport { RenderLayer, RenderLayerClass } from './scene/layers/RenderLayer.mjs';\nexport { PerspectiveMesh } from './scene/mesh-perspective/PerspectiveMesh.mjs';\nexport { PerspectivePlaneGeometry } from './scene/mesh-perspective/PerspectivePlaneGeometry.mjs';\nexport { applyProjectiveTransformationToPlane } from './scene/mesh-perspective/utils/applyProjectiveTransformationToPlane.mjs';\nexport { compute2DProjection } from './scene/mesh-perspective/utils/compute2DProjections.mjs';\nexport { MeshPlane } from './scene/mesh-plane/MeshPlane.mjs';\nexport { PlaneGeometry } from './scene/mesh-plane/PlaneGeometry.mjs';\nexport { MeshRope } from './scene/mesh-simple/MeshRope.mjs';\nexport { MeshSimple } from './scene/mesh-simple/MeshSimple.mjs';\nexport { RopeGeometry } from './scene/mesh-simple/RopeGeometry.mjs';\nexport { GlMeshAdaptor } from './scene/mesh/gl/GlMeshAdaptor.mjs';\nexport { GpuMeshAdapter } from './scene/mesh/gpu/GpuMeshAdapter.mjs';\nexport { BatchableMesh } from './scene/mesh/shared/BatchableMesh.mjs';\nexport { getTextureDefaultMatrix } from './scene/mesh/shared/getTextureDefaultMatrix.mjs';\nexport { Mesh } from './scene/mesh/shared/Mesh.mjs';\nexport { MeshGeometry } from './scene/mesh/shared/MeshGeometry.mjs';\nexport { MeshPipe } from './scene/mesh/shared/MeshPipe.mjs';\nexport { GlParticleContainerAdaptor } from './scene/particle-container/gl/GlParticleContainerAdaptor.mjs';\nexport { GpuParticleContainerAdaptor } from './scene/particle-container/gpu/GpuParticleContainerAdaptor.mjs';\nexport { GlParticleContainerPipe } from './scene/particle-container/shared/GlParticleContainerPipe.mjs';\nexport { GpuParticleContainerPipe } from './scene/particle-container/shared/GpuParticleContainerPipe.mjs';\nexport { Particle } from './scene/particle-container/shared/Particle.mjs';\nexport { ParticleBuffer } from './scene/particle-container/shared/ParticleBuffer.mjs';\nexport { ParticleContainer } from './scene/particle-container/shared/ParticleContainer.mjs';\nexport { ParticleContainerPipe } from './scene/particle-container/shared/ParticleContainerPipe.mjs';\nexport { particleData } from './scene/particle-container/shared/particleData.mjs';\nexport { ParticleShader } from './scene/particle-container/shared/shader/ParticleShader.mjs';\nexport { createIndicesForQuads } from './scene/particle-container/shared/utils/createIndicesForQuads.mjs';\nexport { generateParticleUpdateFunction } from './scene/particle-container/shared/utils/generateParticleUpdateFunction.mjs';\nexport { AnimatedSprite } from './scene/sprite-animated/AnimatedSprite.mjs';\nexport { NineSliceGeometry } from './scene/sprite-nine-slice/NineSliceGeometry.mjs';\nexport { NineSlicePlane, NineSliceSprite } from './scene/sprite-nine-slice/NineSliceSprite.mjs';\nexport { NineSliceSpritePipe } from './scene/sprite-nine-slice/NineSliceSpritePipe.mjs';\nexport { tilingBit, tilingBitGl } from './scene/sprite-tiling/shader/tilingBit.mjs';\nexport { TilingSpriteShader } from './scene/sprite-tiling/shader/TilingSpriteShader.mjs';\nexport { TilingSprite } from './scene/sprite-tiling/TilingSprite.mjs';\nexport { TilingSpritePipe } from './scene/sprite-tiling/TilingSpritePipe.mjs';\nexport { applyMatrix } from './scene/sprite-tiling/utils/applyMatrix.mjs';\nexport { QuadGeometry } from './scene/sprite-tiling/utils/QuadGeometry.mjs';\nexport { setPositions } from './scene/sprite-tiling/utils/setPositions.mjs';\nexport { setUvs } from './scene/sprite-tiling/utils/setUvs.mjs';\nexport { BatchableSprite } from './scene/sprite/BatchableSprite.mjs';\nexport { Sprite } from './scene/sprite/Sprite.mjs';\nexport { SpritePipe } from './scene/sprite/SpritePipe.mjs';\nexport { AbstractBitmapFont } from './scene/text-bitmap/AbstractBitmapFont.mjs';\nexport { bitmapFontTextParser } from './scene/text-bitmap/asset/bitmapFontTextParser.mjs';\nexport { bitmapFontXMLParser } from './scene/text-bitmap/asset/bitmapFontXMLParser.mjs';\nexport { bitmapFontXMLStringParser } from './scene/text-bitmap/asset/bitmapFontXMLStringParser.mjs';\nexport { bitmapFontCachePlugin, loadBitmapFont } from './scene/text-bitmap/asset/loadBitmapFont.mjs';\nexport { BitmapFont } from './scene/text-bitmap/BitmapFont.mjs';\nexport { BitmapFontManager } from './scene/text-bitmap/BitmapFontManager.mjs';\nexport { BitmapText } from './scene/text-bitmap/BitmapText.mjs';\nexport { BitmapTextPipe } from './scene/text-bitmap/BitmapTextPipe.mjs';\nexport { DynamicBitmapFont } from './scene/text-bitmap/DynamicBitmapFont.mjs';\nexport { getBitmapTextLayout } from './scene/text-bitmap/utils/getBitmapTextLayout.mjs';\nexport { resolveCharacters } from './scene/text-bitmap/utils/resolveCharacters.mjs';\nexport { HTMLText } from './scene/text-html/HTMLText.mjs';\nexport { HTMLTextPipe } from './scene/text-html/HTMLTextPipe.mjs';\nexport { HTMLTextRenderData, nssvg, nsxhtml } from './scene/text-html/HTMLTextRenderData.mjs';\nexport { HTMLTextStyle } from './scene/text-html/HTMLTextStyle.mjs';\nexport { HTMLTextSystem } from './scene/text-html/HTMLTextSystem.mjs';\nexport { extractFontFamilies } from './scene/text-html/utils/extractFontFamilies.mjs';\nexport { FontStylePromiseCache, getFontCss } from './scene/text-html/utils/getFontCss.mjs';\nexport { getSVGUrl } from './scene/text-html/utils/getSVGUrl.mjs';\nexport { getTemporaryCanvasFromImage } from './scene/text-html/utils/getTemporaryCanvasFromImage.mjs';\nexport { loadFontAsBase64 } from './scene/text-html/utils/loadFontAsBase64.mjs';\nexport { loadFontCSS } from './scene/text-html/utils/loadFontCSS.mjs';\nexport { loadSVGImage } from './scene/text-html/utils/loadSVGImage.mjs';\nexport { measureHtmlText } from './scene/text-html/utils/measureHtmlText.mjs';\nexport { textStyleToCSS } from './scene/text-html/utils/textStyleToCSS.mjs';\nexport { AbstractText, ensureTextOptions } from './scene/text/AbstractText.mjs';\nexport { CanvasTextMetrics } from './scene/text/canvas/CanvasTextMetrics.mjs';\nexport { CanvasTextPipe } from './scene/text/canvas/CanvasTextPipe.mjs';\nexport { CanvasTextSystem } from './scene/text/canvas/CanvasTextSystem.mjs';\nexport { fontStringFromTextStyle } from './scene/text/canvas/utils/fontStringFromTextStyle.mjs';\nexport { getCanvasFillStyle } from './scene/text/canvas/utils/getCanvasFillStyle.mjs';\nexport { SdfShader } from './scene/text/sdfShader/SdfShader.mjs';\nexport { localUniformMSDFBit, localUniformMSDFBitGl } from './scene/text/sdfShader/shader-bits/localUniformMSDFBit.mjs';\nexport { mSDFBit, mSDFBitGl } from './scene/text/sdfShader/shader-bits/mSDFBit.mjs';\nexport { Text } from './scene/text/Text.mjs';\nexport { TextStyle } from './scene/text/TextStyle.mjs';\nexport { ensureTextStyle } from './scene/text/utils/ensureTextStyle.mjs';\nexport { generateTextStyleKey } from './scene/text/utils/generateTextStyleKey.mjs';\nexport { getPo2TextureFromSource } from './scene/text/utils/getPo2TextureFromSource.mjs';\nexport { updateTextBounds } from './scene/text/utils/updateTextBounds.mjs';\nexport { ViewContainer } from './scene/view/ViewContainer.mjs';\nexport { Spritesheet } from './spritesheet/Spritesheet.mjs';\nexport { spritesheetAsset } from './spritesheet/spritesheetAsset.mjs';\nexport { UPDATE_PRIORITY } from './ticker/const.mjs';\nexport { Ticker } from './ticker/Ticker.mjs';\nexport { TickerListener } from './ticker/TickerListener.mjs';\nexport { detectVideoAlphaMode } from './utils/browser/detectVideoAlphaMode.mjs';\nexport { isMobile } from './utils/browser/isMobile.mjs';\nexport { isSafari } from './utils/browser/isSafari.mjs';\nexport { isWebGLSupported } from './utils/browser/isWebGLSupported.mjs';\nexport { isWebGPUSupported } from './utils/browser/isWebGPUSupported.mjs';\nexport { unsafeEvalSupported } from './utils/browser/unsafeEvalSupported.mjs';\nexport { getCanvasBoundingBox } from './utils/canvas/getCanvasBoundingBox.mjs';\nexport { DATA_URI, VERSION } from './utils/const.mjs';\nexport { default as EventEmitter } from 'eventemitter3';\nexport { cleanArray, cleanHash } from './utils/data/clean.mjs';\nexport { removeItems } from './utils/data/removeItems.mjs';\nexport { resetUids, uid } from './utils/data/uid.mjs';\nexport { updateQuadBounds } from './utils/data/updateQuadBounds.mjs';\nexport { ViewableBuffer } from './utils/data/ViewableBuffer.mjs';\nexport { ApplicationInitHook, RendererInitHook } from './utils/global/globalHooks.mjs';\nexport { deprecation, v8_0_0, v8_3_4 } from './utils/logging/deprecation.mjs';\nexport { logDebugTexture } from './utils/logging/logDebugTexture.mjs';\nexport { logRenderGroupScene, logScene } from './utils/logging/logScene.mjs';\nexport { warn } from './utils/logging/warn.mjs';\nexport { NOOP } from './utils/misc/NOOP.mjs';\nexport { Transform } from './utils/misc/Transform.mjs';\nexport { getResolutionOfUrl } from './utils/network/getResolutionOfUrl.mjs';\nexport { path } from './utils/path.mjs';\nexport { Pool } from './utils/pool/Pool.mjs';\nexport { BigPool, PoolGroupClass } from './utils/pool/PoolGroup.mjs';\nexport { sayHello } from './utils/sayHello.mjs';\nexport { default as earcut } from 'earcut';\n\n\"use strict\";\nextensions.add(browserExt, webworkerExt);\n\nexport { browserExt, extensions, webworkerExt };\n//# sourceMappingURL=index.mjs.map\n","import * as PIXI from 'pixi.js';\nimport type OpenSeadragon from 'openseadragon';\nimport { ShapeType } from '@annotorious/annotorious';\nimport type { AnnotationState, DrawingStyle, DrawingStyleExpression, Filter, Selection } from '@annotorious/core';\nimport type { Ellipse, ImageAnnotation, MultiPolygon, MultiPolygonRing, Polygon, Rectangle, Shape } from '@annotorious/annotorious';\n\nconst DEFAULT_FILL = 0xffffff;\nconst DEFAULT_FILL_ALPHA = 0.25;\nconst DEFAULT_STROKE = 0xffffff;\nconst DEFAULT_STROKE_ALPHA = 1;\nconst DEFAULT_STROKE_WIDTH = 1.5;\n\n// Fast redraws skip counter-scaling operations\nlet fastRedraw = false;\n\n// Likewise, if scale has not changed, counter-scaling is also skipped\nlet lastScale: number;\n\ninterface AnnotationShape {\n\n annotation: ImageAnnotation;\n\n fill: PIXI.Graphics;\n\n stroke: PIXI.Graphics;\n\n strokeWidth: number;\n\n}\n\nconst getGraphicsStyle = (style?: DrawingStyle) => {\n const fillStyle = {\n tint: style?.fill ? new PIXI.Color(style.fill).toNumber() : DEFAULT_FILL,\n alpha: style?.fillOpacity !== undefined ?\n Math.min(style.fillOpacity, 1) :\n String(style?.fill).toLowerCase().startsWith('rgba(') ?\n (new PIXI.Color(style?.fill)).alpha :\n DEFAULT_FILL_ALPHA\n };\n\n const strokeStyle = {\n tint: style?.stroke ? new PIXI.Color(style.stroke).toNumber() : DEFAULT_STROKE,\n alpha: style?.strokeOpacity !== undefined ?\n Math.min(style.strokeOpacity, 1) :\n String(style?.stroke).toLowerCase().startsWith('rgba(') ?\n (new PIXI.Color(style?.stroke)).alpha :\n DEFAULT_STROKE_ALPHA,\n lineWidth: style?.strokeWidth === undefined ? DEFAULT_STROKE_WIDTH : style.strokeWidth\n }\n\n return { fillStyle, strokeStyle };\n}\n\nconst drawSimpleShape = <T extends Shape>(\n drawFn: (s: T, g: PIXI.Graphics\n) => void) => (container: PIXI.Container, shape: T, style?: DrawingStyle) => {\n const { fillStyle, strokeStyle } = getGraphicsStyle(style);\n\n const fillGraphics = new PIXI.Graphics();\n drawFn(shape, fillGraphics); \n fillGraphics.fill();\n fillGraphics.tint = fillStyle.tint;\n fillGraphics.alpha = fillStyle.alpha;\n\n container.addChild(fillGraphics);\n \n const strokeGraphics = new PIXI.Graphics();\n const lineWidth = strokeStyle.lineWidth === 1 ? 1 : strokeStyle.lineWidth / lastScale;\n drawFn(shape, strokeGraphics); \n\n console.log('simple shape', lineWidth);\n\n strokeGraphics.stroke({ \n width: lineWidth, \n color: strokeStyle.tint || 0xffffff,\n alignment: 0.5,\n alpha: strokeStyle.alpha,\n pixelLine: strokeStyle.lineWidth === 1\n } as PIXI.StrokeInput);\n\n container.addChild(strokeGraphics);\n \n return { fill: fillGraphics, stroke: strokeGraphics, strokeWidth: strokeStyle.lineWidth };\n}\n\nconst drawRectangle = drawSimpleShape((rectangle: Rectangle, g: PIXI.Graphics) => {\n const { x, y, w, h } = rectangle.geometry;\n g.rect(x, y, w, h);\n});\n\nconst drawEllipse = drawSimpleShape((ellipse: Ellipse, g: PIXI.Graphics) => {\n const { cx, cy, rx, ry } = ellipse.geometry;\n g.ellipse(cx, cy, rx, ry)\n});\n\nconst drawPolygon = drawSimpleShape((polygon: Polygon, g: PIXI.Graphics) => {\n const flattened = polygon.geometry.points.reduce<number[]>((flat, xy) => ([...flat, ...xy]), []); \n g.poly(flattened);\n});\n\nconst drawMultiPolygon = (container: PIXI.Container, multi: MultiPolygon, style?: DrawingStyle) => {\n const flattenRing = (ring: MultiPolygonRing) => \n ring.points.reduce<number[]>((flat, xy) => ([...flat, ...xy]), []);\n\n const { fillStyle, strokeStyle } = getGraphicsStyle(style);\n\n let fillGraphics = new PIXI.Graphics();\n let strokeGraphics = new PIXI.Graphics();\n\n multi.geometry.polygons.forEach(element => {\n const [outer, ...holes] = element.rings;\n\n fillGraphics.poly(flattenRing(outer)).fill();\n fillGraphics.tint = fillStyle.tint;\n fillGraphics.alpha = fillStyle.alpha;\n\n holes.forEach(hole => fillGraphics.poly(flattenRing(hole)).cut());\n\n container.addChild(fillGraphics);\n\n const lineWidth = strokeStyle.lineWidth === 1 ? 1 : strokeStyle.lineWidth / lastScale;\n strokeGraphics.stroke({ \n width: lineWidth, \n color: 0xffffff,\n alignment: 0.5,\n tint: strokeStyle.tint || 0xFFFFFF,\n alpha: strokeStyle.alpha,\n pixelLine: strokeStyle.lineWidth === 1\n } as PIXI.StrokeInput);\n\n strokeGraphics.poly(flattenRing(outer));\n holes.forEach(hole => strokeGraphics.poly(flattenRing(hole)));\n \n container.addChild(strokeGraphics);\n });\n\n return { fill: fillGraphics, stroke: strokeGraphics, strokeWidth: strokeStyle.lineWidth };\n}\n\nconst getCurrentScale = (viewer: OpenSeadragon.Viewer) => {\n const containerWidth = viewer.viewport.getContainerSize().x;\n const zoom = viewer.viewport.getZoom(true);\n return zoom * containerWidth / viewer.world.getContentFactor();\n}\n\nconst redrawStage = (\n viewer: OpenSeadragon.Viewer, \n graphics: PIXI.Container,\n shapes: Map<String, AnnotationShape>,\n renderer?: PIXI.Renderer<PIXI.ICanvas>\n) => {\n if (!renderer) return;\n\n const viewportBounds = viewer.viewport.viewportToImageRectangle(viewer.viewport.getBounds(true));\n const scale = getCurrentScale(viewer);\n\n if (scale !== lastScale || !fastRedraw) {\n fastRedraw = true;\n\n shapes.forEach(({ stroke, strokeWidth, annotation }) => {\n const lineStyle = { ...stroke.strokeStyle };\n \n if (strokeWidth > 1) {\n // Disable fast redraws if at least one shape\n // has non-native stroke\n fastRedraw = scale === lastScale;\n\n // Counter scale stroke\n lineStyle.width = strokeWidth / scale;\n lineStyle.pixelLine = false;\n\n stroke.setStrokeStyle(lineStyle);\n\n // stroke.didViewUpdate = true;\n\n console.log(stroke);\n } else if (strokeWidth === 1 && !lineStyle.pixelLine) {\n // Set native stroke if necessary\n // lineStyle.width = 1;\n // lineStyle.pixelLine = true;\n\n // stroke.geometry.invalidate();\n }\n });\n }\n\n lastScale = scale;\n\n const flipped = viewer.viewport.getFlip();\n\n // @ts-ignore note: getRotation(true <- realtime value) only since OSD 4!\n let rotation = Math.PI * viewer.viewport.getRotation(true) / 180;\n\n if (rotation < 0)\n rotation += 2 * Math.PI;\n \n if (rotation > 2 * Math.PI)\n rotation -= 2 * Math.PI;\n\n const dx = flipped ? \n // @ts-ignore\n viewer.viewport._containerInnerSize.x + viewportBounds.x * scale :\n - viewportBounds.x * scale;\n\n const dy = - viewportBounds.y * scale;\n\n let offsetX: number, offsetY: number;\n\n if (rotation > 0 && rotation <= Math.PI / 2) {\n offsetX = viewportBounds.height * scale;\n offsetY = 0;\n } else if (rotation > Math.PI / 2 && rotation <= Math.PI) {\n offsetX = viewportBounds.width * scale;\n offsetY = viewportBounds.height * scale;\n } else if (rotation > Math.PI && rotation <= Math.PI * 1.5) {\n offsetX = 0;\n offsetY = viewportBounds.width * scale;\n } else {\n offsetX = 0;\n offsetY = 0;\n }\n\n graphics.position.x = offsetX + dx * Math.cos(rotation) - dy * Math.sin(rotation);\n graphics.position.y = offsetY + dx * Math.sin(rotation) + dy * Math.cos(rotation);\n graphics.scale.set(flipped ? - scale : scale, scale);\n graphics.rotation = rotation;\n \n renderer.render(graphics);\n}\n\nexport const createStage = (\n viewer: OpenSeadragon.Viewer, \n canvas: HTMLCanvasElement\n) => {\n const graphics = new PIXI.Container();\n\n let renderer: PIXI.Renderer;\n\n PIXI.autoDetectRenderer({\n width: canvas.width, \n height: canvas.height,\n backgroundAlpha: 0,\n canvas,\n antialias: true,\n resolution: 2\n }).then(r => {\n renderer = r;\n\n renderer.render(graphics);\n redrawStage(viewer, graphics, annotationShapes, renderer);\n });\n\n // Lookup table: shapes and annotations by annotation ID\n const annotationShapes = new Map<string, AnnotationShape>(); \n\n // Current selection (if any)\n let selectedIds = new Set<string>();\n\n // Current hover (if any)\n let hovered: string | undefined;\n\n // Current style (if any)\n let style: DrawingStyleExpression<ImageAnnotation> | undefined = undefined;\n\n lastScale = getCurrentScale(viewer);\n\n const addAnnotation = (annotation: ImageAnnotation, state?: AnnotationState) => {\n // In case this annotation adds stroke > 1\n fastRedraw = false; \n\n const { selector } = annotation.target;\n\n const s = typeof style == 'function' ? style(annotation, state) : style;\n\n let rendered: { fill: PIXI.Graphics, stroke: PIXI.Graphics, strokeWidth: number } | undefined;\n\n if (selector.type === ShapeType.RECTANGLE) {\n rendered = drawRectangle(graphics, selector as Rectangle, s);\n } else if (selector.type === ShapeType.POLYGON) {\n rendered = drawPolygon(graphics, selector as Polygon, s);\n } else if (selector.type === ShapeType.ELLIPSE) {\n rendered = drawEllipse(graphics, selector as Ellipse, s);\n } else if (selector.type === ShapeType.MULTIPOLYGLON) {\n rendered = drawMultiPolygon(graphics, selector as MultiPolygon, s);\n } else {\n console.warn(`Unsupported shape type: ${selector.type}`)\n }\n\n if (rendered)\n annotationShapes.set(annotation.id, { annotation, ...rendered });\n }\n\n const removeAnnotation = (annotation: ImageAnnotation) => {\n const rendered = annotationShapes.get(annotation.id);\n if (rendered) {\n annotationShapes.delete(annotation.id); \n rendered.fill.destroy();\n rendered.stroke.destroy(); \n }\n }\n\n const updateAnnotation = (oldValue: ImageAnnotation, newValue: ImageAnnotation, state?: AnnotationState) => {\n // In case this annotation adds stroke > 1\n fastRedraw = false; \n \n const rendered = annotationShapes.get(oldValue.id);\n\n if (rendered) {\n annotationShapes.delete(oldValue.id);\n rendered.fill.destroy();\n rendered.stroke.destroy();\n\n addAnnotation(newValue, state);\n }\n }\n\n const redrawAnnotation = (id: string, state?: AnnotationState) => {\n const rendered = annotationShapes.get(id);\n if (rendered) {\n annotationShapes.delete(id); \n rendered.fill.destroy();\n rendered.stroke.destroy();\n\n addAnnotation(rendered.annotation, state);\n }\n }\n\n const resize = (width: number, height: number) => {\n if (!renderer) return;\n renderer.resize(width, height);\n renderer.render(graphics);\n }\n\n const setFilter = (filter?: Filter<ImageAnnotation>) => {\n // In case this filter adds annotations with stroke > 1\n fastRedraw = false; \n\n const { children } = graphics;\n\n annotationShapes.forEach(({ fill, stroke , annotation }) => {\n // Note: selected annotation always remains visible\n const visible = filter ? \n selectedIds.has(annotation.id) || filter(annotation) : \n true;\n \n if (visible && !(children.includes(fill))) {\n graphics.addChild(fill);\n graphics.addChild(stroke);\n } else if (!visible && children.includes(fill)) {\n graphics.removeChild(fill);\n graphics.removeChild(stroke)\n }\n });\n\n renderer?.render(graphics);\n }\n\n const setHovered = (annotationId?: string) => {\n if (hovered === annotationId) return;\n \n // Unhover current, if any\n if (hovered)\n redrawAnnotation(hovered, { selected: selectedIds.has(hovered) });\n\n // Set next hover\n if (annotationId)\n redrawAnnotation(annotationId, { selected: selectedIds.has(annotationId), hovered: true });\n\n hovered = annotationId;\n\n renderer?.render(graphics);\n }\n\n const setSelected = (selection: Selection) => {\n const nextIds = selection.selected.map(s => s.id);\n\n const toSelect = \n nextIds.filter(id => !selectedIds.has(id));\n\n const toDeselect = [...selectedIds]\n .filter(id => !nextIds.includes(id));\n\n [...toSelect, ...toDeselect].forEach(id => \n redrawAnnotation(id, { selected: nextIds.includes(id), hovered: id === hovered }));\n\n selectedIds = new Set(nextIds);\n\n renderer?.render(graphics);\n }\n\n const setStyle = (s?: DrawingStyleExpression<ImageAnnotation>) => {\n if (typeof s === 'function') {\n annotationShapes.forEach(({ annotation, fill, stroke, strokeWidth }, _) => {\n if (strokeWidth > 1)\n fastRedraw = false;\n\n const state = {\n selected: selectedIds.has(annotation.id),\n hovered: hovered === annotation.id\n };\n\n const { fillStyle, strokeStyle } = getGraphicsStyle(s(annotation, state));\n\n fill.tint = fillStyle.tint;\n fill.alpha = fillStyle.alpha;\n\n stroke.tint = strokeStyle.tint || 0xFFFFFF;\n stroke.alpha = strokeStyle.alpha;\n\n annotationShapes.set(annotation.id, { annotation, fill, stroke, strokeWidth: strokeStyle.lineWidth });\n });\n } else {\n const { fillStyle, strokeStyle } = getGraphicsStyle(s);\n\n if (strokeStyle.lineWidth > 1)\n fastRedraw = false;\n\n annotationShapes.forEach(({ annotation, fill, stroke, strokeWidth }, _) => {\n fill.tint = fillStyle.tint;\n fill.alpha = fillStyle.alpha;\n\n stroke.tint = strokeStyle.tint || 0xFFFFFF;\n stroke.alpha = strokeStyle.alpha;\n\n annotationShapes.set(annotation.id, { annotation, fill, stroke, strokeWidth: strokeStyle.lineWidth });\n });\n }\n \n style = s;\n }\n\n const setVisible = (visible: boolean) => {\n if (visible)\n canvas.classList.remove('hidden');\n else \n canvas.classList.add('hidden');\n }\n \n const destroy = () => renderer?.destroy();\n\n return {\n addAnnotation,\n destroy,\n redraw: () => redrawStage(viewer, graphics, annotationShapes, renderer),\n removeAnnotation,\n resize,\n setFilter,\n setHovered,\n setSelected,\n setStyle,\n setVisible,\n updateAnnotation\n }\n \n}","<script lang=\"ts\" generics=\"I extends Annotation, E extends unknown\">\n import { createEventDispatcher, onMount } from 'svelte';\n import OpenSeadragon from 'openseadragon';\n import type { Annotation, DrawingStyleExpression, StoreChangeEvent, Update } from '@annotorious/core';\n import { isImageAnnotation, type Filter, type ImageAnnotation, type ImageAnnotatorState } from '@annotorious/annotorious';\n import type { PixiLayerClickEvent } from './PixiLayerClickEvent';\n import { createStage } from './stageRenderer';\n\n import './PixiLayer.css';\n\n /** Props */\n export let filter: Filter<ImageAnnotation> | undefined;\n export let state: ImageAnnotatorState<I, E>;\n export let style: DrawingStyleExpression<ImageAnnotation> | undefined;\n export let viewer: OpenSeadragon.Viewer;\n export let visible = true;\n\n const { store, hover, selection, viewport } = state;\n \n const dispatch = createEventDispatcher<{ click: PixiLayerClickEvent}>();\n\n let stage: ReturnType<typeof createStage>;\n\n let lastPress: { x: number, y: number } | undefined;\n\n $: stage?.setFilter(filter);\n\n $: stage?.setSelected($selection);\n\n $: stage?.setStyle(style);\n\n $: stage?.setVisible(visible);\n\n // Helper\n const getImageXY = (xy: OpenSeadragon.Point): OpenSeadragon.Point => {\n const offsetXY = new OpenSeadragon.Point(xy.x, xy.y);\n const {x, y} = viewer.viewport.pointFromPixel(offsetXY);\n return viewer.viewport.viewportToImageCoordinates(x, y);\n }\n\n const onCanvasPress = (evt: OpenSeadragon.CanvasPressEvent) => {\n const { x, y } = evt.position;\n lastPress = { x, y };\n }\n\n const onPointerMove = (canvas: HTMLCanvasElement) => (evt: PointerEvent) => {\n const {x, y} = getImageXY(new OpenSeadragon.Point(evt.offsetX, evt.offsetY));\n \n const hit = store.getAt(x, y);\n const isVisibleHit = hit && (!filter || filter(hit));\n\n if (isVisibleHit) {\n canvas.classList.add('hover');\n\n if ($hover !== hit.id) {\n hover.set(hit.id);\n stage.setHovered(hit.id);\n }\n } else {\n canvas.classList.remove('hover');\n\n if ($hover) {\n hover.set(undefined);\n stage.setHovered(undefined);\n }\n }\n }\n\n const onCanvasRelease = (evt: OpenSeadragon.CanvasReleaseEvent) => {\n if (!lastPress) return;\n\n const originalEvent = evt.originalEvent as PointerEvent;\n\n const { x, y } = evt.position;\n const dx = x - lastPress.x;\n const dy = y - lastPress.y;\n\n const dist = Math.sqrt(dx * dx + dy * dy);\n\n if (dist < 5) {\n const {x, y} = getImageXY(evt.position);\n const annotation = store.getAt(x, y);\n\n if (annotation)\n dispatch('click', { originalEvent, annotation });\n else\n dispatch('click', { originalEvent });\n }\n\n lastPress = undefined;\n }\n\n let currentViewportBounds: { x: number, y: number, width: number, height: number };\n\n onMount(() => {\n const { offsetWidth, offsetHeight } = viewer.canvas;\n\n // Create Canvas element\n const canvas = document.createElement('canvas');\n canvas.width = offsetWidth;\n canvas.height = offsetHeight;\n canvas.className = 'a9s-gl-canvas';\n\n viewer.element.querySelector('.openseadragon-canvas')?.appendChild(canvas);\n\n // Create Pixi stage\n stage = createStage(viewer, canvas);\n\n // Event handlers\n const moveHandler = onPointerMove(canvas);\n canvas.addEventListener('pointermove', moveHandler); \n\n const observer = new ResizeObserver(entries => {\n try {\n const { width, height } = entries[0].contentRect;\n\n canvas.width = width;\n canvas.height = height;\n \n stage.resize(width, height);\n } catch {\n console.warn('WebGL canvas already disposed');\n }\n });\n\n observer.observe(canvas);\n\n const updateViewportState = () => {\n const viewportBounds = viewer.viewport.getBounds();\n currentViewportBounds = viewer.viewport.viewportToImageRectangle(viewportBounds);\n\n const { x, y, width, height } = currentViewportBounds;\n\n const intersecting = store.getIntersecting(x, y, width, height);\n viewport.set(intersecting.map(a => a.id));\n }\n\n viewer.addHandler('canvas-press', onCanvasPress);\n viewer.addHandler('canvas-release', onCanvasRelease);\n viewer.addHandler('update-viewport', stage.redraw);\n viewer.addHandler('animation-finish', updateViewportState);\n\n const filterAnnotations = (t: I[]): ImageAnnotation[] => \n t.filter(t => isImageAnnotation(t));\n\n const isImageAnnotationUpdate = (u: Update<I | ImageAnnotation>): u is Update<ImageAnnotation> =>\n isImageAnnotation(u.oldValue) && isImageAnnotation(u.newValue);\n \n const onStoreChange = (event: StoreChangeEvent<I>) => {\n const { created, updated, deleted } = event.changes;\n\n filterAnnotations((created || [])).forEach(annotation => stage.addAnnotation(annotation));\n filterAnnotations((deleted || [])).forEach(annotation => stage.removeAnnotation(annotation));\n \n (updated || [])\n .filter(u => isImageAnnotationUpdate(u))\n .forEach(({ oldValue, newValue }) => stage.updateAnnotation(oldValue, newValue));\n\n if (currentViewportBounds) {\n const { x, y, width, height } = currentViewportBounds;\n\n const intersecting = store.getIntersecting(x, y, width, height);\n viewport.set(intersecting.map(a => a.id));\n } else {\n viewport.set(store.all().map(a => a.id));\n }\n \n stage.redraw();\n }\n\n store.observe(onStoreChange);\n\n return () => {\n canvas.removeEventListener('pointermove', moveHandler);\n\n observer.disconnect();\n\n viewer.removeHandler('canvas-press', onCanvasPress);\n viewer.removeHandler('canvas-release', onCanvasRelease);\n viewer.removeHandler('update-viewport', stage.redraw);\n viewer.removeHandler('animation-finish', updateViewportState);\n\n store.unobserve(onStoreChange);\n\n stage.destroy();\n\n canvas.parentNode?.removeChild(canvas);\n }\n });\n</script>\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","import type { AbstractSelector } from '@annotorious/core';\n\nexport interface Shape extends AbstractSelector {\n\n type: ShapeType;\n\n geometry: Geometry;\n\n}\n\nexport enum ShapeType {\n\n ELLIPSE = 'ELLIPSE',\n\n MULTIPOLYGLON = 'MULTIPOLYGON',\n\n POLYGON = 'POLYGON',\n\n RECTANGLE = 'RECTANGLE'\n\n}\n\nexport interface Geometry {\n\n bounds: Bounds;\n\n}\n\nexport interface Bounds {\n\n minX: number;\n\n minY: number;\n\n maxX: number;\n\n maxY: number;\n\n}","import type { Bounds, Shape, ShapeType } from './Shape';\n\nexport interface ShapeUtil<T extends Shape> {\n\n area: (shape: T) => number;\n\n intersects: (shape: T, x: number, y: number) => boolean;\n\n}\n\nconst Utils: { [key: string]: ShapeUtil<any> } = {};\n\n/**\n * Registers a new ShapeUtil for a given shape type.\n * @param type the shape type\n * @param util the ShapeUtil implementation for this shape type\n */\nexport const registerShapeUtil = (type: ShapeType | string, util: ShapeUtil<any>) =>\n (Utils[type] = util);\n\n/**\n * Computes the area of the given shape. Delegates to the corresponding ShapeUtil.\n * @param shape the shape\n */\nexport const computeArea = (shape: Shape) => Utils[shape.type].area(shape);\n\n/**\n * Tests if the given shape intersects the given point. Delegates to\n * the corresponding ShapeUtil.\n * @param shape the shape\n * @param x point x coord\n * @param y point y coord\n * @returns true if shape and point intersect\n */\nexport const intersects = (shape: Shape, x: number, y: number): boolean =>\n Utils[shape.type].intersects(shape, x, y);\n\n/**\n * Computes Bounds from a given list of points.\n * @param points the points\n * @returns the Bounds\n */\nexport const boundsFromPoints = (points: Array<[number, number]>): Bounds => {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n points.forEach(([x, y]) => {\n minX = Math.min(minX, x);\n minY = Math.min(minY, y);\n maxX = Math.max(maxX, x);\n maxY = Math.max(maxY, y);\n });\n\n return { minX, minY, maxX, maxY };\n}\n\nexport const computePolygonArea = (points: [number, number][]) => {\n let area = 0;\n let j = points.length - 1;\n\n for (let i = 0; i < points.length; i++) {\n area += (points[j][0] + points[i][0]) * (points[j][1] - points[i][1]);\n j = i;\n }\n\n return Math.abs(0.5 * area);\n}\n\nexport const isPointInPolygon = (points: [number, number][], x: number, y: number): boolean => {\n // Based on https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html/pnpoly.html\n let inside = false;\n\n for (let i = 0, j = points.length - 1; i < points.length; j = i++) {\n const xi = points[i][0],\n yi = points[i][1];\n const xj = points[j][0],\n yj = points[j][1];\n\n const intersect = yi > y != yj > y && x < ((xj - xi) * (y - yi)) / (yj - yi) + xi;\n\n if (intersect) inside = !inside;\n }\n\n return inside;\n}\n\nexport const pointsToPath = (points: [number, number][], close: boolean = true): string => {\n let d = 'M ';\n\n points.forEach(([x, y], idx) => {\n if (idx === 0) {\n // First point after the M command\n d += `${x},${y}`;\n } else {\n d += ` L ${x},${y}`;\n }\n });\n\n if (close)\n d += ' Z';\n\n return d;\n}\n","import { ShapeType } from '../Shape';\nimport { registerShapeUtil, type ShapeUtil } from '../shapeUtils';\nimport type { Ellipse } from './Ellipse';\n\nconst EllipseUtil: ShapeUtil<Ellipse> = {\n\n area: (e: Ellipse): number => Math.PI * e.geometry.rx * e.geometry.ry,\n\n intersects: (e: Ellipse, x: number, y: number): boolean => {\n const { cx, cy, rx, ry } = e.geometry;\n\n // For future use\n const rot = 0;\n\n const cos = Math.cos(rot);\n const sin = Math.sin(rot);\n \n const dx = x - cx;\n const dy = y - cy;\n \n const tdx = cos * dx + sin * dy;\n const tdy = sin * dx - cos * dy;\n \n return (tdx * tdx) / (rx * rx) + (tdy * tdy) / (ry * ry) <= 1;\n }\n};\n\nregisterShapeUtil(ShapeType.ELLIPSE, EllipseUtil);","import { ShapeType } from '../Shape';\nimport type { ShapeUtil } from '../shapeUtils';\nimport { boundsFromPoints, computePolygonArea, isPointInPolygon, pointsToPath, registerShapeUtil } from '../shapeUtils';\nimport type { MultiPolygon, MultiPolygonElement } from './MultiPolygon';\n\nconst MultiPolygonUtil: ShapeUtil<MultiPolygon> = {\n\n area: (multiPolygon: MultiPolygon): number => {\n const { polygons } = multiPolygon.geometry;\n \n return polygons.reduce<number>((total, element) => {\n const [exterior, ...holes] = element.rings;\n \n const exteriorArea = computePolygonArea(exterior.points);\n \n const holesArea = holes.reduce<number>((total, hole) =>\n total + computePolygonArea(hole.points), 0);\n \n // Add this polygon's contribution to total area\n return total + exteriorArea - holesArea;\n }, 0);\n },\n\n intersects: (multiPolygon: MultiPolygon, x: number, y: number): boolean => {\n const { polygons } = multiPolygon.geometry;\n\n for (const element of polygons) {\n const [exterior, ...holes] = element.rings;\n \n if (isPointInPolygon(exterior.points, x, y)) {\n let insideAnyHole = false;\n \n for (const hole of holes) {\n if (isPointInPolygon(hole.points, x, y)) {\n insideAnyHole = true;\n break;\n }\n }\n \n if (!insideAnyHole) return true;\n }\n }\n\n return false;\n }\n \n}\n\nexport const boundsFromMultiPolygonElements = (elements: MultiPolygonElement[]) => {\n // All outer points, i.e. the points of each outer ring for each element\n const outerPoints = elements.reduce<[number, number][]>((points, element) => {\n return [...points, ...element.rings[0].points];\n }, []);\n\n return boundsFromPoints(outerPoints);\n}\n\nexport const multipolygonElementToPath = (element: MultiPolygonElement) => {\n const paths = element.rings.map(ring => pointsToPath(ring.points));\n return paths.join(' ');\n}\n\nregisterShapeUtil(ShapeType.MULTIPOLYGLON, MultiPolygonUtil);","import { ShapeType } from '../Shape';\nimport type { ShapeUtil } from '../shapeUtils';\nimport { computePolygonArea, isPointInPolygon, registerShapeUtil } from '../shapeUtils';\nimport type { Polygon } from './Polygon';\n\nconst PolygonUtil: ShapeUtil<Polygon> = {\n\n area: (polygon: Polygon): number => {\n const points = polygon.geometry.points as [number, number][];\n return computePolygonArea(points);\n },\n\n intersects: (polygon: Polygon, x: number, y: number): boolean => {\n const points = polygon.geometry.points as [number, number][];\n return isPointInPolygon(points, x, y);\n }\n \n};\n\nregisterShapeUtil(ShapeType.POLYGON, PolygonUtil);","import { ShapeType } from '../Shape';\nimport type { Rectangle } from './Rectangle';\nimport { registerShapeUtil, type ShapeUtil } from '../shapeUtils';\n\nexport const RectangleUtil: ShapeUtil<Rectangle> = {\n\n area: (rect: Rectangle): number => rect.geometry.w * rect.geometry.h,\n\n intersects: (rect: Rectangle, x: number, y: number): boolean =>\n x >= rect.geometry.x &&\n x <= rect.geometry.x + rect.geometry.w &&\n y >= rect.geometry.y &&\n y <= rect.geometry.y + rect.geometry.h\n \n};\n\nregisterShapeUtil(ShapeType.RECTANGLE, RectangleUtil);","<script lang=\"ts\">\n import { boundsFromPoints } from '../../../model';\n import type { Polygon, PolygonGeometry, Shape } from '../../../model';\n import type { Transform } from '../../Transform';\n import { Editor, Handle } from '..';\n\n /** Props */\n export let shape: Polygon;\n export let computedStyle: string | undefined;\n export let transform: Transform;\n export let viewportScale: number = 1;\n\n $: geom = shape.geometry;\n\n const editor = (polygon: Shape, handle: string, delta: [number, number]) => {\n let points: [number, number][];\n\n const geom = (polygon.geometry) as PolygonGeometry;\n\n if (handle === 'SHAPE') {\n points = geom.points.map(([x, y]) => [x + delta[0], y + delta[1]]);\n } else {\n points = geom.points.map(([x, y], idx) =>\n handle === `HANDLE-${idx}` ? [x + delta[0], y + delta[1]] : [x, y]\n );\n }\n\n const bounds = boundsFromPoints(points);\n\n return {\n ...polygon,\n geometry: { points, bounds }\n }\n }\n</script>\n\n<Editor\n shape={shape}\n transform={transform}\n editor={editor}\n on:change \n on:grab\n on:release\n let:grab={grab}>\n\n <polygon\n class=\"a9s-outer\"\n style={computedStyle ? 'display:none;' : undefined}\n on:pointerdown={grab('SHAPE')}\n points={geom.points.map(xy => xy.join(',')).join(' ')} />\n\n <polygon\n class=\"a9s-inner a9s-shape-handle\"\n style={computedStyle}\n on:pointerdown={grab('SHAPE')}\n points={geom.points.map(xy => xy.join(',')).join(' ')} />\n\n {#each geom.points as point, idx}\n <Handle \n on:pointerdown={grab(`HANDLE-${idx}`)}\n x={point[0]} y={point[1]} \n scale={viewportScale} />\n {/each}\n</Editor>","export const isTouch = (() => {\n if (typeof window === 'undefined' || typeof navigator === 'undefined')\n return false;\n \n return 'ontouchstart' in window || \n navigator.maxTouchPoints > 0 || \n // @ts-ignore\n navigator.msMaxTouchPoints > 0;\n})();\n","<script lang=\"ts\">\n import { isTouch } from '../utils';\n\n /** props **/\n export let x: number;\n export let y: number;\n export let scale: number;\n export let radius: number = 30;\n\n let touched = false;\n\n const onPointerDown = (event: PointerEvent) => {\n if (event.pointerType === 'touch')\n touched = true;\n }\n\n const onPointerUp = () =>\n touched = false;\n\n $: handleSize = 10 / scale;\n</script>\n\n{#if isTouch}\n <g class=\"a9s-touch-handle\">\n <circle \n cx={x} \n cy={y} \n r={radius / scale}\n class=\"a9s-touch-halo\"\n class:touched={touched}\n on:pointerdown\n on:pointerdown={onPointerDown} \n on:pointerup={onPointerUp} />\n\n <rect \n class={`a9s-handle ${$$props.class || ''}`.trim()}\n x={x - handleSize / 2} \n y={y - handleSize / 2} \n width={handleSize} \n height={handleSize}\n on:pointerdown\n on:pointerdown={onPointerDown} \n on:pointerup={onPointerUp} />\n </g>\n{:else}\n <rect \n class={`a9s-handle ${$$props.class || ''}`.trim()}\n x={x - handleSize / 2} \n y={y - handleSize / 2} \n width={handleSize} \n height={handleSize} \n on:pointerdown />\n{/if}\n\n<style>\n .a9s-touch-halo {\n fill: transparent;\n stroke-width: 0;\n }\n\n .a9s-touch-halo.touched {\n fill: rgba(255, 255, 255, 0.25);\n }\n\n\n</style>\n","<script lang=\"ts\">\n import Handle from '../Handle.svelte';\n import type { Rectangle, Shape } from '../../../model';\n import type { Transform } from '../../Transform';\n import { Editor } from '..';\n\n /** Props */\n export let shape: Rectangle;\n export let computedStyle: string | undefined;\n export let transform: Transform;\n export let viewportScale: number = 1;\n\n $: geom = shape.geometry;\n\n const editor = (rectangle: Shape, handle: string, delta: [number, number]) => {\n const initialBounds = rectangle.geometry.bounds;\n\n let [x0, y0] = [initialBounds.minX, initialBounds.minY];\n let [x1, y1] = [initialBounds.maxX, initialBounds.maxY];\n\n const [dx, dy] = delta;\n\n if (handle === 'SHAPE') {\n x0 += dx;\n x1 += dx;\n y0 += dy;\n y1 += dy;\n } else {\n switch (handle) {\n case 'TOP':\n case 'TOP_LEFT':\n case 'TOP_RIGHT': {\n y0 += dy;\n break;\n }\n\n case 'BOTTOM':\n case 'BOTTOM_LEFT':\n case 'BOTTOM_RIGHT': {\n y1 += dy;\n break;\n }\n }\n\n switch (handle) {\n case 'LEFT':\n case 'TOP_LEFT':\n case 'BOTTOM_LEFT': {\n x0 += dx;\n break;\n }\n\n case 'RIGHT':\n case 'TOP_RIGHT':\n case 'BOTTOM_RIGHT': {\n x1 += dx;\n break;\n }\n }\n }\n\n const x = Math.min(x0, x1);\n const y = Math.min(y0, y1);\n const w = Math.abs(x1 - x0);\n const h = Math.abs(y1 - y0);\n\n return {\n ...rectangle,\n geometry: {\n x, y, w, h,\n bounds: {\n minX: x,\n minY: y,\n maxX: x + w,\n maxY: y + h\n }\n }\n };\n }\n</script>\n\n<Editor\n shape={shape}\n transform={transform}\n editor={editor}\n on:grab\n on:change \n on:release\n let:grab={grab}>\n\n <rect \n class=\"a9s-outer\"\n style={computedStyle ? 'display:none;' : undefined}\n on:pointerdown={grab('SHAPE')}\n x={geom.x} y={geom.y} width={geom.w} height={geom.h} />\n\n <rect \n class=\"a9s-inner a9s-shape-handle\"\n style={computedStyle}\n on:pointerdown={grab('SHAPE')}\n x={geom.x} y={geom.y} width={geom.w} height={geom.h} />\n\n <rect \n class=\"a9s-edge-handle a9s-edge-handle-top\" \n on:pointerdown={grab('TOP')}\n x={geom.x} y={geom.y} height={1} width={geom.w} />\n\n <rect \n class=\"a9s-edge-handle a9s-edge-handle-right\"\n on:pointerdown={grab('RIGHT')}\n x={geom.x + geom.w} y={geom.y} height={geom.h} width={1}/>\n\n <rect \n class=\"a9s-edge-handle a9s-edge-handle-bottom\" \n on:pointerdown={grab('BOTTOM')}\n x={geom.x} y={geom.y + geom.h} height={1} width={geom.w} />\n\n <rect \n class=\"a9s-edge-handle a9s-edge-handle-left\" \n on:pointerdown={grab('LEFT')}\n x={geom.x} y={geom.y} height={geom.h} width={1} />\n\n <Handle\n class=\"a9s-corner-handle-topleft\"\n on:pointerdown={grab('TOP_LEFT')}\n x={geom.x} y={geom.y}\n scale={viewportScale} /> \n\n <Handle\n class=\"a9s-corner-handle-topright\"\n on:pointerdown={grab('TOP_RIGHT')}\n x={geom.x + geom.w} y={geom.y} \n scale={viewportScale} />\n \n <Handle \n class=\"a9s-corner-handle-bottomright\"\n on:pointerdown={grab('BOTTOM_RIGHT')}\n x={geom.x + geom.w} y={geom.y + geom.h} \n scale={viewportScale} />\n \n <Handle \n class=\"a9s-corner-handle-bottomleft\"\n on:pointerdown={grab('BOTTOM_LEFT')}\n x={geom.x} y={geom.y + geom.h} \n scale={viewportScale} />\n</Editor>","<script lang=\"ts\">\n import type { \n MultiPolygon, \n MultiPolygonElement, \n MultiPolygonGeometry, \n Shape \n } from '../../../model';\n import { \n boundsFromMultiPolygonElements, \n boundsFromPoints, \n multipolygonElementToPath \n } from '../../../model';\n import type { Transform } from '../../Transform';\n import { Editor, Handle } from '..';\n\n /** Props */\n export let shape: MultiPolygon;\n export let computedStyle: string | undefined;\n export let transform: Transform;\n export let viewportScale: number = 1;\n\n $: geom = shape.geometry;\n\n const editor = (shape: Shape, handle: string, delta: [number, number]) => {\n const elements = ((shape.geometry) as MultiPolygonGeometry).polygons;\n\n let updated: MultiPolygonElement[];\n\n if (handle === 'SHAPE') {\n updated = elements.map(element => {\n const rings = element.rings.map((ring, r) => {\n const points = ring.points.map((point, p) => {\n return [point[0] + delta[0], point[1] + delta[1]];\n });\n\n return { points };\n });\n\n const bounds = boundsFromPoints(rings[0].points as [number, number][]);\n return { rings, bounds } as MultiPolygonElement;\n });\n } else {\n const [_, elementIdx, ringIdx, pointIdx] = handle.split('-').map(str => parseInt(str));\n\n updated = elements.map((element, e) => {\n if (e === elementIdx) {\n const rings = element.rings.map((ring, r) => {\n if (r === ringIdx) {\n const points = ring.points.map((point, p) => {\n if (p === pointIdx) {\n return [point[0] + delta[0], point[1] + delta[1]];\n } else {\n return point;\n }\n });\n\n return { points };\n } else {\n return ring;\n }\n });\n\n const bounds = boundsFromPoints(rings[0].points as [number, number][]);\n return { rings, bounds } as MultiPolygonElement;\n } else {\n return element;\n }\n });\n }\n\n return { \n ...shape, \n geometry: {\n polygons: updated,\n bounds: boundsFromMultiPolygonElements(updated)\n } \n } as MultiPolygon;\n }\n</script>\n\n<Editor\n shape={shape}\n transform={transform}\n editor={editor}\n on:change \n on:grab\n on:release\n let:grab={grab}>\n\n {#each geom.polygons as element, elementIdx}\n <g>\n <path \n class=\"a9s-outer\"\n style={computedStyle ? 'display:none;' : undefined}\n fill-rule=\"evenodd\"\n on:pointerdown={grab('SHAPE')}\n d={multipolygonElementToPath(element)} />\n\n <path \n class=\"a9s-inner\"\n style={computedStyle}\n fill-rule=\"evenodd\"\n on:pointerdown={grab('SHAPE')}\n d={multipolygonElementToPath(element)} />\n\n {#each element.rings as ring, ringIdx}\n {#each ring.points as point, pointIdx}\n <Handle \n on:pointerdown={grab(`HANDLE-${elementIdx}-${ringIdx}-${pointIdx}`)}\n x={point[0]} y={point[1]} \n scale={viewportScale} />\n {/each}\n {/each}\n </g>\n {/each}\n</Editor>","import type { SvelteComponent } from 'svelte';\nimport { ShapeType, type Shape } from '../../model';\nimport { MultiPolygonEditor } from './multipolygon';\nimport { PolygonEditor } from './polygon';\nimport { RectangleEditor } from './rectangle';\n\nconst REGISTERED = new Map<ShapeType, typeof SvelteComponent>([\n [ShapeType.RECTANGLE, RectangleEditor as typeof SvelteComponent],\n [ShapeType.POLYGON, PolygonEditor as typeof SvelteComponent],\n [ShapeType.MULTIPOLYGLON, MultiPolygonEditor as typeof SvelteComponent]\n]);\n\nexport const getEditor = (shape: Shape) => REGISTERED.get(shape.type);\n\nexport const registerEditor = (shapeType: ShapeType, editor: typeof SvelteComponent) =>\n REGISTERED.set(shapeType, editor);","<script lang=\"ts\">\n import { createEventDispatcher } from 'svelte';\n import type { Shape } from '../../model';\n import type { Transform } from '../Transform';\n\n const dispatch = createEventDispatcher<{ grab: PointerEvent, release: PointerEvent, change: Shape }>();\n\n /** Props */\n export let shape: Shape;\n export let editor: (shape: Shape, handle: string, delta: [number, number]) => Shape;\n export let transform: Transform;\n\n let grabbedHandle: string | undefined;\n\n let origin: [number, number];\n\n let initialShape: Shape | undefined;\n\n const onGrab = (handle: string) => (evt: PointerEvent) => {\n grabbedHandle = handle;\n origin = transform.elementToImage(evt.offsetX, evt.offsetY);\n initialShape = shape;\n\n const target = evt.target as Element;\n target.setPointerCapture(evt.pointerId);\n\n dispatch('grab', evt);\n }\n\n const onPointerMove = (evt: PointerEvent) => {\n if (grabbedHandle) {\n const [x, y] = transform.elementToImage(evt.offsetX, evt.offsetY);\n\n const delta: [number, number] = [x - origin[0], y - origin[1]];\n\n shape = editor(initialShape!, grabbedHandle, delta);\n \n dispatch('change', shape);\n }\n }\n\n const onRelease = (evt: PointerEvent) => { \n const target = evt.target as Element;\n target.releasePointerCapture(evt.pointerId);\n\n grabbedHandle = undefined;\n\n initialShape = shape;\n \n dispatch('release', evt);\n }\n</script>\n\n<g\n class=\"a9s-annotation selected\"\n on:pointerup={onRelease}\n on:pointermove={onPointerMove}>\n\n <slot grab={onGrab} />\n</g>","import type { DrawingStyleExpression } from '@annotorious/core';\nimport type { ImageAnnotation } from '../../model';\n\nexport const computeStyle = (\n annotation: ImageAnnotation,\n style?: DrawingStyleExpression<ImageAnnotation>\n) => {\n const computed = typeof style === 'function' ? style(annotation) : style;\n\n if (computed) {\n const { fill, fillOpacity, stroke, strokeWidth, strokeOpacity } = computed;\n\n let css = '';\n\n if (fill) {\n css += `fill:${fill};`;\n css += `fill-opacity:${fillOpacity || '0.25'};`;\n }\n\n if (stroke) {\n css += `stroke:${stroke};`;\n css += `stroke-width:${strokeWidth || '1'};`;\n css += `stroke-opacity:${strokeOpacity || '1'};`;\n }\n\n return css;\n }\n};\n","<script lang=\"ts\">\n import type { DrawingStyleExpression } from '@annotorious/core';\n import { createEventDispatcher, onMount, type SvelteComponent } from 'svelte';\n import type { ImageAnnotation, Shape } from '../../model';\n import { computeStyle } from '../utils/styling';\n import type { Transform } from '../Transform';\n\n const dispatch = createEventDispatcher<{ grab: PointerEvent, release: PointerEvent, change: Shape }>();\n\n /** Props */\n export let annotation: ImageAnnotation;\n export let editor: typeof SvelteComponent;\n export let style: DrawingStyleExpression<ImageAnnotation> | undefined;\n export let target: SVGGElement;\n export let transform: Transform;\n export let viewportScale: number;\n\n let editorComponent: SvelteComponent;\n\n $: computedStyle = computeStyle(annotation, style);\n\n $: if (annotation) editorComponent?.$set({ shape: annotation.target.selector });\n $: if (editorComponent) editorComponent.$set({ transform });\n $: if (editorComponent) editorComponent.$set({ viewportScale });\n $: if (editorComponent && computedStyle) editorComponent.$set({ computedStyle });\n\n onMount(() => { \n editorComponent = new editor({\n target,\n props: { shape: annotation.target.selector, computedStyle, transform, viewportScale }\n });\n\n editorComponent.$on('change', event => {\n editorComponent.$$set({ shape: event.detail });\n dispatch('change', event.detail);\n });\n\n editorComponent.$on('grab', event => dispatch('grab', event.detail));\n editorComponent.$on('release', event => dispatch('release', event.detail));\n\n return () => {\n editorComponent.$destroy();\n }\n });\n</script>","import type { Annotation, UndoStack } from '@annotorious/core';\n\nexport const isMac = (() => {\n if (typeof navigator === 'undefined') return false;\n\n return navigator.userAgent.indexOf('Mac OS X') !== -1;\n})();\n\nexport const initKeyboardCommands = <T extends Annotation>(\n undoStack: UndoStack<T>,\n container?: Element \n) => {\n\n const el = container || document;\n\n const onWinKeyDown = (evt: Event) => {\n const event = evt as KeyboardEvent;\n \n if (event.key === 'z' && event.ctrlKey) {\n undoStack.undo();\n } else if (event.key === 'y' && event.ctrlKey) {\n undoStack.redo()\n }\n };\n\n const onMacKeyDown = (evt: Event) => {\n const event = evt as KeyboardEvent;\n\n if (event.key === 'z' && event.metaKey) {\n if (event.shiftKey) {\n undoStack.redo()\n } else {\n undoStack.undo();\n }\n }\n }\n\n const destroy = () => {\n if (isMac) {\n el.removeEventListener('keydown', onMacKeyDown);\n } else {\n el.removeEventListener('keydown', onWinKeyDown);\n }\n }\n\n if (isMac)\n el.addEventListener('keydown', onMacKeyDown);\n else\n el.addEventListener('keydown', onWinKeyDown);\n\n return { \n destroy\n }\n}\n","import type { Annotation, ImageAnnotation, SelectionState } from '@annotorious/annotorious';\n\nexport const updateSelection = <I extends Annotation = ImageAnnotation, E extends unknown = ImageAnnotation>(\n annotationId: string, \n event: PointerEvent, \n selection: SelectionState<I , E>,\n multiSelect?: boolean\n) => {\n if (!multiSelect) return annotationId;\n\n // Note that we are treating SHIFT, CTRL and CMD the same\n const shouldToggle = event.shiftKey || event.ctrlKey || event.metaKey;\n if (shouldToggle) {\n const currentSelection = (selection.selected || []).map(s => s.id);\n\n // Click should toggle this annotation in or out of the selection\n if (currentSelection.includes(annotationId)) {\n // Remove from selection\n return currentSelection.filter(id => id !== annotationId);\n } else {\n // Add to selection\n return [...currentSelection, annotationId];\n }\n } else {\n // No toggle - just select this annotation\n return annotationId;\n }\n} ","<script lang=\"ts\">\n import { onMount } from 'svelte';\n import OpenSeadragon from 'openseadragon';\n \n export let viewer: OpenSeadragon.Viewer;\n\n // Current layer scale\n let scale = 1;\n\n // CSS layer transform\n let layerTransform: string;\n\n const onUpdateViewport = () => {\n const containerWidth = viewer.viewport.getContainerSize().x;\n\n const zoom = viewer.viewport.getZoom(true);\n const flipped = viewer.viewport.getFlip();\n\n const p = viewer.viewport.pixelFromPoint(new OpenSeadragon.Point(0, 0), true);\n if (flipped)\n p.x = containerWidth - p.x;\n \n const scaleY = zoom * containerWidth / viewer.world.getContentFactor();\n const scaleX = flipped ? - scaleY : scaleY;\n\n // @ts-ignore note: getRotation(true <- realtime value) only since OSD 4!\n const rotation = viewer.viewport.getRotation(true);\n\n layerTransform = `translate(${p.x}, ${p.y}) scale(${scaleX}, ${scaleY}) rotate(${rotation})`;\n\n scale = zoom * containerWidth / viewer.world.getContentFactor();\n }\n\n onMount(() => {\n viewer.addHandler('update-viewport', onUpdateViewport);\n\n return () => {\n viewer.removeHandler('update-viewport', onUpdateViewport);\n }\n });\n</script>\n\n<slot transform={layerTransform} scale={scale} />","<script lang=\"ts\">\n import { createEventDispatcher, onMount, type SvelteComponent } from 'svelte';\n import type OpenSeadragon from 'openseadragon';\n import type { DrawingMode, Shape, Transform } from '@annotorious/annotorious';\n\n const dispatch = createEventDispatcher<{ create: Shape }>();\n\n /** Props **/\n export let drawingMode: DrawingMode;\n export let target: SVGGElement;\n export let tool: typeof SvelteComponent;\n export let transform: Transform;\n export let viewer: OpenSeadragon.Viewer\n export let viewportScale: number;\n\n let toolComponent: SvelteComponent;\n\n $: if (toolComponent) toolComponent.$set({ transform });\n $: if (toolComponent) toolComponent.$set({ viewportScale });\n\n onMount(() => {\n const svg = target.closest('svg');\n\n const cleanup: Function[] = [];\n\n const addEventListener = (name: string, handler: (evt: Event) => void, capture?: boolean) => {\n // Attach to SVG element\n svg?.addEventListener(name, handler, capture);\n cleanup.push(() => svg?.removeEventListener(name, handler, capture));\n\n if (name === 'pointerup' || name === 'dblclick') {\n // OpenSeadragon, by design, stops the 'pointerup' event. In order to capture pointer up events,\n // we need to listen to the canvas-click event instead\n const osdHandler = (event: OpenSeadragon.CanvasClickEvent | OpenSeadragon.CanvasDoubleClickEvent) => {\n const { originalEvent } = event;\n handler(originalEvent as PointerEvent);\n }\n\n const osdName = name === 'pointerup' ? 'canvas-click' : 'canvas-double-click';\n\n viewer.addHandler(osdName, osdHandler);\n cleanup.push(() => viewer.removeHandler(osdName, osdHandler));\n } else if (name === 'pointermove') {\n const dragHandler = (event: OpenSeadragon.CanvasDragEvent) => {\n const { originalEvent } = event;\n handler(originalEvent as PointerEvent);\n }\n\n viewer.addHandler('canvas-drag', dragHandler);\n cleanup.push(() => viewer.removeHandler('canvas-drag', dragHandler));\n }\n }\n\n toolComponent = new tool({\n target,\n props: { \n addEventListener,\n drawingMode,\n transform, \n viewportScale\n }\n });\n\n toolComponent.$on('create', \n event => dispatch('create', event.detail));\n\n return () => {\n cleanup.forEach(fn => fn());\n toolComponent.$destroy();\n }\n });\n</script>","<script lang=\"ts\" generics=\"I extends Annotation, E extends unknown\">\n import type { SvelteComponent } from 'svelte';\n import { v4 as uuidv4 } from 'uuid';\n import OpenSeadragon from 'openseadragon';\n import type { Annotation, DrawingStyleExpression, Filter, StoreChangeEvent, User } from '@annotorious/core';\n import { EditorMount } from '@annotorious/annotorious/src'; // Import Svelte components from source\n import { getEditor as _getEditor, getTool, isImageAnnotation, listDrawingTools } from '@annotorious/annotorious';\n import type { ImageAnnotation, Shape, ImageAnnotatorState, DrawingMode } from '@annotorious/annotorious';\n import { updateSelection } from '../../../utils';\n import OSDLayer from '../OSDLayer.svelte';\n import OSDToolMount from './OSDToolMount.svelte';\n\n /** Props **/\n export let drawingEnabled: boolean;\n export let filter: Filter<ImageAnnotation> | undefined;\n export let multiSelect: boolean | undefined;\n export let preferredDrawingMode: DrawingMode;\n export let state: ImageAnnotatorState<I, E>;\n export let style: DrawingStyleExpression<ImageAnnotation> | undefined = undefined;\n export let toolName: string = listDrawingTools()[0];\n export let user: User;\n export let viewer: OpenSeadragon.Viewer;\n\n // Trick to force tool re-mounting on cancelDrawing\n let toolMountKey = 0;\n\n /** API methods */\n export const cancelDrawing = () => toolMountKey += 1;\n export const getDrawingTool = () => toolName;\n export const isDrawingEnabled = () => drawingEnabled;\n\n // I hate you\n const isFirefox = navigator.userAgent.match(/firefox|fxios/i);\n\n $: ({ tool, opts } = getTool(toolName) || { tool: undefined, opts: undefined });\n\n /** Drawing tool layer **/\n let drawingEl: SVGGElement;\n\n /** Tool lifecycle **/\n $: drawingMode = opts?.drawingMode || preferredDrawingMode;\n\n $: drawingEnabled && drawingMode === 'drag' ? viewer.setMouseNavEnabled(false) : viewer.setMouseNavEnabled(true); \n\n $: drawingEnabled && selection.clear();\n\n /** Selection tracking **/\n const { store, selection, hover } = state;\n\n let storeObserver: (event: StoreChangeEvent<I>) => void;\n\n let editableAnnotations: I[] | undefined;\n\n let grabbedAt: number | undefined;\n \n $: if ($selection.selected.length === 0 && drawingMode === 'drag' && drawingEnabled) { viewer.setMouseNavEnabled(false) }\n\n $: trackSelection($selection.selected);\n\n const trackSelection = (selected: { id: string, editable?: boolean}[]) => {\n store.unobserve(storeObserver);\n\n // Track only editable annotations\n const editableIds = \n selected.filter(({ editable }) => editable).map(({ id }) => id);\n\n if (editableIds.length > 0) {\n // Resolve selected IDs from the store\n editableAnnotations = editableIds.map(id => store.getAnnotation(id)!);\n\n // Track updates on the selected annotations\n storeObserver = (event: StoreChangeEvent<I>) => {\n const { updated } = event.changes;\n editableAnnotations = (updated || []).map(change => change.newValue);\n } \n \n store.observe(storeObserver, { annotations: editableIds });\n\n // As of May 16, 2024 Firefox has the following fun bug: despite the SVG elements\n // being properly in the markup, FF DOES NOT RENDER THEM VISIBLY on the screen.\n // This doesn't always happen. I can't figure out a reliable pattern, but timing\n // must play a role. (It doesn't happen in the simple examples. But happens in \n // the Recogito React-based interface.) \n //\n // As soon as the first re-render is triggered, FF wakes up, and the shapes display\n // correctly. One reliable way of 'waking up' the FF renderer is to change the\n // transform attribute on an SVG element. By panning OpenSeadragon by one tenth of a \n // pixel (!), we're triggering such a refresh without causing a change that's visible\n // to the user. *sigh* \n\n // Update: same now happens on Chrome...\n viewer.forceRedraw();\n } else {\n editableAnnotations = undefined;\n }\n }\n\n // Coordinate transform, element offset to OSD image coordinates\n const toolTransform = (offsetX: number, offsetY: number): [number, number] => {\n const {x, y} = viewer.viewport.viewerElementToImageCoordinates(new OpenSeadragon.Point(offsetX, offsetY));\n return [x, y];\n }\n\n const onGrab = (evt: CustomEvent<PointerEvent>) => {\n viewer.setMouseNavEnabled(false);\n\n // Record timestamp, so we can differentiate between actual\n // grab (edit) and click (possibly select overlapping shape)\n grabbedAt = evt.timeStamp;\n }\n\n const onRelease = (evt: CustomEvent<PointerEvent>) => { \n viewer.setMouseNavEnabled(true);\n\n const timeDifference = performance.now() - (grabbedAt || 0);\n if (timeDifference < 300) {\n // Click - check if another shape needs selecting\n const { offsetX, offsetY } = evt.detail;\n const [x, y] = toolTransform(offsetX, offsetY);\n\n const hit = store.getAt(x, y);\n const isVisibleHit = hit && (!filter || filter(hit));\n\n if (isVisibleHit && !editableAnnotations!.find(e => e.id === hit.id)) {\n hover.set(hit.id);\n\n const next = updateSelection(hit.id, evt.detail, selection, multiSelect);\n selection.userSelect(next);\n }\n }\n }\n\n const onChangeSelected = (annotation: ImageAnnotation) => (event: CustomEvent<Shape>) => { \n const { target } = annotation;\n\n // We don't consider a shape edit an 'update' if it happens within 10mins\n const GRACE_PERIOD = 10 * 60 * 1000;\n\n const isUpdate = \n target.creator?.id !== user.id ||\n !target.created ||\n new Date().getTime() - target.created.getTime() > GRACE_PERIOD;\n\n store.updateTarget({\n ...target,\n selector: event.detail,\n created: isUpdate ? target.created : new Date(),\n updated: isUpdate ? new Date() : undefined,\n updatedBy: isUpdate ? user : undefined\n });\n }\n\n const onSelectionCreated = <T extends Shape>(evt: CustomEvent<T>) => {\n const id = uuidv4();\n\n const annotation: ImageAnnotation = {\n id,\n bodies: [],\n target: {\n annotation: id,\n selector: evt.detail,\n creator: user,\n created: new Date()\n }\n }\n\n // @ts-ignore\n store.addAnnotation(annotation);\n\n selection.setSelected(annotation.id);\n\n viewer.setMouseNavEnabled(true);\n }\n\n // To get around lack of TypeScript support in Svelte markup\n const getEditor = (shape: Shape): typeof SvelteComponent => _getEditor(shape)!;\n</script>\n\n<OSDLayer viewer={viewer} let:transform let:scale>\n <svg \n class=\"a9s-annotationlayer a9s-osd-drawinglayer\"\n class:drawing={drawingEnabled}>\n\n <g \n bind:this={drawingEl}\n transform={transform}>\n {#if drawingEl && editableAnnotations?.length === 1}\n {#each editableAnnotations.filter(a => isImageAnnotation(a)) as editable}\n {@const editor = getEditor(editable.target.selector)}\n {#if editor}\n {#key editable.id}\n <EditorMount\n target={drawingEl}\n editor={getEditor(editable.target.selector)}\n annotation={editable}\n style={style}\n transform={{ elementToImage: toolTransform }}\n viewportScale={scale}\n on:grab={onGrab} \n on:change={onChangeSelected(editable)}\n on:release={onRelease} />\n {/key}\n {/if}\n {/each}\n {:else if (drawingEl && tool && drawingEnabled)} \n {#key `${toolName}-${toolMountKey}`}\n <OSDToolMount\n target={drawingEl}\n tool={tool}\n drawingMode={drawingMode}\n transform={{ elementToImage: toolTransform }}\n viewer={viewer}\n viewportScale={scale}\n on:create={onSelectionCreated} />\n {/key}\n {/if}\n </g>\n </svg>\n</OSDLayer>\n\n<style>\n svg {\n pointer-events: none;\n }\n \n svg.drawing {\n pointer-events: all;\n }\n\n svg * {\n pointer-events: all;\n }\n</style>\n","<script lang=\"ts\">\n import type { PresentUser } from '@annotorious/core';\n\n export let x: number;\n\n export let y: number;\n\n export let user: PresentUser;\n\n export let scale: number;\n\n export let hAlign: 'CENTER' | null = null;\n\n let g: SVGGElement;\n\n $: if (g) setWidth(scale);\n\n const setWidth = (scale: number) => {\n const textEl = g.querySelector('text');\n const rectEl = g.querySelector('rect');\n\n const width = textEl!.getBBox().width + 10 / scale;\n\n if (hAlign === 'CENTER') {\n g.setAttribute('style', `transform: translateX(-${width / 2}px)`);\n }\n\n rectEl!.setAttribute('width', `${width}`);\n }\n</script>\n\n<g bind:this={g} class=\"a9s-presence-label\">\n <rect\n class=\"a9s-presence-label-bg\" \n x={x} \n y={y - 18 / scale} \n height={18 / scale} \n fill={user.appearance.color}\n stroke={user.appearance.color} />\n\n <text font-size={12 / scale} x={x + Math.round(5 / scale)} y={y - 5 / scale}>{user.appearance.label}</text>\n</g>\n\n<style>\n text {\n fill: #fff;\n font-family: Arial, Helvetica, sans-serif;\n font-weight: 600;\n }\n\n rect {\n stroke-width: 1.2;\n vector-effect: non-scaling-stroke;\n }\n</style>","<script lang=\"ts\">\n import type { PresentUser } from '@annotorious/core';\n import type { ImageAnnotation, PolygonGeometry } from '@annotorious/annotorious/src';\n import SVGPresenceLabel from '../SVGPresenceLabel.svelte';\n\n export let annotation: ImageAnnotation;\n\n export let user: PresentUser;\n\n export let scale: number;\n\n $: geom = annotation.target.selector.geometry as PolygonGeometry;\n\n $: origin = getHighestPoint(geom);\n\n const getHighestPoint = (geom: PolygonGeometry) => {\n let [highestPoint, ...rest] = geom.points;\n\n rest.forEach(([x, y]) => {\n if (y < highestPoint[1])\n highestPoint = [x,y];\n });\n\n return highestPoint;\n }\n</script>\n\n<g class=\"a9s-presence-overlay\">\n <SVGPresenceLabel \n scale={scale} \n user={user} \n x={origin[0]} y={origin[1]} \n hAlign=\"CENTER\" />\n \n <polygon\n class=\"a9s-presence-shape a9s-presence-polygon\"\n stroke={user.appearance.color}\n fill=\"transparent\"\n points={geom.points.map(xy => xy.join(',')).join(' ')} />\n</g>\n\n<style>\n polygon {\n stroke-width: 1.2;\n vector-effect: non-scaling-stroke;\n }\n</style>","<script lang=\"ts\">\n import type { PresentUser } from '@annotorious/core';\n import type { ImageAnnotation, RectangleGeometry } from '@annotorious/annotorious/src';\n import SVGPresenceLabel from '../SVGPresenceLabel.svelte';\n\n export let annotation: ImageAnnotation;\n\n export let user: PresentUser;\n\n export let scale: number;\n\n $: geom = annotation.target.selector.geometry as RectangleGeometry;\n</script>\n\n<g class=\"a9s-presence-overlay\">\n <SVGPresenceLabel scale={scale} user={user} x={geom.x} y={geom.y} />\n <rect\n class=\"a9s-presence-shape a9s-presence-rectangle\"\n stroke={user.appearance.color}\n fill=\"transparent\"\n x={geom.x} y={geom.y} width={geom.w} height={geom.h} />\n</g>\n\n<style>\n rect {\n stroke-width: 1.2;\n vector-effect: non-scaling-stroke;\n }\n</style>","<script lang=\"ts\" generics=\"I extends Annotation\">\n import { onDestroy } from 'svelte';\n import type { Annotation, PresenceProvider, PresentUser, StoreChangeEvent } from '@annotorious/core';\n import { ShapeType, type ImageAnnotation, type ImageAnnotationStore } from '@annotorious/annotorious';\n import OSDLayer from '../OSDLayer.svelte';\n import SVGPresencePolygon from './shapes/PresencePolygon.svelte';\n import SVGPresenceRectangle from './shapes/PresenceRectangle.svelte';\n\n interface TrackedAnnotation {\n\n annotation: ImageAnnotation;\n\n selectedBy: PresentUser;\n\n }\n\n export let store: ImageAnnotationStore<I>;\n \n export let viewer: OpenSeadragon.Viewer;\n\n export let provider: PresenceProvider | undefined;\n\n let trackedAnnotations: TrackedAnnotation[] = [];\n\n let storeObserver: (event: StoreChangeEvent<I>) => void;\n\n $: if (provider) provider.on('selectionChange', onSelectionChange);\n\n const onSelectionChange = (p: PresentUser, selection: string[] | null) => {\n trackedAnnotations = [\n ...trackedAnnotations\n .filter(({ selectedBy }) => selectedBy.presenceKey !== p.presenceKey),\n ...(selection || []).map(id => ({ \n // Warning - could be undefined!\n annotation: store.getAnnotation(id)! as unknown as ImageAnnotation,\n selectedBy: p\n }))\n ].filter(({ annotation }) => {\n if (!annotation)\n console.warn('Selection event on unknown annotation');\n\n return Boolean(annotation);\n });\n \n // Track selection state in the store\n if (storeObserver)\n store.unobserve(storeObserver);\n\n storeObserver = (event: StoreChangeEvent<I>) => { \n const { deleted, updated } = event.changes;\n\n const deletedIds = new Set((deleted || []).map(a => a.id));\n\n const next = trackedAnnotations\n // Remove deleted\n .filter(({ annotation }) => !deletedIds.has(annotation.id))\n // Replace updated\n .map(tracked => {\n const u = (updated || []).find(update => update.oldValue.id === tracked.annotation.id);\n if (u) {\n return { selectedBy: tracked.selectedBy, annotation: u.newValue as unknown as ImageAnnotation }; \n } else {\n return tracked; \n }\n });\n\n trackedAnnotations = next;\n }\n\n store.observe(storeObserver, { \n annotations: trackedAnnotations.map(t => t.annotation.id)\n });\n }\n\n onDestroy(() => {\n if (storeObserver)\n store.unobserve(storeObserver);\n });\n</script>\n\n{#if Boolean(provider)}\n <OSDLayer\n viewer={viewer}\n let:transform\n let:scale>\n <svg \n class=\"a9s-osd-presencelayer\">\n <g transform={transform}>\n {#if trackedAnnotations.length > 0}\n {#each trackedAnnotations as tracked}\n {#if (tracked.annotation.target.selector.type === ShapeType.RECTANGLE)}\n <SVGPresenceRectangle\n annotation={tracked.annotation} \n user={tracked.selectedBy}\n scale={scale} />\n {:else if (tracked.annotation.target.selector.type === ShapeType.POLYGON)}\n <SVGPresencePolygon\n annotation={tracked.annotation} \n user={tracked.selectedBy}\n scale={scale} />\n {/if}\n {/each}\n {/if}\n </g>\n </svg>\n </OSDLayer>\n{/if}\n\n<style>\n svg {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n outline: none;\n pointer-events: none;\n }\n</style>\n","<script lang=\"ts\">\n import type { ImageAnnotation, RectangleGeometry } from '@annotorious/annotorious';\n\n export let annotation: ImageAnnotation;\n\n $: geom = annotation.target.selector.geometry as RectangleGeometry;\n</script>\n\n<rect x={geom.x} y={geom.y} width={geom.w} height={geom.h} />","<script lang=\"ts\">\n import type { ImageAnnotation, PolygonGeometry } from '@annotorious/annotorious';\n\n export let annotation: ImageAnnotation;\n\n $: geom = annotation.target.selector.geometry as PolygonGeometry;\n</script>\n\n<polygon points={geom.points.map(xy => xy.join(',')).join(' ')} />","<script lang=\"ts\">\n import type { ImageAnnotation, EllipseGeometry } from '@annotorious/annotorious';\n\n export let annotation: ImageAnnotation;\n\n $: geom = annotation.target.selector.geometry as EllipseGeometry;\n</script>\n\n<ellipse cx={geom.cx} cy={geom.cy} rx={geom.rx} ry={geom.ry} />","<script lang=\"ts\" generics=\"I extends Annotation, E extends unknown\">\n import OSDLayer from '../OSDLayer.svelte';\n import type { Annotation } from '@annotorious/core';\n import { isImageAnnotation, ShapeType } from '@annotorious/annotorious';\n import type { Bounds, ImageAnnotatorState } from '@annotorious/annotorious';\n import SelectedRectangle from './shapes/SelectedRectangle.svelte';\n import SelectedPolygon from './shapes/SelectedPolygon.svelte';\n import SelectedEllipse from './shapes/SelectedEllipse.svelte';\n\n /** Props **/\n export let state: ImageAnnotatorState<I, E>;\n export let viewer: OpenSeadragon.Viewer;\n\n const { store } = state;\n\n const { selection } = state;\n\n $: selectedAnnotations = $selection.selected.map(({ id }) => store.getAnnotation(id)!);\n\n $: union = selectedAnnotations.length > 1 ? computeUnionBounds(selectedAnnotations) : undefined;\n\n const computeUnionBounds = (annotations: I[]): Bounds => {\n let maxX = - Infinity;\n let maxY = - Infinity;\n let minX = Infinity;\n let minY = Infinity;\n\n for (let a of annotations.filter(i => isImageAnnotation(i))) {\n const { bounds } = a.target.selector.geometry;\n\n if (bounds.maxX > maxX) maxX = bounds.maxX;\n if (bounds.maxY > maxY) maxY = bounds.maxY;\n if (bounds.minX < minX) minX = bounds.minX;\n if (bounds.minY < minY) minY = bounds.minY;\n }\n\n viewer.forceRedraw();\n\n return { maxX, maxY, minX, minY };\n }\n</script>\n\n{#if Boolean(union)}\n <OSDLayer viewer={viewer} let:transform>\n <svg class=\"a9s-osd-selectionlayer\">\n <g transform={transform}>\n <rect\n class=\"a9s-union-bg\"\n x={union?.minX} \n y={union?.minY} \n width={union ? union.maxX - union.minX : 0} \n height={union ? union.maxY - union.minY : 0} />\n\n <rect\n class=\"a9s-union-fg\"\n x={union?.minX} \n y={union?.minY} \n width={union ? union.maxX - union.minX : 0} \n height={union ? union.maxY - union.minY : 0} />\n\n {#each selectedAnnotations.filter(a => isImageAnnotation(a)) as a}\n {#if (a.target.selector.type === ShapeType.RECTANGLE)}\n <SelectedRectangle annotation={a} />\n {:else if (a.target.selector.type === ShapeType.POLYGON)}\n <SelectedPolygon annotation={a} />\n {:else if (a.target.selector.type === ShapeType.ELLIPSE)}\n <SelectedEllipse annotation={a} />\n {/if}\n {/each}\n </g>\n </svg>\n </OSDLayer>\n{/if}\n\n<style>\n svg {\n overflow: visible;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n outline: none;\n pointer-events: none;\n }\n\n :global(.a9s-osd-selectionlayer :is(rect, polygon, ellipse)) {\n fill: transparent;\n stroke: #3182ed;\n stroke-width: 1.5px;\n vector-effect: non-scaling-stroke;\n }\n\n rect.a9s-union-fg {\n fill: #3182ed22;\n stroke-width: 1px;\n }\n\n rect.a9s-union-bg {\n stroke: #fff;\n stroke-width: 2px;\n }\n</style>","import type OpenSeadragon from 'openseadragon';\nimport type { Theme } from '@annotorious/annotorious';\nimport { detectTheme } from '@annotorious/annotorious';\n\nexport const setTheme = (viewer: OpenSeadragon.Viewer, theme: Theme) => {\n if (theme === 'auto') {\n // Wait for image to load and then detect theme\n viewer.addHandler('open', event => {\n const itemCount = viewer.world.getItemCount();\n\n const lastItem = viewer.world.getItemAt(itemCount - 1);\n lastItem.addOnceHandler('fully-loaded-change', event => {\n const { fullyLoaded } = event;\n\n if (fullyLoaded) {\n // The current image was fully loaded, all tiles rendered\n const canvas = viewer.canvas.querySelector('canvas');\n \n const detected = detectTheme(canvas!);\n viewer.element.setAttribute('data-theme', detected);\n }\n })\n });\n } else {\n viewer.element.setAttribute('data-theme', theme);\n }\n\n}","import { isImageAnnotation} from '@annotorious/annotorious';\nimport type { Annotation, ImageAnnotationStore } from '@annotorious/annotorious';\nimport type OpenSeadragon from 'openseadragon';\n\nexport interface FitboundsOptions {\n\n immediately?: boolean;\n\n padding?: number | [number, number, number, number]\n\n}\n\nconst _fitBounds = <I extends Annotation>(\n viewer: OpenSeadragon.Viewer,\n store: ImageAnnotationStore<I>,\n fn: string\n) => (arg: { id: string } | string, opts: FitboundsOptions = {}) => {\n const id = typeof arg === 'string' ? arg : arg.id;\n\n const annotation = store.getAnnotation(id);\n\n if (!annotation || !isImageAnnotation(annotation)) return;\n\n const containerBounds = viewer.container.getBoundingClientRect();\n\n const { padding } = opts;\n\n let [pt, pr, pb, pl] = padding ? (\n Array.isArray(padding) ? padding : [ padding, padding, padding, padding ]\n ) : [0, 0, 0, 0];\n\n // Relative padding\n pt = pt / containerBounds.height;\n pr = pr / containerBounds.width;\n pb = pb / containerBounds.height;\n pl = pl / containerBounds.width;\n\n const { minX, minY, maxX, maxY } = annotation.target.selector.geometry.bounds;\n\n const w = maxX - minX;\n const h = maxY - minY;\n\n const padX = minX - pl * w;\n const padY = minY - pt * h;\n const padW = w + (pr + pl) * w;\n const padH = h + (pt + pb) * h;\n\n const rect = viewer.viewport.imageToViewportRectangle(padX, padY, padW, padH);\n\n // @ts-ignore\n viewer.viewport[fn](rect, opts.immediately);\n} \n\nexport const fitBounds = <I extends Annotation>(\n viewer: OpenSeadragon.Viewer,\n store: ImageAnnotationStore<I>\n) => _fitBounds(viewer, store, 'fitBounds');\n\nexport const fitBoundsWithConstraints = <I extends Annotation>(\n viewer: OpenSeadragon.Viewer,\n store: ImageAnnotationStore<I>\n) => _fitBounds(viewer, store, 'fitBoundsWithConstraints');\n","import type OpenSeadragon from 'openseadragon';\nimport type { SvelteComponent } from 'svelte';\nimport { \n createAnonymousGuest, \n createBaseAnnotator, \n createLifecycleObserver,\n createUndoStack, \n UserSelectAction\n} from '@annotorious/core';\nimport type { \n Annotation,\n Annotator, \n DrawingStyleExpression, \n Filter, \n PresenceProvider, \n User \n} from '@annotorious/core';\nimport { \n createImageAnnotatorState, \n fillDefaults, \n getTool,\n initKeyboardCommands,\n isTouch,\n listDrawingTools,\n registerTool,\n registerEditor\n} from '@annotorious/annotorious';\nimport type {\n DrawingTool, \n DrawingToolOpts, \n ImageAnnotation,\n ShapeType, \n Theme\n} from '@annotorious/annotorious';\nimport type { PixiLayerClickEvent } from './annotation';\nimport { PixiLayer, SVGDrawingLayer, SVGPresenceLayer, SVGSelectionLayer } from './annotation';\nimport type { AnnotoriousOSDOpts } from './AnnotoriousOSDOpts';\nimport { setTheme as _setTheme } from './themes';\nimport { updateSelection } from './utils';\nimport { \n fitBounds as _fitBounds, \n fitBoundsWithConstraints as _fitBoundsWithConstraints, \n type FitboundsOptions \n} from './api';\n\nimport '@annotorious/annotorious/annotorious.css';\n\nexport interface OpenSeadragonAnnotator<I extends Annotation = ImageAnnotation, E extends unknown = ImageAnnotation> extends Annotator<I, E> {\n\n viewer: OpenSeadragon.Viewer;\n\n cancelDrawing(): void;\n\n getDrawingTool(): string | undefined;\n\n isDrawingEnabled(): boolean;\n\n fitBounds(arg: { id: string } | string, opts?: FitboundsOptions): void;\n\n fitBoundsWithConstraints(arg: { id: string } | string, opts?: FitboundsOptions): void;\n\n listDrawingTools(): string[];\n\n registerDrawingTool(name: string, tool: typeof SvelteComponent, opts?: DrawingToolOpts): void;\n\n registerShapeEditor(shapeType: ShapeType, editor: typeof SvelteComponent): void;\n\n setDrawingTool(name: DrawingTool): void;\n\n setDrawingEnabled(enabled: boolean): void;\n\n setModalSelect(modalSelect: boolean): void;\n\n setTheme(theme: 'light' | 'dark' | 'auto'): void;\n\n}\n\nexport const createOSDAnnotator = <I extends Annotation = ImageAnnotation, E extends unknown = ImageAnnotation>(\n viewer: OpenSeadragon.Viewer, \n options: AnnotoriousOSDOpts<I, E> = {}\n): OpenSeadragonAnnotator<I, E> => {\n\n const opts = fillDefaults<I, E>(options, {\n drawingEnabled: false,\n drawingMode: isTouch ? 'drag' : 'click',\n userSelectAction: UserSelectAction.EDIT,\n theme: 'light'\n }) as AnnotoriousOSDOpts<I, E>;\n\n const state = createImageAnnotatorState<I, E>(opts);\n\n const { hover, selection, store } = state;\n\n const undoStack = createUndoStack(store, opts.initialHistory);\n\n const lifecycle = createLifecycleObserver<I, E>(\n state, undoStack, opts.adapter, opts.autoSave);\n\n let currentUser: User = createAnonymousGuest();\n\n let drawingEnabled = opts.drawingEnabled;\n\n let drawingMode = opts.drawingMode;\n\n let modalSelect = opts.modalSelect;\n\n const keyboardCommands = initKeyboardCommands(undoStack, viewer.element);\n\n const displayLayer = new PixiLayer({\n target: viewer.element,\n props: { \n state, \n viewer, \n style: opts.style,\n filter: undefined\n }\n });\n\n const presenceLayer = new SVGPresenceLayer({\n target: viewer.element.querySelector('.openseadragon-canvas')!,\n props: { \n provider: undefined,\n store,\n viewer\n }\n });\n\n const drawingLayer = new SVGDrawingLayer({\n target: viewer.element.querySelector('.openseadragon-canvas')!,\n props: { \n drawingEnabled: Boolean(drawingEnabled),\n filter: undefined,\n multiSelect: opts.multiSelect,\n preferredDrawingMode: drawingMode!,\n state,\n style: opts.style,\n user: currentUser, \n viewer\n }\n });\n\n const selectionLayer = new SVGSelectionLayer({\n target: viewer.element.querySelector('.openseadragon-canvas')!,\n props: {\n state,\n viewer\n }\n });\n\n displayLayer.$on('click', (evt: CustomEvent<PixiLayerClickEvent>) => { \n const { originalEvent, annotation } = evt.detail;\n\n // Shorthand\n const getNextSelection = (annotation: ImageAnnotation) =>\n updateSelection(annotation.id, originalEvent, selection, opts.multiSelect);\n\n if (modalSelect) {\n // Ignore click event if there is a selection\n if (selection.isEmpty() && annotation)\n selection.userSelect(getNextSelection(annotation), originalEvent);\n } else {\n // Ignore click event if drawing is currently active with mode 'click'\n const blockEvent = (drawingMode === 'click' && drawingEnabled);\n\n if (annotation && !blockEvent)\n selection.userSelect(getNextSelection(annotation), originalEvent);\n else if (!selection.isEmpty())\n selection.clear();\n }\n });\n\n viewer.element.addEventListener('pointerdown', (event: PointerEvent) => {\n if (hover.current) {\n const hovered = store.getAnnotation(hover.current)!;\n lifecycle.emit('clickAnnotation', hovered, event);\n }\n });\n \n _setTheme(viewer, opts.theme!);\n\n /*************************/\n /* External API */\n /******++++++*************/\n\n // Most of the external API functions are covered in the base annotator\n const base = createBaseAnnotator<I, E>(state, undoStack, opts.adapter);\n\n const cancelDrawing = () =>\n drawingLayer.cancelDrawing();\n\n const destroy = () => {\n // Destroy Svelte layers\n displayLayer.$destroy();\n presenceLayer.$destroy();\n drawingLayer.$destroy();\n selectionLayer.$destroy();\n\n // Other cleanup actions\n keyboardCommands.destroy();\n undoStack.destroy();\n }\n\n const fitBounds = _fitBounds(viewer, store);\n\n const fitBoundsWithConstraints = _fitBoundsWithConstraints(viewer, store);\n\n const getDrawingTool = () =>\n drawingLayer.getDrawingTool();\n\n const getUser = () => currentUser;\n\n const isDrawingEnabled = () => \n drawingLayer.isDrawingEnabled();\n\n const registerDrawingTool = (name: string, tool: typeof SvelteComponent, opts?: DrawingToolOpts) =>\n registerTool(name, tool, opts);\n\n const registerShapeEditor = (shapeType: ShapeType, editor: typeof SvelteComponent) =>\n registerEditor(shapeType, editor);\n\n const setDrawingTool = (name: DrawingTool) => {\n // Validate that the tool exists\n const toolSpec = getTool(name);\n if (!toolSpec)\n throw `No drawing tool named ${name}`;\n \n // @ts-ignore\n drawingLayer.$set({ toolName: name });\n }\n\n const setDrawingEnabled = (enabled: boolean) => {\n drawingEnabled = enabled;\n drawingLayer.$set({ drawingEnabled: enabled });\n }\n\n const setFilter = (filter: Filter<I> | undefined) => {\n // @ts-ignore\n displayLayer.$set({ filter });\n // @ts-ignore\n drawingLayer.$set({ filter });\n }\n\n const setModalSelect = (enabled: boolean) =>\n modalSelect = enabled;\n\n const setStyle = (style: DrawingStyleExpression<I> | undefined) => {\n displayLayer.$set({ style: style as DrawingStyleExpression<ImageAnnotation> });\n drawingLayer.$set({ style: style as DrawingStyleExpression<ImageAnnotation> });\n }\n\n const setPresenceProvider = (provider: PresenceProvider) =>\n // @ts-ignore\n presenceLayer.$set({ provider });\n\n const setTheme = (theme: Theme) => _setTheme(viewer, theme);\n\n const setUser = (user: User) => {\n currentUser = user;\n drawingLayer.$set({ user });\n }\n\n const setVisible = (visible: boolean) =>\n // @ts-ignore\n displayLayer.$set({ visible });\n\n return {\n ...base,\n cancelDrawing,\n destroy,\n fitBounds,\n fitBoundsWithConstraints,\n getDrawingTool,\n getUser,\n isDrawingEnabled,\n listDrawingTools,\n on: lifecycle.on,\n off: lifecycle.off,\n registerDrawingTool,\n registerShapeEditor,\n setDrawingEnabled,\n setDrawingTool,\n setFilter,\n setModalSelect,\n setPresenceProvider,\n setStyle,\n setTheme,\n setUser,\n setVisible,\n state,\n viewer\n }\n\n}\n"],"names":["M","k","o","Z","R","F","_","K","ee","te","q","G","Y","De","ne","oe","se","s","ie","J","O","ae","c","f","A","b","w","E","m","U","T","h","C","Q","le","Be","r","L","B","I","Ie","a","i","p","v","D","ue","Ne","fe","pe","ge","he","me","Ve","ve","Ee","Tn","Mn","et","ht","ln","St","de","W","vn","an","tt","Ln","cn","kn","l","In","On","Tt","Ze","Se","P","fn","j","d","Bn","ye","Dn","Ge","un","He","Pe","ce","ke","Qe","Mt","Pn","gt","Yn","dn","mt","nt","Te","Cn","Nn","qe","x","$","Un","re","u","g","Xn","z","wt","$e","pt","Rn","Ae","_t","yt","Vn","Gn","Hn","jn","Oe","n","zn","Fn","xe","Je","Kn","Wn","hn","vt","qn","Jn","Zn","Qn","xn","$n","eo","ot","to","no","oo","Lt","gn","kt","we","it","io","Me","bt","ro","mn","Fe","so","y","It","lo","rt","ao","co","fo","Ot","pn","st","uo","ho","go","mo","_n","H","po","_o","lt","yo","wo","S","N","X","bo","Eo","Ao","So","To","Mo","vo","Lo","dr","hr","ko","Io","Oo","Bo","Do","Po","Yo","yn","Co","No","mr","Xo","Ro","Bt","Dt","Vo","Pt","Yt","Go","Et","Ho","jo","at","zo","Fo","Ko","Wo","qo","Jo","Zo","Qo","xo","_e","Ye","Ce","ze","V","be","$o","ei","ti","Ct","Nt","Ut","Xt","Rt","Vt","ni","oi","ii","ri","wn","si","li","ai","Gt","ci","fi","je","ui","di","hi","gi","Ht","mi","pi","_i","ct","jt","zt","yi","wi","bi","Ei","Ai","At","bn","En","Si","Ti","Mi","vi","Ft","Kt","Li","ki","Ii","Oi","Bi","Di","Pi","Yi","Ci","Ni","Ui","Xi","Ri","Vi","An","Wt","qt","ft","Jt","Zt","Gi","Hi","ji","zi","t","Qt","xt","Ki","Fi","$t","nn","en","tn","Wi","qi","Ji","Sn","Zi","Ue","Qi","We","dt","xi","Le","on","ut","tr","Re","Xe","nr","$i","er","Ke","or","ir","rr","sr","lr","rn","ar","sn","cr","_r","noop","assign","tar","src","run","blank_object","run_all","fns","is_function","thing","safe_not_equal","is_empty","obj","subscribe","store","callbacks","callback","unsub","component_subscribe","component","create_slot","definition","ctx","$$scope","slot_ctx","get_slot_context","get_slot_changes","dirty","lets","merged","len","update_slot_base","slot","slot_definition","slot_changes","get_slot_context_fn","slot_context","get_all_dirty_from_scope","length","exclude_internal_props","props","result","null_to_empty","value","globals","append","target","node","insert","anchor","detach","destroy_each","iterations","detaching","svg_element","name","text","data","space","empty","listen","event","handler","options","attr","attribute","children","element","set_data","toggle_class","toggle","custom_event","type","detail","bubbles","cancelable","current_component","set_current_component","get_current_component","onMount","onDestroy","createEventDispatcher","bubble","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","update_scheduled","schedule_update","flush","add_render_callback","seen_callbacks","flushidx","saved_component","update","e","$$","flush_render_callbacks","filtered","targets","outroing","outros","group_outros","check_outros","transition_in","block","local","transition_out","ensure_array_like","array_like_or_iterator","create_component","mount_component","fragment","after_update","new_on_destroy","destroy_component","make_dirty","init","instance","create_fragment","not_equal","append_styles","parent_component","ready","ret","rest","nodes","SvelteComponent","__publicField","index","PUBLIC_VERSION","ExtensionType","ExtensionType2","normalizeExtension","ext","normalizeExtensionPriority","defaultPriority","extensions","extensions2","_b","_a","handlers","queue","onAdd","onRemove","addHandlers","removeHandlers","map","extension","item","list","Target","sources","source","browserExt","webworkerExt","ObservablePoint","observer","has","prefix","Events","EE","context","once","addListener","emitter","listener","evt","clearEvent","EventEmitter","names","events","listeners","a1","a2","a3","a4","a5","args","module","PI_2","RAD_TO_DEG","DEG_TO_RAD","Point","tempPoint","Matrix","tx","ty","array","transpose","out","pos","newPos","id","angle","cos","sin","c1","tx1","matrix","b1","d1","b2","c2","d2","pivotX","pivotY","scaleX","scaleY","rotation","skewX","skewY","transform","pivot","delta","identityMatrix","tempMatrix","ux","uy","vx","vy","rotationCayley","rotationMatrices","signum","row","_ux","_uy","_vx","_vy","mat","groupD8","ind","rotationSecond","rotationFirst","dx","dy","tempPoints","Rectangle","width","height","bounds","rectangle","strokeWidth","alignment","_x","_y","strokeWidthOuter","strokeWidthInner","outerLeft","outerRight","outerTop","outerBottom","innerLeft","innerRight","innerTop","innerBottom","other","x02","y02","x0","x1","y0","y1","lb","rb","nx","ny","n00","n10","n01","n11","mx","my","m00","m10","m01","m11","paddingX","paddingY","x2","y2","resolution","eps","uidCache","uid","warnings","v8_0_0","v8_3_4","deprecation","version","message","ignoreDepth","stack","NOOP","nextPow2","isPow2","definedProps","key","idHash","createResourceIdFromString","_TextureStyle","bigKey","TextureStyle","_TextureSource","resource","newPixelWidth","newPixelHeight","_resource","TextureSource","BufferImageSource","buffer","format","tempMat","TextureMatrix","texture","clampMargin","uvs","tex","orig","trim","texBase","frame","margin","offset","Texture","label","defaultAnchor","defaultBorders","rotate","dynamic","nX","nY","nW","nH","w2","h2","cX","cY","destroySource","updateQuadBounds","sourceWidth","sourceHeight","defaultMatrix","Bounds","minX","minY","maxX","maxY","rect","mask","left","right","top","bottom","vertexData","beginOffset","endOffset","localX","localY","namesPlugin","extend","_Color","value1","value2","type1","keys1","keys2","alpha","applyToRGB","hexString","alphaString","int","match","color","colord","min","max","Color","cullingMixin","Pool","ClassType","initialSize","total","PoolGroupClass","Class","stats","pool","BigPool","cacheAsTextureMixin","val","removeItems","arr","startIdx","removeCount","childrenHelperMixin","beginIndex","endIndex","end","range","removed","child","renderGroup","currentIndex","child2","index1","index2","childMat","newMatrix","collectRenderablesMixin","instructionSet","renderer","currentLayer","renderPipes","effect","FilterEffect","MaskEffectManagerClass","test","MaskEffectManager","effectsMixin","hasFilters","hadFilters","didChange","findMixin","deep","found","matrixPool","boundsPool","getFastGlobalBoundsMixin","factorRenderLayers","localBounds","manageEffects","viewBounds","advanced","getGlobalBounds","skipUpdateTransform","parentTransform","pooledMatrix","updateTransformBackwards","_getGlobalBounds","worldTransform","parentBounds","preserveBounds","parent","multiplyHexColors","color1","color2","r1","g1","r2","g2","WHITE_BGR","multiplyColors","localBGRColor","parentBGRColor","bgr2rgb","getGlobalMixin","skipUpdate","current","warnCount","maxWarnings","warn","getLocalBounds","relativeMatrix","_getLocalBounds","rootContainer","isRoot","relativeTransform","localTransform","checkChildrenDidChange","container","previousData","measureMixin","localWidth","sign","localHeight","localBoundsCacheData","onRenderMixin","func","sortMixin","sortChildren","toLocalGlobalMixin","point","position","globalMatrix","from","InstructionSet","instruction","count","TexturePoolClass","textureOptions","pixelWidth","pixelHeight","antialias","textureSource","frameWidth","frameHeight","po2Width","po2Height","renderTexture","destroyTextures","textures","TexturePool","RenderGroup","root","childrenAtDepth","renderGroupChild","childrenToUpdate","renderable","parentCacheAsTexture","assignWithIgnore","ignore","defaultSkew","defaultPivot","defaultScale","UPDATE_COLOR","UPDATE_BLEND","UPDATE_VISIBLE","Container","parentRenderGroup","size","skew","opts","localTransformChangeId","scale","sx","sy","px","py","bgr","valueNumber","oldChildren","ViewContainer","renderableGC","Sprite","roundPixels","skipCache","currentTexture","destroyTextureSource","tempBounds","addMaskBounds","boundsToMask","addMaskLocalBounds","localRoot","relativeMask","getMatrixRelativeToParent","AlphaMask","hitTestFn","ColorMask","StencilMask","BrowserAdapter","canvas","url","xml","currentAdapter","DOMAdapter","adapter","CanvasSource","didResize","ImageSource","UPDATE_PRIORITY","UPDATE_PRIORITY2","TickerListener","priority","ticker","redirect","previous","hard","_Ticker","time","currentTime","elapsedMS","head","fps","minFPS","minFPMS","maxFPS","shared","system","Ticker","promise","detectVideoAlphaMode","gl","video","resolve","video2","framebuffer","pixel","_VideoSource","reject","VideoSource","convertToList","input","forceTransform","CacheClass","keys","cacheableAssets","parser","cacheableMap","key2","cacheKeys","cachedAssets","cacheMap","Cache","textureSourceFrom","hasResource","res","Source","resourceToTexture","textureFrom","LoaderParserPriority","LoaderParserPriority2","assertPath","path2","removeUrlParams","escapeRegExp","string","replaceAll","str","find","replace","normalizeStringPosix","allowAboveRoot","lastSegmentLength","lastSlash","dots","code","lastSlashIndex","path","matchFile","matchProtocol","customBaseUrl","customRootUrl","baseUrl","rootUrl","protocol","isAbsolute","trailingSeparator","segments","joined","arg","prevArg","hasRoot","matchedSlash","proto","origpath","start","extIdx","firstNonSlashEnd","startDot","startPart","preDotState","processX","base","ids","depth","tags","createStringVariations","regex","vars","split","isSingleItem","Resolver","bundleId","assetId","assetBundleId","bundleIdentifier","preferOrders","prefer","basePath","rootPath","searchParams","queryValues","asset","alias","manifest","bundle","assets","assetNames","convertedAssets","srcs","aliases","bundleAssetId","bundleIds","keyCheck","loadParser","srcsToUse","src2","aliasesToUse","resolvedAssets","formattedAsset","singleAsset","results","preferredOrder","priorityKey","filteredAssets","preferred","preference","paramConnector","assetData","getUrlExtension","copySearchParams","targetUrl","sourceUrl","_Spritesheet","metaResolution","initialFrameIndex","frameIndex","maxFrames","sourceSize","animations","animName","frameName","destroyBase","Spritesheet","validImages","getCacheableAssets","ignoreMultiPack","out2","spritesheetAsset","loader","imageTexture","imageFilename","imagePath","spritesheet","multiPacks","promises","itemUrl","sp","_resolvedAsset","idCounts","createIdFromString","groupId","getTestContext","maxFragmentPrecision","getMaxFragmentPrecision","addProgramDefines","isES300","isFragment","ensurePrecision","maxSupportedPrecision","precision","insertVersion","fragmentNameCache","VertexNameCache","setProgramName","nameCache","stripVersion","processes","programCache","_GlProgram","preprocessorOptions","vertex","processKey","processOptions","GlProgram","attributeFormatData","getAttributeInfoFromFormat","WGSL_TO_VERTEX_TYPES","extractAttributesFromGpuProgram","entryPoint","mainVertStart","arrowFunctionStart","functionArgsSubstring","inputsRegex","extractStructAndGroups","wgsl","linePattern","groupPattern","bindingPattern","namePattern","typePattern","structPattern","structMemberPattern","structName","groups","structs","struct","members","acc","member","name2","group","ShaderStage","ShaderStage2","generateGpuLayoutGroups","layout","generateLayoutHash","removeStructAndGroupDuplicates","vertexStructsAndGroups","fragmentStructsAndGroups","structNameSet","dupeGroupKeySet","GpuProgram","gpuLayout","structsAndGroups","UNIFORM_TYPES_VALUES","UNIFORM_TYPES_MAP","getDefaultUniformValue","_UniformGroup","uniformStructures","uniforms","uniformData","UniformGroup","BindGroup","resources","keyParts","currentResource","tick","RendererType","RendererType2","Shader","gpuProgram","glProgram","compatibleRenderers","groupMap","nameHash","uniformName","groupData","bindTick","groupIndex","bindIndex","uniformsOut","destroyPrograms","bindGroup","gpu","environments","loadEnvironmentExtensions","skip","env","unsafeEval","unsafeEvalSupported","earcutModule","earcut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","triangles","invSize","eliminateHoles","earcutLinked","clockwise","last","signedArea","insertNode","equals","removeNode","filterPoints","again","area","ear","pass","indexCurve","stop","prev","next","isEarHashed","isEar","cureLocalIntersections","splitEarcut","ax","bx","cx","ay","by","cy","pointInTriangle","minZ","zOrder","maxZ","intersects","locallyInside","isValidDiagonal","splitPolygon","getLeftmost","compareX","eliminateHole","hole","bridge","findHoleBridge","bridgeReverse","hx","hy","qx","tanMin","tan","sectorContainsSector","sortLinked","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","p1","p2","q1","q2","o1","o2","o3","o4","onSegment","num","inside","Node","bp","polygonArea","trianglesArea","sum","holeIndex","CLEAR","CLEAR2","SystemRunner","a0","a6","a7","items","defaultRunners","_AbstractRenderer","config","combinedRunners","systemName","deprecated","isRGBAArray","desiredScreenWidth","desiredScreenHeight","previousResolution","clear","clearColor","runnerIds","runnerId","systems","ClassRef","pipes","pipeAdaptors","adaptors","adaptor","pipe","PipeClass","Adaptor","runner","AbstractRenderer","_isWebGLSupported","isWebGLSupported","failIfMajorPerformanceCaveat","contextOptions","success","loseContext","_isWebGPUSupported","isWebGPUSupported","renderPriority","autoDetectRenderer","RendererClass","finalOptions","rendererType","WebGPURenderer","WebGLRenderer","emptyColorStops","_FillGradient","ensureGradientOptions","colorStops","defaultSize","getCanvas","gradient","addColorStops","dist","r0","ox","oy","FillGradient","repetitionMap","FillPattern","repetition","parseSvgPath","parse","segment","command","parseValues","number","numbers","parseSVGPath","svgPath","commands","subpaths","currentSubPath","lastX","lastY","Circle","radius","outerWidth","distance","circle","Ellipse","halfWidth","halfHeight","normx","normy","strokeOuterWidth","strokeInnerWidth","innerHorizontal","innerVertical","outerHorizontal","outerVertical","normalizedX","normalizedY","innerEllipse","outerEllipse","ellipse","squaredDistanceToLineSegment","dot","lenSq","param","xx","yy","tempRect","tempRect2","Polygon","points","flat","il","polygon","thisBounds","otherBounds","xj","yj","strokeWidthSquared","rightWidthSquared","leftWidthSquared","iterationLength","distanceSquared","pointsDesc","currentPoint","isCornerWithinStroke","pX","pY","cornerX","cornerY","RoundedRectangle","radius2","innerX","innerY","innerWidth","innerHeight","rightBound","bottomBound","fragTemplate","generateIfTestSrc","maxIfs","checkMaxIfStatementsInShader","shader","fragmentSrc","maxTexturesPerBatchCache","getMaxTexturesPerBatch","cachedGroups","getTextureBatchBindGroup","generateTextureBatchBindGroup","maxTextures","bindGroupResources","ViewableBuffer","sizeOrBuffer","fastCopy","sourceBuffer","destinationBuffer","lengthDouble","sourceFloat64View","remainingBytes","sourceUint8View","BLEND_TO_NPM","STENCIL_MODES","STENCIL_MODES2","getAdjustedBlendModeBlend","blendMode","BatchTextureArray","Batch","batchPool","batchPoolIndex","getBatchFromPool","returnBatchToPool","batch","BATCH_TICK","_Batcher","attributesInitialSize","indicesInitialSize","batchableObject","textureId","attributeBuffer","elements","textureBatch","firstElement","topology","f32","u32","indexBuffer","action","adjustedBlendMode","breakRequired","indexStart","indexSize","newSize","newArrayBuffer","newIndexBuffer","indicesOffset","indices","indexOffset","attributeOffset","Batcher","BufferUsage","BufferUsage2","Buffer","usage","shrinkToFit","mappedAtCreation","syncGPU","oldData","sizeInBytes","ensureIsBuffer","getGeometryBounds","geometry","attributeId","byteSize","stride","ensureIsAttribute","Geometry","attributes","attributeOption","destroyBuffers","placeHolderBufferData","placeHolderIndexData","BatchGeometry","addBits","srcParts","parts","part","sanitisedPart","findHooksRx","compileHooks","programSrc","hook","extractInputs","fragmentSource","compileInputs","fragments","template","sort","mainInput","finalString","inValue","cleanedString","extractOutputs","extractVariableName","stripVariable","compileOutputs","mainStruct","mainStart","mainEnd","compiledCode","injectBits","templateSrc","fragmentParts","bitCacheMap","CACHE_UID","compileHighShader","bits","cacheId","generateCacheId","compileInputsAndOutputs","compileBits","compileHighShaderGl","vertexFragments","shaderBit","fragmentFragments","compiledVertex","compiledFragment","highFragment","vertexParts","vertexGPUTemplate","fragmentGPUTemplate","vertexGlTemplate","fragmentGlTemplate","globalUniformsBit","globalUniformsBitGl","compileHighShaderGpuProgram","compileHighShaderGlProgram","colorBit","colorBitGl","textureBatchBitGpuCache","generateBindingSrc","bindingIndex","generateSampleSrc","generateTextureBatchBit","textureBatchBitGlCache","generateSampleGlSrc","generateTextureBatchBitGl","roundPixelsBit","roundPixelsBitGl","batchSamplersUniformGroupHash","getBatchSamplersUniformGroup","batchSamplersUniformGroup","sampleValues","DefaultShader","defaultShader","_DefaultBatcher","float32View","uint32View","textureIdAndRound","positions","argb","i2","w0","w1","h0","h1","DefaultBatcher","buildUvs","vertices","verticesStride","verticesOffset","uvsOffset","uvsStride","buildSimpleUvs","transformVertices","BatchableGraphics","rgb","gpuBuffer","buildCircle","shape","rx","ry","roundedRect","j1","j2","j3","j4","y22","x12","x22","y12","centerX","centerY","centerIndex","buildEllipse","buildRoundedRectangle","closePointEps","curveEps","getOrientationOfPoints","square","innerWeight","outerWeight","verts","ix","iy","exx","eyy","eix","eiy","eox","eoy","round","ex","ey","cx2p0x","cy2p0y","angle0","angle1","startAngle","angleDiff","absAngleDiff","segCount","angleInc","buildLine","lineStyle","flipAlignment","closed","style","orientation","firstPoint","lastPoint","closedShape","closedPath","midPointX","midPointY","indexCount","widthSquared","miterLimitSquared","perpX","perpY","perp1x","perp1y","ratio","dx0","dy0","dx1","dy1","cross","pDist","imx","imy","omx","omy","smallerInsideSegmentSq","insideWeight","smallerInsideDiagonalSq","eps2","buildPixelLine","fx","fy","lx","ly","closePath","triangulateWithHoles","holes","emptyArray","buildPolygon","buildRectangle","rectData","verticesIndex","buildTriangle","tempTextureMatrix","generateTextureMatrix","textureMatrix","sourceStyle","shapeBuilders","buildContextBatches","gpuContext","geometryData","batches","addTextureToGeometryData","isStroke","shapePath","addShapePathToGeometryData","vertOffset","build","textureUvs","graphicsBatch","close","otherPoints","getHoleArrays","holePoints","holePrimitives","holeArrays","holePrimitive","GpuGraphicsContext","GraphicsContextRenderData","_GraphicsContextSystem","batchMode","graphicsData","vertexSize","batcher","drawBatches","GraphicsContextSystem","RECURSION_LIMIT","FLT_EPSILON","PATH_DISTANCE_EPSILON","buildAdaptiveBezier","sX","sY","cp1x","cp1y","cp2x","cp2y","eX","eY","smoothness","smoothing","distanceTolerance","begin","recursive","x3","y3","x4","y4","level","x23","y23","x34","y34","x123","y123","x234","y234","x1234","y1234","d3","buildAdaptiveQuadratic","buildArc","steps","cs","buildArcTo","fromX","mm","dd","cc","k1","k2","qy","endAngle","TAU","mapToEllipse","cosPhi","sinPhi","xp","yp","approxUnitArc","ang1","ang2","vectorAngle","getArcCenter","largeArcFlag","sweepFlag","pxp","pyp","rxSq","rySq","pxpSq","pypSq","radicant","centerXp","centerYp","vx1","vy1","vx2","vy2","buildArcToSvg","xAxisRotation","lambda","outCurvePoint","curve","roundedShapeArc","vecFrom","pp","sharpCorner","pRadius","p3","v1","v2","radDirection","drawDirection","halfAngle","cRadius","lenOut","roundedShapeQuadraticCurve","pointLerp","numPoints","thisPoint","nextPoint","lastEdgeLength","lastOffsetDistance","nextEdgeLength","nextOffsetDistance","tempRectangle","ShapePath","graphicsPath2D","fromY","counterclockwise","currentPoly","shapePrimitives","mainShape","shapePrimitive","mainPolygon","sides","corner","sideLength","internalAngle","useQuadratic","fillet","maxFillet","inset","dir","chamfer","radiusX","radiusY","lastShape","tempX","boundsRect","GraphicsPath","instructions","signed","currentX","currentY","cpx1","cpy1","innerRadius","newGraphicsPath2D","cpx2","cpy2","adjustTransform","lastInstruction","currentMatrix","parseSVGFloatAttribute","svg","defaultValue","parseSVGDefinitions","session","definitions","parseLinearGradient","parseRadialGradient","gradientUnit","_child","extractSvgUrlId","styleAttributes","parseSVGStyle","strokeStyle","fillStyle","parseAttribute","styleParts","stylePart","id2","SVGParser","graphicsContext","div","renderChildren","f1","s1","noStyle","pointsString","graphicsPath","isColorLike","isFillPattern","isFillGradient","isTexture","handleColorLike","fill","defaultStyle","temp","handleTexture","handleFillPattern","handleFillGradient","handleFillObject","toFillStyle","objectStyle","toStrokeStyle","miterLimit","cap","join","pixelLine","tmpPoint","_GraphicsContext","clone","tint","dw","dh","holePath","transformedX","transformedY","cpx","cpy","state","outerPadding","_bounds","hasHit","shapes","transformedPoint","holeShapes","GraphicsContext","Graphics","method","DEFAULT_FILL","DEFAULT_FILL_ALPHA","DEFAULT_STROKE","DEFAULT_STROKE_ALPHA","DEFAULT_STROKE_WIDTH","fastRedraw","lastScale","getGraphicsStyle","PIXI.Color","drawSimpleShape","drawFn","fillGraphics","PIXI.Graphics","strokeGraphics","lineWidth","drawRectangle","drawEllipse","drawPolygon","flattened","xy","drawMultiPolygon","multi","flattenRing","ring","outer","getCurrentScale","viewer","containerWidth","redrawStage","graphics","viewportBounds","stroke","annotation","flipped","offsetX","offsetY","createStage","PIXI.Container","PIXI.autoDetectRenderer","annotationShapes","selectedIds","hovered","addAnnotation","selector","rendered","ShapeType","removeAnnotation","updateAnnotation","oldValue","newValue","redrawAnnotation","filter","visible","annotationId","selection","nextIds","toSelect","toDeselect","$$props","hover","viewport","dispatch","stage","lastPress","getImageXY","offsetXY","OpenSeadragon","onCanvasPress","onPointerMove","hit","$hover","onCanvasRelease","originalEvent","currentViewportBounds","offsetWidth","offsetHeight","$$invalidate","moveHandler","entries","updateViewportState","intersecting","filterAnnotations","isImageAnnotation","isImageAnnotationUpdate","onStoreChange","created","updated","deleted","$selection","byteToHex","unsafeStringify","getRandomValues","rnds8","rng","randomUUID","native","v4","buf","rnds","registerShapeUtil","util","boundsFromPoints","computePolygonArea","isPointInPolygon","pointsToPath","idx","EllipseUtil","rot","tdx","tdy","MultiPolygonUtil","multiPolygon","polygons","exterior","exteriorArea","holesArea","insideAnyHole","boundsFromMultiPolygonElements","outerPoints","multipolygonElementToPath","PolygonUtil","RectangleUtil","handle_changes","each_value","polygon0","polygon0_points_value","polygon1","polygon1_points_value","func_1","each_blocks","grab","computedStyle","viewportScale","editor","handle","geom","isTouch","rect_class_value","circle_r_value","create_if_block","touched","onPointerDown","onPointerUp","handleSize","rect0","rect0_x_value","rect0_y_value","rect0_width_value","rect0_height_value","rect1","rect1_x_value","rect1_y_value","rect1_width_value","rect1_height_value","rect2","rect2_x_value","rect2_y_value","rect2_width_value","rect3","rect3_x_value","rect3_y_value","rect3_height_value","rect4","rect4_x_value","rect4_y_value","rect4_width_value","rect5","rect5_x_value","rect5_y_value","rect5_height_value","handle0_changes","handle1_changes","handle2_changes","handle3_changes","initialBounds","each_value_2","each_value_1","path0","path0_d_value","path1","path1_d_value","rings","elementIdx","ringIdx","pointIdx","grabbedHandle","origin","initialShape","onGrab","onRelease","computeStyle","computed","fillOpacity","strokeOpacity","css","editorComponent","updateSelection","multiSelect","currentSelection","layerTransform","onUpdateViewport","zoom","drawingMode","tool","toolComponent","cleanup","addEventListener","capture","osdHandler","osdName","dragHandler","constants_0","child_ctx","previous_key","editormount_changes","create_if_block_1","drawingEnabled","preferredDrawingMode","toolName","listDrawingTools","user","toolMountKey","cancelDrawing","getDrawingTool","isDrawingEnabled","drawingEl","storeObserver","editableAnnotations","grabbedAt","trackSelection","selected","editableIds","editable","change","toolTransform","onChangeSelected","GRACE_PERIOD","isUpdate","onSelectionCreated","uuidv4","getEditor","_getEditor","$$value","getTool","rect_height_value","text_1","text_1_font_size_value","text_1_x_value","g_1","t_value","hAlign","setWidth","textEl","rectEl","polygon_points_value","svgpresencelabel_changes","getHighestPoint","highestPoint","rect_x_value","rect_y_value","rect_width_value","svgpresencepolygon_changes","svgpresencerectangle_changes","show_if","provider","trackedAnnotations","onSelectionChange","selectedBy","deletedIds","tracked","ellipse_cx_value","ellipse_cy_value","ellipse_rx_value","ellipse_ry_value","_c","_d","computeUnionBounds","annotations","selectedAnnotations","union","setTheme","theme","itemCount","fullyLoaded","detected","detectTheme","_fitBounds","containerBounds","padding","pr","pb","pl","padX","padY","padW","padH","fitBounds","fitBoundsWithConstraints","createOSDAnnotator","fillDefaults","UserSelectAction","createImageAnnotatorState","undoStack","createUndoStack","lifecycle","createLifecycleObserver","currentUser","createAnonymousGuest","modalSelect","keyboardCommands","initKeyboardCommands","displayLayer","PixiLayer","presenceLayer","SVGPresenceLayer","drawingLayer","SVGDrawingLayer","selectionLayer","SVGSelectionLayer","getNextSelection","_setTheme","createBaseAnnotator","destroy","_fitBoundsWithConstraints","getUser","registerDrawingTool","registerTool","registerShapeEditor","shapeType","registerEditor","setDrawingTool","setDrawingEnabled","enabled","setFilter","setModalSelect","setStyle","setPresenceProvider","setUser","setVisible"],"mappings":"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","x_google_ignoreList":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,200,201,202,203]}