@needle-tools/engine 4.16.10 → 4.16.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/SKILL.md +64 -4
  3. package/dist/gltf-progressive-DLDvZ8Xm.umd.cjs +10 -0
  4. package/dist/{gltf-progressive-CzxjNmG6.js → gltf-progressive-DMK8kKVB.js} +352 -346
  5. package/dist/gltf-progressive-RPgYR6rv.min.js +10 -0
  6. package/dist/{needle-engine.bundle-a0Pw5htf.js → needle-engine.bundle-BfsnYTeP.js} +7329 -7105
  7. package/dist/{needle-engine.bundle-D_nuVSFb.umd.cjs → needle-engine.bundle-COr8D1vc.umd.cjs} +132 -132
  8. package/dist/{needle-engine.bundle-DlyYXu9v.min.js → needle-engine.bundle-DG1sGkxn.min.js} +131 -131
  9. package/dist/needle-engine.d.ts +60 -3
  10. package/dist/needle-engine.js +3 -3
  11. package/dist/needle-engine.min.js +1 -1
  12. package/dist/needle-engine.umd.cjs +1 -1
  13. package/dist/three-examples.js +52 -52
  14. package/dist/three-examples.min.js +4 -4
  15. package/dist/three-examples.umd.cjs +2 -2
  16. package/lib/engine/api.d.ts +2 -1
  17. package/lib/engine/api.js +1 -6
  18. package/lib/engine/api.js.map +1 -1
  19. package/lib/engine/debug/debug_spector.js +1 -1
  20. package/lib/engine/debug/debug_spector.js.map +1 -1
  21. package/lib/engine/engine_addressables.d.ts +32 -1
  22. package/lib/engine/engine_addressables.js +71 -9
  23. package/lib/engine/engine_addressables.js.map +1 -1
  24. package/lib/engine/engine_application.d.ts +2 -0
  25. package/lib/engine/engine_application.js +7 -3
  26. package/lib/engine/engine_application.js.map +1 -1
  27. package/lib/engine/engine_audio.d.ts +30 -1
  28. package/lib/engine/engine_audio.js +57 -13
  29. package/lib/engine/engine_audio.js.map +1 -1
  30. package/lib/engine/engine_context.js +25 -1
  31. package/lib/engine/engine_context.js.map +1 -1
  32. package/lib/engine/engine_context_registry.js +1 -1
  33. package/lib/engine/engine_context_registry.js.map +1 -1
  34. package/lib/engine/engine_input.js +1 -1
  35. package/lib/engine/engine_input.js.map +1 -1
  36. package/lib/engine/engine_license.d.ts +1 -1
  37. package/lib/engine/engine_license.js +31 -5
  38. package/lib/engine/engine_license.js.map +1 -1
  39. package/lib/engine/engine_lifecycle_functions_internal.js +20 -2
  40. package/lib/engine/engine_lifecycle_functions_internal.js.map +1 -1
  41. package/lib/engine/engine_networking_streams.d.ts +5 -1
  42. package/lib/engine/engine_networking_streams.js +64 -17
  43. package/lib/engine/engine_networking_streams.js.map +1 -1
  44. package/lib/engine/engine_shims.js +1 -1
  45. package/lib/engine/engine_shims.js.map +1 -1
  46. package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +5 -0
  47. package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js.map +1 -1
  48. package/lib/engine/webcomponents/fonts.d.ts +1 -1
  49. package/lib/engine/webcomponents/fonts.js +7 -0
  50. package/lib/engine/webcomponents/fonts.js.map +1 -1
  51. package/lib/engine/webcomponents/icons.js +8 -1
  52. package/lib/engine/webcomponents/icons.js.map +1 -1
  53. package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +5 -0
  54. package/lib/engine/webcomponents/needle menu/needle-menu.js +31 -13
  55. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  56. package/lib/engine/webcomponents/needle-engine.d.ts +1 -0
  57. package/lib/engine/webcomponents/needle-engine.js +16 -4
  58. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  59. package/lib/engine/webcomponents/needle-engine.loading.d.ts +2 -0
  60. package/lib/engine/webcomponents/needle-engine.loading.js +10 -0
  61. package/lib/engine/webcomponents/needle-engine.loading.js.map +1 -1
  62. package/lib/engine-components/AudioSource.d.ts +49 -2
  63. package/lib/engine-components/AudioSource.js +261 -66
  64. package/lib/engine-components/AudioSource.js.map +1 -1
  65. package/lib/engine-components/CameraUtils.js +1 -1
  66. package/lib/engine-components/CameraUtils.js.map +1 -1
  67. package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.d.ts +1 -1
  68. package/package.json +2 -2
  69. package/src/engine/api.ts +3 -1
  70. package/src/engine/debug/debug_spector.ts +1 -1
  71. package/src/engine/engine_addressables.ts +75 -9
  72. package/src/engine/engine_application.ts +7 -2
  73. package/src/engine/engine_audio.ts +68 -15
  74. package/src/engine/engine_context.ts +25 -1
  75. package/src/engine/engine_context_registry.ts +1 -1
  76. package/src/engine/engine_input.ts +2 -2
  77. package/src/engine/engine_license.ts +28 -5
  78. package/src/engine/engine_lifecycle_functions_internal.ts +21 -2
  79. package/src/engine/engine_networking_streams.ts +64 -19
  80. package/src/engine/engine_shims.ts +1 -1
  81. package/src/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +8 -1
  82. package/src/engine/webcomponents/fonts.ts +6 -0
  83. package/src/engine/webcomponents/icons.ts +9 -2
  84. package/src/engine/webcomponents/needle menu/needle-menu.ts +30 -12
  85. package/src/engine/webcomponents/needle-engine.loading.ts +13 -1
  86. package/src/engine/webcomponents/needle-engine.ts +15 -5
  87. package/src/engine-components/AudioSource.ts +244 -63
  88. package/src/engine-components/CameraUtils.ts +1 -1
  89. package/dist/gltf-progressive-BacJPTD6.umd.cjs +0 -10
  90. package/dist/gltf-progressive-BmXoz_HR.min.js +0 -10
@@ -95,7 +95,8 @@
95
95
  */
96
96
  export * from "./debug/index.js";
97
97
  /** Addressable asset system for loading assets by address/label */
98
- export * from "./engine_addressables.js";
98
+ export type { ProgressCallback } from "./engine_addressables.js";
99
+ export { Addressables, AssetReference, FileReference, FileReferenceSerializer, ImageReference, ImageReferenceSerializer } from "./engine_addressables.js";
99
100
  /** Animation playback and control utilities */
100
101
  export { AnimationUtils } from "./engine_animation.js";
101
102
  /** Application-level state and utilities */
package/lib/engine/api.js CHANGED
@@ -98,12 +98,7 @@
98
98
  // Debugging utilities, gizmos, and development tools.
99
99
  // ============================================================================
100
100
  export * from "./debug/index.js";
101
- // ============================================================================
102
- // ASSET LOADING & MANAGEMENT
103
- // Systems for loading, managing, and referencing assets at runtime.
104
- // ============================================================================
105
- /** Addressable asset system for loading assets by address/label */
106
- export * from "./engine_addressables.js";
101
+ export { Addressables, AssetReference, FileReference, FileReferenceSerializer, ImageReference, ImageReferenceSerializer } from "./engine_addressables.js";
107
102
  /** Animation playback and control utilities */
108
103
  export { AnimationUtils } from "./engine_animation.js";
109
104
  /** Application-level state and utilities */
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/engine/api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8FG;AAGH,+EAA+E;AAC/E,0BAA0B;AAC1B,sDAAsD;AACtD,+EAA+E;AAE/E,cAAc,kBAAkB,CAAC;AAGjC,+EAA+E;AAC/E,6BAA6B;AAC7B,oEAAoE;AACpE,+EAA+E;AAE/E,mEAAmE;AACnE,cAAc,0BAA0B,CAAC;AAEzC,+CAA+C;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,4CAA4C;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,mDAAmD;AACnD,cAAc,2BAA2B,CAAC;AAG1C,+EAA+E;AAC/E,qBAAqB;AACrB,2DAA2D;AAC3D,+EAA+E;AAE/E,mDAAmD;AACnD,cAAc,wBAAwB,CAAC;AAEvC,8DAA8D;AAC9D,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGhH,+EAA+E;AAC/E,2BAA2B;AAC3B,oEAAoE;AACpE,sEAAsE;AACtE,+EAA+E;AAE/E;;;GAGG;AACH,cAAc,wBAAwB,CAAC;AAEvC,yDAAyD;AACzD,cAAc,iCAAiC,CAAC;AAEhD,gDAAgD;AAChD,cAAc,uBAAuB,CAAC;AAGtC,+EAA+E;AAC/E,sBAAsB;AACtB,4DAA4D;AAC5D,+EAA+E;AAE/E;;;;GAIG;AACH,cAAc,qBAAqB,CAAC;AAEpC,qDAAqD;AACrD,cAAc,8BAA8B,CAAC;AAE7C;;;GAGG;AACH,cAAc,uBAAuB,CAAA;AAErC,4DAA4D;AAC5D,cAAc,4BAA4B,CAAC;AAE3C,2DAA2D;AAC3D,cAAc,2BAA2B,CAAA;AAEzC;;;GAGG;AACH,cAAc,wBAAwB,CAAC;AAEvC;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C,kDAAkD;AAClD,cAAc,kBAAkB,CAAC;AAEjC,yCAAyC;AACzC,cAAc,wBAAwB,CAAC;AAGvC,+EAA+E;AAC/E,eAAe;AACf,yEAAyE;AACzE,+EAA+E;AAE/E;;;;GAIG;AACH,cAAc,mBAAmB,CAAC;AAGlC,+EAA+E;AAC/E,2BAA2B;AAC3B,yDAAyD;AACzD,+EAA+E;AAE/E,8EAA8E;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,iCAAiC;AACjC,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAG3F,+EAA+E;AAC/E,sBAAsB;AACtB,uDAAuD;AACvD,+EAA+E;AAE/E,qDAAqD;AACrD,cAAc,2BAA2B,CAAC;AAE1C,2DAA2D;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAExE;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrE,+EAA+E;AAC/E,wBAAwB;AACxB,4CAA4C;AAC5C,+EAA+E;AAE/E,mFAAmF;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AAEzE,6DAA6D;AAC7D,cAAc,kBAAkB,CAAC;AAEjC,8BAA8B;AAC9B,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAGvE,+EAA+E;AAC/E,aAAa;AACb,sEAAsE;AACtE,+EAA+E;AAE/E;;;GAGG;AACH,cAAc,wBAAwB,CAAC;AAEvC;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,6CAA6C;AAC7C,cAAc,6BAA6B,CAAC;AAE5C,6CAA6C;AAC7C,cAAc,8BAA8B,CAAC;AAE7C;;;GAGG;AACH,cAAc,oCAAoC,CAAC;AAEnD,mEAAmE;AACnE,cAAc,6BAA6B,CAAC;AAE5C,8CAA8C;AAC9C,cAAc,gCAAgC,CAAC;AAE/C,iDAAiD;AACjD,cAAc,8BAA8B,CAAC;AAE7C,mCAAmC;AACnC,cAAc,8BAA8B,CAAC;AAG7C,+EAA+E;AAC/E,uBAAuB;AACvB,kDAAkD;AAClD,+EAA+E;AAE/E,gCAAgC;AAChC,cAAc,qBAAqB,CAAC;AAEpC;;;GAGG;AACH,cAAc,qBAAqB,CAAC;AAEpC,wEAAwE;AACxE,cAAc,2BAA2B,CAAC;AAE1C,wCAAwC;AACxC,cAAc,4BAA4B,CAAC;AAG3C,+EAA+E;AAC/E,2BAA2B;AAC3B,mDAAmD;AACnD,+EAA+E;AAE/E,sDAAsD;AACtD,cAAc,wBAAwB,CAAC;AAEvC,qEAAqE;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,wDAAwD;AACxD,cAAc,2BAA2B,CAAC;AAG1C,+EAA+E;AAC/E,gBAAgB;AAChB,6DAA6D;AAC7D,+EAA+E;AAE/E;;;GAGG;AACH,cAAc,2BAA2B,CAAC;AAM1C,+EAA+E;AAC/E,sBAAsB;AACtB,iDAAiD;AACjD,+EAA+E;AAE/E,uCAAuC;AACvC,cAAc,qBAAqB,CAAC;AAEpC,uEAAuE;AACvE,cAAc,yBAAyB,CAAC;AAExC;;;GAGG;AACH,cAAc,kBAAkB,CAAC;AAEjC,qCAAqC;AACrC,cAAc,wBAAwB,CAAC;AAEvC,2CAA2C;AAC3C,cAAc,mBAAmB,CAAC;AAElC,gDAAgD;AAChD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEhE,8CAA8C;AAC9C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAE9D,gEAAgE;AAChE,cAAc,mBAAmB,CAAC;AAElC,mDAAmD;AACnD,cAAc,0BAA0B,CAAC;AAEzC,iCAAiC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,mCAAmC;AACnC,cAAc,8BAA8B,CAAC;AAG7C,+EAA+E;AAC/E,4BAA4B;AAC5B,oDAAoD;AACpD,+EAA+E;AAE/E,mCAAmC;AACnC,cAAc,mBAAmB,CAAC;AAElC,+DAA+D;AAC/D,cAAc,uBAAuB,CAAC;AAEtC,wDAAwD;AACxD,cAAc,0BAA0B,CAAC;AAGzC,+EAA+E;AAC/E,iBAAiB;AACjB,oDAAoD;AACpD,+EAA+E;AAE/E,kCAAkC;AAClC,cAAc,wBAAwB,CAAA;AAEtC;;;GAGG;AACH,cAAc,kCAAkC,CAAC;AAEjD,6CAA6C;AAC7C,cAAc,0CAA0C,CAAC;AAGzD,+EAA+E;AAC/E,aAAa;AACb,+DAA+D;AAC/D,+EAA+E;AAE/E;;;GAGG;AACH,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/engine/api.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { isDevEnvironment } from "./debug.js";
2
2
  export function initSpectorIfAvailable(_context, canvas) {
3
- if (typeof window !== undefined && window.SPECTOR) {
3
+ if (typeof window !== "undefined" && window.SPECTOR) {
4
4
  console.log(window.SPECTOR);
5
5
  const params = new URLSearchParams(window.location.search);
6
6
  if (params.has("spector")) {
@@ -1 +1 @@
1
- {"version":3,"file":"debug_spector.js","sourceRoot":"","sources":["../../../src/engine/debug/debug_spector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAkB9C,MAAM,UAAU,sBAAsB,CAAC,QAAiB,EAAE,MAAyB;IAC/E,IAAI,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,sCAAsC,GAAG,KAAK,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC7C,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;YAC3B,sBAAsB,EAAE,CAAC;YACzB,OAAO;YAEP,SAAS,sBAAsB;gBAC3B,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK;oBAAE,OAAO,MAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC;gBACrG,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAC1C,IAAI,GAAG,IAAI,GAAG,YAAY,OAAO;oBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;;oBAClE,OAAO,CAAC,SAAS,EAAE,CAAC;YAC7B,CAAC;QACL,CAAC;aACI,IAAI,gBAAgB,EAAE,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,wFAAwF,CAAC,CAAC;QAC5G,CAAC;IACL,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"debug_spector.js","sourceRoot":"","sources":["../../../src/engine/debug/debug_spector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAkB9C,MAAM,UAAU,sBAAsB,CAAC,QAAiB,EAAE,MAAyB;IAC/E,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,sCAAsC,GAAG,KAAK,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC7C,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;YAC3B,sBAAsB,EAAE,CAAC;YACzB,OAAO;YAEP,SAAS,sBAAsB;gBAC3B,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK;oBAAE,OAAO,MAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC;gBACrG,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAC1C,IAAI,GAAG,IAAI,GAAG,YAAY,OAAO;oBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;;oBAClE,OAAO,CAAC,SAAS,EAAE,CAAC;YAC7B,CAAC;QACL,CAAC;aACI,IAAI,gBAAgB,EAAE,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,wFAAwF,CAAC,CAAC;QAC5G,CAAC;IACL,CAAC;AACL,CAAC"}
@@ -191,11 +191,22 @@ export declare class ImageReference {
191
191
  readonly url: string;
192
192
  private _bitmap?;
193
193
  private _bitmapObject?;
194
+ private _bitmapGeneration;
194
195
  dispose(): void;
196
+ /**
197
+ * @internal Only used during final context teardown; see {@link clearAssetCaches}.
198
+ * Dispose every cached {@link ImageReference} and empty the cache.
199
+ *
200
+ * The cache is static, so it outlives any {@link Context}: without this, images loaded by a
201
+ * page that is later torn down (e.g. navigating between routes in a SPA) stay in memory for
202
+ * the lifetime of the document, and the heap grows with every navigation.
203
+ * Called automatically once the last context is disposed — see {@link clearAssetCaches}.
204
+ */
205
+ static clearCache(): void;
195
206
  createHTMLImage(): HTMLImageElement;
196
207
  private loader;
197
208
  createTexture(): Promise<Texture | null>;
198
- /** Loads the bitmap data of the image */
209
+ /** Loads the bitmap data of the image. Returns null if disposed before loading completes. */
199
210
  getBitmap(): Promise<ImageBitmap | null>;
200
211
  }
201
212
  /** @internal */
@@ -226,7 +237,27 @@ export declare class FileReference {
226
237
  readonly url: string;
227
238
  private res?;
228
239
  constructor(url: string);
240
+ /** Drop the cached response so its body can be garbage collected. A subsequent load re-fetches. */
241
+ dispose(): void;
242
+ /**
243
+ * @internal Only used during final context teardown; see {@link clearAssetCaches}.
244
+ * Dispose every cached {@link FileReference} and empty the cache.
245
+ *
246
+ * The cache is static, so it outlives any {@link Context}: each entry holds the fetch response
247
+ * for its url, which keeps the file's binary data alive for the lifetime of the document.
248
+ * Called automatically once the last context is disposed — see {@link clearAssetCaches}.
249
+ */
250
+ static clearCache(): void;
229
251
  }
252
+ /**
253
+ * @internal Clear the shared file and image caches after the last context is disposed.
254
+ *
255
+ * Intentionally not exposed through the public engine API: clearing these caches closes
256
+ * ImageBitmaps already returned to callers. It does not destroy scenes or remove consumers,
257
+ * so calling it while a context is alive can invalidate assets that are still in use.
258
+ * A public API needs resource ownership tracking and defined handling of pending loads first.
259
+ */
260
+ export declare function clearAssetCaches(): void;
230
261
  /** @internal */
231
262
  export declare class FileReferenceSerializer extends TypeSerializer {
232
263
  constructor();
@@ -557,12 +557,33 @@ export class ImageReference {
557
557
  url;
558
558
  _bitmap;
559
559
  _bitmapObject;
560
+ _bitmapGeneration = 0;
560
561
  dispose() {
562
+ // Invalidate image loads and decodes that may complete after teardown.
563
+ this._bitmapGeneration++;
561
564
  if (this._bitmapObject) {
562
565
  this._bitmapObject.close();
566
+ // drop the reference too: close() frees the underlying image data, but keeping the
567
+ // object alive keeps the wrapper (and anything reachable from it) in the heap.
568
+ this._bitmapObject = undefined;
563
569
  }
564
570
  this._bitmap = undefined;
565
571
  }
572
+ /**
573
+ * @internal Only used during final context teardown; see {@link clearAssetCaches}.
574
+ * Dispose every cached {@link ImageReference} and empty the cache.
575
+ *
576
+ * The cache is static, so it outlives any {@link Context}: without this, images loaded by a
577
+ * page that is later torn down (e.g. navigating between routes in a SPA) stay in memory for
578
+ * the lifetime of the document, and the heap grows with every navigation.
579
+ * Called automatically once the last context is disposed — see {@link clearAssetCaches}.
580
+ */
581
+ static clearCache() {
582
+ for (const ref of ImageReference.imageReferences.values()) {
583
+ ref.dispose();
584
+ }
585
+ ImageReference.imageReferences.clear();
586
+ }
566
587
  createHTMLImage() {
567
588
  const img = new Image();
568
589
  img.src = this.url;
@@ -593,23 +614,34 @@ export class ImageReference {
593
614
  // return null;
594
615
  // });
595
616
  }
596
- /** Loads the bitmap data of the image */
617
+ /** Loads the bitmap data of the image. Returns null if disposed before loading completes. */
597
618
  getBitmap() {
598
619
  if (this._bitmap)
599
620
  return this._bitmap;
600
- this._bitmap = new Promise((res, _) => {
621
+ const generation = this._bitmapGeneration;
622
+ this._bitmap = new Promise((resolve, reject) => {
601
623
  const imageElement = document.createElement("img");
602
624
  imageElement.addEventListener("load", () => {
603
- this._bitmap = createImageBitmap(imageElement).then((bitmap) => {
625
+ if (generation !== this._bitmapGeneration) {
626
+ resolve(null);
627
+ return;
628
+ }
629
+ createImageBitmap(imageElement).then(bitmap => {
630
+ if (generation !== this._bitmapGeneration) {
631
+ // The cache no longer owns this request. Do not revive disposed state
632
+ // or overwrite a newer load on a reference that has been reused.
633
+ bitmap.close();
634
+ resolve(null);
635
+ return;
636
+ }
604
637
  this._bitmapObject = bitmap;
605
- res(bitmap);
606
- return bitmap;
607
- });
608
- });
638
+ resolve(bitmap);
639
+ }, reject);
640
+ }, { once: true });
609
641
  imageElement.addEventListener("error", err => {
610
642
  console.error("Failed to load image:" + this.url, err);
611
- res(null);
612
- });
643
+ resolve(null);
644
+ }, { once: true });
613
645
  imageElement.src = this.url;
614
646
  });
615
647
  return this._bitmap;
@@ -671,6 +703,36 @@ export class FileReference {
671
703
  constructor(url) {
672
704
  this.url = url;
673
705
  }
706
+ /** Drop the cached response so its body can be garbage collected. A subsequent load re-fetches. */
707
+ dispose() {
708
+ this.res = undefined;
709
+ }
710
+ /**
711
+ * @internal Only used during final context teardown; see {@link clearAssetCaches}.
712
+ * Dispose every cached {@link FileReference} and empty the cache.
713
+ *
714
+ * The cache is static, so it outlives any {@link Context}: each entry holds the fetch response
715
+ * for its url, which keeps the file's binary data alive for the lifetime of the document.
716
+ * Called automatically once the last context is disposed — see {@link clearAssetCaches}.
717
+ */
718
+ static clearCache() {
719
+ for (const ref of FileReference.cache.values()) {
720
+ ref.dispose();
721
+ }
722
+ FileReference.cache.clear();
723
+ }
724
+ }
725
+ /**
726
+ * @internal Clear the shared file and image caches after the last context is disposed.
727
+ *
728
+ * Intentionally not exposed through the public engine API: clearing these caches closes
729
+ * ImageBitmaps already returned to callers. It does not destroy scenes or remove consumers,
730
+ * so calling it while a context is alive can invalidate assets that are still in use.
731
+ * A public API needs resource ownership tracking and defined handling of pending loads first.
732
+ */
733
+ export function clearAssetCaches() {
734
+ FileReference.clearCache();
735
+ ImageReference.clearCache();
674
736
  }
675
737
  /** @internal */
676
738
  export class FileReferenceSerializer extends TypeSerializer {
@@ -1 +1 @@
1
- {"version":3,"file":"engine_addressables.js","sourceRoot":"","sources":["../../src/engine/engine_addressables.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine_addressables.js","sourceRoot":"","sources":["../../src/engine/engine_addressables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,QAAQ,EAAW,aAAa,EAAE,MAAM,OAAO,CAAC;AAEhE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,OAAO,EAA4B,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACzH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAA0B,MAAM,oCAAoC,CAAC;AACrH,OAAO,EAAwB,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAG5C,MAAM,KAAK,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AAE5C;;;GAGG;AACH,MAAM,OAAO,YAAY;IAEb,QAAQ,CAAU;IAClB,gBAAgB,GAAsC,EAAE,CAAC;IAEjE,gBAAgB;IAChB,YAAY,OAAgB;QACxB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5D,CAAC;IAED,gBAAgB;IAChB,OAAO;QACH,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClF,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACjE,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YACvC,GAAG,EAAE,MAAM,EAAE,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;IAC/B,CAAC;IAEO,SAAS,GAAG,GAAG,EAAE;IAEzB,CAAC,CAAA;IAGD;;OAEG;IACH,kBAAkB,CAAC,GAAW;QAC1B,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,sBAAsB,CAAC,GAAmB;QACtC,IAAI,CAAC,GAAG,CAAC,GAAG;YAAE,OAAO,GAAG,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACzC,CAAC;aACI,CAAC;YAEF,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,gBAAgB;IAChB,wBAAwB,CAAC,GAAmB;QACxC,IAAI,CAAC,GAAG,CAAC,GAAG;YAAE,OAAO;QACrB,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;CACJ;AAID,MAAM,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,OAAO,cAAc;IAEvB;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CAAC,GAAW,EAAE,OAAiB;QACpD,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAC1B,IAAI,CAAC,OAAO;gBACR,MAAM,IAAI,KAAK,CAAC,4KAA4K,CAAC,CAAC;QACtM,CAAC;QACD,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAC1C,MAAM,QAAQ,GAAG,YAAY,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAClD,YAAY,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,QAAuC,EAAE,GAAW,EAAE,OAAiB;QAEtF,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;gBAC1B,IAAI,CAAC,OAAO;oBACR,MAAM,IAAI,KAAK,CAAC,4KAA4K,CAAC,CAAC;YACtM,CAAC;QACL,CAAC;aACI,CAAC;YACF,OAAO,GAAG,QAAQ,CAAC,OAAkB,CAAC;YACtC,QAAQ,GAAG,QAAQ,CAAC,QAAS,CAAC;QAClC,CAAC;QAED,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC3C,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC9F,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAC1C,MAAM,QAAQ,GAAG,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACvD,YAAY,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,GAAG,CAAC;IACf,CAAC;IAOQ,gBAAgB,GAAG,IAAI,CAAC;IAEjC;;OAEG;IACH,IAAI,QAAQ,KAAU,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAE9C;OACG;IACH,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,IAAc,KAAK,CAAC,GAAoB;QACpC,IAAI,GAAG,EAAE,CAAC;YACN,IAAI,CAAC,SAAS,GAAG;gBACb,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,KAAK,EAAE,GAAG;gBACV,MAAM,EAAE,CAAC,GAAG,CAAC;aAChB,CAAA;QACL,CAAC;;YACI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC/B,CAAC;IAGD;6BACyB;IACzB,IAAI,GAAG;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,8DAA8D;IAC9D,IAAI,GAAG;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,yHAAyH;IACzH,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAAA,CAAC;IAEF;;OAEG;IACH,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS;YAC1B,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACnI,CAAC;IAEO,SAAS,GAAiB,IAAI,CAAC;IAC/B,QAAQ,CAAmB;IAC3B,IAAI,CAAS;IACb,QAAQ,CAAS;IACjB,kBAAkB,GAAuB,EAAE,CAAC;IAE5C,mBAAmB,GAAY,KAAK,CAAC;IACrC,UAAU,CAA0B;IAK5C,YAAY,GAAG,IAAW;QAEtB,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC5B,CAAC;iBACI,CAAC;gBACF,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;gBACf,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;oBAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAClD,CAAC;QACL,CAAC;aACI,CAAC;YACF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,QAAQ;gBAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;QAGD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;YACrD,wBAAwB;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC/C,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACxD,CAAC;QACL,CAAC;aACI,CAAC;YACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QAC9B,CAAC;QAED,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,GAAW;QACrC,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;YACnB,IAAI,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC,KAAK,CAAC;YACtB,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAY,QAAQ;QAChB,OAAO,CAAC,IAAI,CAAC,KAAK,IAAK,IAAI,CAAC,KAAa,CAAC,WAAW,KAAK,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;IACvG,CAAC;IAEO,eAAe,GAA6C,IAAI,CAAC;IAEzE;kHAC8G;IAC9G,QAAQ,KAAK,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAA,CAAC,CAAC;IAEjE,2FAA2F;IAC3F,MAAM;QACF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7C,mHAAmH;YACnH,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK;gBACzC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAiB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC;IACL,CAAC;IAED,0DAA0D;IAC1D,KAAK,CAAC,OAAO;QACT,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAChC,IAAI,IAAI,CAAC,mBAAmB;YAAE,OAAO,IAAI,CAAC;QAC1C,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC;QAC1D,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;YACjD,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,CAAC;QACtC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,kDAAkD;IAClD;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,IAA8B;QAC/C,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;gBACrB,OAAO,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,OAAO,wCAAwC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,iGAAiG,CAAC,CAAC;YAC9N,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC;QACtB,CAAC;QAED,IAAI,IAAI;YAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,oFAAoF;QACpF,mFAAmF;QACnF,iCAAiC;QACjC,gCAAgC;QAChC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,YAAY,WAAW,CAAC,EAAE,CAAC;gBAC5C,OAAO,CAAC,KAAK,CAAC,+EAA+E,GAAG,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;gBAC1H,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,IAAI,CAAC,eAAe,GAAG,SAAS,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACvF,IAAI,CAAC,kBAAkB,CAAC,IAAI,aAAa,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACtI,CAAC;aACI,CAAC;YACF,IAAI,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/C,IAAI,CAAC,eAAe,GAAG,SAAS,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;gBAClF,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;QACP,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC;QACvC,2DAA2D;QAC3D,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,GAAG,EAAE,CAAC;YACN,yEAAyE;YACzE,kCAAkC;YAClC,uDAAuD;YACvD,qEAAqE;YACrE,GAAG,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;YAC5B,IAAI,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;YACzD,IAAI,IAAI,CAAC,KAAK;gBAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;YAEnD,kEAAkE;YAClE,gDAAgD;YAChD,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAE3B,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;YACzB,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kDAAkD;IAClD,WAAW,CAAC,MAA8C;QACtD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,iIAAiI;IACjI,iBAAiB,CAAC,MAA0C,EAAE,eAAwB,IAAI;QACtF,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED,mBAAmB,CAAC,GAAqB;QACrC,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YACxC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,iBAAiB,CAAC,GAAqB;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC;IACL,CAAC;IAEO,kBAAkB,CAAC,IAAmB;QAC1C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACzC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrB,CAAC;IACL,CAAC;IAGO,MAAM,CAAU,sBAAsB,GAAwB,IAAI,GAAG,EAAkB,CAAC;IAExF,KAAK,CAAC,aAAa,CAAC,IAAqE,EAAE,YAAqB,KAAK,EAAE,YAAsB;QACjJ,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAEhC,4CAA4C;QAC5C,+EAA+E;QAC/E,MAAM,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACzC,IAAI,IAAI,YAAY,QAAQ,EAAE,CAAC;YAC3B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QAC1B,CAAC;aACI,IAAI,IAAI,EAAE,CAAC;YACZ,6CAA6C;YAC7C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC7B,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAEjE,6BAA6B;QAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAChC,CAAC;QACD,IAAI,KAAK;YACL,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAE1D,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAEnD,IAAI,KAAK,GAAG,cAAc,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChE,wEAAwE;YACxE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;gBACxC,OAAO,CAAC,KAAK,CAAC,0CAA0C,GAAG,IAAI,CAAC,GAAG,GAAG,sBAAsB,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;gBAC5G,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,IAAI,CAAC;gBACD,IAAI,KAAK,KAAK,SAAS;oBAAE,KAAK,GAAG,CAAC,CAAC;gBACnC,KAAK,IAAI,CAAC,CAAC;gBACX,cAAc,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC3D,IAAI,SAAS,EAAE,CAAC;oBACZ,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;oBAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;oBAC1B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;oBACvB,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;oBAC3E,IAAI,QAAQ,EAAE,CAAC;wBACX,OAAO,QAAQ,CAAC;oBACpB,CAAC;gBACL,CAAC;qBACI,CAAC;oBACF,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBAClD,IAAI,QAAQ,EAAE,CAAC;wBACX,OAAO,QAAQ,CAAC;oBACpB,CAAC;gBACL,CAAC;YACL,CAAC;oBACO,CAAC;gBACL,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,EAAE;oBACpC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC;wBAAE,KAAK,GAAG,CAAC,CAAC;;wBAC3C,KAAK,IAAI,CAAC,CAAC;oBAChB,cAAc,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;gBAC9D,CAAC,CAAC,CAAC;YACP,CAAC;QAEL,CAAC;aACI,IAAI,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACK,0BAA0B,CAAC,KAAU;QACzC,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACvB,iDAAiD;YACjD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAc,CAAC;YACnC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;gBAChG,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC/B,8SAA8S;gBAC9S,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;gBACnC,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,gDAAgD;;gBAE5C,OAAO,KAAK,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;;AAOL,MAAM,qBAAsB,SAAQ,cAAc;IAE9C;QACI,KAAK,CAAC,CAAC,cAAc,CAAC,EAAE,0BAA0B,CAAC,CAAC;IACxD,CAAC;IAED,WAAW,CAAC,IAAS,EAAE,QAA8B;QACjD,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YACjE,OAAO,IAAI,CAAC,GAAG,CAAC;QACpB,CAAC;IACL,CAAC;IAED,aAAa,CAAC,IAAS,EAAE,OAA6B;QAClD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBACjC,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBACnC,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,MAAM,GAAG,GAAG,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9E,OAAO,GAAG,CAAC;QACf,CAAC;aACI,IAAI,IAAI,YAAY,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBACjC,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBACnC,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC;YACjB,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;YAC5B,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC;YACrC,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC3D,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC;YAC9B,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YACrD,GAAG,CAAC,YAAY,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;YAC7C,OAAO,GAAG,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CAEJ;AACD,IAAI,qBAAqB,EAAE,CAAC;AAI5B,MAAM,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,cAAc;IAEf,MAAM,CAAC,eAAe,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEnE,MAAM,CAAC,WAAW,CAAC,GAAW;QAC1B,IAAI,GAAG,GAAG,cAAc,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,GAAG,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;YAC9B,cAAc,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,YAAY,GAAW;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;IAEQ,GAAG,CAAU;IAEd,OAAO,CAA+B;IACtC,aAAa,CAAe;IAC5B,iBAAiB,GAAG,CAAC,CAAC;IAE9B,OAAO;QACH,uEAAuE;QACvE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC3B,mFAAmF;YACnF,+EAA+E;YAC/E,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,UAAU;QACb,KAAK,MAAM,GAAG,IAAI,cAAc,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;YACxD,GAAG,CAAC,OAAO,EAAE,CAAC;QAClB,CAAC;QACD,cAAc,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IAC3C,CAAC;IAED,eAAe;QACX,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACnB,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,MAAM,GAAyB,IAAI,CAAC;IAC5C,aAAa;QACT,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAClD,OAAO,oBAAoB,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC9C,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC3B,qCAAqC;gBACrC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC;YACrD,CAAC;YACD,OAAO,GAAG,CAAC;QACf,CAAC,CAAC,CAAA;QACF,6CAA6C;QAC7C,oBAAoB;QACpB,+CAA+C;QAC/C,sCAAsC;QACtC,0BAA0B;QAC1B,QAAQ;QACR,mBAAmB;QACnB,MAAM;IACV,CAAC;IAED,6FAA6F;IAC7F,SAAS;QACL,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAqB,CAAC;YACvE,YAAY,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;gBACvC,IAAI,UAAU,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACxC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACd,OAAO;gBACX,CAAC;gBACD,iBAAiB,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;oBAC1C,IAAI,UAAU,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBACxC,sEAAsE;wBACtE,iEAAiE;wBACjE,MAAM,CAAC,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,IAAI,CAAC,CAAC;wBACd,OAAO;oBACX,CAAC;oBACD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;oBAC5B,OAAO,CAAC,MAAM,CAAC,CAAC;gBACpB,CAAC,EAAE,MAAM,CAAC,CAAC;YACf,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACnB,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;gBACzC,OAAO,CAAC,KAAK,CAAC,uBAAuB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACvD,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACnB,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;;AAIL,gBAAgB;AAChB,MAAM,OAAO,wBAAyB,SAAQ,cAAc;IACxD;QACI,KAAK,CAAC,CAAC,cAAc,CAAC,EAAE,0BAA0B,CAAC,CAAC;IACxD,CAAC;IAED,WAAW,CAAC,KAAa,EAAE,QAA8B;QACrD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,QAA8B;QACtD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAC7C,OAAO,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AACD,IAAI,wBAAwB,EAAE,CAAC;AAI/B;;;;;;GAMG;AACH,MAAM,OAAO,aAAa;IAEd,MAAM,CAAC,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAExD,MAAM,CAAC,WAAW,CAAC,GAAW;QAC1B,IAAI,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,GAAG,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;YAC7B,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACT,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACV,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,mCAAmC;IAC1B,GAAG,CAAS;IAEb,GAAG,CAAqB;IAEhC,YAAY,GAAW;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;IAED,mGAAmG;IACnG,OAAO;QACH,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;IACzB,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU;QACb,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,GAAG,CAAC,OAAO,EAAE,CAAC;QAClB,CAAC;QACD,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;;AAGL;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB;IAC5B,aAAa,CAAC,UAAU,EAAE,CAAC;IAC3B,cAAc,CAAC,UAAU,EAAE,CAAC;AAChC,CAAC;AAGD,gBAAgB;AAChB,MAAM,OAAO,uBAAwB,SAAQ,cAAc;IACvD;QACI,KAAK,CAAC,CAAC,aAAa,CAAC,EAAE,yBAAyB,CAAC,CAAC;IACtD,CAAC;IAED,WAAW,CAAC,KAAa,EAAE,QAA8B;QACrD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,QAA8B;QACtD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAC7C,OAAO,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AACD,IAAI,uBAAuB,EAAE,CAAC"}
@@ -41,5 +41,7 @@ export declare class Application extends EventTarget {
41
41
  private _isVisible;
42
42
  /** @internal */
43
43
  constructor(context: Context);
44
+ /** @internal Remove the global listener when the owning context is disposed. */
45
+ dispose(): void;
44
46
  private onVisiblityChanged;
45
47
  }
@@ -93,9 +93,13 @@ export class Application extends EventTarget {
93
93
  constructor(context) {
94
94
  super();
95
95
  this.context = context;
96
- window.addEventListener("visibilitychange", this.onVisiblityChanged.bind(this), false);
96
+ window.addEventListener("visibilitychange", this.onVisiblityChanged, false);
97
97
  }
98
- onVisiblityChanged(evt) {
98
+ /** @internal Remove the global listener when the owning context is disposed. */
99
+ dispose() {
100
+ window.removeEventListener("visibilitychange", this.onVisiblityChanged, false);
101
+ }
102
+ onVisiblityChanged = (evt) => {
99
103
  // console.log(evt.target.visibilityState)
100
104
  switch (evt.target.visibilityState) {
101
105
  case "hidden":
@@ -107,6 +111,6 @@ export class Application extends EventTarget {
107
111
  this.dispatchEvent(new Event(ApplicationEvents.Visible));
108
112
  break;
109
113
  }
110
- }
114
+ };
111
115
  }
112
116
  //# sourceMappingURL=engine_application.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine_application.js","sourceRoot":"","sources":["../../src/engine/engine_application.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine_application.js","sourceRoot":"","sources":["../../src/engine/engine_application.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,33 @@
1
+ /**
2
+ * iOS Safari exposes a non-standard `"interrupted"` state in addition to the
3
+ * spec'd `AudioContextState`s when the audio session is taken away (e.g. the
4
+ * device is locked or another app starts playing audio).
5
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/BaseAudioContext/state#resuming_interrupted_play_states_in_ios_safari
6
+ */
7
+ export type InterruptibleAudioContextState = AudioContextState | "interrupted";
8
+ /**
9
+ * @internal
10
+ * Pure policy deciding whether `AudioContext.resume()` should be attempted right now.
11
+ *
12
+ * The context needs resuming when it is `"suspended"` or (on iOS) `"interrupted"`.
13
+ * But resuming is only allowed while the document is **visible**: on iOS Safari,
14
+ * calling `resume()` while the page is backgrounded or the device is locked fails
15
+ * with `InvalidStateError: Failed to start the audio device`, because the audio
16
+ * hardware cannot be started in the background. In that case the resume must be
17
+ * deferred until the page becomes visible again.
18
+ *
19
+ * @param state The current (possibly iOS-interrupted) audio context state.
20
+ * @param visibility The current `document.visibilityState`.
21
+ * @returns `true` if `resume()` should be called now, `false` if it should be deferred.
22
+ */
23
+ export declare function shouldResumeAudioContext(state: InterruptibleAudioContextState, visibility: DocumentVisibilityState): boolean;
1
24
  /**
2
25
  * @internal
3
- * Ensure the audio context is resumed if it gets suspended or interrupted */
26
+ * Keep the shared AudioContext alive across suspends/interruptions (tab switch, device lock, audio
27
+ * session interruption). On returning to the foreground we simply resume() the EXISTING context —
28
+ * the same approach three.js uses, which recovers cleanly because AudioSource plays clips through a
29
+ * MediaElementAudioSourceNode (an <audio> element), whose media session iOS keeps alive across a
30
+ * lock. We deliberately do NOT close/recreate the context: on-device testing showed that makes iOS
31
+ * worse (a recreated context's output stays dead) and it is unnecessary.
32
+ */
4
33
  export declare function ensureAudioContextIsResumed(): void;
@@ -1,23 +1,67 @@
1
1
  import { AudioContext } from "three";
2
2
  import { Application } from "./engine_application.js";
3
+ import { getParam } from "./engine_utils.js";
4
+ /** Verbose audio logging, opt-in via `?debugaudio` (same flag AudioSource uses). */
5
+ const debug = getParam("debugaudio");
3
6
  /**
4
7
  * @internal
5
- * Ensure the audio context is resumed if it gets suspended or interrupted */
8
+ * Pure policy deciding whether `AudioContext.resume()` should be attempted right now.
9
+ *
10
+ * The context needs resuming when it is `"suspended"` or (on iOS) `"interrupted"`.
11
+ * But resuming is only allowed while the document is **visible**: on iOS Safari,
12
+ * calling `resume()` while the page is backgrounded or the device is locked fails
13
+ * with `InvalidStateError: Failed to start the audio device`, because the audio
14
+ * hardware cannot be started in the background. In that case the resume must be
15
+ * deferred until the page becomes visible again.
16
+ *
17
+ * @param state The current (possibly iOS-interrupted) audio context state.
18
+ * @param visibility The current `document.visibilityState`.
19
+ * @returns `true` if `resume()` should be called now, `false` if it should be deferred.
20
+ */
21
+ export function shouldResumeAudioContext(state, visibility) {
22
+ // Resuming while hidden throws InvalidStateError on iOS — defer until visible.
23
+ if (visibility !== "visible")
24
+ return false;
25
+ return state === "suspended" || state === "interrupted";
26
+ }
27
+ /** Resume the shared AudioContext if it is suspended/interrupted and the page is visible. */
28
+ function recoverAudioContext() {
29
+ const ctx = AudioContext.getContext();
30
+ const state = ctx.state;
31
+ const visibility = typeof document !== "undefined" ? document.visibilityState : "visible";
32
+ if (!shouldResumeAudioContext(state, visibility))
33
+ return;
34
+ ctx.resume()
35
+ .then(() => { if (debug)
36
+ console.log("AudioContext resumed successfully"); })
37
+ .catch(e => { if (debug)
38
+ console.warn("Failed to resume AudioContext: " + e); });
39
+ }
40
+ /**
41
+ * @internal
42
+ * Keep the shared AudioContext alive across suspends/interruptions (tab switch, device lock, audio
43
+ * session interruption). On returning to the foreground we simply resume() the EXISTING context —
44
+ * the same approach three.js uses, which recovers cleanly because AudioSource plays clips through a
45
+ * MediaElementAudioSourceNode (an <audio> element), whose media session iOS keeps alive across a
46
+ * lock. We deliberately do NOT close/recreate the context: on-device testing showed that makes iOS
47
+ * worse (a recreated context's output stays dead) and it is unnecessary.
48
+ */
6
49
  export function ensureAudioContextIsResumed() {
7
50
  Application.registerWaitForInteraction(() => {
8
- // this is a fix for https://github.com/mrdoob/three.js/issues/27779 & https://linear.app/needle/issue/NE-4257
51
+ // https://github.com/mrdoob/three.js/issues/27779 & https://linear.app/needle/issue/NE-4257
9
52
  const ctx = AudioContext.getContext();
10
- ctx.addEventListener("statechange", () => {
11
- setTimeout(() => {
12
- // on iOS the audiocontext can be interrupted: https://developer.mozilla.org/en-US/docs/Web/API/BaseAudioContext/state#resuming_interrupted_play_states_in_ios_safari
13
- const state = ctx.state;
14
- if (state === "suspended" || state === "interrupted") {
15
- ctx.resume()
16
- .then(() => { console.log("AudioContext resumed successfully"); })
17
- .catch((e) => { console.log("Failed to resume AudioContext: " + e); });
18
- }
19
- }, 500);
20
- });
53
+ ctx.addEventListener("statechange", () => setTimeout(recoverAudioContext, 300));
54
+ // iOS frequently rejects the first resume() right after foregrounding with InvalidStateError,
55
+ // then accepts one a few hundred ms later with no follow-up statechange — so retry with a
56
+ // short backoff. Each attempt is a no-op once running.
57
+ if (typeof document !== "undefined") {
58
+ document.addEventListener("visibilitychange", () => {
59
+ if (document.visibilityState !== "visible")
60
+ return;
61
+ for (const delay of [0, 250, 600, 1200, 2000])
62
+ setTimeout(recoverAudioContext, delay);
63
+ });
64
+ }
21
65
  });
22
66
  }
23
67
  setTimeout(ensureAudioContextIsResumed, 1000);
@@ -1 +1 @@
1
- {"version":3,"file":"engine_audio.js","sourceRoot":"","sources":["../../src/engine/engine_audio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD;;6EAE6E;AAC7E,MAAM,UAAU,2BAA2B;IACvC,WAAW,CAAC,0BAA0B,CAAC,GAAG,EAAE;QACxC,8GAA8G;QAC9G,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;QACtC,GAAG,CAAC,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE;YACrC,UAAU,CAAC,GAAG,EAAE;gBACZ,qKAAqK;gBACrK,MAAM,KAAK,GAAG,GAAG,CAAC,KAA0C,CAAC;gBAC7D,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;oBACnD,GAAG,CAAC,MAAM,EAAE;yBACP,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC;yBACjE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,iCAAiC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/E,CAAC;YACL,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AACD,UAAU,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"engine_audio.js","sourceRoot":"","sources":["../../src/engine/engine_audio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,oFAAoF;AACpF,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;AAUrC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,wBAAwB,CACpC,KAAqC,EACrC,UAAmC;IAEnC,+EAA+E;IAC/E,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC3C,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,aAAa,CAAC;AAC5D,CAAC;AAED,6FAA6F;AAC7F,SAAS,mBAAmB;IACxB,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAuC,CAAC;IAC1D,MAAM,UAAU,GAAG,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,UAAU,CAAC;QAAE,OAAO;IACzD,GAAG,CAAC,MAAM,EAAE;SACP,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC5E,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,iCAAiC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B;IACvC,WAAW,CAAC,0BAA0B,CAAC,GAAG,EAAE;QACxC,4FAA4F;QAC5F,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;QACtC,GAAG,CAAC,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,CAAC;QAEhF,8FAA8F;QAC9F,0FAA0F;QAC1F,uDAAuD;QACvD,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;YAClC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,GAAG,EAAE;gBAC/C,IAAI,QAAQ,CAAC,eAAe,KAAK,SAAS;oBAAE,OAAO;gBACnD,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;oBAAE,UAAU,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;YAC1F,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AACD,UAAU,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import 'three/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js';
2
+ import { NEEDLE_progressive } from '@needle-tools/gltf-progressive';
2
3
  import { Color, DepthTexture, NearestFilter, NoToneMapping, Object3D, PCFSoftShadowMap, PerspectiveCamera, RGBAFormat, Scene, SRGBColorSpace, Texture, WebGLRenderer, WebGLRenderTarget } from 'three';
3
4
  /** @ts-ignore (not yet in types?) */
4
5
  import { BasicNodeLibrary } from "three";
@@ -7,7 +8,7 @@ import { nodeFrame } from "three/examples/jsm/renderers/webgl-legacy/nodes/WebGL
7
8
  import { initSpectorIfAvailable } from './debug/debug_spector.js';
8
9
  import { isDevEnvironment, LogType, showBalloonError, showBalloonMessage } from './debug/index.js';
9
10
  import { AccessibilityManager } from './engine_accessibility.js';
10
- import { Addressables } from './engine_addressables.js';
11
+ import { Addressables, clearAssetCaches } from './engine_addressables.js';
11
12
  import { AnimationsRegistry } from './engine_animation.js';
12
13
  import { Application } from './engine_application.js';
13
14
  import { AssetDatabase } from './engine_assetdatabase.js';
@@ -752,6 +753,19 @@ export class Context {
752
753
  Context.Current = this;
753
754
  ContextRegistry.dispatchCallback(ContextEvent.ContextDestroying, this);
754
755
  invokeLifecycleFunctions(this, ContextEvent.ContextDestroying);
756
+ // The global legacy node frame must not retain this context's scene after teardown.
757
+ if (nodeFrame.camera === this._mainCamera || nodeFrame.camera === this._fallbackCamera
758
+ || nodeFrame.camera === this.mainCameraComponent?.threeCamera) {
759
+ nodeFrame.camera = null;
760
+ }
761
+ if (this.renderer && nodeFrame.renderer === this.renderer) {
762
+ nodeFrame.camera = null;
763
+ nodeFrame.renderer = null;
764
+ nodeFrame.object = null;
765
+ nodeFrame.material = null;
766
+ nodeFrame.scene = null;
767
+ nodeFrame.geometry = null;
768
+ }
755
769
  this.clear();
756
770
  this.renderer?.setAnimationLoop(null);
757
771
  if (this.renderer) {
@@ -765,6 +779,7 @@ export class Context {
765
779
  }
766
780
  this.scene = null;
767
781
  this.renderer = null;
782
+ this.application.dispose();
768
783
  this.input.dispose();
769
784
  this.menu.onDestroy();
770
785
  this.animations.onDestroy();
@@ -783,6 +798,15 @@ export class Context {
783
798
  ContextRegistry.dispatchCallback(ContextEvent.ContextDestroyed, this);
784
799
  invokeLifecycleFunctions(this, ContextEvent.ContextDestroyed);
785
800
  ContextRegistry.unregister(this);
801
+ // The asset caches (FileReference/ImageReference) are static and shared by all contexts, so
802
+ // they can only be released once nothing is left that could still be using them. Without
803
+ // this they are never emptied: a SPA that repeatedly creates and destroys <needle-engine>
804
+ // elements keeps every loaded file and image alive for the lifetime of the document.
805
+ if (ContextRegistry.Registered.length === 0) {
806
+ clearAssetCaches();
807
+ // Geometry promises in this shared cache retain resource users and their textures.
808
+ NEEDLE_progressive.dispose();
809
+ }
786
810
  if (Context.Current === this) {
787
811
  //@ts-ignore
788
812
  Context.Current = null;