studiograph 1.3.48-next.26 → 1.3.48-next.261
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -17
- package/dist/agent/agent-pool.d.ts +120 -4
- package/dist/agent/agent-pool.js +358 -18
- package/dist/agent/agent-pool.js.map +1 -1
- package/dist/agent/context-window.d.ts +113 -0
- package/dist/agent/context-window.js +459 -0
- package/dist/agent/context-window.js.map +1 -0
- package/dist/agent/followups.d.ts +34 -0
- package/dist/agent/followups.js +52 -0
- package/dist/agent/followups.js.map +1 -0
- package/dist/agent/orchestrator.d.ts +110 -11
- package/dist/agent/orchestrator.js +547 -75
- package/dist/agent/orchestrator.js.map +1 -1
- package/dist/agent/prompts/entity-types-section.d.ts +18 -9
- package/dist/agent/prompts/entity-types-section.js +42 -18
- package/dist/agent/prompts/entity-types-section.js.map +1 -1
- package/dist/agent/prompts/system.md +107 -19
- package/dist/agent/skill-loader.js +3 -9
- package/dist/agent/skill-loader.js.map +1 -1
- package/dist/agent/skills/artifact-canvas/skill.md +257 -0
- package/dist/agent/skills/create-skill.md +39 -0
- package/dist/agent/skills/entity-schema.md +67 -150
- package/dist/agent/skills/interview/skill.md +44 -29
- package/dist/agent/skills/paged-documents/skill.md +147 -0
- package/dist/agent/skills/schema-rules.md +28 -28
- package/dist/agent/tools/artifact-tools.d.ts +237 -0
- package/dist/agent/tools/artifact-tools.js +407 -0
- package/dist/agent/tools/artifact-tools.js.map +1 -0
- package/dist/agent/tools/capture-tools.d.ts +31 -0
- package/dist/agent/tools/capture-tools.js +40 -0
- package/dist/agent/tools/capture-tools.js.map +1 -0
- package/dist/agent/tools/folder-tools.d.ts +50 -0
- package/dist/agent/tools/folder-tools.js +340 -0
- package/dist/agent/tools/folder-tools.js.map +1 -0
- package/dist/agent/tools/fs-tools.d.ts +6 -5
- package/dist/agent/tools/fs-tools.js +1 -1
- package/dist/agent/tools/fs-tools.js.map +1 -1
- package/dist/agent/tools/graph-tools.d.ts +45 -73
- package/dist/agent/tools/graph-tools.js +765 -239
- package/dist/agent/tools/graph-tools.js.map +1 -1
- package/dist/agent/tools/history-tools.d.ts +95 -0
- package/dist/agent/tools/history-tools.js +465 -0
- package/dist/agent/tools/history-tools.js.map +1 -0
- package/dist/agent/tools/load-skill.d.ts +4 -3
- package/dist/agent/tools/load-skill.js +1 -1
- package/dist/agent/tools/load-skill.js.map +1 -1
- package/dist/agent/tools/ops-tools.d.ts +2 -1
- package/dist/agent/tools/ops-tools.js +125 -25
- package/dist/agent/tools/ops-tools.js.map +1 -1
- package/dist/agent/tools/permission-tools.d.ts +69 -21
- package/dist/agent/tools/permission-tools.js +183 -18
- package/dist/agent/tools/permission-tools.js.map +1 -1
- package/dist/agent/tools/tool-loader.js +5 -4
- package/dist/agent/tools/tool-loader.js.map +1 -1
- package/dist/agent/tools/web-tools.js +58 -9
- package/dist/agent/tools/web-tools.js.map +1 -1
- package/dist/cli/commands/about.d.ts +1 -0
- package/dist/cli/commands/about.js +55 -3
- package/dist/cli/commands/about.js.map +1 -1
- package/dist/cli/commands/admin/audit-workspace.d.ts +23 -0
- package/dist/cli/commands/admin/audit-workspace.js +133 -0
- package/dist/cli/commands/admin/audit-workspace.js.map +1 -0
- package/dist/cli/commands/admin/audit.d.ts +21 -0
- package/dist/cli/commands/admin/audit.js +174 -0
- package/dist/cli/commands/admin/audit.js.map +1 -0
- package/dist/cli/commands/admin/backup.d.ts +54 -0
- package/dist/cli/commands/admin/backup.js +207 -0
- package/dist/cli/commands/admin/backup.js.map +1 -0
- package/dist/cli/commands/admin/folder.d.ts +11 -0
- package/dist/cli/commands/admin/folder.js +187 -0
- package/dist/cli/commands/admin/folder.js.map +1 -0
- package/dist/cli/commands/admin/index.d.ts +16 -0
- package/dist/cli/commands/admin/index.js +48 -0
- package/dist/cli/commands/admin/index.js.map +1 -0
- package/dist/cli/commands/admin/migrate-asset-owners.d.ts +56 -0
- package/dist/cli/commands/admin/migrate-asset-owners.js +86 -0
- package/dist/cli/commands/admin/migrate-asset-owners.js.map +1 -0
- package/dist/cli/commands/admin/migrate-assets.d.ts +62 -0
- package/dist/cli/commands/admin/migrate-assets.js +237 -0
- package/dist/cli/commands/admin/migrate-assets.js.map +1 -0
- package/dist/cli/commands/admin/migrate.d.ts +56 -0
- package/dist/cli/commands/admin/migrate.js +263 -0
- package/dist/cli/commands/admin/migrate.js.map +1 -0
- package/dist/cli/commands/admin/restore.d.ts +24 -0
- package/dist/cli/commands/admin/restore.js +228 -0
- package/dist/cli/commands/admin/restore.js.map +1 -0
- package/dist/cli/commands/admin/secrets.d.ts +23 -0
- package/dist/cli/commands/admin/secrets.js +256 -0
- package/dist/cli/commands/admin/secrets.js.map +1 -0
- package/dist/cli/commands/admin/settings.d.ts +28 -0
- package/dist/cli/commands/admin/settings.js +284 -0
- package/dist/cli/commands/admin/settings.js.map +1 -0
- package/dist/cli/commands/admin/token.d.ts +42 -0
- package/dist/cli/commands/admin/token.js +126 -0
- package/dist/cli/commands/admin/token.js.map +1 -0
- package/dist/cli/commands/admin/transfer-ownership.d.ts +15 -0
- package/dist/cli/commands/admin/transfer-ownership.js +106 -0
- package/dist/cli/commands/admin/transfer-ownership.js.map +1 -0
- package/dist/cli/commands/admin/user.d.ts +11 -0
- package/dist/cli/commands/admin/user.js +187 -0
- package/dist/cli/commands/admin/user.js.map +1 -0
- package/dist/cli/commands/clone.d.ts +23 -3
- package/dist/cli/commands/clone.js +140 -36
- package/dist/cli/commands/clone.js.map +1 -1
- package/dist/cli/commands/config.d.ts +23 -107
- package/dist/cli/commands/config.js +52 -260
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/connector.d.ts +10 -13
- package/dist/cli/commands/connector.js +16 -58
- package/dist/cli/commands/connector.js.map +1 -1
- package/dist/cli/commands/deploy.js +215 -68
- package/dist/cli/commands/deploy.js.map +1 -1
- package/dist/cli/commands/index.js +7 -4
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.js +10 -30
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/mcp.js +54 -6
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/r2.d.ts +3 -0
- package/dist/cli/commands/r2.js +223 -204
- package/dist/cli/commands/r2.js.map +1 -1
- package/dist/cli/commands/redeploy.js +65 -12
- package/dist/cli/commands/redeploy.js.map +1 -1
- package/dist/cli/commands/reset.d.ts +22 -6
- package/dist/cli/commands/reset.js +132 -34
- package/dist/cli/commands/reset.js.map +1 -1
- package/dist/cli/commands/serve.js +242 -24
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/sync.d.ts +1 -1
- package/dist/cli/commands/sync.js +230 -227
- package/dist/cli/commands/sync.js.map +1 -1
- package/dist/cli/crypto-bundle.d.ts +39 -0
- package/dist/cli/crypto-bundle.js +94 -0
- package/dist/cli/crypto-bundle.js.map +1 -0
- package/dist/cli/index.js +24 -23
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/railway-pin.d.ts +68 -0
- package/dist/cli/railway-pin.js +96 -0
- package/dist/cli/railway-pin.js.map +1 -0
- package/dist/cli/railway-provisioning.d.ts +53 -0
- package/dist/cli/railway-provisioning.js +85 -0
- package/dist/cli/railway-provisioning.js.map +1 -0
- package/dist/cli/setup-wizard.d.ts +30 -49
- package/dist/cli/setup-wizard.js +39 -40
- package/dist/cli/setup-wizard.js.map +1 -1
- package/dist/cli/theme.d.ts +1 -1
- package/dist/core/accent-palette.d.ts +7 -18
- package/dist/core/accent-palette.js +27 -38
- package/dist/core/accent-palette.js.map +1 -1
- package/dist/core/artifact-asset-resolution.d.ts +90 -0
- package/dist/core/artifact-asset-resolution.js +138 -0
- package/dist/core/artifact-asset-resolution.js.map +1 -0
- package/dist/core/artifact-asset-urls.d.ts +111 -0
- package/dist/core/artifact-asset-urls.js +174 -0
- package/dist/core/artifact-asset-urls.js.map +1 -0
- package/dist/core/artifact-bundle.d.ts +69 -0
- package/dist/core/artifact-bundle.js +305 -0
- package/dist/core/artifact-bundle.js.map +1 -0
- package/dist/core/artifact-escape.d.ts +5 -0
- package/dist/core/artifact-escape.js +26 -0
- package/dist/core/artifact-escape.js.map +1 -0
- package/dist/core/artifact-export.d.ts +83 -0
- package/dist/core/artifact-export.js +1567 -0
- package/dist/core/artifact-export.js.map +1 -0
- package/dist/core/artifact-frame-document.d.ts +105 -0
- package/dist/core/artifact-frame-document.js +1427 -0
- package/dist/core/artifact-frame-document.js.map +1 -0
- package/dist/core/artifact-frame-layout.d.ts +79 -0
- package/dist/core/artifact-frame-layout.js +94 -0
- package/dist/core/artifact-frame-layout.js.map +1 -0
- package/dist/core/artifact-frame-model.d.ts +198 -0
- package/dist/core/artifact-frame-model.js +603 -0
- package/dist/core/artifact-frame-model.js.map +1 -0
- package/dist/core/artifact-frame-selectors.d.ts +42 -0
- package/dist/core/artifact-frame-selectors.js +65 -0
- package/dist/core/artifact-frame-selectors.js.map +1 -0
- package/dist/core/artifact-libraries.d.ts +23 -0
- package/dist/core/artifact-libraries.js +229 -0
- package/dist/core/artifact-libraries.js.map +1 -0
- package/dist/core/artifact-manifest.d.ts +64 -0
- package/dist/core/artifact-manifest.js +88 -0
- package/dist/core/artifact-manifest.js.map +1 -0
- package/dist/core/artifact-paged-css.d.ts +64 -0
- package/dist/core/artifact-paged-css.js +253 -0
- package/dist/core/artifact-paged-css.js.map +1 -0
- package/dist/core/artifact-patch.d.ts +58 -0
- package/dist/core/artifact-patch.js +309 -0
- package/dist/core/artifact-patch.js.map +1 -0
- package/dist/core/artifact-warnings.d.ts +51 -0
- package/dist/core/artifact-warnings.js +165 -0
- package/dist/core/artifact-warnings.js.map +1 -0
- package/dist/core/breakpoints.d.ts +27 -0
- package/dist/core/breakpoints.js +28 -0
- package/dist/core/breakpoints.js.map +1 -0
- package/dist/core/cell-anchor.d.ts +29 -0
- package/dist/core/cell-anchor.js +53 -0
- package/dist/core/cell-anchor.js.map +1 -0
- package/dist/core/comment-anchor.d.ts +41 -0
- package/dist/core/comment-anchor.js +147 -0
- package/dist/core/comment-anchor.js.map +1 -0
- package/dist/core/commit-messages.d.ts +57 -0
- package/dist/core/commit-messages.js +85 -0
- package/dist/core/commit-messages.js.map +1 -0
- package/dist/core/embeds.d.ts +108 -0
- package/dist/core/embeds.js +226 -0
- package/dist/core/embeds.js.map +1 -0
- package/dist/core/entity-body-templates.d.ts +21 -0
- package/dist/core/entity-body-templates.js +66 -0
- package/dist/core/entity-body-templates.js.map +1 -0
- package/dist/core/entity-types-catalog.d.ts +65 -0
- package/dist/core/entity-types-catalog.js +142 -0
- package/dist/core/entity-types-catalog.js.map +1 -0
- package/dist/core/field-library.d.ts +62 -0
- package/dist/core/field-library.js +129 -0
- package/dist/core/field-library.js.map +1 -0
- package/dist/core/folder-paths.d.ts +41 -0
- package/dist/core/folder-paths.js +95 -0
- package/dist/core/folder-paths.js.map +1 -0
- package/dist/core/folder-sidecar.d.ts +36 -0
- package/dist/core/folder-sidecar.js +91 -0
- package/dist/core/folder-sidecar.js.map +1 -0
- package/dist/core/font-family.d.ts +62 -0
- package/dist/core/font-family.js +84 -0
- package/dist/core/font-family.js.map +1 -0
- package/dist/core/format-registry.d.ts +187 -0
- package/dist/core/format-registry.js +411 -0
- package/dist/core/format-registry.js.map +1 -0
- package/dist/core/graph.d.ts +770 -30
- package/dist/core/graph.js +2282 -386
- package/dist/core/graph.js.map +1 -1
- package/dist/core/history-diff.d.ts +35 -0
- package/dist/core/history-diff.js +114 -0
- package/dist/core/history-diff.js.map +1 -0
- package/dist/core/markdown-strip.d.ts +22 -0
- package/dist/core/markdown-strip.js +51 -0
- package/dist/core/markdown-strip.js.map +1 -0
- package/dist/core/refs.d.ts +41 -0
- package/dist/core/refs.js +80 -0
- package/dist/core/refs.js.map +1 -0
- package/dist/core/schema-registry.d.ts +66 -0
- package/dist/core/schema-registry.js +198 -37
- package/dist/core/schema-registry.js.map +1 -1
- package/dist/core/schemas/connector.d.ts +67 -0
- package/dist/core/schemas/connector.js +100 -0
- package/dist/core/schemas/connector.js.map +1 -0
- package/dist/core/schemas/workspace.d.ts +122 -0
- package/dist/core/schemas/workspace.js +211 -0
- package/dist/core/schemas/workspace.js.map +1 -0
- package/dist/core/secrets/SecretStore.d.ts +77 -0
- package/dist/core/secrets/SecretStore.js +13 -0
- package/dist/core/secrets/SecretStore.js.map +1 -0
- package/dist/core/secrets/SettingsResolver.d.ts +54 -0
- package/dist/core/secrets/SettingsResolver.js +80 -0
- package/dist/core/secrets/SettingsResolver.js.map +1 -0
- package/dist/core/secrets/SettingsStore.d.ts +30 -0
- package/dist/core/secrets/SettingsStore.js +9 -0
- package/dist/core/secrets/SettingsStore.js.map +1 -0
- package/dist/core/secrets/SqliteEncryptedStore.d.ts +90 -0
- package/dist/core/secrets/SqliteEncryptedStore.js +598 -0
- package/dist/core/secrets/SqliteEncryptedStore.js.map +1 -0
- package/dist/core/secrets/audit.d.ts +36 -0
- package/dist/core/secrets/audit.js +60 -0
- package/dist/core/secrets/audit.js.map +1 -0
- package/dist/core/secrets/auth-db-migration.d.ts +129 -0
- package/dist/core/secrets/auth-db-migration.js +653 -0
- package/dist/core/secrets/auth-db-migration.js.map +1 -0
- package/dist/core/secrets/bundle.d.ts +141 -0
- package/dist/core/secrets/bundle.js +435 -0
- package/dist/core/secrets/bundle.js.map +1 -0
- package/dist/core/secrets/dual-write.d.ts +81 -0
- package/dist/core/secrets/dual-write.js +247 -0
- package/dist/core/secrets/dual-write.js.map +1 -0
- package/dist/core/secrets/encryption.d.ts +44 -0
- package/dist/core/secrets/encryption.js +97 -0
- package/dist/core/secrets/encryption.js.map +1 -0
- package/dist/core/secrets/index.d.ts +49 -0
- package/dist/core/secrets/index.js +74 -0
- package/dist/core/secrets/index.js.map +1 -0
- package/dist/core/secrets/master-key.d.ts +38 -0
- package/dist/core/secrets/master-key.js +122 -0
- package/dist/core/secrets/master-key.js.map +1 -0
- package/dist/core/secrets/probes/anthropic.d.ts +98 -0
- package/dist/core/secrets/probes/anthropic.js +300 -0
- package/dist/core/secrets/probes/anthropic.js.map +1 -0
- package/dist/core/secrets/probes/brave.d.ts +9 -0
- package/dist/core/secrets/probes/brave.js +15 -0
- package/dist/core/secrets/probes/brave.js.map +1 -0
- package/dist/core/secrets/probes/r2.d.ts +15 -0
- package/dist/core/secrets/probes/r2.js +14 -0
- package/dist/core/secrets/probes/r2.js.map +1 -0
- package/dist/core/secrets/probes/tavily.d.ts +18 -0
- package/dist/core/secrets/probes/tavily.js +58 -0
- package/dist/core/secrets/probes/tavily.js.map +1 -0
- package/dist/core/secrets/probes/voyage.d.ts +13 -0
- package/dist/core/secrets/probes/voyage.js +52 -0
- package/dist/core/secrets/probes/voyage.js.map +1 -0
- package/dist/core/secrets/r2-structural-migration.d.ts +39 -0
- package/dist/core/secrets/r2-structural-migration.js +109 -0
- package/dist/core/secrets/r2-structural-migration.js.map +1 -0
- package/dist/core/secrets/read-flip.d.ts +59 -0
- package/dist/core/secrets/read-flip.js +87 -0
- package/dist/core/secrets/read-flip.js.map +1 -0
- package/dist/core/secrets/registry.d.ts +237 -0
- package/dist/core/secrets/registry.js +710 -0
- package/dist/core/secrets/registry.js.map +1 -0
- package/dist/core/seed-folder.d.ts +59 -0
- package/dist/core/seed-folder.js +76 -0
- package/dist/core/seed-folder.js.map +1 -0
- package/dist/core/types.d.ts +88 -480
- package/dist/core/types.js +53 -6
- package/dist/core/types.js.map +1 -1
- package/dist/core/user-config.d.ts +81 -14
- package/dist/core/user-config.js +147 -17
- package/dist/core/user-config.js.map +1 -1
- package/dist/core/validation.d.ts +828 -1472
- package/dist/core/validation.js +475 -163
- package/dist/core/validation.js.map +1 -1
- package/dist/core/view-scope.d.ts +88 -0
- package/dist/core/view-scope.js +71 -0
- package/dist/core/view-scope.js.map +1 -0
- package/dist/core/workspace-manager.d.ts +156 -11
- package/dist/core/workspace-manager.js +364 -92
- package/dist/core/workspace-manager.js.map +1 -1
- package/dist/core/workspace.d.ts +19 -5
- package/dist/core/workspace.js +72 -56
- package/dist/core/workspace.js.map +1 -1
- package/dist/mcp/comment-virtual-entity.d.ts +36 -0
- package/dist/mcp/comment-virtual-entity.js +71 -0
- package/dist/mcp/comment-virtual-entity.js.map +1 -0
- package/dist/mcp/connector-manager.d.ts +72 -2
- package/dist/mcp/connector-manager.js +211 -32
- package/dist/mcp/connector-manager.js.map +1 -1
- package/dist/mcp/oauth-provider.d.ts +0 -5
- package/dist/mcp/oauth-provider.js +31 -25
- package/dist/mcp/oauth-provider.js.map +1 -1
- package/dist/mcp/oauth-registry.d.ts +46 -8
- package/dist/mcp/oauth-registry.js +52 -13
- package/dist/mcp/oauth-registry.js.map +1 -1
- package/dist/mcp/server-discovery.d.ts +73 -0
- package/dist/mcp/server-discovery.js +164 -0
- package/dist/mcp/server-discovery.js.map +1 -0
- package/dist/mcp/server.d.ts +24 -3
- package/dist/mcp/server.js +53 -10
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/state-signer.d.ts +62 -0
- package/dist/mcp/state-signer.js +205 -0
- package/dist/mcp/state-signer.js.map +1 -0
- package/dist/mcp/stdio-proxy.d.ts +67 -0
- package/dist/mcp/stdio-proxy.js +149 -0
- package/dist/mcp/stdio-proxy.js.map +1 -0
- package/dist/mcp/tools.d.ts +73 -2
- package/dist/mcp/tools.js +2289 -115
- package/dist/mcp/tools.js.map +1 -1
- package/dist/server/__tests__/helpers/graph-api.d.ts +17 -0
- package/dist/server/__tests__/helpers/graph-api.js +17 -0
- package/dist/server/__tests__/helpers/graph-api.js.map +1 -0
- package/dist/server/__tests__/helpers/multipart.d.ts +9 -0
- package/dist/server/__tests__/helpers/multipart.js +14 -0
- package/dist/server/__tests__/helpers/multipart.js.map +1 -0
- package/dist/server/artifact-asset-mint.d.ts +59 -0
- package/dist/server/artifact-asset-mint.js +127 -0
- package/dist/server/artifact-asset-mint.js.map +1 -0
- package/dist/server/asset-index-queue.d.ts +98 -0
- package/dist/server/asset-index-queue.js +193 -0
- package/dist/server/asset-index-queue.js.map +1 -0
- package/dist/server/body-write-coordinator.d.ts +161 -0
- package/dist/server/body-write-coordinator.js +182 -0
- package/dist/server/body-write-coordinator.js.map +1 -0
- package/dist/server/cloud-billing-flow.d.ts +32 -0
- package/dist/server/cloud-billing-flow.js +75 -0
- package/dist/server/cloud-billing-flow.js.map +1 -0
- package/dist/server/commit-audit.d.ts +26 -0
- package/dist/server/commit-audit.js +30 -0
- package/dist/server/commit-audit.js.map +1 -0
- package/dist/server/index.d.ts +50 -1
- package/dist/server/index.js +811 -229
- package/dist/server/index.js.map +1 -1
- package/dist/server/middleware/sanitize.d.ts +46 -0
- package/dist/server/middleware/sanitize.js +195 -0
- package/dist/server/middleware/sanitize.js.map +1 -0
- package/dist/server/process-guards.d.ts +37 -0
- package/dist/server/process-guards.js +44 -0
- package/dist/server/process-guards.js.map +1 -0
- package/dist/server/routes/ai-usage-api.d.ts +24 -0
- package/dist/server/routes/ai-usage-api.js +68 -0
- package/dist/server/routes/ai-usage-api.js.map +1 -0
- package/dist/server/routes/artifact-export-api.d.ts +11 -0
- package/dist/server/routes/artifact-export-api.js +180 -0
- package/dist/server/routes/artifact-export-api.js.map +1 -0
- package/dist/server/routes/artifact-patch-api.d.ts +19 -0
- package/dist/server/routes/artifact-patch-api.js +114 -0
- package/dist/server/routes/artifact-patch-api.js.map +1 -0
- package/dist/server/routes/artifact-selection-api.d.ts +15 -0
- package/dist/server/routes/artifact-selection-api.js +90 -0
- package/dist/server/routes/artifact-selection-api.js.map +1 -0
- package/dist/server/routes/asset-api.d.ts +88 -2
- package/dist/server/routes/asset-api.js +858 -112
- package/dist/server/routes/asset-api.js.map +1 -1
- package/dist/server/routes/audit-api.d.ts +24 -0
- package/dist/server/routes/audit-api.js +113 -0
- package/dist/server/routes/audit-api.js.map +1 -0
- package/dist/server/routes/auth-api.js +536 -44
- package/dist/server/routes/auth-api.js.map +1 -1
- package/dist/server/routes/capture-api.js +81 -9
- package/dist/server/routes/capture-api.js.map +1 -1
- package/dist/server/routes/chat-sessions-api.d.ts +13 -0
- package/dist/server/routes/chat-sessions-api.js +462 -0
- package/dist/server/routes/chat-sessions-api.js.map +1 -0
- package/dist/server/routes/chat.d.ts +35 -1
- package/dist/server/routes/chat.js +858 -68
- package/dist/server/routes/chat.js.map +1 -1
- package/dist/server/routes/comments-api.d.ts +15 -0
- package/dist/server/routes/comments-api.js +444 -0
- package/dist/server/routes/comments-api.js.map +1 -0
- package/dist/server/routes/config-api.d.ts +3 -2
- package/dist/server/routes/config-api.js +183 -57
- package/dist/server/routes/config-api.js.map +1 -1
- package/dist/server/routes/connectors-api.js +178 -45
- package/dist/server/routes/connectors-api.js.map +1 -1
- package/dist/server/routes/event-ingest-api.d.ts +15 -0
- package/dist/server/routes/event-ingest-api.js +125 -0
- package/dist/server/routes/event-ingest-api.js.map +1 -0
- package/dist/server/routes/field-library-api.d.ts +28 -0
- package/dist/server/routes/field-library-api.js +126 -0
- package/dist/server/routes/field-library-api.js.map +1 -0
- package/dist/server/routes/git-http.d.ts +3 -3
- package/dist/server/routes/git-http.js +90 -30
- package/dist/server/routes/git-http.js.map +1 -1
- package/dist/server/routes/graph-api-access.d.ts +63 -0
- package/dist/server/routes/graph-api-access.js +115 -0
- package/dist/server/routes/graph-api-access.js.map +1 -0
- package/dist/server/routes/graph-api.d.ts +2 -3
- package/dist/server/routes/graph-api.js +1341 -423
- package/dist/server/routes/graph-api.js.map +1 -1
- package/dist/server/routes/health.d.ts +18 -0
- package/dist/server/routes/health.js +116 -0
- package/dist/server/routes/health.js.map +1 -0
- package/dist/server/routes/import-batch.d.ts +24 -0
- package/dist/server/routes/import-batch.js +33 -0
- package/dist/server/routes/import-batch.js.map +1 -0
- package/dist/server/routes/insights-api.d.ts +9 -2
- package/dist/server/routes/insights-api.js +352 -66
- package/dist/server/routes/insights-api.js.map +1 -1
- package/dist/server/routes/mcp.d.ts +8 -3
- package/dist/server/routes/mcp.js +24 -8
- package/dist/server/routes/mcp.js.map +1 -1
- package/dist/server/routes/oauth-api.d.ts +67 -0
- package/dist/server/routes/oauth-api.js +421 -0
- package/dist/server/routes/oauth-api.js.map +1 -0
- package/dist/server/routes/permissions-api.d.ts +8 -3
- package/dist/server/routes/permissions-api.js +43 -12
- package/dist/server/routes/permissions-api.js.map +1 -1
- package/dist/server/routes/r2-api.d.ts +25 -0
- package/dist/server/routes/r2-api.js +273 -0
- package/dist/server/routes/r2-api.js.map +1 -0
- package/dist/server/routes/secrets-api.d.ts +36 -0
- package/dist/server/routes/secrets-api.js +305 -0
- package/dist/server/routes/secrets-api.js.map +1 -0
- package/dist/server/routes/settings-api.d.ts +29 -0
- package/dist/server/routes/settings-api.js +177 -0
- package/dist/server/routes/settings-api.js.map +1 -0
- package/dist/server/routes/share-api.d.ts +30 -6
- package/dist/server/routes/share-api.js +240 -31
- package/dist/server/routes/share-api.js.map +1 -1
- package/dist/server/routes/views-api.d.ts +11 -2
- package/dist/server/routes/views-api.js +123 -22
- package/dist/server/routes/views-api.js.map +1 -1
- package/dist/server/routes/workspace-api.d.ts +2 -1
- package/dist/server/routes/workspace-api.js +150 -23
- package/dist/server/routes/workspace-api.js.map +1 -1
- package/dist/server/routes/ws.d.ts +2 -1
- package/dist/server/routes/ws.js +73 -20
- package/dist/server/routes/ws.js.map +1 -1
- package/dist/server/session-manager.d.ts +48 -5
- package/dist/server/session-manager.js +182 -14
- package/dist/server/session-manager.js.map +1 -1
- package/dist/server/ws-hub.d.ts +135 -56
- package/dist/server/ws-hub.js +0 -0
- package/dist/server/ws-hub.js.map +1 -1
- package/dist/server/yjs-manager.d.ts +275 -18
- package/dist/server/yjs-manager.js +819 -70
- package/dist/server/yjs-manager.js.map +1 -1
- package/dist/server/yjs-persistence.d.ts +165 -0
- package/dist/server/yjs-persistence.js +557 -0
- package/dist/server/yjs-persistence.js.map +1 -0
- package/dist/server/yjs-text-diff.d.ts +32 -0
- package/dist/server/yjs-text-diff.js +61 -0
- package/dist/server/yjs-text-diff.js.map +1 -0
- package/dist/services/access-control.d.ts +121 -0
- package/dist/services/access-control.js +194 -0
- package/dist/services/access-control.js.map +1 -0
- package/dist/services/ai-usage-ledger.d.ts +75 -0
- package/dist/services/ai-usage-ledger.js +250 -0
- package/dist/services/ai-usage-ledger.js.map +1 -0
- package/dist/services/artifact-asset-token.d.ts +69 -0
- package/dist/services/artifact-asset-token.js +94 -0
- package/dist/services/artifact-asset-token.js.map +1 -0
- package/dist/services/artifact-inspect-metadata.d.ts +21 -0
- package/dist/services/artifact-inspect-metadata.js +66 -0
- package/dist/services/artifact-inspect-metadata.js.map +1 -0
- package/dist/services/artifact-library-sources.d.ts +33 -0
- package/dist/services/artifact-library-sources.js +91 -0
- package/dist/services/artifact-library-sources.js.map +1 -0
- package/dist/services/artifact-patch-runner.d.ts +52 -0
- package/dist/services/artifact-patch-runner.js +74 -0
- package/dist/services/artifact-patch-runner.js.map +1 -0
- package/dist/services/artifact-render-export.d.ts +230 -0
- package/dist/services/artifact-render-export.js +1003 -0
- package/dist/services/artifact-render-export.js.map +1 -0
- package/dist/services/artifact-selection-store.d.ts +68 -0
- package/dist/services/artifact-selection-store.js +90 -0
- package/dist/services/artifact-selection-store.js.map +1 -0
- package/dist/services/artifact-store.d.ts +118 -0
- package/dist/services/artifact-store.js +234 -0
- package/dist/services/artifact-store.js.map +1 -0
- package/dist/services/asset-caption-service.d.ts +103 -0
- package/dist/services/asset-caption-service.js +200 -0
- package/dist/services/asset-caption-service.js.map +1 -0
- package/dist/services/asset-delete-authz.d.ts +32 -0
- package/dist/services/asset-delete-authz.js +62 -0
- package/dist/services/asset-delete-authz.js.map +1 -0
- package/dist/services/asset-delete-impact.d.ts +63 -0
- package/dist/services/asset-delete-impact.js +96 -0
- package/dist/services/asset-delete-impact.js.map +1 -0
- package/dist/services/asset-finalize-service.d.ts +58 -0
- package/dist/services/asset-finalize-service.js +216 -0
- package/dist/services/asset-finalize-service.js.map +1 -0
- package/dist/services/asset-import-service.d.ts +116 -0
- package/dist/services/asset-import-service.js +436 -0
- package/dist/services/asset-import-service.js.map +1 -0
- package/dist/services/asset-index-sweep.d.ts +95 -0
- package/dist/services/asset-index-sweep.js +271 -0
- package/dist/services/asset-index-sweep.js.map +1 -0
- package/dist/services/asset-lifecycle-check.d.ts +22 -0
- package/dist/services/asset-lifecycle-check.js +80 -0
- package/dist/services/asset-lifecycle-check.js.map +1 -0
- package/dist/services/asset-listing.d.ts +63 -0
- package/dist/services/asset-listing.js +124 -0
- package/dist/services/asset-listing.js.map +1 -0
- package/dist/services/asset-move-impact.d.ts +49 -0
- package/dist/services/asset-move-impact.js +62 -0
- package/dist/services/asset-move-impact.js.map +1 -0
- package/dist/services/asset-presign-service.d.ts +62 -0
- package/dist/services/asset-presign-service.js +126 -0
- package/dist/services/asset-presign-service.js.map +1 -0
- package/dist/services/asset-reference-index.d.ts +39 -0
- package/dist/services/asset-reference-index.js +33 -0
- package/dist/services/asset-reference-index.js.map +1 -0
- package/dist/services/asset-reference-scan.d.ts +57 -0
- package/dist/services/asset-reference-scan.js +150 -0
- package/dist/services/asset-reference-scan.js.map +1 -0
- package/dist/services/asset-sidecar-service.d.ts +28 -0
- package/dist/services/asset-sidecar-service.js +79 -0
- package/dist/services/asset-sidecar-service.js.map +1 -0
- package/dist/services/asset-upload-errors.d.ts +41 -0
- package/dist/services/asset-upload-errors.js +45 -0
- package/dist/services/asset-upload-errors.js.map +1 -0
- package/dist/services/asset-upload-service.d.ts +56 -0
- package/dist/services/asset-upload-service.js +200 -0
- package/dist/services/asset-upload-service.js.map +1 -0
- package/dist/services/asset-upload-token.d.ts +58 -0
- package/dist/services/asset-upload-token.js +75 -0
- package/dist/services/asset-upload-token.js.map +1 -0
- package/dist/services/assets/asset-index-service.d.ts +158 -0
- package/dist/services/assets/asset-index-service.js +293 -0
- package/dist/services/assets/asset-index-service.js.map +1 -0
- package/dist/services/assets/base.d.ts +119 -4
- package/dist/services/assets/base.js +148 -3
- package/dist/services/assets/base.js.map +1 -1
- package/dist/services/assets/index.d.ts +90 -0
- package/dist/services/assets/index.js +202 -0
- package/dist/services/assets/index.js.map +1 -1
- package/dist/services/assets/local.d.ts +9 -0
- package/dist/services/assets/local.js +30 -4
- package/dist/services/assets/local.js.map +1 -1
- package/dist/services/assets/r2-sync.d.ts +88 -0
- package/dist/services/assets/r2-sync.js +412 -0
- package/dist/services/assets/r2-sync.js.map +1 -0
- package/dist/services/assets/r2.d.ts +80 -0
- package/dist/services/assets/r2.js +159 -4
- package/dist/services/assets/r2.js.map +1 -1
- package/dist/services/auth-service.d.ts +278 -51
- package/dist/services/auth-service.js +995 -272
- package/dist/services/auth-service.js.map +1 -1
- package/dist/services/chat-session-service.d.ts +189 -0
- package/dist/services/chat-session-service.js +544 -0
- package/dist/services/chat-session-service.js.map +1 -0
- package/dist/services/cloud-inference-billing.d.ts +64 -0
- package/dist/services/cloud-inference-billing.js +321 -0
- package/dist/services/cloud-inference-billing.js.map +1 -0
- package/dist/services/comment-service.d.ts +97 -0
- package/dist/services/comment-service.js +341 -0
- package/dist/services/comment-service.js.map +1 -0
- package/dist/services/comment-virtual-entity.d.ts +36 -0
- package/dist/services/comment-virtual-entity.js +71 -0
- package/dist/services/comment-virtual-entity.js.map +1 -0
- package/dist/services/convert-service.d.ts +64 -0
- package/dist/services/convert-service.js +68 -0
- package/dist/services/convert-service.js.map +1 -0
- package/dist/services/csv-service.d.ts +22 -17
- package/dist/services/csv-service.js +55 -92
- package/dist/services/csv-service.js.map +1 -1
- package/dist/services/entity-mutations.d.ts +313 -0
- package/dist/services/entity-mutations.js +531 -0
- package/dist/services/entity-mutations.js.map +1 -0
- package/dist/services/event-processor.d.ts +104 -0
- package/dist/services/event-processor.js +451 -0
- package/dist/services/event-processor.js.map +1 -0
- package/dist/services/extract/docx.d.ts +1 -0
- package/dist/services/extract/docx.js +233 -0
- package/dist/services/extract/docx.js.map +1 -0
- package/dist/services/extract/index.d.ts +9 -0
- package/dist/services/extract/index.js +10 -0
- package/dist/services/extract/index.js.map +1 -0
- package/dist/services/extract/pdf.d.ts +13 -0
- package/dist/services/extract/pdf.js +69 -0
- package/dist/services/extract/pdf.js.map +1 -0
- package/dist/services/folder-creation.d.ts +33 -0
- package/dist/services/folder-creation.js +103 -0
- package/dist/services/folder-creation.js.map +1 -0
- package/dist/services/fonts/font-metadata.d.ts +42 -0
- package/dist/services/fonts/font-metadata.js +126 -0
- package/dist/services/fonts/font-metadata.js.map +1 -0
- package/dist/services/fonts/font-skill-service.d.ts +66 -0
- package/dist/services/fonts/font-skill-service.js +137 -0
- package/dist/services/fonts/font-skill-service.js.map +1 -0
- package/dist/services/git.d.ts +58 -0
- package/dist/services/git.js +194 -55
- package/dist/services/git.js.map +1 -1
- package/dist/services/graph-maintenance.js +4 -4
- package/dist/services/graph-maintenance.js.map +1 -1
- package/dist/services/import-service.d.ts +51 -2
- package/dist/services/import-service.js +254 -107
- package/dist/services/import-service.js.map +1 -1
- package/dist/services/lint-service.js +10 -17
- package/dist/services/lint-service.js.map +1 -1
- package/dist/services/markdown.d.ts +12 -1
- package/dist/services/markdown.js +77 -9
- package/dist/services/markdown.js.map +1 -1
- package/dist/services/mention-detector.d.ts +23 -0
- package/dist/services/mention-detector.js +47 -0
- package/dist/services/mention-detector.js.map +1 -0
- package/dist/services/model-capabilities.d.ts +41 -0
- package/dist/services/model-capabilities.js +107 -0
- package/dist/services/model-capabilities.js.map +1 -0
- package/dist/services/notification-broadcast.d.ts +32 -0
- package/dist/services/notification-broadcast.js +38 -0
- package/dist/services/notification-broadcast.js.map +1 -0
- package/dist/services/notification-service.d.ts +41 -0
- package/dist/services/notification-service.js +100 -0
- package/dist/services/notification-service.js.map +1 -0
- package/dist/services/oauth-server-store.d.ts +147 -0
- package/dist/services/oauth-server-store.js +319 -0
- package/dist/services/oauth-server-store.js.map +1 -0
- package/dist/services/orphan-service.js +2 -2
- package/dist/services/orphan-service.js.map +1 -1
- package/dist/services/personal-folder.d.ts +49 -0
- package/dist/services/personal-folder.js +122 -0
- package/dist/services/personal-folder.js.map +1 -0
- package/dist/services/playwright-bootstrap.d.ts +78 -0
- package/dist/services/playwright-bootstrap.js +219 -0
- package/dist/services/playwright-bootstrap.js.map +1 -0
- package/dist/services/scratch-asset-promote.d.ts +57 -0
- package/dist/services/scratch-asset-promote.js +95 -0
- package/dist/services/scratch-asset-promote.js.map +1 -0
- package/dist/services/scratch-attachment-service.d.ts +201 -0
- package/dist/services/scratch-attachment-service.js +354 -0
- package/dist/services/scratch-attachment-service.js.map +1 -0
- package/dist/services/share-link-service.d.ts +57 -0
- package/dist/services/share-link-service.js +142 -0
- package/dist/services/share-link-service.js.map +1 -0
- package/dist/services/user-person-bridge.d.ts +136 -0
- package/dist/services/user-person-bridge.js +341 -0
- package/dist/services/user-person-bridge.js.map +1 -0
- package/dist/services/utility-model-resolver.d.ts +37 -0
- package/dist/services/utility-model-resolver.js +67 -0
- package/dist/services/utility-model-resolver.js.map +1 -0
- package/dist/services/vector-service.d.ts +282 -5
- package/dist/services/vector-service.js +594 -39
- package/dist/services/vector-service.js.map +1 -1
- package/dist/services/workspace-access.d.ts +115 -0
- package/dist/services/workspace-access.js +154 -0
- package/dist/services/workspace-access.js.map +1 -0
- package/dist/services/workspace-assets-folder.d.ts +46 -0
- package/dist/services/workspace-assets-folder.js +75 -0
- package/dist/services/workspace-assets-folder.js.map +1 -0
- package/dist/utils/git.d.ts +17 -2
- package/dist/utils/git.js +23 -7
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/log.d.ts +42 -0
- package/dist/utils/log.js +137 -0
- package/dist/utils/log.js.map +1 -0
- package/dist/utils/preflight.js +2 -2
- package/dist/utils/preflight.js.map +1 -1
- package/dist/utils/version-checker.d.ts +12 -19
- package/dist/utils/version-checker.js +14 -104
- package/dist/utils/version-checker.js.map +1 -1
- package/dist/web/_app/immutable/assets/0.B8rPC4xg.css +2 -0
- package/dist/web/_app/immutable/assets/12.DlIf1mKh.css +1 -0
- package/dist/web/_app/immutable/assets/13.WUaKJbVc.css +1 -0
- package/dist/web/_app/immutable/assets/15.CItnu3nw.css +1 -0
- package/dist/web/_app/immutable/assets/16.C3czeWWx.css +1 -0
- package/dist/web/_app/immutable/assets/17.CHiwoAMO.css +1 -0
- package/dist/web/_app/immutable/assets/18.fUGuXQ0K.css +1 -0
- package/dist/web/_app/immutable/assets/19.DcuK5ZVm.css +1 -0
- package/dist/web/_app/immutable/assets/2.bJqlVFXX.css +1 -0
- package/dist/web/_app/immutable/assets/3.DDfEAhbB.css +1 -0
- package/dist/web/_app/immutable/assets/4.Dtodt1Fe.css +1 -0
- package/dist/web/_app/immutable/assets/6.JPVpkzLZ.css +1 -0
- package/dist/web/_app/immutable/assets/AssetLibraryPicker.BWH260L8.css +1 -0
- package/dist/web/_app/immutable/assets/BulkActionsBar.CXSM7tO7.css +1 -0
- package/dist/web/_app/immutable/assets/CalendarView.Cch9MMQW.css +1 -0
- package/dist/web/_app/immutable/assets/CodeMirrorEditor.D6hf2pNJ.css +1 -0
- package/dist/web/_app/immutable/assets/CopyField.DVGZtw4U.css +1 -0
- package/dist/web/_app/immutable/assets/FolderMembersPanel.BvV1lBCg.css +1 -0
- package/dist/web/_app/immutable/assets/FolderMutationDialogs.De2NQ55E.css +1 -0
- package/dist/web/_app/immutable/assets/FolderPicker.Cq1tMnu_.css +1 -0
- package/dist/web/_app/immutable/assets/FolderTreeField.DTSzn15s.css +1 -0
- package/dist/web/_app/immutable/assets/FrameCanvas.Clh5Xdr7.css +1 -0
- package/dist/web/_app/immutable/assets/GalleryView.Cqu3-wtr.css +1 -0
- package/dist/web/_app/immutable/assets/GraphView.BJtGL9py.css +1 -0
- package/dist/web/_app/immutable/assets/GridCell.czY6eDb_.css +1 -0
- package/dist/web/_app/immutable/assets/KanbanView.C5X8TbQk.css +1 -0
- package/dist/web/_app/immutable/assets/Link.vV0ne105.css +1 -0
- package/dist/web/_app/immutable/assets/Markdown.CSYKSAm0.css +1 -0
- package/dist/web/_app/immutable/assets/Rail.Dyxy_E0O.css +1 -0
- package/dist/web/_app/immutable/assets/RepoCheckList.BLeJ79Eg.css +1 -0
- package/dist/web/_app/immutable/assets/SaveViewDialog.Bb9E81xd.css +1 -0
- package/dist/web/_app/immutable/assets/SearchInput.DTB6W35f.css +1 -0
- package/dist/web/_app/immutable/assets/SettingsDialog.CHzfQoo_.css +1 -0
- package/dist/web/_app/immutable/assets/Spinner.UBfl0pab.css +1 -0
- package/dist/web/_app/immutable/assets/StopFilledAlt.CjuwgVxu.css +1 -0
- package/dist/web/_app/immutable/assets/TimelineView.u4YqiztR.css +1 -0
- package/dist/web/_app/immutable/assets/Version.BQq1Fihu.css +1 -0
- package/dist/web/_app/immutable/assets/ViewBanner.DWswnFdi.css +1 -0
- package/dist/web/_app/immutable/assets/WorkspaceView.Cd6TS6oo.css +1 -0
- package/dist/web/_app/immutable/assets/button.DOg1smbV.css +1 -0
- package/dist/web/_app/immutable/assets/checkbox.CAcHq8G6.css +1 -0
- package/dist/web/_app/immutable/assets/download-with-progress.BZlFTn09.css +1 -0
- package/dist/web/_app/immutable/assets/filters.RgfXKVpA.css +1 -0
- package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2 +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2 +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-italic.CZTNEAuW.woff2 +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-italic.CsGl1sm0.woff +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-normal.CDDApCn2.woff2 +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-normal.CYLoc0-x.woff +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-italic.BNK2_mGO.woff2 +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-italic.DpEwFAQM.woff +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-normal.6ng42L7E.woff2 +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-normal.BgVn5rGT.woff +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-600-normal.Cu4Hd6ag.woff +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-600-normal.CuJfVYMP.woff2 +0 -0
- package/dist/web/_app/immutable/assets/list-columns.BgnafZ4K.css +1 -0
- package/dist/web/_app/immutable/chunks/-MYqXlc3.js +185 -0
- package/dist/web/_app/immutable/chunks/-Tbr-96c2.js +1 -0
- package/dist/web/_app/immutable/chunks/1QRy7-wo.js +1 -0
- package/dist/web/_app/immutable/chunks/1_BWKAKA2.js +23 -0
- package/dist/web/_app/immutable/chunks/2z2ekE6D2.js +2 -0
- package/dist/web/_app/immutable/chunks/6guf_P8c.js +1 -0
- package/dist/web/_app/immutable/chunks/7l950wkn.js +1 -0
- package/dist/web/_app/immutable/chunks/9Sn2PwSn2.js +1025 -0
- package/dist/web/_app/immutable/chunks/AFZSy-Vk.js +2 -0
- package/dist/web/_app/immutable/chunks/B06uE1qJ.js +1 -0
- package/dist/web/_app/immutable/chunks/B2cjR0rG.js +83 -0
- package/dist/web/_app/immutable/chunks/B3u4QMoU.js +1 -0
- package/dist/web/_app/immutable/chunks/B4PrlkmE.js +1 -0
- package/dist/web/_app/immutable/chunks/B5UH1FNe.js +3 -0
- package/dist/web/_app/immutable/chunks/B5sxjq1L2.js +1 -0
- package/dist/web/_app/immutable/chunks/B6Lt-qaJ.js +1 -0
- package/dist/web/_app/immutable/chunks/B6wo7Stk2.js +1 -0
- package/dist/web/_app/immutable/chunks/B9KfEsQw2.js +1 -0
- package/dist/web/_app/immutable/chunks/B9MY422N.js +1 -0
- package/dist/web/_app/immutable/chunks/B9VQbssY.js +3 -0
- package/dist/web/_app/immutable/chunks/BBrP9GiZ.js +1 -0
- package/dist/web/_app/immutable/chunks/BEGTD2EL2.js +1 -0
- package/dist/web/_app/immutable/chunks/BEyPhM3C.js +1 -0
- package/dist/web/_app/immutable/chunks/BIeOkmiV.js +1 -0
- package/dist/web/_app/immutable/chunks/BIwe25Lk.js +1 -0
- package/dist/web/_app/immutable/chunks/BO6-nRV9.js +1 -0
- package/dist/web/_app/immutable/chunks/BPILs-6H.js +1 -0
- package/dist/web/_app/immutable/chunks/BPRQzMGs.js +1 -0
- package/dist/web/_app/immutable/chunks/BQE7bWgF.js +1 -0
- package/dist/web/_app/immutable/chunks/BU5TCj7m.js +12 -0
- package/dist/web/_app/immutable/chunks/BZDKT2Qw2.js +2 -0
- package/dist/web/_app/immutable/chunks/B_y9A6Kg.js +4 -0
- package/dist/web/_app/immutable/chunks/BdR7t2GN.js +3 -0
- package/dist/web/_app/immutable/chunks/BnYohOts2.js +1 -0
- package/dist/web/_app/immutable/chunks/Bpmx7Umc.js +1 -0
- package/dist/web/_app/immutable/chunks/BqButnP4.js +1 -0
- package/dist/web/_app/immutable/chunks/BtDSRU36.js +1 -0
- package/dist/web/_app/immutable/chunks/Bvr6nSm92.js +1 -0
- package/dist/web/_app/immutable/chunks/BvyVm7-j.js +184 -0
- package/dist/web/_app/immutable/chunks/Bx6T8G5n2.js +1 -0
- package/dist/web/_app/immutable/chunks/BxeOdaUQ.js +1 -0
- package/dist/web/_app/immutable/chunks/C1B4xDs0.js +1 -0
- package/dist/web/_app/immutable/chunks/C2yz630b.js +2 -0
- package/dist/web/_app/immutable/chunks/C5YoDj-e.js +1 -0
- package/dist/web/_app/immutable/chunks/C6d9nn3k.js +1 -0
- package/dist/web/_app/immutable/chunks/C85NG5lS.js +1 -0
- package/dist/web/_app/immutable/chunks/C8ZiSqQm.js +1 -0
- package/dist/web/_app/immutable/chunks/CB-t1Bv-.js +1 -0
- package/dist/web/_app/immutable/chunks/CG8YKaqc.js +5 -0
- package/dist/web/_app/immutable/chunks/CJbr-v9X.js +1 -0
- package/dist/web/_app/immutable/chunks/CKGHeJzq.js +1 -0
- package/dist/web/_app/immutable/chunks/CKwV6HKc.js +1 -0
- package/dist/web/_app/immutable/chunks/CLninaDG2.js +2 -0
- package/dist/web/_app/immutable/chunks/CM400nLL.js +7 -0
- package/dist/web/_app/immutable/chunks/CPvxN2G62.js +1 -0
- package/dist/web/_app/immutable/chunks/CQW66fYJ.js +1 -0
- package/dist/web/_app/immutable/chunks/CQl_RUVN2.js +1 -0
- package/dist/web/_app/immutable/chunks/CR1JY_cb.js +6 -0
- package/dist/web/_app/immutable/chunks/CT35tdLp.js +1 -0
- package/dist/web/_app/immutable/chunks/CVKrGJ6C.js +1 -0
- package/dist/web/_app/immutable/chunks/CWIHttTH.js +1 -0
- package/dist/web/_app/immutable/chunks/CWZSexLW.js +1 -0
- package/dist/web/_app/immutable/chunks/CXPMb3zd.js +1 -0
- package/dist/web/_app/immutable/chunks/CZBW5wi82.js +1 -0
- package/dist/web/_app/immutable/chunks/CaimSvvF.js +5 -0
- package/dist/web/_app/immutable/chunks/CcWaWbrI2.js +1 -0
- package/dist/web/_app/immutable/chunks/CcgYvk_3.js +1 -0
- package/dist/web/_app/immutable/chunks/Cg7m1gqN.js +1 -0
- package/dist/web/_app/immutable/chunks/CgCz4Fj6.js +1 -0
- package/dist/web/_app/immutable/chunks/CgOgBK5j.js +1 -0
- package/dist/web/_app/immutable/chunks/ChS3kWO-.js +2 -0
- package/dist/web/_app/immutable/chunks/CkivrILi.js +1 -0
- package/dist/web/_app/immutable/chunks/CmWflMFc.js +1 -0
- package/dist/web/_app/immutable/chunks/Cm_yhEon2.js +1 -0
- package/dist/web/_app/immutable/chunks/CnoUnj6-2.js +1 -0
- package/dist/web/_app/immutable/chunks/CqyFdLMa.js +1 -0
- package/dist/web/_app/immutable/chunks/CsIWxmio2.js +22 -0
- package/dist/web/_app/immutable/chunks/CtgdtZ0G2.js +1 -0
- package/dist/web/_app/immutable/chunks/CuYL65Bn.js +2 -0
- package/dist/web/_app/immutable/chunks/CuatNdzp.js +2 -0
- package/dist/web/_app/immutable/chunks/Cx5IiiDO2.js +2 -0
- package/dist/web/_app/immutable/chunks/Cxdio_Al.js +2692 -0
- package/dist/web/_app/immutable/chunks/CyTgggiM2.js +1 -0
- package/dist/web/_app/immutable/chunks/D-vvXTU3.js +2 -0
- package/dist/web/_app/immutable/chunks/D0_Iu3Uj.js +2 -0
- package/dist/web/_app/immutable/chunks/D4vfNy_f.js +1 -0
- package/dist/web/_app/immutable/chunks/D6toh9Mr.js +1 -0
- package/dist/web/_app/immutable/chunks/DAsarOLg2.js +1 -0
- package/dist/web/_app/immutable/chunks/DBGaXAP8.js +1 -0
- package/dist/web/_app/immutable/chunks/DCgKWtld.js +1 -0
- package/dist/web/_app/immutable/chunks/DG7uGoZb2.js +58 -0
- package/dist/web/_app/immutable/chunks/DIsSxB_C.js +1 -0
- package/dist/web/_app/immutable/chunks/DJTvBXur.js +2 -0
- package/dist/web/_app/immutable/chunks/DLuIHCPq.js +1 -0
- package/dist/web/_app/immutable/chunks/DMFH9Cnt2.js +1 -0
- package/dist/web/_app/immutable/chunks/DNLoQniz.js +1 -0
- package/dist/web/_app/immutable/chunks/DPLkAijI2.js +1 -0
- package/dist/web/_app/immutable/chunks/DQMWa2t7.js +1 -0
- package/dist/web/_app/immutable/chunks/DTOO9nUj.js +1 -0
- package/dist/web/_app/immutable/chunks/DaB0hU8_.js +1 -0
- package/dist/web/_app/immutable/chunks/Dav8Lgyy2.js +5 -0
- package/dist/web/_app/immutable/chunks/Ddgu2Sjp.js +1 -0
- package/dist/web/_app/immutable/chunks/DfUXQOZ92.js +1 -0
- package/dist/web/_app/immutable/chunks/DgP0Pxes.js +224 -0
- package/dist/web/_app/immutable/chunks/DhD1HF7R.js +1 -0
- package/dist/web/_app/immutable/chunks/Dhmw5GUH.js +1 -0
- package/dist/web/_app/immutable/chunks/DiBVOY752.js +1 -0
- package/dist/web/_app/immutable/chunks/DiMsLIh3.js +1 -0
- package/dist/web/_app/immutable/chunks/DiiXREv7.js +1 -0
- package/dist/web/_app/immutable/chunks/DjXtgWTP.js +1 -0
- package/dist/web/_app/immutable/chunks/Dk2-JtmU2.js +1 -0
- package/dist/web/_app/immutable/chunks/Dl0bYyV_.js +1 -0
- package/dist/web/_app/immutable/chunks/DqKYbIld2.js +1 -0
- package/dist/web/_app/immutable/chunks/DtXJCaQc2.js +1 -0
- package/dist/web/_app/immutable/chunks/DwuBUEvU.js +1 -0
- package/dist/web/_app/immutable/chunks/F5xZdLlB.js +2 -0
- package/dist/web/_app/immutable/chunks/F92HmKX8.js +1 -0
- package/dist/web/_app/immutable/chunks/FISIvbqq.js +3 -0
- package/dist/web/_app/immutable/chunks/GC5Izn9E2.js +1 -0
- package/dist/web/_app/immutable/chunks/IMJutqSu2.js +1 -0
- package/dist/web/_app/immutable/chunks/K5YHt1WL2.js +1 -0
- package/dist/web/_app/immutable/chunks/MAYbL-xn2.js +6 -0
- package/dist/web/_app/immutable/chunks/MMtHlrry.js +1 -0
- package/dist/web/_app/immutable/chunks/MtN4vJa02.js +1 -0
- package/dist/web/_app/immutable/chunks/Oglnp7sm.js +14 -0
- package/dist/web/_app/immutable/chunks/PwUOTfSv.js +2 -0
- package/dist/web/_app/immutable/chunks/QsO256-z.js +1 -0
- package/dist/web/_app/immutable/chunks/RA-JwTzo.js +1 -0
- package/dist/web/_app/immutable/chunks/atFSAfcd2.js +2 -0
- package/dist/web/_app/immutable/chunks/j_uHTBnD.js +1 -0
- package/dist/web/_app/immutable/chunks/joKsoiFC.js +1 -0
- package/dist/web/_app/immutable/chunks/kNaey6uv.js +1 -0
- package/dist/web/_app/immutable/chunks/nqo2e2Yv.js +1 -0
- package/dist/web/_app/immutable/chunks/oIZupUnz.js +1 -0
- package/dist/web/_app/immutable/chunks/pPsy4008.js +1 -0
- package/dist/web/_app/immutable/chunks/qevfNcid.js +1 -0
- package/dist/web/_app/immutable/chunks/rjjyuGhb.js +1 -0
- package/dist/web/_app/immutable/chunks/sUAtda6y2.js +2 -0
- package/dist/web/_app/immutable/chunks/snCOoD78.js +1 -0
- package/dist/web/_app/immutable/chunks/uHaS74te.js +1 -0
- package/dist/web/_app/immutable/chunks/w5tsuIav.js +5 -0
- package/dist/web/_app/immutable/chunks/xihTtKlq.js +1 -0
- package/dist/web/_app/immutable/entry/app.1tcNTKI-.js +2 -0
- package/dist/web/_app/immutable/entry/start.BJMsySI1.js +1 -0
- package/dist/web/_app/immutable/nodes/0.v0W5DL7W.js +2 -0
- package/dist/web/_app/immutable/nodes/1.81Rb3Ith.js +1 -0
- package/dist/web/_app/immutable/nodes/10.CAlZNFOq.js +1 -0
- package/dist/web/_app/immutable/nodes/11.CCfUginI.js +1 -0
- package/dist/web/_app/immutable/nodes/12.BJLboAyk.js +1 -0
- package/dist/web/_app/immutable/nodes/13.Cz4UTl2G.js +1 -0
- package/dist/web/_app/immutable/nodes/14.DJwakC0o.js +1 -0
- package/dist/web/_app/immutable/nodes/15.D2mNE6C-.js +1 -0
- package/dist/web/_app/immutable/nodes/16.BjohAUt9.js +1 -0
- package/dist/web/_app/immutable/nodes/17.BI2F37bS.js +1 -0
- package/dist/web/_app/immutable/nodes/18.DsOT0tDo.js +1 -0
- package/dist/web/_app/immutable/nodes/19.BiJWLOUT.js +77 -0
- package/dist/web/_app/immutable/nodes/2.Cd72nG2V.js +124 -0
- package/dist/web/_app/immutable/nodes/3.BIT9mm9r.js +6 -0
- package/dist/web/_app/immutable/nodes/4.Cn7r0Poe.js +16 -0
- package/dist/web/_app/immutable/nodes/5.CkJNdCZG.js +1 -0
- package/dist/web/_app/immutable/nodes/6.1rbIRQgQ.js +6 -0
- package/dist/web/_app/immutable/nodes/7.w17Zl36i.js +1 -0
- package/dist/web/_app/immutable/nodes/8.DqTsYuU-.js +1 -0
- package/dist/web/_app/immutable/nodes/9.BJhYZPfc.js +1 -0
- package/dist/web/_app/version.json +1 -1
- package/dist/web/favicon-16.png +0 -0
- package/dist/web/favicon-180.png +0 -0
- package/dist/web/favicon-32.png +0 -0
- package/dist/web/favicon-48.png +0 -0
- package/dist/web/favicon-512.png +0 -0
- package/dist/web/favicon.ico +0 -0
- package/dist/web/favicon.svg +8 -0
- package/dist/web/index.html +59 -20
- package/dist/web/studiograph-logomark.svg +29 -0
- package/package.json +44 -15
- package/dist/agent/role-loader.d.ts +0 -24
- package/dist/agent/role-loader.js +0 -67
- package/dist/agent/role-loader.js.map +0 -1
- package/dist/agent/skills/create-deck/content-guide.md +0 -238
- package/dist/agent/skills/create-deck/deck-cadence.md +0 -105
- package/dist/agent/skills/create-deck/diagrams.md +0 -431
- package/dist/agent/skills/create-deck/skill.md +0 -89
- package/dist/agent/skills/create-deck/slide-selection.md +0 -115
- package/dist/agent/skills/create-deck/slide-types.md +0 -638
- package/dist/agent/skills/create-document/skill.md +0 -229
- package/dist/agent/skills/enrich-entities.md +0 -136
- package/dist/agent/skills/obsidian-source-setup.md +0 -246
- package/dist/agent/skills/skill-loader.d.ts +0 -48
- package/dist/agent/skills/skill-loader.js +0 -166
- package/dist/agent/skills/skill-loader.js.map +0 -1
- package/dist/agent/skills/sync-configuration.md +0 -119
- package/dist/agent/skills/sync-setup.md +0 -82
- package/dist/agent/tools/message-tools.d.ts +0 -42
- package/dist/agent/tools/message-tools.js +0 -96
- package/dist/agent/tools/message-tools.js.map +0 -1
- package/dist/agent/tools/sync-tools.d.ts +0 -35
- package/dist/agent/tools/sync-tools.js +0 -992
- package/dist/agent/tools/sync-tools.js.map +0 -1
- package/dist/auth/github.d.ts +0 -56
- package/dist/auth/github.js +0 -169
- package/dist/auth/github.js.map +0 -1
- package/dist/cli/commands/access.d.ts +0 -11
- package/dist/cli/commands/access.js +0 -156
- package/dist/cli/commands/access.js.map +0 -1
- package/dist/cli/commands/app.d.ts +0 -7
- package/dist/cli/commands/app.js +0 -268
- package/dist/cli/commands/app.js.map +0 -1
- package/dist/cli/commands/auth.d.ts +0 -10
- package/dist/cli/commands/auth.js +0 -79
- package/dist/cli/commands/auth.js.map +0 -1
- package/dist/cli/commands/clear.d.ts +0 -5
- package/dist/cli/commands/clear.js +0 -36
- package/dist/cli/commands/clear.js.map +0 -1
- package/dist/cli/commands/collection.d.ts +0 -10
- package/dist/cli/commands/collection.js +0 -185
- package/dist/cli/commands/collection.js.map +0 -1
- package/dist/cli/commands/enrich.d.ts +0 -11
- package/dist/cli/commands/enrich.js +0 -135
- package/dist/cli/commands/enrich.js.map +0 -1
- package/dist/cli/commands/graphrag.d.ts +0 -12
- package/dist/cli/commands/graphrag.js +0 -122
- package/dist/cli/commands/graphrag.js.map +0 -1
- package/dist/cli/commands/join.d.ts +0 -9
- package/dist/cli/commands/join.js +0 -255
- package/dist/cli/commands/join.js.map +0 -1
- package/dist/cli/commands/members.d.ts +0 -11
- package/dist/cli/commands/members.js +0 -230
- package/dist/cli/commands/members.js.map +0 -1
- package/dist/cli/commands/org.d.ts +0 -10
- package/dist/cli/commands/org.js +0 -132
- package/dist/cli/commands/org.js.map +0 -1
- package/dist/cli/commands/provision.d.ts +0 -8
- package/dist/cli/commands/provision.js +0 -116
- package/dist/cli/commands/provision.js.map +0 -1
- package/dist/cli/commands/resolve.d.ts +0 -8
- package/dist/cli/commands/resolve.js +0 -85
- package/dist/cli/commands/resolve.js.map +0 -1
- package/dist/cli/commands/review.d.ts +0 -19
- package/dist/cli/commands/review.js +0 -128
- package/dist/cli/commands/review.js.map +0 -1
- package/dist/cli/commands/source.d.ts +0 -16
- package/dist/cli/commands/source.js +0 -159
- package/dist/cli/commands/source.js.map +0 -1
- package/dist/cli/commands/start.d.ts +0 -7
- package/dist/cli/commands/start.js +0 -576
- package/dist/cli/commands/start.js.map +0 -1
- package/dist/cli/commands/sync-collection.d.ts +0 -14
- package/dist/cli/commands/sync-collection.js +0 -355
- package/dist/cli/commands/sync-collection.js.map +0 -1
- package/dist/cli/commands/sync-entities.d.ts +0 -13
- package/dist/cli/commands/sync-entities.js +0 -242
- package/dist/cli/commands/sync-entities.js.map +0 -1
- package/dist/cli/commands/team.d.ts +0 -12
- package/dist/cli/commands/team.js +0 -185
- package/dist/cli/commands/team.js.map +0 -1
- package/dist/cli/commands/update.d.ts +0 -8
- package/dist/cli/commands/update.js +0 -155
- package/dist/cli/commands/update.js.map +0 -1
- package/dist/cli/commands/user.d.ts +0 -7
- package/dist/cli/commands/user.js +0 -169
- package/dist/cli/commands/user.js.map +0 -1
- package/dist/cli/scaffolding.d.ts +0 -12
- package/dist/cli/scaffolding.js +0 -397
- package/dist/cli/scaffolding.js.map +0 -1
- package/dist/cli/sync-review-interactive.d.ts +0 -31
- package/dist/cli/sync-review-interactive.js +0 -393
- package/dist/cli/sync-review-interactive.js.map +0 -1
- package/dist/core/feature-flags.d.ts +0 -17
- package/dist/core/feature-flags.js +0 -15
- package/dist/core/feature-flags.js.map +0 -1
- package/dist/core/features.d.ts +0 -16
- package/dist/core/features.js +0 -48
- package/dist/core/features.js.map +0 -1
- package/dist/core/launch-entity-types.d.ts +0 -23
- package/dist/core/launch-entity-types.js +0 -48
- package/dist/core/launch-entity-types.js.map +0 -1
- package/dist/core/migration-runner.d.ts +0 -42
- package/dist/core/migration-runner.js +0 -232
- package/dist/core/migration-runner.js.map +0 -1
- package/dist/core/migration-types.d.ts +0 -101
- package/dist/core/migration-types.js +0 -21
- package/dist/core/migration-types.js.map +0 -1
- package/dist/core/migrations/20260219-formalize-memory-location.d.ts +0 -2
- package/dist/core/migrations/20260219-formalize-memory-location.js +0 -35
- package/dist/core/migrations/20260219-formalize-memory-location.js.map +0 -1
- package/dist/core/migrations/20260220-add-workspace-metadata.d.ts +0 -12
- package/dist/core/migrations/20260220-add-workspace-metadata.js +0 -65
- package/dist/core/migrations/20260220-add-workspace-metadata.js.map +0 -1
- package/dist/core/migrations/20260220-add-workspace-readme.d.ts +0 -11
- package/dist/core/migrations/20260220-add-workspace-readme.js +0 -82
- package/dist/core/migrations/20260220-add-workspace-readme.js.map +0 -1
- package/dist/core/migrations/20260220-migrate-yaml-to-json.d.ts +0 -9
- package/dist/core/migrations/20260220-migrate-yaml-to-json.js +0 -64
- package/dist/core/migrations/20260220-migrate-yaml-to-json.js.map +0 -1
- package/dist/core/migrations/index.d.ts +0 -11
- package/dist/core/migrations/index.js +0 -23
- package/dist/core/migrations/index.js.map +0 -1
- package/dist/integrations/asana.d.ts +0 -26
- package/dist/integrations/asana.js +0 -78
- package/dist/integrations/asana.js.map +0 -1
- package/dist/integrations/figma-local.d.ts +0 -16
- package/dist/integrations/figma-local.js +0 -10
- package/dist/integrations/figma-local.js.map +0 -1
- package/dist/integrations/figma.d.ts +0 -17
- package/dist/integrations/figma.js +0 -17
- package/dist/integrations/figma.js.map +0 -1
- package/dist/integrations/granola.d.ts +0 -24
- package/dist/integrations/granola.js +0 -60
- package/dist/integrations/granola.js.map +0 -1
- package/dist/integrations/linear.d.ts +0 -14
- package/dist/integrations/linear.js +0 -80
- package/dist/integrations/linear.js.map +0 -1
- package/dist/integrations/paper-local.d.ts +0 -14
- package/dist/integrations/paper-local.js +0 -10
- package/dist/integrations/paper-local.js.map +0 -1
- package/dist/integrations/paper.d.ts +0 -2
- package/dist/integrations/paper.js +0 -10
- package/dist/integrations/paper.js.map +0 -1
- package/dist/integrations/pipedrive.d.ts +0 -26
- package/dist/integrations/pipedrive.js +0 -97
- package/dist/integrations/pipedrive.js.map +0 -1
- package/dist/integrations/registry.d.ts +0 -8
- package/dist/integrations/registry.js +0 -7
- package/dist/integrations/registry.js.map +0 -1
- package/dist/integrations/types.d.ts +0 -43
- package/dist/integrations/types.js +0 -5
- package/dist/integrations/types.js.map +0 -1
- package/dist/lib/lib/utils.d.ts +0 -2
- package/dist/lib/lib/utils.js +0 -6
- package/dist/lib/lib/utils.js.map +0 -1
- package/dist/mcp/connectors/asana.d.ts +0 -2
- package/dist/mcp/connectors/asana.js +0 -20
- package/dist/mcp/connectors/asana.js.map +0 -1
- package/dist/mcp/connectors/definitions.d.ts +0 -45
- package/dist/mcp/connectors/definitions.js +0 -32
- package/dist/mcp/connectors/definitions.js.map +0 -1
- package/dist/mcp/connectors/figma.d.ts +0 -5
- package/dist/mcp/connectors/figma.js +0 -21
- package/dist/mcp/connectors/figma.js.map +0 -1
- package/dist/mcp/connectors/gdrive.d.ts +0 -2
- package/dist/mcp/connectors/gdrive.js +0 -20
- package/dist/mcp/connectors/gdrive.js.map +0 -1
- package/dist/mcp/connectors/granola.d.ts +0 -2
- package/dist/mcp/connectors/granola.js +0 -12
- package/dist/mcp/connectors/granola.js.map +0 -1
- package/dist/mcp/connectors/linear.d.ts +0 -2
- package/dist/mcp/connectors/linear.js +0 -19
- package/dist/mcp/connectors/linear.js.map +0 -1
- package/dist/mcp/connectors/obsidian.d.ts +0 -2
- package/dist/mcp/connectors/obsidian.js +0 -19
- package/dist/mcp/connectors/obsidian.js.map +0 -1
- package/dist/mcp/connectors/pipedrive.d.ts +0 -2
- package/dist/mcp/connectors/pipedrive.js +0 -20
- package/dist/mcp/connectors/pipedrive.js.map +0 -1
- package/dist/mcp/connectors/slack.d.ts +0 -2
- package/dist/mcp/connectors/slack.js +0 -21
- package/dist/mcp/connectors/slack.js.map +0 -1
- package/dist/mcp/server-oauth-provider.d.ts +0 -56
- package/dist/mcp/server-oauth-provider.js +0 -142
- package/dist/mcp/server-oauth-provider.js.map +0 -1
- package/dist/renderers/documents/branding.d.ts +0 -2
- package/dist/renderers/documents/branding.js +0 -42
- package/dist/renderers/documents/branding.js.map +0 -1
- package/dist/renderers/documents/entity-types.json +0 -14
- package/dist/renderers/documents/parser/frontmatter.d.ts +0 -5
- package/dist/renderers/documents/parser/frontmatter.js +0 -90
- package/dist/renderers/documents/parser/frontmatter.js.map +0 -1
- package/dist/renderers/documents/parser/index.d.ts +0 -5
- package/dist/renderers/documents/parser/index.js +0 -142
- package/dist/renderers/documents/parser/index.js.map +0 -1
- package/dist/renderers/documents/parser/sections.d.ts +0 -18
- package/dist/renderers/documents/parser/sections.js +0 -131
- package/dist/renderers/documents/parser/sections.js.map +0 -1
- package/dist/renderers/documents/pdf/generator.d.ts +0 -13
- package/dist/renderers/documents/pdf/generator.js +0 -79
- package/dist/renderers/documents/pdf/generator.js.map +0 -1
- package/dist/renderers/documents/plugin.d.ts +0 -2
- package/dist/renderers/documents/plugin.js +0 -63
- package/dist/renderers/documents/plugin.js.map +0 -1
- package/dist/renderers/documents/public/branding/logo.svg +0 -3
- package/dist/renderers/documents/public/editor/chrome.css +0 -461
- package/dist/renderers/documents/public/editor/chrome.js +0 -524
- package/dist/renderers/documents/public/editor/editor.css +0 -751
- package/dist/renderers/documents/public/editor/editor.html +0 -140
- package/dist/renderers/documents/public/editor/editor.js +0 -953
- package/dist/renderers/documents/public/fonts/fonts.css +0 -145
- package/dist/renderers/documents/public/viewer/viewer.css +0 -1
- package/dist/renderers/documents/public/viewer/viewer.js +0 -4
- package/dist/renderers/documents/renderer/back.d.ts +0 -8
- package/dist/renderers/documents/renderer/back.js +0 -28
- package/dist/renderers/documents/renderer/back.js.map +0 -1
- package/dist/renderers/documents/renderer/content.d.ts +0 -7
- package/dist/renderers/documents/renderer/content.js +0 -25
- package/dist/renderers/documents/renderer/content.js.map +0 -1
- package/dist/renderers/documents/renderer/cover.d.ts +0 -15
- package/dist/renderers/documents/renderer/cover.js +0 -43
- package/dist/renderers/documents/renderer/cover.js.map +0 -1
- package/dist/renderers/documents/renderer/helpers.d.ts +0 -1
- package/dist/renderers/documents/renderer/helpers.js +0 -11
- package/dist/renderers/documents/renderer/helpers.js.map +0 -1
- package/dist/renderers/documents/renderer/index.d.ts +0 -32
- package/dist/renderers/documents/renderer/index.js +0 -80
- package/dist/renderers/documents/renderer/index.js.map +0 -1
- package/dist/renderers/documents/renderer/styles.d.ts +0 -16
- package/dist/renderers/documents/renderer/styles.js +0 -546
- package/dist/renderers/documents/renderer/styles.js.map +0 -1
- package/dist/renderers/documents/routes/api.d.ts +0 -2
- package/dist/renderers/documents/routes/api.js +0 -587
- package/dist/renderers/documents/routes/api.js.map +0 -1
- package/dist/renderers/documents/routes/editor.d.ts +0 -2
- package/dist/renderers/documents/routes/editor.js +0 -31
- package/dist/renderers/documents/routes/editor.js.map +0 -1
- package/dist/renderers/documents/routes/viewer.d.ts +0 -2
- package/dist/renderers/documents/routes/viewer.js +0 -67
- package/dist/renderers/documents/routes/viewer.js.map +0 -1
- package/dist/renderers/documents/types.d.ts +0 -61
- package/dist/renderers/documents/types.js +0 -2
- package/dist/renderers/documents/types.js.map +0 -1
- package/dist/renderers/index.d.ts +0 -24
- package/dist/renderers/index.js +0 -66
- package/dist/renderers/index.js.map +0 -1
- package/dist/renderers/slides/design-system/tokens.d.ts +0 -108
- package/dist/renderers/slides/design-system/tokens.js +0 -44
- package/dist/renderers/slides/design-system/tokens.js.map +0 -1
- package/dist/renderers/slides/entity-types.json +0 -14
- package/dist/renderers/slides/parser/comment-parser.d.ts +0 -10
- package/dist/renderers/slides/parser/comment-parser.js +0 -89
- package/dist/renderers/slides/parser/comment-parser.js.map +0 -1
- package/dist/renderers/slides/parser/frontmatter.d.ts +0 -10
- package/dist/renderers/slides/parser/frontmatter.js +0 -93
- package/dist/renderers/slides/parser/frontmatter.js.map +0 -1
- package/dist/renderers/slides/parser/index.d.ts +0 -7
- package/dist/renderers/slides/parser/index.js +0 -569
- package/dist/renderers/slides/parser/index.js.map +0 -1
- package/dist/renderers/slides/parser/slide-splitter.d.ts +0 -6
- package/dist/renderers/slides/parser/slide-splitter.js +0 -54
- package/dist/renderers/slides/parser/slide-splitter.js.map +0 -1
- package/dist/renderers/slides/parser/type-detector.d.ts +0 -6
- package/dist/renderers/slides/parser/type-detector.js +0 -70
- package/dist/renderers/slides/parser/type-detector.js.map +0 -1
- package/dist/renderers/slides/pdf/generator.d.ts +0 -11
- package/dist/renderers/slides/pdf/generator.js +0 -105
- package/dist/renderers/slides/pdf/generator.js.map +0 -1
- package/dist/renderers/slides/plugin.d.ts +0 -2
- package/dist/renderers/slides/plugin.js +0 -70
- package/dist/renderers/slides/plugin.js.map +0 -1
- package/dist/renderers/slides/public/editor/.gitkeep +0 -0
- package/dist/renderers/slides/public/editor/chrome.css +0 -461
- package/dist/renderers/slides/public/editor/chrome.js +0 -519
- package/dist/renderers/slides/public/editor/editor.css +0 -896
- package/dist/renderers/slides/public/editor/editor.html +0 -131
- package/dist/renderers/slides/public/editor/editor.js +0 -1038
- package/dist/renderers/slides/public/fonts/fonts.css +0 -145
- package/dist/renderers/slides/public/viewer/.gitkeep +0 -0
- package/dist/renderers/slides/public/viewer/chrome.css +0 -62
- package/dist/renderers/slides/public/viewer/transitions.css +0 -1
- package/dist/renderers/slides/public/viewer/viewer.css +0 -2145
- package/dist/renderers/slides/public/viewer/viewer.js +0 -303
- package/dist/renderers/slides/renderer/chrome/browser-frame.d.ts +0 -5
- package/dist/renderers/slides/renderer/chrome/browser-frame.js +0 -22
- package/dist/renderers/slides/renderer/chrome/browser-frame.js.map +0 -1
- package/dist/renderers/slides/renderer/chrome/mobile-frame.d.ts +0 -6
- package/dist/renderers/slides/renderer/chrome/mobile-frame.js +0 -18
- package/dist/renderers/slides/renderer/chrome/mobile-frame.js.map +0 -1
- package/dist/renderers/slides/renderer/helpers.d.ts +0 -13
- package/dist/renderers/slides/renderer/helpers.js +0 -33
- package/dist/renderers/slides/renderer/helpers.js.map +0 -1
- package/dist/renderers/slides/renderer/index.d.ts +0 -16
- package/dist/renderers/slides/renderer/index.js +0 -160
- package/dist/renderers/slides/renderer/index.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/agenda.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/agenda.js +0 -18
- package/dist/renderers/slides/renderer/layouts/agenda.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/blank.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/blank.js +0 -4
- package/dist/renderers/slides/renderer/layouts/blank.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/columns.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/columns.js +0 -32
- package/dist/renderers/slides/renderer/layouts/columns.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/cover.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/cover.js +0 -18
- package/dist/renderers/slides/renderer/layouts/cover.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/diagram-concentric.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/diagram-concentric.js +0 -120
- package/dist/renderers/slides/renderer/layouts/diagram-concentric.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/diagram-matrix.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/diagram-matrix.js +0 -158
- package/dist/renderers/slides/renderer/layouts/diagram-matrix.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/diagram-pyramid.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/diagram-pyramid.js +0 -86
- package/dist/renderers/slides/renderer/layouts/diagram-pyramid.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/diagram-sitemap.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/diagram-sitemap.js +0 -146
- package/dist/renderers/slides/renderer/layouts/diagram-sitemap.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/diagram-venn.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/diagram-venn.js +0 -100
- package/dist/renderers/slides/renderer/layouts/diagram-venn.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/diagram.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/diagram.js +0 -21
- package/dist/renderers/slides/renderer/layouts/diagram.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/divider.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/divider.js +0 -4
- package/dist/renderers/slides/renderer/layouts/divider.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/end.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/end.js +0 -8
- package/dist/renderers/slides/renderer/layouts/end.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/framework.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/framework.js +0 -47
- package/dist/renderers/slides/renderer/layouts/framework.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/image-browser-2up.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/image-browser-2up.js +0 -38
- package/dist/renderers/slides/renderer/layouts/image-browser-2up.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/image-browser-6up.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/image-browser-6up.js +0 -30
- package/dist/renderers/slides/renderer/layouts/image-browser-6up.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/image-browser.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/image-browser.js +0 -18
- package/dist/renderers/slides/renderer/layouts/image-browser.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/image-bullets.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/image-bullets.js +0 -26
- package/dist/renderers/slides/renderer/layouts/image-bullets.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/image-device-pair.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/image-device-pair.js +0 -34
- package/dist/renderers/slides/renderer/layouts/image-device-pair.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/image-full.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/image-full.js +0 -36
- package/dist/renderers/slides/renderer/layouts/image-full.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/image-grid-2x2.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/image-grid-2x2.js +0 -23
- package/dist/renderers/slides/renderer/layouts/image-grid-2x2.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/image-keywords.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/image-keywords.js +0 -31
- package/dist/renderers/slides/renderer/layouts/image-keywords.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/image-mobile-3up.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/image-mobile-3up.js +0 -22
- package/dist/renderers/slides/renderer/layouts/image-mobile-3up.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/image-mobile.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/image-mobile.js +0 -17
- package/dist/renderers/slides/renderer/layouts/image-mobile.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/image-split-right.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/image-split-right.js +0 -19
- package/dist/renderers/slides/renderer/layouts/image-split-right.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/image-split.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/image-split.js +0 -19
- package/dist/renderers/slides/renderer/layouts/image-split.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/introductions.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/introductions.js +0 -41
- package/dist/renderers/slides/renderer/layouts/introductions.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/moodboard.d.ts +0 -15
- package/dist/renderers/slides/renderer/layouts/moodboard.js +0 -63
- package/dist/renderers/slides/renderer/layouts/moodboard.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/next-steps.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/next-steps.js +0 -13
- package/dist/renderers/slides/renderer/layouts/next-steps.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/pullquote.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/pullquote.js +0 -17
- package/dist/renderers/slides/renderer/layouts/pullquote.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/schedule.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/schedule.js +0 -58
- package/dist/renderers/slides/renderer/layouts/schedule.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/section.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/section.js +0 -18
- package/dist/renderers/slides/renderer/layouts/section.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/statement.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/statement.js +0 -13
- package/dist/renderers/slides/renderer/layouts/statement.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/stats.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/stats.js +0 -26
- package/dist/renderers/slides/renderer/layouts/stats.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/table.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/table.js +0 -23
- package/dist/renderers/slides/renderer/layouts/table.js.map +0 -1
- package/dist/renderers/slides/renderer/layouts/text-body.d.ts +0 -2
- package/dist/renderers/slides/renderer/layouts/text-body.js +0 -14
- package/dist/renderers/slides/renderer/layouts/text-body.js.map +0 -1
- package/dist/renderers/slides/renderer/placeholder.d.ts +0 -5
- package/dist/renderers/slides/renderer/placeholder.js +0 -12
- package/dist/renderers/slides/renderer/placeholder.js.map +0 -1
- package/dist/renderers/slides/routes/api.d.ts +0 -2
- package/dist/renderers/slides/routes/api.js +0 -568
- package/dist/renderers/slides/routes/api.js.map +0 -1
- package/dist/renderers/slides/routes/editor.d.ts +0 -2
- package/dist/renderers/slides/routes/editor.js +0 -32
- package/dist/renderers/slides/routes/editor.js.map +0 -1
- package/dist/renderers/slides/routes/viewer.d.ts +0 -2
- package/dist/renderers/slides/routes/viewer.js +0 -67
- package/dist/renderers/slides/routes/viewer.js.map +0 -1
- package/dist/renderers/slides/types.d.ts +0 -111
- package/dist/renderers/slides/types.js +0 -2
- package/dist/renderers/slides/types.js.map +0 -1
- package/dist/server/agents/agent-loader.d.ts +0 -16
- package/dist/server/agents/agent-loader.js +0 -175
- package/dist/server/agents/agent-loader.js.map +0 -1
- package/dist/server/agents/agent-runner.d.ts +0 -33
- package/dist/server/agents/agent-runner.js +0 -187
- package/dist/server/agents/agent-runner.js.map +0 -1
- package/dist/server/agents/agent-runtime.d.ts +0 -39
- package/dist/server/agents/agent-runtime.js +0 -214
- package/dist/server/agents/agent-runtime.js.map +0 -1
- package/dist/server/agents/base-agent.d.ts +0 -30
- package/dist/server/agents/base-agent.js +0 -88
- package/dist/server/agents/base-agent.js.map +0 -1
- package/dist/server/agents/executive-digest.d.ts +0 -16
- package/dist/server/agents/executive-digest.js +0 -115
- package/dist/server/agents/executive-digest.js.map +0 -1
- package/dist/server/agents/graph-steward.d.ts +0 -16
- package/dist/server/agents/graph-steward.js +0 -59
- package/dist/server/agents/graph-steward.js.map +0 -1
- package/dist/server/agents/meeting-followup.d.ts +0 -16
- package/dist/server/agents/meeting-followup.js +0 -88
- package/dist/server/agents/meeting-followup.js.map +0 -1
- package/dist/server/agents/pipeline-monitor.d.ts +0 -15
- package/dist/server/agents/pipeline-monitor.js +0 -86
- package/dist/server/agents/pipeline-monitor.js.map +0 -1
- package/dist/server/agents/types.d.ts +0 -81
- package/dist/server/agents/types.js +0 -41
- package/dist/server/agents/types.js.map +0 -1
- package/dist/server/chrome/chrome.css +0 -701
- package/dist/server/chrome/chrome.js +0 -374
- package/dist/server/collab-authority.d.ts +0 -70
- package/dist/server/collab-authority.js +0 -218
- package/dist/server/collab-authority.js.map +0 -1
- package/dist/server/collab.d.ts +0 -29
- package/dist/server/collab.js +0 -195
- package/dist/server/collab.js.map +0 -1
- package/dist/server/commit-scheduler.d.ts +0 -39
- package/dist/server/commit-scheduler.js +0 -113
- package/dist/server/commit-scheduler.js.map +0 -1
- package/dist/server/plugin-loader.d.ts +0 -53
- package/dist/server/plugin-loader.js +0 -155
- package/dist/server/plugin-loader.js.map +0 -1
- package/dist/server/routes/agents-api.d.ts +0 -10
- package/dist/server/routes/agents-api.js +0 -25
- package/dist/server/routes/agents-api.js.map +0 -1
- package/dist/server/routes/collab.d.ts +0 -6
- package/dist/server/routes/collab.js +0 -10
- package/dist/server/routes/collab.js.map +0 -1
- package/dist/server/routes/features-api.d.ts +0 -10
- package/dist/server/routes/features-api.js +0 -15
- package/dist/server/routes/features-api.js.map +0 -1
- package/dist/server/routes/git-api.d.ts +0 -9
- package/dist/server/routes/git-api.js +0 -82
- package/dist/server/routes/git-api.js.map +0 -1
- package/dist/server/routes/meeting-ingest-api.d.ts +0 -14
- package/dist/server/routes/meeting-ingest-api.js +0 -117
- package/dist/server/routes/meeting-ingest-api.js.map +0 -1
- package/dist/server/routes/messages-api.d.ts +0 -15
- package/dist/server/routes/messages-api.js +0 -569
- package/dist/server/routes/messages-api.js.map +0 -1
- package/dist/server/routes/sync-api.d.ts +0 -26
- package/dist/server/routes/sync-api.js +0 -848
- package/dist/server/routes/sync-api.js.map +0 -1
- package/dist/server/routes/view-public.d.ts +0 -10
- package/dist/server/routes/view-public.js +0 -107
- package/dist/server/routes/view-public.js.map +0 -1
- package/dist/server/routes/webhook.d.ts +0 -14
- package/dist/server/routes/webhook.js +0 -102
- package/dist/server/routes/webhook.js.map +0 -1
- package/dist/services/batch-processor.d.ts +0 -49
- package/dist/services/batch-processor.js +0 -166
- package/dist/services/batch-processor.js.map +0 -1
- package/dist/services/briefing.d.ts +0 -26
- package/dist/services/briefing.js +0 -206
- package/dist/services/briefing.js.map +0 -1
- package/dist/services/github-provisioner.d.ts +0 -36
- package/dist/services/github-provisioner.js +0 -126
- package/dist/services/github-provisioner.js.map +0 -1
- package/dist/services/github-service.d.ts +0 -99
- package/dist/services/github-service.js +0 -310
- package/dist/services/github-service.js.map +0 -1
- package/dist/services/heartbeat.d.ts +0 -35
- package/dist/services/heartbeat.js +0 -236
- package/dist/services/heartbeat.js.map +0 -1
- package/dist/services/image-import-service.d.ts +0 -24
- package/dist/services/image-import-service.js +0 -108
- package/dist/services/image-import-service.js.map +0 -1
- package/dist/services/insights.d.ts +0 -38
- package/dist/services/insights.js +0 -269
- package/dist/services/insights.js.map +0 -1
- package/dist/services/meeting-processor.d.ts +0 -97
- package/dist/services/meeting-processor.js +0 -382
- package/dist/services/meeting-processor.js.map +0 -1
- package/dist/services/message-service.d.ts +0 -117
- package/dist/services/message-service.js +0 -414
- package/dist/services/message-service.js.map +0 -1
- package/dist/services/sync/collection-sync.d.ts +0 -60
- package/dist/services/sync/collection-sync.js +0 -509
- package/dist/services/sync/collection-sync.js.map +0 -1
- package/dist/services/sync/commit.d.ts +0 -60
- package/dist/services/sync/commit.js +0 -354
- package/dist/services/sync/commit.js.map +0 -1
- package/dist/services/sync/context-index.d.ts +0 -69
- package/dist/services/sync/context-index.js +0 -280
- package/dist/services/sync/context-index.js.map +0 -1
- package/dist/services/sync/data-fetcher.d.ts +0 -31
- package/dist/services/sync/data-fetcher.js +0 -12
- package/dist/services/sync/data-fetcher.js.map +0 -1
- package/dist/services/sync/derive.d.ts +0 -34
- package/dist/services/sync/derive.js +0 -164
- package/dist/services/sync/derive.js.map +0 -1
- package/dist/services/sync/enrichment-state.d.ts +0 -31
- package/dist/services/sync/enrichment-state.js +0 -63
- package/dist/services/sync/enrichment-state.js.map +0 -1
- package/dist/services/sync/enrichment.d.ts +0 -25
- package/dist/services/sync/enrichment.js +0 -121
- package/dist/services/sync/enrichment.js.map +0 -1
- package/dist/services/sync/entity-refresh.d.ts +0 -30
- package/dist/services/sync/entity-refresh.js +0 -275
- package/dist/services/sync/entity-refresh.js.map +0 -1
- package/dist/services/sync/frontmatter-extractor.d.ts +0 -40
- package/dist/services/sync/frontmatter-extractor.js +0 -279
- package/dist/services/sync/frontmatter-extractor.js.map +0 -1
- package/dist/services/sync/graph-match-state.d.ts +0 -33
- package/dist/services/sync/graph-match-state.js +0 -61
- package/dist/services/sync/graph-match-state.js.map +0 -1
- package/dist/services/sync/graph-match.d.ts +0 -53
- package/dist/services/sync/graph-match.js +0 -316
- package/dist/services/sync/graph-match.js.map +0 -1
- package/dist/services/sync/graphrag-client.d.ts +0 -43
- package/dist/services/sync/graphrag-client.js +0 -94
- package/dist/services/sync/graphrag-client.js.map +0 -1
- package/dist/services/sync/graphrag-config.d.ts +0 -16
- package/dist/services/sync/graphrag-config.js +0 -39
- package/dist/services/sync/graphrag-config.js.map +0 -1
- package/dist/services/sync/graphrag-context.d.ts +0 -14
- package/dist/services/sync/graphrag-context.js +0 -109
- package/dist/services/sync/graphrag-context.js.map +0 -1
- package/dist/services/sync/graphrag-indexer.d.ts +0 -30
- package/dist/services/sync/graphrag-indexer.js +0 -358
- package/dist/services/sync/graphrag-indexer.js.map +0 -1
- package/dist/services/sync/llm.d.ts +0 -32
- package/dist/services/sync/llm.js +0 -115
- package/dist/services/sync/llm.js.map +0 -1
- package/dist/services/sync/mcp-client.d.ts +0 -71
- package/dist/services/sync/mcp-client.js +0 -299
- package/dist/services/sync/mcp-client.js.map +0 -1
- package/dist/services/sync/model-factory.d.ts +0 -13
- package/dist/services/sync/model-factory.js +0 -38
- package/dist/services/sync/model-factory.js.map +0 -1
- package/dist/services/sync/name-quality.d.ts +0 -31
- package/dist/services/sync/name-quality.js +0 -60
- package/dist/services/sync/name-quality.js.map +0 -1
- package/dist/services/sync/output-schemas.d.ts +0 -92
- package/dist/services/sync/output-schemas.js +0 -43
- package/dist/services/sync/output-schemas.js.map +0 -1
- package/dist/services/sync/prompts.d.ts +0 -19
- package/dist/services/sync/prompts.js +0 -128
- package/dist/services/sync/prompts.js.map +0 -1
- package/dist/services/sync/reconciler.d.ts +0 -48
- package/dist/services/sync/reconciler.js +0 -294
- package/dist/services/sync/reconciler.js.map +0 -1
- package/dist/services/sync/rest-client.d.ts +0 -40
- package/dist/services/sync/rest-client.js +0 -100
- package/dist/services/sync/rest-client.js.map +0 -1
- package/dist/services/sync/source-config.d.ts +0 -67
- package/dist/services/sync/source-config.js +0 -304
- package/dist/services/sync/source-config.js.map +0 -1
- package/dist/services/sync/source-definitions/asana.d.ts +0 -14
- package/dist/services/sync/source-definitions/asana.js +0 -42
- package/dist/services/sync/source-definitions/asana.js.map +0 -1
- package/dist/services/sync/source-definitions/definitions.d.ts +0 -8
- package/dist/services/sync/source-definitions/definitions.js +0 -8
- package/dist/services/sync/source-definitions/definitions.js.map +0 -1
- package/dist/services/sync/source-definitions/gdrive.d.ts +0 -16
- package/dist/services/sync/source-definitions/gdrive.js +0 -68
- package/dist/services/sync/source-definitions/gdrive.js.map +0 -1
- package/dist/services/sync/source-definitions/granola.d.ts +0 -2
- package/dist/services/sync/source-definitions/granola.js +0 -21
- package/dist/services/sync/source-definitions/granola.js.map +0 -1
- package/dist/services/sync/source-definitions/linear.d.ts +0 -2
- package/dist/services/sync/source-definitions/linear.js +0 -62
- package/dist/services/sync/source-definitions/linear.js.map +0 -1
- package/dist/services/sync/source-definitions/obsidian.d.ts +0 -2
- package/dist/services/sync/source-definitions/obsidian.js +0 -55
- package/dist/services/sync/source-definitions/obsidian.js.map +0 -1
- package/dist/services/sync/source-definitions/pipedrive.d.ts +0 -2
- package/dist/services/sync/source-definitions/pipedrive.js +0 -43
- package/dist/services/sync/source-definitions/pipedrive.js.map +0 -1
- package/dist/services/sync/staging.d.ts +0 -53
- package/dist/services/sync/staging.js +0 -130
- package/dist/services/sync/staging.js.map +0 -1
- package/dist/services/sync/structured-extractor.d.ts +0 -57
- package/dist/services/sync/structured-extractor.js +0 -584
- package/dist/services/sync/structured-extractor.js.map +0 -1
- package/dist/services/sync/sync-runner.d.ts +0 -32
- package/dist/services/sync/sync-runner.js +0 -195
- package/dist/services/sync/sync-runner.js.map +0 -1
- package/dist/services/sync/sync-state.d.ts +0 -43
- package/dist/services/sync/sync-state.js +0 -154
- package/dist/services/sync/sync-state.js.map +0 -1
- package/dist/services/sync/types.d.ts +0 -381
- package/dist/services/sync/types.js +0 -8
- package/dist/services/sync/types.js.map +0 -1
- package/dist/services/sync/unstructured-extractor.d.ts +0 -27
- package/dist/services/sync/unstructured-extractor.js +0 -185
- package/dist/services/sync/unstructured-extractor.js.map +0 -1
- package/dist/utils/merge-resolver.d.ts +0 -59
- package/dist/utils/merge-resolver.js +0 -303
- package/dist/utils/merge-resolver.js.map +0 -1
- package/dist/utils/workspace-config.d.ts +0 -8
- package/dist/utils/workspace-config.js +0 -22
- package/dist/utils/workspace-config.js.map +0 -1
- package/dist/web/_app/immutable/assets/0.B3eM5J6m.css +0 -1
- package/dist/web/_app/immutable/assets/10.2jzI3cZY.css +0 -1
- package/dist/web/_app/immutable/assets/11.BbBNo8jg.css +0 -1
- package/dist/web/_app/immutable/assets/12.vV-8Nqud.css +0 -1
- package/dist/web/_app/immutable/assets/2.CDsrnCq3.css +0 -1
- package/dist/web/_app/immutable/assets/3.Ih7su2rl.css +0 -1
- package/dist/web/_app/immutable/assets/4.CwXIQz3p.css +0 -1
- package/dist/web/_app/immutable/assets/ChevronLeft.BwM9mwS4.css +0 -1
- package/dist/web/_app/immutable/assets/GraphView.CRV5cekT.css +0 -1
- package/dist/web/_app/immutable/assets/Toaster.rN8r_Hzv.css +0 -1
- package/dist/web/_app/immutable/assets/ViewToolbar.CsWTe0yn.css +0 -1
- package/dist/web/_app/immutable/assets/WorkspaceView.iWtzksrr.css +0 -1
- package/dist/web/_app/immutable/chunks/0kuZ2gtb.js +0 -1
- package/dist/web/_app/immutable/chunks/1Ea1UXwM.js +0 -2
- package/dist/web/_app/immutable/chunks/284Zhbif.js +0 -1
- package/dist/web/_app/immutable/chunks/7S2LGqoP.js +0 -2
- package/dist/web/_app/immutable/chunks/7WZENMwt.js +0 -1
- package/dist/web/_app/immutable/chunks/B0qHb2ee.js +0 -1
- package/dist/web/_app/immutable/chunks/B45od9dM.js +0 -2
- package/dist/web/_app/immutable/chunks/B4hXkypI.js +0 -1
- package/dist/web/_app/immutable/chunks/BB_5th5W.js +0 -3383
- package/dist/web/_app/immutable/chunks/BDvg8O5k.js +0 -5
- package/dist/web/_app/immutable/chunks/BGiCmAMQ.js +0 -4
- package/dist/web/_app/immutable/chunks/BHgT2Ede.js +0 -1
- package/dist/web/_app/immutable/chunks/BQ1nK9ru.js +0 -1
- package/dist/web/_app/immutable/chunks/BS0-13V2.js +0 -1
- package/dist/web/_app/immutable/chunks/BSiC7hSS.js +0 -1
- package/dist/web/_app/immutable/chunks/BkxW0BJZ.js +0 -1
- package/dist/web/_app/immutable/chunks/Bp7FKkGt.js +0 -1
- package/dist/web/_app/immutable/chunks/BrebtJNG.js +0 -18
- package/dist/web/_app/immutable/chunks/Bz0ZjVQE.js +0 -2
- package/dist/web/_app/immutable/chunks/C0LVZhvn.js +0 -1
- package/dist/web/_app/immutable/chunks/C0Zx4tMe.js +0 -1
- package/dist/web/_app/immutable/chunks/CHJcPZZK.js +0 -2
- package/dist/web/_app/immutable/chunks/CRpK3grw.js +0 -2
- package/dist/web/_app/immutable/chunks/CSVbGg_b.js +0 -5
- package/dist/web/_app/immutable/chunks/CX_61fY8.js +0 -5
- package/dist/web/_app/immutable/chunks/CYrVHOHA.js +0 -1
- package/dist/web/_app/immutable/chunks/CdIKiXW6.js +0 -1
- package/dist/web/_app/immutable/chunks/CqkleIqs.js +0 -1
- package/dist/web/_app/immutable/chunks/D14M5KlG.js +0 -1
- package/dist/web/_app/immutable/chunks/D71c9o7J.js +0 -2
- package/dist/web/_app/immutable/chunks/DFYOFE3o.js +0 -1
- package/dist/web/_app/immutable/chunks/DHJAqtPb.js +0 -1
- package/dist/web/_app/immutable/chunks/DOqcDZIJ.js +0 -1
- package/dist/web/_app/immutable/chunks/DQNtFKv6.js +0 -1
- package/dist/web/_app/immutable/chunks/DZHWps9n.js +0 -1
- package/dist/web/_app/immutable/chunks/DjLrjK2H.js +0 -1
- package/dist/web/_app/immutable/chunks/DjvJRtva.js +0 -1
- package/dist/web/_app/immutable/chunks/DnL9f0lc.js +0 -7
- package/dist/web/_app/immutable/chunks/Dqq8gyOz.js +0 -1
- package/dist/web/_app/immutable/chunks/DsnmJJEf.js +0 -1
- package/dist/web/_app/immutable/chunks/DtG1tx2A.js +0 -1
- package/dist/web/_app/immutable/chunks/Dxmmz-Kc.js +0 -1
- package/dist/web/_app/immutable/chunks/DzVOENkg.js +0 -1
- package/dist/web/_app/immutable/chunks/Ee5s0qSS.js +0 -5
- package/dist/web/_app/immutable/chunks/KlRV1tKP.js +0 -1
- package/dist/web/_app/immutable/chunks/L7dfS1-w.js +0 -1
- package/dist/web/_app/immutable/chunks/MaQouOBH.js +0 -2
- package/dist/web/_app/immutable/chunks/PPVm8Dsz.js +0 -1
- package/dist/web/_app/immutable/chunks/WSUKABI_.js +0 -1
- package/dist/web/_app/immutable/chunks/_7ZfIgbM.js +0 -1
- package/dist/web/_app/immutable/chunks/pNJmbo_B.js +0 -1
- package/dist/web/_app/immutable/chunks/q4I7EnCp.js +0 -1
- package/dist/web/_app/immutable/chunks/qE6Hm01v.js +0 -1
- package/dist/web/_app/immutable/chunks/vxEtkL8z.js +0 -1
- package/dist/web/_app/immutable/chunks/wDIGUaoU.js +0 -3
- package/dist/web/_app/immutable/chunks/wZWzupWT.js +0 -1
- package/dist/web/_app/immutable/entry/app.Dc6h105F.js +0 -2
- package/dist/web/_app/immutable/entry/start.D4codAU1.js +0 -1
- package/dist/web/_app/immutable/nodes/0.BM3j5xaK.js +0 -2
- package/dist/web/_app/immutable/nodes/1.CZ2dT63B.js +0 -1
- package/dist/web/_app/immutable/nodes/10.AJJtsnPU.js +0 -1
- package/dist/web/_app/immutable/nodes/11.B7SEgGLF.js +0 -1
- package/dist/web/_app/immutable/nodes/12.BcJKl4UQ.js +0 -1
- package/dist/web/_app/immutable/nodes/2.jp27tyTq.js +0 -269
- package/dist/web/_app/immutable/nodes/3.I7SH_06w.js +0 -5
- package/dist/web/_app/immutable/nodes/4.Bdphc-UJ.js +0 -11
- package/dist/web/_app/immutable/nodes/5.CXpOErnP.js +0 -1
- package/dist/web/_app/immutable/nodes/6.1wcSxmEA.js +0 -1
- package/dist/web/_app/immutable/nodes/7.D0b7WYTp.js +0 -1
- package/dist/web/_app/immutable/nodes/8.D0Gxvy3F.js +0 -1
- package/dist/web/_app/immutable/nodes/9.B5Nr92OR.js +0 -1
|
@@ -0,0 +1,2692 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./oIZupUnz.js","./CsIWxmio2.js","./FISIvbqq.js","./Oglnp7sm.js","./BnYohOts2.js","./B2cjR0rG.js","./CgCz4Fj6.js","./CXPMb3zd.js","./DiiXREv7.js","./DBGaXAP8.js","./BxeOdaUQ.js","./C6d9nn3k.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{Kt as e}from"./FISIvbqq.js";import{t}from"./kNaey6uv.js";import{$ as n,A as r,B as i,C as a,D as o,E as s,F as c,G as l,H as u,I as d,J as f,K as p,L as m,M as h,N as g,O as _,P as v,Q as y,R as b,S as x,T as S,U as C,V as w,W as T,X as E,Y as ee,Z as D,_ as O,a as k,at as A,b as j,c as M,ct as N,d as P,dt as F,et as I,f as L,ft as R,g as z,h as B,i as V,it as H,j as te,k as ne,l as re,lt as ie,m as ae,n as oe,nt as se,o as ce,ot as le,p as ue,q as de,r as fe,rt as U,s as pe,st as me,t as he,tt as ge,u as _e,ut as W,v as ve,w as ye,x as be,y as xe,z as Se}from"./CsIWxmio2.js";import{A as Ce,B as we,C as Te,D as Ee,E as De,F as Oe,H as ke,I as Ae,L as je,M as Me,N as Ne,O as Pe,P as Fe,R as Ie,S as Le,T as Re,U as ze,V as Be,_ as Ve,a as He,b as Ue,c as We,d as Ge,f as Ke,g as qe,h as Je,i as Ye,j as Xe,k as Ze,l as Qe,m as $e,n as et,o as tt,p as nt,r as rt,s as it,t as at,u as ot,v as st,w as ct,x as lt,y as ut,z as dt}from"./BnYohOts2.js";import{a as ft,c as pt,d as mt,f as ht,i as gt,l as _t,m as vt,n as yt,o as bt,p as xt,r as St,s as Ct,t as wt,u as Tt}from"./Oglnp7sm.js";import{C as Et,D as Dt,E as Ot,O as kt,S as At,T as jt,_ as Mt,a as Nt,b as Pt,c as Ft,d as It,f as Lt,g as Rt,h as zt,i as Bt,k as Vt,l as Ht,m as Ut,n as Wt,o as Gt,p as Kt,r as qt,s as Jt,t as Yt,u as Xt,v as Zt,w as Qt,x as $t,y as en}from"./B2cjR0rG.js";import{n as tn,t as G}from"./CgCz4Fj6.js";import{t as nn}from"./DBGaXAP8.js";import{n as rn,t as K}from"./CXPMb3zd.js";import{n as an,t as on}from"./DiiXREv7.js";import{$ as sn,A as cn,B as ln,C as un,D as dn,E as fn,F as pn,G as mn,H as hn,I as gn,J as _n,K as vn,L as yn,M as bn,N as xn,O as Sn,P as Cn,Q as wn,R as Tn,S as En,T as Dn,U as On,V as kn,W as An,X as jn,Y as Mn,Z as Nn,_ as Pn,a as Fn,b as In,c as Ln,d as Rn,et as zn,f as Bn,g as Vn,h as Hn,i as Un,j as Wn,k as Gn,l as Kn,m as qn,n as Jn,o as Yn,p as Xn,q as Zn,r as Qn,s as $n,t as er,u as tr,v as nr,w as rr,x as ir,y as ar,z as or}from"./CB-t1Bv-.js";import{$ as sr,A as cr,B as lr,C as ur,D as dr,E as fr,F as pr,G as mr,H as hr,I as gr,J as _r,K as vr,L as yr,M as br,N as xr,O as Sr,P as Cr,Q as wr,R as Tr,S as Er,T as Dr,U as Or,V as kr,W as Ar,X as jr,Y as Mr,Z as Nr,_ as Pr,a as Fr,b as Ir,c as Lr,d as Rr,et as zr,f as Br,g as Vr,h as Hr,i as Ur,j as Wr,k as Gr,l as Kr,m as qr,n as Jr,o as Yr,p as Xr,q as Zr,r as Qr,s as $r,t as ei,u as ti,v as ni,w as ri,x as ii,y as ai,z as oi}from"./BvyVm7-j.js";import{A as si,C as ci,D as li,E as ui,F as di,I as fi,L as pi,M as mi,N as hi,O as gi,P as _i,R as vi,S as yi,T as bi,_ as xi,a as Si,b as Ci,c as wi,d as Ti,f as Ei,g as Di,h as Oi,i as ki,j as Ai,k as ji,l as Mi,m as Ni,n as Pi,o as Fi,p as Ii,r as Li,s as Ri,t as zi,u as Bi,v as Vi,w as Hi,x as Ui,y as Wi}from"./DgP0Pxes.js";import{t as Gi}from"./CKGHeJzq.js";import{a as Ki,c as qi,d as Ji,f as Yi,i as Xi,l as Zi,n as Qi,o as $i,p as ea,r as ta,s as na,t as ra,u as ia}from"./-MYqXlc3.js";function aa(e,t,n,r,i,a,o,s){let c=o-n,l=s-r,u=i-n,d=a-r,f=e-n,p=t-r,m=c*c+l*l,h=c*u+l*d,g=c*f+l*p,_=u*u+d*d,v=u*f+d*p,y=1/(m*_-h*h),b=(_*g-h*v)*y,x=(m*v-h*g)*y;return b>=0&&x>=0&&b+x<1}var oa=class e{constructor(e=0,t=0,n=0,r=0,i=0,a=0){this.type=`triangle`,this.x=e,this.y=t,this.x2=n,this.y2=r,this.x3=i,this.y3=a}contains(e,t){let n=(this.x-this.x3)*(t-this.y3)-(this.y-this.y3)*(e-this.x3),r=(this.x2-this.x)*(t-this.y)-(this.y2-this.y)*(e-this.x);if(n<0!=r<0&&n!==0&&r!==0)return!1;let i=(this.x3-this.x2)*(t-this.y2)-(this.y3-this.y2)*(e-this.x2);return i===0||i<0==n+r<=0}strokeContains(e,t,n,r=.5){let i=n/2,a=i*i,{x:o,x2:s,x3:c,y:l,y2:u,y3:d}=this;return zn(e,t,o,l,s,d)<=a||zn(e,t,s,u,c,d)<=a||zn(e,t,c,d,o,l)<=a}clone(){return new e(this.x,this.y,this.x2,this.y2,this.x3,this.y3)}copyFrom(e){return this.x=e.x,this.y=e.y,this.x2=e.x2,this.y2=e.y2,this.x3=e.x3,this.y3=e.y3,this}copyTo(e){return e.copyFrom(this),e}getBounds(e){e||=new p;let t=Math.min(this.x,this.x2,this.x3),n=Math.max(this.x,this.x2,this.x3),r=Math.min(this.y,this.y2,this.y3),i=Math.max(this.y,this.y2,this.y3);return e.x=t,e.y=r,e.width=n-t,e.height=i-r,e}},sa={extension:{type:W.Environment,name:`browser`,priority:-1},test:()=>!0,load:async()=>{await t(()=>import(`./oIZupUnz.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]),import.meta.url)}},ca={extension:{type:W.Environment,name:`webworker`,priority:0},test:()=>typeof self<`u`&&self.WorkerGlobalScope!==void 0,load:async()=>{await t(()=>import(`./C6d9nn3k.js`),__vite__mapDeps([11,5,1,2,6,4,7,8,9,10]),import.meta.url)}},la=`
|
|
3
|
+
in vec2 vTextureCoord;
|
|
4
|
+
in vec4 vColor;
|
|
5
|
+
|
|
6
|
+
out vec4 finalColor;
|
|
7
|
+
|
|
8
|
+
uniform float uBlend;
|
|
9
|
+
|
|
10
|
+
uniform sampler2D uTexture;
|
|
11
|
+
uniform sampler2D uBackTexture;
|
|
12
|
+
|
|
13
|
+
{FUNCTIONS}
|
|
14
|
+
|
|
15
|
+
void main()
|
|
16
|
+
{
|
|
17
|
+
vec4 back = texture(uBackTexture, vTextureCoord);
|
|
18
|
+
vec4 front = texture(uTexture, vTextureCoord);
|
|
19
|
+
float blendedAlpha = front.a + back.a * (1.0 - front.a);
|
|
20
|
+
|
|
21
|
+
{MAIN}
|
|
22
|
+
}
|
|
23
|
+
`,ua=`in vec2 aPosition;
|
|
24
|
+
out vec2 vTextureCoord;
|
|
25
|
+
out vec2 backgroundUv;
|
|
26
|
+
|
|
27
|
+
uniform vec4 uInputSize;
|
|
28
|
+
uniform vec4 uOutputFrame;
|
|
29
|
+
uniform vec4 uOutputTexture;
|
|
30
|
+
|
|
31
|
+
vec4 filterVertexPosition( void )
|
|
32
|
+
{
|
|
33
|
+
vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;
|
|
34
|
+
|
|
35
|
+
position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;
|
|
36
|
+
position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;
|
|
37
|
+
|
|
38
|
+
return vec4(position, 0.0, 1.0);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
vec2 filterTextureCoord( void )
|
|
42
|
+
{
|
|
43
|
+
return aPosition * (uOutputFrame.zw * uInputSize.zw);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
void main(void)
|
|
47
|
+
{
|
|
48
|
+
gl_Position = filterVertexPosition();
|
|
49
|
+
vTextureCoord = filterTextureCoord();
|
|
50
|
+
}
|
|
51
|
+
`,da=`
|
|
52
|
+
struct GlobalFilterUniforms {
|
|
53
|
+
uInputSize:vec4<f32>,
|
|
54
|
+
uInputPixel:vec4<f32>,
|
|
55
|
+
uInputClamp:vec4<f32>,
|
|
56
|
+
uOutputFrame:vec4<f32>,
|
|
57
|
+
uGlobalFrame:vec4<f32>,
|
|
58
|
+
uOutputTexture:vec4<f32>,
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
struct BlendUniforms {
|
|
62
|
+
uBlend:f32,
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
|
|
66
|
+
@group(0) @binding(1) var uTexture: texture_2d<f32>;
|
|
67
|
+
@group(0) @binding(2) var uSampler : sampler;
|
|
68
|
+
@group(0) @binding(3) var uBackTexture: texture_2d<f32>;
|
|
69
|
+
|
|
70
|
+
@group(1) @binding(0) var<uniform> blendUniforms : BlendUniforms;
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
struct VSOutput {
|
|
74
|
+
@builtin(position) position: vec4<f32>,
|
|
75
|
+
@location(0) uv : vec2<f32>
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
fn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>
|
|
79
|
+
{
|
|
80
|
+
var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;
|
|
81
|
+
|
|
82
|
+
position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;
|
|
83
|
+
position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;
|
|
84
|
+
|
|
85
|
+
return vec4(position, 0.0, 1.0);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
fn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
|
|
89
|
+
{
|
|
90
|
+
return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
fn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
|
|
94
|
+
{
|
|
95
|
+
return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
@vertex
|
|
99
|
+
fn mainVertex(
|
|
100
|
+
@location(0) aPosition : vec2<f32>,
|
|
101
|
+
) -> VSOutput {
|
|
102
|
+
return VSOutput(
|
|
103
|
+
filterVertexPosition(aPosition),
|
|
104
|
+
filterTextureCoord(aPosition)
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
{FUNCTIONS}
|
|
109
|
+
|
|
110
|
+
@fragment
|
|
111
|
+
fn mainFragment(
|
|
112
|
+
@location(0) uv: vec2<f32>
|
|
113
|
+
) -> @location(0) vec4<f32> {
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
var back = textureSample(uBackTexture, uSampler, uv);
|
|
117
|
+
var front = textureSample(uTexture, uSampler, uv);
|
|
118
|
+
var blendedAlpha = front.a + back.a * (1.0 - front.a);
|
|
119
|
+
|
|
120
|
+
var out = vec4<f32>(0.0,0.0,0.0,0.0);
|
|
121
|
+
|
|
122
|
+
{MAIN}
|
|
123
|
+
|
|
124
|
+
return out;
|
|
125
|
+
}`,q=class extends at{constructor(e){let t=e.gpu,n=fa({source:da,...t}),r=ue.from({vertex:{source:n,entryPoint:`mainVertex`},fragment:{source:n,entryPoint:`mainFragment`}}),i=e.gl,a=fa({source:la,...i}),o=be.from({vertex:ua,fragment:a}),s=new pe({uBlend:{value:1,type:`f32`}});super({gpuProgram:r,glProgram:o,blendRequired:!0,resources:{blendUniforms:s,uBackTexture:h.EMPTY}})}};function fa(e){let{source:t,functions:n,main:r}=e;return t.replace(`{FUNCTIONS}`,n).replace(`{MAIN}`,r)}var pa=`
|
|
126
|
+
float getLuminosity(vec3 c) {
|
|
127
|
+
return 0.3 * c.r + 0.59 * c.g + 0.11 * c.b;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
vec3 setLuminosity(vec3 c, float lum) {
|
|
131
|
+
float modLum = lum - getLuminosity(c);
|
|
132
|
+
vec3 color = c.rgb + vec3(modLum);
|
|
133
|
+
|
|
134
|
+
// clip back into legal range
|
|
135
|
+
modLum = getLuminosity(color);
|
|
136
|
+
vec3 modLumVec = vec3(modLum);
|
|
137
|
+
|
|
138
|
+
float cMin = min(color.r, min(color.g, color.b));
|
|
139
|
+
float cMax = max(color.r, max(color.g, color.b));
|
|
140
|
+
|
|
141
|
+
if(cMin < 0.0) {
|
|
142
|
+
color = mix(modLumVec, color, modLum / (modLum - cMin));
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if(cMax > 1.0) {
|
|
146
|
+
color = mix(modLumVec, color, (1.0 - modLum) / (cMax - modLum));
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return color;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
float getSaturation(vec3 c) {
|
|
153
|
+
return max(c.r, max(c.g, c.b)) - min(c.r, min(c.g, c.b));
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
vec3 setSaturationMinMidMax(vec3 cSorted, float s) {
|
|
157
|
+
vec3 colorSorted = cSorted;
|
|
158
|
+
|
|
159
|
+
if(colorSorted.z > colorSorted.x) {
|
|
160
|
+
colorSorted.y = (((colorSorted.y - colorSorted.x) * s) / (colorSorted.z - colorSorted.x));
|
|
161
|
+
colorSorted.z = s;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
colorSorted.y = 0.0;
|
|
165
|
+
colorSorted.z = 0.0;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
colorSorted.x = 0.0;
|
|
169
|
+
|
|
170
|
+
return colorSorted;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
vec3 setSaturation(vec3 c, float s) {
|
|
174
|
+
vec3 color = c;
|
|
175
|
+
|
|
176
|
+
if(color.r <= color.g && color.r <= color.b) {
|
|
177
|
+
if(color.g <= color.b) {
|
|
178
|
+
color = setSaturationMinMidMax(color.rgb, s).rgb;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
color = setSaturationMinMidMax(color.rbg, s).rbg;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
else if(color.g <= color.r && color.g <= color.b) {
|
|
185
|
+
if(color.r <= color.b) {
|
|
186
|
+
color = setSaturationMinMidMax(color.grb, s).grb;
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
color = setSaturationMinMidMax(color.gbr, s).gbr;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
// Using bgr for both fixes part of hue
|
|
194
|
+
if(color.r <= color.g) {
|
|
195
|
+
color = setSaturationMinMidMax(color.brg, s).brg;
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
color = setSaturationMinMidMax(color.bgr, s).bgr;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
return color;
|
|
203
|
+
}
|
|
204
|
+
`,ma=`
|
|
205
|
+
fn getLuminosity(c: vec3<f32>) -> f32
|
|
206
|
+
{
|
|
207
|
+
return 0.3*c.r + 0.59*c.g + 0.11*c.b;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
fn setLuminosity(c: vec3<f32>, lum: f32) -> vec3<f32>
|
|
211
|
+
{
|
|
212
|
+
var modLum: f32 = lum - getLuminosity(c);
|
|
213
|
+
var color: vec3<f32> = c.rgb + modLum;
|
|
214
|
+
|
|
215
|
+
// clip back into legal range
|
|
216
|
+
modLum = getLuminosity(color);
|
|
217
|
+
let modLumVec = vec3<f32>(modLum);
|
|
218
|
+
|
|
219
|
+
let cMin: f32 = min(color.r, min(color.g, color.b));
|
|
220
|
+
let cMax: f32 = max(color.r, max(color.g, color.b));
|
|
221
|
+
|
|
222
|
+
if(cMin < 0.0)
|
|
223
|
+
{
|
|
224
|
+
color = mix(modLumVec, color, modLum / (modLum - cMin));
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
if(cMax > 1.0)
|
|
228
|
+
{
|
|
229
|
+
color = mix(modLumVec, color, (1 - modLum) / (cMax - modLum));
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
return color;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
fn getSaturation(c: vec3<f32>) -> f32
|
|
236
|
+
{
|
|
237
|
+
return max(c.r, max(c.g, c.b)) - min(c.r, min(c.g, c.b));
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
fn setSaturationMinMidMax(cSorted: vec3<f32>, s: f32) -> vec3<f32>
|
|
241
|
+
{
|
|
242
|
+
var colorSorted = cSorted;
|
|
243
|
+
|
|
244
|
+
if(colorSorted.z > colorSorted.x)
|
|
245
|
+
{
|
|
246
|
+
colorSorted.y = (((colorSorted.y - colorSorted.x) * s) / (colorSorted.z - colorSorted.x));
|
|
247
|
+
colorSorted.z = s;
|
|
248
|
+
}
|
|
249
|
+
else
|
|
250
|
+
{
|
|
251
|
+
colorSorted.y = 0;
|
|
252
|
+
colorSorted.z = 0;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
colorSorted.x = 0;
|
|
256
|
+
|
|
257
|
+
return colorSorted;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
fn setSaturation(c: vec3<f32>, s: f32) -> vec3<f32>
|
|
261
|
+
{
|
|
262
|
+
var color = c;
|
|
263
|
+
|
|
264
|
+
if (color.r <= color.g && color.r <= color.b)
|
|
265
|
+
{
|
|
266
|
+
if (color.g <= color.b)
|
|
267
|
+
{
|
|
268
|
+
color = vec3<f32>(setSaturationMinMidMax(color.rgb, s)).rgb;
|
|
269
|
+
}
|
|
270
|
+
else
|
|
271
|
+
{
|
|
272
|
+
color = vec3<f32>(setSaturationMinMidMax(color.rbg, s)).rbg;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
else if (color.g <= color.r && color.g <= color.b)
|
|
276
|
+
{
|
|
277
|
+
if (color.r <= color.b)
|
|
278
|
+
{
|
|
279
|
+
color = vec3<f32>(setSaturationMinMidMax(color.grb, s)).grb;
|
|
280
|
+
}
|
|
281
|
+
else
|
|
282
|
+
{
|
|
283
|
+
color = vec3<f32>(setSaturationMinMidMax(color.gbr, s)).gbr;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
else
|
|
287
|
+
{
|
|
288
|
+
// Using bgr for both fixes part of hue
|
|
289
|
+
if (color.r <= color.g)
|
|
290
|
+
{
|
|
291
|
+
color = vec3<f32>(setSaturationMinMidMax(color.brg, s)).brg;
|
|
292
|
+
}
|
|
293
|
+
else
|
|
294
|
+
{
|
|
295
|
+
color = vec3<f32>(setSaturationMinMidMax(color.bgr, s)).bgr;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
return color;
|
|
300
|
+
}
|
|
301
|
+
`,ha=class extends q{constructor(){super({gl:{functions:`
|
|
302
|
+
${pa}
|
|
303
|
+
|
|
304
|
+
vec3 blendColor(vec3 base, vec3 blend, float opacity)
|
|
305
|
+
{
|
|
306
|
+
return (setLuminosity(blend, getLuminosity(base)) * opacity + base * (1.0 - opacity));
|
|
307
|
+
}
|
|
308
|
+
`,main:`
|
|
309
|
+
finalColor = vec4(blendColor(back.rgb, front.rgb,front.a), blendedAlpha) * uBlend;
|
|
310
|
+
`},gpu:{functions:`
|
|
311
|
+
${ma}
|
|
312
|
+
|
|
313
|
+
fn blendColorOpacity(base:vec3<f32>, blend:vec3<f32>, opacity:f32) -> vec3<f32>
|
|
314
|
+
{
|
|
315
|
+
return (setLuminosity(blend, getLuminosity(base)) * opacity + base * (1.0 - opacity));
|
|
316
|
+
}
|
|
317
|
+
`,main:`
|
|
318
|
+
out = vec4<f32>(blendColorOpacity(back.rgb, front.rgb, front.a), blendedAlpha) * blendUniforms.uBlend;
|
|
319
|
+
`}})}};ha.extension={name:`color`,type:W.BlendMode};var ga=class extends q{constructor(){super({gl:{functions:`
|
|
320
|
+
float colorBurn(float base, float blend)
|
|
321
|
+
{
|
|
322
|
+
return max((1.0 - ((1.0 - base) / blend)), 0.0);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
vec3 blendColorBurn(vec3 base, vec3 blend, float opacity)
|
|
326
|
+
{
|
|
327
|
+
vec3 blended = vec3(
|
|
328
|
+
colorBurn(base.r, blend.r),
|
|
329
|
+
colorBurn(base.g, blend.g),
|
|
330
|
+
colorBurn(base.b, blend.b)
|
|
331
|
+
);
|
|
332
|
+
|
|
333
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
334
|
+
}
|
|
335
|
+
`,main:`
|
|
336
|
+
finalColor = vec4(blendColorBurn(back.rgb, front.rgb,front.a), blendedAlpha) * uBlend;
|
|
337
|
+
`},gpu:{functions:`
|
|
338
|
+
fn colorBurn(base:f32, blend:f32) -> f32
|
|
339
|
+
{
|
|
340
|
+
return max((1.0-((1.0-base)/blend)),0.0);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
fn blendColorBurn(base: vec3<f32>, blend: vec3<f32>, opacity: f32) -> vec3<f32>
|
|
344
|
+
{
|
|
345
|
+
let blended = vec3<f32>(
|
|
346
|
+
colorBurn(base.r, blend.r),
|
|
347
|
+
colorBurn(base.g, blend.g),
|
|
348
|
+
colorBurn(base.b, blend.b)
|
|
349
|
+
);
|
|
350
|
+
|
|
351
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
352
|
+
}
|
|
353
|
+
`,main:`
|
|
354
|
+
out = vec4<f32>(blendColorBurn(back.rgb, front.rgb, front.a), blendedAlpha) * blendUniforms.uBlend;
|
|
355
|
+
`}})}};ga.extension={name:`color-burn`,type:W.BlendMode};var _a=class extends q{constructor(){super({gl:{functions:`
|
|
356
|
+
float colorDodge(float base, float blend)
|
|
357
|
+
{
|
|
358
|
+
return base / (1.0 - blend);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
vec3 blendColorDodge(vec3 base, vec3 blend, float opacity)
|
|
362
|
+
{
|
|
363
|
+
vec3 blended = vec3(
|
|
364
|
+
colorDodge(base.r, blend.r),
|
|
365
|
+
colorDodge(base.g, blend.g),
|
|
366
|
+
colorDodge(base.b, blend.b)
|
|
367
|
+
);
|
|
368
|
+
|
|
369
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
370
|
+
}
|
|
371
|
+
`,main:`
|
|
372
|
+
finalColor = vec4(blendColorDodge(back.rgb, front.rgb,front.a), blendedAlpha) * uBlend;
|
|
373
|
+
`},gpu:{functions:`
|
|
374
|
+
fn colorDodge(base: f32, blend: f32) -> f32
|
|
375
|
+
{
|
|
376
|
+
return base / (1.0 - blend);
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
fn blendColorDodge(base: vec3<f32>, blend: vec3<f32>, opacity: f32) -> vec3<f32>
|
|
380
|
+
{
|
|
381
|
+
let blended = vec3<f32>(
|
|
382
|
+
colorDodge(base.r, blend.r),
|
|
383
|
+
colorDodge(base.g, blend.g),
|
|
384
|
+
colorDodge(base.b, blend.b)
|
|
385
|
+
);
|
|
386
|
+
|
|
387
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
388
|
+
}
|
|
389
|
+
`,main:`
|
|
390
|
+
out = vec4<f32>(blendColorDodge(back.rgb, front.rgb, front.a), blendedAlpha) * blendUniforms.uBlend;
|
|
391
|
+
`}})}};_a.extension={name:`color-dodge`,type:W.BlendMode};var va=class extends q{constructor(){super({gl:{functions:`
|
|
392
|
+
vec3 blendDarken(vec3 base, vec3 blend, float opacity)
|
|
393
|
+
{
|
|
394
|
+
return (min(base, blend) * opacity + base * (1.0 - opacity));
|
|
395
|
+
}
|
|
396
|
+
`,main:`
|
|
397
|
+
finalColor = vec4(blendDarken(back.rgb, front.rgb,front.a), blendedAlpha) * uBlend;
|
|
398
|
+
`},gpu:{functions:`
|
|
399
|
+
fn blendDarken(base:vec3<f32>, blend:vec3<f32>, opacity:f32) -> vec3<f32>
|
|
400
|
+
{
|
|
401
|
+
return (min(blend,base) * opacity + base * (1.0 - opacity));
|
|
402
|
+
}
|
|
403
|
+
`,main:`
|
|
404
|
+
out = vec4<f32>(blendDarken(back.rgb, front.rgb, front.a), blendedAlpha) * blendUniforms.uBlend;
|
|
405
|
+
`}})}};va.extension={name:`darken`,type:W.BlendMode};var ya=class extends q{constructor(){super({gl:{functions:`
|
|
406
|
+
vec3 blendDifference(vec3 base, vec3 blend, float opacity)
|
|
407
|
+
{
|
|
408
|
+
return (abs(blend - base) * opacity + base * (1.0 - opacity));
|
|
409
|
+
}
|
|
410
|
+
`,main:`
|
|
411
|
+
finalColor = vec4(blendDifference(back.rgb, front.rgb,front.a), blendedAlpha) * uBlend;
|
|
412
|
+
`},gpu:{functions:`
|
|
413
|
+
fn blendDifference(base:vec3<f32>, blend:vec3<f32>, opacity:f32) -> vec3<f32>
|
|
414
|
+
{
|
|
415
|
+
return (abs(blend - base) * opacity + base * (1.0 - opacity));
|
|
416
|
+
}
|
|
417
|
+
`,main:`
|
|
418
|
+
out = vec4<f32>(blendDifference(back.rgb, front.rgb, front.a), blendedAlpha) * blendUniforms.uBlend;
|
|
419
|
+
`}})}};ya.extension={name:`difference`,type:W.BlendMode};var ba=class extends q{constructor(){super({gl:{functions:`
|
|
420
|
+
float divide(float base, float blend)
|
|
421
|
+
{
|
|
422
|
+
return (blend > 0.0) ? clamp(base / blend, 0.0, 1.0) : 1.0;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
vec3 blendDivide(vec3 base, vec3 blend, float opacity)
|
|
426
|
+
{
|
|
427
|
+
vec3 blended = vec3(
|
|
428
|
+
divide(base.r, blend.r),
|
|
429
|
+
divide(base.g, blend.g),
|
|
430
|
+
divide(base.b, blend.b)
|
|
431
|
+
);
|
|
432
|
+
|
|
433
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
434
|
+
}
|
|
435
|
+
`,main:`
|
|
436
|
+
finalColor = vec4(blendDivide(back.rgb, front.rgb,front.a), blendedAlpha) * uBlend;
|
|
437
|
+
`},gpu:{functions:`
|
|
438
|
+
fn divide(base: f32, blend: f32) -> f32
|
|
439
|
+
{
|
|
440
|
+
return select(1.0, clamp(base / blend, 0.0, 1.0), blend > 0.0);
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
fn blendDivide(base: vec3<f32>, blend: vec3<f32>, opacity: f32) -> vec3<f32>
|
|
444
|
+
{
|
|
445
|
+
let blended = vec3<f32>(
|
|
446
|
+
divide(base.r, blend.r),
|
|
447
|
+
divide(base.g, blend.g),
|
|
448
|
+
divide(base.b, blend.b)
|
|
449
|
+
);
|
|
450
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
451
|
+
}
|
|
452
|
+
`,main:`
|
|
453
|
+
out = vec4<f32>(blendDivide(back.rgb, front.rgb, front.a), blendedAlpha) * blendUniforms.uBlend;
|
|
454
|
+
`}})}};ba.extension={name:`divide`,type:W.BlendMode};var xa=class extends q{constructor(){super({gl:{functions:`
|
|
455
|
+
vec3 exclusion(vec3 base, vec3 blend)
|
|
456
|
+
{
|
|
457
|
+
return base + blend - 2.0 * base * blend;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
vec3 blendExclusion(vec3 base, vec3 blend, float opacity)
|
|
461
|
+
{
|
|
462
|
+
return (exclusion(base, blend) * opacity + base * (1.0 - opacity));
|
|
463
|
+
}
|
|
464
|
+
`,main:`
|
|
465
|
+
finalColor = vec4(blendExclusion(back.rgb, front.rgb,front.a), blendedAlpha) * uBlend;
|
|
466
|
+
`},gpu:{functions:`
|
|
467
|
+
fn exclusion(base: vec3<f32>, blend: vec3<f32>) -> vec3<f32>
|
|
468
|
+
{
|
|
469
|
+
return base+blend-2.0*base*blend;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
fn blendExclusion(base: vec3<f32>, blend: vec3<f32>, opacity: f32) -> vec3<f32>
|
|
473
|
+
{
|
|
474
|
+
return (exclusion(base, blend) * opacity + base * (1.0 - opacity));
|
|
475
|
+
}
|
|
476
|
+
`,main:`
|
|
477
|
+
out = vec4<f32>(blendExclusion(back.rgb, front.rgb, front.a), blendedAlpha) * blendUniforms.uBlend;
|
|
478
|
+
`}})}};xa.extension={name:`exclusion`,type:W.BlendMode};var Sa=class extends q{constructor(){super({gl:{functions:`
|
|
479
|
+
float hardLight(float base, float blend)
|
|
480
|
+
{
|
|
481
|
+
return (blend < 0.5) ? 2.0 * base * blend : 1.0 - 2.0 * (1.0 - base) * (1.0 - blend);
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
vec3 blendHardLight(vec3 base, vec3 blend, float opacity)
|
|
485
|
+
{
|
|
486
|
+
vec3 blended = vec3(
|
|
487
|
+
hardLight(base.r, blend.r),
|
|
488
|
+
hardLight(base.g, blend.g),
|
|
489
|
+
hardLight(base.b, blend.b)
|
|
490
|
+
);
|
|
491
|
+
|
|
492
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
493
|
+
}
|
|
494
|
+
`,main:`
|
|
495
|
+
finalColor = vec4(blendHardLight(back.rgb, front.rgb,front.a), blendedAlpha) * uBlend;
|
|
496
|
+
`},gpu:{functions:`
|
|
497
|
+
fn hardLight(base: f32, blend: f32) -> f32
|
|
498
|
+
{
|
|
499
|
+
return select(1.0 - 2.0 * (1.0 - base) * (1.0 - blend), 2.0 * base * blend, blend < 0.5);
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
fn blendHardLight(base: vec3<f32>, blend: vec3<f32>, opacity: f32) -> vec3<f32>
|
|
503
|
+
{
|
|
504
|
+
let blended = vec3<f32>(
|
|
505
|
+
hardLight(base.r, blend.r),
|
|
506
|
+
hardLight(base.g, blend.g),
|
|
507
|
+
hardLight(base.b, blend.b)
|
|
508
|
+
);
|
|
509
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
510
|
+
}
|
|
511
|
+
`,main:`
|
|
512
|
+
out = vec4<f32>(blendHardLight(back.rgb, front.rgb, front.a), blendedAlpha) * blendUniforms.uBlend;
|
|
513
|
+
`}})}};Sa.extension={name:`hard-light`,type:W.BlendMode};var Ca=class extends q{constructor(){super({gl:{functions:`
|
|
514
|
+
float hardMix(float base, float blend)
|
|
515
|
+
{
|
|
516
|
+
return (base + blend >= 1.0) ? 1.0 : 0.0;
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
vec3 blendHardMix(vec3 base, vec3 blend, float opacity)
|
|
520
|
+
{
|
|
521
|
+
vec3 blended = vec3(
|
|
522
|
+
hardMix(base.r, blend.r),
|
|
523
|
+
hardMix(base.g, blend.g),
|
|
524
|
+
hardMix(base.b, blend.b)
|
|
525
|
+
);
|
|
526
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
527
|
+
}
|
|
528
|
+
`,main:`
|
|
529
|
+
finalColor = vec4(blendHardMix(back.rgb, front.rgb,front.a), blendedAlpha) * uBlend;
|
|
530
|
+
`},gpu:{functions:`
|
|
531
|
+
fn hardMix(base: f32, blend: f32) -> f32
|
|
532
|
+
{
|
|
533
|
+
return select(0.0, 1.0, base + blend >= 1.0);
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
fn blendHardMix(base:vec3<f32>, blend:vec3<f32>, opacity:f32) -> vec3<f32>
|
|
537
|
+
{
|
|
538
|
+
let blended: vec3<f32> = vec3<f32>(
|
|
539
|
+
hardMix(base.r, blend.r),
|
|
540
|
+
hardMix(base.g, blend.g),
|
|
541
|
+
hardMix(base.b, blend.b)
|
|
542
|
+
);
|
|
543
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
544
|
+
}
|
|
545
|
+
`,main:`
|
|
546
|
+
out = vec4<f32>(blendHardMix(back.rgb, front.rgb, front.a), blendedAlpha) * blendUniforms.uBlend;
|
|
547
|
+
`}})}};Ca.extension={name:`hard-mix`,type:W.BlendMode};var wa=class extends q{constructor(){super({gl:{functions:`
|
|
548
|
+
vec3 blendLighten(vec3 base, vec3 blend, float opacity)
|
|
549
|
+
{
|
|
550
|
+
return (max(base, blend) * opacity + base * (1.0 - opacity));
|
|
551
|
+
}
|
|
552
|
+
`,main:`
|
|
553
|
+
finalColor = vec4(blendLighten(back.rgb, front.rgb,front.a), blendedAlpha) * uBlend;
|
|
554
|
+
`},gpu:{functions:`
|
|
555
|
+
fn blendLighten(base:vec3<f32>, blend:vec3<f32>, opacity:f32) -> vec3<f32>
|
|
556
|
+
{
|
|
557
|
+
return (max(base, blend) * opacity + base * (1.0 - opacity));
|
|
558
|
+
}
|
|
559
|
+
`,main:`
|
|
560
|
+
out = vec4<f32>(blendLighten(back.rgb, front.rgb, front.a), blendedAlpha) * blendUniforms.uBlend;
|
|
561
|
+
`}})}};wa.extension={name:`lighten`,type:W.BlendMode};var Ta=class extends q{constructor(){super({gl:{functions:`
|
|
562
|
+
float linearBurn(float base, float blend)
|
|
563
|
+
{
|
|
564
|
+
return max(0.0, base + blend - 1.0);
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
vec3 blendLinearBurn(vec3 base, vec3 blend, float opacity)
|
|
568
|
+
{
|
|
569
|
+
vec3 blended = vec3(
|
|
570
|
+
linearBurn(base.r, blend.r),
|
|
571
|
+
linearBurn(base.g, blend.g),
|
|
572
|
+
linearBurn(base.b, blend.b)
|
|
573
|
+
);
|
|
574
|
+
|
|
575
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
576
|
+
}
|
|
577
|
+
`,main:`
|
|
578
|
+
finalColor = vec4(blendLinearBurn(back.rgb, front.rgb,front.a), blendedAlpha) * uBlend;
|
|
579
|
+
`},gpu:{functions:`
|
|
580
|
+
fn linearBurn(base: f32, blend: f32) -> f32
|
|
581
|
+
{
|
|
582
|
+
return max(0.0, base + blend - 1.0);
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
fn blendLinearBurn(base:vec3<f32>, blend:vec3<f32>, opacity:f32) -> vec3<f32>
|
|
586
|
+
{
|
|
587
|
+
let blended = vec3<f32>(
|
|
588
|
+
linearBurn(base.r, blend.r),
|
|
589
|
+
linearBurn(base.g, blend.g),
|
|
590
|
+
linearBurn(base.b, blend.b)
|
|
591
|
+
);
|
|
592
|
+
|
|
593
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
594
|
+
}
|
|
595
|
+
`,main:`
|
|
596
|
+
out = vec4<f32>(blendLinearBurn(back.rgb, front.rgb, front.a), blendedAlpha) * blendUniforms.uBlend;
|
|
597
|
+
`}})}};Ta.extension={name:`linear-burn`,type:W.BlendMode};var Ea=class extends q{constructor(){super({gl:{functions:`
|
|
598
|
+
float linearDodge(float base, float blend) {
|
|
599
|
+
return min(1.0, base + blend);
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
vec3 blendLinearDodge(vec3 base, vec3 blend, float opacity) {
|
|
603
|
+
vec3 blended = vec3(
|
|
604
|
+
linearDodge(base.r, blend.r),
|
|
605
|
+
linearDodge(base.g, blend.g),
|
|
606
|
+
linearDodge(base.b, blend.b)
|
|
607
|
+
);
|
|
608
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
609
|
+
}
|
|
610
|
+
`,main:`
|
|
611
|
+
finalColor = vec4(blendLinearDodge(back.rgb, front.rgb,front.a), blendedAlpha) * uBlend;
|
|
612
|
+
`},gpu:{functions:`
|
|
613
|
+
fn linearDodge(base: f32, blend: f32) -> f32
|
|
614
|
+
{
|
|
615
|
+
return min(1, base + blend);
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
fn blendLinearDodge(base:vec3<f32>, blend:vec3<f32>, opacity:f32) -> vec3<f32>
|
|
619
|
+
{
|
|
620
|
+
let blended = vec3<f32>(
|
|
621
|
+
linearDodge(base.r, blend.r),
|
|
622
|
+
linearDodge(base.g, blend.g),
|
|
623
|
+
linearDodge(base.b, blend.b)
|
|
624
|
+
);
|
|
625
|
+
|
|
626
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
627
|
+
}
|
|
628
|
+
`,main:`
|
|
629
|
+
out = vec4<f32>(blendLinearDodge(back.rgb, front.rgb, front.a), blendedAlpha) * blendUniforms.uBlend;
|
|
630
|
+
`}})}};Ea.extension={name:`linear-dodge`,type:W.BlendMode};var Da=class extends q{constructor(){super({gl:{functions:`
|
|
631
|
+
float linearBurn(float base, float blend) {
|
|
632
|
+
return max(0.0, base + blend - 1.0);
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
float linearDodge(float base, float blend) {
|
|
636
|
+
return min(1.0, base + blend);
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
float linearLight(float base, float blend) {
|
|
640
|
+
return (blend <= 0.5) ? linearBurn(base,2.0*blend) : linearBurn(base,2.0*(blend-0.5));
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
vec3 blendLinearLight(vec3 base, vec3 blend, float opacity) {
|
|
644
|
+
vec3 blended = vec3(
|
|
645
|
+
linearLight(base.r, blend.r),
|
|
646
|
+
linearLight(base.g, blend.g),
|
|
647
|
+
linearLight(base.b, blend.b)
|
|
648
|
+
);
|
|
649
|
+
|
|
650
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
651
|
+
}
|
|
652
|
+
`,main:`
|
|
653
|
+
finalColor = vec4(blendLinearLight(back.rgb, front.rgb,front.a), blendedAlpha) * uBlend;
|
|
654
|
+
`},gpu:{functions:`
|
|
655
|
+
fn linearBurn(base: f32, blend: f32) -> f32
|
|
656
|
+
{
|
|
657
|
+
return max(0.0, base + blend - 1.0);
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
fn linearDodge(base: f32, blend: f32) -> f32
|
|
661
|
+
{
|
|
662
|
+
return min(1.0, base + blend);
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
fn linearLight(base: f32, blend: f32) -> f32
|
|
666
|
+
{
|
|
667
|
+
return select(linearBurn(base,2.0*(blend-0.5)), linearBurn(base,2.0*blend), blend <= 0.5);
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
fn blendLinearLightOpacity(base:vec3<f32>, blend:vec3<f32>, opacity:f32) -> vec3<f32>
|
|
671
|
+
{
|
|
672
|
+
let blended = vec3<f32>(
|
|
673
|
+
linearLight(base.r, blend.r),
|
|
674
|
+
linearLight(base.g, blend.g),
|
|
675
|
+
linearLight(base.b, blend.b)
|
|
676
|
+
);
|
|
677
|
+
|
|
678
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
679
|
+
}
|
|
680
|
+
`,main:`
|
|
681
|
+
out = vec4<f32>(blendLinearLightOpacity(back.rgb, front.rgb, front.a), blendedAlpha) * blendUniforms.uBlend;
|
|
682
|
+
`}})}};Da.extension={name:`linear-light`,type:W.BlendMode};var Oa=class extends q{constructor(){super({gl:{functions:`
|
|
683
|
+
${pa}
|
|
684
|
+
|
|
685
|
+
vec3 blendLuminosity(vec3 base, vec3 blend, float opacity)
|
|
686
|
+
{
|
|
687
|
+
vec3 blendLuminosity = setLuminosity(base, getLuminosity(blend));
|
|
688
|
+
return (blendLuminosity * opacity + base * (1.0 - opacity));
|
|
689
|
+
}
|
|
690
|
+
`,main:`
|
|
691
|
+
finalColor = vec4(blendLuminosity(back.rgb, front.rgb,front.a), blendedAlpha) * uBlend;
|
|
692
|
+
`},gpu:{functions:`
|
|
693
|
+
${ma}
|
|
694
|
+
|
|
695
|
+
fn blendLuminosity(base:vec3<f32>, blend:vec3<f32>, opacity:f32) -> vec3<f32>
|
|
696
|
+
{
|
|
697
|
+
let blendLuminosity: vec3<f32> = setLuminosity(base, getLuminosity(blend));
|
|
698
|
+
return (blendLuminosity * opacity + base * (1.0 - opacity));
|
|
699
|
+
}
|
|
700
|
+
`,main:`
|
|
701
|
+
out = vec4<f32>(blendLuminosity(back.rgb, front.rgb, front.a), blendedAlpha) * blendUniforms.uBlend;
|
|
702
|
+
`}})}};Oa.extension={name:`luminosity`,type:W.BlendMode};var ka=class extends q{constructor(){super({gl:{functions:`
|
|
703
|
+
vec3 negation(vec3 base, vec3 blend)
|
|
704
|
+
{
|
|
705
|
+
return 1.0-abs(1.0-base-blend);
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
vec3 blendNegation(vec3 base, vec3 blend, float opacity)
|
|
709
|
+
{
|
|
710
|
+
return (negation(base, blend) * opacity + base * (1.0 - opacity));
|
|
711
|
+
}
|
|
712
|
+
`,main:`
|
|
713
|
+
finalColor = vec4(blendNegation(back.rgb, front.rgb, front.a), blendedAlpha) * uBlend;
|
|
714
|
+
`},gpu:{functions:`
|
|
715
|
+
fn blendNegation(base: vec3<f32>, blend: vec3<f32>) -> vec3<f32>
|
|
716
|
+
{
|
|
717
|
+
return 1.0-abs(1.0-base-blend);
|
|
718
|
+
}
|
|
719
|
+
|
|
720
|
+
fn blendNegationOpacity(base: vec3<f32>, blend: vec3<f32>, opacity: f32) -> vec3<f32>
|
|
721
|
+
{
|
|
722
|
+
return (blendNegation(base, blend) * opacity + base * (1.0 - opacity));
|
|
723
|
+
}
|
|
724
|
+
`,main:`
|
|
725
|
+
out = vec4<f32>(blendNegationOpacity(back.rgb, front.rgb, front.a), blendedAlpha) * blendUniforms.uBlend;
|
|
726
|
+
`}})}};ka.extension={name:`negation`,type:W.BlendMode};var Aa=class extends q{constructor(){super({gl:{functions:`
|
|
727
|
+
float overlay(float base, float blend)
|
|
728
|
+
{
|
|
729
|
+
return (base < 0.5) ? (2.0*base*blend) : (1.0-2.0*(1.0-base)*(1.0-blend));
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
vec3 blendOverlay(vec3 base, vec3 blend, float opacity)
|
|
733
|
+
{
|
|
734
|
+
vec3 blended = vec3(
|
|
735
|
+
overlay(base.r, blend.r),
|
|
736
|
+
overlay(base.g, blend.g),
|
|
737
|
+
overlay(base.b, blend.b)
|
|
738
|
+
);
|
|
739
|
+
|
|
740
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
741
|
+
}
|
|
742
|
+
`,main:`
|
|
743
|
+
finalColor = vec4(blendOverlay(back.rgb, front.rgb,front.a), blendedAlpha) * uBlend;
|
|
744
|
+
`},gpu:{functions:`
|
|
745
|
+
fn overlay(base: f32, blend: f32) -> f32
|
|
746
|
+
{
|
|
747
|
+
return select((1.0-2.0*(1.0-base)*(1.0-blend)), (2.0*base*blend), base < 0.5);
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
fn blendOverlay(base: vec3<f32>, blend: vec3<f32>, opacity: f32) -> vec3<f32>
|
|
751
|
+
{
|
|
752
|
+
let blended = vec3<f32>(
|
|
753
|
+
overlay(base.r, blend.r),
|
|
754
|
+
overlay(base.g, blend.g),
|
|
755
|
+
overlay(base.b, blend.b)
|
|
756
|
+
);
|
|
757
|
+
|
|
758
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
759
|
+
}
|
|
760
|
+
`,main:`
|
|
761
|
+
out = vec4<f32>(blendOverlay(back.rgb, front.rgb, front.a), blendedAlpha) * blendUniforms.uBlend;
|
|
762
|
+
`}})}};Aa.extension={name:`overlay`,type:W.BlendMode};var ja=class extends q{constructor(){super({gl:{functions:`
|
|
763
|
+
float pinLight(float base, float blend)
|
|
764
|
+
{
|
|
765
|
+
return (blend <= 0.5) ? min(base, 2.0 * blend) : max(base, 2.0 * (blend - 0.5));
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
vec3 blendPinLight(vec3 base, vec3 blend, float opacity)
|
|
769
|
+
{
|
|
770
|
+
vec3 blended = vec3(
|
|
771
|
+
pinLight(base.r, blend.r),
|
|
772
|
+
pinLight(base.g, blend.g),
|
|
773
|
+
pinLight(base.b, blend.b)
|
|
774
|
+
);
|
|
775
|
+
|
|
776
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
777
|
+
}
|
|
778
|
+
`,main:`
|
|
779
|
+
finalColor = vec4(blendPinLight(back.rgb, front.rgb, front.a), blendedAlpha) * uBlend;
|
|
780
|
+
`},gpu:{functions:`
|
|
781
|
+
fn pinLight(base: f32, blend: f32) -> f32
|
|
782
|
+
{
|
|
783
|
+
return select(max(base,2.0*(blend-0.5)), min(base,2.0*blend), blend <= 0.5);
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
fn blendPinLight(base:vec3<f32>, blend:vec3<f32>, opacity:f32) -> vec3<f32>
|
|
787
|
+
{
|
|
788
|
+
let blended = vec3<f32>(
|
|
789
|
+
pinLight(base.r, blend.r),
|
|
790
|
+
pinLight(base.g, blend.g),
|
|
791
|
+
pinLight(base.b, blend.b)
|
|
792
|
+
);
|
|
793
|
+
|
|
794
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
795
|
+
}
|
|
796
|
+
`,main:`
|
|
797
|
+
out = vec4<f32>(blendPinLight(back.rgb, front.rgb, front.a), blendedAlpha) * blendUniforms.uBlend;
|
|
798
|
+
`}})}};ja.extension={name:`pin-light`,type:W.BlendMode};var Ma=class extends q{constructor(){super({gl:{functions:`
|
|
799
|
+
${pa}
|
|
800
|
+
|
|
801
|
+
vec3 blendSaturation(vec3 base, vec3 blend, float opacity)
|
|
802
|
+
{
|
|
803
|
+
vec3 blendSaturation = setLuminosity(setSaturation(base, getSaturation(blend)), getLuminosity(base));
|
|
804
|
+
return (blendSaturation * opacity + base * (1.0 - opacity));
|
|
805
|
+
}
|
|
806
|
+
`,main:`
|
|
807
|
+
finalColor = vec4(blendSaturation(back.rgb, front.rgb, front.a), blendedAlpha) * uBlend;
|
|
808
|
+
`},gpu:{functions:`
|
|
809
|
+
${ma}
|
|
810
|
+
|
|
811
|
+
fn blendSaturation(base:vec3<f32>, blend:vec3<f32>, opacity:f32) -> vec3<f32>
|
|
812
|
+
{
|
|
813
|
+
let blendSaturation = setLuminosity(setSaturation(base, getSaturation(blend)), getLuminosity(base));
|
|
814
|
+
return (blendSaturation * opacity + base * (1.0 - opacity));
|
|
815
|
+
}
|
|
816
|
+
`,main:`
|
|
817
|
+
out = vec4<f32>(blendSaturation(back.rgb, front.rgb, front.a), blendedAlpha) * blendUniforms.uBlend;
|
|
818
|
+
`}})}};Ma.extension={name:`saturation`,type:W.BlendMode};var Na=class extends q{constructor(){super({gl:{functions:`
|
|
819
|
+
float softLight(float base, float blend)
|
|
820
|
+
{
|
|
821
|
+
return (blend < 0.5) ? (2.0 * base * blend + base * base * (1.0 - 2.0 * blend)) : (sqrt(base) * (2.0 * blend - 1.0) + 2.0 * base * (1.0 - blend));
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
vec3 blendSoftLight(vec3 base, vec3 blend, float opacity)
|
|
825
|
+
{
|
|
826
|
+
vec3 blended = vec3(
|
|
827
|
+
softLight(base.r, blend.r),
|
|
828
|
+
softLight(base.g, blend.g),
|
|
829
|
+
softLight(base.b, blend.b)
|
|
830
|
+
);
|
|
831
|
+
|
|
832
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
833
|
+
}
|
|
834
|
+
`,main:`
|
|
835
|
+
finalColor = vec4(blendSoftLight(back.rgb, front.rgb, front.a), blendedAlpha) * uBlend;
|
|
836
|
+
`},gpu:{functions:`
|
|
837
|
+
fn softLight(base: f32, blend: f32) -> f32
|
|
838
|
+
{
|
|
839
|
+
return select(2.0 * base * blend + base * base * (1.0 - 2.0 * blend), sqrt(base) * (2.0 * blend - 1.0) + 2.0 * base * (1.0 - blend), blend < 0.5);
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
fn blendSoftLight(base:vec3<f32>, blend:vec3<f32>, opacity:f32) -> vec3<f32>
|
|
843
|
+
{
|
|
844
|
+
let blended: vec3<f32> = vec3<f32>(
|
|
845
|
+
softLight(base.r, blend.r),
|
|
846
|
+
softLight(base.g, blend.g),
|
|
847
|
+
softLight(base.b, blend.b)
|
|
848
|
+
);
|
|
849
|
+
|
|
850
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
851
|
+
}
|
|
852
|
+
`,main:`
|
|
853
|
+
out = vec4<f32>(blendSoftLight(back.rgb, front.rgb, front.a), blendedAlpha) * blendUniforms.uBlend;
|
|
854
|
+
`}})}};Na.extension={name:`soft-light`,type:W.BlendMode};var Pa=class extends q{constructor(){super({gl:{functions:`
|
|
855
|
+
float subtract(float base, float blend)
|
|
856
|
+
{
|
|
857
|
+
return max(0.0, base - blend);
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
vec3 blendSubtract(vec3 base, vec3 blend, float opacity)
|
|
861
|
+
{
|
|
862
|
+
vec3 blended = vec3(
|
|
863
|
+
subtract(base.r, blend.r),
|
|
864
|
+
subtract(base.g, blend.g),
|
|
865
|
+
subtract(base.b, blend.b)
|
|
866
|
+
);
|
|
867
|
+
|
|
868
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
869
|
+
}
|
|
870
|
+
`,main:`
|
|
871
|
+
finalColor = vec4(blendSubtract(back.rgb, front.rgb, front.a), blendedAlpha) * uBlend;
|
|
872
|
+
`},gpu:{functions:`
|
|
873
|
+
fn subtract(base: f32, blend: f32) -> f32
|
|
874
|
+
{
|
|
875
|
+
return max(0, base - blend);
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
fn blendSubtract(base:vec3<f32>, blend:vec3<f32>, opacity:f32) -> vec3<f32>
|
|
879
|
+
{
|
|
880
|
+
let blended = vec3<f32>(
|
|
881
|
+
subtract(base.r, blend.r),
|
|
882
|
+
subtract(base.g, blend.g),
|
|
883
|
+
subtract(base.b, blend.b)
|
|
884
|
+
);
|
|
885
|
+
|
|
886
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
887
|
+
}
|
|
888
|
+
`,main:`
|
|
889
|
+
out = vec4<f32>(blendSubtract(back.rgb, front.rgb, front.a), blendedAlpha) * blendUniforms.uBlend;
|
|
890
|
+
`}})}};Pa.extension={name:`subtract`,type:W.BlendMode};var Fa=class extends q{constructor(){super({gl:{functions:`
|
|
891
|
+
float colorBurn(float base, float blend)
|
|
892
|
+
{
|
|
893
|
+
return max((1.0-((1.0-base)/blend)),0.0);
|
|
894
|
+
}
|
|
895
|
+
|
|
896
|
+
float colorDodge(float base, float blend)
|
|
897
|
+
{
|
|
898
|
+
return min(1.0, base / (1.0-blend));
|
|
899
|
+
}
|
|
900
|
+
|
|
901
|
+
float vividLight(float base, float blend)
|
|
902
|
+
{
|
|
903
|
+
return (blend < 0.5) ? colorBurn(base,(2.0*blend)) : colorDodge(base,(2.0*(blend-0.5)));
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
vec3 blendVividLight(vec3 base, vec3 blend, float opacity)
|
|
907
|
+
{
|
|
908
|
+
vec3 blended = vec3(
|
|
909
|
+
vividLight(base.r, blend.r),
|
|
910
|
+
vividLight(base.g, blend.g),
|
|
911
|
+
vividLight(base.b, blend.b)
|
|
912
|
+
);
|
|
913
|
+
|
|
914
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
915
|
+
}
|
|
916
|
+
`,main:`
|
|
917
|
+
finalColor = vec4(blendVividLight(back.rgb, front.rgb,front.a), blendedAlpha) * uBlend;
|
|
918
|
+
`},gpu:{functions:`
|
|
919
|
+
fn colorBurn(base:f32, blend:f32) -> f32
|
|
920
|
+
{
|
|
921
|
+
return max((1.0-((1.0-base)/blend)),0.0);
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
fn colorDodge(base: f32, blend: f32) -> f32
|
|
925
|
+
{
|
|
926
|
+
return min(1.0, base / (1.0-blend));
|
|
927
|
+
}
|
|
928
|
+
|
|
929
|
+
fn vividLight(base: f32, blend: f32) -> f32
|
|
930
|
+
{
|
|
931
|
+
return select(colorDodge(base,(2.0*(blend-0.5))), colorBurn(base,(2.0*blend)), blend<0.5);
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
fn blendVividLight(base: vec3<f32>, blend: vec3<f32>, opacity: f32) -> vec3<f32>
|
|
935
|
+
{
|
|
936
|
+
let blended: vec3<f32> = vec3<f32>(
|
|
937
|
+
vividLight(base.r, blend.r),
|
|
938
|
+
vividLight(base.g, blend.g),
|
|
939
|
+
vividLight(base.b, blend.b)
|
|
940
|
+
);
|
|
941
|
+
|
|
942
|
+
return (blended * opacity + base * (1.0 - opacity));
|
|
943
|
+
}
|
|
944
|
+
`,main:`
|
|
945
|
+
out = vec4<f32>(blendVividLight(back.rgb, front.rgb, front.a), blendedAlpha) * blendUniforms.uBlend;
|
|
946
|
+
`}})}};Fa.extension={name:`vivid-light`,type:W.BlendMode};var Ia;function La(e){return Ia===void 0&&(Ia=(()=>{let t={stencil:!0,failIfMajorPerformanceCaveat:e??Mr.defaultOptions.failIfMajorPerformanceCaveat};try{if(!r.get().getWebGLRenderingContext())return!1;let e=r.get().createCanvas().getContext(`webgl`,t),n=!!e?.getContextAttributes()?.stencil;if(e){let t=e.getExtension(`WEBGL_lose_context`);t&&t.loseContext()}return e=null,n}catch{return!1}})()),Ia}var Ra;async function za(e={}){return Ra===void 0&&(Ra=await(async()=>{let t=r.get().getNavigator().gpu;if(!t)return!1;try{return await(await t.requestAdapter(e)).requestDevice(),!0}catch{return!1}})()),Ra}var Ba=[`webgl`,`webgpu`,`canvas`];async function Va(e){let n=[];e.preference?Array.isArray(e.preference)?n=e.preference.slice():(n.push(e.preference),Ba.forEach(t=>{t!==e.preference&&n.push(t)})):n=Ba.slice();let r,i={};for(let a=0;a<n.length;a++){let o=n[a];if(o===`webgpu`&&await za()){let{WebGPURenderer:n}=await t(async()=>{let{WebGPURenderer:e}=await import(`./C85NG5lS.js`);return{WebGPURenderer:e}},[],import.meta.url);r=n,i={...e,...e.webgpu};break}else if(o===`webgl`&&La(e.failIfMajorPerformanceCaveat??Mr.defaultOptions.failIfMajorPerformanceCaveat)){let{WebGLRenderer:n}=await t(async()=>{let{WebGLRenderer:e}=await import(`./D4vfNy_f.js`);return{WebGLRenderer:e}},[],import.meta.url);r=n,i={...e,...e.webgl};break}else if(o===`canvas`){let{CanvasRenderer:n}=await t(async()=>{let{CanvasRenderer:e}=await import(`./DTOO9nUj.js`);return{CanvasRenderer:e}},[],import.meta.url);r=n,i={...e,...e.canvasOptions};break}}if(delete i.webgpu,delete i.webgl,delete i.canvasOptions,!r)throw Error(`No available renderer for the current environment`);let a=new r;return await a.init(i),a}var Ha=class{static init(e){Object.defineProperty(this,"resizeTo",{configurable:!0,set(e){globalThis.removeEventListener(`resize`,this.queueResize),this._resizeTo=e,e&&(globalThis.addEventListener(`resize`,this.queueResize),this.resize())},get(){return this._resizeTo}}),this.queueResize=()=>{this._resizeTo&&(this._cancelResize(),this._resizeId=requestAnimationFrame(()=>this.resize()))},this._cancelResize=()=>{this._resizeId&&=(cancelAnimationFrame(this._resizeId),null)},this.resize=()=>{if(!this._resizeTo)return;this._cancelResize();let e,t;if(this._resizeTo===globalThis.window)e=globalThis.innerWidth,t=globalThis.innerHeight;else{let{clientWidth:n,clientHeight:r}=this._resizeTo;e=n,t=r}this.renderer.resize(e,t),this.render()},this._resizeId=null,this._resizeTo=null,this.resizeTo=e.resizeTo||null}static destroy(){globalThis.removeEventListener(`resize`,this.queueResize),this._cancelResize(),this._cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}};Ha.extension=W.Application;var Ua=class{static init(e){e=Object.assign({autoStart:!0,sharedTicker:!1},e),Object.defineProperty(this,"ticker",{configurable:!0,set(e){this._ticker&&this._ticker.remove(this.render,this),this._ticker=e,e&&e.add(this.render,this,Qe.LOW)},get(){return this._ticker}}),this.stop=()=>{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=e.sharedTicker?it.shared:new it,e.autoStart&&this.start()}static destroy(){if(this._ticker){let e=this._ticker;this.ticker=null,e.destroy()}}};Ua.extension=W.Application,F.add(Ha),F.add(Ua);var Wa=class e{constructor(...e){this.stage=new ot,e[0]!==void 0&&y(n,`Application constructor options are deprecated, please use Application.init() instead.`)}async init(t){t={...t},this.stage||=new ot,this.renderer=await Va(t),e._plugins.forEach(e=>{e.init.call(this,t)})}render(){this.renderer.render({container:this.stage})}get canvas(){return this.renderer.canvas}get view(){return y(n,`Application.view is deprecated, please use Application.canvas instead.`),this.renderer.canvas}get screen(){return this.renderer.screen}get domContainerRoot(){return this.renderer.renderPipes.dom?._domElement}destroy(t=!1,n=!1){let r=e._plugins.slice(0);r.reverse(),r.forEach(e=>{e.destroy.call(this)}),this.stage.destroy(n),this.stage=null,this.renderer.destroy(t),this.renderer=null}};Wa._plugins=[];var Ga=Wa;F.handleByList(W.Application,Ga._plugins),F.add(mr);var Ka={test(e){return typeof e==`string`&&e.startsWith(`info face=`)},parse(e){let t=e.match(/^[a-z]+\s+.+$/gm),n={info:[],common:[],page:[],char:[],chars:[],kerning:[],kernings:[],distanceField:[]};for(let e in t){let r=t[e].match(/^[a-z]+/gm)[0],i=t[e].match(/[a-zA-Z]+=([^\s"']+|"([^"]*)")/gm),a={};for(let e in i){let t=i[e].split(`=`),n=t[0],r=t[1].replace(/"/gm,``),o=parseFloat(r);a[n]=isNaN(o)?r:o}n[r].push(a)}let r={chars:{},pages:[],lineHeight:0,fontSize:0,fontFamily:``,distanceField:null,baseLineOffset:0},[i]=n.info,[a]=n.common,[o]=n.distanceField??[];o&&(r.distanceField={range:parseInt(o.distanceRange,10),type:o.fieldType}),r.fontSize=parseInt(i.size,10),r.fontFamily=i.face,r.lineHeight=parseInt(a.lineHeight,10);let s=n.page;for(let e=0;e<s.length;e++)r.pages.push({id:parseInt(s[e].id,10)||0,file:s[e].file});let c={};r.baseLineOffset=r.lineHeight-parseInt(a.base,10);let l=n.char;for(let e=0;e<l.length;e++){let t=l[e],n=parseInt(t.id,10),i=t.letter??t.char??String.fromCharCode(n);i===`space`&&(i=` `),c[n]=i,r.chars[i]={id:n,page:parseInt(t.page,10)||0,x:parseInt(t.x,10),y:parseInt(t.y,10),width:parseInt(t.width,10),height:parseInt(t.height,10),xOffset:parseInt(t.xoffset,10),yOffset:parseInt(t.yoffset,10),xAdvance:parseInt(t.xadvance,10),kerning:{}}}let u=n.kerning||[];for(let e=0;e<u.length;e++){let t=parseInt(u[e].first,10),n=parseInt(u[e].second,10),i=parseInt(u[e].amount,10);r.chars[c[n]]&&(r.chars[c[n]].kerning[c[t]]=i)}return r}},qa={test(e){let t=e;return typeof t!=`string`&&`getElementsByTagName`in t&&t.getElementsByTagName(`page`).length&&t.getElementsByTagName(`info`)[0].getAttribute(`face`)!==null},parse(e){let t={chars:{},pages:[],lineHeight:0,fontSize:0,fontFamily:``,distanceField:null,baseLineOffset:0},n=e.getElementsByTagName(`info`)[0],r=e.getElementsByTagName(`common`)[0],i=e.getElementsByTagName(`distanceField`)[0];i&&(t.distanceField={type:i.getAttribute(`fieldType`),range:parseInt(i.getAttribute(`distanceRange`),10)});let a=e.getElementsByTagName(`page`),o=e.getElementsByTagName(`char`),s=e.getElementsByTagName(`kerning`);t.fontSize=parseInt(n.getAttribute(`size`),10),t.fontFamily=n.getAttribute(`face`),t.lineHeight=parseInt(r.getAttribute(`lineHeight`),10);for(let e=0;e<a.length;e++)t.pages.push({id:parseInt(a[e].getAttribute(`id`),10)||0,file:a[e].getAttribute(`file`)});let c={};t.baseLineOffset=t.lineHeight-parseInt(r.getAttribute(`base`),10);for(let e=0;e<o.length;e++){let n=o[e],r=parseInt(n.getAttribute(`id`),10),i=n.getAttribute(`letter`)??n.getAttribute(`char`)??String.fromCharCode(r);i===`space`&&(i=` `),c[r]=i,t.chars[i]={id:r,page:parseInt(n.getAttribute(`page`),10)||0,x:parseInt(n.getAttribute(`x`),10),y:parseInt(n.getAttribute(`y`),10),width:parseInt(n.getAttribute(`width`),10),height:parseInt(n.getAttribute(`height`),10),xOffset:parseInt(n.getAttribute(`xoffset`),10),yOffset:parseInt(n.getAttribute(`yoffset`),10),xAdvance:parseInt(n.getAttribute(`xadvance`),10),kerning:{}}}for(let e=0;e<s.length;e++){let n=parseInt(s[e].getAttribute(`first`),10),r=parseInt(s[e].getAttribute(`second`),10),i=parseInt(s[e].getAttribute(`amount`),10);t.chars[c[r]]&&(t.chars[c[r]].kerning[c[n]]=i)}return t}},Ja={test(e){return typeof e==`string`&&e.match(/<font(\s|>)/)?qa.test(r.get().parseXML(e)):!1},parse(e){return qa.parse(r.get().parseXML(e))}},Ya=[`.xml`,`.fnt`],Xa={extension:{type:W.CacheParser,name:`cacheBitmapFont`},test:e=>!!e?.pages&&!!e?.chars&&typeof e?.fontFamily==`string`&&e.fontFamily!==``,getCacheableAssets(e,t){let n={};return e.forEach(e=>{n[e]=t,n[`${e}-bitmap`]=t}),n[`${t.fontFamily}-bitmap`]=t,n}},Za={extension:{type:W.LoadParser,priority:Vt.Normal},name:`loadBitmapFont`,id:`bitmap-font`,test(e){return Ya.includes(kt.extname(e).toLowerCase())},async testParse(e){return Ka.test(e)||Ja.test(e)},async parse(e,n,r){let i=Ka.test(e)?Ka.parse(e):Ja.parse(e),{src:a}=n,{pages:o}=i,s=[],c=i.distanceField?{scaleMode:`linear`,alphaMode:`premultiply-alpha-on-upload`,autoGenerateMipmaps:!1,resolution:1}:{};for(let e=0;e<o.length;++e){let t=o[e].file,n=kt.join(kt.dirname(a),t);n=Et(n,a),s.push({src:n,data:c})}let[l,{BitmapFont:u}]=await Promise.all([r.load(s),t(()=>import(`./CJbr-v9X.js`),[],import.meta.url)]);return new u({data:i,textures:s.map(e=>l[e.src])},a)},async load(e,t){return await(await r.get().fetch(e)).text()},async unload(e,t,n){await Promise.all(e.pages.map(e=>n.unload(e.texture.source._sourceOrigin))),e.destroy()}},Qa=class{constructor(e,t=!1){this._loader=e,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=t}add(e){e.forEach(e=>{this._assetList.push(e)}),this.verbose&&console.log(`[BackgroundLoader] assets: `,this._assetList),this._isActive&&!this._isLoading&&this._next()}async _next(){if(this._assetList.length&&this._isActive){this._isLoading=!0;let e=[],t=Math.min(this._assetList.length,this._maxConcurrent);for(let n=0;n<t;n++)e.push(this._assetList.pop());await this._loader.load(e),this._isLoading=!1,this._next()}}get active(){return this._isActive}set active(e){this._isActive!==e&&(this._isActive=e,e&&!this._isLoading&&this._next())}},$a={extension:{type:W.CacheParser,name:`cacheTextureArray`},test:e=>Array.isArray(e)&&e.every(e=>e instanceof h),getCacheableAssets:(e,t)=>{let n={};return e.forEach(e=>{t.forEach((t,r)=>{n[e+(r===0?``:r+1)]=t})}),n}};async function eo(e){if(`Image`in globalThis)return new Promise(t=>{let n=new Image;n.onload=()=>{t(!0)},n.onerror=()=>{t(!1)},n.src=e});if(`createImageBitmap`in globalThis&&`fetch`in globalThis){try{let t=await(await fetch(e)).blob();await createImageBitmap(t)}catch{return!1}return!0}return!1}var to={extension:{type:W.DetectionParser,priority:1},test:async()=>eo(`data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=`),add:async e=>[...e,`avif`],remove:async e=>e.filter(e=>e!==`avif`)},no=[`png`,`jpg`,`jpeg`],ro={extension:{type:W.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async e=>[...e,...no],remove:async e=>e.filter(e=>!no.includes(e))},io=`WorkerGlobalScope`in globalThis&&globalThis instanceof globalThis.WorkerGlobalScope;function ao(e){return io?!1:document.createElement(`video`).canPlayType(e)!==``}var oo={extension:{type:W.DetectionParser,priority:0},test:async()=>ao(`video/mp4`),add:async e=>[...e,`mp4`,`m4v`],remove:async e=>e.filter(e=>e!==`mp4`&&e!==`m4v`)},so={extension:{type:W.DetectionParser,priority:0},test:async()=>ao(`video/ogg`),add:async e=>[...e,`ogv`],remove:async e=>e.filter(e=>e!==`ogv`)},co={extension:{type:W.DetectionParser,priority:0},test:async()=>ao(`video/webm`),add:async e=>[...e,`webm`],remove:async e=>e.filter(e=>e!==`webm`)},lo={extension:{type:W.DetectionParser,priority:0},test:async()=>eo(`data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=`),add:async e=>[...e,`webp`],remove:async e=>e.filter(e=>e!==`webp`)},uo=class e{constructor(){this.loadOptions={...e.defaultOptions},this._parsers=[],this._parsersValidated=!1,this.parsers=new Proxy(this._parsers,{set:(e,t,n)=>(this._parsersValidated=!1,e[t]=n,!0)}),this.promiseCache={}}reset(){this._parsersValidated=!1,this.promiseCache={}}_getLoadPromiseAndParser(e,t){let n={promise:null,parser:null};return n.promise=(async()=>{let r=null,i=null;if((t.parser||t.loadParser)&&(i=this._parserHash[t.parser||t.loadParser],t.loadParser&&D(`[Assets] "loadParser" is deprecated, use "parser" instead for ${e}`),i||D(`[Assets] specified load parser "${t.parser||t.loadParser}" not found while loading ${e}`)),!i){for(let n=0;n<this.parsers.length;n++){let r=this.parsers[n];if(r.load&&r.test?.(e,t,this)){i=r;break}}if(!i)return D(`[Assets] ${e} could not be loaded as we don't know how to parse it, ensure the correct parser has been added`),null}r=await i.load(e,t,this),n.parser=i;for(let e=0;e<this.parsers.length;e++){let i=this.parsers[e];i.parse&&i.parse&&await i.testParse?.(r,t,this)&&(r=await i.parse(r,t,this)||r,n.parser=i)}return r})(),n}async load(t,n){this._parsersValidated||this._validateParsers();let{onProgress:r,onError:i,strategy:a,retryCount:o,retryDelay:s}=typeof n==`function`?{...e.defaultOptions,...this.loadOptions,onProgress:n}:{...e.defaultOptions,...this.loadOptions,...n||{}},c=0,l={},u=Ot(t),d=tn(t,e=>({alias:[e],src:e,data:{}})),f=d.reduce((e,t)=>e+(t.progressSize||1),0),p=d.map(async e=>{let t=kt.toAbsolute(e.src);l[e.src]||(await this._loadAssetWithRetry(t,e,{onProgress:r,onError:i,strategy:a,retryCount:o,retryDelay:s},l),c+=e.progressSize||1,r&&r(c/f))});return await Promise.all(p),u?l[d[0].src]:l}async unload(e){let t=tn(e,e=>({alias:[e],src:e})).map(async e=>{let t=kt.toAbsolute(e.src),n=this.promiseCache[t];if(n){let r=await n.promise;delete this.promiseCache[t],await n.parser?.unload?.(r,e,this)}});await Promise.all(t)}_validateParsers(){this._parsersValidated=!0,this._parserHash=this._parsers.filter(e=>e.name||e.id).reduce((e,t)=>(!t.name&&!t.id?D(`[Assets] parser should have an id`):(e[t.name]||e[t.id])&&D(`[Assets] parser id conflict "${t.id}"`),e[t.name]=t,t.id&&(e[t.id]=t),e),{})}async _loadAssetWithRetry(e,t,n,r){let i=0,{onError:a,strategy:o,retryCount:s,retryDelay:c}=n,l=e=>new Promise(t=>setTimeout(t,e));for(;;)try{this.promiseCache[e]||(this.promiseCache[e]=this._getLoadPromiseAndParser(e,t)),r[t.src]=await this.promiseCache[e].promise;return}catch(n){if(delete this.promiseCache[e],delete r[t.src],i++,o===`retry`&&!(o!==`retry`||i>s)){a&&a(n,t),await l(c);continue}if(o===`skip`){a&&a(n,t);return}a&&a(n,t);let u=Error(`[Loader.load] Failed to load ${e}.
|
|
947
|
+
${n}`);throw n instanceof Error&&n.stack&&(u.stack=n.stack),u}}};uo.defaultOptions={onProgress:void 0,onError:void 0,strategy:`throw`,retryCount:3,retryDelay:250};var fo=uo;function po(e,t){if(Array.isArray(t)){for(let n of t)if(e.startsWith(`data:${n}`))return!0;return!1}return e.startsWith(`data:${t}`)}function mo(e,t){let n=e.split(`?`)[0],r=kt.extname(n).toLowerCase();return Array.isArray(t)?t.includes(r):r===t}var ho=`.json`,go=`application/json`,_o={extension:{type:W.LoadParser,priority:Vt.Low},name:`loadJson`,id:`json`,test(e){return po(e,go)||mo(e,ho)},async load(e){return await(await r.get().fetch(e)).json()}},vo=`.txt`,yo=`text/plain`,bo={name:`loadTxt`,id:`text`,extension:{type:W.LoadParser,priority:Vt.Low,name:`loadTxt`},test(e){return po(e,yo)||mo(e,vo)},async load(e){return await(await r.get().fetch(e)).text()}},xo=[`normal`,`bold`,`100`,`200`,`300`,`400`,`500`,`600`,`700`,`800`,`900`],So=[`.ttf`,`.otf`,`.woff`,`.woff2`],Co=[`font/ttf`,`font/otf`,`font/woff`,`font/woff2`],wo=/^(--|-?[A-Z_])[0-9A-Z_-]*$/i;function To(e){let t=kt.extname(e),n=kt.basename(e,t).replace(/(-|_)/g,` `).toLowerCase().split(` `).map(e=>e.charAt(0).toUpperCase()+e.slice(1)),r=n.length>0;for(let e of n)if(!e.match(wo)){r=!1;break}let i=n.join(` `);return r||(i=`"${i.replace(/[\\"]/g,`\\$&`)}"`),i}var Eo=/^[0-9A-Za-z%:/?#\[\]@!\$&'()\*\+,;=\-._~]*$/;function Do(e){return Eo.test(e)?e:encodeURI(e)}var Oo={extension:{type:W.LoadParser,priority:Vt.Low},name:`loadWebFont`,id:`web-font`,test(e){return po(e,Co)||mo(e,So)},async load(e,t){let n=r.get().getFontFaceSet();if(n){let r=[],i=t.data?.family??To(e),a=t.data?.weights?.filter(e=>xo.includes(e))??[`normal`],o=t.data??{};for(let t=0;t<a.length;t++){let s=a[t],c=new FontFace(i,`url('${Do(e)}')`,{...o,weight:s});await c.load(),n.add(c),r.push(c)}return G.has(`${i}-and-url`)?G.get(`${i}-and-url`).entries.push({url:e,faces:r}):G.set(`${i}-and-url`,{entries:[{url:e,faces:r}]}),r.length===1?r[0]:r}return D(`[loadWebFont] FontFace API is not supported. Skipping loading font`),null},unload(e){let t=Array.isArray(e)?e:[e],n=t[0].family,i=G.get(`${n}-and-url`),a=i.entries.find(e=>e.faces.some(e=>t.indexOf(e)!==-1));a.faces=a.faces.filter(e=>t.indexOf(e)===-1),a.faces.length===0&&(i.entries=i.entries.filter(e=>e!==a)),t.forEach(e=>{r.get().getFontFaceSet().delete(e)}),i.entries.length===0&&G.remove(`${n}-and-url`)}};function ko(e,t=1){let n=Qt.RETINA_PREFIX?.exec(e);return n?parseFloat(n[1]):t}function Ao(e,t,n){e.label=n,e._sourceOrigin=n;let r=new h({source:e,label:n}),i=()=>{delete t.promiseCache[n],G.has(n)&&G.remove(n)};return r.source.once(`destroy`,()=>{t.promiseCache[n]&&(D(`[Assets] A TextureSource managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the TextureSource.`),i())}),r.once(`destroy`,()=>{e.destroyed||(D(`[Assets] A Texture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the Texture.`),i())}),r}var jo=`.svg`,Mo=`image/svg+xml`,No={extension:{type:W.LoadParser,priority:Vt.Low,name:`loadSVG`},name:`loadSVG`,id:`svg`,config:{crossOrigin:`anonymous`,parseAsGraphicsContext:!1},test(e){return po(e,Mo)||mo(e,jo)},async load(e,t,n){return t.data?.parseAsGraphicsContext??this.config.parseAsGraphicsContext?Fo(e):Po(e,t,n,this.config.crossOrigin)},unload(e){e.destroy(!0)}};async function Po(e,t,n,i){let a=await r.get().fetch(e),o=r.get().createImage();o.src=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(await a.text())}`,o.crossOrigin=i,await o.decode();let s=t.data?.width??o.width,c=t.data?.height??o.height,l=t.data?.resolution||ko(e),u=Math.ceil(s*l),d=Math.ceil(c*l),f=r.get().createCanvas(u,d),p=f.getContext(`2d`);p.imageSmoothingEnabled=!0,p.imageSmoothingQuality=`high`,p.drawImage(o,0,0,s*l,c*l);let{parseAsGraphicsContext:m,...h}=t.data??{};return Ao(new nn({resource:f,alphaMode:`premultiply-alpha-on-upload`,resolution:l,...h}),n,e)}async function Fo(e){let t=await(await r.get().fetch(e)).text(),n=new er;return n.svg(t),n}var Io=`(function () {
|
|
948
|
+
'use strict';
|
|
949
|
+
|
|
950
|
+
const WHITE_PNG = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII=";
|
|
951
|
+
async function checkImageBitmap() {
|
|
952
|
+
try {
|
|
953
|
+
if (typeof createImageBitmap !== "function") return false;
|
|
954
|
+
const response = await fetch(WHITE_PNG);
|
|
955
|
+
const imageBlob = await response.blob();
|
|
956
|
+
const imageBitmap = await createImageBitmap(imageBlob);
|
|
957
|
+
return imageBitmap.width === 1 && imageBitmap.height === 1;
|
|
958
|
+
} catch (_e) {
|
|
959
|
+
return false;
|
|
960
|
+
}
|
|
961
|
+
}
|
|
962
|
+
void checkImageBitmap().then((result) => {
|
|
963
|
+
self.postMessage(result);
|
|
964
|
+
});
|
|
965
|
+
|
|
966
|
+
})();
|
|
967
|
+
`,Lo=null,Ro=class{constructor(){Lo||=URL.createObjectURL(new Blob([Io],{type:`application/javascript`})),this.worker=new Worker(Lo)}};Ro.revokeObjectURL=function(){Lo&&=(URL.revokeObjectURL(Lo),null)};var zo=`(function () {
|
|
968
|
+
'use strict';
|
|
969
|
+
|
|
970
|
+
async function loadImageBitmap(url, alphaMode) {
|
|
971
|
+
const response = await fetch(url);
|
|
972
|
+
if (!response.ok) {
|
|
973
|
+
throw new Error(\`[WorkerManager.loadImageBitmap] Failed to fetch \${url}: \${response.status} \${response.statusText}\`);
|
|
974
|
+
}
|
|
975
|
+
const imageBlob = await response.blob();
|
|
976
|
+
return alphaMode === "premultiplied-alpha" ? createImageBitmap(imageBlob, { premultiplyAlpha: "none" }) : createImageBitmap(imageBlob);
|
|
977
|
+
}
|
|
978
|
+
self.onmessage = async (event) => {
|
|
979
|
+
try {
|
|
980
|
+
const imageBitmap = await loadImageBitmap(event.data.data[0], event.data.data[1]);
|
|
981
|
+
self.postMessage({
|
|
982
|
+
data: imageBitmap,
|
|
983
|
+
uuid: event.data.uuid,
|
|
984
|
+
id: event.data.id
|
|
985
|
+
}, [imageBitmap]);
|
|
986
|
+
} catch (e) {
|
|
987
|
+
self.postMessage({
|
|
988
|
+
error: e,
|
|
989
|
+
uuid: event.data.uuid,
|
|
990
|
+
id: event.data.id
|
|
991
|
+
});
|
|
992
|
+
}
|
|
993
|
+
};
|
|
994
|
+
|
|
995
|
+
})();
|
|
996
|
+
`,Bo=null,Vo=class{constructor(){Bo||=URL.createObjectURL(new Blob([zo],{type:`application/javascript`})),this.worker=new Worker(Bo)}};Vo.revokeObjectURL=function(){Bo&&=(URL.revokeObjectURL(Bo),null)};var Ho=0,Uo,Wo=new class{constructor(){this._initialized=!1,this._createdWorkers=0,this._workerPool=[],this._queue=[],this._resolveHash={}}isImageBitmapSupported(){return this._isImageBitmapSupported===void 0&&(this._isImageBitmapSupported=new Promise(e=>{let{worker:t}=new Ro;t.addEventListener(`message`,n=>{t.terminate(),Ro.revokeObjectURL(),e(n.data)})})),this._isImageBitmapSupported}loadImageBitmap(e,t){return this._run(`loadImageBitmap`,[e,t?.data?.alphaMode])}async _initWorkers(){this._initialized||=!0}_getWorker(){Uo===void 0&&(Uo=navigator.hardwareConcurrency||4);let e=this._workerPool.pop();return!e&&this._createdWorkers<Uo&&(this._createdWorkers++,e=new Vo().worker,e.addEventListener(`message`,e=>{this._complete(e.data),this._returnWorker(e.target),this._next()})),e}_returnWorker(e){this._workerPool.push(e)}_complete(e){this._resolveHash[e.uuid]&&(e.error===void 0?this._resolveHash[e.uuid].resolve(e.data):this._resolveHash[e.uuid].reject(e.error),delete this._resolveHash[e.uuid])}async _run(e,t){await this._initWorkers();let n=new Promise((n,r)=>{this._queue.push({id:e,arguments:t,resolve:n,reject:r})});return this._next(),n}_next(){if(!this._queue.length)return;let e=this._getWorker();if(!e)return;let t=this._queue.pop(),n=t.id;this._resolveHash[Ho]={resolve:t.resolve,reject:t.reject},e.postMessage({data:t.arguments,uuid:Ho++,id:n})}reset(){this._workerPool.forEach(e=>e.terminate()),this._workerPool.length=0,Object.values(this._resolveHash).forEach(({reject:e})=>{e?.(Error(`WorkerManager has been reset before completion`))}),this._resolveHash={},this._queue.length=0,this._initialized=!1,this._createdWorkers=0}},Go=[`.jpeg`,`.jpg`,`.png`,`.webp`,`.avif`],Ko=[`image/jpeg`,`image/png`,`image/webp`,`image/avif`];async function qo(e,t){let n=await r.get().fetch(e);if(!n.ok)throw Error(`[loadImageBitmap] Failed to fetch ${e}: ${n.status} ${n.statusText}`);let i=await n.blob();return t?.data?.alphaMode===`premultiplied-alpha`?createImageBitmap(i,{premultiplyAlpha:`none`}):createImageBitmap(i)}var Jo={name:`loadTextures`,id:`texture`,extension:{type:W.LoadParser,priority:Vt.High,name:`loadTextures`},config:{preferWorkers:!0,preferCreateImageBitmap:!0,crossOrigin:`anonymous`},test(e){return po(e,Ko)||mo(e,Go)},async load(e,t,n){let i=null;return i=globalThis.createImageBitmap&&this.config.preferCreateImageBitmap?this.config.preferWorkers&&await Wo.isImageBitmapSupported()?await Wo.loadImageBitmap(e,t):await qo(e,t):await new Promise((t,n)=>{i=r.get().createImage(),i.crossOrigin=this.config.crossOrigin,i.src=e,i.complete?t(i):(i.onload=()=>{t(i)},i.onerror=n)}),Ao(new nn({resource:i,alphaMode:`premultiply-alpha-on-upload`,resolution:t.data?.resolution||ko(e),...t.data}),n,e)},unload(e){e.destroy(!0)}},Yo=[`.mp4`,`.m4v`,`.webm`,`.ogg`,`.ogv`,`.h264`,`.avi`,`.mov`],Xo,Zo;function Qo(e,t,n){n===void 0&&!t.startsWith(`data:`)?e.crossOrigin=es(t):n!==!1&&(e.crossOrigin=typeof n==`string`?n:`anonymous`)}function $o(e){return new Promise((t,n)=>{e.addEventListener(`canplaythrough`,r),e.addEventListener(`error`,i),e.load();function r(){a(),t()}function i(e){a(),n(e)}function a(){e.removeEventListener(`canplaythrough`,r),e.removeEventListener(`error`,i)}})}function es(e,t=globalThis.location){if(e.startsWith(`data:`))return``;t||=globalThis.location;let n=new URL(e,document.baseURI);return n.hostname!==t.hostname||n.port!==t.port||n.protocol!==t.protocol?`anonymous`:``}function ts(){let e=[],t=[];for(let n of Yo){let r=Ut.MIME_TYPES[n.substring(1)]||`video/${n.substring(1)}`;ao(r)&&(e.push(n),t.includes(r)||t.push(r))}return{validVideoExtensions:e,validVideoMime:t}}var ns={name:`loadVideo`,id:`video`,extension:{type:W.LoadParser,name:`loadVideo`},test(e){if(!Xo||!Zo){let{validVideoExtensions:e,validVideoMime:t}=ts();Xo=e,Zo=t}let t=po(e,Zo),n=mo(e,Xo);return t||n},async load(e,t,n){let r={...Ut.defaultOptions,resolution:t.data?.resolution||ko(e),alphaMode:t.data?.alphaMode||await zt(),...t.data},i=document.createElement(`video`),a={preload:r.autoLoad===!1?void 0:`auto`,"webkit-playsinline":r.playsinline===!1?void 0:``,playsinline:r.playsinline===!1?void 0:``,muted:r.muted===!0?``:void 0,loop:r.loop===!0?``:void 0,autoplay:r.autoPlay===!1?void 0:``};Object.keys(a).forEach(e=>{let t=a[e];t!==void 0&&i.setAttribute(e,t)}),r.muted===!0&&(i.muted=!0),Qo(i,e,r.crossorigin);let o=document.createElement(`source`),s;if(r.mime)s=r.mime;else if(e.startsWith(`data:`))s=e.slice(5,e.indexOf(`;`));else if(!e.startsWith(`blob:`)){let t=e.split(`?`)[0].slice(e.lastIndexOf(`.`)+1).toLowerCase();s=Ut.MIME_TYPES[t]||`video/${t}`}return o.src=e,s&&(o.type=s),new Promise((a,s)=>{r.preload&&!r.autoPlay&&i.load(),i.addEventListener(`canplay`,c),i.addEventListener(`error`,l),o.addEventListener(`error`,l),i.appendChild(o);async function c(){let o=new Ut({...r,resource:i});u(),t.data.preload&&await $o(i),a(Ao(o,n,e))}function l(e){u(),s(e)}function u(){i.removeEventListener(`canplay`,c),i.removeEventListener(`error`,l),o.removeEventListener(`error`,l)}})},unload(e){e.destroy(!0)}},rs={extension:{type:W.ResolveParser,name:`resolveTexture`},test:Jo.test,parse:e=>({resolution:parseFloat(Qt.RETINA_PREFIX.exec(e)?.[1]??`1`),format:e.split(`.`).pop(),src:e})},is={extension:{type:W.ResolveParser,priority:-2,name:`resolveJson`},test:e=>Qt.RETINA_PREFIX.test(e)&&e.endsWith(`.json`),parse:rs.parse},as=class{constructor(){this._detections=[],this._initialized=!1,this.resolver=new Qt,this.loader=new fo,this.cache=G,this._backgroundLoader=new Qa(this.loader),this._backgroundLoader.active=!0,this.reset()}async init(e={}){if(this._initialized){D(`[Assets]AssetManager already initialized, did you load before calling this Assets.init()?`);return}if(this._initialized=!0,e.defaultSearchParams&&this.resolver.setDefaultSearchParams(e.defaultSearchParams),e.basePath&&(this.resolver.basePath=e.basePath),e.bundleIdentifier&&this.resolver.setBundleIdentifier(e.bundleIdentifier),e.manifest){let t=e.manifest;typeof t==`string`&&(t=await this.load(t)),this.resolver.addManifest(t)}let t=e.texturePreference?.resolution??1,n=typeof t==`number`?[t]:t,r=await this._detectFormats({preferredFormats:e.texturePreference?.format,skipDetections:e.skipDetections,detections:this._detections});this.resolver.prefer({params:{format:r,resolution:n}}),e.preferences&&this.setPreferences(e.preferences),e.loadOptions&&(this.loader.loadOptions={...this.loader.loadOptions,...e.loadOptions})}add(e){this.resolver.add(e)}async load(e,t){this._initialized||await this.init();let n=Ot(e),r=tn(e).map(e=>{if(typeof e!=`string`){let t=this.resolver.getAlias(e);return t.some(e=>!this.resolver.hasKey(e))&&this.add(e),Array.isArray(t)?t[0]:t}return this.resolver.hasKey(e)||this.add({alias:e,src:e}),e}),i=this.resolver.resolve(r),a=await this._mapLoadToResolve(i,t);return n?a[r[0]]:a}addBundle(e,t){this.resolver.addBundle(e,t)}async loadBundle(e,t){this._initialized||await this.init();let n=!1;typeof e==`string`&&(n=!0,e=[e]);let r=this.resolver.resolveBundle(e),i={},a=Object.keys(r),o=0,s=[],c=()=>{t?.(s.reduce((e,t)=>e+t,0)/o)},l=a.map((e,t)=>{let n=r[e],a=Object.values(n),l=[...new Set(a.flat())].reduce((e,t)=>e+(t.progressSize||1),0);return s.push(0),o+=l,this._mapLoadToResolve(n,e=>{s[t]=e*l,c()}).then(t=>{i[e]=t})});return await Promise.all(l),n?i[e[0]]:i}async backgroundLoad(e){this._initialized||await this.init(),typeof e==`string`&&(e=[e]);let t=this.resolver.resolve(e);this._backgroundLoader.add(Object.values(t))}async backgroundLoadBundle(e){this._initialized||await this.init(),typeof e==`string`&&(e=[e]);let t=this.resolver.resolveBundle(e);Object.values(t).forEach(e=>{this._backgroundLoader.add(Object.values(e))})}reset(){this.resolver.reset(),this.loader.reset(),this.cache.reset(),this._initialized=!1}get(e){if(typeof e==`string`)return G.get(e);let t={};for(let n=0;n<e.length;n++)t[n]=G.get(e[n]);return t}async _mapLoadToResolve(e,t){let n=[...new Set(Object.values(e))];this._backgroundLoader.active=!1;let r=await this.loader.load(n,t);this._backgroundLoader.active=!0;let i={};return n.forEach(e=>{let t=r[e.src],n=[e.src];e.alias&&n.push(...e.alias),n.forEach(e=>{i[e]=t}),G.set(n,t)}),i}async unload(e){this._initialized||await this.init();let t=tn(e).map(e=>typeof e==`string`?e:e.src),n=this.resolver.resolve(t);await this._unloadFromResolved(n)}async unloadBundle(e){this._initialized||await this.init(),e=tn(e);let t=this.resolver.resolveBundle(e),n=Object.keys(t).map(e=>this._unloadFromResolved(t[e]));await Promise.all(n)}async _unloadFromResolved(e){let t=Object.values(e);t.forEach(e=>{G.remove(e.src)}),await this.loader.unload(t)}async _detectFormats(e){let t=[];e.preferredFormats&&(t=Array.isArray(e.preferredFormats)?e.preferredFormats:[e.preferredFormats]);for(let n of e.detections)e.skipDetections||await n.test()?t=await n.add(t):e.skipDetections||(t=await n.remove(t));return t=t.filter((e,n)=>t.indexOf(e)===n),t}get detections(){return this._detections}setPreferences(e){this.loader.parsers.forEach(t=>{t.config&&Object.keys(t.config).filter(t=>t in e).forEach(n=>{t.config[n]=e[n]})})}},os=new as;F.handleByList(W.LoadParser,os.loader.parsers).handleByList(W.ResolveParser,os.resolver.parsers).handleByList(W.CacheParser,os.cache.parsers).handleByList(W.DetectionParser,os.detections),F.add($a,ro,to,lo,oo,so,co,_o,bo,Oo,No,Jo,ns,Za,Xa,rs,is);var ss={loader:W.LoadParser,resolver:W.ResolveParser,cache:W.CacheParser,detection:W.DetectionParser};F.handle(W.Asset,e=>{let t=e.ref;Object.entries(ss).filter(([e])=>!!t[e]).forEach(([e,n])=>F.add(Object.assign(t[e],{extension:t[e].extension??n})))},e=>{let t=e.ref;Object.keys(ss).filter(e=>!!t[e]).forEach(e=>F.remove(t[e]))});var cs={extension:{type:W.DetectionParser,priority:3},test:async()=>!!(await za()||La()),add:async e=>[...e,`basis`],remove:async e=>e.filter(e=>e!==`basis`)},ls=class extends m{constructor(e){super({...e,mipLevelCount:e.resource.length}),this.uploadMethodId=`compressed`}},us;function ds(){if(us)return us;let e=r.get().createCanvas(1,1).getContext(`webgl`);return e?(us=[...e.getExtension(`EXT_texture_compression_bptc`)?[`bc6h-rgb-ufloat`,`bc6h-rgb-float`,`bc7-rgba-unorm`,`bc7-rgba-unorm-srgb`]:[],...e.getExtension(`WEBGL_compressed_texture_s3tc`)?[`bc1-rgba-unorm`,`bc2-rgba-unorm`,`bc3-rgba-unorm`]:[],...e.getExtension(`WEBGL_compressed_texture_s3tc_srgb`)?[`bc1-rgba-unorm-srgb`,`bc2-rgba-unorm-srgb`,`bc3-rgba-unorm-srgb`]:[],...e.getExtension(`EXT_texture_compression_rgtc`)?[`bc4-r-unorm`,`bc4-r-snorm`,`bc5-rg-unorm`,`bc5-rg-snorm`]:[],...e.getExtension(`WEBGL_compressed_texture_etc`)?[`etc2-rgb8unorm`,`etc2-rgb8unorm-srgb`,`etc2-rgba8unorm`,`etc2-rgba8unorm-srgb`,`etc2-rgb8a1unorm`,`etc2-rgb8a1unorm-srgb`,`eac-r11unorm`,`eac-rg11unorm`]:[],...e.getExtension(`WEBGL_compressed_texture_astc`)?`astc-4x4-unorm.astc-4x4-unorm-srgb.astc-5x4-unorm.astc-5x4-unorm-srgb.astc-5x5-unorm.astc-5x5-unorm-srgb.astc-6x5-unorm.astc-6x5-unorm-srgb.astc-6x6-unorm.astc-6x6-unorm-srgb.astc-8x5-unorm.astc-8x5-unorm-srgb.astc-8x6-unorm.astc-8x6-unorm-srgb.astc-8x8-unorm.astc-8x8-unorm-srgb.astc-10x5-unorm.astc-10x5-unorm-srgb.astc-10x6-unorm.astc-10x6-unorm-srgb.astc-10x8-unorm.astc-10x8-unorm-srgb.astc-10x10-unorm.astc-10x10-unorm-srgb.astc-12x10-unorm.astc-12x10-unorm-srgb.astc-12x12-unorm.astc-12x12-unorm-srgb`.split(`.`):[]],us):[]}var fs;async function ps(){if(fs)return fs;let e=await r.get().getNavigator().gpu.requestAdapter();return fs=[...e.features.has(`texture-compression-bc`)?[`bc1-rgba-unorm`,`bc1-rgba-unorm-srgb`,`bc2-rgba-unorm`,`bc2-rgba-unorm-srgb`,`bc3-rgba-unorm`,`bc3-rgba-unorm-srgb`,`bc4-r-unorm`,`bc4-r-snorm`,`bc5-rg-unorm`,`bc5-rg-snorm`,`bc6h-rgb-ufloat`,`bc6h-rgb-float`,`bc7-rgba-unorm`,`bc7-rgba-unorm-srgb`]:[],...e.features.has(`texture-compression-etc2`)?[`etc2-rgb8unorm`,`etc2-rgb8unorm-srgb`,`etc2-rgb8a1unorm`,`etc2-rgb8a1unorm-srgb`,`etc2-rgba8unorm`,`etc2-rgba8unorm-srgb`,`eac-r11unorm`,`eac-r11snorm`,`eac-rg11unorm`,`eac-rg11snorm`]:[],...e.features.has(`texture-compression-astc`)?`astc-4x4-unorm.astc-4x4-unorm-srgb.astc-5x4-unorm.astc-5x4-unorm-srgb.astc-5x5-unorm.astc-5x5-unorm-srgb.astc-6x5-unorm.astc-6x5-unorm-srgb.astc-6x6-unorm.astc-6x6-unorm-srgb.astc-8x5-unorm.astc-8x5-unorm-srgb.astc-8x6-unorm.astc-8x6-unorm-srgb.astc-8x8-unorm.astc-8x8-unorm-srgb.astc-10x5-unorm.astc-10x5-unorm-srgb.astc-10x6-unorm.astc-10x6-unorm-srgb.astc-10x8-unorm.astc-10x8-unorm-srgb.astc-10x10-unorm.astc-10x10-unorm-srgb.astc-12x10-unorm.astc-12x10-unorm-srgb.astc-12x12-unorm.astc-12x12-unorm-srgb`.split(`.`):[]],fs}var ms;async function hs(){return ms===void 0&&(ms=await(async()=>{let e=await za(),t=La();if(e&&t){let e=await ps(),t=ds();return e.filter(e=>t.includes(e))}else if(e)return await ps();else if(t)return ds();return[]})()),ms}var gs=`r8unorm.r8snorm.r8uint.r8sint.r16uint.r16sint.r16float.rg8unorm.rg8snorm.rg8uint.rg8sint.r32uint.r32sint.r32float.rg16uint.rg16sint.rg16float.rgba8unorm.rgba8unorm-srgb.rgba8snorm.rgba8uint.rgba8sint.bgra8unorm.bgra8unorm-srgb.rgb9e5ufloat.rgb10a2unorm.rg11b10ufloat.rg32uint.rg32sint.rg32float.rgba16uint.rgba16sint.rgba16float.rgba32uint.rgba32sint.rgba32float.stencil8.depth16unorm.depth24plus.depth24plus-stencil8.depth32float.depth32float-stencil8`.split(`.`),_s;async function vs(){if(_s!==void 0)return _s;let e=await hs();return _s=[...gs,...e],_s}var ys=`(function () {
|
|
997
|
+
'use strict';
|
|
998
|
+
|
|
999
|
+
function createLevelBuffers(basisTexture, basisTranscoderFormat) {
|
|
1000
|
+
const images = basisTexture.getNumImages();
|
|
1001
|
+
const levels = basisTexture.getNumLevels(0);
|
|
1002
|
+
const success = basisTexture.startTranscoding();
|
|
1003
|
+
if (!success) {
|
|
1004
|
+
throw new Error("startTranscoding failed");
|
|
1005
|
+
}
|
|
1006
|
+
const levelBuffers = [];
|
|
1007
|
+
for (let levelIndex = 0; levelIndex < levels; ++levelIndex) {
|
|
1008
|
+
for (let sliceIndex = 0; sliceIndex < images; ++sliceIndex) {
|
|
1009
|
+
const transcodeSize = basisTexture.getImageTranscodedSizeInBytes(sliceIndex, levelIndex, basisTranscoderFormat);
|
|
1010
|
+
const levelBuffer = new Uint8Array(transcodeSize);
|
|
1011
|
+
const success2 = basisTexture.transcodeImage(levelBuffer, sliceIndex, levelIndex, basisTranscoderFormat, 1, 0);
|
|
1012
|
+
if (!success2) {
|
|
1013
|
+
throw new Error("transcodeImage failed");
|
|
1014
|
+
}
|
|
1015
|
+
levelBuffers.push(levelBuffer);
|
|
1016
|
+
}
|
|
1017
|
+
}
|
|
1018
|
+
return levelBuffers;
|
|
1019
|
+
}
|
|
1020
|
+
|
|
1021
|
+
const gpuFormatToBasisTranscoderFormatMap = {
|
|
1022
|
+
"bc3-rgba-unorm": 3,
|
|
1023
|
+
// cTFBC3_RGBA
|
|
1024
|
+
"bc7-rgba-unorm": 6,
|
|
1025
|
+
// cTFBC7_RGBA,
|
|
1026
|
+
"etc2-rgba8unorm": 1,
|
|
1027
|
+
// cTFETC2_RGBA,
|
|
1028
|
+
"astc-4x4-unorm": 10,
|
|
1029
|
+
// cTFASTC_4x4_RGBA,
|
|
1030
|
+
// Uncompressed
|
|
1031
|
+
rgba8unorm: 13,
|
|
1032
|
+
// cTFRGBA32,
|
|
1033
|
+
rgba4unorm: 16
|
|
1034
|
+
// cTFRGBA4444,
|
|
1035
|
+
};
|
|
1036
|
+
function gpuFormatToBasisTranscoderFormat(transcoderFormat) {
|
|
1037
|
+
const format = gpuFormatToBasisTranscoderFormatMap[transcoderFormat];
|
|
1038
|
+
if (format) {
|
|
1039
|
+
return format;
|
|
1040
|
+
}
|
|
1041
|
+
throw new Error(\`Unsupported transcoderFormat: \${transcoderFormat}\`);
|
|
1042
|
+
}
|
|
1043
|
+
|
|
1044
|
+
const settings = {
|
|
1045
|
+
jsUrl: "basis/basis_transcoder.js",
|
|
1046
|
+
wasmUrl: "basis/basis_transcoder.wasm"
|
|
1047
|
+
};
|
|
1048
|
+
let basisTranscoderFormat;
|
|
1049
|
+
let basisTranscodedTextureFormat;
|
|
1050
|
+
let basisPromise;
|
|
1051
|
+
async function getBasis() {
|
|
1052
|
+
if (!basisPromise) {
|
|
1053
|
+
const absoluteJsUrl = new URL(settings.jsUrl, location.origin).href;
|
|
1054
|
+
const absoluteWasmUrl = new URL(settings.wasmUrl, location.origin).href;
|
|
1055
|
+
importScripts(absoluteJsUrl);
|
|
1056
|
+
basisPromise = new Promise((resolve) => {
|
|
1057
|
+
BASIS({
|
|
1058
|
+
locateFile: (_file) => absoluteWasmUrl
|
|
1059
|
+
}).then((module) => {
|
|
1060
|
+
module.initializeBasis();
|
|
1061
|
+
resolve(module.BasisFile);
|
|
1062
|
+
});
|
|
1063
|
+
});
|
|
1064
|
+
}
|
|
1065
|
+
return basisPromise;
|
|
1066
|
+
}
|
|
1067
|
+
async function fetchBasisTexture(url, BasisTexture) {
|
|
1068
|
+
const basisResponse = await fetch(url);
|
|
1069
|
+
if (basisResponse.ok) {
|
|
1070
|
+
const basisArrayBuffer = await basisResponse.arrayBuffer();
|
|
1071
|
+
return new BasisTexture(new Uint8Array(basisArrayBuffer));
|
|
1072
|
+
}
|
|
1073
|
+
throw new Error(\`Failed to load Basis texture: \${url}\`);
|
|
1074
|
+
}
|
|
1075
|
+
const preferredTranscodedFormat = [
|
|
1076
|
+
"bc7-rgba-unorm",
|
|
1077
|
+
"astc-4x4-unorm",
|
|
1078
|
+
"etc2-rgba8unorm",
|
|
1079
|
+
"bc3-rgba-unorm",
|
|
1080
|
+
"rgba8unorm"
|
|
1081
|
+
];
|
|
1082
|
+
async function load(url) {
|
|
1083
|
+
const BasisTexture = await getBasis();
|
|
1084
|
+
const basisTexture = await fetchBasisTexture(url, BasisTexture);
|
|
1085
|
+
const levelBuffers = createLevelBuffers(basisTexture, basisTranscoderFormat);
|
|
1086
|
+
return {
|
|
1087
|
+
width: basisTexture.getImageWidth(0, 0),
|
|
1088
|
+
height: basisTexture.getImageHeight(0, 0),
|
|
1089
|
+
format: basisTranscodedTextureFormat,
|
|
1090
|
+
resource: levelBuffers,
|
|
1091
|
+
alphaMode: "no-premultiply-alpha"
|
|
1092
|
+
};
|
|
1093
|
+
}
|
|
1094
|
+
async function init(jsUrl, wasmUrl, supportedTextures) {
|
|
1095
|
+
if (jsUrl) settings.jsUrl = jsUrl;
|
|
1096
|
+
if (wasmUrl) settings.wasmUrl = wasmUrl;
|
|
1097
|
+
basisTranscodedTextureFormat = preferredTranscodedFormat.filter((format) => supportedTextures.includes(format))[0];
|
|
1098
|
+
basisTranscoderFormat = gpuFormatToBasisTranscoderFormat(basisTranscodedTextureFormat);
|
|
1099
|
+
await getBasis();
|
|
1100
|
+
}
|
|
1101
|
+
const messageHandlers = {
|
|
1102
|
+
init: async (data) => {
|
|
1103
|
+
const { jsUrl, wasmUrl, supportedTextures } = data;
|
|
1104
|
+
await init(jsUrl, wasmUrl, supportedTextures);
|
|
1105
|
+
},
|
|
1106
|
+
load: async (data) => {
|
|
1107
|
+
try {
|
|
1108
|
+
const textureOptions = await load(data.url);
|
|
1109
|
+
return {
|
|
1110
|
+
type: "load",
|
|
1111
|
+
url: data.url,
|
|
1112
|
+
success: true,
|
|
1113
|
+
textureOptions,
|
|
1114
|
+
transferables: textureOptions.resource?.map((arr) => arr.buffer)
|
|
1115
|
+
};
|
|
1116
|
+
} catch (e) {
|
|
1117
|
+
throw e;
|
|
1118
|
+
}
|
|
1119
|
+
}
|
|
1120
|
+
};
|
|
1121
|
+
self.onmessage = (async (messageEvent) => {
|
|
1122
|
+
const message = messageEvent.data;
|
|
1123
|
+
const response = await messageHandlers[message.type](message);
|
|
1124
|
+
if (response) {
|
|
1125
|
+
self.postMessage(response, response.transferables);
|
|
1126
|
+
}
|
|
1127
|
+
});
|
|
1128
|
+
|
|
1129
|
+
})();
|
|
1130
|
+
`,bs=null,xs=class{constructor(){bs||=URL.createObjectURL(new Blob([ys],{type:`application/javascript`})),this.worker=new Worker(bs)}};xs.revokeObjectURL=function(){bs&&=(URL.revokeObjectURL(bs),null)};var Ss={jsUrl:`https://cdn.jsdelivr.net/npm/pixi.js/transcoders/basis/basis_transcoder.js`,wasmUrl:`https://cdn.jsdelivr.net/npm/pixi.js/transcoders/basis/basis_transcoder.wasm`};function Cs(e){Object.assign(Ss,e)}var ws,Ts={};function Es(e){return ws||(ws=new xs().worker,ws.onmessage=e=>{let{success:t,url:n,textureOptions:r}=e.data;t||console.warn(`Failed to load Basis texture`,n),Ts[n](r)},ws.postMessage({type:`init`,jsUrl:Ss.jsUrl,wasmUrl:Ss.wasmUrl,supportedTextures:e})),ws}function Ds(e,t){let n=Es(t);return new Promise(t=>{Ts[e]=t,n.postMessage({type:`load`,url:e})})}var Os={extension:{type:W.LoadParser,priority:Vt.High,name:`loadBasis`},name:`loadBasis`,id:`basis`,test(e){return mo(e,[`.basis`])},async load(e,t,n){return Ao(new ls({...await Ds(e,await vs()),resolution:t.data?.resolution||ko(e)}),n,e)},unload(e){Array.isArray(e)?e.forEach(e=>e.destroy(!0)):e.destroy(!0)}};function ks(e,t){let n=e.getNumImages(),r=e.getNumLevels(0);if(!e.startTranscoding())throw Error(`startTranscoding failed`);let i=[];for(let a=0;a<r;++a)for(let r=0;r<n;++r){let n=e.getImageTranscodedSizeInBytes(r,a,t),o=new Uint8Array(n);if(!e.transcodeImage(o,r,a,t,1,0))throw Error(`transcodeImage failed`);i.push(o)}return i}var As={"bc3-rgba-unorm":3,"bc7-rgba-unorm":6,"etc2-rgba8unorm":1,"astc-4x4-unorm":10,rgba8unorm:13,rgba4unorm:16};function js(e){let t=As[e];if(t)return t;throw Error(`Unsupported transcoderFormat: ${e}`)}var Ms={MAGIC:0,SIZE:1,FLAGS:2,HEIGHT:3,WIDTH:4,MIPMAP_COUNT:7,PIXEL_FORMAT:19,PF_FLAGS:20,FOURCC:21,RGB_BITCOUNT:22,R_BIT_MASK:23,G_BIT_MASK:24,B_BIT_MASK:25,A_BIT_MASK:26},Ns={DXGI_FORMAT:0,RESOURCE_DIMENSION:1,MISC_FLAG:2,ARRAY_SIZE:3,MISC_FLAGS2:4},Ps=(e=>(e[e.DXGI_FORMAT_UNKNOWN=0]=`DXGI_FORMAT_UNKNOWN`,e[e.DXGI_FORMAT_R32G32B32A32_TYPELESS=1]=`DXGI_FORMAT_R32G32B32A32_TYPELESS`,e[e.DXGI_FORMAT_R32G32B32A32_FLOAT=2]=`DXGI_FORMAT_R32G32B32A32_FLOAT`,e[e.DXGI_FORMAT_R32G32B32A32_UINT=3]=`DXGI_FORMAT_R32G32B32A32_UINT`,e[e.DXGI_FORMAT_R32G32B32A32_SINT=4]=`DXGI_FORMAT_R32G32B32A32_SINT`,e[e.DXGI_FORMAT_R32G32B32_TYPELESS=5]=`DXGI_FORMAT_R32G32B32_TYPELESS`,e[e.DXGI_FORMAT_R32G32B32_FLOAT=6]=`DXGI_FORMAT_R32G32B32_FLOAT`,e[e.DXGI_FORMAT_R32G32B32_UINT=7]=`DXGI_FORMAT_R32G32B32_UINT`,e[e.DXGI_FORMAT_R32G32B32_SINT=8]=`DXGI_FORMAT_R32G32B32_SINT`,e[e.DXGI_FORMAT_R16G16B16A16_TYPELESS=9]=`DXGI_FORMAT_R16G16B16A16_TYPELESS`,e[e.DXGI_FORMAT_R16G16B16A16_FLOAT=10]=`DXGI_FORMAT_R16G16B16A16_FLOAT`,e[e.DXGI_FORMAT_R16G16B16A16_UNORM=11]=`DXGI_FORMAT_R16G16B16A16_UNORM`,e[e.DXGI_FORMAT_R16G16B16A16_UINT=12]=`DXGI_FORMAT_R16G16B16A16_UINT`,e[e.DXGI_FORMAT_R16G16B16A16_SNORM=13]=`DXGI_FORMAT_R16G16B16A16_SNORM`,e[e.DXGI_FORMAT_R16G16B16A16_SINT=14]=`DXGI_FORMAT_R16G16B16A16_SINT`,e[e.DXGI_FORMAT_R32G32_TYPELESS=15]=`DXGI_FORMAT_R32G32_TYPELESS`,e[e.DXGI_FORMAT_R32G32_FLOAT=16]=`DXGI_FORMAT_R32G32_FLOAT`,e[e.DXGI_FORMAT_R32G32_UINT=17]=`DXGI_FORMAT_R32G32_UINT`,e[e.DXGI_FORMAT_R32G32_SINT=18]=`DXGI_FORMAT_R32G32_SINT`,e[e.DXGI_FORMAT_R32G8X24_TYPELESS=19]=`DXGI_FORMAT_R32G8X24_TYPELESS`,e[e.DXGI_FORMAT_D32_FLOAT_S8X24_UINT=20]=`DXGI_FORMAT_D32_FLOAT_S8X24_UINT`,e[e.DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS=21]=`DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS`,e[e.DXGI_FORMAT_X32_TYPELESS_G8X24_UINT=22]=`DXGI_FORMAT_X32_TYPELESS_G8X24_UINT`,e[e.DXGI_FORMAT_R10G10B10A2_TYPELESS=23]=`DXGI_FORMAT_R10G10B10A2_TYPELESS`,e[e.DXGI_FORMAT_R10G10B10A2_UNORM=24]=`DXGI_FORMAT_R10G10B10A2_UNORM`,e[e.DXGI_FORMAT_R10G10B10A2_UINT=25]=`DXGI_FORMAT_R10G10B10A2_UINT`,e[e.DXGI_FORMAT_R11G11B10_FLOAT=26]=`DXGI_FORMAT_R11G11B10_FLOAT`,e[e.DXGI_FORMAT_R8G8B8A8_TYPELESS=27]=`DXGI_FORMAT_R8G8B8A8_TYPELESS`,e[e.DXGI_FORMAT_R8G8B8A8_UNORM=28]=`DXGI_FORMAT_R8G8B8A8_UNORM`,e[e.DXGI_FORMAT_R8G8B8A8_UNORM_SRGB=29]=`DXGI_FORMAT_R8G8B8A8_UNORM_SRGB`,e[e.DXGI_FORMAT_R8G8B8A8_UINT=30]=`DXGI_FORMAT_R8G8B8A8_UINT`,e[e.DXGI_FORMAT_R8G8B8A8_SNORM=31]=`DXGI_FORMAT_R8G8B8A8_SNORM`,e[e.DXGI_FORMAT_R8G8B8A8_SINT=32]=`DXGI_FORMAT_R8G8B8A8_SINT`,e[e.DXGI_FORMAT_R16G16_TYPELESS=33]=`DXGI_FORMAT_R16G16_TYPELESS`,e[e.DXGI_FORMAT_R16G16_FLOAT=34]=`DXGI_FORMAT_R16G16_FLOAT`,e[e.DXGI_FORMAT_R16G16_UNORM=35]=`DXGI_FORMAT_R16G16_UNORM`,e[e.DXGI_FORMAT_R16G16_UINT=36]=`DXGI_FORMAT_R16G16_UINT`,e[e.DXGI_FORMAT_R16G16_SNORM=37]=`DXGI_FORMAT_R16G16_SNORM`,e[e.DXGI_FORMAT_R16G16_SINT=38]=`DXGI_FORMAT_R16G16_SINT`,e[e.DXGI_FORMAT_R32_TYPELESS=39]=`DXGI_FORMAT_R32_TYPELESS`,e[e.DXGI_FORMAT_D32_FLOAT=40]=`DXGI_FORMAT_D32_FLOAT`,e[e.DXGI_FORMAT_R32_FLOAT=41]=`DXGI_FORMAT_R32_FLOAT`,e[e.DXGI_FORMAT_R32_UINT=42]=`DXGI_FORMAT_R32_UINT`,e[e.DXGI_FORMAT_R32_SINT=43]=`DXGI_FORMAT_R32_SINT`,e[e.DXGI_FORMAT_R24G8_TYPELESS=44]=`DXGI_FORMAT_R24G8_TYPELESS`,e[e.DXGI_FORMAT_D24_UNORM_S8_UINT=45]=`DXGI_FORMAT_D24_UNORM_S8_UINT`,e[e.DXGI_FORMAT_R24_UNORM_X8_TYPELESS=46]=`DXGI_FORMAT_R24_UNORM_X8_TYPELESS`,e[e.DXGI_FORMAT_X24_TYPELESS_G8_UINT=47]=`DXGI_FORMAT_X24_TYPELESS_G8_UINT`,e[e.DXGI_FORMAT_R8G8_TYPELESS=48]=`DXGI_FORMAT_R8G8_TYPELESS`,e[e.DXGI_FORMAT_R8G8_UNORM=49]=`DXGI_FORMAT_R8G8_UNORM`,e[e.DXGI_FORMAT_R8G8_UINT=50]=`DXGI_FORMAT_R8G8_UINT`,e[e.DXGI_FORMAT_R8G8_SNORM=51]=`DXGI_FORMAT_R8G8_SNORM`,e[e.DXGI_FORMAT_R8G8_SINT=52]=`DXGI_FORMAT_R8G8_SINT`,e[e.DXGI_FORMAT_R16_TYPELESS=53]=`DXGI_FORMAT_R16_TYPELESS`,e[e.DXGI_FORMAT_R16_FLOAT=54]=`DXGI_FORMAT_R16_FLOAT`,e[e.DXGI_FORMAT_D16_UNORM=55]=`DXGI_FORMAT_D16_UNORM`,e[e.DXGI_FORMAT_R16_UNORM=56]=`DXGI_FORMAT_R16_UNORM`,e[e.DXGI_FORMAT_R16_UINT=57]=`DXGI_FORMAT_R16_UINT`,e[e.DXGI_FORMAT_R16_SNORM=58]=`DXGI_FORMAT_R16_SNORM`,e[e.DXGI_FORMAT_R16_SINT=59]=`DXGI_FORMAT_R16_SINT`,e[e.DXGI_FORMAT_R8_TYPELESS=60]=`DXGI_FORMAT_R8_TYPELESS`,e[e.DXGI_FORMAT_R8_UNORM=61]=`DXGI_FORMAT_R8_UNORM`,e[e.DXGI_FORMAT_R8_UINT=62]=`DXGI_FORMAT_R8_UINT`,e[e.DXGI_FORMAT_R8_SNORM=63]=`DXGI_FORMAT_R8_SNORM`,e[e.DXGI_FORMAT_R8_SINT=64]=`DXGI_FORMAT_R8_SINT`,e[e.DXGI_FORMAT_A8_UNORM=65]=`DXGI_FORMAT_A8_UNORM`,e[e.DXGI_FORMAT_R1_UNORM=66]=`DXGI_FORMAT_R1_UNORM`,e[e.DXGI_FORMAT_R9G9B9E5_SHAREDEXP=67]=`DXGI_FORMAT_R9G9B9E5_SHAREDEXP`,e[e.DXGI_FORMAT_R8G8_B8G8_UNORM=68]=`DXGI_FORMAT_R8G8_B8G8_UNORM`,e[e.DXGI_FORMAT_G8R8_G8B8_UNORM=69]=`DXGI_FORMAT_G8R8_G8B8_UNORM`,e[e.DXGI_FORMAT_BC1_TYPELESS=70]=`DXGI_FORMAT_BC1_TYPELESS`,e[e.DXGI_FORMAT_BC1_UNORM=71]=`DXGI_FORMAT_BC1_UNORM`,e[e.DXGI_FORMAT_BC1_UNORM_SRGB=72]=`DXGI_FORMAT_BC1_UNORM_SRGB`,e[e.DXGI_FORMAT_BC2_TYPELESS=73]=`DXGI_FORMAT_BC2_TYPELESS`,e[e.DXGI_FORMAT_BC2_UNORM=74]=`DXGI_FORMAT_BC2_UNORM`,e[e.DXGI_FORMAT_BC2_UNORM_SRGB=75]=`DXGI_FORMAT_BC2_UNORM_SRGB`,e[e.DXGI_FORMAT_BC3_TYPELESS=76]=`DXGI_FORMAT_BC3_TYPELESS`,e[e.DXGI_FORMAT_BC3_UNORM=77]=`DXGI_FORMAT_BC3_UNORM`,e[e.DXGI_FORMAT_BC3_UNORM_SRGB=78]=`DXGI_FORMAT_BC3_UNORM_SRGB`,e[e.DXGI_FORMAT_BC4_TYPELESS=79]=`DXGI_FORMAT_BC4_TYPELESS`,e[e.DXGI_FORMAT_BC4_UNORM=80]=`DXGI_FORMAT_BC4_UNORM`,e[e.DXGI_FORMAT_BC4_SNORM=81]=`DXGI_FORMAT_BC4_SNORM`,e[e.DXGI_FORMAT_BC5_TYPELESS=82]=`DXGI_FORMAT_BC5_TYPELESS`,e[e.DXGI_FORMAT_BC5_UNORM=83]=`DXGI_FORMAT_BC5_UNORM`,e[e.DXGI_FORMAT_BC5_SNORM=84]=`DXGI_FORMAT_BC5_SNORM`,e[e.DXGI_FORMAT_B5G6R5_UNORM=85]=`DXGI_FORMAT_B5G6R5_UNORM`,e[e.DXGI_FORMAT_B5G5R5A1_UNORM=86]=`DXGI_FORMAT_B5G5R5A1_UNORM`,e[e.DXGI_FORMAT_B8G8R8A8_UNORM=87]=`DXGI_FORMAT_B8G8R8A8_UNORM`,e[e.DXGI_FORMAT_B8G8R8X8_UNORM=88]=`DXGI_FORMAT_B8G8R8X8_UNORM`,e[e.DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM=89]=`DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM`,e[e.DXGI_FORMAT_B8G8R8A8_TYPELESS=90]=`DXGI_FORMAT_B8G8R8A8_TYPELESS`,e[e.DXGI_FORMAT_B8G8R8A8_UNORM_SRGB=91]=`DXGI_FORMAT_B8G8R8A8_UNORM_SRGB`,e[e.DXGI_FORMAT_B8G8R8X8_TYPELESS=92]=`DXGI_FORMAT_B8G8R8X8_TYPELESS`,e[e.DXGI_FORMAT_B8G8R8X8_UNORM_SRGB=93]=`DXGI_FORMAT_B8G8R8X8_UNORM_SRGB`,e[e.DXGI_FORMAT_BC6H_TYPELESS=94]=`DXGI_FORMAT_BC6H_TYPELESS`,e[e.DXGI_FORMAT_BC6H_UF16=95]=`DXGI_FORMAT_BC6H_UF16`,e[e.DXGI_FORMAT_BC6H_SF16=96]=`DXGI_FORMAT_BC6H_SF16`,e[e.DXGI_FORMAT_BC7_TYPELESS=97]=`DXGI_FORMAT_BC7_TYPELESS`,e[e.DXGI_FORMAT_BC7_UNORM=98]=`DXGI_FORMAT_BC7_UNORM`,e[e.DXGI_FORMAT_BC7_UNORM_SRGB=99]=`DXGI_FORMAT_BC7_UNORM_SRGB`,e[e.DXGI_FORMAT_AYUV=100]=`DXGI_FORMAT_AYUV`,e[e.DXGI_FORMAT_Y410=101]=`DXGI_FORMAT_Y410`,e[e.DXGI_FORMAT_Y416=102]=`DXGI_FORMAT_Y416`,e[e.DXGI_FORMAT_NV12=103]=`DXGI_FORMAT_NV12`,e[e.DXGI_FORMAT_P010=104]=`DXGI_FORMAT_P010`,e[e.DXGI_FORMAT_P016=105]=`DXGI_FORMAT_P016`,e[e.DXGI_FORMAT_420_OPAQUE=106]=`DXGI_FORMAT_420_OPAQUE`,e[e.DXGI_FORMAT_YUY2=107]=`DXGI_FORMAT_YUY2`,e[e.DXGI_FORMAT_Y210=108]=`DXGI_FORMAT_Y210`,e[e.DXGI_FORMAT_Y216=109]=`DXGI_FORMAT_Y216`,e[e.DXGI_FORMAT_NV11=110]=`DXGI_FORMAT_NV11`,e[e.DXGI_FORMAT_AI44=111]=`DXGI_FORMAT_AI44`,e[e.DXGI_FORMAT_IA44=112]=`DXGI_FORMAT_IA44`,e[e.DXGI_FORMAT_P8=113]=`DXGI_FORMAT_P8`,e[e.DXGI_FORMAT_A8P8=114]=`DXGI_FORMAT_A8P8`,e[e.DXGI_FORMAT_B4G4R4A4_UNORM=115]=`DXGI_FORMAT_B4G4R4A4_UNORM`,e[e.DXGI_FORMAT_P208=116]=`DXGI_FORMAT_P208`,e[e.DXGI_FORMAT_V208=117]=`DXGI_FORMAT_V208`,e[e.DXGI_FORMAT_V408=118]=`DXGI_FORMAT_V408`,e[e.DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE=119]=`DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE`,e[e.DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE=120]=`DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE`,e[e.DXGI_FORMAT_FORCE_UINT=121]=`DXGI_FORMAT_FORCE_UINT`,e))(Ps||{}),Fs=(e=>(e[e.DDS_DIMENSION_TEXTURE1D=2]=`DDS_DIMENSION_TEXTURE1D`,e[e.DDS_DIMENSION_TEXTURE2D=3]=`DDS_DIMENSION_TEXTURE2D`,e[e.DDS_DIMENSION_TEXTURE3D=6]=`DDS_DIMENSION_TEXTURE3D`,e))(Fs||{});function Is(e){return e.charCodeAt(0)+(e.charCodeAt(1)<<8)+(e.charCodeAt(2)<<16)+(e.charCodeAt(3)<<24)}var Ls=(e=>(e[e.UNKNOWN=0]=`UNKNOWN`,e[e.R8G8B8=20]=`R8G8B8`,e[e.A8R8G8B8=21]=`A8R8G8B8`,e[e.X8R8G8B8=22]=`X8R8G8B8`,e[e.R5G6B5=23]=`R5G6B5`,e[e.X1R5G5B5=24]=`X1R5G5B5`,e[e.A1R5G5B5=25]=`A1R5G5B5`,e[e.A4R4G4B4=26]=`A4R4G4B4`,e[e.R3G3B2=27]=`R3G3B2`,e[e.A8=28]=`A8`,e[e.A8R3G3B2=29]=`A8R3G3B2`,e[e.X4R4G4B4=30]=`X4R4G4B4`,e[e.A2B10G10R10=31]=`A2B10G10R10`,e[e.A8B8G8R8=32]=`A8B8G8R8`,e[e.X8B8G8R8=33]=`X8B8G8R8`,e[e.G16R16=34]=`G16R16`,e[e.A2R10G10B10=35]=`A2R10G10B10`,e[e.A16B16G16R16=36]=`A16B16G16R16`,e[e.A8P8=40]=`A8P8`,e[e.P8=41]=`P8`,e[e.L8=50]=`L8`,e[e.A8L8=51]=`A8L8`,e[e.A4L4=52]=`A4L4`,e[e.V8U8=60]=`V8U8`,e[e.L6V5U5=61]=`L6V5U5`,e[e.X8L8V8U8=62]=`X8L8V8U8`,e[e.Q8W8V8U8=63]=`Q8W8V8U8`,e[e.V16U16=64]=`V16U16`,e[e.A2W10V10U10=67]=`A2W10V10U10`,e[e.Q16W16V16U16=110]=`Q16W16V16U16`,e[e.R16F=111]=`R16F`,e[e.G16R16F=112]=`G16R16F`,e[e.A16B16G16R16F=113]=`A16B16G16R16F`,e[e.R32F=114]=`R32F`,e[e.G32R32F=115]=`G32R32F`,e[e.A32B32G32R32F=116]=`A32B32G32R32F`,e[e.UYVY=Is(`UYVY`)]=`UYVY`,e[e.R8G8_B8G8=Is(`RGBG`)]=`R8G8_B8G8`,e[e.YUY2=Is(`YUY2`)]=`YUY2`,e[e.D3DFMT_G8R8_G8B8=Is(`GRGB`)]=`D3DFMT_G8R8_G8B8`,e[e.DXT1=Is(`DXT1`)]=`DXT1`,e[e.DXT2=Is(`DXT2`)]=`DXT2`,e[e.DXT3=Is(`DXT3`)]=`DXT3`,e[e.DXT4=Is(`DXT4`)]=`DXT4`,e[e.DXT5=Is(`DXT5`)]=`DXT5`,e[e.ATI1=Is(`ATI1`)]=`ATI1`,e[e.AT1N=Is(`AT1N`)]=`AT1N`,e[e.ATI2=Is(`ATI2`)]=`ATI2`,e[e.AT2N=Is(`AT2N`)]=`AT2N`,e[e.BC4U=Is(`BC4U`)]=`BC4U`,e[e.BC4S=Is(`BC4S`)]=`BC4S`,e[e.BC5U=Is(`BC5U`)]=`BC5U`,e[e.BC5S=Is(`BC5S`)]=`BC5S`,e[e.DX10=Is(`DX10`)]=`DX10`,e))(Ls||{}),Rs={[Ls.DXT1]:`bc1-rgba-unorm`,[Ls.DXT2]:`bc2-rgba-unorm`,[Ls.DXT3]:`bc2-rgba-unorm`,[Ls.DXT4]:`bc3-rgba-unorm`,[Ls.DXT5]:`bc3-rgba-unorm`,[Ls.ATI1]:`bc4-r-unorm`,[Ls.BC4U]:`bc4-r-unorm`,[Ls.BC4S]:`bc4-r-snorm`,[Ls.ATI2]:`bc5-rg-unorm`,[Ls.BC5U]:`bc5-rg-unorm`,[Ls.BC5S]:`bc5-rg-snorm`,36:`rgba16uint`,110:`rgba16sint`,111:`r16float`,112:`rg16float`,113:`rgba16float`,114:`r32float`,115:`rg32float`,116:`rgba32float`},zs={70:`bc1-rgba-unorm`,71:`bc1-rgba-unorm`,72:`bc1-rgba-unorm-srgb`,73:`bc2-rgba-unorm`,74:`bc2-rgba-unorm`,75:`bc2-rgba-unorm-srgb`,76:`bc3-rgba-unorm`,77:`bc3-rgba-unorm`,78:`bc3-rgba-unorm-srgb`,79:`bc4-r-unorm`,80:`bc4-r-unorm`,81:`bc4-r-snorm`,82:`bc5-rg-unorm`,83:`bc5-rg-unorm`,84:`bc5-rg-snorm`,94:`bc6h-rgb-ufloat`,95:`bc6h-rgb-ufloat`,96:`bc6h-rgb-float`,97:`bc7-rgba-unorm`,98:`bc7-rgba-unorm`,99:`bc7-rgba-unorm-srgb`,28:`rgba8unorm`,29:`rgba8unorm-srgb`,87:`bgra8unorm`,91:`bgra8unorm-srgb`,41:`r32float`,49:`rg8unorm`,56:`r16uint`,61:`r8unorm`,24:`rgb10a2unorm`,11:`rgba16uint`,13:`rgba16sint`,10:`rgba16float`,54:`r16float`,34:`rg16float`,16:`rg32float`,2:`rgba32float`},J={MAGIC_VALUE:542327876,MAGIC_SIZE:4,HEADER_SIZE:124,HEADER_DX10_SIZE:20,PIXEL_FORMAT_FLAGS:{ALPHAPIXELS:1,ALPHA:2,FOURCC:4,RGB:64,RGBA:65,YUV:512,LUMINANCE:131072,LUMINANCEA:131073},RESOURCE_MISC_TEXTURECUBE:4,HEADER_FIELDS:Ms,HEADER_DX10_FIELDS:Ns,DXGI_FORMAT:Ps,D3D10_RESOURCE_DIMENSION:Fs,D3DFMT:Ls},Bs={"bc1-rgba-unorm":8,"bc1-rgba-unorm-srgb":8,"bc2-rgba-unorm":16,"bc2-rgba-unorm-srgb":16,"bc3-rgba-unorm":16,"bc3-rgba-unorm-srgb":16,"bc4-r-unorm":8,"bc4-r-snorm":8,"bc5-rg-unorm":16,"bc5-rg-snorm":16,"bc6h-rgb-ufloat":16,"bc6h-rgb-float":16,"bc7-rgba-unorm":16,"bc7-rgba-unorm-srgb":16};function Vs(e,t){let{format:n,fourCC:r,width:i,height:a,dataOffset:o,mipmapCount:s}=Us(e);if(!t.includes(n))throw Error(`Unsupported texture format: ${r} ${n}, supported: ${t}`);return s<=1?{format:n,width:i,height:a,resource:[new Uint8Array(e,o)],alphaMode:`no-premultiply-alpha`}:{format:n,width:i,height:a,resource:Hs(n,i,a,o,s,e),alphaMode:`no-premultiply-alpha`}}function Hs(e,t,n,r,i,a){let o=[],s=Bs[e],c=t,l=n,u=r;for(let e=0;e<i;++e){let e=Math.ceil(Math.max(4,c)/4)*4,t=Math.ceil(Math.max(4,l)/4)*4,n=s?e/4*t/4*s:c*l*4,r=new Uint8Array(a,u,n);o.push(r),u+=n,c=Math.max(c>>1,1),l=Math.max(l>>1,1)}return o}function Us(e){let t=new Uint32Array(e,0,J.HEADER_SIZE/Uint32Array.BYTES_PER_ELEMENT);if(t[J.HEADER_FIELDS.MAGIC]!==J.MAGIC_VALUE)throw Error(`Invalid magic number in DDS header`);let n=t[J.HEADER_FIELDS.HEIGHT],r=t[J.HEADER_FIELDS.WIDTH],i=Math.max(1,t[J.HEADER_FIELDS.MIPMAP_COUNT]),a=t[J.HEADER_FIELDS.PF_FLAGS],o=t[J.HEADER_FIELDS.FOURCC];return{format:Ws(t,a,o,e),fourCC:o,width:r,height:n,dataOffset:J.MAGIC_SIZE+J.HEADER_SIZE+(o===J.D3DFMT.DX10?J.HEADER_DX10_SIZE:0),mipmapCount:i}}function Ws(e,t,n,r){if(t&J.PIXEL_FORMAT_FLAGS.FOURCC){if(n===J.D3DFMT.DX10){let e=new Uint32Array(r,J.MAGIC_SIZE+J.HEADER_SIZE,J.HEADER_DX10_SIZE/Uint32Array.BYTES_PER_ELEMENT);if(e[J.HEADER_DX10_FIELDS.MISC_FLAG]===J.RESOURCE_MISC_TEXTURECUBE)throw Error(`DDSParser does not support cubemap textures`);if(e[J.HEADER_DX10_FIELDS.RESOURCE_DIMENSION]===J.D3D10_RESOURCE_DIMENSION.DDS_DIMENSION_TEXTURE3D)throw Error(`DDSParser does not supported 3D texture data`);let t=e[J.HEADER_DX10_FIELDS.DXGI_FORMAT];if(t in zs)return zs[t];throw Error(`DDSParser cannot parse texture data with DXGI format ${t}`)}if(n in Rs)return Rs[n];throw Error(`DDSParser cannot parse texture data with fourCC format ${n}`)}if(t&J.PIXEL_FORMAT_FLAGS.RGB||t&J.PIXEL_FORMAT_FLAGS.RGBA)return Gs(e);throw t&J.PIXEL_FORMAT_FLAGS.YUV?Error(`DDSParser does not supported YUV uncompressed texture data.`):t&J.PIXEL_FORMAT_FLAGS.LUMINANCE||t&J.PIXEL_FORMAT_FLAGS.LUMINANCEA?Error(`DDSParser does not support single-channel (lumninance) texture data!`):t&J.PIXEL_FORMAT_FLAGS.ALPHA||t&J.PIXEL_FORMAT_FLAGS.ALPHAPIXELS?Error(`DDSParser does not support single-channel (alpha) texture data!`):Error(`DDSParser failed to load a texture file due to an unknown reason!`)}function Gs(e){let t=e[J.HEADER_FIELDS.RGB_BITCOUNT],n=e[J.HEADER_FIELDS.R_BIT_MASK],r=e[J.HEADER_FIELDS.G_BIT_MASK],i=e[J.HEADER_FIELDS.B_BIT_MASK],a=e[J.HEADER_FIELDS.A_BIT_MASK];switch(t){case 32:if(n===255&&r===65280&&i===16711680&&a===4278190080)return zs[J.DXGI_FORMAT.DXGI_FORMAT_R8G8B8A8_UNORM];if(n===16711680&&r===65280&&i===255&&a===4278190080)return zs[J.DXGI_FORMAT.DXGI_FORMAT_B8G8R8A8_UNORM];if(n===1072693248&&r===1047552&&i===1023&&a===3221225472)return zs[J.DXGI_FORMAT.DXGI_FORMAT_R10G10B10A2_UNORM];if(n===65535&&r===4294901760&&i===0&&a===0)return zs[J.DXGI_FORMAT.DXGI_FORMAT_R16G16_UNORM];if(n===4294967295&&r===0&&i===0&&a===0)return zs[J.DXGI_FORMAT.DXGI_FORMAT_R32_FLOAT];break;case 24:break;case 16:if(n===31744&&r===992&&i===31&&a===32768)return zs[J.DXGI_FORMAT.DXGI_FORMAT_B5G5R5A1_UNORM];if(n===63488&&r===2016&&i===31&&a===0)return zs[J.DXGI_FORMAT.DXGI_FORMAT_B5G6R5_UNORM];if(n===3840&&r===240&&i===15&&a===61440)return zs[J.DXGI_FORMAT.DXGI_FORMAT_B4G4R4A4_UNORM];if(n===255&&r===0&&i===0&&a===65280)return zs[J.DXGI_FORMAT.DXGI_FORMAT_R8G8_UNORM];if(n===65535&&r===0&&i===0&&a===0)return zs[J.DXGI_FORMAT.DXGI_FORMAT_R16_UNORM];break;case 8:if(n===255&&r===0&&i===0&&a===0)return zs[J.DXGI_FORMAT.DXGI_FORMAT_R8_UNORM];break}throw Error(`DDSParser does not support uncompressed texture with configuration:
|
|
1131
|
+
bitCount = ${t}, rBitMask = ${n}, gBitMask = ${r}, aBitMask = ${a}`)}var Ks={extension:{type:W.LoadParser,priority:Vt.High,name:`loadDDS`},name:`loadDDS`,id:`dds`,test(e){return mo(e,[`.dds`])},async load(e,t,n){let r=await vs();return Ao(new ls({...Vs(await(await fetch(e)).arrayBuffer(),r),resolution:t.data?.resolution||ko(e)}),n,e)},unload(e){Array.isArray(e)?e.forEach(e=>e.destroy(!0)):e.destroy(!0)}},qs=(e=>(e[e.RGBA8_SNORM=36759]=`RGBA8_SNORM`,e[e.RGBA=6408]=`RGBA`,e[e.RGBA8UI=36220]=`RGBA8UI`,e[e.SRGB8_ALPHA8=35907]=`SRGB8_ALPHA8`,e[e.RGBA8I=36238]=`RGBA8I`,e[e.RGBA8=32856]=`RGBA8`,e[e.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]=`COMPRESSED_RGB_S3TC_DXT1_EXT`,e[e.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]=`COMPRESSED_RGBA_S3TC_DXT1_EXT`,e[e.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]=`COMPRESSED_RGBA_S3TC_DXT3_EXT`,e[e.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]=`COMPRESSED_RGBA_S3TC_DXT5_EXT`,e[e.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]=`COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT`,e[e.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]=`COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT`,e[e.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]=`COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT`,e[e.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]=`COMPRESSED_SRGB_S3TC_DXT1_EXT`,e[e.COMPRESSED_RED_RGTC1_EXT=36283]=`COMPRESSED_RED_RGTC1_EXT`,e[e.COMPRESSED_SIGNED_RED_RGTC1_EXT=36284]=`COMPRESSED_SIGNED_RED_RGTC1_EXT`,e[e.COMPRESSED_RED_GREEN_RGTC2_EXT=36285]=`COMPRESSED_RED_GREEN_RGTC2_EXT`,e[e.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT=36286]=`COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT`,e[e.COMPRESSED_R11_EAC=37488]=`COMPRESSED_R11_EAC`,e[e.COMPRESSED_SIGNED_R11_EAC=37489]=`COMPRESSED_SIGNED_R11_EAC`,e[e.COMPRESSED_RG11_EAC=37490]=`COMPRESSED_RG11_EAC`,e[e.COMPRESSED_SIGNED_RG11_EAC=37491]=`COMPRESSED_SIGNED_RG11_EAC`,e[e.COMPRESSED_RGB8_ETC2=37492]=`COMPRESSED_RGB8_ETC2`,e[e.COMPRESSED_RGBA8_ETC2_EAC=37496]=`COMPRESSED_RGBA8_ETC2_EAC`,e[e.COMPRESSED_SRGB8_ETC2=37493]=`COMPRESSED_SRGB8_ETC2`,e[e.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37497]=`COMPRESSED_SRGB8_ALPHA8_ETC2_EAC`,e[e.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37494]=`COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2`,e[e.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37495]=`COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2`,e[e.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]=`COMPRESSED_RGBA_ASTC_4x4_KHR`,e[e.COMPRESSED_RGBA_ASTC_5x4_KHR=37809]=`COMPRESSED_RGBA_ASTC_5x4_KHR`,e[e.COMPRESSED_RGBA_ASTC_5x5_KHR=37810]=`COMPRESSED_RGBA_ASTC_5x5_KHR`,e[e.COMPRESSED_RGBA_ASTC_6x5_KHR=37811]=`COMPRESSED_RGBA_ASTC_6x5_KHR`,e[e.COMPRESSED_RGBA_ASTC_6x6_KHR=37812]=`COMPRESSED_RGBA_ASTC_6x6_KHR`,e[e.COMPRESSED_RGBA_ASTC_8x5_KHR=37813]=`COMPRESSED_RGBA_ASTC_8x5_KHR`,e[e.COMPRESSED_RGBA_ASTC_8x6_KHR=37814]=`COMPRESSED_RGBA_ASTC_8x6_KHR`,e[e.COMPRESSED_RGBA_ASTC_8x8_KHR=37815]=`COMPRESSED_RGBA_ASTC_8x8_KHR`,e[e.COMPRESSED_RGBA_ASTC_10x5_KHR=37816]=`COMPRESSED_RGBA_ASTC_10x5_KHR`,e[e.COMPRESSED_RGBA_ASTC_10x6_KHR=37817]=`COMPRESSED_RGBA_ASTC_10x6_KHR`,e[e.COMPRESSED_RGBA_ASTC_10x8_KHR=37818]=`COMPRESSED_RGBA_ASTC_10x8_KHR`,e[e.COMPRESSED_RGBA_ASTC_10x10_KHR=37819]=`COMPRESSED_RGBA_ASTC_10x10_KHR`,e[e.COMPRESSED_RGBA_ASTC_12x10_KHR=37820]=`COMPRESSED_RGBA_ASTC_12x10_KHR`,e[e.COMPRESSED_RGBA_ASTC_12x12_KHR=37821]=`COMPRESSED_RGBA_ASTC_12x12_KHR`,e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=37840]=`COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR`,e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=37841]=`COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR`,e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=37842]=`COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR`,e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=37843]=`COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR`,e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=37844]=`COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR`,e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=37845]=`COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR`,e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=37846]=`COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR`,e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=37847]=`COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR`,e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=37848]=`COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR`,e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=37849]=`COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR`,e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=37850]=`COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR`,e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=37851]=`COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR`,e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=37852]=`COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR`,e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=37853]=`COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR`,e[e.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]=`COMPRESSED_RGBA_BPTC_UNORM_EXT`,e[e.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]=`COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT`,e[e.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]=`COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT`,e[e.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]=`COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT`,e))(qs||{}),Y={FILE_HEADER_SIZE:64,FILE_IDENTIFIER:[171,75,84,88,32,49,49,187,13,10,26,10],FORMATS_TO_COMPONENTS:{6408:4,6407:3,33319:2,6403:1,6409:1,6410:2,6406:1},INTERNAL_FORMAT_TO_BYTES_PER_PIXEL:{33776:.5,33777:.5,33778:1,33779:1,35916:.5,35917:.5,35918:1,35919:1,36283:.5,36284:.5,36285:1,36286:1,37488:.5,37489:.5,37490:1,37491:1,37492:.5,37496:1,37493:.5,37497:1,37494:.5,37495:.5,37808:1,37840:1,37809:.8,37841:.8,37810:.64,37842:.64,37811:.53375,37843:.53375,37812:.445,37844:.445,37813:.4,37845:.4,37814:.33375,37846:.33375,37815:.25,37847:.25,37816:.32,37848:.32,37817:.26625,37849:.26625,37818:.2,37850:.2,37819:.16,37851:.16,37820:.13375,37852:.13375,37821:.11125,37853:.11125,36492:1,36493:1,36494:1,36495:1},INTERNAL_FORMAT_TO_TEXTURE_FORMATS:{33776:`bc1-rgba-unorm`,33777:`bc1-rgba-unorm`,33778:`bc2-rgba-unorm`,33779:`bc3-rgba-unorm`,35916:`bc1-rgba-unorm-srgb`,35917:`bc1-rgba-unorm-srgb`,35918:`bc2-rgba-unorm-srgb`,35919:`bc3-rgba-unorm-srgb`,36283:`bc4-r-unorm`,36284:`bc4-r-snorm`,36285:`bc5-rg-unorm`,36286:`bc5-rg-snorm`,37488:`eac-r11unorm`,37490:`eac-rg11snorm`,37492:`etc2-rgb8unorm`,37496:`etc2-rgba8unorm`,37493:`etc2-rgb8unorm-srgb`,37497:`etc2-rgba8unorm-srgb`,37494:`etc2-rgb8a1unorm`,37495:`etc2-rgb8a1unorm-srgb`,37808:`astc-4x4-unorm`,37840:`astc-4x4-unorm-srgb`,37809:`astc-5x4-unorm`,37841:`astc-5x4-unorm-srgb`,37810:`astc-5x5-unorm`,37842:`astc-5x5-unorm-srgb`,37811:`astc-6x5-unorm`,37843:`astc-6x5-unorm-srgb`,37812:`astc-6x6-unorm`,37844:`astc-6x6-unorm-srgb`,37813:`astc-8x5-unorm`,37845:`astc-8x5-unorm-srgb`,37814:`astc-8x6-unorm`,37846:`astc-8x6-unorm-srgb`,37815:`astc-8x8-unorm`,37847:`astc-8x8-unorm-srgb`,37816:`astc-10x5-unorm`,37848:`astc-10x5-unorm-srgb`,37817:`astc-10x6-unorm`,37849:`astc-10x6-unorm-srgb`,37818:`astc-10x8-unorm`,37850:`astc-10x8-unorm-srgb`,37819:`astc-10x10-unorm`,37851:`astc-10x10-unorm-srgb`,37820:`astc-12x10-unorm`,37852:`astc-12x10-unorm-srgb`,37821:`astc-12x12-unorm`,37853:`astc-12x12-unorm-srgb`,36492:`bc7-rgba-unorm`,36493:`bc7-rgba-unorm-srgb`,36494:`bc6h-rgb-float`,36495:`bc6h-rgb-ufloat`,35907:`rgba8unorm-srgb`,36759:`rgba8snorm`,36220:`rgba8uint`,36238:`rgba8sint`,6408:`rgba8unorm`},FIELDS:{FILE_IDENTIFIER:0,ENDIANNESS:12,GL_TYPE:16,GL_TYPE_SIZE:20,GL_FORMAT:24,GL_INTERNAL_FORMAT:28,GL_BASE_INTERNAL_FORMAT:32,PIXEL_WIDTH:36,PIXEL_HEIGHT:40,PIXEL_DEPTH:44,NUMBER_OF_ARRAY_ELEMENTS:48,NUMBER_OF_FACES:52,NUMBER_OF_MIPMAP_LEVELS:56,BYTES_OF_KEY_VALUE_DATA:60},TYPES_TO_BYTES_PER_COMPONENT:{5121:1,5123:2,5124:4,5125:4,5126:4,36193:8},TYPES_TO_BYTES_PER_PIXEL:{32819:2,32820:2,33635:2},ENDIANNESS:67305985};function Js(e,t){let n=new DataView(e);if(!Qs(n))throw Error(`Invalid KTX identifier in header`);let{littleEndian:r,glType:i,glFormat:a,glInternalFormat:o,pixelWidth:s,pixelHeight:c,numberOfMipmapLevels:l,offset:u}=Zs(n),d=Y.INTERNAL_FORMAT_TO_TEXTURE_FORMATS[o];if(!d)throw Error(`Unknown texture format ${o}`);if(!t.includes(d))throw Error(`Unsupported texture format: ${d}, supportedFormats: ${t}`);return{format:d,width:s,height:c,resource:Ys(n,i,Xs(i,a,o),s,c,u,l,r),alphaMode:`no-premultiply-alpha`}}function Ys(e,t,n,r,i,a,o,s){let c=r+3&-4,l=i+3&-4,u=r*i;t===0&&(u=c*l);let d=u*n,f=r,p=i,m=c,h=l,g=a,_=Array(o);for(let t=0;t<o;t++){let r=e.getUint32(g,s),i=g+4;_[t]=new Uint8Array(e.buffer,i,d),i+=d,g+=r+4,g=g%4==0?g:g+4-g%4,f=f>>1||1,p=p>>1||1,m=f+4-1&-4,h=p+4-1&-4,d=m*h*n}return _}function Xs(e,t,n){let r=Y.INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[n];if(e!==0&&(r=Y.TYPES_TO_BYTES_PER_COMPONENT[e]?Y.TYPES_TO_BYTES_PER_COMPONENT[e]*Y.FORMATS_TO_COMPONENTS[t]:Y.TYPES_TO_BYTES_PER_PIXEL[e]),r===void 0)throw Error(`Unable to resolve the pixel format stored in the *.ktx file!`);return r}function Zs(e){let t=e.getUint32(Y.FIELDS.ENDIANNESS,!0)===Y.ENDIANNESS,n=e.getUint32(Y.FIELDS.GL_TYPE,t),r=e.getUint32(Y.FIELDS.GL_FORMAT,t),i=e.getUint32(Y.FIELDS.GL_INTERNAL_FORMAT,t),a=e.getUint32(Y.FIELDS.PIXEL_WIDTH,t),o=e.getUint32(Y.FIELDS.PIXEL_HEIGHT,t)||1,s=e.getUint32(Y.FIELDS.PIXEL_DEPTH,t)||1,c=e.getUint32(Y.FIELDS.NUMBER_OF_ARRAY_ELEMENTS,t)||1,l=e.getUint32(Y.FIELDS.NUMBER_OF_FACES,t),u=e.getUint32(Y.FIELDS.NUMBER_OF_MIPMAP_LEVELS,t),d=e.getUint32(Y.FIELDS.BYTES_OF_KEY_VALUE_DATA,t);if(o===0||s!==1)throw Error(`Only 2D textures are supported`);if(l!==1)throw Error(`CubeTextures are not supported by KTXLoader yet!`);if(c!==1)throw Error(`WebGL does not support array textures`);return{littleEndian:t,glType:n,glFormat:r,glInternalFormat:i,pixelWidth:a,pixelHeight:o,numberOfMipmapLevels:u,offset:Y.FILE_HEADER_SIZE+d}}function Qs(e){for(let t=0;t<Y.FILE_IDENTIFIER.length;t++)if(e.getUint8(t)!==Y.FILE_IDENTIFIER[t])return!1;return!0}var $s={extension:{type:W.LoadParser,priority:Vt.High,name:`loadKTX`},name:`loadKTX`,id:`ktx`,test(e){return mo(e,`.ktx`)},async load(e,t,n){let r=await vs();return Ao(new ls({...Js(await(await fetch(e)).arrayBuffer(),r),resolution:t.data?.resolution||ko(e)}),n,e)},unload(e){Array.isArray(e)?e.forEach(e=>e.destroy(!0)):e.destroy(!0)}},ec=`(function () {
|
|
1132
|
+
'use strict';
|
|
1133
|
+
|
|
1134
|
+
const converters = {
|
|
1135
|
+
rgb8unorm: {
|
|
1136
|
+
convertedFormat: "rgba8unorm",
|
|
1137
|
+
convertFunction: convertRGBtoRGBA
|
|
1138
|
+
},
|
|
1139
|
+
"rgb8unorm-srgb": {
|
|
1140
|
+
convertedFormat: "rgba8unorm-srgb",
|
|
1141
|
+
convertFunction: convertRGBtoRGBA
|
|
1142
|
+
}
|
|
1143
|
+
};
|
|
1144
|
+
function convertFormatIfRequired(textureOptions) {
|
|
1145
|
+
const format = textureOptions.format;
|
|
1146
|
+
if (converters[format]) {
|
|
1147
|
+
const convertFunction = converters[format].convertFunction;
|
|
1148
|
+
const levelBuffers = textureOptions.resource;
|
|
1149
|
+
for (let i = 0; i < levelBuffers.length; i++) {
|
|
1150
|
+
levelBuffers[i] = convertFunction(levelBuffers[i]);
|
|
1151
|
+
}
|
|
1152
|
+
textureOptions.format = converters[format].convertedFormat;
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1155
|
+
function convertRGBtoRGBA(levelBuffer) {
|
|
1156
|
+
const pixelCount = levelBuffer.byteLength / 3;
|
|
1157
|
+
const levelBufferWithAlpha = new Uint32Array(pixelCount);
|
|
1158
|
+
for (let i = 0; i < pixelCount; ++i) {
|
|
1159
|
+
levelBufferWithAlpha[i] = levelBuffer[i * 3] + (levelBuffer[i * 3 + 1] << 8) + (levelBuffer[i * 3 + 2] << 16) + 4278190080;
|
|
1160
|
+
}
|
|
1161
|
+
return new Uint8Array(levelBufferWithAlpha.buffer);
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
function createLevelBuffersFromKTX(ktxTexture) {
|
|
1165
|
+
const levelBuffers = [];
|
|
1166
|
+
for (let i = 0; i < ktxTexture.numLevels; i++) {
|
|
1167
|
+
const imageData = ktxTexture.getImageData(i, 0, 0);
|
|
1168
|
+
const levelBuffer = new Uint8Array(imageData.byteLength);
|
|
1169
|
+
levelBuffer.set(imageData);
|
|
1170
|
+
levelBuffers.push(levelBuffer);
|
|
1171
|
+
}
|
|
1172
|
+
return levelBuffers;
|
|
1173
|
+
}
|
|
1174
|
+
|
|
1175
|
+
const glFormatToGPUFormatMap = {
|
|
1176
|
+
6408: "rgba8unorm",
|
|
1177
|
+
32856: "bgra8unorm",
|
|
1178
|
+
//
|
|
1179
|
+
32857: "rgb10a2unorm",
|
|
1180
|
+
33189: "depth16unorm",
|
|
1181
|
+
33190: "depth24plus",
|
|
1182
|
+
33321: "r8unorm",
|
|
1183
|
+
33323: "rg8unorm",
|
|
1184
|
+
33325: "r16float",
|
|
1185
|
+
33326: "r32float",
|
|
1186
|
+
33327: "rg16float",
|
|
1187
|
+
33328: "rg32float",
|
|
1188
|
+
33329: "r8sint",
|
|
1189
|
+
33330: "r8uint",
|
|
1190
|
+
33331: "r16sint",
|
|
1191
|
+
33332: "r16uint",
|
|
1192
|
+
33333: "r32sint",
|
|
1193
|
+
33334: "r32uint",
|
|
1194
|
+
33335: "rg8sint",
|
|
1195
|
+
33336: "rg8uint",
|
|
1196
|
+
33337: "rg16sint",
|
|
1197
|
+
33338: "rg16uint",
|
|
1198
|
+
33339: "rg32sint",
|
|
1199
|
+
33340: "rg32uint",
|
|
1200
|
+
33778: "bc2-rgba-unorm",
|
|
1201
|
+
33779: "bc3-rgba-unorm",
|
|
1202
|
+
34836: "rgba32float",
|
|
1203
|
+
34842: "rgba16float",
|
|
1204
|
+
35056: "depth24plus-stencil8",
|
|
1205
|
+
35898: "rg11b10ufloat",
|
|
1206
|
+
35901: "rgb9e5ufloat",
|
|
1207
|
+
35907: "rgba8unorm-srgb",
|
|
1208
|
+
// bgra8unorm-srgb
|
|
1209
|
+
36012: "depth32float",
|
|
1210
|
+
36013: "depth32float-stencil8",
|
|
1211
|
+
36168: "stencil8",
|
|
1212
|
+
36208: "rgba32uint",
|
|
1213
|
+
36214: "rgba16uint",
|
|
1214
|
+
36220: "rgba8uint",
|
|
1215
|
+
36226: "rgba32sint",
|
|
1216
|
+
36232: "rgba16sint",
|
|
1217
|
+
36238: "rgba8sint",
|
|
1218
|
+
36492: "bc7-rgba-unorm",
|
|
1219
|
+
36756: "r8snorm",
|
|
1220
|
+
36757: "rg8snorm",
|
|
1221
|
+
36759: "rgba8snorm",
|
|
1222
|
+
37496: "etc2-rgba8unorm",
|
|
1223
|
+
37808: "astc-4x4-unorm"
|
|
1224
|
+
};
|
|
1225
|
+
function glFormatToGPUFormat(glInternalFormat) {
|
|
1226
|
+
const format = glFormatToGPUFormatMap[glInternalFormat];
|
|
1227
|
+
if (format) {
|
|
1228
|
+
return format;
|
|
1229
|
+
}
|
|
1230
|
+
throw new Error(\`Unsupported glInternalFormat: \${glInternalFormat}\`);
|
|
1231
|
+
}
|
|
1232
|
+
|
|
1233
|
+
const vkFormatToGPUFormatMap = {
|
|
1234
|
+
23: "rgb8unorm",
|
|
1235
|
+
// VK_FORMAT_R8G8B8_UNORM
|
|
1236
|
+
37: "rgba8unorm",
|
|
1237
|
+
// VK_FORMAT_R8G8B8A8_UNORM
|
|
1238
|
+
43: "rgba8unorm-srgb"
|
|
1239
|
+
// VK_FORMAT_R8G8B8A8_SRGB
|
|
1240
|
+
// TODO add more!
|
|
1241
|
+
};
|
|
1242
|
+
function vkFormatToGPUFormat(vkFormat) {
|
|
1243
|
+
const format = vkFormatToGPUFormatMap[vkFormat];
|
|
1244
|
+
if (format) {
|
|
1245
|
+
return format;
|
|
1246
|
+
}
|
|
1247
|
+
throw new Error(\`Unsupported VkFormat: \${vkFormat}\`);
|
|
1248
|
+
}
|
|
1249
|
+
|
|
1250
|
+
function getTextureFormatFromKTXTexture(ktxTexture) {
|
|
1251
|
+
if (ktxTexture.classId === 2) {
|
|
1252
|
+
return vkFormatToGPUFormat(ktxTexture.vkFormat);
|
|
1253
|
+
}
|
|
1254
|
+
return glFormatToGPUFormat(ktxTexture.glInternalformat);
|
|
1255
|
+
}
|
|
1256
|
+
|
|
1257
|
+
const gpuFormatToBasisTranscoderFormatMap = {
|
|
1258
|
+
"bc3-rgba-unorm": "BC3_RGBA",
|
|
1259
|
+
"bc7-rgba-unorm": "BC7_M5_RGBA",
|
|
1260
|
+
"etc2-rgba8unorm": "ETC2_RGBA",
|
|
1261
|
+
"astc-4x4-unorm": "ASTC_4x4_RGBA",
|
|
1262
|
+
// Uncompressed
|
|
1263
|
+
rgba8unorm: "RGBA32",
|
|
1264
|
+
rg11b10ufloat: "R11F_G11F_B10F"
|
|
1265
|
+
};
|
|
1266
|
+
function gpuFormatToKTXBasisTranscoderFormat(transcoderFormat) {
|
|
1267
|
+
const format = gpuFormatToBasisTranscoderFormatMap[transcoderFormat];
|
|
1268
|
+
if (format) {
|
|
1269
|
+
return format;
|
|
1270
|
+
}
|
|
1271
|
+
throw new Error(\`Unsupported transcoderFormat: \${transcoderFormat}\`);
|
|
1272
|
+
}
|
|
1273
|
+
|
|
1274
|
+
const settings = {
|
|
1275
|
+
jsUrl: "",
|
|
1276
|
+
wasmUrl: ""
|
|
1277
|
+
};
|
|
1278
|
+
let basisTranscoderFormat;
|
|
1279
|
+
let basisTranscodedTextureFormat;
|
|
1280
|
+
let ktxPromise;
|
|
1281
|
+
async function getKTX() {
|
|
1282
|
+
if (!ktxPromise) {
|
|
1283
|
+
const absoluteJsUrl = new URL(settings.jsUrl, location.origin).href;
|
|
1284
|
+
const absoluteWasmUrl = new URL(settings.wasmUrl, location.origin).href;
|
|
1285
|
+
importScripts(absoluteJsUrl);
|
|
1286
|
+
ktxPromise = new Promise((resolve) => {
|
|
1287
|
+
LIBKTX({
|
|
1288
|
+
locateFile: (_file) => absoluteWasmUrl
|
|
1289
|
+
}).then((libktx) => {
|
|
1290
|
+
resolve(libktx);
|
|
1291
|
+
});
|
|
1292
|
+
});
|
|
1293
|
+
}
|
|
1294
|
+
return ktxPromise;
|
|
1295
|
+
}
|
|
1296
|
+
async function fetchKTXTexture(url, ktx) {
|
|
1297
|
+
const ktx2Response = await fetch(url);
|
|
1298
|
+
if (ktx2Response.ok) {
|
|
1299
|
+
const ktx2ArrayBuffer = await ktx2Response.arrayBuffer();
|
|
1300
|
+
return new ktx.ktxTexture(new Uint8Array(ktx2ArrayBuffer));
|
|
1301
|
+
}
|
|
1302
|
+
throw new Error(\`Failed to load KTX(2) texture: \${url}\`);
|
|
1303
|
+
}
|
|
1304
|
+
const preferredTranscodedFormat = [
|
|
1305
|
+
"bc7-rgba-unorm",
|
|
1306
|
+
"astc-4x4-unorm",
|
|
1307
|
+
"etc2-rgba8unorm",
|
|
1308
|
+
"bc3-rgba-unorm",
|
|
1309
|
+
"rgba8unorm"
|
|
1310
|
+
];
|
|
1311
|
+
async function load(url) {
|
|
1312
|
+
const ktx = await getKTX();
|
|
1313
|
+
const ktxTexture = await fetchKTXTexture(url, ktx);
|
|
1314
|
+
let format;
|
|
1315
|
+
if (ktxTexture.needsTranscoding) {
|
|
1316
|
+
format = basisTranscodedTextureFormat;
|
|
1317
|
+
const transcodeFormat = ktx.TranscodeTarget[basisTranscoderFormat];
|
|
1318
|
+
const result = ktxTexture.transcodeBasis(transcodeFormat, 0);
|
|
1319
|
+
if (result !== ktx.ErrorCode.SUCCESS) {
|
|
1320
|
+
throw new Error("Unable to transcode basis texture.");
|
|
1321
|
+
}
|
|
1322
|
+
} else {
|
|
1323
|
+
format = getTextureFormatFromKTXTexture(ktxTexture);
|
|
1324
|
+
}
|
|
1325
|
+
const levelBuffers = createLevelBuffersFromKTX(ktxTexture);
|
|
1326
|
+
const textureOptions = {
|
|
1327
|
+
width: ktxTexture.baseWidth,
|
|
1328
|
+
height: ktxTexture.baseHeight,
|
|
1329
|
+
format,
|
|
1330
|
+
mipLevelCount: ktxTexture.numLevels,
|
|
1331
|
+
resource: levelBuffers,
|
|
1332
|
+
alphaMode: "no-premultiply-alpha"
|
|
1333
|
+
};
|
|
1334
|
+
convertFormatIfRequired(textureOptions);
|
|
1335
|
+
return textureOptions;
|
|
1336
|
+
}
|
|
1337
|
+
async function init(jsUrl, wasmUrl, supportedTextures) {
|
|
1338
|
+
if (jsUrl) settings.jsUrl = jsUrl;
|
|
1339
|
+
if (wasmUrl) settings.wasmUrl = wasmUrl;
|
|
1340
|
+
basisTranscodedTextureFormat = preferredTranscodedFormat.filter((format) => supportedTextures.includes(format))[0];
|
|
1341
|
+
basisTranscoderFormat = gpuFormatToKTXBasisTranscoderFormat(basisTranscodedTextureFormat);
|
|
1342
|
+
await getKTX();
|
|
1343
|
+
}
|
|
1344
|
+
const messageHandlers = {
|
|
1345
|
+
init: async (data) => {
|
|
1346
|
+
const { jsUrl, wasmUrl, supportedTextures } = data;
|
|
1347
|
+
await init(jsUrl, wasmUrl, supportedTextures);
|
|
1348
|
+
},
|
|
1349
|
+
load: async (data) => {
|
|
1350
|
+
try {
|
|
1351
|
+
const textureOptions = await load(data.url);
|
|
1352
|
+
return {
|
|
1353
|
+
type: "load",
|
|
1354
|
+
url: data.url,
|
|
1355
|
+
success: true,
|
|
1356
|
+
textureOptions,
|
|
1357
|
+
transferables: textureOptions.resource?.map((arr) => arr.buffer)
|
|
1358
|
+
};
|
|
1359
|
+
} catch (e) {
|
|
1360
|
+
throw e;
|
|
1361
|
+
}
|
|
1362
|
+
}
|
|
1363
|
+
};
|
|
1364
|
+
self.onmessage = (async (messageEvent) => {
|
|
1365
|
+
const message = messageEvent.data;
|
|
1366
|
+
try {
|
|
1367
|
+
const response = await messageHandlers[message.type]?.(message);
|
|
1368
|
+
if (response) {
|
|
1369
|
+
self.postMessage(response, response.transferables);
|
|
1370
|
+
}
|
|
1371
|
+
} catch (err) {
|
|
1372
|
+
self.postMessage({
|
|
1373
|
+
type: "error",
|
|
1374
|
+
err,
|
|
1375
|
+
url: message.url
|
|
1376
|
+
});
|
|
1377
|
+
}
|
|
1378
|
+
});
|
|
1379
|
+
|
|
1380
|
+
})();
|
|
1381
|
+
`,tc=null,nc=class{constructor(){tc||=URL.createObjectURL(new Blob([ec],{type:`application/javascript`})),this.worker=new Worker(tc)}};nc.revokeObjectURL=function(){tc&&=(URL.revokeObjectURL(tc),null)};var rc={jsUrl:`https://cdn.jsdelivr.net/npm/pixi.js/transcoders/ktx/libktx.js`,wasmUrl:`https://cdn.jsdelivr.net/npm/pixi.js/transcoders/ktx/libktx.wasm`};function ic(e){Object.assign(rc,e)}var ac,oc={},sc={};function cc(e){return ac||(ac=new nc().worker,ac.onmessage=e=>{let{err:t,success:n,url:r,textureOptions:i}=e.data;if(t){sc[r](t);return}n||console.warn(`Failed to load KTX texture`,r),oc[r](i)},ac.postMessage({type:`init`,jsUrl:rc.jsUrl,wasmUrl:rc.wasmUrl,supportedTextures:e})),ac}function lc(e,t){let n=cc(t);return new Promise((t,r)=>{oc[e]=t,sc[e]=r,n.postMessage({type:`load`,url:e})})}var uc={extension:{type:W.LoadParser,priority:Vt.High,name:`loadKTX2`},name:`loadKTX2`,id:`ktx2`,test(e){return mo(e,`.ktx2`)},async load(e,t,n){return Ao(new ls({...await lc(e,await vs()),resolution:t.data?.resolution||ko(e)}),n,e)},async unload(e){Array.isArray(e)?e.forEach(e=>e.destroy(!0)):e.destroy(!0)}},dc={rgb8unorm:{convertedFormat:`rgba8unorm`,convertFunction:pc},"rgb8unorm-srgb":{convertedFormat:`rgba8unorm-srgb`,convertFunction:pc}};function fc(e){let t=e.format;if(dc[t]){let n=dc[t].convertFunction,r=e.resource;for(let e=0;e<r.length;e++)r[e]=n(r[e]);e.format=dc[t].convertedFormat}}function pc(e){let t=e.byteLength/3,n=new Uint32Array(t);for(let r=0;r<t;++r)n[r]=e[r*3]+(e[r*3+1]<<8)+(e[r*3+2]<<16)+4278190080;return new Uint8Array(n.buffer)}function mc(e){let t=[];for(let n=0;n<e.numLevels;n++){let r=e.getImageData(n,0,0),i=new Uint8Array(r.byteLength);i.set(r),t.push(i)}return t}var hc={6408:`rgba8unorm`,32856:`bgra8unorm`,32857:`rgb10a2unorm`,33189:`depth16unorm`,33190:`depth24plus`,33321:`r8unorm`,33323:`rg8unorm`,33325:`r16float`,33326:`r32float`,33327:`rg16float`,33328:`rg32float`,33329:`r8sint`,33330:`r8uint`,33331:`r16sint`,33332:`r16uint`,33333:`r32sint`,33334:`r32uint`,33335:`rg8sint`,33336:`rg8uint`,33337:`rg16sint`,33338:`rg16uint`,33339:`rg32sint`,33340:`rg32uint`,33778:`bc2-rgba-unorm`,33779:`bc3-rgba-unorm`,34836:`rgba32float`,34842:`rgba16float`,35056:`depth24plus-stencil8`,35898:`rg11b10ufloat`,35901:`rgb9e5ufloat`,35907:`rgba8unorm-srgb`,36012:`depth32float`,36013:`depth32float-stencil8`,36168:`stencil8`,36208:`rgba32uint`,36214:`rgba16uint`,36220:`rgba8uint`,36226:`rgba32sint`,36232:`rgba16sint`,36238:`rgba8sint`,36492:`bc7-rgba-unorm`,36756:`r8snorm`,36757:`rg8snorm`,36759:`rgba8snorm`,37496:`etc2-rgba8unorm`,37808:`astc-4x4-unorm`};function gc(e){let t=hc[e];if(t)return t;throw Error(`Unsupported glInternalFormat: ${e}`)}var _c={23:`rgb8unorm`,37:`rgba8unorm`,43:`rgba8unorm-srgb`};function vc(e){let t=_c[e];if(t)return t;throw Error(`Unsupported VkFormat: ${e}`)}function yc(e){return e.classId===2?vc(e.vkFormat):gc(e.glInternalformat)}var bc={"bc3-rgba-unorm":`BC3_RGBA`,"bc7-rgba-unorm":`BC7_M5_RGBA`,"etc2-rgba8unorm":`ETC2_RGBA`,"astc-4x4-unorm":`ASTC_4x4_RGBA`,rgba8unorm:`RGBA32`,rg11b10ufloat:`R11F_G11F_B10F`};function xc(e){let t=bc[e];if(t)return t;throw Error(`Unsupported transcoderFormat: ${e}`)}var Sc=[`basis`,`bc7`,`bc6h`,`astc`,`etc2`,`bc5`,`bc4`,`bc3`,`bc2`,`bc1`,`eac`],Cc={extension:W.ResolveParser,test:e=>mo(e,[`.ktx`,`.ktx2`,`.dds`]),parse:e=>{let t,n=e.split(`.`);if(n.length>2){let e=n[n.length-2];Sc.includes(e)&&(t=e)}else t=n[n.length-1];return{resolution:parseFloat(Qt.RETINA_PREFIX.exec(e)?.[1]??`1`),format:t,src:e}}},wc,Tc={extension:{type:W.DetectionParser,priority:2},test:async()=>!!(await za()||La()),add:async e=>(wc=Ec(await hs()),[...wc,...e]),remove:async e=>wc?e.filter(e=>!(e in wc)):e};function Ec(e){let t=[`basis`],n={};return e.forEach(e=>{let r=e.split(`-`)[0];r&&!n[r]&&(n[r]=!0,t.push(r))}),t.sort((e,t)=>{let n=Sc.indexOf(e),r=Sc.indexOf(t);return n===-1?1:r===-1?-1:n-r}),t}var Dc=new l,Oc=new U,kc=new p,Ac=class{cull(e,t,n=!0){this._cullRecursive(e,t,n)}_cullRecursive(e,t,n=!0){if(e.cullable&&e.measurable&&e.includeInBuild)if(e.cullArea){kc.x=t.x,kc.y=t.y,kc.width=t.width,kc.height=t.height;let r=n?e.worldTransform:e.getGlobalTransform(Oc,n);e.culled=!kc.intersects(e.cullArea,r)}else{let r=Pe(e,n,Dc);e.culled=r.x>=t.x+t.width||r.y>=t.y+t.height||r.x+r.width<=t.x||r.y+r.height<=t.y}else e.culled=!1;if(!(!e.cullableChildren||e.culled||!e.renderable||!e.measurable||!e.includeInBuild))for(let r=0;r<e.children.length;r++)this._cullRecursive(e.children[r],t,n)}};Ac.shared=new Ac;var jc=Ac,Mc=class{static init(e){this._renderRef=this.render.bind(this),this.render=()=>{let t=e?.culler?.updateTransform!==!0;jc.shared.cull(this.stage,this.renderer.screen,t),this.renderer.render({container:this.stage})}}static destroy(){this.render=this._renderRef}};Mc.extension={priority:10,type:W.Application,name:`culler`};var Nc=e((e=>{function t(e,t,n){if(n===void 0&&(n=Array.prototype),e&&typeof n.find==`function`)return n.find.call(e,t);for(var r=0;r<e.length;r++)if(Object.prototype.hasOwnProperty.call(e,r)){var i=e[r];if(t.call(void 0,i,r,e))return i}}function n(e,t){return t===void 0&&(t=Object),t&&typeof t.freeze==`function`?t.freeze(e):e}function r(e,t){if(typeof e!=`object`||!e)throw TypeError(`target is not an object`);for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}var i=n({HTML:`text/html`,isHTML:function(e){return e===i.HTML},XML_APPLICATION:`application/xml`,XML_TEXT:`text/xml`,XML_XHTML_APPLICATION:`application/xhtml+xml`,XML_SVG_IMAGE:`image/svg+xml`}),a=n({HTML:`http://www.w3.org/1999/xhtml`,isHTML:function(e){return e===a.HTML},SVG:`http://www.w3.org/2000/svg`,XML:`http://www.w3.org/XML/1998/namespace`,XMLNS:`http://www.w3.org/2000/xmlns/`});e.assign=r,e.find=t,e.freeze=n,e.MIME_TYPE=i,e.NAMESPACE=a})),Pc=e((e=>{var t=Nc(),n=t.find,r=t.NAMESPACE;function i(e){return e!==``}function a(e){return e?e.split(/[\t\n\f\r ]+/).filter(i):[]}function o(e,t){return e.hasOwnProperty(t)||(e[t]=!0),e}function s(e){if(!e)return[];var t=a(e);return Object.keys(t.reduce(o,{}))}function c(e){return function(t){return e&&e.indexOf(t)!==-1}}function l(e,t){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])}function u(e,t){var n=e.prototype;if(!(n instanceof t)){function r(){}r.prototype=t.prototype,r=new r,l(n,r),e.prototype=n=r}n.constructor!=e&&(typeof e!=`function`&&console.error(`unknown Class:`+e),n.constructor=e)}var d={},f=d.ELEMENT_NODE=1,p=d.ATTRIBUTE_NODE=2,m=d.TEXT_NODE=3,h=d.CDATA_SECTION_NODE=4,g=d.ENTITY_REFERENCE_NODE=5,_=d.ENTITY_NODE=6,v=d.PROCESSING_INSTRUCTION_NODE=7,y=d.COMMENT_NODE=8,b=d.DOCUMENT_NODE=9,x=d.DOCUMENT_TYPE_NODE=10,S=d.DOCUMENT_FRAGMENT_NODE=11,C=d.NOTATION_NODE=12,w={},T={};w.INDEX_SIZE_ERR=(T[1]=`Index size error`,1),w.DOMSTRING_SIZE_ERR=(T[2]=`DOMString size error`,2);var E=w.HIERARCHY_REQUEST_ERR=(T[3]=`Hierarchy request error`,3);w.WRONG_DOCUMENT_ERR=(T[4]=`Wrong document`,4);var ee=w.INVALID_CHARACTER_ERR=(T[5]=`Invalid character`,5);w.NO_DATA_ALLOWED_ERR=(T[6]=`No data allowed`,6),w.NO_MODIFICATION_ALLOWED_ERR=(T[7]=`No modification allowed`,7);var D=w.NOT_FOUND_ERR=(T[8]=`Not found`,8);w.NOT_SUPPORTED_ERR=(T[9]=`Not supported`,9);var O=w.INUSE_ATTRIBUTE_ERR=(T[10]=`Attribute in use`,10),k=w.INVALID_STATE_ERR=(T[11]=`Invalid state`,11);w.SYNTAX_ERR=(T[12]=`Syntax error`,12),w.INVALID_MODIFICATION_ERR=(T[13]=`Invalid modification`,13),w.NAMESPACE_ERR=(T[14]=`Invalid namespace`,14),w.INVALID_ACCESS_ERR=(T[15]=`Invalid access`,15);function A(e,t){if(t instanceof Error)var n=t;else n=this,Error.call(this,T[e]),this.message=T[e],Error.captureStackTrace&&Error.captureStackTrace(this,A);return n.code=e,t&&(this.message=this.message+`: `+t),n}A.prototype=Error.prototype,l(w,A);function j(){}j.prototype={length:0,item:function(e){return e>=0&&e<this.length?this[e]:null},toString:function(e,t,n){for(var r=!!n&&!!n.requireWellFormed,i=[],a=0;a<this.length;a++)Ne(this[a],i,e,t,null,r);return i.join(``)},filter:function(e){return Array.prototype.filter.call(this,e)},indexOf:function(e){return Array.prototype.indexOf.call(this,e)}};function M(e,t){this._node=e,this._refresh=t,N(this)}function N(e){var t=e._node._inc||e._node.ownerDocument._inc;if(e._inc!==t){var n=e._refresh(e._node);if(Ie(e,`length`,n.length),!e.$$length||n.length<e.$$length)for(var r=n.length;r in e;r++)Object.prototype.hasOwnProperty.call(e,r)&&delete e[r];l(n,e),e._inc=t}}M.prototype.item=function(e){return N(this),this[e]||null},u(M,j);function P(){}function F(e,t){for(var n=e.length;n--;)if(e[n]===t)return n}function I(e,t,n,r){if(r?t[F(t,r)]=n:t[t.length++]=n,e){n.ownerElement=e;var i=e.ownerDocument;i&&(r&&re(i,e,r),ne(i,e,n))}}function L(e,t,n){var r=F(t,n);if(r>=0){for(var i=t.length-1;r<i;)t[r]=t[++r];if(t.length=i,e){var a=e.ownerDocument;a&&(re(a,e,n),n.ownerElement=null)}}else throw new A(D,Error(e.tagName+`@`+n))}P.prototype={length:0,item:j.prototype.item,getNamedItem:function(e){for(var t=this.length;t--;){var n=this[t];if(n.nodeName==e)return n}},setNamedItem:function(e){var t=e.ownerElement;if(t&&t!=this._ownerElement)throw new A(O);var n=this.getNamedItem(e.nodeName);return I(this._ownerElement,this,e,n),n},setNamedItemNS:function(e){var t=e.ownerElement,n;if(t&&t!=this._ownerElement)throw new A(O);return n=this.getNamedItemNS(e.namespaceURI,e.localName),I(this._ownerElement,this,e,n),n},removeNamedItem:function(e){var t=this.getNamedItem(e);return L(this._ownerElement,this,t),t},removeNamedItemNS:function(e,t){var n=this.getNamedItemNS(e,t);return L(this._ownerElement,this,n),n},getNamedItemNS:function(e,t){for(var n=this.length;n--;){var r=this[n];if(r.localName==t&&r.namespaceURI==e)return r}return null}};function R(){}R.prototype={hasFeature:function(e,t){return!0},createDocument:function(e,t,n){var r=new te;if(r.implementation=this,r.childNodes=new j,r.doctype=n||null,n&&r.appendChild(n),t){var i=r.createElementNS(e,t);r.appendChild(i)}return r},createDocumentType:function(e,t,n){var r=new Ce;return r.name=e,r.nodeName=e,r.publicId=t||``,r.systemId=n||``,r}};function z(){}z.prototype={firstChild:null,lastChild:null,previousSibling:null,nextSibling:null,attributes:null,parentNode:null,childNodes:null,ownerDocument:null,nodeValue:null,namespaceURI:null,prefix:null,localName:null,insertBefore:function(e,t){return he(this,e,t)},replaceChild:function(e,t){he(this,e,t,me),t&&this.removeChild(t)},removeChild:function(e){return ae(this,e)},appendChild:function(e){return this.insertBefore(e,null)},hasChildNodes:function(){return this.firstChild!=null},cloneNode:function(e){return Fe(this.ownerDocument||this,this,e)},normalize:function(){H(this,null,{enter:function(e){for(var t=e.firstChild;t;){var n=t.nextSibling;n!==null&&n.nodeType===m&&t.nodeType===m?(e.removeChild(n),t.appendData(n.data)):t=n}return!0}})},isSupported:function(e,t){return this.ownerDocument.implementation.hasFeature(e,t)},hasAttributes:function(){return this.attributes.length>0},lookupPrefix:function(e){for(var t=this;t;){var n=t._nsMap;if(n){for(var r in n)if(Object.prototype.hasOwnProperty.call(n,r)&&n[r]===e)return r}t=t.nodeType==p?t.ownerDocument:t.parentNode}return null},lookupNamespaceURI:function(e){for(var t=this;t;){var n=t._nsMap;if(n&&Object.prototype.hasOwnProperty.call(n,e))return n[e];t=t.nodeType==p?t.ownerDocument:t.parentNode}return null},isDefaultNamespace:function(e){return this.lookupPrefix(e)==null}};function B(e){return e==`<`&&`<`||e==`>`&&`>`||e==`&`&&`&`||e==`"`&&`"`||`&#`+e.charCodeAt()+`;`}l(d,z),l(d,z.prototype);function V(e,t){return H(e,null,{enter:function(e){return t(e)?H.STOP:!0}})===H.STOP}function H(e,t,n){for(var r=[{node:e,context:t,phase:H.ENTER}];r.length>0;){var i=r.pop();if(i.phase===H.ENTER){var a=n.enter(i.node,i.context);if(a===H.STOP)return H.STOP;if(r.push({node:i.node,context:a,phase:H.EXIT}),a==null)continue;for(var o=i.node.lastChild;o;)r.push({node:o,context:a,phase:H.ENTER}),o=o.previousSibling}else n.exit&&n.exit(i.node,i.context)}}H.STOP=Symbol(`walkDOM.STOP`),H.ENTER=0,H.EXIT=1;function te(){this.ownerDocument=this}function ne(e,t,n){e&&e._inc++,n.namespaceURI===r.XMLNS&&(t._nsMap[n.prefix?n.localName:``]=n.value)}function re(e,t,n,i){e&&e._inc++,n.namespaceURI===r.XMLNS&&delete t._nsMap[n.prefix?n.localName:``]}function ie(e,t,n){if(e&&e._inc){e._inc++;var r=t.childNodes;if(n)r[r.length++]=n;else{for(var i=t.firstChild,a=0;i;)r[a++]=i,i=i.nextSibling;r.length=a,delete r[r.length]}}}function ae(e,t){var n=t.previousSibling,r=t.nextSibling;return n?n.nextSibling=r:e.firstChild=r,r?r.previousSibling=n:e.lastChild=n,t.parentNode=null,t.previousSibling=null,t.nextSibling=null,ie(e.ownerDocument,e),t}function oe(e){return e&&(e.nodeType===z.DOCUMENT_NODE||e.nodeType===z.DOCUMENT_FRAGMENT_NODE||e.nodeType===z.ELEMENT_NODE)}function se(e){return e&&(le(e)||ue(e)||ce(e)||e.nodeType===z.DOCUMENT_FRAGMENT_NODE||e.nodeType===z.COMMENT_NODE||e.nodeType===z.PROCESSING_INSTRUCTION_NODE)}function ce(e){return e&&e.nodeType===z.DOCUMENT_TYPE_NODE}function le(e){return e&&e.nodeType===z.ELEMENT_NODE}function ue(e){return e&&e.nodeType===z.TEXT_NODE}function de(e,t){var r=e.childNodes||[];if(n(r,le)||ce(t))return!1;var i=n(r,ce);return!(t&&i&&r.indexOf(i)>r.indexOf(t))}function fe(e,t){var r=e.childNodes||[];function i(e){return le(e)&&e!==t}if(n(r,i))return!1;var a=n(r,ce);return!(t&&a&&r.indexOf(a)>r.indexOf(t))}function U(e,t,n){if(!oe(e))throw new A(E,`Unexpected parent node type `+e.nodeType);if(n&&n.parentNode!==e)throw new A(D,`child not in parent`);if(!se(t)||ce(t)&&e.nodeType!==z.DOCUMENT_NODE)throw new A(E,`Unexpected node type `+t.nodeType+` for parent node type `+e.nodeType)}function pe(e,t,r){var i=e.childNodes||[],a=t.childNodes||[];if(t.nodeType===z.DOCUMENT_FRAGMENT_NODE){var o=a.filter(le);if(o.length>1||n(a,ue))throw new A(E,`More than one element or text in fragment`);if(o.length===1&&!de(e,r))throw new A(E,`Element in fragment can not be inserted before doctype`)}if(le(t)&&!de(e,r))throw new A(E,`Only one element can be added and only after doctype`);if(ce(t)){if(n(i,ce))throw new A(E,`Only one doctype is allowed`);var s=n(i,le);if(r&&i.indexOf(s)<i.indexOf(r))throw new A(E,`Doctype can only be inserted before an element`);if(!r&&s)throw new A(E,`Doctype can not be appended since element is present`)}}function me(e,t,r){var i=e.childNodes||[],a=t.childNodes||[];if(t.nodeType===z.DOCUMENT_FRAGMENT_NODE){var o=a.filter(le);if(o.length>1||n(a,ue))throw new A(E,`More than one element or text in fragment`);if(o.length===1&&!fe(e,r))throw new A(E,`Element in fragment can not be inserted before doctype`)}if(le(t)&&!fe(e,r))throw new A(E,`Only one element can be added and only after doctype`);if(ce(t)){function e(e){return ce(e)&&e!==r}if(n(i,e))throw new A(E,`Only one doctype is allowed`);var s=n(i,le);if(r&&i.indexOf(s)<i.indexOf(r))throw new A(E,`Doctype can only be inserted before an element`)}}function he(e,t,n,r){U(e,t,n),e.nodeType===z.DOCUMENT_NODE&&(r||pe)(e,t,n);var i=t.parentNode;if(i&&i.removeChild(t),t.nodeType===S){var a=t.firstChild;if(a==null)return t;var o=t.lastChild}else a=o=t;var s=n?n.previousSibling:e.lastChild;a.previousSibling=s,o.nextSibling=n,s?s.nextSibling=a:e.firstChild=a,n==null?e.lastChild=o:n.previousSibling=o;do{a.parentNode=e;var c=e.ownerDocument||e;ge(a,c)}while(a!==o&&(a=a.nextSibling));return ie(e.ownerDocument||e,e),t.nodeType==S&&(t.firstChild=t.lastChild=null),t}function ge(e,t){if(e.ownerDocument!==t){if(e.ownerDocument=t,e.nodeType===f&&e.attributes)for(var n=0;n<e.attributes.length;n++){var r=e.attributes.item(n);r&&(r.ownerDocument=t)}for(var i=e.firstChild;i;)ge(i,t),i=i.nextSibling}}function _e(e,t){return t.parentNode&&t.parentNode.removeChild(t),t.parentNode=e,t.previousSibling=e.lastChild,t.nextSibling=null,t.previousSibling?t.previousSibling.nextSibling=t:e.firstChild=t,e.lastChild=t,ie(e.ownerDocument,e,t),ge(t,e.ownerDocument||e),t}te.prototype={nodeName:`#document`,nodeType:b,doctype:null,documentElement:null,_inc:1,insertBefore:function(e,t){if(e.nodeType==S){for(var n=e.firstChild;n;){var r=n.nextSibling;this.insertBefore(n,t),n=r}return e}return he(this,e,t),ge(e,this),this.documentElement===null&&e.nodeType===f&&(this.documentElement=e),e},removeChild:function(e){return this.documentElement==e&&(this.documentElement=null),ae(this,e)},replaceChild:function(e,t){he(this,e,t,me),ge(e,this),t&&this.removeChild(t),le(e)&&(this.documentElement=e)},importNode:function(e,t){return Pe(this,e,t)},getElementById:function(e){var t=null;return V(this.documentElement,function(n){if(n.nodeType==f&&n.getAttribute(`id`)==e)return t=n,!0}),t},getElementsByClassName:function(e){var t=s(e);return new M(this,function(n){var r=[];return t.length>0&&V(n.documentElement,function(i){if(i!==n&&i.nodeType===f){var a=i.getAttribute(`class`);if(a){var o=e===a;if(!o){var l=s(a);o=t.every(c(l))}o&&r.push(i)}}}),r})},createElement:function(e){var t=new W;t.ownerDocument=this,t.nodeName=e,t.tagName=e,t.localName=e,t.childNodes=new j;var n=t.attributes=new P;return n._ownerElement=t,t},createDocumentFragment:function(){var e=new De;return e.ownerDocument=this,e.childNodes=new j,e},createTextNode:function(e){var t=new be;return t.ownerDocument=this,t.appendData(e),t},createComment:function(e){var t=new xe;return t.ownerDocument=this,t.appendData(e),t},createCDATASection:function(e){if(e.indexOf(`]]>`)!==-1)throw new A(ee,`data contains "]]>"`);var t=new Se;return t.ownerDocument=this,t.appendData(e),t},createProcessingInstruction:function(e,t){var n=new Oe;return n.ownerDocument=this,n.tagName=n.nodeName=n.target=e,n.nodeValue=n.data=t,n},createAttribute:function(e){var t=new ve;return t.ownerDocument=this,t.name=e,t.nodeName=e,t.localName=e,t.specified=!0,t},createEntityReference:function(e){var t=new Ee;return t.ownerDocument=this,t.nodeName=e,t},createElementNS:function(e,t){var n=new W,r=t.split(`:`),i=n.attributes=new P;return n.childNodes=new j,n.ownerDocument=this,n.nodeName=t,n.tagName=t,n.namespaceURI=e,r.length==2?(n.prefix=r[0],n.localName=r[1]):n.localName=t,i._ownerElement=n,n},createAttributeNS:function(e,t){var n=new ve,r=t.split(`:`);return n.ownerDocument=this,n.nodeName=t,n.name=t,n.namespaceURI=e,n.specified=!0,r.length==2?(n.prefix=r[0],n.localName=r[1]):n.localName=t,n}},u(te,z);function W(){this._nsMap={}}W.prototype={nodeType:f,hasAttribute:function(e){return this.getAttributeNode(e)!=null},getAttribute:function(e){var t=this.getAttributeNode(e);return t&&t.value||``},getAttributeNode:function(e){return this.attributes.getNamedItem(e)},setAttribute:function(e,t){var n=this.ownerDocument.createAttribute(e);n.value=n.nodeValue=``+t,this.setAttributeNode(n)},removeAttribute:function(e){var t=this.getAttributeNode(e);t&&this.removeAttributeNode(t)},appendChild:function(e){return e.nodeType===S?this.insertBefore(e,null):_e(this,e)},setAttributeNode:function(e){return this.attributes.setNamedItem(e)},setAttributeNodeNS:function(e){return this.attributes.setNamedItemNS(e)},removeAttributeNode:function(e){return this.attributes.removeNamedItem(e.nodeName)},removeAttributeNS:function(e,t){var n=this.getAttributeNodeNS(e,t);n&&this.removeAttributeNode(n)},hasAttributeNS:function(e,t){return this.getAttributeNodeNS(e,t)!=null},getAttributeNS:function(e,t){var n=this.getAttributeNodeNS(e,t);return n&&n.value||``},setAttributeNS:function(e,t,n){var r=this.ownerDocument.createAttributeNS(e,t);r.value=r.nodeValue=``+n,this.setAttributeNode(r)},getAttributeNodeNS:function(e,t){return this.attributes.getNamedItemNS(e,t)},getElementsByTagName:function(e){return new M(this,function(t){var n=[];return V(t,function(r){r!==t&&r.nodeType==f&&(e===`*`||r.tagName==e)&&n.push(r)}),n})},getElementsByTagNameNS:function(e,t){return new M(this,function(n){var r=[];return V(n,function(i){i!==n&&i.nodeType===f&&(e===`*`||i.namespaceURI===e)&&(t===`*`||i.localName==t)&&r.push(i)}),r})}},te.prototype.getElementsByTagName=W.prototype.getElementsByTagName,te.prototype.getElementsByTagNameNS=W.prototype.getElementsByTagNameNS,u(W,z);function ve(){}ve.prototype.nodeType=p,u(ve,z);function ye(){}ye.prototype={data:``,substringData:function(e,t){return this.data.substring(e,e+t)},appendData:function(e){e=this.data+e,this.nodeValue=this.data=e,this.length=e.length},insertData:function(e,t){this.replaceData(e,0,t)},appendChild:function(e){throw Error(T[E])},deleteData:function(e,t){this.replaceData(e,t,``)},replaceData:function(e,t,n){var r=this.data.substring(0,e),i=this.data.substring(e+t);n=r+n+i,this.nodeValue=this.data=n,this.length=n.length}},u(ye,z);function be(){}be.prototype={nodeName:`#text`,nodeType:m,splitText:function(e){var t=this.data,n=t.substring(e);t=t.substring(0,e),this.data=this.nodeValue=t,this.length=t.length;var r=this.ownerDocument.createTextNode(n);return this.parentNode&&this.parentNode.insertBefore(r,this.nextSibling),r}},u(be,ye);function xe(){}xe.prototype={nodeName:`#comment`,nodeType:y},u(xe,ye);function Se(){}Se.prototype={nodeName:`#cdata-section`,nodeType:h},u(Se,ye);function Ce(){}Ce.prototype.nodeType=x,u(Ce,z);function we(){}we.prototype.nodeType=C,u(we,z);function Te(){}Te.prototype.nodeType=_,u(Te,z);function Ee(){}Ee.prototype.nodeType=g,u(Ee,z);function De(){}De.prototype.nodeName=`#document-fragment`,De.prototype.nodeType=S,u(De,z);function Oe(){}Oe.prototype.nodeType=v,u(Oe,z);function ke(){}ke.prototype.serializeToString=function(e,t,n,r){return Ae.call(e,t,n,r)},z.prototype.toString=Ae;function Ae(e,t,n){var r=!!n&&!!n.requireWellFormed,i=[],a=this.nodeType==9&&this.documentElement||this,o=a.prefix,s=a.namespaceURI;if(s&&o==null){var o=a.lookupPrefix(s);if(o==null)var c=[{namespace:s,prefix:null}]}return Ne(this,i,e,t,c,r),i.join(``)}function je(e,t,n){var i=e.prefix||``,a=e.namespaceURI;if(!a||i===`xml`&&a===r.XML||a===r.XMLNS)return!1;for(var o=n.length;o--;){var s=n[o];if(s.prefix===i)return s.namespace!==a}return!0}function Me(e,t,n){e.push(` `,t,`="`,n.replace(/[<>&"\t\n\r]/g,B),`"`)}function Ne(e,t,n,i,a,o){a||=[],H(e,{ns:a,isHTML:n},{enter:function(e,n){var a=n.ns,s=n.isHTML;if(i)if(e=i(e),e){if(typeof e==`string`)return t.push(e),null}else return null;switch(e.nodeType){case f:var c=e.attributes,l=c.length,u=e.tagName;s=r.isHTML(e.namespaceURI)||s;var d=u;if(!s&&!e.prefix&&e.namespaceURI){for(var _,C=0;C<c.length;C++)if(c.item(C).name===`xmlns`){_=c.item(C).value;break}if(!_)for(var w=a.length-1;w>=0;w--){var T=a[w];if(T.prefix===``&&T.namespace===e.namespaceURI){_=T.namespace;break}}if(_!==e.namespaceURI)for(var w=a.length-1;w>=0;w--){var T=a[w];if(T.namespace===e.namespaceURI){T.prefix&&(d=T.prefix+`:`+u);break}}}t.push(`<`,d);for(var E=a.slice(),ee=0;ee<l;ee++){var D=c.item(ee);D.prefix==`xmlns`?E.push({prefix:D.localName,namespace:D.value}):D.nodeName==`xmlns`&&E.push({prefix:``,namespace:D.value})}for(var ee=0;ee<l;ee++){var D=c.item(ee);if(je(D,s,E)){var O=D.prefix||``,j=D.namespaceURI;Me(t,O?`xmlns:`+O:`xmlns`,j),E.push({prefix:O,namespace:j})}var M=i?i(D):D;M&&(typeof M==`string`?t.push(M):Me(t,M.name,M.value))}if(u===d&&je(e,s,E)){var N=e.prefix||``,j=e.namespaceURI;Me(t,N?`xmlns:`+N:`xmlns`,j),E.push({prefix:N,namespace:j})}var P=e.firstChild;if(P||s&&!/^(?:meta|link|img|br|hr|input)$/i.test(u)){if(t.push(`>`),s&&/^script$/i.test(u)){for(;P;)P.data?t.push(P.data):Ne(P,t,s,i,E.slice(),o),P=P.nextSibling;return t.push(`</`,u,`>`),null}return{ns:E,isHTML:s,tag:d}}else return t.push(`/>`),null;case b:case S:return{ns:a.slice(),isHTML:s,tag:null};case p:return Me(t,e.name,e.value),null;case m:return t.push(e.data.replace(/[<&>]/g,B)),null;case h:if(o&&e.data.indexOf(`]]>`)!==-1)throw new A(k,`The CDATASection data contains "]]>"`);return t.push(`<![CDATA[`,e.data.replace(/]]>/g,`]]]]><![CDATA[>`),`]]>`),null;case y:if(o&&e.data.indexOf(`-->`)!==-1)throw new A(k,`The comment node data contains "-->"`);return t.push(`<!--`,e.data,`-->`),null;case x:if(o){if(e.publicId&&!/^("[\x20\r\na-zA-Z0-9\-()+,.\/:=?;!*#@$_%']*"|'[\x20\r\na-zA-Z0-9\-()+,.\/:=?;!*#@$_%'"]*')$/.test(e.publicId))throw new A(k,`DocumentType publicId is not a valid PubidLiteral`);if(e.systemId&&!/^("[^"]*"|'[^']*')$/.test(e.systemId))throw new A(k,`DocumentType systemId is not a valid SystemLiteral`);if(e.internalSubset&&e.internalSubset.indexOf(`]>`)!==-1)throw new A(k,`DocumentType internalSubset contains "]>"`)}var F=e.publicId,I=e.systemId;if(t.push(`<!DOCTYPE `,e.name),F)t.push(` PUBLIC `,F),I&&I!=`.`&&t.push(` `,I),t.push(`>`);else if(I&&I!=`.`)t.push(` SYSTEM `,I,`>`);else{var L=e.internalSubset;L&&t.push(` [`,L,`]`),t.push(`>`)}return null;case v:if(o&&e.data.indexOf(`?>`)!==-1)throw new A(k,`The ProcessingInstruction data contains "?>"`);return t.push(`<?`,e.target,` `,e.data,`?>`),null;case g:return t.push(`&`,e.nodeName,`;`),null;default:return t.push(`??`,e.nodeName),null}},exit:function(e,n){n&&n.tag&&t.push(`</`,n.tag,`>`)}})}function Pe(e,t,n){var r;return H(t,null,{enter:function(t,i){var a=t.cloneNode(!1);return a.ownerDocument=e,a.parentNode=null,i===null?r=a:i.appendChild(a),t.nodeType===p||n?a:null}}),r}function Fe(e,t,n){var r;return H(t,null,{enter:function(t,i){var a=new t.constructor;for(var o in t)if(Object.prototype.hasOwnProperty.call(t,o)){var s=t[o];typeof s!=`object`&&s!=a[o]&&(a[o]=s)}t.childNodes&&(a.childNodes=new j),a.ownerDocument=e;var c=n;switch(a.nodeType){case f:var l=t.attributes,u=a.attributes=new P,d=l.length;u._ownerElement=a;for(var m=0;m<d;m++)a.setAttributeNode(Fe(e,l.item(m),!0));break;case p:c=!0}return i===null?r=a:i.appendChild(a),c?a:null}}),r}function Ie(e,t,n){e[t]=n}try{Object.defineProperty&&(Object.defineProperty(M.prototype,"length",{get:function(){return N(this),this.$$length}}),Object.defineProperty(z.prototype,"textContent",{get:function(){if(this.nodeType===f||this.nodeType===S){var e=[];return H(this,null,{enter:function(t){if(t.nodeType===f||t.nodeType===S)return!0;if(t.nodeType===v||t.nodeType===y)return null;e.push(t.nodeValue)}}),e.join(``)}return this.nodeValue},set:function(e){switch(this.nodeType){case f:case S:for(;this.firstChild;)this.removeChild(this.firstChild);(e||String(e))&&this.appendChild(this.ownerDocument.createTextNode(e));break;default:this.data=e,this.value=e,this.nodeValue=e}}}),Ie=function(e,t,n){e[`$$`+t]=n})}catch{}e.DocumentType=Ce,e.DOMException=A,e.DOMImplementation=R,e.Element=W,e.Node=z,e.NodeList=j,e.walkDOM=H,e.XMLSerializer=ke})),Fc=e((e=>{var t=Nc().freeze;e.XML_ENTITIES=t({amp:`&`,apos:`'`,gt:`>`,lt:`<`,quot:`"`}),e.HTML_ENTITIES=t({Aacute:`Á`,aacute:`á`,Abreve:`Ă`,abreve:`ă`,ac:`∾`,acd:`∿`,acE:`∾̳`,Acirc:`Â`,acirc:`â`,acute:`´`,Acy:`А`,acy:`а`,AElig:`Æ`,aelig:`æ`,af:``,Afr:`𝔄`,afr:`𝔞`,Agrave:`À`,agrave:`à`,alefsym:`ℵ`,aleph:`ℵ`,Alpha:`Α`,alpha:`α`,Amacr:`Ā`,amacr:`ā`,amalg:`⨿`,AMP:`&`,amp:`&`,And:`⩓`,and:`∧`,andand:`⩕`,andd:`⩜`,andslope:`⩘`,andv:`⩚`,ang:`∠`,ange:`⦤`,angle:`∠`,angmsd:`∡`,angmsdaa:`⦨`,angmsdab:`⦩`,angmsdac:`⦪`,angmsdad:`⦫`,angmsdae:`⦬`,angmsdaf:`⦭`,angmsdag:`⦮`,angmsdah:`⦯`,angrt:`∟`,angrtvb:`⊾`,angrtvbd:`⦝`,angsph:`∢`,angst:`Å`,angzarr:`⍼`,Aogon:`Ą`,aogon:`ą`,Aopf:`𝔸`,aopf:`𝕒`,ap:`≈`,apacir:`⩯`,apE:`⩰`,ape:`≊`,apid:`≋`,apos:`'`,ApplyFunction:``,approx:`≈`,approxeq:`≊`,Aring:`Å`,aring:`å`,Ascr:`𝒜`,ascr:`𝒶`,Assign:`≔`,ast:`*`,asymp:`≈`,asympeq:`≍`,Atilde:`Ã`,atilde:`ã`,Auml:`Ä`,auml:`ä`,awconint:`∳`,awint:`⨑`,backcong:`≌`,backepsilon:`϶`,backprime:`‵`,backsim:`∽`,backsimeq:`⋍`,Backslash:`∖`,Barv:`⫧`,barvee:`⊽`,Barwed:`⌆`,barwed:`⌅`,barwedge:`⌅`,bbrk:`⎵`,bbrktbrk:`⎶`,bcong:`≌`,Bcy:`Б`,bcy:`б`,bdquo:`„`,becaus:`∵`,Because:`∵`,because:`∵`,bemptyv:`⦰`,bepsi:`϶`,bernou:`ℬ`,Bernoullis:`ℬ`,Beta:`Β`,beta:`β`,beth:`ℶ`,between:`≬`,Bfr:`𝔅`,bfr:`𝔟`,bigcap:`⋂`,bigcirc:`◯`,bigcup:`⋃`,bigodot:`⨀`,bigoplus:`⨁`,bigotimes:`⨂`,bigsqcup:`⨆`,bigstar:`★`,bigtriangledown:`▽`,bigtriangleup:`△`,biguplus:`⨄`,bigvee:`⋁`,bigwedge:`⋀`,bkarow:`⤍`,blacklozenge:`⧫`,blacksquare:`▪`,blacktriangle:`▴`,blacktriangledown:`▾`,blacktriangleleft:`◂`,blacktriangleright:`▸`,blank:`␣`,blk12:`▒`,blk14:`░`,blk34:`▓`,block:`█`,bne:`=⃥`,bnequiv:`≡⃥`,bNot:`⫭`,bnot:`⌐`,Bopf:`𝔹`,bopf:`𝕓`,bot:`⊥`,bottom:`⊥`,bowtie:`⋈`,boxbox:`⧉`,boxDL:`╗`,boxDl:`╖`,boxdL:`╕`,boxdl:`┐`,boxDR:`╔`,boxDr:`╓`,boxdR:`╒`,boxdr:`┌`,boxH:`═`,boxh:`─`,boxHD:`╦`,boxHd:`╤`,boxhD:`╥`,boxhd:`┬`,boxHU:`╩`,boxHu:`╧`,boxhU:`╨`,boxhu:`┴`,boxminus:`⊟`,boxplus:`⊞`,boxtimes:`⊠`,boxUL:`╝`,boxUl:`╜`,boxuL:`╛`,boxul:`┘`,boxUR:`╚`,boxUr:`╙`,boxuR:`╘`,boxur:`└`,boxV:`║`,boxv:`│`,boxVH:`╬`,boxVh:`╫`,boxvH:`╪`,boxvh:`┼`,boxVL:`╣`,boxVl:`╢`,boxvL:`╡`,boxvl:`┤`,boxVR:`╠`,boxVr:`╟`,boxvR:`╞`,boxvr:`├`,bprime:`‵`,Breve:`˘`,breve:`˘`,brvbar:`¦`,Bscr:`ℬ`,bscr:`𝒷`,bsemi:`⁏`,bsim:`∽`,bsime:`⋍`,bsol:`\\`,bsolb:`⧅`,bsolhsub:`⟈`,bull:`•`,bullet:`•`,bump:`≎`,bumpE:`⪮`,bumpe:`≏`,Bumpeq:`≎`,bumpeq:`≏`,Cacute:`Ć`,cacute:`ć`,Cap:`⋒`,cap:`∩`,capand:`⩄`,capbrcup:`⩉`,capcap:`⩋`,capcup:`⩇`,capdot:`⩀`,CapitalDifferentialD:`ⅅ`,caps:`∩︀`,caret:`⁁`,caron:`ˇ`,Cayleys:`ℭ`,ccaps:`⩍`,Ccaron:`Č`,ccaron:`č`,Ccedil:`Ç`,ccedil:`ç`,Ccirc:`Ĉ`,ccirc:`ĉ`,Cconint:`∰`,ccups:`⩌`,ccupssm:`⩐`,Cdot:`Ċ`,cdot:`ċ`,cedil:`¸`,Cedilla:`¸`,cemptyv:`⦲`,cent:`¢`,CenterDot:`·`,centerdot:`·`,Cfr:`ℭ`,cfr:`𝔠`,CHcy:`Ч`,chcy:`ч`,check:`✓`,checkmark:`✓`,Chi:`Χ`,chi:`χ`,cir:`○`,circ:`ˆ`,circeq:`≗`,circlearrowleft:`↺`,circlearrowright:`↻`,circledast:`⊛`,circledcirc:`⊚`,circleddash:`⊝`,CircleDot:`⊙`,circledR:`®`,circledS:`Ⓢ`,CircleMinus:`⊖`,CirclePlus:`⊕`,CircleTimes:`⊗`,cirE:`⧃`,cire:`≗`,cirfnint:`⨐`,cirmid:`⫯`,cirscir:`⧂`,ClockwiseContourIntegral:`∲`,CloseCurlyDoubleQuote:`”`,CloseCurlyQuote:`’`,clubs:`♣`,clubsuit:`♣`,Colon:`∷`,colon:`:`,Colone:`⩴`,colone:`≔`,coloneq:`≔`,comma:`,`,commat:`@`,comp:`∁`,compfn:`∘`,complement:`∁`,complexes:`ℂ`,cong:`≅`,congdot:`⩭`,Congruent:`≡`,Conint:`∯`,conint:`∮`,ContourIntegral:`∮`,Copf:`ℂ`,copf:`𝕔`,coprod:`∐`,Coproduct:`∐`,COPY:`©`,copy:`©`,copysr:`℗`,CounterClockwiseContourIntegral:`∳`,crarr:`↵`,Cross:`⨯`,cross:`✗`,Cscr:`𝒞`,cscr:`𝒸`,csub:`⫏`,csube:`⫑`,csup:`⫐`,csupe:`⫒`,ctdot:`⋯`,cudarrl:`⤸`,cudarrr:`⤵`,cuepr:`⋞`,cuesc:`⋟`,cularr:`↶`,cularrp:`⤽`,Cup:`⋓`,cup:`∪`,cupbrcap:`⩈`,CupCap:`≍`,cupcap:`⩆`,cupcup:`⩊`,cupdot:`⊍`,cupor:`⩅`,cups:`∪︀`,curarr:`↷`,curarrm:`⤼`,curlyeqprec:`⋞`,curlyeqsucc:`⋟`,curlyvee:`⋎`,curlywedge:`⋏`,curren:`¤`,curvearrowleft:`↶`,curvearrowright:`↷`,cuvee:`⋎`,cuwed:`⋏`,cwconint:`∲`,cwint:`∱`,cylcty:`⌭`,Dagger:`‡`,dagger:`†`,daleth:`ℸ`,Darr:`↡`,dArr:`⇓`,darr:`↓`,dash:`‐`,Dashv:`⫤`,dashv:`⊣`,dbkarow:`⤏`,dblac:`˝`,Dcaron:`Ď`,dcaron:`ď`,Dcy:`Д`,dcy:`д`,DD:`ⅅ`,dd:`ⅆ`,ddagger:`‡`,ddarr:`⇊`,DDotrahd:`⤑`,ddotseq:`⩷`,deg:`°`,Del:`∇`,Delta:`Δ`,delta:`δ`,demptyv:`⦱`,dfisht:`⥿`,Dfr:`𝔇`,dfr:`𝔡`,dHar:`⥥`,dharl:`⇃`,dharr:`⇂`,DiacriticalAcute:`´`,DiacriticalDot:`˙`,DiacriticalDoubleAcute:`˝`,DiacriticalGrave:"`",DiacriticalTilde:`˜`,diam:`⋄`,Diamond:`⋄`,diamond:`⋄`,diamondsuit:`♦`,diams:`♦`,die:`¨`,DifferentialD:`ⅆ`,digamma:`ϝ`,disin:`⋲`,div:`÷`,divide:`÷`,divideontimes:`⋇`,divonx:`⋇`,DJcy:`Ђ`,djcy:`ђ`,dlcorn:`⌞`,dlcrop:`⌍`,dollar:`$`,Dopf:`𝔻`,dopf:`𝕕`,Dot:`¨`,dot:`˙`,DotDot:`⃜`,doteq:`≐`,doteqdot:`≑`,DotEqual:`≐`,dotminus:`∸`,dotplus:`∔`,dotsquare:`⊡`,doublebarwedge:`⌆`,DoubleContourIntegral:`∯`,DoubleDot:`¨`,DoubleDownArrow:`⇓`,DoubleLeftArrow:`⇐`,DoubleLeftRightArrow:`⇔`,DoubleLeftTee:`⫤`,DoubleLongLeftArrow:`⟸`,DoubleLongLeftRightArrow:`⟺`,DoubleLongRightArrow:`⟹`,DoubleRightArrow:`⇒`,DoubleRightTee:`⊨`,DoubleUpArrow:`⇑`,DoubleUpDownArrow:`⇕`,DoubleVerticalBar:`∥`,DownArrow:`↓`,Downarrow:`⇓`,downarrow:`↓`,DownArrowBar:`⤓`,DownArrowUpArrow:`⇵`,DownBreve:`̑`,downdownarrows:`⇊`,downharpoonleft:`⇃`,downharpoonright:`⇂`,DownLeftRightVector:`⥐`,DownLeftTeeVector:`⥞`,DownLeftVector:`↽`,DownLeftVectorBar:`⥖`,DownRightTeeVector:`⥟`,DownRightVector:`⇁`,DownRightVectorBar:`⥗`,DownTee:`⊤`,DownTeeArrow:`↧`,drbkarow:`⤐`,drcorn:`⌟`,drcrop:`⌌`,Dscr:`𝒟`,dscr:`𝒹`,DScy:`Ѕ`,dscy:`ѕ`,dsol:`⧶`,Dstrok:`Đ`,dstrok:`đ`,dtdot:`⋱`,dtri:`▿`,dtrif:`▾`,duarr:`⇵`,duhar:`⥯`,dwangle:`⦦`,DZcy:`Џ`,dzcy:`џ`,dzigrarr:`⟿`,Eacute:`É`,eacute:`é`,easter:`⩮`,Ecaron:`Ě`,ecaron:`ě`,ecir:`≖`,Ecirc:`Ê`,ecirc:`ê`,ecolon:`≕`,Ecy:`Э`,ecy:`э`,eDDot:`⩷`,Edot:`Ė`,eDot:`≑`,edot:`ė`,ee:`ⅇ`,efDot:`≒`,Efr:`𝔈`,efr:`𝔢`,eg:`⪚`,Egrave:`È`,egrave:`è`,egs:`⪖`,egsdot:`⪘`,el:`⪙`,Element:`∈`,elinters:`⏧`,ell:`ℓ`,els:`⪕`,elsdot:`⪗`,Emacr:`Ē`,emacr:`ē`,empty:`∅`,emptyset:`∅`,EmptySmallSquare:`◻`,emptyv:`∅`,EmptyVerySmallSquare:`▫`,emsp:` `,emsp13:` `,emsp14:` `,ENG:`Ŋ`,eng:`ŋ`,ensp:` `,Eogon:`Ę`,eogon:`ę`,Eopf:`𝔼`,eopf:`𝕖`,epar:`⋕`,eparsl:`⧣`,eplus:`⩱`,epsi:`ε`,Epsilon:`Ε`,epsilon:`ε`,epsiv:`ϵ`,eqcirc:`≖`,eqcolon:`≕`,eqsim:`≂`,eqslantgtr:`⪖`,eqslantless:`⪕`,Equal:`⩵`,equals:`=`,EqualTilde:`≂`,equest:`≟`,Equilibrium:`⇌`,equiv:`≡`,equivDD:`⩸`,eqvparsl:`⧥`,erarr:`⥱`,erDot:`≓`,Escr:`ℰ`,escr:`ℯ`,esdot:`≐`,Esim:`⩳`,esim:`≂`,Eta:`Η`,eta:`η`,ETH:`Ð`,eth:`ð`,Euml:`Ë`,euml:`ë`,euro:`€`,excl:`!`,exist:`∃`,Exists:`∃`,expectation:`ℰ`,ExponentialE:`ⅇ`,exponentiale:`ⅇ`,fallingdotseq:`≒`,Fcy:`Ф`,fcy:`ф`,female:`♀`,ffilig:`ffi`,fflig:`ff`,ffllig:`ffl`,Ffr:`𝔉`,ffr:`𝔣`,filig:`fi`,FilledSmallSquare:`◼`,FilledVerySmallSquare:`▪`,fjlig:`fj`,flat:`♭`,fllig:`fl`,fltns:`▱`,fnof:`ƒ`,Fopf:`𝔽`,fopf:`𝕗`,ForAll:`∀`,forall:`∀`,fork:`⋔`,forkv:`⫙`,Fouriertrf:`ℱ`,fpartint:`⨍`,frac12:`½`,frac13:`⅓`,frac14:`¼`,frac15:`⅕`,frac16:`⅙`,frac18:`⅛`,frac23:`⅔`,frac25:`⅖`,frac34:`¾`,frac35:`⅗`,frac38:`⅜`,frac45:`⅘`,frac56:`⅚`,frac58:`⅝`,frac78:`⅞`,frasl:`⁄`,frown:`⌢`,Fscr:`ℱ`,fscr:`𝒻`,gacute:`ǵ`,Gamma:`Γ`,gamma:`γ`,Gammad:`Ϝ`,gammad:`ϝ`,gap:`⪆`,Gbreve:`Ğ`,gbreve:`ğ`,Gcedil:`Ģ`,Gcirc:`Ĝ`,gcirc:`ĝ`,Gcy:`Г`,gcy:`г`,Gdot:`Ġ`,gdot:`ġ`,gE:`≧`,ge:`≥`,gEl:`⪌`,gel:`⋛`,geq:`≥`,geqq:`≧`,geqslant:`⩾`,ges:`⩾`,gescc:`⪩`,gesdot:`⪀`,gesdoto:`⪂`,gesdotol:`⪄`,gesl:`⋛︀`,gesles:`⪔`,Gfr:`𝔊`,gfr:`𝔤`,Gg:`⋙`,gg:`≫`,ggg:`⋙`,gimel:`ℷ`,GJcy:`Ѓ`,gjcy:`ѓ`,gl:`≷`,gla:`⪥`,glE:`⪒`,glj:`⪤`,gnap:`⪊`,gnapprox:`⪊`,gnE:`≩`,gne:`⪈`,gneq:`⪈`,gneqq:`≩`,gnsim:`⋧`,Gopf:`𝔾`,gopf:`𝕘`,grave:"`",GreaterEqual:`≥`,GreaterEqualLess:`⋛`,GreaterFullEqual:`≧`,GreaterGreater:`⪢`,GreaterLess:`≷`,GreaterSlantEqual:`⩾`,GreaterTilde:`≳`,Gscr:`𝒢`,gscr:`ℊ`,gsim:`≳`,gsime:`⪎`,gsiml:`⪐`,Gt:`≫`,GT:`>`,gt:`>`,gtcc:`⪧`,gtcir:`⩺`,gtdot:`⋗`,gtlPar:`⦕`,gtquest:`⩼`,gtrapprox:`⪆`,gtrarr:`⥸`,gtrdot:`⋗`,gtreqless:`⋛`,gtreqqless:`⪌`,gtrless:`≷`,gtrsim:`≳`,gvertneqq:`≩︀`,gvnE:`≩︀`,Hacek:`ˇ`,hairsp:` `,half:`½`,hamilt:`ℋ`,HARDcy:`Ъ`,hardcy:`ъ`,hArr:`⇔`,harr:`↔`,harrcir:`⥈`,harrw:`↭`,Hat:`^`,hbar:`ℏ`,Hcirc:`Ĥ`,hcirc:`ĥ`,hearts:`♥`,heartsuit:`♥`,hellip:`…`,hercon:`⊹`,Hfr:`ℌ`,hfr:`𝔥`,HilbertSpace:`ℋ`,hksearow:`⤥`,hkswarow:`⤦`,hoarr:`⇿`,homtht:`∻`,hookleftarrow:`↩`,hookrightarrow:`↪`,Hopf:`ℍ`,hopf:`𝕙`,horbar:`―`,HorizontalLine:`─`,Hscr:`ℋ`,hscr:`𝒽`,hslash:`ℏ`,Hstrok:`Ħ`,hstrok:`ħ`,HumpDownHump:`≎`,HumpEqual:`≏`,hybull:`⁃`,hyphen:`‐`,Iacute:`Í`,iacute:`í`,ic:``,Icirc:`Î`,icirc:`î`,Icy:`И`,icy:`и`,Idot:`İ`,IEcy:`Е`,iecy:`е`,iexcl:`¡`,iff:`⇔`,Ifr:`ℑ`,ifr:`𝔦`,Igrave:`Ì`,igrave:`ì`,ii:`ⅈ`,iiiint:`⨌`,iiint:`∭`,iinfin:`⧜`,iiota:`℩`,IJlig:`IJ`,ijlig:`ij`,Im:`ℑ`,Imacr:`Ī`,imacr:`ī`,image:`ℑ`,ImaginaryI:`ⅈ`,imagline:`ℐ`,imagpart:`ℑ`,imath:`ı`,imof:`⊷`,imped:`Ƶ`,Implies:`⇒`,in:`∈`,incare:`℅`,infin:`∞`,infintie:`⧝`,inodot:`ı`,Int:`∬`,int:`∫`,intcal:`⊺`,integers:`ℤ`,Integral:`∫`,intercal:`⊺`,Intersection:`⋂`,intlarhk:`⨗`,intprod:`⨼`,InvisibleComma:``,InvisibleTimes:``,IOcy:`Ё`,iocy:`ё`,Iogon:`Į`,iogon:`į`,Iopf:`𝕀`,iopf:`𝕚`,Iota:`Ι`,iota:`ι`,iprod:`⨼`,iquest:`¿`,Iscr:`ℐ`,iscr:`𝒾`,isin:`∈`,isindot:`⋵`,isinE:`⋹`,isins:`⋴`,isinsv:`⋳`,isinv:`∈`,it:``,Itilde:`Ĩ`,itilde:`ĩ`,Iukcy:`І`,iukcy:`і`,Iuml:`Ï`,iuml:`ï`,Jcirc:`Ĵ`,jcirc:`ĵ`,Jcy:`Й`,jcy:`й`,Jfr:`𝔍`,jfr:`𝔧`,jmath:`ȷ`,Jopf:`𝕁`,jopf:`𝕛`,Jscr:`𝒥`,jscr:`𝒿`,Jsercy:`Ј`,jsercy:`ј`,Jukcy:`Є`,jukcy:`є`,Kappa:`Κ`,kappa:`κ`,kappav:`ϰ`,Kcedil:`Ķ`,kcedil:`ķ`,Kcy:`К`,kcy:`к`,Kfr:`𝔎`,kfr:`𝔨`,kgreen:`ĸ`,KHcy:`Х`,khcy:`х`,KJcy:`Ќ`,kjcy:`ќ`,Kopf:`𝕂`,kopf:`𝕜`,Kscr:`𝒦`,kscr:`𝓀`,lAarr:`⇚`,Lacute:`Ĺ`,lacute:`ĺ`,laemptyv:`⦴`,lagran:`ℒ`,Lambda:`Λ`,lambda:`λ`,Lang:`⟪`,lang:`⟨`,langd:`⦑`,langle:`⟨`,lap:`⪅`,Laplacetrf:`ℒ`,laquo:`«`,Larr:`↞`,lArr:`⇐`,larr:`←`,larrb:`⇤`,larrbfs:`⤟`,larrfs:`⤝`,larrhk:`↩`,larrlp:`↫`,larrpl:`⤹`,larrsim:`⥳`,larrtl:`↢`,lat:`⪫`,lAtail:`⤛`,latail:`⤙`,late:`⪭`,lates:`⪭︀`,lBarr:`⤎`,lbarr:`⤌`,lbbrk:`❲`,lbrace:`{`,lbrack:`[`,lbrke:`⦋`,lbrksld:`⦏`,lbrkslu:`⦍`,Lcaron:`Ľ`,lcaron:`ľ`,Lcedil:`Ļ`,lcedil:`ļ`,lceil:`⌈`,lcub:`{`,Lcy:`Л`,lcy:`л`,ldca:`⤶`,ldquo:`“`,ldquor:`„`,ldrdhar:`⥧`,ldrushar:`⥋`,ldsh:`↲`,lE:`≦`,le:`≤`,LeftAngleBracket:`⟨`,LeftArrow:`←`,Leftarrow:`⇐`,leftarrow:`←`,LeftArrowBar:`⇤`,LeftArrowRightArrow:`⇆`,leftarrowtail:`↢`,LeftCeiling:`⌈`,LeftDoubleBracket:`⟦`,LeftDownTeeVector:`⥡`,LeftDownVector:`⇃`,LeftDownVectorBar:`⥙`,LeftFloor:`⌊`,leftharpoondown:`↽`,leftharpoonup:`↼`,leftleftarrows:`⇇`,LeftRightArrow:`↔`,Leftrightarrow:`⇔`,leftrightarrow:`↔`,leftrightarrows:`⇆`,leftrightharpoons:`⇋`,leftrightsquigarrow:`↭`,LeftRightVector:`⥎`,LeftTee:`⊣`,LeftTeeArrow:`↤`,LeftTeeVector:`⥚`,leftthreetimes:`⋋`,LeftTriangle:`⊲`,LeftTriangleBar:`⧏`,LeftTriangleEqual:`⊴`,LeftUpDownVector:`⥑`,LeftUpTeeVector:`⥠`,LeftUpVector:`↿`,LeftUpVectorBar:`⥘`,LeftVector:`↼`,LeftVectorBar:`⥒`,lEg:`⪋`,leg:`⋚`,leq:`≤`,leqq:`≦`,leqslant:`⩽`,les:`⩽`,lescc:`⪨`,lesdot:`⩿`,lesdoto:`⪁`,lesdotor:`⪃`,lesg:`⋚︀`,lesges:`⪓`,lessapprox:`⪅`,lessdot:`⋖`,lesseqgtr:`⋚`,lesseqqgtr:`⪋`,LessEqualGreater:`⋚`,LessFullEqual:`≦`,LessGreater:`≶`,lessgtr:`≶`,LessLess:`⪡`,lesssim:`≲`,LessSlantEqual:`⩽`,LessTilde:`≲`,lfisht:`⥼`,lfloor:`⌊`,Lfr:`𝔏`,lfr:`𝔩`,lg:`≶`,lgE:`⪑`,lHar:`⥢`,lhard:`↽`,lharu:`↼`,lharul:`⥪`,lhblk:`▄`,LJcy:`Љ`,ljcy:`љ`,Ll:`⋘`,ll:`≪`,llarr:`⇇`,llcorner:`⌞`,Lleftarrow:`⇚`,llhard:`⥫`,lltri:`◺`,Lmidot:`Ŀ`,lmidot:`ŀ`,lmoust:`⎰`,lmoustache:`⎰`,lnap:`⪉`,lnapprox:`⪉`,lnE:`≨`,lne:`⪇`,lneq:`⪇`,lneqq:`≨`,lnsim:`⋦`,loang:`⟬`,loarr:`⇽`,lobrk:`⟦`,LongLeftArrow:`⟵`,Longleftarrow:`⟸`,longleftarrow:`⟵`,LongLeftRightArrow:`⟷`,Longleftrightarrow:`⟺`,longleftrightarrow:`⟷`,longmapsto:`⟼`,LongRightArrow:`⟶`,Longrightarrow:`⟹`,longrightarrow:`⟶`,looparrowleft:`↫`,looparrowright:`↬`,lopar:`⦅`,Lopf:`𝕃`,lopf:`𝕝`,loplus:`⨭`,lotimes:`⨴`,lowast:`∗`,lowbar:`_`,LowerLeftArrow:`↙`,LowerRightArrow:`↘`,loz:`◊`,lozenge:`◊`,lozf:`⧫`,lpar:`(`,lparlt:`⦓`,lrarr:`⇆`,lrcorner:`⌟`,lrhar:`⇋`,lrhard:`⥭`,lrm:``,lrtri:`⊿`,lsaquo:`‹`,Lscr:`ℒ`,lscr:`𝓁`,Lsh:`↰`,lsh:`↰`,lsim:`≲`,lsime:`⪍`,lsimg:`⪏`,lsqb:`[`,lsquo:`‘`,lsquor:`‚`,Lstrok:`Ł`,lstrok:`ł`,Lt:`≪`,LT:`<`,lt:`<`,ltcc:`⪦`,ltcir:`⩹`,ltdot:`⋖`,lthree:`⋋`,ltimes:`⋉`,ltlarr:`⥶`,ltquest:`⩻`,ltri:`◃`,ltrie:`⊴`,ltrif:`◂`,ltrPar:`⦖`,lurdshar:`⥊`,luruhar:`⥦`,lvertneqq:`≨︀`,lvnE:`≨︀`,macr:`¯`,male:`♂`,malt:`✠`,maltese:`✠`,Map:`⤅`,map:`↦`,mapsto:`↦`,mapstodown:`↧`,mapstoleft:`↤`,mapstoup:`↥`,marker:`▮`,mcomma:`⨩`,Mcy:`М`,mcy:`м`,mdash:`—`,mDDot:`∺`,measuredangle:`∡`,MediumSpace:` `,Mellintrf:`ℳ`,Mfr:`𝔐`,mfr:`𝔪`,mho:`℧`,micro:`µ`,mid:`∣`,midast:`*`,midcir:`⫰`,middot:`·`,minus:`−`,minusb:`⊟`,minusd:`∸`,minusdu:`⨪`,MinusPlus:`∓`,mlcp:`⫛`,mldr:`…`,mnplus:`∓`,models:`⊧`,Mopf:`𝕄`,mopf:`𝕞`,mp:`∓`,Mscr:`ℳ`,mscr:`𝓂`,mstpos:`∾`,Mu:`Μ`,mu:`μ`,multimap:`⊸`,mumap:`⊸`,nabla:`∇`,Nacute:`Ń`,nacute:`ń`,nang:`∠⃒`,nap:`≉`,napE:`⩰̸`,napid:`≋̸`,napos:`ʼn`,napprox:`≉`,natur:`♮`,natural:`♮`,naturals:`ℕ`,nbsp:`\xA0`,nbump:`≎̸`,nbumpe:`≏̸`,ncap:`⩃`,Ncaron:`Ň`,ncaron:`ň`,Ncedil:`Ņ`,ncedil:`ņ`,ncong:`≇`,ncongdot:`⩭̸`,ncup:`⩂`,Ncy:`Н`,ncy:`н`,ndash:`–`,ne:`≠`,nearhk:`⤤`,neArr:`⇗`,nearr:`↗`,nearrow:`↗`,nedot:`≐̸`,NegativeMediumSpace:``,NegativeThickSpace:``,NegativeThinSpace:``,NegativeVeryThinSpace:``,nequiv:`≢`,nesear:`⤨`,nesim:`≂̸`,NestedGreaterGreater:`≫`,NestedLessLess:`≪`,NewLine:`
|
|
1382
|
+
`,nexist:`∄`,nexists:`∄`,Nfr:`𝔑`,nfr:`𝔫`,ngE:`≧̸`,nge:`≱`,ngeq:`≱`,ngeqq:`≧̸`,ngeqslant:`⩾̸`,nges:`⩾̸`,nGg:`⋙̸`,ngsim:`≵`,nGt:`≫⃒`,ngt:`≯`,ngtr:`≯`,nGtv:`≫̸`,nhArr:`⇎`,nharr:`↮`,nhpar:`⫲`,ni:`∋`,nis:`⋼`,nisd:`⋺`,niv:`∋`,NJcy:`Њ`,njcy:`њ`,nlArr:`⇍`,nlarr:`↚`,nldr:`‥`,nlE:`≦̸`,nle:`≰`,nLeftarrow:`⇍`,nleftarrow:`↚`,nLeftrightarrow:`⇎`,nleftrightarrow:`↮`,nleq:`≰`,nleqq:`≦̸`,nleqslant:`⩽̸`,nles:`⩽̸`,nless:`≮`,nLl:`⋘̸`,nlsim:`≴`,nLt:`≪⃒`,nlt:`≮`,nltri:`⋪`,nltrie:`⋬`,nLtv:`≪̸`,nmid:`∤`,NoBreak:``,NonBreakingSpace:`\xA0`,Nopf:`ℕ`,nopf:`𝕟`,Not:`⫬`,not:`¬`,NotCongruent:`≢`,NotCupCap:`≭`,NotDoubleVerticalBar:`∦`,NotElement:`∉`,NotEqual:`≠`,NotEqualTilde:`≂̸`,NotExists:`∄`,NotGreater:`≯`,NotGreaterEqual:`≱`,NotGreaterFullEqual:`≧̸`,NotGreaterGreater:`≫̸`,NotGreaterLess:`≹`,NotGreaterSlantEqual:`⩾̸`,NotGreaterTilde:`≵`,NotHumpDownHump:`≎̸`,NotHumpEqual:`≏̸`,notin:`∉`,notindot:`⋵̸`,notinE:`⋹̸`,notinva:`∉`,notinvb:`⋷`,notinvc:`⋶`,NotLeftTriangle:`⋪`,NotLeftTriangleBar:`⧏̸`,NotLeftTriangleEqual:`⋬`,NotLess:`≮`,NotLessEqual:`≰`,NotLessGreater:`≸`,NotLessLess:`≪̸`,NotLessSlantEqual:`⩽̸`,NotLessTilde:`≴`,NotNestedGreaterGreater:`⪢̸`,NotNestedLessLess:`⪡̸`,notni:`∌`,notniva:`∌`,notnivb:`⋾`,notnivc:`⋽`,NotPrecedes:`⊀`,NotPrecedesEqual:`⪯̸`,NotPrecedesSlantEqual:`⋠`,NotReverseElement:`∌`,NotRightTriangle:`⋫`,NotRightTriangleBar:`⧐̸`,NotRightTriangleEqual:`⋭`,NotSquareSubset:`⊏̸`,NotSquareSubsetEqual:`⋢`,NotSquareSuperset:`⊐̸`,NotSquareSupersetEqual:`⋣`,NotSubset:`⊂⃒`,NotSubsetEqual:`⊈`,NotSucceeds:`⊁`,NotSucceedsEqual:`⪰̸`,NotSucceedsSlantEqual:`⋡`,NotSucceedsTilde:`≿̸`,NotSuperset:`⊃⃒`,NotSupersetEqual:`⊉`,NotTilde:`≁`,NotTildeEqual:`≄`,NotTildeFullEqual:`≇`,NotTildeTilde:`≉`,NotVerticalBar:`∤`,npar:`∦`,nparallel:`∦`,nparsl:`⫽⃥`,npart:`∂̸`,npolint:`⨔`,npr:`⊀`,nprcue:`⋠`,npre:`⪯̸`,nprec:`⊀`,npreceq:`⪯̸`,nrArr:`⇏`,nrarr:`↛`,nrarrc:`⤳̸`,nrarrw:`↝̸`,nRightarrow:`⇏`,nrightarrow:`↛`,nrtri:`⋫`,nrtrie:`⋭`,nsc:`⊁`,nsccue:`⋡`,nsce:`⪰̸`,Nscr:`𝒩`,nscr:`𝓃`,nshortmid:`∤`,nshortparallel:`∦`,nsim:`≁`,nsime:`≄`,nsimeq:`≄`,nsmid:`∤`,nspar:`∦`,nsqsube:`⋢`,nsqsupe:`⋣`,nsub:`⊄`,nsubE:`⫅̸`,nsube:`⊈`,nsubset:`⊂⃒`,nsubseteq:`⊈`,nsubseteqq:`⫅̸`,nsucc:`⊁`,nsucceq:`⪰̸`,nsup:`⊅`,nsupE:`⫆̸`,nsupe:`⊉`,nsupset:`⊃⃒`,nsupseteq:`⊉`,nsupseteqq:`⫆̸`,ntgl:`≹`,Ntilde:`Ñ`,ntilde:`ñ`,ntlg:`≸`,ntriangleleft:`⋪`,ntrianglelefteq:`⋬`,ntriangleright:`⋫`,ntrianglerighteq:`⋭`,Nu:`Ν`,nu:`ν`,num:`#`,numero:`№`,numsp:` `,nvap:`≍⃒`,nVDash:`⊯`,nVdash:`⊮`,nvDash:`⊭`,nvdash:`⊬`,nvge:`≥⃒`,nvgt:`>⃒`,nvHarr:`⤄`,nvinfin:`⧞`,nvlArr:`⤂`,nvle:`≤⃒`,nvlt:`<⃒`,nvltrie:`⊴⃒`,nvrArr:`⤃`,nvrtrie:`⊵⃒`,nvsim:`∼⃒`,nwarhk:`⤣`,nwArr:`⇖`,nwarr:`↖`,nwarrow:`↖`,nwnear:`⤧`,Oacute:`Ó`,oacute:`ó`,oast:`⊛`,ocir:`⊚`,Ocirc:`Ô`,ocirc:`ô`,Ocy:`О`,ocy:`о`,odash:`⊝`,Odblac:`Ő`,odblac:`ő`,odiv:`⨸`,odot:`⊙`,odsold:`⦼`,OElig:`Œ`,oelig:`œ`,ofcir:`⦿`,Ofr:`𝔒`,ofr:`𝔬`,ogon:`˛`,Ograve:`Ò`,ograve:`ò`,ogt:`⧁`,ohbar:`⦵`,ohm:`Ω`,oint:`∮`,olarr:`↺`,olcir:`⦾`,olcross:`⦻`,oline:`‾`,olt:`⧀`,Omacr:`Ō`,omacr:`ō`,Omega:`Ω`,omega:`ω`,Omicron:`Ο`,omicron:`ο`,omid:`⦶`,ominus:`⊖`,Oopf:`𝕆`,oopf:`𝕠`,opar:`⦷`,OpenCurlyDoubleQuote:`“`,OpenCurlyQuote:`‘`,operp:`⦹`,oplus:`⊕`,Or:`⩔`,or:`∨`,orarr:`↻`,ord:`⩝`,order:`ℴ`,orderof:`ℴ`,ordf:`ª`,ordm:`º`,origof:`⊶`,oror:`⩖`,orslope:`⩗`,orv:`⩛`,oS:`Ⓢ`,Oscr:`𝒪`,oscr:`ℴ`,Oslash:`Ø`,oslash:`ø`,osol:`⊘`,Otilde:`Õ`,otilde:`õ`,Otimes:`⨷`,otimes:`⊗`,otimesas:`⨶`,Ouml:`Ö`,ouml:`ö`,ovbar:`⌽`,OverBar:`‾`,OverBrace:`⏞`,OverBracket:`⎴`,OverParenthesis:`⏜`,par:`∥`,para:`¶`,parallel:`∥`,parsim:`⫳`,parsl:`⫽`,part:`∂`,PartialD:`∂`,Pcy:`П`,pcy:`п`,percnt:`%`,period:`.`,permil:`‰`,perp:`⊥`,pertenk:`‱`,Pfr:`𝔓`,pfr:`𝔭`,Phi:`Φ`,phi:`φ`,phiv:`ϕ`,phmmat:`ℳ`,phone:`☎`,Pi:`Π`,pi:`π`,pitchfork:`⋔`,piv:`ϖ`,planck:`ℏ`,planckh:`ℎ`,plankv:`ℏ`,plus:`+`,plusacir:`⨣`,plusb:`⊞`,pluscir:`⨢`,plusdo:`∔`,plusdu:`⨥`,pluse:`⩲`,PlusMinus:`±`,plusmn:`±`,plussim:`⨦`,plustwo:`⨧`,pm:`±`,Poincareplane:`ℌ`,pointint:`⨕`,Popf:`ℙ`,popf:`𝕡`,pound:`£`,Pr:`⪻`,pr:`≺`,prap:`⪷`,prcue:`≼`,prE:`⪳`,pre:`⪯`,prec:`≺`,precapprox:`⪷`,preccurlyeq:`≼`,Precedes:`≺`,PrecedesEqual:`⪯`,PrecedesSlantEqual:`≼`,PrecedesTilde:`≾`,preceq:`⪯`,precnapprox:`⪹`,precneqq:`⪵`,precnsim:`⋨`,precsim:`≾`,Prime:`″`,prime:`′`,primes:`ℙ`,prnap:`⪹`,prnE:`⪵`,prnsim:`⋨`,prod:`∏`,Product:`∏`,profalar:`⌮`,profline:`⌒`,profsurf:`⌓`,prop:`∝`,Proportion:`∷`,Proportional:`∝`,propto:`∝`,prsim:`≾`,prurel:`⊰`,Pscr:`𝒫`,pscr:`𝓅`,Psi:`Ψ`,psi:`ψ`,puncsp:` `,Qfr:`𝔔`,qfr:`𝔮`,qint:`⨌`,Qopf:`ℚ`,qopf:`𝕢`,qprime:`⁗`,Qscr:`𝒬`,qscr:`𝓆`,quaternions:`ℍ`,quatint:`⨖`,quest:`?`,questeq:`≟`,QUOT:`"`,quot:`"`,rAarr:`⇛`,race:`∽̱`,Racute:`Ŕ`,racute:`ŕ`,radic:`√`,raemptyv:`⦳`,Rang:`⟫`,rang:`⟩`,rangd:`⦒`,range:`⦥`,rangle:`⟩`,raquo:`»`,Rarr:`↠`,rArr:`⇒`,rarr:`→`,rarrap:`⥵`,rarrb:`⇥`,rarrbfs:`⤠`,rarrc:`⤳`,rarrfs:`⤞`,rarrhk:`↪`,rarrlp:`↬`,rarrpl:`⥅`,rarrsim:`⥴`,Rarrtl:`⤖`,rarrtl:`↣`,rarrw:`↝`,rAtail:`⤜`,ratail:`⤚`,ratio:`∶`,rationals:`ℚ`,RBarr:`⤐`,rBarr:`⤏`,rbarr:`⤍`,rbbrk:`❳`,rbrace:`}`,rbrack:`]`,rbrke:`⦌`,rbrksld:`⦎`,rbrkslu:`⦐`,Rcaron:`Ř`,rcaron:`ř`,Rcedil:`Ŗ`,rcedil:`ŗ`,rceil:`⌉`,rcub:`}`,Rcy:`Р`,rcy:`р`,rdca:`⤷`,rdldhar:`⥩`,rdquo:`”`,rdquor:`”`,rdsh:`↳`,Re:`ℜ`,real:`ℜ`,realine:`ℛ`,realpart:`ℜ`,reals:`ℝ`,rect:`▭`,REG:`®`,reg:`®`,ReverseElement:`∋`,ReverseEquilibrium:`⇋`,ReverseUpEquilibrium:`⥯`,rfisht:`⥽`,rfloor:`⌋`,Rfr:`ℜ`,rfr:`𝔯`,rHar:`⥤`,rhard:`⇁`,rharu:`⇀`,rharul:`⥬`,Rho:`Ρ`,rho:`ρ`,rhov:`ϱ`,RightAngleBracket:`⟩`,RightArrow:`→`,Rightarrow:`⇒`,rightarrow:`→`,RightArrowBar:`⇥`,RightArrowLeftArrow:`⇄`,rightarrowtail:`↣`,RightCeiling:`⌉`,RightDoubleBracket:`⟧`,RightDownTeeVector:`⥝`,RightDownVector:`⇂`,RightDownVectorBar:`⥕`,RightFloor:`⌋`,rightharpoondown:`⇁`,rightharpoonup:`⇀`,rightleftarrows:`⇄`,rightleftharpoons:`⇌`,rightrightarrows:`⇉`,rightsquigarrow:`↝`,RightTee:`⊢`,RightTeeArrow:`↦`,RightTeeVector:`⥛`,rightthreetimes:`⋌`,RightTriangle:`⊳`,RightTriangleBar:`⧐`,RightTriangleEqual:`⊵`,RightUpDownVector:`⥏`,RightUpTeeVector:`⥜`,RightUpVector:`↾`,RightUpVectorBar:`⥔`,RightVector:`⇀`,RightVectorBar:`⥓`,ring:`˚`,risingdotseq:`≓`,rlarr:`⇄`,rlhar:`⇌`,rlm:``,rmoust:`⎱`,rmoustache:`⎱`,rnmid:`⫮`,roang:`⟭`,roarr:`⇾`,robrk:`⟧`,ropar:`⦆`,Ropf:`ℝ`,ropf:`𝕣`,roplus:`⨮`,rotimes:`⨵`,RoundImplies:`⥰`,rpar:`)`,rpargt:`⦔`,rppolint:`⨒`,rrarr:`⇉`,Rrightarrow:`⇛`,rsaquo:`›`,Rscr:`ℛ`,rscr:`𝓇`,Rsh:`↱`,rsh:`↱`,rsqb:`]`,rsquo:`’`,rsquor:`’`,rthree:`⋌`,rtimes:`⋊`,rtri:`▹`,rtrie:`⊵`,rtrif:`▸`,rtriltri:`⧎`,RuleDelayed:`⧴`,ruluhar:`⥨`,rx:`℞`,Sacute:`Ś`,sacute:`ś`,sbquo:`‚`,Sc:`⪼`,sc:`≻`,scap:`⪸`,Scaron:`Š`,scaron:`š`,sccue:`≽`,scE:`⪴`,sce:`⪰`,Scedil:`Ş`,scedil:`ş`,Scirc:`Ŝ`,scirc:`ŝ`,scnap:`⪺`,scnE:`⪶`,scnsim:`⋩`,scpolint:`⨓`,scsim:`≿`,Scy:`С`,scy:`с`,sdot:`⋅`,sdotb:`⊡`,sdote:`⩦`,searhk:`⤥`,seArr:`⇘`,searr:`↘`,searrow:`↘`,sect:`§`,semi:`;`,seswar:`⤩`,setminus:`∖`,setmn:`∖`,sext:`✶`,Sfr:`𝔖`,sfr:`𝔰`,sfrown:`⌢`,sharp:`♯`,SHCHcy:`Щ`,shchcy:`щ`,SHcy:`Ш`,shcy:`ш`,ShortDownArrow:`↓`,ShortLeftArrow:`←`,shortmid:`∣`,shortparallel:`∥`,ShortRightArrow:`→`,ShortUpArrow:`↑`,shy:``,Sigma:`Σ`,sigma:`σ`,sigmaf:`ς`,sigmav:`ς`,sim:`∼`,simdot:`⩪`,sime:`≃`,simeq:`≃`,simg:`⪞`,simgE:`⪠`,siml:`⪝`,simlE:`⪟`,simne:`≆`,simplus:`⨤`,simrarr:`⥲`,slarr:`←`,SmallCircle:`∘`,smallsetminus:`∖`,smashp:`⨳`,smeparsl:`⧤`,smid:`∣`,smile:`⌣`,smt:`⪪`,smte:`⪬`,smtes:`⪬︀`,SOFTcy:`Ь`,softcy:`ь`,sol:`/`,solb:`⧄`,solbar:`⌿`,Sopf:`𝕊`,sopf:`𝕤`,spades:`♠`,spadesuit:`♠`,spar:`∥`,sqcap:`⊓`,sqcaps:`⊓︀`,sqcup:`⊔`,sqcups:`⊔︀`,Sqrt:`√`,sqsub:`⊏`,sqsube:`⊑`,sqsubset:`⊏`,sqsubseteq:`⊑`,sqsup:`⊐`,sqsupe:`⊒`,sqsupset:`⊐`,sqsupseteq:`⊒`,squ:`□`,Square:`□`,square:`□`,SquareIntersection:`⊓`,SquareSubset:`⊏`,SquareSubsetEqual:`⊑`,SquareSuperset:`⊐`,SquareSupersetEqual:`⊒`,SquareUnion:`⊔`,squarf:`▪`,squf:`▪`,srarr:`→`,Sscr:`𝒮`,sscr:`𝓈`,ssetmn:`∖`,ssmile:`⌣`,sstarf:`⋆`,Star:`⋆`,star:`☆`,starf:`★`,straightepsilon:`ϵ`,straightphi:`ϕ`,strns:`¯`,Sub:`⋐`,sub:`⊂`,subdot:`⪽`,subE:`⫅`,sube:`⊆`,subedot:`⫃`,submult:`⫁`,subnE:`⫋`,subne:`⊊`,subplus:`⪿`,subrarr:`⥹`,Subset:`⋐`,subset:`⊂`,subseteq:`⊆`,subseteqq:`⫅`,SubsetEqual:`⊆`,subsetneq:`⊊`,subsetneqq:`⫋`,subsim:`⫇`,subsub:`⫕`,subsup:`⫓`,succ:`≻`,succapprox:`⪸`,succcurlyeq:`≽`,Succeeds:`≻`,SucceedsEqual:`⪰`,SucceedsSlantEqual:`≽`,SucceedsTilde:`≿`,succeq:`⪰`,succnapprox:`⪺`,succneqq:`⪶`,succnsim:`⋩`,succsim:`≿`,SuchThat:`∋`,Sum:`∑`,sum:`∑`,sung:`♪`,Sup:`⋑`,sup:`⊃`,sup1:`¹`,sup2:`²`,sup3:`³`,supdot:`⪾`,supdsub:`⫘`,supE:`⫆`,supe:`⊇`,supedot:`⫄`,Superset:`⊃`,SupersetEqual:`⊇`,suphsol:`⟉`,suphsub:`⫗`,suplarr:`⥻`,supmult:`⫂`,supnE:`⫌`,supne:`⊋`,supplus:`⫀`,Supset:`⋑`,supset:`⊃`,supseteq:`⊇`,supseteqq:`⫆`,supsetneq:`⊋`,supsetneqq:`⫌`,supsim:`⫈`,supsub:`⫔`,supsup:`⫖`,swarhk:`⤦`,swArr:`⇙`,swarr:`↙`,swarrow:`↙`,swnwar:`⤪`,szlig:`ß`,Tab:` `,target:`⌖`,Tau:`Τ`,tau:`τ`,tbrk:`⎴`,Tcaron:`Ť`,tcaron:`ť`,Tcedil:`Ţ`,tcedil:`ţ`,Tcy:`Т`,tcy:`т`,tdot:`⃛`,telrec:`⌕`,Tfr:`𝔗`,tfr:`𝔱`,there4:`∴`,Therefore:`∴`,therefore:`∴`,Theta:`Θ`,theta:`θ`,thetasym:`ϑ`,thetav:`ϑ`,thickapprox:`≈`,thicksim:`∼`,ThickSpace:` `,thinsp:` `,ThinSpace:` `,thkap:`≈`,thksim:`∼`,THORN:`Þ`,thorn:`þ`,Tilde:`∼`,tilde:`˜`,TildeEqual:`≃`,TildeFullEqual:`≅`,TildeTilde:`≈`,times:`×`,timesb:`⊠`,timesbar:`⨱`,timesd:`⨰`,tint:`∭`,toea:`⤨`,top:`⊤`,topbot:`⌶`,topcir:`⫱`,Topf:`𝕋`,topf:`𝕥`,topfork:`⫚`,tosa:`⤩`,tprime:`‴`,TRADE:`™`,trade:`™`,triangle:`▵`,triangledown:`▿`,triangleleft:`◃`,trianglelefteq:`⊴`,triangleq:`≜`,triangleright:`▹`,trianglerighteq:`⊵`,tridot:`◬`,trie:`≜`,triminus:`⨺`,TripleDot:`⃛`,triplus:`⨹`,trisb:`⧍`,tritime:`⨻`,trpezium:`⏢`,Tscr:`𝒯`,tscr:`𝓉`,TScy:`Ц`,tscy:`ц`,TSHcy:`Ћ`,tshcy:`ћ`,Tstrok:`Ŧ`,tstrok:`ŧ`,twixt:`≬`,twoheadleftarrow:`↞`,twoheadrightarrow:`↠`,Uacute:`Ú`,uacute:`ú`,Uarr:`↟`,uArr:`⇑`,uarr:`↑`,Uarrocir:`⥉`,Ubrcy:`Ў`,ubrcy:`ў`,Ubreve:`Ŭ`,ubreve:`ŭ`,Ucirc:`Û`,ucirc:`û`,Ucy:`У`,ucy:`у`,udarr:`⇅`,Udblac:`Ű`,udblac:`ű`,udhar:`⥮`,ufisht:`⥾`,Ufr:`𝔘`,ufr:`𝔲`,Ugrave:`Ù`,ugrave:`ù`,uHar:`⥣`,uharl:`↿`,uharr:`↾`,uhblk:`▀`,ulcorn:`⌜`,ulcorner:`⌜`,ulcrop:`⌏`,ultri:`◸`,Umacr:`Ū`,umacr:`ū`,uml:`¨`,UnderBar:`_`,UnderBrace:`⏟`,UnderBracket:`⎵`,UnderParenthesis:`⏝`,Union:`⋃`,UnionPlus:`⊎`,Uogon:`Ų`,uogon:`ų`,Uopf:`𝕌`,uopf:`𝕦`,UpArrow:`↑`,Uparrow:`⇑`,uparrow:`↑`,UpArrowBar:`⤒`,UpArrowDownArrow:`⇅`,UpDownArrow:`↕`,Updownarrow:`⇕`,updownarrow:`↕`,UpEquilibrium:`⥮`,upharpoonleft:`↿`,upharpoonright:`↾`,uplus:`⊎`,UpperLeftArrow:`↖`,UpperRightArrow:`↗`,Upsi:`ϒ`,upsi:`υ`,upsih:`ϒ`,Upsilon:`Υ`,upsilon:`υ`,UpTee:`⊥`,UpTeeArrow:`↥`,upuparrows:`⇈`,urcorn:`⌝`,urcorner:`⌝`,urcrop:`⌎`,Uring:`Ů`,uring:`ů`,urtri:`◹`,Uscr:`𝒰`,uscr:`𝓊`,utdot:`⋰`,Utilde:`Ũ`,utilde:`ũ`,utri:`▵`,utrif:`▴`,uuarr:`⇈`,Uuml:`Ü`,uuml:`ü`,uwangle:`⦧`,vangrt:`⦜`,varepsilon:`ϵ`,varkappa:`ϰ`,varnothing:`∅`,varphi:`ϕ`,varpi:`ϖ`,varpropto:`∝`,vArr:`⇕`,varr:`↕`,varrho:`ϱ`,varsigma:`ς`,varsubsetneq:`⊊︀`,varsubsetneqq:`⫋︀`,varsupsetneq:`⊋︀`,varsupsetneqq:`⫌︀`,vartheta:`ϑ`,vartriangleleft:`⊲`,vartriangleright:`⊳`,Vbar:`⫫`,vBar:`⫨`,vBarv:`⫩`,Vcy:`В`,vcy:`в`,VDash:`⊫`,Vdash:`⊩`,vDash:`⊨`,vdash:`⊢`,Vdashl:`⫦`,Vee:`⋁`,vee:`∨`,veebar:`⊻`,veeeq:`≚`,vellip:`⋮`,Verbar:`‖`,verbar:`|`,Vert:`‖`,vert:`|`,VerticalBar:`∣`,VerticalLine:`|`,VerticalSeparator:`❘`,VerticalTilde:`≀`,VeryThinSpace:` `,Vfr:`𝔙`,vfr:`𝔳`,vltri:`⊲`,vnsub:`⊂⃒`,vnsup:`⊃⃒`,Vopf:`𝕍`,vopf:`𝕧`,vprop:`∝`,vrtri:`⊳`,Vscr:`𝒱`,vscr:`𝓋`,vsubnE:`⫋︀`,vsubne:`⊊︀`,vsupnE:`⫌︀`,vsupne:`⊋︀`,Vvdash:`⊪`,vzigzag:`⦚`,Wcirc:`Ŵ`,wcirc:`ŵ`,wedbar:`⩟`,Wedge:`⋀`,wedge:`∧`,wedgeq:`≙`,weierp:`℘`,Wfr:`𝔚`,wfr:`𝔴`,Wopf:`𝕎`,wopf:`𝕨`,wp:`℘`,wr:`≀`,wreath:`≀`,Wscr:`𝒲`,wscr:`𝓌`,xcap:`⋂`,xcirc:`◯`,xcup:`⋃`,xdtri:`▽`,Xfr:`𝔛`,xfr:`𝔵`,xhArr:`⟺`,xharr:`⟷`,Xi:`Ξ`,xi:`ξ`,xlArr:`⟸`,xlarr:`⟵`,xmap:`⟼`,xnis:`⋻`,xodot:`⨀`,Xopf:`𝕏`,xopf:`𝕩`,xoplus:`⨁`,xotime:`⨂`,xrArr:`⟹`,xrarr:`⟶`,Xscr:`𝒳`,xscr:`𝓍`,xsqcup:`⨆`,xuplus:`⨄`,xutri:`△`,xvee:`⋁`,xwedge:`⋀`,Yacute:`Ý`,yacute:`ý`,YAcy:`Я`,yacy:`я`,Ycirc:`Ŷ`,ycirc:`ŷ`,Ycy:`Ы`,ycy:`ы`,yen:`¥`,Yfr:`𝔜`,yfr:`𝔶`,YIcy:`Ї`,yicy:`ї`,Yopf:`𝕐`,yopf:`𝕪`,Yscr:`𝒴`,yscr:`𝓎`,YUcy:`Ю`,yucy:`ю`,Yuml:`Ÿ`,yuml:`ÿ`,Zacute:`Ź`,zacute:`ź`,Zcaron:`Ž`,zcaron:`ž`,Zcy:`З`,zcy:`з`,Zdot:`Ż`,zdot:`ż`,zeetrf:`ℨ`,ZeroWidthSpace:``,Zeta:`Ζ`,zeta:`ζ`,Zfr:`ℨ`,zfr:`𝔷`,ZHcy:`Ж`,zhcy:`ж`,zigrarr:`⇝`,Zopf:`ℤ`,zopf:`𝕫`,Zscr:`𝒵`,zscr:`𝓏`,zwj:``,zwnj:``}),e.entityMap=e.HTML_ENTITIES})),Ic=e((e=>{var t=Nc().NAMESPACE,n=/[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,r=RegExp(`[\\-\\.0-9`+n.source.slice(1,-1)+`\\u00B7\\u0300-\\u036F\\u203F-\\u2040]`),i=RegExp(`^`+n.source+r.source+`*(?::`+n.source+r.source+`*)?$`),a=0,o=1,s=2,c=3,l=4,u=5,d=6,f=7;function p(e,t){this.message=e,this.locator=t,Error.captureStackTrace&&Error.captureStackTrace(this,p)}p.prototype=Error(),p.prototype.name=p.name;function m(){}m.prototype={parse:function(e,t,n){var r=this.domBuilder;r.startDocument(),x(t,t={}),h(e,t,n,r,this.errorHandler),r.endDocument()}};function h(e,n,r,i,a){function o(e){if(e>65535){e-=65536;var t=55296+(e>>10),n=56320+(e&1023);return String.fromCharCode(t,n)}else return String.fromCharCode(e)}function s(e){var t=e.slice(1,-1);return Object.hasOwnProperty.call(r,t)?r[t]:t.charAt(0)===`#`?o(parseInt(t.substr(1).replace(`x`,`0x`))):(a.error(`entity not found:`+e),e)}function c(t){if(t>T){var n=e.substring(T,t).replace(/&#?\w+;/g,s);m&&l(T),i.characters(n,0,t-T),T=t}}function l(t,n){for(;t>=d&&(n=f.exec(e));)u=n.index,d=u+n[0].length,m.lineNumber++;m.columnNumber=t-u+1}for(var u=0,d=0,f=/.*(?:\r\n?|\n)|.*$/g,m=i.locator,h=[{currentNSMap:n}],x={},T=0;;){try{var E=e.indexOf(`<`,T);if(E<0){if(!e.substr(T).match(/^\s*$/)){var ee=i.doc,D=ee.createTextNode(e.substr(T));ee.appendChild(D),i.currentElement=D}return}switch(E>T&&c(E),e.charAt(E+1)){case`/`:var O=e.indexOf(`>`,E+3),k=e.substring(E+2,O).replace(/[ \t\n\r]+$/g,``),A=h.pop();O<0?(k=e.substring(E+2).replace(/[\s<].*/,``),a.error(`end tag name: `+k+` is not complete:`+A.tagName),O=E+1+k.length):k.match(/\s</)&&(k=k.replace(/[\s<].*/,``),a.error(`end tag name: `+k+` maybe not complete`),O=E+1+k.length);var j=A.localNSMap,M=A.tagName==k;if(M||A.tagName&&A.tagName.toLowerCase()==k.toLowerCase()){if(i.endElement(A.uri,A.localName,k),j)for(var N in j)Object.prototype.hasOwnProperty.call(j,N)&&i.endPrefixMapping(N);M||a.fatalError(`end tag name: `+k+` is not match the current start tagName:`+A.tagName)}else h.push(A);O++;break;case`?`:m&&l(E),O=C(e,E,i);break;case`!`:m&&l(E),O=S(e,E,i,a);break;default:m&&l(E);var P=new w,F=h[h.length-1].currentNSMap,O=_(e,E,P,F,s,a),I=P.length;if(!P.closed&&b(e,O,P.tagName,x)&&(P.closed=!0,r.nbsp||a.warning(`unclosed xml attribute`)),m&&I){for(var L=g(m,{}),R=0;R<I;R++){var z=P[R];l(z.offset),z.locator=g(m,{})}i.locator=L,v(P,i,F)&&h.push(P),i.locator=m}else v(P,i,F)&&h.push(P);t.isHTML(P.uri)&&!P.closed?O=y(e,O,P.tagName,s,i):O++}}catch(e){if(e instanceof p)throw e;a.error(`element parse error: `+e),O=-1}O>T?T=O:c(Math.max(E,T)+1)}}function g(e,t){return t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber,t}function _(e,n,r,i,p,m){function h(e,t,n){r.attributeNames.hasOwnProperty(e)&&m.fatalError(`Attribute `+e+` redefined`),r.addValue(e,t.replace(/[\t\n\r]/g,` `).replace(/&#?\w+;/g,p),n)}for(var g,_,v=++n,y=a;;){var b=e.charAt(v);switch(b){case`=`:if(y===o)g=e.slice(n,v),y=c;else if(y===s)y=c;else throw Error(`attribute equal must after attrName`);break;case`'`:case`"`:if(y===c||y===o)if(y===o&&(m.warning(`attribute value must after "="`),g=e.slice(n,v)),n=v+1,v=e.indexOf(b,n),v>0)_=e.slice(n,v),h(g,_,n-1),y=u;else throw Error(`attribute value no end '`+b+`' match`);else if(y==l)_=e.slice(n,v),h(g,_,n),m.warning(`attribute "`+g+`" missed start quot(`+b+`)!!`),n=v+1,y=u;else throw Error(`attribute value must after "="`);break;case`/`:switch(y){case a:r.setTagName(e.slice(n,v));case u:case d:case f:y=f,r.closed=!0;case l:case o:break;case s:r.closed=!0;break;default:throw Error(`attribute invalid close char('/')`)}break;case``:return m.error(`unexpected end of input`),y==a&&r.setTagName(e.slice(n,v)),v;case`>`:switch(y){case a:r.setTagName(e.slice(n,v));case u:case d:case f:break;case l:case o:_=e.slice(n,v),_.slice(-1)===`/`&&(r.closed=!0,_=_.slice(0,-1));case s:y===s&&(_=g),y==l?(m.warning(`attribute "`+_+`" missed quot(")!`),h(g,_,n)):((!t.isHTML(i[``])||!_.match(/^(?:disabled|checked|selected)$/i))&&m.warning(`attribute "`+_+`" missed value!! "`+_+`" instead!!`),h(_,_,n));break;case c:throw Error(`attribute value missed!!`)}return v;case``:b=` `;default:if(b<=` `)switch(y){case a:r.setTagName(e.slice(n,v)),y=d;break;case o:g=e.slice(n,v),y=s;break;case l:var _=e.slice(n,v);m.warning(`attribute "`+_+`" missed quot(")!!`),h(g,_,n);case u:y=d;break}else switch(y){case s:r.tagName,(!t.isHTML(i[``])||!g.match(/^(?:disabled|checked|selected)$/i))&&m.warning(`attribute "`+g+`" missed value!! "`+g+`" instead2!!`),h(g,g,n),n=v,y=o;break;case u:m.warning(`attribute space is required"`+g+`"!!`);case d:y=o,n=v;break;case c:y=l,n=v;break;case f:throw Error(`elements closed character '/' and '>' must be connected to`)}}v++}}function v(e,n,r){for(var i=e.tagName,a=null,o=e.length;o--;){var s=e[o],c=s.qName,l=s.value,u=c.indexOf(`:`);if(u>0)var d=s.prefix=c.slice(0,u),f=c.slice(u+1),p=d===`xmlns`&&f;else f=c,d=null,p=c===`xmlns`&&``;s.localName=f,p!==!1&&(a??(a={},x(r,r={})),r[p]=a[p]=l,s.uri=t.XMLNS,n.startPrefixMapping(p,l))}for(var o=e.length;o--;){s=e[o];var d=s.prefix;d&&(d===`xml`&&(s.uri=t.XML),d!==`xmlns`&&(s.uri=r[d||``]))}var u=i.indexOf(`:`);u>0?(d=e.prefix=i.slice(0,u),f=e.localName=i.slice(u+1)):(d=null,f=e.localName=i);var m=e.uri=r[d||``];if(n.startElement(m,f,i,e),e.closed){if(n.endElement(m,f,i),a)for(d in a)Object.prototype.hasOwnProperty.call(a,d)&&n.endPrefixMapping(d)}else return e.currentNSMap=r,e.localNSMap=a,!0}function y(e,t,n,r,i){if(/^(?:script|textarea)$/i.test(n)){var a=e.indexOf(`</`+n+`>`,t),o=e.substring(t+1,a);if(/[&<]/.test(o))return/^script$/i.test(n)?(i.characters(o,0,o.length),a):(o=o.replace(/&#?\w+;/g,r),i.characters(o,0,o.length),a)}return t+1}function b(e,t,n,r){var i=r[n];return i??(i=e.lastIndexOf(`</`+n+`>`),i<t&&(i=e.lastIndexOf(`</`+n)),r[n]=i),i<t}function x(e,t){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])}function S(e,t,n,r){switch(e.charAt(t+2)){case`-`:if(e.charAt(t+3)===`-`){var i=e.indexOf(`-->`,t+4);return i>t?(n.comment(e,t+4,i-t-4),i+3):(r.error(`Unclosed comment`),-1)}else return-1;default:if(e.substr(t+3,6)==`CDATA[`){var i=e.indexOf(`]]>`,t+9);return n.startCDATA(),n.characters(e,t+9,i-t-9),n.endCDATA(),i+3}var a=T(e,t),o=a.length;if(o>1&&/!doctype/i.test(a[0][0])){var s=a[1][0],c=!1,l=!1;o>3&&(/^public$/i.test(a[2][0])?(c=a[3][0],l=o>4&&a[4][0]):/^system$/i.test(a[2][0])&&(l=a[3][0]));var u=a[o-1];return n.startDTD(s,c,l),n.endDTD(),u.index+u[0].length}}return-1}function C(e,t,n){var r=e.indexOf(`?>`,t);if(r){var i=e.substring(t,r).match(/^<\?(\S*)\s*([\s\S]*?)$/);return i?(i[0].length,n.processingInstruction(i[1],i[2]),r+2):-1}return-1}function w(){this.attributeNames={}}w.prototype={setTagName:function(e){if(!i.test(e))throw Error(`invalid tagName:`+e);this.tagName=e},addValue:function(e,t,n){if(!i.test(e))throw Error(`invalid attribute:`+e);this.attributeNames[e]=this.length,this[this.length++]={qName:e,value:t,offset:n}},length:0,getLocalName:function(e){return this[e].localName},getLocator:function(e){return this[e].locator},getQName:function(e){return this[e].qName},getURI:function(e){return this[e].uri},getValue:function(e){return this[e].value}};function T(e,t){var n,r=[],i=/'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;for(i.lastIndex=t,i.exec(e);n=i.exec(e);)if(r.push(n),n[1])return r}e.XMLReader=m,e.ParseError=p})),Lc=e((e=>{var t=Nc(),n=Pc(),r=Fc(),i=Ic(),a=n.DOMImplementation,o=t.NAMESPACE,s=i.ParseError,c=i.XMLReader;function l(e){return e.replace(/\r[\n\u0085]/g,`
|
|
1383
|
+
`).replace(/[\r\u0085\u2028]/g,`
|
|
1384
|
+
`)}function u(e){this.options=e||{locator:{}}}u.prototype.parseFromString=function(e,t){var n=this.options,i=new c,a=n.domBuilder||new f,s=n.errorHandler,u=n.locator,p=n.xmlns||{},m=/\/x?html?$/.test(t),h=m?r.HTML_ENTITIES:r.XML_ENTITIES;u&&a.setDocumentLocator(u),i.errorHandler=d(s,a,u),i.domBuilder=n.domBuilder||a,m&&(p[``]=o.HTML),p.xml=p.xml||o.XML;var g=n.normalizeLineEndings||l;return e&&typeof e==`string`?i.parse(g(e),p,h):i.errorHandler.error(`invalid doc source`),a.doc};function d(e,t,n){if(!e){if(t instanceof f)return t;e=t}var r={},i=e instanceof Function;n||={};function a(t){var a=e[t];!a&&i&&(a=e.length==2?function(n){e(t,n)}:e),r[t]=a&&function(e){a(`[xmldom `+t+`] `+e+m(n))}||function(){}}return a(`warning`),a(`error`),a(`fatalError`),r}function f(){this.cdata=!1}function p(e,t){t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber}f.prototype={startDocument:function(){this.doc=new a().createDocument(null,null,null),this.locator&&(this.doc.documentURI=this.locator.systemId)},startElement:function(e,t,n,r){var i=this.doc,a=i.createElementNS(e,n||t),o=r.length;g(this,a),this.currentElement=a,this.locator&&p(this.locator,a);for(var s=0;s<o;s++){var e=r.getURI(s),c=r.getValue(s),n=r.getQName(s),l=i.createAttributeNS(e,n);this.locator&&p(r.getLocator(s),l),l.value=l.nodeValue=c,a.setAttributeNode(l)}},endElement:function(e,t,n){var r=this.currentElement;r.tagName,this.currentElement=r.parentNode},startPrefixMapping:function(e,t){},endPrefixMapping:function(e){},processingInstruction:function(e,t){var n=this.doc.createProcessingInstruction(e,t);this.locator&&p(this.locator,n),g(this,n)},ignorableWhitespace:function(e,t,n){},characters:function(e,t,n){if(e=h.apply(this,arguments),e){if(this.cdata)var r=this.doc.createCDATASection(e);else var r=this.doc.createTextNode(e);this.currentElement?this.currentElement.appendChild(r):/^\s*$/.test(e)&&this.doc.appendChild(r),this.locator&&p(this.locator,r)}},skippedEntity:function(e){},endDocument:function(){this.doc.normalize()},setDocumentLocator:function(e){(this.locator=e)&&(e.lineNumber=0)},comment:function(e,t,n){e=h.apply(this,arguments);var r=this.doc.createComment(e);this.locator&&p(this.locator,r),g(this,r)},startCDATA:function(){this.cdata=!0},endCDATA:function(){this.cdata=!1},startDTD:function(e,t,n){var r=this.doc.implementation;if(r&&r.createDocumentType){var i=r.createDocumentType(e,t,n);this.locator&&p(this.locator,i),g(this,i),this.doc.doctype=i}},warning:function(e){console.warn(`[xmldom warning] `+e,m(this.locator))},error:function(e){console.error(`[xmldom error] `+e,m(this.locator))},fatalError:function(e){throw new s(e,this.locator)}};function m(e){if(e)return`
|
|
1385
|
+
@`+(e.systemId||``)+`#[line:`+e.lineNumber+`,col:`+e.columnNumber+`]`}function h(e,t,n){return typeof e==`string`?e.substr(t,n):e.length>=t+n||t?new java.lang.String(e,t,n)+``:e}`endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl`.replace(/\w+/g,function(e){f.prototype[e]=function(){return null}});function g(e,t){e.currentElement?e.currentElement.appendChild(t):e.doc.appendChild(t)}e.__DOMHandler=f,e.normalizeLineEndings=l,e.DOMParser=u})),Rc=e((e=>{var t=Pc();e.DOMImplementation=t.DOMImplementation,e.XMLSerializer=t.XMLSerializer,e.DOMParser=Lc().DOMParser}))(),zc={createCanvas:(e,t)=>new OffscreenCanvas(e??0,t??0),createImage:()=>new Image,getCanvasRenderingContext2D:()=>OffscreenCanvasRenderingContext2D,getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>globalThis.location.href,getFontFaceSet:()=>globalThis.fonts,fetch:(e,t)=>fetch(e,t),parseXML:e=>new Rc.DOMParser().parseFromString(e,`text/xml`)},Bc=`
|
|
1386
|
+
in vec2 vTextureCoord;
|
|
1387
|
+
|
|
1388
|
+
out vec4 finalColor;
|
|
1389
|
+
|
|
1390
|
+
uniform float uAlpha;
|
|
1391
|
+
uniform sampler2D uTexture;
|
|
1392
|
+
|
|
1393
|
+
void main()
|
|
1394
|
+
{
|
|
1395
|
+
finalColor = texture(uTexture, vTextureCoord) * uAlpha;
|
|
1396
|
+
}
|
|
1397
|
+
`,Vc=`struct GlobalFilterUniforms {
|
|
1398
|
+
uInputSize:vec4<f32>,
|
|
1399
|
+
uInputPixel:vec4<f32>,
|
|
1400
|
+
uInputClamp:vec4<f32>,
|
|
1401
|
+
uOutputFrame:vec4<f32>,
|
|
1402
|
+
uGlobalFrame:vec4<f32>,
|
|
1403
|
+
uOutputTexture:vec4<f32>,
|
|
1404
|
+
};
|
|
1405
|
+
|
|
1406
|
+
struct AlphaUniforms {
|
|
1407
|
+
uAlpha:f32,
|
|
1408
|
+
};
|
|
1409
|
+
|
|
1410
|
+
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
|
|
1411
|
+
@group(0) @binding(1) var uTexture: texture_2d<f32>;
|
|
1412
|
+
@group(0) @binding(2) var uSampler : sampler;
|
|
1413
|
+
|
|
1414
|
+
@group(1) @binding(0) var<uniform> alphaUniforms : AlphaUniforms;
|
|
1415
|
+
|
|
1416
|
+
struct VSOutput {
|
|
1417
|
+
@builtin(position) position: vec4<f32>,
|
|
1418
|
+
@location(0) uv : vec2<f32>
|
|
1419
|
+
};
|
|
1420
|
+
|
|
1421
|
+
fn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>
|
|
1422
|
+
{
|
|
1423
|
+
var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;
|
|
1424
|
+
|
|
1425
|
+
position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;
|
|
1426
|
+
position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;
|
|
1427
|
+
|
|
1428
|
+
return vec4(position, 0.0, 1.0);
|
|
1429
|
+
}
|
|
1430
|
+
|
|
1431
|
+
fn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
|
|
1432
|
+
{
|
|
1433
|
+
return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);
|
|
1434
|
+
}
|
|
1435
|
+
|
|
1436
|
+
fn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
|
|
1437
|
+
{
|
|
1438
|
+
return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw);
|
|
1439
|
+
}
|
|
1440
|
+
|
|
1441
|
+
fn getSize() -> vec2<f32>
|
|
1442
|
+
{
|
|
1443
|
+
return gfu.uGlobalFrame.zw;
|
|
1444
|
+
}
|
|
1445
|
+
|
|
1446
|
+
@vertex
|
|
1447
|
+
fn mainVertex(
|
|
1448
|
+
@location(0) aPosition : vec2<f32>,
|
|
1449
|
+
) -> VSOutput {
|
|
1450
|
+
return VSOutput(
|
|
1451
|
+
filterVertexPosition(aPosition),
|
|
1452
|
+
filterTextureCoord(aPosition)
|
|
1453
|
+
);
|
|
1454
|
+
}
|
|
1455
|
+
|
|
1456
|
+
@fragment
|
|
1457
|
+
fn mainFragment(
|
|
1458
|
+
@location(0) uv: vec2<f32>,
|
|
1459
|
+
@builtin(position) position: vec4<f32>
|
|
1460
|
+
) -> @location(0) vec4<f32> {
|
|
1461
|
+
|
|
1462
|
+
var sample = textureSample(uTexture, uSampler, uv);
|
|
1463
|
+
|
|
1464
|
+
return sample * alphaUniforms.uAlpha;
|
|
1465
|
+
}`,Hc=class e extends at{constructor(t){t={...e.defaultOptions,...t};let n=ue.from({vertex:{source:Vc,entryPoint:`mainVertex`},fragment:{source:Vc,entryPoint:`mainFragment`}}),r=be.from({vertex:Nt,fragment:Bc,name:`alpha-filter`}),{alpha:i,...a}=t,o=new pe({uAlpha:{value:i,type:`f32`}});super({...a,gpuProgram:n,glProgram:r,resources:{alphaUniforms:o}})}get alpha(){return this.resources.alphaUniforms.uniforms.uAlpha}set alpha(e){this.resources.alphaUniforms.uniforms.uAlpha=e}};Hc.defaultOptions={alpha:1};var Uc=Hc,Wc={5:[.153388,.221461,.250301],7:[.071303,.131514,.189879,.214607],9:[.028532,.067234,.124009,.179044,.20236],11:[.0093,.028002,.065984,.121703,.175713,.198596],13:[.002406,.009255,.027867,.065666,.121117,.174868,.197641],15:[489e-6,.002403,.009246,.02784,.065602,.120999,.174697,.197448]},Gc=[`in vec2 vBlurTexCoords[%size%];`,`uniform sampler2D uTexture;`,`out vec4 finalColor;`,`void main(void)`,`{`,` %blur%`,`}`].join(`
|
|
1466
|
+
`);function Kc(e){let t=Wc[e],n=t.length,r=``;for(let i=0;i<e;i++){let a=i===0?`finalColor = `:` + `,o=i<n?i:e-i-1,s=`texture(uTexture, vBlurTexCoords[%index%]) * %value%`.replace(`%index%`,i.toString()).replace(`%value%`,t[o].toString());r+=`${a}${s}
|
|
1467
|
+
`}return Gc.replace(`%blur%`,`${r};`).replace(`%size%`,e.toString())}var qc=`
|
|
1468
|
+
in vec2 aPosition;
|
|
1469
|
+
|
|
1470
|
+
uniform float uStrength;
|
|
1471
|
+
|
|
1472
|
+
out vec2 vBlurTexCoords[%size%];
|
|
1473
|
+
|
|
1474
|
+
uniform vec4 uInputSize;
|
|
1475
|
+
uniform vec4 uOutputFrame;
|
|
1476
|
+
uniform vec4 uOutputTexture;
|
|
1477
|
+
|
|
1478
|
+
vec4 filterVertexPosition( void )
|
|
1479
|
+
{
|
|
1480
|
+
vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;
|
|
1481
|
+
|
|
1482
|
+
position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;
|
|
1483
|
+
position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;
|
|
1484
|
+
|
|
1485
|
+
return vec4(position, 0.0, 1.0);
|
|
1486
|
+
}
|
|
1487
|
+
|
|
1488
|
+
vec2 filterTextureCoord( void )
|
|
1489
|
+
{
|
|
1490
|
+
return aPosition * (uOutputFrame.zw * uInputSize.zw);
|
|
1491
|
+
}
|
|
1492
|
+
|
|
1493
|
+
void main(void)
|
|
1494
|
+
{
|
|
1495
|
+
gl_Position = filterVertexPosition();
|
|
1496
|
+
|
|
1497
|
+
float pixelStrength = uInputSize.%dimension% * uStrength;
|
|
1498
|
+
|
|
1499
|
+
vec2 textureCoord = filterTextureCoord();
|
|
1500
|
+
%blur%
|
|
1501
|
+
}`;function Jc(e,t){let n=Math.ceil(e/2),r=qc,i=``,a;a=t?`vBlurTexCoords[%index%] = textureCoord + vec2(%sampleIndex% * pixelStrength, 0.0);`:`vBlurTexCoords[%index%] = textureCoord + vec2(0.0, %sampleIndex% * pixelStrength);`;for(let t=0;t<e;t++){let e=a.replace(`%index%`,t.toString());e=e.replace(`%sampleIndex%`,`${t-(n-1)}.0`),i+=e,i+=`
|
|
1502
|
+
`}return r=r.replace(`%blur%`,i),r=r.replace(`%size%`,e.toString()),r=r.replace(`%dimension%`,t?`z`:`w`),r}function Yc(e,t){let n=Jc(t,e),r=Kc(t);return be.from({vertex:n,fragment:r,name:`blur-${e?`horizontal`:`vertical`}-pass-filter`})}var Xc=`
|
|
1503
|
+
|
|
1504
|
+
struct GlobalFilterUniforms {
|
|
1505
|
+
uInputSize:vec4<f32>,
|
|
1506
|
+
uInputPixel:vec4<f32>,
|
|
1507
|
+
uInputClamp:vec4<f32>,
|
|
1508
|
+
uOutputFrame:vec4<f32>,
|
|
1509
|
+
uGlobalFrame:vec4<f32>,
|
|
1510
|
+
uOutputTexture:vec4<f32>,
|
|
1511
|
+
};
|
|
1512
|
+
|
|
1513
|
+
struct BlurUniforms {
|
|
1514
|
+
uStrength:f32,
|
|
1515
|
+
};
|
|
1516
|
+
|
|
1517
|
+
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
|
|
1518
|
+
@group(0) @binding(1) var uTexture: texture_2d<f32>;
|
|
1519
|
+
@group(0) @binding(2) var uSampler : sampler;
|
|
1520
|
+
|
|
1521
|
+
@group(1) @binding(0) var<uniform> blurUniforms : BlurUniforms;
|
|
1522
|
+
|
|
1523
|
+
|
|
1524
|
+
struct VSOutput {
|
|
1525
|
+
@builtin(position) position: vec4<f32>,
|
|
1526
|
+
%blur-struct%
|
|
1527
|
+
};
|
|
1528
|
+
|
|
1529
|
+
fn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>
|
|
1530
|
+
{
|
|
1531
|
+
var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;
|
|
1532
|
+
|
|
1533
|
+
position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;
|
|
1534
|
+
position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;
|
|
1535
|
+
|
|
1536
|
+
return vec4(position, 0.0, 1.0);
|
|
1537
|
+
}
|
|
1538
|
+
|
|
1539
|
+
fn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
|
|
1540
|
+
{
|
|
1541
|
+
return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);
|
|
1542
|
+
}
|
|
1543
|
+
|
|
1544
|
+
fn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
|
|
1545
|
+
{
|
|
1546
|
+
return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw);
|
|
1547
|
+
}
|
|
1548
|
+
|
|
1549
|
+
fn getSize() -> vec2<f32>
|
|
1550
|
+
{
|
|
1551
|
+
return gfu.uGlobalFrame.zw;
|
|
1552
|
+
}
|
|
1553
|
+
|
|
1554
|
+
|
|
1555
|
+
@vertex
|
|
1556
|
+
fn mainVertex(
|
|
1557
|
+
@location(0) aPosition : vec2<f32>,
|
|
1558
|
+
) -> VSOutput {
|
|
1559
|
+
|
|
1560
|
+
let filteredCord = filterTextureCoord(aPosition);
|
|
1561
|
+
|
|
1562
|
+
let pixelStrength = gfu.uInputSize.%dimension% * blurUniforms.uStrength;
|
|
1563
|
+
|
|
1564
|
+
return VSOutput(
|
|
1565
|
+
filterVertexPosition(aPosition),
|
|
1566
|
+
%blur-vertex-out%
|
|
1567
|
+
);
|
|
1568
|
+
}
|
|
1569
|
+
|
|
1570
|
+
@fragment
|
|
1571
|
+
fn mainFragment(
|
|
1572
|
+
@builtin(position) position: vec4<f32>,
|
|
1573
|
+
%blur-fragment-in%
|
|
1574
|
+
) -> @location(0) vec4<f32> {
|
|
1575
|
+
|
|
1576
|
+
var finalColor = vec4(0.0);
|
|
1577
|
+
|
|
1578
|
+
%blur-sampling%
|
|
1579
|
+
|
|
1580
|
+
return finalColor;
|
|
1581
|
+
}
|
|
1582
|
+
`;function Zc(e,t){let n=Wc[t],r=n.length,i=[],a=[],o=[];for(let s=0;s<t;s++){i[s]=`@location(${s}) offset${s}: vec2<f32>,`,e?a[s]=`filteredCord + vec2(${s-r+1} * pixelStrength, 0.0),`:a[s]=`filteredCord + vec2(0.0, ${s-r+1} * pixelStrength),`;let c=n[s<r?s:t-s-1].toString();o[s]=`finalColor += textureSample(uTexture, uSampler, offset${s}) * ${c};`}let s=i.join(`
|
|
1583
|
+
`),c=a.join(`
|
|
1584
|
+
`),l=o.join(`
|
|
1585
|
+
`),u=Xc.replace(`%blur-struct%`,s).replace(`%blur-vertex-out%`,c).replace(`%blur-fragment-in%`,s).replace(`%blur-sampling%`,l).replace(`%dimension%`,e?`z`:`w`);return ue.from({vertex:{source:u,entryPoint:`mainVertex`},fragment:{source:u,entryPoint:`mainFragment`}})}var Qc=class e extends at{constructor(t){t={...e.defaultOptions,...t};let n=Yc(t.horizontal,t.kernelSize),r=Zc(t.horizontal,t.kernelSize);super({glProgram:n,gpuProgram:r,resources:{blurUniforms:{uStrength:{value:0,type:`f32`}}},...t}),this.horizontal=t.horizontal,this.legacy=t.legacy??!1,this._quality=0,this.quality=t.quality,this.blur=t.strength,this._blurUniforms=this.resources.blurUniforms,this._uniforms=this._blurUniforms.uniforms}apply(e,t,n,r){this.legacy?this._applyLegacy(e,t,n,r):this._applyOptimized(e,t,n,r)}_applyLegacy(e,t,n,r){if(this._uniforms.uStrength=this.strength/this.passes,this.passes===1)e.applyFilter(this,t,n,r);else{let i=Ve.getSameSizeTexture(t),a=t,o=i;this._state.blend=!1;let s=e.renderer.type===P.WEBGPU;for(let t=0;t<this.passes-1;t++){e.applyFilter(this,a,o,t===0?!0:s);let n=o;o=a,a=n}this._state.blend=!0,e.applyFilter(this,a,n,r),Ve.returnTexture(i)}}_applyOptimized(e,t,n,r){if(this._uniforms.uStrength=this._calculateInitialStrength(),this.passes===1)e.applyFilter(this,t,n,r);else{let i=Ve.getSameSizeTexture(t),a=t,o=i;this._state.blend=!1;let s=e.renderer,c=s.type===P.WEBGPU,l=c?s.renderPipes.uniformBatch:null;for(let t=0;t<this.passes-1;t++){l&&this.groups[1].setResource(l.getUboResource(this._blurUniforms),0),e.applyFilter(this,a,o,c);let t=o;o=a,a=t,this._uniforms.uStrength*=.5}l&&this.groups[1].setResource(l.getUboResource(this._blurUniforms),0),this._state.blend=!0,e.applyFilter(this,a,n,r),Ve.returnTexture(i)}}_calculateInitialStrength(){let e=1,t=.5;for(let n=1;n<this.passes;n++)e+=t*t,t*=.5;return this.strength/Math.sqrt(e)}get blur(){return this.strength}set blur(e){this.padding=1+Math.abs(e)*2,this.strength=e}get quality(){return this._quality}set quality(e){this._quality=e,this.passes=e}};Qc.defaultOptions={strength:8,quality:4,kernelSize:5,legacy:!1};var $c=Qc,el=class extends at{constructor(...e){let t=e[0]??{};typeof t==`number`&&(y(n,`BlurFilter constructor params are now options object. See params: { strength, quality, resolution, kernelSize }`),t={strength:t},e[1]!==void 0&&(t.quality=e[1]),e[2]!==void 0&&(t.resolution=e[2]||`inherit`),e[3]!==void 0&&(t.kernelSize=e[3])),t={...$c.defaultOptions,...t};let{strength:r,strengthX:i,strengthY:a,quality:o,...s}=t;super({...s,compatibleRenderers:P.BOTH,resources:{}}),this._repeatEdgePixels=!1,this.blurXFilter=new $c({horizontal:!0,...t}),this.blurYFilter=new $c({horizontal:!1,...t}),this.quality=o,this.strengthX=i??r,this.strengthY=a??r,this.repeatEdgePixels=!1}apply(e,t,n,r){let i=Math.abs(this.blurXFilter.strength),a=Math.abs(this.blurYFilter.strength);if(i&&a){let i=Ve.getSameSizeTexture(t);this.blurXFilter.blendMode=`normal`,this.blurXFilter.apply(e,t,i,!0),this.blurYFilter.blendMode=this.blendMode,this.blurYFilter.apply(e,i,n,r),Ve.returnTexture(i)}else a?(this.blurYFilter.blendMode=this.blendMode,this.blurYFilter.apply(e,t,n,r)):(this.blurXFilter.blendMode=this.blendMode,this.blurXFilter.apply(e,t,n,r))}updatePadding(){this._repeatEdgePixels?this.padding=0:this.padding=Math.max(Math.abs(this.blurXFilter.blur),Math.abs(this.blurYFilter.blur))*2}get strength(){if(this.strengthX!==this.strengthY)throw Error(`BlurFilter's strengthX and strengthY are different`);return this.strengthX}set strength(e){this.blurXFilter.blur=this.blurYFilter.blur=e,this.updatePadding()}get quality(){return this.blurXFilter.quality}set quality(e){this.blurXFilter.quality=this.blurYFilter.quality=e}get strengthX(){return this.blurXFilter.blur}set strengthX(e){this.blurXFilter.blur=e,this.updatePadding()}get strengthY(){return this.blurYFilter.blur}set strengthY(e){this.blurYFilter.blur=e,this.updatePadding()}get blur(){return y(`8.3.0`,`BlurFilter.blur is deprecated, please use BlurFilter.strength instead.`),this.strength}set blur(e){y(`8.3.0`,`BlurFilter.blur is deprecated, please use BlurFilter.strength instead.`),this.strength=e}get blurX(){return y(`8.3.0`,`BlurFilter.blurX is deprecated, please use BlurFilter.strengthX instead.`),this.strengthX}set blurX(e){y(`8.3.0`,`BlurFilter.blurX is deprecated, please use BlurFilter.strengthX instead.`),this.strengthX=e}get blurY(){return y(`8.3.0`,`BlurFilter.blurY is deprecated, please use BlurFilter.strengthY instead.`),this.strengthY}set blurY(e){y(`8.3.0`,`BlurFilter.blurY is deprecated, please use BlurFilter.strengthY instead.`),this.strengthY=e}get repeatEdgePixels(){return this._repeatEdgePixels}set repeatEdgePixels(e){this._repeatEdgePixels=e,this.updatePadding()}};el.defaultOptions={strength:8,quality:4,kernelSize:5,legacy:!1};var tl=`
|
|
1586
|
+
in vec2 vTextureCoord;
|
|
1587
|
+
in vec4 vColor;
|
|
1588
|
+
|
|
1589
|
+
out vec4 finalColor;
|
|
1590
|
+
|
|
1591
|
+
uniform float uColorMatrix[20];
|
|
1592
|
+
uniform float uAlpha;
|
|
1593
|
+
|
|
1594
|
+
uniform sampler2D uTexture;
|
|
1595
|
+
|
|
1596
|
+
float rand(vec2 co)
|
|
1597
|
+
{
|
|
1598
|
+
return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
|
|
1599
|
+
}
|
|
1600
|
+
|
|
1601
|
+
void main()
|
|
1602
|
+
{
|
|
1603
|
+
vec4 color = texture(uTexture, vTextureCoord);
|
|
1604
|
+
float randomValue = rand(gl_FragCoord.xy * 0.2);
|
|
1605
|
+
float diff = (randomValue - 0.5) * 0.5;
|
|
1606
|
+
|
|
1607
|
+
if (uAlpha == 0.0) {
|
|
1608
|
+
finalColor = color;
|
|
1609
|
+
return;
|
|
1610
|
+
}
|
|
1611
|
+
|
|
1612
|
+
if (color.a > 0.0) {
|
|
1613
|
+
color.rgb /= color.a;
|
|
1614
|
+
}
|
|
1615
|
+
|
|
1616
|
+
vec4 result;
|
|
1617
|
+
|
|
1618
|
+
result.r = (uColorMatrix[0] * color.r);
|
|
1619
|
+
result.r += (uColorMatrix[1] * color.g);
|
|
1620
|
+
result.r += (uColorMatrix[2] * color.b);
|
|
1621
|
+
result.r += (uColorMatrix[3] * color.a);
|
|
1622
|
+
result.r += uColorMatrix[4];
|
|
1623
|
+
|
|
1624
|
+
result.g = (uColorMatrix[5] * color.r);
|
|
1625
|
+
result.g += (uColorMatrix[6] * color.g);
|
|
1626
|
+
result.g += (uColorMatrix[7] * color.b);
|
|
1627
|
+
result.g += (uColorMatrix[8] * color.a);
|
|
1628
|
+
result.g += uColorMatrix[9];
|
|
1629
|
+
|
|
1630
|
+
result.b = (uColorMatrix[10] * color.r);
|
|
1631
|
+
result.b += (uColorMatrix[11] * color.g);
|
|
1632
|
+
result.b += (uColorMatrix[12] * color.b);
|
|
1633
|
+
result.b += (uColorMatrix[13] * color.a);
|
|
1634
|
+
result.b += uColorMatrix[14];
|
|
1635
|
+
|
|
1636
|
+
result.a = (uColorMatrix[15] * color.r);
|
|
1637
|
+
result.a += (uColorMatrix[16] * color.g);
|
|
1638
|
+
result.a += (uColorMatrix[17] * color.b);
|
|
1639
|
+
result.a += (uColorMatrix[18] * color.a);
|
|
1640
|
+
result.a += uColorMatrix[19];
|
|
1641
|
+
|
|
1642
|
+
vec3 rgb = mix(color.rgb, result.rgb, uAlpha);
|
|
1643
|
+
|
|
1644
|
+
// Premultiply alpha again.
|
|
1645
|
+
rgb *= result.a;
|
|
1646
|
+
|
|
1647
|
+
finalColor = vec4(rgb, result.a);
|
|
1648
|
+
}
|
|
1649
|
+
`,nl=`struct GlobalFilterUniforms {
|
|
1650
|
+
uInputSize:vec4<f32>,
|
|
1651
|
+
uInputPixel:vec4<f32>,
|
|
1652
|
+
uInputClamp:vec4<f32>,
|
|
1653
|
+
uOutputFrame:vec4<f32>,
|
|
1654
|
+
uGlobalFrame:vec4<f32>,
|
|
1655
|
+
uOutputTexture:vec4<f32>,
|
|
1656
|
+
};
|
|
1657
|
+
|
|
1658
|
+
struct ColorMatrixUniforms {
|
|
1659
|
+
uColorMatrix:array<vec4<f32>, 5>,
|
|
1660
|
+
uAlpha:f32,
|
|
1661
|
+
};
|
|
1662
|
+
|
|
1663
|
+
|
|
1664
|
+
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
|
|
1665
|
+
@group(0) @binding(1) var uTexture: texture_2d<f32>;
|
|
1666
|
+
@group(0) @binding(2) var uSampler : sampler;
|
|
1667
|
+
@group(1) @binding(0) var<uniform> colorMatrixUniforms : ColorMatrixUniforms;
|
|
1668
|
+
|
|
1669
|
+
|
|
1670
|
+
struct VSOutput {
|
|
1671
|
+
@builtin(position) position: vec4<f32>,
|
|
1672
|
+
@location(0) uv : vec2<f32>,
|
|
1673
|
+
};
|
|
1674
|
+
|
|
1675
|
+
fn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>
|
|
1676
|
+
{
|
|
1677
|
+
var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;
|
|
1678
|
+
|
|
1679
|
+
position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;
|
|
1680
|
+
position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;
|
|
1681
|
+
|
|
1682
|
+
return vec4(position, 0.0, 1.0);
|
|
1683
|
+
}
|
|
1684
|
+
|
|
1685
|
+
fn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
|
|
1686
|
+
{
|
|
1687
|
+
return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);
|
|
1688
|
+
}
|
|
1689
|
+
|
|
1690
|
+
@vertex
|
|
1691
|
+
fn mainVertex(
|
|
1692
|
+
@location(0) aPosition : vec2<f32>,
|
|
1693
|
+
) -> VSOutput {
|
|
1694
|
+
return VSOutput(
|
|
1695
|
+
filterVertexPosition(aPosition),
|
|
1696
|
+
filterTextureCoord(aPosition),
|
|
1697
|
+
);
|
|
1698
|
+
}
|
|
1699
|
+
|
|
1700
|
+
|
|
1701
|
+
@fragment
|
|
1702
|
+
fn mainFragment(
|
|
1703
|
+
@location(0) uv: vec2<f32>,
|
|
1704
|
+
) -> @location(0) vec4<f32> {
|
|
1705
|
+
|
|
1706
|
+
|
|
1707
|
+
var c = textureSample(uTexture, uSampler, uv);
|
|
1708
|
+
|
|
1709
|
+
if (colorMatrixUniforms.uAlpha == 0.0) {
|
|
1710
|
+
return c;
|
|
1711
|
+
}
|
|
1712
|
+
|
|
1713
|
+
|
|
1714
|
+
// Un-premultiply alpha before applying the color matrix. See issue #3539.
|
|
1715
|
+
if (c.a > 0.0) {
|
|
1716
|
+
c.r /= c.a;
|
|
1717
|
+
c.g /= c.a;
|
|
1718
|
+
c.b /= c.a;
|
|
1719
|
+
}
|
|
1720
|
+
|
|
1721
|
+
var cm = colorMatrixUniforms.uColorMatrix;
|
|
1722
|
+
|
|
1723
|
+
|
|
1724
|
+
var result = vec4<f32>(0.);
|
|
1725
|
+
|
|
1726
|
+
result.r = (cm[0][0] * c.r);
|
|
1727
|
+
result.r += (cm[0][1] * c.g);
|
|
1728
|
+
result.r += (cm[0][2] * c.b);
|
|
1729
|
+
result.r += (cm[0][3] * c.a);
|
|
1730
|
+
result.r += cm[1][0];
|
|
1731
|
+
|
|
1732
|
+
result.g = (cm[1][1] * c.r);
|
|
1733
|
+
result.g += (cm[1][2] * c.g);
|
|
1734
|
+
result.g += (cm[1][3] * c.b);
|
|
1735
|
+
result.g += (cm[2][0] * c.a);
|
|
1736
|
+
result.g += cm[2][1];
|
|
1737
|
+
|
|
1738
|
+
result.b = (cm[2][2] * c.r);
|
|
1739
|
+
result.b += (cm[2][3] * c.g);
|
|
1740
|
+
result.b += (cm[3][0] * c.b);
|
|
1741
|
+
result.b += (cm[3][1] * c.a);
|
|
1742
|
+
result.b += cm[3][2];
|
|
1743
|
+
|
|
1744
|
+
result.a = (cm[3][3] * c.r);
|
|
1745
|
+
result.a += (cm[4][0] * c.g);
|
|
1746
|
+
result.a += (cm[4][1] * c.b);
|
|
1747
|
+
result.a += (cm[4][2] * c.a);
|
|
1748
|
+
result.a += cm[4][3];
|
|
1749
|
+
|
|
1750
|
+
var rgb = mix(c.rgb, result.rgb, colorMatrixUniforms.uAlpha);
|
|
1751
|
+
|
|
1752
|
+
rgb.r *= result.a;
|
|
1753
|
+
rgb.g *= result.a;
|
|
1754
|
+
rgb.b *= result.a;
|
|
1755
|
+
|
|
1756
|
+
return vec4(rgb, result.a);
|
|
1757
|
+
}`,rl=class extends at{constructor(e={}){let t=new pe({uColorMatrix:{value:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],type:`f32`,size:20},uAlpha:{value:1,type:`f32`}}),n=ue.from({vertex:{source:nl,entryPoint:`mainVertex`},fragment:{source:nl,entryPoint:`mainFragment`}}),r=be.from({vertex:Nt,fragment:tl,name:`color-matrix-filter`});super({...e,gpuProgram:n,glProgram:r,resources:{colorMatrixUniforms:t}}),this.alpha=1}_loadMatrix(e,t=!1){if(t){let t=[...e];this._multiply(t,this.matrix,e),this.resources.colorMatrixUniforms.uniforms.uColorMatrix=t}else this.resources.colorMatrixUniforms.uniforms.uColorMatrix=e;this.resources.colorMatrixUniforms.update()}_multiply(e,t,n){return e[0]=t[0]*n[0]+t[1]*n[5]+t[2]*n[10]+t[3]*n[15],e[1]=t[0]*n[1]+t[1]*n[6]+t[2]*n[11]+t[3]*n[16],e[2]=t[0]*n[2]+t[1]*n[7]+t[2]*n[12]+t[3]*n[17],e[3]=t[0]*n[3]+t[1]*n[8]+t[2]*n[13]+t[3]*n[18],e[4]=t[0]*n[4]+t[1]*n[9]+t[2]*n[14]+t[3]*n[19]+t[4],e[5]=t[5]*n[0]+t[6]*n[5]+t[7]*n[10]+t[8]*n[15],e[6]=t[5]*n[1]+t[6]*n[6]+t[7]*n[11]+t[8]*n[16],e[7]=t[5]*n[2]+t[6]*n[7]+t[7]*n[12]+t[8]*n[17],e[8]=t[5]*n[3]+t[6]*n[8]+t[7]*n[13]+t[8]*n[18],e[9]=t[5]*n[4]+t[6]*n[9]+t[7]*n[14]+t[8]*n[19]+t[9],e[10]=t[10]*n[0]+t[11]*n[5]+t[12]*n[10]+t[13]*n[15],e[11]=t[10]*n[1]+t[11]*n[6]+t[12]*n[11]+t[13]*n[16],e[12]=t[10]*n[2]+t[11]*n[7]+t[12]*n[12]+t[13]*n[17],e[13]=t[10]*n[3]+t[11]*n[8]+t[12]*n[13]+t[13]*n[18],e[14]=t[10]*n[4]+t[11]*n[9]+t[12]*n[14]+t[13]*n[19]+t[14],e[15]=t[15]*n[0]+t[16]*n[5]+t[17]*n[10]+t[18]*n[15],e[16]=t[15]*n[1]+t[16]*n[6]+t[17]*n[11]+t[18]*n[16],e[17]=t[15]*n[2]+t[16]*n[7]+t[17]*n[12]+t[18]*n[17],e[18]=t[15]*n[3]+t[16]*n[8]+t[17]*n[13]+t[18]*n[18],e[19]=t[15]*n[4]+t[16]*n[9]+t[17]*n[14]+t[18]*n[19]+t[19],e}brightness(e,t){let n=[e,0,0,0,0,0,e,0,0,0,0,0,e,0,0,0,0,0,1,0];this._loadMatrix(n,t)}tint(e,t){let[n,r,i]=N.shared.setValue(e).toArray(),a=[n,0,0,0,0,0,r,0,0,0,0,0,i,0,0,0,0,0,1,0];this._loadMatrix(a,t)}greyscale(e,t){let n=[e,e,e,0,0,e,e,e,0,0,e,e,e,0,0,0,0,0,1,0];this._loadMatrix(n,t)}grayscale(e,t){this.greyscale(e,t)}blackAndWhite(e){this._loadMatrix([.3,.6,.1,0,0,.3,.6,.1,0,0,.3,.6,.1,0,0,0,0,0,1,0],e)}hue(e,t){e=(e||0)/180*Math.PI;let n=Math.cos(e),r=Math.sin(e),i=Math.sqrt,a=1/3,o=i(a),s=[n+(1-n)*a,a*(1-n)-o*r,a*(1-n)+o*r,0,0,a*(1-n)+o*r,n+a*(1-n),a*(1-n)-o*r,0,0,a*(1-n)-o*r,a*(1-n)+o*r,n+a*(1-n),0,0,0,0,0,1,0];this._loadMatrix(s,t)}contrast(e,t){let n=(e||0)+1,r=-.5*(n-1),i=[n,0,0,0,r,0,n,0,0,r,0,0,n,0,r,0,0,0,1,0];this._loadMatrix(i,t)}saturate(e=0,t){let n=e*2/3+1,r=(n-1)*-.5,i=[n,r,r,0,0,r,n,r,0,0,r,r,n,0,0,0,0,0,1,0];this._loadMatrix(i,t)}desaturate(){this.saturate(-1)}negative(e){this._loadMatrix([-1,0,0,1,0,0,-1,0,1,0,0,0,-1,1,0,0,0,0,1,0],e)}sepia(e){this._loadMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0],e)}technicolor(e){this._loadMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,.046249425232852304,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-.2758903984886823,-.231103377548616,-.7501899197440212,1.847597816108189,0,.12137623870388682,0,0,0,1,0],e)}polaroid(e){this._loadMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0],e)}toBGR(e){this._loadMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0],e)}kodachrome(e){this._loadMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,.24991995145868634,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,.09698983488904393,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,.13972481597886063,0,0,0,1,0],e)}browni(e){this._loadMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,.1860075629647401,-.037703249837783157,.8609577587992641,.15059552388459913,0,-.14497417640467167,.24113635128153335,-.07441037908422492,.44972182064877153,0,-.029655197167024642,0,0,0,1,0],e)}vintage(e){this._loadMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,.037848179746251466,.02578397704808868,.6441188644374771,.03259127616149294,0,.029265996770472907,.0466055556782719,-.0851232987247891,.5241648018700465,0,.020232119953863904,0,0,0,1,0],e)}colorTone(e,t,n,r,i){e||=.2,t||=.15,n||=16770432,r||=3375104;let a=N.shared,[o,s,c]=a.setValue(n).toArray(),[l,u,d]=a.setValue(r).toArray(),f=[.3,.59,.11,0,0,o,s,c,e,0,l,u,d,t,0,o-l,s-u,c-d,0,0];this._loadMatrix(f,i)}night(e,t){e||=.1;let n=[e*-2,-e,0,0,0,-e,0,e,0,0,0,e,e*2,0,0,0,0,0,1,0];this._loadMatrix(n,t)}predator(e,t){let n=[11.224130630493164*e,-4.794486999511719*e,-2.8746118545532227*e,0*e,.40342438220977783*e,-3.6330697536468506*e,9.193157196044922*e,-2.951810836791992*e,0*e,-1.316135048866272*e,-3.2184197902679443*e,-4.2375030517578125*e,7.476448059082031*e,0*e,.8044459223747253*e,0,0,0,1,0];this._loadMatrix(n,t)}lsd(e){this._loadMatrix([2,-.4,.5,0,0,-.5,2,-.4,0,0,-.4,-.5,3,0,0,0,0,0,1,0],e)}reset(){this._loadMatrix([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],!1)}get matrix(){return this.resources.colorMatrixUniforms.uniforms.uColorMatrix}set matrix(e){this.resources.colorMatrixUniforms.uniforms.uColorMatrix=e}get alpha(){return this.resources.colorMatrixUniforms.uniforms.uAlpha}set alpha(e){this.resources.colorMatrixUniforms.uniforms.uAlpha=e}},il=`
|
|
1758
|
+
in vec2 vTextureCoord;
|
|
1759
|
+
in vec2 vFilterUv;
|
|
1760
|
+
|
|
1761
|
+
out vec4 finalColor;
|
|
1762
|
+
|
|
1763
|
+
uniform sampler2D uTexture;
|
|
1764
|
+
uniform sampler2D uMapTexture;
|
|
1765
|
+
|
|
1766
|
+
uniform vec4 uInputClamp;
|
|
1767
|
+
uniform highp vec4 uInputSize;
|
|
1768
|
+
uniform mat2 uRotation;
|
|
1769
|
+
uniform vec2 uScale;
|
|
1770
|
+
|
|
1771
|
+
void main()
|
|
1772
|
+
{
|
|
1773
|
+
vec4 map = texture(uMapTexture, vFilterUv);
|
|
1774
|
+
|
|
1775
|
+
vec2 offset = uInputSize.zw * (uRotation * (map.xy - 0.5)) * uScale;
|
|
1776
|
+
|
|
1777
|
+
finalColor = texture(uTexture, clamp(vTextureCoord + offset, uInputClamp.xy, uInputClamp.zw));
|
|
1778
|
+
}
|
|
1779
|
+
`,al=`in vec2 aPosition;
|
|
1780
|
+
out vec2 vTextureCoord;
|
|
1781
|
+
out vec2 vFilterUv;
|
|
1782
|
+
|
|
1783
|
+
|
|
1784
|
+
uniform vec4 uInputSize;
|
|
1785
|
+
uniform vec4 uOutputFrame;
|
|
1786
|
+
uniform vec4 uOutputTexture;
|
|
1787
|
+
|
|
1788
|
+
uniform mat3 uFilterMatrix;
|
|
1789
|
+
|
|
1790
|
+
vec4 filterVertexPosition( void )
|
|
1791
|
+
{
|
|
1792
|
+
vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;
|
|
1793
|
+
|
|
1794
|
+
position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;
|
|
1795
|
+
position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;
|
|
1796
|
+
|
|
1797
|
+
return vec4(position, 0.0, 1.0);
|
|
1798
|
+
}
|
|
1799
|
+
|
|
1800
|
+
vec2 filterTextureCoord( void )
|
|
1801
|
+
{
|
|
1802
|
+
return aPosition * (uOutputFrame.zw * uInputSize.zw);
|
|
1803
|
+
}
|
|
1804
|
+
|
|
1805
|
+
vec2 getFilterCoord( void )
|
|
1806
|
+
{
|
|
1807
|
+
return ( uFilterMatrix * vec3( filterTextureCoord(), 1.0) ).xy;
|
|
1808
|
+
}
|
|
1809
|
+
|
|
1810
|
+
|
|
1811
|
+
void main(void)
|
|
1812
|
+
{
|
|
1813
|
+
gl_Position = filterVertexPosition();
|
|
1814
|
+
vTextureCoord = filterTextureCoord();
|
|
1815
|
+
vFilterUv = getFilterCoord();
|
|
1816
|
+
}
|
|
1817
|
+
`,ol=`
|
|
1818
|
+
struct GlobalFilterUniforms {
|
|
1819
|
+
uInputSize:vec4<f32>,
|
|
1820
|
+
uInputPixel:vec4<f32>,
|
|
1821
|
+
uInputClamp:vec4<f32>,
|
|
1822
|
+
uOutputFrame:vec4<f32>,
|
|
1823
|
+
uGlobalFrame:vec4<f32>,
|
|
1824
|
+
uOutputTexture:vec4<f32>,
|
|
1825
|
+
};
|
|
1826
|
+
|
|
1827
|
+
struct DisplacementUniforms {
|
|
1828
|
+
uFilterMatrix:mat3x3<f32>,
|
|
1829
|
+
uScale:vec2<f32>,
|
|
1830
|
+
uRotation:mat2x2<f32>
|
|
1831
|
+
};
|
|
1832
|
+
|
|
1833
|
+
|
|
1834
|
+
|
|
1835
|
+
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
|
|
1836
|
+
@group(0) @binding(1) var uTexture: texture_2d<f32>;
|
|
1837
|
+
@group(0) @binding(2) var uSampler : sampler;
|
|
1838
|
+
|
|
1839
|
+
@group(1) @binding(0) var<uniform> filterUniforms : DisplacementUniforms;
|
|
1840
|
+
@group(1) @binding(1) var uMapTexture: texture_2d<f32>;
|
|
1841
|
+
@group(1) @binding(2) var uMapSampler : sampler;
|
|
1842
|
+
|
|
1843
|
+
struct VSOutput {
|
|
1844
|
+
@builtin(position) position: vec4<f32>,
|
|
1845
|
+
@location(0) uv : vec2<f32>,
|
|
1846
|
+
@location(1) filterUv : vec2<f32>,
|
|
1847
|
+
};
|
|
1848
|
+
|
|
1849
|
+
fn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>
|
|
1850
|
+
{
|
|
1851
|
+
var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;
|
|
1852
|
+
|
|
1853
|
+
position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;
|
|
1854
|
+
position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;
|
|
1855
|
+
|
|
1856
|
+
return vec4(position, 0.0, 1.0);
|
|
1857
|
+
}
|
|
1858
|
+
|
|
1859
|
+
fn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
|
|
1860
|
+
{
|
|
1861
|
+
return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);
|
|
1862
|
+
}
|
|
1863
|
+
|
|
1864
|
+
fn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
|
|
1865
|
+
{
|
|
1866
|
+
return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw);
|
|
1867
|
+
}
|
|
1868
|
+
|
|
1869
|
+
fn getFilterCoord(aPosition:vec2<f32> ) -> vec2<f32>
|
|
1870
|
+
{
|
|
1871
|
+
return ( filterUniforms.uFilterMatrix * vec3( filterTextureCoord(aPosition), 1.0) ).xy;
|
|
1872
|
+
}
|
|
1873
|
+
|
|
1874
|
+
fn getSize() -> vec2<f32>
|
|
1875
|
+
{
|
|
1876
|
+
|
|
1877
|
+
|
|
1878
|
+
return gfu.uGlobalFrame.zw;
|
|
1879
|
+
}
|
|
1880
|
+
|
|
1881
|
+
@vertex
|
|
1882
|
+
fn mainVertex(
|
|
1883
|
+
@location(0) aPosition : vec2<f32>,
|
|
1884
|
+
) -> VSOutput {
|
|
1885
|
+
return VSOutput(
|
|
1886
|
+
filterVertexPosition(aPosition),
|
|
1887
|
+
filterTextureCoord(aPosition),
|
|
1888
|
+
getFilterCoord(aPosition)
|
|
1889
|
+
);
|
|
1890
|
+
}
|
|
1891
|
+
|
|
1892
|
+
@fragment
|
|
1893
|
+
fn mainFragment(
|
|
1894
|
+
@location(0) uv: vec2<f32>,
|
|
1895
|
+
@location(1) filterUv: vec2<f32>,
|
|
1896
|
+
@builtin(position) position: vec4<f32>
|
|
1897
|
+
) -> @location(0) vec4<f32> {
|
|
1898
|
+
|
|
1899
|
+
var map = textureSample(uMapTexture, uMapSampler, filterUv);
|
|
1900
|
+
|
|
1901
|
+
var offset = gfu.uInputSize.zw * (filterUniforms.uRotation * (map.xy - 0.5)) * filterUniforms.uScale;
|
|
1902
|
+
|
|
1903
|
+
return textureSample(uTexture, uSampler, clamp(uv + offset, gfu.uInputClamp.xy, gfu.uInputClamp.zw));
|
|
1904
|
+
}`,sl=class extends at{constructor(...e){let t=e[0];t instanceof Ye&&(e[1]&&y(n,`DisplacementFilter now uses options object instead of params. {sprite, scale}`),t={sprite:t,scale:e[1]});let{sprite:r,scale:i,...a}=t,o=i??20;typeof o==`number`&&(o=new H(o,o));let s=new pe({uFilterMatrix:{value:new U,type:`mat3x3<f32>`},uScale:{value:o,type:`vec2<f32>`},uRotation:{value:new Float32Array([0,0,0,0]),type:`mat2x2<f32>`}}),c=be.from({vertex:al,fragment:il,name:`displacement-filter`}),l=ue.from({vertex:{source:ol,entryPoint:`mainVertex`},fragment:{source:ol,entryPoint:`mainFragment`}}),u=r.texture.source;super({...a,gpuProgram:l,glProgram:c,resources:{filterUniforms:s,uMapTexture:u,uMapSampler:u.style}}),this._sprite=t.sprite,this._sprite.renderable=!1}apply(e,t,n,r){let i=this.resources.filterUniforms.uniforms;e.calculateSpriteMatrix(i.uFilterMatrix,this._sprite);let a=this._sprite.worldTransform,o=Math.sqrt(a.a*a.a+a.b*a.b),s=Math.sqrt(a.c*a.c+a.d*a.d);o!==0&&s!==0&&(i.uRotation[0]=a.a/o,i.uRotation[1]=a.b/o,i.uRotation[2]=a.c/s,i.uRotation[3]=a.d/s),this.resources.uMapTexture=this._sprite.texture.source,e.applyFilter(this,t,n,r)}get scale(){return this.resources.filterUniforms.uniforms.uScale}},cl=`
|
|
1905
|
+
in vec2 vTextureCoord;
|
|
1906
|
+
in vec4 vColor;
|
|
1907
|
+
|
|
1908
|
+
out vec4 finalColor;
|
|
1909
|
+
|
|
1910
|
+
uniform float uNoise;
|
|
1911
|
+
uniform float uSeed;
|
|
1912
|
+
uniform sampler2D uTexture;
|
|
1913
|
+
|
|
1914
|
+
float rand(vec2 co)
|
|
1915
|
+
{
|
|
1916
|
+
return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
|
|
1917
|
+
}
|
|
1918
|
+
|
|
1919
|
+
void main()
|
|
1920
|
+
{
|
|
1921
|
+
vec4 color = texture(uTexture, vTextureCoord);
|
|
1922
|
+
float randomValue = rand(gl_FragCoord.xy * uSeed);
|
|
1923
|
+
float diff = (randomValue - 0.5) * uNoise;
|
|
1924
|
+
|
|
1925
|
+
// Un-premultiply alpha before applying the color matrix. See issue #3539.
|
|
1926
|
+
if (color.a > 0.0) {
|
|
1927
|
+
color.rgb /= color.a;
|
|
1928
|
+
}
|
|
1929
|
+
|
|
1930
|
+
color.r += diff;
|
|
1931
|
+
color.g += diff;
|
|
1932
|
+
color.b += diff;
|
|
1933
|
+
|
|
1934
|
+
// Premultiply alpha again.
|
|
1935
|
+
color.rgb *= color.a;
|
|
1936
|
+
|
|
1937
|
+
finalColor = color;
|
|
1938
|
+
}
|
|
1939
|
+
`,ll=`
|
|
1940
|
+
|
|
1941
|
+
struct GlobalFilterUniforms {
|
|
1942
|
+
uInputSize:vec4<f32>,
|
|
1943
|
+
uInputPixel:vec4<f32>,
|
|
1944
|
+
uInputClamp:vec4<f32>,
|
|
1945
|
+
uOutputFrame:vec4<f32>,
|
|
1946
|
+
uGlobalFrame:vec4<f32>,
|
|
1947
|
+
uOutputTexture:vec4<f32>,
|
|
1948
|
+
};
|
|
1949
|
+
|
|
1950
|
+
struct NoiseUniforms {
|
|
1951
|
+
uNoise:f32,
|
|
1952
|
+
uSeed:f32,
|
|
1953
|
+
};
|
|
1954
|
+
|
|
1955
|
+
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
|
|
1956
|
+
@group(0) @binding(1) var uTexture: texture_2d<f32>;
|
|
1957
|
+
@group(0) @binding(2) var uSampler : sampler;
|
|
1958
|
+
|
|
1959
|
+
@group(1) @binding(0) var<uniform> noiseUniforms : NoiseUniforms;
|
|
1960
|
+
|
|
1961
|
+
struct VSOutput {
|
|
1962
|
+
@builtin(position) position: vec4<f32>,
|
|
1963
|
+
@location(0) uv : vec2<f32>
|
|
1964
|
+
};
|
|
1965
|
+
|
|
1966
|
+
fn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>
|
|
1967
|
+
{
|
|
1968
|
+
var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;
|
|
1969
|
+
|
|
1970
|
+
position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;
|
|
1971
|
+
position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;
|
|
1972
|
+
|
|
1973
|
+
return vec4(position, 0.0, 1.0);
|
|
1974
|
+
}
|
|
1975
|
+
|
|
1976
|
+
fn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
|
|
1977
|
+
{
|
|
1978
|
+
return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);
|
|
1979
|
+
}
|
|
1980
|
+
|
|
1981
|
+
fn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
|
|
1982
|
+
{
|
|
1983
|
+
return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw);
|
|
1984
|
+
}
|
|
1985
|
+
|
|
1986
|
+
fn getSize() -> vec2<f32>
|
|
1987
|
+
{
|
|
1988
|
+
return gfu.uGlobalFrame.zw;
|
|
1989
|
+
}
|
|
1990
|
+
|
|
1991
|
+
@vertex
|
|
1992
|
+
fn mainVertex(
|
|
1993
|
+
@location(0) aPosition : vec2<f32>,
|
|
1994
|
+
) -> VSOutput {
|
|
1995
|
+
return VSOutput(
|
|
1996
|
+
filterVertexPosition(aPosition),
|
|
1997
|
+
filterTextureCoord(aPosition)
|
|
1998
|
+
);
|
|
1999
|
+
}
|
|
2000
|
+
|
|
2001
|
+
fn rand(co:vec2<f32>) -> f32
|
|
2002
|
+
{
|
|
2003
|
+
return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
|
|
2004
|
+
}
|
|
2005
|
+
|
|
2006
|
+
|
|
2007
|
+
|
|
2008
|
+
@fragment
|
|
2009
|
+
fn mainFragment(
|
|
2010
|
+
@location(0) uv: vec2<f32>,
|
|
2011
|
+
@builtin(position) position: vec4<f32>
|
|
2012
|
+
) -> @location(0) vec4<f32> {
|
|
2013
|
+
|
|
2014
|
+
var pixelPosition = globalTextureCoord(position.xy);// / (getSize());//- gfu.uOutputFrame.xy);
|
|
2015
|
+
|
|
2016
|
+
|
|
2017
|
+
var sample = textureSample(uTexture, uSampler, uv);
|
|
2018
|
+
var randomValue = rand(pixelPosition.xy * noiseUniforms.uSeed);
|
|
2019
|
+
var diff = (randomValue - 0.5) * noiseUniforms.uNoise;
|
|
2020
|
+
|
|
2021
|
+
// Un-premultiply alpha before applying the color matrix. See issue #3539.
|
|
2022
|
+
if (sample.a > 0.0) {
|
|
2023
|
+
sample.r /= sample.a;
|
|
2024
|
+
sample.g /= sample.a;
|
|
2025
|
+
sample.b /= sample.a;
|
|
2026
|
+
}
|
|
2027
|
+
|
|
2028
|
+
sample.r += diff;
|
|
2029
|
+
sample.g += diff;
|
|
2030
|
+
sample.b += diff;
|
|
2031
|
+
|
|
2032
|
+
// Premultiply alpha again.
|
|
2033
|
+
sample.r *= sample.a;
|
|
2034
|
+
sample.g *= sample.a;
|
|
2035
|
+
sample.b *= sample.a;
|
|
2036
|
+
|
|
2037
|
+
return sample;
|
|
2038
|
+
}`,ul=class e extends at{constructor(t={}){t={...e.defaultOptions,...t};let n=ue.from({vertex:{source:ll,entryPoint:`mainVertex`},fragment:{source:ll,entryPoint:`mainFragment`}}),r=be.from({vertex:Nt,fragment:cl,name:`noise-filter`}),{noise:i,seed:a,...o}=t;super({...o,gpuProgram:n,glProgram:r,resources:{noiseUniforms:new pe({uNoise:{value:1,type:`f32`},uSeed:{value:1,type:`f32`}})}}),this.noise=i,this.seed=a??Math.random()}get noise(){return this.resources.noiseUniforms.uniforms.uNoise}set noise(e){this.resources.noiseUniforms.uniforms.uNoise=e}get seed(){return this.resources.noiseUniforms.uniforms.uSeed}set seed(e){this.resources.noiseUniforms.uniforms.uSeed=e}};ul.defaultOptions={noise:.5};var dl=ul,fl=`fn getLuminosity(c: vec3<f32>) -> f32 {
|
|
2039
|
+
return 0.3 * c.r + 0.59 * c.g + 0.11 * c.b;
|
|
2040
|
+
}
|
|
2041
|
+
|
|
2042
|
+
fn setLuminosity(c: vec3<f32>, lum: f32) -> vec3<f32> {
|
|
2043
|
+
let d: f32 = lum - getLuminosity(c);
|
|
2044
|
+
let newColor: vec3<f32> = c.rgb + vec3<f32>(d, d, d);
|
|
2045
|
+
|
|
2046
|
+
// clip back into legal range
|
|
2047
|
+
let newLum: f32 = getLuminosity(newColor);
|
|
2048
|
+
let cMin: f32 = min(newColor.r, min(newColor.g, newColor.b));
|
|
2049
|
+
let cMax: f32 = max(newColor.r, max(newColor.g, newColor.b));
|
|
2050
|
+
|
|
2051
|
+
let t1: f32 = newLum / (newLum - cMin);
|
|
2052
|
+
let t2: f32 = (1.0 - newLum) / (cMax - newLum);
|
|
2053
|
+
|
|
2054
|
+
let finalColor = mix(vec3<f32>(newLum, newLum, newLum), newColor, select(select(1.0, t2, cMax > 1.0), t1, cMin < 0.0));
|
|
2055
|
+
|
|
2056
|
+
return finalColor;
|
|
2057
|
+
}
|
|
2058
|
+
|
|
2059
|
+
fn getSaturation(c: vec3<f32>) -> f32 {
|
|
2060
|
+
return max(c.r, max(c.g, c.b)) - min(c.r, min(c.g, c.b));
|
|
2061
|
+
}
|
|
2062
|
+
|
|
2063
|
+
// Set saturation if color components are sorted in ascending order.
|
|
2064
|
+
fn setSaturationMinMidMax(cSorted: vec3<f32>, s: f32) -> vec3<f32> {
|
|
2065
|
+
var result: vec3<f32>;
|
|
2066
|
+
if (cSorted.z > cSorted.x) {
|
|
2067
|
+
let newY = (((cSorted.y - cSorted.x) * s) / (cSorted.z - cSorted.x));
|
|
2068
|
+
result = vec3<f32>(0.0, newY, s);
|
|
2069
|
+
} else {
|
|
2070
|
+
result = vec3<f32>(0.0, 0.0, 0.0);
|
|
2071
|
+
}
|
|
2072
|
+
return vec3<f32>(result.x, result.y, result.z);
|
|
2073
|
+
}
|
|
2074
|
+
|
|
2075
|
+
fn setSaturation(c: vec3<f32>, s: f32) -> vec3<f32> {
|
|
2076
|
+
var result: vec3<f32> = c;
|
|
2077
|
+
|
|
2078
|
+
if (c.r <= c.g && c.r <= c.b) {
|
|
2079
|
+
if (c.g <= c.b) {
|
|
2080
|
+
result = setSaturationMinMidMax(result, s);
|
|
2081
|
+
} else {
|
|
2082
|
+
var temp: vec3<f32> = vec3<f32>(result.r, result.b, result.g);
|
|
2083
|
+
temp = setSaturationMinMidMax(temp, s);
|
|
2084
|
+
result = vec3<f32>(temp.r, temp.b, temp.g);
|
|
2085
|
+
}
|
|
2086
|
+
} else if (c.g <= c.r && c.g <= c.b) {
|
|
2087
|
+
if (c.r <= c.b) {
|
|
2088
|
+
var temp: vec3<f32> = vec3<f32>(result.g, result.r, result.b);
|
|
2089
|
+
temp = setSaturationMinMidMax(temp, s);
|
|
2090
|
+
result = vec3<f32>(temp.g, temp.r, temp.b);
|
|
2091
|
+
} else {
|
|
2092
|
+
var temp: vec3<f32> = vec3<f32>(result.g, result.b, result.r);
|
|
2093
|
+
temp = setSaturationMinMidMax(temp, s);
|
|
2094
|
+
result = vec3<f32>(temp.g, temp.b, temp.r);
|
|
2095
|
+
}
|
|
2096
|
+
} else {
|
|
2097
|
+
if (c.r <= c.g) {
|
|
2098
|
+
var temp: vec3<f32> = vec3<f32>(result.b, result.r, result.g);
|
|
2099
|
+
temp = setSaturationMinMidMax(temp, s);
|
|
2100
|
+
result = vec3<f32>(temp.b, temp.r, temp.g);
|
|
2101
|
+
} else {
|
|
2102
|
+
var temp: vec3<f32> = vec3<f32>(result.b, result.g, result.r);
|
|
2103
|
+
temp = setSaturationMinMidMax(temp, s);
|
|
2104
|
+
result = vec3<f32>(temp.b, temp.g, temp.r);
|
|
2105
|
+
}
|
|
2106
|
+
}
|
|
2107
|
+
|
|
2108
|
+
return result;
|
|
2109
|
+
}`,pl=class e{constructor(t){this._tick=()=>{this._destroyed||(this.timeout=setTimeout(this._processQueue,0))},this._processQueue=()=>{if(this._destroyed)return;let{queue:t}=this,n=0;for(;t.length&&n<e.uploadsPerFrame;){let e=t.shift();this.uploadQueueItem(e),n++}t.length?it.system.addOnce(this._tick,this,Qe.UTILITY):this._resolve()},this.renderer=t,this.queue=[],this.resolves=[]}getQueue(){return[...this.queue]}add(e){let t=Array.isArray(e)?e:[e];for(let e of t)e instanceof ot?this._addContainer(e):this.resolveQueueItem(e,this.queue);return this}_addContainer(e){this.resolveQueueItem(e,this.queue);for(let t of e.children)this._addContainer(t)}upload(e){return e&&this.add(e),new Promise(e=>{this.queue.length?(this.resolves.push(e),this.dedupeQueue(),it.system.addOnce(this._tick,this,Qe.UTILITY)):e()})}dedupeQueue(){let e=Object.create(null),t=0;for(let n=0;n<this.queue.length;n++){let r=this.queue[n];e[r.uid]||(e[r.uid]=!0,this.queue[t++]=r)}this.queue.length=t}destroy(){this._destroyed=!0,clearTimeout(this.timeout)}_resolve(){let{resolves:e}=this,t=e.slice(0);e.length=0;for(let e of t)e()}};pl.uploadsPerFrame=4;var ml=pl,hl=class{constructor(){this.isBatchable=!1}reset(){this.isBatchable=!1,this.context=null,this.graphicsData&&=(this.graphicsData.destroy(),null)}destroy(){this.reset()}},gl=class{constructor(){this.instructions=new C}init(){this.instructions.reset()}destroy(){this.instructions.destroy(),this.instructions=null}},_l=class e{constructor(e){this._renderer=e,this._managedContexts=new zi({renderer:e,type:`resource`,name:`graphicsContext`})}init(t){e.defaultOptions.bezierSmoothness=t?.bezierSmoothness??e.defaultOptions.bezierSmoothness}getContextRenderData(e){return this.getGpuContext(e).graphicsData||this._initContextRenderData(e)}updateGpuContext(e){let t=e._gpuData,n=!!t[this._renderer.uid],r=t[this._renderer.uid]||this._initContext(e);return(e.dirty||!n)&&(n&&r.reset(),r.isBatchable=!1,e.dirty=!1),r}getGpuContext(e){return e._gpuData[this._renderer.uid]||this._initContext(e)}_initContextRenderData(e){let t=new gl,n=this.getGpuContext(e);return n.graphicsData=t,t.init(),t}_initContext(e){let t=new hl;return t.context=e,e._gpuData[this._renderer.uid]=t,this._managedContexts.add(e),t}destroy(){this._managedContexts.destroy(),this._renderer=null}};_l.extension={type:[W.CanvasSystem],name:`graphicsContext`},_l.defaultOptions={bezierSmoothness:.5};var vl=_l,yl=class{constructor(e,t){this.state=et.for2d(),this.renderer=e,this._adaptor=t,this.renderer.runners.contextChange.add(this),this._managedGraphics=new zi({renderer:e,type:`renderable`,priority:-1,name:`graphics`})}contextChange(){this._adaptor.contextChange(this.renderer)}validateRenderable(e){return!1}addRenderable(e,t){this._managedGraphics.add(e),this.renderer.renderPipes.batch.break(t),t.add(e)}updateRenderable(e){}execute(e){e.isRenderable&&this._adaptor.execute(this,e)}destroy(){this._managedGraphics.destroy(),this.renderer=null,this._adaptor.destroy(),this._adaptor=null}};yl.extension={type:[W.CanvasPipes],name:`graphics`};var bl=class{constructor(){this.batches=[],this.batched=!1}destroy(){this.batches.forEach(e=>{de.return(e)}),this.batches.length=0}},xl=class{constructor(e,t){this.state=et.for2d(),this.renderer=e,this._adaptor=t,this.renderer.runners.contextChange.add(this),this._managedGraphics=new zi({renderer:e,type:`renderable`,priority:-1,name:`graphics`})}contextChange(){this._adaptor.contextChange(this.renderer)}validateRenderable(e){let t=e.context,n=!!e._gpuData,r=this.renderer.graphicsContext.updateGpuContext(t);return!!(r.isBatchable||n!==r.isBatchable)}addRenderable(e,t){let n=this.renderer.graphicsContext.updateGpuContext(e.context);e.didViewUpdate&&this._rebuild(e),n.isBatchable?this._addToBatcher(e,t):(this.renderer.renderPipes.batch.break(t),t.add(e))}updateRenderable(e){let t=this._getGpuDataForRenderable(e).batches;for(let e=0;e<t.length;e++){let n=t[e];n._batcher.updateElement(n)}}execute(e){if(!e.isRenderable)return;let t=this.renderer,n=e.context;if(!t.graphicsContext.getGpuContext(n).batches.length)return;let r=n.customShader||this._adaptor.shader;this.state.blendMode=e.groupBlendMode;let i=r.resources.localUniforms.uniforms;i.uTransformMatrix=e.groupTransform,i.uRound=t._roundPixels|e._roundPixels,oi(e.groupColorAlpha,i.uColor,0),this._adaptor.execute(this,e)}_rebuild(e){let t=this._getGpuDataForRenderable(e),n=this.renderer.graphicsContext.updateGpuContext(e.context);t.destroy(),n.isBatchable&&this._updateBatchesForRenderable(e,t)}_addToBatcher(e,t){let n=this.renderer.renderPipes.batch,r=this._getGpuDataForRenderable(e).batches;for(let e=0;e<r.length;e++){let i=r[e];n.addToBatch(i,t)}}_getGpuDataForRenderable(e){return e._gpuData[this.renderer.uid]||this._initGpuDataForRenderable(e)}_initGpuDataForRenderable(e){let t=new bl;return e._gpuData[this.renderer.uid]=t,this._managedGraphics.add(e),t}_updateBatchesForRenderable(e,t){let n=e.context,r=this.renderer.graphicsContext.getGpuContext(n),i=this.renderer._roundPixels|e._roundPixels;t.batches=r.batches.map(t=>{let n=de.get(mn);return t.copyTo(n),n.renderable=e,n.roundPixels=i,n})}destroy(){this._managedGraphics.destroy(),this.renderer=null,this._adaptor.destroy(),this._adaptor=null,this.state=null}};xl.extension={type:[W.WebGLPipes,W.WebGPUPipes],name:`graphics`},F.add(yl),F.add(xl),F.add(vl),F.add(Sn);var Sl=class e extends tt{constructor(e){e instanceof er&&(e={context:e});let{context:t,roundPixels:n,...r}=e||{};super({label:`Graphics`,...r}),this.renderPipeId=`graphics`,t?this.context=t:(this.context=this._ownedContext=new er,this.context.autoGarbageCollect=this.autoGarbageCollect),this.didViewUpdate=!0,this.allowChildren=!1,this.roundPixels=n??!1}set context(e){e!==this._context&&(this._context&&(this._context.off(`update`,this.onViewUpdate,this),this._context.off(`unload`,this.unload,this)),this._context=e,this._context.on(`update`,this.onViewUpdate,this),this._context.on(`unload`,this.unload,this),this.onViewUpdate())}get context(){return this._context}get bounds(){return this._context.bounds}updateBounds(){}containsPoint(e){return this._context.containsPoint(e)}destroy(e){this._ownedContext&&!e?this._ownedContext.destroy(e):(e===!0||e?.context===!0)&&this._context.destroy(e),this._ownedContext=null,this._context=null,super.destroy(e)}_onTouch(e){this._gcLastUsed=e,this._context._gcLastUsed=e}_callContextMethod(e,t){return this.context[e](...t),this}setFillStyle(...e){return this._callContextMethod(`setFillStyle`,e)}setStrokeStyle(...e){return this._callContextMethod(`setStrokeStyle`,e)}fill(...e){return this._callContextMethod(`fill`,e)}stroke(...e){return this._callContextMethod(`stroke`,e)}texture(...e){return this._callContextMethod(`texture`,e)}beginPath(){return this._callContextMethod(`beginPath`,[])}cut(){return this._callContextMethod(`cut`,[])}arc(...e){return this._callContextMethod(`arc`,e)}arcTo(...e){return this._callContextMethod(`arcTo`,e)}arcToSvg(...e){return this._callContextMethod(`arcToSvg`,e)}bezierCurveTo(...e){return this._callContextMethod(`bezierCurveTo`,e)}closePath(){return this._callContextMethod(`closePath`,[])}ellipse(...e){return this._callContextMethod(`ellipse`,e)}circle(...e){return this._callContextMethod(`circle`,e)}path(...e){return this._callContextMethod(`path`,e)}lineTo(...e){return this._callContextMethod(`lineTo`,e)}moveTo(...e){return this._callContextMethod(`moveTo`,e)}quadraticCurveTo(...e){return this._callContextMethod(`quadraticCurveTo`,e)}rect(...e){return this._callContextMethod(`rect`,e)}roundRect(...e){return this._callContextMethod(`roundRect`,e)}poly(...e){return this._callContextMethod(`poly`,e)}regularPoly(...e){return this._callContextMethod(`regularPoly`,e)}roundPoly(...e){return this._callContextMethod(`roundPoly`,e)}roundShape(...e){return this._callContextMethod(`roundShape`,e)}filletRect(...e){return this._callContextMethod(`filletRect`,e)}chamferRect(...e){return this._callContextMethod(`chamferRect`,e)}star(...e){return this._callContextMethod(`star`,e)}svg(...e){return this._callContextMethod(`svg`,e)}restore(...e){return this._callContextMethod(`restore`,e)}save(){return this._callContextMethod(`save`,[])}getTransform(){return this.context.getTransform()}resetTransform(){return this._callContextMethod(`resetTransform`,[])}rotateTransform(...e){return this._callContextMethod(`rotate`,e)}scaleTransform(...e){return this._callContextMethod(`scale`,e)}setTransform(...e){return this._callContextMethod(`setTransform`,e)}transform(...e){return this._callContextMethod(`transform`,e)}translateTransform(...e){return this._callContextMethod(`translate`,e)}clear(){return this._callContextMethod(`clear`,[])}get fillStyle(){return this._context.fillStyle}set fillStyle(e){this._context.fillStyle=e}get strokeStyle(){return this._context.strokeStyle}set strokeStyle(e){this._context.strokeStyle=e}clone(t=!1){return t?new e(this._context.clone()):(this._ownedContext=null,new e(this._context))}lineStyle(e,t,r){y(n,`Graphics#lineStyle is no longer needed. Use Graphics#setStrokeStyle to set the stroke style.`);let i={};return e&&(i.width=e),t&&(i.color=t),r&&(i.alpha=r),this.context.strokeStyle=i,this}beginFill(e,t){y(n,`Graphics#beginFill is no longer needed. Use Graphics#fill to fill the shape with the desired style.`);let r={};return e!==void 0&&(r.color=e),t!==void 0&&(r.alpha=t),this.context.fillStyle=r,this}endFill(){y(n,`Graphics#endFill is no longer needed. Use Graphics#fill to fill the shape with the desired style.`),this.context.fill();let e=this.context.strokeStyle;return(e.width!==er.defaultStrokeStyle.width||e.color!==er.defaultStrokeStyle.color||e.alpha!==er.defaultStrokeStyle.alpha)&&this.context.stroke(),this}drawCircle(...e){return y(n,`Graphics#drawCircle has been renamed to Graphics#circle`),this._callContextMethod(`circle`,e)}drawEllipse(...e){return y(n,`Graphics#drawEllipse has been renamed to Graphics#ellipse`),this._callContextMethod(`ellipse`,e)}drawPolygon(...e){return y(n,`Graphics#drawPolygon has been renamed to Graphics#poly`),this._callContextMethod(`poly`,e)}drawRect(...e){return y(n,`Graphics#drawRect has been renamed to Graphics#rect`),this._callContextMethod(`rect`,e)}drawRoundedRect(...e){return y(n,`Graphics#drawRoundedRect has been renamed to Graphics#roundRect`),this._callContextMethod(`roundRect`,e)}drawStar(...e){return y(n,`Graphics#drawStar has been renamed to Graphics#star`),this._callContextMethod(`star`,e)}},Cl=class e extends he{constructor(...t){let r=t[0]??{};r instanceof Float32Array&&(y(n,`use new MeshGeometry({ positions, uvs, indices }) instead`),r={positions:r,uvs:t[1],indices:t[2]}),r={...e.defaultOptions,...r};let i=r.positions||new Float32Array([0,0,1,0,1,1,0,1]),a=r.uvs;a||=r.positions?new Float32Array(i.length):new Float32Array([0,0,1,0,1,1,0,1]);let o=r.indices||new Uint32Array([0,1,2,0,2,3]),s=r.shrinkBuffersToFit,c=new V({data:i,label:`attribute-mesh-positions`,shrinkToFit:s,usage:k.VERTEX|k.COPY_DST}),l=new V({data:a,label:`attribute-mesh-uvs`,shrinkToFit:s,usage:k.VERTEX|k.COPY_DST}),u=new V({data:o,label:`index-mesh-buffer`,shrinkToFit:s,usage:k.INDEX|k.COPY_DST});super({attributes:{aPosition:{buffer:c,format:`float32x2`,stride:8,offset:0},aUV:{buffer:l,format:`float32x2`,stride:8,offset:0}},indexBuffer:u,topology:r.topology}),this.batchMode=`auto`}get positions(){return this.attributes.aPosition.buffer.data}set positions(e){this.attributes.aPosition.buffer.data=e}get uvs(){return this.attributes.aUV.buffer.data}set uvs(e){this.attributes.aUV.buffer.data=e}get indices(){return this.indexBuffer.data}set indices(e){this.indexBuffer.data=e}};Cl.defaultOptions={topology:`triangle-list`,shrinkBuffersToFit:!1};var wl=Cl,Tl=class{constructor(){this.batcherName=`default`,this.packAsQuad=!1,this.indexOffset=0,this.attributeOffset=0,this.roundPixels=0,this._batcher=null,this._batch=null,this._textureMatrixUpdateId=-1,this._uvUpdateId=-1}get blendMode(){return this.renderable.groupBlendMode}get topology(){return this._topology||this.geometry.topology}set topology(e){this._topology=e}reset(){this.renderable=null,this.texture=null,this._batcher=null,this._batch=null,this.geometry=null,this._uvUpdateId=-1,this._textureMatrixUpdateId=-1}setTexture(e){this.texture!==e&&(this.texture=e,this._textureMatrixUpdateId=-1)}get uvs(){let e=this.geometry.getBuffer(`aUV`),t=e.data,n=t,r=this.texture.textureMatrix;return r.isSimple||(n=this._transformedUvs,(this._textureMatrixUpdateId!==r._updateID||this._uvUpdateId!==e._updateID)&&((!n||n.length<t.length)&&(n=this._transformedUvs=new Float32Array(t.length)),this._textureMatrixUpdateId=r._updateID,this._uvUpdateId=e._updateID,r.multiplyUvs(t,n))),n}get positions(){return this.geometry.positions}get indices(){return this.geometry.indices}get color(){return this.renderable.groupColorAlpha}get groupTransform(){return this.renderable.groupTransform}get attributeSize(){return this.geometry.positions.length/2}get indexSize(){return this.geometry.indices.length}},El=class{destroy(){}},Dl=class{constructor(e,t){this.localUniforms=new pe({uTransformMatrix:{value:new U,type:`mat3x3<f32>`},uColor:{value:new Float32Array([1,1,1,1]),type:`vec4<f32>`},uRound:{value:0,type:`f32`}}),this.localUniformsBindGroup=new L({0:this.localUniforms}),this.renderer=e,this._adaptor=t,this._adaptor.init()}validateRenderable(e){let t=this._getMeshData(e),n=t.batched,r=e.batched;if(t.batched=r,n!==r)return!0;if(r){let n=e._geometry;if(n.indices.length!==t.indexSize||n.positions.length!==t.vertexSize)return t.indexSize=n.indices.length,t.vertexSize=n.positions.length,!0;let r=this._getBatchableMesh(e);return r.texture.uid!==e._texture.uid&&(r._textureMatrixUpdateId=-1),!r._batcher.checkAndUpdateTexture(r,e._texture)}return!1}addRenderable(e,t){let n=this.renderer.renderPipes.batch,r=this._getMeshData(e);if(e.didViewUpdate&&(r.indexSize=e._geometry.indices?.length,r.vertexSize=e._geometry.positions?.length),r.batched){let r=this._getBatchableMesh(e);r.setTexture(e._texture),r.geometry=e._geometry,n.addToBatch(r,t)}else n.break(t),t.add(e)}updateRenderable(e){if(e.batched){let t=this._getBatchableMesh(e);t.setTexture(e._texture),t.geometry=e._geometry,t._batcher.updateElement(t)}}execute(e){if(!e.isRenderable)return;e.state.blendMode=hi(e.groupBlendMode,e.texture._source);let t=this.localUniforms;t.uniforms.uTransformMatrix=e.groupTransform,t.uniforms.uRound=this.renderer._roundPixels|e._roundPixels,t.update(),oi(e.groupColorAlpha,t.uniforms.uColor,0),this._adaptor.execute(this,e)}_getMeshData(e){var t,n;return(t=e._gpuData)[n=this.renderer.uid]||(t[n]=new El),e._gpuData[this.renderer.uid].meshData||this._initMeshData(e)}_initMeshData(e){return e._gpuData[this.renderer.uid].meshData={batched:e.batched,indexSize:0,vertexSize:0},e._gpuData[this.renderer.uid].meshData}_getBatchableMesh(e){var t,n;return(t=e._gpuData)[n=this.renderer.uid]||(t[n]=new El),e._gpuData[this.renderer.uid].batchableMesh||this._initBatchableMesh(e)}_initBatchableMesh(e){let t=new Tl;return t.renderable=e,t.setTexture(e._texture),t.transform=e.groupTransform,t.roundPixels=this.renderer._roundPixels|e._roundPixels,e._gpuData[this.renderer.uid].batchableMesh=t,t}destroy(){this.localUniforms=null,this.localUniformsBindGroup=null,this._adaptor.destroy(),this._adaptor=null,this.renderer=null}};Dl.extension={type:[W.WebGLPipes,W.WebGPUPipes],name:`mesh`},F.add(Dl);var Ol=class extends tt{constructor(...e){let t=e[0];t instanceof he&&(y(n,`Mesh: use new Mesh({ geometry, shader }) instead`),t={geometry:t,shader:e[1]},e[3]&&(y(n,`Mesh: drawMode argument has been removed, use geometry.topology instead`),t.geometry.topology=e[3]));let{geometry:r,shader:i,texture:a,roundPixels:o,state:s,...c}=t;super({label:`Mesh`,...c}),this.renderPipeId=`mesh`,this._shader=null,this.allowChildren=!1,this.shader=i??null,this.texture=a??i?.texture??h.WHITE,this.state=s??et.for2d(),this._geometry=r,this._geometry.on(`update`,this.onViewUpdate,this),this.roundPixels=o??!1}get material(){return y(n,`mesh.material property has been removed, use mesh.shader instead`),this._shader}set shader(e){this._shader!==e&&(this._shader=e,this.onViewUpdate())}get shader(){return this._shader}set geometry(e){this._geometry!==e&&(this._geometry?.off(`update`,this.onViewUpdate,this),e.on(`update`,this.onViewUpdate,this),this._geometry=e,this.onViewUpdate())}get geometry(){return this._geometry}set texture(e){e||=h.EMPTY;let t=this._texture;t!==e&&(t&&t.dynamic&&t.off(`update`,this.onViewUpdate,this),e.dynamic&&e.on(`update`,this.onViewUpdate,this),this.shader&&(this.shader.texture=e),this._texture=e,this.onViewUpdate())}get texture(){return this._texture}get batched(){return this._shader||this.state.data&12?!1:this._geometry instanceof wl?this._geometry.batchMode===`auto`?this._geometry.positions.length/2<=100:this._geometry.batchMode===`batch`:!1}get bounds(){return this._geometry.bounds}updateBounds(){this._bounds=this._geometry.bounds}containsPoint(e){let{x:t,y:n}=e;if(!this.bounds.containsPoint(t,n))return!1;let r=this.geometry.getBuffer(`aPosition`).data,i=this.geometry.topology===`triangle-strip`?3:1;if(this.geometry.getIndex()){let e=this.geometry.getIndex().data,a=e.length;for(let o=0;o+2<a;o+=i){let i=e[o]*2,a=e[o+1]*2,s=e[o+2]*2;if(aa(t,n,r[i],r[i+1],r[a],r[a+1],r[s],r[s+1]))return!0}}else{let e=r.length/2;for(let a=0;a+2<e;a+=i){let e=a*2,i=(a+1)*2,o=(a+2)*2;if(aa(t,n,r[e],r[e+1],r[i],r[i+1],r[o],r[o+1]))return!0}}return!1}destroy(e){if(super.destroy(e),typeof e==`boolean`?e:e?.texture){let t=typeof e==`boolean`?e:e?.textureSource;this._texture.destroy(t)}this._geometry?.off(`update`,this.onViewUpdate,this),this._texture=null,this._geometry=null,this._shader=null}},kl=class e extends Ye{constructor(...e){let t=e[0];Array.isArray(e[0])&&(t={textures:e[0],autoUpdate:e[1]});let{animationSpeed:n=1,autoPlay:r=!1,autoUpdate:i=!0,loop:a=!0,onComplete:o=null,onFrameChange:s=null,onLoop:c=null,textures:l,updateAnchor:u=!1,...d}=t,[f]=l;super({...d,texture:f instanceof h?f:f.texture}),this._textures=null,this._durations=null,this._autoUpdate=i,this._isConnectedToTicker=!1,this.animationSpeed=n,this.loop=a,this.updateAnchor=u,this.onComplete=o,this.onFrameChange=s,this.onLoop=c,this._currentTime=0,this._playing=!1,this._previousFrame=null,this.textures=l,r&&this.play()}stop(){this._playing&&(this._playing=!1,this._autoUpdate&&this._isConnectedToTicker&&(it.shared.remove(this.update,this),this._isConnectedToTicker=!1))}play(){this._playing||(this._playing=!0,this._autoUpdate&&!this._isConnectedToTicker&&(it.shared.add(this.update,this,Qe.HIGH),this._isConnectedToTicker=!0))}gotoAndStop(e){this.stop(),this.currentFrame=e}gotoAndPlay(e){this.currentFrame=e,this.play()}update(e){if(!this._playing)return;let t=e.deltaTime,n=this.animationSpeed*t,r=this.currentFrame;if(this._durations!==null){let e=this._currentTime%1*this._durations[this.currentFrame];for(e+=n/60*1e3;e<0;)this._currentTime--,e+=this._durations[this.currentFrame];let r=Math.sign(this.animationSpeed*t);for(this._currentTime=Math.floor(this._currentTime);e>=this._durations[this.currentFrame];)e-=this._durations[this.currentFrame]*r,this._currentTime+=r;this._currentTime+=e/this._durations[this.currentFrame]}else this._currentTime+=n;this._currentTime<0&&!this.loop?(this.gotoAndStop(0),this.onComplete&&this.onComplete()):this._currentTime>=this._textures.length&&!this.loop?(this.gotoAndStop(this._textures.length-1),this.onComplete&&this.onComplete()):r!==this.currentFrame&&(this.loop&&this.onLoop&&(this.animationSpeed>0&&this.currentFrame<r||this.animationSpeed<0&&this.currentFrame>r)&&this.onLoop(),this._updateTexture())}_updateTexture(){let e=this.currentFrame;this._previousFrame!==e&&(this._previousFrame=e,this.texture=this._textures[e],this.updateAnchor&&this.texture.defaultAnchor&&this.anchor.copyFrom(this.texture.defaultAnchor),this.onFrameChange&&this.onFrameChange(this.currentFrame))}destroy(e=!1){if(typeof e==`boolean`?e:e?.texture){let t=typeof e==`boolean`?e:e?.textureSource;this._textures.forEach(e=>{this.texture!==e&&e.destroy(t)})}this._textures=[],this._durations=null,this.stop(),super.destroy(e),this.onComplete=null,this.onFrameChange=null,this.onLoop=null}static fromFrames(t){let n=[];for(let e=0;e<t.length;++e)n.push(h.from(t[e]));return new e(n)}static fromImages(t){let n=[];for(let e=0;e<t.length;++e)n.push(h.from(t[e]));return new e(n)}get totalFrames(){return this._textures.length}get textures(){return this._textures}set textures(e){if(e[0]instanceof h)this._textures=e,this._durations=null;else{this._textures=[],this._durations=[];for(let t=0;t<e.length;t++)this._textures.push(e[t].texture),this._durations.push(e[t].time)}this._previousFrame=null,this.gotoAndStop(0),this._updateTexture()}get currentFrame(){let e=Math.floor(this._currentTime)%this._textures.length;return e<0&&(e+=this._textures.length),e}set currentFrame(e){if(e<0||e>this.totalFrames-1)throw Error(`[AnimatedSprite]: Invalid frame index value ${e}, expected to be between 0 and totalFrames ${this.totalFrames}.`);let t=this.currentFrame;this._currentTime=e,t!==this.currentFrame&&this._updateTexture()}get playing(){return this._playing}get autoUpdate(){return this._autoUpdate}set autoUpdate(e){e!==this._autoUpdate&&(this._autoUpdate=e,!this._autoUpdate&&this._isConnectedToTicker?(it.shared.remove(this.update,this),this._isConnectedToTicker=!1):this._autoUpdate&&!this._isConnectedToTicker&&this._playing&&(it.shared.add(this.update,this),this._isConnectedToTicker=!0))}},Al=class{constructor({matrix:e,observer:t}={}){this.dirty=!0,this._matrix=e??new U,this.observer=t,this.position=new ke(this,0,0),this.scale=new ke(this,1,1),this.pivot=new ke(this,0,0),this.skew=new ke(this,0,0),this._rotation=0,this._cx=1,this._sx=0,this._cy=0,this._sy=1}get matrix(){let e=this._matrix;return this.dirty?(e.a=this._cx*this.scale.x,e.b=this._sx*this.scale.x,e.c=this._cy*this.scale.y,e.d=this._sy*this.scale.y,e.tx=this.position.x-(this.pivot.x*e.a+this.pivot.y*e.c),e.ty=this.position.y-(this.pivot.x*e.b+this.pivot.y*e.d),this.dirty=!1,e):e}_onUpdate(e){this.dirty=!0,e===this.skew&&this.updateSkew(),this.observer?._onUpdate(this)}updateSkew(){this._cx=Math.cos(this._rotation+this.skew.y),this._sx=Math.sin(this._rotation+this.skew.y),this._cy=-Math.sin(this._rotation-this.skew.x),this._sy=Math.cos(this._rotation-this.skew.x),this.dirty=!0}toString(){return`[pixi.js/math:Transform position=(${this.position.x}, ${this.position.y}) rotation=${this.rotation} scale=(${this.scale.x}, ${this.scale.y}) skew=(${this.skew.x}, ${this.skew.y}) ]`}setFromMatrix(e){e.decompose(this),this.dirty=!0}get rotation(){return this._rotation}set rotation(e){this._rotation!==e&&(this._rotation=e,this._onUpdate(this.skew))}},jl=new U,Ml=new U,Nl=[new H,new H,new H,new H],Pl=class{constructor(e){this._renderer=e}validateRenderable(e){return!1}addRenderable(e,t){this._renderer.renderPipes.batch.break(t),t.add(e)}updateRenderable(e){}execute(e){let t=this._renderer,n=t.canvasContext,r=n.activeContext;r.save(),n.setBlendMode(e.groupBlendMode);let i=t.globalUniforms.globalUniformData?.worldColor??4294967295,a=e.groupColorAlpha,o=(i>>>24&255)/255,s=(a>>>24&255)/255,c=t.filter?.alphaMultiplier??1,l=o*s*c;if(l<=0){r.restore();return}r.globalAlpha=l;let u=i&16777215,d=Re(T(a&16777215,u)),f=e.texture,p=K.getTintedPattern(f,d),m=e.width,h=e.height,g=e.groupTransform,_=f.source._resolution??f.source.resolution??1;Ml.copyFrom(e._tileTransform.matrix),e.applyAnchorToTexture||Ml.translate(-e.anchor.x*m,-e.anchor.y*h);let v=Ml.tx,y=Ml.ty;Ml.scale(1/_,1/_),Ml.tx=v,Ml.ty=y,jl.identity(),jl.prepend(Ml),jl.prepend(g);let b=t._roundPixels|e._roundPixels;n.setContextTransform(jl,b===1),r.fillStyle=p;let x=e.anchor.x*-m,S=e.anchor.y*-h;Nl[0].set(x,S),Nl[1].set(x+m,S),Nl[2].set(x+m,S+h),Nl[3].set(x,S+h);for(let e=0;e<4;e++)Ml.applyInverse(Nl[e],Nl[e]);r.beginPath(),r.moveTo(Nl[0].x,Nl[0].y);for(let e=1;e<4;e++)r.lineTo(Nl[e].x,Nl[e].y);r.closePath(),r.fill(),r.restore()}destroy(){this._renderer=null}};Pl.extension={type:[W.CanvasPipes],name:`tilingSprite`};var Fl={name:`tiling-bit`,vertex:{header:`
|
|
2110
|
+
struct TilingUniforms {
|
|
2111
|
+
uMapCoord:mat3x3<f32>,
|
|
2112
|
+
uClampFrame:vec4<f32>,
|
|
2113
|
+
uClampOffset:vec2<f32>,
|
|
2114
|
+
uTextureTransform:mat3x3<f32>,
|
|
2115
|
+
uSizeAnchor:vec4<f32>
|
|
2116
|
+
};
|
|
2117
|
+
|
|
2118
|
+
@group(2) @binding(0) var<uniform> tilingUniforms: TilingUniforms;
|
|
2119
|
+
@group(2) @binding(1) var uTexture: texture_2d<f32>;
|
|
2120
|
+
@group(2) @binding(2) var uSampler: sampler;
|
|
2121
|
+
`,main:`
|
|
2122
|
+
uv = (tilingUniforms.uTextureTransform * vec3(uv, 1.0)).xy;
|
|
2123
|
+
|
|
2124
|
+
position = (position - tilingUniforms.uSizeAnchor.zw) * tilingUniforms.uSizeAnchor.xy;
|
|
2125
|
+
`},fragment:{header:`
|
|
2126
|
+
struct TilingUniforms {
|
|
2127
|
+
uMapCoord:mat3x3<f32>,
|
|
2128
|
+
uClampFrame:vec4<f32>,
|
|
2129
|
+
uClampOffset:vec2<f32>,
|
|
2130
|
+
uTextureTransform:mat3x3<f32>,
|
|
2131
|
+
uSizeAnchor:vec4<f32>
|
|
2132
|
+
};
|
|
2133
|
+
|
|
2134
|
+
@group(2) @binding(0) var<uniform> tilingUniforms: TilingUniforms;
|
|
2135
|
+
@group(2) @binding(1) var uTexture: texture_2d<f32>;
|
|
2136
|
+
@group(2) @binding(2) var uSampler: sampler;
|
|
2137
|
+
`,main:`
|
|
2138
|
+
|
|
2139
|
+
var coord = vUV + ceil(tilingUniforms.uClampOffset - vUV);
|
|
2140
|
+
coord = (tilingUniforms.uMapCoord * vec3(coord, 1.0)).xy;
|
|
2141
|
+
var unclamped = coord;
|
|
2142
|
+
coord = clamp(coord, tilingUniforms.uClampFrame.xy, tilingUniforms.uClampFrame.zw);
|
|
2143
|
+
|
|
2144
|
+
var bias = 0.;
|
|
2145
|
+
|
|
2146
|
+
if(unclamped.x == coord.x && unclamped.y == coord.y)
|
|
2147
|
+
{
|
|
2148
|
+
bias = -32.;
|
|
2149
|
+
}
|
|
2150
|
+
|
|
2151
|
+
outColor = textureSampleBias(uTexture, uSampler, coord, bias);
|
|
2152
|
+
`}},Il={name:`tiling-bit`,vertex:{header:`
|
|
2153
|
+
uniform mat3 uTextureTransform;
|
|
2154
|
+
uniform vec4 uSizeAnchor;
|
|
2155
|
+
|
|
2156
|
+
`,main:`
|
|
2157
|
+
uv = (uTextureTransform * vec3(aUV, 1.0)).xy;
|
|
2158
|
+
|
|
2159
|
+
position = (position - uSizeAnchor.zw) * uSizeAnchor.xy;
|
|
2160
|
+
`},fragment:{header:`
|
|
2161
|
+
uniform sampler2D uTexture;
|
|
2162
|
+
uniform mat3 uMapCoord;
|
|
2163
|
+
uniform vec4 uClampFrame;
|
|
2164
|
+
uniform vec2 uClampOffset;
|
|
2165
|
+
`,main:`
|
|
2166
|
+
|
|
2167
|
+
vec2 coord = vUV + ceil(uClampOffset - vUV);
|
|
2168
|
+
coord = (uMapCoord * vec3(coord, 1.0)).xy;
|
|
2169
|
+
vec2 unclamped = coord;
|
|
2170
|
+
coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);
|
|
2171
|
+
|
|
2172
|
+
outColor = texture(uTexture, coord, unclamped == coord ? 0.0 : -32.0);// lod-bias very negative to force lod 0
|
|
2173
|
+
|
|
2174
|
+
`}},Ll,Rl,zl=class extends ce{constructor(){Ll??=Ei({name:`tiling-sprite-shader`,bits:[Ji,Fl,Si]}),Rl??=Ti({name:`tiling-sprite-shader`,bits:[Yi,Il,Fi]});let e=new pe({uMapCoord:{value:new U,type:`mat3x3<f32>`},uClampFrame:{value:new Float32Array([0,0,1,1]),type:`vec4<f32>`},uClampOffset:{value:new Float32Array([0,0]),type:`vec2<f32>`},uTextureTransform:{value:new U,type:`mat3x3<f32>`},uSizeAnchor:{value:new Float32Array([100,100,.5,.5]),type:`vec4<f32>`}});super({glProgram:Rl,gpuProgram:Ll,resources:{localUniforms:new pe({uTransformMatrix:{value:new U,type:`mat3x3<f32>`},uColor:{value:new Float32Array([1,1,1,1]),type:`vec4<f32>`},uRound:{value:0,type:`f32`}}),tilingUniforms:e,uTexture:h.EMPTY.source,uSampler:h.EMPTY.source.style}})}updateUniforms(e,t,n,r,i,a){let o=this.resources.tilingUniforms,s=a.width,c=a.height,l=a.textureMatrix,u=o.uniforms.uTextureTransform;u.set(n.a*s/e,n.b*s/t,n.c*c/e,n.d*c/t,n.tx/e,n.ty/t),u.invert(),o.uniforms.uMapCoord=l.mapCoord,o.uniforms.uClampFrame=l.uClampFrame,o.uniforms.uClampOffset=l.uClampOffset,o.uniforms.uTextureTransform=u,o.uniforms.uSizeAnchor[0]=e,o.uniforms.uSizeAnchor[1]=t,o.uniforms.uSizeAnchor[2]=r,o.uniforms.uSizeAnchor[3]=i,a&&(this.resources.uTexture=a.source,this.resources.uSampler=a.source.style)}},Bl=class extends wl{constructor(){super({positions:new Float32Array([0,0,1,0,1,1,0,1]),uvs:new Float32Array([0,0,1,0,1,1,0,1]),indices:new Uint32Array([0,1,2,0,2,3])})}};function Vl(e,t){let n=e.anchor.x,r=e.anchor.y;t[0]=-n*e.width,t[1]=-r*e.height,t[2]=(1-n)*e.width,t[3]=-r*e.height,t[4]=(1-n)*e.width,t[5]=(1-r)*e.height,t[6]=-n*e.width,t[7]=(1-r)*e.height}function Hl(e,t,n,r){let i=0,a=e.length/(t||2),o=r.a,s=r.b,c=r.c,l=r.d,u=r.tx,d=r.ty;for(n*=t;i<a;){let r=e[n],a=e[n+1];e[n]=o*r+c*a+u,e[n+1]=s*r+l*a+d,n+=t,i++}}function Ul(e,t){let n=e.texture,r=n.frame.width,i=n.frame.height,a=0,o=0;e.applyAnchorToTexture&&(a=e.anchor.x,o=e.anchor.y),t[0]=t[6]=-a,t[2]=t[4]=1-a,t[1]=t[3]=-o,t[5]=t[7]=1-o;let s=U.shared;s.copyFrom(e._tileTransform.matrix),s.tx/=e.width,s.ty/=e.height,s.invert(),s.scale(e.width/r,e.height/i),Hl(t,2,0,s)}var Wl=new Bl,Gl=class{constructor(){this.canBatch=!0,this.geometry=new wl({indices:Wl.indices.slice(),positions:Wl.positions.slice(),uvs:Wl.uvs.slice()})}destroy(){this.geometry.destroy(),this.shader?.destroy()}},Kl=class{constructor(e){this._state=et.default2d,this._renderer=e,this._managedTilingSprites=new zi({renderer:e,type:`renderable`,name:`tilingSprite`})}validateRenderable(e){let t=this._getTilingSpriteData(e),n=t.canBatch;this._updateCanBatch(e);let r=t.canBatch;if(r&&r===n){let{batchableMesh:n}=t;return!n._batcher.checkAndUpdateTexture(n,e.texture)}return n!==r}addRenderable(e,t){let n=this._renderer.renderPipes.batch;this._updateCanBatch(e);let r=this._getTilingSpriteData(e),{geometry:i,canBatch:a}=r;if(a){r.batchableMesh||=new Tl;let a=r.batchableMesh;e.didViewUpdate&&(this._updateBatchableMesh(e),a.geometry=i,a.renderable=e,a.transform=e.groupTransform,a.setTexture(e._texture)),a.roundPixels=this._renderer._roundPixels|e._roundPixels,n.addToBatch(a,t)}else n.break(t),r.shader||=new zl,this.updateRenderable(e),t.add(e)}execute(e){let t=this._renderer,{shader:n}=this._getTilingSpriteData(e);n.groups[0]=t.globalUniforms.bindGroup;let r=n.resources.localUniforms.uniforms;r.uTransformMatrix=e.groupTransform,r.uRound=t._roundPixels|e._roundPixels,oi(e.groupColorAlpha,r.uColor,0),this._state.blendMode=hi(e.groupBlendMode,e.texture._source),t.encoder.draw({geometry:Wl,shader:n,state:this._state})}updateRenderable(e){let t=this._getTilingSpriteData(e),{canBatch:n}=t;if(n){let{batchableMesh:n}=t;e.didViewUpdate&&this._updateBatchableMesh(e),n._batcher.updateElement(n)}else if(e.didViewUpdate){let{shader:n}=t;n.updateUniforms(e.width,e.height,e._tileTransform.matrix,e.anchor.x,e.anchor.y,e.texture)}}_getTilingSpriteData(e){return e._gpuData[this._renderer.uid]||this._initTilingSpriteData(e)}_initTilingSpriteData(e){let t=new Gl;return t.renderable=e,e._gpuData[this._renderer.uid]=t,this._managedTilingSprites.add(e),t}_updateBatchableMesh(e){let{geometry:t}=this._getTilingSpriteData(e),n=e.texture.source.style;n.addressMode!==`repeat`&&(n.addressMode=`repeat`,n.update()),Ul(e,t.uvs),Vl(e,t.positions)}destroy(){this._managedTilingSprites.destroy(),this._renderer=null}_updateCanBatch(e){let t=this._getTilingSpriteData(e),n=e.texture,r=!0;return this._renderer.type===P.WEBGL&&(r=this._renderer.context.supports.nonPowOf2wrapping),t.canBatch=n.textureMatrix.isSimple&&(r||n.source.isPowerOfTwo),t.canBatch}};Kl.extension={type:[W.WebGLPipes,W.WebGPUPipes],name:`tilingSprite`},F.add(Pl),F.add(Kl);var ql=class e extends tt{constructor(...t){let r=t[0]||{};r instanceof h&&(r={texture:r}),t.length>1&&(y(n,`use new TilingSprite({ texture, width:100, height:100 }) instead`),r.width=t[1],r.height=t[2]),r={...e.defaultOptions,...r};let{texture:i,anchor:a,tilePosition:o,tileScale:s,tileRotation:c,width:l,height:u,applyAnchorToTexture:d,roundPixels:f,...p}=r??{};super({label:`TilingSprite`,...p}),this.renderPipeId=`tilingSprite`,this.batched=!0,this.allowChildren=!1,this._anchor=new ke({_onUpdate:()=>{this.onViewUpdate()}}),this.applyAnchorToTexture=d,this.texture=i,this._width=l??i.width,this._height=u??i.height,this._tileTransform=new Al({observer:{_onUpdate:()=>this.onViewUpdate()}}),a&&(this.anchor=a),this.tilePosition=o,this.tileScale=s,this.tileRotation=c,this.roundPixels=f??!1}static from(t,n={}){return typeof t==`string`?new e({texture:G.get(t),...n}):new e({texture:t,...n})}get uvRespectAnchor(){return y(n,`uvRespectAnchor is deprecated, please use applyAnchorToTexture instead`),this.applyAnchorToTexture}set uvRespectAnchor(e){y(n,`uvRespectAnchor is deprecated, please use applyAnchorToTexture instead`),this.applyAnchorToTexture=e}get clampMargin(){return this._texture.textureMatrix.clampMargin}set clampMargin(e){this._texture.textureMatrix.clampMargin=e}get anchor(){return this._anchor}set anchor(e){typeof e==`number`?this._anchor.set(e):this._anchor.copyFrom(e)}get tilePosition(){return this._tileTransform.position}set tilePosition(e){this._tileTransform.position.copyFrom(e)}get tileScale(){return this._tileTransform.scale}set tileScale(e){typeof e==`number`?this._tileTransform.scale.set(e):this._tileTransform.scale.copyFrom(e)}set tileRotation(e){this._tileTransform.rotation=e}get tileRotation(){return this._tileTransform.rotation}get tileTransform(){return this._tileTransform}set texture(e){e||=h.EMPTY;let t=this._texture;t!==e&&(t&&t.dynamic&&t.off(`update`,this.onViewUpdate,this),e.dynamic&&e.on(`update`,this.onViewUpdate,this),this._texture=e,this.onViewUpdate())}get texture(){return this._texture}set width(e){this._width=e,this.onViewUpdate()}get width(){return this._width}set height(e){this._height=e,this.onViewUpdate()}get height(){return this._height}setSize(e,t){typeof e==`object`&&(t=e.height??e.width,e=e.width),this._width=e,this._height=t??e,this.onViewUpdate()}getSize(e){return e||={},e.width=this._width,e.height=this._height,e}updateBounds(){let e=this._bounds,t=this._anchor,n=this._width,r=this._height;e.minX=-t._x*n,e.maxX=e.minX+n,e.minY=-t._y*r,e.maxY=e.minY+r}containsPoint(e){let t=this._width,n=this._height,r=-t*this._anchor._x,i=0;return e.x>=r&&e.x<=r+t&&(i=-n*this._anchor._y,e.y>=i&&e.y<=i+n)}destroy(e=!1){if(super.destroy(e),this._anchor=null,this._tileTransform=null,this._bounds=null,typeof e==`boolean`?e:e?.texture){let t=typeof e==`boolean`?e:e?.textureSource;this._texture.destroy(t)}this._texture=null}};ql.defaultOptions={texture:h.EMPTY,anchor:{x:0,y:0},tilePosition:{x:0,y:0},tileScale:{x:1,y:1},tileRotation:0,applyAnchorToTexture:!1};var Jl=ql,Yl=class extends tt{constructor(e,t){let{text:n,resolution:r,style:i,anchor:a,width:o,height:s,roundPixels:c,...l}=e;super({...l}),this.batched=!0,this._resolution=null,this._autoResolution=!0,this._didTextUpdate=!0,this._styleClass=t,this.text=n??``,this.style=i,this.resolution=r??null,this.allowChildren=!1,this._anchor=new ke({_onUpdate:()=>{this.onViewUpdate()}}),a&&(this.anchor=a),this.roundPixels=c??!1,o!==void 0&&(this.width=o),s!==void 0&&(this.height=s)}get anchor(){return this._anchor}set anchor(e){typeof e==`number`?this._anchor.set(e):this._anchor.copyFrom(e)}set text(e){e=e.toString(),this._text!==e&&(this._text=e,this.onViewUpdate())}get text(){return this._text}set resolution(e){this._autoResolution=e===null,this._resolution=e,this.onViewUpdate()}get resolution(){return this._resolution}get style(){return this._style}set style(e){e||={},this._style?.off(`update`,this.onViewUpdate,this),e instanceof this._styleClass?this._style=e:this._style=new this._styleClass(e),this._style.on(`update`,this.onViewUpdate,this),this.onViewUpdate()}get width(){return Math.abs(this.scale.x)*this.bounds.width}set width(e){this._setWidth(e,this.bounds.width)}get height(){return Math.abs(this.scale.y)*this.bounds.height}set height(e){this._setHeight(e,this.bounds.height)}getSize(e){return e||={},e.width=Math.abs(this.scale.x)*this.bounds.width,e.height=Math.abs(this.scale.y)*this.bounds.height,e}setSize(e,t){typeof e==`object`?(t=e.height??e.width,e=e.width):t??=e,e!==void 0&&this._setWidth(e,this.bounds.width),t!==void 0&&this._setHeight(t,this.bounds.height)}containsPoint(e){let t=this.bounds.width,n=this.bounds.height,r=-t*this.anchor.x,i=0;return e.x>=r&&e.x<=r+t&&(i=-n*this.anchor.y,e.y>=i&&e.y<=i+n)}onViewUpdate(){this.didViewUpdate||(this._didTextUpdate=!0),super.onViewUpdate()}destroy(e=!1){super.destroy(e),this.owner=null,this._bounds=null,this._anchor=null,(typeof e==`boolean`?e:e?.style)&&this._style.destroy(e),this._style=null,this._text=null}get styleKey(){return`${this._text}:${this._style.styleKey}:${this._resolution}`}};function Xl(e,t){let r=e[0]??{};return(typeof r==`string`||e[1])&&(y(n,`use new ${t}({ text: "hi!", style }) instead`),r={text:r,style:e[1]}),r}var Zl=null,Ql=null;function $l(e,t){Zl||(Zl=r.get().createCanvas(256,128),Ql=Zl.getContext(`2d`,{willReadFrequently:!0}),Ql.globalCompositeOperation=`copy`,Ql.globalAlpha=1),(Zl.width<e||Zl.height<t)&&(Zl.width=u(e),Zl.height=u(t))}function eu(e,t,n){for(let r=0,i=4*n*t;r<t;++r,i+=4)if(e[i+3]!==0)return!1;return!0}function tu(e,t,n,r,i){let a=4*t;for(let t=r,o=r*a+4*n;t<=i;++t,o+=a)if(e[o+3]!==0)return!1;return!0}function nu(...e){let t=e[0];t.canvas||(t={canvas:e[0],resolution:e[1]});let{canvas:n}=t,r=Math.min(t.resolution??1,1),i=t.width??n.width,a=t.height??n.height,o=t.output;if($l(i,a),!Ql)throw TypeError(`Failed to get canvas 2D context`);Ql.drawImage(n,0,0,i,a,0,0,i*r,a*r);let s=Ql.getImageData(0,0,i,a).data,c=0,l=0,u=i-1,d=a-1;for(;l<a&&eu(s,i,l);)++l;if(l===a)return p.EMPTY;for(;eu(s,i,d);)--d;for(;tu(s,i,c,l,d);)++c;for(;tu(s,i,u,l,d);)--u;return++u,++d,Ql.globalCompositeOperation=`source-over`,Ql.strokeRect(c,l,u-c,d-l),Ql.globalCompositeOperation=`copy`,o??=new p,o.set(c/r,l/r,(u-c)/r,(d-l)/r),o}var ru=class{constructor(e=0,t=0,n=!1){this.first=null,this.items=Object.create(null),this.last=null,this.max=e,this.resetTtl=n,this.size=0,this.ttl=t}clear(){return this.first=null,this.items=Object.create(null),this.last=null,this.size=0,this}delete(e){if(this.has(e)){let t=this.items[e];delete this.items[e],this.size--,t.prev!==null&&(t.prev.next=t.next),t.next!==null&&(t.next.prev=t.prev),this.first===t&&(this.first=t.next),this.last===t&&(this.last=t.prev)}return this}entries(e=this.keys()){let t=Array(e.length);for(let n=0;n<e.length;n++){let r=e[n];t[n]=[r,this.get(r)]}return t}evict(e=!1){if(e||this.size>0){let e=this.first;delete this.items[e.key],--this.size===0?(this.first=null,this.last=null):(this.first=e.next,this.first.prev=null)}return this}expiresAt(e){let t;return this.has(e)&&(t=this.items[e].expiry),t}get(e){let t=this.items[e];if(t!==void 0){if(this.ttl>0&&t.expiry<=Date.now()){this.delete(e);return}return this.moveToEnd(t),t.value}}has(e){return e in this.items}moveToEnd(e){this.last!==e&&(e.prev!==null&&(e.prev.next=e.next),e.next!==null&&(e.next.prev=e.prev),this.first===e&&(this.first=e.next),e.prev=this.last,e.next=null,this.last!==null&&(this.last.next=e),this.last=e,this.first===null&&(this.first=e))}keys(){let e=Array(this.size),t=this.first,n=0;for(;t!==null;)e[n++]=t.key,t=t.next;return e}setWithEvicted(e,t,n=this.resetTtl){let r=null;if(this.has(e))this.set(e,t,!0,n);else{this.max>0&&this.size===this.max&&(r={...this.first},this.evict(!0));let n=this.items[e]={expiry:this.ttl>0?Date.now()+this.ttl:this.ttl,key:e,prev:this.last,next:null,value:t};++this.size===1?this.first=n:this.last.next=n,this.last=n}return r}set(e,t,n=!1,r=this.resetTtl){let i=this.items[e];return n||i!==void 0?(i.value=t,n===!1&&r&&(i.expiry=this.ttl>0?Date.now()+this.ttl:this.ttl),this.moveToEnd(i)):(this.max>0&&this.size===this.max&&this.evict(!0),i=this.items[e]={expiry:this.ttl>0?Date.now()+this.ttl:this.ttl,key:e,prev:this.last,next:null,value:t},++this.size===1?this.first=i:this.last.next=i,this.last=i),this}values(e=this.keys()){let t=Array(e.length);for(let n=0;n<e.length;n++)t[n]=this.get(e[n]);return t}};function iu(e=1e3,t=0,n=!1){if(isNaN(e)||e<0)throw TypeError(`Invalid max value`);if(isNaN(t)||t<0)throw TypeError(`Invalid ttl value`);if(typeof n!=`boolean`)throw TypeError(`Invalid resetTtl value`);return new ru(e,t,n)}function au(e){return!!e.tagStyles&&Object.keys(e.tagStyles).length>0}function ou(e){return e.includes(`<`)}function su(e,t){return e.clone().assign(t)}function cu(e,t){let n=[],r=t.tagStyles;if(!au(t)||!ou(e))return n.push({text:e,style:t}),n;let i=[t],a=[],o=``,s=0;for(;s<e.length;){let t=e[s];if(t===`<`){let c=e.indexOf(`>`,s);if(c===-1){o+=t,s++;continue}let l=e.indexOf(`<`,s+1);if(l!==-1&&l<c){o+=t,s++;continue}let u=e.slice(s+1,c);if(u.startsWith(`/`)){let t=u.slice(1).trim();if(a.length>0&&a[a.length-1]===t){o.length>0&&(n.push({text:o,style:i[i.length-1]}),o=``),i.pop(),a.pop(),s=c+1;continue}else{o+=e.slice(s,c+1),s=c+1;continue}}else{let t=u.trim();if(r[t]){o.length>0&&(n.push({text:o,style:i[i.length-1]}),o=``);let e=i[i.length-1],l=su(e,r[t]);i.push(l),a.push(t),s=c+1;continue}else{o+=e.slice(s,c+1),s=c+1;continue}}}else o+=t,s++}return o.length>0&&n.push({text:o,style:i[i.length-1]}),n}function lu(e,t){return!au(t)||!ou(e)?e:cu(e,t).map(e=>e.text).join(``)}var uu=[10,13],du=new Set(uu),fu=[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288],pu=new Set(fu),mu=[9,32],hu=new Set(mu),gu=[45,8208,8211,8212,173],_u=new Set(gu),vu=/(\r\n|\r|\n)/,yu=/(?:\r\n|\r|\n)/;function bu(e){return typeof e==`string`?du.has(e.charCodeAt(0)):!1}function xu(e,t){return typeof e==`string`?pu.has(e.charCodeAt(0)):!1}function Su(e){return typeof e==`string`?hu.has(e.charCodeAt(0)):!1}function Cu(e){return typeof e==`string`?_u.has(e.charCodeAt(0)):!1}function wu(e){return e===`normal`||e===`pre-line`}function Tu(e){return e===`normal`}function Eu(e){if(typeof e!=`string`)return``;let t=e.length-1;for(;t>=0&&xu(e[t]);)t--;return t<e.length-1?e.slice(0,t+1):e}function Du(e){let t=[],n=[];if(typeof e!=`string`)return t;for(let r=0;r<e.length;r++){let i=e[r],a=e[r+1];if(xu(i,a)||bu(i)){n.length>0&&(t.push(n.join(``)),n.length=0),i===`\r`&&a===`
|
|
2175
|
+
`?(t.push(`\r
|
|
2176
|
+
`),r++):t.push(i);continue}n.push(i),Cu(i)&&a&&!xu(a)&&!bu(a)&&(t.push(n.join(``)),n.length=0)}return n.length>0&&t.push(n.join(``)),t}function Ou(e,t,n,r){let i=n(e),a=[];for(let n=0;n<i.length;n++){let o=i[n],s=o,c=1;for(;i[n+c];){let a=i[n+c];if(!r(s,a,e,n,t))o+=a,s=a,c++;else break}n+=c-1,a.push(o)}return a}var ku=/\r\n|\r|\n/g;function Au(e,t,n,r,i,a,o,s,c){let l=cu(e,t);if(Tu(t.whiteSpace))for(let e=0;e<l.length;e++){let t=l[e];l[e]={text:t.text.replace(ku,` `),style:t.style}}let u=[],d=[];for(let e of l){let t=e.text.split(vu);for(let n=0;n<t.length;n++){let r=t[n];r===`\r
|
|
2177
|
+
`||r===`\r`||r===`
|
|
2178
|
+
`?(u.push(d),d=[]):r.length>0&&d.push({text:r,style:e.style})}}(d.length>0||u.length===0)&&u.push(d);let f=n?ju(u,t,r,a,s,c):u,p=[],m=[],h=[],g=[],_=[],v=0,y=t._fontString,b=o(y);b.fontSize===0&&(b.fontSize=t.fontSize,b.ascent=t.fontSize);let x=``,S=!!t.dropShadow,C=t._stroke?.width||0;for(let e of f){let n=0,a=b.ascent,s=b.descent,c=``;for(let t of e){let e=t.style._fontString,l=o(e);e!==x&&(r.font=e,x=e);let u=i(t.text,t.style.letterSpacing,r);n+=u,a=Math.max(a,l.ascent),s=Math.max(s,l.descent),c+=t.text;let d=t.style._stroke?.width||0;d>C&&(C=d),!S&&t.style.dropShadow&&(S=!0)}e.length===0&&(a=b.ascent,s=b.descent),p.push(n),m.push(a),h.push(s),_.push(c);let l=t.lineHeight||a+s;g.push(l+t.leading),v=Math.max(v,n)}let w=C,T=v+w+(t.dropShadow?t.dropShadow.distance:0),E=0;for(let e=0;e<g.length;e++)E+=g[e];return E=Math.max(E,g[0]+w),{width:T,height:E+(t.dropShadow?t.dropShadow.distance:0),lines:_,lineWidths:p,lineHeight:(t.lineHeight||b.fontSize)+t.leading,maxLineWidth:v,fontProperties:b,runsByLine:f,lineAscents:m,lineDescents:h,lineHeights:g,hasDropShadow:S}}function ju(e,t,n,r,i,a){let{letterSpacing:o,whiteSpace:s,wordWrapWidth:c,breakWords:l}=t,u=wu(s),d=c+o,f={},p=``,m=(e,t)=>{let i=`${e}|${t.styleKey}`,a=f[i];if(a===void 0){let o=t._fontString;o!==p&&(n.font=o,p=o),a=r(e,t.letterSpacing,n)+t.letterSpacing,f[i]=a}return a},h=[];for(let t of e){let e=Mu(t),n=h.length,r=t=>{let n=0,r=t;do{let{token:t,style:i}=e[r];n+=m(t,i),r++}while(r<e.length&&e[r].continuesFromPrevious);return n},o=t=>{let n=[],r=t;do n.push({token:e[r].token,style:e[r].style}),r++;while(r<e.length&&e[r].continuesFromPrevious);return n},s=[],c=0,f=!u,p=null,g=()=>{p&&p.text.length>0&&s.push(p),p=null},_=()=>{if(g(),s.length>0){let e=s[s.length-1];e.text=Eu(e.text),e.text.length===0&&s.pop()}h.push(s),s=[],c=0,f=!1};for(let t=0;t<e.length;t++){let{token:n,style:v,continuesFromPrevious:y}=e[t],b=m(n,v);if(u){let e=xu(n),t=p?.text[p.text.length-1]??s[s.length-1]?.text.slice(-1)??``,r=t?xu(t):!1;if(e&&r)continue}let x=!y,S=x?r(t):b;if(S>d&&x)if(c>0&&_(),l){let e=o(t);for(let t=0;t<e.length;t++){let n=e[t].token,r=e[t].style,o=Ou(n,l,a,i);for(let e of o){let t=m(e,r);t+c>d&&_(),!p||p.style!==r?(g(),p={text:e,style:r}):p.text+=e,c+=t}}t+=e.length-1}else{let e=o(t);g(),h.push(e.map(e=>({text:e.token,style:e.style}))),f=!1,t+=e.length-1}else if(S+c>d&&x){if(xu(n)){f=!1;continue}_(),p={text:n,style:v},c=b}else if(y&&!l)!p||p.style!==v?(g(),p={text:n,style:v}):p.text+=n,c+=b;else{let e=xu(n);if(c===0&&e&&!f)continue;!p||p.style!==v?(g(),p={text:n,style:v}):p.text+=n,c+=b}}if(g(),s.length>0){let e=s[s.length-1];e.text=Eu(e.text),e.text.length===0&&s.pop()}(s.length>0||h.length===n)&&h.push(s)}return h}function Mu(e){let t=[],n=!1;for(let r of e){let e=Du(r.text),i=!0;for(let a of e){let e=xu(a)||bu(a),o=i&&n&&!e;t.push({token:a,style:r.style,continuesFromPrevious:o}),n=!e,i=!1}}return t}var Nu={willReadFrequently:!0};function Pu(e,t,n,r,i){let a=n[e];return typeof a!=`number`&&(a=i(e,t,r)+t,n[e]=a),a}function Fu(e,t,n,r,i,a,o){let s=n.getContext(`2d`,Nu);s.font=t._fontString;let c=0,l=``,u=[],d=Object.create(null),{letterSpacing:f,whiteSpace:p}=t,m=wu(p),h=Tu(p),g=!m,_=t.wordWrapWidth+f,v=Du(e);for(let e=0;e<v.length;e++){let n=v[e];if(bu(n)){if(!h){u.push(Eu(l)),g=!m,l=``,c=0;continue}n=` `}if(m){let e=xu(n),t=xu(l[l.length-1]);if(e&&t)continue}let p=Pu(n,f,d,s,r);if(p>_)if(l!==``&&(u.push(Eu(l)),l=``,c=0),i(n,t.breakWords)){let e=Ou(n,t.breakWords,o,a);for(let t of e){let e=Pu(t,f,d,s,r);e+c>_&&(u.push(Eu(l)),g=!1,l=``,c=0),l+=t,c+=e}}else l.length>0&&(u.push(Eu(l)),l=``,c=0),u.push(Eu(n)),g=!1,l=``,c=0;else p+c>_&&(g=!1,u.push(Eu(l)),l=``,c=0),(l.length>0||!xu(n)||g)&&(l+=n,c+=p)}let y=Eu(l);return y.length>0&&u.push(y),u.join(`
|
|
2179
|
+
`)}var Iu={willReadFrequently:!0},Lu=class e{static get experimentalLetterSpacingSupported(){let t=e._experimentalLetterSpacingSupported;if(t===void 0){let n=r.get().getCanvasRenderingContext2D().prototype;t=e._experimentalLetterSpacingSupported=`letterSpacing`in n||`textLetterSpacing`in n}return t}constructor(e,t,n,r,i,a,o,s,c,l){this.text=e,this.style=t,this.width=n,this.height=r,this.lines=i,this.lineWidths=a,this.lineHeight=o,this.maxLineWidth=s,this.fontProperties=c,l&&(this.runsByLine=l.runsByLine,this.lineAscents=l.lineAscents,this.lineDescents=l.lineDescents,this.lineHeights=l.lineHeights,this.hasDropShadow=l.hasDropShadow)}static measureText(t=` `,n,r=e._canvas,i=n.wordWrap){let a=`${t}-${n.styleKey}-wordWrap-${i}`;if(e._measurementCache.has(a))return e._measurementCache.get(a);if(au(n)&&ou(t)){let r=Au(t,n,i,e._context,e._measureText,e._measureTextAdvance,e.measureFont,e.canBreakChars,e.wordWrapSplit),o=new e(t,n,r.width,r.height,r.lines,r.lineWidths,r.lineHeight,r.maxLineWidth,r.fontProperties,{runsByLine:r.runsByLine,lineAscents:r.lineAscents,lineDescents:r.lineDescents,lineHeights:r.lineHeights,hasDropShadow:r.hasDropShadow});return e._measurementCache.set(a,o),o}let o=n._fontString,s=e.measureFont(o);s.fontSize===0&&(s.fontSize=n.fontSize,s.ascent=n.fontSize,s.descent=0);let c=e._context;c.font=o;let l=(i?e._wordWrap(t,n,r):t).split(yu),u=Array(l.length),d=0;for(let t=0;t<l.length;t++){let r=e._measureText(l[t],n.letterSpacing,c);u[t]=r,d=Math.max(d,r)}let f=n._stroke?.width??0,p=n.lineHeight||s.fontSize,m=e._adjustWidthForStyle(d,n),h=Math.max(p,s.fontSize+f)+(l.length-1)*(p+n.leading),g=new e(t,n,m,e._adjustHeightForStyle(h,n),l,u,p+n.leading,d,s);return e._measurementCache.set(a,g),g}static _adjustWidthForStyle(e,t){let n=e+(t._stroke?.width||0);return t.dropShadow&&(n+=t.dropShadow.distance),n}static _adjustHeightForStyle(e,t){let n=e;return t.dropShadow&&(n+=t.dropShadow.distance),n}static _measureText(t,n,r){let{metricWidth:i,metrics:a,letterSpacingVal:o}=e._measureTextCore(t,n,r),s=-(a.actualBoundingBoxLeft??0),c=(a.actualBoundingBoxRight??0)-s;return a.width>0&&(c+=o),Math.max(i,c)}static _measureTextAdvance(t,n,r){return e._measureTextCore(t,n,r).metricWidth}static _measureTextCore(t,n,r){let i=!1;e.experimentalLetterSpacingSupported&&(e.experimentalLetterSpacing?(r.letterSpacing=`${n}px`,r.textLetterSpacing=`${n}px`,i=!0):(r.letterSpacing=`0px`,r.textLetterSpacing=`0px`));let a=r.measureText(t),o=a.width,s=0;return o>0&&(s=i?-n:(e.graphemeSegmenter(t).length-1)*n,o+=s),{metricWidth:o,metrics:a,letterSpacingVal:s}}static _wordWrap(t,n,r=e._canvas){return Fu(t,n,r,e._measureTextAdvance,e.canBreakWords,e.canBreakChars,e.wordWrapSplit)}static isBreakingSpace(e,t){return xu(e,t)}static canBreakWords(e,t){return t}static canBreakChars(e,t,n,r,i){return!0}static wordWrapSplit(t){return e.graphemeSegmenter(t)}static measureFont(t){if(e._fonts[t])return e._fonts[t];let n=e._context;n.font=t;let r=n.measureText(e.METRICS_STRING+e.BASELINE_SYMBOL),i=r.actualBoundingBoxAscent??0,a=r.actualBoundingBoxDescent??0,o={ascent:i,descent:a,fontSize:i+a};return e._fonts[t]=o,o}static clearMetrics(t=``){t?delete e._fonts[t]:e._fonts={}}static get _canvas(){if(!e.__canvas){let t;try{let n=new OffscreenCanvas(0,0);if(n.getContext(`2d`,Iu)?.measureText)return e.__canvas=n,n;t=r.get().createCanvas()}catch{t=r.get().createCanvas()}t.width=t.height=10,e.__canvas=t}return e.__canvas}static get _context(){return e.__context||=e._canvas.getContext(`2d`,Iu),e.__context}};Lu.METRICS_STRING=`|ÉqÅ`,Lu.BASELINE_SYMBOL=`M`,Lu.BASELINE_MULTIPLIER=1.4,Lu.HEIGHT_MULTIPLIER=2,Lu.graphemeSegmenter=(()=>{if(typeof Intl?.Segmenter==`function`){let e=new Intl.Segmenter;return t=>{let n=e.segment(t),r=[],i=0;for(let e of n)r[i++]=e.segment;return r}}return e=>[...e]})(),Lu.experimentalLetterSpacing=!1,Lu._fonts={},Lu._measurementCache=iu(1e3);var X=Lu,Ru=[`serif`,`sans-serif`,`monospace`,`cursive`,`fantasy`,`system-ui`];function zu(e){let t=typeof e.fontSize==`number`?`${e.fontSize}px`:e.fontSize,n=e.fontFamily;Array.isArray(e.fontFamily)||(n=e.fontFamily.split(`,`));for(let e=n.length-1;e>=0;e--){let t=n[e].trim();!/([\"\'])[^\'\"]+\1/.test(t)&&!Ru.includes(t)&&(t=`"${t}"`),n[e]=t}return`${e.fontStyle} ${e.fontVariant} ${e.fontWeight} ${t} ${n.join(`,`)}`}var Bu=1e5;function Vu(e,t,n,r=0,i=0,a=0){if(e.texture===h.WHITE&&!e.fill)return N.shared.setValue(e.color).setAlpha(e.alpha??1).toHexa();if(!e.fill){let n=t.createPattern(e.texture.source.resource,`repeat`),r=e.matrix.copyTo(U.shared);return r.scale(e.texture.source.pixelWidth,e.texture.source.pixelHeight),n.setTransform(r),n}else if(e.fill instanceof Fn){let n=e.fill,r=t.createPattern(n.texture.source.resource,`repeat`),i=n.transform.copyTo(U.shared);return i.scale(n.texture.source.pixelWidth,n.texture.source.pixelHeight),r.setTransform(i),r}else if(e.fill instanceof bn){let o=e.fill,s=o.type===`linear`,c=o.textureSpace===`local`,l=1,u=1;c&&n&&(l=n.width+r,u=n.height+r);let d,f=!1;if(s){let{start:e,end:n}=o;d=t.createLinearGradient(e.x*l+i,e.y*u+a,n.x*l+i,n.y*u+a),f=Math.abs(n.x-e.x)<Math.abs((n.y-e.y)*.1)}else{let{center:e,innerRadius:n,outerCenter:r,outerRadius:s}=o;d=t.createRadialGradient(e.x*l+i,e.y*u+a,n*l,r.x*l+i,r.y*u+a,s*l)}if(f&&c&&n){let e=n.lineHeight/u;for(let t=0;t<n.lines.length;t++){let i=(t*n.lineHeight+r/2)/u;o.colorStops.forEach(t=>{let n=i+t.offset*e;n=Math.max(0,Math.min(1,n)),d.addColorStop(Math.floor(n*Bu)/Bu,N.shared.setValue(t.color).toHex())})}}else o.colorStops.forEach(e=>{d.addColorStop(e.offset,N.shared.setValue(e.color).toHex())});return d}return D(`FillStyle not recognised`,e),`red`}var Hu=new p;function Uu(e){let t=0;for(let n=0;n<e.length;n++)e.charCodeAt(n)===32&&t++;return t}var Wu=new class{getCanvasAndContext(e){let{text:t,style:n,resolution:r=1}=e,i=n._getFinalPadding(),a=X.measureText(t||` `,n),o=Math.ceil(Math.ceil(Math.max(1,a.width)+i*2)*r),s=Math.ceil(Math.ceil(Math.max(1,a.height)+i*2)*r),c=on.getOptimalCanvasAndContext(o,s);return this._renderTextToCanvas(n,i,r,c,a),{canvasAndContext:c,frame:n.trim?nu({canvas:c.canvas,width:o,height:s,resolution:1,output:Hu}):Hu.set(0,0,o,s)}}returnCanvasAndContext(e){on.returnCanvasAndContext(e)}_renderTextToCanvas(e,t,n,r,i){if(i.runsByLine&&i.runsByLine.length>0){this._renderTaggedTextToCanvas(i,e,t,n,r);return}let{canvas:a,context:o}=r,s=zu(e),c=i.lines,l=i.lineHeight,u=i.lineWidths,d=i.maxLineWidth,f=i.fontProperties,p=a.height;if(o.resetTransform(),o.scale(n,n),o.textBaseline=e.textBaseline,e._stroke?.width){let t=e._stroke;o.lineWidth=t.width,o.miterLimit=t.miterLimit,o.lineJoin=t.join,o.lineCap=t.cap}o.font=s;let m,h,g=e.dropShadow?2:1,_=(e._stroke?.width??0)/2,v=(l-f.fontSize)/2;l-f.fontSize<0&&(v=0);for(let a=0;a<g;++a){let s=e.dropShadow&&a===0,g=s?Math.ceil(Math.max(1,p)+t*2):0,y=g*n;if(s)this._setupDropShadow(o,e,n,y);else{let n=e._gradientBounds,r=e._gradientOffset;if(n){let a={width:n.width,height:n.height,lineHeight:n.height,lines:i.lines};this._setFillAndStrokeStyles(o,e,a,t,_,r?.x??0,r?.y??0)}else r?this._setFillAndStrokeStyles(o,e,i,t,_,r.x,r.y):this._setFillAndStrokeStyles(o,e,i,t,_);o.shadowColor=`rgba(0,0,0,0)`}for(let n=0;n<c.length;n++){m=_,h=_+n*l+f.ascent+v,m+=this._getAlignmentOffset(u[n],d,e.align);let i=0;if(e.align===`justify`&&e.wordWrap&&n<c.length-1){let e=Uu(c[n]);e>0&&(i=(d-u[n])/e)}e._stroke?.width&&this._drawLetterSpacing(c[n],e,r,m+t,h+t-g,!0,i),e._fill!==void 0&&this._drawLetterSpacing(c[n],e,r,m+t,h+t-g,!1,i)}}}_renderTaggedTextToCanvas(e,t,n,r,i){let{canvas:a,context:o}=i,{runsByLine:s,lineWidths:c,maxLineWidth:l,lineAscents:u,lineHeights:d,hasDropShadow:f}=e,p=a.height;o.resetTransform(),o.scale(r,r),o.textBaseline=t.textBaseline;let m=f?2:1,h=t._stroke?.width??0;for(let e of s)for(let t of e){let e=t.style._stroke?.width??0;e>h&&(h=e)}let g=h/2,_=[];for(let e=0;e<s.length;e++){let t=s[e],n=[];for(let e of t){let t=zu(e.style);o.font=t,n.push({width:X._measureText(e.text,e.style.letterSpacing,o),font:t})}_.push(n)}for(let e=0;e<m;++e){let a=f&&e===0,m=a?Math.ceil(Math.max(1,p)+n*2):0,h=m*r;a||(o.shadowColor=`rgba(0,0,0,0)`);let v=g;for(let e=0;e<s.length;e++){let f=s[e],p=c[e],y=u[e],b=d[e],x=_[e],S=g;S+=this._getAlignmentOffset(p,l,t.align);let C=0;if(t.align===`justify`&&t.wordWrap&&e<s.length-1){let e=0;for(let t of f)e+=Uu(t.text);e>0&&(C=(l-p)/e)}let w=v+y,T=S+n;for(let e=0;e<f.length;e++){let t=f[e],{width:s,font:c}=x[e];if(o.font=c,o.textBaseline=t.style.textBaseline,t.style._stroke?.width){let e=t.style._stroke;if(o.lineWidth=e.width,o.miterLimit=e.miterLimit,o.lineJoin=e.join,o.lineCap=e.cap,a)if(t.style.dropShadow)this._setupDropShadow(o,t.style,r,h);else{let e=Uu(t.text);T+=s+e*C;continue}else{let r=X.measureFont(c),i=t.style.lineHeight||r.fontSize;o.strokeStyle=Vu(e,o,{width:s,height:i,lineHeight:i,lines:[t.text]},n*2,T-n,v)}this._drawLetterSpacing(t.text,t.style,i,T,w+n-m,!0,C)}let l=Uu(t.text);T+=s+l*C}T=S+n;for(let e=0;e<f.length;e++){let t=f[e],{width:s,font:c}=x[e];if(o.font=c,o.textBaseline=t.style.textBaseline,t.style._fill!==void 0){if(a)if(t.style.dropShadow)this._setupDropShadow(o,t.style,r,h);else{let e=Uu(t.text);T+=s+e*C;continue}else{let e=X.measureFont(c),r=t.style.lineHeight||e.fontSize,i={width:s,height:r,lineHeight:r,lines:[t.text]};o.fillStyle=Vu(t.style._fill,o,i,n*2,T-n,v)}this._drawLetterSpacing(t.text,t.style,i,T,w+n-m,!1,C)}let l=Uu(t.text);T+=s+l*C}v+=b}}}_setFillAndStrokeStyles(e,t,n,r,i,a=0,o=0){if(e.fillStyle=t._fill?Vu(t._fill,e,n,r*2,a,o):null,t._stroke?.width){let s=i+r*2;e.strokeStyle=Vu(t._stroke,e,n,s,a,o)}}_setupDropShadow(e,t,n,r){e.fillStyle=`black`,e.strokeStyle=`black`;let i=t.dropShadow,a=i.color,o=i.alpha;e.shadowColor=N.shared.setValue(a).setAlpha(o).toRgbaString();let s=i.blur*n,c=i.distance*n;e.shadowBlur=s,e.shadowOffsetX=Math.cos(i.angle)*c,e.shadowOffsetY=Math.sin(i.angle)*c+r}_getAlignmentOffset(e,t,n){return n===`right`?t-e:n===`center`?(t-e)/2:0}_drawLetterSpacing(e,t,n,r,i,a=!1,o=0){let{context:s}=n,c=t.letterSpacing,l=!1;if(X.experimentalLetterSpacingSupported&&(X.experimentalLetterSpacing?(s.letterSpacing=`${c}px`,s.textLetterSpacing=`${c}px`,l=!0):(s.letterSpacing=`0px`,s.textLetterSpacing=`0px`)),(c===0||l)&&o===0){a?s.strokeText(e,r,i):s.fillText(e,r,i);return}if(o!==0&&(c===0||l)){let t=e.split(` `),n=r,c=s.measureText(` `).width;for(let e=0;e<t.length;e++)a?s.strokeText(t[e],n,i):s.fillText(t[e],n,i),n+=s.measureText(t[e]).width+c+o;return}let u=r,d=X.graphemeSegmenter(e),f=s.measureText(e).width,p=0;for(let e=0;e<d.length;++e){let t=d[e];a?s.strokeText(t,u,i):s.fillText(t,u,i);let n=``;for(let t=e+1;t<d.length;++t)n+=d[t];p=s.measureText(n).width,u+=f-p+c,t===` `&&(u+=o),f=p}}},Gu=class e extends ie{constructor(t={}){super(),this.uid=se(`textStyle`),this._tick=0,this._cachedFontString=null,qu(t),t instanceof e&&(t=t._toObject());let n={...e.defaultTextStyle,...t};for(let e in n){let t=e;this[t]=n[e]}this._tagStyles=t.tagStyles??void 0,this.update(),this._tick=0}get align(){return this._align}set align(e){this._align!==e&&(this._align=e,this.update())}get breakWords(){return this._breakWords}set breakWords(e){this._breakWords!==e&&(this._breakWords=e,this.update())}get dropShadow(){return this._dropShadow}set dropShadow(t){this._dropShadow!==t&&(typeof t==`object`&&t?this._dropShadow=this._createProxy({...e.defaultDropShadow,...t}):this._dropShadow=t?this._createProxy({...e.defaultDropShadow}):null,this.update())}get fontFamily(){return this._fontFamily}set fontFamily(e){this._fontFamily!==e&&(this._fontFamily=e,this.update())}get fontSize(){return this._fontSize}set fontSize(e){this._fontSize!==e&&(typeof e==`string`?this._fontSize=parseInt(e,10):this._fontSize=e,this.update())}get fontStyle(){return this._fontStyle}set fontStyle(e){this._fontStyle!==e&&(this._fontStyle=e.toLowerCase(),this.update())}get fontVariant(){return this._fontVariant}set fontVariant(e){this._fontVariant!==e&&(this._fontVariant=e,this.update())}get fontWeight(){return this._fontWeight}set fontWeight(e){this._fontWeight!==e&&(this._fontWeight=e,this.update())}get leading(){return this._leading}set leading(e){this._leading!==e&&(this._leading=e,this.update())}get letterSpacing(){return this._letterSpacing}set letterSpacing(e){this._letterSpacing!==e&&(this._letterSpacing=e,this.update())}get lineHeight(){return this._lineHeight}set lineHeight(e){this._lineHeight!==e&&(this._lineHeight=e,this.update())}get padding(){return this._padding}set padding(e){this._padding!==e&&(this._padding=e,this.update())}get filters(){return this._filters}set filters(e){this._filters!==e&&(this._filters=Object.freeze(e),this.update())}get trim(){return this._trim}set trim(e){this._trim!==e&&(this._trim=e,this.update())}get textBaseline(){return this._textBaseline}set textBaseline(e){this._textBaseline!==e&&(this._textBaseline=e,this.update())}get whiteSpace(){return this._whiteSpace}set whiteSpace(e){this._whiteSpace!==e&&(this._whiteSpace=e,this.update())}get wordWrap(){return this._wordWrap}set wordWrap(e){this._wordWrap!==e&&(this._wordWrap=e,this.update())}get wordWrapWidth(){return this._wordWrapWidth}set wordWrapWidth(e){this._wordWrapWidth!==e&&(this._wordWrapWidth=e,this.update())}get fill(){return this._originalFill}set fill(e){e!==this._originalFill&&(this._originalFill=e,this._isFillStyle(e)&&(this._originalFill=this._createProxy({...er.defaultFillStyle,...e},()=>{this._fill=Qn({...this._originalFill},er.defaultFillStyle)})),this._fill=Qn(e===0?`black`:e,er.defaultFillStyle),this.update())}get stroke(){return this._originalStroke}set stroke(e){e!==this._originalStroke&&(this._originalStroke=e,this._isFillStyle(e)&&(this._originalStroke=this._createProxy({...er.defaultStrokeStyle,...e},()=>{this._stroke=Un({...this._originalStroke},er.defaultStrokeStyle)})),this._stroke=Un(e,er.defaultStrokeStyle),this.update())}get tagStyles(){return this._tagStyles}set tagStyles(e){this._tagStyles!==e&&(this._tagStyles=e??void 0,this.update())}update(){this._tick++,this._cachedFontString=null,this.emit(`update`,this)}reset(){let t=e.defaultTextStyle;for(let e in t)this[e]=t[e]}assign(e){for(let t in e){let n=t;this[n]=e[t]}return this}get styleKey(){return`${this.uid}-${this._tick}`}get _fontString(){return this._cachedFontString===null&&(this._cachedFontString=zu(this)),this._cachedFontString}_toObject(){return{align:this.align,breakWords:this.breakWords,dropShadow:this._dropShadow?{...this._dropShadow}:null,fill:this._fill?{...this._fill}:void 0,fontFamily:this.fontFamily,fontSize:this.fontSize,fontStyle:this.fontStyle,fontVariant:this.fontVariant,fontWeight:this.fontWeight,leading:this.leading,letterSpacing:this.letterSpacing,lineHeight:this.lineHeight,padding:this.padding,stroke:this._stroke?{...this._stroke}:void 0,textBaseline:this.textBaseline,trim:this.trim,whiteSpace:this.whiteSpace,wordWrap:this.wordWrap,wordWrapWidth:this.wordWrapWidth,filters:this._filters?[...this._filters]:void 0,tagStyles:this._tagStyles?{...this._tagStyles}:void 0}}clone(){return new e(this._toObject())}_getFinalPadding(){let e=0;if(this._filters)for(let t=0;t<this._filters.length;t++)e+=this._filters[t].padding;return Math.max(this._padding,e)}destroy(e=!1){if(this.removeAllListeners(),typeof e==`boolean`?e:e?.texture){let t=typeof e==`boolean`?e:e?.textureSource;this._fill?.texture&&this._fill.texture.destroy(t),this._originalFill?.texture&&this._originalFill.texture.destroy(t),this._stroke?.texture&&this._stroke.texture.destroy(t),this._originalStroke?.texture&&this._originalStroke.texture.destroy(t)}this._fill=null,this._stroke=null,this.dropShadow=null,this._originalStroke=null,this._originalFill=null}_createProxy(e,t){return new Proxy(e,{set:(e,n,r)=>e[n]===r?!0:(e[n]=r,t?.(n,r),this.update(),!0)})}_isFillStyle(e){return(e??null)!==null&&!(N.isColorLike(e)||e instanceof bn||e instanceof Fn)}};Gu.defaultDropShadow={alpha:1,angle:Math.PI/6,blur:0,color:`black`,distance:5},Gu.defaultTextStyle={align:`left`,breakWords:!1,dropShadow:null,fill:`black`,fontFamily:`Arial`,fontSize:26,fontStyle:`normal`,fontVariant:`normal`,fontWeight:`normal`,leading:0,letterSpacing:0,lineHeight:0,padding:0,stroke:null,textBaseline:`alphabetic`,trim:!1,whiteSpace:`pre`,wordWrap:!1,wordWrapWidth:100};var Ku=Gu;function qu(e){let t=e;if(typeof t.dropShadow==`boolean`&&t.dropShadow){let n=Ku.defaultDropShadow;e.dropShadow={alpha:t.dropShadowAlpha??n.alpha,angle:t.dropShadowAngle??n.angle,blur:t.dropShadowBlur??n.blur,color:t.dropShadowColor??n.color,distance:t.dropShadowDistance??n.distance}}if(t.strokeThickness!==void 0){y(n,`strokeThickness is now a part of stroke`);let r=t.stroke,i={};if(N.isColorLike(r))i.color=r;else if(r instanceof bn||r instanceof Fn)i.fill=r;else if(Object.hasOwnProperty.call(r,`color`)||Object.hasOwnProperty.call(r,`fill`))i=r;else throw Error(`Invalid stroke value.`);e.stroke={...i,width:t.strokeThickness}}if(Array.isArray(t.fillGradientStops)){if(y(n,"gradient fill is now a fill pattern: `new FillGradient(...)`"),!Array.isArray(t.fill)||t.fill.length===0)throw Error(`Invalid fill value. Expected an array of colors for gradient fill.`);t.fill.length!==t.fillGradientStops.length&&D(`The number of fill colors must match the number of fill gradient stops.`);let r=new bn({start:{x:0,y:0},end:{x:0,y:1},textureSpace:`local`}),i=t.fillGradientStops.slice(),a=t.fill.map(e=>N.shared.setValue(e).toNumber());i.forEach((e,t)=>{r.addColorStop(e,a[t])}),e.fill={fill:r}}}function Ju(e,t){let{texture:n,bounds:r}=e,i=t._style._getFinalPadding();He(r,t._anchor,n);let a=t._anchor._x*i*2,o=t._anchor._y*i*2;r.minX-=i-a,r.minY-=i-o,r.maxX-=i-a,r.maxY-=i-o}var Yu=class extends Tr{},Xu=class{constructor(e){this._renderer=e,e.runners.resolutionChange.add(this),this._managedTexts=new zi({renderer:e,type:`renderable`,onUnload:this.onTextUnload.bind(this),name:`canvasText`})}resolutionChange(){for(let e in this._managedTexts.items){let t=this._managedTexts.items[e];t?._autoResolution&&t.onViewUpdate()}}validateRenderable(e){let t=this._getGpuText(e),n=e.styleKey;return t.currentKey===n?e._didTextUpdate:!0}addRenderable(e,t){let n=this._getGpuText(e);if(e._didTextUpdate){let t=e._autoResolution?this._renderer.resolution:e.resolution;(n.currentKey!==e.styleKey||e._resolution!==t)&&this._updateGpuText(e),e._didTextUpdate=!1,Ju(n,e)}this._renderer.renderPipes.batch.addToBatch(n,t)}updateRenderable(e){let t=this._getGpuText(e);t._batcher.updateElement(t)}_updateGpuText(e){let t=this._getGpuText(e);t.texture&&this._renderer.canvasText.decreaseReferenceCount(t.currentKey),e._resolution=e._autoResolution?this._renderer.resolution:e.resolution,t.texture=this._renderer.canvasText.getManagedTexture(e),t.currentKey=e.styleKey}_getGpuText(e){return e._gpuData[this._renderer.uid]||this.initGpuText(e)}initGpuText(e){let t=new Yu;return t.currentKey=`--`,t.renderable=e,t.transform=e.groupTransform,t.bounds={minX:0,maxX:1,minY:0,maxY:0},t.roundPixels=this._renderer._roundPixels|e._roundPixels,e._gpuData[this._renderer.uid]=t,this._managedTexts.add(e),t}onTextUnload(e){let t=e._gpuData[this._renderer.uid];if(!t)return;let{canvasText:n}=this._renderer;n.getReferenceCount(t.currentKey)>0?n.decreaseReferenceCount(t.currentKey):t.texture&&n.returnTexture(t.texture)}destroy(){this._managedTexts.destroy(),this._renderer=null}};Xu.extension={type:[W.WebGLPipes,W.WebGPUPipes,W.CanvasPipes],name:`text`};var Zu=class{constructor(e,t){this._activeTextures={},this._renderer=e,this._retainCanvasContext=t}getTexture(e,t,n,r){typeof e==`string`&&(y(`8.0.0`,`CanvasTextSystem.getTexture: Use object TextOptions instead of separate arguments`),e={text:e,style:n,resolution:t}),e.style instanceof Ku||(e.style=new Ku(e.style)),e.textureStyle instanceof b||(e.textureStyle=new b(e.textureStyle)),typeof e.text!=`string`&&(e.text=e.text.toString());let{text:i,style:a,textureStyle:o,autoGenerateMipmaps:s}=e,c=e.resolution??this._renderer.resolution,{frame:l,canvasAndContext:u}=Wu.getCanvasAndContext({text:i,style:a,resolution:c}),d=Ht(u.canvas,l.width,l.height,c,s);if(o&&(d.source.style=o),a.trim&&(l.pad(a.padding),d.frame.copyFrom(l),d.frame.scale(1/c),d.updateUvs()),a.filters){let e=this._applyFilters(d,a.filters);return this.returnTexture(d),Wu.returnCanvasAndContext(u),e}return this._renderer.texture.initSource(d._source),this._retainCanvasContext||Wu.returnCanvasAndContext(u),d}returnTexture(e){let t=e.source,n=t.resource;if(this._retainCanvasContext&&n?.getContext){let e=n.getContext(`2d`);e&&Wu.returnCanvasAndContext({canvas:n,context:e})}t.resource=null,t.uploadMethodId=`unknown`,t.alphaMode=`no-premultiply-alpha`,Ve.returnTexture(e,!0)}renderTextToCanvas(){y(`8.10.0`,`CanvasTextSystem.renderTextToCanvas: no longer supported, use CanvasTextSystem.getTexture instead`)}getManagedTexture(e){e._resolution=e._autoResolution?this._renderer.resolution:e.resolution;let t=e.styleKey;if(this._activeTextures[t])return this._increaseReferenceCount(t),this._activeTextures[t].texture;let n=this.getTexture({text:e.text,style:e.style,resolution:e._resolution,textureStyle:e.textureStyle,autoGenerateMipmaps:e.autoGenerateMipmaps});return this._activeTextures[t]={texture:n,usageCount:1},n}decreaseReferenceCount(e){let t=this._activeTextures[e];t&&(t.usageCount--,t.usageCount===0&&(this.returnTexture(t.texture),this._activeTextures[e]=null))}getReferenceCount(e){return this._activeTextures[e]?.usageCount??0}_increaseReferenceCount(e){this._activeTextures[e].usageCount++}_applyFilters(e,t){let n=this._renderer.renderTarget.renderTarget,r=this._renderer.filter.generateFilteredTexture({texture:e,filters:t});return this._renderer.renderTarget.bind(n,!1),r}destroy(){this._renderer=null;for(let e in this._activeTextures)this._activeTextures[e]&&this.returnTexture(this._activeTextures[e].texture);this._activeTextures=null}},Qu=class extends Zu{constructor(e){super(e,!0)}};Qu.extension={type:[W.CanvasSystem],name:`canvasText`};var $u=class extends Zu{constructor(e){super(e,!1)}};$u.extension={type:[W.WebGLSystem,W.WebGPUSystem],name:`canvasText`},F.add(Qu),F.add($u),F.add(Xu);var ed=class extends Yl{constructor(...e){let t=Xl(e,`Text`);super(t,Ku),this.renderPipeId=`text`,t.textureStyle&&(this.textureStyle=t.textureStyle instanceof b?t.textureStyle:new b(t.textureStyle)),this.autoGenerateMipmaps=t.autoGenerateMipmaps??m.defaultOptions.autoGenerateMipmaps}updateBounds(){let e=this._bounds,t=this._anchor,n=0,r=0;if(this._style.trim){let{frame:e,canvasAndContext:t}=Wu.getCanvasAndContext({text:this.text,style:this._style,resolution:1});Wu.returnCanvasAndContext(t),n=e.width,r=e.height}else{let e=X.measureText(this._text,this._style);n=e.width,r=e.height}e.minX=-t._x*n,e.maxX=e.minX+n,e.minY=-t._y*r,e.maxY=e.minY+r}},td=class extends ml{resolveQueueItem(e,t){return e instanceof ot?this.resolveContainerQueueItem(e,t):e instanceof m||e instanceof h?t.push(e.source):e instanceof er&&t.push(e),null}resolveContainerQueueItem(e,t){e instanceof Ye||e instanceof Jl||e instanceof Ol?t.push(e.texture.source):e instanceof ed?t.push(e):e instanceof Sl?t.push(e.context):e instanceof kl&&e.textures.forEach(e=>{e.source?t.push(e.source):t.push(e.texture.source)})}resolveGraphicsContextQueueItem(e){this.renderer.graphicsContext.getGpuContext(e);let{instructions:t}=e;for(let e of t)if(e.action===`texture`){let{image:t}=e.data;return t.source}else if(e.action===`fill`){let{texture:t}=e.data.style;return t.source}return null}},nd=class extends ie{constructor(){super(...arguments),this.chars=Object.create(null),this.lineHeight=0,this.fontFamily=``,this.fontMetrics={fontSize:0,ascent:0,descent:0},this.baseLineOffset=0,this.distanceField={type:`none`,range:0},this.pages=[],this.applyFillAsTint=!0,this.baseMeasurementFontSize=100,this.baseRenderedFontSize=100}get font(){return y(n,`BitmapFont.font is deprecated, please use BitmapFont.fontFamily instead.`),this.fontFamily}get pageTextures(){return y(n,`BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead.`),this.pages}get size(){return y(n,`BitmapFont.size is deprecated, please use BitmapFont.fontMetrics.fontSize instead.`),this.fontMetrics.fontSize}get distanceFieldRange(){return y(n,`BitmapFont.distanceFieldRange is deprecated, please use BitmapFont.distanceField.range instead.`),this.distanceField.range}get distanceFieldType(){return y(n,`BitmapFont.distanceFieldType is deprecated, please use BitmapFont.distanceField.type instead.`),this.distanceField.type}destroy(e=!1){this.emit(`destroy`,this),this.removeAllListeners();for(let e in this.chars)this.chars[e].texture?.destroy();this.chars=null,e&&(this.pages.forEach(e=>e.texture.destroy(!0)),this.pages=null)}},rd=class e extends nd{constructor(t){super(),this.resolution=1,this.pages=[],this._padding=0,this._measureCache=Object.create(null),this._currentChars=[],this._currentX=0,this._currentY=0,this._currentMaxCharHeight=0,this._currentPageIndex=-1,this._skipKerning=!1;let n={...e.defaultOptions,...t};this._textureSize=n.textureSize,this._mipmap=n.mipmap;let r=n.style.clone();n.overrideFill&&(r._fill.color=16777215,r._fill.alpha=1,r._fill.texture=h.WHITE,r._fill.fill=null),this.applyFillAsTint=n.overrideFill;let i=r.fontSize;r.fontSize=this.baseMeasurementFontSize;let a=zu(r);n.overrideSize?(r._stroke&&(r._stroke.width*=this.baseRenderedFontSize/i),r.dropShadow&&(r.dropShadow.blur*=this.baseRenderedFontSize/i,r.dropShadow.distance*=this.baseRenderedFontSize/i)):r.fontSize=this.baseRenderedFontSize=i,this._style=r,this._skipKerning=n.skipKerning??!1,this.resolution=n.resolution??1,this._padding=n.padding??4,n.textureStyle&&(this._textureStyle=n.textureStyle instanceof b?n.textureStyle:new b(n.textureStyle)),this.fontMetrics=X.measureFont(a),this.lineHeight=r.lineHeight||this.fontMetrics.fontSize||r.fontSize}ensureCharacters(e){let t=X.graphemeSegmenter(e).filter(e=>!this._currentChars.includes(e)).filter((e,t,n)=>n.indexOf(e)===t);if(!t.length)return;this._currentChars=[...this._currentChars,...t];let n;n=this._currentPageIndex===-1?this._nextPage():this.pages[this._currentPageIndex];let{canvas:r,context:i}=n.canvasAndContext,a=n.texture.source,o=this._style,s=this._currentX,c=this._currentY,l=this._currentMaxCharHeight,u=this.baseRenderedFontSize/this.baseMeasurementFontSize,d=(o.dropShadow?.distance??0)+(o._stroke?.width??0),f=this._padding+d,m=!1,g=r.width/this.resolution,_=r.height/this.resolution;for(let e=0;e<t.length;e++){let n=t[e],d=X.measureText(n,o,r,!1);d.lineHeight=d.height;let v=d.width*u,y=Math.ceil((o.fontStyle===`italic`?2:1)*v),b=d.height*u,x=y+f*2,S=b+f*2;if(m=!1,n!==`
|
|
2180
|
+
`&&n!==`\r`&&n!==` `&&n!==` `&&(m=!0,l=Math.ceil(Math.max(S,l))),s+x>g&&(c+=l,l=S,s=0,c+l>_)){a.update();let e=this._nextPage();r=e.canvasAndContext.canvas,i=e.canvasAndContext.context,a=e.texture.source,s=0,c=0,l=0}let C=i.measureText(n).width/u;if(this.chars[n]={id:n.codePointAt(0),xOffset:-(f/u),yOffset:-(f/u),xAdvance:C,kerning:{}},m){this._drawGlyph(i,d,s+f,c+f,u,o);let e=a.width*u,t=a.height*u,r=new p(s/e*a.width,c/t*a.height,x/e*a.width,S/t*a.height);this.chars[n].texture=new h({source:a,frame:r}),s+=Math.ceil(x)}}a.update(),this._currentX=s,this._currentY=c,this._currentMaxCharHeight=l,this._skipKerning||this._applyKerning(t,i,u)}get pageTextures(){return y(n,`BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead.`),this.pages}_applyKerning(e,t,n){let r=this._measureCache;for(let i=0;i<e.length;i++){let a=e[i];for(let e=0;e<this._currentChars.length;e++){let i=this._currentChars[e],o=r[a];o||=r[a]=t.measureText(a).width;let s=r[i];s||=r[i]=t.measureText(i).width;let c=t.measureText(a+i).width,l=c-(o+s);l&&this.chars[a]&&(this.chars[a].kerning[i]=l/n),c=t.measureText(a+i).width,l=c-(o+s),l&&this.chars[i]&&(this.chars[i].kerning[a]=l/n)}}}_nextPage(){this._currentPageIndex++;let e=this.resolution,t=on.getOptimalCanvasAndContext(this._textureSize,this._textureSize,e);this._setupContext(t.context,this._style,e);let n=e*(this.baseRenderedFontSize/this.baseMeasurementFontSize),r=new h({source:new nn({resource:t.canvas,resolution:n,alphaMode:`premultiply-alpha-on-upload`,autoGenerateMipmaps:this._mipmap})});this._textureStyle&&(r.source.style=this._textureStyle);let i={canvasAndContext:t,texture:r};return this.pages[this._currentPageIndex]=i,i}_setupContext(e,t,n){t.fontSize=this.baseRenderedFontSize,e.scale(n,n),e.font=zu(t),t.fontSize=this.baseMeasurementFontSize,e.textBaseline=t.textBaseline;let r=t._stroke,i=r?.width??0;if(r&&(e.lineWidth=i,e.lineJoin=r.join,e.miterLimit=r.miterLimit,e.strokeStyle=Vu(r,e)),t._fill&&(e.fillStyle=Vu(t._fill,e)),t.dropShadow){let r=t.dropShadow,i=N.shared.setValue(r.color).toArray(),a=r.blur*n,o=r.distance*n;e.shadowColor=`rgba(${i[0]*255},${i[1]*255},${i[2]*255},${r.alpha})`,e.shadowBlur=a,e.shadowOffsetX=Math.cos(r.angle)*o,e.shadowOffsetY=Math.sin(r.angle)*o}else e.shadowColor=`black`,e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0}_drawGlyph(e,t,n,r,i,a){let o=t.text,s=t.fontProperties,c=(a._stroke?.width??0)*i,l=n+c/2,u=r-c/2,d=s.descent*i,f=t.lineHeight*i,p=!1;a.stroke&&c&&(p=!0,e.strokeText(o,l,u+f-d));let{shadowBlur:m,shadowOffsetX:h,shadowOffsetY:g}=e;a._fill&&(p&&(e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0),e.fillText(o,l,u+f-d)),p&&(e.shadowBlur=m,e.shadowOffsetX=h,e.shadowOffsetY=g)}destroy(){super.destroy();for(let e=0;e<this.pages.length;e++){let{canvasAndContext:t,texture:n}=this.pages[e];on.returnCanvasAndContext(t),n.destroy(!0)}this.pages=null}};rd.defaultOptions={textureSize:512,style:new Ku,mipmap:!0};var id=rd;function ad(e,t,n,r){let i={width:0,height:0,offsetY:0,scale:t.fontSize/n.baseMeasurementFontSize,lines:[{width:0,charPositions:[],spaceWidth:0,spacesIndex:[],chars:[]}]};i.offsetY=n.baseLineOffset;let a=i.lines[0],o=null,s=!0,c={spaceWord:!1,width:0,start:0,index:0,positions:[],chars:[]},l=n.baseMeasurementFontSize/t.fontSize,u=t.letterSpacing*l,d=t.wordWrapWidth*l,f=t.lineHeight?t.lineHeight*l:n.lineHeight,p=t.wordWrap&&t.breakWords,m=wu(t.whiteSpace),h=Tu(t.whiteSpace);if(m||h){let t=[],n=m;for(let r=0;r<e.length;r++){let i=e[r];if(i===`\r`||i===`
|
|
2181
|
+
`)if(h)i===`\r`&&e[r+1]===`
|
|
2182
|
+
`&&r++,i=` `;else{m&&(n=!0),t.push(i);continue}if(xu(i))if(m&&Su(i)){if(n)continue;n=!0,t.push(` `)}else n=!1,t.push(i);else n=!1,t.push(i)}e=t}let g=e=>{let t=a.width;for(let n=0;n<c.index;n++){let r=e.positions[n];a.chars.push(e.chars[n]),a.charPositions.push(r+t)}a.width+=e.width,(c.index>0||!m)&&(s=!1),c.width=0,c.index=0,c.chars.length=0},_=()=>{let e=a.chars.length-1;if(r){let t=a.chars[e];for(;Su(t);)a.width-=n.chars[t].xAdvance,a.spacesIndex.pop(),t=a.chars[--e]}i.width=Math.max(i.width,a.width),a={width:0,charPositions:[],chars:[],spaceWidth:0,spacesIndex:[]},s=!0,i.lines.push(a),i.height+=f},v=e=>e-u>d;for(let r=0;r<e.length+1;r++){let i,l=r===e.length;l||(i=e[r]);let d=n.chars[i];if(/(?:\s)/.test(i)||i===`\r`||i===`
|
|
2183
|
+
`||l){if(!s&&t.wordWrap&&v(a.width+c.width)?(_(),g(c),l||a.charPositions.push(0)):(c.start=a.width,g(c),l||a.charPositions.push(0)),i===`\r`||i===`
|
|
2184
|
+
`)_();else if(!l&&d){let e=d.xAdvance+(d.kerning?.[o]||0)+u;a.width+=e,a.spaceWidth=e,a.spacesIndex.push(a.charPositions.length),a.chars.push(i)}}else if(d){let e=d.kerning?.[o]||0,n=d.xAdvance+e+u;p&&v(c.width+n)&&(s||_(),g(c),_()),c.positions[c.index++]=c.width+e,c.chars.push(i),c.width+=n,Cu(i)&&(!s&&t.wordWrap&&v(a.width+c.width)&&_(),g(c))}o=i}return _(),t.align===`center`?od(i):t.align===`right`?sd(i):t.align===`justify`&&cd(i),i}function od(e){for(let t=0;t<e.lines.length;t++){let n=e.lines[t],r=e.width/2-n.width/2;for(let e=0;e<n.charPositions.length;e++)n.charPositions[e]+=r}}function sd(e){for(let t=0;t<e.lines.length;t++){let n=e.lines[t],r=e.width-n.width;for(let e=0;e<n.charPositions.length;e++)n.charPositions[e]+=r}}function cd(e){let t=e.width;for(let n=0;n<e.lines.length-2;n++){let r=e.lines[n],i=0,a=r.spacesIndex[i++],o=0,s=r.spacesIndex.length,c=(t-r.width)/s;for(let e=0;e<r.charPositions.length;e++)e===a&&(a=r.spacesIndex[i++],o+=c),r.charPositions[e]+=o}}function ld(e){if(e===``)return[];typeof e==`string`&&(e=[e]);let t=[];for(let n=0,r=e.length;n<r;n++){let r=e[n];if(Array.isArray(r)){if(r.length!==2)throw Error(`[BitmapFont]: Invalid character range length, expecting 2 got ${r.length}.`);if(r[0].length===0||r[1].length===0)throw Error(`[BitmapFont]: Invalid character delimiter.`);let e=r[0].charCodeAt(0),n=r[1].charCodeAt(0);if(n<e)throw Error(`[BitmapFont]: Invalid character range.`);for(let r=e,i=n;r<=i;r++)t.push(String.fromCharCode(r))}else t.push(...Array.from(r))}if(t.length===0)throw Error(`[BitmapFont]: Empty set when resolving characters.`);return t}var ud=0,dd=new class{constructor(){this.ALPHA=[[`a`,`z`],[`A`,`Z`],` `],this.NUMERIC=[[`0`,`9`]],this.ALPHANUMERIC=[[`a`,`z`],[`A`,`Z`],[`0`,`9`],` `],this.ASCII=[[` `,`~`]],this.defaultOptions={chars:this.ALPHANUMERIC,resolution:1,padding:4,skipKerning:!1,textureStyle:null},this.measureCache=iu(1e3)}getFont(e,t){let n=`${t.fontFamily}-bitmap`,r=!0;if(G.has(n)){let t=G.get(n);return t.ensureCharacters?.(e),t}if(t._fill.fill&&!t._stroke?(n+=t._fill.fill.styleKey,r=!1):(t._stroke||t.dropShadow)&&(n=`${t.styleKey}-bitmap`,r=!1),n+=`-${t.fontStyle}`,n+=`-${t.fontVariant}`,n+=`-${t.fontWeight}`,!G.has(n)){let e=Object.create(t);e._lineHeight=0;let i=new id({style:e,overrideFill:r,overrideSize:!0,...this.defaultOptions});ud++,ud>50&&D(`BitmapText`,`You have dynamically created ${ud} bitmap fonts, this can be inefficient. Try pre installing your font styles using \`BitmapFont.install({name:"style1", style})\``),i.once(`destroy`,()=>{ud--,G.remove(n)}),G.set(n,i)}let i=G.get(n);return i.ensureCharacters?.(e),i}getLayout(e,t,n=!0){let r=this.getFont(e,t),i=`${e}-${t.styleKey}-${n}`;if(this.measureCache.has(i))return this.measureCache.get(i);let a=ad(X.graphemeSegmenter(e),t,r,n);return this.measureCache.set(i,a),a}measureText(e,t,n=!0){return this.getLayout(e,t,n)}install(...e){let t=e[0];typeof t==`string`&&(t={name:t,style:e[1],chars:e[2]?.chars,resolution:e[2]?.resolution,padding:e[2]?.padding,skipKerning:e[2]?.skipKerning},y(n,`BitmapFontManager.install(name, style, options) is deprecated, use BitmapFontManager.install({name, style, ...options})`));let r=t?.name;if(!r)throw Error("[BitmapFontManager] Property `name` is required.");t={...this.defaultOptions,...t};let i=t.style,a=i instanceof Ku?i:new Ku(i),o=new id({style:a,overrideFill:t.dynamicFill??this._canUseTintForStyle(a),skipKerning:t.skipKerning,padding:t.padding,resolution:t.resolution,overrideSize:!1,textureStyle:t.textureStyle}),s=ld(t.chars);return o.ensureCharacters(s.join(``)),G.set(`${r}-bitmap`,o),o.once(`destroy`,()=>G.remove(`${r}-bitmap`)),o}uninstall(e){let t=`${e}-bitmap`,n=G.get(t);n&&n.destroy()}_canUseTintForStyle(e){return!e._stroke&&(!e.dropShadow||e.dropShadow.color===0)&&!e._fill.fill&&e._fill.color===16777215}},fd=class extends Sl{destroy(){this.context.customShader&&this.context.customShader.destroy(),super.destroy()}},pd=class{constructor(e){this._renderer=e,this._managedBitmapTexts=new zi({renderer:e,type:`renderable`,priority:-2,name:`bitmapText`})}validateRenderable(e){let t=this._getGpuBitmapText(e);return this._renderer.renderPipes.graphics.validateRenderable(t)}addRenderable(e,t){let n=this._getGpuBitmapText(e);md(e,n),e._didTextUpdate&&(e._didTextUpdate=!1,this._updateContext(e,n)),this._renderer.renderPipes.graphics.addRenderable(n,t),n.context.customShader&&this._updateDistanceField(e)}updateRenderable(e){let t=this._getGpuBitmapText(e);md(e,t),this._renderer.renderPipes.graphics.updateRenderable(t),t.context.customShader&&this._updateDistanceField(e)}_updateContext(e,t){let{context:n}=t,r=dd.getFont(e.text,e._style);if(n.clear(),r.distanceField.type!==`none`){let e=this.getSdfShader();e&&(n.customShader||=e)}let i=X.graphemeSegmenter(e.text),a=e._style,o=r.baseLineOffset,s=ad(i,a,r,!0),c=a.padding,l=s.scale,u=s.width,d=s.height+s.offsetY;a._stroke&&(u+=a._stroke.width/l,d+=a._stroke.width/l),n.translate(-e._anchor._x*u-c,-e._anchor._y*d-c).scale(l,l);let f=r.applyFillAsTint?a._fill.color:16777215,p=r.fontMetrics.fontSize,m=r.lineHeight;a.lineHeight&&(p=a.fontSize/l,m=a.lineHeight/l);let h=(m-p)/2;h-r.baseLineOffset<0&&(h=0);for(let e=0;e<s.lines.length;e++){let t=s.lines[e];for(let e=0;e<t.charPositions.length;e++){let i=t.chars[e],a=r.chars[i];if(a?.texture){let r=a.texture;n.texture(r,f,Math.round(t.charPositions[e]+a.xOffset),Math.round(o+a.yOffset+h),r.orig.width,r.orig.height)}}o+=m}}_getGpuBitmapText(e){return e._gpuData[this._renderer.uid]||this.initGpuText(e)}initGpuText(e){let t=new fd;return e._gpuData[this._renderer.uid]=t,this._updateContext(e,t),this._managedBitmapTexts.add(e),t}_updateDistanceField(e){let t=this._getGpuBitmapText(e).context,n=e._style.fontFamily,r=G.get(`${n}-bitmap`),{a:i,b:a,c:o,d:s}=e.groupTransform,c=Math.sqrt(i*i+a*a),l=Math.sqrt(o*o+s*s),u=(Math.abs(c)+Math.abs(l))/2,d=r.baseRenderedFontSize/e._style.fontSize,f=u*r.distanceField.range*(1/d);t.customShader.resources.localUniforms.uniforms.uDistance=f}destroy(){this._managedBitmapTexts.destroy(),this._renderer=null,this._managedBitmapTexts=null}};function md(e,t){t.groupTransform=e.groupTransform,t.groupColorAlpha=e.groupColorAlpha,t.groupColor=e.groupColor,t.groupBlendMode=e.groupBlendMode,t.globalDisplayStatus=e.globalDisplayStatus,t.groupTransform=e.groupTransform,t.localDisplayStatus=e.localDisplayStatus,t.groupAlpha=e.groupAlpha,t._roundPixels=e._roundPixels}var hd=class extends pd{getSdfShader(){return null}};hd.extension={type:[W.CanvasPipes],name:`bitmapText`};var gd={name:`local-uniform-msdf-bit`,vertex:{header:`
|
|
2185
|
+
struct LocalUniforms {
|
|
2186
|
+
uColor:vec4<f32>,
|
|
2187
|
+
uTransformMatrix:mat3x3<f32>,
|
|
2188
|
+
uDistance: f32,
|
|
2189
|
+
uRound:f32,
|
|
2190
|
+
}
|
|
2191
|
+
|
|
2192
|
+
@group(2) @binding(0) var<uniform> localUniforms : LocalUniforms;
|
|
2193
|
+
`,main:`
|
|
2194
|
+
vColor *= localUniforms.uColor;
|
|
2195
|
+
modelMatrix *= localUniforms.uTransformMatrix;
|
|
2196
|
+
`,end:`
|
|
2197
|
+
if(localUniforms.uRound == 1)
|
|
2198
|
+
{
|
|
2199
|
+
vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);
|
|
2200
|
+
}
|
|
2201
|
+
`},fragment:{header:`
|
|
2202
|
+
struct LocalUniforms {
|
|
2203
|
+
uColor:vec4<f32>,
|
|
2204
|
+
uTransformMatrix:mat3x3<f32>,
|
|
2205
|
+
uDistance: f32
|
|
2206
|
+
}
|
|
2207
|
+
|
|
2208
|
+
@group(2) @binding(0) var<uniform> localUniforms : LocalUniforms;
|
|
2209
|
+
`,main:`
|
|
2210
|
+
outColor = vec4<f32>(calculateMSDFAlpha(outColor, vColor, localUniforms.uDistance));
|
|
2211
|
+
`}},_d={name:`local-uniform-msdf-bit`,vertex:{header:`
|
|
2212
|
+
uniform mat3 uTransformMatrix;
|
|
2213
|
+
uniform vec4 uColor;
|
|
2214
|
+
uniform float uRound;
|
|
2215
|
+
`,main:`
|
|
2216
|
+
vColor *= uColor;
|
|
2217
|
+
modelMatrix *= uTransformMatrix;
|
|
2218
|
+
`,end:`
|
|
2219
|
+
if(uRound == 1.)
|
|
2220
|
+
{
|
|
2221
|
+
gl_Position.xy = roundPixels(gl_Position.xy, uResolution);
|
|
2222
|
+
}
|
|
2223
|
+
`},fragment:{header:`
|
|
2224
|
+
uniform float uDistance;
|
|
2225
|
+
`,main:`
|
|
2226
|
+
outColor = vec4(calculateMSDFAlpha(outColor, vColor, uDistance));
|
|
2227
|
+
`}},vd={name:`msdf-bit`,fragment:{header:`
|
|
2228
|
+
fn calculateMSDFAlpha(msdfColor:vec4<f32>, shapeColor:vec4<f32>, distance:f32) -> f32 {
|
|
2229
|
+
|
|
2230
|
+
// MSDF
|
|
2231
|
+
var median = msdfColor.r + msdfColor.g + msdfColor.b -
|
|
2232
|
+
min(msdfColor.r, min(msdfColor.g, msdfColor.b)) -
|
|
2233
|
+
max(msdfColor.r, max(msdfColor.g, msdfColor.b));
|
|
2234
|
+
|
|
2235
|
+
// SDF
|
|
2236
|
+
median = min(median, msdfColor.a);
|
|
2237
|
+
|
|
2238
|
+
var screenPxDistance = distance * (median - 0.5);
|
|
2239
|
+
var alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0);
|
|
2240
|
+
if (median < 0.01) {
|
|
2241
|
+
alpha = 0.0;
|
|
2242
|
+
} else if (median > 0.99) {
|
|
2243
|
+
alpha = 1.0;
|
|
2244
|
+
}
|
|
2245
|
+
|
|
2246
|
+
// Gamma correction for coverage-like alpha
|
|
2247
|
+
var luma: f32 = dot(shapeColor.rgb, vec3<f32>(0.299, 0.587, 0.114));
|
|
2248
|
+
var gamma: f32 = mix(1.0, 1.0 / 2.2, luma);
|
|
2249
|
+
var coverage: f32 = pow(shapeColor.a * alpha, gamma);
|
|
2250
|
+
|
|
2251
|
+
return coverage;
|
|
2252
|
+
|
|
2253
|
+
}
|
|
2254
|
+
`}},yd={name:`msdf-bit`,fragment:{header:`
|
|
2255
|
+
float calculateMSDFAlpha(vec4 msdfColor, vec4 shapeColor, float distance) {
|
|
2256
|
+
|
|
2257
|
+
// MSDF
|
|
2258
|
+
float median = msdfColor.r + msdfColor.g + msdfColor.b -
|
|
2259
|
+
min(msdfColor.r, min(msdfColor.g, msdfColor.b)) -
|
|
2260
|
+
max(msdfColor.r, max(msdfColor.g, msdfColor.b));
|
|
2261
|
+
|
|
2262
|
+
// SDF
|
|
2263
|
+
median = min(median, msdfColor.a);
|
|
2264
|
+
|
|
2265
|
+
float screenPxDistance = distance * (median - 0.5);
|
|
2266
|
+
float alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0);
|
|
2267
|
+
|
|
2268
|
+
if (median < 0.01) {
|
|
2269
|
+
alpha = 0.0;
|
|
2270
|
+
} else if (median > 0.99) {
|
|
2271
|
+
alpha = 1.0;
|
|
2272
|
+
}
|
|
2273
|
+
|
|
2274
|
+
// Gamma correction for coverage-like alpha
|
|
2275
|
+
float luma = dot(shapeColor.rgb, vec3(0.299, 0.587, 0.114));
|
|
2276
|
+
float gamma = mix(1.0, 1.0 / 2.2, luma);
|
|
2277
|
+
float coverage = pow(shapeColor.a * alpha, gamma);
|
|
2278
|
+
|
|
2279
|
+
return coverage;
|
|
2280
|
+
}
|
|
2281
|
+
`}},bd,xd,Sd=class extends ce{constructor(e){let t=new pe({uColor:{value:new Float32Array([1,1,1,1]),type:`vec4<f32>`},uTransformMatrix:{value:new U,type:`mat3x3<f32>`},uDistance:{value:4,type:`f32`},uRound:{value:0,type:`f32`}});bd??=Ei({name:`sdf-shader`,bits:[Mi,Ri(e),gd,vd,Si]}),xd??=Ti({name:`sdf-shader`,bits:[Bi,wi(e),_d,yd,Fi]}),super({glProgram:xd,gpuProgram:bd,resources:{localUniforms:t,batchSamplers:ki(e)}})}},Cd=class extends pd{getSdfShader(){return new Sd(this._renderer.limits.maxBatchableTextures)}};Cd.extension={type:[W.WebGLPipes,W.WebGPUPipes],name:`bitmapText`},F.add(hd),F.add(Cd);var wd=class extends Yl{constructor(...e){var t;let n=Xl(e,`BitmapText`);n.style??=n.style||{},(t=n.style).fill??(t.fill=16777215),super(n,Ku),this.renderPipeId=`bitmapText`}_onTouch(e){this._gcLastUsed=e;for(let t in this._gpuData)this._gpuData[t]?._onTouch(e)}updateBounds(){let e=this._bounds,t=this._anchor,n=dd.measureText(this.text,this._style),r=n.scale,i=n.offsetY*r,a=n.width*r,o=n.height*r,s=this._style._stroke;s&&(a+=s.width,o+=s.width),e.minX=-t._x*a,e.maxX=e.minX+a,e.minY=-t._y*(o+i),e.maxY=e.minY+o}set resolution(e){e!==null&&D(`[BitmapText] dynamically updating the resolution is not supported. Resolution should be managed by the BitmapFont.`)}get resolution(){return this._resolution}};function Td(e){let t=e._stroke,n=e._fill,r=[`div { ${[`color: ${N.shared.setValue(n.color).setAlpha(n.alpha??1).toHexa()}`,`font-size: ${e.fontSize}px`,`font-family: ${e.fontFamily}`,`font-weight: ${e.fontWeight}`,`font-style: ${e.fontStyle}`,`font-variant: ${e.fontVariant}`,`letter-spacing: ${e.letterSpacing}px`,`text-align: ${e.align}`,`padding: ${e.padding}px`,`white-space: ${e.whiteSpace===`pre`&&e.wordWrap?`pre-wrap`:e.whiteSpace}`,...e.lineHeight?[`line-height: ${e.lineHeight}px`]:[],...e.wordWrap?[`word-break: ${e.breakWords?`break-word`:`normal`}`,`max-width: ${e.wordWrapWidth}px`]:[],...t?[Dd(t)]:[],...e.dropShadow?[Ed(e.dropShadow)]:[],...e.cssOverrides].join(`;`)} }`];return Ad(e.tagStyles,r),r.join(` `)}function Ed(e){let t={...e},n=N.shared.setValue(t.color).setAlpha(t.alpha??1).toHexa(),r=`${Math.round(Math.cos(t.angle)*t.distance)}px ${Math.round(Math.sin(t.angle)*t.distance)}px`;return t.blur>0?`text-shadow: ${r} ${t.blur}px ${n}`:`text-shadow: ${r} ${n}`}function Dd(e){let t=N.shared.setValue(e.color).setAlpha(e.alpha??1).toHexa();return[`-webkit-text-stroke-width: ${e.width}px`,`-webkit-text-stroke-color: ${t}`,`text-stroke-width: ${e.width}px`,`text-stroke-color: ${t}`,`paint-order: stroke`].join(`;`)}var Od={fontSize:`font-size: {{VALUE}}px`,fontFamily:`font-family: {{VALUE}}`,fontWeight:`font-weight: {{VALUE}}`,fontStyle:`font-style: {{VALUE}}`,fontVariant:`font-variant: {{VALUE}}`,letterSpacing:`letter-spacing: {{VALUE}}px`,align:`text-align: {{VALUE}}`,padding:`padding: {{VALUE}}px`,whiteSpace:`white-space: {{VALUE}}`,lineHeight:`line-height: {{VALUE}}px`,wordWrapWidth:`max-width: {{VALUE}}px`},kd={fill:e=>`color: ${N.shared.setValue(e).toHexa()}`,breakWords:e=>`word-break: ${e?`break-all`:`normal`}`,stroke:Dd,dropShadow:e=>e===!0?Ed(Ku.defaultDropShadow):e&&typeof e==`object`?Ed({...Ku.defaultDropShadow,...e}):``};function Ad(e,t){for(let n in e){let r=e[n],i=[];for(let e in r)kd[e]?i.push(kd[e](r[e])):Od[e]&&i.push(Od[e].replace(`{{VALUE}}`,r[e]));t.push(`${n} { ${i.join(`;`)} }`)}}var jd=class e extends Ku{constructor(e={}){super(e),this._cssOverrides=[],this.cssOverrides=e.cssOverrides??[],this.tagStyles=e.tagStyles??{}}get tagStyles(){return this._tagStyles}set tagStyles(e){this._tagStyles!==e&&(this._tagStyles=e??{},this.update())}set cssOverrides(e){this._cssOverrides=e instanceof Array?e:[e],this.update()}get cssOverrides(){return this._cssOverrides}update(){this._cssStyle=null,super.update()}clone(){return new e({align:this.align,breakWords:this.breakWords,dropShadow:this.dropShadow?{...this.dropShadow}:null,fill:this._fill,fontFamily:this.fontFamily,fontSize:this.fontSize,fontStyle:this.fontStyle,fontVariant:this.fontVariant,fontWeight:this.fontWeight,letterSpacing:this.letterSpacing,lineHeight:this.lineHeight,padding:this.padding,stroke:this._stroke,whiteSpace:this.whiteSpace,wordWrap:this.wordWrap,wordWrapWidth:this.wordWrapWidth,cssOverrides:this.cssOverrides,tagStyles:{...this.tagStyles}})}get cssStyle(){return this._cssStyle||=Td(this),this._cssStyle}addOverride(...e){let t=e.filter(e=>!this.cssOverrides.includes(e));t.length>0&&(this.cssOverrides.push(...t),this.update())}removeOverride(...e){let t=e.filter(e=>this.cssOverrides.includes(e));t.length>0&&(this.cssOverrides=this.cssOverrides.filter(e=>!t.includes(e)),this.update())}set fill(e){typeof e!=`string`&&typeof e!=`number`&&D(`[HTMLTextStyle] only color fill is not supported by HTMLText`),super.fill=e}set stroke(e){e&&typeof e!=`string`&&typeof e!=`number`&&D(`[HTMLTextStyle] only color stroke is not supported by HTMLText`),super.stroke=e}},Md=`http://www.w3.org/2000/svg`,Nd=`http://www.w3.org/1999/xhtml`,Pd=class{constructor(){this.svgRoot=document.createElementNS(Md,`svg`),this.foreignObject=document.createElementNS(Md,`foreignObject`),this.domElement=document.createElementNS(Nd,`div`),this.styleElement=document.createElementNS(Nd,`style`);let{foreignObject:e,svgRoot:t,styleElement:n,domElement:i}=this;e.setAttribute(`width`,`10000`),e.setAttribute(`height`,`10000`),e.style.overflow=`hidden`,t.appendChild(e),e.appendChild(n),e.appendChild(i),this.image=r.get().createImage()}destroy(){this.svgRoot.remove(),this.foreignObject.remove(),this.styleElement.remove(),this.domElement.remove(),this.image.src=``,this.image.remove(),this.svgRoot=null,this.foreignObject=null,this.styleElement=null,this.domElement=null,this.image=null,this.canvasAndContext=null}},Fd;function Id(e,t,n,r){r||=Fd||=new Pd;let{domElement:i,styleElement:a,svgRoot:o}=r;i.innerHTML=`<style>${t.cssStyle};</style><div style='padding:0'>${e}</div>`,i.setAttribute(`style`,`transform-origin: top left; display: inline-block`),n&&(a.textContent=n),document.body.appendChild(o);let s=i.scrollWidth,c=i.scrollHeight;if(o.remove(),t.dropShadow){let{distance:e,angle:n,blur:r}=t.dropShadow,i=Math.abs(Math.round(Math.cos(n)*e)),a=Math.abs(Math.round(Math.sin(n)*e));s+=i+r,c+=a+r}let l=t.padding*2;return{width:s-l,height:c-l}}var Ld=class extends Tr{constructor(){super(...arguments),this.generatingTexture=!1,this.currentKey=`--`}destroy(){this.texturePromise=null,this.generatingTexture=!1,this.currentKey=`--`,super.destroy()}},Rd=class{constructor(e){this._renderer=e,e.runners.resolutionChange.add(this),this._managedTexts=new zi({renderer:e,type:`renderable`,onUnload:this.onTextUnload.bind(this),name:`htmlText`})}resolutionChange(){for(let e in this._managedTexts.items){let t=this._managedTexts.items[e];t?._autoResolution&&t.onViewUpdate()}}validateRenderable(e){let t=this._getGpuText(e),n=e.styleKey;return t.currentKey!==n}addRenderable(e,t){let n=this._getGpuText(e);if(e._didTextUpdate){let t=e._autoResolution?this._renderer.resolution:e.resolution;(n.currentKey!==e.styleKey||e.resolution!==t)&&this._updateGpuText(e).catch(e=>{console.error(e)}),e._didTextUpdate=!1,Ju(n,e)}this._renderer.renderPipes.batch.addToBatch(n,t)}updateRenderable(e){let t=this._getGpuText(e);t._batcher.updateElement(t)}async _updateGpuText(e){e._didTextUpdate=!1;let t=this._getGpuText(e);if(t.generatingTexture)return;let n=t.texturePromise;t.texturePromise=null,t.generatingTexture=!0,e._resolution=e._autoResolution?this._renderer.resolution:e.resolution;let r=this._renderer.htmlText.getTexturePromise(e);n&&(r=r.finally(()=>{this._renderer.htmlText.decreaseReferenceCount(t.currentKey),this._renderer.htmlText.returnTexturePromise(n)})),t.texturePromise=r,t.currentKey=e.styleKey,t.texture=await r;let i=e.renderGroup||e.parentRenderGroup;i&&(i.structureDidChange=!0),t.generatingTexture=!1,Ju(t,e)}_getGpuText(e){return e._gpuData[this._renderer.uid]||this.initGpuText(e)}initGpuText(e){let t=new Ld;return t.renderable=e,t.transform=e.groupTransform,t.texture=h.EMPTY,t.bounds={minX:0,maxX:1,minY:0,maxY:0},t.roundPixels=this._renderer._roundPixels|e._roundPixels,e._resolution=e._autoResolution?this._renderer.resolution:e.resolution,e._gpuData[this._renderer.uid]=t,this._managedTexts.add(e),t}onTextUnload(e){let t=e._gpuData[this._renderer.uid];if(!t)return;let{htmlText:n}=this._renderer;n.getReferenceCount(t.currentKey)===null?n.returnTexturePromise(t.texturePromise):n.decreaseReferenceCount(t.currentKey)}destroy(){this._managedTexts.destroy(),this._renderer=null}};Rd.extension={type:[W.WebGLPipes,W.WebGPUPipes,W.CanvasPipes],name:`htmlText`};function zd(){let{userAgent:e}=r.get().getNavigator();return/^((?!chrome|android).)*safari/i.test(e)}function Bd(e,t){let n=t.fontFamily,r=[],i={},a=e.match(/font-family:([^;"\s]+)/g);function o(e){i[e]||(r.push(e),i[e]=!0)}if(Array.isArray(n))for(let e=0;e<n.length;e++)o(n[e]);else o(n);a&&a.forEach(e=>{o(e.split(`:`)[1].trim())});for(let e in t.tagStyles){let n=t.tagStyles[e].fontFamily;o(n)}return r}async function Vd(e){let t=await(await r.get().fetch(e)).blob(),n=new FileReader;return await new Promise((e,r)=>{n.onloadend=()=>e(n.result),n.onerror=r,n.readAsDataURL(t)})}async function Hd(e,t){let n=await Vd(t);return`@font-face {
|
|
2282
|
+
font-family: "${e.fontFamily}";
|
|
2283
|
+
font-weight: ${e.fontWeight};
|
|
2284
|
+
font-style: ${e.fontStyle};
|
|
2285
|
+
src: url('${n}');
|
|
2286
|
+
}`}var Ud=new Map;async function Wd(e){let t=e.filter(e=>G.has(`${e}-and-url`)).map(e=>{if(!Ud.has(e)){let{entries:t}=G.get(`${e}-and-url`),n=[];t.forEach(t=>{let r=t.url,i=t.faces.map(e=>({weight:e.weight,style:e.style}));n.push(...i.map(t=>Hd({fontWeight:t.weight,fontStyle:t.style,fontFamily:e},r)))}),Ud.set(e,Promise.all(n).then(e=>e.join(`
|
|
2287
|
+
`)))}return Ud.get(e)});return(await Promise.all(t)).join(`
|
|
2288
|
+
`)}function Gd(e,t,n,r,i){let{domElement:a,styleElement:o,svgRoot:s}=i;a.innerHTML=`<style>${t.cssStyle}</style><div style='padding:0;'>${e}</div>`,a.setAttribute(`style`,`transform: scale(${n});transform-origin: top left; display: inline-block`),o.textContent=r;let{width:c,height:l}=i.image;return s.setAttribute(`width`,c.toString()),s.setAttribute(`height`,l.toString()),new XMLSerializer().serializeToString(s)}function Kd(e,t){let n=on.getOptimalCanvasAndContext(e.width,e.height,t),{context:r}=n;return r.clearRect(0,0,e.width,e.height),r.drawImage(e,0,0),n}function qd(e,t,n){return new Promise(async r=>{n&&await new Promise(e=>setTimeout(e,100)),e.onload=()=>{r()},e.src=`data:image/svg+xml;charset=utf8,${encodeURIComponent(t)}`,e.crossOrigin=`anonymous`})}var Jd=class{constructor(e){this._activeTextures={},this._renderer=e,this._createCanvas=e.type===P.WEBGPU}getTexture(e){return this.getTexturePromise(e)}getManagedTexture(e){let t=e.styleKey;if(this._activeTextures[t])return this._increaseReferenceCount(t),this._activeTextures[t].promise;let n=this._buildTexturePromise(e).then(e=>(this._activeTextures[t].texture=e,e));return this._activeTextures[t]={texture:null,promise:n,usageCount:1},n}getReferenceCount(e){return this._activeTextures[e]?.usageCount??null}_increaseReferenceCount(e){this._activeTextures[e].usageCount++}decreaseReferenceCount(e){let t=this._activeTextures[e];t&&(t.usageCount--,t.usageCount===0&&(t.texture?this._cleanUp(t.texture):t.promise.then(e=>{t.texture=e,this._cleanUp(t.texture)}).catch(()=>{D(`HTMLTextSystem: Failed to clean texture`)}),this._activeTextures[e]=null))}getTexturePromise(e){return this._buildTexturePromise(e)}async _buildTexturePromise(e){let{text:t,style:n,resolution:r,textureStyle:i,autoGenerateMipmaps:a}=e,o=de.get(Pd),s=Bd(t,n),c=await Wd(s),l=Id(t,n,c,o),u=Math.ceil(Math.ceil(Math.max(1,l.width)+n.padding*2)*r),d=Math.ceil(Math.ceil(Math.max(1,l.height)+n.padding*2)*r),f=o.image;f.width=(u|0)+2,f.height=(d|0)+2,await qd(f,Gd(t,n,r,c,o),zd()&&s.length>0);let p=f,m;this._createCanvas&&(m=Kd(f,r));let h=Ht(m?m.canvas:p,f.width-2,f.height-2,r,a);return i&&(h.source.style=i),this._createCanvas&&(this._renderer.texture.initSource(h.source),on.returnCanvasAndContext(m)),de.return(o),h}returnTexturePromise(e){e.then(e=>{this._cleanUp(e)}).catch(()=>{D(`HTMLTextSystem: Failed to clean texture`)})}_cleanUp(e){Ve.returnTexture(e,!0),e.source.resource=null,e.source.uploadMethodId=`unknown`}destroy(){this._renderer=null;for(let e in this._activeTextures)this._activeTextures[e]&&this.returnTexturePromise(this._activeTextures[e].promise);this._activeTextures=null}};Jd.extension={type:[W.WebGLSystem,W.WebGPUSystem,W.CanvasSystem],name:`htmlText`},F.add(Jd),F.add(Rd);var Yd=class extends Yl{constructor(...e){let t=Xl(e,`HtmlText`);super(t,jd),this.renderPipeId=`htmlText`,t.textureStyle&&(this.textureStyle=t.textureStyle instanceof b?t.textureStyle:new b(t.textureStyle)),this.autoGenerateMipmaps=t.autoGenerateMipmaps??m.defaultOptions.autoGenerateMipmaps}updateBounds(){let e=this._bounds,t=this._anchor,{width:n,height:r}=Id(this.text,this._style);e.minX=-t._x*n,e.maxX=e.minX+n,e.minY=-t._y*r,e.maxY=e.minY+r}get text(){return this._text}set text(e){let t=this._sanitiseText(e.toString());super.text=t}_sanitiseText(e){return this._removeInvalidHtmlTags(e.replace(/<br>/gi,`<br/>`).replace(/<hr>/gi,`<hr/>`).replace(/ /gi,` `))}_removeInvalidHtmlTags(e){return e.replace(/<[^>]*?(?=<|$)/g,``)}},Xd=class extends td{uploadQueueItem(e){e instanceof m?this.uploadTextureSource(e):e instanceof ed?this.uploadText(e):e instanceof Yd?this.uploadHTMLText(e):e instanceof wd?this.uploadBitmapText(e):e instanceof er&&this.uploadGraphicsContext(e)}uploadTextureSource(e){this.renderer.texture.initSource(e)}uploadText(e){this.renderer.renderPipes.text.initGpuText(e)}uploadBitmapText(e){this.renderer.renderPipes.bitmapText.initGpuText(e)}uploadHTMLText(e){this.renderer.renderPipes.htmlText.initGpuText(e)}uploadGraphicsContext(e){this.renderer.graphicsContext.getGpuContext(e);let{instructions:t}=e;for(let e of t)if(e.action===`texture`){let{image:t}=e.data;this.uploadTextureSource(t.source)}else if(e.action===`fill`){let{texture:t}=e.data.style;this.uploadTextureSource(t.source)}return null}},Zd=class extends Xd{destroy(){super.destroy(),clearTimeout(this.timeout),this.renderer=null,this.queue=null,this.resolves=null}};Zd.extension={type:[W.WebGLSystem,W.WebGPUSystem],name:`prepare`};var Qd=class e{static _getPatternRepeat(e,t){let n=e&&e!==`clamp-to-edge`,r=t&&t!==`clamp-to-edge`;return n&&r?`repeat`:n?`repeat-x`:r?`repeat-y`:`no-repeat`}start(e,t,n){}execute(t,n){let r=n.elements;if(!r||!r.length)return;let i=t.renderer,a=i.canvasContext,o=a.activeContext;for(let t=0;t<r.length;t++){let s=r[t];if(!s.packAsQuad)continue;let c=s,l=c.texture,u=l?K.getCanvasSource(l):null;if(!u)continue;let f=l.source.style,p=a.smoothProperty,m=f.scaleMode!==`nearest`;o[p]!==m&&(o[p]=m),a.setBlendMode(n.blendMode);let h=i.globalUniforms.globalUniformData?.worldColor??4294967295,g=c.color,_=(h>>>24&255)/255,v=(g>>>24&255)/255,y=i.filter?.alphaMultiplier??1,b=_*v*y;if(b<=0)continue;o.globalAlpha=b;let x=h&16777215,S=Re(T(g&16777215,x)),C=l.frame,w=f.addressModeU??f.addressMode,E=f.addressModeV??f.addressMode,ee=e._getPatternRepeat(w,E),D=l.source._resolution??l.source.resolution??1,O=c.renderable?.renderGroup?.isCachedAsTexture,k=C.x*D,A=C.y*D,j=C.width*D,M=C.height*D,N=c.bounds,P=i.renderTarget.renderTarget.isRoot,F=N.minX,I=N.minY,L=N.maxX-N.minX,R=N.maxY-N.minY,z=l.rotate,B=l.uvs,V=Math.min(B.x0,B.x1,B.x2,B.x3,B.y0,B.y1,B.y2,B.y3),H=Math.max(B.x0,B.x1,B.x2,B.x3,B.y0,B.y1,B.y2,B.y3),te=ee!==`no-repeat`&&(V<0||H>1),ne=z&&!(!te&&(S!==16777215||z));ne?(e._tempPatternMatrix.copyFrom(c.transform),d.matrixAppendRotationInv(e._tempPatternMatrix,z,F,I,L,R),a.setContextTransform(e._tempPatternMatrix,c.roundPixels===1,void 0,O&&P)):a.setContextTransform(c.transform,c.roundPixels===1,void 0,O&&P);let re=ne?0:F,ie=ne?0:I,ae=L,oe=R;if(te){let t=u,n=S!==16777215&&!z,r=C.width<=l.source.width&&C.height<=l.source.height;n&&r&&(t=K.getTintedCanvas({texture:l},S));let i=o.createPattern(t,ee);if(!i)continue;let a=ae,s=oe;if(a===0||s===0)continue;let c=1/a,d=1/s,f=(B.x1-B.x0)*c,p=(B.y1-B.y0)*c,m=(B.x3-B.x0)*d,h=(B.y3-B.y0)*d,g=B.x0-f*re-m*ie,_=B.y0-p*re-h*ie,v=l.source.pixelWidth,y=l.source.pixelHeight;e._tempPatternMatrix.set(f*v,p*y,m*v,h*y,g*v,_*y),K.applyPatternTransform(i,e._tempPatternMatrix),o.fillStyle=i,o.fillRect(re,ie,ae,oe)}else{let e=S!==16777215||z?K.getTintedCanvas({texture:l},S):u,t=e!==u;o.drawImage(e,t?0:k,t?0:A,t?e.width:j,t?e.height:M,re,ie,ae,oe)}}}};Qd._tempPatternMatrix=new U,Qd.extension={type:[W.CanvasPipesAdaptor],name:`batch`};var $d=Qd,ef=class{constructor(){this._tempState=et.for2d(),this._didUploadHash={}}init(e){e.renderer.runners.contextChange.add(this)}contextChange(){this._didUploadHash={}}start(e,t,n){let r=e.renderer,i=this._didUploadHash[n.uid];r.shader.bind(n,i),i||(this._didUploadHash[n.uid]=!0),r.shader.updateUniformGroup(r.globalUniforms.uniformGroup),r.geometry.bind(t,n.glProgram)}execute(e,t){let n=e.renderer;this._tempState.blendMode=t.blendMode,n.state.set(this._tempState);let r=t.textures.textures;for(let e=0;e<t.textures.count;e++)n.texture.bind(r[e],e);n.geometry.draw(t.topology,t.size,t.start)}};ef.extension={type:[W.WebGLPipesAdaptor],name:`batch`};function tf(e){let t=[],n=0;for(let r=0;r<e;r++)t[n]={texture:{sampleType:`float`,viewDimension:`2d`,multisampled:!1},binding:n,visibility:GPUShaderStage.FRAGMENT},n++,t[n]={sampler:{type:`filtering`},binding:n,visibility:GPUShaderStage.FRAGMENT},n++;return t}function nf(e){let t={},n=0;for(let r=0;r<e;r++)t[`textureSource${r+1}`]=n++,t[`textureSampler${r+1}`]=n++;return t}var rf=et.for2d(),af=class{start(e,t,n){let r=e.renderer,i=r.encoder,a=n.gpuProgram;this._shader=n,this._geometry=t,i.setGeometry(t,a),rf.blendMode=`normal`,r.pipeline.getPipeline(t,a,rf);let o=r.globalUniforms.bindGroup;i.resetBindGroup(1),i.setBindGroup(0,o,a)}execute(e,t){let n=this._shader.gpuProgram,r=e.renderer,i=r.encoder;if(!t.bindGroup){let e=t.textures;t.bindGroup=Gi(e.textures,e.count,r.limits.maxBatchableTextures)}rf.blendMode=t.blendMode;let a=r.bindGroup.getBindGroup(t.bindGroup,n,1),o=r.pipeline.getPipeline(this._geometry,n,rf,t.topology);t.bindGroup._touch(r.gc.now,r.tick),i.setPipeline(o),i.renderPassEncoder.setBindGroup(1,a),i.renderPassEncoder.drawIndexed(t.size,1,t.start)}};af.extension={type:[W.WebGPUPipesAdaptor],name:`batch`};function of(e){let t=e.split(/([\n{}])/g).map(e=>e.trim()).filter(e=>e.length),n=``;return t.map(e=>{let t=n+e;return e===`{`?n+=` `:e===`}`&&(n=n.substr(0,n.length-4),t=n+e),t}).join(`
|
|
2289
|
+
`)}var sf=class{constructor(e){this._colorStack=[],this._colorStackIndex=0,this._currentColor=0,this._renderer=e}buildStart(){this._colorStack[0]=15,this._colorStackIndex=1,this._currentColor=15}push(e,t,n){this._renderer.renderPipes.batch.break(n);let r=this._colorStack;r[this._colorStackIndex]=r[this._colorStackIndex-1]&e.mask;let i=this._colorStack[this._colorStackIndex];i!==this._currentColor&&(this._currentColor=i,n.add({renderPipeId:`colorMask`,colorMask:i,canBundle:!1})),this._colorStackIndex++}pop(e,t,n){this._renderer.renderPipes.batch.break(n);let r=this._colorStack;this._colorStackIndex--;let i=r[this._colorStackIndex-1];i!==this._currentColor&&(this._currentColor=i,n.add({renderPipeId:`colorMask`,colorMask:i,canBundle:!1}))}execute(e){}destroy(){this._renderer=null,this._colorStack=null}};sf.extension={type:[W.CanvasPipes],name:`colorMask`};var cf=class{constructor(e){this.priority=0,this.pipe=`scissorMask`,this.mask=e,this.mask.renderable=!1,this.mask.measurable=!1}addBounds(e,t){Pt(this.mask,e,t)}addLocalBounds(e,t){en(this.mask,e,t)}containsPoint(e,t){let n=this.mask;return t(n,e)}reset(){this.mask!==null&&(this.mask.measurable=!0,this.mask=null)}destroy(){this.reset()}};function lf(e,t,n,r,i,a){a=Math.max(0,Math.min(a,Math.min(r,i)/2)),e.moveTo(t+a,n),e.lineTo(t+r-a,n),e.quadraticCurveTo(t+r,n,t+r,n+a),e.lineTo(t+r,n+i-a),e.quadraticCurveTo(t+r,n+i,t+r-a,n+i),e.lineTo(t+a,n+i),e.quadraticCurveTo(t,n+i,t,n+i-a),e.lineTo(t,n+a),e.quadraticCurveTo(t,n,t+a,n)}function uf(e,t){switch(t.type){case`rectangle`:{let n=t;e.rect(n.x,n.y,n.width,n.height);break}case`roundedRectangle`:{let n=t;lf(e,n.x,n.y,n.width,n.height,n.radius);break}case`circle`:{let n=t;e.moveTo(n.x+n.radius,n.y),e.arc(n.x,n.y,n.radius,0,Math.PI*2);break}case`ellipse`:{let n=t;e.ellipse?(e.moveTo(n.x+n.halfWidth,n.y),e.ellipse(n.x,n.y,n.halfWidth,n.halfHeight,0,0,Math.PI*2)):(e.save(),e.translate(n.x,n.y),e.scale(n.halfWidth,n.halfHeight),e.moveTo(1,0),e.arc(0,0,1,0,Math.PI*2),e.restore());break}case`triangle`:{let n=t;e.moveTo(n.x,n.y),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3),e.closePath();break}default:{let n=t,r=n.points;if(!r?.length)break;e.moveTo(r[0],r[1]);for(let t=2;t<r.length;t+=2)e.lineTo(r[t],r[t+1]);n.closePath&&e.closePath();break}}}function df(e,t,n){let r=[],i=[],a=[];if(!cn[t.type]?.build(t,r))return!1;Tn(r,n,!1,t.closePath??!0,i,a);for(let t=0;t<a.length;t+=3){let n=a[t]*2,r=a[t+1]*2,o=a[t+2]*2;e.moveTo(i[n],i[n+1]),e.lineTo(i[r],i[r+1]),e.lineTo(i[o],i[o+1]),e.closePath()}return!0}function ff(e,t){if(!t?.length)return!1;for(let n=0;n<t.length;n++){let r=t[n];if(!r?.shape)continue;let i=r.transform,a=i&&!i.isIdentity();a&&(e.save(),e.transform(i.a,i.b,i.c,i.d,i.tx,i.ty)),uf(e,r.shape),a&&e.restore()}return!0}var pf=class{constructor(e){this._warnedMaskTypes=new Set,this._canvasMaskStack=[],this._renderer=e}push(e,t,n){this._renderer.renderPipes.batch.break(n),n.add({renderPipeId:`stencilMask`,action:`pushMaskBegin`,mask:e,inverse:t._maskOptions.inverse,canBundle:!1})}pop(e,t,n){this._renderer.renderPipes.batch.break(n),n.add({renderPipeId:`stencilMask`,action:`popMaskEnd`,mask:e,inverse:t._maskOptions.inverse,canBundle:!1})}execute(e){if(e.action!==`pushMaskBegin`&&e.action!==`popMaskEnd`)return;let t=this._renderer,n=t.canvasContext,r=n?.activeContext;if(!r)return;if(e.action===`popMaskEnd`){this._canvasMaskStack.pop()&&r.restore();return}e.inverse&&this._warnOnce(`inverse`,`CanvasRenderer: inverse masks are not supported on Canvas2D; ignoring inverse flag.`);let i=e.mask.mask;if(!(i instanceof Sl)){this._warnOnce(`nonGraphics`,`CanvasRenderer: only Graphics masks are supported in Canvas2D; skipping mask.`),this._canvasMaskStack.push(!1);return}let a=i,o=a.context?.instructions;if(!o?.length){this._canvasMaskStack.push(!1);return}r.save(),n.setContextTransform(a.groupTransform,(t._roundPixels|a._roundPixels)===1),r.beginPath();let s=!1,c=!1;for(let e=0;e<o.length;e++){let t=o[e],n=t.action;if(n!==`fill`&&n!==`stroke`)continue;let i=t.data,a=i?.path?.shapePath;if(!a?.shapePrimitives?.length)continue;let l=n===`stroke`,u=a.shapePrimitives;for(let e=0;e<u.length;e++){let t=u[e];if(!t?.shape)continue;let n=t.transform,a=n&&!n.isIdentity();a&&(r.save(),r.transform(n.a,n.b,n.c,n.d,n.tx,n.ty)),l&&i.style?s=df(r,t.shape,i.style)||s:(uf(r,t.shape),c=ff(r,t.holes)||c,s=!0),a&&r.restore()}}if(!s){r.restore(),this._canvasMaskStack.push(!1);return}c?r.clip(`evenodd`):r.clip(),this._canvasMaskStack.push(!0)}destroy(){this._renderer=null,this._warnedMaskTypes=null,this._canvasMaskStack=null}_warnOnce(e,t){this._warnedMaskTypes.has(e)||(this._warnedMaskTypes.add(e),D(t))}};pf.extension={type:[W.CanvasPipes],name:`stencilMask`};var Z=`source-over`;function mf(){let e=rn(),t=Object.create(null);return t.inherit=Z,t.none=Z,t.normal=`source-over`,t.add=`lighter`,t.multiply=e?`multiply`:Z,t.screen=e?`screen`:Z,t.overlay=e?`overlay`:Z,t.darken=e?`darken`:Z,t.lighten=e?`lighten`:Z,t[`color-dodge`]=e?`color-dodge`:Z,t[`color-burn`]=e?`color-burn`:Z,t[`hard-light`]=e?`hard-light`:Z,t[`soft-light`]=e?`soft-light`:Z,t.difference=e?`difference`:Z,t.exclusion=e?`exclusion`:Z,t.saturation=e?`saturation`:Z,t.color=e?`color`:Z,t.luminosity=e?`luminosity`:Z,t[`linear-burn`]=e?`color-burn`:Z,t[`linear-dodge`]=e?`color-dodge`:Z,t[`linear-light`]=e?`hard-light`:Z,t[`pin-light`]=e?`hard-light`:Z,t[`vivid-light`]=e?`hard-light`:Z,t[`hard-mix`]=Z,t.negation=e?`difference`:Z,t[`normal-npm`]=t.normal,t[`add-npm`]=t.add,t[`screen-npm`]=t.screen,t.erase=`destination-out`,t.subtract=Z,t.divide=Z,t.min=Z,t.max=Z,t}var hf=new U,gf=class{constructor(e){this.activeResolution=1,this.smoothProperty=`imageSmoothingEnabled`,this.blendModes=mf(),this._activeBlendMode=`normal`,this._projTransform=null,this._outerBlend=!1,this._warnedBlendModes=new Set,this._renderer=e}resolutionChange(e){this.activeResolution=e}init(){let e=this._renderer.background.alpha<1;if(this.rootContext=this._renderer.canvas.getContext(`2d`,{alpha:e}),this.activeContext=this.rootContext,this.activeResolution=this._renderer.resolution,!this.rootContext.imageSmoothingEnabled){let e=this.rootContext;e.webkitImageSmoothingEnabled?this.smoothProperty=`webkitImageSmoothingEnabled`:e.mozImageSmoothingEnabled?this.smoothProperty=`mozImageSmoothingEnabled`:e.oImageSmoothingEnabled?this.smoothProperty=`oImageSmoothingEnabled`:e.msImageSmoothingEnabled&&(this.smoothProperty=`msImageSmoothingEnabled`)}}setContextTransform(e,t,n,r){let i=r?U.IDENTITY:this._renderer.globalUniforms.globalUniformData?.worldTransformMatrix||U.IDENTITY,a=hf;a.copyFrom(i),a.append(e);let o=this._projTransform,s=this.activeResolution;if(n||=s,o){let e=U.shared;e.copyFrom(a),e.prepend(o),a=e}t?this.activeContext.setTransform(a.a*n,a.b*n,a.c*n,a.d*n,a.tx*s|0,a.ty*s|0):this.activeContext.setTransform(a.a*n,a.b*n,a.c*n,a.d*n,a.tx*s,a.ty*s)}clear(e,t){let n=this.activeContext,r=this._renderer;if(n.clearRect(0,0,r.width,r.height),e){let i=N.shared.setValue(e);n.globalAlpha=t??i.alpha,n.fillStyle=i.toHex(),n.fillRect(0,0,r.width,r.height),n.globalAlpha=1}}setBlendMode(e){if(this._activeBlendMode===e)return;this._activeBlendMode=e,this._outerBlend=!1;let t=this.blendModes[e];if(!t){this._warnedBlendModes.has(e)||(console.warn(`CanvasRenderer: blend mode "${e}" is not supported in Canvas2D; falling back to "source-over".`),this._warnedBlendModes.add(e)),this.activeContext.globalCompositeOperation=`source-over`;return}this.activeContext.globalCompositeOperation=t}destroy(){this.rootContext=null,this.activeContext=null,this._warnedBlendModes.clear()}};gf.extension={type:[W.CanvasSystem],name:`canvasContext`};var _f=class{constructor(){this.maxTextures=16,this.maxBatchableTextures=16,this.maxUniformBindings=0}init(){}};_f.extension={type:[W.CanvasSystem],name:`limits`};var vf=`#808080`,yf=new U,bf=new U,xf=new U,Sf=new U;function Cf(e,t,n){e.beginPath();for(let r=0;r<n.length;r+=3){let i=n[r]*2,a=n[r+1]*2,o=n[r+2]*2;e.moveTo(t[i],t[i+1]),e.lineTo(t[a],t[a+1]),e.lineTo(t[o],t[o+1]),e.closePath()}e.fill()}function wf(e){return`#${(e&16777215).toString(16).padStart(6,`0`)}`}function Tf(e,t,n,r,i,a){a=Math.max(0,Math.min(a,Math.min(r,i)/2)),e.moveTo(t+a,n),e.lineTo(t+r-a,n),e.quadraticCurveTo(t+r,n,t+r,n+a),e.lineTo(t+r,n+i-a),e.quadraticCurveTo(t+r,n+i,t+r-a,n+i),e.lineTo(t+a,n+i),e.quadraticCurveTo(t,n+i,t,n+i-a),e.lineTo(t,n+a),e.quadraticCurveTo(t,n,t+a,n)}function Ef(e,t){switch(t.type){case`rectangle`:{let n=t;e.rect(n.x,n.y,n.width,n.height);break}case`roundedRectangle`:{let n=t;Tf(e,n.x,n.y,n.width,n.height,n.radius);break}case`circle`:{let n=t;e.arc(n.x,n.y,n.radius,0,Math.PI*2);break}case`ellipse`:{let n=t;e.ellipse?e.ellipse(n.x,n.y,n.halfWidth,n.halfHeight,0,0,Math.PI*2):(e.save(),e.translate(n.x,n.y),e.scale(n.halfWidth,n.halfHeight),e.arc(0,0,1,0,Math.PI*2),e.restore());break}case`triangle`:{let n=t;e.moveTo(n.x,n.y),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3),e.closePath();break}default:{let n=t,r=n.points;if(!r?.length)break;e.moveTo(r[0],r[1]);for(let t=2;t<r.length;t+=2)e.lineTo(r[t],r[t+1]);n.closePath&&e.closePath();break}}}function Df(e,t){if(!t?.length)return!1;for(let n=0;n<t.length;n++){let r=t[n];if(!r?.shape)continue;let i=r.transform,a=i&&!i.isIdentity();a&&(e.save(),e.transform(i.a,i.b,i.c,i.d,i.tx,i.ty)),Ef(e,r.shape),a&&e.restore()}return!0}function Of(e,t,n,r){let i=e.fill;if(i instanceof bn){i.buildGradient();let a=i.texture;if(a){let o=K.getTintedPattern(a,t),s=n?Sf.copyFrom(n).scale(a.source.pixelWidth,a.source.pixelHeight):Sf.copyFrom(i.transform);return r&&!e.textureSpace&&s.append(r),K.applyPatternTransform(o,s),o}}if(i instanceof Fn){let e=K.getTintedPattern(i.texture,t);return K.applyPatternTransform(e,i.transform),e}let a=e.texture;if(a&&a!==h.WHITE){if(!a.source.resource)return vf;let r=K.getTintedPattern(a,t),i=n?Sf.copyFrom(n).scale(a.source.pixelWidth,a.source.pixelHeight):e.matrix;return K.applyPatternTransform(r,i),r}return wf(t)}var kf=class{constructor(){this.shader=null}contextChange(e){}execute(e,t){let n=e.renderer,r=n.canvasContext,i=r.activeContext,a=t.groupTransform,o=n.globalUniforms.globalUniformData?.worldColor??4294967295,s=t.groupColorAlpha,c=(o>>>24&255)/255,l=(s>>>24&255)/255,u=n.filter?.alphaMultiplier??1,f=c*l*u;if(f<=0)return;let p=o&16777215,m=Re(T(s&16777215,p)),g=n._roundPixels|t._roundPixels;i.save(),r.setContextTransform(a,g===1),r.setBlendMode(t.groupBlendMode);let _=t.context.instructions;for(let e=0;e<_.length;e++){let t=_[e];if(t.action===`texture`){let e=t.data,n=e.image,o=n?K.getCanvasSource(n):null;if(!o)continue;let s=e.alpha*f;if(s<=0)continue;let c=T(e.style,m);i.globalAlpha=s;let l=o;c!==16777215&&(l=K.getTintedCanvas({texture:n},c));let u=n.frame,p=n.source._resolution??n.source.resolution??1,h=u.x*p,_=u.y*p,v=u.width*p,y=u.height*p;l!==o&&(h=0,_=0);let b=e.transform,x=b&&!b.isIdentity(),S=n.rotate;x||S?(yf.copyFrom(a),x&&yf.append(b),S&&d.matrixAppendRotationInv(yf,S,e.dx,e.dy,e.dw,e.dh),r.setContextTransform(yf,g===1)):r.setContextTransform(a,g===1),i.drawImage(l,h,_,l===o?v:l.width,l===o?y:l.height,S?0:e.dx,S?0:e.dy,e.dw,e.dh),(x||S)&&r.setContextTransform(a,g===1);continue}let n=t.data,o=n?.path?.shapePath;if(!o?.shapePrimitives?.length)continue;let s=n.style,c=T(s.color,m),l=s.alpha*f;if(l<=0)continue;let u=t.action===`stroke`;if(i.globalAlpha=l,u){let e=s;i.lineWidth=e.width,i.lineCap=e.cap,i.lineJoin=e.join,i.miterLimit=e.miterLimit}let p=o.shapePrimitives;if(!u&&n.hole?.shapePath?.shapePrimitives?.length){let e=p[p.length-1];e.holes=n.hole.shapePath.shapePrimitives}for(let e=0;e<p.length;e++){let t=p[e];if(!t?.shape)continue;let n=t.transform,r=n&&!n.isIdentity(),o=s.texture&&s.texture!==h.WHITE,l=s.textureSpace===`global`?n:null,d=Of(s,c,o?Wn(bf,s,t.shape,l):null,r?xf.copyFrom(a).append(n):a);if(r&&(i.save(),i.transform(n.a,n.b,n.c,n.d,n.tx,n.ty)),u){let e=s;if(e.alignment!==.5&&!e.pixelLine){let n=[],r=[],a=[];cn[t.shape.type]?.build(t.shape,n)?(Tn(n,e,!1,t.shape.closePath??!0,r,a),i.fillStyle=d,Cf(i,r,a)):(i.strokeStyle=d,i.beginPath(),Ef(i,t.shape),i.stroke())}else i.strokeStyle=d,i.beginPath(),Ef(i,t.shape),i.stroke()}else i.fillStyle=d,i.beginPath(),Ef(i,t.shape),Df(i,t.holes)?i.fill(`evenodd`):i.fill();r&&i.restore()}}i.restore()}destroy(){this.shader=null}};kf.extension={type:[W.CanvasPipesAdaptor],name:`graphics`};var Af=class{init(e,t){this._renderer=e,this._renderTargetSystem=t}initGpuRenderTarget(e){let t=e.colorTexture,{canvas:n,context:r}=this._ensureCanvas(t);return{canvas:n,context:r,width:n.width,height:n.height}}resizeGpuRenderTarget(e){let t=e.colorTexture,{canvas:n}=this._ensureCanvas(t);n.width=e.pixelWidth,n.height=e.pixelHeight}startRenderPass(e,t,n,r){let i=this._renderTargetSystem.getGpuRenderTarget(e);this._renderer.canvasContext.activeContext=i.context,this._renderer.canvasContext.activeResolution=e.resolution,t&&this.clear(e,t,n,r)}clear(e,t,n,r){let i=this._renderTargetSystem.getGpuRenderTarget(e).context,a=r||{x:0,y:0,width:e.pixelWidth,height:e.pixelHeight};if(i.setTransform(1,0,0,1,0,0),i.clearRect(a.x,a.y,a.width,a.height),n){let e=N.shared.setValue(n);e.alpha>0&&(i.globalAlpha=e.alpha,i.fillStyle=e.toHex(),i.fillRect(a.x,a.y,a.width,a.height),i.globalAlpha=1)}}finishRenderPass(){}copyToTexture(e,t,n,r,i){let a=this._renderTargetSystem.getGpuRenderTarget(e).canvas,o=t.source,{context:s}=this._ensureCanvas(o),c=i?.x??0,l=i?.y??0;return s.drawImage(a,n.x,n.y,r.width,r.height,c,l,r.width,r.height),o.update(),t}destroyGpuRenderTarget(e){}_ensureCanvas(e){let t=e.resource;(!t||!rt.test(t))&&(t=r.get().createCanvas(e.pixelWidth,e.pixelHeight),e.resource=t),(t.width!==e.pixelWidth||t.height!==e.pixelHeight)&&(t.width=e.pixelWidth,t.height=e.pixelHeight);let n=t.getContext(`2d`);return{canvas:t,context:n}}},jf=class extends ei{constructor(e){super(e),this.adaptor=new Af,this.adaptor.init(e,this)}};jf.extension={type:[W.CanvasSystem],name:`renderTarget`};var Mf=class{constructor(e){}init(){}initSource(e){}generateCanvas(e){let t=r.get().createCanvas(),n=t.getContext(`2d`),i=K.getCanvasSource(e);if(!i)return t;let a=e.frame,o=e.source._resolution??e.source.resolution??1,s=a.x*o,c=a.y*o,l=a.width*o,u=a.height*o;return t.width=Math.ceil(l),t.height=Math.ceil(u),n.drawImage(i,s,c,l,u,0,0,l,u),t}getPixels(e){let t=this.generateCanvas(e);return{pixels:t.getContext(`2d`,{willReadFrequently:!0}).getImageData(0,0,t.width,t.height).data,width:t.width,height:t.height}}destroy(){}};Mf.extension={type:[W.CanvasSystem],name:`texture`};var Nf=[...Fr,gf,_f,Mf,jf],Pf=[Gr,yr,cr,Wr,gr,pf,sf,xr],Ff=[$d,kf],If=[],Lf=[],Rf=[];F.handleByNamedList(W.CanvasSystem,If),F.handleByNamedList(W.CanvasPipes,Lf),F.handleByNamedList(W.CanvasPipesAdaptor,Rf),F.add(...Nf,...Pf,...Ff);var zf=class extends Mr{constructor(){let e={name:`canvas`,type:P.CANVAS,systems:If,renderPipes:Lf,renderPipeAdaptors:Rf};super(e)}},Bf=(e=>(e[e.ELEMENT_ARRAY_BUFFER=34963]=`ELEMENT_ARRAY_BUFFER`,e[e.ARRAY_BUFFER=34962]=`ARRAY_BUFFER`,e[e.UNIFORM_BUFFER=35345]=`UNIFORM_BUFFER`,e))(Bf||{}),Vf=class{constructor(e,t){this._lastBindBaseLocation=-1,this._lastBindCallId=-1,this.buffer=e||null,this.updateID=-1,this.byteLength=-1,this.type=t}destroy(){this.buffer=null,this.updateID=-1,this.byteLength=-1,this.type=-1,this._lastBindBaseLocation=-1,this._lastBindCallId=-1}},Hf=class{constructor(e){this._boundBufferBases=Object.create(null),this._minBaseLocation=0,this._nextBindBaseIndex=this._minBaseLocation,this._bindCallId=0,this._renderer=e,this._managedBuffers=new zi({renderer:e,type:`resource`,onUnload:this.onBufferUnload.bind(this),name:`glBuffer`})}destroy(){this._managedBuffers.destroy(),this._renderer=null,this._gl=null,this._boundBufferBases={}}contextChange(){this._gl=this._renderer.gl,this.destroyAll(!0),this._maxBindings=this._renderer.limits.maxUniformBindings}getGlBuffer(e){return e._gcLastUsed=this._renderer.gc.now,e._gpuData[this._renderer.uid]||this.createGLBuffer(e)}bind(e){let{_gl:t}=this,n=this.getGlBuffer(e);t.bindBuffer(n.type,n.buffer)}bindBufferBase(e,t){let{_gl:n}=this;this._boundBufferBases[t]!==e&&(this._boundBufferBases[t]=e,e._lastBindBaseLocation=t,n.bindBufferBase(n.UNIFORM_BUFFER,t,e.buffer))}nextBindBase(e){this._bindCallId++,this._minBaseLocation=0,e&&(this._boundBufferBases[0]=null,this._minBaseLocation=1,this._nextBindBaseIndex<1&&(this._nextBindBaseIndex=1))}freeLocationForBufferBase(e){let t=this.getLastBindBaseLocation(e);if(t>=this._minBaseLocation)return e._lastBindCallId=this._bindCallId,t;let n=0,r=this._nextBindBaseIndex;for(;n<2;){r>=this._maxBindings&&(r=this._minBaseLocation,n++);let e=this._boundBufferBases[r];if(e&&e._lastBindCallId===this._bindCallId){r++;continue}break}return t=r,this._nextBindBaseIndex=r+1,n>=2?-1:(e._lastBindCallId=this._bindCallId,this._boundBufferBases[t]=null,t)}getLastBindBaseLocation(e){let t=e._lastBindBaseLocation;return this._boundBufferBases[t]===e?t:-1}bindBufferRange(e,t,n,r){let{_gl:i}=this;n||=0,t||=0,this._boundBufferBases[t]=null,i.bindBufferRange(i.UNIFORM_BUFFER,t||0,e.buffer,n*256,r||256)}updateBuffer(e){let{_gl:t}=this,n=this.getGlBuffer(e);if(e._updateID===n.updateID)return n;n.updateID=e._updateID,t.bindBuffer(n.type,n.buffer);let r=e.data,i=e.descriptor.usage&k.STATIC?t.STATIC_DRAW:t.DYNAMIC_DRAW;return r?n.byteLength>=r.byteLength?t.bufferSubData(n.type,0,r,0,e._updateSize/r.BYTES_PER_ELEMENT):(n.byteLength=r.byteLength,t.bufferData(n.type,r,i)):(n.byteLength=e.descriptor.size,t.bufferData(n.type,n.byteLength,i)),n}destroyAll(e=!1){this._managedBuffers.removeAll(e)}onBufferUnload(e,t=!1){let n=e._gpuData[this._renderer.uid];n&&(t||this._gl.deleteBuffer(n.buffer))}createGLBuffer(e){let{_gl:t}=this,n=Bf.ARRAY_BUFFER;e.descriptor.usage&k.INDEX?n=Bf.ELEMENT_ARRAY_BUFFER:e.descriptor.usage&k.UNIFORM&&(n=Bf.UNIFORM_BUFFER);let r=new Vf(t.createBuffer(),n);return e._gpuData[this._renderer.uid]=r,this._managedBuffers.add(e),r}resetState(){this._boundBufferBases=Object.create(null)}};Hf.extension={type:[W.WebGLSystem],name:`buffer`};var Uf=class e{constructor(e){this.supports={uint32Indices:!0,uniformBufferObject:!0,vertexArrayObject:!0,srgbTextures:!0,nonPowOf2wrapping:!0,msaa:!0,nonPowOf2mipmaps:!0},this._renderer=e,this.extensions=Object.create(null),this.handleContextLost=this.handleContextLost.bind(this),this.handleContextRestored=this.handleContextRestored.bind(this)}get isLost(){return!this.gl||this.gl.isContextLost()}contextChange(e){this.gl=e,this._renderer.gl=e}init(t){t={...e.defaultOptions,...t};let n=this.multiView=t.multiView;if(t.context&&n&&(D(`Renderer created with both a context and multiview enabled. Disabling multiView as both cannot work together.`),n=!1),n?this.canvas=r.get().createCanvas(this._renderer.canvas.width,this._renderer.canvas.height):this.canvas=this._renderer.view.canvas,t.context)this.initFromContext(t.context);else{let e=this._renderer.background.alpha<1,n=t.premultipliedAlpha??!0,r=t.antialias&&!this._renderer.backBuffer.useBackBuffer;this.createContext(t.preferWebGLVersion,{alpha:e,premultipliedAlpha:n,antialias:r,stencil:!0,preserveDrawingBuffer:t.preserveDrawingBuffer,powerPreference:t.powerPreference??`default`})}}ensureCanvasSize(e){if(!this.multiView){e!==this.canvas&&D(`multiView is disabled, but targetCanvas is not the main canvas`);return}let{canvas:t}=this;(t.width<e.width||t.height<e.height)&&(t.width=Math.max(e.width,e.width),t.height=Math.max(e.height,e.height))}initFromContext(e){this.gl=e,this.webGLVersion=e instanceof r.get().getWebGLRenderingContext()?1:2,this.getExtensions(),this.validateContext(e),this._renderer.runners.contextChange.emit(e);let t=this._renderer.view.canvas;t.addEventListener(`webglcontextlost`,this.handleContextLost,!1),t.addEventListener(`webglcontextrestored`,this.handleContextRestored,!1)}createContext(e,t){let n,r=this.canvas;if(e===2&&(n=r.getContext(`webgl2`,t)),!n&&(n=r.getContext(`webgl`,t),!n))throw Error(`This browser does not support WebGL. Try using the canvas renderer`);this.gl=n,this.initFromContext(this.gl)}getExtensions(){let{gl:e}=this,t={anisotropicFiltering:e.getExtension(`EXT_texture_filter_anisotropic`),floatTextureLinear:e.getExtension(`OES_texture_float_linear`),s3tc:e.getExtension(`WEBGL_compressed_texture_s3tc`),s3tc_sRGB:e.getExtension(`WEBGL_compressed_texture_s3tc_srgb`),etc:e.getExtension(`WEBGL_compressed_texture_etc`),etc1:e.getExtension(`WEBGL_compressed_texture_etc1`),pvrtc:e.getExtension(`WEBGL_compressed_texture_pvrtc`)||e.getExtension(`WEBKIT_WEBGL_compressed_texture_pvrtc`),atc:e.getExtension(`WEBGL_compressed_texture_atc`),astc:e.getExtension(`WEBGL_compressed_texture_astc`),bptc:e.getExtension(`EXT_texture_compression_bptc`),rgtc:e.getExtension(`EXT_texture_compression_rgtc`),loseContext:e.getExtension(`WEBGL_lose_context`)};if(this.webGLVersion===1)this.extensions={...t,drawBuffers:e.getExtension(`WEBGL_draw_buffers`),depthTexture:e.getExtension(`WEBGL_depth_texture`),vertexArrayObject:e.getExtension(`OES_vertex_array_object`)||e.getExtension(`MOZ_OES_vertex_array_object`)||e.getExtension(`WEBKIT_OES_vertex_array_object`),uint32ElementIndex:e.getExtension(`OES_element_index_uint`),floatTexture:e.getExtension(`OES_texture_float`),floatTextureLinear:e.getExtension(`OES_texture_float_linear`),textureHalfFloat:e.getExtension(`OES_texture_half_float`),textureHalfFloatLinear:e.getExtension(`OES_texture_half_float_linear`),vertexAttribDivisorANGLE:e.getExtension(`ANGLE_instanced_arrays`),srgb:e.getExtension(`EXT_sRGB`)};else{this.extensions={...t,colorBufferFloat:e.getExtension(`EXT_color_buffer_float`)};let n=e.getExtension(`WEBGL_provoking_vertex`);n&&n.provokingVertexWEBGL(n.FIRST_VERTEX_CONVENTION_WEBGL)}}handleContextLost(e){e.preventDefault(),this._contextLossForced&&(this._contextLossForced=!1,setTimeout(()=>{this.gl.isContextLost()&&this.extensions.loseContext?.restoreContext()},0))}handleContextRestored(){this.getExtensions(),this._renderer.runners.contextChange.emit(this.gl)}destroy(){let e=this._renderer.view.canvas;this._renderer=null,e.removeEventListener(`webglcontextlost`,this.handleContextLost),e.removeEventListener(`webglcontextrestored`,this.handleContextRestored),this.gl.useProgram(null),this.extensions.loseContext?.loseContext()}forceContextLoss(){this.extensions.loseContext?.loseContext(),this._contextLossForced=!0}validateContext(e){let t=e.getContextAttributes();t&&!t.stencil&&D(`Provided WebGL context does not have a stencil buffer, masks may not render correctly`);let n=this.supports,r=this.webGLVersion===2,i=this.extensions;n.uint32Indices=r||!!i.uint32ElementIndex,n.uniformBufferObject=r,n.vertexArrayObject=r||!!i.vertexArrayObject,n.srgbTextures=r||!!i.srgb,n.nonPowOf2wrapping=r,n.nonPowOf2mipmaps=r,n.msaa=r,n.uint32Indices||D(`Provided WebGL context does not support 32 index buffer, large scenes may not render correctly`)}};Uf.extension={type:[W.WebGLSystem],name:`context`},Uf.defaultOptions={context:null,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:void 0,preferWebGLVersion:2,multiView:!1};var Wf=Uf,Gf=(e=>(e[e.RGBA=6408]=`RGBA`,e[e.RGB=6407]=`RGB`,e[e.RG=33319]=`RG`,e[e.RED=6403]=`RED`,e[e.RGBA_INTEGER=36249]=`RGBA_INTEGER`,e[e.RGB_INTEGER=36248]=`RGB_INTEGER`,e[e.RG_INTEGER=33320]=`RG_INTEGER`,e[e.RED_INTEGER=36244]=`RED_INTEGER`,e[e.ALPHA=6406]=`ALPHA`,e[e.LUMINANCE=6409]=`LUMINANCE`,e[e.LUMINANCE_ALPHA=6410]=`LUMINANCE_ALPHA`,e[e.DEPTH_COMPONENT=6402]=`DEPTH_COMPONENT`,e[e.DEPTH_STENCIL=34041]=`DEPTH_STENCIL`,e))(Gf||{}),Kf=(e=>(e[e.TEXTURE_2D=3553]=`TEXTURE_2D`,e[e.TEXTURE_CUBE_MAP=34067]=`TEXTURE_CUBE_MAP`,e[e.TEXTURE_2D_ARRAY=35866]=`TEXTURE_2D_ARRAY`,e[e.TEXTURE_CUBE_MAP_POSITIVE_X=34069]=`TEXTURE_CUBE_MAP_POSITIVE_X`,e[e.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]=`TEXTURE_CUBE_MAP_NEGATIVE_X`,e[e.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]=`TEXTURE_CUBE_MAP_POSITIVE_Y`,e[e.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]=`TEXTURE_CUBE_MAP_NEGATIVE_Y`,e[e.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]=`TEXTURE_CUBE_MAP_POSITIVE_Z`,e[e.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]=`TEXTURE_CUBE_MAP_NEGATIVE_Z`,e))(Kf||{}),qf=(e=>(e[e.CLAMP=33071]=`CLAMP`,e[e.REPEAT=10497]=`REPEAT`,e[e.MIRRORED_REPEAT=33648]=`MIRRORED_REPEAT`,e))(qf||{}),Q=(e=>(e[e.UNSIGNED_BYTE=5121]=`UNSIGNED_BYTE`,e[e.UNSIGNED_SHORT=5123]=`UNSIGNED_SHORT`,e[e.UNSIGNED_SHORT_5_6_5=33635]=`UNSIGNED_SHORT_5_6_5`,e[e.UNSIGNED_SHORT_4_4_4_4=32819]=`UNSIGNED_SHORT_4_4_4_4`,e[e.UNSIGNED_SHORT_5_5_5_1=32820]=`UNSIGNED_SHORT_5_5_5_1`,e[e.UNSIGNED_INT=5125]=`UNSIGNED_INT`,e[e.UNSIGNED_INT_10F_11F_11F_REV=35899]=`UNSIGNED_INT_10F_11F_11F_REV`,e[e.UNSIGNED_INT_2_10_10_10_REV=33640]=`UNSIGNED_INT_2_10_10_10_REV`,e[e.UNSIGNED_INT_24_8=34042]=`UNSIGNED_INT_24_8`,e[e.UNSIGNED_INT_5_9_9_9_REV=35902]=`UNSIGNED_INT_5_9_9_9_REV`,e[e.BYTE=5120]=`BYTE`,e[e.SHORT=5122]=`SHORT`,e[e.INT=5124]=`INT`,e[e.FLOAT=5126]=`FLOAT`,e[e.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]=`FLOAT_32_UNSIGNED_INT_24_8_REV`,e[e.HALF_FLOAT=36193]=`HALF_FLOAT`,e))(Q||{}),Jf={uint8x2:Q.UNSIGNED_BYTE,uint8x4:Q.UNSIGNED_BYTE,sint8x2:Q.BYTE,sint8x4:Q.BYTE,unorm8x2:Q.UNSIGNED_BYTE,unorm8x4:Q.UNSIGNED_BYTE,snorm8x2:Q.BYTE,snorm8x4:Q.BYTE,uint16x2:Q.UNSIGNED_SHORT,uint16x4:Q.UNSIGNED_SHORT,sint16x2:Q.SHORT,sint16x4:Q.SHORT,unorm16x2:Q.UNSIGNED_SHORT,unorm16x4:Q.UNSIGNED_SHORT,snorm16x2:Q.SHORT,snorm16x4:Q.SHORT,float16x2:Q.HALF_FLOAT,float16x4:Q.HALF_FLOAT,float32:Q.FLOAT,float32x2:Q.FLOAT,float32x3:Q.FLOAT,float32x4:Q.FLOAT,uint32:Q.UNSIGNED_INT,uint32x2:Q.UNSIGNED_INT,uint32x3:Q.UNSIGNED_INT,uint32x4:Q.UNSIGNED_INT,sint32:Q.INT,sint32x2:Q.INT,sint32x3:Q.INT,sint32x4:Q.INT};function Yf(e){return Jf[e]??Jf.float32}var Xf={"point-list":0,"line-list":1,"line-strip":3,"triangle-list":4,"triangle-strip":5},Zf=class{constructor(){this.vaoCache=Object.create(null)}destroy(){this.vaoCache=Object.create(null)}},Qf=class{constructor(e){this._renderer=e,this._activeGeometry=null,this._activeVao=null,this.hasVao=!0,this.hasInstance=!0,this._managedGeometries=new zi({renderer:e,type:`resource`,onUnload:this.onGeometryUnload.bind(this),name:`glGeometry`})}contextChange(){let e=this.gl=this._renderer.gl;if(!this._renderer.context.supports.vertexArrayObject)throw Error(`[PixiJS] Vertex Array Objects are not supported on this device`);this.destroyAll(!0);let t=this._renderer.context.extensions.vertexArrayObject;t&&(e.createVertexArray=()=>t.createVertexArrayOES(),e.bindVertexArray=e=>t.bindVertexArrayOES(e),e.deleteVertexArray=e=>t.deleteVertexArrayOES(e));let n=this._renderer.context.extensions.vertexAttribDivisorANGLE;n&&(e.drawArraysInstanced=(e,t,r,i)=>{n.drawArraysInstancedANGLE(e,t,r,i)},e.drawElementsInstanced=(e,t,r,i,a)=>{n.drawElementsInstancedANGLE(e,t,r,i,a)},e.vertexAttribDivisor=(e,t)=>n.vertexAttribDivisorANGLE(e,t)),this._activeGeometry=null,this._activeVao=null}bind(e,t){let n=this.gl;this._activeGeometry=e;let r=this.getVao(e,t);this._activeVao!==r&&(this._activeVao=r,n.bindVertexArray(r)),this.updateBuffers()}resetState(){this.unbind()}updateBuffers(){let e=this._activeGeometry,t=this._renderer.buffer;for(let n=0;n<e.buffers.length;n++){let r=e.buffers[n];t.updateBuffer(r)}e._gcLastUsed=this._renderer.gc.now}checkCompatibility(e,t){let n=e.attributes,r=t._attributeData;for(let e in r)if(!n[e])throw Error(`shader and geometry incompatible, geometry missing the "${e}" attribute`)}getSignature(e,t){let n=e.attributes,r=t._attributeData,i=[`g`,e.uid];for(let e in n)r[e]&&i.push(e,r[e].location);return i.join(`-`)}getVao(e,t){return e._gpuData[this._renderer.uid]?.vaoCache[t._key]||this.initGeometryVao(e,t)}initGeometryVao(e,t,n=!0){let r=this._renderer.gl,i=this._renderer.buffer;this._renderer.shader._getProgramData(t),this.checkCompatibility(e,t);let a=this.getSignature(e,t),o=e._gpuData[this._renderer.uid];o||(o=new Zf,e._gpuData[this._renderer.uid]=o,this._managedGeometries.add(e));let s=o.vaoCache,c=s[a];if(c)return s[t._key]=c,c;qi(e,t._attributeData);let l=e.buffers;c=r.createVertexArray(),r.bindVertexArray(c);for(let e=0;e<l.length;e++){let t=l[e];i.bind(t)}return this.activateVao(e,t),s[t._key]=c,s[a]=c,r.bindVertexArray(null),c}onGeometryUnload(e,t=!1){let n=e._gpuData[this._renderer.uid];if(!n)return;let r=n.vaoCache;if(!t)for(let e in r)this._activeVao!==r[e]&&this.resetState(),this.gl.deleteVertexArray(r[e])}destroyAll(e=!1){this._managedGeometries.removeAll(e)}activateVao(e,t){let n=this._renderer.gl,r=this._renderer.buffer,i=e.attributes;e.indexBuffer&&r.bind(e.indexBuffer);let a=null;for(let e in i){let o=i[e],s=o.buffer,c=r.getGlBuffer(s),l=t._attributeData[e];if(l){a!==c&&(r.bind(s),a=c);let e=l.location;n.enableVertexAttribArray(e);let t=j(o.format),i=Yf(o.format);if(l.format?.substring(1,4)===`int`?n.vertexAttribIPointer(e,t.size,i,o.stride,o.offset):n.vertexAttribPointer(e,t.size,i,t.normalised,o.stride,o.offset),o.instance)if(this.hasInstance){let t=o.divisor??1;n.vertexAttribDivisor(e,t)}else throw Error(`geometry error, GPU Instancing is not supported on this device`)}}}draw(e,t,n,r){let{gl:i}=this._renderer,a=this._activeGeometry,o=Xf[e||a.topology];if(r??=a.instanceCount,a.indexBuffer){let e=a.indexBuffer.data.BYTES_PER_ELEMENT,s=e===2?i.UNSIGNED_SHORT:i.UNSIGNED_INT;r===1?i.drawElements(o,t||a.indexBuffer.data.length,s,(n||0)*e):i.drawElementsInstanced(o,t||a.indexBuffer.data.length,s,(n||0)*e,r)}else r===1?i.drawArrays(o,n||0,t||a.getSize()):i.drawArraysInstanced(o,n||0,t||a.getSize(),r);return this}unbind(){this.gl.bindVertexArray(null),this._activeVao=null,this._activeGeometry=null}destroy(){this._managedGeometries.destroy(),this._renderer=null,this.gl=null,this._activeVao=null,this._activeGeometry=null}};Qf.extension={type:[W.WebGLSystem],name:`geometry`};var $f=new he({attributes:{aPosition:[-1,-1,3,-1,-1,3]}}),ep=class e{constructor(e){this.useBackBuffer=!1,this._useBackBufferThisRender=!1,this._renderer=e}init(t={}){let{useBackBuffer:n,antialias:r}={...e.defaultOptions,...t};this.useBackBuffer=n,this._antialias=r,this._renderer.context.supports.msaa||(D(`antialiasing, is not supported on when using the back buffer`),this._antialias=!1),this._state=et.for2d();let i=new be({vertex:`
|
|
2290
|
+
attribute vec2 aPosition;
|
|
2291
|
+
out vec2 vUv;
|
|
2292
|
+
|
|
2293
|
+
void main() {
|
|
2294
|
+
gl_Position = vec4(aPosition, 0.0, 1.0);
|
|
2295
|
+
|
|
2296
|
+
vUv = (aPosition + 1.0) / 2.0;
|
|
2297
|
+
|
|
2298
|
+
// flip dem UVs
|
|
2299
|
+
vUv.y = 1.0 - vUv.y;
|
|
2300
|
+
}`,fragment:`
|
|
2301
|
+
in vec2 vUv;
|
|
2302
|
+
out vec4 finalColor;
|
|
2303
|
+
|
|
2304
|
+
uniform sampler2D uTexture;
|
|
2305
|
+
|
|
2306
|
+
void main() {
|
|
2307
|
+
finalColor = texture(uTexture, vUv);
|
|
2308
|
+
}`,name:`big-triangle`});this._bigTriangleShader=new ce({glProgram:i,resources:{uTexture:h.WHITE.source}})}renderStart(e){let t=this._renderer.renderTarget.getRenderTarget(e.target);if(this._useBackBufferThisRender=this.useBackBuffer&&!!t.isRoot,this._useBackBufferThisRender){let t=this._renderer.renderTarget.getRenderTarget(e.target);this._targetTexture=t.colorTexture,e.target=this._getBackBufferTexture(t.colorTexture)}}renderEnd(){this._presentBackBuffer()}_presentBackBuffer(){let e=this._renderer;e.renderTarget.finishRenderPass(),this._useBackBufferThisRender&&(e.renderTarget.bind(this._targetTexture,!1),this._bigTriangleShader.resources.uTexture=this._backBufferTexture.source,e.encoder.draw({geometry:$f,shader:this._bigTriangleShader,state:this._state}))}_getBackBufferTexture(e){return this._backBufferTexture=this._backBufferTexture||new h({source:new m({width:e.width,height:e.height,resolution:e._resolution,antialias:this._antialias})}),this._backBufferTexture.source.resize(e.width,e.height,e._resolution),this._backBufferTexture}destroy(){this._backBufferTexture&&=(this._backBufferTexture.destroy(),null)}};ep.extension={type:[W.WebGLSystem],name:`backBuffer`,priority:1},ep.defaultOptions={useBackBuffer:!1};var tp=ep,np=class{constructor(e){this._colorMaskCache=15,this._renderer=e}setMask(e){this._colorMaskCache!==e&&(this._colorMaskCache=e,this._renderer.gl.colorMask(!!(e&8),!!(e&4),!!(e&2),!!(e&1)))}};np.extension={type:[W.WebGLSystem],name:`colorMask`};var rp=class{constructor(e){this.commandFinished=Promise.resolve(),this._renderer=e}setGeometry(e,t){this._renderer.geometry.bind(e,t.glProgram)}finishRenderPass(){}draw(e){let t=this._renderer,{geometry:n,shader:r,state:i,skipSync:a,topology:o,size:s,start:c,instanceCount:l}=e;t.shader.bind(r,a),t.geometry.bind(n,t.shader._activeProgram),i&&t.state.set(i),t.geometry.draw(o,s,c,l??n.instanceCount)}destroy(){this._renderer=null}};rp.extension={type:[W.WebGLSystem],name:`encoder`};var ip=class{constructor(e){this._renderer=e}contextChange(){let e=this._renderer.gl;this.maxTextures=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),this.maxBatchableTextures=mi(this.maxTextures,e);let t=this._renderer.context.webGLVersion===2;this.maxUniformBindings=t?e.getParameter(e.MAX_UNIFORM_BUFFER_BINDINGS):0}destroy(){}};ip.extension={type:[W.WebGLSystem],name:`limits`};var ap=class{constructor(){this.width=-1,this.height=-1,this.msaa=!1,this._attachedMipLevel=0,this._attachedLayer=0,this.msaaRenderBuffer=[]}},op=class{constructor(e){this._stencilCache={enabled:!1,stencilReference:0,stencilMode:di.NONE},this._renderTargetStencilState=Object.create(null),e.renderTarget.onRenderTargetChange.add(this)}contextChange(e){this._gl=e,this._comparisonFuncMapping={always:e.ALWAYS,never:e.NEVER,equal:e.EQUAL,"not-equal":e.NOTEQUAL,less:e.LESS,"less-equal":e.LEQUAL,greater:e.GREATER,"greater-equal":e.GEQUAL},this._stencilOpsMapping={keep:e.KEEP,zero:e.ZERO,replace:e.REPLACE,invert:e.INVERT,"increment-clamp":e.INCR,"decrement-clamp":e.DECR,"increment-wrap":e.INCR_WRAP,"decrement-wrap":e.DECR_WRAP},this.resetState()}onRenderTargetChange(e){if(this._activeRenderTarget===e)return;this._activeRenderTarget=e;let t=this._renderTargetStencilState[e.uid];t||=this._renderTargetStencilState[e.uid]={stencilMode:di.DISABLED,stencilReference:0},this.setStencilMode(t.stencilMode,t.stencilReference)}resetState(){this._stencilCache.enabled=!1,this._stencilCache.stencilMode=di.NONE,this._stencilCache.stencilReference=0}setStencilMode(e,t){let n=this._renderTargetStencilState[this._activeRenderTarget.uid],r=this._gl,i=na[e],a=this._stencilCache;if(n.stencilMode=e,n.stencilReference=t,e===di.DISABLED){this._stencilCache.enabled&&(this._stencilCache.enabled=!1,r.disable(r.STENCIL_TEST));return}this._stencilCache.enabled||(this._stencilCache.enabled=!0,r.enable(r.STENCIL_TEST)),(e!==a.stencilMode||a.stencilReference!==t)&&(a.stencilMode=e,a.stencilReference=t,r.stencilFunc(this._comparisonFuncMapping[i.stencilBack.compare],t,255),r.stencilOp(r.KEEP,r.KEEP,this._stencilOpsMapping[i.stencilBack.passOp]))}};op.extension={type:[W.WebGLSystem],name:`stencil`};var sp={f32:4,i32:4,"vec2<f32>":8,"vec3<f32>":12,"vec4<f32>":16,"vec2<i32>":8,"vec3<i32>":12,"vec4<i32>":16,"mat2x2<f32>":32,"mat3x3<f32>":48,"mat4x4<f32>":64};function cp(e){let t=e.map(e=>({data:e,offset:0,size:0})),n=0,r=0;for(let e=0;e<t.length;e++){let i=t[e];if(n=sp[i.data.type],!n)throw Error(`Unknown type ${i.data.type}`);i.data.size>1&&(n=Math.max(n,16)*i.data.size);let a=n===12?16:n;i.size=n;let o=r%16;o>0&&16-o<a?r+=(16-o)%16:r+=(n-o%n)%n,i.offset=r,r+=n}return r=Math.ceil(r/16)*16,{uboElements:t,size:r}}function lp(e,t){let n=Math.max(sp[e.data.type]/16,1),r=e.data.value.length/e.data.size,i=(4-r%4)%4,a=e.data.type.indexOf(`i32`)>=0?`dataInt32`:`data`;return`
|
|
2309
|
+
v = uv.${e.data.name};
|
|
2310
|
+
offset += ${t};
|
|
2311
|
+
|
|
2312
|
+
arrayOffset = offset;
|
|
2313
|
+
|
|
2314
|
+
t = 0;
|
|
2315
|
+
|
|
2316
|
+
for(var i=0; i < ${e.data.size*n}; i++)
|
|
2317
|
+
{
|
|
2318
|
+
for(var j = 0; j < ${r}; j++)
|
|
2319
|
+
{
|
|
2320
|
+
${a}[arrayOffset++] = v[t++];
|
|
2321
|
+
}
|
|
2322
|
+
${i===0?``:`arrayOffset += ${i};`}
|
|
2323
|
+
}
|
|
2324
|
+
`}function up(e){return Xi(e,`uboStd40`,lp,Qi)}var dp=class extends $i{constructor(){super({createUboElements:cp,generateUboSync:up})}};dp.extension={type:[W.WebGLSystem],name:`ubo`};var fp=class{constructor(){this._clearColorCache=[0,0,0,0],this._viewPortCache=new p}init(e,t){this._renderer=e,this._renderTargetSystem=t,e.runners.contextChange.add(this)}contextChange(){this._clearColorCache=[0,0,0,0],this._viewPortCache=new p;let e=this._renderer.gl;this._drawBuffersCache=[];for(let t=1;t<=16;t++)this._drawBuffersCache[t]=Array.from({length:t},(t,n)=>e.COLOR_ATTACHMENT0+n)}copyToTexture(e,t,n,r,i){let a=this._renderTargetSystem,o=this._renderer,s=a.getGpuRenderTarget(e),c=o.gl;return this.finishRenderPass(e),c.bindFramebuffer(c.FRAMEBUFFER,s.resolveTargetFramebuffer),o.texture.bind(t,0),c.copyTexSubImage2D(c.TEXTURE_2D,0,i.x,i.y,n.x,n.y,r.width,r.height),t}startRenderPass(e,t=!0,n,r,i=0,a=0){let o=this._renderTargetSystem,s=e.colorTexture,c=o.getGpuRenderTarget(e);if(a!==0&&this._renderer.context.webGLVersion<2)throw Error(`[RenderTargetSystem] Rendering to array layers requires WebGL2.`);if(i>0){if(c.msaa)throw Error(`[RenderTargetSystem] Rendering to mip levels is not supported with MSAA render targets.`);if(this._renderer.context.webGLVersion<2)throw Error(`[RenderTargetSystem] Rendering to mip levels requires WebGL2.`)}let l=r.y;e.isRoot&&(l=s.pixelHeight-r.height-r.y),e.colorTextures.forEach(e=>{this._renderer.texture.unbind(e)});let u=this._renderer.gl;u.bindFramebuffer(u.FRAMEBUFFER,c.framebuffer),!e.isRoot&&(c._attachedMipLevel!==i||c._attachedLayer!==a)&&(e.colorTextures.forEach((e,t)=>{let n=this._renderer.texture.getGlSource(e);if(n.target===u.TEXTURE_2D){if(a!==0)throw Error(`[RenderTargetSystem] layer must be 0 when rendering to 2D textures in WebGL.`);u.framebufferTexture2D(u.FRAMEBUFFER,u.COLOR_ATTACHMENT0+t,u.TEXTURE_2D,n.texture,i)}else if(n.target===u.TEXTURE_2D_ARRAY){if(this._renderer.context.webGLVersion<2)throw Error(`[RenderTargetSystem] Rendering to 2D array textures requires WebGL2.`);u.framebufferTextureLayer(u.FRAMEBUFFER,u.COLOR_ATTACHMENT0+t,n.texture,i,a)}else if(n.target===u.TEXTURE_CUBE_MAP){if(a<0||a>5)throw Error(`[RenderTargetSystem] Cube map layer must be between 0 and 5.`);u.framebufferTexture2D(u.FRAMEBUFFER,u.COLOR_ATTACHMENT0+t,u.TEXTURE_CUBE_MAP_POSITIVE_X+a,n.texture,i)}else throw Error(`[RenderTargetSystem] Unsupported texture target for render-to-layer in WebGL.`)}),c._attachedMipLevel=i,c._attachedLayer=a),e.colorTextures.length>1&&this._setDrawBuffers(e,u);let d=this._viewPortCache;(d.x!==r.x||d.y!==l||d.width!==r.width||d.height!==r.height)&&(d.x=r.x,d.y=l,d.width=r.width,d.height=r.height,u.viewport(r.x,l,r.width,r.height)),!c.depthStencilRenderBuffer&&(e.stencil||e.depth)&&this._initStencil(c),this.clear(e,t,n)}finishRenderPass(e){let t=this._renderTargetSystem.getGpuRenderTarget(e);if(!t.msaa)return;let n=this._renderer.gl;n.bindFramebuffer(n.FRAMEBUFFER,t.resolveTargetFramebuffer),n.bindFramebuffer(n.READ_FRAMEBUFFER,t.framebuffer),n.blitFramebuffer(0,0,t.width,t.height,0,0,t.width,t.height,n.COLOR_BUFFER_BIT,n.NEAREST),n.bindFramebuffer(n.FRAMEBUFFER,t.framebuffer)}initGpuRenderTarget(e){let t=this._renderer.gl,n=new ap;return n._attachedMipLevel=0,n._attachedLayer=0,e.colorTexture instanceof rt?(this._renderer.context.ensureCanvasSize(e.colorTexture.resource),n.framebuffer=null,n):(this._initColor(e,n),t.bindFramebuffer(t.FRAMEBUFFER,null),n)}destroyGpuRenderTarget(e){let t=this._renderer.gl;e.framebuffer&&=(t.deleteFramebuffer(e.framebuffer),null),e.resolveTargetFramebuffer&&=(t.deleteFramebuffer(e.resolveTargetFramebuffer),null),e.depthStencilRenderBuffer&&=(t.deleteRenderbuffer(e.depthStencilRenderBuffer),null),e.msaaRenderBuffer.forEach(e=>{t.deleteRenderbuffer(e)}),e.msaaRenderBuffer=null}clear(e,t,n,r,i=0,a=0){if(!t)return;if(a!==0)throw Error(`[RenderTargetSystem] Clearing array layers is not supported in WebGL renderer.`);let o=this._renderTargetSystem;typeof t==`boolean`&&(t=t?Nr.ALL:Nr.NONE);let s=this._renderer.gl;if(t&Nr.COLOR){n??=o.defaultClearColor;let e=this._clearColorCache,t=n;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||e[3]!==t[3])&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],s.clearColor(t[0],t[1],t[2],t[3]))}s.clear(t)}resizeGpuRenderTarget(e){if(e.isRoot)return;let t=this._renderTargetSystem.getGpuRenderTarget(e);this._resizeColor(e,t),(e.stencil||e.depth)&&this._resizeStencil(t)}_initColor(e,t){let n=this._renderer,r=n.gl,i=r.createFramebuffer();if(t.resolveTargetFramebuffer=i,r.bindFramebuffer(r.FRAMEBUFFER,i),t.width=e.colorTexture.source.pixelWidth,t.height=e.colorTexture.source.pixelHeight,e.colorTextures.forEach((e,i)=>{let a=e.source;a.antialias&&(n.context.supports.msaa?t.msaa=!0:D(`[RenderTexture] Antialiasing on textures is not supported in WebGL1`)),n.texture.bindSource(a,0);let o=n.texture.getGlSource(a),s=o.texture;if(o.target===r.TEXTURE_2D)r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0+i,r.TEXTURE_2D,s,0);else if(o.target===r.TEXTURE_2D_ARRAY){if(n.context.webGLVersion<2)throw Error(`[RenderTargetSystem] TEXTURE_2D_ARRAY requires WebGL2.`);r.framebufferTextureLayer(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0+i,s,0,0)}else if(o.target===r.TEXTURE_CUBE_MAP)r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0+i,r.TEXTURE_CUBE_MAP_POSITIVE_X,s,0);else throw Error(`[RenderTargetSystem] Unsupported texture target for framebuffer attachment.`)}),t.msaa){let n=r.createFramebuffer();t.framebuffer=n,r.bindFramebuffer(r.FRAMEBUFFER,n),e.colorTextures.forEach((e,n)=>{let i=r.createRenderbuffer();t.msaaRenderBuffer[n]=i})}else t.framebuffer=i;this._resizeColor(e,t)}_resizeColor(e,t){let n=e.colorTexture.source;if(t.width=n.pixelWidth,t.height=n.pixelHeight,t._attachedMipLevel=0,t._attachedLayer=0,e.colorTextures.forEach((e,t)=>{t!==0&&e.source.resize(n.width,n.height,n._resolution)}),t.msaa){let n=this._renderer,r=n.gl,i=t.framebuffer;r.bindFramebuffer(r.FRAMEBUFFER,i),e.colorTextures.forEach((e,i)=>{let a=e.source;n.texture.bindSource(a,0);let o=n.texture.getGlSource(a).internalFormat,s=t.msaaRenderBuffer[i];r.bindRenderbuffer(r.RENDERBUFFER,s),r.renderbufferStorageMultisample(r.RENDERBUFFER,4,o,a.pixelWidth,a.pixelHeight),r.framebufferRenderbuffer(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0+i,r.RENDERBUFFER,s)})}}_initStencil(e){if(e.framebuffer===null)return;let t=this._renderer.gl,n=t.createRenderbuffer();e.depthStencilRenderBuffer=n,t.bindRenderbuffer(t.RENDERBUFFER,n),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.RENDERBUFFER,n),this._resizeStencil(e)}_resizeStencil(e){let t=this._renderer.gl;t.bindRenderbuffer(t.RENDERBUFFER,e.depthStencilRenderBuffer),e.msaa?t.renderbufferStorageMultisample(t.RENDERBUFFER,4,t.DEPTH24_STENCIL8,e.width,e.height):t.renderbufferStorage(t.RENDERBUFFER,this._renderer.context.webGLVersion===2?t.DEPTH24_STENCIL8:t.DEPTH_STENCIL,e.width,e.height)}prerender(e){let t=e.colorTexture.resource;this._renderer.context.multiView&&rt.test(t)&&this._renderer.context.ensureCanvasSize(t)}postrender(e){if(this._renderer.context.multiView&&rt.test(e.colorTexture.resource)){let t=this._renderer.context.canvas,n=e.colorTexture;n.context2D.drawImage(t,0,n.pixelHeight-t.height)}}_setDrawBuffers(e,t){let n=e.colorTextures.length,r=this._drawBuffersCache[n];if(this._renderer.context.webGLVersion===1){let e=this._renderer.context.extensions.drawBuffers;e?e.drawBuffersWEBGL(r):D(`[RenderTexture] This WebGL1 context does not support rendering to multiple targets`)}else t.drawBuffers(r)}},pp=class extends ei{constructor(e){super(e),this.adaptor=new fp,this.adaptor.init(e,this)}};pp.extension={type:[W.WebGLSystem],name:`renderTarget`};function mp(e,t){let n=[],r=[`
|
|
2325
|
+
var g = s.groups;
|
|
2326
|
+
var sS = r.shader;
|
|
2327
|
+
var p = s.glProgram;
|
|
2328
|
+
var ugS = r.uniformGroup;
|
|
2329
|
+
var resources;
|
|
2330
|
+
`],i=!1,a=0,o=t._getProgramData(e.glProgram);for(let s in e.groups){let c=e.groups[s];n.push(`
|
|
2331
|
+
resources = g[${s}].resources;
|
|
2332
|
+
`);for(let l in c.resources){let u=c.resources[l];if(u instanceof pe)if(u.ubo){let t=e._uniformBindMap[s][Number(l)];n.push(`
|
|
2333
|
+
sS.bindUniformBlock(
|
|
2334
|
+
resources[${l}],
|
|
2335
|
+
'${t}',
|
|
2336
|
+
${e.glProgram._uniformBlockData[t].index}
|
|
2337
|
+
);
|
|
2338
|
+
`)}else n.push(`
|
|
2339
|
+
ugS.updateUniformGroup(resources[${l}], p, sD);
|
|
2340
|
+
`);else if(u instanceof ra){let t=e._uniformBindMap[s][Number(l)];n.push(`
|
|
2341
|
+
sS.bindUniformBlock(
|
|
2342
|
+
resources[${l}],
|
|
2343
|
+
'${t}',
|
|
2344
|
+
${e.glProgram._uniformBlockData[t].index}
|
|
2345
|
+
);
|
|
2346
|
+
`)}else if(u instanceof m){let c=e._uniformBindMap[s][l],u=o.uniformData[c];u&&(i||(i=!0,r.push(`
|
|
2347
|
+
var tS = r.texture;
|
|
2348
|
+
`)),t._gl.uniform1i(u.location,a),n.push(`
|
|
2349
|
+
tS.bind(resources[${l}], ${a});
|
|
2350
|
+
`),a++)}}}let s=[...r,...n].join(`
|
|
2351
|
+
`);return Function(`r`,`s`,`sD`,s)}var hp=class{},gp=class{constructor(e,t){this.program=e,this.uniformData=t,this.uniformGroups={},this.uniformDirtyGroups={},this.uniformBlockBindings={}}destroy(){this.uniformData=null,this.uniformGroups=null,this.uniformDirtyGroups=null,this.uniformBlockBindings=null,this.program=null}};function _p(e,t,n){let r=e.createShader(t);return e.shaderSource(r,n),e.compileShader(r),r}function vp(e){let t=Array(e);for(let e=0;e<t.length;e++)t[e]=!1;return t}function yp(e,t){switch(e){case`float`:return 0;case`vec2`:return new Float32Array(2*t);case`vec3`:return new Float32Array(3*t);case`vec4`:return new Float32Array(4*t);case`int`:case`uint`:case`sampler2D`:case`sampler2DArray`:return 0;case`ivec2`:return new Int32Array(2*t);case`ivec3`:return new Int32Array(3*t);case`ivec4`:return new Int32Array(4*t);case`uvec2`:return new Uint32Array(2*t);case`uvec3`:return new Uint32Array(3*t);case`uvec4`:return new Uint32Array(4*t);case`bool`:return!1;case`bvec2`:return vp(2*t);case`bvec3`:return vp(3*t);case`bvec4`:return vp(4*t);case`mat2`:return new Float32Array([1,0,0,1]);case`mat3`:return new Float32Array([1,0,0,0,1,0,0,0,1]);case`mat4`:return new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}return null}var bp=null,xp={FLOAT:`float`,FLOAT_VEC2:`vec2`,FLOAT_VEC3:`vec3`,FLOAT_VEC4:`vec4`,INT:`int`,INT_VEC2:`ivec2`,INT_VEC3:`ivec3`,INT_VEC4:`ivec4`,UNSIGNED_INT:`uint`,UNSIGNED_INT_VEC2:`uvec2`,UNSIGNED_INT_VEC3:`uvec3`,UNSIGNED_INT_VEC4:`uvec4`,BOOL:`bool`,BOOL_VEC2:`bvec2`,BOOL_VEC3:`bvec3`,BOOL_VEC4:`bvec4`,FLOAT_MAT2:`mat2`,FLOAT_MAT3:`mat3`,FLOAT_MAT4:`mat4`,SAMPLER_2D:`sampler2D`,INT_SAMPLER_2D:`sampler2D`,UNSIGNED_INT_SAMPLER_2D:`sampler2D`,SAMPLER_CUBE:`samplerCube`,INT_SAMPLER_CUBE:`samplerCube`,UNSIGNED_INT_SAMPLER_CUBE:`samplerCube`,SAMPLER_2D_ARRAY:`sampler2DArray`,INT_SAMPLER_2D_ARRAY:`sampler2DArray`,UNSIGNED_INT_SAMPLER_2D_ARRAY:`sampler2DArray`},Sp={float:`float32`,vec2:`float32x2`,vec3:`float32x3`,vec4:`float32x4`,int:`sint32`,ivec2:`sint32x2`,ivec3:`sint32x3`,ivec4:`sint32x4`,uint:`uint32`,uvec2:`uint32x2`,uvec3:`uint32x3`,uvec4:`uint32x4`,bool:`uint32`,bvec2:`uint32x2`,bvec3:`uint32x3`,bvec4:`uint32x4`};function Cp(e,t){if(!bp){let t=Object.keys(xp);bp={};for(let n=0;n<t.length;++n){let r=t[n];bp[e[r]]=xp[r]}}return bp[t]}function wp(e,t){return Sp[Cp(e,t)]||`float32`}function Tp(e,t,n=!1){let r={},i=t.getProgramParameter(e,t.ACTIVE_ATTRIBUTES);for(let n=0;n<i;n++){let i=t.getActiveAttrib(e,n);if(i.name.startsWith(`gl_`))continue;let a=wp(t,i.type);r[i.name]={location:0,format:a,stride:j(a).stride,offset:0,instance:!1,start:0}}let a=Object.keys(r);if(n){a.sort((e,t)=>e>t?1:-1);for(let n=0;n<a.length;n++)r[a[n]].location=n,t.bindAttribLocation(e,n,a[n]);t.linkProgram(e)}else for(let n=0;n<a.length;n++)r[a[n]].location=t.getAttribLocation(e,a[n]);return r}function Ep(e,t){if(!t.ACTIVE_UNIFORM_BLOCKS)return{};let n={},r=t.getProgramParameter(e,t.ACTIVE_UNIFORM_BLOCKS);for(let i=0;i<r;i++){let r=t.getActiveUniformBlockName(e,i);n[r]={name:r,index:t.getUniformBlockIndex(e,r),size:t.getActiveUniformBlockParameter(e,i,t.UNIFORM_BLOCK_DATA_SIZE)}}return n}function Dp(e,t){let n={},r=t.getProgramParameter(e,t.ACTIVE_UNIFORMS);for(let i=0;i<r;i++){let r=t.getActiveUniform(e,i),a=r.name.replace(/\[.*?\]$/,``),o=!!r.name.match(/\[.*?\]$/),s=Cp(t,r.type);n[a]={name:a,index:i,type:s,size:r.size,isArray:o,value:yp(s,r.size)}}return n}function Op(e,t){let n=e.getShaderSource(t).split(`
|
|
2352
|
+
`).map((e,t)=>`${t}: ${e}`),r=e.getShaderInfoLog(t),i=r.split(`
|
|
2353
|
+
`),a={},o=i.map(e=>parseFloat(e.replace(/^ERROR\: 0\:([\d]+)\:.*$/,`$1`))).filter(e=>e&&!a[e]?(a[e]=!0,!0):!1),s=[``];o.forEach(e=>{n[e-1]=`%c${n[e-1]}%c`,s.push(`background: #FF0000; color:#FFFFFF; font-size: 10px`,`font-size: 10px`)}),s[0]=n.join(`
|
|
2354
|
+
`),console.error(r),console.groupCollapsed(`click to view full shader code`),console.warn(...s),console.groupEnd()}function kp(e,t,n,r){e.getProgramParameter(t,e.LINK_STATUS)||(e.getShaderParameter(n,e.COMPILE_STATUS)||Op(e,n),e.getShaderParameter(r,e.COMPILE_STATUS)||Op(e,r),console.error(`PixiJS Error: Could not initialize shader.`),e.getProgramInfoLog(t)!==``&&console.warn(`PixiJS Warning: gl.getProgramInfoLog()`,e.getProgramInfoLog(t)))}function Ap(e,t){let n=_p(e,e.VERTEX_SHADER,t.vertex),r=_p(e,e.FRAGMENT_SHADER,t.fragment),i=e.createProgram();e.attachShader(i,n),e.attachShader(i,r);let a=t.transformFeedbackVaryings;a&&(typeof e.transformFeedbackVaryings==`function`?e.transformFeedbackVaryings(i,a.names,a.bufferMode===`separate`?e.SEPARATE_ATTRIBS:e.INTERLEAVED_ATTRIBS):D(`TransformFeedback is not supported but TransformFeedbackVaryings are given.`)),e.linkProgram(i),e.getProgramParameter(i,e.LINK_STATUS)||kp(e,i,n,r),t._attributeData=Tp(i,e,!/^[ \t]*#[ \t]*version[ \t]+300[ \t]+es[ \t]*$/m.test(t.vertex)),t._uniformData=Dp(i,e),t._uniformBlockData=Ep(i,e),e.deleteShader(n),e.deleteShader(r);let o={};for(let n in t._uniformData){let r=t._uniformData[n];o[n]={location:e.getUniformLocation(i,n),value:yp(r.type,r.size)}}return new gp(i,o)}var jp={textureCount:0,blockIndex:0},Mp=class{constructor(e){this._activeProgram=null,this._programDataHash=Object.create(null),this._shaderSyncFunctions=Object.create(null),this._renderer=e}contextChange(e){this._gl=e,this._programDataHash=Object.create(null),this._shaderSyncFunctions=Object.create(null),this._activeProgram=null}bind(e,t){if(this._setProgram(e.glProgram),t)return;jp.textureCount=0,jp.blockIndex=0;let n=this._shaderSyncFunctions[e.glProgram._key];n||=this._shaderSyncFunctions[e.glProgram._key]=this._generateShaderSync(e,this),this._renderer.buffer.nextBindBase(!!e.glProgram.transformFeedbackVaryings),n(this._renderer,e,jp)}updateUniformGroup(e){this._renderer.uniformGroup.updateUniformGroup(e,this._activeProgram,jp)}bindUniformBlock(e,t,n=0){let r=this._renderer.buffer,i=this._getProgramData(this._activeProgram),a=e._bufferResource;a||this._renderer.ubo.updateUniformGroup(e);let o=e.buffer,s=r.updateBuffer(o),c=r.freeLocationForBufferBase(s);if(a){let{offset:t,size:n}=e;t===0&&n===o.data.byteLength?r.bindBufferBase(s,c):r.bindBufferRange(s,c,t)}else r.getLastBindBaseLocation(s)!==c&&r.bindBufferBase(s,c);let l=this._activeProgram._uniformBlockData[t].index;i.uniformBlockBindings[n]!==c&&(i.uniformBlockBindings[n]=c,this._renderer.gl.uniformBlockBinding(i.program,l,c))}_setProgram(e){if(this._activeProgram===e)return;this._activeProgram=e;let t=this._getProgramData(e);this._gl.useProgram(t.program)}_getProgramData(e){return this._programDataHash[e._key]||this._createProgramData(e)}_createProgramData(e){let t=e._key;return this._programDataHash[t]=Ap(this._gl,e),this._programDataHash[t]}destroy(){for(let e of Object.keys(this._programDataHash))this._programDataHash[e].destroy();this._programDataHash=null,this._shaderSyncFunctions=null,this._activeProgram=null,this._renderer=null,this._gl=null}_generateShaderSync(e,t){return mp(e,t)}resetState(){this._activeProgram=null}};Mp.extension={type:[W.WebGLSystem],name:`shader`};var Np={f32:`if (cv !== v) {
|
|
2355
|
+
cu.value = v;
|
|
2356
|
+
gl.uniform1f(location, v);
|
|
2357
|
+
}`,"vec2<f32>":`if (cv[0] !== v[0] || cv[1] !== v[1]) {
|
|
2358
|
+
cv[0] = v[0];
|
|
2359
|
+
cv[1] = v[1];
|
|
2360
|
+
gl.uniform2f(location, v[0], v[1]);
|
|
2361
|
+
}`,"vec3<f32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {
|
|
2362
|
+
cv[0] = v[0];
|
|
2363
|
+
cv[1] = v[1];
|
|
2364
|
+
cv[2] = v[2];
|
|
2365
|
+
gl.uniform3f(location, v[0], v[1], v[2]);
|
|
2366
|
+
}`,"vec4<f32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {
|
|
2367
|
+
cv[0] = v[0];
|
|
2368
|
+
cv[1] = v[1];
|
|
2369
|
+
cv[2] = v[2];
|
|
2370
|
+
cv[3] = v[3];
|
|
2371
|
+
gl.uniform4f(location, v[0], v[1], v[2], v[3]);
|
|
2372
|
+
}`,i32:`if (cv !== v) {
|
|
2373
|
+
cu.value = v;
|
|
2374
|
+
gl.uniform1i(location, v);
|
|
2375
|
+
}`,"vec2<i32>":`if (cv[0] !== v[0] || cv[1] !== v[1]) {
|
|
2376
|
+
cv[0] = v[0];
|
|
2377
|
+
cv[1] = v[1];
|
|
2378
|
+
gl.uniform2i(location, v[0], v[1]);
|
|
2379
|
+
}`,"vec3<i32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {
|
|
2380
|
+
cv[0] = v[0];
|
|
2381
|
+
cv[1] = v[1];
|
|
2382
|
+
cv[2] = v[2];
|
|
2383
|
+
gl.uniform3i(location, v[0], v[1], v[2]);
|
|
2384
|
+
}`,"vec4<i32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {
|
|
2385
|
+
cv[0] = v[0];
|
|
2386
|
+
cv[1] = v[1];
|
|
2387
|
+
cv[2] = v[2];
|
|
2388
|
+
cv[3] = v[3];
|
|
2389
|
+
gl.uniform4i(location, v[0], v[1], v[2], v[3]);
|
|
2390
|
+
}`,u32:`if (cv !== v) {
|
|
2391
|
+
cu.value = v;
|
|
2392
|
+
gl.uniform1ui(location, v);
|
|
2393
|
+
}`,"vec2<u32>":`if (cv[0] !== v[0] || cv[1] !== v[1]) {
|
|
2394
|
+
cv[0] = v[0];
|
|
2395
|
+
cv[1] = v[1];
|
|
2396
|
+
gl.uniform2ui(location, v[0], v[1]);
|
|
2397
|
+
}`,"vec3<u32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {
|
|
2398
|
+
cv[0] = v[0];
|
|
2399
|
+
cv[1] = v[1];
|
|
2400
|
+
cv[2] = v[2];
|
|
2401
|
+
gl.uniform3ui(location, v[0], v[1], v[2]);
|
|
2402
|
+
}`,"vec4<u32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {
|
|
2403
|
+
cv[0] = v[0];
|
|
2404
|
+
cv[1] = v[1];
|
|
2405
|
+
cv[2] = v[2];
|
|
2406
|
+
cv[3] = v[3];
|
|
2407
|
+
gl.uniform4ui(location, v[0], v[1], v[2], v[3]);
|
|
2408
|
+
}`,bool:`if (cv !== v) {
|
|
2409
|
+
cu.value = v;
|
|
2410
|
+
gl.uniform1i(location, v);
|
|
2411
|
+
}`,"vec2<bool>":`if (cv[0] !== v[0] || cv[1] !== v[1]) {
|
|
2412
|
+
cv[0] = v[0];
|
|
2413
|
+
cv[1] = v[1];
|
|
2414
|
+
gl.uniform2i(location, v[0], v[1]);
|
|
2415
|
+
}`,"vec3<bool>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {
|
|
2416
|
+
cv[0] = v[0];
|
|
2417
|
+
cv[1] = v[1];
|
|
2418
|
+
cv[2] = v[2];
|
|
2419
|
+
gl.uniform3i(location, v[0], v[1], v[2]);
|
|
2420
|
+
}`,"vec4<bool>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {
|
|
2421
|
+
cv[0] = v[0];
|
|
2422
|
+
cv[1] = v[1];
|
|
2423
|
+
cv[2] = v[2];
|
|
2424
|
+
cv[3] = v[3];
|
|
2425
|
+
gl.uniform4i(location, v[0], v[1], v[2], v[3]);
|
|
2426
|
+
}`,"mat2x2<f32>":`gl.uniformMatrix2fv(location, false, v);`,"mat3x3<f32>":`gl.uniformMatrix3fv(location, false, v);`,"mat4x4<f32>":`gl.uniformMatrix4fv(location, false, v);`},Pp={f32:`gl.uniform1fv(location, v);`,"vec2<f32>":`gl.uniform2fv(location, v);`,"vec3<f32>":`gl.uniform3fv(location, v);`,"vec4<f32>":`gl.uniform4fv(location, v);`,"mat2x2<f32>":`gl.uniformMatrix2fv(location, false, v);`,"mat3x3<f32>":`gl.uniformMatrix3fv(location, false, v);`,"mat4x4<f32>":`gl.uniformMatrix4fv(location, false, v);`,i32:`gl.uniform1iv(location, v);`,"vec2<i32>":`gl.uniform2iv(location, v);`,"vec3<i32>":`gl.uniform3iv(location, v);`,"vec4<i32>":`gl.uniform4iv(location, v);`,u32:`gl.uniform1iv(location, v);`,"vec2<u32>":`gl.uniform2iv(location, v);`,"vec3<u32>":`gl.uniform3iv(location, v);`,"vec4<u32>":`gl.uniform4iv(location, v);`,bool:`gl.uniform1iv(location, v);`,"vec2<bool>":`gl.uniform2iv(location, v);`,"vec3<bool>":`gl.uniform3iv(location, v);`,"vec4<bool>":`gl.uniform4iv(location, v);`};function Fp(e,t){let n=[`
|
|
2427
|
+
var v = null;
|
|
2428
|
+
var cv = null;
|
|
2429
|
+
var cu = null;
|
|
2430
|
+
var t = 0;
|
|
2431
|
+
var gl = renderer.gl;
|
|
2432
|
+
var name = null;
|
|
2433
|
+
`];for(let r in e.uniforms){if(!t[r]){e.uniforms[r]instanceof pe?e.uniforms[r].ubo?n.push(`
|
|
2434
|
+
renderer.shader.bindUniformBlock(uv.${r}, "${r}");
|
|
2435
|
+
`):n.push(`
|
|
2436
|
+
renderer.shader.updateUniformGroup(uv.${r});
|
|
2437
|
+
`):e.uniforms[r]instanceof ra&&n.push(`
|
|
2438
|
+
renderer.shader.bindBufferResource(uv.${r}, "${r}");
|
|
2439
|
+
`);continue}let i=e.uniformStructures[r],a=!1;for(let e=0;e<Ki.length;e++){let t=Ki[e];if(i.type===t.type&&t.test(i)){n.push(`name = "${r}";`,Ki[e].uniform),a=!0;break}}if(!a){let e=(i.size===1?Np:Pp)[i.type].replace(`location`,`ud["${r}"].location`);n.push(`
|
|
2440
|
+
cu = ud["${r}"];
|
|
2441
|
+
cv = cu.value;
|
|
2442
|
+
v = uv["${r}"];
|
|
2443
|
+
${e};`)}}return Function(`ud`,`uv`,`renderer`,`syncData`,n.join(`
|
|
2444
|
+
`))}var Ip=class{constructor(e){this._cache={},this._uniformGroupSyncHash={},this._renderer=e,this.gl=null,this._cache={}}contextChange(e){this.gl=e}updateUniformGroup(e,t,n){let r=this._renderer.shader._getProgramData(t);(!e.isStatic||e._dirtyId!==r.uniformDirtyGroups[e.uid])&&(r.uniformDirtyGroups[e.uid]=e._dirtyId,this._getUniformSyncFunction(e,t)(r.uniformData,e.uniforms,this._renderer,n))}_getUniformSyncFunction(e,t){return this._uniformGroupSyncHash[e._signature]?.[t._key]||this._createUniformSyncFunction(e,t)}_createUniformSyncFunction(e,t){let n=this._uniformGroupSyncHash[e._signature]||(this._uniformGroupSyncHash[e._signature]={}),r=this._getSignature(e,t._uniformData,`u`);return this._cache[r]||(this._cache[r]=this._generateUniformsSync(e,t._uniformData)),n[t._key]=this._cache[r],n[t._key]}_generateUniformsSync(e,t){return Fp(e,t)}_getSignature(e,t,n){let r=e.uniforms,i=[`${n}-`];for(let e in r)i.push(e),t[e]&&i.push(t[e].type);return i.join(`-`)}destroy(){this._renderer=null,this._cache=null}};Ip.extension={type:[W.WebGLSystem],name:`uniformGroup`};function Lp(e){return e=e.replaceAll(`texture2D`,`texture`).replaceAll(`gl_FragColor`,`finalColor`).replaceAll(`varying`,`in`),e=`
|
|
2445
|
+
out vec4 finalColor;
|
|
2446
|
+
${e}
|
|
2447
|
+
`,e}var Rp={float:1,vec2:2,vec3:3,vec4:4,int:1,ivec2:2,ivec3:3,ivec4:4,uint:1,uvec2:2,uvec3:3,uvec4:4,bool:1,bvec2:2,bvec3:3,bvec4:4,mat2:4,mat3:9,mat4:16,sampler2D:1};function zp(e){return Rp[e]}function Bp(e){let t={};if(t.normal=[e.ONE,e.ONE_MINUS_SRC_ALPHA],t.add=[e.ONE,e.ONE],t.multiply=[e.DST_COLOR,e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE_MINUS_SRC_ALPHA],t.screen=[e.ONE,e.ONE_MINUS_SRC_COLOR,e.ONE,e.ONE_MINUS_SRC_ALPHA],t.none=[0,0],t[`normal-npm`]=[e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE_MINUS_SRC_ALPHA],t[`add-npm`]=[e.SRC_ALPHA,e.ONE,e.ONE,e.ONE],t[`screen-npm`]=[e.SRC_ALPHA,e.ONE_MINUS_SRC_COLOR,e.ONE,e.ONE_MINUS_SRC_ALPHA],t.erase=[e.ZERO,e.ONE_MINUS_SRC_ALPHA],!(e instanceof r.get().getWebGLRenderingContext()))t.min=[e.ONE,e.ONE,e.ONE,e.ONE,e.MIN,e.MIN],t.max=[e.ONE,e.ONE,e.ONE,e.ONE,e.MAX,e.MAX];else{let n=e.getExtension(`EXT_blend_minmax`);n&&(t.min=[e.ONE,e.ONE,e.ONE,e.ONE,n.MIN_EXT,n.MIN_EXT],t.max=[e.ONE,e.ONE,e.ONE,e.ONE,n.MAX_EXT,n.MAX_EXT])}return t}var Vp=0,Hp=1,Up=2,Wp=3,Gp=4,Kp=5,qp=class e{constructor(e){this._invertFrontFace=!1,this.gl=null,this.stateId=0,this.polygonOffset=0,this.blendMode=`none`,this._blendEq=!1,this.map=[],this.map[Vp]=this.setBlend,this.map[Hp]=this.setOffset,this.map[Up]=this.setCullFace,this.map[Wp]=this.setDepthTest,this.map[Gp]=this.setFrontFace,this.map[Kp]=this.setDepthMask,this.checks=[],this.defaultState=et.for2d(),e.renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(e){this._invertFrontFace=!e.isRoot,this._cullFace?this.setFrontFace(this._frontFace):this._frontFaceDirty=!0}contextChange(e){this.gl=e,this.blendModesMap=Bp(e),this.resetState()}set(e){if(e||=this.defaultState,this.stateId!==e.data){let t=this.stateId^e.data,n=0;for(;t;)t&1&&this.map[n].call(this,!!(e.data&1<<n)),t>>=1,n++;this.stateId=e.data}for(let t=0;t<this.checks.length;t++)this.checks[t](this,e)}forceState(e){e||=this.defaultState;for(let t=0;t<this.map.length;t++)this.map[t].call(this,!!(e.data&1<<t));for(let t=0;t<this.checks.length;t++)this.checks[t](this,e);this.stateId=e.data}setBlend(t){this._updateCheck(e._checkBlendMode,t),this.gl[t?`enable`:`disable`](this.gl.BLEND)}setOffset(t){this._updateCheck(e._checkPolygonOffset,t),this.gl[t?`enable`:`disable`](this.gl.POLYGON_OFFSET_FILL)}setDepthTest(e){this.gl[e?`enable`:`disable`](this.gl.DEPTH_TEST)}setDepthMask(e){this.gl.depthMask(e)}setCullFace(e){this._cullFace=e,this.gl[e?`enable`:`disable`](this.gl.CULL_FACE),this._cullFace&&this._frontFaceDirty&&this.setFrontFace(this._frontFace)}setFrontFace(e){this._frontFace=e,this._frontFaceDirty=!1;let t=this._invertFrontFace?!e:e;this._glFrontFace!==t&&(this._glFrontFace=t,this.gl.frontFace(this.gl[t?`CW`:`CCW`]))}setBlendMode(e){if(this.blendModesMap[e]||(e=`normal`),e===this.blendMode)return;this.blendMode=e;let t=this.blendModesMap[e],n=this.gl;t.length===2?n.blendFunc(t[0],t[1]):n.blendFuncSeparate(t[0],t[1],t[2],t[3]),t.length===6?(this._blendEq=!0,n.blendEquationSeparate(t[4],t[5])):this._blendEq&&(this._blendEq=!1,n.blendEquationSeparate(n.FUNC_ADD,n.FUNC_ADD))}setPolygonOffset(e,t){this.gl.polygonOffset(e,t)}resetState(){this._glFrontFace=!1,this._frontFace=!1,this._cullFace=!1,this._frontFaceDirty=!1,this._invertFrontFace=!1,this.gl.frontFace(this.gl.CCW),this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL,!1),this.forceState(this.defaultState),this._blendEq=!0,this.blendMode=``,this.setBlendMode(`normal`)}_updateCheck(e,t){let n=this.checks.indexOf(e);t&&n===-1?this.checks.push(e):!t&&n!==-1&&this.checks.splice(n,1)}static _checkBlendMode(e,t){e.setBlendMode(t.blendMode)}static _checkPolygonOffset(e,t){e.setPolygonOffset(1,t.polygonOffset)}destroy(){this.gl=null,this.checks.length=0}};qp.extension={type:[W.WebGLSystem],name:`state`};var Jp=qp,Yp=class{constructor(e){this.target=Kf.TEXTURE_2D,this._layerInitMask=0,this.texture=e,this.width=-1,this.height=-1,this.type=Q.UNSIGNED_BYTE,this.internalFormat=Gf.RGBA,this.format=Gf.RGBA,this.samplerType=0}destroy(){}},Xp={id:`buffer`,upload(e,t,n,r,i,a=!1){let o=i||t.target;!a&&t.width===e.width&&t.height===e.height?n.texSubImage2D(o,0,0,0,e.width,e.height,t.format,t.type,e.resource):n.texImage2D(o,0,t.internalFormat,e.width,e.height,0,t.format,t.type,e.resource),t.width=e.width,t.height=e.height}},Zp={"bc1-rgba-unorm":!0,"bc1-rgba-unorm-srgb":!0,"bc2-rgba-unorm":!0,"bc2-rgba-unorm-srgb":!0,"bc3-rgba-unorm":!0,"bc3-rgba-unorm-srgb":!0,"bc4-r-unorm":!0,"bc4-r-snorm":!0,"bc5-rg-unorm":!0,"bc5-rg-snorm":!0,"bc6h-rgb-ufloat":!0,"bc6h-rgb-float":!0,"bc7-rgba-unorm":!0,"bc7-rgba-unorm-srgb":!0,"etc2-rgb8unorm":!0,"etc2-rgb8unorm-srgb":!0,"etc2-rgb8a1unorm":!0,"etc2-rgb8a1unorm-srgb":!0,"etc2-rgba8unorm":!0,"etc2-rgba8unorm-srgb":!0,"eac-r11unorm":!0,"eac-r11snorm":!0,"eac-rg11unorm":!0,"eac-rg11snorm":!0,"astc-4x4-unorm":!0,"astc-4x4-unorm-srgb":!0,"astc-5x4-unorm":!0,"astc-5x4-unorm-srgb":!0,"astc-5x5-unorm":!0,"astc-5x5-unorm-srgb":!0,"astc-6x5-unorm":!0,"astc-6x5-unorm-srgb":!0,"astc-6x6-unorm":!0,"astc-6x6-unorm-srgb":!0,"astc-8x5-unorm":!0,"astc-8x5-unorm-srgb":!0,"astc-8x6-unorm":!0,"astc-8x6-unorm-srgb":!0,"astc-8x8-unorm":!0,"astc-8x8-unorm-srgb":!0,"astc-10x5-unorm":!0,"astc-10x5-unorm-srgb":!0,"astc-10x6-unorm":!0,"astc-10x6-unorm-srgb":!0,"astc-10x8-unorm":!0,"astc-10x8-unorm-srgb":!0,"astc-10x10-unorm":!0,"astc-10x10-unorm-srgb":!0,"astc-12x10-unorm":!0,"astc-12x10-unorm-srgb":!0,"astc-12x12-unorm":!0,"astc-12x12-unorm-srgb":!0},Qp={id:`compressed`,upload(e,t,n,r,i,a){let o=i??t.target;n.pixelStorei(n.UNPACK_ALIGNMENT,4);let s=e.pixelWidth,c=e.pixelHeight,l=!!Zp[e.format];for(let r=0;r<e.resource.length;r++){let i=e.resource[r];l?n.compressedTexImage2D(o,r,t.internalFormat,s,c,0,i):n.texImage2D(o,r,t.internalFormat,s,c,0,t.format,t.type,i),s=Math.max(s>>1,1),c=Math.max(c>>1,1)}}},$p=[`right`,`left`,`top`,`bottom`,`front`,`back`];function em(e){return{id:`cube`,upload(t,n,r,i){let a=t.faces;for(let t=0;t<$p.length;t++){let o=a[$p[t]];(e[o.uploadMethodId]||e.image).upload(o,n,r,i,Kf.TEXTURE_CUBE_MAP_POSITIVE_X+t,(n._layerInitMask&1<<t)==0),n._layerInitMask|=1<<t}n.width=t.pixelWidth,n.height=t.pixelHeight}}}var tm={id:`image`,upload(e,t,n,r,i,a=!1){let o=i||t.target,s=e.pixelWidth,c=e.pixelHeight,l=e.resourceWidth,u=e.resourceHeight,d=r===2,f=a||t.width!==s||t.height!==c,p=l>=s&&u>=c,m=e.resource;(d?nm:rm)(n,o,t,s,c,l,u,m,f,p),t.width=s,t.height=c}};function nm(e,t,n,r,i,a,o,s,c,l){if(!l){c&&e.texImage2D(t,0,n.internalFormat,r,i,0,n.format,n.type,null),e.texSubImage2D(t,0,0,0,a,o,n.format,n.type,s);return}if(!c){e.texSubImage2D(t,0,0,0,n.format,n.type,s);return}e.texImage2D(t,0,n.internalFormat,r,i,0,n.format,n.type,s)}function rm(e,t,n,r,i,a,o,s,c,l){if(!l){c&&e.texImage2D(t,0,n.internalFormat,r,i,0,n.format,n.type,null),e.texSubImage2D(t,0,0,0,n.format,n.type,s);return}if(!c){e.texSubImage2D(t,0,0,0,n.format,n.type,s);return}e.texImage2D(t,0,n.internalFormat,n.format,n.type,s)}var im=zd(),am={id:`video`,upload(e,t,n,r,i,a=im){if(!e.isValid){let e=i??t.target;n.texImage2D(e,0,t.internalFormat,1,1,0,t.format,t.type,null);return}tm.upload(e,t,n,r,i,a)}},om={linear:9729,nearest:9728},sm={linear:{linear:9987,nearest:9985},nearest:{linear:9986,nearest:9984}},cm={"clamp-to-edge":33071,repeat:10497,"mirror-repeat":33648},lm={never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519};function um(e,t,n,r,i,a,o,s){let c=a;if(!s||e.addressModeU!==`repeat`||e.addressModeV!==`repeat`||e.addressModeW!==`repeat`){let n=cm[o?`clamp-to-edge`:e.addressModeU],r=cm[o?`clamp-to-edge`:e.addressModeV],a=cm[o?`clamp-to-edge`:e.addressModeW];t[i](c,t.TEXTURE_WRAP_S,n),t[i](c,t.TEXTURE_WRAP_T,r),t.TEXTURE_WRAP_R&&t[i](c,t.TEXTURE_WRAP_R,a)}if((!s||e.magFilter!==`linear`)&&t[i](c,t.TEXTURE_MAG_FILTER,om[e.magFilter]),n){if(!s||e.mipmapFilter!==`linear`){let n=sm[e.minFilter][e.mipmapFilter];t[i](c,t.TEXTURE_MIN_FILTER,n)}}else t[i](c,t.TEXTURE_MIN_FILTER,om[e.minFilter]);if(r&&e.maxAnisotropy>1){let n=Math.min(e.maxAnisotropy,t.getParameter(r.MAX_TEXTURE_MAX_ANISOTROPY_EXT));t[i](c,r.TEXTURE_MAX_ANISOTROPY_EXT,n)}e.compare&&t[i](c,t.TEXTURE_COMPARE_FUNC,lm[e.compare])}function dm(e){return{r8unorm:e.RED,r8snorm:e.RED,r8uint:e.RED,r8sint:e.RED,r16uint:e.RED,r16sint:e.RED,r16float:e.RED,rg8unorm:e.RG,rg8snorm:e.RG,rg8uint:e.RG,rg8sint:e.RG,r32uint:e.RED,r32sint:e.RED,r32float:e.RED,rg16uint:e.RG,rg16sint:e.RG,rg16float:e.RG,rgba8unorm:e.RGBA,"rgba8unorm-srgb":e.RGBA,rgba8snorm:e.RGBA,rgba8uint:e.RGBA,rgba8sint:e.RGBA,bgra8unorm:e.RGBA,"bgra8unorm-srgb":e.RGBA,rgb9e5ufloat:e.RGB,rgb10a2unorm:e.RGBA,rg11b10ufloat:e.RGB,rg32uint:e.RG,rg32sint:e.RG,rg32float:e.RG,rgba16uint:e.RGBA,rgba16sint:e.RGBA,rgba16float:e.RGBA,rgba32uint:e.RGBA,rgba32sint:e.RGBA,rgba32float:e.RGBA,stencil8:e.STENCIL_INDEX8,depth16unorm:e.DEPTH_COMPONENT,depth24plus:e.DEPTH_COMPONENT,"depth24plus-stencil8":e.DEPTH_STENCIL,depth32float:e.DEPTH_COMPONENT,"depth32float-stencil8":e.DEPTH_STENCIL}}function fm(e,t){let n={},i=e.RGBA;return e instanceof r.get().getWebGLRenderingContext()?t.srgb&&(n={"rgba8unorm-srgb":t.srgb.SRGB8_ALPHA8_EXT,"bgra8unorm-srgb":t.srgb.SRGB8_ALPHA8_EXT}):(n={"rgba8unorm-srgb":e.SRGB8_ALPHA8,"bgra8unorm-srgb":e.SRGB8_ALPHA8},i=e.RGBA8),{r8unorm:e.R8,r8snorm:e.R8_SNORM,r8uint:e.R8UI,r8sint:e.R8I,r16uint:e.R16UI,r16sint:e.R16I,r16float:e.R16F,rg8unorm:e.RG8,rg8snorm:e.RG8_SNORM,rg8uint:e.RG8UI,rg8sint:e.RG8I,r32uint:e.R32UI,r32sint:e.R32I,r32float:e.R32F,rg16uint:e.RG16UI,rg16sint:e.RG16I,rg16float:e.RG16F,rgba8unorm:e.RGBA,...n,rgba8snorm:e.RGBA8_SNORM,rgba8uint:e.RGBA8UI,rgba8sint:e.RGBA8I,bgra8unorm:i,rgb9e5ufloat:e.RGB9_E5,rgb10a2unorm:e.RGB10_A2,rg11b10ufloat:e.R11F_G11F_B10F,rg32uint:e.RG32UI,rg32sint:e.RG32I,rg32float:e.RG32F,rgba16uint:e.RGBA16UI,rgba16sint:e.RGBA16I,rgba16float:e.RGBA16F,rgba32uint:e.RGBA32UI,rgba32sint:e.RGBA32I,rgba32float:e.RGBA32F,stencil8:e.STENCIL_INDEX8,depth16unorm:e.DEPTH_COMPONENT16,depth24plus:e.DEPTH_COMPONENT24,"depth24plus-stencil8":e.DEPTH24_STENCIL8,depth32float:e.DEPTH_COMPONENT32F,"depth32float-stencil8":e.DEPTH32F_STENCIL8,...t.s3tc?{"bc1-rgba-unorm":t.s3tc.COMPRESSED_RGBA_S3TC_DXT1_EXT,"bc2-rgba-unorm":t.s3tc.COMPRESSED_RGBA_S3TC_DXT3_EXT,"bc3-rgba-unorm":t.s3tc.COMPRESSED_RGBA_S3TC_DXT5_EXT}:{},...t.s3tc_sRGB?{"bc1-rgba-unorm-srgb":t.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,"bc2-rgba-unorm-srgb":t.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,"bc3-rgba-unorm-srgb":t.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}:{},...t.rgtc?{"bc4-r-unorm":t.rgtc.COMPRESSED_RED_RGTC1_EXT,"bc4-r-snorm":t.rgtc.COMPRESSED_SIGNED_RED_RGTC1_EXT,"bc5-rg-unorm":t.rgtc.COMPRESSED_RED_GREEN_RGTC2_EXT,"bc5-rg-snorm":t.rgtc.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}:{},...t.bptc?{"bc6h-rgb-float":t.bptc.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,"bc6h-rgb-ufloat":t.bptc.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,"bc7-rgba-unorm":t.bptc.COMPRESSED_RGBA_BPTC_UNORM_EXT,"bc7-rgba-unorm-srgb":t.bptc.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT}:{},...t.etc?{"etc2-rgb8unorm":t.etc.COMPRESSED_RGB8_ETC2,"etc2-rgb8unorm-srgb":t.etc.COMPRESSED_SRGB8_ETC2,"etc2-rgb8a1unorm":t.etc.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,"etc2-rgb8a1unorm-srgb":t.etc.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,"etc2-rgba8unorm":t.etc.COMPRESSED_RGBA8_ETC2_EAC,"etc2-rgba8unorm-srgb":t.etc.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,"eac-r11unorm":t.etc.COMPRESSED_R11_EAC,"eac-rg11unorm":t.etc.COMPRESSED_SIGNED_RG11_EAC}:{},...t.astc?{"astc-4x4-unorm":t.astc.COMPRESSED_RGBA_ASTC_4x4_KHR,"astc-4x4-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,"astc-5x4-unorm":t.astc.COMPRESSED_RGBA_ASTC_5x4_KHR,"astc-5x4-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,"astc-5x5-unorm":t.astc.COMPRESSED_RGBA_ASTC_5x5_KHR,"astc-5x5-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,"astc-6x5-unorm":t.astc.COMPRESSED_RGBA_ASTC_6x5_KHR,"astc-6x5-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,"astc-6x6-unorm":t.astc.COMPRESSED_RGBA_ASTC_6x6_KHR,"astc-6x6-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,"astc-8x5-unorm":t.astc.COMPRESSED_RGBA_ASTC_8x5_KHR,"astc-8x5-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,"astc-8x6-unorm":t.astc.COMPRESSED_RGBA_ASTC_8x6_KHR,"astc-8x6-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,"astc-8x8-unorm":t.astc.COMPRESSED_RGBA_ASTC_8x8_KHR,"astc-8x8-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,"astc-10x5-unorm":t.astc.COMPRESSED_RGBA_ASTC_10x5_KHR,"astc-10x5-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,"astc-10x6-unorm":t.astc.COMPRESSED_RGBA_ASTC_10x6_KHR,"astc-10x6-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,"astc-10x8-unorm":t.astc.COMPRESSED_RGBA_ASTC_10x8_KHR,"astc-10x8-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,"astc-10x10-unorm":t.astc.COMPRESSED_RGBA_ASTC_10x10_KHR,"astc-10x10-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,"astc-12x10-unorm":t.astc.COMPRESSED_RGBA_ASTC_12x10_KHR,"astc-12x10-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,"astc-12x12-unorm":t.astc.COMPRESSED_RGBA_ASTC_12x12_KHR,"astc-12x12-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR}:{}}}function pm(e){return{r8unorm:e.UNSIGNED_BYTE,r8snorm:e.BYTE,r8uint:e.UNSIGNED_BYTE,r8sint:e.BYTE,r16uint:e.UNSIGNED_SHORT,r16sint:e.SHORT,r16float:e.HALF_FLOAT,rg8unorm:e.UNSIGNED_BYTE,rg8snorm:e.BYTE,rg8uint:e.UNSIGNED_BYTE,rg8sint:e.BYTE,r32uint:e.UNSIGNED_INT,r32sint:e.INT,r32float:e.FLOAT,rg16uint:e.UNSIGNED_SHORT,rg16sint:e.SHORT,rg16float:e.HALF_FLOAT,rgba8unorm:e.UNSIGNED_BYTE,"rgba8unorm-srgb":e.UNSIGNED_BYTE,rgba8snorm:e.BYTE,rgba8uint:e.UNSIGNED_BYTE,rgba8sint:e.BYTE,bgra8unorm:e.UNSIGNED_BYTE,"bgra8unorm-srgb":e.UNSIGNED_BYTE,rgb9e5ufloat:e.UNSIGNED_INT_5_9_9_9_REV,rgb10a2unorm:e.UNSIGNED_INT_2_10_10_10_REV,rg11b10ufloat:e.UNSIGNED_INT_10F_11F_11F_REV,rg32uint:e.UNSIGNED_INT,rg32sint:e.INT,rg32float:e.FLOAT,rgba16uint:e.UNSIGNED_SHORT,rgba16sint:e.SHORT,rgba16float:e.HALF_FLOAT,rgba32uint:e.UNSIGNED_INT,rgba32sint:e.INT,rgba32float:e.FLOAT,stencil8:e.UNSIGNED_BYTE,depth16unorm:e.UNSIGNED_SHORT,depth24plus:e.UNSIGNED_INT,"depth24plus-stencil8":e.UNSIGNED_INT_24_8,depth32float:e.FLOAT,"depth32float-stencil8":e.FLOAT_32_UNSIGNED_INT_24_8_REV}}function mm(e){return{"2d":e.TEXTURE_2D,cube:e.TEXTURE_CUBE_MAP,"1d":null,"3d":e?.TEXTURE_3D||null,"2d-array":e?.TEXTURE_2D_ARRAY||null,"cube-array":e?.TEXTURE_CUBE_MAP_ARRAY||null}}function hm(e){e instanceof Uint8ClampedArray&&(e=new Uint8Array(e.buffer));let t=e.length;for(let n=0;n<t;n+=4){let t=e[n+3];if(t!==0){let r=255.001/t;e[n]=e[n]*r+.5,e[n+1]=e[n+1]*r+.5,e[n+2]=e[n+2]*r+.5}}}var gm=4,_m=class{constructor(e){this._glSamplers=Object.create(null),this._boundTextures=[],this._activeTextureLocation=-1,this._boundSamplers=Object.create(null),this._premultiplyAlpha=!1,this._useSeparateSamplers=!1,this._renderer=e,this._managedTextures=new zi({renderer:e,type:`resource`,onUnload:this.onSourceUnload.bind(this),name:`glTexture`});let t={image:tm,buffer:Xp,video:am,compressed:Qp};this._uploads={...t,cube:em(t)}}get managedTextures(){return Object.values(this._managedTextures.items)}contextChange(e){this._gl=e,this._mapFormatToInternalFormat||(this._mapFormatToInternalFormat=fm(e,this._renderer.context.extensions),this._mapFormatToType=pm(e),this._mapFormatToFormat=dm(e),this._mapViewDimensionToGlTarget=mm(e)),this._managedTextures.removeAll(!0),this._glSamplers=Object.create(null),this._boundSamplers=Object.create(null),this._premultiplyAlpha=!1;for(let e=0;e<16;e++)this.bind(h.EMPTY,e)}initSource(e){this.bind(e)}bind(e,t=0){let n=e.source;e?(this.bindSource(n,t),this._useSeparateSamplers&&this._bindSampler(n.style,t)):(this.bindSource(null,t),this._useSeparateSamplers&&this._bindSampler(null,t))}bindSource(e,t=0){let n=this._gl;if(e._gcLastUsed=this._renderer.gc.now,this._boundTextures[t]!==e){this._boundTextures[t]=e,this._activateLocation(t),e||=h.EMPTY.source;let r=this.getGlSource(e);n.bindTexture(r.target,r.texture)}}_bindSampler(e,t=0){let n=this._gl;if(!e){this._boundSamplers[t]=null,n.bindSampler(t,null);return}let r=this._getGlSampler(e);this._boundSamplers[t]!==r&&(this._boundSamplers[t]=r,n.bindSampler(t,r))}unbind(e){let t=e.source,n=this._boundTextures,r=this._gl;for(let e=0;e<n.length;e++)if(n[e]===t){this._activateLocation(e);let i=this.getGlSource(t);r.bindTexture(i.target,null),n[e]=null}}_activateLocation(e){this._activeTextureLocation!==e&&(this._activeTextureLocation=e,this._gl.activeTexture(this._gl.TEXTURE0+e))}_initSource(e){let t=this._gl,n=new Yp(t.createTexture());if(n.type=this._mapFormatToType[e.format],n.internalFormat=this._mapFormatToInternalFormat[e.format],n.format=this._mapFormatToFormat[e.format],n.target=this._mapViewDimensionToGlTarget[e.viewDimension],n.target===null)throw Error(`Unsupported view dimension: ${e.viewDimension} with this webgl version: ${this._renderer.context.webGLVersion}`);if(e.uploadMethodId===`cube`&&(n.target=t.TEXTURE_CUBE_MAP),e.autoGenerateMipmaps&&(this._renderer.context.supports.nonPowOf2mipmaps||e.isPowerOfTwo)){let t=Math.max(e.width,e.height);e.mipLevelCount=Math.floor(Math.log2(t))+1}return e._gpuData[this._renderer.uid]=n,this._managedTextures.add(e)&&(e.on(`update`,this.onSourceUpdate,this),e.on(`resize`,this.onSourceUpdate,this),e.on(`styleChange`,this.onStyleChange,this),e.on(`updateMipmaps`,this.onUpdateMipmaps,this)),this.onSourceUpdate(e),this.updateStyle(e,!1),n}onStyleChange(e){this.updateStyle(e,!1)}updateStyle(e,t){let n=this._gl,r=this.getGlSource(e);n.bindTexture(r.target,r.texture),this._boundTextures[this._activeTextureLocation]=e,um(e.style,n,e.mipLevelCount>1,this._renderer.context.extensions.anisotropicFiltering,`texParameteri`,r.target,!this._renderer.context.supports.nonPowOf2wrapping&&!e.isPowerOfTwo,t)}onSourceUnload(e,t=!1){let n=e._gpuData[this._renderer.uid];n&&(t||(this.unbind(e),this._gl.deleteTexture(n.texture)),e.off(`update`,this.onSourceUpdate,this),e.off(`resize`,this.onSourceUpdate,this),e.off(`styleChange`,this.onStyleChange,this),e.off(`updateMipmaps`,this.onUpdateMipmaps,this))}onSourceUpdate(e){let t=this._gl,n=this.getGlSource(e);t.bindTexture(n.target,n.texture),this._boundTextures[this._activeTextureLocation]=e;let r=e.alphaMode===`premultiply-alpha-on-upload`;if(this._premultiplyAlpha!==r&&(this._premultiplyAlpha=r,t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,r)),this._uploads[e.uploadMethodId])this._uploads[e.uploadMethodId].upload(e,n,t,this._renderer.context.webGLVersion);else if(n.target===t.TEXTURE_2D)this._initEmptyTexture2D(n,e);else if(n.target===t.TEXTURE_2D_ARRAY)this._initEmptyTexture2DArray(n,e);else if(n.target===t.TEXTURE_CUBE_MAP)this._initEmptyTextureCube(n,e);else throw Error(`[GlTextureSystem] Unsupported texture target for empty allocation.`);this._applyMipRange(n,e),e.autoGenerateMipmaps&&e.mipLevelCount>1&&this.onUpdateMipmaps(e,!1)}onUpdateMipmaps(e,t=!0){t&&this.bindSource(e,0);let n=this.getGlSource(e);this._gl.generateMipmap(n.target)}_initEmptyTexture2D(e,t){let n=this._gl;n.texImage2D(n.TEXTURE_2D,0,e.internalFormat,t.pixelWidth,t.pixelHeight,0,e.format,e.type,null);let r=Math.max(t.pixelWidth>>1,1),i=Math.max(t.pixelHeight>>1,1);for(let a=1;a<t.mipLevelCount;a++)n.texImage2D(n.TEXTURE_2D,a,e.internalFormat,r,i,0,e.format,e.type,null),r=Math.max(r>>1,1),i=Math.max(i>>1,1)}_initEmptyTexture2DArray(e,t){if(this._renderer.context.webGLVersion!==2)throw Error(`[GlTextureSystem] TEXTURE_2D_ARRAY requires WebGL2.`);let n=this._gl,r=Math.max(t.arrayLayerCount|0,1);n.texImage3D(n.TEXTURE_2D_ARRAY,0,e.internalFormat,t.pixelWidth,t.pixelHeight,r,0,e.format,e.type,null);let i=Math.max(t.pixelWidth>>1,1),a=Math.max(t.pixelHeight>>1,1);for(let o=1;o<t.mipLevelCount;o++)n.texImage3D(n.TEXTURE_2D_ARRAY,o,e.internalFormat,i,a,r,0,e.format,e.type,null),i=Math.max(i>>1,1),a=Math.max(a>>1,1)}_initEmptyTextureCube(e,t){let n=this._gl;for(let r=0;r<6;r++)n.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+r,0,e.internalFormat,t.pixelWidth,t.pixelHeight,0,e.format,e.type,null);let r=Math.max(t.pixelWidth>>1,1),i=Math.max(t.pixelHeight>>1,1);for(let a=1;a<t.mipLevelCount;a++){for(let t=0;t<6;t++)n.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+t,a,e.internalFormat,r,i,0,e.format,e.type,null);r=Math.max(r>>1,1),i=Math.max(i>>1,1)}}_applyMipRange(e,t){if(this._renderer.context.webGLVersion!==2||t.mipLevelCount<=1)return;let n=this._gl,r=Math.max((t.mipLevelCount|0)-1,0);n.texParameteri(e.target,n.TEXTURE_BASE_LEVEL,0),n.texParameteri(e.target,n.TEXTURE_MAX_LEVEL,r)}_initSampler(e){let t=this._gl,n=this._gl.createSampler();return this._glSamplers[e._resourceId]=n,um(e,t,this._boundTextures[this._activeTextureLocation].mipLevelCount>1,this._renderer.context.extensions.anisotropicFiltering,`samplerParameteri`,n,!1,!0),this._glSamplers[e._resourceId]}_getGlSampler(e){return this._glSamplers[e._resourceId]||this._initSampler(e)}getGlSource(e){return e._gcLastUsed=this._renderer.gc.now,e._gpuData[this._renderer.uid]||this._initSource(e)}generateCanvas(e){let{pixels:t,width:n,height:i}=this.getPixels(e),a=r.get().createCanvas();a.width=n,a.height=i;let o=a.getContext(`2d`);if(o){let e=o.createImageData(n,i);e.data.set(t),o.putImageData(e,0,0)}return a}getPixels(e){let t=e.source.resolution,n=e.frame,r=Math.max(Math.round(n.width*t),1),i=Math.max(Math.round(n.height*t),1),a=new Uint8Array(gm*r*i),o=this._renderer,s=o.renderTarget.getRenderTarget(e),c=o.renderTarget.getGpuRenderTarget(s),l=o.gl;return l.bindFramebuffer(l.FRAMEBUFFER,c.resolveTargetFramebuffer),l.readPixels(Math.round(n.x*t),Math.round(n.y*t),r,i,l.RGBA,l.UNSIGNED_BYTE,a),{pixels:new Uint8ClampedArray(a.buffer),width:r,height:i}}destroy(){this._managedTextures.destroy(),this._glSamplers=null,this._boundTextures=null,this._boundSamplers=null,this._mapFormatToInternalFormat=null,this._mapFormatToType=null,this._mapFormatToFormat=null,this._uploads=null,this._renderer=null}resetState(){this._activeTextureLocation=-1,this._boundTextures.fill(h.EMPTY.source),this._boundSamplers=Object.create(null);let e=this._gl;this._premultiplyAlpha=!1,e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,this._premultiplyAlpha)}};_m.extension={type:[W.WebGLSystem],name:`texture`};var vm=class{contextChange(e){let t=new pe({uColor:{value:new Float32Array([1,1,1,1]),type:`vec4<f32>`},uTransformMatrix:{value:new U,type:`mat3x3<f32>`},uRound:{value:0,type:`f32`}}),n=e.limits.maxBatchableTextures,r=Ti({name:`graphics`,bits:[Bi,wi(n),Yi,Fi]});this.shader=new ce({glProgram:r,resources:{localUniforms:t,batchSamplers:ki(n)}})}execute(e,t){let n=t.context,r=n.customShader||this.shader,i=e.renderer,{batcher:a,instructions:o}=i.graphicsContext.getContextRenderData(n);r.groups[0]=i.globalUniforms.bindGroup,i.state.set(e.state),i.shader.bind(r),i.geometry.bind(a.geometry,r.glProgram);let s=o.instructions;for(let e=0;e<o.instructionSize;e++){let t=s[e];if(t.size){for(let e=0;e<t.textures.count;e++)i.texture.bind(t.textures.textures[e],e);i.geometry.draw(t.topology,t.size,t.start)}}}destroy(){this.shader.destroy(!0),this.shader=null}};vm.extension={type:[W.WebGLPipesAdaptor],name:`graphics`};var ym=class{init(){let e=Ti({name:`mesh`,bits:[Yi,ia,Fi]});this._shader=new ce({glProgram:e,resources:{uTexture:h.EMPTY.source,textureUniforms:{uTextureMatrix:{type:`mat3x3<f32>`,value:new U}}}})}execute(e,t){let n=e.renderer,r=t._shader;if(!r){r=this._shader;let e=t.texture,n=e.source;r.resources.uTexture=n,r.resources.uSampler=n.style,r.resources.textureUniforms.uniforms.uTextureMatrix=e.textureMatrix.mapCoord}else if(!r.glProgram){D(`Mesh shader has no glProgram`,t.shader);return}r.groups[100]=n.globalUniforms.bindGroup,r.groups[101]=e.localUniformsBindGroup,n.encoder.draw({geometry:t._geometry,shader:r,state:t.state})}destroy(){this._shader.destroy(!0),this._shader=null}};ym.extension={type:[W.WebGLPipesAdaptor],name:`mesh`};var bm=[...Fr,dp,tp,Wf,ip,Hf,_m,pp,Qf,Ip,Mp,rp,Jp,op,np],xm=[...Ur],Sm=[ef,ym,vm],Cm=[],wm=[],Tm=[];F.handleByNamedList(W.WebGLSystem,Cm),F.handleByNamedList(W.WebGLPipes,wm),F.handleByNamedList(W.WebGLPipesAdaptor,Tm),F.add(...bm,...xm,...Sm);var Em=class extends Mr{constructor(){let e={name:`webgl`,type:P.WEBGL,systems:Cm,renderPipes:wm,renderPipeAdaptors:Tm};super(e)}},Dm=class{constructor(e){this._hash=Object.create(null),this._renderer=e}contextChange(e){this._gpu=e}getBindGroup(e,t,n){return e._updateKey(),this._hash[e._key]||this._createBindGroup(e,t,n)}_createBindGroup(e,t,n){let r=this._gpu.device,i=t.layout[n],a=[],o=this._renderer;for(let t in i){let n=e.resources[t]??e.resources[i[t]],r;if(n._resourceType===`uniformGroup`){let e=n;o.ubo.updateUniformGroup(e);let t=e.buffer;r={buffer:o.buffer.getGPUBuffer(t),offset:0,size:t.descriptor.size}}else if(n._resourceType===`buffer`){let e=n;r={buffer:o.buffer.getGPUBuffer(e),offset:0,size:e.descriptor.size}}else if(n._resourceType===`bufferResource`){let e=n;r={buffer:o.buffer.getGPUBuffer(e.buffer),offset:e.offset,size:e.size}}else if(n._resourceType===`textureSampler`){let e=n;r=o.texture.getGpuSampler(e)}else if(n._resourceType===`textureSource`){let e=n;r=o.texture.getTextureView(e)}a.push({binding:i[t],resource:r})}let s=o.shader.getProgramData(t).bindGroups[n],c=r.createBindGroup({layout:s,entries:a});return this._hash[e._key]=c,c}destroy(){this._hash=null,this._renderer=null}};Dm.extension={type:[W.WebGPUSystem],name:`bindGroup`};var Om=class{constructor(e){this.gpuBuffer=e}destroy(){this.gpuBuffer.destroy(),this.gpuBuffer=null}},km=class{constructor(e){this._renderer=e,this._managedBuffers=new zi({renderer:e,type:`resource`,onUnload:this.onBufferUnload.bind(this),name:`gpuBuffer`})}contextChange(e){this._gpu=e}getGPUBuffer(e){return e._gcLastUsed=this._renderer.gc.now,e._gpuData[this._renderer.uid]?.gpuBuffer||this.createGPUBuffer(e)}updateBuffer(e){let t=this.getGPUBuffer(e),n=e.data;return e._updateID&&n&&(e._updateID=0,this._gpu.device.queue.writeBuffer(t,0,n.buffer,0,(e._updateSize||n.byteLength)+3&-4)),t}destroyAll(){this._managedBuffers.removeAll()}onBufferUnload(e){e.off(`update`,this.updateBuffer,this),e.off(`change`,this.onBufferChange,this)}createGPUBuffer(e){let t=this._gpu.device.createBuffer(e.descriptor);return e._updateID=0,e._resourceId=se(`resource`),e.data&&(fi(e.data.buffer,t.getMappedRange(),e.data.byteOffset,e.data.byteLength),t.unmap()),e._gpuData[this._renderer.uid]=new Om(t),this._managedBuffers.add(e)&&(e.on(`update`,this.updateBuffer,this),e.on(`change`,this.onBufferChange,this)),t}onBufferChange(e){this._managedBuffers.remove(e),e._updateID=0,this.createGPUBuffer(e)}destroy(){this._managedBuffers.destroy(),this._renderer=null,this._gpu=null}};km.extension={type:[W.WebGPUSystem],name:`buffer`};var Am=class{constructor({minUniformOffsetAlignment:e}){this._minUniformOffsetAlignment=256,this.byteIndex=0,this._minUniformOffsetAlignment=e,this.data=new Float32Array(65535)}clear(){this.byteIndex=0}addEmptyGroup(e){if(e>this._minUniformOffsetAlignment/4)throw Error(`UniformBufferBatch: array is too large: ${e*4}`);let t=this.byteIndex,n=t+e*4;if(n=Math.ceil(n/this._minUniformOffsetAlignment)*this._minUniformOffsetAlignment,n>this.data.length*4)throw Error(`UniformBufferBatch: ubo batch got too big`);return this.byteIndex=n,t}addGroup(e){let t=this.addEmptyGroup(e.length);for(let n=0;n<e.length;n++)this.data[t/4+n]=e[n];return t}destroy(){this.data=null}},jm=class{constructor(e){this._colorMaskCache=15,this._renderer=e}setMask(e){this._colorMaskCache!==e&&(this._colorMaskCache=e,this._renderer.pipeline.setColorMask(e))}destroy(){this._renderer=null,this._colorMaskCache=null}};jm.extension={type:[W.WebGPUSystem],name:`colorMask`};var Mm=class{constructor(e){this._renderer=e}async init(e){return this._initPromise||=(e.gpu?Promise.resolve(e.gpu):this._createDeviceAndAdaptor(e)).then(e=>{this.gpu=e,this._renderer.runners.contextChange.emit(this.gpu)}),this._initPromise}contextChange(e){this._renderer.gpu=e}async _createDeviceAndAdaptor(e){let t=await r.get().getNavigator().gpu.requestAdapter({powerPreference:e.powerPreference,forceFallbackAdapter:e.forceFallbackAdapter}),n=[`texture-compression-bc`,`texture-compression-astc`,`texture-compression-etc2`].filter(e=>t.features.has(e));return{adapter:t,device:await t.requestDevice({requiredFeatures:n})}}destroy(){this.gpu=null,this._renderer=null}};Mm.extension={type:[W.WebGPUSystem],name:`device`},Mm.defaultOptions={powerPreference:void 0,forceFallbackAdapter:!1};var Nm=class{constructor(e){this._boundBindGroup=Object.create(null),this._boundVertexBuffer=Object.create(null),this._renderer=e}renderStart(){this.commandFinished=new Promise(e=>{this._resolveCommandFinished=e}),this.commandEncoder=this._renderer.gpu.device.createCommandEncoder()}beginRenderPass(e){this.endRenderPass(),this._clearCache(),this.renderPassEncoder=this.commandEncoder.beginRenderPass(e.descriptor)}endRenderPass(){this.renderPassEncoder&&this.renderPassEncoder.end(),this.renderPassEncoder=null}setViewport(e){this.renderPassEncoder.setViewport(e.x,e.y,e.width,e.height,0,1)}setPipelineFromGeometryProgramAndState(e,t,n,r){let i=this._renderer.pipeline.getPipeline(e,t,n,r);this.setPipeline(i)}setPipeline(e){this._boundPipeline!==e&&(this._boundPipeline=e,this.renderPassEncoder.setPipeline(e))}_setVertexBuffer(e,t){this._boundVertexBuffer[e]!==t&&(this._boundVertexBuffer[e]=t,this.renderPassEncoder.setVertexBuffer(e,this._renderer.buffer.updateBuffer(t)))}_setIndexBuffer(e){if(this._boundIndexBuffer===e)return;this._boundIndexBuffer=e;let t=e.data.BYTES_PER_ELEMENT===2?`uint16`:`uint32`;this.renderPassEncoder.setIndexBuffer(this._renderer.buffer.updateBuffer(e),t)}resetBindGroup(e){this._boundBindGroup[e]=null}setBindGroup(e,t,n){if(this._boundBindGroup[e]===t)return;this._boundBindGroup[e]=t,t._touch(this._renderer.gc.now,this._renderer.tick);let r=this._renderer.bindGroup.getBindGroup(t,n,e);this.renderPassEncoder.setBindGroup(e,r)}setGeometry(e,t){let n=this._renderer.pipeline.getBufferNamesToBind(e,t);for(let t in n)this._setVertexBuffer(parseInt(t,10),e.attributes[n[t]].buffer);e.indexBuffer&&this._setIndexBuffer(e.indexBuffer)}_setShaderBindGroups(e,t){for(let n in e.groups){let r=e.groups[n];t||this._syncBindGroup(r),this.setBindGroup(n,r,e.gpuProgram)}}_syncBindGroup(e){for(let t in e.resources){let n=e.resources[t];n.isUniformGroup&&this._renderer.ubo.updateUniformGroup(n)}}draw(e){let{geometry:t,shader:n,state:r,topology:i,size:a,start:o,instanceCount:s,skipSync:c}=e;this.setPipelineFromGeometryProgramAndState(t,n.gpuProgram,r,i),this.setGeometry(t,n.gpuProgram),this._setShaderBindGroups(n,c),t.indexBuffer?this.renderPassEncoder.drawIndexed(a||t.indexBuffer.data.length,s??t.instanceCount,o||0):this.renderPassEncoder.draw(a||t.getSize(),s??t.instanceCount,o||0)}finishRenderPass(){this.renderPassEncoder&&=(this.renderPassEncoder.end(),null)}postrender(){this.finishRenderPass(),this._gpu.device.queue.submit([this.commandEncoder.finish()]),this._resolveCommandFinished(),this.commandEncoder=null}restoreRenderPass(){let e=this._renderer.renderTarget.adaptor.getDescriptor(this._renderer.renderTarget.renderTarget,!1,[0,0,0,1],this._renderer.renderTarget.mipLevel,this._renderer.renderTarget.layer);this.renderPassEncoder=this.commandEncoder.beginRenderPass(e);let t=this._boundPipeline,n={...this._boundVertexBuffer},r=this._boundIndexBuffer,i={...this._boundBindGroup};this._clearCache();let a=this._renderer.renderTarget.viewport;this.renderPassEncoder.setViewport(a.x,a.y,a.width,a.height,0,1),this.setPipeline(t);for(let e in n)this._setVertexBuffer(e,n[e]);for(let e in i)this.setBindGroup(e,i[e],null);this._setIndexBuffer(r)}_clearCache(){for(let e=0;e<16;e++)this._boundBindGroup[e]=null,this._boundVertexBuffer[e]=null;this._boundIndexBuffer=null,this._boundPipeline=null}destroy(){this._renderer=null,this._gpu=null,this._boundBindGroup=null,this._boundVertexBuffer=null,this._boundIndexBuffer=null,this._boundPipeline=null}contextChange(e){this._gpu=e}};Nm.extension={type:[W.WebGPUSystem],name:`encoder`,priority:1};var Pm=class{constructor(e){this._renderer=e}contextChange(){this.maxTextures=this._renderer.device.gpu.device.limits.maxSampledTexturesPerShaderStage,this.maxBatchableTextures=this.maxTextures}destroy(){}};Pm.extension={type:[W.WebGPUSystem],name:`limits`};var Fm=class{constructor(e){this._renderTargetStencilState=Object.create(null),this._renderer=e,e.renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(e){let t=this._renderTargetStencilState[e.uid];t||=this._renderTargetStencilState[e.uid]={stencilMode:di.DISABLED,stencilReference:0},this._activeRenderTarget=e,this.setStencilMode(t.stencilMode,t.stencilReference)}setStencilMode(e,t){let n=this._renderTargetStencilState[this._activeRenderTarget.uid];n.stencilMode=e,n.stencilReference=t;let r=this._renderer;r.pipeline.setStencilMode(e),r.encoder.renderPassEncoder.setStencilReference(t)}destroy(){this._renderer.renderTarget.onRenderTargetChange.remove(this),this._renderer=null,this._activeRenderTarget=null,this._renderTargetStencilState=null}};Fm.extension={type:[W.WebGPUSystem],name:`stencil`};var Im={i32:{align:4,size:4},u32:{align:4,size:4},f32:{align:4,size:4},f16:{align:2,size:2},"vec2<i32>":{align:8,size:8},"vec2<u32>":{align:8,size:8},"vec2<f32>":{align:8,size:8},"vec2<f16>":{align:4,size:4},"vec3<i32>":{align:16,size:12},"vec3<u32>":{align:16,size:12},"vec3<f32>":{align:16,size:12},"vec3<f16>":{align:8,size:6},"vec4<i32>":{align:16,size:16},"vec4<u32>":{align:16,size:16},"vec4<f32>":{align:16,size:16},"vec4<f16>":{align:8,size:8},"mat2x2<f32>":{align:8,size:16},"mat2x2<f16>":{align:4,size:8},"mat3x2<f32>":{align:8,size:24},"mat3x2<f16>":{align:4,size:12},"mat4x2<f32>":{align:8,size:32},"mat4x2<f16>":{align:4,size:16},"mat2x3<f32>":{align:16,size:32},"mat2x3<f16>":{align:8,size:16},"mat3x3<f32>":{align:16,size:48},"mat3x3<f16>":{align:8,size:24},"mat4x3<f32>":{align:16,size:64},"mat4x3<f16>":{align:8,size:32},"mat2x4<f32>":{align:16,size:32},"mat2x4<f16>":{align:8,size:16},"mat3x4<f32>":{align:16,size:48},"mat3x4<f16>":{align:8,size:24},"mat4x4<f32>":{align:16,size:64},"mat4x4<f16>":{align:8,size:32}};function Lm(e){let t=e.map(e=>({data:e,offset:0,size:0})),n=0;for(let e=0;e<t.length;e++){let r=t[e],i=Im[r.data.type].size,a=Im[r.data.type].align;if(!Im[r.data.type])throw Error(`[Pixi.js] WebGPU UniformBuffer: Unknown type ${r.data.type}`);r.data.size>1&&(i=Math.max(i,a)*r.data.size),n=Math.ceil(n/a)*a,r.size=i,r.offset=n,n+=i}return n=Math.ceil(n/16)*16,{uboElements:t,size:n}}function Rm(e,t){let{size:n,align:r}=Im[e.data.type],i=(r-n)/4,a=e.data.type.indexOf(`i32`)>=0?`dataInt32`:`data`;return`
|
|
2448
|
+
v = uv.${e.data.name};
|
|
2449
|
+
${t===0?``:`offset += ${t};`}
|
|
2450
|
+
|
|
2451
|
+
arrayOffset = offset;
|
|
2452
|
+
|
|
2453
|
+
t = 0;
|
|
2454
|
+
|
|
2455
|
+
for(var i=0; i < ${e.data.size*(n/4)}; i++)
|
|
2456
|
+
{
|
|
2457
|
+
for(var j = 0; j < ${n/4}; j++)
|
|
2458
|
+
{
|
|
2459
|
+
${a}[arrayOffset++] = v[t++];
|
|
2460
|
+
}
|
|
2461
|
+
${i===0?``:`arrayOffset += ${i};`}
|
|
2462
|
+
}
|
|
2463
|
+
`}function zm(e){return Xi(e,`uboWgsl`,Rm,ta)}var Bm=class extends $i{constructor(){super({createUboElements:Lm,generateUboSync:zm})}};Bm.extension={type:[W.WebGPUSystem],name:`ubo`};var Vm=128,Hm=class{constructor(e){this._bindGroupHash=Object.create(null),this._buffers=[],this._bindGroups=[],this._bufferResources=[],this._renderer=e,this._batchBuffer=new Am({minUniformOffsetAlignment:Vm});let t=256/Vm;for(let e=0;e<t;e++){let t=k.UNIFORM|k.COPY_DST;e===0&&(t|=k.COPY_SRC),this._buffers.push(new V({data:this._batchBuffer.data,usage:t}))}}renderEnd(){this._uploadBindGroups(),this._resetBindGroups()}_resetBindGroups(){this._bindGroupHash=Object.create(null),this._batchBuffer.clear()}getUniformBindGroup(e,t){if(!t&&this._bindGroupHash[e.uid])return this._bindGroupHash[e.uid];this._renderer.ubo.ensureUniformGroup(e);let n=e.buffer.data,r=this._batchBuffer.addEmptyGroup(n.length);return this._renderer.ubo.syncUniformGroup(e,this._batchBuffer.data,r/4),this._bindGroupHash[e.uid]=this._getBindGroup(r/Vm),this._bindGroupHash[e.uid]}getUboResource(e){this._renderer.ubo.updateUniformGroup(e);let t=e.buffer.data,n=this._batchBuffer.addGroup(t);return this._getBufferResource(n/Vm)}getArrayBindGroup(e){let t=this._batchBuffer.addGroup(e);return this._getBindGroup(t/Vm)}getArrayBufferResource(e){let t=this._batchBuffer.addGroup(e)/Vm;return this._getBufferResource(t)}_getBufferResource(e){if(!this._bufferResources[e]){let t=this._buffers[e%2];this._bufferResources[e]=new ra({buffer:t,offset:(e/2|0)*256,size:Vm})}return this._bufferResources[e]}_getBindGroup(e){if(!this._bindGroups[e]){let t=new L({0:this._getBufferResource(e)});this._bindGroups[e]=t}return this._bindGroups[e]}_uploadBindGroups(){let e=this._renderer.buffer,t=this._buffers[0];t.update(this._batchBuffer.byteIndex),e.updateBuffer(t);let n=this._renderer.gpu.device.createCommandEncoder();for(let r=1;r<this._buffers.length;r++){let i=this._buffers[r];n.copyBufferToBuffer(e.getGPUBuffer(t),Vm,e.getGPUBuffer(i),0,this._batchBuffer.byteIndex)}this._renderer.gpu.device.queue.submit([n.finish()])}destroy(){for(let e=0;e<this._bindGroups.length;e++)this._bindGroups[e]?.destroy();this._bindGroups=null,this._bindGroupHash=null;for(let e=0;e<this._buffers.length;e++)this._buffers[e].destroy();this._buffers=null;for(let e=0;e<this._bufferResources.length;e++)this._bufferResources[e].destroy();this._bufferResources=null,this._batchBuffer.destroy(),this._renderer=null}};Hm.extension={type:[W.WebGPUPipes],name:`uniformBatch`};var Um={"point-list":0,"line-list":1,"line-strip":2,"triangle-list":3,"triangle-strip":4};function Wm(e,t,n,r,i){return e<<24|t<<16|n<<10|r<<5|i}function Gm(e,t,n,r,i){return n<<8|e<<5|r<<3|i<<1|t}var Km=class{constructor(e){this._moduleCache=Object.create(null),this._bufferLayoutsCache=Object.create(null),this._bindingNamesCache=Object.create(null),this._pipeCache=Object.create(null),this._pipeStateCaches=Object.create(null),this._colorMask=15,this._multisampleCount=1,this._colorTargetCount=1,this._renderer=e}contextChange(e){this._gpu=e,this.setStencilMode(di.DISABLED),this._updatePipeHash()}setMultisampleCount(e){this._multisampleCount!==e&&(this._multisampleCount=e,this._updatePipeHash())}setRenderTarget(e){this._multisampleCount=e.msaaSamples,this._depthStencilAttachment=+!!e.descriptor.depthStencilAttachment,this._colorTargetCount=e.colorTargetCount,this._updatePipeHash()}setColorMask(e){this._colorMask!==e&&(this._colorMask=e,this._updatePipeHash())}setStencilMode(e){this._stencilMode!==e&&(this._stencilMode=e,this._stencilState=na[e],this._updatePipeHash())}setPipeline(e,t,n,r){let i=this.getPipeline(e,t,n);r.setPipeline(i)}getPipeline(e,t,n,r){e._layoutKey||(qi(e,t.attributeData),this._generateBufferKey(e)),r||=e.topology;let i=Wm(e._layoutKey,t._layoutKey,n.data,n._blendModeId,Um[r]);return this._pipeCache[i]||(this._pipeCache[i]=this._createPipeline(e,t,n,r)),this._pipeCache[i]}_createPipeline(e,t,n,r){let i=this._gpu.device,a=this._createVertexBufferLayouts(e,t),o=this._renderer.state.getColorTargets(n,this._colorTargetCount),s=this._stencilMode===di.RENDERING_MASK_ADD?0:this._colorMask;for(let e=0;e<o.length;e++)o[e].writeMask=s;let c=this._renderer.shader.getProgramData(t).pipeline,l={vertex:{module:this._getModule(t.vertex.source),entryPoint:t.vertex.entryPoint,buffers:a},fragment:{module:this._getModule(t.fragment.source),entryPoint:t.fragment.entryPoint,targets:o},primitive:{topology:r,cullMode:n.cullMode},layout:c,multisample:{count:this._multisampleCount},label:`PIXI Pipeline`};return this._depthStencilAttachment&&(l.depthStencil={...this._stencilState,format:`depth24plus-stencil8`,depthWriteEnabled:n.depthTest,depthCompare:n.depthTest?`less`:`always`}),i.createRenderPipeline(l)}_getModule(e){return this._moduleCache[e]||this._createModule(e)}_createModule(e){let t=this._gpu.device;return this._moduleCache[e]=t.createShaderModule({code:e}),this._moduleCache[e]}_generateBufferKey(e){let t=[],n=0,r=Object.keys(e.attributes).sort();for(let i=0;i<r.length;i++){let a=e.attributes[r[i]];t[n++]=a.offset,t[n++]=a.format,t[n++]=a.stride,t[n++]=a.instance}return e._layoutKey=ne(t.join(`|`),`geometry`),e._layoutKey}_generateAttributeLocationsKey(e){let t=[],n=0,r=Object.keys(e.attributeData).sort();for(let i=0;i<r.length;i++){let a=e.attributeData[r[i]];t[n++]=a.location}return e._attributeLocationsKey=ne(t.join(`|`),`programAttributes`),e._attributeLocationsKey}getBufferNamesToBind(e,t){let n=e._layoutKey<<16|t._attributeLocationsKey;if(this._bindingNamesCache[n])return this._bindingNamesCache[n];let r=this._createVertexBufferLayouts(e,t),i=Object.create(null),a=t.attributeData;for(let e=0;e<r.length;e++){let t=Object.values(r[e].attributes)[0].shaderLocation;for(let n in a)if(a[n].location===t){i[e]=n;break}}return this._bindingNamesCache[n]=i,i}_createVertexBufferLayouts(e,t){t._attributeLocationsKey||this._generateAttributeLocationsKey(t);let n=e._layoutKey<<16|t._attributeLocationsKey;if(this._bufferLayoutsCache[n])return this._bufferLayoutsCache[n];let r=[];return e.buffers.forEach(n=>{let i={arrayStride:0,stepMode:`vertex`,attributes:[]},a=i.attributes;for(let r in t.attributeData){let o=e.attributes[r];(o.divisor??1)!==1&&D(`Attribute ${r} has an invalid divisor value of '${o.divisor}'. WebGPU only supports a divisor value of 1`),o.buffer===n&&(i.arrayStride=o.stride,i.stepMode=o.instance?`instance`:`vertex`,a.push({shaderLocation:t.attributeData[r].location,offset:o.offset,format:o.format}))}a.length&&r.push(i)}),this._bufferLayoutsCache[n]=r,r}_updatePipeHash(){let e=Gm(this._stencilMode,this._multisampleCount,this._colorMask,this._depthStencilAttachment,this._colorTargetCount);this._pipeStateCaches[e]||(this._pipeStateCaches[e]=Object.create(null)),this._pipeCache=this._pipeStateCaches[e]}destroy(){this._renderer=null,this._bufferLayoutsCache=null}};Km.extension={type:[W.WebGPUSystem],name:`pipeline`};var qm=class{constructor(){this.contexts=[],this.msaaTextures=[],this.msaaSamples=1}},Jm=class{init(e,t){this._renderer=e,this._renderTargetSystem=t}copyToTexture(e,t,n,r,i){let a=this._renderer,o=this._getGpuColorTexture(e),s=a.texture.getGpuSource(t.source);return a.encoder.commandEncoder.copyTextureToTexture({texture:o,origin:n},{texture:s,origin:i},r),t}startRenderPass(e,t=!0,n,r,i=0,a=0){let o=this._renderTargetSystem.getGpuRenderTarget(e);if(a!==0&&o.msaaTextures?.length)throw Error(`[RenderTargetSystem] Rendering to array layers is not supported with MSAA render targets.`);if(i>0&&o.msaaTextures?.length)throw Error(`[RenderTargetSystem] Rendering to mip levels is not supported with MSAA render targets.`);o.descriptor=this.getDescriptor(e,t,n,i,a),this._renderer.pipeline.setRenderTarget(o),this._renderer.encoder.beginRenderPass(o),this._renderer.encoder.setViewport(r)}finishRenderPass(){this._renderer.encoder.endRenderPass()}_getGpuColorTexture(e){let t=this._renderTargetSystem.getGpuRenderTarget(e);return t.contexts[0]?t.contexts[0].getCurrentTexture():this._renderer.texture.getGpuSource(e.colorTextures[0].source)}getDescriptor(e,t,n,r=0,i=0){typeof t==`boolean`&&(t=t?Nr.ALL:Nr.NONE);let a=this._renderTargetSystem,o=a.getGpuRenderTarget(e),s=e.colorTextures.map((e,s)=>{let c=o.contexts[s],l,u;if(c){if(i!==0)throw Error(`[RenderTargetSystem] Rendering to array layers is not supported for canvas targets.`);l=c.getCurrentTexture().createView()}else l=this._renderer.texture.getGpuSource(e).createView({dimension:`2d`,baseMipLevel:r,mipLevelCount:1,baseArrayLayer:i,arrayLayerCount:1});o.msaaTextures[s]&&(u=l,l=this._renderer.texture.getTextureView(o.msaaTextures[s]));let d=t&Nr.COLOR?`clear`:`load`;return n??=a.defaultClearColor,{view:l,resolveTarget:u,clearValue:n,storeOp:`store`,loadOp:d}}),c;if((e.stencil||e.depth)&&!e.depthStencilTexture&&(e.ensureDepthStencilTexture(),e.depthStencilTexture.source.sampleCount=o.msaa?4:1),e.depthStencilTexture){let n=t&Nr.STENCIL?`clear`:`load`,a=t&Nr.DEPTH?`clear`:`load`;c={view:this._renderer.texture.getGpuSource(e.depthStencilTexture.source).createView({dimension:`2d`,baseMipLevel:r,mipLevelCount:1,baseArrayLayer:i,arrayLayerCount:1}),stencilStoreOp:`store`,stencilLoadOp:n,depthClearValue:1,depthLoadOp:a,depthStoreOp:`store`}}return{colorAttachments:s,depthStencilAttachment:c}}clear(e,t=!0,n,r,i=0,a=0){if(!t)return;let{gpu:o,encoder:s}=this._renderer,c=o.device;if(s.commandEncoder===null){let o=c.createCommandEncoder(),s=this.getDescriptor(e,t,n,i,a),l=o.beginRenderPass(s);l.setViewport(r.x,r.y,r.width,r.height,0,1),l.end();let u=o.finish();c.queue.submit([u])}else this.startRenderPass(e,t,n,r,i,a)}initGpuRenderTarget(e){e.isRoot=!0;let t=new qm;return t.colorTargetCount=e.colorTextures.length,e.colorTextures.forEach((e,n)=>{if(e instanceof rt){let r=e.resource.getContext(`webgpu`),i=e.transparent?`premultiplied`:`opaque`;try{r.configure({device:this._renderer.gpu.device,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC,format:`bgra8unorm`,alphaMode:i})}catch(e){console.error(e)}t.contexts[n]=r}if(t.msaa=e.source.antialias,e.source.antialias){let r=new m({width:0,height:0,sampleCount:4,arrayLayerCount:e.source.arrayLayerCount});t.msaaTextures[n]=r}}),t.msaa&&(t.msaaSamples=4,e.depthStencilTexture&&(e.depthStencilTexture.source.sampleCount=4)),t}destroyGpuRenderTarget(e){e.contexts.forEach(e=>{e.unconfigure()}),e.msaaTextures.forEach(e=>{e.destroy()}),e.msaaTextures.length=0,e.contexts.length=0}ensureDepthStencilTexture(e){let t=this._renderTargetSystem.getGpuRenderTarget(e);e.depthStencilTexture&&t.msaa&&(e.depthStencilTexture.source.sampleCount=4)}resizeGpuRenderTarget(e){let t=this._renderTargetSystem.getGpuRenderTarget(e);t.width=e.width,t.height=e.height,t.msaa&&e.colorTextures.forEach((e,n)=>{t.msaaTextures[n]?.resize(e.source.width,e.source.height,e.source._resolution)})}},Ym=class extends ei{constructor(e){super(e),this.adaptor=new Jm,this.adaptor.init(e,this)}};Ym.extension={type:[W.WebGPUSystem],name:`renderTarget`};var Xm=class{constructor(){this._gpuProgramData=Object.create(null)}contextChange(e){this._gpu=e}getProgramData(e){return this._gpuProgramData[e._layoutKey]||this._createGPUProgramData(e)}_createGPUProgramData(e){let t=this._gpu.device,n=e.gpuLayout.map(e=>t.createBindGroupLayout({entries:e})),r={bindGroupLayouts:n};return this._gpuProgramData[e._layoutKey]={bindGroups:n,pipeline:t.createPipelineLayout(r)},this._gpuProgramData[e._layoutKey]}destroy(){this._gpu=null,this._gpuProgramData=null}};Xm.extension={type:[W.WebGPUSystem],name:`shader`};var Zm={};Zm.normal={alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}},Zm.add={alpha:{srcFactor:`src-alpha`,dstFactor:`one-minus-src-alpha`,operation:`add`},color:{srcFactor:`one`,dstFactor:`one`,operation:`add`}},Zm.multiply={alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},color:{srcFactor:`dst`,dstFactor:`one-minus-src-alpha`,operation:`add`}},Zm.screen={alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},color:{srcFactor:`one`,dstFactor:`one-minus-src`,operation:`add`}},Zm.overlay={alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},color:{srcFactor:`one`,dstFactor:`one-minus-src`,operation:`add`}},Zm.none={alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},color:{srcFactor:`zero`,dstFactor:`zero`,operation:`add`}},Zm[`normal-npm`]={alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},color:{srcFactor:`src-alpha`,dstFactor:`one-minus-src-alpha`,operation:`add`}},Zm[`add-npm`]={alpha:{srcFactor:`one`,dstFactor:`one`,operation:`add`},color:{srcFactor:`src-alpha`,dstFactor:`one`,operation:`add`}},Zm[`screen-npm`]={alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},color:{srcFactor:`src-alpha`,dstFactor:`one-minus-src`,operation:`add`}},Zm.erase={alpha:{srcFactor:`zero`,dstFactor:`one-minus-src-alpha`,operation:`add`},color:{srcFactor:`zero`,dstFactor:`one-minus-src`,operation:`add`}},Zm.min={alpha:{srcFactor:`one`,dstFactor:`one`,operation:`min`},color:{srcFactor:`one`,dstFactor:`one`,operation:`min`}},Zm.max={alpha:{srcFactor:`one`,dstFactor:`one`,operation:`max`},color:{srcFactor:`one`,dstFactor:`one`,operation:`max`}};var Qm=class{constructor(){this.defaultState=new et,this.defaultState.blend=!0}contextChange(e){this.gpu=e}getColorTargets(e,t){let n=Zm[e.blendMode]||Zm.normal,r=[],i={format:`bgra8unorm`,writeMask:0,blend:n};for(let e=0;e<t;e++)r[e]=i;return r}destroy(){this.gpu=null}};Qm.extension={type:[W.WebGPUSystem],name:`state`};var $m={type:`image`,upload(e,t,n,r=0){let i=e.resource,a=(e.pixelWidth|0)*(e.pixelHeight|0),o=i.byteLength/a;n.device.queue.writeTexture({texture:t,origin:{x:0,y:0,z:r}},i,{offset:0,rowsPerImage:e.pixelHeight,bytesPerRow:e.pixelWidth*o},{width:e.pixelWidth,height:e.pixelHeight,depthOrArrayLayers:1})}},eh={"bc1-rgba-unorm":{blockBytes:8,blockWidth:4,blockHeight:4},"bc2-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"bc3-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"bc7-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"etc1-rgb-unorm":{blockBytes:8,blockWidth:4,blockHeight:4},"etc2-rgba8unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"astc-4x4-unorm":{blockBytes:16,blockWidth:4,blockHeight:4}},th={blockBytes:4,blockWidth:1,blockHeight:1},nh={type:`compressed`,upload(e,t,n,r=0){let i=e.pixelWidth,a=e.pixelHeight,o=eh[e.format]||th;for(let s=0;s<e.resource.length;s++){let c=e.resource[s],l=Math.ceil(i/o.blockWidth)*o.blockBytes;n.device.queue.writeTexture({texture:t,mipLevel:s,origin:{x:0,y:0,z:r}},c,{offset:0,bytesPerRow:l},{width:Math.ceil(i/o.blockWidth)*o.blockWidth,height:Math.ceil(a/o.blockHeight)*o.blockHeight,depthOrArrayLayers:1}),i=Math.max(i>>1,1),a=Math.max(a>>1,1)}}},rh=[`right`,`left`,`top`,`bottom`,`front`,`back`];function ih(e){return{type:`cube`,upload(t,n,r){let i=t.faces;for(let t=0;t<rh.length;t++){let a=i[rh[t]];(e[a.uploadMethodId]||e.image).upload(a,n,r,t)}}}}var ah={type:`image`,upload(e,t,n,i=0){let a=e.resource;if(!a)return;if(globalThis.HTMLImageElement&&a instanceof HTMLImageElement){let t=r.get().createCanvas(a.width,a.height);t.getContext(`2d`).drawImage(a,0,0,a.width,a.height),e.resource=t,D(`ImageSource: Image element passed, converting to canvas and replacing resource.`)}let o=Math.min(t.width,e.resourceWidth||e.pixelWidth),s=Math.min(t.height,e.resourceHeight||e.pixelHeight),c=e.alphaMode===`premultiply-alpha-on-upload`;n.device.queue.copyExternalImageToTexture({source:a},{texture:t,origin:{x:0,y:0,z:i},premultipliedAlpha:c},{width:o,height:s})}},oh={type:`video`,upload(e,t,n,r){ah.upload(e,t,n,r)}},sh=class{constructor(e){this.device=e,this.sampler=e.createSampler({minFilter:`linear`}),this.pipelines={}}_getMipmapPipeline(e){let t=this.pipelines[e];return t||(this.mipmapShaderModule||=this.device.createShaderModule({code:`
|
|
2464
|
+
var<private> pos : array<vec2<f32>, 3> = array<vec2<f32>, 3>(
|
|
2465
|
+
vec2<f32>(-1.0, -1.0), vec2<f32>(-1.0, 3.0), vec2<f32>(3.0, -1.0));
|
|
2466
|
+
|
|
2467
|
+
struct VertexOutput {
|
|
2468
|
+
@builtin(position) position : vec4<f32>,
|
|
2469
|
+
@location(0) texCoord : vec2<f32>,
|
|
2470
|
+
};
|
|
2471
|
+
|
|
2472
|
+
@vertex
|
|
2473
|
+
fn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {
|
|
2474
|
+
var output : VertexOutput;
|
|
2475
|
+
output.texCoord = pos[vertexIndex] * vec2<f32>(0.5, -0.5) + vec2<f32>(0.5);
|
|
2476
|
+
output.position = vec4<f32>(pos[vertexIndex], 0.0, 1.0);
|
|
2477
|
+
return output;
|
|
2478
|
+
}
|
|
2479
|
+
|
|
2480
|
+
@group(0) @binding(0) var imgSampler : sampler;
|
|
2481
|
+
@group(0) @binding(1) var img : texture_2d<f32>;
|
|
2482
|
+
|
|
2483
|
+
@fragment
|
|
2484
|
+
fn fragmentMain(@location(0) texCoord : vec2<f32>) -> @location(0) vec4<f32> {
|
|
2485
|
+
return textureSample(img, imgSampler, texCoord);
|
|
2486
|
+
}
|
|
2487
|
+
`}),t=this.device.createRenderPipeline({layout:`auto`,vertex:{module:this.mipmapShaderModule,entryPoint:`vertexMain`},fragment:{module:this.mipmapShaderModule,entryPoint:`fragmentMain`,targets:[{format:e}]}}),this.pipelines[e]=t),t}generateMipmap(e){let t=this._getMipmapPipeline(e.format);if(e.dimension===`3d`||e.dimension===`1d`)throw Error(`Generating mipmaps for non-2d textures is currently unsupported!`);let n=e,r=e.depthOrArrayLayers||1,i=e.usage&GPUTextureUsage.RENDER_ATTACHMENT;if(!i){let t={size:{width:Math.ceil(e.width/2),height:Math.ceil(e.height/2),depthOrArrayLayers:r},format:e.format,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.RENDER_ATTACHMENT,mipLevelCount:e.mipLevelCount-1};n=this.device.createTexture(t)}let a=this.device.createCommandEncoder({}),o=t.getBindGroupLayout(0);for(let s=0;s<r;++s){let r=e.createView({baseMipLevel:0,mipLevelCount:1,dimension:`2d`,baseArrayLayer:s,arrayLayerCount:1}),c=+!!i;for(let i=1;i<e.mipLevelCount;++i){let e=n.createView({baseMipLevel:c++,mipLevelCount:1,dimension:`2d`,baseArrayLayer:s,arrayLayerCount:1}),i=a.beginRenderPass({colorAttachments:[{view:e,storeOp:`store`,loadOp:`clear`,clearValue:{r:0,g:0,b:0,a:0}}]}),l=this.device.createBindGroup({layout:o,entries:[{binding:0,resource:this.sampler},{binding:1,resource:r}]});i.setPipeline(t),i.setBindGroup(0,l),i.draw(3,1,0,0),i.end(),r=e}}if(!i){let t={width:Math.ceil(e.width/2),height:Math.ceil(e.height/2),depthOrArrayLayers:r};for(let r=1;r<e.mipLevelCount;++r)a.copyTextureToTexture({texture:n,mipLevel:r-1},{texture:e,mipLevel:r},t),t.width=Math.ceil(t.width/2),t.height=Math.ceil(t.height/2)}return this.device.queue.submit([a.finish()]),i||n.destroy(),e}},ch=class{constructor(e){this.textureView=null,this.gpuTexture=e}destroy(){this.gpuTexture.destroy(),this.textureView=null,this.gpuTexture=null}},lh=class{constructor(e){this._gpuSamplers=Object.create(null),this._bindGroupHash=Object.create(null),this._renderer=e,e.gc.addCollection(this,`_bindGroupHash`,`hash`),this._managedTextures=new zi({renderer:e,type:`resource`,onUnload:this.onSourceUnload.bind(this),name:`gpuTextureSource`});let t={image:ah,buffer:$m,video:oh,compressed:nh};this._uploads={...t,cube:ih(t)}}get managedTextures(){return Object.values(this._managedTextures.items)}contextChange(e){this._gpu=e}initSource(e){return e._gpuData[this._renderer.uid]?.gpuTexture||this._initSource(e)}_initSource(e){if(e.autoGenerateMipmaps){let t=Math.max(e.pixelWidth,e.pixelHeight);e.mipLevelCount=Math.floor(Math.log2(t))+1}let t=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST;e.uploadMethodId!==`compressed`&&(t|=GPUTextureUsage.RENDER_ATTACHMENT,t|=GPUTextureUsage.COPY_SRC);let n=eh[e.format]||{blockBytes:4,blockWidth:1,blockHeight:1},r=Math.ceil(e.pixelWidth/n.blockWidth)*n.blockWidth,i=Math.ceil(e.pixelHeight/n.blockHeight)*n.blockHeight,a={label:e.label,size:{width:r,height:i,depthOrArrayLayers:e.arrayLayerCount},format:e.format,sampleCount:e.sampleCount,mipLevelCount:e.mipLevelCount,dimension:e.dimension,usage:t},o=this._gpu.device.createTexture(a);return e._gpuData[this._renderer.uid]=new ch(o),this._managedTextures.add(e)&&(e.on(`update`,this.onSourceUpdate,this),e.on(`resize`,this.onSourceResize,this),e.on(`updateMipmaps`,this.onUpdateMipmaps,this)),this.onSourceUpdate(e),o}onSourceUpdate(e){let t=this.getGpuSource(e);t&&(this._uploads[e.uploadMethodId]&&this._uploads[e.uploadMethodId].upload(e,t,this._gpu),e.autoGenerateMipmaps&&e.mipLevelCount>1&&this.onUpdateMipmaps(e))}onUpdateMipmaps(e){this._mipmapGenerator||=new sh(this._gpu.device);let t=this.getGpuSource(e);this._mipmapGenerator.generateMipmap(t)}onSourceUnload(e){e.off(`update`,this.onSourceUpdate,this),e.off(`resize`,this.onSourceResize,this),e.off(`updateMipmaps`,this.onUpdateMipmaps,this)}onSourceResize(e){e._gcLastUsed=this._renderer.gc.now;let t=e._gpuData[this._renderer.uid],n=t?.gpuTexture;n?(n.width!==e.pixelWidth||n.height!==e.pixelHeight)&&(t.destroy(),this._bindGroupHash[e.uid]=null,e._gpuData[this._renderer.uid]=null,this.initSource(e)):this.initSource(e)}_initSampler(e){return this._gpuSamplers[e._resourceId]=this._gpu.device.createSampler(e),this._gpuSamplers[e._resourceId]}getGpuSampler(e){return this._gpuSamplers[e._resourceId]||this._initSampler(e)}getGpuSource(e){return e._gcLastUsed=this._renderer.gc.now,e._gpuData[this._renderer.uid]?.gpuTexture||this.initSource(e)}getTextureBindGroup(e){return this._bindGroupHash[e.uid]||this._createTextureBindGroup(e)}_createTextureBindGroup(e){let t=e.source;return this._bindGroupHash[e.uid]=new L({0:t,1:t.style,2:new pe({uTextureMatrix:{type:`mat3x3<f32>`,value:e.textureMatrix.mapCoord}})}),this._bindGroupHash[e.uid]}getTextureView(e){let t=e.source;t._gcLastUsed=this._renderer.gc.now;let n=t._gpuData[this._renderer.uid];return n||=(this.initSource(t),t._gpuData[this._renderer.uid]),n.textureView||=n.gpuTexture.createView({dimension:t.viewDimension}),n.textureView}generateCanvas(e){let t=this._renderer,n=t.gpu.device.createCommandEncoder(),i=r.get().createCanvas();i.width=e.source.pixelWidth,i.height=e.source.pixelHeight;let a=i.getContext(`webgpu`);return a.configure({device:t.gpu.device,usage:GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC,format:r.get().getNavigator().gpu.getPreferredCanvasFormat(),alphaMode:`premultiplied`}),n.copyTextureToTexture({texture:t.texture.getGpuSource(e.source),origin:{x:0,y:0}},{texture:a.getCurrentTexture()},{width:i.width,height:i.height}),t.gpu.device.queue.submit([n.finish()]),i}getPixels(e){let t=this.generateCanvas(e),n=on.getOptimalCanvasAndContext(t.width,t.height),r=n.context;r.drawImage(t,0,0);let{width:i,height:a}=t,o=r.getImageData(0,0,i,a),s=new Uint8ClampedArray(o.data.buffer);return on.returnCanvasAndContext(n),{pixels:s,width:i,height:a}}destroy(){this._managedTextures.destroy();for(let e of Object.keys(this._bindGroupHash)){let t=Number(e);this._bindGroupHash[t]?.destroy()}this._renderer=null,this._gpu=null,this._mipmapGenerator=null,this._gpuSamplers=null,this._bindGroupHash=null}};lh.extension={type:[W.WebGPUSystem],name:`texture`};var uh=class{constructor(){this._maxTextures=0}contextChange(e){let t=new pe({uTransformMatrix:{value:new U,type:`mat3x3<f32>`},uColor:{value:new Float32Array([1,1,1,1]),type:`vec4<f32>`},uRound:{value:0,type:`f32`}});this._maxTextures=e.limits.maxBatchableTextures;let n=Ei({name:`graphics`,bits:[Mi,Ri(this._maxTextures),ea,Si]});this.shader=new ce({gpuProgram:n,resources:{localUniforms:t}})}execute(e,t){let n=t.context,r=n.customShader||this.shader,i=e.renderer,{batcher:a,instructions:o}=i.graphicsContext.getContextRenderData(n),s=i.encoder;s.setGeometry(a.geometry,r.gpuProgram);let c=i.globalUniforms.bindGroup;s.setBindGroup(0,c,r.gpuProgram);let l=i.renderPipes.uniformBatch.getUniformBindGroup(r.resources.localUniforms,!0);s.setBindGroup(2,l,r.gpuProgram);let u=o.instructions,d=null;for(let t=0;t<o.instructionSize;t++){let n=u[t];if(n.topology!==d&&(d=n.topology,s.setPipelineFromGeometryProgramAndState(a.geometry,r.gpuProgram,e.state,n.topology)),r.groups[1]=n.bindGroup,!n.gpuBindGroup){let e=n.textures;n.bindGroup=Gi(e.textures,e.count,this._maxTextures),n.gpuBindGroup=i.bindGroup.getBindGroup(n.bindGroup,r.gpuProgram,1)}s.setBindGroup(1,n.bindGroup,r.gpuProgram),s.renderPassEncoder.drawIndexed(n.size,1,n.start)}}destroy(){this.shader.destroy(!0),this.shader=null}};uh.extension={type:[W.WebGPUPipesAdaptor],name:`graphics`};var dh=class{init(){let e=Ei({name:`mesh`,bits:[Ji,Zi,Si]});this._shader=new ce({gpuProgram:e,resources:{uTexture:h.EMPTY._source,uSampler:h.EMPTY._source.style,textureUniforms:{uTextureMatrix:{type:`mat3x3<f32>`,value:new U}}}})}execute(e,t){let n=e.renderer,r=t._shader;if(!r)r=this._shader,r.groups[2]=n.texture.getTextureBindGroup(t.texture);else if(!r.gpuProgram){D(`Mesh shader has no gpuProgram`,t.shader);return}let i=r.gpuProgram;if(i.autoAssignGlobalUniforms&&(r.groups[0]=n.globalUniforms.bindGroup),i.autoAssignLocalUniforms){let t=e.localUniforms;r.groups[1]=n.renderPipes.uniformBatch.getUniformBindGroup(t,!0)}n.encoder.draw({geometry:t._geometry,shader:r,state:t.state})}destroy(){this._shader.destroy(!0),this._shader=null}};dh.extension={type:[W.WebGPUPipesAdaptor],name:`mesh`};var fh=[...Fr,Bm,Nm,Mm,Pm,km,lh,Ym,Xm,Qm,Km,jm,Fm,Dm],ph=[...Ur,Hm],mh=[af,dh,uh],hh=[],gh=[],_h=[];F.handleByNamedList(W.WebGPUSystem,hh),F.handleByNamedList(W.WebGPUPipes,gh),F.handleByNamedList(W.WebGPUPipesAdaptor,_h),F.add(...fh,...ph,...mh);var vh=class extends Mr{constructor(){let e={name:`webgpu`,type:P.WEBGPU,systems:hh,renderPipes:gh,renderPipeAdaptors:_h};super(e)}},yh={POINTS:`point-list`,LINES:`line-list`,LINE_STRIP:`line-strip`,TRIANGLES:`triangle-list`,TRIANGLE_STRIP:`triangle-strip`},bh=new Proxy(yh,{get(e,t){return y(n,`DRAW_MODES.${t} is deprecated, use '${yh[t]}' instead`),e[t]}}),xh=(e=>(e.CLAMP=`clamp-to-edge`,e.REPEAT=`repeat`,e.MIRRORED_REPEAT=`mirror-repeat`,e))(xh||{}),Sh=new Proxy(xh,{get(e,t){return y(n,`DRAW_MODES.${t} is deprecated, use '${xh[t]}' instead`),e[t]}}),Ch=(e=>(e.NEAREST=`nearest`,e.LINEAR=`linear`,e))(Ch||{}),wh=new Proxy(Ch,{get(e,t){return y(n,`DRAW_MODES.${t} is deprecated, use '${Ch[t]}' instead`),e[t]}}),Th=class e extends m{constructor(t){let{faces:n,...r}=t;e._validateFaces(n);let i=n.right,a=i.resolution,o=i.format,s=i.alphaMode,c=[`resolution`,`format`,`alphaMode`,`dimensions`,`viewDimension`].filter(e=>r[e]!==void 0);c.length&&D(`[CubeTextureSource] Ignoring option(s) [${c.join(`, `)}]; these are derived from face sources.`),super({...r,resource:n,width:i.width,height:i.height,dimensions:`2d`,viewDimension:`cube`,arrayLayerCount:6,resolution:a,format:o,alphaMode:s}),this.uploadMethodId=`cube`,this.faces=n;for(let e of Object.keys(n)){let t=n[e];t.on(`update`,this._onFaceUpdate,this),t.on(`resize`,this._onFaceResize,this),t.on(`unload`,this._onFaceUpdate,this)}}destroy(){let e=this.faces;if(e)for(let t of Object.keys(e)){let n=e[t];n.off(`update`,this._onFaceUpdate,this),n.off(`resize`,this._onFaceResize,this),n.off(`unload`,this._onFaceUpdate,this)}super.destroy()}_onFaceUpdate(){this.emit(`update`,this)}_onFaceResize(t){e._validateFaces(this.faces),this.resize(t.width,t.height,t.resolution)}static _validateFaces(e){if(!e.right||!e.left||!e.top||!e.bottom||!e.front||!e.back)throw Error(`[CubeTextureSource] Requires { left, right, top, bottom, front, back } faces.`);let t=e.right,n=t.pixelWidth,r=t.pixelHeight,i=t.format,a=t.alphaMode,o=t.resolution;for(let t of Object.keys(e)){let s=e[t];if(s.pixelWidth!==n||s.pixelHeight!==r)throw Error(`[CubeTextureSource] Face '${String(t)}' has a different size. All faces must match.`);if(s.format!==i)throw Error(`[CubeTextureSource] Face '${String(t)}' has a different format. All faces must match.`);if(s.alphaMode!==a)throw Error(`[CubeTextureSource] Face '${String(t)}' has a different alphaMode. All faces must match.`);if(s.resolution!==o)throw Error(`[CubeTextureSource] Face '${String(t)}' has a different resolution. All faces must match.`)}}},Eh=[`left`,`right`,`top`,`bottom`,`front`,`back`];function Dh(e,t){let n=t?{...t}:{};delete n.label;let r=Object.keys(n).sort(),i=r.length?`|${r.map(e=>`${e}=${String(n[e])}`).join(`&`)}`:``;return`cube:${Eh.map(t=>e[t]).join(`,`)}${i}`}var Oh=class e extends ie{constructor(e){super(),this.uid=se(`cubeTexture`),this.destroyed=!1;let{label:t,source:n}=e;this.label=t,this.source=n,this.source.label=this.label??this.source.label}static from(t,n=!1){if(t instanceof Th)return new e({source:t});let{faces:r,...i}=t,a=null,o=Eh.every(e=>typeof r[e]==`string`);if(!n&&o&&(a=Dh(r,i),G.has(a)))return G.get(a);let s=e=>e.isTexture?e:h.from(e),c={};for(let e of Eh)c[e]=s(r[e]).source;let l=new e({source:new Th({...i,faces:c}),label:i.label});return a&&(G.set(a,l),l.once(`destroy`,()=>{G.has(a)&&G.remove(a)})),l}destroy(e=!1){this.destroyed||(this.destroyed=!0,e&&this.source.destroy(),this.emit(`destroy`,this),this.removeAllListeners())}},kh=Object.create(null),Ah=Object.create(null);function jh(e){var t;if(e.type===P.WEBGPU)return Ah[t=e.uid]||(Ah[t]=e.gpu.device.createTexture({label:`ExternalSource placeholder`,size:{width:1,height:1},format:`rgba8unorm`,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST})),Ah[e.uid];if(!kh[e.uid]){let t=e.gl,n=t.createTexture();t.bindTexture(t.TEXTURE_2D,n),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,1,1,0,t.RGBA,t.UNSIGNED_BYTE,null),kh[e.uid]=n}return kh[e.uid]}var Mh=class extends m{constructor({resource:e,renderer:t,label:n,width:r,height:i}){e||=jh(t),r||=r??e?.width??1,i||=i??e?.height??1,super({resource:e,width:r,height:i,label:n,autoGarbageCollect:!1}),this._renderer=t,this._initGpuData(e)}static test(e){return globalThis.GPUTexture&&e instanceof GPUTexture||globalThis.WebGLTexture&&e instanceof WebGLTexture}_validateTexture(e){let t=this._renderer,n=!!t.gpu,r=globalThis.GPUTexture&&e instanceof GPUTexture,i=globalThis.WebGLTexture&&e instanceof WebGLTexture;if(n&&i)throw Error(`Cannot use WebGLTexture with a WebGPU renderer`);if(!n&&r)throw Error(`Cannot use GPUTexture with a WebGL renderer`);if(!n){let n=t.gl;if(n&&!n.isTexture(e))throw Error(`WebGLTexture does not belong to this renderer's WebGL context`)}}_initGpuData(e){let t=this._renderer;this._validateTexture(e),t.gpu?this._gpuData[t.uid]=new ch(e):this._gpuData[t.uid]=new Yp(e)}updateGPUTexture(e,t,n){let r=this._renderer,i=this._gpuData[r.uid];if(this.resource=e,r.gpu){this._validateTexture(e);let a=i;if(a.gpuTexture!==e){a.gpuTexture=e,a.textureView=null;let t=r.texture;t?._bindGroupHash&&(t._bindGroupHash[this.uid]=null)}let o=t??e.width,s=n??e.height;this.resize(o,s)}else{this._validateTexture(e);let r=i;r.texture=e,t!==void 0&&n!==void 0&&this.resize(t,n)}this.emit(`update`,this)}destroy(){let e=this._renderer;delete this._gpuData[e.uid],super.destroy()}},Nh=class{constructor(){this.x0=0,this.y0=0,this.x1=1,this.y1=0,this.x2=1,this.y2=1,this.x3=0,this.y3=1,this.uvsFloat32=new Float32Array(8)}set(e,t,n){let r=t.width,i=t.height;if(n){let t=e.width/2/r,a=e.height/2/i,o=e.x/r+t,s=e.y/i+a;n=d.add(n,d.NW),this.x0=o+t*d.uX(n),this.y0=s+a*d.uY(n),n=d.add(n,2),this.x1=o+t*d.uX(n),this.y1=s+a*d.uY(n),n=d.add(n,2),this.x2=o+t*d.uX(n),this.y2=s+a*d.uY(n),n=d.add(n,2),this.x3=o+t*d.uX(n),this.y3=s+a*d.uY(n)}else this.x0=e.x/r,this.y0=e.y/i,this.x1=(e.x+e.width)/r,this.y1=e.y/i,this.x2=(e.x+e.width)/r,this.y2=(e.y+e.height)/i,this.x3=e.x/r,this.y3=(e.y+e.height)/i;this.uvsFloat32[0]=this.x0,this.uvsFloat32[1]=this.y0,this.uvsFloat32[2]=this.x1,this.uvsFloat32[3]=this.y1,this.uvsFloat32[4]=this.x2,this.uvsFloat32[5]=this.y2,this.uvsFloat32[6]=this.x3,this.uvsFloat32[7]=this.y3}toString(){return`[pixi.js/core:TextureUvs x0=${this.x0} y0=${this.y0} x1=${this.x1} y1=${this.y1} x2=${this.x2} y2=${this.y2} x3=${this.x3} y3=${this.y3}]`}};function Ph(e){let t=e.toString(),n=t.indexOf(`{`),r=t.lastIndexOf(`}`);if(n===-1||r===-1)throw Error(`getFunctionBody: No body found in function definition`);return t.slice(n+1,r).trim()}function Fh(e,t){return y(`8.7.0`,`Use container.getFastGlobalBounds() instead`),e.getFastGlobalBounds(!0,t)}var Ih=class extends tt{constructor(e){typeof e==`function`&&(e={render:e});let{render:t,...n}=e;super({label:`RenderContainer`,...n}),this.renderPipeId=`customRender`,this.batched=!1,t&&(this.render=t),this.containsPoint=e.containsPoint??(()=>!1),this.addBounds=e.addBounds??(()=>!1)}updateBounds(){this._bounds.clear(),this.addBounds(this._bounds)}render(e){}};function Lh(e,t,n){y(`8.7.0`,`Please use container.collectRenderables instead.`);let r=n.renderPipes?n:n.batch.renderer;return e.collectRenderables(t,r,null)}function Rh(e,t){let n=t._scale,r=t._pivot,i=t._position,a=n._x,o=n._y,s=r._x,c=r._y;e.a=t._cx*a,e.b=t._sx*a,e.c=t._cy*o,e.d=t._sy*o,e.tx=i._x-(s*e.a+c*e.c),e.ty=i._y-(s*e.b+c*e.d)}function zh(e,t,n){let r=e.a,i=e.b,a=e.c,o=e.d,s=e.tx,c=e.ty,l=t.a,u=t.b,d=t.c,f=t.d;n.a=r*l+i*d,n.b=r*u+i*f,n.c=a*l+o*d,n.d=a*u+o*f,n.tx=s*l+c*d+t.tx,n.ty=s*u+c*f+t.ty}var Bh=class{constructor(){this._gradients=[],this._nextId=0}addStyle(e){if(!(e.fill instanceof bn))return null;let t=`pixi-grad-${this._nextId++}`;return this._gradients.push({id:t,gradient:e.fill,textureSpace:e.textureSpace??`local`}),`url(#${t})`}build(){if(this._gradients.length===0)return``;let e=[`<defs>`];for(let{id:t,gradient:n,textureSpace:r}of this._gradients){let i=r===`global`?`userSpaceOnUse`:`objectBoundingBox`,a=Vh(n.colorStops);if(n.type===`radial`){let r=n.outerCenter?.x??.5,o=n.outerCenter?.y??.5,s=n.outerRadius??.5,c=n.center?.x??r,l=n.center?.y??o;e.push(`<radialGradient id="${t}" gradientUnits="${i}" cx="${r}" cy="${o}" r="${s}" fx="${c}" fy="${l}">`,a,`</radialGradient>`)}else{let r=n.start?.x??0,o=n.start?.y??0,s=n.end?.x??1,c=n.end?.y??0;e.push(`<linearGradient id="${t}" gradientUnits="${i}" x1="${r}" y1="${o}" x2="${s}" y2="${c}">`,a,`</linearGradient>`)}}return e.push(`</defs>`),e.join(``)}};function Vh(e){return e.map(e=>{let t=N.shared.setValue(e.color).toHex();return`<stop offset="${e.offset}" stop-color="${t}"/>`}).join(``)}var Hh=Math.PI*2,Uh=new Set([`regularPoly`,`roundPoly`,`roundShape`,`filletRect`,`chamferRect`,`arcTo`]);function Wh(e,t=2,n=!1){if(e.instructions.some(e=>Uh.has(e.action)))return $h(e,t,n);let r=[],i=!1;for(let a=0;a<e.instructions.length;a++){let o=e.instructions[a],s=o.data;switch(o.action){case`moveTo`:r.push(`M${Kh(s[0],s[1],null,t)}`),i=!0;break;case`lineTo`:r.push(`L${Kh(s[0],s[1],null,t)}`),i=!0;break;case`quadraticCurveTo`:r.push(`Q${Kh(s[0],s[1],null,t)} ${Kh(s[2],s[3],null,t)}`),i=!0;break;case`bezierCurveTo`:r.push(`C${Kh(s[0],s[1],null,t)} ${Kh(s[2],s[3],null,t)} ${Kh(s[4],s[5],null,t)}`),i=!0;break;case`arcToSvg`:r.push(`A${$(s[0],t)} ${$(s[1],t)} ${$(s[2],t)} ${s[3]} ${s[4]} ${Kh(s[5],s[6],null,t)}`),i=!0;break;case`closePath`:r.push(`Z`),i=!1;break;case`arc`:r.push(qh(s[0],s[1],s[2],s[3],s[4],!!s[5],i,t,n)),i=!Gh(s[3],s[4],!!s[5]);break;case`rect`:r.push(Yh(s[0],s[1],s[2],s[3],s[4],t)),i=!1;break;case`circle`:r.push(Jh(s[0],s[1],s[2],s[2],s[3],t,n)),i=!1;break;case`ellipse`:r.push(Jh(s[0],s[1],s[2],s[3],s[4],t,n)),i=!1;break;case`roundRect`:r.push(Xh(s[0],s[1],s[2],s[3],s[4]??0,s[5],t,n)),i=!1;break;case`poly`:r.push(Zh(s[0],s[1]??!0,s[2],t)),i=!(s[1]??!0);break;case`addPath`:r.push(Qh(s[0],s[1],t,n)),i=!0;break}}return r.join(``)}function Gh(e,t,n){let r=t-e;return n?r>0&&(r-=Hh):r<0&&(r+=Hh),Math.abs(r)>=Hh-1e-6}function $(e,t){return parseFloat(e.toFixed(t)).toString()}function Kh(e,t,n,r){if(n&&!n.isIdentity()){let i=n.a*e+n.c*t+n.tx,a=n.b*e+n.d*t+n.ty;return`${$(i,r)} ${$(a,r)}`}return`${$(e,r)} ${$(t,r)}`}function qh(e,t,n,r,i,a,o,s,c=!1){let l=i-r;if(a?l>0&&(l-=Hh):l<0&&(l+=Hh),Math.abs(l)>=Hh-1e-6)return Jh(e,t,n,n,null,s,c);if(c){let i=[];for(let a=0;a<=32;a++){let c=r+a/32*l,u=e+n*Math.cos(c),d=t+n*Math.sin(c),f=a===0?o?`L`:`M`:`L`;i.push(`${f}${$(u,s)} ${$(d,s)}`)}return i.join(``)}let u=e+n*Math.cos(r),d=t+n*Math.sin(r),f=e+n*Math.cos(i),p=t+n*Math.sin(i),m=+(Math.abs(l)>Math.PI),h=+!a;return`${o?`L`:`M`}${$(u,s)} ${$(d,s)}A${$(n,s)} ${$(n,s)} 0 ${m} ${h} ${$(f,s)} ${$(p,s)}`}function Jh(e,t,n,r,i,a,o=!1){let s=i&&!i.isIdentity()?i:null;if(!s&&!o)return`M${$(e-n,a)} ${$(t,a)}A${$(n,a)} ${$(r,a)} 0 1 1 ${$(e+n,a)} ${$(t,a)}A${$(n,a)} ${$(r,a)} 0 1 1 ${$(e-n,a)} ${$(t,a)}Z`;let c=[];for(let i=0;i<64;i++){let o=i/64*Hh,l=e+n*Math.cos(o),u=t+r*Math.sin(o);c.push(`${i===0?`M`:`L`}${Kh(l,u,s,a)}`)}return c.push(`Z`),c.join(``)}function Yh(e,t,n,r,i,a){return`M${Kh(e,t,i,a)}L${Kh(e+n,t,i,a)}L${Kh(e+n,t+r,i,a)}L${Kh(e,t+r,i,a)}Z`}function Xh(e,t,n,r,i,a,o,s=!1){let c=a&&!a.isIdentity()?a:null;if(i<=0)return Yh(e,t,n,r,c,o);if(i=Math.min(i,Math.min(n,r)/2),c||s){let a=[],s=[[e+n-i,t+i,-Math.PI/2],[e+n-i,t+r-i,0],[e+i,t+r-i,Math.PI/2],[e+i,t+i,Math.PI]],l=!0;for(let e=0;e<s.length;e++){let[t,n,r]=s[e];for(let e=0;e<=8;e++){let s=r+e/8*(Math.PI/2),u=t+i*Math.cos(s),d=n+i*Math.sin(s);a.push(`${l?`M`:`L`}${Kh(u,d,c,o)}`),l=!1}}return a.push(`Z`),a.join(``)}return`M${$(e+i,o)} ${$(t,o)}L${$(e+n-i,o)} ${$(t,o)}A${$(i,o)} ${$(i,o)} 0 0 1 ${$(e+n,o)} ${$(t+i,o)}L${$(e+n,o)} ${$(t+r-i,o)}A${$(i,o)} ${$(i,o)} 0 0 1 ${$(e+n-i,o)} ${$(t+r,o)}L${$(e+i,o)} ${$(t+r,o)}A${$(i,o)} ${$(i,o)} 0 0 1 ${$(e,o)} ${$(t+r-i,o)}L${$(e,o)} ${$(t+i,o)}A${$(i,o)} ${$(i,o)} 0 0 1 ${$(e+i,o)} ${$(t,o)}Z`}function Zh(e,t,n,r){if(e.length===0)return``;let i=[];if(typeof e[0]==`number`){let t=e;i.push(`M${Kh(t[0],t[1],n,r)}`);for(let e=2;e<t.length;e+=2)i.push(`L${Kh(t[e],t[e+1],n,r)}`)}else{let t=e;i.push(`M${Kh(t[0].x,t[0].y,n,r)}`);for(let e=1;e<t.length;e++)i.push(`L${Kh(t[e].x,t[e].y,n,r)}`)}return t&&i.push(`Z`),i.join(``)}function Qh(e,t,n,r){return!t||t.isIdentity()?Wh(e,n,r):Wh(e.clone(!0).transform(t),n,r)}function $h(e,t,n){let r=e.shapePath.shapePrimitives,i=[];for(let e of r){let r=e.shape,a=e.transform;switch(r.type){case`polygon`:{let e=r;i.push(Zh(e.points,e.closePath,a,t));break}case`circle`:{let e=r;i.push(Jh(e.x,e.y,e.radius,e.radius,a,t,n));break}case`ellipse`:{let e=r;i.push(Jh(e.x,e.y,e.halfWidth,e.halfHeight,a,t,n));break}case`rectangle`:{let e=r;i.push(Yh(e.x,e.y,e.width,e.height,a,t));break}case`roundedRectangle`:{let e=r;i.push(Xh(e.x,e.y,e.width,e.height,e.radius,a,t,n));break}}}return i.join(``)}function eg(e,t){let n=t.addStyle(e),r=[];return n?r.push(`fill="${n}"`):r.push(`fill="${N.shared.setValue(e.color).toHex()}"`),e.alpha<1&&r.push(`fill-opacity="${e.alpha}"`),r.join(` `)}function tg(e,t){let n=t.addStyle(e),r=[];return r.push(`fill="none"`),n?r.push(`stroke="${n}"`):r.push(`stroke="${N.shared.setValue(e.color).toHex()}"`),r.push(`stroke-width="${e.width}"`),e.cap!==`butt`&&r.push(`stroke-linecap="${e.cap}"`),e.join===`miter`?e.miterLimit!==10&&r.push(`stroke-miterlimit="${e.miterLimit}"`):r.push(`stroke-linejoin="${e.join}"`),e.alpha<1&&r.push(`stroke-opacity="${e.alpha}"`),r.join(` `)}function ng(e,t=2){let n=e instanceof er?e:e.context,r=new Bh,i=[],a=n.instructions,o=0;for(;o<a.length;){let e=a[o];switch(e.action){case`fill`:{let n=e,a=!!n.data.hole,o=a?Wh(n.data.path,t)+Wh(n.data.hole,t,!0):Wh(n.data.path,t),s=eg(n.data.style,r),c=a?` fill-rule="evenodd"`:``;i.push(`<path d="${o}" ${s}${c}/>`);break}case`stroke`:{let n=e,a=Wh(n.data.path,t);n.data.hole&&(a+=Wh(n.data.hole,t,!0));let o=tg(n.data.style,r);i.push(`<path d="${a}" ${o}/>`);break}case`texture`:break}o++}let s=n.bounds,c=parseFloat(s.minX.toFixed(t)),l=parseFloat(s.minY.toFixed(t)),u=parseFloat((s.maxX-s.minX).toFixed(t)),d=parseFloat((s.maxY-s.minY).toFixed(t));return`<svg xmlns="http://www.w3.org/2000/svg" width="${u}" height="${d}" viewBox="${c} ${l} ${u} ${d}">${r.build()}${i.join(``)}</svg>`}function rg(e){e instanceof Pn&&(e={path:e,textureMatrix:null,out:null});let t=[],n=[],r=[],i=e.path.shapePath,a=e.textureMatrix;i.shapePrimitives.forEach(({shape:e,transform:i})=>{let o=r.length,s=t.length/2,c=[],l=cn[e.type];l.build(e,c),i&&vn(c,i),l.triangulate(c,t,2,s,r,o);let u=n.length/2;a?(i&&a.append(i.clone().invert()),_n(t,2,s,n,u,2,t.length/2-s,a)):Zn(n,u,2,t.length/2-s)});let o=e.out;return o?(o.positions=new Float32Array(t),o.uvs=new Float32Array(n),o.indices=new Uint32Array(r),o):new wl({positions:new Float32Array(t),uvs:new Float32Array(n),indices:new Uint32Array(r)})}var ig=class e extends ot{constructor(t={}){t={...e.defaultOptions,...t},super(),this.renderLayerChildren=[],this.sortableChildren=t.sortableChildren,this.sortFunction=t.sortFunction}attach(...e){for(let t=0;t<e.length;t++){let n=e[t];if(n.parentRenderLayer){if(n.parentRenderLayer===this)continue;n.parentRenderLayer.detach(n)}this.renderLayerChildren.push(n),n.parentRenderLayer=this;let r=this.renderGroup||this.parentRenderGroup;r&&(r.structureDidChange=!0)}return e[0]}detach(...e){for(let t=0;t<e.length;t++){let n=e[t],r=this.renderLayerChildren.indexOf(n);r!==-1&&this.renderLayerChildren.splice(r,1),n.parentRenderLayer=null;let i=this.renderGroup||this.parentRenderGroup;i&&(i.structureDidChange=!0)}return e[0]}detachAll(){let e=this.renderLayerChildren;for(let t=0;t<e.length;t++)e[t].parentRenderLayer=null;this.renderLayerChildren.length=0}collectRenderables(e,t,n){let r=this.renderLayerChildren,i=r.length;this.sortableChildren&&this.sortRenderLayerChildren();for(let n=0;n<i;n++)r[n].parent||D(`Container must be added to both layer and scene graph. Layers only handle render order - the scene graph is required for transforms (addChild)`,r[n]),r[n].collectRenderables(e,t,this)}sortRenderLayerChildren(){this.renderLayerChildren.sort(this.sortFunction)}_getGlobalBoundsRecursive(e,t,n){if(!e)return;let r=this.renderLayerChildren;for(let e=0;e<r.length;e++)r[e]._getGlobalBoundsRecursive(!0,t,this)}getFastGlobalBounds(e,t){return super.getFastGlobalBounds(e,t)}addChild(...e){throw Error(`RenderLayer.addChild() is not available. Please use RenderLayer.attach()`)}removeChild(...e){throw Error(`RenderLayer.removeChild() is not available. Please use RenderLayer.detach()`)}removeChildren(e,t){throw Error(`RenderLayer.removeChildren() is not available. Please use RenderLayer.detach()`)}removeChildAt(e){throw Error(`RenderLayer.removeChildAt() is not available`)}getChildAt(e){throw Error(`RenderLayer.getChildAt() is not available`)}setChildIndex(e,t){throw Error(`RenderLayer.setChildIndex() is not available`)}getChildIndex(e){throw Error(`RenderLayer.getChildIndex() is not available`)}addChildAt(e,t){throw Error(`RenderLayer.addChildAt() is not available`)}swapChildren(e,t){throw Error(`RenderLayer.swapChildren() is not available`)}reparentChild(...e){throw Error(`RenderLayer.reparentChild() is not available with the render layer`)}reparentChildAt(e,t){throw Error(`RenderLayer.reparentChildAt() is not available with the render layer`)}};ig.defaultOptions={sortableChildren:!1,sortFunction:(e,t)=>e.zIndex-t.zIndex};var ag=ig,og=class e extends wl{constructor(...e){super({});let t=e[0]??{};typeof t==`number`&&(y(n,`PlaneGeometry constructor changed please use { width, height, verticesX, verticesY } instead`),t={width:t,height:e[1],verticesX:e[2],verticesY:e[3]}),this.build(t)}build(t){t={...e.defaultOptions,...t},this.verticesX=this.verticesX??t.verticesX,this.verticesY=this.verticesY??t.verticesY,this.width=this.width??t.width,this.height=this.height??t.height;let n=this.verticesX*this.verticesY,r=[],i=[],a=[],o=this.verticesX-1,s=this.verticesY-1,c=this.width/o,l=this.height/s;for(let e=0;e<n;e++){let t=e%this.verticesX,n=e/this.verticesX|0;r.push(t*c,n*l),i.push(t/o,n/s)}let u=o*s;for(let e=0;e<u;e++){let t=e%o,n=e/o|0,r=n*this.verticesX+t,i=n*this.verticesX+t+1,s=(n+1)*this.verticesX+t,c=(n+1)*this.verticesX+t+1;a.push(r,i,s,i,c,s)}this.buffers[0].data=new Float32Array(r),this.buffers[1].data=new Float32Array(i),this.indexBuffer.data=new Uint32Array(a),this.buffers[0].update(),this.buffers[1].update(),this.indexBuffer.update()}};og.defaultOptions={width:100,height:100,verticesX:10,verticesY:10};var sg=og;function cg(e,t,n,r){let i=n.buffers[0],a=i.data,{verticesX:o,verticesY:s}=n,c=e/(o-1),l=t/(s-1),u=0,d=r[0],f=r[1],p=r[2],m=r[3],h=r[4],g=r[5],_=r[6],v=r[7],y=r[8];for(let e=0;e<a.length;e+=2){let t=u%o*c,n=(u/o|0)*l,r=d*t+f*n+p,i=m*t+h*n+g,s=_*t+v*n+y;a[e]=r/s,a[e+1]=i/s,u++}i.update()}function lg(e,t){let n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],l=t[7],u=t[8];return e[0]=o*u-s*l,e[1]=i*l-r*u,e[2]=r*s-i*o,e[3]=s*c-a*u,e[4]=n*u-i*c,e[5]=i*a-n*s,e[6]=a*l-o*c,e[7]=r*c-n*l,e[8]=n*o-r*a,e}function ug(e,t,n){let r=t[0],i=t[1],a=t[2],o=t[3],s=t[4],c=t[5],l=t[6],u=t[7],d=t[8],f=n[0],p=n[1],m=n[2],h=n[3],g=n[4],_=n[5],v=n[6],y=n[7],b=n[8];return e[0]=f*r+p*o+m*l,e[1]=f*i+p*s+m*u,e[2]=f*a+p*c+m*d,e[3]=h*r+g*o+_*l,e[4]=h*i+g*s+_*u,e[5]=h*a+g*c+_*d,e[6]=v*r+y*o+b*l,e[7]=v*i+y*s+b*u,e[8]=v*a+y*c+b*d,e}function dg(e,t,n){let r=n[0],i=n[1],a=n[2];return e[0]=t[0]*r+t[1]*i+t[2]*a,e[1]=t[3]*r+t[4]*i+t[5]*a,e[2]=t[6]*r+t[7]*i+t[8]*a,e}var fg=[0,0,0,0,0,0,0,0,0],pg=[0,0,0],mg=[0,0,0];function hg(e,t,n,r,i,a,o,s,c){let l=fg;l[0]=t,l[1]=r,l[2]=a,l[3]=n,l[4]=i,l[5]=o,l[6]=1,l[7]=1,l[8]=1;let u=lg(e,l);mg[0]=s,mg[1]=c,mg[2]=1;let d=dg(pg,u,mg),f=e;return e[0]=d[0],e[1]=0,e[2]=0,e[3]=0,e[4]=d[1],e[5]=0,e[6]=0,e[7]=0,e[8]=d[2],ug(e,f,l)}var gg=[0,0,0,0,0,0,0,0,0],_g=[0,0,0,0,0,0,0,0,0];function vg(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g){let _=hg(gg,t,n,a,o,l,u,p,m),v=hg(_g,r,i,s,c,d,f,h,g);return ug(e,lg(_,_),v)}var yg=class extends sg{constructor(e){super(e),this._projectionMatrix=[0,0,0,0,0,0,0,0,0];let{width:t,height:n}=e;this.corners=[0,0,t,0,t,n,0,n]}setCorners(e,t,n,r,i,a,o,s){let c=this.corners;c[0]=e,c[1]=t,c[2]=n,c[3]=r,c[4]=i,c[5]=a,c[6]=o,c[7]=s,this.updateProjection()}updateProjection(){let{width:e,height:t}=this,n=this.corners,r=vg(this._projectionMatrix,0,0,n[0],n[1],e,0,n[2],n[3],e,t,n[4],n[5],0,t,n[6],n[7]);cg(e,t,this,r)}},bg=class e extends Ol{constructor(t){t={...e.defaultOptions,...t};let{texture:n,verticesX:r,verticesY:i,...a}=t,o=new yg(Se({width:n.width,height:n.height,verticesX:r,verticesY:i}));super(Se({...a,geometry:o})),this._texture=n,this.geometry.setCorners(t.x0,t.y0,t.x1,t.y1,t.x2,t.y2,t.x3,t.y3)}textureUpdated(){let e=this.geometry;if(!e)return;let{width:t,height:n}=this.texture;(e.width!==t||e.height!==n)&&(e.width=t,e.height=n,e.updateProjection())}set texture(e){this._texture!==e&&(super.texture=e,this.textureUpdated())}get texture(){return this._texture}setCorners(e,t,n,r,i,a,o,s){this.geometry.setCorners(e,t,n,r,i,a,o,s)}};bg.defaultOptions={texture:h.WHITE,verticesX:10,verticesY:10,x0:0,y0:0,x1:100,y1:0,x2:100,y2:100,x3:0,y3:100};var xg=bg,Sg=class extends Ol{constructor(e){let{texture:t,verticesX:n,verticesY:r,...i}=e,a=new sg(Se({width:t.width,height:t.height,verticesX:n,verticesY:r}));super(Se({...i,geometry:a,texture:t})),this.texture=t,this.autoResize=!0}textureUpdated(){let e=this.geometry,{width:t,height:n}=this.texture;this.autoResize&&(e.width!==t||e.height!==n)&&(e.width=t,e.height=n,e.build({}))}set texture(e){this._texture?.off(`update`,this.textureUpdated,this),super.texture=e,e.on(`update`,this.textureUpdated,this),this.textureUpdated()}get texture(){return this._texture}destroy(e){this.texture.off(`update`,this.textureUpdated,this),super.destroy(e)}},Cg=class e extends wl{constructor(t){let{width:n,points:r,textureScale:i}={...e.defaultOptions,...t};super({positions:new Float32Array(r.length*4),uvs:new Float32Array(r.length*4),indices:new Uint32Array((r.length-1)*6)}),this.points=r,this._width=n,this.textureScale=i,this._build()}get width(){return this._width}_build(){let e=this.points;if(!e)return;let t=this.getBuffer(`aPosition`),n=this.getBuffer(`aUV`),r=this.getIndex();if(e.length<1)return;t.data.length/4!==e.length&&(t.data=new Float32Array(e.length*4),n.data=new Float32Array(e.length*4),r.data=new Uint16Array((e.length-1)*6));let i=n.data,a=r.data;i[0]=0,i[1]=0,i[2]=0,i[3]=1;let o=0,s=e[0],c=this._width*this.textureScale,l=e.length;for(let t=0;t<l;t++){let n=t*4;if(this.textureScale>0){let n=s.x-e[t].x,r=s.y-e[t].y,i=Math.sqrt(n*n+r*r);s=e[t],o+=i/c}else o=t/(l-1);i[n]=o,i[n+1]=0,i[n+2]=o,i[n+3]=1}let u=0;for(let e=0;e<l-1;e++){let t=e*2;a[u++]=t,a[u++]=t+1,a[u++]=t+2,a[u++]=t+2,a[u++]=t+1,a[u++]=t+3}n.update(),r.update(),this.updateVertices()}updateVertices(){let e=this.points;if(e.length<1)return;let t=e[0],n,r=0,i=0,a=this.buffers[0].data,o=e.length,s=this.textureScale>0?this.textureScale*this._width/2:this._width/2;for(let c=0;c<o;c++){let l=e[c],u=c*4;n=c<e.length-1?e[c+1]:l,i=-(n.x-t.x),r=n.y-t.y;let d=(1-c/(o-1))*10;d>1&&(d=1);let f=Math.sqrt(r*r+i*i);f<1e-6?(r=0,i=0):(r/=f,i/=f,r*=s,i*=s),a[u]=l.x+r,a[u+1]=l.y+i,a[u+2]=l.x-r,a[u+3]=l.y-i,t=l}this.buffers[0].update()}update(){this.textureScale>0?this._build():this.updateVertices()}};Cg.defaultOptions={width:200,points:[],textureScale:0};var wg=Cg,Tg=class e extends Ol{constructor(t){let{width:n,texture:r,points:i,textureScale:a,...o}={...e.defaultOptions,...t},s=new wg(Se({width:n??r.height,points:i,textureScale:a}));a>0&&(r.source.style.addressMode=`repeat`),super(Se({...o,texture:r,geometry:s})),this.autoUpdate=!0,this.onRender=this._render}_render(){let e=this.geometry;(this.autoUpdate||e._width!==this.texture.height)&&(e._width=this.texture.height,e.update())}};Tg.defaultOptions={textureScale:0};var Eg=Tg,Dg=class extends Ol{constructor(e){let{texture:t,vertices:n,uvs:r,indices:i,topology:a,...o}=e,s=new wl(Se({positions:n,uvs:r,indices:i,topology:a}));super(Se({...o,texture:t,geometry:s})),this.autoUpdate=!0,this.onRender=this._render}get vertices(){return this.geometry.getBuffer(`aPosition`).data}set vertices(e){this.geometry.getBuffer(`aPosition`).data=e}_render(){this.autoUpdate&&this.geometry.getBuffer(`aPosition`).update()}};function Og(e,t){let{width:n,height:r}=e.frame;return t.scale(1/n,1/r),t}var kg=class{execute(e,t){let n=e.renderer,r=n.canvasContext.activeContext,i=t.particleChildren,a=t.texture;r.save(),n.canvasContext.setContextTransform(t.worldTransform,t.roundPixels),n.canvasContext.setBlendMode(t.groupBlendMode);let o=t.groupColorAlpha,s=n.filter?.alphaMultiplier??1,c=(o>>>24&255)/255*s;for(let e=0;e<i.length;e++){let t=i[e],n=t.texture||a;if(!n?.source?.resource)continue;let o=t.color,s=(o>>>24&255)/255*c;if(s<=0)continue;let l=o&16777215,u=((l&255)<<16)+(l&65280)+(l>>16&255),d=n.source.resource;u!==16777215&&(d=K.getTintedCanvas({texture:n},u));let f=n.frame,p=n.source.resolution,m=f.x*p,h=f.y*p,g=f.width*p,_=f.height*p;r.globalAlpha=s;let v=-t.anchorX*f.width,y=-t.anchorY*f.height;t.rotation!==0||t.scaleX!==1||t.scaleY!==1?(r.save(),r.translate(t.x,t.y),r.rotate(t.rotation),r.scale(t.scaleX,t.scaleY),r.drawImage(d,m,h,g,_,v,y,f.width,f.height),r.restore()):r.drawImage(d,m,h,g,_,t.x+v,t.y+y,f.width,f.height)}r.restore()}};function Ag(e,t=null){let n=e*6;if(n>65535?t||=new Uint32Array(n):t||=new Uint16Array(n),t.length!==n)throw Error(`Out buffer length is incorrect, got ${t.length} and expected ${n}`);for(let e=0,r=0;e<n;e+=6,r+=4)t[e+0]=r+0,t[e+1]=r+1,t[e+2]=r+2,t[e+3]=r+0,t[e+4]=r+2,t[e+5]=r+3;return t}function jg(e){return{dynamicUpdate:Mg(e,!0),staticUpdate:Mg(e,!1)}}function Mg(e,t){let n=[];n.push(`
|
|
2488
|
+
|
|
2489
|
+
var index = 0;
|
|
2490
|
+
|
|
2491
|
+
for (let i = 0; i < ps.length; ++i)
|
|
2492
|
+
{
|
|
2493
|
+
const p = ps[i];
|
|
2494
|
+
|
|
2495
|
+
`);let r=0;for(let i in e){let a=e[i];if(t!==a.dynamic)continue;n.push(`offset = index + ${r}`),n.push(a.code);let o=j(a.format);r+=o.stride/4}n.push(`
|
|
2496
|
+
index += stride * 4;
|
|
2497
|
+
}
|
|
2498
|
+
`),n.unshift(`
|
|
2499
|
+
var stride = ${r};
|
|
2500
|
+
`);let i=n.join(`
|
|
2501
|
+
`);return Function(`ps`,`f32v`,`u32v`,i)}var Ng=class{constructor(e){this._size=0,this._generateParticleUpdateCache={};let t=this._size=e.size??1e3,n=e.properties,r=0,i=0;for(let e in n){let t=n[e],a=j(t.format);t.dynamic?i+=a.stride:r+=a.stride}this._dynamicStride=i/4,this._staticStride=r/4,this.staticAttributeBuffer=new pi(t*4*r),this.dynamicAttributeBuffer=new pi(t*4*i),this.indexBuffer=Ag(t);let a=new he,o=0,s=0;this._staticBuffer=new V({data:new Float32Array(1),label:`static-particle-buffer`,shrinkToFit:!1,usage:k.VERTEX|k.COPY_DST}),this._dynamicBuffer=new V({data:new Float32Array(1),label:`dynamic-particle-buffer`,shrinkToFit:!1,usage:k.VERTEX|k.COPY_DST});for(let e in n){let t=n[e],r=j(t.format);t.dynamic?(a.addAttribute(t.attributeName,{buffer:this._dynamicBuffer,stride:this._dynamicStride*4,offset:o*4,format:t.format}),o+=r.size):(a.addAttribute(t.attributeName,{buffer:this._staticBuffer,stride:this._staticStride*4,offset:s*4,format:t.format}),s+=r.size)}a.addIndex(this.indexBuffer);let c=this.getParticleUpdate(n);this._dynamicUpload=c.dynamicUpdate,this._staticUpload=c.staticUpdate,this.geometry=a}getParticleUpdate(e){let t=Pg(e);return this._generateParticleUpdateCache[t]||(this._generateParticleUpdateCache[t]=this.generateParticleUpdate(e)),this._generateParticleUpdateCache[t]}generateParticleUpdate(e){return jg(e)}update(e,t){e.length>this._size&&(t=!0,this._size=Math.max(e.length,this._size*1.5|0),this.staticAttributeBuffer=new pi(this._size*this._staticStride*4*4),this.dynamicAttributeBuffer=new pi(this._size*this._dynamicStride*4*4),this.indexBuffer=Ag(this._size),this.geometry.indexBuffer.setDataWithSize(this.indexBuffer,this.indexBuffer.byteLength,!0));let n=this.dynamicAttributeBuffer;if(this._dynamicUpload(e,n.float32View,n.uint32View),this._dynamicBuffer.setDataWithSize(this.dynamicAttributeBuffer.float32View,e.length*this._dynamicStride*4,!0),t){let t=this.staticAttributeBuffer;this._staticUpload(e,t.float32View,t.uint32View),this._staticBuffer.setDataWithSize(t.float32View,e.length*this._staticStride*4,!0)}}destroy(){this._staticBuffer.destroy(),this._dynamicBuffer.destroy(),this.geometry.destroy()}};function Pg(e){let t=[];for(let n in e){let r=e[n];t.push(n,r.code,r.dynamic?`d`:`s`)}return t.join(`_`)}var Fg=`varying vec2 vUV;
|
|
2502
|
+
varying vec4 vColor;
|
|
2503
|
+
|
|
2504
|
+
uniform sampler2D uTexture;
|
|
2505
|
+
|
|
2506
|
+
void main(void){
|
|
2507
|
+
vec4 color = texture2D(uTexture, vUV) * vColor;
|
|
2508
|
+
gl_FragColor = color;
|
|
2509
|
+
}`,Ig=`attribute vec2 aVertex;
|
|
2510
|
+
attribute vec2 aUV;
|
|
2511
|
+
attribute vec4 aColor;
|
|
2512
|
+
|
|
2513
|
+
attribute vec2 aPosition;
|
|
2514
|
+
attribute float aRotation;
|
|
2515
|
+
|
|
2516
|
+
uniform mat3 uTranslationMatrix;
|
|
2517
|
+
uniform float uRound;
|
|
2518
|
+
uniform vec2 uResolution;
|
|
2519
|
+
uniform vec4 uColor;
|
|
2520
|
+
|
|
2521
|
+
varying vec2 vUV;
|
|
2522
|
+
varying vec4 vColor;
|
|
2523
|
+
|
|
2524
|
+
vec2 roundPixels(vec2 position, vec2 targetSize)
|
|
2525
|
+
{
|
|
2526
|
+
return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;
|
|
2527
|
+
}
|
|
2528
|
+
|
|
2529
|
+
void main(void){
|
|
2530
|
+
float cosRotation = cos(aRotation);
|
|
2531
|
+
float sinRotation = sin(aRotation);
|
|
2532
|
+
float x = aVertex.x * cosRotation - aVertex.y * sinRotation;
|
|
2533
|
+
float y = aVertex.x * sinRotation + aVertex.y * cosRotation;
|
|
2534
|
+
|
|
2535
|
+
vec2 v = vec2(x, y);
|
|
2536
|
+
v = v + aPosition;
|
|
2537
|
+
|
|
2538
|
+
gl_Position = vec4((uTranslationMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);
|
|
2539
|
+
|
|
2540
|
+
if(uRound == 1.0)
|
|
2541
|
+
{
|
|
2542
|
+
gl_Position.xy = roundPixels(gl_Position.xy, uResolution);
|
|
2543
|
+
}
|
|
2544
|
+
|
|
2545
|
+
vUV = aUV;
|
|
2546
|
+
vColor = vec4(aColor.rgb * aColor.a, aColor.a) * uColor;
|
|
2547
|
+
}
|
|
2548
|
+
`,Lg=`
|
|
2549
|
+
struct ParticleUniforms {
|
|
2550
|
+
uTranslationMatrix:mat3x3<f32>,
|
|
2551
|
+
uColor:vec4<f32>,
|
|
2552
|
+
uRound:f32,
|
|
2553
|
+
uResolution:vec2<f32>,
|
|
2554
|
+
};
|
|
2555
|
+
|
|
2556
|
+
fn roundPixels(position: vec2<f32>, targetSize: vec2<f32>) -> vec2<f32>
|
|
2557
|
+
{
|
|
2558
|
+
return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;
|
|
2559
|
+
}
|
|
2560
|
+
|
|
2561
|
+
@group(0) @binding(0) var<uniform> uniforms: ParticleUniforms;
|
|
2562
|
+
|
|
2563
|
+
@group(1) @binding(0) var uTexture: texture_2d<f32>;
|
|
2564
|
+
@group(1) @binding(1) var uSampler : sampler;
|
|
2565
|
+
|
|
2566
|
+
struct VSOutput {
|
|
2567
|
+
@builtin(position) position: vec4<f32>,
|
|
2568
|
+
@location(0) uv : vec2<f32>,
|
|
2569
|
+
@location(1) color : vec4<f32>,
|
|
2570
|
+
};
|
|
2571
|
+
@vertex
|
|
2572
|
+
fn mainVertex(
|
|
2573
|
+
@location(0) aVertex: vec2<f32>,
|
|
2574
|
+
@location(1) aPosition: vec2<f32>,
|
|
2575
|
+
@location(2) aUV: vec2<f32>,
|
|
2576
|
+
@location(3) aColor: vec4<f32>,
|
|
2577
|
+
@location(4) aRotation: f32,
|
|
2578
|
+
) -> VSOutput {
|
|
2579
|
+
|
|
2580
|
+
let v = vec2(
|
|
2581
|
+
aVertex.x * cos(aRotation) - aVertex.y * sin(aRotation),
|
|
2582
|
+
aVertex.x * sin(aRotation) + aVertex.y * cos(aRotation)
|
|
2583
|
+
) + aPosition;
|
|
2584
|
+
|
|
2585
|
+
var position = vec4((uniforms.uTranslationMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);
|
|
2586
|
+
|
|
2587
|
+
if(uniforms.uRound == 1.0) {
|
|
2588
|
+
position = vec4(roundPixels(position.xy, uniforms.uResolution), position.zw);
|
|
2589
|
+
}
|
|
2590
|
+
|
|
2591
|
+
let vColor = vec4(aColor.rgb * aColor.a, aColor.a) * uniforms.uColor;
|
|
2592
|
+
|
|
2593
|
+
return VSOutput(
|
|
2594
|
+
position,
|
|
2595
|
+
aUV,
|
|
2596
|
+
vColor,
|
|
2597
|
+
);
|
|
2598
|
+
}
|
|
2599
|
+
|
|
2600
|
+
@fragment
|
|
2601
|
+
fn mainFragment(
|
|
2602
|
+
@location(0) uv: vec2<f32>,
|
|
2603
|
+
@location(1) color: vec4<f32>,
|
|
2604
|
+
@builtin(position) position: vec4<f32>,
|
|
2605
|
+
) -> @location(0) vec4<f32> {
|
|
2606
|
+
|
|
2607
|
+
var sample = textureSample(uTexture, uSampler, uv) * color;
|
|
2608
|
+
|
|
2609
|
+
return sample;
|
|
2610
|
+
}`,Rg=class extends ce{constructor(){let e=be.from({vertex:Ig,fragment:Fg}),t=ue.from({fragment:{source:Lg,entryPoint:`mainFragment`},vertex:{source:Lg,entryPoint:`mainVertex`}});super({glProgram:e,gpuProgram:t,resources:{uTexture:h.WHITE.source,uSampler:new b({}),uniforms:{uTranslationMatrix:{value:new U,type:`mat3x3<f32>`},uColor:{value:new N(16777215),type:`vec4<f32>`},uRound:{value:1,type:`f32`},uResolution:{value:[0,0],type:`vec2<f32>`}}}})}},zg=class{constructor(e,t){this.state=et.for2d(),this.localUniforms=new pe({uTranslationMatrix:{value:new U,type:`mat3x3<f32>`},uColor:{value:new Float32Array(4),type:`vec4<f32>`},uRound:{value:1,type:`f32`},uResolution:{value:[0,0],type:`vec2<f32>`}}),this.renderer=e,this.adaptor=t,this.defaultShader=new Rg,this.state=et.for2d(),this._managedContainers=new zi({renderer:e,type:`renderable`,name:`particleContainer`})}validateRenderable(e){return!1}addRenderable(e,t){this.renderer.renderPipes.batch.break(t),t.add(e)}getBuffers(e){return e._gpuData[this.renderer.uid]||this._initBuffer(e)}_initBuffer(e){return e._gpuData[this.renderer.uid]=new Ng({size:e.particleChildren.length,properties:e._properties}),this._managedContainers.add(e),e._gpuData[this.renderer.uid]}updateRenderable(e){}execute(e){let t=e.particleChildren;if(t.length===0)return;let n=this.renderer,r=this.getBuffers(e);e.texture||=t[0].texture;let i=this.state;r.update(t,e._childrenDirty),e._childrenDirty=!1,i.blendMode=hi(e.blendMode,e.texture._source);let a=this.localUniforms.uniforms,o=a.uTranslationMatrix;e.worldTransform.copyTo(o);let s=n.globalUniforms.globalUniformData;o.tx-=s.offset.x,o.ty-=s.offset.y,o.prepend(s.projectionMatrix),a.uResolution=s.resolution,a.uRound=n._roundPixels|e._roundPixels,oi(e.groupColorAlpha,a.uColor,0),this.adaptor.execute(this,e)}destroy(){this._managedContainers.destroy(),this.renderer=null,this.defaultShader&&=(this.defaultShader.destroy(),null)}};zg.extension={type:[W.CanvasPipes],name:`particle`};var Bg=class extends zg{constructor(e){super(e,new kg)}};Bg.extension={type:[W.CanvasPipes],name:`particle`};var Vg=class{execute(e,t){let n=e.state,r=e.renderer,i=t.shader||e.defaultShader;i.resources.uTexture=t.texture._source,i.resources.uniforms=e.localUniforms;let a=r.gl,o=e.getBuffers(t);r.shader.bind(i),r.state.set(n),r.geometry.bind(o.geometry,i.glProgram);let s=o.geometry.indexBuffer.data.BYTES_PER_ELEMENT===2?a.UNSIGNED_SHORT:a.UNSIGNED_INT;a.drawElements(a.TRIANGLES,t.particleChildren.length*6,s,0)}},Hg=class extends zg{constructor(e){super(e,new Vg)}};Hg.extension={type:[W.WebGLPipes],name:`particle`};var Ug=class{execute(e,t){let n=e.renderer,r=t.shader||e.defaultShader;r.groups[0]=n.renderPipes.uniformBatch.getUniformBindGroup(e.localUniforms,!0),r.groups[1]=n.texture.getTextureBindGroup(t.texture);let i=e.state,a=e.getBuffers(t);n.encoder.draw({geometry:a.geometry,shader:t.shader||e.defaultShader,state:i,size:t.particleChildren.length*6})}},Wg=class extends zg{constructor(e){super(e,new Ug)}};Wg.extension={type:[W.WebGPUPipes],name:`particle`};var Gg=class e{constructor(t){if(t instanceof h)this.texture=t,Je(this,e.defaultOptions,{});else{let n={...e.defaultOptions,...t};Je(this,n,{})}}get alpha(){return this._alpha}set alpha(e){this._alpha=Math.min(Math.max(e,0),1),this._updateColor()}get tint(){return Re(this._tint)}set tint(e){this._tint=N.shared.setValue(e??16777215).toBgrNumber(),this._updateColor()}_updateColor(){this.color=this._tint+((this._alpha*255|0)<<24)}};Gg.defaultOptions={anchorX:0,anchorY:0,x:0,y:0,scaleX:1,scaleY:1,rotation:0,tint:16777215,alpha:1};var Kg=Gg,qg={vertex:{attributeName:`aVertex`,format:`float32x2`,code:`
|
|
2611
|
+
const texture = p.texture;
|
|
2612
|
+
const sx = p.scaleX;
|
|
2613
|
+
const sy = p.scaleY;
|
|
2614
|
+
const ax = p.anchorX;
|
|
2615
|
+
const ay = p.anchorY;
|
|
2616
|
+
const trim = texture.trim;
|
|
2617
|
+
const orig = texture.orig;
|
|
2618
|
+
|
|
2619
|
+
if (trim)
|
|
2620
|
+
{
|
|
2621
|
+
w1 = trim.x - (ax * orig.width);
|
|
2622
|
+
w0 = w1 + trim.width;
|
|
2623
|
+
|
|
2624
|
+
h1 = trim.y - (ay * orig.height);
|
|
2625
|
+
h0 = h1 + trim.height;
|
|
2626
|
+
}
|
|
2627
|
+
else
|
|
2628
|
+
{
|
|
2629
|
+
w1 = -ax * (orig.width);
|
|
2630
|
+
w0 = w1 + orig.width;
|
|
2631
|
+
|
|
2632
|
+
h1 = -ay * (orig.height);
|
|
2633
|
+
h0 = h1 + orig.height;
|
|
2634
|
+
}
|
|
2635
|
+
|
|
2636
|
+
f32v[offset] = w1 * sx;
|
|
2637
|
+
f32v[offset + 1] = h1 * sy;
|
|
2638
|
+
|
|
2639
|
+
f32v[offset + stride] = w0 * sx;
|
|
2640
|
+
f32v[offset + stride + 1] = h1 * sy;
|
|
2641
|
+
|
|
2642
|
+
f32v[offset + (stride * 2)] = w0 * sx;
|
|
2643
|
+
f32v[offset + (stride * 2) + 1] = h0 * sy;
|
|
2644
|
+
|
|
2645
|
+
f32v[offset + (stride * 3)] = w1 * sx;
|
|
2646
|
+
f32v[offset + (stride * 3) + 1] = h0 * sy;
|
|
2647
|
+
`,dynamic:!1},position:{attributeName:`aPosition`,format:`float32x2`,code:`
|
|
2648
|
+
var x = p.x;
|
|
2649
|
+
var y = p.y;
|
|
2650
|
+
|
|
2651
|
+
f32v[offset] = x;
|
|
2652
|
+
f32v[offset + 1] = y;
|
|
2653
|
+
|
|
2654
|
+
f32v[offset + stride] = x;
|
|
2655
|
+
f32v[offset + stride + 1] = y;
|
|
2656
|
+
|
|
2657
|
+
f32v[offset + (stride * 2)] = x;
|
|
2658
|
+
f32v[offset + (stride * 2) + 1] = y;
|
|
2659
|
+
|
|
2660
|
+
f32v[offset + (stride * 3)] = x;
|
|
2661
|
+
f32v[offset + (stride * 3) + 1] = y;
|
|
2662
|
+
`,dynamic:!0},rotation:{attributeName:`aRotation`,format:`float32`,code:`
|
|
2663
|
+
var rotation = p.rotation;
|
|
2664
|
+
|
|
2665
|
+
f32v[offset] = rotation;
|
|
2666
|
+
f32v[offset + stride] = rotation;
|
|
2667
|
+
f32v[offset + (stride * 2)] = rotation;
|
|
2668
|
+
f32v[offset + (stride * 3)] = rotation;
|
|
2669
|
+
`,dynamic:!1},uvs:{attributeName:`aUV`,format:`float32x2`,code:`
|
|
2670
|
+
var uvs = p.texture.uvs;
|
|
2671
|
+
|
|
2672
|
+
f32v[offset] = uvs.x0;
|
|
2673
|
+
f32v[offset + 1] = uvs.y0;
|
|
2674
|
+
|
|
2675
|
+
f32v[offset + stride] = uvs.x1;
|
|
2676
|
+
f32v[offset + stride + 1] = uvs.y1;
|
|
2677
|
+
|
|
2678
|
+
f32v[offset + (stride * 2)] = uvs.x2;
|
|
2679
|
+
f32v[offset + (stride * 2) + 1] = uvs.y2;
|
|
2680
|
+
|
|
2681
|
+
f32v[offset + (stride * 3)] = uvs.x3;
|
|
2682
|
+
f32v[offset + (stride * 3) + 1] = uvs.y3;
|
|
2683
|
+
`,dynamic:!1},color:{attributeName:`aColor`,format:`unorm8x4`,code:`
|
|
2684
|
+
const c = p.color;
|
|
2685
|
+
|
|
2686
|
+
u32v[offset] = c;
|
|
2687
|
+
u32v[offset + stride] = c;
|
|
2688
|
+
u32v[offset + (stride * 2)] = c;
|
|
2689
|
+
u32v[offset + (stride * 3)] = c;
|
|
2690
|
+
`,dynamic:!1}};F.add(Hg),F.add(Wg),F.add(Bg);var Jg=new l(0,0,0,0),Yg=class e extends tt{constructor(t={}){t={...e.defaultOptions,...t,dynamicProperties:{...e.defaultOptions.dynamicProperties,...t?.dynamicProperties}};let{dynamicProperties:n,shader:r,roundPixels:i,texture:a,particles:o,...s}=t;super({label:`ParticleContainer`,...s}),this.renderPipeId=`particle`,this.batched=!1,this._childrenDirty=!1,this.texture=a||null,this.shader=r,this._properties={};for(let e in qg){let t=qg[e],r=n[e];this._properties[e]={...t,dynamic:r}}this.allowChildren=!0,this.roundPixels=i??!1,this.particleChildren=o??[]}addParticle(...e){for(let t=0;t<e.length;t++)this.particleChildren.push(e[t]);return this.onViewUpdate(),e[0]}removeParticle(...e){let t=!1;for(let n=0;n<e.length;n++){let r=this.particleChildren.indexOf(e[n]);r>-1&&(this.particleChildren.splice(r,1),t=!0)}return t&&this.onViewUpdate(),e[0]}update(){this._childrenDirty=!0}onViewUpdate(){this._childrenDirty=!0,super.onViewUpdate()}get bounds(){return Jg}updateBounds(){}destroy(e=!1){if(super.destroy(e),typeof e==`boolean`?e:e?.texture){let t=typeof e==`boolean`?e:e?.textureSource,n=this.texture??this.particleChildren[0]?.texture;n&&n.destroy(t)}this.texture=null,this.shader?.destroy()}removeParticles(e,t){e??=0,t??=this.particleChildren.length;let n=this.particleChildren.splice(e,t-e);return this.onViewUpdate(),n}removeParticleAt(e){let t=this.particleChildren.splice(e,1);return this.onViewUpdate(),t[0]}addParticleAt(e,t){return this.particleChildren.splice(t,0,e),this.onViewUpdate(),e}addChild(...e){throw Error(`ParticleContainer.addChild() is not available. Please use ParticleContainer.addParticle()`)}removeChild(...e){throw Error(`ParticleContainer.removeChild() is not available. Please use ParticleContainer.removeParticle()`)}removeChildren(e,t){throw Error(`ParticleContainer.removeChildren() is not available. Please use ParticleContainer.removeParticles()`)}removeChildAt(e){throw Error(`ParticleContainer.removeChildAt() is not available. Please use ParticleContainer.removeParticleAt()`)}getChildAt(e){throw Error(`ParticleContainer.getChildAt() is not available. Please use ParticleContainer.getParticleAt()`)}setChildIndex(e,t){throw Error(`ParticleContainer.setChildIndex() is not available. Please use ParticleContainer.setParticleIndex()`)}getChildIndex(e){throw Error(`ParticleContainer.getChildIndex() is not available. Please use ParticleContainer.getParticleIndex()`)}addChildAt(e,t){throw Error(`ParticleContainer.addChildAt() is not available. Please use ParticleContainer.addParticleAt()`)}swapChildren(e,t){throw Error(`ParticleContainer.swapChildren() is not available. Please use ParticleContainer.swapParticles()`)}reparentChild(...e){throw Error(`ParticleContainer.reparentChild() is not available with the particle container`)}reparentChildAt(e,t){throw Error(`ParticleContainer.reparentChildAt() is not available with the particle container`)}};Yg.defaultOptions={dynamicProperties:{vertex:!1,position:!0,rotation:!1,uvs:!1,color:!1},roundPixels:!1};var Xg=Yg,Zg=class{constructor(e){this._renderer=e}validateRenderable(e){return!1}addRenderable(e,t){this._renderer.renderPipes.batch.break(t),t.add(e)}updateRenderable(e){}execute(e){let t=this._renderer,n=t.canvasContext,r=n.activeContext;r.save();let i=e.groupTransform,a=t._roundPixels|e._roundPixels;n.setContextTransform(i,a===1),n.setBlendMode(e.groupBlendMode);let o=t.globalUniforms.globalUniformData?.worldColor??4294967295,s=e.groupColorAlpha,c=(o>>>24&255)/255,l=(s>>>24&255)/255,u=t.filter?.alphaMultiplier??1,d=c*l*u;if(d<=0){r.restore();return}r.globalAlpha=d;let f=o&16777215,p=Re(T(s&16777215,f)),m=e.texture,h=K.getCanvasSource(m);if(!h){r.restore();return}let g=n.smoothProperty,_=m.source.style.scaleMode!==`nearest`;r[g]!==_&&(r[g]=_);let v=p!==16777215||m.rotate!==0,y=v?K.getTintedCanvas({texture:m},p):h,{leftWidth:b,topHeight:x,rightWidth:S,bottomHeight:C,width:w,height:E}=e,ee=b+S,D=x+C,O=Math.min(ee>w?w/ee:1,D>E?E/D:1,1),k=b*O,A=S*O,j=x*O,M=C*O,N=Math.max(0,w-k-A),P=Math.max(0,E-j-M),F=e.anchor,I=m.source._resolution??m.source.resolution??1,L=m.frame.x*I,R=m.frame.y*I,z=-F.x*w,B=-F.y*E,V=b*I,H=x*I,te=S*I,ne=C*I,re=m.frame.width*I,ie=m.frame.height*I;v&&(L=0,R=0,re=y.width,ie=y.height),r.drawImage(y,L,R,V,H,z,B,k,j),r.drawImage(y,L+V,R,re-V-te,H,z+k,B,N,j),r.drawImage(y,L+re-te,R,te,H,z+w-A,B,A,j),r.drawImage(y,L,R+H,V,ie-H-ne,z,B+j,k,P),r.drawImage(y,L+V,R+H,re-V-te,ie-H-ne,z+k,B+j,N,P),r.drawImage(y,L+re-te,R+H,te,ie-H-ne,z+w-A,B+j,A,P),r.drawImage(y,L,R+ie-ne,V,ne,z,B+E-M,k,M),r.drawImage(y,L+V,R+ie-ne,re-V-te,ne,z+k,B+E-M,N,M),r.drawImage(y,L+re-te,R+ie-ne,te,ne,z+w-A,B+E-M,A,M),r.restore()}destroy(){this._renderer=null}};Zg.extension={type:[W.CanvasPipes],name:`nineSliceSprite`};var Qg=class e extends sg{constructor(t={}){t={...e.defaultOptions,...t},super({width:t.width,height:t.height,verticesX:4,verticesY:4}),this._trimX=0,this._trimY=0,this._trimWidth=t.originalWidth??e.defaultOptions.originalWidth,this._trimHeight=t.originalHeight??e.defaultOptions.originalHeight,this.update(t)}update(e){this.width=e.width??this.width,this.height=e.height??this.height,this._originalWidth=e.originalWidth??this._originalWidth,this._originalHeight=e.originalHeight??this._originalHeight,this._leftWidth=e.leftWidth??this._leftWidth,this._rightWidth=e.rightWidth??this._rightWidth,this._topHeight=e.topHeight??this._topHeight,this._bottomHeight=e.bottomHeight??this._bottomHeight,this._anchorX=e.anchor?.x,this._anchorY=e.anchor?.y,e.trim===void 0?(this._trimWidth=this._originalWidth,this._trimHeight=this._originalHeight):(this._trimX=e.trim?.x??0,this._trimY=e.trim?.y??0,this._trimWidth=e.trim?.width??this._originalWidth,this._trimHeight=e.trim?.height??this._originalHeight),this.updateUvs(),this.updatePositions()}updatePositions(){let e=this.positions,{width:t,height:n,_leftWidth:r,_rightWidth:i,_topHeight:a,_bottomHeight:o,_anchorX:s,_anchorY:c}=this,l=r+i,u=t>l?1:t/l,d=a+o,f=n>d?1:n/d,p=Math.min(u,f),m=s*t,h=c*n;e[0]=e[8]=e[16]=e[24]=-m,e[2]=e[10]=e[18]=e[26]=r*p-m,e[4]=e[12]=e[20]=e[28]=t-i*p-m,e[6]=e[14]=e[22]=e[30]=t-m,e[1]=e[3]=e[5]=e[7]=-h,e[9]=e[11]=e[13]=e[15]=a*p-h,e[17]=e[19]=e[21]=e[23]=n-o*p-h,e[25]=e[27]=e[29]=e[31]=n-h,this.getBuffer(`aPosition`).update()}updateUvs(){let e=this.uvs,t=this._originalWidth,n=this._originalHeight,r=this._trimX/t,i=this._trimY/n,a=(this._trimX+this._trimWidth)/t,o=(this._trimY+this._trimHeight)/n;e[0]=e[8]=e[16]=e[24]=r,e[1]=e[3]=e[5]=e[7]=i,e[6]=e[14]=e[22]=e[30]=a,e[25]=e[27]=e[29]=e[31]=o;let s=1/t,c=1/n;e[2]=e[10]=e[18]=e[26]=r+s*this._leftWidth,e[9]=e[11]=e[13]=e[15]=i+c*this._topHeight,e[4]=e[12]=e[20]=e[28]=a-s*this._rightWidth,e[17]=e[19]=e[21]=e[23]=o-c*this._bottomHeight,this.getBuffer(`aUV`).update()}};Qg.defaultOptions={width:100,height:100,leftWidth:10,topHeight:10,rightWidth:10,bottomHeight:10,originalWidth:100,originalHeight:100};var $g=Qg,e_=class extends Tl{constructor(){super(),this.geometry=new $g}destroy(){this.geometry.destroy()}},t_=class{constructor(e){this._renderer=e,this._managedSprites=new zi({renderer:e,type:`renderable`,name:`nineSliceSprite`})}addRenderable(e,t){let n=this._getGpuSprite(e);e.didViewUpdate&&this._updateBatchableSprite(e,n),this._renderer.renderPipes.batch.addToBatch(n,t)}updateRenderable(e){let t=this._getGpuSprite(e);e.didViewUpdate&&this._updateBatchableSprite(e,t),t._batcher.updateElement(t)}validateRenderable(e){let t=this._getGpuSprite(e);return!t._batcher.checkAndUpdateTexture(t,e._texture)}_updateBatchableSprite(e,t){t.geometry.update(e),t.setTexture(e._texture)}_getGpuSprite(e){return e._gpuData[this._renderer.uid]||this._initGPUSprite(e)}_initGPUSprite(e){let t=e._gpuData[this._renderer.uid]=new e_,n=t;return n.renderable=e,n.transform=e.groupTransform,n.texture=e._texture,n.roundPixels=this._renderer._roundPixels|e._roundPixels,this._managedSprites.add(e),e.didViewUpdate||this._updateBatchableSprite(e,n),t}destroy(){this._managedSprites.destroy(),this._renderer=null}};t_.extension={type:[W.WebGLPipes,W.WebGPUPipes],name:`nineSliceSprite`},F.add(Zg),F.add(t_);var n_=class e extends tt{constructor(t){t instanceof h&&(t={texture:t});let{width:n,height:r,anchor:i,leftWidth:a,rightWidth:o,topHeight:s,bottomHeight:c,texture:l,roundPixels:u,...d}=t;super({label:`NineSliceSprite`,...d}),this.renderPipeId=`nineSliceSprite`,this.batched=!0,this._leftWidth=a??l?.defaultBorders?.left??$g.defaultOptions.leftWidth,this._topHeight=s??l?.defaultBorders?.top??$g.defaultOptions.topHeight,this._rightWidth=o??l?.defaultBorders?.right??$g.defaultOptions.rightWidth,this._bottomHeight=c??l?.defaultBorders?.bottom??$g.defaultOptions.bottomHeight,this._width=n??l.width??$g.defaultOptions.width,this._height=r??l.height??$g.defaultOptions.height,this.allowChildren=!1,this.texture=l??e.defaultOptions.texture,this.roundPixels=u??!1,this._anchor=new ke({_onUpdate:()=>{this.onViewUpdate()}}),i?this.anchor=i:this.texture.defaultAnchor&&(this.anchor=this.texture.defaultAnchor)}get anchor(){return this._anchor}set anchor(e){typeof e==`number`?this._anchor.set(e):this._anchor.copyFrom(e)}get width(){return this._width}set width(e){this._width=e,this.onViewUpdate()}get height(){return this._height}set height(e){this._height=e,this.onViewUpdate()}setSize(e,t){typeof e==`object`&&(t=e.height??e.width,e=e.width),this._width=e,this._height=t??e,this.onViewUpdate()}getSize(e){return e||={},e.width=this._width,e.height=this._height,e}get leftWidth(){return this._leftWidth}set leftWidth(e){this._leftWidth=e,this.onViewUpdate()}get topHeight(){return this._topHeight}set topHeight(e){this._topHeight=e,this.onViewUpdate()}get rightWidth(){return this._rightWidth}set rightWidth(e){this._rightWidth=e,this.onViewUpdate()}get bottomHeight(){return this._bottomHeight}set bottomHeight(e){this._bottomHeight=e,this.onViewUpdate()}get texture(){return this._texture}set texture(e){e||=h.EMPTY;let t=this._texture;t!==e&&(t&&t.dynamic&&t.off(`update`,this.onViewUpdate,this),e.dynamic&&e.on(`update`,this.onViewUpdate,this),this._texture=e,this.onViewUpdate())}get originalWidth(){return this._texture.width}get originalHeight(){return this._texture.height}get trim(){return this._texture.trim??null}destroy(e){if(super.destroy(e),typeof e==`boolean`?e:e?.texture){let t=typeof e==`boolean`?e:e?.textureSource;this._texture.destroy(t)}this._texture=null}updateBounds(){let e=this._bounds,t=this._anchor,n=this._width,r=this._height;e.minX=-t._x*n,e.maxX=e.minX+n,e.minY=-t._y*r,e.maxY=e.minY+r}};n_.defaultOptions={texture:h.EMPTY};var r_=n_,i_=class extends r_{constructor(...e){let t=e[0];t instanceof h&&(y(n,`NineSlicePlane now uses the options object {texture, leftWidth, rightWidth, topHeight, bottomHeight}`),t={texture:t,leftWidth:e[1],topHeight:e[2],rightWidth:e[3],bottomHeight:e[4]}),y(n,`NineSlicePlane is deprecated. Use NineSliceSprite instead.`),super(t)}},a_=class extends nd{constructor(e,t){super();let{textures:n,data:r}=e;Object.keys(r.pages).forEach(e=>{let t=n[r.pages[parseInt(e,10)].id];this.pages.push({texture:t})}),Object.keys(r.chars).forEach(e=>{let t=r.chars[e],{frame:i,source:a,rotate:o}=n[t.page],s=new h({frame:d.transformRectCoords(t,i,o,new p),orig:new p(0,0,t.width,t.height),source:a,rotate:o});this.chars[e]={id:e.codePointAt(0),xOffset:t.xOffset,yOffset:t.yOffset,xAdvance:t.xAdvance,kerning:t.kerning??{},texture:s}}),this.baseRenderedFontSize=r.fontSize,this.baseMeasurementFontSize=r.fontSize,this.fontMetrics={ascent:0,descent:0,fontSize:r.fontSize},this.baseLineOffset=r.baseLineOffset,this.lineHeight=r.lineHeight,this.fontFamily=r.fontFamily,this.distanceField=r.distanceField??{type:`none`,range:0},this.url=t}destroy(){super.destroy();for(let e=0;e<this.pages.length;e++){let{texture:t}=this.pages[e];t.destroy(!0)}this.pages=null}static install(e){dd.install(e)}static uninstall(e){dd.uninstall(e)}};function o_(e){let{text:t,style:n,chars:r}=e,i=n,a=dd.getFont(t,i),o=ad(X.graphemeSegmenter(t),i,a,!0),s=o.scale,c=[],l=[],u=[],d=n.lineHeight?n.lineHeight:a.lineHeight*s,f=0;for(let e of o.lines){if(e.chars.length===0)continue;let t=new ot({label:`line`});t.y=f,u.push(t);let n=new ot({label:`word`}),o=0;for(let u=0;u<e.chars.length;u++){let d=e.chars[u];if(!d||!a.chars[d])continue;let f=d===` `,p=u===e.chars.length-1,m;r.length>0?(m=r.shift(),m.text=d,m.style=i,m.label=`char-${d}`,m.x=e.charPositions[u]*s-e.charPositions[o]*s):m=new wd({text:d,style:i,label:`char-${d}`,x:e.charPositions[u]*s-e.charPositions[o]*s}),f||(c.push(m),n.addChild(m)),(f||p)&&n.children.length>0&&(n.x=e.charPositions[o]*s,l.push(n),t.addChild(n),n=new ot({label:`word`}),o=u+1)}f+=d}return{chars:c,lines:u,words:l}}var s_=class extends ot{constructor(e){let{text:t,style:n,autoSplit:r,lineAnchor:i,wordAnchor:a,charAnchor:o,...s}=e;super(s),this._dirty=!1,this._canReuseChars=!1,this.chars=[],this.words=[],this.lines=[],this._originalText=t,this._autoSplit=r,this._lineAnchor=i,this._wordAnchor=a,this._charAnchor=o,this.style=n}split(){let e=this.splitFn();this.chars=e.chars,this.words=e.words,this.lines=e.lines,this.addChild(...this.lines),this.charAnchor=this._charAnchor,this.wordAnchor=this._wordAnchor,this.lineAnchor=this._lineAnchor,this._dirty=!1,this._canReuseChars=!0}get text(){return this._originalText}set text(e){this._originalText=e,this.lines.forEach(e=>e.destroy({children:!0})),this.lines.length=0,this.words.length=0,this.chars.length=0,this._canReuseChars=!1,this.onTextUpdate()}_setOrigin(e,t,n){let r;r=typeof e==`number`?{x:e,y:e}:{x:e.x,y:e.y},t.forEach(e=>{let t=e.getLocalBounds(),n=t.minX+t.width*r.x,i=t.minY+t.height*r.y;e.origin.set(n,i)}),this[n]=e}get lineAnchor(){return this._lineAnchor}set lineAnchor(e){this._setOrigin(e,this.lines,`_lineAnchor`)}get wordAnchor(){return this._wordAnchor}set wordAnchor(e){this._setOrigin(e,this.words,`_wordAnchor`)}get charAnchor(){return this._charAnchor}set charAnchor(e){this._setOrigin(e,this.chars,`_charAnchor`)}get style(){return this._style}set style(e){e||={},this._style=new Ku(e),this.styleChanged()}styleChanged(){this.words.forEach(e=>e.destroy()),this.words.length=0,this.lines.forEach(e=>e.destroy()),this.lines.length=0,this._canReuseChars=!0,this.onTextUpdate()}onTextUpdate(){this._dirty=!0,this._autoSplit&&this.split()}destroy(e){super.destroy(e),this.chars=[],this.words=[],this.lines=[],(typeof e==`boolean`?e:e?.style)&&this._style.destroy(e),this._style=null,this._originalText=``}},c_=class e extends s_{constructor(t){var n;let r={...e.defaultOptions,...t};r.style??={},(n=r.style).fill??(n.fill=16777215),super(r)}static from(t,n){let r={...e.defaultOptions,...n,text:t.text,style:new Ku(t.style)};t.style.tagStyles&&(D(`[SplitBitmapText] Tag styles are not supported for SplitBitmapText. They will be ignored.`),t.style._tagStyles=void 0);let i=new e({...r}),a=t.anchor;return(a.x!==0||a.y!==0)&&i.pivot.set(i.width*a.x,i.height*a.y),i}splitFn(){return o_({text:this._originalText,style:this._style,chars:this._canReuseChars?this.chars:[]})}};c_.defaultOptions={autoSplit:!0,lineAnchor:0,wordAnchor:0,charAnchor:0};var l_=c_;function u_(e,t,n){switch(e){case`center`:return(n-t)/2;case`right`:return n-t;default:return 0}}function d_(e){return e===`\r`||e===`
|
|
2691
|
+
`||e===`\r
|
|
2692
|
+
`}var f_=/^\s*$/;function p_(e,t){let n=[],r=t.lines[0],i=``,a=[],o=0;return e.forEach(e=>{let s=f_.test(e),c=d_(e),l=i.length===0&&s;s&&!c&&l||(c||(i+=e),a.push(e),i.length>=r.length&&(n.push({line:i,chars:a}),a=[],i=``,o++,r=t.lines[o]))}),n}function m_(e){let{text:t,style:n,chars:r}=e,i=n,a=X.measureText(t,i);if(a.runsByLine&&a.runsByLine.length>0)return h_(a,i,r,t);let o=p_(X.graphemeSegmenter(t),a),s=i.align,c=a.lineWidths.reduce((e,t)=>Math.max(e,t),0),l=i._fill?.fill,u=i._stroke?.fill,d=l instanceof bn,f=u instanceof bn,p=d||f,m=d&&l.textureSpace===`local`||f&&u.textureSpace===`local`,h=a.width,g=a.height,_=i.clone();_.align=`left`;let v=0,y=0;if(_.trim){let{frame:e,canvasAndContext:n}=Wu.getCanvasAndContext({text:t,style:i,resolution:1});Wu.returnCanvasAndContext(n),v=-e.x,y=-e.y,_.trim=!1}let b=[],x=[],S=[],C=0,w=0,T=m?{width:h,height:g}:null;return o.forEach((e,t)=>{let n=new ot({label:`line-${t}`});n.y=C+y,x.push(n);let l=a.lineWidths[t],u=u_(s,l,c),d=new ot({label:`word`});d.x=u+v;let f=X._context;f.font=_._fontString,X.experimentalLetterSpacingSupported&&(f.letterSpacing=`0px`,f.textLetterSpacing=`0px`);let m=e.line,h=f.measureText(m).width;if(e.chars.forEach(e=>{if(d_(e))return;m=m.slice(e.length);let t=m.length>0?f.measureText(m).width:0,a=h-t;if(h=t,a!==0)if(e===` `)d.children.length>0&&(S.push(d),n.addChild(d)),u+=a+i.letterSpacing,d=new ot({label:`word`}),d.x=u+v;else{let t=_;p&&(t=_.clone(),t._gradientOffset={x:-u,y:-C},T&&(t._gradientBounds=T));let n;w<r.length?(n=r[w++],n.text=e,n.style=t,n.setFromMatrix(U.IDENTITY),n.x=u-d.x+v):n=new ed({text:e,style:t,x:u-d.x+v}),b.push(n),d.addChild(n),u+=a+i.letterSpacing}}),d.children.length>0&&(S.push(d),n.addChild(d)),s===`justify`&&i.wordWrap&&t<o.length-1){let e=n.children,t=e.length-1;if(t>0){let n=(c-l)/t;for(let t=1;t<e.length;t++)e[t].x+=t*n}}C+=a.lineHeight}),{chars:b,lines:x,words:S}}function h_(e,t,n,r){let{runsByLine:i}=e,a=t.align,o=e.lineWidths.reduce((e,t)=>Math.max(e,t),0),s=0,c=0;if(t.trim){let{frame:e,canvasAndContext:n}=Wu.getCanvasAndContext({text:r,style:t,resolution:1});Wu.returnCanvasAndContext(n),s=-e.x,c=-e.y}let l=[],u=[],d=[],f=0,p=0;return i.forEach((r,m)=>{let h=new ot({label:`line-${m}`});h.y=f+c,u.push(h);let g=e.lineWidths[m],_=u_(a,g,o),v=new ot({label:`word`});v.x=_+s;for(let e of r){let t=e.style,r=t._fill?.fill,i=t._stroke?.fill,a=r instanceof bn,o=i instanceof bn,c=a||o,u=a&&r.textureSpace===`local`||o&&i.textureSpace===`local`,f=X.graphemeSegmenter(e.text),m=t.clone();m.align=`left`,m.wordWrap=!1,m.trim&&=!1,m.tagStyles=void 0,m._lineHeight=0;let g=X._context;g.font=m._fontString,X.experimentalLetterSpacingSupported&&(g.letterSpacing=`0px`,g.textLetterSpacing=`0px`);let y=e.text,b=g.measureText(y).width,x=_,S=b,C=X.measureFont(m._fontString),w=t.lineHeight||C.fontSize,T=u?{width:S,height:w}:null;for(let e of f){y=y.slice(e.length);let r=y.length>0?g.measureText(y).width:0,i=b-r;if(b=r,!d_(e)&&i!==0)if(e===` `)v.children.length>0&&(d.push(v),h.addChild(v)),_+=i+t.letterSpacing,v=new ot({label:`word`}),v.x=_+s;else{let r=m;c&&(r=m.clone(),u?(r._gradientOffset={x:-(_-x),y:0},r._gradientBounds=T):r._gradientOffset={x:-(_-x),y:0});let a;p<n.length?(a=n[p++],a.text=e,a.style=r,a.setFromMatrix(U.IDENTITY),a.x=_-v.x+s):a=new ed({text:e,style:r,x:_-v.x+s}),l.push(a),v.addChild(a),_+=i+t.letterSpacing}}}if(v.children.length>0&&(d.push(v),h.addChild(v)),a===`justify`&&t.wordWrap&&m<i.length-1){let e=h.children,t=e.length-1;if(t>0){let n=(o-g)/t;for(let t=1;t<e.length;t++)e[t].x+=t*n}}let y=e.lineHeights?.[m]??e.lineHeight;f+=y}),{chars:l,lines:u,words:d}}var g_=class e extends s_{constructor(t){let n={...e.defaultOptions,...t};super(n)}static from(t,n){let r=new e({...e.defaultOptions,...n,text:t.text,style:new Ku(t.style)}),i=t.anchor;return(i.x!==0||i.y!==0)&&r.pivot.set(r.width*i.x,r.height*i.y),r}splitFn(){return m_({text:this._originalText,style:this._style,chars:this._canReuseChars?this.chars:[]})}};g_.defaultOptions={autoSplit:!0,lineAnchor:0,wordAnchor:0,charAnchor:0};var __=g_,v_=[`align`,`breakWords`,`cssOverrides`,`fontVariant`,`fontWeight`,`leading`,`letterSpacing`,`lineHeight`,`padding`,`textBaseline`,`trim`,`whiteSpace`,`wordWrap`,`wordWrapWidth`,`fontFamily`,`fontStyle`,`fontSize`];function y_(e){let t=[],n=0;for(let r=0;r<v_.length;r++){let i=`_${v_[r]}`;t[n++]=e[i]}return n=x_(e._fill,t,n),n=S_(e._stroke,t,n),n=C_(e.dropShadow,t,n),n=b_(e.filters,t,n),t.join(`-`)}function b_(e,t,n){if(!e)return n;for(let r of e)t[n++]=r.uid;return n}function x_(e,t,n){return e?(t[n++]=e.color,t[n++]=e.alpha,t[n++]=e.fill?.styleKey,n):n}function S_(e,t,n){return e?(n=x_(e,t,n),t[n++]=e.width,t[n++]=e.alignment,t[n++]=e.cap,t[n++]=e.join,t[n++]=e.miterLimit,n):n}function C_(e,t,n){return e?(t[n++]=e.alpha,t[n++]=e.angle,t[n++]=e.blur,t[n++]=e.distance,t[n++]=N.shared.setValue(e.color).toNumber(),n):n}async function w_(e,t,n=200){let r=await t.extract.base64(e);t.type!==P.CANVAS&&await t.encoder.commandFinished;let i=n;console.log(`logging texture ${e.source.width}px ${e.source.height}px`);let a=[`font-size: 1px;`,`padding: ${i}px 300px;`,`background: url(${r}) no-repeat;`,`background-size: contain;`].join(` `);console.log(`%c `,a)}var T_=[`#000080`,`#228B22`,`#8B0000`,`#4169E1`,`#008080`,`#800000`,`#9400D3`,`#FF8C00`,`#556B2F`,`#8B008B`],E_=0;function D_(e,t=0,n={color:`#000000`}){e.renderGroup&&(n.color=T_[E_++]);let r=``;for(let e=0;e<t;e++)r+=` `;let i=e.label;!i&&e instanceof Ye&&(i=`sprite:${e.texture.label}`);let a=`%c ${r}|- ${i} (worldX:${e.worldTransform.tx}, relativeRenderX:${e.relativeGroupTransform.tx}, renderX:${e.groupTransform.tx}, localX:${e.x})`;e.renderGroup&&(a+=` (RenderGroup)`),e.filters&&(a+=`(*filters)`),console.log(a,`color:${n.color}; font-weight:bold;`),t++;for(let r=0;r<e.children.length;r++){let i=e.children[r];D_(i,t,{...n})}}function O_(e,t=0,n={index:0,color:`#000000`}){let r=``;for(let e=0;e<t;e++)r+=` `;let i=`%c ${r}- ${n.index}: ${e.root.label} worldX:${e.worldTransform.tx}`;console.log(i,`color:${n.color}; font-weight:bold;`),t++;for(let r=0;r<e.renderGroupChildren.length;r++){let i=e.renderGroupChildren[r];O_(i,t,{...n,index:r})}}F.add(sa,ca);export{nd as AbstractBitmapFont,pd as AbstractBitmapTextPipe,Mr as AbstractRenderer,s_ as AbstractSplitText,Yl as AbstractText,Zu as AbstractTextSystem,mt as AccessibilitySystem,Uc as AlphaFilter,Zt as AlphaMask,gr as AlphaMaskPipe,kl as AnimatedSprite,Ga as Application,mr as ApplicationInitHook,os as Assets,as as AssetsClass,_i as BLEND_TO_NPM,fu as BREAKING_SPACES,pu as BREAKING_SPACES_SET,gu as BREAK_AFTER_CHARS,_u as BREAK_AFTER_CHARS_SET,Bf as BUFFER_TYPE,Qa as BackgroundLoader,Er as BackgroundSystem,gi as Batch,li as BatchGeometry,si as BatchTextureArray,mn as BatchableGraphics,Ld as BatchableHTMLText,Tl as BatchableMesh,Tr as BatchableSprite,Yu as BatchableText,ji as Batcher,yr as BatcherPipe,de as BigPool,L as BindGroup,Dm as BindGroupSystem,a_ as BitmapFont,dd as BitmapFontManager,wd as BitmapText,fd as BitmapTextGraphics,Cd as BitmapTextPipe,q as BlendModeFilter,Gr as BlendModePipe,el as BlurFilter,$c as BlurFilterPass,l as Bounds,te as BrowserAdapter,V as Buffer,v as BufferImageSource,ra as BufferResource,k as BufferUsage,Nr as CLEAR,mu as COLLAPSIBLE_SPACES,hu as COLLAPSIBLE_SPACES_SET,G as Cache,$d as CanvasBatchAdaptor,hd as CanvasBitmapTextPipe,sf as CanvasColorMaskPipe,gf as CanvasContextSystem,Jt as CanvasFilterSystem,kf as CanvasGraphicsAdaptor,vl as CanvasGraphicsContextSystem,yl as CanvasGraphicsPipe,_f as CanvasLimitsSystem,Zg as CanvasNineSliceSpritePipe,vt as CanvasObserver,kg as CanvasParticleContainerAdaptor,Bg as CanvasParticleContainerPipe,on as CanvasPool,an as CanvasPoolClass,Af as CanvasRenderTargetAdaptor,jf as CanvasRenderTargetSystem,zf as CanvasRenderer,Qu as CanvasRendererTextSystem,rt as CanvasSource,pf as CanvasStencilMaskPipe,Wu as CanvasTextGenerator,X as CanvasTextMetrics,Xu as CanvasTextPipe,$u as CanvasTextSystem,Mf as CanvasTextureSystem,Pl as CanvasTilingSpritePipe,sn as Circle,N as Color,ha as ColorBlend,ga as ColorBurnBlend,_a as ColorDodgeBlend,Mt as ColorMask,pr as ColorMaskPipe,rl as ColorMatrixFilter,ls as CompressedSource,ot as Container,Oh as CubeTexture,Th as CubeTextureSource,jc as Culler,Mc as CullerPlugin,xr as CustomRenderPipe,Fs as D3D10_RESOURCE_DIMENSION,Ls as D3DFMT,Zr as DATA_URI,J as DDS,A as DEG_TO_RAD,Ch as DEPRECATED_SCALE_MODES,xh as DEPRECATED_WRAP_MODES,r as DOMAdapter,pt as DOMContainer,_t as DOMPipe,bh as DRAW_MODES,Ps as DXGI_FORMAT,zs as DXGI_TO_TEXTURE_FORMAT,va as DarkenBlend,Pi as DefaultBatcher,Li as DefaultShader,ya as DifferenceBlend,sl as DisplacementFilter,ba as DivideBlend,id as DynamicBitmapFont,wn as Ellipse,St as EventBoundary,ie as EventEmitter,yt as EventSystem,Ct as EventsTicker,xa as ExclusionBlend,W as ExtensionType,Mh as ExternalSource,ii as ExtractSystem,Rs as FOURCC_TO_TEXTURE_FORMAT,wt as FederatedContainer,xt as FederatedEvent,bt as FederatedMouseEvent,ft as FederatedPointerEvent,gt as FederatedWheelEvent,bn as FillGradient,Fn as FillPattern,at as Filter,je as FilterEffect,Gt as FilterPipe,Yt as FilterSystem,Ud as FontStylePromiseCache,Wc as GAUSSIAN_VALUES,zi as GCManagedHash,Vr as GCSystem,Gf as GL_FORMATS,qs as GL_INTERNAL_FORMAT,Kf as GL_TARGETS,Q as GL_TYPES,qf as GL_WRAP_MODES,ch as GPUTextureGpuData,ai as GenerateTextureSystem,he as Geometry,tp as GlBackBufferSystem,ef as GlBatchAdaptor,Vf as GlBuffer,Hf as GlBufferSystem,np as GlColorMaskSystem,Wf as GlContextSystem,rp as GlEncoderSystem,Zf as GlGeometryGpuData,Qf as GlGeometrySystem,vm as GlGraphicsAdaptor,ip as GlLimitsSystem,ym as GlMeshAdaptor,Vg as GlParticleContainerAdaptor,Hg as GlParticleContainerPipe,be as GlProgram,gp as GlProgramData,ap as GlRenderTarget,fp as GlRenderTargetAdaptor,pp as GlRenderTargetSystem,Mp as GlShaderSystem,Jp as GlStateSystem,op as GlStencilSystem,Yp as GlTexture,_m as GlTextureSystem,dp as GlUboSystem,Ip as GlUniformGroupSystem,E as GlobalResourceRegistry,Hr as GlobalUniformSystem,af as GpuBatchAdaptor,Zm as GpuBlendModesToPixi,Om as GpuBufferData,km as GpuBufferSystem,jm as GpuColorMaskSystem,Mm as GpuDeviceSystem,Nm as GpuEncoderSystem,uh as GpuGraphicsAdaptor,fn as GpuGraphicsContext,Pm as GpuLimitsSystem,dh as GpuMeshAdapter,sh as GpuMipmapGenerator,Ug as GpuParticleContainerAdaptor,Wg as GpuParticleContainerPipe,ue as GpuProgram,qm as GpuRenderTarget,Jm as GpuRenderTargetAdaptor,Ym as GpuRenderTargetSystem,Xm as GpuShaderSystem,Qm as GpuStateSystem,na as GpuStencilModesToPixi,Fm as GpuStencilSystem,lh as GpuTextureSystem,Bm as GpuUboSystem,Hm as GpuUniformBatchPipe,Sl as Graphics,er as GraphicsContext,dn as GraphicsContextRenderData,Sn as GraphicsContextSystem,bl as GraphicsGpuData,Pn as GraphicsPath,xl as GraphicsPipe,Yd as HTMLText,Rd as HTMLTextPipe,Pd as HTMLTextRenderData,jd as HTMLTextStyle,Jd as HTMLTextSystem,Sa as HardLightBlend,Ca as HardMixBlend,Br as HelloSystem,hp as IGLUniformData,nn as ImageSource,C as InstructionSet,Y as KTX,wa as LightenBlend,Ta as LinearBurnBlend,Ea as LinearDodgeBlend,Da as LinearLightBlend,fo as Loader,Vt as LoaderParserPriority,Oa as LuminosityBlend,Oe as MaskEffectManager,Ae as MaskEffectManagerClass,kr as MaskFilter,U as Matrix,Ol as Mesh,wl as MeshGeometry,El as MeshGpuData,Dl as MeshPipe,Sg as MeshPlane,Eg as MeshRope,Dg as MeshSimple,uu as NEWLINES,du as NEWLINES_SET,yu as NEWLINE_MATCH_REGEX,vu as NEWLINE_SPLIT_REGEX,c as NOOP,ka as NegationBlend,$g as NineSliceGeometry,i_ as NineSlicePlane,r_ as NineSliceSprite,e_ as NineSliceSpriteGpuData,t_ as NineSliceSpritePipe,dl as NoiseFilter,ke as ObservablePoint,Aa as OverlayBlend,le as PI_2,Kg as Particle,Ng as ParticleBuffer,Xg as ParticleContainer,zg as ParticleContainerPipe,Rg as ParticleShader,Wt as PassthroughFilter,xg as PerspectiveMesh,yg as PerspectivePlaneGeometry,ja as PinLightBlend,Km as PipelineSystem,sg as PlaneGeometry,H as Point,Nn as Polygon,ee as Pool,f as PoolGroupClass,ml as PrepareBase,td as PrepareQueue,Zd as PrepareSystem,Xd as PrepareUpload,Bl as QuadGeometry,me as RAD_TO_DEG,p as Rectangle,Ih as RenderContainer,qe as RenderGroup,Wr as RenderGroupPipe,ur as RenderGroupSystem,ag as RenderLayer,Kr as RenderTarget,ei as RenderTargetSystem,Ir as RenderTexture,Rr as RenderableGCSystem,vr as RendererInitHook,P as RendererType,Ha as ResizePlugin,Qt as Resolver,wg as RopeGeometry,jn as RoundedRectangle,wh as SCALE_MODES,di as STENCIL_MODES,Bh as SVGDefsCollector,Yn as SVGParser,Ma as SaturationBlend,qr as SchedulerSystem,cf as ScissorMask,Sd as SdfShader,ce as Shader,O as ShaderStage,nr as ShapePath,Ur as SharedRenderPipes,Fr as SharedSystems,Na as SoftLightBlend,l_ as SplitBitmapText,__ as SplitText,Ye as Sprite,cr as SpritePipe,At as Spritesheet,et as State,Rt as StencilMask,Cr as StencilMaskPipe,Pa as SubtractBlend,jr as SystemRunner,Bs as TEXTURE_FORMAT_BLOCK_SIZE,ed as Text,Ku as TextStyle,h as Texture,ti as TextureGCSystem,g as TextureMatrix,Ve as TexturePool,st as TexturePoolClass,m as TextureSource,b as TextureStyle,Nh as TextureUvs,it as Ticker,We as TickerListener,Ua as TickerPlugin,Jl as TilingSprite,Gl as TilingSpriteGpuData,Kl as TilingSpritePipe,zl as TilingSpriteShader,Al as Transform,oa as Triangle,Pp as UNIFORM_TO_ARRAY_SETTERS,Np as UNIFORM_TO_SINGLE_SETTERS,re as UNIFORM_TYPES_MAP,_e as UNIFORM_TYPES_VALUES,Ge as UPDATE_BLEND,Ke as UPDATE_COLOR,Qe as UPDATE_PRIORITY,nt as UPDATE_TRANSFORM,$e as UPDATE_VISIBLE,Am as UboBatch,$i as UboSystem,pe as UniformGroup,_r as VERSION,Ut as VideoSource,tt as ViewContainer,Yr as ViewSystem,pi as ViewableBuffer,Fa as VividLightBlend,Im as WGSL_ALIGN_SIZE_DATA,sp as WGSL_TO_STD40_SIZE,Sh as WRAP_MODES,Em as WebGLRenderer,vh as WebGPURenderer,zc as WebWorkerAdapter,Wo as WorkerManager,Tt as accessibilityTarget,ui as addBits,Pt as addMaskBounds,en as addMaskLocalBounds,s as addProgramDefines,Bc as alphaFrag,Vc as alphaWgsl,$n as appendSVGPath,Hl as applyMatrix,cg as applyProjectiveTransformationToPlane,um as applyStyleParams,Je as assignWithIgnore,sr as autoDetectEnvironment,Va as autoDetectRenderer,It as autoDetectSource,Ss as basisTranscoderUrls,Re as bgr2rgb,Xa as bitmapFontCachePlugin,Ka as bitmapFontTextParser,qa as bitmapFontXMLParser,Ja as bitmapFontXMLStringParser,o_ as bitmapTextSplit,la as blendTemplateFrag,ua as blendTemplateVert,da as blendTemplateWgsl,eh as blockDataMap,Xc as blurTemplateWgsl,Xe as boundsPool,sa as browserExt,Dn as buildAdaptiveBezier,rr as buildAdaptiveQuadratic,un as buildArc,En as buildArcTo,ir as buildArcToSvg,hn as buildCircle,Gn as buildContextBatches,On as buildEllipse,rg as buildGeometryFromPath,Tn as buildLine,yn as buildPixelLine,pn as buildPolygon,Cn as buildRectangle,An as buildRoundedRectangle,eg as buildSVGFillAttributes,Wh as buildSVGPath,tg as buildSVGStrokeAttributes,Zn as buildSimpleUvs,xn as buildTriangle,_n as buildUvs,Be as cacheAsTextureMixin,$a as cacheTextureArray,Ln as calculatePathArea,Qr as calculateProjection,rn as canUseNewCanvasBlendModes,m_ as canvasTextSplit,K as canvasUtils,Te as checkChildrenDidChange,po as checkDataUrl,mo as checkExtension,tr as checkForNestedPattern,mi as checkMaxIfStatementsInShader,dt as childrenHelperMixin,Pr as cleanArray,ni as cleanHash,Sr as clearList,ln as closePointEps,Tu as collapseNewlines,wu as collapseSpaces,Lh as collectAllRenderables,Ie as collectRenderablesMixin,oi as color32BitToUniform,Mi as colorBit,Bi as colorBitGl,tl as colorMatrixFilterFrag,nl as colorMatrixFilterWgsl,lr as colorToUniform,lm as compareModeToGlCompare,Ci as compileHighShader,Ui as compileHighShaderGl,Ti as compileHighShaderGlProgram,Ei as compileHighShaderGpuProgram,bi as compileHooks,Hi as compileInputs,ci as compileOutputs,_p as compileShader,vg as compute2DProjection,fc as convertFormatIfRequired,tn as convertToList,Et as copySearchParams,em as createGlUploadCubeTextureResource,ih as createGpuUploadCubeTextureResource,ne as createIdFromString,Ag as createIndicesForQuads,ks as createLevelBuffers,mc as createLevelBuffersFromKTX,Dt as createStringVariations,Ao as createTexture,cp as createUboElementsSTD40,Lm as createUboElementsWGSL,Xi as createUboSyncFunction,up as createUboSyncFunctionSTD40,zm as createUboSyncFunctionWGSL,Qo as crossOrigin,ze as cullingMixin,kn as curveEps,Nt as defaultFilterVert,yp as defaultValue,Se as definedProps,y as deprecation,to as detectAvif,cs as detectBasis,Tc as detectCompressed,ro as detectDefaults,oo as detectMp4,so as detectOgv,zt as detectVideoAlphaMode,co as detectWebm,lo as detectWebp,es as determineCrossOrigin,il as displacementFrag,al as displacementVert,ol as displacementWgsl,vi as earcut,Fe as effectsMixin,qi as ensureAttributes,fe as ensureIsBuffer,S as ensurePrecision,Xl as ensureTextOptions,br as executeInstructions,F as extensions,Tp as extractAttributesFromGlProgram,xe as extractAttributesFromGpuProgram,Bd as extractFontFamilies,ve as extractStructAndGroups,Kn as extractSubpaths,qn as extractSvgUrlId,fi as fastCopy,Ne as findMixin,zu as fontStringFromTextStyle,of as formatShader,Di as fragmentGPUTemplate,xi as fragmentGlTemplate,lp as generateArraySyncSTD40,Rm as generateArraySyncWGSL,Kc as generateBlurFragSource,Yc as generateBlurGlProgram,Zc as generateBlurProgram,Jc as generateBlurVertSource,tf as generateGPULayout,z as generateGpuLayoutGroups,nf as generateLayout,B as generateLayoutHash,jg as generateParticleUpdateFunction,Ap as generateProgram,mp as generateShaderSyncCode,y_ as generateTextStyleKey,Ri as generateTextureBatchBit,wi as generateTextureBatchBitGl,Wn as generateTextureMatrix,Fp as generateUniformsSync,hi as getAdjustedBlendModeBlend,j as getAttributeInfoFromFormat,ki as getBatchSamplersUniformGroup,ad as getBitmapTextLayout,nu as getCanvasBoundingBox,Vu as getCanvasFillStyle,$r as getCanvasTexture,Ou as getCharacterGroups,M as getDefaultUniformValue,Fh as getFastGlobalBounds,Ce as getFastGlobalBoundsMixin,Rn as getFillInstructionData,Wd as getFontCss,To as getFontFamilyName,oe as getGeometryBounds,Yf as getGlTypeFromFormat,Pe as getGlobalBounds,De as getGlobalMixin,Xt as getGlobalRenderableBounds,ct as getLocalBounds,o as getMaxFragmentPrecision,Jn as getMaxMiterRatio,Ai as getMaxTexturesPerBatch,or as getOrientationOfPoints,lu as getPlainText,Ht as getPo2TextureFromSource,ko as getResolutionOfUrl,Gd as getSVGUrl,hs as getSupportedCompressedTextureFormats,ps as getSupportedGPUCompressedTextureFormats,ds as getSupportedGlCompressedTextureFormats,vs as getSupportedTextureFormats,Kd as getTemporaryCanvasFromImage,_ as getTestContext,Gi as getTextureBatchBindGroup,Og as getTextureDefaultMatrix,yc as getTextureFormatFromKTXTexture,Ep as getUboData,Dp as getUniformData,jt as getUrlExtension,gc as glFormatToGPUFormat,Xp as glUploadBufferImageResource,Qp as glUploadCompressedTextureResource,tm as glUploadImageResource,am as glUploadVideoResource,Ii as globalUniformsBit,Ni as globalUniformsBitGl,Oi as globalUniformsUBOBitGl,js as gpuFormatToBasisTranscoderFormat,xc as gpuFormatToKTXBasisTranscoderFormat,$m as gpuUploadBufferImageResource,nh as gpuUploadCompressedTextureResource,ah as gpuUploadImageResource,oh as gpuUploadVideoResource,ng as graphicsContextToSvg,d as groupD8,Lr as hasCachedCanvasTexture,ou as hasTagMarkup,au as hasTagStyles,fl as hslWgsl,pa as hslgl,ma as hslgpu,yi as injectBits,ye as insertVersion,Cu as isBreakAfterChar,xu as isBreakingSpace,Ft as isCanvasFilterCapable,Su as isCollapsibleSpace,ht as isMobile,bu as isNewline,i as isPow2,Jr as isRenderingToScreen,zd as isSafari,Ot as isSingleItem,La as isWebGLSupported,za as isWebGPUSupported,rc as ktxTranscoderUrls,Os as loadBasis,Ds as loadBasisOnWorker,Za as loadBitmapFont,Ks as loadDDS,zr as loadEnvironmentExtensions,Vd as loadFontAsBase64,Hd as loadFontCSS,qo as loadImageBitmap,_o as loadJson,$s as loadKTX,uc as loadKTX2,lc as loadKTX2onWorker,qd as loadSVGImage,No as loadSvg,Jo as loadTextures,bo as loadTxt,ns as loadVideoTextures,Oo as loadWebFont,Ji as localUniformBit,Yi as localUniformBitGl,ea as localUniformBitGroup2,gd as localUniformMSDFBit,_d as localUniformMSDFBitGl,w as log2,w_ as logDebugTexture,kp as logProgramError,O_ as logRenderGroupScene,D_ as logScene,vd as mSDFBit,yd as mSDFBitGl,mf as mapCanvasBlendModesToPixi,dm as mapFormatToGlFormat,fm as mapFormatToGlInternalFormat,pm as mapFormatToGlType,wp as mapGlToVertexFormat,zp as mapSize,Cp as mapType,mm as mapViewDimensionToGlTarget,Bp as mapWebGLBlendModesToPixi,Ar as maskFrag,Or as maskVert,hr as maskWgsl,Me as matrixPool,Id as measureHtmlText,Le as measureMixin,Au as measureTaggedText,Lp as migrateFragmentFromV7toV8,sm as mipmapScaleModeToGlFilter,Ee as multiplyColors,T as multiplyHexColors,u as nextPow2,cl as noiseFrag,ll as noiseWgsl,gs as nonCompressedFormats,R as normalizeExtensionPriority,lt as onRenderMixin,Vs as parseDDS,Ph as parseFunctionBody,Js as parseKTX,Hn as parseSVGDefinitions,Vn as parseSVGFloatAttribute,Mn as parseSVGPath,Bn as parseSVGStyle,cu as parseTaggedText,qg as particleData,Fg as particlesFrag,Ig as particlesVert,Lg as particlesWgsl,Bt as passthroughFrag,qt as passthroughWgsl,kt as path,aa as pointInTriangle,$o as preloadVideo,we as removeItems,ae as removeStructAndGroupDuplicates,ge as resetUids,ld as resolveCharacters,Cc as resolveCompressedTextureUrl,is as resolveJsonUrl,rs as resolveTextureUrl,Lt as resourceToTexture,Si as roundPixelsBit,Fi as roundPixelsBitGl,ar as roundedShapeArc,In as roundedShapeQuadraticCurve,Xr as sayHello,om as scaleModeToGlFilter,Cs as setBasisTranscoderPath,ic as setKTXTranscoderPath,Vl as setPositions,a as setProgramName,Ul as setUvs,cn as shapeBuilders,Ue as sortMixin,$t as spritesheetAsset,zn as squaredDistanceToLineSegment,x as stripVersion,Xn as styleAttributes,eo as testImageFormat,ao as testVideoFormat,Td as textStyleToCSS,Zi as textureBit,ia as textureBitGl,Kt as textureFrom,Fl as tilingBit,Il as tilingBitGl,Qn as toFillStyle,ut as toLocalGlobalMixin,Un as toStrokeStyle,Du as tokenize,Mu as tokenizeTaggedRuns,vn as transformVertices,gn as triangulateWithHoles,Eu as trimRight,Qi as uboSyncFunctionsSTD40,ta as uboSyncFunctionsWGSL,se as uid,Ki as uniformParsers,hm as unpremultiplyAlpha,wr as unsafeEvalSupported,Rh as updateLocalTransform,He as updateQuadBounds,Dr as updateRenderGroupTransform,fr as updateRenderGroupTransforms,Ju as updateTextBounds,dr as updateTransformAndChildren,Ze as updateTransformBackwards,zh as updateWorldTransform,n as v8_0_0,I as v8_3_4,Sc as validFormats,ri as validateRenderables,Vi as vertexGPUTemplate,Wi as vertexGlTemplate,vc as vkFormatToGPUFormat,D as warn,ca as webworkerExt,Fu as wordWrap,ju as wordWrapTaggedLines,cm as wrapModeToGlAddress};
|