@needle-tools/engine 5.1.0-alpha.8 → 5.1.0-beta

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 (122) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/components.needle.json +1 -1
  3. package/dist/{materialx-CE2sUv2B.umd.cjs → materialx-B47Bz-xs.umd.cjs} +1 -1
  4. package/dist/{materialx-u1EqYrhu.min.js → materialx-B85WjP7E.min.js} +1 -1
  5. package/dist/{materialx-vyB2Zbt4.js → materialx-jkHmVPez.js} +1 -1
  6. package/dist/{needle-engine.bundle-3LOy9tj8.js → needle-engine.bundle-BWkDSRyF.js} +6248 -6001
  7. package/dist/{needle-engine.bundle-BuI2pjv1.min.js → needle-engine.bundle-BvgS8xMP.min.js} +171 -171
  8. package/dist/{needle-engine.bundle-DQy9vQdJ.umd.cjs → needle-engine.bundle-CdVr_iIe.umd.cjs} +142 -142
  9. package/dist/needle-engine.d.ts +359 -46
  10. package/dist/needle-engine.js +618 -606
  11. package/dist/needle-engine.min.js +1 -1
  12. package/dist/needle-engine.umd.cjs +1 -1
  13. package/dist/{vendor-ButPLzor.umd.cjs → vendor-1UvpPPSB.umd.cjs} +2 -2
  14. package/dist/{vendor-DqZC4Is7.min.js → vendor-BQ2Vuntm.min.js} +4 -4
  15. package/dist/{vendor-DkWSNjMV.js → vendor-BslSKZPo.js} +113 -106
  16. package/lib/engine/api.d.ts +1 -1
  17. package/lib/engine/api.js +1 -1
  18. package/lib/engine/api.js.map +1 -1
  19. package/lib/engine/engine_audio.d.ts +30 -1
  20. package/lib/engine/engine_audio.js +57 -13
  21. package/lib/engine/engine_audio.js.map +1 -1
  22. package/lib/engine/engine_init.js +2 -2
  23. package/lib/engine/engine_init.js.map +1 -1
  24. package/lib/engine/engine_license.d.ts +7 -7
  25. package/lib/engine/engine_license.js +72 -72
  26. package/lib/engine/engine_license.js.map +1 -1
  27. package/lib/engine/engine_math.d.ts +1 -1
  28. package/lib/engine/engine_math.js +10 -4
  29. package/lib/engine/engine_math.js.map +1 -1
  30. package/lib/engine/engine_networking_blob.js +3 -3
  31. package/lib/engine/engine_networking_blob.js.map +1 -1
  32. package/lib/engine/engine_scenedata.js +7 -0
  33. package/lib/engine/engine_scenedata.js.map +1 -1
  34. package/lib/engine/engine_serialization_core.js +7 -2
  35. package/lib/engine/engine_serialization_core.js.map +1 -1
  36. package/lib/engine/engine_time_utils.d.ts +10 -6
  37. package/lib/engine/engine_time_utils.js +10 -6
  38. package/lib/engine/engine_time_utils.js.map +1 -1
  39. package/lib/engine/engine_utils_qrcode.js +2 -2
  40. package/lib/engine/engine_utils_qrcode.js.map +1 -1
  41. package/lib/engine/webcomponents/needle menu/needle-menu-spatial.js +2 -2
  42. package/lib/engine/webcomponents/needle menu/needle-menu.js +5 -5
  43. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  44. package/lib/engine/webcomponents/needle-engine.js +2 -2
  45. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  46. package/lib/engine/webcomponents/needle-engine.loading.js +2 -2
  47. package/lib/engine/webcomponents/needle-engine.loading.js.map +1 -1
  48. package/lib/engine/xr/TempXRContext.js +2 -2
  49. package/lib/engine/xr/TempXRContext.js.map +1 -1
  50. package/lib/engine-components/AudioSource.d.ts +46 -2
  51. package/lib/engine-components/AudioSource.js +268 -60
  52. package/lib/engine-components/AudioSource.js.map +1 -1
  53. package/lib/engine-components/Component.js +2 -1
  54. package/lib/engine-components/Component.js.map +1 -1
  55. package/lib/engine-components/DragControls.js +2 -2
  56. package/lib/engine-components/DragControls.js.map +1 -1
  57. package/lib/engine-components/DragControlsConstraints.d.ts +0 -15
  58. package/lib/engine-components/DragControlsConstraints.js +14 -8
  59. package/lib/engine-components/DragControlsConstraints.js.map +1 -1
  60. package/lib/engine-components/EventList.js +1 -1
  61. package/lib/engine-components/EventList.js.map +1 -1
  62. package/lib/engine-components/SceneSwitcher.d.ts +2 -0
  63. package/lib/engine-components/SceneSwitcher.js +43 -16
  64. package/lib/engine-components/SceneSwitcher.js.map +1 -1
  65. package/lib/engine-components/SeeThrough.d.ts +39 -0
  66. package/lib/engine-components/SeeThrough.js +69 -1
  67. package/lib/engine-components/SeeThrough.js.map +1 -1
  68. package/lib/engine-components/api.d.ts +1 -0
  69. package/lib/engine-components/api.js +1 -0
  70. package/lib/engine-components/api.js.map +1 -1
  71. package/lib/engine-components/codegen/components.d.ts +10 -0
  72. package/lib/engine-components/codegen/components.js +10 -0
  73. package/lib/engine-components/codegen/components.js.map +1 -1
  74. package/lib/engine-components/export/usdz/USDZExporter.js +4 -4
  75. package/lib/engine-components/timeline/PlayableDirector.js +1 -1
  76. package/lib/engine-components/timeline/PlayableDirector.js.map +1 -1
  77. package/lib/engine-components/web/ScrollFollow.d.ts +33 -0
  78. package/lib/engine-components/web/ScrollFollow.js +164 -22
  79. package/lib/engine-components/web/ScrollFollow.js.map +1 -1
  80. package/lib/needle-app.d.ts +18 -0
  81. package/lib/needle-app.js +19 -0
  82. package/lib/needle-app.js.map +1 -0
  83. package/package.json +3 -2
  84. package/plugins/common/license.js +25 -4
  85. package/plugins/common/needle-engine.js +5 -2
  86. package/plugins/types/userconfig.d.ts +22 -0
  87. package/plugins/vite/dts-generator.d.ts +24 -0
  88. package/plugins/vite/dts-generator.js +40 -7
  89. package/plugins/vite/index.d.ts +2 -0
  90. package/plugins/vite/index.js +17 -0
  91. package/plugins/vite/license.js +4 -4
  92. package/plugins/vite/needle-app.js +78 -5
  93. package/plugins/vite/remote.d.ts +28 -0
  94. package/plugins/vite/remote.js +124 -0
  95. package/src/engine/api.ts +1 -1
  96. package/src/engine/engine_audio.ts +68 -15
  97. package/src/engine/engine_gameobject.ts +1 -1
  98. package/src/engine/engine_init.ts +2 -2
  99. package/src/engine/engine_license.ts +69 -69
  100. package/src/engine/engine_math.ts +11 -4
  101. package/src/engine/engine_networking_blob.ts +3 -3
  102. package/src/engine/engine_scenedata.ts +7 -2
  103. package/src/engine/engine_serialization_core.ts +7 -2
  104. package/src/engine/engine_time_utils.ts +10 -6
  105. package/src/engine/engine_utils_qrcode.ts +2 -2
  106. package/src/engine/webcomponents/needle menu/needle-menu-spatial.ts +2 -2
  107. package/src/engine/webcomponents/needle menu/needle-menu.ts +5 -5
  108. package/src/engine/webcomponents/needle-engine.loading.ts +6 -6
  109. package/src/engine/webcomponents/needle-engine.ts +2 -2
  110. package/src/engine/xr/TempXRContext.ts +2 -2
  111. package/src/engine-components/AudioSource.ts +256 -55
  112. package/src/engine-components/Component.ts +2 -1
  113. package/src/engine-components/DragControls.ts +3 -2
  114. package/src/engine-components/DragControlsConstraints.ts +16 -8
  115. package/src/engine-components/EventList.ts +1 -1
  116. package/src/engine-components/SceneSwitcher.ts +37 -15
  117. package/src/engine-components/SeeThrough.ts +75 -1
  118. package/src/engine-components/api.ts +1 -0
  119. package/src/engine-components/codegen/components.ts +10 -0
  120. package/src/engine-components/export/usdz/USDZExporter.ts +4 -4
  121. package/src/engine-components/timeline/PlayableDirector.ts +1 -1
  122. package/src/engine-components/web/ScrollFollow.ts +168 -22
@@ -162,7 +162,7 @@ export * from "./engine_input.js";
162
162
  /** GPU instancing utilities for rendering many similar objects efficiently */
163
163
  export { InstancingUtil } from "./engine_instancing.js";
164
164
  /** License checking utilities */
165
- export { bLW, __Carg, _$QyV } from "./engine_license.js";
165
+ export { $fwGZrGe, _$qWUhYZU, _XtEQ } from "./engine_license.js";
166
166
  /** Lifecycle API for registering global callbacks */
167
167
  export * from "./engine_lifecycle_api.js";
168
168
  /** Model loader callbacks for customizing load behavior */
package/lib/engine/api.js CHANGED
@@ -190,7 +190,7 @@ export * from "./engine_input.js";
190
190
  /** GPU instancing utilities for rendering many similar objects efficiently */
191
191
  export { InstancingUtil } from "./engine_instancing.js";
192
192
  /** License checking utilities */
193
- export { bLW, __Carg, _$QyV } from "./engine_license.js";
193
+ export { $fwGZrGe, _$qWUhYZU, _XtEQ } from "./engine_license.js";
194
194
  // ============================================================================
195
195
  // LIFECYCLE & LOADING
196
196
  // Component lifecycle hooks and asset loading systems.
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/engine/api.ts"],"names":[],"mappings":"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"}
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,iDAAiD;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,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,uFAAuF;AACvF,cAAc,8BAA8B,CAAC;AAE7C,qDAAqD;AACrD,cAAc,8BAA8B,CAAC;AAE7C;;;GAGG;AACH,cAAc,uBAAuB,CAAA;AAErC,yEAAyE;AACzE,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3E,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,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAGjE,+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,sGAAsG;AACtG,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;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;AAE3C,wEAAwE;AACxE,cAAc,yBAAyB,CAAC;AAGxC,+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;AAE1C,oFAAoF;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG7D,+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,6 +1,35 @@
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;
5
34
  /**
6
35
  * Represents an audio clip that can be loaded and played independently.
@@ -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
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"engine_audio.js","sourceRoot":"","sources":["../../src/engine/engine_audio.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine_audio.js","sourceRoot":"","sources":["../../src/engine/engine_audio.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ import { initBuiltinTypes } from "./codegen/register_types.js";
8
8
  import { initSpatialConsole } from "./debug/debug_spatial_console.js";
9
9
  import { initAddressableSerializers } from "./engine_addressables.js";
10
10
  import { ensureAudioContextIsResumed } from "./engine_audio.js";
11
- import { $cLf } from "./engine_license.js";
11
+ import { $lySygz } from "./engine_license.js";
12
12
  import { initNeedleLoader } from "./engine_loaders.js";
13
13
  import { initPhysics } from "./engine_physics_rapier.js";
14
14
  import { initBuiltinSerializers } from "./engine_serialization_builtin_serializer.js";
@@ -57,7 +57,7 @@ export function initEngine() {
57
57
  initPhysics();
58
58
  initXR();
59
59
  initSpatialConsole();
60
- $cLf();
60
+ $lySygz();
61
61
  // Must be last. customElements.define() upgrades existing <needle-engine>
62
62
  // elements synchronously, which can trigger context.create() and dispatch
63
63
  // ContextCreationStart if `src` is already set as an HTML attribute.
@@ -1 +1 @@
1
- {"version":3,"file":"engine_init.js","sourceRoot":"","sources":["../../src/engine/engine_init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AACvF,OAAO,EAAE,gCAAgC,EAAE,MAAM,4CAA4C,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,wDAAwD,CAAC;AACvG,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU;IACtB,IAAI,WAAW;QAAE,OAAO;IACxB,IAAI,GAAG;QAAE,OAAO;IAChB,WAAW,GAAG,IAAI,CAAC;IAEnB,SAAS,EAAE,CAAC;IACZ,sBAAsB,EAAE,CAAC;IACzB,0BAA0B,EAAE,CAAC;IAC7B,gCAAgC,EAAE,CAAC;IACnC,6BAA6B,EAAE,CAAC;IAChC,gBAAgB,EAAE,CAAC;IACnB,WAAW,EAAE,CAAC;IACd,oBAAoB,EAAE,CAAC;IACvB,sBAAsB,EAAE,CAAC;IACzB,oBAAoB,EAAE,CAAC;IACvB,gBAAgB,EAAE,CAAC;IACnB,gBAAgB,EAAE,CAAC;IACnB,UAAU,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;IAC9C,eAAe,EAAE,CAAC;IAClB,qBAAqB,EAAE,CAAC;IACxB,oBAAoB,EAAE,CAAC;IACvB,2BAA2B,EAAE,CAAC;IAE9B,WAAW,EAAE,CAAC;IACd,MAAM,EAAE,CAAC;IACT,kBAAkB,EAAE,CAAC;IACrB,IAAI,EAAE,CAAC;IAEP,0EAA0E;IAC1E,0EAA0E;IAC1E,qEAAqE;IACrE,2DAA2D;IAC3D,iBAAiB,EAAE,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"engine_init.js","sourceRoot":"","sources":["../../src/engine/engine_init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AACvF,OAAO,EAAE,gCAAgC,EAAE,MAAM,4CAA4C,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,wDAAwD,CAAC;AACvG,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU;IACtB,IAAI,WAAW;QAAE,OAAO;IACxB,IAAI,GAAG;QAAE,OAAO;IAChB,WAAW,GAAG,IAAI,CAAC;IAEnB,SAAS,EAAE,CAAC;IACZ,sBAAsB,EAAE,CAAC;IACzB,0BAA0B,EAAE,CAAC;IAC7B,gCAAgC,EAAE,CAAC;IACnC,6BAA6B,EAAE,CAAC;IAChC,gBAAgB,EAAE,CAAC;IACnB,WAAW,EAAE,CAAC;IACd,oBAAoB,EAAE,CAAC;IACvB,sBAAsB,EAAE,CAAC;IACzB,oBAAoB,EAAE,CAAC;IACvB,gBAAgB,EAAE,CAAC;IACnB,gBAAgB,EAAE,CAAC;IACnB,UAAU,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;IAC9C,eAAe,EAAE,CAAC;IAClB,qBAAqB,EAAE,CAAC;IACxB,oBAAoB,EAAE,CAAC;IACvB,2BAA2B,EAAE,CAAC;IAE9B,WAAW,EAAE,CAAC;IACd,MAAM,EAAE,CAAC;IACT,kBAAkB,EAAE,CAAC;IACrB,OAAO,EAAE,CAAC;IAEV,0EAA0E;IAC1E,0EAA0E;IAC1E,qEAAqE;IACrE,2DAA2D;IAC3D,iBAAiB,EAAE,CAAC;AACxB,CAAC"}
@@ -1,14 +1,14 @@
1
1
  import type { IContext } from "./engine_types.js";
2
2
  /** @internal */
3
- export declare function _$QyV(): boolean;
3
+ export declare function _XtEQ(): boolean;
4
4
  /** @internal */
5
- export declare function __Carg(): boolean;
5
+ export declare function _$qWUhYZU(): boolean;
6
6
  /** @internal */
7
- export declare function NVzibd(): boolean;
7
+ export declare function _BxFwJ(): boolean;
8
8
  /** @internal */
9
- export declare function bLW(): boolean;
9
+ export declare function $fwGZrGe(): boolean;
10
10
  /** @internal */
11
- export declare function $bxGE(cb: (result: boolean) => void): void;
11
+ export declare function $BWnhWzrW(cb: (result: boolean) => void): void;
12
12
  export declare namespace Telemetry {
13
13
  export function init(): void;
14
14
  export function isAllowed(context: IContext | null | undefined): boolean;
@@ -27,5 +27,5 @@ export declare namespace Telemetry {
27
27
  export function sendError(context: IContext, errorName: string, error: ErrorData | ErrorEvent | Error): Promise<void | Response>;
28
28
  export {};
29
29
  }
30
- export declare function $cLf(): void;
31
- export declare let _MHgSj: Promise<void> | undefined;
30
+ export declare function $lySygz(): void;
31
+ export declare let ICD: Promise<void> | undefined;
@@ -6,17 +6,17 @@ import { Context } from "./engine_setup.js";
6
6
  import { SSR } from "./engine_ssr.js";
7
7
  import { getParam } from "./engine_utils.js";
8
8
  const debug = getParam("__debuglic__");
9
- const _$zbtJJVy = [];
9
+ const _jmbVzxw = [];
10
10
  // DO NOT EDIT MANUALLY
11
- let miOmwPp = "";
11
+ let $rJboqN = "";
12
12
  // eslint-disable-next-line prefer-const
13
- let _$ALiqbpo = "";
13
+ let _$RRhFut = "";
14
14
  if (debug) {
15
- console.log("License Type: " + miOmwPp);
16
- if (_$ALiqbpo) {
17
- console.log("License JWT: " + _$ALiqbpo);
15
+ console.log("License Type: " + $rJboqN);
16
+ if (_$RRhFut) {
17
+ console.log("License JWT: " + _$RRhFut);
18
18
  try {
19
- const payload = JSON.parse(atob(_$ALiqbpo.split(".")[1].replace(/-/g, '+').replace(/_/g, '/')));
19
+ const payload = JSON.parse(atob(_$RRhFut.split(".")[1].replace(/-/g, '+').replace(/_/g, '/')));
20
20
  console.log("License JWT payload:", payload);
21
21
  }
22
22
  catch {
@@ -28,8 +28,8 @@ if (debug) {
28
28
  }
29
29
  }
30
30
  /** @internal */
31
- export function _$QyV() {
32
- switch (miOmwPp) {
31
+ export function _XtEQ() {
32
+ switch ($rJboqN) {
33
33
  case "pro":
34
34
  case "enterprise":
35
35
  return true;
@@ -38,33 +38,33 @@ export function _$QyV() {
38
38
  return false;
39
39
  }
40
40
  /** @internal */
41
- export function __Carg() {
42
- switch (miOmwPp) {
41
+ export function _$qWUhYZU() {
42
+ switch ($rJboqN) {
43
43
  case "indie":
44
44
  return true;
45
45
  }
46
46
  return false;
47
47
  }
48
48
  /** @internal */
49
- export function NVzibd() {
50
- switch (miOmwPp) {
49
+ export function _BxFwJ() {
50
+ switch ($rJboqN) {
51
51
  case "edu":
52
52
  return true;
53
53
  }
54
54
  return false;
55
55
  }
56
56
  /** @internal */
57
- export function bLW() {
58
- return _$QyV() || __Carg() || NVzibd();
57
+ export function $fwGZrGe() {
58
+ return _XtEQ() || _$qWUhYZU() || _BxFwJ();
59
59
  }
60
60
  /** @internal */
61
- export function $bxGE(cb) {
62
- if (_$QyV() || __Carg() || NVzibd())
61
+ export function $BWnhWzrW(cb) {
62
+ if (_XtEQ() || _$qWUhYZU() || _BxFwJ())
63
63
  return cb(true);
64
- _$zbtJJVy.push(cb);
64
+ _jmbVzxw.push(cb);
65
65
  }
66
- function __JogRhlxZ(result) {
67
- for (const cb of _$zbtJJVy) {
66
+ function $bjsviJ(result) {
67
+ for (const cb of _jmbVzxw) {
68
68
  try {
69
69
  cb(result);
70
70
  }
@@ -76,7 +76,7 @@ function __JogRhlxZ(result) {
76
76
  // #region JWT
77
77
  // ECDSA P-256 public key for verifying license JWTs (verification-only, safe to ship)
78
78
  /* eslint-disable no-secrets/no-secrets -- public key, not a secret */
79
- const CcFRcciC = {
79
+ const _$cibPFcX = {
80
80
  kty: "EC",
81
81
  crv: "P-256",
82
82
  x: "A34nyKMjhQYVgzeE4tyLUYdx34TAKogDa7v7PRaO9Lg",
@@ -98,7 +98,7 @@ function base64urlDecode(str) {
98
98
  * Verify a JWT license token and return the `type` claim if valid.
99
99
  * Returns null if the JWT is missing, malformed, or has an invalid signature.
100
100
  */
101
- async function ZhJ(jwt) {
101
+ async function $JcYsyq(jwt) {
102
102
  if (!jwt)
103
103
  return null;
104
104
  try {
@@ -106,7 +106,7 @@ async function ZhJ(jwt) {
106
106
  if (parts.length !== 3)
107
107
  return null;
108
108
  const [headerB64, payloadB64, signatureB64] = parts;
109
- const key = await crypto.subtle.importKey("jwk", CcFRcciC, { name: "ECDSA", namedCurve: "P-256" }, false, ["verify"]);
109
+ const key = await crypto.subtle.importKey("jwk", _$cibPFcX, { name: "ECDSA", namedCurve: "P-256" }, false, ["verify"]);
110
110
  const signingInput = new TextEncoder().encode(`${headerB64}.${payloadB64}`);
111
111
  const signature = base64urlDecode(signatureB64);
112
112
  const valid = await crypto.subtle.verify({ name: "ECDSA", hash: "SHA-256" }, key, signature.buffer, signingInput);
@@ -154,25 +154,25 @@ async function ZhJ(jwt) {
154
154
  }
155
155
  }
156
156
  /** Verify the injected JWT and update the license type if valid.
157
- * The engine ONLY trusts the JWT — the plain miOmwPp string is ignored. */
157
+ * The engine ONLY trusts the JWT — the plain $rJboqN string is ignored. */
158
158
  let _jwtVerificationPromise = undefined;
159
- async function $ESIFccD() {
160
- // NOTE: do NOT add an `if (!_$ALiqbpo) return` guard here.
159
+ async function _$qeTBLq() {
160
+ // NOTE: do NOT add an `if (!_$RRhFut) return` guard here.
161
161
  // esbuild (Vite dependency pre-bundling) would see the variable as constant ""
162
162
  // and tree-shake the entire JWT verification code path.
163
- const jwt = _$ALiqbpo;
163
+ const jwt = _$RRhFut;
164
164
  // Clear after reading — this reassignment also prevents esbuild from
165
165
  // constant-folding the variable (it now has multiple assignment sites).
166
- _$ALiqbpo = "";
167
- const verifiedType = await ZhJ(jwt);
166
+ _$RRhFut = "";
167
+ const verifiedType = await $JcYsyq(jwt);
168
168
  if (verifiedType) {
169
- miOmwPp = verifiedType;
169
+ $rJboqN = verifiedType;
170
170
  if (debug)
171
171
  console.log("License type set from verified JWT: " + verifiedType);
172
- __JogRhlxZ(bLW());
172
+ $bjsviJ($fwGZrGe());
173
173
  }
174
174
  else {
175
- miOmwPp = "basic";
175
+ $rJboqN = "basic";
176
176
  if (debug && jwt)
177
177
  console.warn("JWT verification failed — license reset to basic");
178
178
  }
@@ -243,7 +243,7 @@ export var Telemetry;
243
243
  return false;
244
244
  const attribute = domElement?.getAttribute("no-telemetry");
245
245
  if (attribute === "" || attribute === "true" || attribute === "1") {
246
- if (miOmwPp === "pro" || miOmwPp === "enterprise") {
246
+ if ($rJboqN === "pro" || $rJboqN === "enterprise") {
247
247
  if (debug)
248
248
  console.debug("Telemetry is disabled via no-telemetry attribute");
249
249
  return false;
@@ -340,30 +340,30 @@ export var Telemetry;
340
340
  return Promise.resolve();
341
341
  }
342
342
  })(Telemetry || (Telemetry = {}));
343
- export function $cLf() {
344
- if (miOmwPp === "")
345
- miOmwPp = "basic";
343
+ export function $lySygz() {
344
+ if ($rJboqN === "")
345
+ $rJboqN = "basic";
346
346
  // Start JWT verification — must be here (not top-level) to avoid tree-shaking
347
- _jwtVerificationPromise = $ESIFccD();
347
+ _jwtVerificationPromise = _$qeTBLq();
348
348
  Telemetry.init();
349
349
  ContextRegistry.registerCallback(ContextEvent.ContextRegistered, evt => {
350
- _JTSOMz(evt.context);
351
- __rlGEVK(evt.context);
352
- setTimeout(() => __OmIq(evt.context), 2000);
350
+ __HewJRdQ(evt.context);
351
+ __jSWGURd(evt.context);
352
+ setTimeout(() => _$wmvwSlSB(evt.context), 2000);
353
353
  });
354
354
  }
355
- export let _MHgSj = undefined;
355
+ export let ICD = undefined;
356
356
  let applicationIsForbidden = false;
357
357
  let applicationForbiddenText = "";
358
- async function $pek() {
358
+ async function _EiMi() {
359
359
  // Only perform the runtime license check once
360
- if (_MHgSj)
361
- return _MHgSj;
360
+ if (ICD)
361
+ return ICD;
362
362
  // Wait for JWT verification to complete first (if running)
363
363
  if (_jwtVerificationPromise) {
364
364
  await _jwtVerificationPromise;
365
365
  }
366
- if (miOmwPp === "basic") {
366
+ if ($rJboqN === "basic") {
367
367
  try {
368
368
  const licenseUrl = "https://needle.tools/api/v1/needle-engine/check?location=" + encodeURIComponent(window.location.href) + "&version=" + VERSION + "&generator=" + encodeURIComponent(GENERATOR);
369
369
  const res = await fetch(licenseUrl, {
@@ -377,31 +377,31 @@ async function $pek() {
377
377
  applicationIsForbidden = false;
378
378
  if (debug)
379
379
  console.log("License check succeeded");
380
- miOmwPp = "pro";
381
- __JogRhlxZ(true);
380
+ $rJboqN = "pro";
381
+ $bjsviJ(true);
382
382
  }
383
383
  else if (res?.status === 403) {
384
- __JogRhlxZ(false);
384
+ $bjsviJ(false);
385
385
  applicationIsForbidden = true;
386
386
  applicationForbiddenText = await res.text();
387
387
  }
388
388
  else {
389
- __JogRhlxZ(false);
389
+ $bjsviJ(false);
390
390
  if (debug)
391
391
  console.log("License check failed with status " + res?.status);
392
392
  }
393
393
  }
394
394
  catch (err) {
395
- __JogRhlxZ(false);
395
+ $bjsviJ(false);
396
396
  if (debug)
397
397
  console.error("License check failed", err);
398
398
  }
399
399
  }
400
400
  else if (debug)
401
- console.log("Runtime license check is skipped because license is already applied as \"" + miOmwPp + "\"");
401
+ console.log("Runtime license check is skipped because license is already applied as \"" + $rJboqN + "\"");
402
402
  }
403
- _MHgSj = $pek();
404
- async function __rlGEVK(ctx) {
403
+ ICD = _EiMi();
404
+ async function __jSWGURd(ctx) {
405
405
  function createForbiddenElement() {
406
406
  const div = document.createElement("div");
407
407
  div.className = "needle-forbidden";
@@ -469,43 +469,43 @@ async function __rlGEVK(ctx) {
469
469
  }
470
470
  }, 500);
471
471
  }
472
- async function _JTSOMz(ctx) {
472
+ async function __HewJRdQ(ctx) {
473
473
  try {
474
- if (!_$QyV() && !__Carg()) {
475
- return dtvHGhBg(ctx);
474
+ if (!_XtEQ() && !_$qWUhYZU()) {
475
+ return __ujmxoKP(ctx);
476
476
  }
477
477
  }
478
478
  catch (err) {
479
479
  if (debug)
480
480
  console.log("License check failed", err);
481
- return dtvHGhBg(ctx);
481
+ return __ujmxoKP(ctx);
482
482
  }
483
483
  if (debug)
484
- dtvHGhBg(ctx);
484
+ __ujmxoKP(ctx);
485
485
  }
486
- async function dtvHGhBg(ctx) {
486
+ async function __ujmxoKP(ctx) {
487
487
  // if the engine loads faster than the license check, we need to capture the ready event here
488
488
  let isReady = false;
489
489
  ctx.domElement.addEventListener("ready", () => isReady = true);
490
- await _MHgSj?.catch(() => { });
491
- if (_$QyV() || __Carg())
490
+ await ICD?.catch(() => { });
491
+ if (_XtEQ() || _$qWUhYZU())
492
492
  return;
493
- if (bLW() === false)
494
- __PJeisZrd();
493
+ if ($fwGZrGe() === false)
494
+ _rIQtT();
495
495
  // check if the engine is already ready (meaning has finished loading)
496
496
  if (isReady) {
497
- __CRBs(ctx);
497
+ ZzOMzy(ctx);
498
498
  }
499
499
  else {
500
500
  ctx.domElement.addEventListener("ready", () => {
501
- __CRBs(ctx);
501
+ ZzOMzy(ctx);
502
502
  });
503
503
  }
504
504
  }
505
505
  // const licenseElementIdentifier = "needle-license-element";
506
506
  // const licenseDuration = 10000;
507
507
  // const licenseDelay = 1200;
508
- function __CRBs(ctx) {
508
+ function ZzOMzy(ctx) {
509
509
  const style = `
510
510
  position: relative;
511
511
  display: block;
@@ -517,7 +517,7 @@ function __CRBs(ctx) {
517
517
  padding: 10px;
518
518
  padding-left: 30px;
519
519
  `;
520
- if (miOmwPp === "edu") {
520
+ if ($rJboqN === "edu") {
521
521
  if (navigator.webdriver) {
522
522
  console.log("This project is supported by Needle for Education – https://needle.tools");
523
523
  }
@@ -571,7 +571,7 @@ function __CRBs(ctx) {
571
571
  expectedBannerStyle = banner.style.cssText;
572
572
  }
573
573
  }, 1000);
574
- if (NVzibd()) {
574
+ if (_BxFwJ()) {
575
575
  const removeDelay = 20_000;
576
576
  setTimeout(() => {
577
577
  clearInterval(interval);
@@ -580,14 +580,14 @@ function __CRBs(ctx) {
580
580
  const intervalInMinutes = 5;
581
581
  setTimeout(() => {
582
582
  if (ctx.domElement.parentNode)
583
- __CRBs(ctx);
583
+ ZzOMzy(ctx);
584
584
  }, 1000 * 60 * intervalInMinutes);
585
585
  }, removeDelay);
586
586
  }
587
587
  }
588
588
  const base64Logo = "data:image/webp;base64,UklGRrABAABXRUJQVlA4WAoAAAAQAAAAHwAAHwAAQUxQSKEAAAARN6CmbSM4WR7vdARON11EBDq3fLiNbVtVzpMCPlKAEzsx0Y/x+Ovuv4dn0EFE/ydAvz6YggXzgh5sVgXM/zOC/4sii7qgGvB5N7hmuQYwkvazWAu1JPW41FXSHq6pnaQWvqYH18Fc0j1hO/BFTtIeSBlJi5w6qIIO7IOrwhFsB2Yxukif0FTRLpXswHR8MxbslKe9VZsn/Ub5C7YFOpqSTABWUDgg6AAAAFAGAJ0BKiAAIAA+7VyoTqmkpCI3+qgBMB2JbACdMt69DwMIQBLhkTO6XwY00UEDK6cNIDnuNibPf0EgAP7Y1myuiQHLDsF/0h5unrGh6WAbv7aegg2ZMd3uRKfT/3SJztcaujYfTvMXspfCTmYcoO6a+vhC3ss4M8uM58t4siiu59I4aOl59e9Sr6xoxYlHf2v+NnBNpJYeJf8jABQAId/PXuBkLEFkiCucgSGEcfhvajql/j3reCGl0M5/9gQWy7ayNPs+wlvIxFnNfSlfuND4CZOCyxOHhRqOmHN4ULHo3tCSrUNvgAA=";
589
589
  let lastLogTime = 0;
590
- async function __PJeisZrd(_logo) {
590
+ async function _rIQtT(_logo) {
591
591
  const now = Date.now();
592
592
  if (now - lastLogTime < 2000)
593
593
  return;
@@ -619,7 +619,7 @@ async function __PJeisZrd(_logo) {
619
619
  console.log("%c " + licenseText, style);
620
620
  }
621
621
  }
622
- async function __OmIq(context) {
622
+ async function _$wmvwSlSB(context) {
623
623
  // We can't send beacons from cross-origin isolated pages
624
624
  if (window.crossOriginIsolated)
625
625
  return;
@@ -633,7 +633,7 @@ async function __OmIq(context) {
633
633
  if (analyticsUrl) {
634
634
  // current url without query parameters
635
635
  const currentUrl = window.location.href.split("?")[0];
636
- const license = miOmwPp;
636
+ const license = $rJboqN;
637
637
  const beaconData = {
638
638
  license,
639
639
  url: currentUrl,