@vivi2d/web 0.1.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +160 -0
- package/README.md +201 -0
- package/dist/CanvasPool-CASccukD.js +48 -0
- package/dist/CanvasPool-CASccukD.js.map +1 -0
- package/dist/CanvasRenderer-BWDoXN0L.js +5750 -0
- package/dist/CanvasRenderer-BWDoXN0L.js.map +1 -0
- package/dist/GpuStencilModesToPixi-c2lsBIrd.js +221 -0
- package/dist/GpuStencilModesToPixi-c2lsBIrd.js.map +1 -0
- package/dist/RenderTargetSystem-BCowAg_f.js +3493 -0
- package/dist/RenderTargetSystem-BCowAg_f.js.map +1 -0
- package/dist/WebGLRenderer-KKZauisz.js +2236 -0
- package/dist/WebGLRenderer-KKZauisz.js.map +1 -0
- package/dist/WebGPURenderer-xmqgPtcF.js +1632 -0
- package/dist/WebGPURenderer-xmqgPtcF.js.map +1 -0
- package/dist/auto-register.d.ts +1 -0
- package/dist/auto-register.js +3 -0
- package/dist/auto-register.js.map +1 -0
- package/dist/browserAll-DQ0eWekj.js +1872 -0
- package/dist/browserAll-DQ0eWekj.js.map +1 -0
- package/dist/canvasUtils-BSaR9Fot.js +210 -0
- package/dist/canvasUtils-BSaR9Fot.js.map +1 -0
- package/dist/errors.d.ts +12 -0
- package/dist/getTextureBatchBindGroup-BYhXfZM4.js +22 -0
- package/dist/getTextureBatchBindGroup-BYhXfZM4.js.map +1 -0
- package/dist/index-CW8mx7yF.js +18805 -0
- package/dist/index-CW8mx7yF.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/model-loader.d.ts +42 -0
- package/dist/player.d.ts +85 -0
- package/dist/vivi-model-element.d.ts +65 -0
- package/dist/vivi2d.es.js +11 -0
- package/dist/vivi2d.es.js.map +1 -0
- package/dist/vivi2d.umd.js +1020 -0
- package/dist/vivi2d.umd.js.map +1 -0
- package/dist/webworkerAll-oTmmI2Qm.js +694 -0
- package/dist/webworkerAll-oTmmI2Qm.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-CW8mx7yF.js","sources":["../../model/src/load-limits.ts","../../../node_modules/zod/v4/core/core.js","../../../node_modules/zod/v4/core/util.js","../../../node_modules/zod/v4/core/errors.js","../../../node_modules/zod/v4/core/parse.js","../../../node_modules/zod/v4/core/regexes.js","../../../node_modules/zod/v4/core/checks.js","../../../node_modules/zod/v4/core/doc.js","../../../node_modules/zod/v4/core/versions.js","../../../node_modules/zod/v4/core/schemas.js","../../../node_modules/zod/v4/core/registries.js","../../../node_modules/zod/v4/core/api.js","../../../node_modules/zod/v4/core/to-json-schema.js","../../../node_modules/zod/v4/core/json-schema-processors.js","../../../node_modules/zod/v4/classic/iso.js","../../../node_modules/zod/v4/classic/errors.js","../../../node_modules/zod/v4/classic/parse.js","../../../node_modules/zod/v4/classic/schemas.js","../../model/src/project-schema/primitives.ts","../../model/src/project-schema/animation.ts","../../model/src/project-schema/collider.ts","../../model/src/project-schema/layer.ts","../../model/src/project-schema/parameter.ts","../../model/src/project-schema/physics.ts","../../model/src/project-schema/statemachine.ts","../../model/src/project-schema/project.ts","../../model/src/generated/private-local-motion-markers.ts","../../model/src/private-profile-guards.ts","../../model/src/runtime-spec.ts","../../model/src/public-profile.ts","../../model/src/project-parser.ts","../../core/src/constants.ts","../../core/src/collider.ts","../../model/src/types/layer.ts","../../core/src/bone-utils.ts","../../core/src/color-utils.ts","../../core/src/culling-utils.ts","../../core/src/layer-utils.ts","../../core/src/mesh-utils.ts","../../core/src/ik-solver.ts","../../core/src/model/ik-step.ts","../../core/src/physics-engine.ts","../../core/src/model/physics-step.ts","../../core/src/parameter-binding-eval.ts","../../model/src/parameter-utils.ts","../../core/src/skin-utils.ts","../../core/src/public-model.ts","../../core/src/script-runner.ts","../../loader/src/loader.ts","../../../node_modules/pixi.js/lib/extensions/Extensions.mjs","../../../node_modules/pixi.js/lib/utils/browser/unsafeEvalSupported.mjs","../../../node_modules/eventemitter3/index.js","../../../node_modules/pixi.js/lib/utils/data/uid.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/shader/UboSystem.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/createUboElementsSTD40.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/shader/utils/uniformParsers.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/shader/utils/createUboSyncFunction.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/shader/utils/uboSyncFunctions.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/generateArraySyncSTD40.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/createUboSyncSTD40.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/GlUboSystem.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/buffer/BufferResource.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/utils/createIdFromString.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/maths/misc/pow2.mjs","../../../node_modules/pixi.js/lib/scene/container/utils/definedProps.mjs","../../../node_modules/pixi.js/lib/utils/logging/deprecation.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/gl/shader/GenerateShaderSyncCode.mjs","../../../node_modules/pixi.js/lib/utils/logging/warn.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/GlProgramData.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/compileShader.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/defaultValue.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/shared/geometry/utils/getAttributeInfoFromFormat.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/mapType.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/extractAttributesFromGlProgram.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/getUboData.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/getUniformData.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/logProgramError.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/generateProgram.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/GlShaderSystem.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/generateUniformsSyncTypes.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/generateUniformsSync.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gl/shader/GlUniformGroupSystem.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/createUboElementsWGSL.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/generateArraySyncWGSL.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/createUboSyncFunctionWGSL.mjs","../../../node_modules/pixi.js/lib/rendering/renderers/gpu/GpuUboSystem.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/environment/autoDetectEnvironment.mjs","../../../node_modules/pixi.js/lib/culling/cullingMixin.mjs","../../../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/point/ObservablePoint.mjs","../../../node_modules/pixi.js/lib/utils/pool/GlobalResourceRegistry.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/maths/shapes/Rectangle.mjs","../../../node_modules/pixi.js/lib/scene/container/bounds/Bounds.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/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/maths/matrix/groupD8.mjs","../../../node_modules/pixi.js/lib/utils/misc/NOOP.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/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/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/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/utils/data/ViewableBuffer.mjs","../../../node_modules/pixi.js/lib/scene/particle-container/shared/utils/createIndicesForQuads.mjs","../../../node_modules/pixi.js/lib/scene/particle-container/shared/utils/generateParticleUpdateFunction.mjs","../../../node_modules/pixi.js/lib/scene/particle-container/shared/ParticleBuffer.mjs","../../../node_modules/pixi.js/lib/unsafe-eval/particle/particleUpdateFunctions.mjs","../../../node_modules/pixi.js/lib/unsafe-eval/particle/generateParticleUpdatePolyfill.mjs","../../../node_modules/pixi.js/lib/unsafe-eval/shader/generateShaderSyncPolyfill.mjs","../../../node_modules/pixi.js/lib/unsafe-eval/ubo/uboSyncFunctions.mjs","../../../node_modules/pixi.js/lib/unsafe-eval/ubo/generateUboSyncPolyfill.mjs","../../../node_modules/pixi.js/lib/unsafe-eval/uniforms/uniformSyncFunctions.mjs","../../../node_modules/pixi.js/lib/unsafe-eval/uniforms/generateUniformsSyncPolyfill.mjs","../../../node_modules/pixi.js/lib/unsafe-eval/init.mjs","../../../node_modules/pixi.js/lib/environment-browser/browserExt.mjs","../../../node_modules/pixi.js/lib/environment-webworker/webworkerExt.mjs","../../../node_modules/pixi.js/lib/utils/data/updateQuadBounds.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/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/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/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/rendering/renderers/shared/state/State.mjs","../../../node_modules/pixi.js/lib/filters/Filter.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/utils/const.mjs","../../../node_modules/pixi.js/lib/utils/global/globalHooks.mjs","../../../node_modules/pixi.js/lib/app/ResizePlugin.mjs","../../../node_modules/pixi.js/lib/app/TickerPlugin.mjs","../../../node_modules/pixi.js/lib/app/init.mjs","../../../node_modules/pixi.js/lib/app/Application.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/maths/point/pointInTriangle.mjs","../../../node_modules/pixi.js/lib/scene/graphics/gpu/colorToUniform.mjs","../../../node_modules/pixi.js/lib/scene/mesh/shared/MeshGeometry.mjs","../../../node_modules/pixi.js/lib/scene/mesh/shared/BatchableMesh.mjs","../../../node_modules/pixi.js/lib/scene/mesh/shared/MeshPipe.mjs","../../../node_modules/pixi.js/lib/scene/mesh/init.mjs","../../../node_modules/pixi.js/lib/scene/mesh/shared/Mesh.mjs","../../../node_modules/pixi.js/lib/scene/mesh-simple/MeshSimple.mjs","../../../node_modules/pixi.js/lib/index.mjs","../../renderer-pixi/src/blend-modes.ts","../../renderer-pixi/src/screen-color-filter.ts","../../renderer-pixi/src/renderer.ts","../../renderer-pixi/src/thumbnail.ts","../src/vivi-model-element.ts","../src/errors.ts","../src/model-internals.ts","../src/model-loader.ts","../src/player.ts","../src/index.ts"],"sourcesContent":["export const MAX_VIVI_TEXT_FILE_BYTES = 128 * 1024 * 1024;\nexport const MAX_VIVID_FILE_BYTES = 256 * 1024 * 1024;\nexport const MAX_VIVIB_FILE_BYTES = 512 * 1024 * 1024;\nexport const MAX_PSD_FILE_BYTES = 256 * 1024 * 1024;\nexport const MAX_PSD_PIXELS = 64 * 1024 * 1024;\nexport const MAX_PSD_LAYER_PIXELS = 64 * 1024 * 1024;\nexport const MAX_PSD_TOTAL_LAYER_PIXELS = 256 * 1024 * 1024;\nexport const MAX_PSD_LAYER_COUNT = 5000;\n\nfunction formatMegabytes(byteLength: number): string {\n return `${(byteLength / 1024 / 1024).toFixed(1)}MB`;\n}\n\nexport function assertByteLengthWithinLimit(\n byteLength: number,\n maxByteLength: number,\n label: string,\n): void {\n if (!Number.isFinite(byteLength) || byteLength < 0) {\n throw new Error(`${label} has an invalid size.`);\n }\n if (byteLength > maxByteLength) {\n throw new Error(\n `${label} is too large (${formatMegabytes(byteLength)}, max ${formatMegabytes(maxByteLength)}).`,\n );\n }\n}\n\nexport function assertTextLengthWithinLimit(\n text: string,\n maxByteLength: number,\n label: string,\n): void {\n const byteLength = new TextEncoder().encode(text).byteLength;\n if (byteLength > maxByteLength) {\n throw new Error(\n `${label} is too large (${formatMegabytes(byteLength)}, max ${formatMegabytes(maxByteLength)}).`,\n );\n }\n}\n","var _a;\n/** A special constant with type `never` */\nexport const NEVER = /*@__PURE__*/ Object.freeze({\n status: \"aborted\",\n});\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n function init(inst, def) {\n if (!inst._zod) {\n Object.defineProperty(inst, \"_zod\", {\n value: {\n def,\n constr: _,\n traits: new Set(),\n },\n enumerable: false,\n });\n }\n if (inst._zod.traits.has(name)) {\n return;\n }\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n const proto = _.prototype;\n const keys = Object.keys(proto);\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n if (!(k in inst)) {\n inst[k] = proto[k].bind(inst);\n }\n }\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred) {\n fn();\n }\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nexport const $brand = Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nexport class $ZodEncodeError extends Error {\n constructor(name) {\n super(`Encountered unidirectional transform during encode: ${name}`);\n this.name = \"ZodEncodeError\";\n }\n}\n(_a = globalThis).__zod_globalConfig ?? (_a.__zod_globalConfig = {});\nexport const globalConfig = globalThis.__zod_globalConfig;\nexport function config(newConfig) {\n if (newConfig)\n Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\n","import { globalConfig } from \"./core.js\";\n// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n throw new Error(\"Unexpected value in exhaustive check\");\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nexport function joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nexport function cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nexport function nullish(input) {\n return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n const ratio = val / step;\n const roundedRatio = Math.round(ratio);\n // Use a relative epsilon scaled to the magnitude of the result\n const tolerance = Number.EPSILON * Math.max(Math.abs(ratio), 1);\n if (Math.abs(ratio - roundedRatio) < tolerance)\n return 0;\n return ratio - roundedRatio;\n}\nconst EVALUATING = /* @__PURE__*/ Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nexport function objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nexport function mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nexport function randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nexport function esc(str) {\n return JSON.stringify(str);\n}\nexport function slugify(input) {\n return input\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\")\n .replace(/[\\s_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = /* @__PURE__*/ cached(() => {\n // Skip the probe under `jitless`: strict CSPs report the caught `new Function`\n // as a `securitypolicyviolation` even though the throw is swallowed.\n if (globalConfig.jitless) {\n return false;\n }\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nexport function isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n if (typeof ctor !== \"function\")\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nexport function shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n if (o instanceof Map)\n return new Map(o);\n if (o instanceof Set)\n return new Set(o);\n return o;\n}\nexport function numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexport const propertyKeyTypes = /* @__PURE__*/ new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = /* @__PURE__*/ new Set([\n \"string\",\n \"number\",\n \"bigint\",\n \"boolean\",\n \"symbol\",\n \"undefined\",\n]);\nexport function escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nexport function normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nexport function createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nexport function stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nexport function optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nexport const NUMBER_FORMAT_RANGES = {\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n newShape[key] = currDef.shape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function omit(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...schema._zod.def.shape };\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n // Only throw if new shape overlaps with existing shape\n // Use getOwnPropertyDescriptor to check key existence without accessing values\n const existingShape = schema._zod.def.shape;\n for (const key in shape) {\n if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n }\n }\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function merge(a, b) {\n if (a._zod.def.checks?.length) {\n throw new Error(\".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.\");\n }\n const def = mergeDefs(a._zod.def, {\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: b._zod.def.checks ?? [],\n });\n return clone(a, def);\n}\nexport function partial(Class, schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".partial() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n for (const key in oldShape) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key in oldShape) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\n// Checks for explicit abort (continue === false), as opposed to implicit abort (continue === undefined).\n// Used to respect `abort: true` in .refine() even for checks that have a `when` function.\nexport function explicitlyAborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue === false) {\n return true;\n }\n }\n return false;\n}\nexport function prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nexport function unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n const message = iss.message\n ? iss.message\n : (unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\");\n const { inst: _inst, continue: _continue, input: _input, ...rest } = iss;\n rest.path ?? (rest.path = []);\n rest.message = message;\n if (ctx?.reportInput) {\n rest.input = _input;\n }\n return rest;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nexport function parsedType(data) {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"nan\" : \"number\";\n }\n case \"object\": {\n if (data === null) {\n return \"null\";\n }\n if (Array.isArray(data)) {\n return \"array\";\n }\n const obj = data;\n if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n return obj.constructor.name;\n }\n }\n }\n return t;\n}\nexport function issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nexport function cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n","import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false,\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false,\n });\n inst.message = JSON.stringify(def, util.jsonStringifyReplacer, 2);\n Object.defineProperty(inst, \"toString\", {\n value: () => inst.message,\n enumerable: false,\n });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\nexport function flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\nexport function formatError(error, mapper = (issue) => issue.message) {\n const fieldErrors = { _errors: [] };\n const processError = (error, path = []) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n }\n };\n processError(error);\n return fieldErrors;\n}\nexport function treeifyError(error, mapper = (issue) => issue.message) {\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a, _b;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * ✖ Expected number, received string at \"username\n * favoriteNumbers[0]\n * ✖ Invalid input: expected number\n * ```\n */\nexport function toDotPath(_path) {\n const segs = [];\n const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nexport function prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`✖ ${issue.message}`);\n if (issue.path?.length)\n lines.push(` → at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n","import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\nexport const _parse = (_Err) => (schema, value, _ctx, _params) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, _params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n const ctx = _ctx ? { ..._ctx, async: true } : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length\n ? {\n success: false,\n error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: true } : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length\n ? {\n success: false,\n error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\nexport const _encode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _parse(_Err)(schema, value, ctx);\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => (schema, value, _ctx) => {\n return _parse(_Err)(schema, value, _ctx);\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _parseAsync(_Err)(schema, value, ctx);\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _parseAsync(_Err)(schema, value, _ctx);\n};\nexport const decodeAsync = /* @__PURE__*/ _decodeAsync(errors.$ZodRealError);\nexport const _safeEncode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _safeParse(_Err)(schema, value, ctx);\n};\nexport const safeEncode = /* @__PURE__*/ _safeEncode(errors.$ZodRealError);\nexport const _safeDecode = (_Err) => (schema, value, _ctx) => {\n return _safeParse(_Err)(schema, value, _ctx);\n};\nexport const safeDecode = /* @__PURE__*/ _safeDecode(errors.$ZodRealError);\nexport const _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _safeParseAsync(_Err)(schema, value, ctx);\n};\nexport const safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(errors.$ZodRealError);\nexport const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nexport const safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(errors.$ZodRealError);\n","import * as util from \"./util.js\";\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link cuid2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const cuid = /^[cC][0-9a-z]{6,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n if (!version)\n return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const idnEmail = unicodeEmail;\nexport const browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nexport function emoji() {\n return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;\nexport const mac = (delimiter) => {\n const escapedDelim = util.escapeRegex(delimiter ?? \":\");\n return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`);\n};\nexport const cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nexport const domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\nexport const httpProtocol = /^https?$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\n// E.164: leading digit must be 1-9; total digits (excluding '+') between 7-15\nexport const e164 = /^\\+[1-9]\\d{6,14}$/;\n// const dateSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\nexport const date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\"\n ? args.precision === -1\n ? `${hhmm}`\n : args.precision === 0\n ? `${hhmm}:[0-5]\\\\d`\n : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nexport function time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n const time = timeSource({ precision: args.precision });\n const opts = [\"Z\"];\n if (args.local)\n opts.push(\"\");\n // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n if (args.offset)\n opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nexport const string = (params) => {\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^-?\\d+n?$/;\nexport const integer = /^-?\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?$/;\nexport const boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\nexport { _null as null };\nconst _undefined = /^undefined$/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nexport const hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexport const md5_hex = /^[0-9a-fA-F]{32}$/;\nexport const md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nexport const md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexport const sha1_hex = /^[0-9a-fA-F]{40}$/;\nexport const sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nexport const sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexport const sha256_hex = /^[0-9a-fA-F]{64}$/;\nexport const sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nexport const sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexport const sha384_hex = /^[0-9a-fA-F]{96}$/;\nexport const sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nexport const sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexport const sha512_hex = /^[0-9a-fA-F]{128}$/;\nexport const sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nexport const sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\n","// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n if (def.value < curr) {\n if (def.inclusive)\n bag.maximum = def.value;\n else\n bag.exclusiveMaximum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n if (def.value > curr) {\n if (def.inclusive)\n bag.minimum = def.value;\n else\n bag.exclusiveMinimum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n var _a;\n (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n });\n inst._zod.check = (payload) => {\n if (typeof payload.value !== typeof def.value)\n throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\"\n ? payload.value % def.value === BigInt(0)\n : util.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple)\n return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n if (isInt)\n bag.pattern = regexes.integer;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (isInt) {\n if (!Number.isInteger(input)) {\n // invalid_format issue\n // payload.issues.push({\n // expected: def.format,\n // format: def.format,\n // code: \"invalid_format\",\n // input,\n // inst,\n // });\n // invalid_type issue\n payload.issues.push({\n expected: origin,\n format: def.format,\n code: \"invalid_type\",\n continue: false,\n input,\n inst,\n });\n return;\n // not_multiple_of issue\n // payload.issues.push({\n // code: \"not_multiple_of\",\n // origin: \"number\",\n // input,\n // inst,\n // divisor: 1,\n // });\n }\n if (!Number.isSafeInteger(input)) {\n if (input > 0) {\n // too_big\n payload.issues.push({\n input,\n code: \"too_big\",\n maximum: Number.MAX_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n else {\n // too_small\n payload.issues.push({\n input,\n code: \"too_small\",\n minimum: Number.MIN_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n return;\n }\n }\n if (input < minimum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_small\",\n minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.size;\n bag.maximum = def.size;\n bag.size = def.size;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size === def.size)\n return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length <= def.maximum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length >= def.minimum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.length;\n bag.maximum = def.length;\n bag.length = def.length;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length === def.length)\n return;\n const origin = util.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n var _a, _b;\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n if (def.pattern) {\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(def.pattern);\n }\n });\n if (def.pattern)\n (_a = inst._zod).check ?? (_a.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n inst,\n continue: !def.abort,\n });\n });\n else\n (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n $ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.lowercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.uppercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const escapedRegex = util.escapeRegex(def.includes);\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.includes(def.includes, def.position))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"includes\",\n includes: def.includes,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.startsWith(def.prefix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"starts_with\",\n prefix: def.prefix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.endsWith(def.suffix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"ends_with\",\n suffix: def.suffix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n///////////////////////////////////\n///// $ZodCheckProperty /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(property, result.issues));\n }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n const result = def.schema._zod.run({\n value: payload.value[def.property],\n issues: [],\n }, {});\n if (result instanceof Promise) {\n return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n }\n handleCheckPropertyResult(result, payload, def.property);\n return;\n };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const mimeSet = new Set(def.mime);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.mime = def.mime;\n });\n inst._zod.check = (payload) => {\n if (mimeSet.has(payload.value.type))\n return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n payload.value = def.tx(payload.value);\n };\n});\n","export class Doc {\n constructor(args = []) {\n this.content = [];\n this.indent = 0;\n if (this)\n this.args = args;\n }\n indented(fn) {\n this.indent += 1;\n fn(this);\n this.indent -= 1;\n }\n write(arg) {\n if (typeof arg === \"function\") {\n arg(this, { execution: \"sync\" });\n arg(this, { execution: \"async\" });\n return;\n }\n const content = arg;\n const lines = content.split(\"\\n\").filter((x) => x);\n const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n for (const line of dedented) {\n this.content.push(line);\n }\n }\n compile() {\n const F = Function;\n const args = this?.args;\n const content = this?.content ?? [``];\n const lines = [...content.map((x) => ` ${x}`)];\n // console.log(lines.join(\"\\n\"));\n return new F(...args, lines.join(\"\\n\"));\n }\n}\n","export const version = {\n major: 4,\n minor: 4,\n patch: 3,\n};\n","import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { parse, parseAsync, safeParse, safeParseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n var _a;\n inst ?? (inst = {});\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = version;\n const checks = [...(inst._zod.def.checks ?? [])];\n // if inst is itself a checks.$ZodCheck, run it as a check\n if (inst._zod.traits.has(\"$ZodCheck\")) {\n checks.unshift(inst);\n }\n for (const ch of checks) {\n for (const fn of ch._zod.onattach) {\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer\n // inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(() => {\n inst._zod.run = inst._zod.parse;\n });\n }\n else {\n const runChecks = (payload, checks, ctx) => {\n let isAborted = util.aborted(payload);\n let asyncResult;\n for (const ch of checks) {\n if (ch._zod.def.when) {\n if (util.explicitlyAborted(payload))\n continue;\n const shouldRun = ch._zod.def.when(payload);\n if (!shouldRun)\n continue;\n }\n else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new core.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n return;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n });\n }\n else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n continue;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(() => {\n return payload;\n });\n }\n return payload;\n };\n const handleCanaryResult = (canary, payload, ctx) => {\n // abort if the canary is aborted\n if (util.aborted(canary)) {\n canary.aborted = true;\n return canary;\n }\n // run checks first, then\n const checkResult = runChecks(payload, checks, ctx);\n if (checkResult instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n }\n return inst._zod.parse(checkResult, ctx);\n };\n inst._zod.run = (payload, ctx) => {\n if (ctx.skipChecks) {\n return inst._zod.parse(payload, ctx);\n }\n if (ctx.direction === \"backward\") {\n // run canary\n // initial pass (no checks)\n const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n if (canary instanceof Promise) {\n return canary.then((canary) => {\n return handleCanaryResult(canary, payload, ctx);\n });\n }\n return handleCanaryResult(canary, payload, ctx);\n }\n // forward\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return result.then((result) => runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n // Lazy initialize ~standard to avoid creating objects for every schema\n util.defineLazy(inst, \"~standard\", () => ({\n validate: (value) => {\n try {\n const r = safeParse(inst, value);\n return r.success ? { value: r.data } : { issues: r.error?.issues };\n }\n catch (_) {\n return safeParseAsync(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n }\n },\n vendor: \"zod\",\n version: 1,\n }));\n});\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n inst._zod.parse = (payload, _) => {\n if (def.coerce)\n try {\n payload.value = String(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"string\")\n return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n // check initialization must come first\n checks.$ZodCheckStringFormat.init(inst, def);\n $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.guid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8,\n };\n const v = versionMap[def.version];\n if (v === undefined)\n throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = regexes.uuid(v));\n }\n else\n def.pattern ?? (def.pattern = regexes.uuid());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.email);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n try {\n // Trim whitespace from input\n const trimmed = payload.value.trim();\n // When normalize is off, require :// for http/https URLs\n // This prevents strings like \"http:example.com\" or \"https:/path\" from being silently accepted\n if (!def.normalize && def.protocol?.source === regexes.httpProtocol.source) {\n if (!/^https?:\\/\\//i.test(trimmed)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid URL format\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n return;\n }\n }\n // @ts-ignore\n const url = new URL(trimmed);\n if (def.hostname) {\n def.hostname.lastIndex = 0;\n if (!def.hostname.test(url.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: def.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n if (def.protocol) {\n def.protocol.lastIndex = 0;\n if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n // Set the output value based on normalize flag\n if (def.normalize) {\n // Use normalized URL\n payload.value = url.href;\n }\n else {\n // Preserve the original input (trimmed)\n payload.value = trimmed;\n }\n return;\n }\n catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.emoji());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.nanoid);\n $ZodStringFormat.init(inst, def);\n});\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link $ZodCUID2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid2);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ulid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.xid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ksuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.datetime(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.date);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.time(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.duration);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv4);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv4`;\n});\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv6);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv6`;\n inst._zod.check = (payload) => {\n try {\n // @ts-ignore\n new URL(`http://[${payload.value}]`);\n // return;\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodMAC = /*@__PURE__*/ core.$constructor(\"$ZodMAC\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.mac(def.delimiter));\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `mac`;\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv4);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n const parts = payload.value.split(\"/\");\n try {\n if (parts.length !== 2)\n throw new Error();\n const [address, prefix] = parts;\n if (!prefix)\n throw new Error();\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n throw new Error();\n if (prefixNum < 0 || prefixNum > 128)\n throw new Error();\n // @ts-ignore\n new URL(`http://[${address}]`);\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64(data) {\n if (data === \"\")\n return true;\n // atob ignores whitespace, so reject it up front.\n if (/\\s/.test(data))\n return false;\n if (data.length % 4 !== 0)\n return false;\n try {\n // @ts-ignore\n atob(data);\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64\";\n inst._zod.check = (payload) => {\n if (isValidBase64(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64URL(data) {\n if (!regexes.base64url.test(data))\n return false;\n const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64url);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64url\";\n inst._zod.check = (payload) => {\n if (isValidBase64URL(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.e164);\n $ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodJWT //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3)\n return false;\n const [header] = tokensParts;\n if (!header)\n return false;\n // @ts-ignore\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n return false;\n if (!parsedHeader.alg)\n return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidJWT(payload.value, def.alg))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (def.fn(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Number(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\"\n ? Number.isNaN(input)\n ? \"NaN\"\n : !Number.isFinite(input)\n ? \"Infinity\"\n : undefined\n : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...(received ? { received } : {}),\n });\n return payload;\n };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumberFormat\", (inst, def) => {\n checks.$ZodCheckNumberFormat.init(inst, def);\n $ZodNumber.init(inst, def); // no format checks\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.boolean;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Boolean(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"boolean\")\n return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.bigint;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = BigInt(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"bigint\")\n return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigIntFormat\", (inst, def) => {\n checks.$ZodCheckBigIntFormat.init(inst, def);\n $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"symbol\")\n return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.undefined;\n inst._zod.values = new Set([undefined]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.null;\n inst._zod.values = new Set([null]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input === null)\n return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n }\n catch (_err) { }\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate)\n return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...(isDate ? { received: \"Invalid Date\" } : {}),\n inst,\n });\n return payload;\n };\n});\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = Array(input.length);\n const proms = [];\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n const result = def.element._zod.run({\n value: item,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n }\n else {\n handleArrayResult(result, payload, i);\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n});\nfunction handlePropertyResult(result, final, key, input, isOptionalIn, isOptionalOut) {\n const isPresent = key in input;\n if (result.issues.length) {\n // For optional-in/out schemas, ignore errors on absent keys.\n if (isOptionalIn && isOptionalOut && !isPresent) {\n return;\n }\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n if (!isPresent && !isOptionalIn) {\n if (!result.issues.length) {\n final.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: undefined,\n path: [key],\n });\n }\n return;\n }\n if (result.value === undefined) {\n if (isPresent) {\n final.value[key] = undefined;\n }\n }\n else {\n final.value[key] = result.value;\n }\n}\nfunction normalizeDef(def) {\n const keys = Object.keys(def.shape);\n for (const k of keys) {\n if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n }\n }\n const okeys = util.optionalKeys(def.shape);\n return {\n ...def,\n keys,\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n const unrecognized = [];\n const keySet = def.keySet;\n const _catchall = def.catchall._zod;\n const t = _catchall.def.type;\n const isOptionalIn = _catchall.optin === \"optional\";\n const isOptionalOut = _catchall.optout === \"optional\";\n for (const key in input) {\n // skip __proto__ so it can't replace the result prototype via the\n // assignment setter on the plain {} we build into\n if (key === \"__proto__\")\n continue;\n if (keySet.has(key))\n continue;\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n}\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodType.init(inst, def);\n // const sh = def.shape;\n const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n if (!desc?.get) {\n const sh = def.shape;\n Object.defineProperty(def, \"shape\", {\n get: () => {\n const newSh = { ...sh };\n Object.defineProperty(def, \"shape\", {\n value: newSh,\n });\n return newSh;\n },\n });\n }\n const _normalized = util.cached(() => normalizeDef(def));\n util.defineLazy(inst._zod, \"propValues\", () => {\n const shape = def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n propValues[key] ?? (propValues[key] = new Set());\n for (const v of field.values)\n propValues[key].add(v);\n }\n }\n return propValues;\n });\n const isObject = util.isObject;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = {};\n const proms = [];\n const shape = value.shape;\n for (const key of value.keys) {\n const el = shape[key];\n const isOptionalIn = el._zod.optin === \"optional\";\n const isOptionalOut = el._zod.optout === \"optional\";\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut);\n }\n }\n if (!catchall) {\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n };\n});\nexport const $ZodObjectJIT = /*@__PURE__*/ core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodObject.init(inst, def);\n const superParse = inst._zod.parse;\n const _normalized = util.cached(() => normalizeDef(def));\n const generateFastpass = (shape) => {\n const doc = new Doc([\"shape\", \"payload\", \"ctx\"]);\n const normalized = _normalized.value;\n const parseStr = (key) => {\n const k = util.esc(key);\n return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n };\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.keys) {\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(`const newResult = {};`);\n for (const key of normalized.keys) {\n const id = ids[key];\n const k = util.esc(key);\n const schema = shape[key];\n const isOptionalIn = schema?._zod?.optin === \"optional\";\n const isOptionalOut = schema?._zod?.optout === \"optional\";\n doc.write(`const ${id} = ${parseStr(key)};`);\n if (isOptionalIn && isOptionalOut) {\n // For optional-in/out schemas, ignore errors on absent keys\n doc.write(`\n if (${id}.issues.length) {\n if (${k} in input) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n else if (!isOptionalIn) {\n doc.write(`\n const ${id}_present = ${k} in input;\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n if (!${id}_present && !${id}.issues.length) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: undefined,\n path: [${k}]\n });\n }\n\n if (${id}_present) {\n if (${id}.value === undefined) {\n newResult[${k}] = undefined;\n } else {\n newResult[${k}] = ${id}.value;\n }\n }\n\n `);\n }\n else {\n doc.write(`\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n const fn = doc.compile();\n return (payload, ctx) => fn(shape, payload, ctx);\n };\n let fastpass;\n const isObject = util.isObject;\n const jit = !core.globalConfig.jitless;\n const allowsEval = util.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass)\n fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n if (!catchall)\n return payload;\n return handleCatchall([], input, payload, ctx, value, inst);\n }\n return superParse(payload, ctx);\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results) {\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n const nonaborted = results.filter((r) => !util.aborted(r));\n if (nonaborted.length === 1) {\n final.value = nonaborted[0].value;\n return nonaborted[0];\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"values\", () => {\n if (def.options.every((o) => o._zod.values)) {\n return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n if (def.options.every((o) => o._zod.pattern)) {\n const patterns = def.options.map((o) => o._zod.pattern);\n return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n const first = def.options.length === 1 ? def.options[0]._zod.run : null;\n inst._zod.parse = (payload, ctx) => {\n if (first) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n if (result.issues.length === 0)\n return result;\n results.push(result);\n }\n }\n if (!async)\n return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nfunction handleExclusiveUnionResults(results, final, inst, ctx) {\n const successes = results.filter((r) => r.issues.length === 0);\n if (successes.length === 1) {\n final.value = successes[0].value;\n return final;\n }\n if (successes.length === 0) {\n // No matches - same as regular union\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n }\n else {\n // Multiple matches - exclusive union failure\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: [],\n inclusive: false,\n });\n }\n return final;\n}\nexport const $ZodXor = /*@__PURE__*/ core.$constructor(\"$ZodXor\", (inst, def) => {\n $ZodUnion.init(inst, def);\n def.inclusive = false;\n const first = def.options.length === 1 ? def.options[0]._zod.run : null;\n inst._zod.parse = (payload, ctx) => {\n if (first) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n results.push(result);\n }\n }\n if (!async)\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n });\n };\n});\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n def.inclusive = false;\n $ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n util.defineLazy(inst._zod, \"propValues\", () => {\n const propValues = {};\n for (const option of def.options) {\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)) {\n if (!propValues[k])\n propValues[k] = new Set();\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n return propValues;\n });\n const disc = util.cached(() => {\n const opts = def.options;\n const map = new Map();\n for (const o of opts) {\n const values = o._zod.propValues?.[def.discriminator];\n if (!values || values.size === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n for (const v of values) {\n if (map.has(v)) {\n throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n }\n map.set(v, o);\n }\n }\n return map;\n });\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isObject(input)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"object\",\n input,\n inst,\n });\n return payload;\n }\n const opt = disc.value.get(input?.[def.discriminator]);\n if (opt) {\n return opt._zod.run(payload, ctx);\n }\n // Fall back to union matching when the fast discriminator path fails:\n // - explicitly enabled via unionFallback, or\n // - during backward direction (encode), since codec-based discriminators\n // have different values in forward vs backward directions\n if (def.unionFallback || ctx.direction === \"backward\") {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n discriminator: def.discriminator,\n options: Array.from(disc.value.keys()),\n input,\n path: [def.discriminator],\n inst,\n });\n return payload;\n };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([left, right]).then(([left, right]) => {\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nfunction mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return { valid: true, data: a };\n }\n if (util.isPlainObject(a) && util.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return { valid: false, mergeErrorPath: [] };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n // Track which side(s) report each key as unrecognized\n const unrecKeys = new Map();\n let unrecIssue;\n for (const iss of left.issues) {\n if (iss.code === \"unrecognized_keys\") {\n unrecIssue ?? (unrecIssue = iss);\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).l = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n for (const iss of right.issues) {\n if (iss.code === \"unrecognized_keys\") {\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).r = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n // Report only keys unrecognized by BOTH sides\n const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n if (bothKeys.length && unrecIssue) {\n result.issues.push({ ...unrecIssue, keys: bothKeys });\n }\n if (util.aborted(result))\n return result;\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n $ZodType.init(inst, def);\n const items = def.items;\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\",\n });\n return payload;\n }\n payload.value = [];\n const proms = [];\n const optinStart = getTupleOptStart(items, \"optin\");\n const optoutStart = getTupleOptStart(items, \"optout\");\n if (!def.rest) {\n if (input.length < optinStart) {\n payload.issues.push({\n code: \"too_small\",\n minimum: optinStart,\n inclusive: true,\n input,\n inst,\n origin: \"array\",\n });\n return payload;\n }\n if (input.length > items.length) {\n payload.issues.push({\n code: \"too_big\",\n maximum: items.length,\n inclusive: true,\n input,\n inst,\n origin: \"array\",\n });\n }\n }\n // Run every item in parallel, collecting results into an indexed\n // array. The post-processing in `handleTupleResults` walks them in\n // order so it can decide whether an absent optional-output error can\n // truncate the tail or must be reported to preserve required output.\n const itemResults = new Array(items.length);\n for (let i = 0; i < items.length; i++) {\n const r = items[i]._zod.run({ value: input[i], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((rr) => {\n itemResults[i] = rr;\n }));\n }\n else {\n itemResults[i] = r;\n }\n }\n if (def.rest) {\n let i = items.length - 1;\n const rest = input.slice(items.length);\n for (const el of rest) {\n i++;\n const result = def.rest._zod.run({ value: el, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((r) => handleTupleResult(r, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => handleTupleResults(itemResults, payload, items, input, optoutStart));\n }\n return handleTupleResults(itemResults, payload, items, input, optoutStart);\n };\n});\nfunction getTupleOptStart(items, key) {\n for (let i = items.length - 1; i >= 0; i--) {\n if (items[i]._zod[key] !== \"optional\")\n return i + 1;\n }\n return 0;\n}\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nfunction handleTupleResults(itemResults, final, items, input, optoutStart) {\n // Walk results in order. Mirror $ZodObject's swallow-on-absent-optional\n // rule, but only after `optoutStart`: the first index where the output\n // tuple tail can be absent.\n for (let i = 0; i < items.length; i++) {\n const r = itemResults[i];\n const isPresent = i < input.length;\n if (r.issues.length) {\n if (!isPresent && i >= optoutStart) {\n final.value.length = i;\n break;\n }\n final.issues.push(...util.prefixIssues(i, r.issues));\n }\n final.value[i] = r.value;\n }\n // Drop trailing slots that produced `undefined` for absent input\n // (the array analog of an absent optional key on an object). The\n // `i >= input.length` floor is critical: an explicit `undefined`\n // *inside* the input must be preserved even when the schema is\n // optional-out (e.g. `z.string().or(z.undefined())` accepting an\n // explicit undefined value).\n for (let i = final.value.length - 1; i >= input.length; i--) {\n if (items[i]._zod.optout === \"optional\" && final.value[i] === undefined) {\n final.value.length = i;\n }\n else {\n break;\n }\n }\n return final;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n const values = def.keyType._zod.values;\n if (values) {\n payload.value = {};\n const recordKeys = new Set();\n for (const key of values) {\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n recordKeys.add(typeof key === \"number\" ? key.toString() : key);\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (keyResult.issues.length) {\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n continue;\n }\n const outKey = keyResult.value;\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[outKey] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[outKey] = result.value;\n }\n }\n }\n let unrecognized;\n for (const key in input) {\n if (!recordKeys.has(key)) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n });\n }\n }\n else {\n payload.value = {};\n // Reflect.ownKeys for Symbol-key support; filter non-enumerable to match z.object()\n for (const key of Reflect.ownKeys(input)) {\n if (key === \"__proto__\")\n continue;\n if (!Object.prototype.propertyIsEnumerable.call(input, key))\n continue;\n let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n // Numeric string fallback: if key is a numeric string and failed, retry with Number(key)\n // This handles z.number(), z.literal([1, 2, 3]), and unions containing numeric literals\n const checkNumericKey = typeof key === \"string\" && regexes.number.test(key) && keyResult.issues.length;\n if (checkNumericKey) {\n const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);\n if (retryResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (retryResult.issues.length === 0) {\n keyResult = retryResult;\n }\n }\n if (keyResult.issues.length) {\n if (def.mode === \"loose\") {\n // Pass through unchanged\n payload.value[key] = input[key];\n }\n else {\n // Default \"strict\" behavior: error on invalid key\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n }\n continue;\n }\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload;\n };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n payload.value = new Map();\n for (const [key, value] of input) {\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n if (keyResult instanceof Promise || valueResult instanceof Promise) {\n proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }));\n }\n else {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, keyResult.issues));\n }\n else {\n final.issues.push({\n code: \"invalid_key\",\n origin: \"map\",\n input,\n inst,\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n if (valueResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, valueResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\",\n });\n return payload;\n }\n const proms = [];\n payload.value = new Set();\n for (const item of input) {\n const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleSetResult(result, payload)));\n }\n else\n handleSetResult(result, payload);\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleSetResult(result, final) {\n if (result.issues.length) {\n final.issues.push(...result.issues);\n }\n final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n $ZodType.init(inst, def);\n const values = util.getEnumValues(def.entries);\n const valuesSet = new Set(values);\n inst._zod.values = valuesSet;\n inst._zod.pattern = new RegExp(`^(${values\n .filter((k) => util.propertyKeyTypes.has(typeof k))\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (valuesSet.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n if (def.values.length === 0) {\n throw new Error(\"Cannot create literal schema with no valid values\");\n }\n const values = new Set(def.values);\n inst._zod.values = values;\n inst._zod.pattern = new RegExp(`^(${def.values\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o)))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n // @ts-ignore\n if (input instanceof File)\n return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n const _out = def.transform(payload.value, payload);\n if (ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output) => {\n payload.value = output;\n payload.fallback = true;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n payload.value = _out;\n payload.fallback = true;\n return payload;\n };\n});\nfunction handleOptionalResult(result, input) {\n if (input === undefined && (result.issues.length || result.fallback)) {\n return { issues: [], value: undefined };\n }\n return result;\n}\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (def.innerType._zod.optin === \"optional\") {\n const input = payload.value;\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise)\n return result.then((r) => handleOptionalResult(r, input));\n return handleOptionalResult(result, input);\n }\n if (payload.value === undefined) {\n return payload;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodExactOptional = /*@__PURE__*/ core.$constructor(\"$ZodExactOptional\", (inst, def) => {\n // Call parent init - inherits optin/optout = \"optional\"\n $ZodOptional.init(inst, def);\n // Override values/pattern to NOT add undefined\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"pattern\", () => def.innerType._zod.pattern);\n // Override parse to just delegate (no undefined handling)\n inst._zod.parse = (payload, ctx) => {\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n // Forward direction (decode): allow null to pass through\n if (payload.value === null)\n return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n $ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply defaults for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault returns the default value immediately in forward direction.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n return payload;\n }\n // Forward direction: continue with default handling\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply prefault for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => {\n const v = def.innerType._zod.values;\n return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst,\n });\n }\n return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(\"ZodSuccess\");\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply catch logic\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n payload.fallback = true;\n }\n return payload;\n });\n }\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n payload.fallback = true;\n }\n return payload;\n };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\",\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handlePipeResult(right, def.in, ctx));\n }\n return handlePipeResult(right, def.in, ctx);\n }\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def.out, ctx));\n }\n return handlePipeResult(left, def.out, ctx);\n };\n});\nfunction handlePipeResult(left, next, ctx) {\n if (left.issues.length) {\n // prevent further checks\n left.aborted = true;\n return left;\n }\n return next._zod.run({ value: left.value, issues: left.issues, fallback: left.fallback }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handleCodecAResult(left, def, ctx));\n }\n return handleCodecAResult(left, def, ctx);\n }\n else {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handleCodecAResult(right, def, ctx));\n }\n return handleCodecAResult(right, def, ctx);\n }\n };\n});\nfunction handleCodecAResult(result, def, ctx) {\n if (result.issues.length) {\n // prevent further checks\n result.aborted = true;\n return result;\n }\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const transformed = def.transform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n }\n return handleCodecTxResult(result, transformed, def.out, ctx);\n }\n else {\n const transformed = def.reverseTransform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n }\n return handleCodecTxResult(result, transformed, def.in, ctx);\n }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n // Check if transform added any issues\n if (left.issues.length) {\n left.aborted = true;\n return left;\n }\n return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nexport const $ZodPreprocess = /*@__PURE__*/ core.$constructor(\"$ZodPreprocess\", (inst, def) => {\n $ZodPipe.init(inst, def);\n});\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType?._zod?.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType?._zod?.optout);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n payload.value = Object.freeze(payload.value);\n return payload;\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n const regexParts = [];\n for (const part of def.parts) {\n if (typeof part === \"object\" && part !== null) {\n // is Zod schema\n if (!part._zod.pattern) {\n // if (!source)\n throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n }\n const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n if (!source)\n throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n regexParts.push(source.slice(start, end));\n }\n else if (part === null || util.primitiveTypes.has(typeof part)) {\n regexParts.push(util.escapeRegex(`${part}`));\n }\n else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"string\",\n code: \"invalid_type\",\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: def.format ?? \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodFunction = /*@__PURE__*/ core.$constructor(\"$ZodFunction\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._def = def;\n inst._zod.def = def;\n inst.implement = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n return function (...args) {\n const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args;\n const result = Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return parse(inst._def.output, result);\n }\n return result;\n };\n };\n inst.implementAsync = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implementAsync() must be called with a function\");\n }\n return async function (...args) {\n const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args;\n const result = await Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return await parseAsync(inst._def.output, result);\n }\n return result;\n };\n };\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"function\") {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"function\",\n input: payload.value,\n inst,\n });\n return payload;\n }\n // Check if output is a promise type to determine if we should use async implementation\n const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n if (hasPromiseOutput) {\n payload.value = inst.implementAsync(payload.value);\n }\n else {\n payload.value = inst.implement(payload.value);\n }\n return payload;\n };\n inst.input = (...args) => {\n const F = inst.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: inst._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: inst._def.output,\n });\n };\n inst.output = (output) => {\n const F = inst.constructor;\n return new F({\n type: \"function\",\n input: inst._def.input,\n output,\n });\n };\n return inst;\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n $ZodType.init(inst, def);\n // Cache the resolved inner type on the shared `def` so all clones of this\n // lazy (e.g. via `.describe()`/`.meta()`) share the same inner instance,\n // preserving identity for cycle detection on recursive schemas.\n util.defineLazy(inst._zod, \"innerType\", () => {\n const d = def;\n if (!d._cachedInner)\n d._cachedInner = def.getter();\n return d._cachedInner;\n });\n util.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType?._zod?.pattern);\n util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType?._zod?.propValues);\n util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType?._zod?.optin ?? undefined);\n util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType?._zod?.optout ?? undefined);\n inst._zod.parse = (payload, ctx) => {\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n checks.$ZodCheck.init(inst, def);\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _) => {\n return payload;\n };\n inst._zod.check = (payload) => {\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r) => handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst, // incorporates params.error into issue reporting\n path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n continue: !inst._zod.def.abort,\n // params: inst._zod.def.params,\n };\n if (inst._zod.def.params)\n _iss.params = inst._zod.def.params;\n payload.issues.push(util.issue(_iss));\n }\n}\n","var _a;\nexport const $output = Symbol(\"ZodOutput\");\nexport const $input = Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n constructor() {\n this._map = new WeakMap();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new WeakMap();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = { ...(this.get(p) ?? {}) };\n delete pm.id; // do not inherit id\n const f = { ...pm, ...this._map.get(schema) };\n return Object.keys(f).length ? f : undefined;\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\n// registries\nexport function registry() {\n return new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nexport const globalRegistry = globalThis.__zod_globalRegistry;\n","import * as checks from \"./checks.js\";\nimport * as registries from \"./registries.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\n// @__NO_SIDE_EFFECTS__\nexport function _string(Class, params) {\n return new Class({\n type: \"string\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link _cuid2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\n// @__NO_SIDE_EFFECTS__\nexport function _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mac(Class, params) {\n return new Class({\n type: \"string\",\n format: \"mac\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport const TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6,\n};\n// @__NO_SIDE_EFFECTS__\nexport function _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _null(Class, params) {\n return new Class({\n type: \"null\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _never(Class, params) {\n return new Class({\n type: \"never\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _void(Class, params) {\n return new Class({\n type: \"void\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _date(Class, params) {\n return new Class({\n type: \"date\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lt(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lte(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\n// @__NO_SIDE_EFFECTS__\nexport function _gt(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _gte(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\n// @__NO_SIDE_EFFECTS__\nexport function _positive(params) {\n return _gt(0, params);\n}\n// negative\n// @__NO_SIDE_EFFECTS__\nexport function _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\n// @__NO_SIDE_EFFECTS__\nexport function _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\n// @__NO_SIDE_EFFECTS__\nexport function _nonnegative(params) {\n return _gte(0, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function _multipleOf(value, params) {\n return new checks.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ...util.normalizeParams(params),\n value,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxSize(maximum, params) {\n return new checks.$ZodCheckMaxSize({\n check: \"max_size\",\n ...util.normalizeParams(params),\n maximum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minSize(minimum, params) {\n return new checks.$ZodCheckMinSize({\n check: \"min_size\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _size(size, params) {\n return new checks.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ...util.normalizeParams(params),\n size,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxLength(maximum, params) {\n const ch = new checks.$ZodCheckMaxLength({\n check: \"max_length\",\n ...util.normalizeParams(params),\n maximum,\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minLength(minimum, params) {\n return new checks.$ZodCheckMinLength({\n check: \"min_length\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _length(length, params) {\n return new checks.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ...util.normalizeParams(params),\n length,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _regex(pattern, params) {\n return new checks.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ...util.normalizeParams(params),\n pattern,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lowercase(params) {\n return new checks.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uppercase(params) {\n return new checks.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _includes(includes, params) {\n return new checks.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ...util.normalizeParams(params),\n includes,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _startsWith(prefix, params) {\n return new checks.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ...util.normalizeParams(params),\n prefix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _endsWith(suffix, params) {\n return new checks.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ...util.normalizeParams(params),\n suffix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _property(property, schema, params) {\n return new checks.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mime(types, params) {\n return new checks.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _overwrite(tx) {\n return new checks.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx,\n });\n}\n// normalize\n// @__NO_SIDE_EFFECTS__\nexport function _normalize(form) {\n return _overwrite((input) => input.normalize(form));\n}\n// trim\n// @__NO_SIDE_EFFECTS__\nexport function _trim() {\n return _overwrite((input) => input.trim());\n}\n// toLowerCase\n// @__NO_SIDE_EFFECTS__\nexport function _toLowerCase() {\n return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\n// @__NO_SIDE_EFFECTS__\nexport function _toUpperCase() {\n return _overwrite((input) => input.toUpperCase());\n}\n// slugify\n// @__NO_SIDE_EFFECTS__\nexport function _slugify() {\n return _overwrite((input) => util.slugify(input));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ...util.normalizeParams(params),\n });\n}\nexport function _xor(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass<schemas.$ZodTuple>,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\n// @__NO_SIDE_EFFECTS__\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _file(Class, params) {\n return new Class({\n type: \"file\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _custom(Class, fn, _params) {\n const norm = util.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// same as _custom but defaults to abort:false\n// @__NO_SIDE_EFFECTS__\nexport function _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...util.normalizeParams(_params),\n });\n return schema;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _superRefine(fn, params) {\n const ch = _check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n }, params);\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _check(fn, params) {\n const ch = new checks.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function describe(description) {\n const ch = new checks.$ZodCheck({ check: \"describe\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, description });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function meta(metadata) {\n const ch = new checks.$ZodCheck({ check: \"meta\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, ...metadata });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringbool(Classes, _params) {\n const params = util.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const stringSchema = new _String({ type: \"string\", error: params.error });\n const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n const codec = new _Codec({\n type: \"pipe\",\n in: stringSchema,\n out: booleanSchema,\n transform: ((input, payload) => {\n let data = input;\n if (params.case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: codec,\n continue: false,\n });\n return {};\n }\n }),\n reverseTransform: ((input, _payload) => {\n if (input === true) {\n return truthyArray[0] || \"true\";\n }\n else {\n return falsyArray[0] || \"false\";\n }\n }),\n error: params.error,\n });\n return codec;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = util.normalizeParams(_params);\n const def = {\n ...util.normalizeParams(_params),\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n ...params,\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\n","import { globalRegistry } from \"./registries.js\";\n// function initializeContext<T extends schemas.$ZodType>(inputs: JSONSchemaGeneratorParams<T>): ToJSONSchemaContext<T> {\n// return {\n// processor: inputs.processor,\n// metadataRegistry: inputs.metadata ?? globalRegistry,\n// target: inputs.target ?? \"draft-2020-12\",\n// unrepresentable: inputs.unrepresentable ?? \"throw\",\n// };\n// }\nexport function initializeContext(params) {\n // Normalize target: convert old non-hyphenated versions to hyphenated versions\n let target = params?.target ?? \"draft-2020-12\";\n if (target === \"draft-4\")\n target = \"draft-04\";\n if (target === \"draft-7\")\n target = \"draft-07\";\n return {\n processors: params.processors ?? {},\n metadataRegistry: params?.metadata ?? globalRegistry,\n target,\n unrepresentable: params?.unrepresentable ?? \"throw\",\n override: params?.override ?? (() => { }),\n io: params?.io ?? \"output\",\n counter: 0,\n seen: new Map(),\n cycles: params?.cycles ?? \"ref\",\n reused: params?.reused ?? \"inline\",\n external: params?.external ?? undefined,\n };\n}\nexport function process(schema, ctx, _params = { path: [], schemaPath: [] }) {\n var _a;\n const def = schema._zod.def;\n // check for schema in seens\n const seen = ctx.seen.get(schema);\n if (seen) {\n seen.count++;\n // check if cycle\n const isCycle = _params.schemaPath.includes(schema);\n if (isCycle) {\n seen.cycle = _params.path;\n }\n return seen.schema;\n }\n // initialize\n const result = { schema: {}, count: 1, cycle: undefined, path: _params.path };\n ctx.seen.set(schema, result);\n // custom method overrides default behavior\n const overrideSchema = schema._zod.toJSONSchema?.();\n if (overrideSchema) {\n result.schema = overrideSchema;\n }\n else {\n const params = {\n ..._params,\n schemaPath: [..._params.schemaPath, schema],\n path: _params.path,\n };\n if (schema._zod.processJSONSchema) {\n schema._zod.processJSONSchema(ctx, result.schema, params);\n }\n else {\n const _json = result.schema;\n const processor = ctx.processors[def.type];\n if (!processor) {\n throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);\n }\n processor(schema, ctx, _json, params);\n }\n const parent = schema._zod.parent;\n if (parent) {\n // Also set ref if processor didn't (for inheritance)\n if (!result.ref)\n result.ref = parent;\n process(parent, ctx, params);\n ctx.seen.get(parent).isParent = true;\n }\n }\n // metadata\n const meta = ctx.metadataRegistry.get(schema);\n if (meta)\n Object.assign(result.schema, meta);\n if (ctx.io === \"input\" && isTransforming(schema)) {\n // examples/defaults only apply to output type of pipe\n delete result.schema.examples;\n delete result.schema.default;\n }\n // set prefault as default\n if (ctx.io === \"input\" && \"_prefault\" in result.schema)\n (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n delete result.schema._prefault;\n // pulling fresh from ctx.seen in case it was overwritten\n const _result = ctx.seen.get(schema);\n return _result.schema;\n}\nexport function extractDefs(ctx, schema\n// params: EmitParams\n) {\n // iterate over seen map;\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // Track ids to detect duplicates across different schemas\n const idToSchema = new Map();\n for (const entry of ctx.seen.entries()) {\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n const existing = idToSchema.get(id);\n if (existing && existing !== entry[0]) {\n throw new Error(`Duplicate schema id \"${id}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n }\n idToSchema.set(id, entry[0]);\n }\n }\n // returns a ref to the schema\n // defId will be empty if the ref points to an external schema (or #)\n const makeURI = (entry) => {\n // comparing the seen objects because sometimes\n // multiple schemas map to the same seen object.\n // e.g. lazy\n // external is configured\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (ctx.external) {\n const externalId = ctx.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${ctx.counter++}`;\n // check if schema is in the external registry\n const uriGenerator = ctx.external.uri ?? ((id) => id);\n if (externalId) {\n return { ref: uriGenerator(externalId) };\n }\n // otherwise, add to __shared\n const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`;\n entry[1].defId = id; // set defId so it will be reused if needed\n return { defId: id, ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${id}` };\n }\n if (entry[1] === root) {\n return { ref: \"#\" };\n }\n // self-contained schema\n const uriPrefix = `#`;\n const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n return { defId, ref: defUriPrefix + defId };\n };\n // stored cached version in `def` property\n // remove all properties, set $ref\n const extractToDef = (entry) => {\n // if the schema is already a reference, do not extract it\n if (entry[1].schema.$ref) {\n return;\n }\n const seen = entry[1];\n const { ref, defId } = makeURI(entry);\n seen.def = { ...seen.schema };\n // defId won't be set if the schema is a reference to an external schema\n // or if the schema is the root schema\n if (defId)\n seen.defId = defId;\n // wipe away all properties except $ref\n const schema = seen.schema;\n for (const key in schema) {\n delete schema[key];\n }\n schema.$ref = ref;\n };\n // throw on cycles\n // break cycles\n if (ctx.cycles === \"throw\") {\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.cycle) {\n throw new Error(\"Cycle detected: \" +\n `#/${seen.cycle?.join(\"/\")}/<root>` +\n '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n }\n }\n }\n // extract schemas into $defs\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n // convert root schema to # $ref\n if (schema === entry[0]) {\n extractToDef(entry); // this has special handling for the root schema\n continue;\n }\n // extract schemas that are in the external registry\n if (ctx.external) {\n const ext = ctx.external.registry.get(entry[0])?.id;\n if (schema !== entry[0] && ext) {\n extractToDef(entry);\n continue;\n }\n }\n // extract schemas with `id` meta\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n extractToDef(entry);\n continue;\n }\n // break cycles\n if (seen.cycle) {\n // any\n extractToDef(entry);\n continue;\n }\n // extract reused schemas\n if (seen.count > 1) {\n if (ctx.reused === \"ref\") {\n extractToDef(entry);\n // biome-ignore lint:\n continue;\n }\n }\n }\n}\nexport function finalize(ctx, schema) {\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // flatten refs - inherit properties from parent schemas\n const flattenRef = (zodSchema) => {\n const seen = ctx.seen.get(zodSchema);\n // already processed\n if (seen.ref === null)\n return;\n const schema = seen.def ?? seen.schema;\n const _cached = { ...schema };\n const ref = seen.ref;\n seen.ref = null; // prevent infinite recursion\n if (ref) {\n flattenRef(ref);\n const refSeen = ctx.seen.get(ref);\n const refSchema = refSeen.schema;\n // merge referenced schema into current\n if (refSchema.$ref && (ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\")) {\n // older drafts can't combine $ref with other properties\n schema.allOf = schema.allOf ?? [];\n schema.allOf.push(refSchema);\n }\n else {\n Object.assign(schema, refSchema);\n }\n // restore child's own properties (child wins)\n Object.assign(schema, _cached);\n const isParentRef = zodSchema._zod.parent === ref;\n // For parent chain, child is a refinement - remove parent-only properties\n if (isParentRef) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (!(key in _cached)) {\n delete schema[key];\n }\n }\n }\n // When ref was extracted to $defs, remove properties that match the definition\n if (refSchema.$ref && refSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in refSeen.def && JSON.stringify(schema[key]) === JSON.stringify(refSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n // If parent was extracted (has $ref), propagate $ref to this schema\n // This handles cases like: readonly().meta({id}).describe()\n // where processor sets ref to innerType but parent should be referenced\n const parent = zodSchema._zod.parent;\n if (parent && parent !== ref) {\n // Ensure parent is processed first so its def has inherited properties\n flattenRef(parent);\n const parentSeen = ctx.seen.get(parent);\n if (parentSeen?.schema.$ref) {\n schema.$ref = parentSeen.schema.$ref;\n // De-duplicate with parent's definition\n if (parentSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in parentSeen.def && JSON.stringify(schema[key]) === JSON.stringify(parentSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n }\n // execute overrides\n ctx.override({\n zodSchema: zodSchema,\n jsonSchema: schema,\n path: seen.path ?? [],\n });\n };\n for (const entry of [...ctx.seen.entries()].reverse()) {\n flattenRef(entry[0]);\n }\n const result = {};\n if (ctx.target === \"draft-2020-12\") {\n result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n }\n else if (ctx.target === \"draft-07\") {\n result.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (ctx.target === \"draft-04\") {\n result.$schema = \"http://json-schema.org/draft-04/schema#\";\n }\n else if (ctx.target === \"openapi-3.0\") {\n // OpenAPI 3.0 schema objects should not include a $schema property\n }\n else {\n // Arbitrary string values are allowed but won't have a $schema property set\n }\n if (ctx.external?.uri) {\n const id = ctx.external.registry.get(schema)?.id;\n if (!id)\n throw new Error(\"Schema is missing an `id` property\");\n result.$id = ctx.external.uri(id);\n }\n Object.assign(result, root.def ?? root.schema);\n // The `id` in `.meta()` is a Zod-specific registration tag used to extract\n // schemas into $defs — it is not user-facing JSON Schema metadata. Strip it\n // from the output body where it would otherwise leak. The id is preserved\n // implicitly via the $defs key (and via $ref paths).\n const rootMetaId = ctx.metadataRegistry.get(schema)?.id;\n if (rootMetaId !== undefined && result.id === rootMetaId)\n delete result.id;\n // build defs object\n const defs = ctx.external?.defs ?? {};\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.def && seen.defId) {\n if (seen.def.id === seen.defId)\n delete seen.def.id;\n defs[seen.defId] = seen.def;\n }\n }\n // set definitions in result\n if (ctx.external) {\n }\n else {\n if (Object.keys(defs).length > 0) {\n if (ctx.target === \"draft-2020-12\") {\n result.$defs = defs;\n }\n else {\n result.definitions = defs;\n }\n }\n }\n try {\n // this \"finalizes\" this schema and ensures all cycles are removed\n // each call to finalize() is functionally independent\n // though the seen map is shared\n const finalized = JSON.parse(JSON.stringify(result));\n Object.defineProperty(finalized, \"~standard\", {\n value: {\n ...schema[\"~standard\"],\n jsonSchema: {\n input: createStandardJSONSchemaMethod(schema, \"input\", ctx.processors),\n output: createStandardJSONSchemaMethod(schema, \"output\", ctx.processors),\n },\n },\n enumerable: false,\n writable: false,\n });\n return finalized;\n }\n catch (_err) {\n throw new Error(\"Error converting schema to JSON.\");\n }\n}\nfunction isTransforming(_schema, _ctx) {\n const ctx = _ctx ?? { seen: new Set() };\n if (ctx.seen.has(_schema))\n return false;\n ctx.seen.add(_schema);\n const def = _schema._zod.def;\n if (def.type === \"transform\")\n return true;\n if (def.type === \"array\")\n return isTransforming(def.element, ctx);\n if (def.type === \"set\")\n return isTransforming(def.valueType, ctx);\n if (def.type === \"lazy\")\n return isTransforming(def.getter(), ctx);\n if (def.type === \"promise\" ||\n def.type === \"optional\" ||\n def.type === \"nonoptional\" ||\n def.type === \"nullable\" ||\n def.type === \"readonly\" ||\n def.type === \"default\" ||\n def.type === \"prefault\") {\n return isTransforming(def.innerType, ctx);\n }\n if (def.type === \"intersection\") {\n return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n }\n if (def.type === \"record\" || def.type === \"map\") {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n if (def.type === \"pipe\") {\n if (_schema._zod.traits.has(\"$ZodCodec\"))\n return true;\n return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n }\n if (def.type === \"object\") {\n for (const key in def.shape) {\n if (isTransforming(def.shape[key], ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"union\") {\n for (const option of def.options) {\n if (isTransforming(option, ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"tuple\") {\n for (const item of def.items) {\n if (isTransforming(item, ctx))\n return true;\n }\n if (def.rest && isTransforming(def.rest, ctx))\n return true;\n return false;\n }\n return false;\n}\n/**\n * Creates a toJSONSchema method for a schema instance.\n * This encapsulates the logic of initializing context, processing, extracting defs, and finalizing.\n */\nexport const createToJSONSchemaMethod = (schema, processors = {}) => (params) => {\n const ctx = initializeContext({ ...params, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\nexport const createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => {\n const { libraryOptions, target } = params ?? {};\n const ctx = initializeContext({ ...(libraryOptions ?? {}), target, io, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\n","import { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\nimport { getEnumValues } from \"./util.js\";\nconst formatMap = {\n guid: \"uuid\",\n url: \"uri\",\n datetime: \"date-time\",\n json_string: \"json-string\",\n regex: \"\", // do not set\n};\n// ==================== SIMPLE TYPE PROCESSORS ====================\nexport const stringProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n json.type = \"string\";\n const { minimum, maximum, format, patterns, contentEncoding } = schema._zod\n .bag;\n if (typeof minimum === \"number\")\n json.minLength = minimum;\n if (typeof maximum === \"number\")\n json.maxLength = maximum;\n // custom pattern overrides format\n if (format) {\n json.format = formatMap[format] ?? format;\n if (json.format === \"\")\n delete json.format; // empty format is not valid\n // JSON Schema format: \"time\" requires a full time with offset or Z\n // z.iso.time() does not include timezone information, so format: \"time\" should never be used\n if (format === \"time\") {\n delete json.format;\n }\n }\n if (contentEncoding)\n json.contentEncoding = contentEncoding;\n if (patterns && patterns.size > 0) {\n const regexes = [...patterns];\n if (regexes.length === 1)\n json.pattern = regexes[0].source;\n else if (regexes.length > 1) {\n json.allOf = [\n ...regexes.map((regex) => ({\n ...(ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\"\n ? { type: \"string\" }\n : {}),\n pattern: regex.source,\n })),\n ];\n }\n }\n};\nexport const numberProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag;\n if (typeof format === \"string\" && format.includes(\"int\"))\n json.type = \"integer\";\n else\n json.type = \"number\";\n // when both minimum and exclusiveMinimum exist, pick the more restrictive one\n const exMin = typeof exclusiveMinimum === \"number\" && exclusiveMinimum >= (minimum ?? Number.NEGATIVE_INFINITY);\n const exMax = typeof exclusiveMaximum === \"number\" && exclusiveMaximum <= (maximum ?? Number.POSITIVE_INFINITY);\n const legacy = ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\";\n if (exMin) {\n if (legacy) {\n json.minimum = exclusiveMinimum;\n json.exclusiveMinimum = true;\n }\n else {\n json.exclusiveMinimum = exclusiveMinimum;\n }\n }\n else if (typeof minimum === \"number\") {\n json.minimum = minimum;\n }\n if (exMax) {\n if (legacy) {\n json.maximum = exclusiveMaximum;\n json.exclusiveMaximum = true;\n }\n else {\n json.exclusiveMaximum = exclusiveMaximum;\n }\n }\n else if (typeof maximum === \"number\") {\n json.maximum = maximum;\n }\n if (typeof multipleOf === \"number\")\n json.multipleOf = multipleOf;\n};\nexport const booleanProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const bigintProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt cannot be represented in JSON Schema\");\n }\n};\nexport const symbolProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Symbols cannot be represented in JSON Schema\");\n }\n};\nexport const nullProcessor = (_schema, ctx, json, _params) => {\n if (ctx.target === \"openapi-3.0\") {\n json.type = \"string\";\n json.nullable = true;\n json.enum = [null];\n }\n else {\n json.type = \"null\";\n }\n};\nexport const undefinedProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Undefined cannot be represented in JSON Schema\");\n }\n};\nexport const voidProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Void cannot be represented in JSON Schema\");\n }\n};\nexport const neverProcessor = (_schema, _ctx, json, _params) => {\n json.not = {};\n};\nexport const anyProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const unknownProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const dateProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Date cannot be represented in JSON Schema\");\n }\n};\nexport const enumProcessor = (schema, _ctx, json, _params) => {\n const def = schema._zod.def;\n const values = getEnumValues(def.entries);\n // Number enums can have both string and number values\n if (values.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (values.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n json.enum = values;\n};\nexport const literalProcessor = (schema, ctx, json, _params) => {\n const def = schema._zod.def;\n const vals = [];\n for (const val of def.values) {\n if (val === undefined) {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n }\n else {\n // do not add to vals\n }\n }\n else if (typeof val === \"bigint\") {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n }\n else {\n vals.push(Number(val));\n }\n }\n else {\n vals.push(val);\n }\n }\n if (vals.length === 0) {\n // do nothing (an undefined literal was stripped)\n }\n else if (vals.length === 1) {\n const val = vals[0];\n json.type = val === null ? \"null\" : typeof val;\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.enum = [val];\n }\n else {\n json.const = val;\n }\n }\n else {\n if (vals.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (vals.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n if (vals.every((v) => typeof v === \"boolean\"))\n json.type = \"boolean\";\n if (vals.every((v) => v === null))\n json.type = \"null\";\n json.enum = vals;\n }\n};\nexport const nanProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"NaN cannot be represented in JSON Schema\");\n }\n};\nexport const templateLiteralProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const pattern = schema._zod.pattern;\n if (!pattern)\n throw new Error(\"Pattern not found in template literal\");\n _json.type = \"string\";\n _json.pattern = pattern.source;\n};\nexport const fileProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const file = {\n type: \"string\",\n format: \"binary\",\n contentEncoding: \"binary\",\n };\n const { minimum, maximum, mime } = schema._zod.bag;\n if (minimum !== undefined)\n file.minLength = minimum;\n if (maximum !== undefined)\n file.maxLength = maximum;\n if (mime) {\n if (mime.length === 1) {\n file.contentMediaType = mime[0];\n Object.assign(_json, file);\n }\n else {\n Object.assign(_json, file); // shared props at root\n _json.anyOf = mime.map((m) => ({ contentMediaType: m })); // only contentMediaType differs\n }\n }\n else {\n Object.assign(_json, file);\n }\n};\nexport const successProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const customProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Custom types cannot be represented in JSON Schema\");\n }\n};\nexport const functionProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Function types cannot be represented in JSON Schema\");\n }\n};\nexport const transformProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Transforms cannot be represented in JSON Schema\");\n }\n};\nexport const mapProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Map cannot be represented in JSON Schema\");\n }\n};\nexport const setProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Set cannot be represented in JSON Schema\");\n }\n};\n// ==================== COMPOSITE TYPE PROCESSORS ====================\nexport const arrayProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n json.type = \"array\";\n json.items = process(def.element, ctx, {\n ...params,\n path: [...params.path, \"items\"],\n });\n};\nexport const objectProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n json.properties = {};\n const shape = def.shape;\n for (const key in shape) {\n json.properties[key] = process(shape[key], ctx, {\n ...params,\n path: [...params.path, \"properties\", key],\n });\n }\n // required keys\n const allKeys = new Set(Object.keys(shape));\n const requiredKeys = new Set([...allKeys].filter((key) => {\n const v = def.shape[key]._zod;\n if (ctx.io === \"input\") {\n return v.optin === undefined;\n }\n else {\n return v.optout === undefined;\n }\n }));\n if (requiredKeys.size > 0) {\n json.required = Array.from(requiredKeys);\n }\n // catchall\n if (def.catchall?._zod.def.type === \"never\") {\n // strict\n json.additionalProperties = false;\n }\n else if (!def.catchall) {\n // regular\n if (ctx.io === \"output\")\n json.additionalProperties = false;\n }\n else if (def.catchall) {\n json.additionalProperties = process(def.catchall, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n};\nexport const unionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n // Exclusive unions (inclusive === false) use oneOf (exactly one match) instead of anyOf (one or more matches)\n // This includes both z.xor() and discriminated unions\n const isExclusive = def.inclusive === false;\n const options = def.options.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, isExclusive ? \"oneOf\" : \"anyOf\", i],\n }));\n if (isExclusive) {\n json.oneOf = options;\n }\n else {\n json.anyOf = options;\n }\n};\nexport const intersectionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const a = process(def.left, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 0],\n });\n const b = process(def.right, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 1],\n });\n const isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n const allOf = [\n ...(isSimpleIntersection(a) ? a.allOf : [a]),\n ...(isSimpleIntersection(b) ? b.allOf : [b]),\n ];\n json.allOf = allOf;\n};\nexport const tupleProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"array\";\n const prefixPath = ctx.target === \"draft-2020-12\" ? \"prefixItems\" : \"items\";\n const restPath = ctx.target === \"draft-2020-12\" ? \"items\" : ctx.target === \"openapi-3.0\" ? \"items\" : \"additionalItems\";\n const prefixItems = def.items.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, prefixPath, i],\n }));\n const rest = def.rest\n ? process(def.rest, ctx, {\n ...params,\n path: [...params.path, restPath, ...(ctx.target === \"openapi-3.0\" ? [def.items.length] : [])],\n })\n : null;\n if (ctx.target === \"draft-2020-12\") {\n json.prefixItems = prefixItems;\n if (rest) {\n json.items = rest;\n }\n }\n else if (ctx.target === \"openapi-3.0\") {\n json.items = {\n anyOf: prefixItems,\n };\n if (rest) {\n json.items.anyOf.push(rest);\n }\n json.minItems = prefixItems.length;\n if (!rest) {\n json.maxItems = prefixItems.length;\n }\n }\n else {\n json.items = prefixItems;\n if (rest) {\n json.additionalItems = rest;\n }\n }\n // length\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n};\nexport const recordProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n // For looseRecord with regex patterns, use patternProperties\n // This correctly represents \"only validate keys matching the pattern\" semantics\n // and composes well with allOf (intersections)\n const keyType = def.keyType;\n const keyBag = keyType._zod.bag;\n const patterns = keyBag?.patterns;\n if (def.mode === \"loose\" && patterns && patterns.size > 0) {\n // Use patternProperties for looseRecord with regex patterns\n const valueSchema = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"patternProperties\", \"*\"],\n });\n json.patternProperties = {};\n for (const pattern of patterns) {\n json.patternProperties[pattern.source] = valueSchema;\n }\n }\n else {\n // Default behavior: use propertyNames + additionalProperties\n if (ctx.target === \"draft-07\" || ctx.target === \"draft-2020-12\") {\n json.propertyNames = process(def.keyType, ctx, {\n ...params,\n path: [...params.path, \"propertyNames\"],\n });\n }\n json.additionalProperties = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n // Add required for keys with discrete values (enum, literal, etc.)\n const keyValues = keyType._zod.values;\n if (keyValues) {\n const validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n if (validKeyValues.length > 0) {\n json.required = validKeyValues;\n }\n }\n};\nexport const nullableProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const inner = process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n if (ctx.target === \"openapi-3.0\") {\n seen.ref = def.innerType;\n json.nullable = true;\n }\n else {\n json.anyOf = [inner, { type: \"null\" }];\n }\n};\nexport const nonoptionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const defaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.default = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const prefaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n if (ctx.io === \"input\")\n json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const catchProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n let catchValue;\n try {\n catchValue = def.catchValue(undefined);\n }\n catch {\n throw new Error(\"Dynamic catch values are not supported in JSON Schema\");\n }\n json.default = catchValue;\n};\nexport const pipeProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n const inIsTransform = def.in._zod.traits.has(\"$ZodTransform\");\n const innerType = ctx.io === \"input\" ? (inIsTransform ? def.out : def.in) : def.out;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\nexport const readonlyProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.readOnly = true;\n};\nexport const promiseProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const optionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const lazyProcessor = (schema, ctx, _json, params) => {\n const innerType = schema._zod.innerType;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\n// ==================== ALL PROCESSORS ====================\nexport const allProcessors = {\n string: stringProcessor,\n number: numberProcessor,\n boolean: booleanProcessor,\n bigint: bigintProcessor,\n symbol: symbolProcessor,\n null: nullProcessor,\n undefined: undefinedProcessor,\n void: voidProcessor,\n never: neverProcessor,\n any: anyProcessor,\n unknown: unknownProcessor,\n date: dateProcessor,\n enum: enumProcessor,\n literal: literalProcessor,\n nan: nanProcessor,\n template_literal: templateLiteralProcessor,\n file: fileProcessor,\n success: successProcessor,\n custom: customProcessor,\n function: functionProcessor,\n transform: transformProcessor,\n map: mapProcessor,\n set: setProcessor,\n array: arrayProcessor,\n object: objectProcessor,\n union: unionProcessor,\n intersection: intersectionProcessor,\n tuple: tupleProcessor,\n record: recordProcessor,\n nullable: nullableProcessor,\n nonoptional: nonoptionalProcessor,\n default: defaultProcessor,\n prefault: prefaultProcessor,\n catch: catchProcessor,\n pipe: pipeProcessor,\n readonly: readonlyProcessor,\n promise: promiseProcessor,\n optional: optionalProcessor,\n lazy: lazyProcessor,\n};\nexport function toJSONSchema(input, params) {\n if (\"_idmap\" in input) {\n // Registry case\n const registry = input;\n const ctx = initializeContext({ ...params, processors: allProcessors });\n const defs = {};\n // First pass: process all schemas to build the seen map\n for (const entry of registry._idmap.entries()) {\n const [_, schema] = entry;\n process(schema, ctx);\n }\n const schemas = {};\n const external = {\n registry,\n uri: params?.uri,\n defs,\n };\n // Update the context with external configuration\n ctx.external = external;\n // Second pass: emit each schema\n for (const entry of registry._idmap.entries()) {\n const [key, schema] = entry;\n extractDefs(ctx, schema);\n schemas[key] = finalize(ctx, schema);\n }\n if (Object.keys(defs).length > 0) {\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n schemas.__shared = {\n [defsSegment]: defs,\n };\n }\n return { schemas };\n }\n // Single schema case\n const ctx = initializeContext({ ...params, processors: allProcessors });\n process(input, ctx);\n extractDefs(ctx, input);\n return finalize(ctx, input);\n}\n","import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n core.$ZodISODateTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function datetime(params) {\n return core._isoDateTime(ZodISODateTime, params);\n}\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n core.$ZodISODate.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function date(params) {\n return core._isoDate(ZodISODate, params);\n}\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n core.$ZodISOTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function time(params) {\n return core._isoTime(ZodISOTime, params);\n}\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n core.$ZodISODuration.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function duration(params) {\n return core._isoDuration(ZodISODuration, params);\n}\n","import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\nconst initializer = (inst, issues) => {\n $ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n Object.defineProperties(inst, {\n format: {\n value: (mapper) => core.formatError(inst, mapper),\n // enumerable: false,\n },\n flatten: {\n value: (mapper) => core.flattenError(inst, mapper),\n // enumerable: false,\n },\n addIssue: {\n value: (issue) => {\n inst.issues.push(issue);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n addIssues: {\n value: (issues) => {\n inst.issues.push(...issues);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n isEmpty: {\n get() {\n return inst.issues.length === 0;\n },\n // enumerable: false,\n },\n });\n // Object.defineProperty(inst, \"isEmpty\", {\n // get() {\n // return inst.issues.length === 0;\n // },\n // });\n};\nexport const ZodError = /*@__PURE__*/ core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = /*@__PURE__*/ core.$constructor(\"ZodError\", initializer, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n","import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\n// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError);\n","import * as core from \"../core/index.js\";\nimport { util } from \"../core/index.js\";\nimport * as processors from \"../core/json-schema-processors.js\";\nimport { createStandardJSONSchemaMethod, createToJSONSchemaMethod } from \"../core/to-json-schema.js\";\nimport * as checks from \"./checks.js\";\nimport * as iso from \"./iso.js\";\nimport * as parse from \"./parse.js\";\n// Lazy-bind builder methods.\n//\n// Builder methods (`.optional`, `.array`, `.refine`, ...) live as\n// non-enumerable getters on each concrete schema constructor's\n// prototype. On first access from an instance the getter allocates\n// `fn.bind(this)` and caches it as an own property on that instance,\n// so detached usage (`const m = schema.optional; m()`) still works\n// and the per-instance allocation only happens for methods actually\n// touched.\n//\n// One install per (prototype, group), memoized by `_installedGroups`.\nconst _installedGroups = /* @__PURE__ */ new WeakMap();\nfunction _installLazyMethods(inst, group, methods) {\n const proto = Object.getPrototypeOf(inst);\n let installed = _installedGroups.get(proto);\n if (!installed) {\n installed = new Set();\n _installedGroups.set(proto, installed);\n }\n if (installed.has(group))\n return;\n installed.add(group);\n for (const key in methods) {\n const fn = methods[key];\n Object.defineProperty(proto, key, {\n configurable: true,\n enumerable: false,\n get() {\n const bound = fn.bind(this);\n Object.defineProperty(this, key, {\n configurable: true,\n writable: true,\n enumerable: true,\n value: bound,\n });\n return bound;\n },\n set(v) {\n Object.defineProperty(this, key, {\n configurable: true,\n writable: true,\n enumerable: true,\n value: v,\n });\n },\n });\n }\n}\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n core.$ZodType.init(inst, def);\n Object.assign(inst[\"~standard\"], {\n jsonSchema: {\n input: createStandardJSONSchemaMethod(inst, \"input\"),\n output: createStandardJSONSchemaMethod(inst, \"output\"),\n },\n });\n inst.toJSONSchema = createToJSONSchemaMethod(inst, {});\n inst.def = def;\n inst.type = def.type;\n Object.defineProperty(inst, \"_def\", { value: def });\n // Parse-family is intentionally kept as per-instance closures: these are\n // the hot path AND the most-detached methods (`arr.map(schema.parse)`,\n // `const { parse } = schema`, etc.). Eager closures here mean callers pay\n // ~12 closure allocations per schema but get monomorphic call sites and\n // detached usage that \"just works\".\n inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n inst.spa = inst.safeParseAsync;\n inst.encode = (data, params) => parse.encode(inst, data, params);\n inst.decode = (data, params) => parse.decode(inst, data, params);\n inst.encodeAsync = async (data, params) => parse.encodeAsync(inst, data, params);\n inst.decodeAsync = async (data, params) => parse.decodeAsync(inst, data, params);\n inst.safeEncode = (data, params) => parse.safeEncode(inst, data, params);\n inst.safeDecode = (data, params) => parse.safeDecode(inst, data, params);\n inst.safeEncodeAsync = async (data, params) => parse.safeEncodeAsync(inst, data, params);\n inst.safeDecodeAsync = async (data, params) => parse.safeDecodeAsync(inst, data, params);\n // All builder methods are placed on the internal prototype as lazy-bind\n // getters. On first access per-instance, a bound thunk is allocated and\n // cached as an own property; subsequent accesses skip the getter. This\n // means: no per-instance allocation for unused methods, full\n // detachability preserved (`const m = schema.optional; m()` works), and\n // shared underlying function references across all instances.\n _installLazyMethods(inst, \"ZodType\", {\n check(...chks) {\n const def = this.def;\n return this.clone(util.mergeDefs(def, {\n checks: [\n ...(def.checks ?? []),\n ...chks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }), { parent: true });\n },\n with(...chks) {\n return this.check(...chks);\n },\n clone(def, params) {\n return core.clone(this, def, params);\n },\n brand() {\n return this;\n },\n register(reg, meta) {\n reg.add(this, meta);\n return this;\n },\n refine(check, params) {\n return this.check(refine(check, params));\n },\n superRefine(refinement, params) {\n return this.check(superRefine(refinement, params));\n },\n overwrite(fn) {\n return this.check(checks.overwrite(fn));\n },\n optional() {\n return optional(this);\n },\n exactOptional() {\n return exactOptional(this);\n },\n nullable() {\n return nullable(this);\n },\n nullish() {\n return optional(nullable(this));\n },\n nonoptional(params) {\n return nonoptional(this, params);\n },\n array() {\n return array(this);\n },\n or(arg) {\n return union([this, arg]);\n },\n and(arg) {\n return intersection(this, arg);\n },\n transform(tx) {\n return pipe(this, transform(tx));\n },\n default(d) {\n return _default(this, d);\n },\n prefault(d) {\n return prefault(this, d);\n },\n catch(params) {\n return _catch(this, params);\n },\n pipe(target) {\n return pipe(this, target);\n },\n readonly() {\n return readonly(this);\n },\n describe(description) {\n const cl = this.clone();\n core.globalRegistry.add(cl, { description });\n return cl;\n },\n meta(...args) {\n // overloaded: meta() returns the registered metadata, meta(data)\n // returns a clone with `data` registered. The mapped type picks\n // up the second overload, so we accept variadic any-args and\n // return `any` to satisfy both at runtime.\n if (args.length === 0)\n return core.globalRegistry.get(this);\n const cl = this.clone();\n core.globalRegistry.add(cl, args[0]);\n return cl;\n },\n isOptional() {\n return this.safeParse(undefined).success;\n },\n isNullable() {\n return this.safeParse(null).success;\n },\n apply(fn) {\n return fn(this);\n },\n });\n Object.defineProperty(inst, \"description\", {\n get() {\n return core.globalRegistry.get(inst)?.description;\n },\n configurable: true,\n });\n return inst;\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.stringProcessor(inst, ctx, json, params);\n const bag = inst._zod.bag;\n inst.format = bag.format ?? null;\n inst.minLength = bag.minimum ?? null;\n inst.maxLength = bag.maximum ?? null;\n _installLazyMethods(inst, \"_ZodString\", {\n regex(...args) {\n return this.check(checks.regex(...args));\n },\n includes(...args) {\n return this.check(checks.includes(...args));\n },\n startsWith(...args) {\n return this.check(checks.startsWith(...args));\n },\n endsWith(...args) {\n return this.check(checks.endsWith(...args));\n },\n min(...args) {\n return this.check(checks.minLength(...args));\n },\n max(...args) {\n return this.check(checks.maxLength(...args));\n },\n length(...args) {\n return this.check(checks.length(...args));\n },\n nonempty(...args) {\n return this.check(checks.minLength(1, ...args));\n },\n lowercase(params) {\n return this.check(checks.lowercase(params));\n },\n uppercase(params) {\n return this.check(checks.uppercase(params));\n },\n trim() {\n return this.check(checks.trim());\n },\n normalize(...args) {\n return this.check(checks.normalize(...args));\n },\n toLowerCase() {\n return this.check(checks.toLowerCase());\n },\n toUpperCase() {\n return this.check(checks.toUpperCase());\n },\n slugify() {\n return this.check(checks.slugify());\n },\n });\n});\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n _ZodString.init(inst, def);\n inst.email = (params) => inst.check(core._email(ZodEmail, params));\n inst.url = (params) => inst.check(core._url(ZodURL, params));\n inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params));\n inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params));\n inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params));\n inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params));\n inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params));\n inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params));\n inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params));\n inst.ulid = (params) => inst.check(core._ulid(ZodULID, params));\n inst.base64 = (params) => inst.check(core._base64(ZodBase64, params));\n inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params));\n inst.xid = (params) => inst.check(core._xid(ZodXID, params));\n inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params));\n inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params));\n inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params));\n inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params));\n inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params));\n inst.e164 = (params) => inst.check(core._e164(ZodE164, params));\n // iso\n inst.datetime = (params) => inst.check(iso.datetime(params));\n inst.date = (params) => inst.check(iso.date(params));\n inst.time = (params) => inst.check(iso.time(params));\n inst.duration = (params) => inst.check(iso.duration(params));\n});\nexport function string(params) {\n return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n core.$ZodStringFormat.init(inst, def);\n _ZodString.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmail.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodGUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodUUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodURL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n return core._url(ZodURL, params);\n}\nexport function httpUrl(params) {\n return core._url(ZodURL, {\n protocol: core.regexes.httpProtocol,\n hostname: core.regexes.domain,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmoji.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodNanoID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n return core._nanoid(ZodNanoID, params);\n}\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link ZodCUID2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\n/**\n * Validates a CUID v1 string.\n *\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link cuid2 | `z.cuid2()`} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport function cuid(params) {\n return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID2.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodULID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodXID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodKSUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n return core._ipv4(ZodIPv4, params);\n}\nexport const ZodMAC = /*@__PURE__*/ core.$constructor(\"ZodMAC\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodMAC.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function mac(params) {\n return core._mac(ZodMAC, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n core.$ZodCIDRv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n core.$ZodCIDRv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64URL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodE164.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n return core._e164(ZodE164, params);\n}\nexport const ZodJWT = /*@__PURE__*/ core.$constructor(\"ZodJWT\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodJWT.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function jwt(params) {\n return core._jwt(ZodJWT, params);\n}\nexport const ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCustomStringFormat.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nexport function hostname(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hostname\", core.regexes.hostname, _params);\n}\nexport function hex(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hex\", core.regexes.hex, _params);\n}\nexport function hash(alg, params) {\n const enc = params?.enc ?? \"hex\";\n const format = `${alg}_${enc}`;\n const regex = core.regexes[format];\n if (!regex)\n throw new Error(`Unrecognized hash format: ${format}`);\n return core._stringFormat(ZodCustomStringFormat, format, regex, params);\n}\nexport const ZodNumber = /*@__PURE__*/ core.$constructor(\"ZodNumber\", (inst, def) => {\n core.$ZodNumber.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.numberProcessor(inst, ctx, json, params);\n _installLazyMethods(inst, \"ZodNumber\", {\n gt(value, params) {\n return this.check(checks.gt(value, params));\n },\n gte(value, params) {\n return this.check(checks.gte(value, params));\n },\n min(value, params) {\n return this.check(checks.gte(value, params));\n },\n lt(value, params) {\n return this.check(checks.lt(value, params));\n },\n lte(value, params) {\n return this.check(checks.lte(value, params));\n },\n max(value, params) {\n return this.check(checks.lte(value, params));\n },\n int(params) {\n return this.check(int(params));\n },\n safe(params) {\n return this.check(int(params));\n },\n positive(params) {\n return this.check(checks.gt(0, params));\n },\n nonnegative(params) {\n return this.check(checks.gte(0, params));\n },\n negative(params) {\n return this.check(checks.lt(0, params));\n },\n nonpositive(params) {\n return this.check(checks.lte(0, params));\n },\n multipleOf(value, params) {\n return this.check(checks.multipleOf(value, params));\n },\n step(value, params) {\n return this.check(checks.multipleOf(value, params));\n },\n finite() {\n return this;\n },\n });\n const bag = inst._zod.bag;\n inst.minValue =\n Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n inst.maxValue =\n Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n inst.isFinite = true;\n inst.format = bag.format ?? null;\n});\nexport function number(params) {\n return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n core.$ZodNumberFormat.init(inst, def);\n ZodNumber.init(inst, def);\n});\nexport function int(params) {\n return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n core.$ZodBoolean.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.booleanProcessor(inst, ctx, json, params);\n});\nexport function boolean(params) {\n return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n core.$ZodBigInt.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.bigintProcessor(inst, ctx, json, params);\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));\n inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));\n inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));\n inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n const bag = inst._zod.bag;\n inst.minValue = bag.minimum ?? null;\n inst.maxValue = bag.maximum ?? null;\n inst.format = bag.format ?? null;\n});\nexport function bigint(params) {\n return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n core.$ZodBigIntFormat.init(inst, def);\n ZodBigInt.init(inst, def);\n});\n// int64\nexport function int64(params) {\n return core._int64(ZodBigIntFormat, params);\n}\n// uint64\nexport function uint64(params) {\n return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n core.$ZodSymbol.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.symbolProcessor(inst, ctx, json, params);\n});\nexport function symbol(params) {\n return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n core.$ZodUndefined.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.undefinedProcessor(inst, ctx, json, params);\n});\nfunction _undefined(params) {\n return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n core.$ZodNull.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullProcessor(inst, ctx, json, params);\n});\nfunction _null(params) {\n return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n core.$ZodAny.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.anyProcessor(inst, ctx, json, params);\n});\nexport function any() {\n return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n core.$ZodUnknown.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unknownProcessor(inst, ctx, json, params);\n});\nexport function unknown() {\n return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n core.$ZodNever.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.neverProcessor(inst, ctx, json, params);\n});\nexport function never(params) {\n return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n core.$ZodVoid.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.voidProcessor(inst, ctx, json, params);\n});\nfunction _void(params) {\n return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n core.$ZodDate.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.dateProcessor(inst, ctx, json, params);\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n const c = inst._zod.bag;\n inst.minDate = c.minimum ? new Date(c.minimum) : null;\n inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nexport function date(params) {\n return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n core.$ZodArray.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.arrayProcessor(inst, ctx, json, params);\n inst.element = def.element;\n _installLazyMethods(inst, \"ZodArray\", {\n min(n, params) {\n return this.check(checks.minLength(n, params));\n },\n nonempty(params) {\n return this.check(checks.minLength(1, params));\n },\n max(n, params) {\n return this.check(checks.maxLength(n, params));\n },\n length(n, params) {\n return this.check(checks.length(n, params));\n },\n unwrap() {\n return this.element;\n },\n });\n});\nexport function array(element, params) {\n return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n const shape = schema._zod.def.shape;\n return _enum(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n core.$ZodObjectJIT.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.objectProcessor(inst, ctx, json, params);\n util.defineLazy(inst, \"shape\", () => {\n return def.shape;\n });\n _installLazyMethods(inst, \"ZodObject\", {\n keyof() {\n return _enum(Object.keys(this._zod.def.shape));\n },\n catchall(catchall) {\n return this.clone({ ...this._zod.def, catchall: catchall });\n },\n passthrough() {\n return this.clone({ ...this._zod.def, catchall: unknown() });\n },\n loose() {\n return this.clone({ ...this._zod.def, catchall: unknown() });\n },\n strict() {\n return this.clone({ ...this._zod.def, catchall: never() });\n },\n strip() {\n return this.clone({ ...this._zod.def, catchall: undefined });\n },\n extend(incoming) {\n return util.extend(this, incoming);\n },\n safeExtend(incoming) {\n return util.safeExtend(this, incoming);\n },\n merge(other) {\n return util.merge(this, other);\n },\n pick(mask) {\n return util.pick(this, mask);\n },\n omit(mask) {\n return util.omit(this, mask);\n },\n partial(...args) {\n return util.partial(ZodOptional, this, args[0]);\n },\n required(...args) {\n return util.required(ZodNonOptional, this, args[0]);\n },\n });\n});\nexport function object(shape, params) {\n const def = {\n type: \"object\",\n shape: shape ?? {},\n ...util.normalizeParams(params),\n };\n return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: never(),\n ...util.normalizeParams(params),\n });\n}\n// looseObject\nexport function looseObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: unknown(),\n ...util.normalizeParams(params),\n });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n core.$ZodUnion.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\nexport function union(options, params) {\n return new ZodUnion({\n type: \"union\",\n options: options,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodXor = /*@__PURE__*/ core.$constructor(\"ZodXor\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodXor.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\n/** Creates an exclusive union (XOR) where exactly one option must match.\n * Unlike regular unions that succeed when any option matches, xor fails if\n * zero or more than one option matches the input. */\nexport function xor(options, params) {\n return new ZodXor({\n type: \"union\",\n options: options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n // const [options, params] = args;\n return new ZodDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n core.$ZodIntersection.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.intersectionProcessor(inst, ctx, json, params);\n});\nexport function intersection(left, right) {\n return new ZodIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n core.$ZodTuple.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.tupleProcessor(inst, ctx, json, params);\n inst.rest = (rest) => inst.clone({\n ...inst._zod.def,\n rest: rest,\n });\n});\nexport function tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof core.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodTuple({\n type: \"tuple\",\n items: items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n core.$ZodRecord.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.recordProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n // v3-compat: z.record(valueType, params?) — defaults keyType to z.string()\n if (!valueType || !valueType._zod) {\n return new ZodRecord({\n type: \"record\",\n keyType: string(),\n valueType: keyType,\n ...util.normalizeParams(valueType),\n });\n }\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\n// type alksjf = core.output<core.$ZodRecordKey>;\nexport function partialRecord(keyType, valueType, params) {\n const k = core.clone(keyType);\n k._zod.values = undefined;\n return new ZodRecord({\n type: \"record\",\n keyType: k,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function looseRecord(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n mode: \"loose\",\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n core.$ZodMap.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.mapProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function map(keyType, valueType, params) {\n return new ZodMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n core.$ZodSet.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.setProcessor(inst, ctx, json, params);\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n return new ZodSet({\n type: \"set\",\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n core.$ZodEnum.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.enumProcessor(inst, ctx, json, params);\n inst.enum = def.entries;\n inst.options = Object.values(def.entries);\n const keys = new Set(Object.keys(def.entries));\n inst.extract = (values, params) => {\n const newEntries = {};\n for (const value of values) {\n if (keys.has(value)) {\n newEntries[value] = def.entries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n inst.exclude = (values, params) => {\n const newEntries = { ...def.entries };\n for (const value of values) {\n if (keys.has(value)) {\n delete newEntries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n core.$ZodLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.literalProcessor(inst, ctx, json, params);\n inst.values = new Set(def.values);\n Object.defineProperty(inst, \"value\", {\n get() {\n if (def.values.length > 1) {\n throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n }\n return def.values[0];\n },\n });\n});\nexport function literal(value, params) {\n return new ZodLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n core.$ZodFile.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.fileProcessor(inst, ctx, json, params);\n inst.min = (size, params) => inst.check(core._minSize(size, params));\n inst.max = (size, params) => inst.check(core._maxSize(size, params));\n inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n core.$ZodTransform.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.transformProcessor(inst, ctx, json, params);\n inst._zod.parse = (payload, _ctx) => {\n if (_ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = inst);\n // _issue.continue ??= true;\n payload.issues.push(util.issue(_issue));\n }\n };\n const output = def.transform(payload.value, payload);\n if (output instanceof Promise) {\n return output.then((output) => {\n payload.value = output;\n payload.fallback = true;\n return payload;\n });\n }\n payload.value = output;\n payload.fallback = true;\n return payload;\n };\n});\nexport function transform(fn) {\n return new ZodTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n core.$ZodOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n return new ZodOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodExactOptional = /*@__PURE__*/ core.$constructor(\"ZodExactOptional\", (inst, def) => {\n core.$ZodExactOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function exactOptional(innerType) {\n return new ZodExactOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n core.$ZodNullable.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullableProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n return new ZodNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\nexport function nullish(innerType) {\n return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n core.$ZodDefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.defaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n return new ZodDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n core.$ZodPrefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.prefaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n return new ZodPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n core.$ZodNonOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nonoptionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n return new ZodNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n core.$ZodSuccess.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.successProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n return new ZodSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n core.$ZodCatch.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.catchProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n return new ZodCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n core.$ZodNaN.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nanProcessor(inst, ctx, json, params);\n});\nexport function nan(params) {\n return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n core.$ZodPipe.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.pipeProcessor(inst, ctx, json, params);\n inst.in = def.in;\n inst.out = def.out;\n});\nexport function pipe(in_, out) {\n return new ZodPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n // ...util.normalizeParams(params),\n });\n}\nexport const ZodCodec = /*@__PURE__*/ core.$constructor(\"ZodCodec\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodCodec.init(inst, def);\n});\nexport function codec(in_, out, params) {\n return new ZodCodec({\n type: \"pipe\",\n in: in_,\n out: out,\n transform: params.decode,\n reverseTransform: params.encode,\n });\n}\nexport function invertCodec(codec) {\n const def = codec._zod.def;\n return new ZodCodec({\n type: \"pipe\",\n in: def.out,\n out: def.in,\n transform: def.reverseTransform,\n reverseTransform: def.transform,\n });\n}\nexport const ZodPreprocess = /*@__PURE__*/ core.$constructor(\"ZodPreprocess\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodPreprocess.init(inst, def);\n});\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.readonlyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function readonly(innerType) {\n return new ZodReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n core.$ZodTemplateLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.templateLiteralProcessor(inst, ctx, json, params);\n});\nexport function templateLiteral(parts, params) {\n return new ZodTemplateLiteral({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n core.$ZodLazy.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.lazyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n return new ZodLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n core.$ZodPromise.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.promiseProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n return new ZodPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nexport const ZodFunction = /*@__PURE__*/ core.$constructor(\"ZodFunction\", (inst, def) => {\n core.$ZodFunction.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.functionProcessor(inst, ctx, json, params);\n});\nexport function _function(params) {\n return new ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n output: params?.output ?? unknown(),\n });\n}\nexport { _function as function };\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n core.$ZodCustom.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.customProcessor(inst, ctx, json, params);\n});\n// custom checks\nexport function check(fn) {\n const ch = new core.$ZodCheck({\n check: \"custom\",\n // ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nexport function custom(fn, _params) {\n return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn, params) {\n return core._superRefine(fn, params);\n}\n// Re-export describe and meta from core\nexport const describe = core.describe;\nexport const meta = core.meta;\nfunction _instanceof(cls, params = {}) {\n const inst = new ZodCustom({\n type: \"custom\",\n check: \"custom\",\n fn: (data) => data instanceof cls,\n abort: true,\n ...util.normalizeParams(params),\n });\n inst._zod.bag.Class = cls;\n // Override check to emit invalid_type instead of custom\n inst._zod.check = (payload) => {\n if (!(payload.value instanceof cls)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: cls.name,\n input: payload.value,\n inst,\n path: [...(inst._zod.def.path ?? [])],\n });\n }\n };\n return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n Codec: ZodCodec,\n Boolean: ZodBoolean,\n String: ZodString,\n}, ...args);\nexport function json(params) {\n const jsonSchema = lazy(() => {\n return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n });\n return jsonSchema;\n}\n// preprocess\nexport function preprocess(fn, schema) {\n return new ZodPreprocess({\n type: \"pipe\",\n in: transform(fn),\n out: schema,\n });\n}\n","import { z } from \"zod\";\n\nconst POLLUTION_KEYS = new Set([\"__proto__\", \"constructor\", \"prototype\"]);\n\nconst MAX_POLLUTION_SCAN_DEPTH = 128;\n\nexport function containsPollutionKey(val: unknown, depth = 0): boolean {\n if (depth > MAX_POLLUTION_SCAN_DEPTH) return true;\n if (Array.isArray(val)) {\n for (const item of val) {\n if (containsPollutionKey(item, depth + 1)) return true;\n }\n return false;\n }\n if (val && typeof val === \"object\") {\n const obj = val as Record<string, unknown>;\n for (const key of Object.keys(obj)) {\n if (POLLUTION_KEYS.has(key)) return true;\n if (containsPollutionKey(obj[key], depth + 1)) return true;\n }\n }\n return false;\n}\n\nexport const safeRecordKey = z.string().refine((k) => !POLLUTION_KEYS.has(k), {\n message: \"Object contains a key that may cause prototype pollution\",\n});\n\nexport const RGBColorSchema = z.object({\n r: z.number(),\n g: z.number(),\n b: z.number(),\n});\n\nexport const BlendModeSchema = z.enum([\n \"normal\",\n \"add\",\n \"multiply\",\n \"screen\",\n \"overlay\",\n \"darken\",\n \"lighten\",\n \"color-dodge\",\n \"color-burn\",\n \"hard-light\",\n \"soft-light\",\n \"difference\",\n \"exclusion\",\n]);\n\nexport const NodeKindSchema = z.enum([\n \"viviMesh\",\n \"group\",\n \"bone\",\n \"artPath\",\n]);\n\nexport const MeshDataSchema = z.object({\n vertices: z.array(z.number()),\n uvs: z.array(z.number()),\n indices: z.array(z.number()),\n divisionsX: z.number(),\n divisionsY: z.number(),\n});\n\nexport const AffineMatrixSchema = z.tuple([\n z.number(),\n z.number(),\n z.number(),\n z.number(),\n z.number(),\n z.number(),\n]);\n\nexport const InterpolationTypeSchema = z.enum([\n \"linear\",\n \"step\",\n \"bezier\",\n \"ellipse\",\n \"sns\",\n]);\n\nexport const BonePropertyTypeSchema = z.enum([\"angle\", \"scaleX\", \"scaleY\"]);\n\nexport const BoneBindingPropertyTypeSchema = z.enum([\n \"x\",\n \"y\",\n \"angle\",\n \"scaleX\",\n \"scaleY\",\n]);\n\nexport const IKControllerBindingPropertyTypeSchema = z.enum([\n \"targetX\",\n \"targetY\",\n \"poleTargetX\",\n \"poleTargetY\",\n \"influence\",\n]);\n\nexport const VisemeTypeSchema = z.enum([\n \"sil\",\n \"aa\",\n \"ih\",\n \"ou\",\n \"eh\",\n \"oh\",\n \"ff\",\n \"ss\",\n \"pp\",\n \"nn\",\n \"kk\",\n]);\n","import { z } from \"zod\";\nimport { BonePropertyTypeSchema, InterpolationTypeSchema } from \"./primitives\";\n\nexport const TimelineKeyframeSchema = z.object({\n frame: z.number(),\n value: z.number(),\n interpolation: InterpolationTypeSchema,\n cp1x: z.number().optional(),\n cp1y: z.number().optional(),\n cp2x: z.number().optional(),\n cp2y: z.number().optional(),\n ellipseRatio: z.number().optional(),\n ellipseDirection: z.enum([\"cw\", \"ccw\"]).optional(),\n snsOscillations: z.number().optional(),\n snsDamping: z.number().optional(),\n});\n\nexport const AnimationTrackSchema = z.object({\n parameterId: z.string(),\n keyframes: z.array(TimelineKeyframeSchema),\n});\n\nexport const BoneTrackSchema = z.object({\n boneId: z.string(),\n property: BonePropertyTypeSchema,\n keyframes: z.array(TimelineKeyframeSchema),\n});\n\nconst ImageSequenceEntrySchema = z.object({\n startFrame: z.number(),\n imageId: z.string(),\n});\n\nexport const ImageSequenceTrackSchema = z.object({\n targetMeshId: z.string(),\n entries: z.array(ImageSequenceEntrySchema),\n});\n\nexport const AudioTrackSchema = z.object({\n id: z.string(),\n name: z.string(),\n sourcePath: z.string(),\n startFrame: z.number(),\n sourceDurationSeconds: z.number().nullable(),\n gain: z.number(),\n muted: z.boolean(),\n});\n\nexport const LipSyncTrackSchema = z.object({\n id: z.string(),\n name: z.string(),\n sourceAudioTrackId: z.string(),\n analysisType: z.literal(\"rms\"),\n analysisFps: z.number(),\n samples: z.array(z.number()),\n targetParameterId: z.string().nullable(),\n sourcePathAtBake: z.string(),\n sourceDurationSecondsAtBake: z.number().nullable(),\n gain: z.number(),\n muted: z.boolean(),\n});\n\nexport const IKControllerTrackSchema = z.object({\n controllerId: z.string(),\n targetXKeyframes: z.array(TimelineKeyframeSchema),\n targetYKeyframes: z.array(TimelineKeyframeSchema),\n});\n\nexport const AnimationClipSchema = z.object({\n id: z.string(),\n name: z.string(),\n duration: z.number(),\n fps: z.number(),\n tracks: z.array(AnimationTrackSchema),\n boneTracks: z.array(BoneTrackSchema).optional(),\n imageSequenceTracks: z.array(ImageSequenceTrackSchema).optional(),\n audioTracks: z.array(AudioTrackSchema).optional(),\n lipSyncTracks: z.array(LipSyncTrackSchema).optional(),\n ikControllerTracks: z.array(IKControllerTrackSchema).optional(),\n});\n\nexport const SceneSchema = z.object({\n id: z.string(),\n name: z.string(),\n clips: z.array(AnimationClipSchema),\n});\n\nexport const SceneBlendSchema = z.object({\n id: z.string(),\n sourceSceneId: z.string(),\n targetSceneId: z.string(),\n mode: z.enum([\"crossfade\", \"additive\", \"override\"]),\n transitionFrames: z.number(),\n easing: InterpolationTypeSchema,\n});\n","import { z } from \"zod\";\n\nexport const ColliderShapeSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"rectangle\"),\n x: z.number(),\n y: z.number(),\n width: z.number(),\n height: z.number(),\n }),\n z.object({\n type: z.literal(\"circle\"),\n x: z.number(),\n y: z.number(),\n radius: z.number(),\n }),\n z.object({\n type: z.literal(\"mesh\"),\n meshId: z.string(),\n }),\n]);\n\nexport const ColliderDataSchema = z.object({\n id: z.string(),\n name: z.string(),\n shape: ColliderShapeSchema,\n tag: z.string().optional(),\n enabled: z.boolean(),\n});\n","import { z } from \"zod\";\nimport type { LayerImportMetadata, LayerNode } from \"../types\";\nimport { BlendModeSchema, MeshDataSchema, RGBColorSchema } from \"./primitives\";\n\nconst LayerSemanticRoleSchema = z.enum([\n \"head\",\n \"face\",\n \"eyeLeft\",\n \"eyeRight\",\n \"eyebrowLeft\",\n \"eyebrowRight\",\n \"mouth\",\n \"nose\",\n \"hair\",\n \"hairFront\",\n \"hairBack\",\n \"hairSide\",\n \"body\",\n \"armLeft\",\n \"armRight\",\n \"handLeft\",\n \"handRight\",\n \"legLeft\",\n \"legRight\",\n \"tail\",\n \"ear\",\n \"accessory\",\n \"unknown\",\n]);\n\nconst LayerSemanticRoleSourceSchema = z.enum([\"seeThroughImport\", \"manual\", \"assistant\"]);\n\nconst LayerRiggingHintSchema = z.enum([\"rigid\", \"localBones\", \"skinned\", \"physics\"]);\n\nconst ProviderProposalAuditSchema = z.object({\n providerId: z.string(),\n capabilityId: z.string(),\n proposalId: z.string(),\n confidence: z.number().optional(),\n convertedAt: z.string().optional(),\n});\n\nconst LayerDepthStatsSchema = z.object({\n min: z.number(),\n max: z.number(),\n mean: z.number(),\n});\n\nconst FourNumberTupleSchema = z.tuple([\n z.number().int(),\n z.number().int(),\n z.number().int(),\n z.number().int(),\n]) as unknown as z.ZodType<[number, number, number, number]>;\n\nconst TrimmedBoundsTupleSchema = z.tuple([\n z.number().int(),\n z.number().int(),\n z.number().int().positive(),\n z.number().int().positive(),\n]) as unknown as z.ZodType<[number, number, number, number]>;\n\nconst TwoNumberTupleSchema = z.tuple([\n z.number().int(),\n z.number().int(),\n]) as unknown as z.ZodType<[number, number]>;\n\nconst SeeThroughImportMetadataSchema = z.object({\n label: z.string(),\n order: z.number().int(),\n psdLeafToken: z.string().optional(),\n confidence: z.number(),\n leftRightSplit: z.enum([\"left\", \"right\", \"center\", \"unknown\"]),\n frontBackSplit: z.enum([\"front\", \"back\", \"middle\", \"unknown\"]),\n bbox: FourNumberTupleSchema,\n depthStats: LayerDepthStatsSchema,\n});\n\nconst ManualPngImportMetadataSchema = z.object({\n sourceFileName: z.string(),\n sourcePath: z.string().optional(),\n originalWidth: z.number().int().positive(),\n originalHeight: z.number().int().positive(),\n trimmedBounds: TrimmedBoundsTupleSchema,\n finalOrigin: TwoNumberTupleSchema,\n placementMode: z.enum([\"preserveImageOffset\", \"centerOnCanvas\"]),\n trimTransparentBoundsApplied: z.boolean().optional(),\n autoGenerateMeshApplied: z.boolean(),\n});\n\nconst SeeThroughLayerImportMetadataSchema = z.object({\n source: z.literal(\"seeThrough\"),\n seeThrough: SeeThroughImportMetadataSchema,\n});\n\nconst ManualPngLayerImportMetadataSchema = z.object({\n source: z.literal(\"manualPng\"),\n manualPng: ManualPngImportMetadataSchema,\n});\n\nconst ManualSplitBoundsSchema = z.object({\n x: z.number(),\n y: z.number(),\n width: z.number(),\n height: z.number(),\n});\n\nconst ManualSplitOutputMetadataSchema = z.union([\n z.object({\n kind: z.literal(\"maskExtractedLayer\"),\n ownership: z.literal(\"userAccepted\"),\n origin: z.literal(\"manualMask\"),\n manualSplitLayerId: z.string(),\n manualSplitSourceLayerId: z.string(),\n manualSplitSourceFingerprint: z.string(),\n manualSplitMaskId: z.string(),\n maskCoverage: z.number(),\n edgeFeatherPx: z.number(),\n customLabel: z.string().optional(),\n convertedFromProviderProposal: z.never().optional(),\n }),\n z.object({\n kind: z.literal(\"maskExtractedLayer\"),\n ownership: z.literal(\"userAccepted\"),\n origin: z.literal(\"providerProposal\"),\n manualSplitLayerId: z.string(),\n manualSplitSourceLayerId: z.string(),\n manualSplitSourceFingerprint: z.string(),\n manualSplitMaskId: z.string(),\n maskCoverage: z.number(),\n edgeFeatherPx: z.number(),\n customLabel: z.string().optional(),\n convertedFromProviderProposal: ProviderProposalAuditSchema.extend({\n convertedAt: z.string(),\n }),\n }),\n z.object({\n kind: z.literal(\"generatedUnderpaintLayer\"),\n ownership: z.literal(\"userAccepted\"),\n origin: z.literal(\"localUnderpaint\"),\n manualSplitLayerId: z.string(),\n manualSplitSourceLayerId: z.string(),\n manualSplitSourceFingerprint: z.string(),\n underpaintBufferId: z.string(),\n bounds: ManualSplitBoundsSchema,\n sourceMaskId: z.string().optional(),\n occludedByMaskId: z.string().optional(),\n acceptedAt: z.string(),\n providerAudit: z.never().optional(),\n }),\n z.object({\n kind: z.literal(\"generatedUnderpaintLayer\"),\n ownership: z.literal(\"userAccepted\"),\n origin: z.literal(\"providerUnderpaint\"),\n manualSplitLayerId: z.string(),\n manualSplitSourceLayerId: z.string(),\n manualSplitSourceFingerprint: z.string(),\n underpaintBufferId: z.string(),\n bounds: ManualSplitBoundsSchema,\n sourceMaskId: z.string().optional(),\n occludedByMaskId: z.string().optional(),\n acceptedAt: z.string(),\n providerAudit: ProviderProposalAuditSchema,\n }),\n]);\n\nconst LegacySeeThroughImportMetadataSchema = SeeThroughImportMetadataSchema.transform(\n (seeThrough) => ({\n source: \"seeThrough\" as const,\n seeThrough,\n }),\n);\n\nconst LayerImportMetadataSchema: z.ZodType<LayerImportMetadata> = z.union([\n SeeThroughLayerImportMetadataSchema,\n ManualPngLayerImportMetadataSchema,\n LegacySeeThroughImportMetadataSchema,\n]);\n\nconst nodeBaseShape = {\n id: z.string(),\n name: z.string(),\n visible: z.boolean(),\n opacity: z.number(),\n x: z.number(),\n y: z.number(),\n width: z.number(),\n height: z.number(),\n blendMode: BlendModeSchema,\n expanded: z.boolean(),\n clipMaskIds: z.array(z.string()).optional(),\n drawOrder: z.number().optional(),\n multiplyColor: RGBColorSchema.optional(),\n screenColor: RGBColorSchema.optional(),\n semanticRole: LayerSemanticRoleSchema.optional(),\n semanticRoleSource: LayerSemanticRoleSourceSchema.optional(),\n riggingHint: LayerRiggingHintSchema.optional(),\n manualSplitOutputMetadata: ManualSplitOutputMetadataSchema.optional(),\n importMetadata: LayerImportMetadataSchema.optional(),\n managedTag: z.string().optional(),\n managedSignature: z.string().optional(),\n managedSourceFingerprint: z.string().optional(),\n manualSplitSourceLayerId: z.string().optional(),\n manualSplitSourceFingerprint: z.string().optional(),\n manualSplitLayerId: z.string().optional(),\n};\n\nexport const BoneDataSchema = z.object({\n angle: z.number(),\n length: z.number(),\n scaleX: z.number(),\n scaleY: z.number(),\n});\n\nconst ArtPathControlPointSchema = z.object({\n x: z.number(),\n y: z.number(),\n handleInX: z.number(),\n handleInY: z.number(),\n handleOutX: z.number(),\n handleOutY: z.number(),\n width: z.number(),\n opacity: z.number(),\n});\n\nconst ArtPathStyleSchema = z.object({\n color: z.number(),\n baseWidth: z.number(),\n lineCap: z.enum([\"butt\", \"round\", \"square\"]),\n lineJoin: z.enum([\"miter\", \"round\", \"bevel\"]),\n});\n\nexport const LayerNodeSchema: z.ZodType<LayerNode> = z.lazy(() =>\n z.discriminatedUnion(\"kind\", [\n z.object({\n ...nodeBaseShape,\n children: z.array(LayerNodeSchema),\n kind: z.literal(\"viviMesh\"),\n mesh: MeshDataSchema,\n culling: z.boolean().optional(),\n }),\n z.object({\n ...nodeBaseShape,\n children: z.array(LayerNodeSchema),\n kind: z.literal(\"group\"),\n }),\n z.object({\n ...nodeBaseShape,\n children: z.array(LayerNodeSchema),\n kind: z.literal(\"bone\"),\n bone: BoneDataSchema,\n parentBoneId: z.string().optional(),\n }),\n z.object({\n ...nodeBaseShape,\n children: z.array(LayerNodeSchema),\n kind: z.literal(\"artPath\"),\n controlPoints: z.array(ArtPathControlPointSchema),\n closed: z.boolean(),\n style: ArtPathStyleSchema,\n }),\n ]),\n);\n","import { z } from \"zod\";\nimport {\n AffineMatrixSchema,\n BoneBindingPropertyTypeSchema,\n IKControllerBindingPropertyTypeSchema,\n safeRecordKey,\n} from \"./primitives\";\n\nexport const ParameterDefinitionSchema = z.object({\n id: z.string(),\n name: z.string(),\n minValue: z.number(),\n maxValue: z.number(),\n defaultValue: z.number(),\n managedTag: z.string().optional(),\n managedSignature: z.string().optional(),\n managedSourceFingerprint: z.string().optional(),\n pairedParameterId: z.string().optional(),\n group: z.string().optional(),\n});\n\nconst ParameterBindingPointSchema = z.object({\n paramValue: z.number(),\n targetValue: z.number(),\n});\n\n/** BindingTarget: public controller-only discriminated union. */\nexport const BindingTargetSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"bone\"),\n boneId: z.string(),\n property: BoneBindingPropertyTypeSchema,\n }),\n z.object({\n type: z.literal(\"ikController\"),\n controllerId: z.string(),\n property: IKControllerBindingPropertyTypeSchema,\n }),\n]);\n\nexport const ParameterBindingSchema = z.object({\n id: z.string(),\n parameterId: z.string(),\n target: BindingTargetSchema,\n managedTag: z.string().optional(),\n managedSignature: z.string().optional(),\n managedSourceFingerprint: z.string().optional(),\n bindingPoints: z.array(ParameterBindingPointSchema),\n});\n\nconst SkinWeightSchema = z.object({\n boneId: z.string(),\n weight: z.number(),\n});\n\nexport const SkinDataSchema = z.object({\n managedTag: z.string().optional(),\n managedSignature: z.string().optional(),\n managedSourceFingerprint: z.string().optional(),\n manualSplitSourceLayerId: z.string().optional(),\n manualSplitSourceFingerprint: z.string().optional(),\n manualSplitLayerId: z.string().optional(),\n weights: z.array(z.array(SkinWeightSchema)),\n bindPoseInverse: z.record(safeRecordKey, AffineMatrixSchema),\n});\n\nexport const ExpressionPresetSchema = z.object({\n id: z.string(),\n name: z.string(),\n values: z.record(safeRecordKey, z.number()),\n color: z.string().optional(),\n hotkey: z.number().optional(),\n});\n","import { z } from \"zod\";\nimport { VisemeTypeSchema } from \"./primitives\";\n\nconst PendulumConfigSchema = z.object({\n length: z.number(),\n mass: z.number(),\n damping: z.number(),\n});\n\nconst PhysicsInputSchema = z.object({\n parameterId: z.string(),\n weight: z.number(),\n type: z.enum([\"x\", \"y\", \"angle\"]),\n});\n\nconst PhysicsOutputSchema = z.object({\n parameterId: z.string().optional(),\n boneId: z.string().optional(),\n pendulumIndex: z.number(),\n weight: z.number(),\n type: z.enum([\"angle\", \"boneAngle\"]),\n});\n\nexport const PhysicsGroupSchema = z.object({\n id: z.string(),\n name: z.string(),\n enabled: z.boolean(),\n managedTag: z.string().optional(),\n managedSignature: z.string().optional(),\n managedSourceFingerprint: z.string().optional(),\n manualSplitSourceLayerId: z.string().optional(),\n manualSplitSourceFingerprint: z.string().optional(),\n manualSplitLayerId: z.string().optional(),\n pendulums: z.array(PendulumConfigSchema),\n inputs: z.array(PhysicsInputSchema),\n outputs: z.array(PhysicsOutputSchema),\n gravityDirection: z.number(),\n gravityStrength: z.number(),\n wind: z.number(),\n});\n\nconst VisemeMappingSchema = z.object({\n viseme: VisemeTypeSchema,\n target: z.object({\n type: z.literal(\"parameter\"),\n parameterId: z.string(),\n value: z.number(),\n }),\n});\n\nexport const LipSyncConfigSchema = z.object({\n enabled: z.boolean(),\n mode: z.enum([\"rms\", \"viseme\"]).optional(),\n targetParameterId: z.string().nullable(),\n source: z.enum([\"microphone\", \"file\"]),\n threshold: z.number(),\n smoothing: z.number(),\n gain: z.number(),\n visemeMappings: z.array(VisemeMappingSchema).optional(),\n visemeSmoothing: z.number().optional(),\n});\n","import { z } from \"zod\";\n\nconst TransitionConditionSchema = z.object({\n parameterId: z.string(),\n operator: z.enum([\">\", \"<\", \">=\", \"<=\", \"==\", \"!=\"]),\n threshold: z.number(),\n});\n\nconst BlendTreeEntrySchema = z.object({\n threshold: z.number(),\n clipId: z.string(),\n});\n\nconst BlendTree1DSchema = z.object({\n parameterId: z.string(),\n entries: z.array(BlendTreeEntrySchema),\n});\n\nconst AnimationStateSchema = z.object({\n id: z.string(),\n name: z.string(),\n clipId: z.string().optional(),\n blendTree: BlendTree1DSchema.optional(),\n loop: z.boolean(),\n});\n\nconst StateTransitionSchema = z.object({\n id: z.string(),\n fromStateId: z.string(),\n toStateId: z.string(),\n conditions: z.array(TransitionConditionSchema),\n transitionDuration: z.number(),\n priority: z.number(),\n});\n\nexport const AnimationStateMachineSchema = z.object({\n id: z.string(),\n name: z.string(),\n states: z.array(AnimationStateSchema),\n transitions: z.array(StateTransitionSchema),\n initialStateId: z.string(),\n enabled: z.boolean(),\n blendMode: z.enum([\"override\", \"additive\"]).optional(),\n weight: z.number().optional(),\n});\n\nconst IKBoneConstraintSchema = z.object({\n boneId: z.string(),\n minAngle: z.number(),\n maxAngle: z.number(),\n});\n\nconst IKParameterMappingSchema = z.object({\n boneId: z.string(),\n parameterId: z.string(),\n angleMin: z.number(),\n angleMax: z.number(),\n paramMin: z.number(),\n paramMax: z.number(),\n});\n\nexport const IKControllerSchema = z.object({\n id: z.string(),\n name: z.string(),\n managedTag: z.string().optional(),\n managedSignature: z.string().optional(),\n managedSourceFingerprint: z.string().optional(),\n manualSplitSourceLayerId: z.string().optional(),\n manualSplitSourceFingerprint: z.string().optional(),\n manualSplitLayerId: z.string().optional(),\n solverType: z.enum([\"twoBone\", \"ccd\"]),\n boneChain: z.array(IKBoneConstraintSchema),\n targetX: z.number(),\n targetY: z.number(),\n influence: z.number(),\n poleTargetX: z.number().optional(),\n poleTargetY: z.number().optional(),\n maxIterations: z.number().optional(),\n parameterMappings: z.array(IKParameterMappingSchema),\n});\n\nexport const OffscreenTargetSchema = z.object({\n id: z.string(),\n width: z.number(),\n height: z.number(),\n sourceLayerIds: z.array(z.string()),\n});\n","// ProjectData / AtlasData / ViviFileData schema\n\nimport { z } from \"zod\";\nimport { AnimationClipSchema, SceneBlendSchema, SceneSchema } from \"./animation\";\nimport { ColliderDataSchema } from \"./collider\";\nimport { LayerNodeSchema } from \"./layer\";\nimport {\n ExpressionPresetSchema,\n ParameterBindingSchema,\n ParameterDefinitionSchema,\n SkinDataSchema,\n} from \"./parameter\";\nimport { LipSyncConfigSchema, PhysicsGroupSchema } from \"./physics\";\nimport { containsPollutionKey, safeRecordKey } from \"./primitives\";\nimport {\n AnimationStateMachineSchema,\n IKControllerSchema,\n OffscreenTargetSchema,\n} from \"./statemachine\";\n\nexport const ProjectDataSchema = z\n .object({\n name: z.string().optional(),\n width: z.number().optional(),\n height: z.number().optional(),\n sourceKind: z.enum([\"psd\", \"seeThrough\", \"manualPng\", \"vivi\", \"vivid\"]).optional(),\n layers: z.array(LayerNodeSchema),\n parameters: z.array(ParameterDefinitionSchema),\n clips: z.array(AnimationClipSchema).optional(),\n scenes: z.array(SceneSchema).optional(),\n physicsGroups: z.array(PhysicsGroupSchema).optional(),\n lipsyncConfig: LipSyncConfigSchema.optional(),\n skins: z.record(safeRecordKey, SkinDataSchema).optional(),\n parameterBindings: z.array(ParameterBindingSchema).optional(),\n sceneBlends: z.array(SceneBlendSchema).optional(),\n ikControllers: z.array(IKControllerSchema).optional(),\n offscreenTargets: z.array(OffscreenTargetSchema).optional(),\n expressionPresets: z.array(ExpressionPresetSchema).optional(),\n colliders: z.array(ColliderDataSchema).optional(),\n stateMachines: z.array(AnimationStateMachineSchema).optional(),\n })\n .superRefine((val, ctx) => {\n if (containsPollutionKey(val)) {\n ctx.addIssue({\n code: \"custom\",\n message: \"Object contains a key that may cause prototype pollution\",\n });\n }\n });\n\nconst AtlasEntrySchema = z.object({\n layerId: z.string(),\n x: z.number(),\n y: z.number(),\n width: z.number(),\n height: z.number(),\n});\n\nexport const AtlasDataSchema = z.object({\n image: z.string(),\n width: z.number(),\n height: z.number(),\n entries: z.array(AtlasEntrySchema),\n});\n\nexport const ViviFileDataSchema = z.object({\n version: z.union([\n z.literal(1),\n z.literal(2),\n z.literal(3),\n z.literal(4),\n z.literal(5),\n z.literal(6),\n z.literal(7),\n z.literal(8),\n z.literal(9),\n z.literal(10),\n ]),\n profile: z.literal(\"publicProfileV1\").optional(),\n project: ProjectDataSchema,\n atlases: z.array(AtlasDataSchema),\n});\n","// This file is generated by scripts/generate-local-motion-marker-catalogs.mjs.\n// Do not edit it directly. Update scripts/internal-contracts/local-motion-forbidden-markers.contract.json instead.\n\nconst privatePreviewMarker = (...parts: string[]) => parts.join(\"\");\n\nexport const MODEL_FORBIDDEN_RAW_KEYS = Object.freeze([\n privatePreviewMarker(\"Branded\", \"Local\", \"Preview\", \"Frame\"),\n privatePreviewMarker(\"Editor\", \"Only\", \"Preview\"),\n privatePreviewMarker(\"Local\", \"Motion\", \"Apply\", \"Plan\"),\n privatePreviewMarker(\"Local\", \"Motion\", \"Draft\"),\n privatePreviewMarker(\"Local\", \"Motion\", \"Handle\"),\n privatePreviewMarker(\"Local\", \"Motion\", \"Region\"),\n privatePreviewMarker(\"Local\", \"Preview\", \"Frame\"),\n privatePreviewMarker(\"Local\", \"Preview\", \"Solver\"),\n privatePreviewMarker(\"affine\", \"Region\", \"Fit\"),\n privatePreviewMarker(\"as\", \"Rigid\", \"As\", \"Possible\"),\n privatePreviewMarker(\"b\", \"b\", \"w\"),\n privatePreviewMarker(\"deformed\", \"Vertices\"),\n privatePreviewMarker(\"editor\", \"Preview\", \"Frame\"),\n privatePreviewMarker(\"guided\", \"Preview\", \"Fit\"),\n privatePreviewMarker(\"local\", \"Bone\"),\n privatePreviewMarker(\"local\", \"Motion\", \"Constraint\"),\n privatePreviewMarker(\"local\", \"Motion\", \"Draft\"),\n privatePreviewMarker(\"local\", \"Preview\", \"Solver\"),\n privatePreviewMarker(\"motion\", \"Handle\", \"Draft\"),\n privatePreviewMarker(\"motion\", \"Region\", \"Weights\"),\n privatePreviewMarker(\"motion\", \"Stress\", \"Preview\"),\n privatePreviewMarker(\"moving\", \"Least\", \"Squares\"),\n privatePreviewMarker(\"preview\", \"Deformed\", \"Vertices\"),\n privatePreviewMarker(\"preview\", \"Only\"),\n privatePreviewMarker(\"preview\", \"Solver\"),\n privatePreviewMarker(\"solver\"),\n]) as readonly string[];\n\nexport const MODEL_FORBIDDEN_KIND_OR_TYPE = Object.freeze([\n privatePreviewMarker(\"Local\", \"Motion\", \"Apply\", \"Plan\"),\n privatePreviewMarker(\"Local\", \"Motion\", \"Draft\"),\n privatePreviewMarker(\"Local\", \"Motion\", \"Handle\"),\n privatePreviewMarker(\"Local\", \"Motion\", \"Region\"),\n privatePreviewMarker(\"Local\", \"Preview\", \"Frame\"),\n privatePreviewMarker(\"Local\", \"Preview\", \"Solver\"),\n privatePreviewMarker(\"a\", \"r\", \"a\", \"p\"),\n privatePreviewMarker(\"a\", \"r\", \"a\", \"p\", \"Local\"),\n privatePreviewMarker(\"as\", \"Rigid\", \"As\", \"Possible\"),\n privatePreviewMarker(\"b\", \"b\", \"w\"),\n privatePreviewMarker(\"constrained\", \"Affine\"),\n privatePreviewMarker(\"editor\", \"Preview\", \"Frame\"),\n privatePreviewMarker(\"guided\", \"Preview\", \"Fit\"),\n privatePreviewMarker(\"m\", \"l\", \"s\"),\n privatePreviewMarker(\"m\", \"l\", \"s\", \"Rigid\"),\n privatePreviewMarker(\"m\", \"l\", \"s\", \"Similarity\"),\n privatePreviewMarker(\"motion\", \"Stress\", \"Preview\"),\n privatePreviewMarker(\"moving\", \"Least\", \"Squares\"),\n]) as readonly string[];\n\nexport const MODEL_HIGH_SIGNAL_STRING_MARKERS = Object.freeze([\n privatePreviewMarker(\"Local\", \"Motion\", \"Draft\"),\n privatePreviewMarker(\"Local\", \"Preview\", \"Solver\"),\n privatePreviewMarker(\"as\", \"Rigid\", \"As\", \"Possible\"),\n privatePreviewMarker(\"editor\", \"Preview\"),\n privatePreviewMarker(\"guided\", \"Preview\", \"Fit\"),\n privatePreviewMarker(\"local\", \"Motion\", \"Draft\"),\n privatePreviewMarker(\"local\", \"Preview\", \"Solver\"),\n privatePreviewMarker(\"motion\", \"Handle\", \"Draft\"),\n privatePreviewMarker(\"motion\", \"Stress\", \"Preview\"),\n privatePreviewMarker(\"moving\", \"Least\", \"Squares\"),\n privatePreviewMarker(\"preview\", \"Deformed\", \"Vertices\"),\n privatePreviewMarker(\"preview\", \"Only\"),\n]) as readonly string[];\n","import {\n MODEL_FORBIDDEN_KIND_OR_TYPE,\n MODEL_FORBIDDEN_RAW_KEYS,\n MODEL_HIGH_SIGNAL_STRING_MARKERS,\n} from \"./generated/private-local-motion-markers\";\n\nexport type LocalMotionPreviewGuardContext =\n | \"projectSave\"\n | \"publicProfile\"\n | \"runtimePayload\"\n | \"providerArtifact\"\n | \"exportPayload\"\n | \"fixture\"\n | \"undoSnapshot\"\n | \"workflowArtifact\";\n\nexport interface LocalMotionPreviewGuardIssue {\n code: \"forbiddenLocalMotionPreviewField\";\n context: LocalMotionPreviewGuardContext;\n path: string;\n marker: string;\n message: string;\n}\n\nexport class LocalMotionPreviewGuardError extends Error {\n readonly issues: LocalMotionPreviewGuardIssue[];\n\n constructor(issues: LocalMotionPreviewGuardIssue[]) {\n super(formatLocalMotionPreviewGuardIssues(issues));\n this.name = \"LocalMotionPreviewGuardError\";\n this.issues = issues;\n }\n}\n\nconst FORBIDDEN_RAW_KEYS = new Set<string>(MODEL_FORBIDDEN_RAW_KEYS);\n\nconst FORBIDDEN_KIND_OR_TYPE = new Set<string>(MODEL_FORBIDDEN_KIND_OR_TYPE);\n\nconst NORMALIZED_HIGH_SIGNAL_STRING_MARKERS = MODEL_HIGH_SIGNAL_STRING_MARKERS.map(\n (marker) => [marker, normalizeMarkerText(marker)] as const,\n);\n\nexport function formatLocalMotionPreviewGuardIssues(\n issues: readonly LocalMotionPreviewGuardIssue[],\n): string {\n if (issues.length === 0) return \"local motion preview guard failed\";\n const first = issues[0]!;\n return `local motion preview guard failed: ${first.path}: ${first.message}`;\n}\n\nexport function assertNoLocalMotionPreviewFields(\n value: unknown,\n context: LocalMotionPreviewGuardContext,\n): void {\n const issues = validateNoLocalMotionPreviewFields(value, context);\n if (issues.length > 0) throw new LocalMotionPreviewGuardError(issues);\n}\n\nexport function validateNoLocalMotionPreviewFields(\n value: unknown,\n context: LocalMotionPreviewGuardContext,\n): LocalMotionPreviewGuardIssue[] {\n const issues: LocalMotionPreviewGuardIssue[] = [];\n scanNoLocalMotionPreviewFields(value, context, \"<root>\", issues, new WeakSet());\n return dedupeIssues(issues);\n}\n\nfunction scanNoLocalMotionPreviewFields(\n value: unknown,\n context: LocalMotionPreviewGuardContext,\n path: string,\n issues: LocalMotionPreviewGuardIssue[],\n seen: WeakSet<object>,\n): void {\n if (typeof value === \"string\") {\n pushStringMarkerIssues(value, context, path, issues);\n return;\n }\n if (value instanceof Map) {\n if (seen.has(value)) return;\n seen.add(value);\n let index = 0;\n for (const [entryKey, entryValue] of value.entries()) {\n scanNoLocalMotionPreviewFields(entryKey, context, `${path}<key:${index}>`, issues, seen);\n scanNoLocalMotionPreviewFields(entryValue, context, `${path}<value:${index}>`, issues, seen);\n index += 1;\n }\n return;\n }\n if (value instanceof Set) {\n if (seen.has(value)) return;\n seen.add(value);\n let index = 0;\n for (const entry of value.values()) {\n scanNoLocalMotionPreviewFields(entry, context, `${path}<entry:${index}>`, issues, seen);\n index += 1;\n }\n return;\n }\n if (Array.isArray(value)) {\n if (seen.has(value)) return;\n seen.add(value);\n value.forEach((item, index) => {\n scanNoLocalMotionPreviewFields(item, context, `${path}[${index}]`, issues, seen);\n });\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key === \"string\" && isArrayIndexKey(key, value.length)) continue;\n scanProperty(value, key, context, path, issues, seen);\n }\n return;\n }\n if (!isRecord(value)) return;\n if (seen.has(value)) return;\n seen.add(value);\n\n for (const key of Reflect.ownKeys(value)) {\n scanProperty(value, key, context, path, issues, seen);\n }\n}\n\nfunction scanProperty(\n value: object,\n key: string | symbol,\n context: LocalMotionPreviewGuardContext,\n path: string,\n issues: LocalMotionPreviewGuardIssue[],\n seen: WeakSet<object>,\n): void {\n const keyText = typeof key === \"symbol\" ? key.toString() : key;\n const childPath = `${path}.${keyText}`;\n\n pushStringMarkerIssues(keyText, context, childPath, issues);\n\n if (typeof key === \"string\" && FORBIDDEN_RAW_KEYS.has(key)) {\n pushIssue(issues, context, childPath, key);\n return;\n }\n\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined) return;\n if (!(\"value\" in descriptor)) {\n if (key === \"kind\" || key === \"type\") {\n pushIssue(issues, context, childPath, keyText);\n }\n return;\n }\n\n const child = descriptor.value;\n if (\n (key === \"kind\" || key === \"type\") &&\n typeof child === \"string\" &&\n FORBIDDEN_KIND_OR_TYPE.has(child)\n ) {\n pushIssue(issues, context, childPath, child);\n return;\n }\n\n scanNoLocalMotionPreviewFields(child, context, childPath, issues, seen);\n}\n\nfunction pushStringMarkerIssues(\n value: string,\n context: LocalMotionPreviewGuardContext,\n path: string,\n issues: LocalMotionPreviewGuardIssue[],\n): void {\n const normalized = normalizeMarkerText(value);\n for (const [marker, normalizedMarker] of NORMALIZED_HIGH_SIGNAL_STRING_MARKERS) {\n if (normalized.includes(normalizedMarker)) {\n pushIssue(issues, context, path, marker);\n }\n }\n}\n\nfunction pushIssue(\n issues: LocalMotionPreviewGuardIssue[],\n context: LocalMotionPreviewGuardContext,\n path: string,\n marker: string,\n): void {\n issues.push({\n code: \"forbiddenLocalMotionPreviewField\",\n context,\n path,\n marker,\n message: `${context} cannot contain editor-only local motion preview marker ${marker}`,\n });\n}\n\nfunction dedupeIssues(\n issues: LocalMotionPreviewGuardIssue[],\n): LocalMotionPreviewGuardIssue[] {\n const seen = new Set<string>();\n const result: LocalMotionPreviewGuardIssue[] = [];\n for (const issue of issues) {\n const key = `${issue.context}\\0${issue.path}\\0${issue.marker}`;\n if (seen.has(key)) continue;\n seen.add(key);\n result.push(issue);\n }\n return result;\n}\n\nfunction normalizeMarkerText(value: string): string {\n return value.toLowerCase().replace(/[-_.:/\\s]+/g, \"\");\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isArrayIndexKey(key: string, length: number): boolean {\n const index = Number(key);\n return Number.isInteger(index) && index >= 0 && index < length && String(index) === key;\n}\n","export const VIVI_RUNTIME_SPEC_V1_VERSION = Object.freeze({\n major: 1,\n minor: 0,\n patch: 0,\n});\n\nexport const VIVI_RUNTIME_SPEC_VERSION = Object.freeze({\n major: 1,\n minor: 0,\n patch: 0,\n});\n\nexport const VIVI_RUNTIME_ABI_VERSION = (0 << 16) | 1;\n\nexport const VIVI_RUNTIME_PROJECT_FILE_VERSION = 10;\n\nexport const VIVI_RUNTIME_LIMITS = Object.freeze({\n maxPayloadBytes: 64 * 1024 * 1024,\n maxTextureBytes: 256 * 1024 * 1024,\n maxTextures: 32,\n maxLayers: 4096,\n maxMeshes: 1024,\n maxVerticesPerMesh: 65536,\n maxIndicesPerMesh: 196608,\n maxBones: 1024,\n maxIkControllers: 256,\n maxPhysicsGroups: 256,\n maxPendulumsPerPhysicsGroup: 64,\n maxParameters: 2048,\n maxBindingPoints: 8192,\n maxColliders: 1024,\n maxAnimationClips: 512,\n maxStateMachines: 128,\n maxStatesPerStateMachine: 256,\n maxTransitionsPerStateMachine: 512,\n});\n\nexport const VIVI_RUNTIME_TIMING = Object.freeze({\n maxDeltaSeconds: 0.25,\n physicsTimestepSeconds: 1 / 120,\n maxPhysicsSubsteps: 4,\n});\n\nexport const VIVI_RUNTIME_TOLERANCES = Object.freeze({\n vertexPosition: 1e-4,\n boneAngle: 1e-5,\n physicsState: 1e-5,\n opacityOrColorChannel: 1e-5,\n});\n\nexport const VIVI_BLEND_MODE = Object.freeze({\n normal: 0,\n multiply: 1,\n screen: 2,\n add: 3,\n});\n\nexport type ViviRuntimeBlendMode = (typeof VIVI_BLEND_MODE)[keyof typeof VIVI_BLEND_MODE];\n\nexport type ViviRuntimeErrorCode =\n | \"VIVI_ERR_INVALID_ARGUMENT\"\n | \"VIVI_ERR_UNSUPPORTED_OPERATION\"\n | \"VIVI_ERR_PARSE\"\n | \"VIVI_ERR_UNSUPPORTED_SPEC_VERSION\"\n | \"VIVI_ERR_PRIVATE_PROFILE\"\n | \"VIVI_ERR_LIMIT_EXCEEDED\"\n | \"VIVI_ERR_VALIDATION\"\n | \"VIVI_ERR_TEXTURE\"\n | \"VIVI_ERR_EVALUATION\"\n | \"VIVI_ERR_INTERNAL\";\n\nexport const VIVI_RUNTIME_ERROR_CODES = Object.freeze({\n ok: \"VIVI_OK\",\n invalidArgument: \"VIVI_ERR_INVALID_ARGUMENT\",\n unsupportedOperation: \"VIVI_ERR_UNSUPPORTED_OPERATION\",\n parse: \"VIVI_ERR_PARSE\",\n unsupportedSpecVersion: \"VIVI_ERR_UNSUPPORTED_SPEC_VERSION\",\n privateProfile: \"VIVI_ERR_PRIVATE_PROFILE\",\n limitExceeded: \"VIVI_ERR_LIMIT_EXCEEDED\",\n validation: \"VIVI_ERR_VALIDATION\",\n texture: \"VIVI_ERR_TEXTURE\",\n evaluation: \"VIVI_ERR_EVALUATION\",\n internal: \"VIVI_ERR_INTERNAL\",\n} as const);\n\nexport const VIVI_RUNTIME_IGNORED_METADATA_KEYS = Object.freeze([\n \"managedTag\",\n \"managedSignature\",\n \"managedSourceFingerprint\",\n]);\n\nconst runtimeForbiddenMarker = (...parts: string[]) => parts.join(\"\");\n\nexport const VIVI_RUNTIME_FORBIDDEN_RAW_KEYS = Object.freeze([\n \"blendShapes\",\n \"correctiveDeformations\",\n \"meshLinks\",\n \"blendShapeWeights\",\n \"blendShapeTracks\",\n \"meshPoseTracks\",\n \"targetBlendShapeId\",\n \"solver\",\n runtimeForbiddenMarker(\"Local\", \"Motion\", \"Draft\"),\n runtimeForbiddenMarker(\"local\", \"Motion\", \"Draft\"),\n runtimeForbiddenMarker(\"motion\", \"Handle\", \"Draft\"),\n runtimeForbiddenMarker(\"Local\", \"Preview\", \"Solver\"),\n runtimeForbiddenMarker(\"local\", \"Preview\", \"Solver\"),\n runtimeForbiddenMarker(\"preview\", \"Solver\"),\n runtimeForbiddenMarker(\"preview\", \"Only\"),\n runtimeForbiddenMarker(\"Local\", \"Motion\", \"Region\"),\n runtimeForbiddenMarker(\"Local\", \"Motion\", \"Handle\"),\n runtimeForbiddenMarker(\"Local\", \"Motion\", \"Apply\", \"Plan\"),\n runtimeForbiddenMarker(\"Local\", \"Preview\", \"Frame\"),\n runtimeForbiddenMarker(\"Branded\", \"Local\", \"Preview\", \"Frame\"),\n runtimeForbiddenMarker(\"Editor\", \"Only\", \"Preview\"),\n runtimeForbiddenMarker(\"editor\", \"Preview\", \"Frame\"),\n runtimeForbiddenMarker(\"local\", \"Bone\"),\n runtimeForbiddenMarker(\"local\", \"Motion\", \"Constraint\"),\n runtimeForbiddenMarker(\"motion\", \"Region\", \"Weights\"),\n runtimeForbiddenMarker(\"affine\", \"Region\", \"Fit\"),\n runtimeForbiddenMarker(\"preview\", \"Deformed\", \"Vertices\"),\n runtimeForbiddenMarker(\"deformed\", \"Vertices\"),\n runtimeForbiddenMarker(\"guided\", \"Preview\", \"Fit\"),\n runtimeForbiddenMarker(\"motion\", \"Stress\", \"Preview\"),\n runtimeForbiddenMarker(\"moving\", \"Least\", \"Squares\"),\n runtimeForbiddenMarker(\"as\", \"Rigid\", \"As\", \"Possible\"),\n runtimeForbiddenMarker(\"b\", \"b\", \"w\"),\n]);\n\nexport const VIVI_RUNTIME_FORBIDDEN_KIND_OR_TYPE = Object.freeze([\n \"blendShape\",\n \"latticeDeformer\",\n \"morphTarget\",\n \"correctiveDeformation\",\n \"meshPose\",\n \"meshLink\",\n runtimeForbiddenMarker(\"Local\", \"Motion\", \"Draft\"),\n runtimeForbiddenMarker(\"Local\", \"Preview\", \"Solver\"),\n runtimeForbiddenMarker(\"Local\", \"Motion\", \"Region\"),\n runtimeForbiddenMarker(\"Local\", \"Motion\", \"Handle\"),\n runtimeForbiddenMarker(\"Local\", \"Motion\", \"Apply\", \"Plan\"),\n runtimeForbiddenMarker(\"Local\", \"Preview\", \"Frame\"),\n runtimeForbiddenMarker(\"editor\", \"Preview\", \"Frame\"),\n runtimeForbiddenMarker(\"constrained\", \"Affine\"),\n runtimeForbiddenMarker(\"m\", \"l\", \"s\"),\n runtimeForbiddenMarker(\"m\", \"l\", \"s\", \"Rigid\"),\n runtimeForbiddenMarker(\"m\", \"l\", \"s\", \"Similarity\"),\n runtimeForbiddenMarker(\"a\", \"r\", \"a\", \"p\"),\n runtimeForbiddenMarker(\"a\", \"r\", \"a\", \"p\", \"Local\"),\n runtimeForbiddenMarker(\"guided\", \"Preview\", \"Fit\"),\n runtimeForbiddenMarker(\"motion\", \"Stress\", \"Preview\"),\n runtimeForbiddenMarker(\"moving\", \"Least\", \"Squares\"),\n runtimeForbiddenMarker(\"as\", \"Rigid\", \"As\", \"Possible\"),\n runtimeForbiddenMarker(\"b\", \"b\", \"w\"),\n]);\n\nexport const VIVI_RUNTIME_ALLOWED_BINDING_TARGET_TYPES = Object.freeze([\n \"bone\",\n \"ikController\",\n]);\n\nexport const VIVI_RUNTIME_ALLOWED_EXPRESSION_PRESET_KEYS = Object.freeze([\n \"id\",\n \"name\",\n \"values\",\n \"color\",\n \"hotkey\",\n]);\n\nexport class ViviRuntimeError extends Error {\n readonly code: ViviRuntimeErrorCode;\n\n constructor(code: ViviRuntimeErrorCode, message: string, cause?: unknown) {\n super(message);\n this.name = \"ViviRuntimeError\";\n this.code = code;\n if (cause !== undefined) {\n this.cause = cause;\n }\n }\n}\n","// Public-profile validation is the model boundary used by SDKs and runtime\n// playback paths. It accepts only playback-safe project data and rejects\n// editor-only previews, provider raw output, and authoring-only temporary state.\nimport { validateNoLocalMotionPreviewFields } from \"./private-profile-guards\";\nimport {\n VIVI_RUNTIME_ALLOWED_BINDING_TARGET_TYPES,\n VIVI_RUNTIME_ALLOWED_EXPRESSION_PRESET_KEYS,\n VIVI_RUNTIME_FORBIDDEN_KIND_OR_TYPE,\n VIVI_RUNTIME_FORBIDDEN_RAW_KEYS,\n} from \"./runtime-spec\";\nimport type { ProjectData, ViviFileData } from \"./types\";\n\nexport const PUBLIC_PROJECT_PROFILE = \"publicProfileV1\" as const;\n\nexport type PublicProjectProfile = typeof PUBLIC_PROJECT_PROFILE;\n\nexport interface PublicProfileIssue {\n code: string;\n path: string;\n message: string;\n}\n\nexport class PublicProfileError extends Error {\n readonly issues: PublicProfileIssue[];\n\n constructor(issues: PublicProfileIssue[]) {\n super(formatPublicProfileIssues(issues));\n this.name = \"PublicProfileError\";\n this.issues = issues;\n }\n}\n\nexport function formatPublicProfileIssues(issues: readonly PublicProfileIssue[]): string {\n if (issues.length === 0) return \"public profile validation failed\";\n const first = issues[0]!;\n return `public profile validation failed: ${first.path}: ${first.message}`;\n}\n\nexport function validatePublicViviFileProfile(\n fileData: ViviFileData,\n): PublicProfileIssue[] {\n const issues: PublicProfileIssue[] = [];\n issues.push(...validatePublicRawViviFileProfile(fileData));\n if (fileData.profile !== undefined && fileData.profile !== PUBLIC_PROJECT_PROFILE) {\n issues.push({\n code: \"unsupportedProfile\",\n path: \"profile\",\n message: `unsupported public project profile: ${String(fileData.profile)}`,\n });\n }\n issues.push(...validatePublicProjectProfile(fileData.project, \"project\"));\n return dedupeIssues(issues);\n}\n\nexport function validatePublicRawViviFileProfile(value: unknown): PublicProfileIssue[] {\n const issues: PublicProfileIssue[] = [];\n if (!isRecord(value)) return issues;\n issues.push(\n ...validateNoLocalMotionPreviewFields(value, \"publicProfile\").map(\n (issue): PublicProfileIssue => ({\n code: \"forbiddenPublicFeature\",\n path: issue.path.replace(/^<root>\\./, \"\"),\n message:\n \"public project profile cannot contain editor-only local motion preview data\",\n }),\n ),\n );\n validateRawPublicKnownFields(value, issues);\n const project = value.project;\n if (isRecord(project)) {\n scanRawPublicObject(project, \"project\", issues, new WeakSet());\n }\n return dedupeIssues(issues);\n}\n\nexport function assertPublicRawViviFileProfile(value: unknown): void {\n const issues = validatePublicRawViviFileProfile(value);\n if (issues.length > 0) throw new PublicProfileError(issues);\n}\n\nexport function assertPublicViviFileProfile(fileData: ViviFileData): void {\n const issues = validatePublicViviFileProfile(fileData);\n if (issues.length > 0) throw new PublicProfileError(issues);\n}\n\nexport function validatePublicProjectProfile(\n project: ProjectData,\n basePath = \"project\",\n): PublicProfileIssue[] {\n const issues: PublicProfileIssue[] = [];\n\n validateParameterBindings(project, basePath, issues);\n validateExpressionPresets(project, basePath, issues);\n\n return issues;\n}\n\nexport function assertPublicProjectProfile(project: ProjectData): void {\n const issues = validatePublicProjectProfile(project);\n if (issues.length > 0) throw new PublicProfileError(issues);\n}\n\nfunction dedupeIssues(issues: PublicProfileIssue[]): PublicProfileIssue[] {\n const seen = new Set<string>();\n const result: PublicProfileIssue[] = [];\n for (const issue of issues) {\n const key = `${issue.code}\\0${issue.path}`;\n if (seen.has(key)) continue;\n seen.add(key);\n result.push(issue);\n }\n return result;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nconst FORBIDDEN_RAW_KEYS = new Set<string>(VIVI_RUNTIME_FORBIDDEN_RAW_KEYS);\n\nconst FORBIDDEN_RAW_KIND_OR_TARGET = new Set<string>(VIVI_RUNTIME_FORBIDDEN_KIND_OR_TYPE);\n\nconst ALLOWED_BINDING_TARGET_TYPES = new Set<string>(\n VIVI_RUNTIME_ALLOWED_BINDING_TARGET_TYPES,\n);\n\nconst ALLOWED_EXPRESSION_PRESET_KEYS = new Set<string>(\n VIVI_RUNTIME_ALLOWED_EXPRESSION_PRESET_KEYS,\n);\n\nconst PUBLIC_FILE_KEYS = new Set([\"version\", \"profile\", \"project\", \"atlases\"]);\n\nconst PUBLIC_PROJECT_KEYS = new Set([\n \"name\",\n \"width\",\n \"height\",\n \"sourceKind\",\n \"layers\",\n \"parameters\",\n \"clips\",\n \"scenes\",\n \"physicsGroups\",\n \"lipsyncConfig\",\n \"skins\",\n \"parameterBindings\",\n \"sceneBlends\",\n \"ikControllers\",\n \"offscreenTargets\",\n \"expressionPresets\",\n \"colliders\",\n \"stateMachines\",\n]);\n\nfunction pushForbiddenRawIssue(issues: PublicProfileIssue[], path: string): void {\n issues.push({\n code: \"forbiddenPublicFeature\",\n path,\n message:\n \"public project profile only accepts layer, bone, IK, skin, physics, and parameter data\",\n });\n}\n\nfunction pushUnknownRawIssue(issues: PublicProfileIssue[], path: string): void {\n issues.push({\n code: \"unknownPublicField\",\n path,\n message: \"public project profile does not allow unknown fields\",\n });\n}\n\nfunction scanRawPublicObject(\n value: unknown,\n path: string,\n issues: PublicProfileIssue[],\n seen: WeakSet<object>,\n): void {\n if (Array.isArray(value)) {\n if (seen.has(value)) return;\n seen.add(value);\n value.forEach((item, index) => {\n scanRawPublicObject(item, `${path}[${index}]`, issues, seen);\n });\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key === \"string\" && isArrayIndexKey(key, value.length)) continue;\n scanRawPublicProperty(value, key, path, issues, seen);\n }\n return;\n }\n if (!isRecord(value)) return;\n if (seen.has(value)) return;\n seen.add(value);\n\n for (const key of Reflect.ownKeys(value)) {\n scanRawPublicProperty(value, key, path, issues, seen);\n }\n}\n\nfunction isArrayIndexKey(key: string, length: number): boolean {\n const index = Number(key);\n return Number.isInteger(index) && index >= 0 && index < length && String(index) === key;\n}\n\nfunction scanRawPublicProperty(\n value: object,\n key: string | symbol,\n path: string,\n issues: PublicProfileIssue[],\n seen: WeakSet<object>,\n): void {\n const keyText = typeof key === \"symbol\" ? key.toString() : key;\n const childPath = `${path}.${keyText}`;\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (\n (key === \"kind\" || key === \"type\") &&\n descriptor !== undefined &&\n !(\"value\" in descriptor)\n ) {\n pushForbiddenRawIssue(issues, path);\n return;\n }\n const child = descriptor && \"value\" in descriptor ? descriptor.value : undefined;\n if (typeof key === \"string\" && FORBIDDEN_RAW_KEYS.has(key)) {\n pushForbiddenRawIssue(issues, childPath);\n return;\n }\n if (\n (key === \"kind\" || key === \"type\") &&\n typeof child === \"string\" &&\n FORBIDDEN_RAW_KIND_OR_TARGET.has(child)\n ) {\n pushForbiddenRawIssue(issues, path);\n return;\n }\n scanRawPublicObject(child, childPath, issues, seen);\n}\n\nfunction validateRawKnownKeys(\n value: unknown,\n path: string,\n allowedKeys: ReadonlySet<string>,\n issues: PublicProfileIssue[],\n): void {\n if (!isRecord(value)) return;\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key !== \"string\") {\n pushUnknownRawIssue(issues, `${path}.${String(key)}`);\n continue;\n }\n if (!allowedKeys.has(key)) {\n pushUnknownRawIssue(issues, `${path}.${key}`);\n }\n }\n}\n\nfunction validateRawPublicKnownFields(\n value: unknown,\n issues: PublicProfileIssue[],\n): void {\n validateRawKnownKeys(value, \"<root>\", PUBLIC_FILE_KEYS, issues);\n if (!isRecord(value)) return;\n validateRawKnownKeys(value.project, \"project\", PUBLIC_PROJECT_KEYS, issues);\n}\n\nfunction validateParameterBindings(\n project: ProjectData,\n basePath: string,\n issues: PublicProfileIssue[],\n): void {\n for (let index = 0; index < (project.parameterBindings ?? []).length; index += 1) {\n const binding = project.parameterBindings![index]!;\n if (!ALLOWED_BINDING_TARGET_TYPES.has(binding.target.type)) {\n issues.push({\n code: \"forbiddenPublicFeature\",\n path: `${basePath}.parameterBindings[${index}].target`,\n message: \"parameter bindings may target bones or IK controllers only\",\n });\n }\n }\n}\n\nfunction validateExpressionPresets(\n project: ProjectData,\n basePath: string,\n issues: PublicProfileIssue[],\n): void {\n for (let index = 0; index < (project.expressionPresets ?? []).length; index += 1) {\n const preset = project.expressionPresets![index] as unknown as Record<\n string,\n unknown\n >;\n for (const key of Object.keys(preset)) {\n if (!ALLOWED_EXPRESSION_PRESET_KEYS.has(key)) {\n issues.push({\n code: \"forbiddenPublicFeature\",\n path: `${basePath}.expressionPresets[${index}].${key}`,\n message: \"expression presets may contain parameter values only\",\n });\n }\n }\n }\n}\n","import type { ZodIssue } from \"zod\";\nimport { assertTextLengthWithinLimit, MAX_VIVI_TEXT_FILE_BYTES } from \"./load-limits\";\nimport { ViviFileDataSchema } from \"./project-schema\";\nimport {\n assertPublicRawViviFileProfile,\n assertPublicViviFileProfile,\n type PublicProjectProfile,\n} from \"./public-profile\";\nimport type { ViviFileData } from \"./types\";\n\nconst VALID_LAYER_KINDS: ReadonlySet<string> = new Set([\n \"viviMesh\",\n \"group\",\n \"bone\",\n \"artPath\",\n]);\n\nfunction validateLayers(layers: unknown[], path: string): void {\n for (let i = 0; i < layers.length; i++) {\n const layer = layers[i];\n const layerPath = `${path}[${i}]`;\n if (!layer || typeof layer !== \"object\" || Array.isArray(layer)) {\n throw new Error(`Failed to parse .vivi file: ${layerPath} is not an object`);\n }\n const obj = layer as Record<string, unknown>;\n if (typeof obj.kind !== \"string\" || !VALID_LAYER_KINDS.has(obj.kind)) {\n throw new Error(\n `Failed to parse .vivi file: ${layerPath}.kind is invalid (${String(obj.kind)})`,\n );\n }\n if (typeof obj.id !== \"string\" || obj.id.length === 0) {\n throw new Error(`Failed to parse .vivi file: ${layerPath}.id is invalid`);\n }\n if (obj.children !== undefined) {\n if (!Array.isArray(obj.children)) {\n throw new Error(\n `Failed to parse .vivi file: ${layerPath}.children is not an array`,\n );\n }\n validateLayers(obj.children, `${layerPath}.children`);\n }\n }\n}\n\nfunction validateAtlasEntries(entries: unknown[], basePath: string): void {\n for (let j = 0; j < entries.length; j++) {\n const entry = entries[j];\n const entryPath = `${basePath}[${j}]`;\n if (!entry || typeof entry !== \"object\" || Array.isArray(entry)) {\n throw new Error(`Failed to parse .vivi file: ${entryPath} is not an object`);\n }\n const eo = entry as Record<string, unknown>;\n if (typeof eo.layerId !== \"string\" || eo.layerId.length === 0) {\n throw new Error(`Failed to parse .vivi file: ${entryPath}.layerId is invalid`);\n }\n for (const key of [\"x\", \"y\", \"width\", \"height\"] as const) {\n if (typeof eo[key] !== \"number\" || !Number.isFinite(eo[key])) {\n throw new Error(\n `Failed to parse .vivi file: ${entryPath}.${key} is not a finite number`,\n );\n }\n }\n if ((eo.width as number) < 0 || (eo.height as number) < 0) {\n throw new Error(\n `Failed to parse .vivi file: ${entryPath}.width/height is negative`,\n );\n }\n }\n}\n\nfunction validateAtlases(atlases: unknown[]): void {\n for (let i = 0; i < atlases.length; i++) {\n const atlas = atlases[i];\n const atlasPath = `atlases[${i}]`;\n if (!atlas || typeof atlas !== \"object\" || Array.isArray(atlas)) {\n throw new Error(`Failed to parse .vivi file: ${atlasPath} is not an object`);\n }\n const obj = atlas as Record<string, unknown>;\n if (typeof obj.image !== \"string\") {\n throw new Error(`Failed to parse .vivi file: ${atlasPath}.image is not a string`);\n }\n if (\n typeof obj.width !== \"number\" ||\n typeof obj.height !== \"number\" ||\n !Number.isFinite(obj.width) ||\n !Number.isFinite(obj.height) ||\n (obj.width as number) <= 0 ||\n (obj.height as number) <= 0\n ) {\n throw new Error(\n `Failed to parse .vivi file: ${atlasPath}.width/height is not a valid positive number`,\n );\n }\n if (!Array.isArray(obj.entries)) {\n throw new Error(`Failed to parse .vivi file: ${atlasPath}.entries is not an array`);\n }\n validateAtlasEntries(obj.entries, `${atlasPath}.entries`);\n }\n}\n\nfunction formatIssuePath(issue: ZodIssue): string {\n if (issue.path.length === 0) return \"<root>\";\n let out = \"\";\n for (const seg of issue.path) {\n if (typeof seg === \"number\") {\n out += `[${seg}]`;\n } else {\n out += out === \"\" ? String(seg) : `.${String(seg)}`;\n }\n }\n return out;\n}\n\nfunction formatIssueMessage(issue: ZodIssue): string {\n const path = formatIssuePath(issue);\n return `${path}: ${issue.message}`;\n}\n\nexport interface ParseViviFileOptions {\n profile?: PublicProjectProfile | \"internal\";\n}\n\nexport function parseViviFile(\n json: string,\n options: ParseViviFileOptions = {},\n): ViviFileData {\n assertTextLengthWithinLimit(json, MAX_VIVI_TEXT_FILE_BYTES, \".vivi file\");\n let data: unknown;\n try {\n data = JSON.parse(json);\n } catch {\n throw new Error(\"Failed to parse .vivi file: invalid JSON\");\n }\n\n if (!data || typeof data !== \"object\" || Array.isArray(data)) {\n throw new Error(\"Failed to parse .vivi file: root value is not an object\");\n }\n\n const obj = data as Record<string, unknown>;\n\n if (\n obj.version !== 1 &&\n obj.version !== 2 &&\n obj.version !== 3 &&\n obj.version !== 4 &&\n obj.version !== 5 &&\n obj.version !== 6 &&\n obj.version !== 7 &&\n obj.version !== 8 &&\n obj.version !== 9 &&\n obj.version !== 10\n ) {\n throw new Error(`Invalid .vivi file version: ${obj.version}`);\n }\n if (!obj.project || typeof obj.project !== \"object\") {\n throw new Error(\".vivi file is missing the project field\");\n }\n if (!Array.isArray(obj.atlases)) {\n throw new Error(\".vivi file is missing the atlases field\");\n }\n\n const proj = obj.project as Record<string, unknown>;\n if (!Array.isArray(proj.layers)) {\n throw new Error(\".vivi file is missing the layers field\");\n }\n if (!Array.isArray(proj.parameters)) {\n throw new Error(\".vivi file is missing the parameters field\");\n }\n if (proj.name !== undefined && typeof proj.name !== \"string\") {\n throw new Error(\".vivi file project.name is not a string\");\n }\n for (const key of [\"width\", \"height\"] as const) {\n const v = proj[key];\n if (v !== undefined) {\n if (typeof v !== \"number\" || !Number.isFinite(v) || v <= 0) {\n throw new Error(`.vivi file project.${key} is not a valid positive number`);\n }\n }\n }\n\n validateLayers(proj.layers, \"project.layers\");\n validateAtlases(obj.atlases);\n if (options.profile === \"publicProfileV1\" || obj.profile === \"publicProfileV1\") {\n assertPublicRawViviFileProfile(data);\n }\n\n const zodResult = ViviFileDataSchema.safeParse(data);\n if (!zodResult.success) {\n const issue = zodResult.error.issues[0];\n if (issue) {\n throw new Error(`Failed to parse .vivi file: ${formatIssueMessage(issue)}`);\n }\n throw new Error(\"Failed to parse .vivi file: schema validation error\");\n }\n\n const fileData = zodResult.data as ViviFileData;\n if (options.profile === \"publicProfileV1\") {\n assertPublicViviFileProfile(fileData);\n }\n return fileData;\n}\n","export const FLOAT_EPSILON = 1e-9;\n\nexport const GEOMETRY = {\n COORD_STRIDE: 2,\n\n TRIANGLE_VERTS: 3,\n} as const;\n\nexport const VIEWPORT = {\n ZOOM_MIN: 0.05,\n ZOOM_MAX: 32,\n ZOOM_FACTOR: 1.1,\n FIT_SCALE: 0.85,\n} as const;\n\nexport const MESH_OVERLAY = {\n VERTEX_RADIUS: 4,\n VERTEX_COLOR: 0x00ccff,\n VERTEX_SELECTED_COLOR: 0xff6600,\n EDGE_COLOR: 0x00ccff,\n EDGE_ALPHA: 0.4,\n HIT_THRESHOLD: 8,\n\n LASSO_COLOR: 0xffff00,\n\n LASSO_ALPHA: 0.4,\n\n LASSO_FILL_RATIO: 0.3,\n} as const;\n\nexport const DEFORMER_OVERLAY = {\n CP_SIZE: 5,\n CP_COLOR: 0xffcc00,\n CP_ACTIVE_COLOR: 0xff6600,\n GRID_COLOR: 0xffcc00,\n GRID_ALPHA: 0.5,\n PIVOT_COLOR: 0x00ff88,\n HANDLE_COLOR: 0x00ff88,\n HANDLE_RADIUS: 6,\n PIVOT_CROSSHAIR: 8,\n HIT_THRESHOLD: 10,\n} as const;\n\nexport const LATTICE_OVERLAY = {\n POINT_RADIUS: 5,\n\n POINT_COLOR: 0x00ff88,\n\n POINT_HOVER_COLOR: 0xffff00,\n\n LINE_COLOR: 0x00ff88,\n\n LINE_ALPHA: 0.4,\n\n LINE_WIDTH: 1,\n\n HIT_THRESHOLD: 10,\n} as const;\n\nexport const BONE_OVERLAY = {\n PIVOT_RADIUS: 6,\n\n PIVOT_COLOR: 0x00ccff,\n\n ARM_COLOR: 0x00ccff,\n\n ARM_WIDTH: 2,\n\n TIP_RADIUS: 4,\n\n TIP_COLOR: 0x00ccff,\n\n SELECTED_COLOR: 0xffaa00,\n\n HIT_THRESHOLD: 12,\n} as const;\n\nexport const COLLIDER_OVERLAY = {\n FILL_ALPHA: 0.15,\n\n STROKE_COLOR: 0xff4488,\n\n SELECTED_COLOR: 0xffaa00,\n\n STROKE_WIDTH: 2,\n\n HANDLE_RADIUS: 5,\n\n HANDLE_COLOR: 0xffaa00,\n\n HIT_THRESHOLD: 8,\n\n DISABLED_ALPHA: 0.3,\n\n MIN_SIZE: 4,\n} as const;\n\nexport const PIXI_CONFIG = {\n BG_COLOR: 0x1e1e2e,\n} as const;\n\nexport const THEME_BG_COLORS = {\n dark: 0x1e1e2e,\n light: 0xf0f0f6,\n} as const;\n\nexport const MESH_DEFAULTS = {\n DIVISIONS_X: 3,\n DIVISIONS_Y: 3,\n} as const;\n\nexport const DEFORMER_DEFAULTS = {\n HANDLE_LENGTH: 50,\n SCALE_MIN: 0.01,\n SCALE_MAX: 5,\n} as const;\n\nexport const TIMELINE_DEFAULTS = {\n FPS: 30,\n DURATION: 90,\n MIN_DURATION: 1,\n MAX_DURATION: 9999,\n MIN_FPS: 1,\n MAX_FPS: 120,\n} as const;\n\nexport const PHYSICS_DEFAULTS = {\n TIMESTEP: 1 / 120,\n\n MAX_SUBSTEPS: 4,\n\n GRAVITY_STRENGTH: 9.8,\n\n GRAVITY_DIRECTION: 0,\n\n DAMPING: 0.05,\n\n PENDULUM_LENGTH: 1,\n\n PENDULUM_MASS: 1,\n\n WIND: 0,\n\n MAX_ANGLE: Math.PI * 2,\n\n FORCE_PROPAGATION: 0.5,\n} as const;\n\nexport const ATLAS = {\n MAX_SIZE: 4096,\n\n PADDING: 2,\n\n MIN_SIZE: 256,\n} as const;\n\nexport const DRAW_ORDER = {\n MIN: 0,\n MAX: 1000,\n DEFAULT: 500,\n} as const;\n\nexport const DEFAULT_COLORS = {\n MULTIPLY: { r: 1, g: 1, b: 1 } as const,\n\n SCREEN: { r: 0, g: 0, b: 0 } as const,\n} as const;\n\nexport const AUTO_MESH = {\n PRESET_SCHEMA_VERSION: \"auto-mesh-preset/v1\",\n\n PRESETS: {\n coarse: { contourSimplify: 4.0, interiorSpacing: 40, minEdgeLength: 20 },\n standard: {\n contourSimplify: 2.0,\n interiorSpacing: 20,\n minEdgeLength: 10,\n },\n fine: { contourSimplify: 1.0, interiorSpacing: 10, minEdgeLength: 5 },\n },\n\n ALPHA_THRESHOLD: 10,\n\n CONTOUR_PADDING: 2,\n} as const;\n\nexport type MeshDensityPreset = keyof typeof AUTO_MESH.PRESETS;\n\nexport const EASING_PRESETS = {\n linear: { cp1x: 0, cp1y: 0, cp2x: 1, cp2y: 1 },\n easeIn: { cp1x: 0.42, cp1y: 0, cp2x: 1, cp2y: 1 },\n easeOut: { cp1x: 0, cp1y: 0, cp2x: 0.58, cp2y: 1 },\n easeInOut: { cp1x: 0.42, cp1y: 0, cp2x: 0.58, cp2y: 1 },\n} as const;\n\nexport type EasingPreset = keyof typeof EASING_PRESETS;\n\nexport const GRAPH_EDITOR = {\n HANDLE_RADIUS: 5,\n\n KEYFRAME_RADIUS: 5,\n\n HANDLE_LINE_WIDTH: 1.5,\n\n CURVE_LINE_WIDTH: 2,\n\n GRID_COLOR: \"var(--graph-grid, #3a3a55)\",\n\n CURVE_COLOR: \"var(--graph-curve, #7c6ff0)\",\n\n KEYFRAME_COLOR: \"var(--graph-keyframe, #e0e0f0)\",\n\n HANDLE_COLOR: \"var(--graph-handle, #8f84f5)\",\n\n VALUE_MARGIN: 0.15,\n} as const;\n\nexport const SPINE_EXPORT = {\n VERSION: \"4.2\",\n\n IMAGE_PATH: \"./images/\",\n\n AUDIO_PATH: \"\",\n\n ROOT_BONE: \"root\",\n} as const;\n\nexport const DEFAULT_NAMES = {\n UNNAMED_LAYER: \"Unnamed Layer\",\n} as const;\n\nexport const LIPSYNC_DEFAULTS = {\n SMOOTHING: 0.7,\n\n THRESHOLD: 0.02,\n\n GAIN: 2.0,\n\n FFT_SIZE: 2048,\n} as const;\n\nexport const VISEME_DEFAULTS = {\n F1_MIN: 200,\n\n F1_MAX: 1000,\n\n F2_MIN: 700,\n\n F2_MAX: 2800,\n\n FORMANT_SEPARATION: 200,\n} as const;\n","import { GEOMETRY } from \"./constants\";\nimport type { ColliderData, ColliderHitResult, MeshRenderState } from \"./types\";\n\nexport function pointInTriangle(\n px: number,\n py: number,\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n): boolean {\n const d = (y2 - y3) * (x1 - x3) + (x3 - x2) * (y1 - y3);\n if (Math.abs(d) < 1e-10) return false;\n\n const u = ((y2 - y3) * (px - x3) + (x3 - x2) * (py - y3)) / d;\n const v = ((y3 - y1) * (px - x3) + (x1 - x3) * (py - y3)) / d;\n const w = 1 - u - v;\n\n return u >= 0 && v >= 0 && w >= 0;\n}\n\nexport function pointInRect(\n px: number,\n py: number,\n rx: number,\n ry: number,\n rw: number,\n rh: number,\n): boolean {\n return px >= rx && px <= rx + rw && py >= ry && py <= ry + rh;\n}\n\nexport function pointInCircle(\n px: number,\n py: number,\n cx: number,\n cy: number,\n radius: number,\n): boolean {\n const dx = px - cx;\n const dy = py - cy;\n return dx * dx + dy * dy <= radius * radius;\n}\n\nexport function hitTestMesh(\n state: MeshRenderState,\n worldX: number,\n worldY: number,\n): boolean {\n // Skinned snapshots are already emitted in model space; unskinned snapshots\n // keep local vertices plus layer offsets for renderer compatibility.\n const verticesAreModelSpace = state.verticesSpace === \"model\";\n const localX = verticesAreModelSpace ? worldX : worldX - state.x;\n const localY = verticesAreModelSpace ? worldY : worldY - state.y;\n\n const verts = state.vertices;\n const indices = state.indices;\n const stride = GEOMETRY.COORD_STRIDE;\n\n for (let i = 0; i < indices.length; i += GEOMETRY.TRIANGLE_VERTS) {\n const i0 = indices[i]!;\n const i1 = indices[i + 1]!;\n const i2 = indices[i + 2]!;\n\n const x1 = verts[i0 * stride]!;\n const y1 = verts[i0 * stride + 1]!;\n const x2 = verts[i1 * stride]!;\n const y2 = verts[i1 * stride + 1]!;\n const x3 = verts[i2 * stride]!;\n const y3 = verts[i2 * stride + 1]!;\n\n if (pointInTriangle(localX, localY, x1, y1, x2, y2, x3, y3)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function hitTestColliders(\n colliders: readonly ColliderData[],\n meshStates: ReadonlyMap<string, MeshRenderState>,\n worldX: number,\n worldY: number,\n): ColliderHitResult | null {\n const sorted = sortEnabledColliders(colliders, meshStates);\n\n for (const collider of sorted) {\n const hit = testSingleCollider(collider, meshStates, worldX, worldY);\n if (hit) return hit;\n }\n\n return null;\n}\n\nexport function hitTestCollidersAll(\n colliders: readonly ColliderData[],\n meshStates: ReadonlyMap<string, MeshRenderState>,\n worldX: number,\n worldY: number,\n): ColliderHitResult[] {\n const sorted = sortEnabledColliders(colliders, meshStates);\n\n const results: ColliderHitResult[] = [];\n for (const collider of sorted) {\n const hit = testSingleCollider(collider, meshStates, worldX, worldY);\n if (hit) results.push(hit);\n }\n return results;\n}\n\nfunction sortEnabledColliders(\n colliders: readonly ColliderData[],\n meshStates: ReadonlyMap<string, MeshRenderState>,\n): ColliderData[] {\n const meshDrawOrder = new Map<string, number>();\n for (const [id, state] of meshStates) {\n meshDrawOrder.set(id, state.drawOrder);\n }\n\n return colliders\n .map((collider, index) => ({ collider, index }))\n .filter((entry) => entry.collider.enabled)\n .sort((a, b) => {\n const priorityA = getColliderPriority(a.collider);\n const priorityB = getColliderPriority(b.collider);\n if (priorityA !== priorityB) return priorityB - priorityA;\n\n const orderA = getMeshColliderDrawOrder(a.collider, meshDrawOrder);\n const orderB = getMeshColliderDrawOrder(b.collider, meshDrawOrder);\n if (orderA !== orderB) return orderB - orderA;\n\n return a.index - b.index;\n })\n .map((entry) => entry.collider);\n}\n\nfunction testSingleCollider(\n collider: ColliderData,\n meshStates: ReadonlyMap<string, MeshRenderState>,\n worldX: number,\n worldY: number,\n): ColliderHitResult | null {\n const shape = collider.shape;\n\n switch (shape.type) {\n case \"rectangle\":\n if (pointInRect(worldX, worldY, shape.x, shape.y, shape.width, shape.height)) {\n return toResult(collider);\n }\n break;\n\n case \"circle\":\n if (pointInCircle(worldX, worldY, shape.x, shape.y, shape.radius)) {\n return toResult(collider);\n }\n break;\n\n case \"mesh\": {\n const state = meshStates.get(shape.meshId);\n if (state?.visible && hitTestMesh(state, worldX, worldY)) {\n return toResult(collider, shape.meshId);\n }\n break;\n }\n }\n\n return null;\n}\n\nfunction getColliderPriority(collider: ColliderData): number {\n return collider.shape.type === \"mesh\" ? 0 : 1;\n}\n\nfunction getMeshColliderDrawOrder(\n collider: ColliderData,\n meshDrawOrder: Map<string, number>,\n): number {\n if (collider.shape.type === \"mesh\") {\n return meshDrawOrder.get(collider.shape.meshId) ?? 0;\n }\n return 0;\n}\n\nfunction toResult(collider: ColliderData, meshId?: string): ColliderHitResult {\n return {\n colliderId: collider.id,\n colliderName: collider.name,\n tag: collider.tag,\n meshId,\n };\n}\n","export type LayerId = string;\n\nexport type ParameterId = string;\n\nexport type ClipId = string;\n\nexport type SceneId = string;\n\nexport type PhysicsGroupId = string;\n\nexport type LayerSemanticRole =\n | \"head\"\n | \"face\"\n | \"eyeLeft\"\n | \"eyeRight\"\n | \"eyebrowLeft\"\n | \"eyebrowRight\"\n | \"mouth\"\n | \"nose\"\n | \"hair\"\n | \"hairFront\"\n | \"hairBack\"\n | \"hairSide\"\n | \"body\"\n | \"armLeft\"\n | \"armRight\"\n | \"handLeft\"\n | \"handRight\"\n | \"legLeft\"\n | \"legRight\"\n | \"tail\"\n | \"ear\"\n | \"accessory\"\n | \"unknown\";\n\nexport type LayerSemanticRoleSource = \"seeThroughImport\" | \"manual\" | \"assistant\";\n\nexport type LayerRiggingHint = \"rigid\" | \"localBones\" | \"skinned\" | \"physics\";\n\nexport interface ProviderProposalAudit {\n providerId: string;\n capabilityId: string;\n proposalId: string;\n confidence?: number;\n convertedAt?: string;\n}\n\nexport type ManualSplitOutputMetadata =\n | {\n kind: \"maskExtractedLayer\";\n ownership: \"userAccepted\";\n origin: \"manualMask\";\n manualSplitLayerId: LayerId;\n manualSplitSourceLayerId: LayerId;\n manualSplitSourceFingerprint: string;\n manualSplitMaskId: string;\n maskCoverage: number;\n edgeFeatherPx: number;\n customLabel?: string;\n convertedFromProviderProposal?: never;\n }\n | {\n kind: \"maskExtractedLayer\";\n ownership: \"userAccepted\";\n origin: \"providerProposal\";\n manualSplitLayerId: LayerId;\n manualSplitSourceLayerId: LayerId;\n manualSplitSourceFingerprint: string;\n manualSplitMaskId: string;\n maskCoverage: number;\n edgeFeatherPx: number;\n customLabel?: string;\n convertedFromProviderProposal: ProviderProposalAudit & { convertedAt: string };\n }\n | {\n kind: \"generatedUnderpaintLayer\";\n ownership: \"userAccepted\";\n origin: \"localUnderpaint\";\n manualSplitLayerId: LayerId;\n manualSplitSourceLayerId: LayerId;\n manualSplitSourceFingerprint: string;\n underpaintBufferId: string;\n bounds: { x: number; y: number; width: number; height: number };\n sourceMaskId?: string;\n occludedByMaskId?: string;\n acceptedAt: string;\n providerAudit?: never;\n }\n | {\n kind: \"generatedUnderpaintLayer\";\n ownership: \"userAccepted\";\n origin: \"providerUnderpaint\";\n manualSplitLayerId: LayerId;\n manualSplitSourceLayerId: LayerId;\n manualSplitSourceFingerprint: string;\n underpaintBufferId: string;\n bounds: { x: number; y: number; width: number; height: number };\n sourceMaskId?: string;\n occludedByMaskId?: string;\n acceptedAt: string;\n providerAudit: ProviderProposalAudit;\n };\n\nexport type LayerImportLrSplit = \"left\" | \"right\" | \"center\" | \"unknown\";\nexport type LayerImportFbSplit = \"front\" | \"back\" | \"middle\" | \"unknown\";\n\nexport interface LayerDepthStats {\n min: number;\n max: number;\n mean: number;\n}\n\nexport interface SeeThroughImportMetadata {\n label: string;\n order: number;\n psdLeafToken?: string;\n confidence: number;\n leftRightSplit: LayerImportLrSplit;\n frontBackSplit: LayerImportFbSplit;\n bbox: [number, number, number, number];\n depthStats: LayerDepthStats;\n}\n\nexport type ManualPngPlacementMode = \"preserveImageOffset\" | \"centerOnCanvas\";\n\nexport interface ManualPngImportMetadata {\n sourceFileName: string;\n sourcePath?: string;\n originalWidth: number;\n originalHeight: number;\n trimmedBounds: [number, number, number, number];\n finalOrigin: [number, number];\n placementMode: ManualPngPlacementMode;\n trimTransparentBoundsApplied?: boolean;\n autoGenerateMeshApplied: boolean;\n}\n\nexport interface SeeThroughLayerImportMetadata {\n source: \"seeThrough\";\n seeThrough: SeeThroughImportMetadata;\n manualPng?: never;\n}\n\nexport interface ManualPngLayerImportMetadata {\n source: \"manualPng\";\n seeThrough?: never;\n manualPng: ManualPngImportMetadata;\n}\n\nexport type LayerImportMetadata =\n | SeeThroughLayerImportMetadata\n | ManualPngLayerImportMetadata;\n\nexport function isSeeThroughLayerImportMetadata(\n metadata: LayerImportMetadata | undefined,\n): metadata is SeeThroughLayerImportMetadata {\n return metadata?.source === \"seeThrough\" && metadata.seeThrough != null;\n}\n\nexport function isManualPngLayerImportMetadata(\n metadata: LayerImportMetadata | undefined,\n): metadata is ManualPngLayerImportMetadata {\n return metadata?.source === \"manualPng\" && metadata.manualPng != null;\n}\n\nexport function getSeeThroughImportMetadata(\n metadata: LayerImportMetadata | undefined,\n): SeeThroughImportMetadata | undefined {\n return isSeeThroughLayerImportMetadata(metadata) ? metadata.seeThrough : undefined;\n}\n\nexport function getManualPngImportMetadata(\n metadata: LayerImportMetadata | undefined,\n): ManualPngImportMetadata | undefined {\n return isManualPngLayerImportMetadata(metadata) ? metadata.manualPng : undefined;\n}\n\nexport interface RGBColor {\n r: number;\n g: number;\n b: number;\n}\n\nexport type NodeKind = \"viviMesh\" | \"group\" | \"bone\" | \"artPath\";\n\nexport type BlendMode =\n | \"normal\"\n | \"add\"\n | \"multiply\"\n | \"screen\"\n | \"overlay\"\n | \"darken\"\n | \"lighten\"\n | \"color-dodge\"\n | \"color-burn\"\n | \"hard-light\"\n | \"soft-light\"\n | \"difference\"\n | \"exclusion\";\n\nexport type AffineMatrix = [number, number, number, number, number, number];\n\nexport interface MeshData {\n vertices: number[];\n\n uvs: number[];\n\n indices: number[];\n divisionsX: number;\n divisionsY: number;\n}\n\nexport interface NodeBase {\n id: LayerId;\n name: string;\n visible: boolean;\n opacity: number;\n x: number;\n y: number;\n width: number;\n height: number;\n blendMode: BlendMode;\n expanded: boolean;\n\n children: LayerNode[];\n\n clipMaskIds?: LayerId[];\n\n drawOrder?: number;\n\n multiplyColor?: RGBColor;\n\n screenColor?: RGBColor;\n\n semanticRole?: LayerSemanticRole;\n semanticRoleSource?: LayerSemanticRoleSource;\n riggingHint?: LayerRiggingHint;\n manualSplitOutputMetadata?: ManualSplitOutputMetadata;\n\n importMetadata?: LayerImportMetadata;\n\n managedTag?: string;\n managedSignature?: string;\n managedSourceFingerprint?: string;\n manualSplitSourceLayerId?: LayerId;\n manualSplitSourceFingerprint?: string;\n manualSplitLayerId?: LayerId;\n}\n\n/**\n * Drawable mesh node in the Vivi2D scene graph.\n */\nexport interface ViviMeshNode extends NodeBase {\n kind: \"viviMesh\";\n mesh: MeshData;\n\n culling?: boolean;\n}\n\nexport type DrawableMeshNode = ViviMeshNode;\n\nexport interface GroupNode extends NodeBase {\n kind: \"group\";\n}\n\nexport interface BoneData {\n angle: number;\n\n length: number;\n\n scaleX: number;\n scaleY: number;\n}\n\nexport type BoneRigConfig = BoneData;\n\nexport interface BoneNode extends NodeBase {\n kind: \"bone\";\n bone: BoneData;\n\n parentBoneId?: LayerId;\n}\n\n// --- ArtPath ---\n\nexport interface ArtPathControlPoint {\n x: number;\n\n y: number;\n\n handleInX: number;\n\n handleInY: number;\n\n handleOutX: number;\n\n handleOutY: number;\n\n width: number;\n\n opacity: number;\n}\n\nexport interface ArtPathStyle {\n color: number;\n\n baseWidth: number;\n\n lineCap: \"butt\" | \"round\" | \"square\";\n\n lineJoin: \"miter\" | \"round\" | \"bevel\";\n}\n\nexport interface ArtPathNode extends NodeBase {\n kind: \"artPath\";\n\n controlPoints: ArtPathControlPoint[];\n\n closed: boolean;\n\n style: ArtPathStyle;\n}\n\nexport type LayerNode =\n | ViviMeshNode\n | GroupNode\n | BoneNode\n | ArtPathNode;\n\n// --- Type Guards ---\n\nexport function isViviMesh(node: LayerNode): node is ViviMeshNode {\n return node.kind === \"viviMesh\";\n}\n\nexport function isGroup(node: LayerNode): node is GroupNode {\n return node.kind === \"group\";\n}\n\nexport function isBone(node: LayerNode): node is BoneNode {\n return node.kind === \"bone\";\n}\n\nexport function isArtPath(node: LayerNode): node is ArtPathNode {\n return node.kind === \"artPath\";\n}\n\nexport function hasChildren(node: LayerNode): node is GroupNode | BoneNode {\n return node.kind === \"group\" || node.kind === \"bone\";\n}\n\nexport function assertNever(value: never): never {\n throw new Error(`Unexpected node kind: ${JSON.stringify(value)}`);\n}\n","import type { BoneNode, LayerNode } from \"./types\";\nimport { isBone } from \"./types\";\n\nexport type Affine2D = [number, number, number, number, number, number];\n\nexport const IDENTITY: Readonly<Affine2D> = [1, 0, 0, 1, 0, 0];\n\nexport function multiplyAffine(p: Readonly<Affine2D>, c: Readonly<Affine2D>): Affine2D {\n return [\n p[0] * c[0] + p[2] * c[1],\n p[1] * c[0] + p[3] * c[1],\n p[0] * c[2] + p[2] * c[3],\n p[1] * c[2] + p[3] * c[3],\n p[0] * c[4] + p[2] * c[5] + p[4],\n p[1] * c[4] + p[3] * c[5] + p[5],\n ];\n}\n\nexport function invertAffine(m: Readonly<Affine2D>): Affine2D {\n const det = m[0] * m[3] - m[2] * m[1];\n if (Math.abs(det) < 1e-12) return [...IDENTITY];\n const invDet = 1 / det;\n return [\n m[3] * invDet,\n -m[1] * invDet,\n -m[2] * invDet,\n m[0] * invDet,\n (m[2] * m[5] - m[3] * m[4]) * invDet,\n (m[1] * m[4] - m[0] * m[5]) * invDet,\n ];\n}\n\nexport function computeBoneLocalTransform(bone: BoneNode): Affine2D {\n const cos = Math.cos(bone.bone.angle);\n const sin = Math.sin(bone.bone.angle);\n const sx = bone.bone.scaleX;\n const sy = bone.bone.scaleY;\n return [cos * sx, sin * sx, -sin * sy, cos * sy, bone.x, bone.y];\n}\n\nexport function buildBoneMap(layers: LayerNode[]): Map<string, BoneNode> {\n const map = new Map<string, BoneNode>();\n const visit = (nodes: LayerNode[]) => {\n for (const node of nodes) {\n if (isBone(node)) {\n map.set(node.id, node);\n }\n if (node.children.length > 0) {\n visit(node.children);\n }\n }\n };\n visit(layers);\n return map;\n}\n\nexport function computeBoneWorldTransforms(layers: LayerNode[]): Map<string, Affine2D> {\n const boneMap = buildBoneMap(layers);\n const worldTransforms = new Map<string, Affine2D>();\n\n const computeWorld = (bone: BoneNode): Affine2D => {\n const cached = worldTransforms.get(bone.id);\n if (cached) return cached;\n\n const local = computeBoneLocalTransform(bone);\n\n let world: Affine2D;\n if (bone.parentBoneId) {\n const parent = boneMap.get(bone.parentBoneId);\n if (parent) {\n const parentWorld = computeWorld(parent);\n world = multiplyAffine(parentWorld, local);\n } else {\n world = local;\n }\n } else {\n world = local;\n }\n\n worldTransforms.set(bone.id, world);\n return world;\n };\n\n for (const bone of boneMap.values()) {\n computeWorld(bone);\n }\n\n return worldTransforms;\n}\n\nexport function transformPoint(\n m: Readonly<Affine2D>,\n x: number,\n y: number,\n): [number, number] {\n return [m[0] * x + m[2] * y + m[4], m[1] * x + m[3] * y + m[5]];\n}\n","import { DEFAULT_COLORS, DRAW_ORDER } from \"./constants\";\nimport type { RGBColor } from \"./types\";\n\nexport function rgbColorToHex(color: RGBColor): number {\n const r = Math.round(Math.max(0, Math.min(1, color.r)) * 255);\n const g = Math.round(Math.max(0, Math.min(1, color.g)) * 255);\n const b = Math.round(Math.max(0, Math.min(1, color.b)) * 255);\n return (r << 16) | (g << 8) | b;\n}\n\nexport function hexToRgbColor(hex: number): RGBColor {\n return {\n r: ((hex >> 16) & 0xff) / 255,\n g: ((hex >> 8) & 0xff) / 255,\n b: (hex & 0xff) / 255,\n };\n}\n\nexport function lerpColor(a: RGBColor, b: RGBColor, t: number): RGBColor {\n return {\n r: a.r + (b.r - a.r) * t,\n g: a.g + (b.g - a.g) * t,\n b: a.b + (b.b - a.b) * t,\n };\n}\n\nexport function isScreenColorDefault(color: RGBColor | undefined): boolean {\n if (!color) return true;\n return color.r === 0 && color.g === 0 && color.b === 0;\n}\n\nexport function getDrawOrder(drawOrder: number | undefined): number {\n return drawOrder ?? DRAW_ORDER.DEFAULT;\n}\n\nexport function getMultiplyColor(color: RGBColor | undefined): RGBColor {\n return color ?? DEFAULT_COLORS.MULTIPLY;\n}\n\nexport function getScreenColor(color: RGBColor | undefined): RGBColor {\n return color ?? DEFAULT_COLORS.SCREEN;\n}\n\nexport function rgbToHexString(color: RGBColor): string {\n return `#${rgbColorToHex(color).toString(16).padStart(6, \"0\")}`;\n}\n\nexport function hexStringToRgb(hex: string): RGBColor {\n return hexToRgbColor(Number.parseInt(hex.slice(1), 16));\n}\n","import { GEOMETRY } from \"./constants\";\n\nexport function isPolygonFlipped(vertices: ArrayLike<number>): boolean {\n const minVerts = 3 * GEOMETRY.COORD_STRIDE;\n if (vertices.length < minVerts) return false;\n\n let signedArea = 0;\n const n = vertices.length;\n for (let i = 0; i < n; i += GEOMETRY.COORD_STRIDE) {\n const nextI = (i + GEOMETRY.COORD_STRIDE) % n;\n const x0 = vertices[i]!;\n const y0 = vertices[i + 1]!;\n const x1 = vertices[nextI]!;\n const y1 = vertices[nextI + 1]!;\n signedArea += x0 * y1 - x1 * y0;\n }\n\n return signedArea < 0;\n}\n","import type { LayerNode } from \"./types\";\n\nexport function findLayerById(layers: LayerNode[], id: string): LayerNode | null {\n for (const layer of layers) {\n if (layer.id === id) return layer;\n const found = findLayerById(layer.children, id);\n if (found) return found;\n }\n return null;\n}\n\nexport function updateLayerInTree(\n layers: LayerNode[],\n id: string,\n updater: (node: LayerNode) => LayerNode,\n): LayerNode[] {\n return layers.map((layer) => {\n if (layer.id === id) return updater(layer);\n if (layer.children.length > 0) {\n return {\n ...layer,\n children: updateLayerInTree(layer.children, id, updater),\n } as LayerNode;\n }\n return layer;\n });\n}\n\nexport function flattenLayers(layers: LayerNode[]): LayerNode[] {\n const result: LayerNode[] = [];\n for (const layer of layers) {\n result.push(layer);\n if (layer.children.length > 0) {\n result.push(...flattenLayers(layer.children));\n }\n }\n return result;\n}\n\nexport function findPathToLayer(layers: LayerNode[], targetId: string): LayerNode[] {\n return findPathImpl(layers, targetId) ?? [];\n}\n\nfunction findPathImpl(layers: LayerNode[], targetId: string): LayerNode[] | null {\n for (const layer of layers) {\n if (layer.id === targetId) return [layer];\n if (layer.children.length > 0) {\n const path = findPathImpl(layer.children, targetId);\n if (path) {\n path.unshift(layer);\n return path;\n }\n }\n }\n return null;\n}\n\nexport function buildParentIdMap(layers: LayerNode[]): Map<string, string | null> {\n const map = new Map<string, string | null>();\n const walk = (nodes: LayerNode[], parentId: string | null): void => {\n for (const node of nodes) {\n map.set(node.id, parentId);\n if (node.children.length > 0) {\n walk(node.children, node.id);\n }\n }\n };\n walk(layers, null);\n return map;\n}\n\nexport function findPathToLayerFromMap(\n targetId: string,\n parentIdMap: Map<string, string | null>,\n layersById: Map<string, LayerNode>,\n): LayerNode[] {\n const target = layersById.get(targetId);\n if (!target) return [];\n\n const reversed: LayerNode[] = [target];\n let currentId: string | null = parentIdMap.get(targetId) ?? null;\n while (currentId) {\n const node = layersById.get(currentId);\n if (!node) break;\n reversed.push(node);\n currentId = parentIdMap.get(currentId) ?? null;\n }\n reversed.reverse();\n return reversed;\n}\n\nexport function moveLayerInTree(\n layers: LayerNode[],\n id: string,\n direction: \"up\" | \"down\",\n): boolean {\n for (const layer of layers) {\n const idx = layer.children.findIndex((c) => c.id === id);\n if (idx !== -1) {\n const newIdx = direction === \"up\" ? idx - 1 : idx + 1;\n if (newIdx < 0 || newIdx >= layer.children.length) return false;\n const temp = layer.children[idx]!;\n layer.children[idx] = layer.children[newIdx]!;\n layer.children[newIdx] = temp;\n return true;\n }\n if (moveLayerInTree(layer.children, id, direction)) return true;\n }\n const rootIdx = layers.findIndex((l) => l.id === id);\n if (rootIdx !== -1) {\n const newIdx = direction === \"up\" ? rootIdx - 1 : rootIdx + 1;\n if (newIdx < 0 || newIdx >= layers.length) return false;\n const temp = layers[rootIdx]!;\n layers[rootIdx] = layers[newIdx]!;\n layers[newIdx] = temp;\n return true;\n }\n return false;\n}\n\nexport function insertLayerAt(\n layers: LayerNode[],\n targetId: string,\n node: LayerNode,\n position: \"before\" | \"after\",\n): boolean {\n for (const layer of layers) {\n const idx = layer.children.findIndex((c) => c.id === targetId);\n if (idx !== -1) {\n layer.children.splice(position === \"before\" ? idx : idx + 1, 0, node);\n return true;\n }\n if (insertLayerAt(layer.children, targetId, node, position)) return true;\n }\n const rootIdx = layers.findIndex((l) => l.id === targetId);\n if (rootIdx !== -1) {\n layers.splice(position === \"before\" ? rootIdx : rootIdx + 1, 0, node);\n return true;\n }\n return false;\n}\n\nexport function removeFromTree(layers: LayerNode[], id: string): LayerNode | null {\n for (let i = 0; i < layers.length; i++) {\n if (layers[i]!.id === id) {\n return layers.splice(i, 1)[0]!;\n }\n const found = removeFromTree(layers[i]!.children, id);\n if (found) return found;\n }\n return null;\n}\n\nexport function isLayerEffectivelyVisible(\n target: LayerNode,\n rootLayers: LayerNode[],\n): boolean {\n if (!target.visible) return false;\n const path = findPathToLayer(rootLayers, target.id);\n return path.every((l) => l.visible);\n}\n\nexport function isLayerSoloVisible(\n targetId: string,\n soloLayerIds: readonly string[],\n rootLayers: LayerNode[],\n): boolean {\n if (soloLayerIds.length === 0) return true;\n\n if (soloLayerIds.includes(targetId)) return true;\n\n for (const soloId of soloLayerIds) {\n const soloNode = findLayerById(rootLayers, soloId);\n if (soloNode && findLayerById(soloNode.children, targetId)) return true;\n }\n\n for (const soloId of soloLayerIds) {\n const path = findPathToLayer(rootLayers, soloId);\n if (path.some((l) => l.id === targetId)) return true;\n }\n\n return false;\n}\n","import { GEOMETRY } from \"./constants\";\nimport type { MeshData } from \"./types\";\n\nexport function generateGridMesh(\n width: number,\n height: number,\n divisionsX: number,\n divisionsY: number,\n): MeshData {\n const cols = Math.max(1, Math.round(divisionsX));\n const rows = Math.max(1, Math.round(divisionsY));\n const vertCount = (cols + 1) * (rows + 1);\n\n const vertices: number[] = new Array(vertCount * GEOMETRY.COORD_STRIDE);\n const uvs: number[] = new Array(vertCount * GEOMETRY.COORD_STRIDE);\n const indices: number[] = new Array(cols * rows * 6);\n\n let vi = 0;\n for (let r = 0; r <= rows; r++) {\n const ty = r / rows;\n for (let c = 0; c <= cols; c++) {\n const tx = c / cols;\n vertices[vi] = tx * width;\n vertices[vi + 1] = ty * height;\n uvs[vi] = tx;\n uvs[vi + 1] = ty;\n vi += 2;\n }\n }\n\n let ii = 0;\n for (let r = 0; r < rows; r++) {\n for (let c = 0; c < cols; c++) {\n const tl = r * (cols + 1) + c;\n const tr = tl + 1;\n const bl = tl + (cols + 1);\n const br = bl + 1;\n indices[ii++] = tl;\n indices[ii++] = bl;\n indices[ii++] = tr;\n indices[ii++] = tr;\n indices[ii++] = bl;\n indices[ii++] = br;\n }\n }\n\n return { vertices, uvs, indices, divisionsX: cols, divisionsY: rows };\n}\n\nexport function meshDataToTypedArrays(mesh: MeshData): {\n vertices: Float32Array;\n uvs: Float32Array;\n indices: Uint32Array;\n} {\n return {\n vertices: new Float32Array(mesh.vertices),\n uvs: new Float32Array(mesh.uvs),\n indices: new Uint32Array(mesh.indices),\n };\n}\n","import type { Affine2D } from \"./bone-utils\";\nimport type { IKBoneConstraint, IKController } from \"./types\";\n\nexport interface IKSolution {\n /** Final absolute bone angles keyed by bone id. */\n solvedAngles: Map<string, number>;\n /** Whether the solver reached the target within the configured tolerance. */\n reached: boolean;\n}\n\nexport function normalizeIKAngle(angle: number): number {\n angle = angle % (2 * Math.PI);\n if (angle >= Math.PI) angle -= 2 * Math.PI;\n if (angle < -Math.PI) angle += 2 * Math.PI;\n return angle;\n}\n\nexport function clampIKAngle(angle: number, min: number, max: number): number {\n const normalized = normalizeIKAngle(angle);\n if (normalized < min) return min;\n if (normalized > max) return max;\n return normalized;\n}\n\nexport function solveTwoBoneIK(\n rootX: number,\n rootY: number,\n len1: number,\n len2: number,\n targetX: number,\n targetY: number,\n poleX?: number,\n poleY?: number,\n constraints?: [IKBoneConstraint, IKBoneConstraint],\n): [number, number] {\n const dx = targetX - rootX;\n const dy = targetY - rootY;\n const dist = Math.sqrt(dx * dx + dy * dy);\n\n const angleToTarget = Math.atan2(dy, dx);\n\n if (dist >= len1 + len2) {\n const angle1 = angleToTarget;\n const angle2 = angleToTarget;\n return applyTwoBoneConstraints(angle1, angle2, constraints);\n }\n\n if (dist <= Math.abs(len1 - len2)) {\n const angle1 = angleToTarget;\n const angle2 = angleToTarget + Math.PI;\n return applyTwoBoneConstraints(angle1, angle2, constraints);\n }\n\n const cosAngle1 = (len1 * len1 + dist * dist - len2 * len2) / (2 * len1 * dist);\n const clampedCos1 = Math.max(-1, Math.min(1, cosAngle1));\n let innerAngle1 = Math.acos(clampedCos1);\n\n if (poleX !== undefined && poleY !== undefined) {\n const poleDx = poleX - rootX;\n const poleDy = poleY - rootY;\n const cross = dx * poleDy - dy * poleDx;\n if (cross < 0) {\n innerAngle1 = -innerAngle1;\n }\n }\n\n const angle1 = angleToTarget + innerAngle1;\n\n const jointX = rootX + len1 * Math.cos(angle1);\n const jointY = rootY + len1 * Math.sin(angle1);\n\n const angle2 = Math.atan2(targetY - jointY, targetX - jointX);\n\n return applyTwoBoneConstraints(angle1, angle2, constraints);\n}\n\nfunction applyTwoBoneConstraints(\n angle1: number,\n angle2: number,\n constraints?: [IKBoneConstraint, IKBoneConstraint],\n): [number, number] {\n if (!constraints) return [angle1, angle2];\n return [\n clampIKAngle(angle1, constraints[0].minAngle, constraints[0].maxAngle),\n clampIKAngle(angle2, constraints[1].minAngle, constraints[1].maxAngle),\n ];\n}\n\nexport interface CCDBoneInput {\n id: string;\n /** Bone origin in world space. */\n worldX: number;\n /** Bone origin in world space. */\n worldY: number;\n /** Current absolute angle in radians. */\n angle: number;\n /** Bone length in world-space units. */\n length: number;\n /** Per-bone angle limits. */\n constraint: IKBoneConstraint;\n}\n\n/** Solves an arbitrary IK chain with cyclic coordinate descent. */\nexport function solveCCDIK(\n bones: CCDBoneInput[],\n targetX: number,\n targetY: number,\n maxIterations = 10,\n tolerance = 0.5,\n): IKSolution {\n if (bones.length === 0) {\n return { solvedAngles: new Map(), reached: false };\n }\n\n const angles = bones.map((b) => b.angle);\n const positions = bones.map((b) => ({ x: b.worldX, y: b.worldY }));\n\n const computeEndEffector = (): { x: number; y: number } => {\n const last = bones.length - 1;\n return {\n x: positions[last]!.x + bones[last]!.length * Math.cos(angles[last]!),\n y: positions[last]!.y + bones[last]!.length * Math.sin(angles[last]!),\n };\n };\n\n const updatePositions = () => {\n for (let i = 1; i < bones.length; i++) {\n const prev = i - 1;\n positions[i]!.x =\n positions[prev]!.x + bones[prev]!.length * Math.cos(angles[prev]!);\n positions[i]!.y =\n positions[prev]!.y + bones[prev]!.length * Math.sin(angles[prev]!);\n }\n };\n\n let reached = false;\n\n for (let iter = 0; iter < maxIterations; iter++) {\n for (let i = bones.length - 1; i >= 0; i--) {\n const endEffector = computeEndEffector();\n\n const toEnd = Math.atan2(\n endEffector.y - positions[i]!.y,\n endEffector.x - positions[i]!.x,\n );\n const toTarget = Math.atan2(targetY - positions[i]!.y, targetX - positions[i]!.x);\n\n const deltaAngle = normalizeIKAngle(toTarget - toEnd);\n angles[i] = angles[i]! + deltaAngle;\n\n angles[i] = clampIKAngle(\n angles[i]!,\n bones[i]!.constraint.minAngle,\n bones[i]!.constraint.maxAngle,\n );\n\n updatePositions();\n }\n\n const ee = computeEndEffector();\n const dist = Math.sqrt((ee.x - targetX) ** 2 + (ee.y - targetY) ** 2);\n if (dist < tolerance) {\n reached = true;\n break;\n }\n }\n\n const solvedAngles = new Map<string, number>();\n for (let i = 0; i < bones.length; i++) {\n solvedAngles.set(bones[i]!.id, angles[i]!);\n }\n\n return { solvedAngles, reached };\n}\n\nexport function buildCCDBoneInputs(\n controller: IKController,\n worldTransforms: Map<string, Affine2D>,\n boneLengths: Map<string, number>,\n): CCDBoneInput[] {\n return controller.boneChain.map((bc) => {\n const wt = worldTransforms.get(bc.boneId);\n const wx = wt ? wt[4] : 0;\n const wy = wt ? wt[5] : 0;\n const angle = wt ? Math.atan2(wt[1], wt[0]) : 0;\n const length = boneLengths.get(bc.boneId) ?? 0;\n return {\n id: bc.boneId,\n worldX: wx,\n worldY: wy,\n angle,\n length,\n constraint: bc,\n };\n });\n}\n\nexport function solveIKController(\n controller: IKController,\n worldTransforms: Map<string, Affine2D>,\n boneLengths: Map<string, number>,\n): IKSolution {\n const { targetX, targetY, influence } = controller;\n\n if (influence <= 0 || controller.boneChain.length === 0) {\n return { solvedAngles: new Map(), reached: false };\n }\n\n if (controller.solverType === \"twoBone\" && controller.boneChain.length === 2) {\n const bone0 = controller.boneChain[0]!;\n const bone1 = controller.boneChain[1]!;\n const wt0 = worldTransforms.get(bone0.boneId);\n const rootX = wt0 ? wt0[4] : 0;\n const rootY = wt0 ? wt0[5] : 0;\n const len1 = boneLengths.get(bone0.boneId) ?? 0;\n const len2 = boneLengths.get(bone1.boneId) ?? 0;\n\n const [a1, a2] = solveTwoBoneIK(\n rootX,\n rootY,\n len1,\n len2,\n targetX,\n targetY,\n controller.poleTargetX,\n controller.poleTargetY,\n [bone0, bone1],\n );\n\n const solvedAngles = new Map<string, number>();\n\n solvedAngles.set(bone0.boneId, a1);\n solvedAngles.set(bone1.boneId, a2);\n\n const dist = Math.sqrt((targetX - rootX) ** 2 + (targetY - rootY) ** 2);\n const reached = dist >= Math.abs(len1 - len2) && dist <= len1 + len2;\n\n return { solvedAngles, reached };\n }\n\n // Fall back to CCD for chains that are not the dedicated two-bone case.\n const inputs = buildCCDBoneInputs(controller, worldTransforms, boneLengths);\n const result = solveCCDIK(inputs, targetX, targetY, controller.maxIterations ?? 10);\n\n return result;\n}\n\nexport function mapIKToParameters(\n controller: IKController,\n solution: IKSolution,\n): Record<string, number> {\n const params: Record<string, number> = {};\n for (const mapping of controller.parameterMappings) {\n const solvedAngle = solution.solvedAngles.get(mapping.boneId);\n if (solvedAngle === undefined) continue;\n\n const angleRange = mapping.angleMax - mapping.angleMin;\n if (Math.abs(angleRange) < 1e-10) continue;\n\n const t = (normalizeIKAngle(solvedAngle) - mapping.angleMin) / angleRange;\n const clamped = Math.max(0, Math.min(1, t));\n params[mapping.parameterId] =\n mapping.paramMin + clamped * (mapping.paramMax - mapping.paramMin);\n }\n return params;\n}\n","import { computeBoneWorldTransforms } from \"../bone-utils\";\nimport { clampIKAngle, normalizeIKAngle, solveIKController } from \"../ik-solver\";\nimport type {\n IKBoneConstraint,\n IKController,\n LayerNode,\n ProjectData,\n} from \"../types\";\n\nexport interface IKStepContext {\n project: ProjectData;\n boneLengths: Map<string, number>;\n boneAngles: Record<string, number>;\n boneX?: Record<string, number>;\n boneY?: Record<string, number>;\n boneScaleX?: Record<string, number>;\n boneScaleY?: Record<string, number>;\n ikTargetX?: Record<string, number>;\n ikTargetY?: Record<string, number>;\n ikPoleTargetX?: Record<string, number>;\n ikPoleTargetY?: Record<string, number>;\n ikInfluence?: Record<string, number>;\n}\n\nexport function runIKStep(ctx: IKStepContext): void {\n const controllers = ctx.project.ikControllers;\n if (!controllers || controllers.length === 0) return;\n\n const boneParents = collectBoneParents(ctx.project.layers);\n const poseLayers = createIKPoseLayers(ctx);\n const worldTransforms = computeBoneWorldTransforms(poseLayers);\n const boneLocalAngles = collectBoneLocalAngles(poseLayers);\n\n for (const controller of controllers) {\n const effectiveController = applyControllerBindingOverrides(controller, ctx);\n if (effectiveController.influence <= 0) continue;\n const constraints = collectIKConstraints(effectiveController);\n const result = solveIKController(\n effectiveController,\n worldTransforms,\n ctx.boneLengths,\n );\n\n for (const [boneId, angle] of result.solvedAngles) {\n const currentAngle = ctx.boneAngles[boneId] ?? boneLocalAngles.get(boneId) ?? 0;\n const unconstrainedLocalAngle = solvedWorldAngleToLocal(\n boneId,\n angle,\n result.solvedAngles,\n worldTransforms,\n boneParents,\n );\n const constraint = constraints.get(boneId);\n const localSolvedAngle = constraint\n ? clampIKAngle(\n unconstrainedLocalAngle,\n constraint.minAngle,\n constraint.maxAngle,\n )\n : unconstrainedLocalAngle;\n ctx.boneAngles[boneId] =\n currentAngle * (1 - effectiveController.influence) +\n localSolvedAngle * effectiveController.influence;\n }\n }\n}\n\nfunction collectIKConstraints(\n controller: IKController,\n): Map<string, IKBoneConstraint> {\n return new Map(\n controller.boneChain.map((constraint) => [constraint.boneId, constraint]),\n );\n}\n\nfunction collectBoneParents(layers: readonly LayerNode[]): Map<string, string | null> {\n const parents = new Map<string, string | null>();\n const visit = (nodes: readonly LayerNode[]): void => {\n for (const node of nodes) {\n if (node.kind === \"bone\") {\n parents.set(node.id, node.parentBoneId ?? null);\n }\n if (node.children.length > 0) visit(node.children);\n }\n };\n visit(layers);\n return parents;\n}\n\nfunction collectBoneLocalAngles(layers: readonly LayerNode[]): Map<string, number> {\n const angles = new Map<string, number>();\n const visit = (nodes: readonly LayerNode[]): void => {\n for (const node of nodes) {\n if (node.kind === \"bone\") {\n angles.set(node.id, node.bone.angle);\n }\n if (node.children.length > 0) visit(node.children);\n }\n };\n visit(layers);\n return angles;\n}\n\nfunction hasBonePoseOverrides(ctx: IKStepContext): boolean {\n return (\n Object.keys(ctx.boneAngles).length > 0 ||\n Object.keys(ctx.boneX ?? {}).length > 0 ||\n Object.keys(ctx.boneY ?? {}).length > 0 ||\n Object.keys(ctx.boneScaleX ?? {}).length > 0 ||\n Object.keys(ctx.boneScaleY ?? {}).length > 0\n );\n}\n\nfunction createIKPoseLayers(ctx: IKStepContext): LayerNode[] {\n if (!hasBonePoseOverrides(ctx)) return ctx.project.layers;\n return ctx.project.layers.map((layer) => cloneLayerWithBoneOverrides(layer, ctx));\n}\n\nfunction cloneLayerWithBoneOverrides(\n node: LayerNode,\n ctx: IKStepContext,\n): LayerNode {\n const children = node.children.map((child) =>\n cloneLayerWithBoneOverrides(child, ctx),\n );\n if (node.kind !== \"bone\") {\n return { ...node, children } as LayerNode;\n }\n\n const next = { ...node, children, bone: { ...node.bone } };\n const x = ctx.boneX?.[node.id];\n if (x !== undefined) next.x = x;\n const y = ctx.boneY?.[node.id];\n if (y !== undefined) next.y = y;\n const angle = ctx.boneAngles[node.id];\n if (angle !== undefined) next.bone.angle = angle;\n const scaleX = ctx.boneScaleX?.[node.id];\n if (scaleX !== undefined) next.bone.scaleX = scaleX;\n const scaleY = ctx.boneScaleY?.[node.id];\n if (scaleY !== undefined) next.bone.scaleY = scaleY;\n return next;\n}\n\nfunction worldAngleOf(transform: readonly number[] | undefined): number {\n return transform ? Math.atan2(transform[1]!, transform[0]!) : 0;\n}\n\nfunction solvedWorldAngleToLocal(\n boneId: string,\n solvedWorldAngle: number,\n solvedWorldAngles: ReadonlyMap<string, number>,\n worldTransforms: ReadonlyMap<string, readonly number[]>,\n boneParents: ReadonlyMap<string, string | null>,\n): number {\n const parentId = boneParents.get(boneId);\n if (!parentId) return normalizeIKAngle(solvedWorldAngle);\n\n const parentWorldAngle =\n solvedWorldAngles.get(parentId) ?? worldAngleOf(worldTransforms.get(parentId));\n return normalizeIKAngle(solvedWorldAngle - parentWorldAngle);\n}\n\nfunction applyControllerBindingOverrides(\n controller: IKController,\n ctx: IKStepContext,\n): IKController {\n const targetX = ctx.ikTargetX?.[controller.id];\n const targetY = ctx.ikTargetY?.[controller.id];\n const poleTargetX = ctx.ikPoleTargetX?.[controller.id];\n const poleTargetY = ctx.ikPoleTargetY?.[controller.id];\n const influence = ctx.ikInfluence?.[controller.id];\n\n if (\n targetX === undefined &&\n targetY === undefined &&\n poleTargetX === undefined &&\n poleTargetY === undefined &&\n influence === undefined\n ) {\n return controller;\n }\n\n return {\n ...controller,\n targetX: targetX ?? controller.targetX,\n targetY: targetY ?? controller.targetY,\n poleTargetX: poleTargetX ?? controller.poleTargetX,\n poleTargetY: poleTargetY ?? controller.poleTargetY,\n influence:\n influence === undefined\n ? controller.influence\n : Math.max(0, Math.min(1, influence)),\n };\n}\n","import { PHYSICS_DEFAULTS } from \"./constants\";\nimport type {\n ParameterDefinition,\n PendulumConfig,\n PendulumState,\n PhysicsGroup,\n PhysicsInput,\n PhysicsOutput,\n} from \"./types\";\n\nexport function createPhysicsRuntimeState(group: PhysicsGroup): PendulumState[] {\n return group.pendulums.map(() => ({ angle: 0, angularVelocity: 0 }));\n}\n\nexport function computeInputForces(\n inputs: PhysicsInput[],\n currentValues: Record<string, number>,\n previousValues: Record<string, number>,\n): { x: number; y: number } {\n let x = 0;\n let y = 0;\n\n for (const input of inputs) {\n const current = currentValues[input.parameterId] ?? 0;\n const previous = previousValues[input.parameterId] ?? 0;\n const delta = (current - previous) * input.weight;\n\n switch (input.type) {\n case \"x\":\n x += delta;\n break;\n case \"y\":\n y += delta;\n break;\n case \"angle\":\n x += delta;\n break;\n }\n }\n\n return { x, y };\n}\n\nexport function stepPhysicsGroup(\n group: PhysicsGroup,\n states: PendulumState[],\n inputForces: { x: number; y: number },\n dt: number,\n): void {\n const gravRad = (group.gravityDirection * Math.PI) / 180;\n const gravX = Math.sin(gravRad) * group.gravityStrength;\n const gravY = Math.cos(gravRad) * group.gravityStrength;\n\n for (let i = 0; i < group.pendulums.length; i++) {\n const config = group.pendulums[i];\n const state = states[i];\n if (!config || !state) continue;\n\n const armX = Math.sin(state.angle);\n const armY = Math.cos(state.angle);\n\n let forceX = gravX + group.wind;\n let forceY = gravY;\n\n if (i === 0) {\n forceX += inputForces.x;\n forceY += inputForces.y;\n } else {\n const parentState = states[i - 1];\n if (parentState) {\n forceX +=\n parentState.angularVelocity *\n config.length *\n PHYSICS_DEFAULTS.FORCE_PROPAGATION;\n }\n }\n\n const torque = forceX * armY - forceY * armX;\n\n const massLength = config.mass * config.length;\n const angularAcceleration = massLength > 0 ? torque / massLength : 0;\n\n state.angularVelocity += angularAcceleration * dt;\n\n state.angularVelocity *= 1 - config.damping;\n\n state.angle += state.angularVelocity * dt;\n\n if (state.angle > PHYSICS_DEFAULTS.MAX_ANGLE) {\n state.angle = PHYSICS_DEFAULTS.MAX_ANGLE;\n state.angularVelocity = 0;\n } else if (state.angle < -PHYSICS_DEFAULTS.MAX_ANGLE) {\n state.angle = -PHYSICS_DEFAULTS.MAX_ANGLE;\n state.angularVelocity = 0;\n }\n }\n}\n\nexport interface PhysicsOutputResult {\n parameters: Record<string, number>;\n bones: Record<string, number>;\n}\n\nexport function computeOutputValues(\n outputs: PhysicsOutput[],\n states: PendulumState[],\n parameterDefs: ParameterDefinition[],\n): PhysicsOutputResult {\n const parameters: Record<string, number> = {};\n const bones: Record<string, number> = {};\n const paramMap = new Map(parameterDefs.map((p) => [p.id, p]));\n\n for (const output of outputs) {\n if (output.pendulumIndex < 0 || output.pendulumIndex >= states.length) continue;\n\n const state = states[output.pendulumIndex];\n if (!state) continue;\n const rawValue = state.angle * output.weight;\n\n if (output.type === \"boneAngle\" && output.boneId) {\n bones[output.boneId] = rawValue;\n } else if (output.parameterId) {\n let value = rawValue;\n const def = paramMap.get(output.parameterId);\n if (def) {\n value += def.defaultValue;\n value = Math.max(def.minValue, Math.min(def.maxValue, value));\n }\n parameters[output.parameterId] = value;\n }\n }\n\n return { parameters, bones };\n}\n\nexport function runPhysicsFrame(\n group: PhysicsGroup,\n states: PendulumState[],\n inputForces: { x: number; y: number },\n deltaTime: number,\n accumulator: number,\n): number {\n accumulator += deltaTime;\n\n let substeps = 0;\n while (\n accumulator >= PHYSICS_DEFAULTS.TIMESTEP &&\n substeps < PHYSICS_DEFAULTS.MAX_SUBSTEPS\n ) {\n stepPhysicsGroup(group, states, inputForces, PHYSICS_DEFAULTS.TIMESTEP);\n accumulator -= PHYSICS_DEFAULTS.TIMESTEP;\n substeps++;\n }\n\n if (accumulator > PHYSICS_DEFAULTS.TIMESTEP * PHYSICS_DEFAULTS.MAX_SUBSTEPS) {\n accumulator = 0;\n }\n\n return accumulator;\n}\n\nexport function resetPendulumStates(states: PendulumState[]): void {\n for (const state of states) {\n state.angle = 0;\n state.angularVelocity = 0;\n }\n}\n\nexport function createDefaultPendulum(): PendulumConfig {\n return {\n length: PHYSICS_DEFAULTS.PENDULUM_LENGTH,\n mass: PHYSICS_DEFAULTS.PENDULUM_MASS,\n damping: PHYSICS_DEFAULTS.DAMPING,\n };\n}\n","import {\n computeInputForces,\n computeOutputValues,\n runPhysicsFrame,\n} from \"../physics-engine\";\nimport type { PendulumState, ProjectData } from \"../types\";\n\nexport interface PhysicsStepContext {\n project: ProjectData;\n parameterValues: Record<string, number>;\n prevParamValues: Record<string, number>;\n physicsStates: Map<string, PendulumState[]>;\n physicsAccumulators: Map<string, number>;\n boneAngles: Record<string, number>;\n}\n\nexport function runPhysicsStep(ctx: PhysicsStepContext, deltaTime: number): void {\n for (const group of ctx.project.physicsGroups) {\n if (!group.enabled) continue;\n const states = ctx.physicsStates.get(group.id);\n if (!states) continue;\n\n const forces = computeInputForces(\n group.inputs,\n ctx.parameterValues,\n ctx.prevParamValues,\n );\n\n const accumulator = ctx.physicsAccumulators.get(group.id) ?? 0;\n const newAccumulator = runPhysicsFrame(group, states, forces, deltaTime, accumulator);\n ctx.physicsAccumulators.set(group.id, newAccumulator);\n\n const output = computeOutputValues(group.outputs, states, ctx.project.parameters);\n for (const [paramId, value] of Object.entries(output.parameters)) {\n (ctx.parameterValues as Record<string, number>)[paramId] = value;\n }\n for (const [boneId, angle] of Object.entries(output.bones)) {\n ctx.boneAngles[boneId] = (ctx.boneAngles[boneId] ?? 0) + angle;\n }\n }\n}\n","import type { ParameterBinding, ParameterBindingPoint } from \"./types\";\n\nexport function interpolateBindingPoints(\n bindingPoints: ParameterBindingPoint[],\n paramValue: number,\n defaultValue: number,\n): number {\n if (bindingPoints.length === 0) return defaultValue;\n if (bindingPoints.length === 1) return bindingPoints[0]!.targetValue;\n\n const first = bindingPoints[0]!;\n const last = bindingPoints[bindingPoints.length - 1]!;\n\n if (paramValue <= first.paramValue) return first.targetValue;\n if (paramValue >= last.paramValue) return last.targetValue;\n\n for (let i = 0; i < bindingPoints.length - 1; i++) {\n const a = bindingPoints[i]!;\n const b = bindingPoints[i + 1]!;\n if (paramValue >= a.paramValue && paramValue <= b.paramValue) {\n const t = (paramValue - a.paramValue) / (b.paramValue - a.paramValue);\n return a.targetValue + (b.targetValue - a.targetValue) * t;\n }\n }\n\n return defaultValue;\n}\n\nexport function evaluateBindingsAdditive(\n bindings: ParameterBinding[],\n parameterValues: Record<string, number>,\n defaultValue: number,\n): number {\n let sum = 0;\n for (const binding of bindings) {\n const paramValue = parameterValues[binding.parameterId] ?? 0;\n const evaluated = interpolateBindingPoints(\n binding.bindingPoints,\n paramValue,\n defaultValue,\n );\n sum += evaluated - defaultValue;\n }\n return defaultValue + sum;\n}\n","import type { ParameterDefinition } from \"./types\";\n\nexport interface MergeParameterDefaultsOptions {\n allowUnknown?: boolean;\n clampKnown?: boolean;\n rejectInvalid?: boolean;\n}\n\nexport interface ClampFiniteNumberOptions {\n label: string;\n max: number;\n min: number;\n}\n\nexport function clampFiniteNumber(\n value: number,\n options: ClampFiniteNumberOptions,\n): number {\n if (!Number.isFinite(value)) {\n throw new TypeError(`${options.label} must be finite`);\n }\n return Math.max(options.min, Math.min(options.max, value));\n}\n\nexport function mergeParameterDefaults(\n parameters: readonly ParameterDefinition[],\n overrides: Readonly<Record<string, number>>,\n options: MergeParameterDefaultsOptions = {},\n): Record<string, number> {\n const merged: Record<string, number> = {};\n const definitions = new Map<string, ParameterDefinition>();\n const allowUnknown = options.allowUnknown ?? true;\n const clampKnown = options.clampKnown ?? false;\n for (const param of parameters) {\n definitions.set(param.id, param);\n merged[param.id] = param.defaultValue;\n }\n for (const [id, value] of Object.entries(overrides)) {\n const definition = definitions.get(id);\n if (!definition) {\n if (allowUnknown) merged[id] = value;\n continue;\n }\n if (!Number.isFinite(value)) {\n if (options.rejectInvalid) {\n throw new TypeError(`initial parameter must be finite: ${id}`);\n }\n merged[id] = value;\n continue;\n }\n merged[id] = clampKnown\n ? Math.max(definition.minValue, Math.min(definition.maxValue, value))\n : value;\n }\n return merged;\n}\n","import type { Affine2D } from \"./bone-utils\";\nimport { multiplyAffine } from \"./bone-utils\";\nimport type { SkinData, SkinWeight } from \"./types\";\n\nexport function computeSkinnedVertices(\n restVertices: number[],\n skin: SkinData,\n worldTransforms: Map<string, Affine2D>,\n): number[] {\n const vertexCount = restVertices.length / 2;\n const result = new Array<number>(restVertices.length).fill(0);\n\n for (let vi = 0; vi < vertexCount; vi++) {\n const rx = restVertices[vi * 2]!;\n const ry = restVertices[vi * 2 + 1]!;\n const vertexWeights = skin.weights[vi];\n\n if (!vertexWeights || vertexWeights.length === 0) {\n result[vi * 2] = rx;\n result[vi * 2 + 1] = ry;\n continue;\n }\n\n let sumX = 0;\n let sumY = 0;\n let appliedWeight = 0;\n\n for (const sw of vertexWeights) {\n const world = worldTransforms.get(sw.boneId);\n const bindInv = skin.bindPoseInverse[sw.boneId];\n if (!world || !bindInv) continue;\n\n const skinMatrix = multiplyAffine(world, bindInv);\n\n const tx = skinMatrix[0] * rx + skinMatrix[2] * ry + skinMatrix[4];\n const ty = skinMatrix[1] * rx + skinMatrix[3] * ry + skinMatrix[5];\n\n sumX += tx * sw.weight;\n sumY += ty * sw.weight;\n appliedWeight += sw.weight;\n }\n\n if (appliedWeight <= 1e-12) {\n result[vi * 2] = rx;\n result[vi * 2 + 1] = ry;\n continue;\n }\n\n // Malformed or partially remapped skins should not collapse the source image.\n if (appliedWeight < 1) {\n const restWeight = 1 - appliedWeight;\n sumX += rx * restWeight;\n sumY += ry * restWeight;\n }\n\n result[vi * 2] = sumX;\n result[vi * 2 + 1] = sumY;\n }\n\n return result;\n}\n\nexport function normalizeWeights(\n weights: { boneId: string; weight: number }[],\n): { boneId: string; weight: number }[] {\n const total = weights.reduce((sum, w) => sum + w.weight, 0);\n if (total < 1e-12) return weights;\n return weights.map((w) => ({ boneId: w.boneId, weight: w.weight / total }));\n}\n\nexport interface BonePosition {\n id: string;\n x: number;\n y: number;\n}\n\nexport function computeDistanceWeights(\n vertices: number[],\n bones: BonePosition[],\n): SkinWeight[][] {\n const vertexCount = vertices.length / 2;\n if (bones.length === 0) {\n return Array.from({ length: vertexCount }, () => []);\n }\n\n const result: SkinWeight[][] = [];\n for (let vi = 0; vi < vertexCount; vi++) {\n const vx = vertices[vi * 2]!;\n const vy = vertices[vi * 2 + 1]!;\n\n const weights: SkinWeight[] = [];\n let totalInvDist = 0;\n\n for (const bone of bones) {\n const dx = vx - bone.x;\n const dy = vy - bone.y;\n const dist = Math.sqrt(dx * dx + dy * dy);\n const invDist = 1 / Math.max(dist, 0.001);\n weights.push({ boneId: bone.id, weight: invDist });\n totalInvDist += invDist;\n }\n\n if (totalInvDist > 0) {\n for (const w of weights) {\n w.weight /= totalInvDist;\n }\n }\n\n const filtered = weights.filter((w) => w.weight > 0.01);\n result.push(normalizeWeights(filtered));\n }\n\n return result;\n}\n\nexport function findVerticesInRadius(\n vertices: number[],\n cx: number,\n cy: number,\n radius: number,\n): { index: number; distance: number }[] {\n const result: { index: number; distance: number }[] = [];\n const vertexCount = vertices.length / 2;\n const r2 = radius * radius;\n\n for (let i = 0; i < vertexCount; i++) {\n const dx = vertices[i * 2]! - cx;\n const dy = vertices[i * 2 + 1]! - cy;\n const d2 = dx * dx + dy * dy;\n if (d2 <= r2) {\n result.push({ index: i, distance: Math.sqrt(d2) });\n }\n }\n\n return result;\n}\n\nexport function smoothWeights(\n weights: SkinWeight[][],\n indices: number[],\n iterations: number,\n): SkinWeight[][] {\n let current = weights.map((vw) => vw.map((w) => ({ ...w })));\n\n const adjacency = new Map<number, Set<number>>();\n for (let i = 0; i < indices.length; i += 3) {\n const a = indices[i]!;\n const b = indices[i + 1]!;\n const c = indices[i + 2]!;\n for (const [x, y] of [\n [a, b],\n [b, c],\n [c, a],\n ] as const) {\n if (!adjacency.has(x)) adjacency.set(x, new Set());\n if (!adjacency.has(y)) adjacency.set(y, new Set());\n adjacency.get(x)!.add(y);\n adjacency.get(y)!.add(x);\n }\n }\n\n for (let iter = 0; iter < iterations; iter++) {\n const next = current.map((vw) => vw.map((w) => ({ ...w })));\n\n for (let vi = 0; vi < current.length; vi++) {\n const neighbors = adjacency.get(vi);\n if (!neighbors || neighbors.size === 0) continue;\n\n const boneWeightMap = new Map<string, number>();\n const selfWeights = current[vi]!;\n for (const sw of selfWeights) {\n boneWeightMap.set(sw.boneId, (boneWeightMap.get(sw.boneId) ?? 0) + sw.weight);\n }\n for (const ni of neighbors) {\n for (const nw of current[ni]!) {\n boneWeightMap.set(nw.boneId, (boneWeightMap.get(nw.boneId) ?? 0) + nw.weight);\n }\n }\n\n const divisor = 1 + neighbors.size;\n const averaged: SkinWeight[] = [];\n for (const [boneId, totalW] of boneWeightMap) {\n const avg = totalW / divisor;\n if (avg > 0.01) averaged.push({ boneId, weight: avg });\n }\n next[vi] = normalizeWeights(averaged);\n }\n\n current = next;\n }\n\n return current;\n}\n","import { hitTestColliders, hitTestCollidersAll } from \"./collider\";\nimport type { Affine2D } from \"./bone-utils\";\nimport { computeBoneWorldTransforms } from \"./bone-utils\";\nimport { getDrawOrder, getMultiplyColor, isScreenColorDefault } from \"./color-utils\";\nimport { isPolygonFlipped } from \"./culling-utils\";\nimport { flattenLayers, isLayerEffectivelyVisible } from \"./layer-utils\";\nimport { meshDataToTypedArrays } from \"./mesh-utils\";\nimport { runIKStep } from \"./model/ik-step\";\nimport { runPhysicsStep } from \"./model/physics-step\";\nimport { evaluateBindingsAdditive } from \"./parameter-binding-eval\";\nimport { mergeParameterDefaults } from \"./parameter-utils\";\nimport { createPhysicsRuntimeState } from \"./physics-engine\";\nimport { parseViviFile } from \"./project-parser\";\nimport { VIVI_RUNTIME_ALLOWED_BINDING_TARGET_TYPES } from \"./runtime-spec\";\nimport { computeSkinnedVertices } from \"./skin-utils\";\nimport type {\n BoneBindingPropertyType,\n ColliderHitResult,\n IKControllerBindingPropertyType,\n LayerNode,\n MeshRenderState,\n PendulumState,\n ProjectData,\n ViviFileData,\n} from \"./types\";\n\nexport type { MeshRenderState } from \"./types\";\n\nexport interface PublicViviModelOptions {\n initialParameters?: Record<string, number>;\n}\n\ninterface MeshStaticCache {\n uvs: Float32Array;\n indices: Uint32Array;\n}\n\nconst PUBLIC_BINDING_TARGET_TYPES = new Set<string>(\n VIVI_RUNTIME_ALLOWED_BINDING_TARGET_TYPES,\n);\n\nfunction clonePhysicsStates(\n states: ReadonlyMap<string, PendulumState[]>,\n): Map<string, PendulumState[]> {\n const clone = new Map<string, PendulumState[]>();\n for (const [id, pendulums] of states) {\n clone.set(\n id,\n pendulums.map((state) => ({\n angle: state.angle,\n angularVelocity: state.angularVelocity,\n })),\n );\n }\n return clone;\n}\n\nfunction cloneFloat32Map(\n values: ReadonlyMap<string, Float32Array>,\n): Map<string, Float32Array> {\n const clone = new Map<string, Float32Array>();\n for (const [id, value] of values) {\n clone.set(id, new Float32Array(value));\n }\n return clone;\n}\n\nfunction cloneMeshStates(\n states: ReadonlyMap<string, MeshRenderState>,\n): Map<string, MeshRenderState> {\n const clone = new Map<string, MeshRenderState>();\n for (const [id, state] of states) {\n clone.set(id, {\n ...state,\n vertices: new Float32Array(state.vertices),\n uvs: new Float32Array(state.uvs),\n indices: new Uint32Array(state.indices),\n multiplyColor: { ...state.multiplyColor },\n screenColor: state.screenColor ? { ...state.screenColor } : undefined,\n });\n }\n return clone;\n}\n\nfunction replaceRecord(target: Record<string, number>, source: Record<string, number>) {\n for (const key of Object.keys(target)) {\n delete target[key];\n }\n Object.assign(target, source);\n}\n\nfunction replaceMap<K, V>(target: Map<K, V>, source: ReadonlyMap<K, V>): void {\n target.clear();\n for (const [key, value] of source) {\n target.set(key, value);\n }\n}\n\ninterface BoneLayerRuntimeSnapshot {\n x: number;\n y: number;\n angle: number;\n scaleX: number;\n scaleY: number;\n}\n\nexport interface PublicViviModelRuntimeSnapshot {\n parameterValues: Record<string, number>;\n prevParamValues: Record<string, number>;\n boneX: Record<string, number>;\n boneY: Record<string, number>;\n boneAngles: Record<string, number>;\n boneScaleX: Record<string, number>;\n boneScaleY: Record<string, number>;\n ikTargetX: Record<string, number>;\n ikTargetY: Record<string, number>;\n ikPoleTargetX: Record<string, number>;\n ikPoleTargetY: Record<string, number>;\n ikInfluence: Record<string, number>;\n physicsStates: Map<string, PendulumState[]>;\n physicsAccumulators: Map<string, number>;\n meshScratchVerts: Map<string, Float32Array>;\n meshStates: Map<string, MeshRenderState>;\n drawOrderCache: string[];\n boneLayers: Map<string, BoneLayerRuntimeSnapshot>;\n}\n\nexport class PublicViviModel {\n readonly project: ProjectData;\n readonly atlases: ViviFileData[\"atlases\"];\n readonly parameterValues: Record<string, number>;\n\n private allLayers: LayerNode[];\n private meshStaticCache: Map<string, MeshStaticCache> = new Map();\n private meshScratchVerts: Map<string, Float32Array> = new Map();\n private meshStates: Map<string, MeshRenderState> = new Map();\n private drawOrderScratch: { id: string; zIndex: number }[] = [];\n private drawOrderCache: string[] = [];\n private boneLengths: Map<string, number> = new Map();\n private boneBaseX: Record<string, number> = {};\n private boneBaseY: Record<string, number> = {};\n private boneX: Record<string, number> = {};\n private boneY: Record<string, number> = {};\n private boneAngles: Record<string, number> = {};\n private boneScaleX: Record<string, number> = {};\n private boneScaleY: Record<string, number> = {};\n private ikTargetX: Record<string, number> = {};\n private ikTargetY: Record<string, number> = {};\n private ikPoleTargetX: Record<string, number> = {};\n private ikPoleTargetY: Record<string, number> = {};\n private ikInfluence: Record<string, number> = {};\n private physicsStates: Map<string, PendulumState[]> = new Map();\n private physicsAccumulators: Map<string, number> = new Map();\n private prevParamValues: Record<string, number> = {};\n\n private constructor(\n project: ProjectData,\n atlases: ViviFileData[\"atlases\"],\n options?: PublicViviModelOptions,\n ) {\n this.project = project;\n this.atlases = atlases;\n this.allLayers = flattenLayers(project.layers ?? []);\n this.parameterValues = mergeParameterDefaults(\n project.parameters ?? [],\n options?.initialParameters ?? {},\n );\n this.rebuildStaticCaches();\n this.prevParamValues = { ...this.parameterValues };\n for (const group of project.physicsGroups ?? []) {\n if (!group.enabled) continue;\n this.physicsStates.set(group.id, createPhysicsRuntimeState(group));\n this.physicsAccumulators.set(group.id, 0);\n }\n this.update();\n }\n\n static fromJSON(json: string, options?: PublicViviModelOptions): PublicViviModel {\n const fileData = parseViviFile(json, { profile: \"publicProfileV1\" });\n return PublicViviModel.fromFileData(fileData, options);\n }\n\n static fromFileData(\n fileData: ViviFileData,\n options?: PublicViviModelOptions,\n ): PublicViviModel {\n return new PublicViviModel(fileData.project, fileData.atlases, options);\n }\n\n setParameter(id: string, value: number): void {\n const def = this.project.parameters.find((p) => p.id === id);\n if (!def) return;\n this.parameterValues[id] = Math.max(def.minValue, Math.min(def.maxValue, value));\n }\n\n setParameters(values: Record<string, number>): void {\n for (const [id, value] of Object.entries(values)) {\n this.setParameter(id, value);\n }\n }\n\n resetParameters(): void {\n for (const def of this.project.parameters) {\n this.parameterValues[def.id] = def.defaultValue;\n }\n }\n\n applyExpressionPreset(presetId: string): void {\n const preset = this.project.expressionPresets?.find((p) => p.id === presetId);\n if (!preset) return;\n this.setParameters(preset.values);\n }\n\n hitTest(worldX: number, worldY: number): ColliderHitResult | null {\n const colliders = this.project.colliders;\n if (!colliders || colliders.length === 0) return null;\n return hitTestColliders(colliders, this.meshStates, worldX, worldY);\n }\n\n hitTestAll(worldX: number, worldY: number): ColliderHitResult[] {\n const colliders = this.project.colliders;\n if (!colliders || colliders.length === 0) return [];\n return hitTestCollidersAll(colliders, this.meshStates, worldX, worldY);\n }\n\n update(deltaTime = 0): void {\n this.evaluatePublicParameterBindings();\n if (deltaTime > 0) {\n runPhysicsStep(\n {\n project: this.project,\n parameterValues: this.parameterValues,\n prevParamValues: this.prevParamValues,\n physicsStates: this.physicsStates,\n physicsAccumulators: this.physicsAccumulators,\n boneAngles: this.boneAngles,\n },\n deltaTime,\n );\n }\n runIKStep({\n project: this.project,\n boneLengths: this.boneLengths,\n boneAngles: this.boneAngles,\n boneX: this.boneX,\n boneY: this.boneY,\n boneScaleX: this.boneScaleX,\n boneScaleY: this.boneScaleY,\n ikTargetX: this.ikTargetX,\n ikTargetY: this.ikTargetY,\n ikPoleTargetX: this.ikPoleTargetX,\n ikPoleTargetY: this.ikPoleTargetY,\n ikInfluence: this.ikInfluence,\n });\n this.applyBoneOverrides();\n this.computeMeshStates();\n this.prevParamValues = { ...this.parameterValues };\n }\n\n createRuntimeSnapshot(): PublicViviModelRuntimeSnapshot {\n const boneLayers = new Map<string, BoneLayerRuntimeSnapshot>();\n for (const layer of this.allLayers) {\n if (layer.kind !== \"bone\") continue;\n boneLayers.set(layer.id, {\n x: layer.x,\n y: layer.y,\n angle: layer.bone.angle,\n scaleX: layer.bone.scaleX,\n scaleY: layer.bone.scaleY,\n });\n }\n\n return {\n parameterValues: { ...this.parameterValues },\n prevParamValues: { ...this.prevParamValues },\n boneX: { ...this.boneX },\n boneY: { ...this.boneY },\n boneAngles: { ...this.boneAngles },\n boneScaleX: { ...this.boneScaleX },\n boneScaleY: { ...this.boneScaleY },\n ikTargetX: { ...this.ikTargetX },\n ikTargetY: { ...this.ikTargetY },\n ikPoleTargetX: { ...this.ikPoleTargetX },\n ikPoleTargetY: { ...this.ikPoleTargetY },\n ikInfluence: { ...this.ikInfluence },\n physicsStates: clonePhysicsStates(this.physicsStates),\n physicsAccumulators: new Map(this.physicsAccumulators),\n meshScratchVerts: cloneFloat32Map(this.meshScratchVerts),\n meshStates: cloneMeshStates(this.meshStates),\n drawOrderCache: [...this.drawOrderCache],\n boneLayers,\n };\n }\n\n restoreRuntimeSnapshot(snapshot: PublicViviModelRuntimeSnapshot): void {\n const nextPhysicsStates = clonePhysicsStates(snapshot.physicsStates);\n const nextPhysicsAccumulators = new Map(snapshot.physicsAccumulators);\n const nextMeshScratchVerts = cloneFloat32Map(snapshot.meshScratchVerts);\n const nextMeshStates = cloneMeshStates(snapshot.meshStates);\n const nextDrawOrderCache = [...snapshot.drawOrderCache];\n const nextPrevParamValues = { ...snapshot.prevParamValues };\n const nextBoneX = { ...snapshot.boneX };\n const nextBoneY = { ...snapshot.boneY };\n const nextBoneAngles = { ...snapshot.boneAngles };\n const nextBoneScaleX = { ...snapshot.boneScaleX };\n const nextBoneScaleY = { ...snapshot.boneScaleY };\n const nextIkTargetX = { ...snapshot.ikTargetX };\n const nextIkTargetY = { ...snapshot.ikTargetY };\n const nextIkPoleTargetX = { ...snapshot.ikPoleTargetX };\n const nextIkPoleTargetY = { ...snapshot.ikPoleTargetY };\n const nextIkInfluence = { ...snapshot.ikInfluence };\n\n replaceRecord(this.parameterValues, snapshot.parameterValues);\n this.prevParamValues = nextPrevParamValues;\n this.boneX = nextBoneX;\n this.boneY = nextBoneY;\n this.boneAngles = nextBoneAngles;\n this.boneScaleX = nextBoneScaleX;\n this.boneScaleY = nextBoneScaleY;\n this.ikTargetX = nextIkTargetX;\n this.ikTargetY = nextIkTargetY;\n this.ikPoleTargetX = nextIkPoleTargetX;\n this.ikPoleTargetY = nextIkPoleTargetY;\n this.ikInfluence = nextIkInfluence;\n replaceMap(this.physicsStates, nextPhysicsStates);\n replaceMap(this.physicsAccumulators, nextPhysicsAccumulators);\n replaceMap(this.meshScratchVerts, nextMeshScratchVerts);\n replaceMap(this.meshStates, nextMeshStates);\n this.drawOrderCache.length = 0;\n this.drawOrderCache.push(...nextDrawOrderCache);\n\n for (const layer of this.allLayers) {\n if (layer.kind !== \"bone\") continue;\n const bone = snapshot.boneLayers.get(layer.id);\n if (!bone) continue;\n layer.x = bone.x;\n layer.y = bone.y;\n layer.bone.angle = bone.angle;\n layer.bone.scaleX = bone.scaleX;\n layer.bone.scaleY = bone.scaleY;\n }\n }\n\n getDrawOrder(): readonly string[] {\n return this.drawOrderCache;\n }\n\n getMeshState(meshId: string): MeshRenderState | undefined {\n return this.meshStates.get(meshId);\n }\n\n getAllMeshStates(): ReadonlyMap<string, MeshRenderState> {\n return this.meshStates;\n }\n\n get width(): number {\n return this.project.width;\n }\n\n get height(): number {\n return this.project.height;\n }\n\n private rebuildStaticCaches(): void {\n for (const layer of this.allLayers) {\n if (layer.kind === \"viviMesh\") {\n this.meshStaticCache.set(layer.id, {\n uvs: new Float32Array(layer.mesh.uvs),\n indices: new Uint32Array(layer.mesh.indices),\n });\n this.meshScratchVerts.set(layer.id, new Float32Array(layer.mesh.vertices.length));\n } else if (layer.kind === \"bone\") {\n this.boneLengths.set(layer.id, layer.bone.length);\n this.boneBaseX[layer.id] = layer.x;\n this.boneBaseY[layer.id] = layer.y;\n }\n }\n }\n\n private evaluatePublicParameterBindings(): void {\n const bindings = this.project.parameterBindings ?? [];\n if (bindings.length === 0) return;\n\n const groups = new Map<string, typeof bindings>();\n for (const binding of bindings) {\n if (!PUBLIC_BINDING_TARGET_TYPES.has(binding.target.type)) {\n continue;\n }\n const key =\n binding.target.type === \"bone\"\n ? `bone:${binding.target.boneId}:${binding.target.property}`\n : `ik:${binding.target.controllerId}:${binding.target.property}`;\n const group = groups.get(key);\n if (group) {\n group.push(binding);\n } else {\n groups.set(key, [binding]);\n }\n }\n\n for (const group of groups.values()) {\n const target = group[0]!.target;\n if (target.type === \"bone\") {\n const value = evaluateBindingsAdditive(\n group,\n this.parameterValues,\n this.getBoneBindingDefaultValue(target.boneId, target.property),\n );\n this.setBoneBindingValue(target.boneId, target.property, value);\n } else if (target.type === \"ikController\") {\n const value = evaluateBindingsAdditive(\n group,\n this.parameterValues,\n this.getIKBindingDefaultValue(target.controllerId, target.property),\n );\n this.setIKBindingValue(target.controllerId, target.property, value);\n }\n }\n }\n\n private getBoneBindingDefaultValue(\n boneId: string,\n property: BoneBindingPropertyType,\n ): number {\n if (property === \"x\") return this.boneBaseX[boneId] ?? 0;\n if (property === \"y\") return this.boneBaseY[boneId] ?? 0;\n if (property === \"angle\") return 0;\n return 1;\n }\n\n private setBoneBindingValue(\n boneId: string,\n property: BoneBindingPropertyType,\n value: number,\n ): void {\n if (property === \"x\") this.boneX[boneId] = value;\n else if (property === \"y\") this.boneY[boneId] = value;\n else if (property === \"angle\") this.boneAngles[boneId] = value;\n else if (property === \"scaleX\") this.boneScaleX[boneId] = value;\n else this.boneScaleY[boneId] = value;\n }\n\n private getIKBindingDefaultValue(\n controllerId: string,\n property: IKControllerBindingPropertyType,\n ): number {\n const controller = this.project.ikControllers?.find((c) => c.id === controllerId);\n if (!controller) return property === \"influence\" ? 1 : 0;\n if (property === \"targetX\") return controller.targetX;\n if (property === \"targetY\") return controller.targetY;\n if (property === \"poleTargetX\") return controller.poleTargetX ?? 0;\n if (property === \"poleTargetY\") return controller.poleTargetY ?? 0;\n return controller.influence;\n }\n\n private setIKBindingValue(\n controllerId: string,\n property: IKControllerBindingPropertyType,\n value: number,\n ): void {\n if (property === \"targetX\") this.ikTargetX[controllerId] = value;\n else if (property === \"targetY\") this.ikTargetY[controllerId] = value;\n else if (property === \"poleTargetX\") this.ikPoleTargetX[controllerId] = value;\n else if (property === \"poleTargetY\") this.ikPoleTargetY[controllerId] = value;\n else this.ikInfluence[controllerId] = Math.max(0, Math.min(1, value));\n }\n\n private applyBoneOverrides(): void {\n for (const layer of this.allLayers) {\n if (layer.kind !== \"bone\") continue;\n if (this.boneX[layer.id] !== undefined) layer.x = this.boneX[layer.id]!;\n if (this.boneY[layer.id] !== undefined) layer.y = this.boneY[layer.id]!;\n if (this.boneAngles[layer.id] !== undefined) {\n layer.bone.angle = this.boneAngles[layer.id]!;\n }\n if (this.boneScaleX[layer.id] !== undefined) {\n layer.bone.scaleX = this.boneScaleX[layer.id]!;\n }\n if (this.boneScaleY[layer.id] !== undefined) {\n layer.bone.scaleY = this.boneScaleY[layer.id]!;\n }\n }\n }\n\n private computeMeshStates(): void {\n const drawOrder = this.drawOrderScratch;\n drawOrder.length = 0;\n const worldTransforms = computeBoneWorldTransforms(this.project.layers);\n const processedIds = new Set<string>();\n\n for (const layer of this.allLayers) {\n if (layer.kind !== \"viviMesh\") continue;\n\n let scratch = this.meshScratchVerts.get(layer.id);\n if (!scratch || scratch.length !== layer.mesh.vertices.length) {\n scratch = new Float32Array(layer.mesh.vertices.length);\n this.meshScratchVerts.set(layer.id, scratch);\n }\n this.computeFinalVerticesInto(layer, worldTransforms, scratch);\n\n let staticData = this.meshStaticCache.get(layer.id);\n if (!staticData) {\n const typed = meshDataToTypedArrays(layer.mesh);\n staticData = { uvs: typed.uvs, indices: typed.indices };\n this.meshStaticCache.set(layer.id, staticData);\n }\n\n const zIndex = getDrawOrder(layer.drawOrder);\n const visible = isLayerEffectivelyVisible(layer, this.project.layers);\n const culled = layer.culling === true && visible && isPolygonFlipped(scratch);\n const isSkinned = this.project.skins?.[layer.id] !== undefined;\n const verticesSpace = isSkinned ? \"model\" : \"local\";\n this.meshStates.set(layer.id, {\n id: layer.id,\n vertices: new Float32Array(scratch),\n verticesSpace,\n uvs: staticData.uvs,\n indices: staticData.indices,\n x: isSkinned ? 0 : layer.x,\n y: isSkinned ? 0 : layer.y,\n opacity: layer.opacity,\n visible: visible && !culled,\n blendMode: layer.blendMode,\n multiplyColor: getMultiplyColor(layer.multiplyColor),\n screenColor: isScreenColorDefault(layer.screenColor)\n ? undefined\n : layer.screenColor,\n drawOrder: zIndex,\n culled,\n });\n processedIds.add(layer.id);\n drawOrder.push({ id: layer.id, zIndex });\n }\n\n if (this.meshStates.size !== processedIds.size) {\n for (const id of this.meshStates.keys()) {\n if (!processedIds.has(id)) this.meshStates.delete(id);\n }\n }\n\n drawOrder.sort((a, b) => a.zIndex - b.zIndex);\n this.drawOrderCache.length = drawOrder.length;\n for (let index = 0; index < drawOrder.length; index += 1) {\n this.drawOrderCache[index] = drawOrder[index]!.id;\n }\n }\n\n private computeFinalVerticesInto(\n layer: Extract<LayerNode, { kind: \"viviMesh\" }>,\n worldTransforms: Map<string, Affine2D>,\n out: Float32Array,\n ): void {\n const skin = this.project.skins?.[layer.id];\n const vertices = skin\n ? computeSkinnedVertices(layer.mesh.vertices, skin, worldTransforms)\n : layer.mesh.vertices;\n const length = Math.min(out.length, vertices.length);\n for (let index = 0; index < length; index += 1) {\n out[index] = vertices[index]!;\n }\n }\n}\n","export type ScriptCommand =\n | { type: \"setParam\"; parameterId: string; value: number }\n | { type: \"preset\"; presetId: string }\n | { type: \"presetByName\"; name: string }\n | { type: \"wait\"; ms: number }\n | { type: \"lerp\"; parameterId: string; from: number; to: number; duration: number }\n | { type: \"reset\" }\n | { type: \"loop\"; count: number; commands: ScriptCommand[] };\n\nexport interface ParsedScript {\n commands: ScriptCommand[];\n}\n\nexport interface ScriptRunnerState {\n running: boolean;\n cancelled: boolean;\n}\n\nexport interface ScriptModelAPI {\n setParameter(id: string, value: number): void;\n setParameters(values: Record<string, number>): void;\n resetParameters(): void;\n applyExpressionPreset(presetId: string): void;\n getPresetByName(name: string): string | null;\n getParameterId(nameOrId: string): string | null;\n update(dt?: number): void;\n}\n\nexport function parseScript(source: string): ParsedScript {\n const tokens = tokenize(source);\n const commands = parseTokens(tokens, 0, tokens.length);\n return { commands };\n}\n\nexport async function runScript(\n script: ParsedScript,\n api: ScriptModelAPI,\n state?: ScriptRunnerState,\n): Promise<void> {\n const s: ScriptRunnerState = state ?? { running: true, cancelled: false };\n s.running = true;\n s.cancelled = false;\n try {\n await executeCommands(script.commands, api, s);\n } finally {\n s.running = false;\n }\n}\n\nexport function cancelScript(state: ScriptRunnerState): void {\n state.cancelled = true;\n}\n\nasync function executeCommands(\n commands: ScriptCommand[],\n api: ScriptModelAPI,\n state: ScriptRunnerState,\n): Promise<void> {\n for (const cmd of commands) {\n if (state.cancelled) return;\n await executeCommand(cmd, api, state);\n }\n}\n\nasync function executeCommand(\n cmd: ScriptCommand,\n api: ScriptModelAPI,\n state: ScriptRunnerState,\n): Promise<void> {\n switch (cmd.type) {\n case \"setParam\":\n api.setParameter(cmd.parameterId, cmd.value);\n api.update();\n break;\n\n case \"preset\": {\n api.applyExpressionPreset(cmd.presetId);\n api.update();\n break;\n }\n\n case \"presetByName\": {\n const id = api.getPresetByName(cmd.name);\n if (id) {\n api.applyExpressionPreset(id);\n api.update();\n }\n break;\n }\n\n case \"wait\":\n await sleep(cmd.ms, state);\n break;\n\n case \"lerp\": {\n const steps = Math.max(1, Math.ceil(cmd.duration / 16));\n const stepMs = cmd.duration / steps;\n for (let i = 0; i <= steps; i++) {\n if (state.cancelled) return;\n const t = i / steps;\n const value = cmd.from + (cmd.to - cmd.from) * t;\n api.setParameter(cmd.parameterId, value);\n api.update();\n if (i < steps) await sleep(stepMs, state);\n }\n break;\n }\n\n case \"reset\":\n api.resetParameters();\n api.update();\n break;\n\n case \"loop\": {\n const count = cmd.count <= 0 ? Infinity : cmd.count;\n for (let i = 0; i < count; i++) {\n if (state.cancelled) return;\n await executeCommands(cmd.commands, api, state);\n }\n break;\n }\n }\n}\n\nconst MAX_TIMER_DELAY_MS = 2_147_483_647;\nconst CANCEL_POLL_MS = 50;\n\nfunction sleep(ms: number, state: ScriptRunnerState): Promise<void> {\n const waitMs = Math.max(0, Number.isFinite(ms) ? ms : 0);\n if (waitMs <= 0 || state.cancelled) return Promise.resolve();\n\n return new Promise((resolve) => {\n let elapsedMs = 0;\n let done = false;\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n let checkId: ReturnType<typeof setInterval> | undefined;\n\n const finish = () => {\n if (done) return;\n done = true;\n if (timeoutId !== undefined) clearTimeout(timeoutId);\n if (checkId !== undefined) clearInterval(checkId);\n resolve();\n };\n\n const scheduleNextTimeout = () => {\n const remainingMs = waitMs - elapsedMs;\n if (remainingMs <= 0) {\n finish();\n return;\n }\n const delayMs = Math.min(remainingMs, MAX_TIMER_DELAY_MS);\n timeoutId = setTimeout(() => {\n elapsedMs += delayMs;\n if (state.cancelled) {\n finish();\n return;\n }\n scheduleNextTimeout();\n }, delayMs);\n };\n\n checkId = setInterval(\n () => {\n if (state.cancelled) {\n finish();\n }\n },\n Math.min(CANCEL_POLL_MS, waitMs),\n );\n\n scheduleNextTimeout();\n });\n}\n\ntype Token =\n | { type: \"arrow\" }\n | { type: \"lparen\" }\n | { type: \"rparen\" }\n | { type: \"lbrace\" }\n | { type: \"rbrace\" }\n | { type: \"comma\" }\n | { type: \"number\"; value: number }\n | { type: \"string\"; value: string }\n | { type: \"ident\"; value: string };\n\nfunction tokenize(source: string): Token[] {\n const tokens: Token[] = [];\n let i = 0;\n const s = source.trim();\n\n while (i < s.length) {\n if (/\\s/.test(s[i]!)) {\n i++;\n continue;\n }\n\n if (\n s[i] === \"→\" ||\n (s[i] === \"-\" && s[i + 1] === \">\") ||\n (s[i] === \"=\" && s[i + 1] === \">\")\n ) {\n tokens.push({ type: \"arrow\" });\n i += s[i] === \"→\" ? 1 : 2;\n continue;\n }\n\n if (s[i] === \"(\") {\n tokens.push({ type: \"lparen\" });\n i++;\n continue;\n }\n if (s[i] === \")\") {\n tokens.push({ type: \"rparen\" });\n i++;\n continue;\n }\n if (s[i] === \"{\") {\n tokens.push({ type: \"lbrace\" });\n i++;\n continue;\n }\n if (s[i] === \"}\") {\n tokens.push({ type: \"rbrace\" });\n i++;\n continue;\n }\n if (s[i] === \",\") {\n tokens.push({ type: \"comma\" });\n i++;\n continue;\n }\n\n if (s[i] === '\"' || s[i] === \"'\") {\n const quote = s[i]!;\n let val = \"\";\n i++;\n while (i < s.length && s[i] !== quote) {\n val += s[i];\n i++;\n }\n i++;\n tokens.push({ type: \"string\", value: val });\n continue;\n }\n\n if (/[0-9\\-.]/.test(s[i]!) && (s[i] !== \"-\" || /[0-9.]/.test(s[i + 1] ?? \"\"))) {\n let num = \"\";\n if (s[i] === \"-\") {\n num += \"-\";\n i++;\n }\n while (i < s.length && /[0-9.]/.test(s[i]!)) {\n num += s[i];\n i++;\n }\n tokens.push({ type: \"number\", value: Number(num) });\n continue;\n }\n\n if (/[a-zA-Z_\\u3000-\\u9FFF\\uF900-\\uFAFF]/.test(s[i]!)) {\n let ident = \"\";\n while (i < s.length && /[a-zA-Z0-9_\\u3000-\\u9FFF\\uF900-\\uFAFF]/.test(s[i]!)) {\n ident += s[i];\n i++;\n }\n tokens.push({ type: \"ident\", value: ident });\n continue;\n }\n\n i++;\n }\n\n return tokens;\n}\n\nfunction parseTokens(tokens: Token[], start: number, end: number): ScriptCommand[] {\n const commands: ScriptCommand[] = [];\n let i = start;\n\n while (i < end) {\n const tok = tokens[i]!;\n\n if (tok.type === \"arrow\") {\n i++;\n continue;\n }\n\n if (tok.type === \"ident\") {\n const name = tok.value;\n\n if (name === \"wait\" && tokens[i + 1]?.type === \"lparen\") {\n const args = parseArgs(tokens, i + 1);\n commands.push({ type: \"wait\", ms: args.numbers[0] ?? 500 });\n i = args.end + 1;\n continue;\n }\n\n if (name === \"set\" && tokens[i + 1]?.type === \"lparen\") {\n const args = parseArgs(tokens, i + 1);\n commands.push({\n type: \"setParam\",\n parameterId: args.strings[0] ?? \"\",\n value: args.numbers[0] ?? 0,\n });\n i = args.end + 1;\n continue;\n }\n\n if (name === \"lerp\" && tokens[i + 1]?.type === \"lparen\") {\n const args = parseArgs(tokens, i + 1);\n commands.push({\n type: \"lerp\",\n parameterId: args.strings[0] ?? \"\",\n from: args.numbers[0] ?? 0,\n to: args.numbers[1] ?? 1,\n duration: args.numbers[2] ?? 500,\n });\n i = args.end + 1;\n continue;\n }\n\n if (name === \"loop\" && tokens[i + 1]?.type === \"lparen\") {\n const args = parseArgs(tokens, i + 1);\n const count = args.numbers[0] ?? 0;\n const bodyEnd = args.end + 1;\n if (tokens[bodyEnd]?.type === \"lbrace\") {\n const braceEnd = findMatchingBrace(tokens, bodyEnd);\n const body = parseTokens(tokens, bodyEnd + 1, braceEnd);\n commands.push({ type: \"loop\", count, commands: body });\n i = braceEnd + 1;\n } else {\n i = bodyEnd;\n }\n continue;\n }\n\n if (name === \"reset\") {\n commands.push({ type: \"reset\" });\n i++;\n continue;\n }\n\n commands.push({ type: \"presetByName\", name });\n i++;\n continue;\n }\n\n if (tok.type === \"string\") {\n commands.push({ type: \"presetByName\", name: tok.value });\n i++;\n continue;\n }\n\n i++;\n }\n\n return commands;\n}\n\nfunction parseArgs(\n tokens: Token[],\n lparenPos: number,\n): { strings: string[]; numbers: number[]; end: number } {\n const strings: string[] = [];\n const numbers: number[] = [];\n let i = lparenPos + 1;\n\n while (i < tokens.length) {\n const t = tokens[i]!;\n if (t.type === \"rparen\") break;\n if (t.type === \"comma\") {\n i++;\n continue;\n }\n if (t.type === \"number\") {\n numbers.push(t.value);\n }\n if (t.type === \"string\" || t.type === \"ident\") {\n strings.push(t.value);\n }\n i++;\n }\n\n return { strings, numbers, end: i };\n}\n\nfunction findMatchingBrace(tokens: Token[], lbracePos: number): number {\n let depth = 1;\n let i = lbracePos + 1;\n while (i < tokens.length && depth > 0) {\n if (tokens[i]!.type === \"lbrace\") depth++;\n if (tokens[i]!.type === \"rbrace\") depth--;\n if (depth > 0) i++;\n }\n return i;\n}\n","import type { AtlasEntry, LayerNode, ViviFileData } from \"@vivi2d/model/types\";\n\nexport interface ExtractedTexture {\n layerId: string;\n canvas: HTMLCanvasElement;\n width: number;\n height: number;\n}\n\nfunction flattenLayers(layers: readonly LayerNode[]): LayerNode[] {\n const result: LayerNode[] = [];\n for (const layer of layers) {\n result.push(layer);\n const children = Array.isArray(layer.children) ? layer.children : [];\n if (children.length > 0) {\n result.push(...flattenLayers(children));\n }\n }\n return result;\n}\n\nexport async function extractTextures(\n fileData: ViviFileData,\n): Promise<Map<string, HTMLCanvasElement>> {\n const textures = new Map<string, HTMLCanvasElement>();\n\n const entryMap = new Map<\n string,\n { entry: AtlasEntry; atlasWidth: number; atlasHeight: number }\n >();\n\n for (const atlas of fileData.atlases) {\n const atlasCanvas = await loadBase64Image(atlas.image, atlas.width, atlas.height);\n\n for (const entry of atlas.entries) {\n entryMap.set(entry.layerId, {\n entry,\n atlasWidth: atlas.width,\n atlasHeight: atlas.height,\n });\n\n const texCanvas = document.createElement(\"canvas\");\n texCanvas.width = entry.width;\n texCanvas.height = entry.height;\n const ctx = texCanvas.getContext(\"2d\");\n if (ctx) {\n ctx.drawImage(\n atlasCanvas,\n entry.x,\n entry.y,\n entry.width,\n entry.height,\n 0,\n 0,\n entry.width,\n entry.height,\n );\n }\n textures.set(entry.layerId, texCanvas);\n }\n }\n\n const allLayers = flattenLayers(fileData.project.layers);\n for (const node of allLayers) {\n if (node.kind !== \"viviMesh\") continue;\n const mapping = entryMap.get(node.id);\n if (!mapping) continue;\n const { entry, atlasWidth, atlasHeight } = mapping;\n const uvs = node.mesh.uvs;\n for (let i = 0; i < uvs.length; i += 2) {\n uvs[i] = (uvs[i]! * atlasWidth - entry.x) / entry.width || 0;\n uvs[i + 1] = (uvs[i + 1]! * atlasHeight - entry.y) / entry.height || 0;\n }\n }\n\n return textures;\n}\n\nfunction loadBase64Image(\n base64: string,\n width: number,\n height: number,\n): Promise<HTMLCanvasElement> {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (ctx) {\n ctx.drawImage(img, 0, 0);\n }\n resolve(canvas);\n };\n img.onerror = () => reject(new Error(\"Failed to load atlas image\"));\n img.src = `data:image/png;base64,${base64}`;\n });\n}\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. Can be:\n * - Extension class with static `extension` property\n * - Extension format object with `type` and `ref`\n * - Multiple extensions as separate arguments\n * @returns {extensions} this for chaining\n * @example\n * ```ts\n * // Remove a single extension\n * extensions.remove(MyRendererPlugin);\n *\n * // Remove multiple extensions\n * extensions.remove(\n * MyRendererPlugin,\n * MySystemPlugin\n * );\n * ```\n * @see {@link ExtensionType} For available extension types\n * @see {@link ExtensionFormat} For extension format details\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. Extensions can be registered in multiple formats:\n * - As a class with a static `extension` property\n * - As an extension format object\n * - As multiple extensions passed as separate arguments\n * @param extensions - Extensions to add to PixiJS. Each can be:\n * - A class with static `extension` property\n * - An extension format object with `type` and `ref`\n * - Multiple extensions as separate arguments\n * @returns This extensions instance for chaining\n * @example\n * ```ts\n * // Register a simple extension\n * extensions.add(MyRendererPlugin);\n *\n * // Register multiple extensions\n * extensions.add(\n * MyRendererPlugin,\n * MySystemPlugin,\n * });\n * ```\n * @see {@link ExtensionType} For available extension types\n * @see {@link ExtensionFormat} For extension format details\n * @see {@link extensions.remove} For removing registered extensions\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 this for chaining.\n * @internal\n * @ignore\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 this for chaining.\n * @ignore\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 this for chaining.\n * @ignore\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) 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 this for chaining.\n * @ignore\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(s) properties into the target class's prototype.\n * Copies all property descriptors from source objects to the target's prototype.\n * @param Target - The target class to mix properties into\n * @param sources - One or more source objects containing properties to mix in\n * @example\n * ```ts\n * // Create a mixin with shared properties\n * const moveable = {\n * x: 0,\n * y: 0,\n * move(x: number, y: number) {\n * this.x += x;\n * this.y += y;\n * }\n * };\n *\n * // Create a mixin with computed properties\n * const scalable = {\n * scale: 1,\n * get scaled() {\n * return this.scale > 1;\n * }\n * };\n *\n * // Apply mixins to a class\n * extensions.mixin(Sprite, moveable, scalable);\n *\n * // Use mixed-in properties\n * const sprite = new Sprite();\n * sprite.move(10, 20);\n * console.log(sprite.x, sprite.y); // 10, 20\n * ```\n * @remarks\n * - Copies all properties including getters/setters\n * - Does not modify source objects\n * - Preserves property descriptors\n * @see {@link Object.defineProperties} For details on property descriptors\n * @see {@link Object.getOwnPropertyDescriptors} For details on property copying\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","\"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\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 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\";\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 /** @internal */\n this._gpuData = /* @__PURE__ */ Object.create(null);\n /** @internal */\n this._gcLastUsed = -1;\n /** If set to true, the buffer will be garbage collected automatically when it is not used. */\n this.autoGarbageCollect = true;\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 */\n this._resourceType = \"buffer\";\n /**\n * the resource id used internally by the renderer to build bind group keys\n * @internal\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 */\n this._touched = 0;\n /** @internal */\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) 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) 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) 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 /** Unloads the buffer from the GPU */\n unload() {\n this.emit(\"unload\", this);\n for (const key in this._gpuData) {\n this._gpuData[key]?.destroy();\n }\n this._gpuData = /* @__PURE__ */ Object.create(null);\n }\n /** Destroys the buffer */\n destroy() {\n this.destroyed = true;\n this.unload();\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 { unsafeEvalSupported } from '../../../../utils/browser/unsafeEvalSupported.mjs';\nimport { Buffer } from '../buffer/Buffer.mjs';\nimport { BufferUsage } from '../buffer/const.mjs';\n\n\"use strict\";\nclass UboSystem {\n constructor(adaptor) {\n /** Cache of uniform buffer layouts and sync functions, so we don't have to re-create them */\n this._syncFunctionHash = /* @__PURE__ */ Object.create(null);\n this._adaptor = adaptor;\n this._systemCheck();\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 */\n _systemCheck() {\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 ensureUniformGroup(uniformGroup) {\n const uniformData = this.getUniformGroupData(uniformGroup);\n uniformGroup.buffer || (uniformGroup.buffer = new Buffer({\n data: new Float32Array(uniformData.layout.size / 4),\n usage: BufferUsage.UNIFORM | BufferUsage.COPY_DST\n }));\n }\n getUniformGroupData(uniformGroup) {\n return this._syncFunctionHash[uniformGroup._signature] || this._initUniformGroup(uniformGroup);\n }\n _initUniformGroup(uniformGroup) {\n const uniformGroupSignature = uniformGroup._signature;\n let uniformData = this._syncFunctionHash[uniformGroupSignature];\n if (!uniformData) {\n const elements = Object.keys(uniformGroup.uniformStructures).map((i) => uniformGroup.uniformStructures[i]);\n const layout = this._adaptor.createUboElements(elements);\n const syncFunction = this._generateUboSync(layout.uboElements);\n uniformData = this._syncFunctionHash[uniformGroupSignature] = {\n layout,\n syncFunction\n };\n }\n return this._syncFunctionHash[uniformGroupSignature];\n }\n _generateUboSync(uboElements) {\n return this._adaptor.generateUboSync(uboElements);\n }\n syncUniformGroup(uniformGroup, data, offset) {\n const uniformGroupData = this.getUniformGroupData(uniformGroup);\n uniformGroup.buffer || (uniformGroup.buffer = new Buffer({\n data: new Float32Array(uniformGroupData.layout.size / 4),\n usage: BufferUsage.UNIFORM | BufferUsage.COPY_DST\n }));\n let dataInt32 = null;\n if (!data) {\n data = uniformGroup.buffer.data;\n dataInt32 = uniformGroup.buffer.dataInt32;\n }\n offset || (offset = 0);\n uniformGroupData.syncFunction(uniformGroup.uniforms, data, dataInt32, offset);\n return true;\n }\n updateUniformGroup(uniformGroup) {\n if (uniformGroup.isStatic && !uniformGroup._dirtyId) return false;\n uniformGroup._dirtyId = 0;\n const synced = this.syncUniformGroup(uniformGroup);\n uniformGroup.buffer.update();\n return synced;\n }\n destroy() {\n this._syncFunctionHash = null;\n }\n}\n\nexport { UboSystem };\n//# sourceMappingURL=UboSystem.mjs.map\n","\"use strict\";\nconst WGSL_TO_STD40_SIZE = {\n f32: 4,\n i32: 4,\n \"vec2<f32>\": 8,\n \"vec3<f32>\": 12,\n \"vec4<f32>\": 16,\n \"vec2<i32>\": 8,\n \"vec3<i32>\": 12,\n \"vec4<i32>\": 16,\n \"mat2x2<f32>\": 16 * 2,\n \"mat3x3<f32>\": 16 * 3,\n \"mat4x4<f32>\": 16 * 4\n // TODO - not essential for now but support these in the future\n // int: 4,\n // ivec2: 8,\n // ivec3: 12,\n // ivec4: 16,\n // uint: 4,\n // uvec2: 8,\n // uvec3: 12,\n // uvec4: 16,\n // bool: 4,\n // bvec2: 8,\n // bvec3: 12,\n // bvec4: 16,\n // mat2: 16 * 2,\n // mat3: 16 * 3,\n // mat4: 16 * 4,\n};\nfunction createUboElementsSTD40(uniformData) {\n const uboElements = uniformData.map((data) => ({\n data,\n offset: 0,\n size: 0\n }));\n const chunkSize = 16;\n let size = 0;\n let offset = 0;\n for (let i = 0; i < uboElements.length; i++) {\n const uboElement = uboElements[i];\n size = WGSL_TO_STD40_SIZE[uboElement.data.type];\n if (!size) {\n throw new Error(`Unknown type ${uboElement.data.type}`);\n }\n if (uboElement.data.size > 1) {\n size = Math.max(size, chunkSize) * uboElement.data.size;\n }\n const boundary = size === 12 ? 16 : size;\n uboElement.size = size;\n const curOffset = offset % chunkSize;\n if (curOffset > 0 && chunkSize - curOffset < boundary) {\n offset += (chunkSize - curOffset) % 16;\n } else {\n offset += (size - curOffset % size) % size;\n }\n uboElement.offset = offset;\n offset += size;\n }\n offset = Math.ceil(offset / 16) * 16;\n return { uboElements, size: offset };\n}\n\nexport { WGSL_TO_STD40_SIZE, createUboElementsSTD40 };\n//# sourceMappingURL=createUboElementsSTD40.mjs.map\n","\"use strict\";\nconst uniformParsers = [\n // uploading pixi matrix object to mat3\n {\n type: \"mat3x3<f32>\",\n test: (data) => {\n const value = data.value;\n return value.a !== void 0;\n },\n ubo: `\n var matrix = uv[name].toArray(true);\n data[offset] = matrix[0];\n data[offset + 1] = matrix[1];\n data[offset + 2] = matrix[2];\n data[offset + 4] = matrix[3];\n data[offset + 5] = matrix[4];\n data[offset + 6] = matrix[5];\n data[offset + 8] = matrix[6];\n data[offset + 9] = matrix[7];\n data[offset + 10] = matrix[8];\n `,\n uniform: `\n gl.uniformMatrix3fv(ud[name].location, false, uv[name].toArray(true));\n `\n },\n // uploading a pixi rectangle as a vec4\n {\n type: \"vec4<f32>\",\n test: (data) => data.type === \"vec4<f32>\" && data.size === 1 && data.value.width !== void 0,\n ubo: `\n v = uv[name];\n data[offset] = v.x;\n data[offset + 1] = v.y;\n data[offset + 2] = v.width;\n data[offset + 3] = v.height;\n `,\n uniform: `\n cv = ud[name].value;\n v = uv[name];\n if (cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height) {\n cv[0] = v.x;\n cv[1] = v.y;\n cv[2] = v.width;\n cv[3] = v.height;\n gl.uniform4f(ud[name].location, v.x, v.y, v.width, v.height);\n }\n `\n },\n // uploading a pixi point as a vec2\n {\n type: \"vec2<f32>\",\n test: (data) => data.type === \"vec2<f32>\" && data.size === 1 && data.value.x !== void 0,\n ubo: `\n v = uv[name];\n data[offset] = v.x;\n data[offset + 1] = v.y;\n `,\n uniform: `\n cv = ud[name].value;\n v = uv[name];\n if (cv[0] !== v.x || cv[1] !== v.y) {\n cv[0] = v.x;\n cv[1] = v.y;\n gl.uniform2f(ud[name].location, v.x, v.y);\n }\n `\n },\n // uploading a pixi color as a vec4\n {\n type: \"vec4<f32>\",\n test: (data) => data.type === \"vec4<f32>\" && data.size === 1 && data.value.red !== void 0,\n ubo: `\n v = uv[name];\n data[offset] = v.red;\n data[offset + 1] = v.green;\n data[offset + 2] = v.blue;\n data[offset + 3] = v.alpha;\n `,\n uniform: `\n cv = ud[name].value;\n v = uv[name];\n if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.alpha) {\n cv[0] = v.red;\n cv[1] = v.green;\n cv[2] = v.blue;\n cv[3] = v.alpha;\n gl.uniform4f(ud[name].location, v.red, v.green, v.blue, v.alpha);\n }\n `\n },\n // uploading a pixi color as a vec3\n {\n type: \"vec3<f32>\",\n test: (data) => data.type === \"vec3<f32>\" && data.size === 1 && data.value.red !== void 0,\n ubo: `\n v = uv[name];\n data[offset] = v.red;\n data[offset + 1] = v.green;\n data[offset + 2] = v.blue;\n `,\n uniform: `\n cv = ud[name].value;\n v = uv[name];\n if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue) {\n cv[0] = v.red;\n cv[1] = v.green;\n cv[2] = v.blue;\n gl.uniform3f(ud[name].location, v.red, v.green, v.blue);\n }\n `\n }\n];\n\nexport { uniformParsers };\n//# sourceMappingURL=uniformParsers.mjs.map\n","import { uniformParsers } from './uniformParsers.mjs';\n\n\"use strict\";\nfunction createUboSyncFunction(uboElements, parserCode, arrayGenerationFunction, singleSettersMap) {\n const funcFragments = [`\n var v = null;\n var v2 = null;\n var t = 0;\n var index = 0;\n var name = null;\n var arrayOffset = null;\n `];\n let prev = 0;\n for (let i = 0; i < uboElements.length; i++) {\n const uboElement = uboElements[i];\n const name = uboElement.data.name;\n let parsed = false;\n let offset = 0;\n for (let j = 0; j < uniformParsers.length; j++) {\n const uniformParser = uniformParsers[j];\n if (uniformParser.test(uboElement.data)) {\n offset = uboElement.offset / 4;\n funcFragments.push(\n `name = \"${name}\";`,\n `offset += ${offset - prev};`,\n uniformParsers[j][parserCode] || uniformParsers[j].ubo\n );\n parsed = true;\n break;\n }\n }\n if (!parsed) {\n if (uboElement.data.size > 1) {\n offset = uboElement.offset / 4;\n funcFragments.push(arrayGenerationFunction(uboElement, offset - prev));\n } else {\n const template = singleSettersMap[uboElement.data.type];\n offset = uboElement.offset / 4;\n funcFragments.push(\n /* wgsl */\n `\n v = uv.${name};\n offset += ${offset - prev};\n ${template};\n `\n );\n }\n }\n prev = offset;\n }\n const fragmentSrc = funcFragments.join(\"\\n\");\n return new Function(\n \"uv\",\n \"data\",\n \"dataInt32\",\n \"offset\",\n fragmentSrc\n );\n}\n\nexport { createUboSyncFunction };\n//# sourceMappingURL=createUboSyncFunction.mjs.map\n","\"use strict\";\nfunction loopMatrix(col, row) {\n const total = col * row;\n return `\n for (let i = 0; i < ${total}; i++) {\n data[offset + (((i / ${col})|0) * 4) + (i % ${col})] = v[i];\n }\n `;\n}\nconst uboSyncFunctionsSTD40 = {\n f32: `\n data[offset] = v;`,\n i32: `\n dataInt32[offset] = v;`,\n \"vec2<f32>\": `\n data[offset] = v[0];\n data[offset + 1] = v[1];`,\n \"vec3<f32>\": `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];`,\n \"vec4<f32>\": `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 3] = v[3];`,\n \"vec2<i32>\": `\n dataInt32[offset] = v[0];\n dataInt32[offset + 1] = v[1];`,\n \"vec3<i32>\": `\n dataInt32[offset] = v[0];\n dataInt32[offset + 1] = v[1];\n dataInt32[offset + 2] = v[2];`,\n \"vec4<i32>\": `\n dataInt32[offset] = v[0];\n dataInt32[offset + 1] = v[1];\n dataInt32[offset + 2] = v[2];\n dataInt32[offset + 3] = v[3];`,\n \"mat2x2<f32>\": `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 4] = v[2];\n data[offset + 5] = v[3];`,\n \"mat3x3<f32>\": `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 4] = v[3];\n data[offset + 5] = v[4];\n data[offset + 6] = v[5];\n data[offset + 8] = v[6];\n data[offset + 9] = v[7];\n data[offset + 10] = v[8];`,\n \"mat4x4<f32>\": `\n for (let i = 0; i < 16; i++) {\n data[offset + i] = v[i];\n }`,\n \"mat3x2<f32>\": loopMatrix(3, 2),\n \"mat4x2<f32>\": loopMatrix(4, 2),\n \"mat2x3<f32>\": loopMatrix(2, 3),\n \"mat4x3<f32>\": loopMatrix(4, 3),\n \"mat2x4<f32>\": loopMatrix(2, 4),\n \"mat3x4<f32>\": loopMatrix(3, 4)\n};\nconst uboSyncFunctionsWGSL = {\n ...uboSyncFunctionsSTD40,\n \"mat2x2<f32>\": `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 3] = v[3];\n `\n};\n\nexport { uboSyncFunctionsSTD40, uboSyncFunctionsWGSL };\n//# sourceMappingURL=uboSyncFunctions.mjs.map\n","import { WGSL_TO_STD40_SIZE } from './createUboElementsSTD40.mjs';\n\n\"use strict\";\nfunction generateArraySyncSTD40(uboElement, offsetToAdd) {\n const rowSize = Math.max(WGSL_TO_STD40_SIZE[uboElement.data.type] / 16, 1);\n const elementSize = uboElement.data.value.length / uboElement.data.size;\n const remainder = (4 - elementSize % 4) % 4;\n const data = uboElement.data.type.indexOf(\"i32\") >= 0 ? \"dataInt32\" : \"data\";\n return `\n v = uv.${uboElement.data.name};\n offset += ${offsetToAdd};\n\n arrayOffset = offset;\n\n t = 0;\n\n for(var i=0; i < ${uboElement.data.size * rowSize}; i++)\n {\n for(var j = 0; j < ${elementSize}; j++)\n {\n ${data}[arrayOffset++] = v[t++];\n }\n ${remainder !== 0 ? `arrayOffset += ${remainder};` : \"\"}\n }\n `;\n}\n\nexport { generateArraySyncSTD40 };\n//# sourceMappingURL=generateArraySyncSTD40.mjs.map\n","import { createUboSyncFunction } from '../../../shared/shader/utils/createUboSyncFunction.mjs';\nimport { uboSyncFunctionsSTD40 } from '../../../shared/shader/utils/uboSyncFunctions.mjs';\nimport { generateArraySyncSTD40 } from './generateArraySyncSTD40.mjs';\n\n\"use strict\";\nfunction createUboSyncFunctionSTD40(uboElements) {\n return createUboSyncFunction(\n uboElements,\n \"uboStd40\",\n generateArraySyncSTD40,\n uboSyncFunctionsSTD40\n );\n}\n\nexport { createUboSyncFunctionSTD40 };\n//# sourceMappingURL=createUboSyncSTD40.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { UboSystem } from '../shared/shader/UboSystem.mjs';\nimport { createUboElementsSTD40 } from './shader/utils/createUboElementsSTD40.mjs';\nimport { createUboSyncFunctionSTD40 } from './shader/utils/createUboSyncSTD40.mjs';\n\n\"use strict\";\nclass GlUboSystem extends UboSystem {\n constructor() {\n super({\n createUboElements: createUboElementsSTD40,\n generateUboSync: createUboSyncFunctionSTD40\n });\n }\n}\n/** @ignore */\nGlUboSystem.extension = {\n type: [ExtensionType.WebGLSystem],\n name: \"ubo\"\n};\n\nexport { GlUboSystem };\n//# sourceMappingURL=GlUboSystem.mjs.map\n","import EventEmitter from 'eventemitter3';\nimport { uid } from '../../../../utils/data/uid.mjs';\n\n\"use strict\";\nclass BufferResource extends EventEmitter {\n /**\n * Create a new Buffer Resource.\n * @param options - The options for the buffer resource\n * @param options.buffer - The underlying buffer that this resource is using\n * @param options.offset - The offset of the buffer this resource is using.\n * If not provided, then it will use the offset of the buffer.\n * @param options.size - The size of the buffer this resource is using.\n * If not provided, then it will use the size of the buffer.\n */\n constructor({ buffer, offset, size }) {\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 /** 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 */\n this._resourceType = \"bufferResource\";\n /**\n * used internally to know if a uniform group was used in the last render pass\n * @internal\n */\n this._touched = 0;\n /**\n * the resource id used internally by the renderer to build bind group keys\n * @internal\n */\n this._resourceId = uid(\"resource\");\n /**\n * A cheeky hint to the GL renderer to let it know this is a BufferResource\n * @internal\n */\n this._bufferResource = true;\n /**\n * Has the Buffer resource been destroyed?\n * @readonly\n */\n this.destroyed = false;\n this.buffer = buffer;\n this.offset = offset | 0;\n this.size = size;\n this.buffer.on(\"change\", this.onBufferChange, this);\n }\n onBufferChange() {\n this._resourceId = uid(\"resource\");\n this.emit(\"change\", this);\n }\n /**\n * Destroys this resource. Make sure the underlying buffer is not used anywhere else\n * if you want to destroy it as well, or code will explode\n * @param destroyBuffer - Should the underlying buffer be destroyed as well?\n */\n destroy(destroyBuffer = false) {\n this.destroyed = true;\n if (destroyBuffer) {\n this.buffer.destroy();\n }\n this.emit(\"change\", this);\n this.buffer = null;\n this.removeAllListeners();\n }\n}\n\nexport { BufferResource };\n//# sourceMappingURL=BufferResource.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","\"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 /**\n * used internally to know if a uniform group was used in the last render pass\n * @internal\n */\n this._touched = 0;\n /** a unique id for this uniform group used through the renderer */\n this.uid = uid(\"uniform\");\n /**\n * a resource type, used to identify how to handle it when its in a bind group / shader resource\n * @internal\n */\n this._resourceType = \"uniformGroup\";\n /**\n * the resource id used internally by the renderer to build bind group keys\n * @internal\n */\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 */\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 const arrayMatch = uniformData.type.match(/^array<(\\w+(?:<\\w+>)?),\\s*(\\d+)>$/);\n if (arrayMatch) {\n const [, innerType, size] = arrayMatch;\n throw new Error(\n `Uniform type ${uniformData.type} is not supported. Use type: '${innerType}', size: ${size} instead.`\n );\n }\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\";\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","\"use strict\";\nconst warnings = /* @__PURE__ */ new Set();\nconst v8_0_0 = \"8.0.0\";\nconst v8_3_4 = \"8.3.4\";\nconst deprecationState = {\n quiet: false,\n noColor: false\n};\nconst deprecation = ((version, message, ignoreDepth = 3) => {\n if (deprecationState.quiet || warnings.has(message)) return;\n let stack = new Error().stack;\n const deprecationMessage = `${message}\nDeprecated since v${version}`;\n const useGroup = typeof console.groupCollapsed === \"function\" && !deprecationState.noColor;\n if (typeof stack === \"undefined\") {\n console.warn(\"PixiJS Deprecation Warning: \", deprecationMessage);\n } else {\n stack = stack.split(\"\\n\").splice(ignoreDepth).join(\"\\n\");\n if (useGroup) {\n console.groupCollapsed(\n \"%cPixiJS Deprecation Warning: %c%s\",\n \"color:#614108;background:#fffbe6\",\n \"font-weight:normal;color:#614108;background:#fffbe6\",\n deprecationMessage\n );\n console.warn(stack);\n console.groupEnd();\n } else {\n console.warn(\"PixiJS Deprecation Warning: \", deprecationMessage);\n console.warn(stack);\n }\n }\n warnings.add(message);\n});\nObject.defineProperties(deprecation, {\n quiet: {\n get: () => deprecationState.quiet,\n set: (value) => {\n deprecationState.quiet = value;\n },\n enumerable: true,\n configurable: false\n },\n noColor: {\n get: () => deprecationState.noColor,\n set: (value) => {\n deprecationState.noColor = value;\n },\n enumerable: true,\n configurable: false\n }\n});\n\nexport { deprecation, v8_0_0, v8_3_4 };\n//# sourceMappingURL=deprecation.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 /** @internal */\n this._resourceType = \"textureSampler\";\n /** @internal */\n this._touched = 0;\n /**\n * Specifies the maximum anisotropy value clamp used by the sampler.\n * Note: Most implementations support {@link TextureStyle#maxAnisotropy} values in range\n * between 1 and 16, inclusive. The used value of {@link TextureStyle#maxAnisotropy} will\n * be clamped to the maximum value that the platform supports.\n * @internal\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._sharedResourceId = null;\n this.emit(\"change\", this);\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 /** @internal */\n this._gpuData = /* @__PURE__ */ Object.create(null);\n /** @internal */\n this._gcLastUsed = -1;\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 * @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 * @internal\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 * @internal\n */\n this.uploadMethodId = \"unknown\";\n /** @internal */\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 */\n this.sampleCount = 1;\n /**\n * The number of mip levels to generate for this texture.\n * this is overridden if autoGenerateMipmaps is true. it is read only!\n */\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 /** how this texture is viewed/sampled by shaders (WebGPU view dimension) */\n this.viewDimension = \"2d\";\n /** how many array layers this texture has (WebGPU depthOrArrayLayers) */\n this.arrayLayerCount = 1;\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.viewDimension = options.viewDimension ?? options.dimensions;\n this.arrayLayerCount = options.arrayLayerCount;\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) 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 /** Specifies the maximum anisotropy value clamp used by the sampler. */\n set maxAnisotropy(value) {\n this._style.maxAnisotropy = value;\n }\n get maxAnisotropy() {\n return this._style.maxAnisotropy;\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) return;\n }\n this.emit(\"update\", this);\n }\n /** Destroys this texture source */\n destroy() {\n this.destroyed = true;\n this.unload();\n this.emit(\"destroy\", 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 for (const key in this._gpuData) {\n this._gpuData[key]?.destroy?.();\n }\n this._gpuData = /* @__PURE__ */ Object.create(null);\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) 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 viewDimension: \"2d\",\n arrayLayerCount: 1,\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 { BufferResource } from '../../shared/buffer/BufferResource.mjs';\nimport { UniformGroup } from '../../shared/shader/UniformGroup.mjs';\nimport { TextureSource } from '../../shared/texture/sources/TextureSource.mjs';\n\n\"use strict\";\nfunction generateShaderSyncCode(shader, shaderSystem) {\n const funcFragments = [];\n const headerFragments = [`\n var g = s.groups;\n var sS = r.shader;\n var p = s.glProgram;\n var ugS = r.uniformGroup;\n var resources;\n `];\n let addedTextreSystem = false;\n let textureCount = 0;\n const programData = shaderSystem._getProgramData(shader.glProgram);\n for (const i in shader.groups) {\n const group = shader.groups[i];\n funcFragments.push(`\n resources = g[${i}].resources;\n `);\n for (const j in group.resources) {\n const resource = group.resources[j];\n if (resource instanceof UniformGroup) {\n if (resource.ubo) {\n const resName = shader._uniformBindMap[i][Number(j)];\n funcFragments.push(`\n sS.bindUniformBlock(\n resources[${j}],\n '${resName}',\n ${shader.glProgram._uniformBlockData[resName].index}\n );\n `);\n } else {\n funcFragments.push(`\n ugS.updateUniformGroup(resources[${j}], p, sD);\n `);\n }\n } else if (resource instanceof BufferResource) {\n const resName = shader._uniformBindMap[i][Number(j)];\n funcFragments.push(`\n sS.bindUniformBlock(\n resources[${j}],\n '${resName}',\n ${shader.glProgram._uniformBlockData[resName].index}\n );\n `);\n } else if (resource instanceof TextureSource) {\n const uniformName = shader._uniformBindMap[i][j];\n const uniformData = programData.uniformData[uniformName];\n if (uniformData) {\n if (!addedTextreSystem) {\n addedTextreSystem = true;\n headerFragments.push(`\n var tS = r.texture;\n `);\n }\n shaderSystem._gl.uniform1i(uniformData.location, textureCount);\n funcFragments.push(`\n tS.bind(resources[${j}], ${textureCount});\n `);\n textureCount++;\n }\n }\n }\n }\n const functionSource = [...headerFragments, ...funcFragments].join(\"\\n\");\n return new Function(\"r\", \"s\", \"sD\", functionSource);\n}\n\nexport { generateShaderSyncCode };\n//# sourceMappingURL=GenerateShaderSyncCode.mjs.map\n","\"use strict\";\nlet warnCount = 0;\nconst maxWarnings = 500;\nfunction warn(...args) {\n if (warnCount === maxWarnings) 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","\"use strict\";\nclass IGLUniformData {\n}\nclass GlProgramData {\n /**\n * Makes a new Pixi program.\n * @param program - webgl program\n * @param uniformData - uniforms\n */\n constructor(program, uniformData) {\n this.program = program;\n this.uniformData = uniformData;\n this.uniformGroups = {};\n this.uniformDirtyGroups = {};\n this.uniformBlockBindings = {};\n }\n /** Destroys this program. */\n destroy() {\n this.uniformData = null;\n this.uniformGroups = null;\n this.uniformDirtyGroups = null;\n this.uniformBlockBindings = null;\n this.program = null;\n }\n}\n\nexport { GlProgramData, IGLUniformData };\n//# sourceMappingURL=GlProgramData.mjs.map\n","\"use strict\";\nfunction compileShader(gl, type, src) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, src);\n gl.compileShader(shader);\n return shader;\n}\n\nexport { compileShader };\n//# sourceMappingURL=compileShader.mjs.map\n","\"use strict\";\nfunction booleanArray(size) {\n const array = new Array(size);\n for (let i = 0; i < array.length; i++) {\n array[i] = false;\n }\n return array;\n}\nfunction defaultValue(type, size) {\n switch (type) {\n case \"float\":\n return 0;\n case \"vec2\":\n return new Float32Array(2 * size);\n case \"vec3\":\n return new Float32Array(3 * size);\n case \"vec4\":\n return new Float32Array(4 * size);\n case \"int\":\n case \"uint\":\n case \"sampler2D\":\n case \"sampler2DArray\":\n return 0;\n case \"ivec2\":\n return new Int32Array(2 * size);\n case \"ivec3\":\n return new Int32Array(3 * size);\n case \"ivec4\":\n return new Int32Array(4 * size);\n case \"uvec2\":\n return new Uint32Array(2 * size);\n case \"uvec3\":\n return new Uint32Array(3 * size);\n case \"uvec4\":\n return new Uint32Array(4 * size);\n case \"bool\":\n return false;\n case \"bvec2\":\n return booleanArray(2 * size);\n case \"bvec3\":\n return booleanArray(3 * size);\n case \"bvec4\":\n return booleanArray(4 * size);\n case \"mat2\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 1\n ]);\n case \"mat3\":\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 \"mat4\":\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 { defaultValue };\n//# sourceMappingURL=defaultValue.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","\"use strict\";\nlet GL_TABLE = null;\nconst GL_TO_GLSL_TYPES = {\n FLOAT: \"float\",\n FLOAT_VEC2: \"vec2\",\n FLOAT_VEC3: \"vec3\",\n FLOAT_VEC4: \"vec4\",\n INT: \"int\",\n INT_VEC2: \"ivec2\",\n INT_VEC3: \"ivec3\",\n INT_VEC4: \"ivec4\",\n UNSIGNED_INT: \"uint\",\n UNSIGNED_INT_VEC2: \"uvec2\",\n UNSIGNED_INT_VEC3: \"uvec3\",\n UNSIGNED_INT_VEC4: \"uvec4\",\n BOOL: \"bool\",\n BOOL_VEC2: \"bvec2\",\n BOOL_VEC3: \"bvec3\",\n BOOL_VEC4: \"bvec4\",\n FLOAT_MAT2: \"mat2\",\n FLOAT_MAT3: \"mat3\",\n FLOAT_MAT4: \"mat4\",\n SAMPLER_2D: \"sampler2D\",\n INT_SAMPLER_2D: \"sampler2D\",\n UNSIGNED_INT_SAMPLER_2D: \"sampler2D\",\n SAMPLER_CUBE: \"samplerCube\",\n INT_SAMPLER_CUBE: \"samplerCube\",\n UNSIGNED_INT_SAMPLER_CUBE: \"samplerCube\",\n SAMPLER_2D_ARRAY: \"sampler2DArray\",\n INT_SAMPLER_2D_ARRAY: \"sampler2DArray\",\n UNSIGNED_INT_SAMPLER_2D_ARRAY: \"sampler2DArray\"\n};\nconst GLSL_TO_VERTEX_TYPES = {\n float: \"float32\",\n vec2: \"float32x2\",\n vec3: \"float32x3\",\n vec4: \"float32x4\",\n int: \"sint32\",\n ivec2: \"sint32x2\",\n ivec3: \"sint32x3\",\n ivec4: \"sint32x4\",\n uint: \"uint32\",\n uvec2: \"uint32x2\",\n uvec3: \"uint32x3\",\n uvec4: \"uint32x4\",\n bool: \"uint32\",\n bvec2: \"uint32x2\",\n bvec3: \"uint32x3\",\n bvec4: \"uint32x4\"\n};\nfunction mapType(gl, type) {\n if (!GL_TABLE) {\n const typeNames = Object.keys(GL_TO_GLSL_TYPES);\n GL_TABLE = {};\n for (let i = 0; i < typeNames.length; ++i) {\n const tn = typeNames[i];\n GL_TABLE[gl[tn]] = GL_TO_GLSL_TYPES[tn];\n }\n }\n return GL_TABLE[type];\n}\nfunction mapGlToVertexFormat(gl, type) {\n const typeValue = mapType(gl, type);\n return GLSL_TO_VERTEX_TYPES[typeValue] || \"float32\";\n}\n\nexport { mapGlToVertexFormat, mapType };\n//# sourceMappingURL=mapType.mjs.map\n","import { getAttributeInfoFromFormat } from '../../../shared/geometry/utils/getAttributeInfoFromFormat.mjs';\nimport { mapGlToVertexFormat } from './mapType.mjs';\n\n\"use strict\";\nfunction extractAttributesFromGlProgram(program, gl, sortAttributes = false) {\n const attributes = {};\n const totalAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n for (let i = 0; i < totalAttributes; i++) {\n const attribData = gl.getActiveAttrib(program, i);\n if (attribData.name.startsWith(\"gl_\")) {\n continue;\n }\n const format = mapGlToVertexFormat(gl, attribData.type);\n attributes[attribData.name] = {\n location: 0,\n // set further down..\n format,\n stride: getAttributeInfoFromFormat(format).stride,\n offset: 0,\n instance: false,\n start: 0\n };\n }\n const keys = Object.keys(attributes);\n if (sortAttributes) {\n keys.sort((a, b) => a > b ? 1 : -1);\n for (let i = 0; i < keys.length; i++) {\n attributes[keys[i]].location = i;\n gl.bindAttribLocation(program, i, keys[i]);\n }\n gl.linkProgram(program);\n } else {\n for (let i = 0; i < keys.length; i++) {\n attributes[keys[i]].location = gl.getAttribLocation(program, keys[i]);\n }\n }\n return attributes;\n}\n\nexport { extractAttributesFromGlProgram };\n//# sourceMappingURL=extractAttributesFromGlProgram.mjs.map\n","\"use strict\";\nfunction getUboData(program, gl) {\n if (!gl.ACTIVE_UNIFORM_BLOCKS) return {};\n const uniformBlocks = {};\n const totalUniformsBlocks = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);\n for (let i = 0; i < totalUniformsBlocks; i++) {\n const name = gl.getActiveUniformBlockName(program, i);\n const uniformBlockIndex = gl.getUniformBlockIndex(program, name);\n const size = gl.getActiveUniformBlockParameter(program, i, gl.UNIFORM_BLOCK_DATA_SIZE);\n uniformBlocks[name] = {\n name,\n index: uniformBlockIndex,\n size\n };\n }\n return uniformBlocks;\n}\n\nexport { getUboData };\n//# sourceMappingURL=getUboData.mjs.map\n","import { defaultValue } from './defaultValue.mjs';\nimport { mapType } from './mapType.mjs';\n\n\"use strict\";\nfunction getUniformData(program, gl) {\n const uniforms = {};\n const totalUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n for (let i = 0; i < totalUniforms; i++) {\n const uniformData = gl.getActiveUniform(program, i);\n const name = uniformData.name.replace(/\\[.*?\\]$/, \"\");\n const isArray = !!uniformData.name.match(/\\[.*?\\]$/);\n const type = mapType(gl, uniformData.type);\n uniforms[name] = {\n name,\n index: i,\n type,\n size: uniformData.size,\n isArray,\n value: defaultValue(type, uniformData.size)\n };\n }\n return uniforms;\n}\n\nexport { getUniformData };\n//# sourceMappingURL=getUniformData.mjs.map\n","\"use strict\";\nfunction logPrettyShaderError(gl, shader) {\n const shaderSrc = gl.getShaderSource(shader).split(\"\\n\").map((line, index) => `${index}: ${line}`);\n const shaderLog = gl.getShaderInfoLog(shader);\n const splitShader = shaderLog.split(\"\\n\");\n const dedupe = {};\n const lineNumbers = splitShader.map((line) => parseFloat(line.replace(/^ERROR\\: 0\\:([\\d]+)\\:.*$/, \"$1\"))).filter((n) => {\n if (n && !dedupe[n]) {\n dedupe[n] = true;\n return true;\n }\n return false;\n });\n const logArgs = [\"\"];\n lineNumbers.forEach((number) => {\n shaderSrc[number - 1] = `%c${shaderSrc[number - 1]}%c`;\n logArgs.push(\"background: #FF0000; color:#FFFFFF; font-size: 10px\", \"font-size: 10px\");\n });\n const fragmentSourceToLog = shaderSrc.join(\"\\n\");\n logArgs[0] = fragmentSourceToLog;\n console.error(shaderLog);\n console.groupCollapsed(\"click to view full shader code\");\n console.warn(...logArgs);\n console.groupEnd();\n}\nfunction logProgramError(gl, program, vertexShader, fragmentShader) {\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n logPrettyShaderError(gl, vertexShader);\n }\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n logPrettyShaderError(gl, fragmentShader);\n }\n console.error(\"PixiJS Error: Could not initialize shader.\");\n if (gl.getProgramInfoLog(program) !== \"\") {\n console.warn(\"PixiJS Warning: gl.getProgramInfoLog()\", gl.getProgramInfoLog(program));\n }\n }\n}\n\nexport { logProgramError };\n//# sourceMappingURL=logProgramError.mjs.map\n","import { warn } from '../../../../../utils/logging/warn.mjs';\nimport { GlProgramData } from '../GlProgramData.mjs';\nimport { compileShader } from './compileShader.mjs';\nimport { defaultValue } from './defaultValue.mjs';\nimport { extractAttributesFromGlProgram } from './extractAttributesFromGlProgram.mjs';\nimport { getUboData } from './getUboData.mjs';\nimport { getUniformData } from './getUniformData.mjs';\nimport { logProgramError } from './logProgramError.mjs';\n\n\"use strict\";\nfunction generateProgram(gl, program) {\n const glVertShader = compileShader(gl, gl.VERTEX_SHADER, program.vertex);\n const glFragShader = compileShader(gl, gl.FRAGMENT_SHADER, program.fragment);\n const webGLProgram = gl.createProgram();\n gl.attachShader(webGLProgram, glVertShader);\n gl.attachShader(webGLProgram, glFragShader);\n const transformFeedbackVaryings = program.transformFeedbackVaryings;\n if (transformFeedbackVaryings) {\n if (typeof gl.transformFeedbackVaryings !== \"function\") {\n warn(`TransformFeedback is not supported but TransformFeedbackVaryings are given.`);\n } else {\n gl.transformFeedbackVaryings(\n webGLProgram,\n transformFeedbackVaryings.names,\n transformFeedbackVaryings.bufferMode === \"separate\" ? gl.SEPARATE_ATTRIBS : gl.INTERLEAVED_ATTRIBS\n );\n }\n }\n gl.linkProgram(webGLProgram);\n if (!gl.getProgramParameter(webGLProgram, gl.LINK_STATUS)) {\n logProgramError(gl, webGLProgram, glVertShader, glFragShader);\n }\n program._attributeData = extractAttributesFromGlProgram(\n webGLProgram,\n gl,\n !/^[ \\t]*#[ \\t]*version[ \\t]+300[ \\t]+es[ \\t]*$/m.test(program.vertex)\n );\n program._uniformData = getUniformData(webGLProgram, gl);\n program._uniformBlockData = getUboData(webGLProgram, gl);\n gl.deleteShader(glVertShader);\n gl.deleteShader(glFragShader);\n const uniformData = {};\n for (const i in program._uniformData) {\n const data = program._uniformData[i];\n uniformData[i] = {\n location: gl.getUniformLocation(webGLProgram, i),\n value: defaultValue(data.type, data.size)\n };\n }\n const glProgram = new GlProgramData(webGLProgram, uniformData);\n return glProgram;\n}\n\nexport { generateProgram };\n//# sourceMappingURL=generateProgram.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { generateShaderSyncCode } from './GenerateShaderSyncCode.mjs';\nimport { generateProgram } from './program/generateProgram.mjs';\n\n\"use strict\";\nconst defaultSyncData = {\n textureCount: 0,\n blockIndex: 0\n};\nclass GlShaderSystem {\n constructor(renderer) {\n /** @internal */\n this._activeProgram = null;\n this._programDataHash = /* @__PURE__ */ Object.create(null);\n this._shaderSyncFunctions = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n contextChange(gl) {\n this._gl = gl;\n this._programDataHash = /* @__PURE__ */ Object.create(null);\n this._shaderSyncFunctions = /* @__PURE__ */ Object.create(null);\n this._activeProgram = null;\n }\n /**\n * Changes the current shader to the one given in parameter.\n * @param shader - the new shader\n * @param skipSync - false if the shader should automatically sync its uniforms.\n * @returns the glProgram that belongs to the shader.\n */\n bind(shader, skipSync) {\n this._setProgram(shader.glProgram);\n if (skipSync) return;\n defaultSyncData.textureCount = 0;\n defaultSyncData.blockIndex = 0;\n let syncFunction = this._shaderSyncFunctions[shader.glProgram._key];\n if (!syncFunction) {\n syncFunction = this._shaderSyncFunctions[shader.glProgram._key] = this._generateShaderSync(shader, this);\n }\n this._renderer.buffer.nextBindBase(!!shader.glProgram.transformFeedbackVaryings);\n syncFunction(this._renderer, shader, defaultSyncData);\n }\n /**\n * Updates the uniform group.\n * @param uniformGroup - the uniform group to update\n */\n updateUniformGroup(uniformGroup) {\n this._renderer.uniformGroup.updateUniformGroup(uniformGroup, this._activeProgram, defaultSyncData);\n }\n /**\n * Binds a uniform block to the shader.\n * @param uniformGroup - the uniform group to bind\n * @param name - the name of the uniform block\n * @param index - the index of the uniform block\n */\n bindUniformBlock(uniformGroup, name, index = 0) {\n const bufferSystem = this._renderer.buffer;\n const programData = this._getProgramData(this._activeProgram);\n const isBufferResource = uniformGroup._bufferResource;\n if (!isBufferResource) {\n this._renderer.ubo.updateUniformGroup(uniformGroup);\n }\n const buffer = uniformGroup.buffer;\n const glBuffer = bufferSystem.updateBuffer(buffer);\n const boundLocation = bufferSystem.freeLocationForBufferBase(glBuffer);\n if (isBufferResource) {\n const { offset, size } = uniformGroup;\n if (offset === 0 && size === buffer.data.byteLength) {\n bufferSystem.bindBufferBase(glBuffer, boundLocation);\n } else {\n bufferSystem.bindBufferRange(glBuffer, boundLocation, offset);\n }\n } else if (bufferSystem.getLastBindBaseLocation(glBuffer) !== boundLocation) {\n bufferSystem.bindBufferBase(glBuffer, boundLocation);\n }\n const uniformBlockIndex = this._activeProgram._uniformBlockData[name].index;\n if (programData.uniformBlockBindings[index] === boundLocation) return;\n programData.uniformBlockBindings[index] = boundLocation;\n this._renderer.gl.uniformBlockBinding(programData.program, uniformBlockIndex, boundLocation);\n }\n _setProgram(program) {\n if (this._activeProgram === program) return;\n this._activeProgram = program;\n const programData = this._getProgramData(program);\n this._gl.useProgram(programData.program);\n }\n /**\n * @param program - the program to get the data for\n * @internal\n */\n _getProgramData(program) {\n return this._programDataHash[program._key] || this._createProgramData(program);\n }\n _createProgramData(program) {\n const key = program._key;\n this._programDataHash[key] = generateProgram(this._gl, program);\n return this._programDataHash[key];\n }\n destroy() {\n for (const key of Object.keys(this._programDataHash)) {\n this._programDataHash[key].destroy();\n }\n this._programDataHash = null;\n this._shaderSyncFunctions = null;\n this._activeProgram = null;\n this._renderer = null;\n this._gl = null;\n }\n /**\n * Creates a function that can be executed that will sync the shader as efficiently as possible.\n * Overridden by the unsafe eval package if you don't want eval used in your project.\n * @param shader - the shader to generate the sync function for\n * @param shaderSystem - the shader system to use\n * @returns - the generated sync function\n * @ignore\n */\n _generateShaderSync(shader, shaderSystem) {\n return generateShaderSyncCode(shader, shaderSystem);\n }\n resetState() {\n this._activeProgram = null;\n }\n}\n/** @ignore */\nGlShaderSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"shader\"\n};\n\nexport { GlShaderSystem };\n//# sourceMappingURL=GlShaderSystem.mjs.map\n","\"use strict\";\nconst UNIFORM_TO_SINGLE_SETTERS = {\n f32: `if (cv !== v) {\n cu.value = v;\n gl.uniform1f(location, v);\n }`,\n \"vec2<f32>\": `if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2f(location, v[0], v[1]);\n }`,\n \"vec3<f32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3f(location, v[0], v[1], v[2]);\n }`,\n \"vec4<f32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4f(location, v[0], v[1], v[2], v[3]);\n }`,\n i32: `if (cv !== v) {\n cu.value = v;\n gl.uniform1i(location, v);\n }`,\n \"vec2<i32>\": `if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2i(location, v[0], v[1]);\n }`,\n \"vec3<i32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3i(location, v[0], v[1], v[2]);\n }`,\n \"vec4<i32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }`,\n u32: `if (cv !== v) {\n cu.value = v;\n gl.uniform1ui(location, v);\n }`,\n \"vec2<u32>\": `if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2ui(location, v[0], v[1]);\n }`,\n \"vec3<u32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3ui(location, v[0], v[1], v[2]);\n }`,\n \"vec4<u32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4ui(location, v[0], v[1], v[2], v[3]);\n }`,\n bool: `if (cv !== v) {\n cu.value = v;\n gl.uniform1i(location, v);\n }`,\n \"vec2<bool>\": `if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2i(location, v[0], v[1]);\n }`,\n \"vec3<bool>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3i(location, v[0], v[1], v[2]);\n }`,\n \"vec4<bool>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }`,\n \"mat2x2<f32>\": `gl.uniformMatrix2fv(location, false, v);`,\n \"mat3x3<f32>\": `gl.uniformMatrix3fv(location, false, v);`,\n \"mat4x4<f32>\": `gl.uniformMatrix4fv(location, false, v);`\n};\nconst UNIFORM_TO_ARRAY_SETTERS = {\n f32: `gl.uniform1fv(location, v);`,\n \"vec2<f32>\": `gl.uniform2fv(location, v);`,\n \"vec3<f32>\": `gl.uniform3fv(location, v);`,\n \"vec4<f32>\": `gl.uniform4fv(location, v);`,\n \"mat2x2<f32>\": `gl.uniformMatrix2fv(location, false, v);`,\n \"mat3x3<f32>\": `gl.uniformMatrix3fv(location, false, v);`,\n \"mat4x4<f32>\": `gl.uniformMatrix4fv(location, false, v);`,\n i32: `gl.uniform1iv(location, v);`,\n \"vec2<i32>\": `gl.uniform2iv(location, v);`,\n \"vec3<i32>\": `gl.uniform3iv(location, v);`,\n \"vec4<i32>\": `gl.uniform4iv(location, v);`,\n u32: `gl.uniform1iv(location, v);`,\n \"vec2<u32>\": `gl.uniform2iv(location, v);`,\n \"vec3<u32>\": `gl.uniform3iv(location, v);`,\n \"vec4<u32>\": `gl.uniform4iv(location, v);`,\n bool: `gl.uniform1iv(location, v);`,\n \"vec2<bool>\": `gl.uniform2iv(location, v);`,\n \"vec3<bool>\": `gl.uniform3iv(location, v);`,\n \"vec4<bool>\": `gl.uniform4iv(location, v);`\n};\n\nexport { UNIFORM_TO_ARRAY_SETTERS, UNIFORM_TO_SINGLE_SETTERS };\n//# sourceMappingURL=generateUniformsSyncTypes.mjs.map\n","import { BufferResource } from '../../../shared/buffer/BufferResource.mjs';\nimport { UniformGroup } from '../../../shared/shader/UniformGroup.mjs';\nimport { uniformParsers } from '../../../shared/shader/utils/uniformParsers.mjs';\nimport { UNIFORM_TO_SINGLE_SETTERS, UNIFORM_TO_ARRAY_SETTERS } from './generateUniformsSyncTypes.mjs';\n\n\"use strict\";\nfunction generateUniformsSync(group, uniformData) {\n const funcFragments = [`\n var v = null;\n var cv = null;\n var cu = null;\n var t = 0;\n var gl = renderer.gl;\n var name = null;\n `];\n for (const i in group.uniforms) {\n if (!uniformData[i]) {\n if (group.uniforms[i] instanceof UniformGroup) {\n if (group.uniforms[i].ubo) {\n funcFragments.push(`\n renderer.shader.bindUniformBlock(uv.${i}, \"${i}\");\n `);\n } else {\n funcFragments.push(`\n renderer.shader.updateUniformGroup(uv.${i});\n `);\n }\n } else if (group.uniforms[i] instanceof BufferResource) {\n funcFragments.push(`\n renderer.shader.bindBufferResource(uv.${i}, \"${i}\");\n `);\n }\n continue;\n }\n const uniform = group.uniformStructures[i];\n let parsed = false;\n for (let j = 0; j < uniformParsers.length; j++) {\n const parser = uniformParsers[j];\n if (uniform.type === parser.type && parser.test(uniform)) {\n funcFragments.push(`name = \"${i}\";`, uniformParsers[j].uniform);\n parsed = true;\n break;\n }\n }\n if (!parsed) {\n const templateType = uniform.size === 1 ? UNIFORM_TO_SINGLE_SETTERS : UNIFORM_TO_ARRAY_SETTERS;\n const template = templateType[uniform.type].replace(\"location\", `ud[\"${i}\"].location`);\n funcFragments.push(`\n cu = ud[\"${i}\"];\n cv = cu.value;\n v = uv[\"${i}\"];\n ${template};`);\n }\n }\n return new Function(\"ud\", \"uv\", \"renderer\", \"syncData\", funcFragments.join(\"\\n\"));\n}\n\nexport { generateUniformsSync };\n//# sourceMappingURL=generateUniformsSync.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { generateUniformsSync } from './utils/generateUniformsSync.mjs';\n\n\"use strict\";\nclass GlUniformGroupSystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n /** Cache to holds the generated functions. Stored against UniformObjects unique signature. */\n this._cache = {};\n this._uniformGroupSyncHash = {};\n this._renderer = renderer;\n this.gl = null;\n this._cache = {};\n }\n contextChange(gl) {\n this.gl = gl;\n }\n /**\n * Uploads the uniforms values to the currently bound shader.\n * @param group - the uniforms values that be applied to the current shader\n * @param program\n * @param syncData\n * @param syncData.textureCount\n */\n updateUniformGroup(group, program, syncData) {\n const programData = this._renderer.shader._getProgramData(program);\n if (!group.isStatic || group._dirtyId !== programData.uniformDirtyGroups[group.uid]) {\n programData.uniformDirtyGroups[group.uid] = group._dirtyId;\n const syncFunc = this._getUniformSyncFunction(group, program);\n syncFunc(programData.uniformData, group.uniforms, this._renderer, syncData);\n }\n }\n /**\n * Overridable by the pixi.js/unsafe-eval package to use static syncUniforms instead.\n * @param group\n * @param program\n */\n _getUniformSyncFunction(group, program) {\n return this._uniformGroupSyncHash[group._signature]?.[program._key] || this._createUniformSyncFunction(group, program);\n }\n _createUniformSyncFunction(group, program) {\n const uniformGroupSyncHash = this._uniformGroupSyncHash[group._signature] || (this._uniformGroupSyncHash[group._signature] = {});\n const id = this._getSignature(group, program._uniformData, \"u\");\n if (!this._cache[id]) {\n this._cache[id] = this._generateUniformsSync(group, program._uniformData);\n }\n uniformGroupSyncHash[program._key] = this._cache[id];\n return uniformGroupSyncHash[program._key];\n }\n _generateUniformsSync(group, uniformData) {\n return generateUniformsSync(group, uniformData);\n }\n /**\n * Takes a uniform group and data and generates a unique signature for them.\n * @param group - The uniform group to get signature of\n * @param group.uniforms\n * @param uniformData - Uniform information generated by the shader\n * @param preFix\n * @returns Unique signature of the uniform group\n */\n _getSignature(group, uniformData, preFix) {\n const uniforms = group.uniforms;\n const strings = [`${preFix}-`];\n for (const i in uniforms) {\n strings.push(i);\n if (uniformData[i]) {\n strings.push(uniformData[i].type);\n }\n }\n return strings.join(\"-\");\n }\n /** Destroys this System and removes all its textures. */\n destroy() {\n this._renderer = null;\n this._cache = null;\n }\n}\n/** @ignore */\nGlUniformGroupSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"uniformGroup\"\n};\n\nexport { GlUniformGroupSystem };\n//# sourceMappingURL=GlUniformGroupSystem.mjs.map\n","\"use strict\";\nconst WGSL_ALIGN_SIZE_DATA = {\n i32: { align: 4, size: 4 },\n u32: { align: 4, size: 4 },\n f32: { align: 4, size: 4 },\n f16: { align: 2, size: 2 },\n \"vec2<i32>\": { align: 8, size: 8 },\n \"vec2<u32>\": { align: 8, size: 8 },\n \"vec2<f32>\": { align: 8, size: 8 },\n \"vec2<f16>\": { align: 4, size: 4 },\n \"vec3<i32>\": { align: 16, size: 12 },\n \"vec3<u32>\": { align: 16, size: 12 },\n \"vec3<f32>\": { align: 16, size: 12 },\n \"vec3<f16>\": { align: 8, size: 6 },\n \"vec4<i32>\": { align: 16, size: 16 },\n \"vec4<u32>\": { align: 16, size: 16 },\n \"vec4<f32>\": { align: 16, size: 16 },\n \"vec4<f16>\": { align: 8, size: 8 },\n \"mat2x2<f32>\": { align: 8, size: 16 },\n \"mat2x2<f16>\": { align: 4, size: 8 },\n \"mat3x2<f32>\": { align: 8, size: 24 },\n \"mat3x2<f16>\": { align: 4, size: 12 },\n \"mat4x2<f32>\": { align: 8, size: 32 },\n \"mat4x2<f16>\": { align: 4, size: 16 },\n \"mat2x3<f32>\": { align: 16, size: 32 },\n \"mat2x3<f16>\": { align: 8, size: 16 },\n \"mat3x3<f32>\": { align: 16, size: 48 },\n \"mat3x3<f16>\": { align: 8, size: 24 },\n \"mat4x3<f32>\": { align: 16, size: 64 },\n \"mat4x3<f16>\": { align: 8, size: 32 },\n \"mat2x4<f32>\": { align: 16, size: 32 },\n \"mat2x4<f16>\": { align: 8, size: 16 },\n \"mat3x4<f32>\": { align: 16, size: 48 },\n \"mat3x4<f16>\": { align: 8, size: 24 },\n \"mat4x4<f32>\": { align: 16, size: 64 },\n \"mat4x4<f16>\": { align: 8, size: 32 }\n};\nfunction createUboElementsWGSL(uniformData) {\n const uboElements = uniformData.map((data) => ({\n data,\n offset: 0,\n size: 0\n }));\n let offset = 0;\n for (let i = 0; i < uboElements.length; i++) {\n const uboElement = uboElements[i];\n let size = WGSL_ALIGN_SIZE_DATA[uboElement.data.type].size;\n const align = WGSL_ALIGN_SIZE_DATA[uboElement.data.type].align;\n if (!WGSL_ALIGN_SIZE_DATA[uboElement.data.type]) {\n throw new Error(`[Pixi.js] WebGPU UniformBuffer: Unknown type ${uboElement.data.type}`);\n }\n if (uboElement.data.size > 1) {\n size = Math.max(size, align) * uboElement.data.size;\n }\n offset = Math.ceil(offset / align) * align;\n uboElement.size = size;\n uboElement.offset = offset;\n offset += size;\n }\n offset = Math.ceil(offset / 16) * 16;\n return { uboElements, size: offset };\n}\n\nexport { WGSL_ALIGN_SIZE_DATA, createUboElementsWGSL };\n//# sourceMappingURL=createUboElementsWGSL.mjs.map\n","import { WGSL_ALIGN_SIZE_DATA } from './createUboElementsWGSL.mjs';\n\n\"use strict\";\nfunction generateArraySyncWGSL(uboElement, offsetToAdd) {\n const { size, align } = WGSL_ALIGN_SIZE_DATA[uboElement.data.type];\n const remainder = (align - size) / 4;\n const data = uboElement.data.type.indexOf(\"i32\") >= 0 ? \"dataInt32\" : \"data\";\n return `\n v = uv.${uboElement.data.name};\n ${offsetToAdd !== 0 ? `offset += ${offsetToAdd};` : \"\"}\n\n arrayOffset = offset;\n\n t = 0;\n\n for(var i=0; i < ${uboElement.data.size * (size / 4)}; i++)\n {\n for(var j = 0; j < ${size / 4}; j++)\n {\n ${data}[arrayOffset++] = v[t++];\n }\n ${remainder !== 0 ? `arrayOffset += ${remainder};` : \"\"}\n }\n `;\n}\n\nexport { generateArraySyncWGSL };\n//# sourceMappingURL=generateArraySyncWGSL.mjs.map\n","import { createUboSyncFunction } from '../../../shared/shader/utils/createUboSyncFunction.mjs';\nimport { uboSyncFunctionsWGSL } from '../../../shared/shader/utils/uboSyncFunctions.mjs';\nimport { generateArraySyncWGSL } from './generateArraySyncWGSL.mjs';\n\n\"use strict\";\nfunction createUboSyncFunctionWGSL(uboElements) {\n return createUboSyncFunction(\n uboElements,\n \"uboWgsl\",\n generateArraySyncWGSL,\n uboSyncFunctionsWGSL\n );\n}\n\nexport { createUboSyncFunctionWGSL };\n//# sourceMappingURL=createUboSyncFunctionWGSL.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { UboSystem } from '../shared/shader/UboSystem.mjs';\nimport { createUboElementsWGSL } from './shader/utils/createUboElementsWGSL.mjs';\nimport { createUboSyncFunctionWGSL } from './shader/utils/createUboSyncFunctionWGSL.mjs';\n\n\"use strict\";\nclass GpuUboSystem extends UboSystem {\n constructor() {\n super({\n createUboElements: createUboElementsWGSL,\n generateUboSync: createUboSyncFunctionWGSL\n });\n }\n}\n/** @ignore */\nGpuUboSystem.extension = {\n type: [ExtensionType.WebGPUSystem],\n name: \"ubo\"\n};\n\nexport { GpuUboSystem };\n//# sourceMappingURL=GpuUboSystem.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 /**\n * Get the red component of the color, normalized between 0 and 1.\n * @example\n * ```ts\n * const color = new Color('red');\n * console.log(color.red); // 1\n *\n * const green = new Color('#00ff00');\n * console.log(green.red); // 0\n * ```\n */\n get red() {\n return this._components[0];\n }\n /**\n * Get the green component of the color, normalized between 0 and 1.\n * @example\n * ```ts\n * const color = new Color('lime');\n * console.log(color.green); // 1\n *\n * const red = new Color('#ff0000');\n * console.log(red.green); // 0\n * ```\n */\n get green() {\n return this._components[1];\n }\n /**\n * Get the blue component of the color, normalized between 0 and 1.\n * @example\n * ```ts\n * const color = new Color('blue');\n * console.log(color.blue); // 1\n *\n * const yellow = new Color('#ffff00');\n * console.log(yellow.blue); // 0\n * ```\n */\n get blue() {\n return this._components[2];\n }\n /**\n * Get the alpha component of the color, normalized between 0 and 1.\n * @example\n * ```ts\n * const color = new Color('red');\n * console.log(color.alpha); // 1 (fully opaque)\n *\n * const transparent = new Color('rgba(255, 0, 0, 0.5)');\n * console.log(transparent.alpha); // 0.5 (semi-transparent)\n * ```\n */\n get alpha() {\n return this._components[3];\n }\n /**\n * Sets the color value and returns the instance for chaining.\n *\n * This is a chainable version of setting the `value` property.\n * @param value - The color to set. Accepts various formats:\n * - Hex strings/numbers (e.g., '#ff0000', 0xff0000)\n * - RGB/RGBA values (arrays, objects)\n * - CSS color names\n * - HSL/HSLA values\n * - HSV/HSVA values\n * @returns The Color instance for chaining\n * @example\n * ```ts\n * // Basic usage\n * const color = new Color();\n * color.setValue('#ff0000')\n * .setAlpha(0.5)\n * .premultiply(0.8);\n *\n * // Different formats\n * color.setValue(0xff0000); // Hex number\n * color.setValue('#ff0000'); // Hex string\n * color.setValue([1, 0, 0]); // RGB array\n * color.setValue([1, 0, 0, 0.5]); // RGBA array\n * color.setValue({ r: 1, g: 0, b: 0 }); // RGB object\n *\n * // Copy from another color\n * const red = new Color('red');\n * color.setValue(red);\n * ```\n * @throws {Error} If the color value is invalid or null\n * @see {@link Color.value} For the underlying value property\n */\n setValue(value) {\n this.value = value;\n return this;\n }\n /**\n * The current color source. This property allows getting and setting the color value\n * while preserving the original format where possible.\n * @remarks\n * When setting:\n * - Setting to a `Color` instance copies its source and components\n * - Setting to other valid sources normalizes and stores the value\n * - Setting to `null` throws an Error\n * - The color remains unchanged if normalization fails\n *\n * When getting:\n * - Returns `null` if color was modified by {@link Color.multiply} or {@link Color.premultiply}\n * - Otherwise returns the original color source\n * @example\n * ```ts\n * // Setting different color formats\n * const color = new Color();\n *\n * color.value = 0xff0000; // Hex number\n * color.value = '#ff0000'; // Hex string\n * color.value = [1, 0, 0]; // RGB array\n * color.value = [1, 0, 0, 0.5]; // RGBA array\n * color.value = { r: 1, g: 0, b: 0 }; // RGB object\n *\n * // Copying from another color\n * const red = new Color('red');\n * color.value = red; // Copies red's components\n *\n * // Getting the value\n * console.log(color.value); // Returns original format\n *\n * // After modifications\n * color.multiply([0.5, 0.5, 0.5]);\n * console.log(color.value); // Returns null\n * ```\n * @throws {Error} When attempting to set `null`\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 with normalized components (0-1).\n * @example\n * ```ts\n * import { Color } from 'pixi.js';\n *\n * // Convert colors to RGBA objects\n * new Color('white').toRgba(); // returns { r: 1, g: 1, b: 1, a: 1 }\n * new Color('#ff0000').toRgba(); // returns { r: 1, g: 0, b: 0, a: 1 }\n *\n * // With transparency\n * new Color('rgba(255,0,0,0.5)').toRgba(); // returns { r: 1, g: 0, b: 0, a: 0.5 }\n * ```\n * @returns An RGBA object with normalized components\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 with normalized components (0-1).\n *\n * Alpha component is omitted in the output.\n * @example\n * ```ts\n * import { Color } from 'pixi.js';\n *\n * // Convert colors to RGB objects\n * new Color('white').toRgb(); // returns { r: 1, g: 1, b: 1 }\n * new Color('#ff0000').toRgb(); // returns { r: 1, g: 0, b: 0 }\n *\n * // Alpha is ignored\n * new Color('rgba(255,0,0,0.5)').toRgb(); // returns { r: 1, g: 0, b: 0 }\n * ```\n * @returns An RGB object with normalized components\n */\n toRgb() {\n const [r, g, b] = this._components;\n return { r, g, b };\n }\n /**\n * Convert to a CSS-style rgba string representation.\n *\n * RGB components are scaled to 0-255 range, alpha remains 0-1.\n * @example\n * ```ts\n * import { Color } from 'pixi.js';\n *\n * // Convert colors to RGBA strings\n * new Color('white').toRgbaString(); // returns \"rgba(255,255,255,1)\"\n * new Color('#ff0000').toRgbaString(); // returns \"rgba(255,0,0,1)\"\n *\n * // With transparency\n * new Color([1, 0, 0, 0.5]).toRgbaString(); // returns \"rgba(255,0,0,0.5)\"\n * ```\n * @returns A CSS-compatible rgba string\n */\n toRgbaString() {\n const [r, g, b] = this.toUint8RgbArray();\n return `rgba(${r},${g},${b},${this.alpha})`;\n }\n /**\n * Convert to an [R, G, B] array of clamped uint8 values (0 to 255).\n * @param {number[]|Uint8Array|Uint8ClampedArray} [out] - Optional output array. If not provided,\n * a cached array will be used and returned.\n * @returns Array containing RGB components as integers between 0-255\n * @example\n * ```ts\n * // Basic usage\n * new Color('white').toUint8RgbArray(); // returns [255, 255, 255]\n * new Color('#ff0000').toUint8RgbArray(); // returns [255, 0, 0]\n *\n * // Using custom output array\n * const rgb = new Uint8Array(3);\n * new Color('blue').toUint8RgbArray(rgb); // rgb is now [0, 0, 255]\n *\n * // Using different array types\n * new Color('red').toUint8RgbArray(new Uint8ClampedArray(3)); // [255, 0, 0]\n * new Color('red').toUint8RgbArray([]); // [255, 0, 0]\n * ```\n * @remarks\n * - Output values are always clamped between 0-255\n * - Alpha component is not included in output\n * - Reuses internal cache array if no output array provided\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 /**\n * Convert to an [R, G, B, A] array of normalized floats (numbers from 0.0 to 1.0).\n * @param {number[]|Float32Array} [out] - Optional output array. If not provided,\n * a cached array will be used and returned.\n * @returns Array containing RGBA components as floats between 0-1\n * @example\n * ```ts\n * // Basic usage\n * new Color('white').toArray(); // returns [1, 1, 1, 1]\n * new Color('red').toArray(); // returns [1, 0, 0, 1]\n *\n * // With alpha\n * new Color('rgba(255,0,0,0.5)').toArray(); // returns [1, 0, 0, 0.5]\n *\n * // Using custom output array\n * const rgba = new Float32Array(4);\n * new Color('blue').toArray(rgba); // rgba is now [0, 0, 1, 1]\n * ```\n * @remarks\n * - Output values are normalized between 0-1\n * - Includes alpha component as the fourth value\n * - Reuses internal cache array if no output array provided\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 /**\n * Convert to an [R, G, B] array of normalized floats (numbers from 0.0 to 1.0).\n * @param {number[]|Float32Array} [out] - Optional output array. If not provided,\n * a cached array will be used and returned.\n * @returns Array containing RGB components as floats between 0-1\n * @example\n * ```ts\n * // Basic usage\n * new Color('white').toRgbArray(); // returns [1, 1, 1]\n * new Color('red').toRgbArray(); // returns [1, 0, 0]\n *\n * // Using custom output array\n * const rgb = new Float32Array(3);\n * new Color('blue').toRgbArray(rgb); // rgb is now [0, 0, 1]\n * ```\n * @remarks\n * - Output values are normalized between 0-1\n * - Alpha component is omitted from output\n * - Reuses internal cache array if no output array provided\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 * @returns The color as a 24-bit RGB integer\n * @example\n * ```ts\n * // Basic usage\n * new Color('white').toNumber(); // returns 0xffffff\n * new Color('red').toNumber(); // returns 0xff0000\n *\n * // Store as hex\n * const color = new Color('blue');\n * const hex = color.toNumber(); // 0x0000ff\n * ```\n */\n toNumber() {\n return this._int;\n }\n /**\n * Convert to a BGR number.\n *\n * Useful for platforms that expect colors in BGR format.\n * @returns The color as a 24-bit BGR integer\n * @example\n * ```ts\n * // Convert RGB to BGR\n * new Color(0xffcc99).toBgrNumber(); // returns 0x99ccff\n *\n * // Common use case: platform-specific color format\n * const color = new Color('orange');\n * const bgrColor = color.toBgrNumber(); // Color with swapped R/B channels\n * ```\n * @remarks\n * This swaps the red and blue channels compared to the normal RGB format:\n * - RGB 0xRRGGBB becomes BGR 0xBBGGRR\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 *\n * Useful for platforms that expect colors in little endian byte order.\n * @example\n * ```ts\n * import { Color } from 'pixi.js';\n *\n * // Convert RGB color to little endian format\n * new Color(0xffcc99).toLittleEndianNumber(); // returns 0x99ccff\n *\n * // Common use cases:\n * const color = new Color('orange');\n * const leColor = color.toLittleEndianNumber(); // Swaps byte order for LE systems\n *\n * // Multiple conversions\n * const colors = {\n * normal: 0xffcc99,\n * littleEndian: new Color(0xffcc99).toLittleEndianNumber(), // 0x99ccff\n * backToNormal: new Color(0x99ccff).toLittleEndianNumber() // 0xffcc99\n * };\n * ```\n * @remarks\n * - Swaps R and B channels in the color value\n * - RGB 0xRRGGBB becomes 0xBBGGRR\n * - Useful for systems that use little endian byte order\n * - Can be used to convert back and forth between formats\n * @returns The color as a number in little endian format (BBGGRR)\n * @see {@link Color.toBgrNumber} For BGR format without byte swapping\n */\n toLittleEndianNumber() {\n const value = this._int;\n return (value >> 16) + (value & 65280) + ((value & 255) << 16);\n }\n /**\n * Multiply with another color.\n *\n * This action is destructive and modifies the original color.\n * @param {ColorSource} value - The color to multiply by. Accepts any valid color format:\n * - Hex strings/numbers (e.g., '#ff0000', 0xff0000)\n * - RGB/RGBA arrays ([1, 0, 0], [1, 0, 0, 1])\n * - Color objects ({ r: 1, g: 0, b: 0 })\n * - CSS color names ('red', 'blue')\n * @returns this - The Color instance for chaining\n * @example\n * ```ts\n * // Basic multiplication\n * const color = new Color('#ff0000');\n * color.multiply(0x808080); // 50% darker red\n *\n * // With transparency\n * color.multiply([1, 1, 1, 0.5]); // 50% transparent\n *\n * // Chain operations\n * color\n * .multiply('#808080')\n * .multiply({ r: 1, g: 1, b: 1, a: 0.5 });\n * ```\n * @remarks\n * - Multiplies each RGB component and alpha separately\n * - Values are clamped between 0-1\n * - Original color format is lost (value becomes null)\n * - Operation cannot be undone\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.\n *\n * This action is destructive and modifies the original color.\n * @param alpha - The alpha value to multiply by (0-1)\n * @param {boolean} [applyToRGB=true] - Whether to premultiply RGB channels\n * @returns {Color} The Color instance for chaining\n * @example\n * ```ts\n * // Basic premultiplication\n * const color = new Color('red');\n * color.premultiply(0.5); // 50% transparent red with premultiplied RGB\n *\n * // Alpha only (RGB unchanged)\n * color.premultiply(0.5, false); // 50% transparent, original RGB\n *\n * // Chain with other operations\n * color\n * .multiply(0x808080)\n * .premultiply(0.5)\n * .toNumber();\n * ```\n * @remarks\n * - RGB channels are multiplied by alpha when applyToRGB is true\n * - Alpha is always set to the provided value\n * - Values are clamped between 0-1\n * - Original color format is lost (value becomes null)\n * - Operation cannot be undone\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 * Returns the color as a 32-bit premultiplied alpha integer.\n *\n * Format: 0xAARRGGBB\n * @param {number} alpha - The alpha value to multiply by (0-1)\n * @param {boolean} [applyToRGB=true] - Whether to premultiply RGB channels\n * @returns {number} The premultiplied color as a 32-bit integer\n * @example\n * ```ts\n * // Convert to premultiplied format\n * const color = new Color('red');\n *\n * // Full opacity (0xFFRRGGBB)\n * color.toPremultiplied(1.0); // 0xFFFF0000\n *\n * // 50% transparency with premultiplied RGB\n * color.toPremultiplied(0.5); // 0x7F7F0000\n *\n * // 50% transparency without RGB premultiplication\n * color.toPremultiplied(0.5, false); // 0x7FFF0000\n * ```\n * @remarks\n * - Returns full opacity (0xFF000000) when alpha is 1.0\n * - Returns 0 when alpha is 0.0 and applyToRGB is true\n * - RGB values are rounded during premultiplication\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 (6 characters).\n * @returns A CSS-compatible hex color string (e.g., \"#ff0000\")\n * @example\n * ```ts\n * import { Color } from 'pixi.js';\n *\n * // Basic colors\n * new Color('red').toHex(); // returns \"#ff0000\"\n * new Color('white').toHex(); // returns \"#ffffff\"\n * new Color('black').toHex(); // returns \"#000000\"\n *\n * // From different formats\n * new Color(0xff0000).toHex(); // returns \"#ff0000\"\n * new Color([1, 0, 0]).toHex(); // returns \"#ff0000\"\n * new Color({ r: 1, g: 0, b: 0 }).toHex(); // returns \"#ff0000\"\n * ```\n * @remarks\n * - Always returns a 6-character hex string\n * - Includes leading \"#\" character\n * - Alpha channel is ignored\n * - Values are rounded to nearest hex value\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 (8 characters).\n * @returns A CSS-compatible hex color string with alpha (e.g., \"#ff0000ff\")\n * @example\n * ```ts\n * import { Color } from 'pixi.js';\n *\n * // Fully opaque colors\n * new Color('red').toHexa(); // returns \"#ff0000ff\"\n * new Color('white').toHexa(); // returns \"#ffffffff\"\n *\n * // With transparency\n * new Color('rgba(255, 0, 0, 0.5)').toHexa(); // returns \"#ff00007f\"\n * new Color([1, 0, 0, 0]).toHexa(); // returns \"#ff000000\"\n * ```\n * @remarks\n * - Returns an 8-character hex string\n * - Includes leading \"#\" character\n * - Alpha is encoded in last two characters\n * - Values are rounded to nearest hex value\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 (transparency) value while preserving color components.\n *\n * Provides a chainable interface for setting alpha.\n * @param alpha - Alpha value between 0 (fully transparent) and 1 (fully opaque)\n * @returns The Color instance for chaining\n * @example\n * ```ts\n * // Basic alpha setting\n * const color = new Color('red');\n * color.setAlpha(0.5); // 50% transparent red\n *\n * // Chain with other operations\n * color\n * .setValue('#ff0000')\n * .setAlpha(0.8) // 80% opaque\n * .premultiply(0.5); // Further modify alpha\n *\n * // Reset to fully opaque\n * color.setAlpha(1);\n * ```\n * @remarks\n * - Alpha value is clamped between 0-1\n * - Can be chained with other color operations\n */\n setAlpha(alpha) {\n this._components[3] = this._clamp(alpha);\n this._value = null;\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 a value can be interpreted as a valid color format.\n * Supports all color formats that can be used with the Color class.\n * @param value - Value to check\n * @returns True if the value can be used as a color\n * @example\n * ```ts\n * import { Color } from 'pixi.js';\n *\n * // CSS colors and hex values\n * Color.isColorLike('red'); // true\n * Color.isColorLike('#ff0000'); // true\n * Color.isColorLike(0xff0000); // true\n *\n * // Arrays (RGB/RGBA)\n * Color.isColorLike([1, 0, 0]); // true\n * Color.isColorLike([1, 0, 0, 0.5]); // true\n *\n * // TypedArrays\n * Color.isColorLike(new Float32Array([1, 0, 0])); // true\n * Color.isColorLike(new Uint8Array([255, 0, 0])); // true\n * Color.isColorLike(new Uint8ClampedArray([255, 0, 0])); // true\n *\n * // Object formats\n * Color.isColorLike({ r: 1, g: 0, b: 0 }); // true (RGB)\n * Color.isColorLike({ r: 1, g: 0, b: 0, a: 0.5 }); // true (RGBA)\n * Color.isColorLike({ h: 0, s: 100, l: 50 }); // true (HSL)\n * Color.isColorLike({ h: 0, s: 100, l: 50, a: 0.5 }); // true (HSLA)\n * Color.isColorLike({ h: 0, s: 100, v: 100 }); // true (HSV)\n * Color.isColorLike({ h: 0, s: 100, v: 100, a: 0.5 });// true (HSVA)\n *\n * // Color instances\n * Color.isColorLike(new Color('red')); // true\n *\n * // Invalid values\n * Color.isColorLike(null); // false\n * Color.isColorLike(undefined); // false\n * Color.isColorLike({}); // false\n * Color.isColorLike([]); // false\n * Color.isColorLike('not-a-color'); // false\n * ```\n * @remarks\n * Checks for the following formats:\n * - Numbers (0x000000 to 0xffffff)\n * - CSS color strings\n * - RGB/RGBA arrays and objects\n * - HSL/HSLA objects\n * - HSV/HSVA objects\n * - TypedArrays (Float32Array, Uint8Array, Uint8ClampedArray)\n * - Color instances\n * @see {@link ColorSource} For supported color format types\n * @see {@link Color.setValue} For setting color values\n * @category utility\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 * Static shared Color instance used for utility operations. This is a singleton color object\n * that can be reused to avoid creating unnecessary Color instances.\n * > [!IMPORTANT] You should be careful when using this shared instance, as it is mutable and can be\n * > changed by any code that uses it.\n * >\n * > It is best used for one-off color operations or temporary transformations.\n * > For persistent colors, create your own Color instance instead.\n * @example\n * ```ts\n * import { Color } from 'pixi.js';\n *\n * // Use shared instance for one-off color operations\n * Color.shared.setValue(0xff0000);\n * const redHex = Color.shared.toHex(); // \"#ff0000\"\n * const redRgb = Color.shared.toRgbArray(); // [1, 0, 0]\n *\n * // Temporary color transformations\n * const colorNumber = Color.shared\n * .setValue('#ff0000') // Set to red\n * .setAlpha(0.5) // Make semi-transparent\n * .premultiply(0.8) // Apply premultiplication\n * .toNumber(); // Convert to number\n *\n * // Chain multiple operations\n * const result = Color.shared\n * .setValue(someColor)\n * .multiply(tintColor)\n * .toPremultiplied(alpha);\n * ```\n * @remarks\n * - This is a shared instance - be careful about multiple code paths using it simultaneously\n * - Use for temporary color operations to avoid allocating new Color instances\n * - The value is preserved between operations, so reset if needed\n * - For persistent colors, create your own Color instance instead\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","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) 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\";\nconst cullingMixin = {\n cullArea: null,\n cullable: false,\n cullableChildren: true\n};\n\nexport { cullingMixin };\n//# sourceMappingURL=cullingMixin.mjs.map\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 /**\n * Position of the point on the x axis\n * @example\n * ```ts\n * // Set x position\n * const point = new Point();\n * point.x = 100;\n *\n * // Use in calculations\n * const width = rightPoint.x - leftPoint.x;\n * ```\n */\n this.x = 0;\n /**\n * Position of the point on the y axis\n * @example\n * ```ts\n * // Set y position\n * const point = new Point();\n * point.y = 200;\n *\n * // Use in calculations\n * const height = bottomPoint.y - topPoint.y;\n * ```\n */\n this.y = 0;\n this.x = x;\n this.y = y;\n }\n /**\n * Creates a clone of this point, which is a new instance with the same `x` and `y` values.\n * @example\n * ```ts\n * // Basic point cloning\n * const original = new Point(100, 200);\n * const copy = original.clone();\n *\n * // Clone and modify\n * const modified = original.clone();\n * modified.set(300, 400);\n *\n * // Verify independence\n * console.log(original); // Point(100, 200)\n * console.log(modified); // Point(300, 400)\n * ```\n * @remarks\n * - Creates new Point instance\n * - Deep copies x and y values\n * - Independent from original\n * - Useful for preserving values\n * @returns A clone of this point\n * @see {@link Point.copyFrom} For copying into existing point\n * @see {@link Point.copyTo} For copying to existing 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 * @example\n * ```ts\n * // Basic copying\n * const source = new Point(100, 200);\n * const target = new Point();\n * target.copyFrom(source);\n *\n * // Copy and chain operations\n * const point = new Point()\n * .copyFrom(source)\n * .set(x + 50, y + 50);\n *\n * // Copy from any PointData\n * const data = { x: 10, y: 20 };\n * point.copyFrom(data);\n * ```\n * @param p - The point to copy from\n * @returns The point instance itself\n * @see {@link Point.copyTo} For copying to another point\n * @see {@link Point.clone} For creating new point copy\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.\n * @example\n * ```ts\n * // Basic copying\n * const source = new Point(100, 200);\n * const target = new Point();\n * source.copyTo(target);\n * ```\n * @param p - The point to copy to. Can be any type that is or extends `PointLike`\n * @returns The point (`p`) with values updated\n * @see {@link Point.copyFrom} For copying from another point\n * @see {@link Point.clone} For creating new point copy\n */\n copyTo(p) {\n p.set(this.x, this.y);\n return p;\n }\n /**\n * Checks if another point is equal to this point.\n *\n * Compares x and y values using strict equality.\n * @example\n * ```ts\n * // Basic equality check\n * const p1 = new Point(100, 200);\n * const p2 = new Point(100, 200);\n * console.log(p1.equals(p2)); // true\n *\n * // Compare with PointData\n * const data = { x: 100, y: 200 };\n * console.log(p1.equals(data)); // true\n *\n * // Check different points\n * const p3 = new Point(200, 300);\n * console.log(p1.equals(p3)); // false\n * ```\n * @param p - The point to check\n * @returns `true` if both `x` and `y` are equal\n * @see {@link Point.copyFrom} For making points equal\n * @see {@link PointData} For point data interface\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 *\n * If y is omitted, both x and y will be set to x.\n * @example\n * ```ts\n * // Basic position setting\n * const point = new Point();\n * point.set(100, 200);\n *\n * // Set both x and y to same value\n * point.set(50); // x=50, y=50\n *\n * // Chain with other operations\n * point\n * .set(10, 20)\n * .copyTo(otherPoint);\n * ```\n * @param x - Position on the x axis\n * @param y - Position on the y axis, defaults to x\n * @returns The point instance itself\n * @see {@link Point.copyFrom} For copying from another point\n * @see {@link Point.equals} For comparing positions\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`.\n *\n * This shared instance is reset to zero values when accessed.\n *\n * > [!IMPORTANT] This point is shared and temporary. Do not store references to it.\n * @example\n * ```ts\n * // Use for temporary calculations\n * const tempPoint = Point.shared;\n * tempPoint.set(100, 200);\n * matrix.apply(tempPoint);\n *\n * // Will be reset to (0,0) on next access\n * const fresh = Point.shared; // x=0, y=0\n * ```\n * @readonly\n * @returns A fresh zeroed point for temporary use\n * @see {@link Point.constructor} For creating new points\n * @see {@link PointData} For basic point interface\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 /**\n * Array representation of the matrix.\n * Only populated when `toArray()` is called.\n * @default null\n * @see {@link Matrix.toArray} For filling this array\n */\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.\n * Populates matrix components from a flat array in column-major order.\n *\n * > [!NOTE] Array mapping order:\n * > ```\n * > array[0] = a (x scale)\n * > array[1] = b (y skew)\n * > array[2] = tx (x translation)\n * > array[3] = c (x skew)\n * > array[4] = d (y scale)\n * > array[5] = ty (y translation)\n * > ```\n * @example\n * ```ts\n * // Create matrix from array\n * const matrix = new Matrix();\n * matrix.fromArray([\n * 2, 0, 100, // a, b, tx\n * 0, 2, 100 // c, d, ty\n * ]);\n *\n * // Create matrix from typed array\n * const float32Array = new Float32Array([\n * 1, 0, 0, // Scale x1, no skew\n * 0, 1, 0 // No skew, scale x1\n * ]);\n * matrix.fromArray(float32Array);\n * ```\n * @param array - The array to populate the matrix from\n * @see {@link Matrix.toArray} For converting matrix to array\n * @see {@link Matrix.set} For setting values directly\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 directly.\n * All matrix components can be set in one call.\n * @example\n * ```ts\n * // Set to identity matrix\n * matrix.set(1, 0, 0, 1, 0, 0);\n *\n * // Set to scale matrix\n * matrix.set(2, 0, 0, 2, 0, 0); // Scale 2x\n *\n * // Set to translation matrix\n * matrix.set(1, 0, 0, 1, 100, 50); // Move 100,50\n * ```\n * @param a - Scale on x axis\n * @param b - Shear on y axis\n * @param c - Shear on x axis\n * @param d - Scale on y axis\n * @param tx - Translation on x axis\n * @param ty - Translation on y axis\n * @returns This matrix. Good for chaining method calls.\n * @see {@link Matrix.identity} For resetting to identity\n * @see {@link Matrix.fromArray} For setting from array\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 *\n * > [!NOTE] The array format is:\n * > ```\n * > Non-transposed:\n * > [a, c, tx,\n * > b, d, ty,\n * > 0, 0, 1]\n * >\n * > Transposed:\n * > [a, b, 0,\n * > c, d, 0,\n * > tx,ty,1]\n * > ```\n * @example\n * ```ts\n * // Basic array conversion\n * const matrix = new Matrix(2, 0, 0, 2, 100, 100);\n * const array = matrix.toArray();\n *\n * // Using existing array\n * const float32Array = new Float32Array(9);\n * matrix.toArray(false, float32Array);\n *\n * // Get transposed array\n * const transposed = matrix.toArray(true);\n * ```\n * @param transpose - Whether to transpose the matrix\n * @param out - Optional Float32Array to store the result\n * @returns The array containing the matrix values\n * @see {@link Matrix.fromArray} For creating matrix from array\n * @see {@link Matrix.array} For cached array storage\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 *\n * Can be used to go from a child's coordinate space to the world coordinate space. (e.g. rendering)\n * @example\n * ```ts\n * // Basic point transformation\n * const matrix = new Matrix().translate(100, 50).rotate(Math.PI / 4);\n * const point = new Point(10, 20);\n * const transformed = matrix.apply(point);\n *\n * // Reuse existing point\n * const output = new Point();\n * matrix.apply(point, output);\n * ```\n * @param pos - The origin point to transform\n * @param newPos - Optional point to store the result\n * @returns The transformed point\n * @see {@link Matrix.applyInverse} For inverse transformation\n * @see {@link Point} For point operations\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 *\n * Can be used to go from the world coordinate space to a child's coordinate space. (e.g. input)\n * @example\n * ```ts\n * // Basic inverse transformation\n * const matrix = new Matrix().translate(100, 50).rotate(Math.PI / 4);\n * const worldPoint = new Point(150, 100);\n * const localPoint = matrix.applyInverse(worldPoint);\n *\n * // Reuse existing point\n * const output = new Point();\n * matrix.applyInverse(worldPoint, output);\n *\n * // Convert mouse position to local space\n * const mousePoint = new Point(mouseX, mouseY);\n * const localMouse = matrix.applyInverse(mousePoint);\n * ```\n * @param pos - The origin point to inverse-transform\n * @param newPos - Optional point to store the result\n * @returns The inverse-transformed point\n * @see {@link Matrix.apply} For forward transformation\n * @see {@link Matrix.invert} For getting inverse 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 axes.\n * Adds to the position values while preserving scale, rotation and skew.\n * @example\n * ```ts\n * // Basic translation\n * const matrix = new Matrix();\n * matrix.translate(100, 50); // Move right 100, down 50\n *\n * // Chain with other transformations\n * matrix\n * .scale(2, 2)\n * .translate(100, 0)\n * .rotate(Math.PI / 4);\n * ```\n * @param x - How much to translate on the x axis\n * @param y - How much to translate on the y axis\n * @returns This matrix. Good for chaining method calls.\n * @see {@link Matrix.set} For setting position directly\n * @see {@link Matrix.setTransform} For complete transform setup\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 * Multiplies the scale values with existing matrix components.\n * @example\n * ```ts\n * // Basic scaling\n * const matrix = new Matrix();\n * matrix.scale(2, 3); // Scale 2x horizontally, 3x vertically\n *\n * // Chain with other transformations\n * matrix\n * .translate(100, 100)\n * .scale(2, 2) // Scales after translation\n * .rotate(Math.PI / 4);\n * ```\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 * @see {@link Matrix.setTransform} For setting scale directly\n * @see {@link Matrix.append} For combining transformations\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 *\n * Rotates around the origin (0,0) by the given angle in radians.\n * @example\n * ```ts\n * // Basic rotation\n * const matrix = new Matrix();\n * matrix.rotate(Math.PI / 4); // Rotate 45 degrees\n *\n * // Chain with other transformations\n * matrix\n * .translate(100, 100) // Move to rotation center\n * .rotate(Math.PI) // Rotate 180 degrees\n * .scale(2, 2); // Scale after rotation\n *\n * // Common angles\n * matrix.rotate(Math.PI / 2); // 90 degrees\n * matrix.rotate(Math.PI); // 180 degrees\n * matrix.rotate(Math.PI * 2); // 360 degrees\n * ```\n * @remarks\n * - Rotates around origin point (0,0)\n * - Affects position if translation was set\n * - Uses counter-clockwise rotation\n * - Order of operations matters when chaining\n * @param angle - The angle in radians\n * @returns This matrix. Good for chaining method calls.\n * @see {@link Matrix.setTransform} For setting rotation directly\n * @see {@link Matrix.append} For combining transformations\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 * Combines two matrices by multiplying them together: this = this * matrix\n * @example\n * ```ts\n * // Basic matrix combination\n * const matrix = new Matrix();\n * const other = new Matrix().translate(100, 0).rotate(Math.PI / 4);\n * matrix.append(other);\n * ```\n * @remarks\n * - Order matters: A.append(B) !== B.append(A)\n * - Modifies current matrix\n * - Preserves transformation order\n * - Commonly used for combining transforms\n * @param matrix - The matrix to append\n * @returns This matrix. Good for chaining method calls.\n * @see {@link Matrix.prepend} For prepending transformations\n * @see {@link Matrix.appendFrom} For appending two external matrices\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 matrices and sets the result to this matrix.\n * Performs matrix multiplication: this = A * B\n * @example\n * ```ts\n * // Basic matrix multiplication\n * const result = new Matrix();\n * const matrixA = new Matrix().scale(2, 2);\n * const matrixB = new Matrix().rotate(Math.PI / 4);\n * result.appendFrom(matrixA, matrixB);\n * ```\n * @remarks\n * - Order matters: A * B !== B * A\n * - Creates a new transformation from two others\n * - More efficient than append() for multiple operations\n * - Does not modify input matrices\n * @param a - The first matrix to multiply\n * @param b - The second matrix to multiply\n * @returns This matrix. Good for chaining method calls.\n * @see {@link Matrix.append} For single matrix combination\n * @see {@link Matrix.prepend} For reverse order multiplication\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 * Combines position, scale, rotation, skew and pivot in a single operation.\n * @example\n * ```ts\n * // Basic transform setup\n * const matrix = new Matrix();\n * matrix.setTransform(\n * 100, 100, // position\n * 0, 0, // pivot\n * 2, 2, // scale\n * Math.PI / 4, // rotation (45 degrees)\n * 0, 0 // skew\n * );\n * ```\n * @remarks\n * - Updates all matrix components at once\n * - More efficient than separate transform calls\n * - Uses radians for rotation and skew\n * - Pivot affects rotation center\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 * @see {@link Matrix.decompose} For extracting transform properties\n * @see {@link TransformableObject} For transform data structure\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 * Combines two matrices by multiplying them together: this = matrix * this\n * @example\n * ```ts\n * // Basic matrix prepend\n * const matrix = new Matrix().scale(2, 2);\n * const other = new Matrix().translate(100, 0);\n * matrix.prepend(other); // Translation happens before scaling\n * ```\n * @remarks\n * - Order matters: A.prepend(B) !== B.prepend(A)\n * - Modifies current matrix\n * - Reverses transformation order compared to append()\n * @param matrix - The matrix to prepend\n * @returns This matrix. Good for chaining method calls.\n * @see {@link Matrix.append} For appending transformations\n * @see {@link Matrix.appendFrom} For combining external matrices\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 into its individual transform components.\n * Extracts position, scale, rotation and skew values from the matrix.\n * @example\n * ```ts\n * // Basic decomposition\n * const matrix = new Matrix()\n * .translate(100, 100)\n * .rotate(Math.PI / 4)\n * .scale(2, 2);\n *\n * const transform = {\n * position: new Point(),\n * scale: new Point(),\n * pivot: new Point(),\n * skew: new Point(),\n * rotation: 0\n * };\n *\n * matrix.decompose(transform);\n * console.log(transform.position); // Point(100, 100)\n * console.log(transform.rotation); // ~0.785 (PI/4)\n * console.log(transform.scale); // Point(2, 2)\n * ```\n * @remarks\n * - Handles combined transformations\n * - Accounts for pivot points\n * - Chooses between rotation/skew based on transform type\n * - Uses radians for rotation and skew\n * @param transform - The transform object to store the decomposed values\n * @returns The transform with the newly applied properties\n * @see {@link Matrix.setTransform} For composing from components\n * @see {@link TransformableObject} For transform structure\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 * Creates the matrix that when multiplied with this matrix results in an identity matrix.\n * @example\n * ```ts\n * // Basic matrix inversion\n * const matrix = new Matrix()\n * .translate(100, 50)\n * .scale(2, 2);\n *\n * matrix.invert(); // Now transforms in opposite direction\n *\n * // Verify inversion\n * const point = new Point(50, 50);\n * const transformed = matrix.apply(point);\n * const original = matrix.invert().apply(transformed);\n * // original ≈ point\n * ```\n * @remarks\n * - Modifies the current matrix\n * - Useful for reversing transformations\n * - Cannot invert matrices with zero determinant\n * @returns This matrix. Good for chaining method calls.\n * @see {@link Matrix.identity} For resetting to identity\n * @see {@link Matrix.applyInverse} For inverse transformations\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 /**\n * Checks if this matrix is an identity matrix.\n *\n * An identity matrix has no transformations applied (default state).\n * @example\n * ```ts\n * // Check if matrix is identity\n * const matrix = new Matrix();\n * console.log(matrix.isIdentity()); // true\n *\n * // Check after transformations\n * matrix.translate(100, 0);\n * console.log(matrix.isIdentity()); // false\n *\n * // Reset and verify\n * matrix.identity();\n * console.log(matrix.isIdentity()); // true\n * ```\n * @remarks\n * - Verifies a = 1, d = 1 (no scale)\n * - Verifies b = 0, c = 0 (no skew)\n * - Verifies tx = 0, ty = 0 (no translation)\n * @returns True if matrix has no transformations\n * @see {@link Matrix.identity} For resetting to identity\n * @see {@link Matrix.IDENTITY} For constant identity matrix\n */\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 * Sets all components to their default values: scale=1, no skew, no translation.\n * @example\n * ```ts\n * // Reset transformed matrix\n * const matrix = new Matrix()\n * .scale(2, 2)\n * .rotate(Math.PI / 4);\n * matrix.identity(); // Back to default state\n *\n * // Chain after reset\n * matrix\n * .identity()\n * .translate(100, 100)\n * .scale(2, 2);\n *\n * // Compare with identity constant\n * const isDefault = matrix.equals(Matrix.IDENTITY);\n * ```\n * @remarks\n * - Sets a=1, d=1 (default scale)\n * - Sets b=0, c=0 (no skew)\n * - Sets tx=0, ty=0 (no translation)\n * @returns This matrix. Good for chaining method calls.\n * @see {@link Matrix.IDENTITY} For constant identity matrix\n * @see {@link Matrix.isIdentity} For checking identity state\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 * Creates a new Matrix object with the same values as this one.\n * @param matrix\n * @example\n * ```ts\n * // Basic matrix cloning\n * const matrix = new Matrix()\n * .translate(100, 100)\n * .rotate(Math.PI / 4);\n * const copy = matrix.clone();\n *\n * // Clone and modify\n * const modified = matrix.clone()\n * .scale(2, 2);\n *\n * // Compare matrices\n * console.log(matrix.equals(copy)); // true\n * console.log(matrix.equals(modified)); // false\n * ```\n * @returns A copy of this matrix. Good for chaining method calls.\n * @see {@link Matrix.copyTo} For copying to existing matrix\n * @see {@link Matrix.copyFrom} For copying from another matrix\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 * @example\n * ```ts\n * // Basic matrix copying\n * const source = new Matrix()\n * .translate(100, 100)\n * .rotate(Math.PI / 4);\n * const target = new Matrix();\n * target.copyFrom(source);\n * ```\n * @param matrix - The matrix to copy from\n * @returns This matrix. Good for chaining method calls.\n * @see {@link Matrix.clone} For creating new matrix copy\n * @see {@link Matrix.copyTo} For copying to another matrix\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 * Checks if this matrix equals another matrix.\n * Compares all components for exact equality.\n * @example\n * ```ts\n * // Basic equality check\n * const m1 = new Matrix();\n * const m2 = new Matrix();\n * console.log(m1.equals(m2)); // true\n *\n * // Compare transformed matrices\n * const transform = new Matrix()\n * .translate(100, 100)\n * const clone = new Matrix()\n * .scale(2, 2);\n * console.log(transform.equals(clone)); // false\n * ```\n * @param matrix - The matrix to compare to\n * @returns True if matrices are identical\n * @see {@link Matrix.copyFrom} For copying matrix values\n * @see {@link Matrix.isIdentity} For identity comparison\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 with no transformations applied.\n *\n * > [!IMPORTANT] This is a shared read-only object. Create a new Matrix if you need to modify it.\n * @example\n * ```ts\n * // Get identity matrix reference\n * const identity = Matrix.IDENTITY;\n * console.log(identity.isIdentity()); // true\n *\n * // Compare with identity\n * const matrix = new Matrix();\n * console.log(matrix.equals(Matrix.IDENTITY)); // true\n *\n * // Create new matrix instead of modifying IDENTITY\n * const transform = new Matrix()\n * .copyFrom(Matrix.IDENTITY)\n * .translate(100, 100);\n * ```\n * @readonly\n * @returns A read-only identity matrix\n * @see {@link Matrix.shared} For temporary calculations\n * @see {@link Matrix.identity} For resetting matrices\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 *\n * > [!IMPORTANT] This matrix is shared and temporary. Do not store references to it.\n * @example\n * ```ts\n * // Use for temporary calculations\n * const tempMatrix = Matrix.shared;\n * tempMatrix.translate(100, 100).rotate(Math.PI / 4);\n * const point = tempMatrix.apply({ x: 10, y: 20 });\n *\n * // Will be reset to identity on next access\n * const fresh = Matrix.shared; // Back to identity\n * ```\n * @remarks\n * - Always returns identity matrix\n * - Safe to modify temporarily\n * - Not safe to store references\n * - Useful for one-off calculations\n * @readonly\n * @returns A fresh identity matrix for temporary use\n * @see {@link Matrix.IDENTITY} For immutable identity matrix\n * @see {@link Matrix.identity} For resetting matrices\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","\"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 * @example\n * ```ts\n * // Basic cloning\n * const point = new ObservablePoint(observer, 100, 200);\n * const copy = point.clone();\n *\n * // Clone with new observer\n * const newObserver = {\n * _onUpdate: (p) => console.log(`Clone updated: (${p.x}, ${p.y})`)\n * };\n * const watched = point.clone(newObserver);\n *\n * // Verify independence\n * watched.set(300, 400); // Only triggers new observer\n * ```\n * @param observer - Optional observer to pass to the new observable point\n * @returns A copy of this observable point\n * @see {@link ObservablePoint.copyFrom} For copying into existing point\n * @see {@link Observer} For observer interface details\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 *\n * If y is omitted, both x and y will be set to x.\n * @example\n * ```ts\n * // Basic position setting\n * const point = new ObservablePoint(observer);\n * point.set(100, 200);\n *\n * // Set both x and y to same value\n * point.set(50); // x=50, y=50\n * ```\n * @param x - Position on the x axis\n * @param y - Position on the y axis, defaults to x\n * @returns The point instance itself\n * @see {@link ObservablePoint.copyFrom} For copying from another point\n * @see {@link ObservablePoint.equals} For comparing positions\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 into this point.\n * @example\n * ```ts\n * // Basic copying\n * const source = new ObservablePoint(observer, 100, 200);\n * const target = new ObservablePoint();\n * target.copyFrom(source);\n *\n * // Copy and chain operations\n * const point = new ObservablePoint()\n * .copyFrom(source)\n * .set(x + 50, y + 50);\n *\n * // Copy from any PointData\n * const data = { x: 10, y: 20 };\n * point.copyFrom(data);\n * ```\n * @param p - The point to copy from\n * @returns The point instance itself\n * @see {@link ObservablePoint.copyTo} For copying to another point\n * @see {@link ObservablePoint.clone} For creating new point copy\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 the given point.\n * @example\n * ```ts\n * // Basic copying\n * const source = new ObservablePoint(100, 200);\n * const target = new ObservablePoint();\n * source.copyTo(target);\n * ```\n * @param p - The point to copy to. Can be any type that is or extends `PointLike`\n * @returns The point (`p`) with values updated\n * @see {@link ObservablePoint.copyFrom} For copying from another point\n * @see {@link ObservablePoint.clone} For creating new point copy\n */\n copyTo(p) {\n p.set(this._x, this._y);\n return p;\n }\n /**\n * Checks if another point is equal to this point.\n *\n * Compares x and y values using strict equality.\n * @example\n * ```ts\n * // Basic equality check\n * const p1 = new ObservablePoint(100, 200);\n * const p2 = new ObservablePoint(100, 200);\n * console.log(p1.equals(p2)); // true\n *\n * // Compare with PointData\n * const data = { x: 100, y: 200 };\n * console.log(p1.equals(data)); // true\n *\n * // Check different points\n * const p3 = new ObservablePoint(200, 300);\n * console.log(p1.equals(p3)); // false\n * ```\n * @param p - The point to check\n * @returns `true` if both `x` and `y` are equal\n * @see {@link ObservablePoint.copyFrom} For making points equal\n * @see {@link PointData} For point data interface\n */\n equals(p) {\n return p.x === this._x && p.y === this._y;\n }\n toString() {\n return `[pixi.js/math:ObservablePoint x=${this._x} y=${this._y} scope=${this._observer}]`;\n }\n /**\n * Position of the observable point on the x axis.\n * Triggers observer callback when value changes.\n * @example\n * ```ts\n * // Basic x position\n * const point = new ObservablePoint(observer);\n * point.x = 100; // Triggers observer\n *\n * // Use in calculations\n * const width = rightPoint.x - leftPoint.x;\n * ```\n * @default 0\n */\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 /**\n * Position of the observable point on the y axis.\n * Triggers observer callback when value changes.\n * @example\n * ```ts\n * // Basic y position\n * const point = new ObservablePoint(observer);\n * point.y = 200; // Triggers observer\n *\n * // Use in calculations\n * const height = bottomPoint.y - topPoint.y;\n * ```\n * @default 0\n */\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\";\nconst GlobalResourceRegistry = {\n /**\n * Set of registered pools and cleanable objects.\n * @private\n */\n _registeredResources: /* @__PURE__ */ new Set(),\n /**\n * Registers a pool or cleanable object for cleanup.\n * @param {Cleanable} pool - The pool or object to register.\n */\n register(pool) {\n this._registeredResources.add(pool);\n },\n /**\n * Unregisters a pool or cleanable object from cleanup.\n * @param {Cleanable} pool - The pool or object to unregister.\n */\n unregister(pool) {\n this._registeredResources.delete(pool);\n },\n /** Clears all registered pools and cleanable objects. This will call clear() on each registered item. */\n release() {\n this._registeredResources.forEach((pool) => pool.clear());\n },\n /**\n * Gets the number of registered pools and cleanable objects.\n * @returns {number} The count of registered items.\n */\n get registeredCount() {\n return this._registeredResources.size;\n },\n /**\n * Checks if a specific pool or cleanable object is registered.\n * @param {Cleanable} pool - The pool or object to check.\n * @returns {boolean} True if the item is registered, false otherwise.\n */\n isRegistered(pool) {\n return this._registeredResources.has(pool);\n },\n /**\n * Removes all registrations without clearing the pools.\n * Useful if you want to reset the collector without affecting the pools.\n */\n reset() {\n this._registeredResources.clear();\n }\n};\n\nexport { GlobalResourceRegistry };\n//# sourceMappingURL=GlobalResourceRegistry.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 {I} [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 this._count++;\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 */\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 */\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 */\n get totalUsed() {\n return this._count - this._index;\n }\n /** clears the pool */\n clear() {\n if (this._pool.length > 0 && this._pool[0].destroy) {\n for (let i = 0; i < this._index; i++) {\n this._pool[i].destroy();\n }\n }\n this._pool.length = 0;\n this._count = 0;\n this._index = 0;\n }\n}\n\nexport { Pool };\n//# sourceMappingURL=Pool.mjs.map\n","import { GlobalResourceRegistry } from './GlobalResourceRegistry.mjs';\nimport { 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 /** Clears all pools in the group. This will reset all pools and free their resources. */\n clear() {\n this._poolsByClass.forEach((pool) => pool.clear());\n this._poolsByClass.clear();\n }\n}\nconst BigPool = new PoolGroupClass();\nGlobalResourceRegistry.register(BigPool);\n\nexport { BigPool, PoolGroupClass };\n//# sourceMappingURL=PoolGroup.mjs.map\n","import { deprecation } from '../../../utils/logging/deprecation.mjs';\n\n\"use strict\";\nconst cacheAsTextureMixin = {\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 updateCacheTexture() {\n this.renderGroup?.updateCacheTexture();\n },\n get cacheAsBitmap() {\n return this.isCachedAsTexture;\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 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) 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 const child = removed[i];\n child.parentRenderLayer?.detach(child);\n this.emit(\"childRemoved\", child, 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 removeChildAt(index) {\n const child = this.getChildAt(index);\n return this.removeChild(child);\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 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 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 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 const sameParent = child.parent === this;\n if (child.parent) {\n const currentIndex = child.parent.children.indexOf(child);\n if (sameParent) {\n if (currentIndex === index) {\n return child;\n }\n child.parent.children.splice(currentIndex, 1);\n } else {\n child.removeFromParent();\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) this.sortDirty = true;\n if (sameParent) {\n return child;\n }\n this.emit(\"childAdded\", child, this, index);\n child.emit(\"added\", this);\n return child;\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 removeFromParent() {\n this.parent?.removeChild(this);\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 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 replaceChild(oldChild, newChild) {\n oldChild.updateLocalTransform();\n this.addChildAt(newChild, this.getChildIndex(oldChild));\n newChild.setFromMatrix(oldChild.localTransform);\n newChild.updateLocalTransform();\n this.removeChild(oldChild);\n }\n};\n\nexport { childrenHelperMixin };\n//# sourceMappingURL=childrenHelperMixin.mjs.map\n","\"use strict\";\nconst collectRenderablesMixin = {\n collectRenderables(instructionSet, renderer, currentLayer) {\n if (this.parentRenderLayer && this.parentRenderLayer !== currentLayer || this.globalDisplayStatus < 7 || !this.includeInBuild) 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 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 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 /** @private */\n this._effectClasses = [];\n this._tests = [];\n this._initialized = false;\n }\n init() {\n if (this._initialized) 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) 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 channel: \"red\"\n },\n _filterEffect: null,\n effects: [],\n _markStructureAsChanged() {\n const renderGroup = this.renderGroup || this.parentRenderGroup;\n if (renderGroup) {\n renderGroup.structureDidChange = true;\n }\n },\n addEffect(effect) {\n const index = this.effects.indexOf(effect);\n if (index !== -1) return;\n this.effects.push(effect);\n this.effects.sort((a, b) => a.priority - b.priority);\n this._markStructureAsChanged();\n this._updateIsSimple();\n },\n removeEffect(effect) {\n const index = this.effects.indexOf(effect);\n if (index === -1) 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) return;\n if (effect) {\n this.removeEffect(effect);\n MaskEffectManager.returnMaskEffect(effect);\n this._maskEffect = null;\n }\n if (value === null || value === void 0) return;\n this._maskEffect = MaskEffectManager.getMaskEffect(value);\n this.addEffect(this._maskEffect);\n },\n get mask() {\n return this._maskEffect?.mask;\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 set filters(value) {\n if (!Array.isArray(value) && value) 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 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 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 label: null,\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 getChildByName(name, deep = false) {\n return this.getChildByLabel(name, deep);\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)) 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 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 { 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 * @example\n * ```ts\n * // Check shape type\n * const shape = new Rectangle(0, 0, 100, 100);\n * console.log(shape.type); // 'rectangle'\n *\n * // Use in type guards\n * if (shape.type === 'rectangle') {\n * console.log(shape.width, shape.height);\n * }\n * ```\n * @readonly\n * @default 'rectangle'\n * @see {@link SHAPE_PRIMITIVE} For all shape types\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 /**\n * Returns the left edge (x-coordinate) of the rectangle.\n * @example\n * ```ts\n * // Get left edge position\n * const rect = new Rectangle(100, 100, 200, 150);\n * console.log(rect.left); // 100\n *\n * // Use in alignment calculations\n * sprite.x = rect.left + padding;\n *\n * // Compare positions\n * if (point.x > rect.left) {\n * console.log('Point is right of rectangle');\n * }\n * ```\n * @readonly\n * @returns The x-coordinate of the left edge\n * @see {@link Rectangle.right} For right edge position\n * @see {@link Rectangle.x} For direct x-coordinate access\n */\n get left() {\n return this.x;\n }\n /**\n * Returns the right edge (x + width) of the rectangle.\n * @example\n * ```ts\n * // Get right edge position\n * const rect = new Rectangle(100, 100, 200, 150);\n * console.log(rect.right); // 300\n *\n * // Align to right edge\n * sprite.x = rect.right - sprite.width;\n *\n * // Check boundaries\n * if (point.x < rect.right) {\n * console.log('Point is inside right bound');\n * }\n * ```\n * @readonly\n * @returns The x-coordinate of the right edge\n * @see {@link Rectangle.left} For left edge position\n * @see {@link Rectangle.width} For width value\n */\n get right() {\n return this.x + this.width;\n }\n /**\n * Returns the top edge (y-coordinate) of the rectangle.\n * @example\n * ```ts\n * // Get top edge position\n * const rect = new Rectangle(100, 100, 200, 150);\n * console.log(rect.top); // 100\n *\n * // Position above rectangle\n * sprite.y = rect.top - sprite.height;\n *\n * // Check vertical position\n * if (point.y > rect.top) {\n * console.log('Point is below top edge');\n * }\n * ```\n * @readonly\n * @returns The y-coordinate of the top edge\n * @see {@link Rectangle.bottom} For bottom edge position\n * @see {@link Rectangle.y} For direct y-coordinate access\n */\n get top() {\n return this.y;\n }\n /**\n * Returns the bottom edge (y + height) of the rectangle.\n * @example\n * ```ts\n * // Get bottom edge position\n * const rect = new Rectangle(100, 100, 200, 150);\n * console.log(rect.bottom); // 250\n *\n * // Stack below rectangle\n * sprite.y = rect.bottom + margin;\n *\n * // Check vertical bounds\n * if (point.y < rect.bottom) {\n * console.log('Point is above bottom edge');\n * }\n * ```\n * @readonly\n * @returns The y-coordinate of the bottom edge\n * @see {@link Rectangle.top} For top edge position\n * @see {@link Rectangle.height} For height value\n */\n get bottom() {\n return this.y + this.height;\n }\n /**\n * Determines whether the Rectangle is empty (has no area).\n * @example\n * ```ts\n * // Check zero dimensions\n * const rect = new Rectangle(100, 100, 0, 50);\n * console.log(rect.isEmpty()); // true\n * ```\n * @returns True if the rectangle has no area\n * @see {@link Rectangle.width} For width value\n * @see {@link Rectangle.height} For height value\n */\n isEmpty() {\n return this.left === this.right || this.top === this.bottom;\n }\n /**\n * A constant empty rectangle. This is a new object every time the property is accessed.\n * @example\n * ```ts\n * // Get fresh empty rectangle\n * const empty = Rectangle.EMPTY;\n * console.log(empty.isEmpty()); // true\n * ```\n * @returns A new empty rectangle instance\n * @see {@link Rectangle.isEmpty} For empty state testing\n */\n static get EMPTY() {\n return new Rectangle(0, 0, 0, 0);\n }\n /**\n * Creates a clone of this Rectangle\n * @example\n * ```ts\n * // Basic cloning\n * const original = new Rectangle(100, 100, 200, 150);\n * const copy = original.clone();\n *\n * // Clone and modify\n * const modified = original.clone();\n * modified.width *= 2;\n * modified.height += 50;\n *\n * // Verify independence\n * console.log(original.width); // 200\n * console.log(modified.width); // 400\n * ```\n * @returns A copy of the rectangle\n * @see {@link Rectangle.copyFrom} For copying into existing rectangle\n * @see {@link Rectangle.copyTo} For copying to another 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 * @example\n * ```ts\n * // Convert bounds to rectangle\n * const bounds = container.getBounds();\n * const rect = new Rectangle().copyFromBounds(bounds);\n * ```\n * @param bounds - The bounds to copy and convert to a rectangle\n * @returns Returns itself\n * @see {@link Bounds} For bounds object structure\n * @see {@link Rectangle.getBounds} For getting rectangle bounds\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 * @example\n * ```ts\n * // Basic copying\n * const source = new Rectangle(100, 100, 200, 150);\n * const target = new Rectangle();\n * target.copyFrom(source);\n *\n * // Chain with other operations\n * const rect = new Rectangle()\n * .copyFrom(source)\n * .pad(10);\n * ```\n * @param rectangle - The rectangle to copy from\n * @returns Returns itself\n * @see {@link Rectangle.copyTo} For copying to another rectangle\n * @see {@link Rectangle.clone} For creating new rectangle copy\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 * @example\n * ```ts\n * // Basic copying\n * const source = new Rectangle(100, 100, 200, 150);\n * const target = new Rectangle();\n * source.copyTo(target);\n *\n * // Chain with other operations\n * const result = source\n * .copyTo(new Rectangle())\n * .getBounds();\n * ```\n * @param rectangle - The rectangle to copy to\n * @returns Returns given parameter\n * @see {@link Rectangle.copyFrom} For copying from another rectangle\n * @see {@link Rectangle.clone} For creating new rectangle copy\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 * @example\n * ```ts\n * // Basic containment check\n * const rect = new Rectangle(100, 100, 200, 150);\n * const isInside = rect.contains(150, 125); // true\n * // Check edge cases\n * console.log(rect.contains(100, 100)); // true (on edge)\n * console.log(rect.contains(300, 250)); // false (outside)\n * ```\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 * @see {@link Rectangle.containsRect} For rectangle containment\n * @see {@link Rectangle.strokeContains} For checking stroke intersection\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 * @example\n * ```ts\n * // Basic stroke check\n * const rect = new Rectangle(100, 100, 200, 150);\n * const isOnStroke = rect.strokeContains(150, 100, 4); // 4px line width\n *\n * // Check with different alignments\n * const innerStroke = rect.strokeContains(150, 100, 4, 1); // Inside\n * const centerStroke = rect.strokeContains(150, 100, 4, 0.5); // Centered\n * const outerStroke = rect.strokeContains(150, 100, 4, 0); // Outside\n * ```\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 (1 = inner, 0.5 = centered, 0 = outer)\n * @returns Whether the x/y coordinates are within this rectangle's stroke\n * @see {@link Rectangle.contains} For checking fill containment\n * @see {@link Rectangle.getBounds} For getting stroke bounds\n */\n strokeContains(x, y, strokeWidth, alignment = 0.5) {\n const { width, height } = this;\n if (width <= 0 || height <= 0) 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 /**\n * Determines whether the `other` Rectangle transformed by `transform` intersects with `this` Rectangle object.\n *\n * Returns true only if the area of the intersection is greater than 0.\n * This means that rectangles sharing only a side are not considered intersecting.\n * @example\n * ```ts\n * // Basic intersection check\n * const rect1 = new Rectangle(0, 0, 100, 100);\n * const rect2 = new Rectangle(50, 50, 100, 100);\n * console.log(rect1.intersects(rect2)); // true\n *\n * // With transformation matrix\n * const matrix = new Matrix();\n * matrix.rotate(Math.PI / 4); // 45 degrees\n * console.log(rect1.intersects(rect2, matrix)); // Checks with rotation\n *\n * // Edge cases\n * const zeroWidth = new Rectangle(0, 0, 0, 100);\n * console.log(rect1.intersects(zeroWidth)); // false (no area)\n * ```\n * @remarks\n * - Returns true only if intersection area is > 0\n * - Rectangles sharing only a side are not intersecting\n * - Zero-area rectangles cannot intersect anything\n * - Supports optional transformation matrix\n * @param other - The Rectangle to intersect with `this`\n * @param transform - Optional transformation matrix of `other`\n * @returns True if the transformed `other` Rectangle intersects with `this`\n * @see {@link Rectangle.containsRect} For containment testing\n * @see {@link Rectangle.contains} For point testing\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 *\n * If paddingY is omitted, both paddingX and paddingY will be set to paddingX.\n * @example\n * ```ts\n * // Basic padding\n * const rect = new Rectangle(100, 100, 200, 150);\n * rect.pad(10); // Adds 10px padding on all sides\n *\n * // Different horizontal and vertical padding\n * const uiRect = new Rectangle(0, 0, 100, 50);\n * uiRect.pad(20, 10); // 20px horizontal, 10px vertical\n * ```\n * @remarks\n * - Adjusts x/y by subtracting padding\n * - Increases width/height by padding * 2\n * - Common in UI layout calculations\n * - Chainable with other methods\n * @param paddingX - The horizontal padding amount\n * @param paddingY - The vertical padding amount\n * @returns Returns itself\n * @see {@link Rectangle.enlarge} For growing to include another rectangle\n * @see {@link Rectangle.fit} For shrinking to fit within another rectangle\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 * @example\n * ```ts\n * // Basic fitting\n * const container = new Rectangle(0, 0, 100, 100);\n * const content = new Rectangle(25, 25, 200, 200);\n * content.fit(container); // Clips to container bounds\n * ```\n * @param rectangle - The rectangle to fit around\n * @returns Returns itself\n * @see {@link Rectangle.enlarge} For growing to include another rectangle\n * @see {@link Rectangle.pad} For adding padding around the rectangle\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 so that its corners lie on a grid defined by resolution.\n * @example\n * ```ts\n * // Basic grid alignment\n * const rect = new Rectangle(10.2, 10.6, 100.8, 100.4);\n * rect.ceil(); // Aligns to whole pixels\n *\n * // Custom resolution grid\n * const uiRect = new Rectangle(5.3, 5.7, 50.2, 50.8);\n * uiRect.ceil(0.5); // Aligns to half pixels\n *\n * // Use with precision value\n * const preciseRect = new Rectangle(20.001, 20.999, 100.001, 100.999);\n * preciseRect.ceil(1, 0.01); // Handles small decimal variations\n * ```\n * @param resolution - The grid size to align to (1 = whole pixels)\n * @param eps - Small number to prevent floating point errors\n * @returns Returns itself\n * @see {@link Rectangle.fit} For constraining to bounds\n * @see {@link Rectangle.enlarge} For growing dimensions\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 * Scales the rectangle's dimensions and position by the specified factors.\n * @example\n * ```ts\n * const rect = new Rectangle(50, 50, 100, 100);\n *\n * // Scale uniformly\n * rect.scale(0.5, 0.5);\n * // rect is now: x=25, y=25, width=50, height=50\n *\n * // non-uniformly\n * rect.scale(0.5, 1);\n * // rect is now: x=25, y=50, width=50, height=100\n * ```\n * @param x - The factor by which to scale the horizontal properties (x, width).\n * @param y - The factor by which to scale the vertical properties (y, height).\n * @returns Returns itself\n */\n scale(x, y = x) {\n this.x *= x;\n this.y *= y;\n this.width *= x;\n this.height *= y;\n return this;\n }\n /**\n * Enlarges this rectangle to include the passed rectangle.\n * @example\n * ```ts\n * // Basic enlargement\n * const rect = new Rectangle(50, 50, 100, 100);\n * const other = new Rectangle(0, 0, 200, 75);\n * rect.enlarge(other);\n * // rect is now: x=0, y=0, width=200, height=150\n *\n * // Use for bounding box calculation\n * const bounds = new Rectangle();\n * objects.forEach((obj) => {\n * bounds.enlarge(obj.getBounds());\n * });\n * ```\n * @param rectangle - The rectangle to include\n * @returns Returns itself\n * @see {@link Rectangle.fit} For shrinking to fit within another rectangle\n * @see {@link Rectangle.pad} For adding padding around the rectangle\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 * @example\n * ```ts\n * // Basic bounds retrieval\n * const rect = new Rectangle(100, 100, 200, 150);\n * const bounds = rect.getBounds();\n *\n * // Reuse existing rectangle\n * const out = new Rectangle();\n * rect.getBounds(out);\n * ```\n * @param out - Optional rectangle to store the result\n * @returns The framing rectangle\n * @see {@link Rectangle.copyFrom} For direct copying\n * @see {@link Rectangle.clone} For creating new copy\n */\n getBounds(out) {\n out || (out = new Rectangle());\n out.copyFrom(this);\n return out;\n }\n /**\n * Determines whether another Rectangle is fully contained within this Rectangle.\n *\n * Rectangles that occupy the same space are considered to be containing each other.\n *\n * Rectangles without area (width or height equal to zero) can't contain anything,\n * not even other arealess rectangles.\n * @example\n * ```ts\n * // Check if one rectangle contains another\n * const container = new Rectangle(0, 0, 100, 100);\n * const inner = new Rectangle(25, 25, 50, 50);\n *\n * console.log(container.containsRect(inner)); // true\n *\n * // Check overlapping rectangles\n * const partial = new Rectangle(75, 75, 50, 50);\n * console.log(container.containsRect(partial)); // false\n *\n * // Zero-area rectangles\n * const empty = new Rectangle(0, 0, 0, 100);\n * console.log(container.containsRect(empty)); // false\n * ```\n * @param other - The Rectangle to check for containment\n * @returns True if other is fully contained within this Rectangle\n * @see {@link Rectangle.contains} For point containment\n * @see {@link Rectangle.intersects} For overlap testing\n */\n containsRect(other) {\n if (this.width <= 0 || this.height <= 0) 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 /**\n * Sets the position and dimensions of the rectangle.\n * @example\n * ```ts\n * // Basic usage\n * const rect = new Rectangle();\n * rect.set(100, 100, 200, 150);\n *\n * // Chain with other operations\n * const bounds = new Rectangle()\n * .set(0, 0, 100, 100)\n * .pad(10);\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 * @returns Returns itself for method chaining\n * @see {@link Rectangle.copyFrom} For copying from another rectangle\n * @see {@link Rectangle.clone} For creating a new copy\n */\n set(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n return this;\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","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 /**\n * Creates a new Bounds object.\n * @param minX - The minimum X coordinate of the bounds.\n * @param minY - The minimum Y coordinate of the bounds.\n * @param maxX - The maximum X coordinate of the bounds.\n * @param maxY - The maximum Y coordinate of the bounds.\n */\n constructor(minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity) {\n /**\n * The minimum X coordinate of the bounds.\n * Represents the leftmost edge of the bounding box.\n * @example\n * ```ts\n * const bounds = new Bounds();\n * // Set left edge\n * bounds.minX = 100;\n * ```\n * @default Infinity\n */\n this.minX = Infinity;\n /**\n * The minimum Y coordinate of the bounds.\n * Represents the topmost edge of the bounding box.\n * @example\n * ```ts\n * const bounds = new Bounds();\n * // Set top edge\n * bounds.minY = 100;\n * ```\n * @default Infinity\n */\n this.minY = Infinity;\n /**\n * The maximum X coordinate of the bounds.\n * Represents the rightmost edge of the bounding box.\n * @example\n * ```ts\n * const bounds = new Bounds();\n * // Set right edge\n * bounds.maxX = 200;\n * // Get width\n * const width = bounds.maxX - bounds.minX;\n * ```\n * @default -Infinity\n */\n this.maxX = -Infinity;\n /**\n * The maximum Y coordinate of the bounds.\n * Represents the bottommost edge of the bounding box.\n * @example\n * ```ts\n * const bounds = new Bounds();\n * // Set bottom edge\n * bounds.maxY = 200;\n * // Get height\n * const height = bounds.maxY - bounds.minY;\n * ```\n * @default -Infinity\n */\n this.maxY = -Infinity;\n /**\n * The transformation matrix applied to this bounds object.\n * Used when calculating bounds with transforms.\n * @example\n * ```ts\n * const bounds = new Bounds();\n *\n * // Apply translation matrix\n * bounds.matrix = new Matrix()\n * .translate(100, 100);\n *\n * // Combine transformations\n * bounds.matrix = new Matrix()\n * .translate(50, 50)\n * .rotate(Math.PI / 4)\n * .scale(2, 2);\n *\n * // Use in bounds calculations\n * bounds.addFrame(0, 0, 100, 100); // Uses current matrix\n * bounds.addFrame(0, 0, 100, 100, customMatrix); // Override matrix\n * ```\n * @advanced\n */\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, meaning either width or height is zero or negative.\n * Empty bounds occur when min values exceed max values on either axis.\n * @example\n * ```ts\n * const bounds = new Bounds();\n *\n * // Check if newly created bounds are empty\n * console.log(bounds.isEmpty()); // true, default bounds are empty\n *\n * // Add frame and check again\n * bounds.addFrame(0, 0, 100, 100);\n * console.log(bounds.isEmpty()); // false, bounds now have area\n *\n * // Clear bounds\n * bounds.clear();\n * console.log(bounds.isEmpty()); // true, bounds are empty again\n * ```\n * @returns True if bounds are empty (have no area)\n * @see {@link Bounds#clear} For resetting bounds\n * @see {@link Bounds#isValid} For checking validity\n */\n isEmpty() {\n return this.minX > this.maxX || this.minY > this.maxY;\n }\n /**\n * The bounding rectangle representation of these bounds.\n * Lazily creates and updates a Rectangle instance based on the current bounds.\n * @example\n * ```ts\n * const bounds = new Bounds(0, 0, 100, 100);\n *\n * // Get rectangle representation\n * const rect = bounds.rectangle;\n * console.log(rect.x, rect.y, rect.width, rect.height);\n *\n * // Use for hit testing\n * if (bounds.rectangle.contains(mouseX, mouseY)) {\n * console.log('Mouse is inside bounds!');\n * }\n * ```\n * @see {@link Rectangle} For rectangle methods\n * @see {@link Bounds.isEmpty} For bounds validation\n */\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 /**\n * Clears the bounds and resets all coordinates to their default values.\n * Resets the transformation matrix back to identity.\n * @example\n * ```ts\n * const bounds = new Bounds(0, 0, 100, 100);\n * console.log(bounds.isEmpty()); // false\n * // Clear the bounds\n * bounds.clear();\n * console.log(bounds.isEmpty()); // true\n * ```\n * @returns This bounds object for chaining\n */\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 directly using coordinate values.\n * Provides a way to set all bounds values at once.\n * @example\n * ```ts\n * const bounds = new Bounds();\n * bounds.set(0, 0, 100, 100);\n * ```\n * @param x0 - Left X coordinate of frame\n * @param y0 - Top Y coordinate of frame\n * @param x1 - Right X coordinate of frame\n * @param y1 - Bottom Y coordinate of frame\n * @see {@link Bounds#addFrame} For matrix-aware bounds setting\n * @see {@link Bounds#clear} For resetting bounds\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 a rectangular frame to the bounds, optionally transformed by a matrix.\n * Updates the bounds to encompass the new frame coordinates.\n * @example\n * ```ts\n * const bounds = new Bounds();\n * bounds.addFrame(0, 0, 100, 100);\n *\n * // Add transformed frame\n * const matrix = new Matrix()\n * .translate(50, 50)\n * .rotate(Math.PI / 4);\n * bounds.addFrame(0, 0, 100, 100, matrix);\n * ```\n * @param x0 - Left X coordinate of frame\n * @param y0 - Top Y coordinate of frame\n * @param x1 - Right X coordinate of frame\n * @param y1 - Bottom Y coordinate of frame\n * @param matrix - Optional transformation matrix\n * @see {@link Bounds#addRect} For adding Rectangle objects\n * @see {@link Bounds#addBounds} For adding other Bounds\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) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n x = a * x1 + c * y0 + tx;\n y = b * x1 + d * y0 + ty;\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 x = a * x0 + c * y1 + tx;\n y = b * x0 + d * y1 + ty;\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 x = a * x1 + c * y1 + tx;\n y = b * x1 + d * y1 + ty;\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 this.minX = minX;\n this.minY = minY;\n this.maxX = maxX;\n this.maxY = maxY;\n }\n /**\n * Adds a rectangle to the bounds, optionally transformed by a matrix.\n * Updates the bounds to encompass the given rectangle.\n * @example\n * ```ts\n * const bounds = new Bounds();\n * // Add simple rectangle\n * const rect = new Rectangle(0, 0, 100, 100);\n * bounds.addRect(rect);\n *\n * // Add transformed rectangle\n * const matrix = new Matrix()\n * .translate(50, 50)\n * .rotate(Math.PI / 4);\n * bounds.addRect(rect, matrix);\n * ```\n * @param rect - The rectangle to be added\n * @param matrix - Optional transformation matrix\n * @see {@link Bounds#addFrame} For adding raw coordinates\n * @see {@link Bounds#addBounds} For adding other 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 another bounds object to this one, optionally transformed by a matrix.\n * Expands the bounds to include the given bounds' area.\n * @example\n * ```ts\n * const bounds = new Bounds();\n *\n * // Add child bounds\n * const childBounds = sprite.getBounds();\n * bounds.addBounds(childBounds);\n *\n * // Add transformed bounds\n * const matrix = new Matrix()\n * .scale(2, 2);\n * bounds.addBounds(childBounds, matrix);\n * ```\n * @param bounds - The bounds to be added\n * @param matrix - Optional transformation matrix\n * @see {@link Bounds#addFrame} For adding raw coordinates\n * @see {@link Bounds#addRect} For adding rectangles\n */\n addBounds(bounds, matrix) {\n this.addFrame(bounds.minX, bounds.minY, bounds.maxX, bounds.maxY, matrix);\n }\n /**\n * Adds other Bounds as a mask, creating an intersection of the two bounds.\n * Only keeps the overlapping region between current bounds and mask bounds.\n * @example\n * ```ts\n * const bounds = new Bounds(0, 0, 100, 100);\n * // Create mask bounds\n * const mask = new Bounds();\n * mask.addFrame(50, 50, 150, 150);\n * // Apply mask - results in bounds of (50,50,100,100)\n * bounds.addBoundsMask(mask);\n * ```\n * @param mask - The Bounds to use as a mask\n * @see {@link Bounds#addBounds} For union operation\n * @see {@link Bounds#fit} For fitting to rectangle\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 * Applies a transformation matrix to the bounds, updating its coordinates.\n * Transforms all corners of the bounds using the given matrix.\n * @example\n * ```ts\n * const bounds = new Bounds(0, 0, 100, 100);\n * // Apply translation\n * const translateMatrix = new Matrix()\n * .translate(50, 50);\n * bounds.applyMatrix(translateMatrix);\n * ```\n * @param matrix - The matrix to apply to the bounds\n * @see {@link Matrix} For matrix operations\n * @see {@link Bounds#addFrame} For adding transformed frames\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 fit within the given rectangle.\n * Clips the bounds if they extend beyond the rectangle's edges.\n * @example\n * ```ts\n * const bounds = new Bounds(0, 0, 200, 200);\n * // Fit within viewport\n * const viewport = new Rectangle(50, 50, 100, 100);\n * bounds.fit(viewport);\n * // bounds are now (50, 50, 150, 150)\n * ```\n * @param rect - The rectangle to fit within\n * @returns This bounds object for chaining\n * @see {@link Bounds#addBoundsMask} For intersection\n * @see {@link Bounds#pad} For expanding bounds\n */\n fit(rect) {\n if (this.minX < rect.left) this.minX = rect.left;\n if (this.maxX > rect.right) this.maxX = rect.right;\n if (this.minY < rect.top) this.minY = rect.top;\n if (this.maxY > rect.bottom) this.maxY = rect.bottom;\n return this;\n }\n /**\n * Resizes the bounds object to include the given bounds.\n * Similar to fit() but works with raw coordinate values instead of a Rectangle.\n * @example\n * ```ts\n * const bounds = new Bounds(0, 0, 200, 200);\n * // Fit to specific coordinates\n * bounds.fitBounds(50, 150, 50, 150);\n * // bounds are now (50, 50, 150, 150)\n * ```\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 * @returns This bounds object for chaining\n * @see {@link Bounds#fit} For fitting to Rectangle\n * @see {@link Bounds#addBoundsMask} For intersection\n */\n fitBounds(left, right, top, bottom) {\n if (this.minX < left) this.minX = left;\n if (this.maxX > right) this.maxX = right;\n if (this.minY < top) this.minY = top;\n if (this.maxY > bottom) 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 * @example\n * ```ts\n * const bounds = new Bounds(0, 0, 100, 100);\n *\n * // Add equal padding\n * bounds.pad(10);\n * // bounds are now (-10, -10, 110, 110)\n *\n * // Add different padding for x and y\n * bounds.pad(20, 10);\n * // bounds are now (-30, -20, 130, 120)\n * ```\n * @param paddingX - The horizontal padding amount\n * @param paddingY - The vertical padding amount\n * @returns This bounds object for chaining\n * @see {@link Bounds#fit} For constraining bounds\n * @see {@link Bounds#scale} For uniform scaling\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 /**\n * Ceils the bounds by rounding up max values and rounding down min values.\n * Useful for pixel-perfect calculations and avoiding fractional pixels.\n * @example\n * ```ts\n * const bounds = new Bounds();\n * bounds.set(10.2, 10.9, 50.1, 50.8);\n *\n * // Round to whole pixels\n * bounds.ceil();\n * // bounds are now (10, 10, 51, 51)\n * ```\n * @returns This bounds object for chaining\n * @see {@link Bounds#scale} For size adjustments\n * @see {@link Bounds#fit} For constraining bounds\n */\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 /**\n * Creates a new Bounds instance with the same values.\n * @example\n * ```ts\n * const bounds = new Bounds(0, 0, 100, 100);\n *\n * // Create a copy\n * const copy = bounds.clone();\n *\n * // Original and copy are independent\n * bounds.pad(10);\n * console.log(copy.width === bounds.width); // false\n * ```\n * @returns A new Bounds instance with the same values\n * @see {@link Bounds#copyFrom} For reusing existing bounds\n */\n clone() {\n return new Bounds(this.minX, this.minY, this.maxX, this.maxY);\n }\n /**\n * Scales the bounds by the given values, adjusting all edges proportionally.\n * @example\n * ```ts\n * const bounds = new Bounds(0, 0, 100, 100);\n *\n * // Scale uniformly\n * bounds.scale(2);\n * // bounds are now (0, 0, 200, 200)\n *\n * // Scale non-uniformly\n * bounds.scale(0.5, 2);\n * // bounds are now (0, 0, 100, 400)\n * ```\n * @param x - The X value to scale by\n * @param y - The Y value to scale by (defaults to x)\n * @returns This bounds object for chaining\n * @see {@link Bounds#pad} For adding padding\n * @see {@link Bounds#fit} For constraining size\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 /**\n * The x position of the bounds in local space.\n * Setting this value will move the bounds while maintaining its width.\n * @example\n * ```ts\n * const bounds = new Bounds(0, 0, 100, 100);\n * // Get x position\n * console.log(bounds.x); // 0\n *\n * // Move bounds horizontally\n * bounds.x = 50;\n * console.log(bounds.minX, bounds.maxX); // 50, 150\n *\n * // Width stays the same\n * console.log(bounds.width); // Still 100\n * ```\n */\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 /**\n * The y position of the bounds in local space.\n * Setting this value will move the bounds while maintaining its height.\n * @example\n * ```ts\n * const bounds = new Bounds(0, 0, 100, 100);\n * // Get y position\n * console.log(bounds.y); // 0\n *\n * // Move bounds vertically\n * bounds.y = 50;\n * console.log(bounds.minY, bounds.maxY); // 50, 150\n *\n * // Height stays the same\n * console.log(bounds.height); // Still 100\n * ```\n */\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 /**\n * The width value of the bounds.\n * Represents the distance between minX and maxX coordinates.\n * @example\n * ```ts\n * const bounds = new Bounds(0, 0, 100, 100);\n * // Get width\n * console.log(bounds.width); // 100\n * // Resize width\n * bounds.width = 200;\n * console.log(bounds.maxX - bounds.minX); // 200\n * ```\n */\n get width() {\n return this.maxX - this.minX;\n }\n set width(value) {\n this.maxX = this.minX + value;\n }\n /**\n * The height value of the bounds.\n * Represents the distance between minY and maxY coordinates.\n * @example\n * ```ts\n * const bounds = new Bounds(0, 0, 100, 100);\n * // Get height\n * console.log(bounds.height); // 100\n * // Resize height\n * bounds.height = 150;\n * console.log(bounds.maxY - bounds.minY); // 150\n * ```\n */\n get height() {\n return this.maxY - this.minY;\n }\n set height(value) {\n this.maxY = this.minY + value;\n }\n /**\n * The left edge coordinate of the bounds.\n * Alias for minX.\n * @example\n * ```ts\n * const bounds = new Bounds(50, 0, 150, 100);\n * console.log(bounds.left); // 50\n * console.log(bounds.left === bounds.minX); // true\n * ```\n * @readonly\n */\n get left() {\n return this.minX;\n }\n /**\n * The right edge coordinate of the bounds.\n * Alias for maxX.\n * @example\n * ```ts\n * const bounds = new Bounds(0, 0, 100, 100);\n * console.log(bounds.right); // 100\n * console.log(bounds.right === bounds.maxX); // true\n * ```\n * @readonly\n */\n get right() {\n return this.maxX;\n }\n /**\n * The top edge coordinate of the bounds.\n * Alias for minY.\n * @example\n * ```ts\n * const bounds = new Bounds(0, 25, 100, 125);\n * console.log(bounds.top); // 25\n * console.log(bounds.top === bounds.minY); // true\n * ```\n * @readonly\n */\n get top() {\n return this.minY;\n }\n /**\n * The bottom edge coordinate of the bounds.\n * Alias for maxY.\n * @example\n * ```ts\n * const bounds = new Bounds(0, 0, 100, 200);\n * console.log(bounds.bottom); // 200\n * console.log(bounds.bottom === bounds.maxY); // true\n * ```\n * @readonly\n */\n get bottom() {\n return this.maxY;\n }\n /**\n * Whether the bounds has positive width and height.\n * Checks if both dimensions are greater than zero.\n * @example\n * ```ts\n * const bounds = new Bounds(0, 0, 100, 100);\n * // Check if bounds are positive\n * console.log(bounds.isPositive); // true\n *\n * // Negative bounds\n * bounds.maxX = bounds.minX;\n * console.log(bounds.isPositive); // false, width is 0\n * ```\n * @readonly\n * @see {@link Bounds#isEmpty} For checking empty state\n * @see {@link Bounds#isValid} For checking validity\n */\n get isPositive() {\n return this.maxX - this.minX > 0 && this.maxY - this.minY > 0;\n }\n /**\n * Whether the bounds has valid coordinates.\n * Checks if the bounds has been initialized with real values.\n * @example\n * ```ts\n * const bounds = new Bounds();\n * console.log(bounds.isValid); // false, default state\n *\n * // Set valid bounds\n * bounds.addFrame(0, 0, 100, 100);\n * console.log(bounds.isValid); // true\n * ```\n * @readonly\n * @see {@link Bounds#isEmpty} For checking empty state\n * @see {@link Bounds#isPositive} For checking dimensions\n */\n get isValid() {\n return this.minX + this.minY !== Infinity;\n }\n /**\n * Adds vertices from a Float32Array to the bounds, optionally transformed by a matrix.\n * Used for efficiently updating bounds from raw vertex data.\n * @example\n * ```ts\n * const bounds = new Bounds();\n *\n * // Add vertices from geometry\n * const vertices = new Float32Array([\n * 0, 0, // Vertex 1\n * 100, 0, // Vertex 2\n * 100, 100 // Vertex 3\n * ]);\n * bounds.addVertexData(vertices, 0, 6);\n *\n * // Add transformed vertices\n * const matrix = new Matrix()\n * .translate(50, 50)\n * .rotate(Math.PI / 4);\n * bounds.addVertexData(vertices, 0, 6, matrix);\n *\n * // Add subset of vertices\n * bounds.addVertexData(vertices, 2, 4); // Only second vertex\n * ```\n * @param vertexData - The array of vertices to add\n * @param beginOffset - Starting index in the vertex array\n * @param endOffset - Ending index in the vertex array (excluded)\n * @param matrix - Optional transformation matrix\n * @see {@link Bounds#addFrame} For adding rectangular frames\n * @see {@link Matrix} For transformation details\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 a point is contained within the bounds.\n * Returns true if the point's coordinates fall within the bounds' area.\n * @example\n * ```ts\n * const bounds = new Bounds(0, 0, 100, 100);\n * // Basic point check\n * console.log(bounds.containsPoint(50, 50)); // true\n * console.log(bounds.containsPoint(150, 150)); // false\n *\n * // Check edges\n * console.log(bounds.containsPoint(0, 0)); // true, includes edges\n * console.log(bounds.containsPoint(100, 100)); // true, includes edges\n * ```\n * @param x - x coordinate to check\n * @param y - y coordinate to check\n * @returns True if the point is inside the bounds\n * @see {@link Bounds#isPositive} For valid bounds check\n * @see {@link Bounds#rectangle} For Rectangle representation\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 /**\n * Returns a string representation of the bounds.\n * Useful for debugging and logging bounds information.\n * @example\n * ```ts\n * const bounds = new Bounds(0, 0, 100, 100);\n * console.log(bounds.toString()); // \"[pixi.js:Bounds minX=0 minY=0 maxX=100 maxY=100 width=100 height=100]\"\n * ```\n * @returns A string describing the bounds\n * @see {@link Bounds#copyFrom} For copying bounds\n * @see {@link Bounds#clone} For creating a new instance\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 * Useful for reusing bounds objects and avoiding allocations.\n * @example\n * ```ts\n * const sourceBounds = new Bounds(0, 0, 100, 100);\n * // Copy bounds\n * const targetBounds = new Bounds();\n * targetBounds.copyFrom(sourceBounds);\n * ```\n * @param bounds - The bounds to copy from\n * @returns This bounds object for chaining\n * @see {@link Bounds#clone} For creating new instances\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","import { Matrix } from '../../../../maths/matrix/Matrix.mjs';\nimport { BigPool } from '../../../../utils/pool/PoolGroup.mjs';\nimport { Bounds } from '../Bounds.mjs';\n\n\"use strict\";\nconst matrixPool = BigPool.getPool(Matrix);\nconst boundsPool = BigPool.getPool(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 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 _getGlobalBoundsRecursive(factorRenderLayers, bounds, currentLayer) {\n let localBounds = bounds;\n if (factorRenderLayers && this.parentRenderLayer && this.parentRenderLayer !== currentLayer) 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 }\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) 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 const renderableBounds = target.bounds;\n if (renderableBounds && !renderableBounds.isEmpty()) {\n bounds.matrix = worldTransform;\n bounds.addBounds(renderableBounds);\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, updateTransformBackwards };\n//# sourceMappingURL=getGlobalBounds.mjs.map\n","\"use strict\";\nfunction multiplyHexColors(color1, color2) {\n if (color1 === 16777215 || !color2) return color2;\n if (color2 === 16777215 || !color1) 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 { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { 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 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 getGlobalTransform(matrix = new 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 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","import { Matrix } from '../../../maths/matrix/Matrix.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) 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}\n\nexport { getLocalBounds };\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 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 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 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 sortDirty: false,\n sortableChildren: false,\n get zIndex() {\n return this._zIndex;\n },\n set zIndex(value) {\n if (this._zIndex === value) 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 sortChildren() {\n if (!this.sortDirty) 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 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 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 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 * Destroy the instruction set, clearing the instructions and renderables.\n * @internal\n */\n destroy() {\n this.instructions.length = 0;\n this.renderables.length = 0;\n this.renderPipes = null;\n this.gcTick = 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 */\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 { 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 * @group groupD8\n * @type {GD8Symmetry}\n */\n E: 0,\n /**\n * | Rotation | Direction |\n * |----------|-----------|\n * | 45°↻ | Southeast |\n * @group groupD8\n * @type {GD8Symmetry}\n */\n SE: 1,\n /**\n * | Rotation | Direction |\n * |----------|-----------|\n * | 90°↻ | South |\n * @group groupD8\n * @type {GD8Symmetry}\n */\n S: 2,\n /**\n * | Rotation | Direction |\n * |----------|-----------|\n * | 135°↻ | Southwest |\n * @group groupD8\n * @type {GD8Symmetry}\n */\n SW: 3,\n /**\n * | Rotation | Direction |\n * |----------|-----------|\n * | 180° | West |\n * @group groupD8\n * @type {GD8Symmetry}\n */\n W: 4,\n /**\n * | Rotation | Direction |\n * |-------------|--------------|\n * | -135°/225°↻ | Northwest |\n * @group groupD8\n * @type {GD8Symmetry}\n */\n NW: 5,\n /**\n * | Rotation | Direction |\n * |-------------|--------------|\n * | -90°/270°↻ | North |\n * @group groupD8\n * @type {GD8Symmetry}\n */\n N: 6,\n /**\n * | Rotation | Direction |\n * |-------------|--------------|\n * | -45°/315°↻ | Northeast |\n * @group groupD8\n * @type {GD8Symmetry}\n */\n NE: 7,\n /**\n * Reflection about Y-axis.\n * @group groupD8\n * @type {GD8Symmetry}\n */\n MIRROR_VERTICAL: 8,\n /**\n * Reflection about the main diagonal.\n * @group groupD8\n * @type {GD8Symmetry}\n */\n MAIN_DIAGONAL: 10,\n /**\n * Reflection about X-axis.\n * @group groupD8\n * @type {GD8Symmetry}\n */\n MIRROR_HORIZONTAL: 12,\n /**\n * Reflection about reverse diagonal.\n * @group groupD8\n * @type {GD8Symmetry}\n */\n REVERSE_DIAGONAL: 14,\n /**\n * @group 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 * @group 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 * @group 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 * @group 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 * @group 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 * @group 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 * @group 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 * @group 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 * @group 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 * @group 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 * @group 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 * @param {number} dw - sprite width\n * @param {number} dh - sprite height\n */\n matrixAppendRotationInv: (matrix, rotation, tx = 0, ty = 0, dw = 0, dh = 0) => {\n const mat = rotationMatrices[groupD8.inv(rotation)];\n const a = mat.a;\n const b = mat.b;\n const c = mat.c;\n const d = mat.d;\n const finalTx = tx - Math.min(0, a * dw, c * dh, a * dw + c * dh);\n const finalTy = ty - Math.min(0, b * dw, d * dh, b * dw + d * dh);\n const a1 = matrix.a;\n const b1 = matrix.b;\n const c1 = matrix.c;\n const d1 = matrix.d;\n matrix.a = a * a1 + b * c1;\n matrix.b = a * b1 + b * d1;\n matrix.c = c * a1 + d * c1;\n matrix.d = c * b1 + d * d1;\n matrix.tx = finalTx * a1 + finalTy * c1 + matrix.tx;\n matrix.ty = finalTx * b1 + finalTy * d1 + matrix.ty;\n },\n /**\n * Transforms rectangle coordinates based on texture packer rotation.\n * Used when texture atlas pages are rotated and coordinates need to be adjusted.\n * @group groupD8\n * @param {RectangleLike} rect - Rectangle with original coordinates to transform\n * @param {RectangleLike} sourceFrame - Source texture frame (includes offset and dimensions)\n * @param {GD8Symmetry} rotation - The groupD8 rotation value\n * @param {Rectangle} out - Rectangle to store the result\n * @returns {Rectangle} Transformed coordinates (includes source frame offset)\n */\n transformRectCoords: (rect, sourceFrame, rotation, out) => {\n const { x, y, width, height } = rect;\n const { x: frameX, y: frameY, width: frameWidth, height: frameHeight } = sourceFrame;\n if (rotation === groupD8.E) {\n out.set(x + frameX, y + frameY, width, height);\n return out;\n } else if (rotation === groupD8.S) {\n return out.set(\n frameWidth - y - height + frameX,\n x + frameY,\n height,\n width\n );\n } else if (rotation === groupD8.W) {\n return out.set(\n frameWidth - x - width + frameX,\n frameHeight - y - height + frameY,\n width,\n height\n );\n } else if (rotation === groupD8.N) {\n return out.set(\n y + frameX,\n frameHeight - x - width + frameY,\n height,\n width\n );\n }\n return out.set(x + frameX, y + frameY, width, height);\n }\n};\n\nexport { groupD8 };\n//# sourceMappingURL=groupD8.mjs.map\n","\"use strict\";\nconst NOOP = () => {\n};\n\nexport { NOOP };\n//# sourceMappingURL=NOOP.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._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 this._texture?.removeListener(\"update\", this.update, this);\n this._texture = value;\n this._texture.addListener(\"update\", this.update, this);\n }\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 {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 this._source.off(\"resize\", this.update, this);\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","import { nextPow2 } from '../../../../maths/misc/pow2.mjs';\nimport { GlobalResourceRegistry } from '../../../../utils/pool/GlobalResourceRegistry.mjs';\nimport { TextureSource } from './sources/TextureSource.mjs';\nimport { Texture } from './Texture.mjs';\nimport { TextureStyle } from './TextureStyle.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 this.textureStyle = new TextureStyle(this.textureOptions);\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 * @param autoGenerateMipmaps - Whether to automatically generate mipmaps for this texture\n */\n createTexture(pixelWidth, pixelHeight, antialias, autoGenerateMipmaps) {\n const textureSource = new TextureSource({\n ...this.textureOptions,\n width: pixelWidth,\n height: pixelHeight,\n resolution: 1,\n antialias,\n autoGarbageCollect: false,\n autoGenerateMipmaps\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 * @param autoGenerateMipmaps - Whether to automatically generate mipmaps. Defaults to false.\n * @returns The new render texture.\n */\n getOptimalTexture(frameWidth, frameHeight, resolution = 1, antialias, autoGenerateMipmaps = false) {\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 antialiasFlag = antialias ? 1 : 0;\n const mipmapFlag = autoGenerateMipmaps ? 1 : 0;\n const key = (po2Width << 17) + (po2Height << 2) + (mipmapFlag << 1) + antialiasFlag;\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, autoGenerateMipmaps);\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 a pooled texture matching the dimensions and resolution of the given texture.\n *\n * This is a convenience wrapper around {@link TexturePoolClass#getOptimalTexture|getOptimalTexture}\n * that copies width, height, and resolution from an existing texture. Useful when a filter needs\n * a temporary texture the same size as its input (e.g., for multi-pass blur).\n * @param texture - The texture whose dimensions to match.\n * @param antialias - Whether to use antialias on the pooled texture. Defaults to `false`.\n * @returns A pooled texture with power-of-two backing dimensions at the source resolution.\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 * Returns a texture to the pool so it can be reused by future\n * {@link TexturePoolClass#getOptimalTexture|getOptimalTexture}\n * or {@link TexturePoolClass#getSameSizeTexture|getSameSizeTexture} calls.\n *\n * If you modified the texture's style after obtaining it (e.g., changed filtering or wrapping),\n * pass `resetStyle = true` to restore the pool's default {@link TexturePoolClass#textureStyle|textureStyle}.\n * This prevents style changes from leaking into subsequent consumers of the same pooled texture.\n * @param renderTexture - The texture to return to the pool.\n * @param resetStyle - When `true`, replaces the texture source's style with the pool default. Defaults to `false`.\n */\n returnTexture(renderTexture, resetStyle = false) {\n const key = this._poolKeyHash[renderTexture.uid];\n if (resetStyle) {\n renderTexture.source.style = this.textureStyle;\n }\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();\nGlobalResourceRegistry.register(TexturePool);\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) 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, true);\n this.texture = null;\n }\n }\n updateCacheTexture() {\n this.textureNeedsUpdate = true;\n const cachedParent = this._parentCacheAsTextureRenderGroup;\n if (cachedParent && !cachedParent.textureNeedsUpdate) {\n cachedParent.updateCacheTexture();\n }\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) 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) 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) 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) 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) 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) 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.isCachedAsTexture) {\n return this.textureOffsetInverseTransform;\n }\n if (!this._parentCacheAsTextureRenderGroup) 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 { warn } from '../../utils/logging/warn.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 defaultOrigin = new ObservablePoint(null);\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 /**\n * unique id for this container\n * @internal\n */\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. Each child must be a Container or extend from it.\n *\n * The array is read-only, but its contents can be modified using Container methods.\n * @example\n * ```ts\n * // Access children\n * const firstChild = container.children[0];\n * const lastChild = container.children[container.children.length - 1];\n * ```\n * @readonly\n * @see {@link Container#addChild} For adding children\n * @see {@link Container#removeChild} For removing children\n */\n this.children = [];\n /**\n * The display object container that contains this display object.\n * This represents the parent-child relationship in the display tree.\n * @example\n * ```ts\n * // Basic parent access\n * const parent = sprite.parent;\n *\n * // Walk up the tree\n * let current = sprite;\n * while (current.parent) {\n * console.log('Level up:', current.parent.constructor.name);\n * current = current.parent;\n * }\n * ```\n * @readonly\n * @see {@link Container#addChild} For adding to a parent\n * @see {@link Container#removeChild} For removing from parent\n */\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 /**\n * The RenderLayer this container belongs to, if any.\n * If it belongs to a RenderLayer, it will be rendered from the RenderLayer's position in the scene.\n * @readonly\n * @advanced\n */\n this.parentRenderLayer = null;\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 /** @internal */\n this.updateTick = -1;\n /**\n * Current transform of the object based on local factors: position, scale, other stuff.\n * This matrix represents the local transformation without any parent influence.\n * @example\n * ```ts\n * // Basic transform access\n * const localMatrix = sprite.localTransform;\n * console.log(localMatrix.toString());\n * ```\n * @readonly\n * @see {@link Container#worldTransform} For global transform\n * @see {@link Container#groupTransform} For render group transform\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 * @advanced\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 * @advanced\n */\n this.groupTransform = this.relativeGroupTransform;\n /**\n * Whether this object has been destroyed. If true, the object should no longer be used.\n * After an object is destroyed, all of its functionality is disabled and references are removed.\n * @example\n * ```ts\n * // Cleanup with destroy\n * sprite.destroy();\n * console.log(sprite.destroyed); // true\n * ```\n * @default false\n * @see {@link Container#destroy} For destroying objects\n */\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 */\n this._position = new ObservablePoint(this, 0, 0);\n /**\n * The scale factor of the object.\n * @internal\n */\n this._scale = defaultScale;\n /**\n * The pivot point of the container that it rotates around.\n * @internal\n */\n this._pivot = defaultPivot;\n /**\n * The origin point around which the container rotates and scales.\n * Unlike pivot, changing origin will not move the container's position.\n * @private\n */\n this._origin = defaultOrigin;\n /**\n * The skew amount, on the x and y axis.\n * @internal\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 */\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 */\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 */\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 */\n this._sy = 1;\n /**\n * The rotation amount.\n * @internal\n */\n this._rotation = 0;\n // / COLOR related props //////////////\n // color stored as ABGR\n /** @internal */\n this.localColor = 16777215;\n /** @internal */\n this.localAlpha = 1;\n /** @internal */\n this.groupAlpha = 1;\n // A\n /** @internal */\n this.groupColor = 16777215;\n // BGR\n /** @internal */\n this.groupColorAlpha = 4294967295;\n // ABGR\n // / BLEND related props //////////////\n /** @internal */\n this.localBlendMode = \"inherit\";\n /** @internal */\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 */\n this.localDisplayStatus = 7;\n // 0b11 | 0b10 | 0b01 | 0b00\n /** @internal */\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 /** @ignore */\n get _didChangeId() {\n return this._didContainerChangeTick & 4095 | (this._didViewChangeTick & 4095) << 12;\n }\n /**\n * Adds one or more children to the container.\n * The children will be rendered as part of this container's display list.\n * @example\n * ```ts\n * // Add a single child\n * container.addChild(sprite);\n *\n * // Add multiple children\n * container.addChild(background, player, foreground);\n *\n * // Add with type checking\n * const sprite = container.addChild<Sprite>(new Sprite(texture));\n * sprite.tint = 'red';\n * ```\n * @param children - The Container(s) to add to the container\n * @returns The first child that was added\n * @see {@link Container#removeChild} For removing children\n * @see {@link Container#addChildAt} For adding at specific index\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) 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 * When removing multiple children, events will be triggered for each child in sequence.\n * @example\n * ```ts\n * // Remove a single child\n * const removed = container.removeChild(sprite);\n *\n * // Remove multiple children\n * const bg = container.removeChild(background, player, userInterface);\n *\n * // Remove with type checking\n * const sprite = container.removeChild<Sprite>(childSprite);\n * sprite.texture = newTexture;\n * ```\n * @param children - The Container(s) to remove\n * @returns The first child that was removed\n * @see {@link Container#addChild} For adding children\n * @see {@link Container#removeChildren} For removing multiple children\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) 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) 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 * @advanced\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 * @advanced\n */\n enableRenderGroup() {\n if (this.renderGroup) 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 /**\n * This will disable the render group for this container.\n * @advanced\n */\n disableRenderGroup() {\n if (!this.renderGroup) 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 *\n * This matrix represents the absolute transformation in the scene graph.\n * @example\n * ```ts\n * // Get world position\n * const worldPos = container.worldTransform;\n * console.log(`World position: (${worldPos.tx}, ${worldPos.ty})`);\n * ```\n * @readonly\n * @see {@link Container#localTransform} For local space transform\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 *\n * An alias to position.x\n * @example\n * ```ts\n * // Basic position\n * container.x = 100;\n * ```\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 *\n * An alias to position.y\n * @example\n * ```ts\n * // Basic position\n * container.y = 200;\n * ```\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 * @example\n * ```ts\n * // Basic position setting\n * container.position.set(100, 200);\n * container.position.set(100); // Sets both x and y to 100\n * // Using point data\n * container.position = { x: 50, y: 75 };\n * ```\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 *\n * > [!NOTE] 'rotation' and 'angle' have the same effect on a display object;\n * > rotation is in radians, angle is in degrees.\n * @example\n * ```ts\n * // Basic rotation\n * container.rotation = Math.PI / 4; // 45 degrees\n *\n * // Convert from degrees\n * const degrees = 45;\n * container.rotation = degrees * Math.PI / 180;\n *\n * // Rotate around center\n * container.pivot.set(container.width / 2, container.height / 2);\n * container.rotation = Math.PI; // 180 degrees\n *\n * // Rotate around center with origin\n * container.origin.set(container.width / 2, container.height / 2);\n * container.rotation = Math.PI; // 180 degrees\n * ```\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 *\n * > [!NOTE] 'rotation' and 'angle' have the same effect on a display object;\n * > rotation is in radians, angle is in degrees.\n * @example\n * ```ts\n * // Basic angle rotation\n * sprite.angle = 45; // 45 degrees\n *\n * // Rotate around center\n * sprite.pivot.set(sprite.width / 2, sprite.height / 2);\n * sprite.angle = 180; // Half rotation\n *\n * // Rotate around center with origin\n * sprite.origin.set(sprite.width / 2, sprite.height / 2);\n * sprite.angle = 180; // Half rotation\n *\n * // Reset rotation\n * sprite.angle = 0;\n * ```\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.\n * The `position` is the projection of `pivot` in the parent's local space.\n *\n * By default, the pivot is the origin (0, 0).\n * @example\n * ```ts\n * // Rotate around center\n * container.pivot.set(container.width / 2, container.height / 2);\n * container.rotation = Math.PI; // Rotates around center\n * ```\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 if (this._origin !== defaultOrigin) {\n warn(`Setting both a pivot and origin on a Container is not recommended. This can lead to unexpected behavior if not handled carefully.`);\n }\n }\n typeof value === \"number\" ? this._pivot.set(value) : this._pivot.copyFrom(value);\n }\n /**\n * The skew factor for the object in radians. Skewing is a transformation that distorts\n * the object by rotating it differently at each point, creating a non-uniform shape.\n * @example\n * ```ts\n * // Basic skewing\n * container.skew.set(0.5, 0); // Skew horizontally\n * container.skew.set(0, 0.5); // Skew vertically\n *\n * // Skew with point data\n * container.skew = { x: 0.3, y: 0.3 }; // Diagonal skew\n *\n * // Reset skew\n * container.skew.set(0, 0);\n *\n * // Animate skew\n * app.ticker.add(() => {\n * // Create wave effect\n * container.skew.x = Math.sin(Date.now() / 1000) * 0.3;\n * });\n *\n * // Combine with rotation\n * container.rotation = Math.PI / 4; // 45 degrees\n * container.skew.set(0.2, 0.2); // Skew the rotated object\n * ```\n * @since 4.0.0\n * @type {ObservablePoint} Point-like object with x/y properties in radians\n * @default {x: 0, y: 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 * @example\n * ```ts\n * // Basic scaling\n * container.scale.set(2, 2); // Scales to double size\n * container.scale.set(2); // Scales uniformly to double size\n * container.scale = 2; // Scales uniformly to double size\n * // Scale to a specific width and height\n * container.setSize(200, 100); // Sets width to 200 and height to 100\n * ```\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 if (typeof value === \"string\") {\n value = parseFloat(value);\n }\n typeof value === \"number\" ? this._scale.set(value) : this._scale.copyFrom(value);\n }\n /**\n * @experimental\n * The origin point around which the container rotates and scales without affecting its position.\n * Unlike pivot, changing the origin will not move the container's position.\n * @example\n * ```ts\n * // Rotate around center point\n * container.origin.set(container.width / 2, container.height / 2);\n * container.rotation = Math.PI; // Rotates around center\n *\n * // Reset origin\n * container.origin.set(0, 0);\n * ```\n */\n get origin() {\n if (this._origin === defaultOrigin) {\n this._origin = new ObservablePoint(this, 0, 0);\n }\n return this._origin;\n }\n set origin(value) {\n if (this._origin === defaultOrigin) {\n this._origin = new ObservablePoint(this, 0, 0);\n if (this._pivot !== defaultPivot) {\n warn(`Setting both a pivot and origin on a Container is not recommended. This can lead to unexpected behavior if not handled carefully.`);\n }\n }\n typeof value === \"number\" ? this._origin.set(value) : this._origin.copyFrom(value);\n }\n /**\n * The width of the Container, setting this will actually modify the scale to achieve the value set.\n * > [!NOTE] Changing the width will adjust the scale.x property of the container while maintaining its aspect ratio.\n * > [!NOTE] If you want to set both width and height at the same time, use {@link Container#setSize}\n * as it is more optimized by not recalculating the local bounds twice.\n * @example\n * ```ts\n * // Basic width setting\n * container.width = 100;\n * // Optimized width setting\n * container.setSize(100, 100);\n * ```\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,\n * > [!NOTE] Changing the height will adjust the scale.y property of the container while maintaining its aspect ratio.\n * > [!NOTE] If you want to set both width and height at the same time, use {@link Container#setSize}\n * as it is more optimized by not recalculating the local bounds twice.\n * @example\n * ```ts\n * // Basic height setting\n * container.height = 200;\n * // Optimized height setting\n * container.setSize(100, 200);\n * ```\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 *\n * This is faster than get the width and height separately.\n * @example\n * ```ts\n * // Basic size retrieval\n * const size = container.getSize();\n * console.log(`Size: ${size.width}x${size.height}`);\n *\n * // Reuse existing size object\n * const reuseSize = { width: 0, height: 0 };\n * container.getSize(reuseSize);\n * ```\n * @param out - Optional object to store the size in.\n * @returns The size of the 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 more efficient than setting width and height separately as it only recalculates bounds once.\n * @example\n * ```ts\n * // Basic size setting\n * container.setSize(100, 200);\n *\n * // Set uniform size\n * container.setSize(100); // Sets both width and height to 100\n * ```\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 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.\n * Allows partial updates of transform properties for optimized manipulation.\n * @example\n * ```ts\n * // Basic transform update\n * container.updateTransform({\n * x: 100,\n * y: 200,\n * rotation: Math.PI / 4\n * });\n *\n * // Scale and rotate around center\n * sprite.updateTransform({\n * pivotX: sprite.width / 2,\n * pivotY: sprite.height / 2,\n * scaleX: 2,\n * scaleY: 2,\n * rotation: Math.PI\n * });\n *\n * // Update position only\n * button.updateTransform({\n * x: button.x + 10, // Move right\n * y: button.y // Keep same y\n * });\n * ```\n * @param opts - Transform options to update\n * @param opts.x - The x position\n * @param opts.y - The y position\n * @param opts.scaleX - The x-axis scale factor\n * @param opts.scaleY - The y-axis scale factor\n * @param opts.rotation - The rotation in radians\n * @param opts.skewX - The x-axis skew factor\n * @param opts.skewY - The y-axis skew factor\n * @param opts.pivotX - The x-axis pivot point\n * @param opts.pivotY - The y-axis pivot point\n * @returns This container, for chaining\n * @see {@link Container#setFromMatrix} For matrix-based transforms\n * @see {@link Container#position} For direct position access\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 this.origin.set(\n typeof opts.originX === \"number\" ? opts.originX : this.origin.x,\n typeof opts.originY === \"number\" ? opts.originY : this.origin.y\n );\n return this;\n }\n /**\n * Updates the local transform properties by decomposing the given matrix.\n * Extracts position, scale, rotation, and skew from a transformation matrix.\n * @example\n * ```ts\n * // Basic matrix transform\n * const matrix = new Matrix()\n * .translate(100, 100)\n * .rotate(Math.PI / 4)\n * .scale(2, 2);\n *\n * container.setFromMatrix(matrix);\n *\n * // Copy transform from another container\n * const source = new Container();\n * source.position.set(100, 100);\n * source.rotation = Math.PI / 2;\n *\n * target.setFromMatrix(source.localTransform);\n *\n * // Reset transform\n * container.setFromMatrix(Matrix.IDENTITY);\n * ```\n * @param matrix - The matrix to use for updating the transform\n * @see {@link Container#updateTransform} For property-based updates\n * @see {@link Matrix#decompose} For matrix decomposition details\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) return;\n this._didLocalTransformChangeId = localTransformChangeId;\n const lt = this.localTransform;\n const scale = this._scale;\n const pivot = this._pivot;\n const origin = this._origin;\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 const ox = -origin._x;\n const oy = -origin._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) + (ox * lt.a + oy * lt.c) - ox;\n lt.ty = position._y - (px * lt.b + py * lt.d) + (ox * lt.b + oy * lt.d) - oy;\n }\n // / ///// color related stuff\n set alpha(value) {\n if (value === this.localAlpha) return;\n this.localAlpha = value;\n this._updateFlags |= UPDATE_COLOR;\n this._onUpdate();\n }\n /**\n * The opacity of the object relative to its parent's opacity.\n * Value ranges from 0 (fully transparent) to 1 (fully opaque).\n * @example\n * ```ts\n * // Basic transparency\n * sprite.alpha = 0.5; // 50% opacity\n *\n * // Inherited opacity\n * container.alpha = 0.5;\n * const child = new Sprite(texture);\n * child.alpha = 0.5;\n * container.addChild(child);\n * // child's effective opacity is 0.25 (0.5 * 0.5)\n * ```\n * @default 1\n * @see {@link Container#visible} For toggling visibility\n * @see {@link Container#renderable} For render control\n */\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) return;\n this.localColor = bgr;\n this._updateFlags |= UPDATE_COLOR;\n this._onUpdate();\n }\n /**\n * The tint applied to the sprite.\n *\n * This can be any valid {@link ColorSource}.\n * @example\n * ```ts\n * // Basic color tinting\n * container.tint = 0xff0000; // Red tint\n * container.tint = 'red'; // Same as above\n * container.tint = '#00ff00'; // Green\n * container.tint = 'rgb(0,0,255)'; // Blue\n *\n * // Remove tint\n * container.tint = 0xffffff; // White = no tint\n * container.tint = null; // Also removes tint\n * ```\n * @default 0xFFFFFF\n * @see {@link Container#alpha} For transparency\n * @see {@link Container#visible} For visibility control\n */\n get tint() {\n return bgr2rgb(this.localColor);\n }\n // / //////////////// blend related stuff\n set blendMode(value) {\n if (this.localBlendMode === value) 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. Controls how pixels are blended when rendering.\n *\n * Setting to 'normal' will reset to default blending.\n * > [!NOTE] More blend modes are available after importing the `pixi.js/advanced-blend-modes` sub-export.\n * @example\n * ```ts\n * // Basic blend modes\n * sprite.blendMode = 'add'; // Additive blending\n * sprite.blendMode = 'multiply'; // Multiply colors\n * sprite.blendMode = 'screen'; // Screen blend\n *\n * // Reset blend mode\n * sprite.blendMode = 'normal'; // Normal blending\n * ```\n * @default 'normal'\n * @see {@link Container#alpha} For transparency\n * @see {@link Container#tint} For color adjustments\n */\n get blendMode() {\n return this.localBlendMode;\n }\n // / ///////// VISIBILITY / RENDERABLE /////////////////\n /**\n * The visibility of the object. If false the object will not be drawn,\n * and the transform will not be updated.\n * @example\n * ```ts\n * // Basic visibility toggle\n * sprite.visible = false; // Hide sprite\n * sprite.visible = true; // Show sprite\n * ```\n * @default true\n * @see {@link Container#renderable} For render-only control\n * @see {@link Container#alpha} For transparency\n */\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) return;\n if (this.parentRenderGroup) {\n this.parentRenderGroup.structureDidChange = true;\n }\n this._updateFlags |= UPDATE_VISIBLE;\n this.localDisplayStatus ^= 2;\n this._onUpdate();\n this.emit(\"visibleChanged\", value);\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) 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 /**\n * Controls whether this object can be rendered. If false the object will not be drawn,\n * but the transform will still be updated. This is different from visible, which skips\n * transform updates.\n * @example\n * ```ts\n * // Basic render control\n * sprite.renderable = false; // Skip rendering\n * sprite.renderable = true; // Enable rendering\n * ```\n * @default true\n * @see {@link Container#visible} For skipping transform updates\n * @see {@link Container#alpha} For transparency\n */\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) 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 /**\n * Whether or not the object should be rendered.\n * @advanced\n */\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 * @example\n * ```ts\n * container.destroy();\n * container.destroy(true);\n * container.destroy({ children: true });\n * container.destroy({ children: true, texture: true, textureSource: true });\n * ```\n */\n destroy(options = false) {\n if (this.destroyed) 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._origin = 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","\"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 * ```ts\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 { uid } from '../../../../utils/data/uid.mjs';\nimport { deprecation, v8_0_0 } from '../../../../utils/logging/deprecation.mjs';\nimport { GlobalResourceRegistry } from '../../../../utils/pool/GlobalResourceRegistry.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 /** The current tick of the renderer. */\n this.tick = 0;\n /** @internal */\n this.uid = uid(\"renderer\");\n /** @internal */\n this.runners = /* @__PURE__ */ Object.create(null);\n /** @internal */\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 this.tick++;\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 if (!options.container.visible) {\n return;\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 /**\n * Clears the render target.\n * @param options - The options to use when clearing the render target.\n * @param options.target - The render target to clear.\n * @param options.clearColor - The color to clear with.\n * @param options.clear - The clear mode to use.\n * @advanced\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, mipLevel, layer } = options;\n Color.shared.setValue(clearColor ?? this.background.colorRgba);\n renderer.renderTarget.clear(target, clear, Color.shared.toArray(), mipLevel ?? 0, layer ?? 0);\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 * @type {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 this.runners.destroy.add(this.renderPipes[name]);\n });\n }\n destroy(options = false) {\n this.runners.destroy.items.reverse();\n this.runners.destroy.emit(options);\n if (options === true || typeof options === \"object\" && options.releaseGlobalResources) {\n GlobalResourceRegistry.release();\n }\n Object.values(this.runners).forEach((runner) => {\n runner.destroy();\n });\n this._systemsHash = null;\n this.renderPipes = null;\n this.removeAllListeners();\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 * @advanced\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 { 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) maxX = x;\n if (y > maxY) maxY = y;\n if (x < minX) minX = x;\n if (y < minY) 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 /** @internal */\n this._gpuData = /* @__PURE__ */ Object.create(null);\n /** If set to true, the resource will be garbage collected automatically when it is not used. */\n this.autoGarbageCollect = true;\n /** @internal */\n this._gcLastUsed = -1;\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 */\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) return this._bounds;\n this._boundsDirty = false;\n return getGeometryBounds(this, \"aPosition\", this._bounds);\n }\n /** Unloads the geometry from the GPU. */\n unload() {\n this.emit(\"unload\", this);\n for (const key in this._gpuData) {\n this._gpuData[key]?.destroy();\n }\n this._gpuData = /* @__PURE__ */ Object.create(null);\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.unload();\n this.indexBuffer?.destroy();\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","\"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.uint32View = null;\n this.float32View = null;\n this.uint16View = null;\n this._int8View = null;\n this._uint8View = null;\n this._int16View = null;\n this._int32View = null;\n this._float64Array = null;\n this._bigUint64Array = 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 createIndicesForQuads(size, outBuffer = null) {\n const totalIndices = size * 6;\n if (totalIndices > 65535) {\n outBuffer || (outBuffer = new Uint32Array(totalIndices));\n } else {\n outBuffer || (outBuffer = new Uint16Array(totalIndices));\n }\n if (outBuffer.length !== totalIndices) {\n throw new Error(`Out buffer length is incorrect, got ${outBuffer.length} and expected ${totalIndices}`);\n }\n for (let i = 0, j = 0; i < totalIndices; i += 6, j += 4) {\n outBuffer[i + 0] = j + 0;\n outBuffer[i + 1] = j + 1;\n outBuffer[i + 2] = j + 2;\n outBuffer[i + 3] = j + 0;\n outBuffer[i + 4] = j + 2;\n outBuffer[i + 5] = j + 3;\n }\n return outBuffer;\n}\n\nexport { createIndicesForQuads };\n//# sourceMappingURL=createIndicesForQuads.mjs.map\n","import { getAttributeInfoFromFormat } from '../../../../rendering/renderers/shared/geometry/utils/getAttributeInfoFromFormat.mjs';\n\n\"use strict\";\nfunction generateParticleUpdateFunction(properties) {\n return {\n dynamicUpdate: generateUpdateFunction(properties, true),\n staticUpdate: generateUpdateFunction(properties, false)\n };\n}\nfunction generateUpdateFunction(properties, dynamic) {\n const funcFragments = [];\n funcFragments.push(`\n\n var index = 0;\n\n for (let i = 0; i < ps.length; ++i)\n {\n const p = ps[i];\n\n `);\n let offset = 0;\n for (const i in properties) {\n const property = properties[i];\n if (dynamic !== property.dynamic) continue;\n funcFragments.push(`offset = index + ${offset}`);\n funcFragments.push(property.code);\n const attributeInfo = getAttributeInfoFromFormat(property.format);\n offset += attributeInfo.stride / 4;\n }\n funcFragments.push(`\n index += stride * 4;\n }\n `);\n funcFragments.unshift(`\n var stride = ${offset};\n `);\n const functionSource = funcFragments.join(\"\\n\");\n return new Function(\"ps\", \"f32v\", \"u32v\", functionSource);\n}\n\nexport { generateParticleUpdateFunction };\n//# sourceMappingURL=generateParticleUpdateFunction.mjs.map\n","import { Buffer } from '../../../rendering/renderers/shared/buffer/Buffer.mjs';\nimport { BufferUsage } from '../../../rendering/renderers/shared/buffer/const.mjs';\nimport { Geometry } from '../../../rendering/renderers/shared/geometry/Geometry.mjs';\nimport { getAttributeInfoFromFormat } from '../../../rendering/renderers/shared/geometry/utils/getAttributeInfoFromFormat.mjs';\nimport { ViewableBuffer } from '../../../utils/data/ViewableBuffer.mjs';\nimport { createIndicesForQuads } from './utils/createIndicesForQuads.mjs';\nimport { generateParticleUpdateFunction } from './utils/generateParticleUpdateFunction.mjs';\n\n\"use strict\";\nclass ParticleBuffer {\n constructor(options) {\n this._size = 0;\n this._generateParticleUpdateCache = {};\n const size = this._size = options.size ?? 1e3;\n const properties = options.properties;\n let staticVertexSize = 0;\n let dynamicVertexSize = 0;\n for (const i in properties) {\n const property = properties[i];\n const attributeInfo = getAttributeInfoFromFormat(property.format);\n if (property.dynamic) {\n dynamicVertexSize += attributeInfo.stride;\n } else {\n staticVertexSize += attributeInfo.stride;\n }\n }\n this._dynamicStride = dynamicVertexSize / 4;\n this._staticStride = staticVertexSize / 4;\n this.staticAttributeBuffer = new ViewableBuffer(size * 4 * staticVertexSize);\n this.dynamicAttributeBuffer = new ViewableBuffer(size * 4 * dynamicVertexSize);\n this.indexBuffer = createIndicesForQuads(size);\n const geometry = new Geometry();\n let dynamicOffset = 0;\n let staticOffset = 0;\n this._staticBuffer = new Buffer({\n data: new Float32Array(1),\n label: \"static-particle-buffer\",\n shrinkToFit: false,\n usage: BufferUsage.VERTEX | BufferUsage.COPY_DST\n });\n this._dynamicBuffer = new Buffer({\n data: new Float32Array(1),\n label: \"dynamic-particle-buffer\",\n shrinkToFit: false,\n usage: BufferUsage.VERTEX | BufferUsage.COPY_DST\n });\n for (const i in properties) {\n const property = properties[i];\n const attributeInfo = getAttributeInfoFromFormat(property.format);\n if (property.dynamic) {\n geometry.addAttribute(property.attributeName, {\n buffer: this._dynamicBuffer,\n stride: this._dynamicStride * 4,\n offset: dynamicOffset * 4,\n format: property.format\n });\n dynamicOffset += attributeInfo.size;\n } else {\n geometry.addAttribute(property.attributeName, {\n buffer: this._staticBuffer,\n stride: this._staticStride * 4,\n offset: staticOffset * 4,\n format: property.format\n });\n staticOffset += attributeInfo.size;\n }\n }\n geometry.addIndex(this.indexBuffer);\n const uploadFunction = this.getParticleUpdate(properties);\n this._dynamicUpload = uploadFunction.dynamicUpdate;\n this._staticUpload = uploadFunction.staticUpdate;\n this.geometry = geometry;\n }\n getParticleUpdate(properties) {\n const key = getParticleSyncKey(properties);\n if (this._generateParticleUpdateCache[key]) {\n return this._generateParticleUpdateCache[key];\n }\n this._generateParticleUpdateCache[key] = this.generateParticleUpdate(properties);\n return this._generateParticleUpdateCache[key];\n }\n generateParticleUpdate(properties) {\n return generateParticleUpdateFunction(properties);\n }\n update(particles, uploadStatic) {\n if (particles.length > this._size) {\n uploadStatic = true;\n this._size = Math.max(particles.length, this._size * 1.5 | 0);\n this.staticAttributeBuffer = new ViewableBuffer(this._size * this._staticStride * 4 * 4);\n this.dynamicAttributeBuffer = new ViewableBuffer(this._size * this._dynamicStride * 4 * 4);\n this.indexBuffer = createIndicesForQuads(this._size);\n this.geometry.indexBuffer.setDataWithSize(\n this.indexBuffer,\n this.indexBuffer.byteLength,\n true\n );\n }\n const dynamicAttributeBuffer = this.dynamicAttributeBuffer;\n this._dynamicUpload(particles, dynamicAttributeBuffer.float32View, dynamicAttributeBuffer.uint32View);\n this._dynamicBuffer.setDataWithSize(\n this.dynamicAttributeBuffer.float32View,\n particles.length * this._dynamicStride * 4,\n true\n );\n if (uploadStatic) {\n const staticAttributeBuffer = this.staticAttributeBuffer;\n this._staticUpload(particles, staticAttributeBuffer.float32View, staticAttributeBuffer.uint32View);\n this._staticBuffer.setDataWithSize(\n staticAttributeBuffer.float32View,\n particles.length * this._staticStride * 4,\n true\n );\n }\n }\n destroy() {\n this._staticBuffer.destroy();\n this._dynamicBuffer.destroy();\n this.geometry.destroy();\n }\n}\nfunction getParticleSyncKey(properties) {\n const keyGen = [];\n for (const key in properties) {\n const property = properties[key];\n keyGen.push(key, property.code, property.dynamic ? \"d\" : \"s\");\n }\n return keyGen.join(\"_\");\n}\n\nexport { ParticleBuffer };\n//# sourceMappingURL=ParticleBuffer.mjs.map\n","\"use strict\";\nconst particleUpdateFunctions = {\n aVertex: (ps, f32v, _u32v, offset, stride) => {\n let w0 = 0;\n let w1 = 0;\n let h0 = 0;\n let h1 = 0;\n for (let i = 0; i < ps.length; ++i) {\n const p = ps[i];\n const texture = p.texture;\n const sx = p.scaleX;\n const sy = p.scaleY;\n const ax = p.anchorX;\n const ay = p.anchorY;\n const trim = texture.trim;\n const orig = texture.orig;\n if (trim) {\n w1 = trim.x - ax * orig.width;\n w0 = w1 + trim.width;\n h1 = trim.y - ay * orig.height;\n h0 = h1 + trim.height;\n } else {\n w0 = orig.width * (1 - ax);\n w1 = orig.width * -ax;\n h0 = orig.height * (1 - ay);\n h1 = orig.height * -ay;\n }\n f32v[offset] = w1 * sx;\n f32v[offset + 1] = h1 * sy;\n f32v[offset + stride] = w0 * sx;\n f32v[offset + stride + 1] = h1 * sy;\n f32v[offset + stride * 2] = w0 * sx;\n f32v[offset + stride * 2 + 1] = h0 * sy;\n f32v[offset + stride * 3] = w1 * sx;\n f32v[offset + stride * 3 + 1] = h0 * sy;\n offset += stride * 4;\n }\n },\n aPosition: (ps, f32v, _u32v, offset, stride) => {\n for (let i = 0; i < ps.length; ++i) {\n const p = ps[i];\n const x = p.x;\n const y = p.y;\n f32v[offset] = x;\n f32v[offset + 1] = y;\n f32v[offset + stride] = x;\n f32v[offset + stride + 1] = y;\n f32v[offset + stride * 2] = x;\n f32v[offset + stride * 2 + 1] = y;\n f32v[offset + stride * 3] = x;\n f32v[offset + stride * 3 + 1] = y;\n offset += stride * 4;\n }\n },\n aRotation: (ps, f32v, _u32v, offset, stride) => {\n for (let i = 0; i < ps.length; ++i) {\n const rotation = ps[i].rotation;\n f32v[offset] = rotation;\n f32v[offset + stride] = rotation;\n f32v[offset + stride * 2] = rotation;\n f32v[offset + stride * 3] = rotation;\n offset += stride * 4;\n }\n },\n aUV: (ps, f32v, _u32v, offset, stride) => {\n for (let i = 0; i < ps.length; ++i) {\n const uvs = ps[i].texture.uvs;\n f32v[offset] = uvs.x0;\n f32v[offset + 1] = uvs.y0;\n f32v[offset + stride] = uvs.x1;\n f32v[offset + stride + 1] = uvs.y1;\n f32v[offset + stride * 2] = uvs.x2;\n f32v[offset + stride * 2 + 1] = uvs.y2;\n f32v[offset + stride * 3] = uvs.x3;\n f32v[offset + stride * 3 + 1] = uvs.y3;\n offset += stride * 4;\n }\n },\n aColor: (ps, _f32v, u32v, offset, stride) => {\n for (let i = 0; i < ps.length; ++i) {\n const c = ps[i].color;\n u32v[offset] = c;\n u32v[offset + stride] = c;\n u32v[offset + stride * 2] = c;\n u32v[offset + stride * 3] = c;\n offset += stride * 4;\n }\n }\n};\n\nexport { particleUpdateFunctions };\n//# sourceMappingURL=particleUpdateFunctions.mjs.map\n","import { getAttributeInfoFromFormat } from '../../rendering/renderers/shared/geometry/utils/getAttributeInfoFromFormat.mjs';\nimport { particleUpdateFunctions } from './particleUpdateFunctions.mjs';\n\n\"use strict\";\nfunction generateParticleUpdatePolyfill(properties) {\n const allProperties = Object.values(properties);\n const dynamicProperties = allProperties.filter((p) => p.dynamic);\n const staticProperties = allProperties.filter((p) => !p.dynamic);\n return {\n dynamicUpdate: generateUpdateFunction(dynamicProperties),\n staticUpdate: generateUpdateFunction(staticProperties)\n };\n}\nfunction generateUpdateFunction(properties) {\n let stride = 0;\n const updateData = [];\n for (let i = 0; i < properties.length; i++) {\n const property = properties[i];\n const attributeStride = getAttributeInfoFromFormat(property.format).stride / 4;\n stride += attributeStride;\n updateData.push({\n stride: attributeStride,\n updateFunction: property.updateFunction || particleUpdateFunctions[property.attributeName]\n });\n }\n return (ps, f32v, u32v) => {\n let offset = 0;\n for (let i = 0; i < updateData.length; i++) {\n const obx = updateData[i];\n obx.updateFunction(ps, f32v, u32v, offset, stride);\n offset += obx.stride;\n }\n };\n}\n\nexport { generateParticleUpdatePolyfill };\n//# sourceMappingURL=generateParticleUpdatePolyfill.mjs.map\n","import { BufferResource } from '../../rendering/renderers/shared/buffer/BufferResource.mjs';\nimport { UniformGroup } from '../../rendering/renderers/shared/shader/UniformGroup.mjs';\nimport { TextureSource } from '../../rendering/renderers/shared/texture/sources/TextureSource.mjs';\nimport { TextureStyle } from '../../rendering/renderers/shared/texture/TextureStyle.mjs';\n\n\"use strict\";\nfunction generateShaderSyncPolyfill() {\n return syncShader;\n}\nfunction syncShader(renderer, shader, syncData) {\n const gl = renderer.gl;\n const shaderSystem = renderer.shader;\n const programData = shaderSystem._getProgramData(shader.glProgram);\n for (const i in shader.groups) {\n const bindGroup = shader.groups[i];\n for (const j in bindGroup.resources) {\n const resource = bindGroup.resources[j];\n if (resource instanceof UniformGroup) {\n if (resource.ubo) {\n shaderSystem.bindUniformBlock(\n resource,\n shader._uniformBindMap[i][j],\n syncData.blockIndex++\n );\n } else {\n shaderSystem.updateUniformGroup(resource);\n }\n } else if (resource instanceof BufferResource) {\n shaderSystem.bindUniformBlock(\n resource,\n shader._uniformBindMap[i][j],\n syncData.blockIndex++\n );\n } else if (resource instanceof TextureSource) {\n renderer.texture.bind(resource, syncData.textureCount);\n const uniformName = shader._uniformBindMap[i][j];\n const uniformData = programData.uniformData[uniformName];\n if (uniformData) {\n if (uniformData.value !== syncData.textureCount) {\n gl.uniform1i(uniformData.location, syncData.textureCount);\n }\n syncData.textureCount++;\n }\n } else if (resource instanceof TextureStyle) {\n }\n }\n }\n}\n\nexport { generateShaderSyncPolyfill };\n//# sourceMappingURL=generateShaderSyncPolyfill.mjs.map\n","\"use strict\";\nconst uboParserFunctions = [\n (name, data, offset, uv, _v) => {\n const matrix = uv[name].toArray(true);\n data[offset] = matrix[0];\n data[offset + 1] = matrix[1];\n data[offset + 2] = matrix[2];\n data[offset + 4] = matrix[3];\n data[offset + 5] = matrix[4];\n data[offset + 6] = matrix[5];\n data[offset + 8] = matrix[6];\n data[offset + 9] = matrix[7];\n data[offset + 10] = matrix[8];\n },\n (name, data, offset, uv, v) => {\n v = uv[name];\n data[offset] = v.x;\n data[offset + 1] = v.y;\n data[offset + 2] = v.width;\n data[offset + 3] = v.height;\n },\n (name, data, offset, uv, v) => {\n v = uv[name];\n data[offset] = v.x;\n data[offset + 1] = v.y;\n },\n (name, data, offset, uv, v) => {\n v = uv[name];\n data[offset] = v.red;\n data[offset + 1] = v.green;\n data[offset + 2] = v.blue;\n data[offset + 3] = v.alpha;\n },\n (name, data, offset, uv, v) => {\n v = uv[name];\n data[offset] = v.red;\n data[offset + 1] = v.green;\n data[offset + 2] = v.blue;\n }\n];\nconst uboSingleFunctionsWGSL = {\n f32: (_name, data, offset, _uv, v) => {\n data[offset] = v;\n },\n i32: (_name, data, offset, _uv, v) => {\n data[offset] = v;\n },\n \"vec2<f32>\": (_name, data, offset, _uv, v) => {\n data[offset] = v[0];\n data[offset + 1] = v[1];\n },\n \"vec3<f32>\": (_name, data, offset, _uv, v) => {\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n },\n \"vec4<f32>\": (_name, data, offset, _uv, v) => {\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 3] = v[3];\n },\n \"mat2x2<f32>\": (_name, data, offset, _uv, v) => {\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 3] = v[3];\n },\n \"mat3x3<f32>\": (_name, data, offset, _uv, v) => {\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 4] = v[3];\n data[offset + 5] = v[4];\n data[offset + 6] = v[5];\n data[offset + 8] = v[6];\n data[offset + 9] = v[7];\n data[offset + 10] = v[8];\n },\n \"mat4x4<f32>\": (_name, data, offset, _uv, v) => {\n for (let i = 0; i < 16; i++) {\n data[offset + i] = v[i];\n }\n },\n \"mat3x2<f32>\": (_name, data, offset, _uv, v) => {\n for (let i = 0; i < 6; i++) {\n data[offset + (i / 3 | 0) * 4 + i % 3] = v[i];\n }\n },\n \"mat4x2<f32>\": (_name, data, offset, _uv, v) => {\n for (let i = 0; i < 8; i++) {\n data[offset + (i / 4 | 0) * 4 + i % 4] = v[i];\n }\n },\n \"mat2x3<f32>\": (_name, data, offset, _uv, v) => {\n for (let i = 0; i < 6; i++) {\n data[offset + (i / 2 | 0) * 4 + i % 2] = v[i];\n }\n },\n \"mat4x3<f32>\": (_name, data, offset, _uv, v) => {\n for (let i = 0; i < 12; i++) {\n data[offset + (i / 4 | 0) * 4 + i % 4] = v[i];\n }\n },\n \"mat2x4<f32>\": (_name, data, offset, _uv, v) => {\n for (let i = 0; i < 8; i++) {\n data[offset + (i / 2 | 0) * 4 + i % 2] = v[i];\n }\n },\n \"mat3x4<f32>\": (_name, data, offset, _uv, v) => {\n for (let i = 0; i < 12; i++) {\n data[offset + (i / 3 | 0) * 4 + i % 3] = v[i];\n }\n }\n};\nconst uboSingleFunctionsSTD40 = {\n f32: (_name, data, offset, _uv, v) => {\n data[offset] = v;\n },\n i32: (_name, data, offset, _uv, v) => {\n data[offset] = v;\n },\n \"vec2<f32>\": (_name, data, offset, _uv, v) => {\n data[offset] = v[0];\n data[offset + 1] = v[1];\n },\n \"vec3<f32>\": (_name, data, offset, _uv, v) => {\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n },\n \"vec4<f32>\": (_name, data, offset, _uv, v) => {\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 3] = v[3];\n },\n \"mat2x2<f32>\": (_name, data, offset, _uv, v) => {\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 4] = v[2];\n data[offset + 5] = v[3];\n },\n \"mat3x3<f32>\": (_name, data, offset, _uv, v) => {\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 4] = v[3];\n data[offset + 5] = v[4];\n data[offset + 6] = v[5];\n data[offset + 8] = v[6];\n data[offset + 9] = v[7];\n data[offset + 10] = v[8];\n },\n \"mat4x4<f32>\": (_name, data, offset, _uv, v) => {\n for (let i = 0; i < 16; i++) {\n data[offset + i] = v[i];\n }\n },\n \"mat3x2<f32>\": (_name, data, offset, _uv, v) => {\n for (let i = 0; i < 6; i++) {\n data[offset + (i / 3 | 0) * 4 + i % 3] = v[i];\n }\n },\n \"mat4x2<f32>\": (_name, data, offset, _uv, v) => {\n for (let i = 0; i < 8; i++) {\n data[offset + (i / 4 | 0) * 4 + i % 4] = v[i];\n }\n },\n \"mat2x3<f32>\": (_name, data, offset, _uv, v) => {\n for (let i = 0; i < 6; i++) {\n data[offset + (i / 2 | 0) * 4 + i % 2] = v[i];\n }\n },\n \"mat4x3<f32>\": (_name, data, offset, _uv, v) => {\n for (let i = 0; i < 12; i++) {\n data[offset + (i / 4 | 0) * 4 + i % 4] = v[i];\n }\n },\n \"mat2x4<f32>\": (_name, data, offset, _uv, v) => {\n for (let i = 0; i < 8; i++) {\n data[offset + (i / 2 | 0) * 4 + i % 2] = v[i];\n }\n },\n \"mat3x4<f32>\": (_name, data, offset, _uv, v) => {\n for (let i = 0; i < 12; i++) {\n data[offset + (i / 3 | 0) * 4 + i % 3] = v[i];\n }\n }\n};\n\nexport { uboParserFunctions, uboSingleFunctionsSTD40, uboSingleFunctionsWGSL };\n//# sourceMappingURL=uboSyncFunctions.mjs.map\n","import { WGSL_TO_STD40_SIZE } from '../../rendering/renderers/gl/shader/utils/createUboElementsSTD40.mjs';\nimport { WGSL_ALIGN_SIZE_DATA } from '../../rendering/renderers/gpu/shader/utils/createUboElementsWGSL.mjs';\nimport { uniformParsers } from '../../rendering/renderers/shared/shader/utils/uniformParsers.mjs';\nimport { uboSingleFunctionsSTD40, uboSingleFunctionsWGSL, uboParserFunctions } from './uboSyncFunctions.mjs';\n\n\"use strict\";\nfunction generateUboSyncPolyfillSTD40(uboElements) {\n return generateUboSyncPolyfill(\n uboElements,\n uboSingleFunctionsSTD40,\n (uboElement) => {\n const rowSize = Math.max(WGSL_TO_STD40_SIZE[uboElement.data.type] / 16, 1);\n const elementSize = uboElement.data.value.length / uboElement.data.size;\n const remainder = (4 - elementSize % 4) % 4;\n return (_name, data, offset, _uv, v) => {\n let t = 0;\n for (let i = 0; i < uboElement.data.size * rowSize; i++) {\n for (let j = 0; j < elementSize; j++) {\n data[offset++] = v[t++];\n }\n offset += remainder;\n }\n };\n }\n );\n}\nfunction generateUboSyncPolyfillWGSL(uboElements) {\n return generateUboSyncPolyfill(\n uboElements,\n uboSingleFunctionsWGSL,\n (uboElement) => {\n const { size, align } = WGSL_ALIGN_SIZE_DATA[uboElement.data.type];\n const remainder = (size - align) / 4;\n return (_name, data, offset, _uv, v) => {\n let t = 0;\n for (let i = 0; i < uboElement.data.size * (size / 4); i++) {\n for (let j = 0; j < size / 4; j++) {\n data[offset++] = v[t++];\n }\n offset += remainder;\n }\n };\n }\n );\n}\nfunction generateUboSyncPolyfill(uboElements, uboFunctions, arrayUploadFunction) {\n const functionMap = {};\n for (const i in uboElements) {\n const uboElement = uboElements[i];\n const uniform = uboElement.data;\n let parsed = false;\n functionMap[uniform.name] = {\n offset: uboElement.offset / 4,\n func: null\n };\n for (let j = 0; j < uniformParsers.length; j++) {\n const parser = uniformParsers[j];\n if (uniform.type === parser.type && parser.test(uniform)) {\n functionMap[uniform.name].func = uboParserFunctions[j];\n parsed = true;\n break;\n }\n }\n if (!parsed) {\n if (uniform.size === 1) {\n functionMap[uniform.name].func = uboFunctions[uniform.type];\n } else {\n functionMap[uniform.name].func = arrayUploadFunction(uboElement);\n }\n }\n }\n return (uniforms, data, offset) => {\n for (const i in functionMap) {\n functionMap[i].func(i, data, offset + functionMap[i].offset, uniforms, uniforms[i]);\n }\n };\n}\n\nexport { generateUboSyncPolyfillSTD40, generateUboSyncPolyfillWGSL };\n//# sourceMappingURL=generateUboSyncPolyfill.mjs.map\n","\"use strict\";\nconst uniformSingleParserFunctions = {\n f32(name, cu, cv, v, ud, _uv, gl) {\n if (cv !== v) {\n cu.value = v;\n gl.uniform1f(ud[name].location, v);\n }\n },\n \"vec2<f32>\"(name, _cu, cv, v, ud, _uv, gl) {\n if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2f(ud[name].location, v[0], v[1]);\n }\n },\n \"vec3<f32>\"(name, _cu, cv, v, ud, _uv, gl) {\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3f(ud[name].location, v[0], v[1], v[2]);\n }\n },\n \"vec4<f32>\"(name, _cu, cv, v, ud, _uv, gl) {\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4f(ud[name].location, v[0], v[1], v[2], v[3]);\n }\n },\n i32(name, cu, cv, v, ud, _uv, gl) {\n if (cv !== v) {\n cu.value = v;\n gl.uniform1i(ud[name].location, v);\n }\n },\n \"vec2<i32>\"(name, _cu, cv, v, ud, _uv, gl) {\n if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2i(ud[name].location, v[0], v[1]);\n }\n },\n \"vec3<i32>\"(name, _cu, cv, v, ud, _uv, gl) {\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3i(ud[name].location, v[0], v[1], v[2]);\n }\n },\n \"vec4<i32>\"(name, _cu, cv, v, ud, _uv, gl) {\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4i(ud[name].location, v[0], v[1], v[2], v[3]);\n }\n },\n u32(name, cu, cv, v, ud, _uv, gl) {\n if (cv !== v) {\n cu.value = v;\n gl.uniform1ui(ud[name].location, v);\n }\n },\n \"vec2<u32>\"(name, _cu, cv, v, ud, _uv, gl) {\n if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2ui(ud[name].location, v[0], v[1]);\n }\n },\n \"vec3<u32>\"(name, _cu, cv, v, ud, _uv, gl) {\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3ui(ud[name].location, v[0], v[1], v[2]);\n }\n },\n \"vec4<u32>\"(name, _cu, cv, v, ud, _uv, gl) {\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4ui(ud[name].location, v[0], v[1], v[2], v[3]);\n }\n },\n bool(name, cu, cv, v, ud, _uv, gl) {\n if (cv !== v) {\n cu.value = v;\n gl.uniform1i(ud[name].location, v);\n }\n },\n \"vec2<bool>\"(name, _cu, cv, v, ud, _uv, gl) {\n if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2i(ud[name].location, v[0], v[1]);\n }\n },\n \"vec3<bool>\"(name, _cu, cv, v, ud, _uv, gl) {\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3i(ud[name].location, v[0], v[1], v[2]);\n }\n },\n \"vec4<bool>\"(name, _cu, cv, v, ud, _uv, gl) {\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4i(ud[name].location, v[0], v[1], v[2], v[3]);\n }\n },\n \"mat2x2<f32>\"(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniformMatrix2fv(ud[name].location, false, v);\n },\n \"mat3x3<f32>\"(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniformMatrix3fv(ud[name].location, false, v);\n },\n \"mat4x4<f32>\"(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniformMatrix4fv(ud[name].location, false, v);\n }\n};\nconst uniformArrayParserFunctions = {\n f32(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniform1fv(ud[name].location, v);\n },\n \"vec2<f32>\"(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniform2fv(ud[name].location, v);\n },\n \"vec3<f32>\"(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniform3fv(ud[name].location, v);\n },\n \"vec4<f32>\"(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniform4fv(ud[name].location, v);\n },\n \"mat2x2<f32>\"(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniformMatrix2fv(ud[name].location, false, v);\n },\n \"mat3x3<f32>\"(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniformMatrix3fv(ud[name].location, false, v);\n },\n \"mat4x4<f32>\"(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniformMatrix4fv(ud[name].location, false, v);\n },\n i32(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniform1iv(ud[name].location, v);\n },\n \"vec2<i32>\"(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniform2iv(ud[name].location, v);\n },\n \"vec3<i32>\"(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniform3iv(ud[name].location, v);\n },\n \"vec4<i32>\"(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniform4iv(ud[name].location, v);\n },\n u32(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniform1iv(ud[name].location, v);\n },\n \"vec2<u32>\"(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniform2iv(ud[name].location, v);\n },\n \"vec3<u32>\"(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniform3iv(ud[name].location, v);\n },\n \"vec4<u32>\"(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniform4iv(ud[name].location, v);\n },\n bool(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniform1iv(ud[name].location, v);\n },\n \"vec2<bool>\"(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniform2iv(ud[name].location, v);\n },\n \"vec3<bool>\"(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniform3iv(ud[name].location, v);\n },\n \"vec4<bool>\"(name, _cu, _cv, v, ud, _uv, gl) {\n gl.uniform4iv(ud[name].location, v);\n }\n};\nconst uniformParserFunctions = [\n (name, _cu, _cv, _v, ud, uv, gl) => {\n gl.uniformMatrix3fv(ud[name].location, false, uv[name].toArray(true));\n },\n (name, _cu, cv, v, ud, uv, gl) => {\n cv = ud[name].value;\n v = uv[name];\n if (cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height) {\n cv[0] = v.x;\n cv[1] = v.y;\n cv[2] = v.width;\n cv[3] = v.height;\n gl.uniform4f(ud[name].location, v.x, v.y, v.width, v.height);\n }\n },\n (name, _cu, cv, v, ud, uv, gl) => {\n cv = ud[name].value;\n v = uv[name];\n if (cv[0] !== v.x || cv[1] !== v.y) {\n cv[0] = v.x;\n cv[1] = v.y;\n gl.uniform2f(ud[name].location, v.x, v.y);\n }\n },\n (name, _cu, cv, v, ud, uv, gl) => {\n cv = ud[name].value;\n v = uv[name];\n if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.alpha) {\n cv[0] = v.red;\n cv[1] = v.green;\n cv[2] = v.blue;\n cv[3] = v.alpha;\n gl.uniform4f(ud[name].location, v.red, v.green, v.blue, v.alpha);\n }\n },\n (name, _cu, cv, v, ud, uv, gl) => {\n cv = ud[name].value;\n v = uv[name];\n if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue) {\n cv[0] = v.red;\n cv[1] = v.green;\n cv[2] = v.blue;\n gl.uniform3f(ud[name].location, v.red, v.green, v.blue);\n }\n }\n];\n\nexport { uniformArrayParserFunctions, uniformParserFunctions, uniformSingleParserFunctions };\n//# sourceMappingURL=uniformSyncFunctions.mjs.map\n","import { uniformParsers } from '../../rendering/renderers/shared/shader/utils/uniformParsers.mjs';\nimport { uniformParserFunctions, uniformSingleParserFunctions, uniformArrayParserFunctions } from './uniformSyncFunctions.mjs';\n\n\"use strict\";\nfunction generateUniformsSyncPolyfill(group, uniformData) {\n const functionMap = {};\n for (const i in group.uniformStructures) {\n if (!uniformData[i]) continue;\n const uniform = group.uniformStructures[i];\n let parsed = false;\n for (let j = 0; j < uniformParsers.length; j++) {\n const parser = uniformParsers[j];\n if (uniform.type === parser.type && parser.test(uniform)) {\n functionMap[i] = uniformParserFunctions[j];\n parsed = true;\n break;\n }\n }\n if (!parsed) {\n const templateType = uniform.size === 1 ? uniformSingleParserFunctions : uniformArrayParserFunctions;\n functionMap[i] = templateType[uniform.type];\n }\n }\n return (ud, uv, renderer) => {\n const gl = renderer.gl;\n for (const i in functionMap) {\n const v = uv[i];\n const cu = ud[i];\n const cv = ud[i].value;\n functionMap[i](i, cu, cv, v, ud, uv, gl);\n }\n };\n}\n\nexport { generateUniformsSyncPolyfill };\n//# sourceMappingURL=generateUniformsSyncPolyfill.mjs.map\n","import { GlUboSystem } from '../rendering/renderers/gl/GlUboSystem.mjs';\nimport { GlShaderSystem } from '../rendering/renderers/gl/shader/GlShaderSystem.mjs';\nimport { GlUniformGroupSystem } from '../rendering/renderers/gl/shader/GlUniformGroupSystem.mjs';\nimport { GpuUboSystem } from '../rendering/renderers/gpu/GpuUboSystem.mjs';\nimport { UboSystem } from '../rendering/renderers/shared/shader/UboSystem.mjs';\nimport { AbstractRenderer } from '../rendering/renderers/shared/system/AbstractRenderer.mjs';\nimport { ParticleBuffer } from '../scene/particle-container/shared/ParticleBuffer.mjs';\nimport { generateParticleUpdatePolyfill } from './particle/generateParticleUpdatePolyfill.mjs';\nimport { generateShaderSyncPolyfill } from './shader/generateShaderSyncPolyfill.mjs';\nimport { generateUboSyncPolyfillSTD40, generateUboSyncPolyfillWGSL } from './ubo/generateUboSyncPolyfill.mjs';\nimport { generateUniformsSyncPolyfill } from './uniforms/generateUniformsSyncPolyfill.mjs';\n\n\"use strict\";\nfunction selfInstall() {\n Object.assign(AbstractRenderer.prototype, {\n // override unsafeEval check, as we don't need to use it\n _unsafeEvalCheck() {\n }\n });\n Object.assign(UboSystem.prototype, {\n // override unsafeEval check, as we don't need to use it\n _systemCheck() {\n }\n });\n Object.assign(GlUniformGroupSystem.prototype, {\n // use polyfill which avoids eval method\n _generateUniformsSync: generateUniformsSyncPolyfill\n });\n Object.assign(GlUboSystem.prototype, {\n // use polyfill which avoids eval method\n _generateUboSync: generateUboSyncPolyfillSTD40\n });\n Object.assign(GpuUboSystem.prototype, {\n // use polyfill which avoids eval method\n _generateUboSync: generateUboSyncPolyfillWGSL\n });\n Object.assign(GlShaderSystem.prototype, {\n // use polyfill which avoids eval method\n _generateShaderSync: generateShaderSyncPolyfill\n });\n Object.assign(ParticleBuffer.prototype, {\n // use polyfill which avoids eval method\n generateParticleUpdate: generateParticleUpdatePolyfill\n });\n}\nselfInstall();\n//# sourceMappingURL=init.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\";\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 { Bounds } from '../container/bounds/Bounds.mjs';\nimport { Container } from '../container/Container.mjs';\n\n\"use strict\";\nclass ViewContainer extends Container {\n constructor(options) {\n super(options);\n /** @internal */\n this.canBundle = true;\n /** @internal */\n this.allowChildren = false;\n /** @internal */\n this._roundPixels = 0;\n /** @internal */\n this._lastUsed = -1;\n /** @internal */\n this._gpuData = /* @__PURE__ */ Object.create(null);\n /** If set to true, the resource will be garbage collected automatically when it is not used. */\n this.autoGarbageCollect = true;\n /** @internal */\n this._gcLastUsed = -1;\n this._bounds = new Bounds(0, 1, 0, 0);\n this._boundsDirty = true;\n this.autoGarbageCollect = options.autoGarbageCollect ?? true;\n }\n /**\n * The local bounds of the view in its own coordinate space.\n * Bounds are automatically updated when the view's content changes.\n * @example\n * ```ts\n * // Get bounds dimensions\n * const bounds = view.bounds;\n * console.log(`Width: ${bounds.maxX - bounds.minX}`);\n * console.log(`Height: ${bounds.maxY - bounds.minY}`);\n * ```\n * @returns The rectangular bounds of the view\n * @see {@link Bounds} For bounds operations\n */\n get bounds() {\n if (!this._boundsDirty) 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 * @example\n * ```ts\n * // Enable pixel rounding for crisp rendering\n * view.roundPixels = true;\n * ```\n * @default false\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 in local coordinates.\n * Uses the view's bounds for hit testing.\n * @example\n * ```ts\n * // Basic point check\n * const localPoint = { x: 50, y: 25 };\n * const contains = view.containsPoint(localPoint);\n * console.log('Point is inside:', contains);\n * ```\n * @param point - The point to check in local coordinates\n * @returns True if the point is within the view's bounds\n * @see {@link ViewContainer#bounds} For the bounds used in hit testing\n * @see {@link Container#toLocal} For converting global coordinates to local\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) return;\n this.didViewUpdate = true;\n const renderGroup = this.renderGroup || this.parentRenderGroup;\n if (renderGroup) {\n renderGroup.onChildViewUpdate(this);\n }\n }\n /** Unloads the GPU data from the view. */\n unload() {\n this.emit(\"unload\", this);\n for (const key in this._gpuData) {\n this._gpuData[key]?.destroy();\n }\n this._gpuData = /* @__PURE__ */ Object.create(null);\n this.onViewUpdate();\n }\n destroy(options) {\n this.unload();\n super.destroy(options);\n this._bounds = null;\n }\n /**\n * Collects renderables for the view container.\n * @param instructionSet - The instruction set to collect renderables for.\n * @param renderer - The renderer to collect renderables for.\n * @param currentLayer - The current render layer.\n * @internal\n */\n collectRenderablesSimple(instructionSet, renderer, currentLayer) {\n const { renderPipes } = renderer;\n renderPipes.blendMode.pushBlendMode(this, this.groupBlendMode, instructionSet);\n const rp = renderPipes;\n const pipe = rp[this.renderPipeId];\n if (pipe?.addRenderable) {\n pipe.addRenderable(this, instructionSet);\n }\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 renderPipes.blendMode.popBlendMode(instructionSet);\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 /** @internal */\n this.renderPipeId = \"sprite\";\n /** @internal */\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) this.width = width;\n if (height !== void 0) this.height = height;\n }\n /**\n * Creates a new sprite based on a source texture, image, video, or canvas element.\n * This is a convenience method that automatically creates and manages textures.\n * @example\n * ```ts\n * // Create from path or URL\n * const sprite = Sprite.from('assets/image.png');\n *\n * // Create from existing texture\n * const sprite = Sprite.from(texture);\n *\n * // Create from canvas\n * const canvas = document.createElement('canvas');\n * const sprite = Sprite.from(canvas, true); // Skip caching new texture\n * ```\n * @param source - The source to create the sprite from. Can be a path to an image, a texture,\n * or any valid texture source (canvas, video, etc.)\n * @param skipCache - Whether to skip adding to the texture cache when creating a new texture\n * @returns A new sprite based on the source\n * @see {@link Texture.from} For texture creation details\n * @see {@link Assets} For asset loading and management\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) return;\n if (currentTexture && currentTexture.dynamic) currentTexture.off(\"update\", this.onViewUpdate, this);\n if (value.dynamic) 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 /**\n * The texture that is displayed by the sprite. When changed, automatically updates\n * the sprite dimensions and manages texture event listeners.\n * @example\n * ```ts\n * // Create sprite with texture\n * const sprite = new Sprite({\n * texture: Texture.from('sprite.png')\n * });\n *\n * // Update texture\n * sprite.texture = Texture.from('newSprite.png');\n *\n * // Use texture from spritesheet\n * const sheet = await Assets.load('spritesheet.json');\n * sprite.texture = sheet.textures['frame1.png'];\n *\n * // Reset to empty texture\n * sprite.texture = Texture.EMPTY;\n * ```\n * @see {@link Texture} For texture creation and management\n * @see {@link Assets} For asset loading\n */\n get texture() {\n return this._texture;\n }\n /**\n * The bounds of the sprite, taking into account the texture's trim area.\n * @example\n * ```ts\n * const texture = new Texture({\n * source: new TextureSource({ width: 300, height: 300 }),\n * frame: new Rectangle(196, 66, 58, 56),\n * trim: new Rectangle(4, 4, 58, 56),\n * orig: new Rectangle(0, 0, 64, 64),\n * rotate: 2,\n * });\n * const sprite = new Sprite(texture);\n * const visualBounds = sprite.visualBounds;\n * // console.log(visualBounds); // { minX: -4, maxX: 62, minY: -4, maxY: 60 }\n */\n get visualBounds() {\n updateQuadBounds(this._visualBounds, this._anchor, this._texture);\n return this._visualBounds;\n }\n /**\n * @deprecated\n * @ignore\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 * @example\n * sprite.destroy();\n * sprite.destroy(true);\n * sprite.destroy({ texture: true, textureSource: true });\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 * - Setting the anchor to `(0.5,0.5)` means the sprite's origin is centered.\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 * ```ts\n * // Center the anchor point\n * sprite.anchor = 0.5; // Sets both x and y to 0.5\n * sprite.position.set(400, 300); // Sprite will be centered at this position\n *\n * // Set specific x/y anchor points\n * sprite.anchor = {\n * x: 1, // Right edge\n * y: 0 // Top edge\n * };\n *\n * // Using individual coordinates\n * sprite.anchor.set(0.5, 1); // Center-bottom\n *\n * // For rotation around center\n * sprite.anchor.set(0.5);\n * sprite.rotation = Math.PI / 4; // 45 degrees around center\n *\n * // For scaling from center\n * sprite.anchor.set(0.5);\n * sprite.scale.set(2); // Scales from center point\n * ```\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 /**\n * The width of the sprite, setting this will actually modify the scale to achieve the value set.\n * @example\n * ```ts\n * // Set width directly\n * sprite.width = 200;\n * console.log(sprite.scale.x); // Scale adjusted to match width\n *\n * // Set width while preserving aspect ratio\n * const ratio = sprite.height / sprite.width;\n * sprite.width = 300;\n * sprite.height = 300 * ratio;\n *\n * // For better performance when setting both width and height\n * sprite.setSize(300, 400); // Avoids recalculating bounds twice\n *\n * // Reset to original texture size\n * sprite.width = sprite.texture.orig.width;\n * ```\n */\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 /**\n * The height of the sprite, setting this will actually modify the scale to achieve the value set.\n * @example\n * ```ts\n * // Set height directly\n * sprite.height = 150;\n * console.log(sprite.scale.y); // Scale adjusted to match height\n *\n * // Set height while preserving aspect ratio\n * const ratio = sprite.width / sprite.height;\n * sprite.height = 200;\n * sprite.width = 200 * ratio;\n *\n * // For better performance when setting both width and height\n * sprite.setSize(300, 400); // Avoids recalculating bounds twice\n *\n * // Reset to original texture size\n * sprite.height = sprite.texture.orig.height;\n * ```\n */\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 based on the texture dimensions and scale.\n * This is faster than getting width and height separately as it only calculates the bounds once.\n * @example\n * ```ts\n * // Basic size retrieval\n * const sprite = new Sprite(Texture.from('sprite.png'));\n * const size = sprite.getSize();\n * console.log(`Size: ${size.width}x${size.height}`);\n *\n * // Reuse existing size object\n * const reuseSize = { width: 0, height: 0 };\n * sprite.getSize(reuseSize);\n * ```\n * @param out - Optional object to store the size in, to avoid allocating a new object\n * @returns The size of the Sprite\n * @see {@link Sprite#width} For getting just the width\n * @see {@link Sprite#height} For getting just the height\n * @see {@link Sprite#setSize} For setting both width and height\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 width and height separately as it only recalculates bounds once.\n * @example\n * ```ts\n * // Basic size setting\n * const sprite = new Sprite(Texture.from('sprite.png'));\n * sprite.setSize(100, 200); // Width: 100, Height: 200\n *\n * // Set uniform size\n * sprite.setSize(100); // Sets both width and height to 100\n *\n * // Set size with object\n * sprite.setSize({\n * width: 200,\n * height: 300\n * });\n *\n * // Reset to texture size\n * sprite.setSize(\n * sprite.texture.orig.width,\n * sprite.texture.orig.height\n * );\n * ```\n * @param value - This can be either a number or a {@link Size} object\n * @param height - The height to set. Defaults to the value of `width` if not provided\n * @see {@link Sprite#width} For setting width only\n * @see {@link Sprite#height} For setting height only\n * @see {@link Sprite#texture} For the source dimensions\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 };\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.channel = \"red\";\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 if (this.mask === null) return;\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 if (this.mask === null) return;\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 createImage: () => new Image(),\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 && \"style\" in this.resource) {\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 { ExtensionType } from '../../../../../extensions/Extensions.mjs';\nimport { TextureSource } from './TextureSource.mjs';\n\n\"use strict\";\nclass ImageSource extends TextureSource {\n constructor(options) {\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 {@link Ticker#start|start}\n * automatically when a listener is added.\n * @example\n * ```ts\n * // Default behavior (manual start)\n * const ticker = new Ticker();\n * ticker.autoStart = false;\n * ticker.add(() => {\n * // Won't run until ticker.start() is called\n * });\n *\n * // Auto-start behavior\n * const autoTicker = new Ticker();\n * autoTicker.autoStart = true;\n * autoTicker.add(() => {\n * // Runs immediately when added\n * });\n * ```\n * @default false\n * @see {@link Ticker#start} For manually starting the ticker\n * @see {@link Ticker#stop} For manually stopping the ticker\n */\n this.autoStart = false;\n /**\n * Scalar representing the delta time factor.\n * This is a dimensionless value representing the fraction of a frame at the target framerate.\n * At 60 FPS, this value is typically around 1.0.\n *\n * This is NOT in milliseconds - it's a scalar multiplier for frame-independent animations.\n * For actual milliseconds, use {@link Ticker#deltaMS}.\n * @example\n * ```ts\n * // Frame-independent animation using deltaTime scalar\n * ticker.add((ticker) => {\n * // Rotate sprite by 0.1 radians per frame, scaled by deltaTime\n * sprite.rotation += 0.1 * ticker.deltaTime;\n * });\n * ```\n */\n this.deltaTime = 1;\n /**\n * The last time update was invoked, in milliseconds since epoch.\n * Similar to performance.now() timestamp format.\n *\n * Used internally for calculating time deltas between frames.\n * @example\n * ```ts\n * ticker.add((ticker) => {\n * const currentTime = performance.now();\n * const timeSinceLastFrame = currentTime - ticker.lastTime;\n * console.log(`Time since last frame: ${timeSinceLastFrame}ms`);\n * });\n * ```\n */\n this.lastTime = -1;\n /**\n * Factor of current {@link Ticker#deltaTime|deltaTime}.\n * Used to scale time for slow motion or fast-forward effects.\n * @example\n * ```ts\n * // Basic speed adjustment\n * ticker.speed = 0.5; // Half speed (slow motion)\n * ticker.speed = 2.0; // Double speed (fast forward)\n *\n * // Temporary speed changes\n * function slowMotion() {\n * const normalSpeed = ticker.speed;\n * ticker.speed = 0.2;\n * setTimeout(() => {\n * ticker.speed = normalSpeed;\n * }, 1000);\n * }\n * ```\n */\n this.speed = 1;\n /**\n * Whether or not this ticker has been started.\n *\n * `true` if {@link Ticker#start|start} has been called.\n * `false` if {@link Ticker#stop|Stop} has been called.\n *\n * While `false`, this value may change to `true` in the\n * event of {@link Ticker#autoStart|autoStart} being `true`\n * and a listener is added.\n * @example\n * ```ts\n * // Check ticker state\n * const ticker = new Ticker();\n * console.log(ticker.started); // false\n *\n * // Start and verify\n * ticker.start();\n * console.log(ticker.started); // true\n * ```\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 maxFPS 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 */\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 /** Conditionally cancels a pending animation frame. */\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 */\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.\n * @param fn - The listener function to add. Receives the Ticker instance as parameter\n * @param context - The context for the listener\n * @param priority - The priority of the listener\n * @example\n * ```ts\n * // Access time properties through the ticker parameter\n * ticker.add((ticker) => {\n * // Use deltaTime (dimensionless scalar) for frame-independent animations\n * sprite.rotation += 0.1 * ticker.deltaTime;\n *\n * // Use deltaMS (milliseconds) for time-based calculations\n * const progress = ticker.deltaMS / animationDuration;\n *\n * // Use elapsedMS for raw timing measurements\n * console.log(`Raw frame time: ${ticker.elapsedMS}ms`);\n * });\n * ```\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 executed once on the next frame.\n * @example\n * ```ts\n * // Basic one-time update\n * ticker.addOnce(() => {\n * console.log('Runs next frame only');\n * });\n *\n * // With specific context\n * const game = {\n * init(ticker) {\n * this.loadResources();\n * console.log('Game initialized');\n * }\n * };\n * ticker.addOnce(game.init, game);\n *\n * // With priority\n * ticker.addOnce(\n * () => {\n * // High priority one-time setup\n * physics.init();\n * },\n * undefined,\n * UPDATE_PRIORITY.HIGH\n * );\n * ```\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 (default: UPDATE_PRIORITY.NORMAL)\n * @returns This instance of a ticker\n * @see {@link Ticker#add} For continuous updates\n * @see {@link Ticker#remove} For removing handlers\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 * @example\n * ```ts\n * // Basic removal\n * const onTick = () => {\n * sprite.rotation += 0.1;\n * };\n * ticker.add(onTick);\n * ticker.remove(onTick);\n *\n * // Remove with context\n * const game = {\n * update(ticker) {\n * this.physics.update(ticker.deltaTime);\n * }\n * };\n * ticker.add(game.update, game);\n * ticker.remove(game.update, game);\n *\n * // Remove all matching handlers\n * // (if same function was added multiple times)\n * ticker.add(onTick);\n * ticker.add(onTick);\n * ticker.remove(onTick); // Removes all instances\n * ```\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 * @see {@link Ticker#add} For adding handlers\n * @see {@link Ticker#addOnce} For one-time handlers\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 * @example\n * ```ts\n * // Check number of active listeners\n * const ticker = new Ticker();\n * console.log(ticker.count); // 0\n *\n * // Add some listeners\n * ticker.add(() => {});\n * ticker.add(() => {});\n * console.log(ticker.count); // 2\n *\n * // Check after cleanup\n * ticker.destroy();\n * console.log(ticker.count); // 0\n * ```\n * @readonly\n * @see {@link Ticker#add} For adding listeners\n * @see {@link Ticker#remove} For removing listeners\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 /**\n * Starts the ticker. If the ticker has listeners a new animation frame is requested at this point.\n * @example\n * ```ts\n * // Basic manual start\n * const ticker = new Ticker();\n * ticker.add(() => {\n * // Animation code here\n * });\n * ticker.start();\n * ```\n * @see {@link Ticker#stop} For stopping the ticker\n * @see {@link Ticker#autoStart} For automatic starting\n * @see {@link Ticker#started} For checking ticker state\n */\n start() {\n if (!this.started) {\n this.started = true;\n this._requestIfNeeded();\n }\n }\n /**\n * Stops the ticker. If the ticker has requested an animation frame it is canceled at this point.\n * @example\n * ```ts\n * // Basic stop\n * const ticker = new Ticker();\n * ticker.stop();\n * ```\n * @see {@link Ticker#start} For starting the ticker\n * @see {@link Ticker#started} For checking ticker state\n * @see {@link Ticker#destroy} For cleaning up the ticker\n */\n stop() {\n if (this.started) {\n this.started = false;\n this._cancelIfNeeded();\n }\n }\n /**\n * Destroy the ticker and don't use after this. Calling this method removes all references to internal events.\n * @example\n * ```ts\n * // Clean up with active listeners\n * const ticker = new Ticker();\n * ticker.add(() => {});\n * ticker.destroy(); // Removes all listeners\n * ```\n * @see {@link Ticker#stop} For stopping without destroying\n * @see {@link Ticker#remove} For removing specific listeners\n */\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.\n *\n * An update entails setting the\n * current {@link Ticker#elapsedMS|elapsedMS},\n * the current {@link Ticker#deltaTime|deltaTime},\n * invoking all listeners with current deltaTime,\n * and then finally setting {@link Ticker#lastTime|lastTime}\n * with the value of currentTime that was provided.\n *\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 * @example\n * ```ts\n * // Basic manual update\n * const ticker = new Ticker();\n * ticker.update(performance.now());\n * ```\n * @param currentTime - The current time of execution (defaults to performance.now())\n * @see {@link Ticker#deltaTime} For frame delta value\n * @see {@link Ticker#elapsedMS} For raw elapsed time\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#speed|speed}, which is specific\n * > to scaling {@link Ticker#deltaTime|deltaTime}.\n * @example\n * ```ts\n * // Basic FPS monitoring\n * ticker.add(() => {\n * console.log(`Current FPS: ${Math.round(ticker.FPS)}`);\n * });\n * ```\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#update|update}.\n *\n * This value is used to cap {@link Ticker#deltaTime|deltaTime},\n * but does not effect the measured value of {@link Ticker#FPS|FPS}.\n *\n * When setting this property it is clamped to a value between\n * `0` and `Ticker.targetFPMS * 1000` (typically 60).\n *\n * If `maxFPS` is currently set (non-zero) and `minFPS` is set above it,\n * `maxFPS` is automatically raised to match. This keeps the two limits consistent.\n * @example\n * ```ts\n * // Set minimum acceptable frame rate\n * const ticker = new Ticker();\n * ticker.minFPS = 30; // Never go below 30 FPS\n *\n * // Use with maxFPS for frame rate clamping\n * ticker.minFPS = 30;\n * ticker.maxFPS = 60;\n *\n * // minFPS above maxFPS pushes maxFPS up\n * ticker.minFPS = 50; // maxFPS is raised to 50\n * ```\n * @default 10\n */\n get minFPS() {\n return 1e3 / this._maxElapsedMS;\n }\n set minFPS(fps) {\n const minFPMS = Math.min(Math.max(0, fps) / 1e3, _Ticker.targetFPMS);\n this._maxElapsedMS = 1 / minFPMS;\n if (this._minElapsedMS && fps > this.maxFPS) {\n this.maxFPS = fps;\n }\n }\n /**\n * Manages the minimum amount of milliseconds required to\n * elapse between invoking {@link Ticker#update|update}.\n *\n * This will effect the measured value of {@link Ticker#FPS|FPS}.\n *\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 *\n * If `maxFPS` is set below the current `minFPS`, `minFPS` is automatically lowered to match.\n * This keeps the two limits consistent.\n * @example\n * ```ts\n * // Cap the frame rate\n * const ticker = new Ticker();\n * ticker.maxFPS = 60; // Never go above 60 FPS\n *\n * // Use with minFPS for frame rate clamping\n * ticker.minFPS = 30;\n * ticker.maxFPS = 60;\n *\n * // maxFPS below minFPS pushes minFPS down\n * ticker.maxFPS = 20; // minFPS is now also 20\n * ```\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 if (fps < this.minFPS) {\n this.minFPS = fps;\n }\n this._minElapsedMS = 1 / (fps / 1e3);\n }\n }\n /**\n * The shared ticker instance used by {@link AnimatedSprite} and by\n * {@link VideoSource} 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#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 * @type {Ticker}\n * @readonly\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 PrepareBase} 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#autoStart|autoStart} is set to `true` for this instance.\n * @type {Ticker}\n * @readonly\n * @advanced\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 frame rate in frames per millisecond.\n * Used for converting deltaTime to a scalar time delta.\n * @example\n * ```ts\n * // Default is 0.06 (60 FPS)\n * console.log(Ticker.targetFPMS); // 0.06\n *\n * // Calculate target frame duration\n * const frameDuration = 1 / Ticker.targetFPMS; // ≈ 16.67ms\n *\n * // Use in custom timing calculations\n * const deltaTime = elapsedMS * Ticker.targetFPMS;\n * ```\n * @remarks\n * - Default is 0.06 (equivalent to 60 FPS)\n * - Used in deltaTime calculations\n * - Affects all ticker instances\n * @default 0.06\n * @see {@link Ticker#deltaTime} For time scaling\n * @see {@link Ticker#FPS} For actual frame rate\n */\n_Ticker.targetFPMS = 0.06;\nlet Ticker = _Ticker;\n\nexport { Ticker };\n//# sourceMappingURL=Ticker.mjs.map\n","import { DOMAdapter } from '../../environment/adapter.mjs';\n\n\"use strict\";\nlet promise;\nasync function detectVideoAlphaMode() {\n promise ?? (promise = (async () => {\n const canvas = DOMAdapter.get().createCanvas(1, 1);\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 this._onLoadedMetadata = this._onLoadedMetadata.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 if (!this.isValid) {\n source.addEventListener(\"loadedmetadata\", this._onLoadedMetadata);\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 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 /** When intrinsic size becomes known after play / canplay (common with MediaStream). */\n _onLoadedMetadata() {\n if (!this.isValid) {\n return;\n }\n this._mediaReady();\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._onCanPlayThrough);\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 && this.isValid) {\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(\"loadedmetadata\", this._onLoadedMetadata);\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 /**\n * All loader parsers registered\n * @advanced\n */\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 * @example\n * ```ts\n * // Convert a Windows path to POSIX format\n * path.toPosix('C:\\\\Users\\\\User\\\\Documents\\\\file.txt');\n * // -> 'C:/Users/User/Documents/file.txt'\n * ```\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 * @example\n * ```ts\n * // Check if a path is a URL\n * path.isUrl('http://www.example.com');\n * // -> true\n * path.isUrl('C:/Users/User/Documents/file.txt');\n * // -> false\n * ```\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 * @example\n * ```ts\n * // Check if a path is a data URL\n * path.isDataUrl('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA...');\n * // -> true\n * ```\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 * @example\n * ```ts\n * // Check if a path is a blob URL\n * path.isBlobUrl('blob:http://www.example.com/12345678-1234-1234-1234-123456789012');\n * // -> true\n * ```\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 * @example\n * ```ts\n * // Check if a path has a protocol\n * path.hasProtocol('http://www.example.com');\n * // -> true\n * path.hasProtocol('C:/Users/User/Documents/file.txt');\n * // -> true\n * ```\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 * @example\n * ```ts\n * // Get the protocol from a URL\n * path.getProtocol('http://www.example.com/path/to/resource');\n * // -> 'http://'\n * // Get the protocol from a file path\n * path.getProtocol('C:/Users/User/Documents/file.txt');\n * // -> 'C:/'\n * ```\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 * @example\n * ```ts\n * // Convert a relative URL to an absolute path\n * path.toAbsolute('images/texture.png', 'http://example.com/assets/');\n * // -> 'http://example.com/assets/images/texture.png'\n * ```\n */\n toAbsolute(url, customBaseUrl, customRootUrl) {\n assertPath(url);\n if (this.isDataUrl(url) || this.isBlobUrl(url)) 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 * @example\n * ```ts\n * // Normalize a path with relative segments\n * path.normalize('http://www.example.com/foo/bar/../baz');\n * // -> 'http://www.example.com/foo/baz'\n * // Normalize a file path with relative segments\n * path.normalize('C:\\\\Users\\\\User\\\\Documents\\\\..\\\\file.txt');\n * // -> 'C:/Users/User/file.txt'\n * ```\n */\n normalize(path2) {\n assertPath(path2);\n if (path2.length === 0) return \".\";\n if (this.isDataUrl(path2) || this.isBlobUrl(path2)) 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) path2 += \"/\";\n if (isAbsolute) 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 * @example\n * ```ts\n * // Check if a path is absolute\n * path.isAbsolute('http://www.example.com/foo/bar');\n * // -> true\n * path.isAbsolute('C:/Users/User/Documents/file.txt');\n * // -> true\n * ```\n */\n isAbsolute(path2) {\n assertPath(path2);\n path2 = this.toPosix(path2);\n if (this.hasProtocol(path2)) 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 * @example\n * ```ts\n * // Join multiple path segments\n * path.join('assets', 'images', 'sprite.png');\n * // -> 'assets/images/sprite.png'\n * // Join with relative segments\n * path.join('assets', 'images', '../textures', 'sprite.png');\n * // -> 'assets/textures/sprite.png'\n * ```\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) 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 * @example\n * ```ts\n * // Get the directory name of a path\n * path.dirname('http://www.example.com/foo/bar/baz.png');\n * // -> 'http://www.example.com/foo/bar'\n * // Get the directory name of a file path\n * path.dirname('C:/Users/User/Documents/file.txt');\n * // -> 'C:/Users/User/Documents'\n * ```\n */\n dirname(path2) {\n assertPath(path2);\n if (path2.length === 0) 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) return hasRoot ? \"/\" : this.isUrl(origpath) ? proto + path2 : proto;\n if (hasRoot && end === 1) 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 * @example\n * ```ts\n * // Get the root of a URL\n * path.rootname('http://www.example.com/foo/bar/baz.png');\n * // -> 'http://www.example.com/'\n * // Get the root of a file path\n * path.rootname('C:/Users/User/Documents/file.txt');\n * // -> 'C:/'\n * ```\n */\n rootname(path2) {\n assertPath(path2);\n path2 = this.toPosix(path2);\n let root = \"\";\n if (path2.startsWith(\"/\")) 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 root = path2;\n if (!root.endsWith(\"/\")) 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 * @example\n * ```ts\n * // Get the basename of a URL\n * path.basename('http://www.example.com/foo/bar/baz.png');\n * // -> 'baz.png'\n * // Get the basename of a file path\n * path.basename('C:/Users/User/Documents/file.txt');\n * // -> 'file.txt'\n * ```\n */\n basename(path2, ext) {\n assertPath(path2);\n if (ext) 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) 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) end = firstNonSlashEnd;\n else if (end === -1) 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) 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 * @example\n * ```ts\n * // Get the extension of a URL\n * path.extname('http://www.example.com/foo/bar/baz.png');\n * // -> '.png'\n * // Get the extension of a file path\n * path.extname('C:/Users/User/Documents/file.txt');\n * // -> '.txt'\n * ```\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) startDot = i;\n else if (preDotState !== 1) 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 * @example\n * ```ts\n * // Parse a URL\n * const parsed = path.parse('http://www.example.com/foo/bar/baz.png');\n * // -> {\n * // root: 'http://www.example.com/',\n * // dir: 'http://www.example.com/foo/bar',\n * // base: 'baz.png',\n * // ext: '.png',\n * // name: 'baz'\n * // }\n * // Parse a file path\n * const parsedFile = path.parse('C:/Users/User/Documents/file.txt');\n * // -> {\n * // root: 'C:/',\n * // dir: 'C:/Users/User/Documents',\n * // base: 'file.txt',\n * // ext: '.txt',\n * // name: 'file'\n * // }\n * ```\n */\n parse(path2) {\n assertPath(path2);\n const ret = { root: \"\", dir: \"\", base: \"\", ext: \"\", name: \"\" };\n if (path2.length === 0) 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) startDot = i;\n else if (preDotState !== 1) 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) ret.base = ret.name = path2.slice(1, end);\n else 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) 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\") return value;\n if (Array.isArray(value)) return value.map((v) => v?.src ?? v);\n if (value?.src) return value.src;\n return value;\n },\n true\n );\n return aliasesToUse;\n }\n /**\n * Removes the specified alias for an asset.\n *\n * This only removes the alias mapping. It does **not** remove, unload, or destroy the\n * underlying asset. If the asset is already cached, it stays in memory until you call\n * `Assets.unload`.\n *\n * If `asset` is provided, the alias is only removed when the resolver's current mapping for\n * that alias matches the given `ResolvedAsset`. This lets you avoid accidentally removing an\n * alias that has been reassigned.\n *\n * Silently returns if the alias does not exist or the asset does not match.\n * @param alias - the alias to remove\n * @param asset - only remove the alias if it is currently assigned to this asset\n * @example\n * ```ts\n * resolver.add({ alias: 'hero', src: 'hero.png' });\n *\n * // Simple removal\n * resolver.removeAlias('hero');\n *\n * // Conditional removal — only if alias currently maps to a specific asset\n * const resolved = resolver.resolve('hero');\n * resolver.removeAlias('hero', resolved);\n * ```\n */\n removeAlias(alias, asset) {\n if (!this._assetMap[alias]) {\n return;\n }\n if (asset && asset !== this._resolverHash[alias]) {\n return;\n }\n delete this._resolverHash[alias];\n delete this._assetMap[alias];\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 {\n data,\n format,\n loadParser: userDefinedLoadParser,\n parser: userDefinedParser\n } = 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 const parseUrl = (url) => {\n const parser = this._parsers.find((p) => p.test(url));\n return {\n src: url,\n ...parser?.parse(url)\n };\n };\n srcsToUse.forEach((srcs) => {\n srcs.forEach((src2) => {\n let formattedAsset = {};\n if (typeof src2 !== \"object\") {\n formattedAsset = parseUrl(src2);\n } else {\n data = src2.data ?? data;\n format = src2.format ?? format;\n if (src2.loadParser || src2.parser) {\n userDefinedLoadParser = src2.loadParser ?? userDefinedLoadParser;\n userDefinedParser = src2.parser ?? userDefinedParser;\n }\n formattedAsset = {\n ...parseUrl(src2.src),\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: userDefinedLoadParser,\n parser: userDefinedParser,\n progressSize: asset.progressSize\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) return url;\n const paramConnector = /\\?/.test(url) ? \"&\" : \"?\";\n return `${url}${paramConnector}${this._defaultSearchParams}`;\n }\n _buildResolvedAsset(formattedAsset, data) {\n const { aliases, data: assetData, loadParser, parser, format, progressSize } = 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.parser = parser ?? formattedAsset.parser;\n formattedAsset.format = format ?? formattedAsset.format ?? getUrlExtension(formattedAsset.src);\n if (progressSize !== void 0) {\n formattedAsset.progressSize = progressSize;\n }\n return formattedAsset;\n }\n}\n/**\n * The prefix that denotes a URL is for a retina asset.\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 { TextureSource } from '../rendering/renderers/shared/texture/sources/TextureSource.mjs';\nimport { Texture } from '../rendering/renderers/shared/texture/Texture.mjs';\n\n\"use strict\";\nconst _Spritesheet = class _Spritesheet {\n constructor(optionsOrTexture, arg1) {\n /** For multi-packed spritesheets, this contains a reference to all the other spritesheets it depends on. */\n this.linkedSheets = [];\n let options = optionsOrTexture;\n if (optionsOrTexture?.source instanceof TextureSource) {\n options = {\n texture: optionsOrTexture,\n data: arg1\n };\n }\n const { texture, data, cachePrefix = \"\" } = options;\n this.cachePrefix = cachePrefix;\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 * Parse 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 * Parse spritesheet from loaded data. This is done synchronously\n * and is only suitable for smaller spritesheets (less than ~1000 frames)\n * or may cause too many Texture within a single process. However, synchronous parsing may be\n * more convenient since the called does not need to be asynchronous and is safe for\n * small-to-medium sized spritesheets.\n *\n * Other than being synchronous, `parseSync` is otherwise identical to `.parse()`.\n */\n parseSync() {\n this._processFrames(0, true);\n this._processAnimations();\n return this.textures;\n }\n /**\n * Process a batch of frames\n * @param initialFrameIndex - The index of frame to start.\n * @param processAll - if true will process all frames in a single batch, ignoring BATCH_SIZE - this\n * is used for synchronous parsing.\n */\n _processFrames(initialFrameIndex, processAll = false) {\n let frameIndex = initialFrameIndex;\n const maxFrames = processAll ? Infinity : _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/**\n * The maximum number of Textures to build per process.\n * @advanced\n */\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[`${asset.cachePrefix}${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 /** used for deprecation purposes */\n name: \"spritesheetLoader\",\n id: \"spritesheet\",\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 cachePrefix\n // if user need to use custom cache prefix\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: texture.source,\n data: asset,\n cachePrefix\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","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) 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) 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) 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) 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 programCache[this._cacheKey] = 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 programCache[key]._cacheKey = key;\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","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 vec2i: \"sint32x2\",\n vec3i: \"sint32x3\",\n vec4i: \"sint32x4\",\n u32: \"uint32\",\n \"vec2<u32>\": \"uint32x2\",\n \"vec3<u32>\": \"uint32x3\",\n \"vec4<u32>\": \"uint32x4\",\n vec2u: \"uint32x2\",\n vec3u: \"uint32x3\",\n vec4u: \"uint32x4\",\n bool: \"uint32\",\n \"vec2<bool>\": \"uint32x2\",\n \"vec3<bool>\": \"uint32x3\",\n \"vec4<bool>\": \"uint32x4\"\n};\nconst LOCATION_REGEX = /@location\\((\\d+)\\)\\s+([a-zA-Z0-9_]+)\\s*:\\s*([a-zA-Z0-9_<>]+)(?:,|\\s|\\)|$)/g;\nfunction parseLocations(str, results) {\n let match;\n while ((match = LOCATION_REGEX.exec(str)) !== 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 LOCATION_REGEX.lastIndex = 0;\n}\nfunction stripComments(source) {\n return source.replace(/\\/\\/.*$/gm, \"\").replace(/\\/\\*[\\s\\S]*?\\*\\//g, \"\");\n}\nfunction extractAttributesFromGpuProgram({ source, entryPoint }) {\n const results = {};\n const cleanSource = stripComments(source);\n const mainVertStart = cleanSource.indexOf(`fn ${entryPoint}(`);\n if (mainVertStart === -1) {\n return results;\n }\n const arrowFunctionStart = cleanSource.indexOf(\"->\", mainVertStart);\n if (arrowFunctionStart === -1) {\n return results;\n }\n const functionArgsSubstring = cleanSource.substring(mainVertStart, arrowFunctionStart);\n parseLocations(functionArgsSubstring, results);\n if (Object.keys(results).length === 0) {\n const structMatch = functionArgsSubstring.match(/\\(\\s*\\w+\\s*:\\s*(\\w+)/);\n if (structMatch) {\n const structName = structMatch[1];\n const structRegex = new RegExp(`struct\\\\s+${structName}\\\\s*\\\\{([^}]+)\\\\}`, \"s\");\n const structBody = cleanSource.match(structRegex);\n if (structBody) {\n parseLocations(structBody[1], results);\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(\n (group) => (\n // Handle both direct type matches and generic types like array<StructName>\n group.type === name || group.type.includes(`<${name}>`)\n )\n )) ?? [];\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\" || group.type.startsWith(\"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 } else if (group.type === \"texture_2d_array\" || group.type.startsWith(\"texture_2d_array<\")) {\n layout[group.group].push({\n binding: group.binding,\n visibility: ShaderStage.FRAGMENT,\n texture: {\n sampleType: \"float\",\n viewDimension: \"2d-array\",\n multisampled: false\n }\n });\n } else if (group.type === \"texture_cube\" || group.type.startsWith(\"texture_cube<\")) {\n layout[group.group].push({\n binding: group.binding,\n visibility: ShaderStage.FRAGMENT,\n texture: {\n sampleType: \"float\",\n viewDimension: \"cube\",\n multisampled: false\n }\n });\n }\n }\n for (let i = 0; i < layout.length; i++) {\n layout[i] || (layout[i] = []);\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 /** @internal */\n this._layoutKey = 0;\n /** @internal */\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 programCache[this._cacheKey] = 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 programCache[key]._cacheKey = key;\n }\n return programCache[key];\n }\n}\n\nexport { GpuProgram };\n//# sourceMappingURL=GpuProgram.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 */\n _updateKey() {\n if (!this._dirty) 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) return;\n currentResource?.off?.(\"change\", this.onResourceChange, this);\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 now - The current time in milliseconds.\n * @param tick - The current tick.\n * @internal\n */\n _touch(now, tick) {\n const resources = this.resources;\n for (const i in resources) {\n resources[i]._gcLastUsed = now;\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 this.destroy();\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[\"CANVAS\"] = 4] = \"CANVAS\";\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 { uid } from '../../../../utils/data/uid.mjs';\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';\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 */\n this._uniformBindMap = /* @__PURE__ */ Object.create(null);\n this._ownedBindGroups = [];\n /** @internal */\n this._destroyed = false;\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) compatibleRenderers |= RendererType.WEBGPU;\n if (glProgram) 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]) 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 if (this._destroyed) return;\n this._destroyed = true;\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","\"use strict\";\nconst blendModeIds = {\n normal: 0,\n add: 1,\n multiply: 2,\n screen: 3,\n overlay: 4,\n erase: 5,\n \"normal-npm\": 6,\n \"add-npm\": 7,\n \"screen-npm\": 8,\n min: 9,\n max: 10\n};\nconst BLEND = 0;\nconst OFFSET = 1;\nconst CULLING = 2;\nconst DEPTH_TEST = 3;\nconst WINDING = 4;\nconst DEPTH_MASK = 5;\nconst _State = class _State {\n constructor() {\n this.data = 0;\n this.blendMode = \"normal\";\n this.polygonOffset = 0;\n this.blend = true;\n this.depthMask = true;\n }\n /**\n * Activates blending of the computed fragment color values.\n * @default true\n */\n get blend() {\n return !!(this.data & 1 << BLEND);\n }\n set blend(value) {\n if (!!(this.data & 1 << BLEND) !== value) {\n this.data ^= 1 << BLEND;\n }\n }\n /**\n * Activates adding an offset to depth values of polygon's fragments\n * @default false\n */\n get offsets() {\n return !!(this.data & 1 << OFFSET);\n }\n set offsets(value) {\n if (!!(this.data & 1 << OFFSET) !== value) {\n this.data ^= 1 << OFFSET;\n }\n }\n /** The culling settings for this state none - No culling back - Back face culling front - Front face culling */\n set cullMode(value) {\n if (value === \"none\") {\n this.culling = false;\n return;\n }\n this.culling = true;\n this.clockwiseFrontFace = value === \"front\";\n }\n get cullMode() {\n if (!this.culling) {\n return \"none\";\n }\n return this.clockwiseFrontFace ? \"front\" : \"back\";\n }\n /**\n * Activates culling of polygons.\n * @default false\n */\n get culling() {\n return !!(this.data & 1 << CULLING);\n }\n set culling(value) {\n if (!!(this.data & 1 << CULLING) !== value) {\n this.data ^= 1 << CULLING;\n }\n }\n /**\n * Activates depth comparisons and updates to the depth buffer.\n * @default false\n */\n get depthTest() {\n return !!(this.data & 1 << DEPTH_TEST);\n }\n set depthTest(value) {\n if (!!(this.data & 1 << DEPTH_TEST) !== value) {\n this.data ^= 1 << DEPTH_TEST;\n }\n }\n /**\n * Enables or disables writing to the depth buffer.\n * @default true\n */\n get depthMask() {\n return !!(this.data & 1 << DEPTH_MASK);\n }\n set depthMask(value) {\n if (!!(this.data & 1 << DEPTH_MASK) !== value) {\n this.data ^= 1 << DEPTH_MASK;\n }\n }\n /**\n * Specifies whether or not front or back-facing polygons can be culled.\n * @default false\n */\n get clockwiseFrontFace() {\n return !!(this.data & 1 << WINDING);\n }\n set clockwiseFrontFace(value) {\n if (!!(this.data & 1 << WINDING) !== value) {\n this.data ^= 1 << WINDING;\n }\n }\n /**\n * The blend mode to be applied when this state is set. Apply a value of `normal` to reset the blend mode.\n * Setting this mode to anything other than NO_BLEND will automatically switch blending on.\n * @default 'normal'\n */\n get blendMode() {\n return this._blendMode;\n }\n set blendMode(value) {\n this.blend = value !== \"none\";\n this._blendMode = value;\n this._blendModeId = blendModeIds[value] || 0;\n }\n /**\n * The polygon offset. Setting this property to anything other than 0 will automatically enable polygon offset fill.\n * @default 0\n */\n get polygonOffset() {\n return this._polygonOffset;\n }\n set polygonOffset(value) {\n this.offsets = !!value;\n this._polygonOffset = value;\n }\n toString() {\n return `[pixi.js/core:State blendMode=${this.blendMode} clockwiseFrontFace=${this.clockwiseFrontFace} culling=${this.culling} depthMask=${this.depthMask} polygonOffset=${this.polygonOffset}]`;\n }\n /**\n * A quickly getting an instance of a State that is configured for 2d rendering.\n * @returns a new State with values set for 2d rendering\n */\n static for2d() {\n const state = new _State();\n state.depthTest = false;\n state.blend = true;\n return state;\n }\n};\n_State.default2d = _State.for2d();\nlet State = _State;\n\nexport { State };\n//# sourceMappingURL=State.mjs.map\n","import { GlProgram } from '../rendering/renderers/gl/shader/GlProgram.mjs';\nimport { GpuProgram } from '../rendering/renderers/gpu/shader/GpuProgram.mjs';\nimport { Shader } from '../rendering/renderers/shared/shader/Shader.mjs';\nimport { State } from '../rendering/renderers/shared/state/State.mjs';\n\n\"use strict\";\nconst _Filter = class _Filter extends Shader {\n /**\n * @param options - The optional parameters of this filter.\n */\n constructor(options) {\n options = { ..._Filter.defaultOptions, ...options };\n super(options);\n /** If enabled is true the filter is applied, if false it will not. */\n this.enabled = true;\n /**\n * The gpu state the filter requires to render.\n * @internal\n */\n this._state = State.for2d();\n this.blendMode = options.blendMode;\n this.padding = options.padding;\n if (typeof options.antialias === \"boolean\") {\n this.antialias = options.antialias ? \"on\" : \"off\";\n } else {\n this.antialias = options.antialias;\n }\n this.resolution = options.resolution;\n this.blendRequired = options.blendRequired;\n this.clipToViewport = options.clipToViewport;\n this.addResource(\"uTexture\", 0, 1);\n if (options.blendRequired) {\n this.addResource(\"uBackTexture\", 0, 3);\n }\n }\n /**\n * Applies the filter\n * @param filterManager - The renderer to retrieve the filter from\n * @param input - The input render target.\n * @param output - The target to output to.\n * @param clearMode - Should the output be cleared before rendering to it\n */\n apply(filterManager, input, output, clearMode) {\n filterManager.applyFilter(this, input, output, clearMode);\n }\n /**\n * Get the blend mode of the filter.\n * @default \"normal\"\n */\n get blendMode() {\n return this._state.blendMode;\n }\n /** Sets the blend mode of the filter. */\n set blendMode(value) {\n this._state.blendMode = value;\n }\n /**\n * A short hand function to create a filter based of a vertex and fragment shader src.\n * @param options\n * @returns A shiny new PixiJS filter!\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 _Filter({\n gpuProgram,\n glProgram,\n ...rest\n });\n }\n};\n/** The default filter settings */\n_Filter.defaultOptions = {\n blendMode: \"normal\",\n resolution: 1,\n padding: 0,\n antialias: \"off\",\n blendRequired: false,\n clipToViewport: true\n};\nlet Filter = _Filter;\n\nexport { Filter };\n//# sourceMappingURL=Filter.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) 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) 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 if (Array.isArray(options.preference)) {\n preferredOrder = options.preference.slice();\n } else {\n preferredOrder.push(options.preference);\n renderPriority.forEach((item) => {\n if (item !== options.preference) {\n preferredOrder.push(item);\n }\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 const { CanvasRenderer } = await import('./canvas/CanvasRenderer.mjs');\n RendererClass = CanvasRenderer;\n finalOptions = { ...options, ...options.canvasOptions };\n break;\n }\n }\n delete finalOptions.webgpu;\n delete finalOptions.webgl;\n delete finalOptions.canvasOptions;\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","export { default as EventEmitter } from 'eventemitter3';\n\n\"use strict\";\nconst DATA_URI = /^\\s*data:(?:([\\w-]+)\\/([\\w+.-]+))?(?:;charset=([\\w-]+))?(?:;(base64))?,(.*)/i;\nconst VERSION = \"8.18.1\";\n\nexport { DATA_URI, VERSION };\n//# sourceMappingURL=const.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { VERSION } from '../const.mjs';\n\n\"use strict\";\nclass ApplicationInitHook {\n static init() {\n globalThis.__PIXI_APP_INIT__?.(this, VERSION);\n }\n static destroy() {\n }\n}\n/** @ignore */\nApplicationInitHook.extension = ExtensionType.Application;\nclass RendererInitHook {\n constructor(renderer) {\n this._renderer = renderer;\n }\n init() {\n globalThis.__PIXI_RENDERER_INIT__?.(this._renderer, VERSION);\n }\n destroy() {\n this._renderer = null;\n }\n}\n/** @ignore */\nRendererInitHook.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem\n ],\n name: \"initHook\",\n priority: -10\n};\n\nexport { ApplicationInitHook, RendererInitHook };\n//# sourceMappingURL=globalHooks.mjs.map\n","import { ExtensionType } from '../extensions/Extensions.mjs';\n\n\"use strict\";\nclass ResizePlugin {\n /**\n * Initialize the plugin with scope of application instance\n * @private\n * @param {object} [options] - See application options\n */\n static init(options) {\n Object.defineProperty(\n this,\n \"resizeTo\",\n {\n configurable: true,\n set(dom) {\n globalThis.removeEventListener(\"resize\", this.queueResize);\n this._resizeTo = dom;\n if (dom) {\n globalThis.addEventListener(\"resize\", this.queueResize);\n this.resize();\n }\n },\n get() {\n return this._resizeTo;\n }\n }\n );\n this.queueResize = () => {\n if (!this._resizeTo) {\n return;\n }\n this._cancelResize();\n this._resizeId = requestAnimationFrame(() => this.resize());\n };\n this._cancelResize = () => {\n if (this._resizeId) {\n cancelAnimationFrame(this._resizeId);\n this._resizeId = null;\n }\n };\n this.resize = () => {\n if (!this._resizeTo) {\n return;\n }\n this._cancelResize();\n let width;\n let height;\n if (this._resizeTo === globalThis.window) {\n width = globalThis.innerWidth;\n height = globalThis.innerHeight;\n } else {\n const { clientWidth, clientHeight } = this._resizeTo;\n width = clientWidth;\n height = clientHeight;\n }\n this.renderer.resize(width, height);\n this.render();\n };\n this._resizeId = null;\n this._resizeTo = null;\n this.resizeTo = options.resizeTo || null;\n }\n /**\n * Clean up the ticker, scoped to application\n * @private\n */\n static destroy() {\n globalThis.removeEventListener(\"resize\", this.queueResize);\n this._cancelResize();\n this._cancelResize = null;\n this.queueResize = null;\n this.resizeTo = null;\n this.resize = null;\n }\n}\n/** @ignore */\nResizePlugin.extension = ExtensionType.Application;\n\nexport { ResizePlugin };\n//# sourceMappingURL=ResizePlugin.mjs.map\n","import { ExtensionType } from '../extensions/Extensions.mjs';\nimport { UPDATE_PRIORITY } from '../ticker/const.mjs';\nimport { Ticker } from '../ticker/Ticker.mjs';\n\n\"use strict\";\nclass TickerPlugin {\n /**\n * Initialize the plugin with scope of application instance\n * @private\n * @param {object} [options] - See application options\n */\n static init(options) {\n options = Object.assign({\n autoStart: true,\n sharedTicker: false\n }, options);\n Object.defineProperty(\n this,\n \"ticker\",\n {\n configurable: true,\n set(ticker) {\n if (this._ticker) {\n this._ticker.remove(this.render, this);\n }\n this._ticker = ticker;\n if (ticker) {\n ticker.add(this.render, this, UPDATE_PRIORITY.LOW);\n }\n },\n get() {\n return this._ticker;\n }\n }\n );\n this.stop = () => {\n this._ticker.stop();\n };\n this.start = () => {\n this._ticker.start();\n };\n this._ticker = null;\n this.ticker = options.sharedTicker ? Ticker.shared : new Ticker();\n if (options.autoStart) {\n this.start();\n }\n }\n /**\n * Clean up the ticker, scoped to application.\n * @private\n */\n static destroy() {\n if (this._ticker) {\n const oldTicker = this._ticker;\n this.ticker = null;\n oldTicker.destroy();\n }\n }\n}\n/** @ignore */\nTickerPlugin.extension = ExtensionType.Application;\n\nexport { TickerPlugin };\n//# sourceMappingURL=TickerPlugin.mjs.map\n","import { extensions } from '../extensions/Extensions.mjs';\nimport { ResizePlugin } from './ResizePlugin.mjs';\nimport { TickerPlugin } from './TickerPlugin.mjs';\n\n\"use strict\";\nextensions.add(ResizePlugin);\nextensions.add(TickerPlugin);\n//# sourceMappingURL=init.mjs.map\n","import { extensions, ExtensionType } from '../extensions/Extensions.mjs';\nimport { autoDetectRenderer } from '../rendering/renderers/autoDetectRenderer.mjs';\nimport { Container } from '../scene/container/Container.mjs';\nimport { ApplicationInitHook } from '../utils/global/globalHooks.mjs';\nimport { deprecation, v8_0_0 } from '../utils/logging/deprecation.mjs';\nimport './init.mjs';\n\n\"use strict\";\nconst _Application = class _Application {\n constructor(...args) {\n /**\n * The root display container for your application.\n * All visual elements should be added to this container or its children.\n * @example\n * ```js\n * // Create a sprite and add it to the stage\n * const sprite = Sprite.from('image.png');\n * app.stage.addChild(sprite);\n *\n * // Create a container for grouping objects\n * const container = new Container();\n * app.stage.addChild(container);\n * ```\n */\n this.stage = new Container();\n if (args[0] !== void 0) {\n deprecation(v8_0_0, \"Application constructor options are deprecated, please use Application.init() instead.\");\n }\n }\n /**\n * Initializes the PixiJS application with the specified options.\n *\n * This method must be called after creating a new Application instance.\n * @param options - Configuration options for the application and renderer\n * @returns A promise that resolves when initialization is complete\n * @example\n * ```js\n * const app = new Application();\n *\n * // Initialize with custom options\n * await app.init({\n * width: 800,\n * height: 600,\n * backgroundColor: 0x1099bb,\n * preference: 'webgl', // or 'webgpu'\n * });\n * ```\n */\n async init(options) {\n options = { ...options };\n this.stage || (this.stage = new Container());\n this.renderer = await autoDetectRenderer(options);\n _Application._plugins.forEach((plugin) => {\n plugin.init.call(this, options);\n });\n }\n /**\n * Renders the current stage to the screen.\n *\n * When using the default setup with {@link TickerPlugin} (enabled by default), you typically don't need to call\n * this method directly as rendering is handled automatically.\n *\n * Only use this method if you've disabled the {@link TickerPlugin} or need custom\n * render timing control.\n * @example\n * ```js\n * // Example 1: Default setup (TickerPlugin handles rendering)\n * const app = new Application();\n * await app.init();\n * // No need to call render() - TickerPlugin handles it\n *\n * // Example 2: Custom rendering loop (if TickerPlugin is disabled)\n * const app = new Application();\n * await app.init({ autoStart: false }); // Disable automatic rendering\n *\n * function animate() {\n * app.render();\n * requestAnimationFrame(animate);\n * }\n * animate();\n * ```\n */\n render() {\n this.renderer.render({ container: this.stage });\n }\n /**\n * Reference to the renderer's canvas element. This is the HTML element\n * that displays your application's graphics.\n * @readonly\n * @type {HTMLCanvasElement}\n * @example\n * ```js\n * // Create a new application\n * const app = new Application();\n * // Initialize the application\n * await app.init({...});\n * // Add canvas to the page\n * document.body.appendChild(app.canvas);\n *\n * // Access the canvas directly\n * console.log(app.canvas); // HTMLCanvasElement\n * ```\n */\n get canvas() {\n return this.renderer.canvas;\n }\n /**\n * Reference to the renderer's canvas element.\n * @type {HTMLCanvasElement}\n * @deprecated since 8.0.0\n * @see {@link Application#canvas}\n */\n get view() {\n deprecation(v8_0_0, \"Application.view is deprecated, please use Application.canvas instead.\");\n return this.renderer.canvas;\n }\n /**\n * Reference to the renderer's screen rectangle. This represents the visible area of your application.\n *\n * It's commonly used for:\n * - Setting filter areas for full-screen effects\n * - Defining hit areas for screen-wide interaction\n * - Determining the visible bounds of your application\n * @readonly\n * @example\n * ```js\n * // Use as filter area for a full-screen effect\n * const blurFilter = new BlurFilter();\n * sprite.filterArea = app.screen;\n *\n * // Use as hit area for screen-wide interaction\n * const screenSprite = new Sprite();\n * screenSprite.hitArea = app.screen;\n *\n * // Get screen dimensions\n * console.log(app.screen.width, app.screen.height);\n * ```\n * @see {@link Rectangle} For all available properties and methods\n */\n get screen() {\n return this.renderer.screen;\n }\n /**\n * Get the html div element that holds all DOM Container elements.\n * @readonly\n * @type {HTMLDivElement}\n */\n get domContainerRoot() {\n return this.renderer.renderPipes.dom?._domElement;\n }\n /**\n * Destroys the application and all of its resources.\n *\n * This method should be called when you want to completely\n * clean up the application and free all associated memory.\n * @param rendererDestroyOptions - Options for destroying the renderer:\n * - `false` or `undefined`: Preserves the canvas element (default)\n * - `true`: Removes the canvas element\n * - `{ removeView: boolean }`: Object with removeView property to control canvas removal\n * @param options - Options for destroying the application:\n * - `false` or `undefined`: Basic cleanup (default)\n * - `true`: Complete cleanup including children\n * - Detailed options object:\n * - `children`: Remove children\n * - `texture`: Destroy textures\n * - `textureSource`: Destroy texture sources\n * - `context`: Destroy WebGL context\n * @example\n * ```js\n * // Basic cleanup\n * app.destroy();\n *\n * // Remove canvas and do complete cleanup\n * app.destroy(true, true);\n *\n * // Remove canvas with explicit options\n * app.destroy({ removeView: true }, true);\n *\n * // Detailed cleanup with specific options\n * app.destroy(\n * { removeView: true },\n * {\n * children: true,\n * texture: true,\n * textureSource: true,\n * context: true\n * }\n * );\n * ```\n * > [!WARNING] After calling destroy, the application instance should no longer be used.\n * > All properties will be null and further operations will throw errors.\n */\n destroy(rendererDestroyOptions = false, options = false) {\n const plugins = _Application._plugins.slice(0);\n plugins.reverse();\n plugins.forEach((plugin) => {\n plugin.destroy.call(this);\n });\n this.stage.destroy(options);\n this.stage = null;\n this.renderer.destroy(rendererDestroyOptions);\n this.renderer = null;\n }\n};\n/**\n * Collection of installed plugins.\n * @internal\n */\n_Application._plugins = [];\nlet Application = _Application;\nextensions.handleByList(ExtensionType.Application, Application._plugins);\nextensions.add(ApplicationInitHook);\n\nexport { Application };\n//# sourceMappingURL=Application.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\";\nfunction pointInTriangle(px, py, x1, y1, x2, y2, x3, y3) {\n const v2x = x3 - x1;\n const v2y = y3 - y1;\n const v1x = x2 - x1;\n const v1y = y2 - y1;\n const v0x = px - x1;\n const v0y = py - y1;\n const dot00 = v2x * v2x + v2y * v2y;\n const dot01 = v2x * v1x + v2y * v1y;\n const dot02 = v2x * v0x + v2y * v0y;\n const dot11 = v1x * v1x + v1y * v1y;\n const dot12 = v1x * v0x + v1y * v0y;\n const invDenom = 1 / (dot00 * dot11 - dot01 * dot01);\n const u = (dot11 * dot02 - dot01 * dot12) * invDenom;\n const v = (dot00 * dot12 - dot01 * dot02) * invDenom;\n return u >= 0 && v >= 0 && u + v < 1;\n}\n\nexport { pointInTriangle };\n//# sourceMappingURL=pointInTriangle.mjs.map\n","\"use strict\";\nfunction colorToUniform(rgb, alpha, out, offset) {\n out[offset++] = (rgb >> 16 & 255) / 255;\n out[offset++] = (rgb >> 8 & 255) / 255;\n out[offset++] = (rgb & 255) / 255;\n out[offset++] = alpha;\n}\nfunction color32BitToUniform(abgr, out, offset) {\n const alpha = (abgr >> 24 & 255) / 255;\n out[offset++] = (abgr & 255) / 255 * alpha;\n out[offset++] = (abgr >> 8 & 255) / 255 * alpha;\n out[offset++] = (abgr >> 16 & 255) / 255 * alpha;\n out[offset++] = alpha;\n}\n\nexport { color32BitToUniform, colorToUniform };\n//# sourceMappingURL=colorToUniform.mjs.map\n","import { Buffer } from '../../../rendering/renderers/shared/buffer/Buffer.mjs';\nimport { BufferUsage } from '../../../rendering/renderers/shared/buffer/const.mjs';\nimport { Geometry } from '../../../rendering/renderers/shared/geometry/Geometry.mjs';\nimport { deprecation, v8_0_0 } from '../../../utils/logging/deprecation.mjs';\n\n\"use strict\";\nconst _MeshGeometry = class _MeshGeometry extends Geometry {\n constructor(...args) {\n let options = args[0] ?? {};\n if (options instanceof Float32Array) {\n deprecation(v8_0_0, \"use new MeshGeometry({ positions, uvs, indices }) instead\");\n options = {\n positions: options,\n uvs: args[1],\n indices: args[2]\n };\n }\n options = { ..._MeshGeometry.defaultOptions, ...options };\n const positions = options.positions || new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]);\n let uvs = options.uvs;\n if (!uvs) {\n if (options.positions) {\n uvs = new Float32Array(positions.length);\n } else {\n uvs = new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]);\n }\n }\n const indices = options.indices || new Uint32Array([0, 1, 2, 0, 2, 3]);\n const shrinkToFit = options.shrinkBuffersToFit;\n const positionBuffer = new Buffer({\n data: positions,\n label: \"attribute-mesh-positions\",\n shrinkToFit,\n usage: BufferUsage.VERTEX | BufferUsage.COPY_DST\n });\n const uvBuffer = new Buffer({\n data: uvs,\n label: \"attribute-mesh-uvs\",\n shrinkToFit,\n usage: BufferUsage.VERTEX | BufferUsage.COPY_DST\n });\n const indexBuffer = new Buffer({\n data: indices,\n label: \"index-mesh-buffer\",\n shrinkToFit,\n usage: BufferUsage.INDEX | BufferUsage.COPY_DST\n });\n super({\n attributes: {\n aPosition: {\n buffer: positionBuffer,\n format: \"float32x2\",\n stride: 2 * 4,\n offset: 0\n },\n aUV: {\n buffer: uvBuffer,\n format: \"float32x2\",\n stride: 2 * 4,\n offset: 0\n }\n },\n indexBuffer,\n topology: options.topology\n });\n this.batchMode = \"auto\";\n }\n /** The positions of the mesh. */\n get positions() {\n return this.attributes.aPosition.buffer.data;\n }\n /**\n * Set the positions of the mesh.\n * When setting the positions, its important that the uvs array is at least as long as the positions array.\n * otherwise the geometry will not be valid.\n * @param {Float32Array} value - The positions of the mesh.\n */\n set positions(value) {\n this.attributes.aPosition.buffer.data = value;\n }\n /** The UVs of the mesh. */\n get uvs() {\n return this.attributes.aUV.buffer.data;\n }\n /**\n * Set the UVs of the mesh.\n * Its important that the uvs array you set is at least as long as the positions array.\n * otherwise the geometry will not be valid.\n * @param {Float32Array} value - The UVs of the mesh.\n */\n set uvs(value) {\n this.attributes.aUV.buffer.data = value;\n }\n /** The indices of the mesh. */\n get indices() {\n return this.indexBuffer.data;\n }\n set indices(value) {\n this.indexBuffer.data = value;\n }\n};\n_MeshGeometry.defaultOptions = {\n topology: \"triangle-list\",\n shrinkBuffersToFit: false\n};\nlet MeshGeometry = _MeshGeometry;\n\nexport { MeshGeometry };\n//# sourceMappingURL=MeshGeometry.mjs.map\n","\"use strict\";\nclass BatchableMesh {\n constructor() {\n this.batcherName = \"default\";\n this.packAsQuad = false;\n this.indexOffset = 0;\n this.attributeOffset = 0;\n this.roundPixels = 0;\n this._batcher = null;\n this._batch = null;\n this._textureMatrixUpdateId = -1;\n this._uvUpdateId = -1;\n }\n get blendMode() {\n return this.renderable.groupBlendMode;\n }\n get topology() {\n return this._topology || this.geometry.topology;\n }\n set topology(value) {\n this._topology = value;\n }\n reset() {\n this.renderable = null;\n this.texture = null;\n this._batcher = null;\n this._batch = null;\n this.geometry = null;\n this._uvUpdateId = -1;\n this._textureMatrixUpdateId = -1;\n }\n /**\n * Sets the texture for the batchable mesh.\n * As it does so, it resets the texture matrix update ID.\n * this is to ensure that the texture matrix is recalculated when the uvs are referenced\n * @param value - The texture to set.\n */\n setTexture(value) {\n if (this.texture === value) return;\n this.texture = value;\n this._textureMatrixUpdateId = -1;\n }\n get uvs() {\n const geometry = this.geometry;\n const uvBuffer = geometry.getBuffer(\"aUV\");\n const uvs = uvBuffer.data;\n let transformedUvs = uvs;\n const textureMatrix = this.texture.textureMatrix;\n if (!textureMatrix.isSimple) {\n transformedUvs = this._transformedUvs;\n if (this._textureMatrixUpdateId !== textureMatrix._updateID || this._uvUpdateId !== uvBuffer._updateID) {\n if (!transformedUvs || transformedUvs.length < uvs.length) {\n transformedUvs = this._transformedUvs = new Float32Array(uvs.length);\n }\n this._textureMatrixUpdateId = textureMatrix._updateID;\n this._uvUpdateId = uvBuffer._updateID;\n textureMatrix.multiplyUvs(uvs, transformedUvs);\n }\n }\n return transformedUvs;\n }\n get positions() {\n return this.geometry.positions;\n }\n get indices() {\n return this.geometry.indices;\n }\n get color() {\n return this.renderable.groupColorAlpha;\n }\n get groupTransform() {\n return this.renderable.groupTransform;\n }\n get attributeSize() {\n return this.geometry.positions.length / 2;\n }\n get indexSize() {\n return this.geometry.indices.length;\n }\n}\n\nexport { BatchableMesh };\n//# sourceMappingURL=BatchableMesh.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { BindGroup } from '../../../rendering/renderers/gpu/shader/BindGroup.mjs';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup.mjs';\nimport { getAdjustedBlendModeBlend } from '../../../rendering/renderers/shared/state/getAdjustedBlendModeBlend.mjs';\nimport { color32BitToUniform } from '../../graphics/gpu/colorToUniform.mjs';\nimport { BatchableMesh } from './BatchableMesh.mjs';\n\n\"use strict\";\nclass MeshGpuData {\n destroy() {\n }\n}\nclass MeshPipe {\n constructor(renderer, adaptor) {\n this.localUniforms = new UniformGroup({\n uTransformMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: \"vec4<f32>\" },\n uRound: { value: 0, type: \"f32\" }\n });\n this.localUniformsBindGroup = new BindGroup({\n 0: this.localUniforms\n });\n this.renderer = renderer;\n this._adaptor = adaptor;\n this._adaptor.init();\n }\n validateRenderable(mesh) {\n const meshData = this._getMeshData(mesh);\n const wasBatched = meshData.batched;\n const isBatched = mesh.batched;\n meshData.batched = isBatched;\n if (wasBatched !== isBatched) {\n return true;\n } else if (isBatched) {\n const geometry = mesh._geometry;\n if (geometry.indices.length !== meshData.indexSize || geometry.positions.length !== meshData.vertexSize) {\n meshData.indexSize = geometry.indices.length;\n meshData.vertexSize = geometry.positions.length;\n return true;\n }\n const batchableMesh = this._getBatchableMesh(mesh);\n if (batchableMesh.texture.uid !== mesh._texture.uid) {\n batchableMesh._textureMatrixUpdateId = -1;\n }\n return !batchableMesh._batcher.checkAndUpdateTexture(\n batchableMesh,\n mesh._texture\n );\n }\n return false;\n }\n addRenderable(mesh, instructionSet) {\n const batcher = this.renderer.renderPipes.batch;\n const meshData = this._getMeshData(mesh);\n if (mesh.didViewUpdate) {\n meshData.indexSize = mesh._geometry.indices?.length;\n meshData.vertexSize = mesh._geometry.positions?.length;\n }\n if (meshData.batched) {\n const gpuBatchableMesh = this._getBatchableMesh(mesh);\n gpuBatchableMesh.setTexture(mesh._texture);\n gpuBatchableMesh.geometry = mesh._geometry;\n batcher.addToBatch(gpuBatchableMesh, instructionSet);\n } else {\n batcher.break(instructionSet);\n instructionSet.add(mesh);\n }\n }\n updateRenderable(mesh) {\n if (mesh.batched) {\n const gpuBatchableMesh = this._getBatchableMesh(mesh);\n gpuBatchableMesh.setTexture(mesh._texture);\n gpuBatchableMesh.geometry = mesh._geometry;\n gpuBatchableMesh._batcher.updateElement(gpuBatchableMesh);\n }\n }\n execute(mesh) {\n if (!mesh.isRenderable) return;\n mesh.state.blendMode = getAdjustedBlendModeBlend(mesh.groupBlendMode, mesh.texture._source);\n const localUniforms = this.localUniforms;\n localUniforms.uniforms.uTransformMatrix = mesh.groupTransform;\n localUniforms.uniforms.uRound = this.renderer._roundPixels | mesh._roundPixels;\n localUniforms.update();\n color32BitToUniform(\n mesh.groupColorAlpha,\n localUniforms.uniforms.uColor,\n 0\n );\n this._adaptor.execute(this, mesh);\n }\n _getMeshData(mesh) {\n var _a, _b;\n (_a = mesh._gpuData)[_b = this.renderer.uid] || (_a[_b] = new MeshGpuData());\n return mesh._gpuData[this.renderer.uid].meshData || this._initMeshData(mesh);\n }\n _initMeshData(mesh) {\n mesh._gpuData[this.renderer.uid].meshData = {\n batched: mesh.batched,\n indexSize: 0,\n vertexSize: 0\n };\n return mesh._gpuData[this.renderer.uid].meshData;\n }\n _getBatchableMesh(mesh) {\n var _a, _b;\n (_a = mesh._gpuData)[_b = this.renderer.uid] || (_a[_b] = new MeshGpuData());\n return mesh._gpuData[this.renderer.uid].batchableMesh || this._initBatchableMesh(mesh);\n }\n _initBatchableMesh(mesh) {\n const gpuMesh = new BatchableMesh();\n gpuMesh.renderable = mesh;\n gpuMesh.setTexture(mesh._texture);\n gpuMesh.transform = mesh.groupTransform;\n gpuMesh.roundPixels = this.renderer._roundPixels | mesh._roundPixels;\n mesh._gpuData[this.renderer.uid].batchableMesh = gpuMesh;\n return gpuMesh;\n }\n destroy() {\n this.localUniforms = null;\n this.localUniformsBindGroup = null;\n this._adaptor.destroy();\n this._adaptor = null;\n this.renderer = null;\n }\n}\n/** @ignore */\nMeshPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes\n ],\n name: \"mesh\"\n};\n\nexport { MeshGpuData, MeshPipe };\n//# sourceMappingURL=MeshPipe.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { MeshPipe } from './shared/MeshPipe.mjs';\n\n\"use strict\";\nextensions.add(MeshPipe);\n//# sourceMappingURL=init.mjs.map\n","import { pointInTriangle } from '../../../maths/point/pointInTriangle.mjs';\nimport { Geometry } from '../../../rendering/renderers/shared/geometry/Geometry.mjs';\nimport { State } from '../../../rendering/renderers/shared/state/State.mjs';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture.mjs';\nimport { deprecation, v8_0_0 } from '../../../utils/logging/deprecation.mjs';\nimport { ViewContainer } from '../../view/ViewContainer.mjs';\nimport { MeshGeometry } from './MeshGeometry.mjs';\nimport '../init.mjs';\n\n\"use strict\";\nclass Mesh extends ViewContainer {\n constructor(...args) {\n let options = args[0];\n if (options instanceof Geometry) {\n deprecation(v8_0_0, \"Mesh: use new Mesh({ geometry, shader }) instead\");\n options = {\n geometry: options,\n shader: args[1]\n };\n if (args[3]) {\n deprecation(v8_0_0, \"Mesh: drawMode argument has been removed, use geometry.topology instead\");\n options.geometry.topology = args[3];\n }\n }\n const { geometry, shader, texture, roundPixels, state, ...rest } = options;\n super({\n label: \"Mesh\",\n ...rest\n });\n /** @internal */\n this.renderPipeId = \"mesh\";\n /** @internal */\n this._shader = null;\n this.allowChildren = false;\n this.shader = shader ?? null;\n this.texture = texture ?? shader?.texture ?? Texture.WHITE;\n this.state = state ?? State.for2d();\n this._geometry = geometry;\n this._geometry.on(\"update\", this.onViewUpdate, this);\n this.roundPixels = roundPixels ?? false;\n }\n /** Alias for {@link Mesh#shader}. */\n get material() {\n deprecation(v8_0_0, \"mesh.material property has been removed, use mesh.shader instead\");\n return this._shader;\n }\n /**\n * Represents the vertex and fragment shaders that processes the geometry and runs on the GPU.\n * Can be shared between multiple Mesh objects.\n */\n set shader(value) {\n if (this._shader === value) return;\n this._shader = value;\n this.onViewUpdate();\n }\n get shader() {\n return this._shader;\n }\n /**\n * Includes vertex positions, face indices, colors, UVs, and\n * custom attributes within buffers, reducing the cost of passing all\n * this data to the GPU. Can be shared between multiple Mesh objects.\n */\n set geometry(value) {\n if (this._geometry === value) return;\n this._geometry?.off(\"update\", this.onViewUpdate, this);\n value.on(\"update\", this.onViewUpdate, this);\n this._geometry = value;\n this.onViewUpdate();\n }\n get geometry() {\n return this._geometry;\n }\n /** The texture that the Mesh uses. Null for non-MeshMaterial shaders */\n set texture(value) {\n value || (value = Texture.EMPTY);\n const currentTexture = this._texture;\n if (currentTexture === value) return;\n if (currentTexture && currentTexture.dynamic) currentTexture.off(\"update\", this.onViewUpdate, this);\n if (value.dynamic) value.on(\"update\", this.onViewUpdate, this);\n if (this.shader) {\n this.shader.texture = value;\n }\n this._texture = value;\n this.onViewUpdate();\n }\n get texture() {\n return this._texture;\n }\n get batched() {\n if (this._shader) return false;\n if ((this.state.data & 12) !== 0) return false;\n if (this._geometry instanceof MeshGeometry) {\n if (this._geometry.batchMode === \"auto\") {\n return this._geometry.positions.length / 2 <= 100;\n }\n return this._geometry.batchMode === \"batch\";\n }\n return false;\n }\n /**\n * The local bounds of the mesh.\n * @type {Bounds}\n */\n get bounds() {\n return this._geometry.bounds;\n }\n /**\n * Update local bounds of the mesh.\n * @private\n */\n updateBounds() {\n this._bounds = this._geometry.bounds;\n }\n /**\n * Checks if the object contains the given point.\n * @param point - The point to check\n */\n containsPoint(point) {\n const { x, y } = point;\n if (!this.bounds.containsPoint(x, y)) return false;\n const vertices = this.geometry.getBuffer(\"aPosition\").data;\n const step = this.geometry.topology === \"triangle-strip\" ? 3 : 1;\n if (this.geometry.getIndex()) {\n const indices = this.geometry.getIndex().data;\n const len = indices.length;\n for (let i = 0; i + 2 < len; i += step) {\n const ind0 = indices[i] * 2;\n const ind1 = indices[i + 1] * 2;\n const ind2 = indices[i + 2] * 2;\n if (pointInTriangle(\n x,\n y,\n vertices[ind0],\n vertices[ind0 + 1],\n vertices[ind1],\n vertices[ind1 + 1],\n vertices[ind2],\n vertices[ind2 + 1]\n )) {\n return true;\n }\n }\n } else {\n const len = vertices.length / 2;\n for (let i = 0; i + 2 < len; i += step) {\n const ind0 = i * 2;\n const ind1 = (i + 1) * 2;\n const ind2 = (i + 2) * 2;\n if (pointInTriangle(\n x,\n y,\n vertices[ind0],\n vertices[ind0 + 1],\n vertices[ind1],\n vertices[ind1 + 1],\n vertices[ind2],\n vertices[ind2 + 1]\n )) {\n return true;\n }\n }\n }\n return false;\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 * @example\n * mesh.destroy();\n * mesh.destroy(true);\n * mesh.destroy({ texture: true, textureSource: true });\n */\n destroy(options) {\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._geometry?.off(\"update\", this.onViewUpdate, this);\n this._texture = null;\n this._geometry = null;\n this._shader = null;\n }\n}\n\nexport { Mesh };\n//# sourceMappingURL=Mesh.mjs.map\n","import { definedProps } from '../container/utils/definedProps.mjs';\nimport { Mesh } from '../mesh/shared/Mesh.mjs';\nimport { MeshGeometry } from '../mesh/shared/MeshGeometry.mjs';\n\n\"use strict\";\nclass MeshSimple extends Mesh {\n /**\n * @param options - Options to be used for construction\n */\n constructor(options) {\n const { texture, vertices, uvs, indices, topology, ...rest } = options;\n const geometry = new MeshGeometry(definedProps({\n positions: vertices,\n uvs,\n indices,\n topology\n }));\n super(definedProps({\n ...rest,\n texture,\n geometry\n }));\n this.autoUpdate = true;\n this.onRender = this._render;\n }\n /**\n * The vertex positions of the mesh as a TypedArray. Each vertex is represented by two\n * consecutive values (x, y) in the array. Changes to these values will update the mesh's shape.\n * @example\n * ```ts\n * // Read vertex positions\n * const vertices = mesh.vertices;\n * console.log('First vertex:', vertices[0], vertices[1]);\n *\n * // Modify vertices directly\n * vertices[0] += 10; // Move first vertex right\n * vertices[1] -= 20; // Move first vertex up\n *\n * // Animate vertices\n * app.ticker.add(() => {\n * const time = performance.now() / 1000;\n * const vertices = mesh.vertices;\n *\n * // Wave motion\n * for (let i = 0; i < vertices.length; i += 2) {\n * vertices[i + 1] = Math.sin(time + i * 0.5) * 20;\n * }\n * });\n * ```\n * @see {@link MeshSimple#autoUpdate} For controlling vertex buffer updates\n * @see {@link MeshGeometry#getBuffer} For direct buffer access\n */\n get vertices() {\n return this.geometry.getBuffer(\"aPosition\").data;\n }\n set vertices(value) {\n this.geometry.getBuffer(\"aPosition\").data = value;\n }\n _render() {\n if (this.autoUpdate) {\n this.geometry.getBuffer(\"aPosition\").update();\n }\n }\n}\n\nexport { MeshSimple };\n//# sourceMappingURL=MeshSimple.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 './dom/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 { CanvasObserver } from './dom/CanvasObserver.mjs';\nexport { DOMContainer } from './dom/DOMContainer.mjs';\nexport { DOMPipe } from './dom/DOMPipe.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 passthroughFrag } from './filters/defaults/passthrough/passthrough.frag.mjs';\nexport { default as passthroughWgsl } from './filters/defaults/passthrough/passthrough.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 { CanvasFilterSystem, isCanvasFilterCapable } from './filters/CanvasFilterSystem.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 { PassthroughFilter } from './filters/defaults/passthrough/PassthroughFilter.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 { CanvasBatchAdaptor } from './rendering/batcher/canvas/CanvasBatchAdaptor.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 } 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 { CanvasColorMaskPipe } from './rendering/mask/color/CanvasColorMaskPipe.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 { CanvasStencilMaskPipe } from './rendering/mask/stencil/CanvasStencilMaskPipe.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 } from './rendering/mask/utils/addMaskLocalBounds.mjs';\nexport { autoDetectRenderer } from './rendering/renderers/autoDetectRenderer.mjs';\nexport { CanvasContextSystem } from './rendering/renderers/canvas/CanvasContextSystem.mjs';\nexport { CanvasLimitsSystem } from './rendering/renderers/canvas/CanvasLimitsSystem.mjs';\nexport { CanvasRenderer } from './rendering/renderers/canvas/CanvasRenderer.mjs';\nexport { CanvasRenderTargetAdaptor } from './rendering/renderers/canvas/renderTarget/CanvasRenderTargetAdaptor.mjs';\nexport { CanvasRenderTargetSystem } from './rendering/renderers/canvas/renderTarget/CanvasRenderTargetSystem.mjs';\nexport { CanvasTextureSystem } from './rendering/renderers/canvas/texture/CanvasTextureSystem.mjs';\nexport { canUseNewCanvasBlendModes } from './rendering/renderers/canvas/utils/canUseNewCanvasBlendModes.mjs';\nexport { canvasUtils } from './rendering/renderers/canvas/utils/canvasUtils.mjs';\nexport { mapCanvasBlendModesToPixi } from './rendering/renderers/canvas/utils/mapCanvasBlendModesToPixi.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 { GlGeometryGpuData, 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 { GlLimitsSystem } from './rendering/renderers/gl/GlLimitsSystem.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 { createGlUploadCubeTextureResource } from './rendering/renderers/gl/texture/uploaders/glUploadCubeTextureResource.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 { mapViewDimensionToGlTarget } from './rendering/renderers/gl/texture/utils/mapViewDimensionToGlTarget.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 { GpuBufferData, GpuBufferSystem } from './rendering/renderers/gpu/buffer/GpuBufferSystem.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 { GpuLimitsSystem } from './rendering/renderers/gpu/GpuLimitsSystem.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 { GPUTextureGpuData, 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 { createGpuUploadCubeTextureResource } from './rendering/renderers/gpu/texture/uploaders/gpuUploadCubeTextureResource.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 { GCSystem } from './rendering/renderers/shared/GCSystem.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 { 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, SCALE_MODES, WRAP_MODES } from './rendering/renderers/shared/texture/const.mjs';\nexport { CubeTexture } from './rendering/renderers/shared/texture/CubeTexture.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 { CubeTextureSource } from './rendering/renderers/shared/texture/sources/CubeTextureSource.mjs';\nexport { ExternalSource } from './rendering/renderers/shared/texture/sources/ExternalSource.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 { 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, updateTransformBackwards } from './scene/container/bounds/getGlobalBounds.mjs';\nexport { getLocalBounds } 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 { 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 { CanvasGraphicsAdaptor } from './scene/graphics/canvas/CanvasGraphicsAdaptor.mjs';\nexport { CanvasGraphicsContextSystem } from './scene/graphics/canvas/CanvasGraphicsContextSystem.mjs';\nexport { CanvasGraphicsPipe } from './scene/graphics/canvas/CanvasGraphicsPipe.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 { GraphicsGpuData, 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 { SVGDefsCollector } from './scene/graphics/shared/svg/buildSVGDefinitions.mjs';\nexport { buildSVGPath } from './scene/graphics/shared/svg/buildSVGPath.mjs';\nexport { buildSVGFillAttributes, buildSVGStrokeAttributes } from './scene/graphics/shared/svg/buildSVGStyle.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 { parseSVGStyle, styleAttributes } from './scene/graphics/shared/svg/parseSVGStyle.mjs';\nexport { graphicsContextToSvg } from './scene/graphics/shared/svg/SVGExporter.mjs';\nexport { SVGParser } from './scene/graphics/shared/svg/SVGParser.mjs';\nexport { extractSvgUrlId } from './scene/graphics/shared/svg/utils/extractSvgUrlId.mjs';\nexport { checkForNestedPattern, getFillInstructionData } from './scene/graphics/shared/svg/utils/fillOperations.mjs';\nexport { appendSVGPath, calculatePathArea, extractSubpaths } from './scene/graphics/shared/svg/utils/pathOperations.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 { getMaxMiterRatio } from './scene/graphics/shared/utils/getMaxMiterRatio.mjs';\nexport { getOrientationOfPoints } from './scene/graphics/shared/utils/getOrientationOfPoints.mjs';\nexport { triangulateWithHoles } from './scene/graphics/shared/utils/triangulateWithHoles.mjs';\nexport { RenderLayer } 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 { MeshGpuData, MeshPipe } from './scene/mesh/shared/MeshPipe.mjs';\nexport { CanvasParticleContainerAdaptor } from './scene/particle-container/canvas/CanvasParticleContainerAdaptor.mjs';\nexport { CanvasParticleContainerPipe } from './scene/particle-container/canvas/CanvasParticleContainerPipe.mjs';\nexport { GlParticleContainerAdaptor } from './scene/particle-container/gl/GlParticleContainerAdaptor.mjs';\nexport { GlParticleContainerPipe } from './scene/particle-container/gl/GlParticleContainerPipe.mjs';\nexport { GpuParticleContainerAdaptor } from './scene/particle-container/gpu/GpuParticleContainerAdaptor.mjs';\nexport { GpuParticleContainerPipe } from './scene/particle-container/gpu/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 { CanvasNineSliceSpritePipe } from './scene/sprite-nine-slice/canvas/CanvasNineSliceSpritePipe.mjs';\nexport { NineSliceGeometry } from './scene/sprite-nine-slice/NineSliceGeometry.mjs';\nexport { NineSlicePlane, NineSliceSprite } from './scene/sprite-nine-slice/NineSliceSprite.mjs';\nexport { NineSliceSpriteGpuData, NineSliceSpritePipe } from './scene/sprite-nine-slice/NineSliceSpritePipe.mjs';\nexport { CanvasTilingSpritePipe } from './scene/sprite-tiling/canvas/CanvasTilingSpritePipe.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 { TilingSpriteGpuData, 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 { AbstractBitmapTextPipe, BitmapTextGraphics } from './scene/text-bitmap/AbstractBitmapTextPipe.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 { CanvasBitmapTextPipe } from './scene/text-bitmap/CanvasBitmapTextPipe.mjs';\nexport { DynamicBitmapFont } from './scene/text-bitmap/DynamicBitmapFont.mjs';\nexport { BitmapTextPipe } from './scene/text-bitmap/GpuBitmapTextPipe.mjs';\nexport { bitmapTextSplit } from './scene/text-bitmap/utils/bitmapTextSplit.mjs';\nexport { getBitmapTextLayout } from './scene/text-bitmap/utils/getBitmapTextLayout.mjs';\nexport { resolveCharacters } from './scene/text-bitmap/utils/resolveCharacters.mjs';\nexport { BatchableHTMLText } from './scene/text-html/BatchableHTMLText.mjs';\nexport { HTMLText } from './scene/text-html/HTMLText.mjs';\nexport { HTMLTextPipe } from './scene/text-html/HTMLTextPipe.mjs';\nexport { HTMLTextRenderData } 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 { AbstractSplitText } from './scene/text-split/AbstractSplitText.mjs';\nexport { SplitBitmapText } from './scene/text-split/SplitBitmapText.mjs';\nexport { SplitText } from './scene/text-split/SplitText.mjs';\nexport { AbstractText, ensureTextOptions } from './scene/text/AbstractText.mjs';\nexport { BatchableText } from './scene/text/canvas/BatchableText.mjs';\nexport { CanvasTextGenerator } from './scene/text/canvas/CanvasTextGenerator.mjs';\nexport { CanvasTextMetrics } from './scene/text/canvas/CanvasTextMetrics.mjs';\nexport { CanvasTextPipe } from './scene/text/canvas/CanvasTextPipe.mjs';\nexport { CanvasRendererTextSystem } 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 { measureTaggedText, tokenizeTaggedRuns, wordWrapTaggedLines } from './scene/text/canvas/utils/measureTaggedText.mjs';\nexport { getPlainText, hasTagMarkup, hasTagStyles, parseTaggedText } from './scene/text/canvas/utils/parseTaggedText.mjs';\nexport { BREAKING_SPACES, BREAKING_SPACES_SET, BREAK_AFTER_CHARS, BREAK_AFTER_CHARS_SET, COLLAPSIBLE_SPACES, COLLAPSIBLE_SPACES_SET, NEWLINES, NEWLINES_SET, NEWLINE_MATCH_REGEX, NEWLINE_SPLIT_REGEX, collapseNewlines, collapseSpaces, getCharacterGroups, isBreakAfterChar, isBreakingSpace, isCollapsibleSpace, isNewline, tokenize, trimRight } from './scene/text/canvas/utils/textTokenization.mjs';\nexport { wordWrap } from './scene/text/canvas/utils/wordWrap.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 { AbstractTextSystem } from './scene/text/shared/AbstractTextSystem.mjs';\nexport { CanvasTextSystem } from './scene/text/shared/GpuTextSystem.mjs';\nexport { Text } from './scene/text/Text.mjs';\nexport { TextStyle } from './scene/text/TextStyle.mjs';\nexport { canvasTextSplit } from './scene/text/utils/canvasTextSplit.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 { GCManagedHash } from './utils/data/GCManagedHash.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 { GlobalResourceRegistry } from './utils/pool/GlobalResourceRegistry.mjs';\nexport { Pool } from './utils/pool/Pool.mjs';\nexport { BigPool, PoolGroupClass } from './utils/pool/PoolGroup.mjs';\nexport { sayHello } from './utils/sayHello.mjs';\nexport { earcut } from './utils/utils.mjs';\n\n\"use strict\";\nextensions.add(browserExt, webworkerExt);\n\nexport { browserExt, extensions, webworkerExt };\n//# sourceMappingURL=index.mjs.map\n","import type { BLEND_MODES } from \"pixi.js\";\n\nexport type PixiBlendMode =\n | \"normal\"\n | \"add\"\n | \"multiply\"\n | \"screen\"\n | \"overlay\"\n | \"darken\"\n | \"lighten\"\n | \"color-dodge\"\n | \"color-burn\"\n | \"hard-light\"\n | \"soft-light\"\n | \"difference\"\n | \"exclusion\";\n\nconst BLEND_MODE_MAP: Record<string, BLEND_MODES> = {\n normal: \"normal\",\n add: \"add\",\n multiply: \"multiply\",\n screen: \"screen\",\n overlay: \"overlay\",\n darken: \"darken\",\n lighten: \"lighten\",\n \"color-dodge\": \"color-dodge\",\n \"color dodge\": \"color-dodge\",\n \"color-burn\": \"color-burn\",\n \"color burn\": \"color-burn\",\n \"hard-light\": \"hard-light\",\n \"hard light\": \"hard-light\",\n \"soft-light\": \"soft-light\",\n \"soft light\": \"soft-light\",\n difference: \"difference\",\n exclusion: \"exclusion\",\n};\n\nexport const BLEND_MODES_ALL: readonly PixiBlendMode[] = [\n \"normal\",\n \"add\",\n \"multiply\",\n \"screen\",\n \"overlay\",\n \"darken\",\n \"lighten\",\n \"color-dodge\",\n \"color-burn\",\n \"hard-light\",\n \"soft-light\",\n \"difference\",\n \"exclusion\",\n] as const;\n\nexport function toPixiBlendMode(mode: PixiBlendMode | string): BLEND_MODES {\n return BLEND_MODE_MAP[mode] ?? \"normal\";\n}\n\nexport function isValidBlendMode(mode: string): mode is PixiBlendMode {\n return (BLEND_MODES_ALL as readonly string[]).includes(mode);\n}\n","import { Filter, GlProgram } from \"pixi.js\";\n\nexport interface ScreenRgbColor {\n readonly r: number;\n readonly g: number;\n readonly b: number;\n}\n\nconst VERTEX = /* glsl */ `\nin vec2 aPosition;\nin vec2 aTextureCoord;\nout vec2 vTextureCoord;\n\nuniform vec4 uInputSize;\nuniform vec4 uOutputFrame;\nuniform vec4 uOutputTexture;\n\nvec4 filterVertexPosition(void) {\n vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;\n position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0 * uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;\n return vec4(position, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord(void) {\n return aTextureCoord;\n}\n\nvoid main(void) {\n gl_Position = filterVertexPosition();\n vTextureCoord = filterTextureCoord();\n}\n`;\n\nconst FRAGMENT = /* glsl */ `\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec3 uScreenColor;\n\nvoid main(void) {\n vec4 color = texture(uTexture, vTextureCoord);\n color.rgb = color.rgb + uScreenColor * color.a * (1.0 - color.rgb);\n finalColor = color;\n}\n`;\n\nconst UNIFORM_GROUP = \"screenColorUniforms\";\nconst UNIFORM_NAME = \"uScreenColor\";\n\nexport function createScreenColorFilter(color: ScreenRgbColor): Filter {\n return new Filter({\n glProgram: GlProgram.from({\n vertex: VERTEX,\n fragment: FRAGMENT,\n name: \"screen-color-filter\",\n }),\n resources: {\n [UNIFORM_GROUP]: {\n [UNIFORM_NAME]: {\n value: new Float32Array([color.r, color.g, color.b]),\n type: \"vec3<f32>\",\n },\n },\n },\n });\n}\n\nexport function updateScreenColorFilter(\n filter: Filter,\n color: ScreenRgbColor,\n): void {\n const uniforms = filter.resources?.[UNIFORM_GROUP]?.uniforms as\n | Record<string, Float32Array | undefined>\n | undefined;\n const uniform = uniforms?.[UNIFORM_NAME];\n if (!uniform) return;\n uniform[0] = color.r;\n uniform[1] = color.g;\n uniform[2] = color.b;\n}\n","import \"pixi.js/unsafe-eval\";\nimport type { RuntimeMeshSnapshot } from \"@vivi2d/runtime\";\nimport { Application, Container, type Filter, MeshSimple, Texture } from \"pixi.js\";\nimport { toPixiBlendMode } from \"./blend-modes\";\nimport { createScreenColorFilter, updateScreenColorFilter } from \"./screen-color-filter\";\n\nexport interface ViviRendererOptions {\n backgroundColor?: number;\n\n antialias?: boolean;\n\n transparent?: boolean;\n}\n\nexport interface RenderableViviModel {\n getRenderList(): readonly RuntimeMeshSnapshot[];\n getMeshSnapshot(meshId: string): RuntimeMeshSnapshot | null;\n}\n\ninterface LegacyMeshRenderState {\n id: string;\n textureId?: string;\n vertices: Float32Array;\n uvs: Float32Array;\n indices: Uint32Array;\n x: number;\n y: number;\n opacity: number;\n visible: boolean;\n culled: boolean;\n blendMode: RuntimeMeshSnapshot[\"blendMode\"] | string;\n multiplyColor: { r: number; g: number; b: number };\n screenColor?: { r: number; g: number; b: number };\n drawOrder: number;\n}\n\nexport interface LegacyRenderableViviModel {\n getAllMeshStates(): ReadonlyMap<string, LegacyMeshRenderState>;\n getMeshState(meshId: string): LegacyMeshRenderState | undefined;\n}\n\nexport type ViviPixiRenderableModel = RenderableViviModel | LegacyRenderableViviModel;\n\nexport class ViviPixiRenderer {\n private app: Application;\n private world: Container;\n private meshes: Map<string, MeshSimple> = new Map();\n private textures: Map<string, Texture> = new Map();\n private screenFilters: Map<string, Filter> = new Map();\n private model: ViviPixiRenderableModel | null = null;\n private initialized = false;\n\n private constructor(app: Application) {\n this.app = app;\n this.world = new Container();\n this.world.sortableChildren = true;\n this.app.stage.addChild(this.world);\n }\n\n static async create(\n canvas: HTMLCanvasElement,\n options?: ViviRendererOptions,\n ): Promise<ViviPixiRenderer> {\n const app = new Application();\n await app.init({\n canvas,\n backgroundAlpha: options?.transparent ? 0 : 1,\n backgroundColor: options?.backgroundColor ?? 0xffffff,\n antialias: options?.antialias ?? true,\n autoDensity: true,\n resolution: window.devicePixelRatio || 1,\n width: canvas.width,\n height: canvas.height,\n });\n const renderer = new ViviPixiRenderer(app);\n renderer.initialized = true;\n return renderer;\n }\n\n setModel(\n model: ViviPixiRenderableModel,\n canvasTextures: Map<string, HTMLCanvasElement>,\n ): void {\n this.destroyMeshes();\n this.model = model;\n\n this.destroyTextures();\n for (const [layerId, canvas] of canvasTextures) {\n this.textures.set(layerId, Texture.from(canvas));\n }\n\n this.buildMeshes();\n }\n\n render(): void {\n if (!this.model || !this.initialized) return;\n this.syncMeshes();\n this.app.render();\n }\n\n resize(width: number, height: number): void {\n this.app.renderer.resize(width, height);\n }\n\n destroy(): void {\n this.destroyMeshes();\n this.destroyTextures();\n this.model = null;\n // Keep the host-owned canvas immediately reusable for a replacement player.\n this.app.stage.removeChild(this.world);\n this.initialized = false;\n }\n\n screenToWorld(screenX: number, screenY: number): { x: number; y: number } {\n const worldPos = this.world.toLocal({ x: screenX, y: screenY });\n return { x: worldPos.x, y: worldPos.y };\n }\n\n get pixiApp(): Application {\n return this.app;\n }\n\n private buildMeshes(): void {\n if (!this.model) return;\n\n for (const state of getRuntimeRenderList(this.model)) {\n const texture = this.textures.get(state.id) ?? this.textures.get(state.textureId);\n if (!texture) continue;\n\n const mesh = new MeshSimple({\n texture,\n vertices: state.vertices,\n uvs: state.uvs,\n indices: state.indices,\n });\n\n mesh.label = state.id;\n this.applyMeshState(mesh, state);\n this.world.addChild(mesh);\n this.meshes.set(state.id, mesh);\n }\n }\n\n private syncMeshes(): void {\n if (!this.model) return;\n\n for (const [meshId, mesh] of this.meshes) {\n const state = getRuntimeMeshSnapshot(this.model, meshId);\n if (!state) {\n mesh.visible = false;\n continue;\n }\n this.applyMeshState(mesh, state);\n\n mesh.vertices = state.vertices;\n }\n }\n\n private applyMeshState(mesh: MeshSimple, state: RuntimeMeshSnapshot): void {\n mesh.x = state.x;\n mesh.y = state.y;\n mesh.alpha = state.opacity;\n mesh.visible = state.visible;\n mesh.blendMode = toPixiBlendMode(state.blendMode);\n mesh.tint = runtimeColorToHex(state.multiplyColor);\n mesh.zIndex = state.drawOrder;\n\n if (state.screenColor) {\n const existing = this.screenFilters.get(state.id);\n if (existing) {\n updateScreenColorFilter(existing, runtimeColorToRgb(state.screenColor));\n } else {\n const filter = createScreenColorFilter(runtimeColorToRgb(state.screenColor));\n mesh.filters = [filter];\n this.screenFilters.set(state.id, filter);\n }\n } else {\n const existing = this.screenFilters.get(state.id);\n if (existing) {\n mesh.filters = [];\n existing.destroy();\n this.screenFilters.delete(state.id);\n }\n }\n }\n\n private destroyMeshes(): void {\n for (const mesh of this.meshes.values()) {\n mesh.destroy({ children: true });\n }\n this.meshes.clear();\n for (const f of this.screenFilters.values()) f.destroy();\n this.screenFilters.clear();\n }\n\n private destroyTextures(): void {\n for (const tex of this.textures.values()) {\n tex.destroy(false);\n }\n this.textures.clear();\n }\n}\n\nfunction runtimeColorToHex(\n color: readonly [number, number, number, number] | null,\n): number {\n const r = Math.round(Math.max(0, Math.min(1, color?.[0] ?? 1)) * 255);\n const g = Math.round(Math.max(0, Math.min(1, color?.[1] ?? 1)) * 255);\n const b = Math.round(Math.max(0, Math.min(1, color?.[2] ?? 1)) * 255);\n return (r << 16) | (g << 8) | b;\n}\n\nfunction runtimeColorToRgb(color: readonly [number, number, number, number]) {\n return { r: color[0], g: color[1], b: color[2] };\n}\n\nfunction getRuntimeRenderList(\n model: ViviPixiRenderableModel,\n): readonly RuntimeMeshSnapshot[] {\n if (\"getRenderList\" in model) return model.getRenderList();\n return [...model.getAllMeshStates().values()].map(legacyStateToRuntimeSnapshot);\n}\n\nfunction getRuntimeMeshSnapshot(\n model: ViviPixiRenderableModel,\n meshId: string,\n): RuntimeMeshSnapshot | null {\n if (\"getMeshSnapshot\" in model) return model.getMeshSnapshot(meshId);\n const state = model.getMeshState(meshId);\n return state ? legacyStateToRuntimeSnapshot(state) : null;\n}\n\nfunction legacyStateToRuntimeSnapshot(state: LegacyMeshRenderState): RuntimeMeshSnapshot {\n return {\n id: state.id,\n textureId: state.textureId ?? state.id,\n vertices: state.vertices,\n uvs: state.uvs,\n indices: state.indices,\n x: state.x,\n y: state.y,\n opacity: state.opacity,\n visible: state.visible,\n culled: state.culled,\n blendMode: toRuntimeBlendMode(state.blendMode),\n multiplyColor: [\n state.multiplyColor.r,\n state.multiplyColor.g,\n state.multiplyColor.b,\n 1,\n ],\n screenColor: state.screenColor\n ? [state.screenColor.r, state.screenColor.g, state.screenColor.b, 1]\n : null,\n drawOrder: state.drawOrder,\n };\n}\n\nfunction toRuntimeBlendMode(mode: string): RuntimeMeshSnapshot[\"blendMode\"] {\n return mode === \"multiply\" || mode === \"screen\" || mode === \"add\" ? mode : \"normal\";\n}\n","export interface ThumbnailOptions {\n width?: number;\n\n height?: number;\n\n format?: \"png\" | \"jpeg\" | \"webp\";\n\n quality?: number;\n}\n\nconst DEFAULTS: Required<ThumbnailOptions> = {\n width: 256,\n height: 256,\n format: \"png\",\n quality: 0.85,\n};\n\nexport function generateThumbnail(\n sourceCanvas: HTMLCanvasElement,\n options?: ThumbnailOptions,\n): string {\n const opts = { ...DEFAULTS, ...options };\n\n const thumbCanvas = document.createElement(\"canvas\");\n thumbCanvas.width = opts.width;\n thumbCanvas.height = opts.height;\n\n const ctx = thumbCanvas.getContext(\"2d\");\n if (!ctx) return \"\";\n\n const srcW = sourceCanvas.width;\n const srcH = sourceCanvas.height;\n const scale = Math.min(opts.width / srcW, opts.height / srcH);\n const drawW = srcW * scale;\n const drawH = srcH * scale;\n const offsetX = (opts.width - drawW) / 2;\n const offsetY = (opts.height - drawH) / 2;\n\n ctx.clearRect(0, 0, opts.width, opts.height);\n ctx.drawImage(sourceCanvas, offsetX, offsetY, drawW, drawH);\n\n const mimeType = `image/${opts.format}`;\n return thumbCanvas.toDataURL(mimeType, opts.quality);\n}\n\nexport function generateThumbnailBlob(\n sourceCanvas: HTMLCanvasElement,\n options?: ThumbnailOptions,\n): Promise<Blob | null> {\n const opts = { ...DEFAULTS, ...options };\n\n const thumbCanvas = document.createElement(\"canvas\");\n thumbCanvas.width = opts.width;\n thumbCanvas.height = opts.height;\n\n const ctx = thumbCanvas.getContext(\"2d\");\n if (!ctx) return Promise.resolve(null);\n\n const srcW = sourceCanvas.width;\n const srcH = sourceCanvas.height;\n const scale = Math.min(opts.width / srcW, opts.height / srcH);\n const drawW = srcW * scale;\n const drawH = srcH * scale;\n const offsetX = (opts.width - drawW) / 2;\n const offsetY = (opts.height - drawH) / 2;\n\n ctx.clearRect(0, 0, opts.width, opts.height);\n ctx.drawImage(sourceCanvas, offsetX, offsetY, drawW, drawH);\n\n const mimeType = `image/${opts.format}`;\n return new Promise((resolve) => {\n thumbCanvas.toBlob((blob) => resolve(blob), mimeType, opts.quality);\n });\n}\n\nexport function dataUrlToBase64(dataUrl: string): string {\n const idx = dataUrl.indexOf(\",\");\n return idx >= 0 ? dataUrl.slice(idx + 1) : dataUrl;\n}\n\nexport function base64ToDataUrl(\n base64: string,\n format: \"png\" | \"jpeg\" | \"webp\" = \"png\",\n): string {\n return `data:image/${format};base64,${base64}`;\n}\n","import {\n assertByteLengthWithinLimit,\n assertTextLengthWithinLimit,\n MAX_VIVI_TEXT_FILE_BYTES,\n} from \"@vivi2d/core/load-limits\";\nimport { parseViviFile } from \"@vivi2d/core/project-parser\";\nimport { PublicViviModel } from \"@vivi2d/core/public-model\";\nimport {\n cancelScript,\n parseScript,\n runScript,\n type ScriptModelAPI,\n type ScriptRunnerState,\n} from \"@vivi2d/core/script-runner\";\nimport { extractTextures } from \"@vivi2d/renderer-pixi/loader\";\nimport { ViviPixiRenderer } from \"@vivi2d/renderer-pixi/renderer\";\nimport {\n generateThumbnail,\n type ThumbnailOptions as PixiThumbnailOptions,\n} from \"@vivi2d/renderer-pixi/thumbnail\";\n\n// <vivi-model> WebComponent\n\nconst STYLES = `\n:host {\n display: inline-block;\n overflow: hidden;\n}\ncanvas {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n`;\n\nexport interface ViviProjectSnapshot {\n name?: string;\n [key: string]: unknown;\n}\n\nexport interface ViviModelHandle {\n readonly project: ViviProjectSnapshot;\n readonly parameterValues: Record<string, number>;\n}\n\nexport interface ViviThumbnailOptions {\n width?: number;\n height?: number;\n format?: \"png\" | \"jpeg\" | \"webp\";\n quality?: number;\n}\n\nasync function readResponseTextWithLimit(\n response: Response,\n label: string,\n): Promise<string> {\n const contentLengthHeader = response.headers.get(\"content-length\");\n if (contentLengthHeader) {\n const contentLength = Number(contentLengthHeader);\n if (Number.isFinite(contentLength) && contentLength > 0) {\n assertByteLengthWithinLimit(contentLength, MAX_VIVI_TEXT_FILE_BYTES, label);\n }\n }\n\n const reader = response.body?.getReader();\n if (!reader) {\n const text = await response.text();\n assertTextLengthWithinLimit(text, MAX_VIVI_TEXT_FILE_BYTES, label);\n return text;\n }\n\n const decoder = new TextDecoder();\n let totalBytes = 0;\n let text = \"\";\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n totalBytes += value.byteLength;\n assertByteLengthWithinLimit(totalBytes, MAX_VIVI_TEXT_FILE_BYTES, label);\n text += decoder.decode(value, { stream: true });\n }\n text += decoder.decode();\n assertTextLengthWithinLimit(text, MAX_VIVI_TEXT_FILE_BYTES, label);\n return text;\n}\n\nexport class ViviModelElement extends HTMLElement {\n static observedAttributes = [\"src\", \"width\", \"height\", \"autoplay\"];\n\n private shadow: ShadowRoot;\n private canvas: HTMLCanvasElement;\n private renderer: ViviPixiRenderer | null = null;\n private _model: PublicViviModel | null = null;\n private animFrameId = 0;\n private lastTime = 0;\n private _loading = false;\n private loadAbort: AbortController | null = null;\n private scriptState: ScriptRunnerState = { running: false, cancelled: false };\n\n constructor() {\n super();\n this.shadow = this.attachShadow({ mode: \"open\" });\n\n const style = document.createElement(\"style\");\n style.textContent = STYLES;\n this.shadow.appendChild(style);\n\n this.canvas = document.createElement(\"canvas\");\n this.shadow.appendChild(this.canvas);\n }\n\n connectedCallback(): void {\n const src = this.getAttribute(\"src\");\n if (src) void this.load(src);\n }\n\n disconnectedCallback(): void {\n this.dispose();\n }\n\n attributeChangedCallback(\n name: string,\n oldValue: string | null,\n newValue: string | null,\n ): void {\n if (name === \"src\" && newValue && newValue !== oldValue) {\n void this.load(newValue);\n }\n if (name === \"width\" && newValue && this.canvas) {\n this.style.width = `${newValue}px`;\n }\n if (name === \"height\" && newValue && this.canvas) {\n this.style.height = `${newValue}px`;\n }\n }\n\n get model(): ViviModelHandle | null {\n return this._model as ViviModelHandle | null;\n }\n\n get project(): ViviProjectSnapshot | null {\n return (this._model?.project as ViviProjectSnapshot | undefined) ?? null;\n }\n\n get loading(): boolean {\n return this._loading;\n }\n\n async load(src: string): Promise<void> {\n this.loadAbort?.abort();\n const abort = new AbortController();\n this.loadAbort = abort;\n\n this.dispose();\n this._loading = true;\n this.dispatchEvent(new CustomEvent(\"vivi-load-start\"));\n\n try {\n const response = await fetch(src, {\n credentials: \"omit\",\n mode: \"cors\",\n signal: abort.signal,\n });\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${src}`);\n }\n const json = await readResponseTextWithLimit(response, \"Remote .vivi model\");\n const fileData = parseViviFile(json, { profile: \"publicProfileV1\" });\n const model = PublicViviModel.fromFileData(fileData);\n const textures = await extractTextures(fileData);\n\n this.canvas.width = model.width;\n this.canvas.height = model.height;\n\n const renderer = await ViviPixiRenderer.create(this.canvas, {\n backgroundColor: 0x000000,\n transparent: true,\n });\n renderer.setModel(model, textures);\n\n this.renderer = renderer;\n this._model = model;\n this._loading = false;\n\n model.update();\n renderer.render();\n\n this.startLoop();\n\n this.dispatchEvent(new CustomEvent(\"load\", { detail: { model } }));\n this.dispatchEvent(new CustomEvent(\"vivi-load\", { detail: { model } }));\n } catch (e) {\n this._loading = false;\n const message = e instanceof Error ? e.message : String(e);\n this.dispatchEvent(new CustomEvent(\"error\", { detail: { message } }));\n this.dispatchEvent(new CustomEvent(\"vivi-error\", { detail: { message } }));\n }\n }\n\n setParameter(id: string, value: number): void {\n this._model?.setParameter(id, value);\n }\n\n setParameters(values: Record<string, number>): void {\n this._model?.setParameters(values);\n }\n\n resetParameters(): void {\n this._model?.resetParameters();\n }\n\n applyExpressionPreset(presetId: string): void {\n this._model?.applyExpressionPreset(presetId);\n }\n\n applyPresetByHotkey(hotkey: number): void {\n const preset = this._model?.project.expressionPresets?.find(\n (p) => p.hotkey === hotkey,\n );\n if (preset) {\n this._model?.applyExpressionPreset(preset.id);\n }\n }\n\n getExpressionPresets(): Array<{\n id: string;\n name: string;\n hotkey?: number;\n }> {\n return (\n this._model?.project.expressionPresets?.map((p) => ({\n id: p.id,\n name: p.name,\n hotkey: p.hotkey,\n })) ?? []\n );\n }\n\n getParameters(): Array<{\n id: string;\n name: string;\n min: number;\n max: number;\n default: number;\n }> {\n return (\n this._model?.project.parameters.map((p) => ({\n id: p.id,\n name: p.name,\n min: p.minValue,\n max: p.maxValue,\n default: p.defaultValue,\n })) ?? []\n );\n }\n\n screenToWorld(screenX: number, screenY: number): { x: number; y: number } | null {\n return this.renderer?.screenToWorld(screenX, screenY) ?? null;\n }\n\n hitTest(worldX: number, worldY: number): { colliderName: string; tag?: string } | null {\n return this._model?.hitTest(worldX, worldY) ?? null;\n }\n\n async runScript(source: string): Promise<void> {\n if (!this._model) throw new Error(\"Model is not loaded\");\n this.cancelScript();\n\n const model = this._model;\n const api: ScriptModelAPI = {\n setParameter: (id, value) => model.setParameter(id, value),\n setParameters: (values) => model.setParameters(values),\n resetParameters: () => model.resetParameters(),\n applyExpressionPreset: (id) => model.applyExpressionPreset(id),\n getPresetByName: (name) => {\n const p = model.project.expressionPresets?.find((pr) => pr.name === name);\n return p?.id ?? null;\n },\n getParameterId: (nameOrId) => {\n const p = model.project.parameters.find(\n (pr) => pr.id === nameOrId || pr.name === nameOrId,\n );\n return p?.id ?? null;\n },\n update: () => model.update(),\n };\n\n const script = parseScript(source);\n this.scriptState = { running: true, cancelled: false };\n await runScript(script, api, this.scriptState);\n }\n\n cancelScript(): void {\n if (this.scriptState.running) {\n cancelScript(this.scriptState);\n }\n }\n\n get scriptRunning(): boolean {\n return this.scriptState.running;\n }\n\n generateThumbnail(options?: ViviThumbnailOptions): string {\n return generateThumbnail(this.canvas, options as PixiThumbnailOptions | undefined);\n }\n\n private startLoop(): void {\n this.lastTime = 0;\n const loop = (time: number) => {\n const dt = this.lastTime > 0 ? (time - this.lastTime) / 1000 : 0;\n this.lastTime = time;\n this._model?.update(dt);\n this.renderer?.render();\n this.animFrameId = requestAnimationFrame(loop);\n };\n this.animFrameId = requestAnimationFrame(loop);\n }\n\n private dispose(): void {\n if (this.animFrameId) {\n cancelAnimationFrame(this.animFrameId);\n this.animFrameId = 0;\n }\n this.renderer?.destroy();\n this.renderer = null;\n this._model = null;\n this.lastTime = 0;\n this.dispatchEvent(new CustomEvent(\"vivi-dispose\"));\n }\n}\n","export type ViviWebErrorCode =\n | \"VIVI_WEB_INVALID_SOURCE\"\n | \"VIVI_WEB_FETCH_FAILED\"\n | \"VIVI_WEB_PARSE_FAILED\"\n | \"VIVI_WEB_VALIDATION_FAILED\"\n | \"VIVI_WEB_LIMIT_EXCEEDED\"\n | \"VIVI_WEB_TEXTURE_FAILED\"\n | \"VIVI_WEB_RENDERER_UNAVAILABLE\"\n | \"VIVI_WEB_INVALID_INPUT\"\n | \"VIVI_WEB_UNKNOWN_INPUT\"\n | \"VIVI_WEB_DISPOSED\"\n | \"VIVI_WEB_ABORTED\"\n | \"VIVI_WEB_INTERNAL\";\n\nexport type ViviWebErrorDetails = Readonly<Record<string, string | number | boolean>>;\n\nexport class ViviWebError extends Error {\n readonly code: ViviWebErrorCode;\n readonly details: ViviWebErrorDetails;\n\n constructor(\n code: ViviWebErrorCode,\n message: string,\n options: { cause?: unknown; details?: ViviWebErrorDetails } = {},\n ) {\n super(message, { cause: options.cause });\n this.name = \"ViviWebError\";\n this.code = code;\n this.details = options.details ?? {};\n }\n}\n\nexport function isViviWebError(error: unknown): error is ViviWebError {\n return error instanceof ViviWebError;\n}\n\nexport function toViviWebError(\n error: unknown,\n fallbackCode: ViviWebErrorCode,\n fallbackMessage: string,\n): ViviWebError {\n if (isViviWebError(error)) return error;\n if (isAbortError(error)) {\n return new ViviWebError(\"VIVI_WEB_ABORTED\", \"Model loading was aborted.\", {\n cause: error,\n });\n }\n if (error instanceof Error) {\n if (/too large|size/i.test(error.message)) {\n return new ViviWebError(\"VIVI_WEB_LIMIT_EXCEEDED\", sanitizeMessage(error), {\n cause: error,\n });\n }\n if (\n /public profile|private profile|unknown fields|forbidden|profile/i.test(\n error.message,\n )\n ) {\n return new ViviWebError(\"VIVI_WEB_VALIDATION_FAILED\", sanitizeMessage(error), {\n cause: error,\n });\n }\n if (\n /parse|invalid JSON|schema validation|Invalid \\.vivi file version/i.test(\n error.message,\n )\n ) {\n return new ViviWebError(\"VIVI_WEB_PARSE_FAILED\", sanitizeMessage(error), {\n cause: error,\n });\n }\n }\n return new ViviWebError(fallbackCode, fallbackMessage, { cause: error });\n}\n\nfunction isAbortError(error: unknown): boolean {\n return error instanceof DOMException && error.name === \"AbortError\";\n}\n\nfunction sanitizeMessage(error: Error): string {\n return error.message\n .replace(/[A-Za-z]:\\\\[^\\s)]+/g, \"<path>\")\n .replace(/\\\\\\\\[^\\s\\\\)]+\\\\[^\\s)]+/g, \"<path>\")\n .replace(/file:\\/\\/\\/[^\\s)]+/g, \"<path>\")\n .replace(/(?:\\/Users\\/|\\/home\\/)[^\\s/)]+[^\\s)]*/g, \"<path>\")\n .replace(/\\/(?:app|opt|var)\\/[^\\s)]+/g, \"<path>\")\n .replace(/\\/tmp\\/[^\\s)]+/g, \"<path>\");\n}\n","import type { PublicViviModel } from \"@vivi2d/core/public-model\";\nimport type { ViviFileData } from \"@vivi2d/core/types\";\nimport { ViviWebError } from \"./errors\";\n\nexport interface ViviWebModelInternals {\n readonly fileData: ViviFileData;\n readonly runtimeModel: PublicViviModel;\n}\n\nconst VIVI_WEB_MODEL_BRAND = new WeakSet<object>();\nconst VIVI_WEB_MODEL_INTERNALS = new WeakMap<object, ViviWebModelInternals>();\n\nexport function brandViviWebModel(model: object, internals: ViviWebModelInternals): void {\n VIVI_WEB_MODEL_BRAND.add(model);\n VIVI_WEB_MODEL_INTERNALS.set(model, internals);\n}\n\nexport function hasViviWebModelBrand(value: object): boolean {\n return VIVI_WEB_MODEL_BRAND.has(value);\n}\n\nexport function getViviWebModelInternals(model: unknown): ViviWebModelInternals {\n if (typeof model !== \"object\" || model === null || !VIVI_WEB_MODEL_BRAND.has(model)) {\n throw new ViviWebError(\n \"VIVI_WEB_INVALID_SOURCE\",\n \"Model must be returned by loadViviWebModel().\",\n );\n }\n return VIVI_WEB_MODEL_INTERNALS.get(model)!;\n}\n","// The Web SDK loader is a public-package boundary. It snapshots caller-owned\n// sources, enforces byte/depth limits, and accepts only public-profile Vivi2D\n// models before creating runtime state.\nimport {\n assertByteLengthWithinLimit,\n assertTextLengthWithinLimit,\n MAX_VIVI_TEXT_FILE_BYTES,\n} from \"@vivi2d/core/load-limits\";\nimport { parseViviFile } from \"@vivi2d/core/project-parser\";\nimport { PublicViviModel } from \"@vivi2d/core/public-model\";\nimport type { ViviFileData } from \"@vivi2d/core/types\";\nimport { toViviWebError, ViviWebError } from \"./errors\";\nimport { brandViviWebModel, hasViviWebModelBrand } from \"./model-internals\";\n\nconst MAX_JSON_CLONE_DEPTH = 256;\n\nexport interface ViviModelJSON {\n profile: \"publicProfileV1\";\n version: number;\n project: Record<string, unknown>;\n atlases: unknown[];\n [key: string]: unknown;\n}\n\nexport type ViviWebLoadSource =\n | string\n | URL\n | Request\n | Response\n | Blob\n | ArrayBuffer\n | Uint8Array\n | ViviModelJSON;\n\nexport interface ViviWebLoadOptions {\n fetchOptions?: Omit<RequestInit, \"body\" | \"credentials\" | \"mode\" | \"signal\">;\n initialParameters?: Readonly<Record<string, number>>;\n signal?: AbortSignal;\n}\n\nexport interface ViviWebModelMetadata {\n name?: string;\n width: number;\n height: number;\n parameterCount: number;\n expressionPresetCount: number;\n}\n\nexport interface ViviWebParameter {\n id: string;\n name: string;\n min: number;\n max: number;\n default: number;\n}\n\nexport interface ViviWebExpressionPreset {\n id: string;\n name: string;\n hotkey?: number;\n}\n\ndeclare const VIVI_WEB_MODEL_BRAND_TYPE: unique symbol;\n\nexport interface ViviWebModel {\n readonly [VIVI_WEB_MODEL_BRAND_TYPE]: never;\n readonly expressionPresets: readonly ViviWebExpressionPreset[];\n readonly metadata: ViviWebModelMetadata;\n readonly parameters: readonly ViviWebParameter[];\n}\n\nclass ViviWebModelImpl {\n constructor(\n private readonly fileData: ViviFileData,\n runtimeModel: PublicViviModel,\n readonly metadata: ViviWebModelMetadata,\n ) {\n brandViviWebModel(this, {\n fileData,\n runtimeModel,\n });\n }\n\n get parameters(): ViviWebParameter[] {\n return this.fileData.project.parameters.map((parameter) => ({\n id: parameter.id,\n name: parameter.name,\n min: parameter.minValue,\n max: parameter.maxValue,\n default: parameter.defaultValue,\n }));\n }\n\n get expressionPresets(): ViviWebExpressionPreset[] {\n return (\n this.fileData.project.expressionPresets?.map((preset) => ({\n id: preset.id,\n name: preset.name,\n hotkey: preset.hotkey,\n })) ?? []\n );\n }\n}\n\nexport function isViviWebModel(value: unknown): value is ViviWebModel {\n return typeof value === \"object\" && value !== null && hasViviWebModelBrand(value);\n}\n\nexport async function loadViviWebModel(\n source: ViviWebLoadSource,\n options: ViviWebLoadOptions = {},\n): Promise<ViviWebModel> {\n try {\n throwIfAborted(options.signal);\n const jsonText =\n typeof source === \"object\" && isPlainJsonSource(source)\n ? JSON.stringify(safeCloneJsonValue(source, \"<root>\"))\n : await loadSourceText(source, options);\n throwIfAborted(options.signal);\n const fileData = parseViviFile(jsonText, { profile: \"publicProfileV1\" });\n return createViviWebModel(fileData, options);\n } catch (error) {\n throw toViviWebError(\n error,\n \"VIVI_WEB_INVALID_SOURCE\",\n \"Could not load a Vivi2D web model.\",\n );\n }\n}\n\nfunction cloneViviFileData(fileData: ViviFileData): ViviFileData {\n return JSON.parse(JSON.stringify(fileData)) as ViviFileData;\n}\n\nfunction createViviWebModel(\n fileData: ViviFileData,\n options?: ViviWebLoadOptions,\n): ViviWebModel {\n assertPublicSdkProfile(fileData);\n const clonedFileData = cloneViviFileData(fileData);\n const initialParameters = sanitizeInitialParameters(\n clonedFileData,\n options?.initialParameters ?? {},\n );\n const runtimeModel = PublicViviModel.fromFileData(clonedFileData, {\n initialParameters,\n });\n return new ViviWebModelImpl(clonedFileData, runtimeModel, {\n name: clonedFileData.project.name,\n width: runtimeModel.width,\n height: runtimeModel.height,\n parameterCount: clonedFileData.project.parameters.length,\n expressionPresetCount: clonedFileData.project.expressionPresets?.length ?? 0,\n }) as unknown as ViviWebModel;\n}\n\nasync function loadSourceText(\n source: Exclude<ViviWebLoadSource, ViviModelJSON>,\n options: ViviWebLoadOptions,\n): Promise<string> {\n if (typeof source === \"string\" || source instanceof URL || isRequest(source)) {\n if (typeof source === \"string\" && source.trim() === \"\") {\n throw new ViviWebError(\n \"VIVI_WEB_INVALID_SOURCE\",\n \"Model source must not be empty.\",\n );\n }\n let response: Response;\n try {\n response = await fetch(source, {\n ...options.fetchOptions,\n credentials: \"omit\",\n mode: \"cors\",\n signal: options.signal,\n });\n } catch (error) {\n throwIfAborted(options.signal);\n throw new ViviWebError(\"VIVI_WEB_FETCH_FAILED\", \"Failed to fetch model.\", {\n cause: error,\n });\n }\n if (!response.ok) {\n throw new ViviWebError(\"VIVI_WEB_FETCH_FAILED\", \"Failed to fetch model.\", {\n details: { status: response.status },\n });\n }\n return readResponseTextWithLimit(response, \"Remote .vivi model\", options.signal);\n }\n if (isResponse(source)) {\n throwIfAborted(options.signal);\n const response = source.clone();\n if (!response.ok) {\n throw new ViviWebError(\"VIVI_WEB_FETCH_FAILED\", \"Failed to read model response.\", {\n details: { status: response.status },\n });\n }\n return readResponseTextWithLimit(response, \"Response .vivi model\", options.signal);\n }\n if (isBlob(source)) {\n throwIfAborted(options.signal);\n assertByteLengthWithinLimit(\n source.size,\n MAX_VIVI_TEXT_FILE_BYTES,\n \"Blob .vivi model\",\n );\n const text = await source.text();\n throwIfAborted(options.signal);\n return text;\n }\n if (source instanceof ArrayBuffer) {\n throwIfAborted(options.signal);\n assertByteLengthWithinLimit(\n source.byteLength,\n MAX_VIVI_TEXT_FILE_BYTES,\n \"ArrayBuffer .vivi model\",\n );\n return new TextDecoder().decode(source);\n }\n if (source instanceof Uint8Array) {\n throwIfAborted(options.signal);\n assertByteLengthWithinLimit(\n source.byteLength,\n MAX_VIVI_TEXT_FILE_BYTES,\n \"Uint8Array .vivi model\",\n );\n return new TextDecoder().decode(source);\n }\n throw new ViviWebError(\"VIVI_WEB_INVALID_SOURCE\", \"Unsupported model source.\");\n}\n\nasync function readResponseTextWithLimit(\n response: Response,\n label: string,\n signal: AbortSignal | undefined,\n): Promise<string> {\n throwIfAborted(signal);\n const contentLengthHeader = response.headers.get(\"content-length\");\n if (contentLengthHeader) {\n const contentLength = Number(contentLengthHeader);\n if (Number.isFinite(contentLength) && contentLength > 0) {\n assertByteLengthWithinLimit(contentLength, MAX_VIVI_TEXT_FILE_BYTES, label);\n }\n }\n\n const reader = response.body?.getReader();\n if (!reader) {\n const text = await response.text();\n throwIfAborted(signal);\n assertTextLengthWithinLimit(text, MAX_VIVI_TEXT_FILE_BYTES, label);\n return text;\n }\n\n const decoder = new TextDecoder();\n let totalBytes = 0;\n let text = \"\";\n while (true) {\n const { done, value } = await reader.read();\n throwIfAborted(signal);\n if (done) break;\n totalBytes += value.byteLength;\n assertByteLengthWithinLimit(totalBytes, MAX_VIVI_TEXT_FILE_BYTES, label);\n text += decoder.decode(value, { stream: true });\n }\n text += decoder.decode();\n throwIfAborted(signal);\n assertTextLengthWithinLimit(text, MAX_VIVI_TEXT_FILE_BYTES, label);\n return text;\n}\n\nfunction throwIfAborted(signal: AbortSignal | undefined): void {\n if (!signal?.aborted) return;\n if (typeof DOMException !== \"undefined\") {\n throw new DOMException(\"Model loading was aborted.\", \"AbortError\");\n }\n const error = new Error(\"Model loading was aborted.\");\n error.name = \"AbortError\";\n throw error;\n}\n\nfunction assertPublicSdkProfile(fileData: ViviFileData): void {\n if (fileData.profile !== \"publicProfileV1\") {\n throw new ViviWebError(\n \"VIVI_WEB_VALIDATION_FAILED\",\n \"Web SDK models must use the publicProfileV1 profile.\",\n );\n }\n}\n\nfunction sanitizeInitialParameters(\n fileData: ViviFileData,\n initialParameters: Readonly<Record<string, number>>,\n): Record<string, number> {\n const definitions = new Map(\n fileData.project.parameters.map((definition) => [definition.id, definition]),\n );\n const result: Record<string, number> = {};\n for (const [id, value] of Object.entries(initialParameters)) {\n const definition = definitions.get(id);\n if (!definition) continue;\n if (!Number.isFinite(value)) {\n throw new ViviWebError(\n \"VIVI_WEB_INVALID_INPUT\",\n \"Initial parameter values must be finite.\",\n { details: { id } },\n );\n }\n result[id] = Math.max(definition.minValue, Math.min(definition.maxValue, value));\n }\n return result;\n}\n\nfunction isPlainJsonSource(source: object): source is ViviModelJSON {\n return !(\n source instanceof URL ||\n isRequest(source) ||\n isResponse(source) ||\n isBlob(source) ||\n source instanceof ArrayBuffer ||\n source instanceof Uint8Array\n );\n}\n\nfunction isRequest(value: unknown): value is Request {\n return typeof Request !== \"undefined\" && value instanceof Request;\n}\n\nfunction isResponse(value: unknown): value is Response {\n return typeof Response !== \"undefined\" && value instanceof Response;\n}\n\nfunction isBlob(value: unknown): value is Blob {\n return typeof Blob !== \"undefined\" && value instanceof Blob;\n}\n\nfunction safeCloneJsonValue(\n value: unknown,\n path: string,\n seen = new WeakSet<object>(),\n depth = 0,\n): unknown {\n if (depth > MAX_JSON_CLONE_DEPTH) {\n throw new ViviWebError(\n \"VIVI_WEB_VALIDATION_FAILED\",\n \"Model JSON nesting is too deep.\",\n { details: { maxDepth: MAX_JSON_CLONE_DEPTH, path } },\n );\n }\n if (value === null || typeof value === \"string\" || typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n if (!Number.isFinite(value)) {\n throw new ViviWebError(\n \"VIVI_WEB_VALIDATION_FAILED\",\n \"JSON numbers must be finite.\",\n {\n details: { path },\n },\n );\n }\n return value;\n }\n if (typeof value !== \"object\") {\n throw new ViviWebError(\n \"VIVI_WEB_VALIDATION_FAILED\",\n \"Model JSON is not serializable.\",\n {\n details: { path },\n },\n );\n }\n if (seen.has(value)) {\n throw new ViviWebError(\"VIVI_WEB_VALIDATION_FAILED\", \"Model JSON is cyclic.\", {\n details: { path },\n });\n }\n seen.add(value);\n try {\n if (Array.isArray(value)) {\n return cloneArray(value, path, seen, depth);\n }\n return cloneRecord(value, path, seen, depth);\n } finally {\n seen.delete(value);\n }\n}\n\nfunction cloneArray(\n value: readonly unknown[],\n path: string,\n seen: WeakSet<object>,\n depth: number,\n): unknown[] {\n const clone: unknown[] = [];\n for (let index = 0; index < value.length; index += 1) {\n if (!Object.hasOwn(value, index)) {\n throw new ViviWebError(\n \"VIVI_WEB_VALIDATION_FAILED\",\n \"Model JSON arrays must not contain holes.\",\n { details: { path: `${path}[${index}]` } },\n );\n }\n const descriptor = Object.getOwnPropertyDescriptor(value, index);\n if (!descriptor || !(\"value\" in descriptor)) {\n throw new ViviWebError(\n \"VIVI_WEB_VALIDATION_FAILED\",\n \"Model JSON accessors are not allowed.\",\n { details: { path: `${path}[${index}]` } },\n );\n }\n clone[index] = safeCloneJsonValue(\n descriptor.value,\n `${path}[${index}]`,\n seen,\n depth + 1,\n );\n }\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key !== \"string\") {\n throw new ViviWebError(\n \"VIVI_WEB_VALIDATION_FAILED\",\n \"Model JSON symbol keys are not allowed.\",\n { details: { path } },\n );\n }\n if (key === \"length\" || isArrayIndexKey(key, value.length)) {\n continue;\n }\n throw new ViviWebError(\n \"VIVI_WEB_VALIDATION_FAILED\",\n \"Model JSON arrays must not contain custom properties.\",\n { details: { path: `${path}.${String(key)}` } },\n );\n }\n return clone;\n}\n\nfunction cloneRecord(\n value: object,\n path: string,\n seen: WeakSet<object>,\n depth: number,\n): Record<string, unknown> {\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n throw new ViviWebError(\n \"VIVI_WEB_VALIDATION_FAILED\",\n \"Model JSON objects must be plain objects.\",\n { details: { path } },\n );\n }\n const clone: Record<string, unknown> = {};\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key !== \"string\") {\n throw new ViviWebError(\n \"VIVI_WEB_VALIDATION_FAILED\",\n \"Model JSON symbol keys are not allowed.\",\n { details: { path } },\n );\n }\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (!descriptor?.enumerable) continue;\n if (!(\"value\" in descriptor)) {\n throw new ViviWebError(\n \"VIVI_WEB_VALIDATION_FAILED\",\n \"Model JSON accessors are not allowed.\",\n { details: { path: `${path}.${key}` } },\n );\n }\n clone[key] = safeCloneJsonValue(descriptor.value, `${path}.${key}`, seen, depth + 1);\n }\n return clone;\n}\n\nfunction isArrayIndexKey(key: string, length: number): boolean {\n const index = Number(key);\n return Number.isInteger(index) && index >= 0 && index < length && String(index) === key;\n}\n","import { extractTextures } from \"@vivi2d/renderer-pixi/loader\";\nimport { ViviPixiRenderer } from \"@vivi2d/renderer-pixi/renderer\";\nimport {\n generateThumbnail,\n type ThumbnailOptions as PixiThumbnailOptions,\n} from \"@vivi2d/renderer-pixi/thumbnail\";\nimport { toViviWebError, ViviWebError } from \"./errors\";\nimport { getViviWebModelInternals } from \"./model-internals\";\nimport {\n isViviWebModel,\n loadViviWebModel,\n type ViviWebExpressionPreset,\n type ViviWebLoadOptions,\n type ViviWebLoadSource,\n type ViviWebModel,\n type ViviWebModelMetadata,\n type ViviWebParameter,\n} from \"./model-loader\";\n\nconst MAX_DELTA_SECONDS = 0.25;\nconst MAX_CANVAS_DIMENSION = 8192;\nconst MAX_THUMBNAIL_PIXELS = 1024 * 1024;\nconst MAX_THUMBNAIL_BYTES = 2 * 1024 * 1024;\n\nexport type ViviWebInputMap = Readonly<Record<string, number>>;\n\nexport interface ViviWebFrameScheduler {\n requestFrame(callback: (timeMs: number) => void): number;\n cancelFrame(handle: number): void;\n}\n\nexport interface ViviWebThumbnailOptions {\n width?: number;\n height?: number;\n format?: \"png\" | \"jpeg\" | \"webp\";\n quality?: number;\n}\n\nexport interface ViviWebHitTestResult {\n colliderName: string;\n tag?: string;\n}\n\nexport type ViviWebEvent =\n | { type: \"load\"; model: ViviWebModel }\n | { type: \"start\" }\n | { type: \"stop\" }\n | { type: \"dispose\" }\n | { type: \"error\"; error: ViviWebError };\n\nexport interface ViviWebEventMap {\n load: Extract<ViviWebEvent, { type: \"load\" }>;\n start: Extract<ViviWebEvent, { type: \"start\" }>;\n stop: Extract<ViviWebEvent, { type: \"stop\" }>;\n dispose: Extract<ViviWebEvent, { type: \"dispose\" }>;\n error: Extract<ViviWebEvent, { type: \"error\" }>;\n}\n\nexport interface ViviWebPlayerOptions {\n autoStart?: boolean;\n backgroundColor?: number;\n canvas: HTMLCanvasElement;\n model?: ViviWebModel;\n onEvent?: (event: ViviWebEvent) => void;\n scheduler?: ViviWebFrameScheduler;\n signal?: AbortSignal;\n source?: ViviWebLoadSource;\n strictInputs?: boolean;\n transparent?: boolean;\n loadOptions?: Omit<ViviWebLoadOptions, \"signal\">;\n}\n\nexport interface ViviWebPlayer {\n readonly disposed: boolean;\n readonly metadata: ViviWebModelMetadata;\n readonly model: ViviWebModel;\n readonly running: boolean;\n\n applyExpressionPreset(id: string): void;\n dispose(): void;\n generateThumbnail(options?: ViviWebThumbnailOptions): string;\n getExpressionPresets(): readonly ViviWebExpressionPreset[];\n getParameters(): readonly ViviWebParameter[];\n hitTest(x: number, y: number): ViviWebHitTestResult | null;\n render(): void;\n resetInputs(): void;\n resize(width: number, height: number): void;\n screenToWorld(x: number, y: number): { x: number; y: number } | null;\n setInput(id: string, value: number): void;\n setInputs(values: ViviWebInputMap): void;\n start(): void;\n stop(): void;\n update(deltaSeconds: number): void;\n}\n\nexport async function createViviWebPlayer(\n options: ViviWebPlayerOptions,\n): Promise<ViviWebPlayer> {\n let renderer: ViviPixiRenderer | null = null;\n let player: ViviWebPlayerImpl | null = null;\n let playerReady = false;\n try {\n throwIfAborted(options.signal);\n const canvas = assertHtmlCanvas(options.canvas);\n const model = await resolvePlayerModel(options);\n throwIfAborted(options.signal);\n renderer = await ViviPixiRenderer.create(canvas, {\n backgroundColor: options.backgroundColor ?? 0x000000,\n transparent: options.transparent ?? true,\n });\n throwIfAborted(options.signal);\n const modelInternals = getViviWebModelInternals(model);\n const textures = await extractTextures(modelInternals.fileData);\n throwIfAborted(options.signal);\n renderer.setModel(modelInternals.runtimeModel, textures);\n player = new ViviWebPlayerImpl(model, renderer, canvas, options);\n modelInternals.runtimeModel.update();\n renderer.render();\n const finishAutoStart = options.autoStart ? player.prepareAutoStart() : null;\n player.emit({ type: \"load\", model });\n finishAutoStart?.();\n playerReady = true;\n return player;\n } catch (error) {\n if (player && !playerReady) {\n try {\n player.dispose();\n } catch {\n if (renderer) destroyRendererQuietly(renderer);\n }\n } else if (renderer && !playerReady) {\n destroyRendererQuietly(renderer);\n }\n const webError = toViviWebError(\n error,\n \"VIVI_WEB_RENDERER_UNAVAILABLE\",\n \"Could not create a Vivi2D web player.\",\n );\n emitViviWebEvent(options.onEvent, { type: \"error\", error: webError });\n throw webError;\n }\n}\n\nasync function resolvePlayerModel(options: ViviWebPlayerOptions): Promise<ViviWebModel> {\n if (options.model && options.source) {\n throw new ViviWebError(\n \"VIVI_WEB_INVALID_SOURCE\",\n \"Provide either model or source, not both.\",\n );\n }\n if (options.model) {\n if (!isViviWebModel(options.model)) {\n throw new ViviWebError(\n \"VIVI_WEB_INVALID_SOURCE\",\n \"Player model must be returned by loadViviWebModel().\",\n );\n }\n return options.model;\n }\n if (options.source === undefined) {\n throw new ViviWebError(\"VIVI_WEB_INVALID_SOURCE\", \"A model or source is required.\");\n }\n return loadViviWebModel(options.source, {\n ...options.loadOptions,\n signal: options.signal,\n });\n}\n\nfunction assertHtmlCanvas(canvas: HTMLCanvasElement): HTMLCanvasElement {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n return canvas;\n }\n throw new ViviWebError(\n \"VIVI_WEB_RENDERER_UNAVAILABLE\",\n \"The current Web SDK renderer requires an HTMLCanvasElement.\",\n );\n}\n\nfunction throwIfAborted(signal: AbortSignal | undefined): void {\n if (!signal?.aborted) return;\n if (typeof DOMException !== \"undefined\") {\n throw new DOMException(\"Player creation was aborted.\", \"AbortError\");\n }\n const error = new Error(\"Player creation was aborted.\");\n error.name = \"AbortError\";\n throw error;\n}\n\nfunction destroyRendererQuietly(renderer: ViviPixiRenderer): void {\n try {\n renderer.destroy();\n } catch {\n // Best-effort rollback: the original creation error remains the public error.\n }\n}\n\nclass ViviWebPlayerImpl implements ViviWebPlayer {\n private animationFrameId: number | null = null;\n private disposedValue = false;\n private lastFrameTime: number | null = null;\n private runningValue = false;\n private scheduler: ViviWebFrameScheduler | null = null;\n private readonly strictInputs: boolean;\n\n constructor(\n readonly model: ViviWebModel,\n private readonly renderer: ViviPixiRenderer,\n private readonly canvas: HTMLCanvasElement,\n private readonly options: ViviWebPlayerOptions,\n ) {\n this.strictInputs = options.strictInputs ?? false;\n }\n\n get metadata(): ViviWebModelMetadata {\n return this.model.metadata;\n }\n\n get running(): boolean {\n return this.runningValue;\n }\n\n get disposed(): boolean {\n return this.disposedValue;\n }\n\n start(): void {\n this.assertUsable();\n if (this.runningValue) return;\n const scheduler = this.getScheduler();\n this.runningValue = true;\n this.lastFrameTime = null;\n try {\n this.animationFrameId = scheduler.requestFrame(this.frame);\n } catch (error) {\n this.runningValue = false;\n this.lastFrameTime = null;\n this.animationFrameId = null;\n throw error;\n }\n this.emit({ type: \"start\" });\n }\n\n prepareAutoStart(): () => void {\n this.assertUsable();\n if (this.runningValue) return () => {};\n const scheduler = this.getScheduler();\n let pendingFrameTime: number | null = null;\n let activated = false;\n const frameId = scheduler.requestFrame((timeMs) => {\n if (!activated) {\n pendingFrameTime = timeMs;\n return;\n }\n this.frame(timeMs);\n });\n this.animationFrameId = frameId;\n return () => {\n if (this.disposedValue || this.animationFrameId !== frameId) return;\n this.lastFrameTime = null;\n this.runningValue = true;\n activated = true;\n this.emit({ type: \"start\" });\n if (pendingFrameTime !== null) {\n const timeMs = pendingFrameTime;\n pendingFrameTime = null;\n this.frame(timeMs);\n }\n };\n }\n\n stop(): void {\n const wasRunning = this.runningValue;\n this.runningValue = false;\n if (this.animationFrameId !== null) {\n try {\n this.getScheduler().cancelFrame(this.animationFrameId);\n } catch {\n // User-provided schedulers must not make stop/dispose unreliable.\n }\n this.animationFrameId = null;\n }\n this.lastFrameTime = null;\n if (wasRunning) this.emit({ type: \"stop\" });\n }\n\n update(deltaSeconds: number): void {\n this.assertUsable();\n const clampedDelta = validateDeltaSeconds(deltaSeconds);\n getViviWebModelInternals(this.model).runtimeModel.update(clampedDelta);\n }\n\n render(): void {\n this.assertUsable();\n this.renderer.render();\n }\n\n resize(width: number, height: number): void {\n this.assertUsable();\n const nextWidth = validateCanvasDimension(width, \"width\");\n const nextHeight = validateCanvasDimension(height, \"height\");\n this.canvas.width = nextWidth;\n this.canvas.height = nextHeight;\n this.renderer.resize(nextWidth, nextHeight);\n this.render();\n }\n\n dispose(): void {\n if (this.disposedValue) return;\n this.stop();\n destroyRendererQuietly(this.renderer);\n this.disposedValue = true;\n this.emit({ type: \"dispose\" });\n }\n\n setInput(id: string, value: number): void {\n this.assertUsable();\n const input = this.resolveInputValue(id, value);\n if (!input) return;\n getViviWebModelInternals(this.model).runtimeModel.setParameter(input.id, input.value);\n }\n\n setInputs(values: ViviWebInputMap): void {\n this.assertUsable();\n const inputs: Array<{ id: string; value: number }> = [];\n for (const [id, value] of Object.entries(values)) {\n const input = this.resolveInputValue(id, value);\n if (input) inputs.push(input);\n }\n const runtimeModel = getViviWebModelInternals(this.model).runtimeModel;\n for (const input of inputs) {\n runtimeModel.setParameter(input.id, input.value);\n }\n }\n\n private resolveInputValue(\n id: string,\n value: number,\n ): { id: string; value: number } | null {\n if (!Number.isFinite(value)) {\n throw new ViviWebError(\"VIVI_WEB_INVALID_INPUT\", \"Input values must be finite.\", {\n details: { id },\n });\n }\n const modelInternals = getViviWebModelInternals(this.model);\n const definition = modelInternals.fileData.project.parameters.find(\n (p) => p.id === id,\n );\n if (!definition) {\n if (this.strictInputs) {\n throw new ViviWebError(\"VIVI_WEB_UNKNOWN_INPUT\", \"Unknown input id.\", {\n details: { id },\n });\n }\n return null;\n }\n const clampedValue = Math.max(\n definition.minValue,\n Math.min(definition.maxValue, value),\n );\n return { id, value: clampedValue };\n }\n\n resetInputs(): void {\n this.assertUsable();\n getViviWebModelInternals(this.model).runtimeModel.resetParameters();\n }\n\n getParameters(): readonly ViviWebParameter[] {\n return this.model.parameters;\n }\n\n getExpressionPresets(): readonly ViviWebExpressionPreset[] {\n return this.model.expressionPresets;\n }\n\n applyExpressionPreset(id: string): void {\n this.assertUsable();\n getViviWebModelInternals(this.model).runtimeModel.applyExpressionPreset(id);\n }\n\n screenToWorld(x: number, y: number): { x: number; y: number } | null {\n if (!Number.isFinite(x) || !Number.isFinite(y) || this.disposedValue) {\n return null;\n }\n return this.renderer.screenToWorld(x, y);\n }\n\n hitTest(x: number, y: number): ViviWebHitTestResult | null {\n if (!Number.isFinite(x) || !Number.isFinite(y) || this.disposedValue) {\n return null;\n }\n return getViviWebModelInternals(this.model).runtimeModel.hitTest(x, y);\n }\n\n generateThumbnail(options: ViviWebThumbnailOptions = {}): string {\n this.assertUsable();\n const thumbnailOptions = validateThumbnailOptions(options);\n try {\n const dataUrl = generateThumbnail(\n this.canvas,\n thumbnailOptions as PixiThumbnailOptions,\n );\n if (!dataUrl) {\n throw new ViviWebError(\"VIVI_WEB_TEXTURE_FAILED\", \"Thumbnail generation failed.\");\n }\n const byteLength = new TextEncoder().encode(dataUrl).byteLength;\n if (byteLength > MAX_THUMBNAIL_BYTES) {\n throw new ViviWebError(\n \"VIVI_WEB_LIMIT_EXCEEDED\",\n \"Thumbnail output is too large.\",\n { details: { byteLength, maxBytes: MAX_THUMBNAIL_BYTES } },\n );\n }\n return dataUrl;\n } catch (error) {\n throw toViviWebError(\n error,\n \"VIVI_WEB_TEXTURE_FAILED\",\n \"Thumbnail generation failed.\",\n );\n }\n }\n\n emit(event: ViviWebEvent): void {\n emitViviWebEvent(this.options.onEvent, event);\n }\n\n private readonly frame = (timeMs: number): void => {\n if (!this.runningValue || this.disposedValue) return;\n const deltaSeconds =\n this.lastFrameTime === null ? 0 : (timeMs - this.lastFrameTime) / 1000;\n this.lastFrameTime = timeMs;\n this.update(Math.max(0, deltaSeconds));\n this.render();\n this.animationFrameId = this.getScheduler().requestFrame(this.frame);\n };\n\n private getScheduler(): ViviWebFrameScheduler {\n this.scheduler ??= this.options.scheduler ?? createWindowScheduler();\n return this.scheduler;\n }\n\n private assertUsable(): void {\n if (this.disposedValue) {\n throw new ViviWebError(\"VIVI_WEB_DISPOSED\", \"Player has been disposed.\");\n }\n }\n}\n\nfunction createWindowScheduler(): ViviWebFrameScheduler {\n if (\n typeof window === \"undefined\" ||\n typeof window.requestAnimationFrame !== \"function\" ||\n typeof window.cancelAnimationFrame !== \"function\"\n ) {\n throw new ViviWebError(\n \"VIVI_WEB_RENDERER_UNAVAILABLE\",\n \"A frame scheduler is required outside window contexts.\",\n );\n }\n return {\n requestFrame: (callback) => window.requestAnimationFrame(callback),\n cancelFrame: (handle) => window.cancelAnimationFrame(handle),\n };\n}\n\nfunction validateDeltaSeconds(deltaSeconds: number): number {\n if (!Number.isFinite(deltaSeconds) || deltaSeconds < 0) {\n throw new ViviWebError(\n \"VIVI_WEB_INVALID_INPUT\",\n \"deltaSeconds must be a finite non-negative number.\",\n );\n }\n return Math.min(deltaSeconds, MAX_DELTA_SECONDS);\n}\n\nfunction validateCanvasDimension(value: number, label: \"width\" | \"height\"): number {\n if (!Number.isFinite(value) || value <= 0 || !Number.isInteger(value)) {\n throw new ViviWebError(\n \"VIVI_WEB_INVALID_INPUT\",\n `${label} must be a positive integer.`,\n );\n }\n if (value > MAX_CANVAS_DIMENSION) {\n throw new ViviWebError(\n \"VIVI_WEB_LIMIT_EXCEEDED\",\n `${label} exceeds the canvas dimension limit.`,\n { details: { [label]: value, max: MAX_CANVAS_DIMENSION } },\n );\n }\n return value;\n}\n\nfunction validateThumbnailOptions(\n options: ViviWebThumbnailOptions,\n): Required<ViviWebThumbnailOptions> {\n const width = options.width ?? 256;\n const height = options.height ?? 256;\n const format = options.format ?? \"png\";\n const quality = options.quality ?? 0.85;\n const validFormats = new Set([\"png\", \"jpeg\", \"webp\"]);\n validateCanvasDimension(width, \"width\");\n validateCanvasDimension(height, \"height\");\n if (width * height > MAX_THUMBNAIL_PIXELS) {\n throw new ViviWebError(\n \"VIVI_WEB_LIMIT_EXCEEDED\",\n \"Thumbnail pixel count exceeds the limit.\",\n { details: { pixels: width * height, maxPixels: MAX_THUMBNAIL_PIXELS } },\n );\n }\n if (!validFormats.has(format)) {\n throw new ViviWebError(\"VIVI_WEB_INVALID_INPUT\", \"Unsupported thumbnail format.\");\n }\n if (!Number.isFinite(quality) || quality < 0 || quality > 1) {\n throw new ViviWebError(\n \"VIVI_WEB_INVALID_INPUT\",\n \"Thumbnail quality must be between 0 and 1.\",\n );\n }\n return { width, height, format, quality };\n}\n\nfunction emitViviWebEvent(\n handler: ((event: ViviWebEvent) => void) | undefined,\n event: ViviWebEvent,\n): void {\n try {\n handler?.(event);\n } catch {\n // User event handlers must not break the player lifecycle or error surface.\n }\n}\n","// Browser global usage:\n// <script src=\"vivi2d.umd.js\"></script>\n// <vivi-model src=\"character.vivi\"></vivi-model>\n//\n// npm:\n// import { defineViviModelElement } from \"@vivi2d/web\";\n\nimport { ViviModelElement } from \"./vivi-model-element\";\n\nexport type { ViviWebErrorCode, ViviWebErrorDetails } from \"./errors\";\nexport { isViviWebError, ViviWebError } from \"./errors\";\nexport {\n isViviWebModel,\n loadViviWebModel,\n type ViviModelJSON,\n type ViviWebExpressionPreset,\n type ViviWebLoadOptions,\n type ViviWebLoadSource,\n type ViviWebModel,\n type ViviWebModelMetadata,\n type ViviWebParameter,\n} from \"./model-loader\";\nexport {\n createViviWebPlayer,\n type ViviWebEvent,\n type ViviWebEventMap,\n type ViviWebFrameScheduler,\n type ViviWebHitTestResult,\n type ViviWebInputMap,\n type ViviWebPlayer,\n type ViviWebPlayerOptions,\n type ViviWebThumbnailOptions,\n} from \"./player\";\nexport { ViviModelElement };\n\nexport function defineViviModelElement(tagName = \"vivi-model\"): typeof ViviModelElement {\n if (typeof customElements === \"undefined\") {\n return ViviModelElement;\n }\n if (!customElements.get(tagName)) {\n customElements.define(tagName, ViviModelElement);\n }\n return ViviModelElement;\n}\n"],"names":["formatMegabytes","byteLength","assertByteLengthWithinLimit","maxByteLength","label","assertTextLengthWithinLimit","text","_a","$constructor","name","initializer","params","init","inst","def","_","proto","keys","i","k","Parent","Definition","fn","_b","$ZodAsyncError","$ZodEncodeError","globalConfig","config","newConfig","getEnumValues","entries","numericValues","v","jsonStringifyReplacer","value","cached","getter","nullish","input","cleanRegex","source","start","end","floatSafeRemainder","val","step","ratio","roundedRatio","tolerance","EVALUATING","defineLazy","object","key","assignProp","target","prop","mergeDefs","defs","mergedDescriptors","descriptors","esc","str","slugify","captureStackTrace","_args","isObject","data","allowsEval","F","isPlainObject","o","ctor","prot","shallowClone","propertyKeyTypes","escapeRegex","clone","cl","normalizeParams","_params","optionalKeys","shape","NUMBER_FORMAT_RANGES","pick","schema","mask","currDef","checks","newShape","omit","extend","existingShape","_shape","safeExtend","merge","a","b","partial","Class","oldShape","required","aborted","x","startIndex","explicitlyAborted","prefixIssues","path","issues","iss","unwrapMessage","message","finalizeIssue","ctx","_c","_d","_e","_f","_inst","_continue","_input","rest","getLengthableOrigin","issue","args","util.jsonStringifyReplacer","$ZodError","$ZodRealError","flattenError","error","mapper","fieldErrors","formErrors","sub","formatError","processError","fullpath","curr","el","_parse","_Err","_ctx","result","core.$ZodAsyncError","e","util.finalizeIssue","core.config","util.captureStackTrace","_parseAsync","_safeParse","errors.$ZodError","safeParse","errors.$ZodRealError","_safeParseAsync","safeParseAsync","_encode","_decode","_encodeAsync","_decodeAsync","_safeEncode","_safeDecode","_safeEncodeAsync","_safeDecodeAsync","cuid","cuid2","ulid","xid","ksuid","nanoid","duration","guid","uuid","version","email","_emoji","emoji","ipv4","ipv6","cidrv4","cidrv6","base64","base64url","httpProtocol","e164","dateSource","date","timeSource","hhmm","time","datetime","opts","timeRegex","string","regex","integer","number","boolean","lowercase","uppercase","$ZodCheck","core.$constructor","numericOriginMap","$ZodCheckLessThan","origin","bag","payload","$ZodCheckGreaterThan","$ZodCheckMultipleOf","util.floatSafeRemainder","$ZodCheckNumberFormat","isInt","minimum","maximum","util.NUMBER_FORMAT_RANGES","regexes.integer","$ZodCheckMaxLength","util.nullish","util.getLengthableOrigin","$ZodCheckMinLength","$ZodCheckLengthEquals","length","tooBig","$ZodCheckStringFormat","$ZodCheckRegex","$ZodCheckLowerCase","regexes.lowercase","$ZodCheckUpperCase","regexes.uppercase","$ZodCheckIncludes","escapedRegex","util.escapeRegex","pattern","$ZodCheckStartsWith","$ZodCheckEndsWith","$ZodCheckOverwrite","Doc","arg","lines","minIndent","dedented","line","$ZodType","ch","runChecks","isAborted","util.aborted","asyncResult","util.explicitlyAborted","currLen","handleCanaryResult","canary","checkResult","util.defineLazy","r","$ZodString","regexes.string","$ZodStringFormat","checks.$ZodCheckStringFormat","$ZodGUID","regexes.guid","$ZodUUID","regexes.uuid","$ZodEmail","regexes.email","$ZodURL","trimmed","regexes.httpProtocol","url","$ZodEmoji","regexes.emoji","$ZodNanoID","regexes.nanoid","$ZodCUID","regexes.cuid","$ZodCUID2","regexes.cuid2","$ZodULID","regexes.ulid","$ZodXID","regexes.xid","$ZodKSUID","regexes.ksuid","$ZodISODateTime","regexes.datetime","$ZodISODate","regexes.date","$ZodISOTime","regexes.time","$ZodISODuration","regexes.duration","$ZodIPv4","regexes.ipv4","$ZodIPv6","regexes.ipv6","$ZodCIDRv4","regexes.cidrv4","$ZodCIDRv6","regexes.cidrv6","parts","address","prefix","prefixNum","isValidBase64","$ZodBase64","regexes.base64","isValidBase64URL","regexes.base64url","c","padded","$ZodBase64URL","$ZodE164","regexes.e164","isValidJWT","token","algorithm","tokensParts","header","parsedHeader","$ZodJWT","$ZodNumber","regexes.number","received","$ZodNumberFormat","checks.$ZodCheckNumberFormat","$ZodBoolean","regexes.boolean","$ZodUnknown","$ZodNever","handleArrayResult","final","index","util.prefixIssues","$ZodArray","proms","item","handlePropertyResult","isOptionalIn","isOptionalOut","isPresent","normalizeDef","okeys","util.optionalKeys","handleCatchall","unrecognized","keySet","_catchall","t","$ZodObject","desc","sh","newSh","_normalized","util.cached","propValues","field","util.isObject","catchall","$ZodObjectJIT","superParse","generateFastpass","doc","normalized","parseStr","util.esc","ids","counter","id","fastpass","jit","core.globalConfig","fastEnabled","util.allowsEval","handleUnionResults","results","nonaborted","$ZodUnion","option","patterns","p","util.cleanRegex","first","async","$ZodDiscriminatedUnion","_super","pv","disc","map","values","opt","$ZodIntersection","left","right","handleIntersectionResults","mergeValues","util.isPlainObject","bKeys","sharedKeys","newObj","sharedValue","newArray","itemA","itemB","unrecKeys","unrecIssue","bothKeys","f","merged","$ZodTuple","items","optinStart","getTupleOptStart","optoutStart","itemResults","rr","handleTupleResult","handleTupleResults","$ZodRecord","recordKeys","keyResult","outKey","retryResult","$ZodEnum","util.getEnumValues","valuesSet","util.propertyKeyTypes","$ZodLiteral","$ZodTransform","core.$ZodEncodeError","_out","output","handleOptionalResult","$ZodOptional","$ZodExactOptional","$ZodNullable","$ZodDefault","handleDefaultResult","$ZodPrefault","$ZodNonOptional","handleNonOptionalResult","$ZodCatch","$ZodPipe","handlePipeResult","next","$ZodReadonly","handleReadonlyResult","$ZodLazy","d","$ZodCustom","checks.$ZodCheck","handleRefineResult","_iss","util.issue","$ZodRegistry","_meta","meta","pm","registry","globalRegistry","_string","util.normalizeParams","_email","_guid","_uuid","_uuidv4","_uuidv6","_uuidv7","_url","_nanoid","_cuid","_cuid2","_ulid","_xid","_ksuid","_ipv4","_ipv6","_cidrv4","_cidrv6","_base64","_base64url","_e164","_jwt","_isoDateTime","_isoDate","_isoTime","_isoDuration","_number","_int","_boolean","_unknown","_never","_lt","checks.$ZodCheckLessThan","_lte","_gt","checks.$ZodCheckGreaterThan","_gte","_multipleOf","checks.$ZodCheckMultipleOf","_maxLength","checks.$ZodCheckMaxLength","_minLength","checks.$ZodCheckMinLength","_length","checks.$ZodCheckLengthEquals","_regex","checks.$ZodCheckRegex","_lowercase","checks.$ZodCheckLowerCase","_uppercase","checks.$ZodCheckUpperCase","_includes","includes","checks.$ZodCheckIncludes","_startsWith","checks.$ZodCheckStartsWith","_endsWith","suffix","checks.$ZodCheckEndsWith","_overwrite","tx","checks.$ZodCheckOverwrite","_normalize","form","_trim","_toLowerCase","_toUpperCase","_slugify","util.slugify","_array","element","_refine","_superRefine","_check","_issue","initializeContext","process","seen","overrideSchema","_json","processor","parent","isTransforming","extractDefs","root","idToSchema","entry","existing","makeURI","defsSegment","externalId","uriGenerator","defUriPrefix","defId","extractToDef","ref","ext","finalize","flattenRef","zodSchema","_cached","refSeen","refSchema","parentSeen","rootMetaId","finalized","createStandardJSONSchemaMethod","_schema","createToJSONSchemaMethod","processors","io","libraryOptions","formatMap","stringProcessor","json","format","contentEncoding","regexes","numberProcessor","multipleOf","exclusiveMaximum","exclusiveMinimum","exMin","exMax","legacy","booleanProcessor","neverProcessor","unknownProcessor","enumProcessor","literalProcessor","vals","customProcessor","transformProcessor","arrayProcessor","objectProcessor","allKeys","requiredKeys","unionProcessor","isExclusive","options","intersectionProcessor","isSimpleIntersection","allOf","tupleProcessor","prefixPath","restPath","prefixItems","recordProcessor","keyType","keyBag","valueSchema","keyValues","validKeyValues","nullableProcessor","inner","nonoptionalProcessor","defaultProcessor","prefaultProcessor","catchProcessor","catchValue","pipeProcessor","inIsTransform","innerType","readonlyProcessor","optionalProcessor","lazyProcessor","ZodISODateTime","core.$ZodISODateTime","schemas.ZodStringFormat","core._isoDateTime","ZodISODate","core.$ZodISODate","core._isoDate","ZodISOTime","core.$ZodISOTime","core._isoTime","ZodISODuration","core.$ZodISODuration","core._isoDuration","core.formatError","core.flattenError","ZodRealError","parse","core._parse","parseAsync","core._parseAsync","core._safeParse","core._safeParseAsync","encode","core._encode","decode","core._decode","encodeAsync","core._encodeAsync","decodeAsync","core._decodeAsync","safeEncode","core._safeEncode","safeDecode","core._safeDecode","safeEncodeAsync","core._safeEncodeAsync","safeDecodeAsync","core._safeDecodeAsync","_installedGroups","_installLazyMethods","group","methods","installed","bound","ZodType","core.$ZodType","parse.parse","parse.safeParse","parse.parseAsync","parse.safeParseAsync","parse.encode","parse.decode","parse.encodeAsync","parse.decodeAsync","parse.safeEncode","parse.safeDecode","parse.safeEncodeAsync","parse.safeDecodeAsync","chks","util.mergeDefs","core.clone","reg","check","refine","refinement","superRefine","checks.overwrite","optional","exactOptional","nullable","nonoptional","array","union","intersection","pipe","transform","_default","prefault","_catch","readonly","description","core.globalRegistry","_ZodString","core.$ZodString","processors.stringProcessor","checks.regex","checks.includes","checks.startsWith","checks.endsWith","checks.minLength","checks.maxLength","checks.length","checks.lowercase","checks.uppercase","checks.trim","checks.normalize","checks.toLowerCase","checks.toUpperCase","checks.slugify","ZodString","core._email","ZodEmail","core._url","ZodURL","core._jwt","ZodJWT","core._emoji","ZodEmoji","core._guid","ZodGUID","core._uuid","ZodUUID","core._uuidv4","core._uuidv6","core._uuidv7","core._nanoid","ZodNanoID","core._cuid","ZodCUID","core._cuid2","ZodCUID2","core._ulid","ZodULID","core._base64","ZodBase64","core._base64url","ZodBase64URL","core._xid","ZodXID","core._ksuid","ZodKSUID","core._ipv4","ZodIPv4","core._ipv6","ZodIPv6","core._cidrv4","ZodCIDRv4","core._cidrv6","ZodCIDRv6","core._e164","ZodE164","iso.datetime","iso.date","iso.time","iso.duration","core._string","ZodStringFormat","core.$ZodStringFormat","core.$ZodEmail","core.$ZodGUID","core.$ZodUUID","core.$ZodURL","core.$ZodEmoji","core.$ZodNanoID","core.$ZodCUID","core.$ZodCUID2","core.$ZodULID","core.$ZodXID","core.$ZodKSUID","core.$ZodIPv4","core.$ZodIPv6","core.$ZodCIDRv4","core.$ZodCIDRv6","core.$ZodBase64","core.$ZodBase64URL","core.$ZodE164","core.$ZodJWT","ZodNumber","core.$ZodNumber","processors.numberProcessor","checks.gt","checks.gte","checks.lt","checks.lte","int","checks.multipleOf","core._number","ZodNumberFormat","core.$ZodNumberFormat","core._int","ZodBoolean","core.$ZodBoolean","processors.booleanProcessor","core._boolean","ZodUnknown","core.$ZodUnknown","processors.unknownProcessor","unknown","core._unknown","ZodNever","core.$ZodNever","processors.neverProcessor","never","core._never","ZodArray","core.$ZodArray","processors.arrayProcessor","n","core._array","ZodObject","core.$ZodObjectJIT","processors.objectProcessor","_enum","incoming","util.extend","util.safeExtend","other","util.merge","util.pick","util.omit","util.partial","ZodOptional","util.required","ZodNonOptional","ZodUnion","core.$ZodUnion","processors.unionProcessor","ZodDiscriminatedUnion","core.$ZodDiscriminatedUnion","discriminatedUnion","discriminator","ZodIntersection","core.$ZodIntersection","processors.intersectionProcessor","ZodTuple","core.$ZodTuple","processors.tupleProcessor","tuple","_paramsOrRest","hasRest","ZodRecord","core.$ZodRecord","processors.recordProcessor","record","valueType","ZodEnum","core.$ZodEnum","processors.enumProcessor","newEntries","ZodLiteral","core.$ZodLiteral","processors.literalProcessor","literal","ZodTransform","core.$ZodTransform","processors.transformProcessor","core.$ZodOptional","processors.optionalProcessor","ZodExactOptional","core.$ZodExactOptional","ZodNullable","core.$ZodNullable","processors.nullableProcessor","ZodDefault","core.$ZodDefault","processors.defaultProcessor","defaultValue","util.shallowClone","ZodPrefault","core.$ZodPrefault","processors.prefaultProcessor","core.$ZodNonOptional","processors.nonoptionalProcessor","ZodCatch","core.$ZodCatch","processors.catchProcessor","ZodPipe","core.$ZodPipe","processors.pipeProcessor","in_","out","ZodReadonly","core.$ZodReadonly","processors.readonlyProcessor","ZodLazy","core.$ZodLazy","processors.lazyProcessor","lazy","ZodCustom","core.$ZodCustom","processors.customProcessor","core._refine","core._superRefine","POLLUTION_KEYS","MAX_POLLUTION_SCAN_DEPTH","containsPollutionKey","depth","obj","safeRecordKey","z.string","RGBColorSchema","z.object","z.number","BlendModeSchema","z.enum","MeshDataSchema","z.array","AffineMatrixSchema","z.tuple","InterpolationTypeSchema","BonePropertyTypeSchema","BoneBindingPropertyTypeSchema","IKControllerBindingPropertyTypeSchema","VisemeTypeSchema","TimelineKeyframeSchema","AnimationTrackSchema","BoneTrackSchema","ImageSequenceEntrySchema","ImageSequenceTrackSchema","AudioTrackSchema","z.boolean","LipSyncTrackSchema","z.literal","IKControllerTrackSchema","AnimationClipSchema","SceneSchema","SceneBlendSchema","ColliderShapeSchema","z.discriminatedUnion","ColliderDataSchema","LayerSemanticRoleSchema","LayerSemanticRoleSourceSchema","LayerRiggingHintSchema","ProviderProposalAuditSchema","LayerDepthStatsSchema","FourNumberTupleSchema","TrimmedBoundsTupleSchema","TwoNumberTupleSchema","SeeThroughImportMetadataSchema","ManualPngImportMetadataSchema","SeeThroughLayerImportMetadataSchema","ManualPngLayerImportMetadataSchema","ManualSplitBoundsSchema","ManualSplitOutputMetadataSchema","z.union","z.never","LegacySeeThroughImportMetadataSchema","seeThrough","LayerImportMetadataSchema","nodeBaseShape","BoneDataSchema","ArtPathControlPointSchema","ArtPathStyleSchema","LayerNodeSchema","z.lazy","ParameterDefinitionSchema","ParameterBindingPointSchema","BindingTargetSchema","ParameterBindingSchema","SkinWeightSchema","SkinDataSchema","z.record","ExpressionPresetSchema","PendulumConfigSchema","PhysicsInputSchema","PhysicsOutputSchema","PhysicsGroupSchema","VisemeMappingSchema","LipSyncConfigSchema","TransitionConditionSchema","BlendTreeEntrySchema","BlendTree1DSchema","AnimationStateSchema","StateTransitionSchema","AnimationStateMachineSchema","IKBoneConstraintSchema","IKParameterMappingSchema","IKControllerSchema","OffscreenTargetSchema","ProjectDataSchema","AtlasEntrySchema","AtlasDataSchema","ViviFileDataSchema","privatePreviewMarker","MODEL_FORBIDDEN_RAW_KEYS","MODEL_FORBIDDEN_KIND_OR_TYPE","MODEL_HIGH_SIGNAL_STRING_MARKERS","FORBIDDEN_RAW_KEYS","FORBIDDEN_KIND_OR_TYPE","NORMALIZED_HIGH_SIGNAL_STRING_MARKERS","marker","normalizeMarkerText","validateNoLocalMotionPreviewFields","context","scanNoLocalMotionPreviewFields","dedupeIssues","pushStringMarkerIssues","entryKey","entryValue","isArrayIndexKey","scanProperty","isRecord","keyText","childPath","pushIssue","descriptor","child","normalizedMarker","runtimeForbiddenMarker","VIVI_RUNTIME_FORBIDDEN_RAW_KEYS","VIVI_RUNTIME_FORBIDDEN_KIND_OR_TYPE","VIVI_RUNTIME_ALLOWED_BINDING_TARGET_TYPES","VIVI_RUNTIME_ALLOWED_EXPRESSION_PRESET_KEYS","PUBLIC_PROJECT_PROFILE","PublicProfileError","formatPublicProfileIssues","__publicField","validatePublicViviFileProfile","fileData","validatePublicRawViviFileProfile","validatePublicProjectProfile","validateRawPublicKnownFields","project","scanRawPublicObject","assertPublicRawViviFileProfile","assertPublicViviFileProfile","basePath","validateParameterBindings","validateExpressionPresets","FORBIDDEN_RAW_KIND_OR_TARGET","ALLOWED_BINDING_TARGET_TYPES","ALLOWED_EXPRESSION_PRESET_KEYS","PUBLIC_FILE_KEYS","PUBLIC_PROJECT_KEYS","pushForbiddenRawIssue","pushUnknownRawIssue","scanRawPublicProperty","validateRawKnownKeys","allowedKeys","binding","preset","VALID_LAYER_KINDS","validateLayers","layers","layer","layerPath","validateAtlasEntries","j","entryPath","eo","validateAtlases","atlases","atlas","atlasPath","formatIssuePath","seg","formatIssueMessage","parseViviFile","proj","zodResult","GEOMETRY","PHYSICS_DEFAULTS","DRAW_ORDER","DEFAULT_COLORS","pointInTriangle","px","py","x1","y1","x2","y2","x3","y3","w","pointInRect","rx","ry","rw","rh","pointInCircle","cx","cy","radius","dx","dy","hitTestMesh","state","worldX","worldY","verticesAreModelSpace","localX","localY","verts","indices","stride","i0","i1","i2","hitTestColliders","colliders","meshStates","sorted","sortEnabledColliders","collider","hit","testSingleCollider","hitTestCollidersAll","meshDrawOrder","priorityA","getColliderPriority","priorityB","orderA","getMeshColliderDrawOrder","orderB","toResult","meshId","isBone","node","multiplyAffine","computeBoneLocalTransform","bone","cos","sin","sx","sy","buildBoneMap","visit","nodes","computeBoneWorldTransforms","boneMap","worldTransforms","computeWorld","local","world","parentWorld","isScreenColorDefault","color","getDrawOrder","drawOrder","getMultiplyColor","isPolygonFlipped","vertices","minVerts","signedArea","nextI","x0","y0","flattenLayers","findPathToLayer","targetId","findPathImpl","isLayerEffectivelyVisible","rootLayers","l","meshDataToTypedArrays","mesh","normalizeIKAngle","angle","clampIKAngle","min","max","solveTwoBoneIK","rootX","rootY","len1","len2","targetX","targetY","poleX","poleY","constraints","dist","angleToTarget","applyTwoBoneConstraints","angle1","angle2","cosAngle1","clampedCos1","innerAngle1","poleDx","poleDy","jointX","jointY","solveCCDIK","bones","maxIterations","angles","positions","computeEndEffector","last","updatePositions","prev","reached","iter","endEffector","toEnd","toTarget","deltaAngle","ee","solvedAngles","buildCCDBoneInputs","controller","boneLengths","bc","wt","wx","wy","solveIKController","influence","bone0","bone1","wt0","a1","a2","inputs","runIKStep","controllers","boneParents","collectBoneParents","poseLayers","createIKPoseLayers","boneLocalAngles","collectBoneLocalAngles","effectiveController","applyControllerBindingOverrides","collectIKConstraints","boneId","currentAngle","unconstrainedLocalAngle","solvedWorldAngleToLocal","constraint","localSolvedAngle","parents","hasBonePoseOverrides","cloneLayerWithBoneOverrides","children","y","scaleX","scaleY","worldAngleOf","solvedWorldAngle","solvedWorldAngles","parentId","parentWorldAngle","poleTargetX","poleTargetY","createPhysicsRuntimeState","computeInputForces","currentValues","previousValues","current","previous","delta","stepPhysicsGroup","states","inputForces","dt","gravRad","gravX","gravY","armX","armY","forceX","forceY","parentState","torque","massLength","angularAcceleration","computeOutputValues","outputs","parameterDefs","parameters","paramMap","rawValue","runPhysicsFrame","deltaTime","accumulator","substeps","runPhysicsStep","forces","newAccumulator","paramId","interpolateBindingPoints","bindingPoints","paramValue","evaluateBindingsAdditive","bindings","parameterValues","sum","evaluated","mergeParameterDefaults","overrides","definitions","allowUnknown","clampKnown","param","definition","computeSkinnedVertices","restVertices","skin","vertexCount","vi","vertexWeights","sumX","sumY","appliedWeight","sw","bindInv","skinMatrix","ty","restWeight","PUBLIC_BINDING_TARGET_TYPES","clonePhysicsStates","pendulums","cloneFloat32Map","cloneMeshStates","replaceRecord","replaceMap","PublicViviModel","presetId","boneLayers","snapshot","nextPhysicsStates","nextPhysicsAccumulators","nextMeshScratchVerts","nextMeshStates","nextDrawOrderCache","nextPrevParamValues","nextBoneX","nextBoneY","nextBoneAngles","nextBoneScaleX","nextBoneScaleY","nextIkTargetX","nextIkTargetY","nextIkPoleTargetX","nextIkPoleTargetY","nextIkInfluence","groups","property","controllerId","processedIds","scratch","staticData","typed","zIndex","visible","culled","isSkinned","verticesSpace","parseScript","tokens","tokenize","parseTokens","runScript","script","api","s","executeCommands","cancelScript","commands","cmd","executeCommand","sleep","steps","stepMs","count","MAX_TIMER_DELAY_MS","CANCEL_POLL_MS","ms","waitMs","resolve","elapsedMs","done","timeoutId","checkId","finish","scheduleNextTimeout","remainingMs","delayMs","quote","num","ident","tok","parseArgs","bodyEnd","braceEnd","findMatchingBrace","body","lparenPos","strings","numbers","lbracePos","extractTextures","textures","entryMap","atlasCanvas","loadBase64Image","texCanvas","allLayers","mapping","atlasWidth","atlasHeight","uvs","width","height","reject","img","canvas","ExtensionType","ExtensionType2","normalizeExtension","normalizeExtensionPriority","defaultPriority","extensions","extensions2","type","handlers","queue","onAdd","onRemove","addHandlers","removeHandlers","extension","list","Target","sources","unsafeEval","unsafeEvalSupported","has","Events","EE","once","addListener","emitter","event","listener","evt","clearEvent","EventEmitter","names","events","listeners","a3","a4","a5","len","module","uidCache","uid","BufferUsage","BufferUsage2","Buffer","size","usage","shrinkToFit","mappedAtCreation","syncGPU","oldData","sizeInBytes","UboSystem","adaptor","uniformGroup","uniformData","uniformGroupSignature","elements","layout","syncFunction","uboElements","offset","uniformGroupData","dataInt32","synced","WGSL_TO_STD40_SIZE","createUboElementsSTD40","chunkSize","uboElement","boundary","curOffset","uniformParsers","createUboSyncFunction","parserCode","arrayGenerationFunction","singleSettersMap","funcFragments","parsed","template","fragmentSrc","loopMatrix","col","row","uboSyncFunctionsSTD40","uboSyncFunctionsWGSL","generateArraySyncSTD40","offsetToAdd","rowSize","elementSize","remainder","createUboSyncFunctionSTD40","GlUboSystem","BufferResource","buffer","destroyBuffer","idCounts","idHash","createIdFromString","groupId","UNIFORM_TYPES_VALUES","UNIFORM_TYPES_MAP","acc","getDefaultUniformValue","_UniformGroup","uniformStructures","uniforms","arrayMatch","UniformGroup","nextPow2","isPow2","definedProps","warnings","v8_0_0","v8_3_4","deprecationState","deprecation","ignoreDepth","stack","deprecationMessage","useGroup","createResourceIdFromString","_TextureStyle","bigKey","TextureStyle","_TextureSource","resolution","resource","newPixelWidth","newPixelHeight","_resource","TextureSource","generateShaderSyncCode","shader","shaderSystem","headerFragments","addedTextreSystem","textureCount","programData","resName","uniformName","functionSource","warnCount","maxWarnings","warn","GlProgramData","program","compileShader","gl","src","booleanArray","attributeFormatData","getAttributeInfoFromFormat","GL_TABLE","GL_TO_GLSL_TYPES","GLSL_TO_VERTEX_TYPES","mapType","typeNames","tn","mapGlToVertexFormat","typeValue","extractAttributesFromGlProgram","sortAttributes","attributes","totalAttributes","attribData","getUboData","uniformBlocks","totalUniformsBlocks","uniformBlockIndex","getUniformData","totalUniforms","isArray","logPrettyShaderError","shaderSrc","shaderLog","splitShader","dedupe","lineNumbers","logArgs","fragmentSourceToLog","logProgramError","vertexShader","fragmentShader","generateProgram","glVertShader","glFragShader","webGLProgram","transformFeedbackVaryings","defaultSyncData","GlShaderSystem","renderer","skipSync","bufferSystem","isBufferResource","glBuffer","boundLocation","UNIFORM_TO_SINGLE_SETTERS","UNIFORM_TO_ARRAY_SETTERS","generateUniformsSync","uniform","parser","GlUniformGroupSystem","syncData","uniformGroupSyncHash","preFix","WGSL_ALIGN_SIZE_DATA","createUboElementsWGSL","align","generateArraySyncWGSL","createUboSyncFunctionWGSL","GpuUboSystem","u","h","g","m","N","M","H","$","S","namesPlugin","_Color","value1","value2","type1","keys1","keys2","alpha","applyToRGB","hexString","alphaString","match","colord","Color","environments","loadEnvironmentExtensions","skip","env","cullingMixin","PI_2","RAD_TO_DEG","DEG_TO_RAD","Point","tempPoint","Matrix","transpose","pos","newPos","c1","tx1","matrix","b1","d1","b2","c2","d2","pivotX","pivotY","rotation","skewX","skewY","pivot","identityMatrix","tempMatrix","ObservablePoint","observer","GlobalResourceRegistry","pool","Pool","ClassType","initialSize","total","PoolGroupClass","stats","BigPool","cacheAsTextureMixin","removeItems","arr","startIdx","removeCount","childrenHelperMixin","beginIndex","endIndex","range","removed","renderGroup","sameParent","currentIndex","child2","index1","index2","childMat","newMatrix","oldChild","newChild","collectRenderablesMixin","instructionSet","currentLayer","renderPipes","effect","FilterEffect","MaskEffectManagerClass","test","MaskEffectManager","effectsMixin","hasFilters","hadFilters","didChange","findMixin","deep","found","tempPoints","Rectangle","bounds","rectangle","strokeWidth","alignment","_x","_y","strokeWidthOuter","strokeWidthInner","outerLeft","outerRight","outerTop","outerBottom","innerLeft","innerRight","innerTop","innerBottom","x02","y02","lt","lb","rt","rb","nx","ny","n00","n10","n01","n11","mx","my","m00","m10","m01","m11","paddingX","paddingY","eps","defaultMatrix","Bounds","minX","minY","maxX","maxY","rect","top","bottom","vertexData","beginOffset","endOffset","matrixPool","boundsPool","getFastGlobalBoundsMixin","factorRenderLayers","localBounds","manageEffects","viewBounds","advanced","getGlobalBounds","skipUpdateTransform","parentTransform","pooledMatrix","updateTransformBackwards","_getGlobalBounds","worldTransform","parentBounds","preserveBounds","renderableBounds","multiplyHexColors","color1","color2","r1","g1","r2","g2","WHITE_BGR","multiplyColors","localBGRColor","parentBGRColor","bgr2rgb","getGlobalMixin","skipUpdate","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","ux","uy","vx","vy","rotationCayley","rotationMatrices","signum","_ux","_uy","_vx","_vy","mat","groupD8","ind","rotationSecond","rotationFirst","dw","dh","finalTx","finalTy","sourceFrame","frameX","frameY","frameWidth","frameHeight","NOOP","BufferImageSource","tempMat","TextureMatrix","texture","clampMargin","tex","orig","trim","texBase","frame","margin","Texture","defaultAnchor","defaultBorders","rotate","dynamic","nX","nY","nW","nH","w2","h2","cX","cY","destroySource","TexturePoolClass","textureOptions","pixelWidth","pixelHeight","antialias","autoGenerateMipmaps","textureSource","po2Width","po2Height","antialiasFlag","mipmapFlag","renderTexture","resetStyle","destroyTextures","TexturePool","RenderGroup","cachedParent","childrenAtDepth","renderGroupChild","childrenToUpdate","renderable","parentCacheAsTexture","assignWithIgnore","ignore","defaultSkew","defaultPivot","defaultScale","defaultOrigin","UPDATE_COLOR","UPDATE_BLEND","UPDATE_VISIBLE","Container","parentRenderGroup","skew","localTransformChangeId","scale","ox","oy","bgr","valueNumber","oldChildren","CLEAR","CLEAR2","SystemRunner","a0","a6","a7","defaultRunners","_AbstractRenderer","combinedRunners","systemName","deprecated","isRGBAArray","desiredScreenWidth","desiredScreenHeight","previousResolution","clear","clearColor","mipLevel","runnerIds","runnerId","systems","ClassRef","system","pipes","pipeAdaptors","adaptors","PipeClass","Adaptor","runner","AbstractRenderer","ensureIsBuffer","getGeometryBounds","geometry","attributeId","attribute","byteSize","ensureIsAttribute","Geometry","indexBuffer","topology","attributeOption","destroyBuffers","ViewableBuffer","sizeOrBuffer","createIndicesForQuads","outBuffer","totalIndices","generateParticleUpdateFunction","properties","generateUpdateFunction","attributeInfo","ParticleBuffer","staticVertexSize","dynamicVertexSize","dynamicOffset","staticOffset","uploadFunction","getParticleSyncKey","particles","uploadStatic","dynamicAttributeBuffer","staticAttributeBuffer","keyGen","particleUpdateFunctions","ps","f32v","_u32v","w0","w1","h0","h1","ax","ay","_f32v","u32v","generateParticleUpdatePolyfill","allProperties","dynamicProperties","staticProperties","updateData","attributeStride","obx","generateShaderSyncPolyfill","syncShader","bindGroup","uboParserFunctions","uv","_v","uboSingleFunctionsWGSL","_name","_uv","uboSingleFunctionsSTD40","generateUboSyncPolyfillSTD40","generateUboSyncPolyfill","generateUboSyncPolyfillWGSL","uboFunctions","arrayUploadFunction","functionMap","uniformSingleParserFunctions","cu","cv","ud","_cu","_cv","uniformArrayParserFunctions","uniformParserFunctions","generateUniformsSyncPolyfill","templateType","selfInstall","browserExt","webworkerExt","updateQuadBounds","anchor","sourceWidth","sourceHeight","ViewContainer","Sprite","roundPixels","skipCache","currentTexture","destroyTextureSource","tempBounds","addMaskBounds","boundsToMask","addMaskLocalBounds","localRoot","relativeMask","getMatrixRelativeToParent","AlphaMask","hitTestFn","ColorMask","StencilMask","BrowserAdapter","xml","currentAdapter","DOMAdapter","adapter","CanvasSource","didResize","ImageSource","UPDATE_PRIORITY","UPDATE_PRIORITY2","TickerListener","priority","ticker","redirect","hard","_Ticker","currentTime","elapsedMS","head","fps","minFPMS","shared","Ticker","promise","detectVideoAlphaMode","video","video2","framebuffer","pixel","_VideoSource","VideoSource","convertToList","forceTransform","CacheClass","cacheableAssets","cacheableMap","key2","cacheKeys","cachedAssets","cacheMap","Cache","textureSourceFrom","hasResource","res","Source","resourceToTexture","textureFrom","LoaderParserPriority","LoaderParserPriority2","assertPath","path2","removeUrlParams","escapeRegExp","replaceAll","find","replace","normalizeStringPosix","allowAboveRoot","lastSegmentLength","lastSlash","dots","code","lastSlashIndex","matchFile","matchProtocol","customBaseUrl","customRootUrl","baseUrl","rootUrl","protocol","isAbsolute","trailingSeparator","segments","joined","prevArg","hasRoot","matchedSlash","origpath","extIdx","firstNonSlashEnd","startDot","startPart","preDotState","ret","processX","base","tags","createStringVariations","vars","split","isSingleItem","Resolver","bundleId","assetId","assetBundleId","bundleIdentifier","preferOrders","prefer","rootPath","searchParams","queryValues","asset","alias","manifest","bundle","assets","assetNames","convertedAssets","srcs","aliases","bundleAssetId","bundleIds","keyCheck","userDefinedLoadParser","userDefinedParser","srcsToUse","src2","aliasesToUse","resolvedAssets","parseUrl","formattedAsset","singleAsset","preferredOrder","priorityKey","filteredAssets","preferred","preference","paramConnector","assetData","loadParser","progressSize","getUrlExtension","copySearchParams","targetUrl","sourceUrl","_Spritesheet","optionsOrTexture","arg1","cachePrefix","metaResolution","initialFrameIndex","processAll","frameIndex","maxFrames","sourceSize","animations","animName","frameName","callback","destroyBase","Spritesheet","validImages","getCacheableAssets","ignoreMultiPack","out2","spritesheetAsset","loader","imageTexture","imageFilename","imagePath","spritesheet","multiPacks","promises","itemUrl","sp","_resolvedAsset","getTestContext","maxFragmentPrecision","getMaxFragmentPrecision","addProgramDefines","isES300","isFragment","ensurePrecision","maxSupportedPrecision","precision","insertVersion","fragmentNameCache","VertexNameCache","setProgramName","nameCache","stripVersion","processes","programCache","_GlProgram","preprocessorOptions","fragment","vertex","processKey","processOptions","GlProgram","WGSL_TO_VERTEX_TYPES","LOCATION_REGEX","parseLocations","stripComments","extractAttributesFromGpuProgram","entryPoint","cleanSource","mainVertStart","arrowFunctionStart","functionArgsSubstring","structMatch","structName","structRegex","structBody","extractStructAndGroups","wgsl","linePattern","groupPattern","bindingPattern","namePattern","typePattern","structPattern","structMemberPattern","structs","struct","members","member","name2","ShaderStage","ShaderStage2","generateGpuLayoutGroups","generateLayoutHash","removeStructAndGroupDuplicates","vertexStructsAndGroups","fragmentStructsAndGroups","structNameSet","dupeGroupKeySet","GpuProgram","gpuLayout","structsAndGroups","BindGroup","resources","keyParts","currentResource","now","tick","RendererType","RendererType2","Shader","gpuProgram","glProgram","compatibleRenderers","groupMap","nameHash","groupData","bindTick","groupIndex","bindIndex","uniformsOut","destroyPrograms","gpu","blendModeIds","BLEND","OFFSET","CULLING","DEPTH_TEST","WINDING","DEPTH_MASK","_State","State","_Filter","filterManager","clearMode","Filter","_isWebGLSupported","isWebGLSupported","failIfMajorPerformanceCaveat","contextOptions","success","loseContext","_isWebGPUSupported","isWebGPUSupported","renderPriority","autoDetectRenderer","RendererClass","finalOptions","rendererType","WebGPURenderer","WebGLRenderer","CanvasRenderer","VERSION","ApplicationInitHook","RendererInitHook","ResizePlugin","dom","clientWidth","clientHeight","TickerPlugin","oldTicker","_Application","plugin","rendererDestroyOptions","plugins","Application","BLEND_TO_NPM","STENCIL_MODES","STENCIL_MODES2","getAdjustedBlendModeBlend","blendMode","v2x","v2y","v1x","v1y","v0x","v0y","dot00","dot01","dot02","dot11","dot12","invDenom","color32BitToUniform","abgr","_MeshGeometry","positionBuffer","uvBuffer","MeshGeometry","BatchableMesh","transformedUvs","textureMatrix","MeshGpuData","MeshPipe","meshData","wasBatched","isBatched","batchableMesh","batcher","gpuBatchableMesh","localUniforms","gpuMesh","Mesh","ind0","ind1","ind2","MeshSimple","BLEND_MODE_MAP","toPixiBlendMode","mode","VERTEX","FRAGMENT","UNIFORM_GROUP","UNIFORM_NAME","createScreenColorFilter","updateScreenColorFilter","filter","ViviPixiRenderer","app","model","canvasTextures","layerId","screenX","screenY","worldPos","getRuntimeRenderList","getRuntimeMeshSnapshot","runtimeColorToHex","runtimeColorToRgb","legacyStateToRuntimeSnapshot","toRuntimeBlendMode","DEFAULTS","generateThumbnail","sourceCanvas","thumbCanvas","srcW","srcH","drawW","drawH","offsetX","offsetY","mimeType","STYLES","readResponseTextWithLimit","response","contentLengthHeader","contentLength","reader","decoder","totalBytes","ViviModelElement","style","oldValue","newValue","abort","hotkey","pr","nameOrId","loop","ViviWebError","isViviWebError","toViviWebError","fallbackCode","fallbackMessage","isAbortError","sanitizeMessage","VIVI_WEB_MODEL_BRAND","VIVI_WEB_MODEL_INTERNALS","brandViviWebModel","internals","hasViviWebModelBrand","getViviWebModelInternals","MAX_JSON_CLONE_DEPTH","ViviWebModelImpl","runtimeModel","metadata","parameter","isViviWebModel","loadViviWebModel","throwIfAborted","jsonText","isPlainJsonSource","safeCloneJsonValue","loadSourceText","createViviWebModel","cloneViviFileData","assertPublicSdkProfile","clonedFileData","initialParameters","sanitizeInitialParameters","isRequest","isResponse","isBlob","signal","cloneArray","cloneRecord","prototype","MAX_DELTA_SECONDS","MAX_CANVAS_DIMENSION","MAX_THUMBNAIL_PIXELS","MAX_THUMBNAIL_BYTES","createViviWebPlayer","player","playerReady","assertHtmlCanvas","resolvePlayerModel","modelInternals","ViviWebPlayerImpl","finishAutoStart","destroyRendererQuietly","webError","emitViviWebEvent","timeMs","deltaSeconds","scheduler","pendingFrameTime","activated","frameId","wasRunning","clampedDelta","validateDeltaSeconds","nextWidth","validateCanvasDimension","nextHeight","clampedValue","thumbnailOptions","validateThumbnailOptions","dataUrl","createWindowScheduler","handle","quality","validFormats","handler","defineViviModelElement","tagName"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,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,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226]}
|