@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.
- package/CHANGELOG.md +17 -0
- package/components.needle.json +1 -1
- package/dist/{materialx-CE2sUv2B.umd.cjs → materialx-B47Bz-xs.umd.cjs} +1 -1
- package/dist/{materialx-u1EqYrhu.min.js → materialx-B85WjP7E.min.js} +1 -1
- package/dist/{materialx-vyB2Zbt4.js → materialx-jkHmVPez.js} +1 -1
- package/dist/{needle-engine.bundle-3LOy9tj8.js → needle-engine.bundle-BWkDSRyF.js} +6248 -6001
- package/dist/{needle-engine.bundle-BuI2pjv1.min.js → needle-engine.bundle-BvgS8xMP.min.js} +171 -171
- package/dist/{needle-engine.bundle-DQy9vQdJ.umd.cjs → needle-engine.bundle-CdVr_iIe.umd.cjs} +142 -142
- package/dist/needle-engine.d.ts +359 -46
- package/dist/needle-engine.js +618 -606
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/dist/{vendor-ButPLzor.umd.cjs → vendor-1UvpPPSB.umd.cjs} +2 -2
- package/dist/{vendor-DqZC4Is7.min.js → vendor-BQ2Vuntm.min.js} +4 -4
- package/dist/{vendor-DkWSNjMV.js → vendor-BslSKZPo.js} +113 -106
- package/lib/engine/api.d.ts +1 -1
- package/lib/engine/api.js +1 -1
- package/lib/engine/api.js.map +1 -1
- package/lib/engine/engine_audio.d.ts +30 -1
- package/lib/engine/engine_audio.js +57 -13
- package/lib/engine/engine_audio.js.map +1 -1
- package/lib/engine/engine_init.js +2 -2
- package/lib/engine/engine_init.js.map +1 -1
- package/lib/engine/engine_license.d.ts +7 -7
- package/lib/engine/engine_license.js +72 -72
- package/lib/engine/engine_license.js.map +1 -1
- package/lib/engine/engine_math.d.ts +1 -1
- package/lib/engine/engine_math.js +10 -4
- package/lib/engine/engine_math.js.map +1 -1
- package/lib/engine/engine_networking_blob.js +3 -3
- package/lib/engine/engine_networking_blob.js.map +1 -1
- package/lib/engine/engine_scenedata.js +7 -0
- package/lib/engine/engine_scenedata.js.map +1 -1
- package/lib/engine/engine_serialization_core.js +7 -2
- package/lib/engine/engine_serialization_core.js.map +1 -1
- package/lib/engine/engine_time_utils.d.ts +10 -6
- package/lib/engine/engine_time_utils.js +10 -6
- package/lib/engine/engine_time_utils.js.map +1 -1
- package/lib/engine/engine_utils_qrcode.js +2 -2
- package/lib/engine/engine_utils_qrcode.js.map +1 -1
- package/lib/engine/webcomponents/needle menu/needle-menu-spatial.js +2 -2
- package/lib/engine/webcomponents/needle menu/needle-menu.js +5 -5
- package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
- package/lib/engine/webcomponents/needle-engine.js +2 -2
- package/lib/engine/webcomponents/needle-engine.js.map +1 -1
- package/lib/engine/webcomponents/needle-engine.loading.js +2 -2
- package/lib/engine/webcomponents/needle-engine.loading.js.map +1 -1
- package/lib/engine/xr/TempXRContext.js +2 -2
- package/lib/engine/xr/TempXRContext.js.map +1 -1
- package/lib/engine-components/AudioSource.d.ts +46 -2
- package/lib/engine-components/AudioSource.js +268 -60
- package/lib/engine-components/AudioSource.js.map +1 -1
- package/lib/engine-components/Component.js +2 -1
- package/lib/engine-components/Component.js.map +1 -1
- package/lib/engine-components/DragControls.js +2 -2
- package/lib/engine-components/DragControls.js.map +1 -1
- package/lib/engine-components/DragControlsConstraints.d.ts +0 -15
- package/lib/engine-components/DragControlsConstraints.js +14 -8
- package/lib/engine-components/DragControlsConstraints.js.map +1 -1
- package/lib/engine-components/EventList.js +1 -1
- package/lib/engine-components/EventList.js.map +1 -1
- package/lib/engine-components/SceneSwitcher.d.ts +2 -0
- package/lib/engine-components/SceneSwitcher.js +43 -16
- package/lib/engine-components/SceneSwitcher.js.map +1 -1
- package/lib/engine-components/SeeThrough.d.ts +39 -0
- package/lib/engine-components/SeeThrough.js +69 -1
- package/lib/engine-components/SeeThrough.js.map +1 -1
- package/lib/engine-components/api.d.ts +1 -0
- package/lib/engine-components/api.js +1 -0
- package/lib/engine-components/api.js.map +1 -1
- package/lib/engine-components/codegen/components.d.ts +10 -0
- package/lib/engine-components/codegen/components.js +10 -0
- package/lib/engine-components/codegen/components.js.map +1 -1
- package/lib/engine-components/export/usdz/USDZExporter.js +4 -4
- package/lib/engine-components/timeline/PlayableDirector.js +1 -1
- package/lib/engine-components/timeline/PlayableDirector.js.map +1 -1
- package/lib/engine-components/web/ScrollFollow.d.ts +33 -0
- package/lib/engine-components/web/ScrollFollow.js +164 -22
- package/lib/engine-components/web/ScrollFollow.js.map +1 -1
- package/lib/needle-app.d.ts +18 -0
- package/lib/needle-app.js +19 -0
- package/lib/needle-app.js.map +1 -0
- package/package.json +3 -2
- package/plugins/common/license.js +25 -4
- package/plugins/common/needle-engine.js +5 -2
- package/plugins/types/userconfig.d.ts +22 -0
- package/plugins/vite/dts-generator.d.ts +24 -0
- package/plugins/vite/dts-generator.js +40 -7
- package/plugins/vite/index.d.ts +2 -0
- package/plugins/vite/index.js +17 -0
- package/plugins/vite/license.js +4 -4
- package/plugins/vite/needle-app.js +78 -5
- package/plugins/vite/remote.d.ts +28 -0
- package/plugins/vite/remote.js +124 -0
- package/src/engine/api.ts +1 -1
- package/src/engine/engine_audio.ts +68 -15
- package/src/engine/engine_gameobject.ts +1 -1
- package/src/engine/engine_init.ts +2 -2
- package/src/engine/engine_license.ts +69 -69
- package/src/engine/engine_math.ts +11 -4
- package/src/engine/engine_networking_blob.ts +3 -3
- package/src/engine/engine_scenedata.ts +7 -2
- package/src/engine/engine_serialization_core.ts +7 -2
- package/src/engine/engine_time_utils.ts +10 -6
- package/src/engine/engine_utils_qrcode.ts +2 -2
- package/src/engine/webcomponents/needle menu/needle-menu-spatial.ts +2 -2
- package/src/engine/webcomponents/needle menu/needle-menu.ts +5 -5
- package/src/engine/webcomponents/needle-engine.loading.ts +6 -6
- package/src/engine/webcomponents/needle-engine.ts +2 -2
- package/src/engine/xr/TempXRContext.ts +2 -2
- package/src/engine-components/AudioSource.ts +256 -55
- package/src/engine-components/Component.ts +2 -1
- package/src/engine-components/DragControls.ts +3 -2
- package/src/engine-components/DragControlsConstraints.ts +16 -8
- package/src/engine-components/EventList.ts +1 -1
- package/src/engine-components/SceneSwitcher.ts +37 -15
- package/src/engine-components/SeeThrough.ts +75 -1
- package/src/engine-components/api.ts +1 -0
- package/src/engine-components/codegen/components.ts +10 -0
- package/src/engine-components/export/usdz/USDZExporter.ts +4 -4
- package/src/engine-components/timeline/PlayableDirector.ts +1 -1
- package/src/engine-components/web/ScrollFollow.ts +168 -22
|
@@ -4,7 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import {
|
|
7
|
+
import { PositionalAudio } from "three";
|
|
8
8
|
import { PositionalAudioHelper } from 'three/examples/jsm/helpers/PositionalAudioHelper.js';
|
|
9
9
|
import { isDevEnvironment } from "../engine/debug/index.js";
|
|
10
10
|
import { Application, ApplicationEvents } from "../engine/engine_application.js";
|
|
@@ -124,7 +124,14 @@ export class AudioSource extends Behaviour {
|
|
|
124
124
|
*
|
|
125
125
|
* @returns True if the audio is playing, false otherwise
|
|
126
126
|
*/
|
|
127
|
-
get isPlaying() {
|
|
127
|
+
get isPlaying() {
|
|
128
|
+
// For the media-element path (string clips and MediaStreams) three.js does NOT maintain
|
|
129
|
+
// sound.isPlaying (hasPlaybackControl is false once a media/stream source is set), so the
|
|
130
|
+
// <audio> element is the source of truth.
|
|
131
|
+
if (this._audioElement)
|
|
132
|
+
return !this._audioElement.paused && !this._audioElement.ended;
|
|
133
|
+
return this.sound?.isPlaying ?? false;
|
|
134
|
+
}
|
|
128
135
|
/**
|
|
129
136
|
* The total duration of the currently loaded audio clip in seconds.
|
|
130
137
|
*
|
|
@@ -132,11 +139,14 @@ export class AudioSource extends Behaviour {
|
|
|
132
139
|
* @remarks For MediaStream clips, duration is not directly available and will return undefined. If the audio clip has not started loading or is still loading, duration may also be undefined until the audio buffer is ready.
|
|
133
140
|
*/
|
|
134
141
|
get duration() {
|
|
135
|
-
|
|
136
|
-
|
|
142
|
+
// Media-element path is the primary source of truth for string clips.
|
|
143
|
+
// (NaN/Infinity for MediaStream or before metadata is loaded → treated as "unknown".)
|
|
144
|
+
const elDuration = this._usesMediaElementSource ? this._audioElement?.duration : undefined;
|
|
145
|
+
if (elDuration && isFinite(elDuration)) {
|
|
146
|
+
return elDuration;
|
|
137
147
|
}
|
|
138
|
-
else if (this.
|
|
139
|
-
return this.
|
|
148
|
+
else if (this.sound?.buffer?.duration) {
|
|
149
|
+
return this.sound.buffer.duration;
|
|
140
150
|
}
|
|
141
151
|
else if (this._loadedClip instanceof MediaStream) {
|
|
142
152
|
// MediaStream duration is not directly available; return undefined or estimate if possible
|
|
@@ -150,14 +160,14 @@ export class AudioSource extends Behaviour {
|
|
|
150
160
|
*/
|
|
151
161
|
get time01() {
|
|
152
162
|
const duration = this.duration;
|
|
153
|
-
if (duration
|
|
154
|
-
return this.
|
|
163
|
+
if (duration) {
|
|
164
|
+
return this.time / duration;
|
|
155
165
|
}
|
|
156
166
|
return 0;
|
|
157
167
|
}
|
|
158
168
|
set time01(val) {
|
|
159
169
|
const duration = this.duration;
|
|
160
|
-
if (duration
|
|
170
|
+
if (duration) {
|
|
161
171
|
this.time = val * duration;
|
|
162
172
|
}
|
|
163
173
|
}
|
|
@@ -165,8 +175,18 @@ export class AudioSource extends Behaviour {
|
|
|
165
175
|
* The current playback position in seconds.
|
|
166
176
|
* Can be set to seek to a specific time in the audio.
|
|
167
177
|
*/
|
|
168
|
-
get time() {
|
|
178
|
+
get time() {
|
|
179
|
+
// Media-element path: the element's currentTime is authoritative.
|
|
180
|
+
if (this._usesMediaElementSource && this._audioElement)
|
|
181
|
+
return this._audioElement.currentTime;
|
|
182
|
+
return this.sound?.source ? (this.sound.source?.context.currentTime - this._lastContextTime + this.sound.offset) : 0;
|
|
183
|
+
}
|
|
169
184
|
set time(val) {
|
|
185
|
+
// Media-element path: seek directly on the element (sound.offset is not used for media nodes).
|
|
186
|
+
if (this._usesMediaElementSource && this._audioElement) {
|
|
187
|
+
this._audioElement.currentTime = val;
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
170
190
|
if (this.sound) {
|
|
171
191
|
if (val === this.sound.offset)
|
|
172
192
|
return;
|
|
@@ -183,13 +203,21 @@ export class AudioSource extends Behaviour {
|
|
|
183
203
|
* @default false
|
|
184
204
|
*/
|
|
185
205
|
get loop() {
|
|
206
|
+
// Media-element path: the element holds the authoritative loop flag (sound.getLoop()
|
|
207
|
+
// warns and returns false once hasPlaybackControl is false).
|
|
208
|
+
if (this._usesMediaElementSource && this._audioElement) {
|
|
209
|
+
this._loop = this._audioElement.loop;
|
|
210
|
+
return this._loop;
|
|
211
|
+
}
|
|
186
212
|
if (this.sound)
|
|
187
213
|
this._loop = this.sound.getLoop();
|
|
188
214
|
return this._loop;
|
|
189
215
|
}
|
|
190
216
|
set loop(val) {
|
|
191
217
|
this._loop = val;
|
|
192
|
-
if (this.
|
|
218
|
+
if (this._usesMediaElementSource && this._audioElement)
|
|
219
|
+
this._audioElement.loop = val;
|
|
220
|
+
else if (this.sound)
|
|
193
221
|
this.sound.setLoop(val);
|
|
194
222
|
}
|
|
195
223
|
/**
|
|
@@ -258,10 +286,16 @@ export class AudioSource extends Behaviour {
|
|
|
258
286
|
* @default 1
|
|
259
287
|
*/
|
|
260
288
|
set pitch(val) {
|
|
261
|
-
|
|
289
|
+
// Media-element path: playbackRate on the element (sound.setPlaybackRate warns and is a
|
|
290
|
+
// no-op once hasPlaybackControl is false).
|
|
291
|
+
if (this._usesMediaElementSource && this._audioElement)
|
|
292
|
+
this._audioElement.playbackRate = val;
|
|
293
|
+
else if (this.sound)
|
|
262
294
|
this.sound.setPlaybackRate(val);
|
|
263
295
|
}
|
|
264
296
|
get pitch() {
|
|
297
|
+
if (this._usesMediaElementSource && this._audioElement)
|
|
298
|
+
return this._audioElement.playbackRate;
|
|
265
299
|
return this.sound ? this.sound.getPlaybackRate() : 1;
|
|
266
300
|
}
|
|
267
301
|
/**
|
|
@@ -274,13 +308,20 @@ export class AudioSource extends Behaviour {
|
|
|
274
308
|
sound = null;
|
|
275
309
|
helper = null;
|
|
276
310
|
wasPlaying = false;
|
|
277
|
-
audioLoader = null;
|
|
278
311
|
shouldPlay = false;
|
|
279
312
|
// set this from audio context time, used to set clip offset when setting "time" property
|
|
280
313
|
// there is maybe a better way to set a audio clip current time?!
|
|
281
|
-
_lastClipStartedLoading = null;
|
|
282
314
|
_loadedClip = null;
|
|
283
315
|
_audioElement = null;
|
|
316
|
+
/**
|
|
317
|
+
* True when {@link _audioElement} is a file-URL element routed through
|
|
318
|
+
* `sound.setMediaElementSource()` (the iOS-survivable string-clip path). For this path ALL
|
|
319
|
+
* playback control (play/pause/stop/loop/pitch/time/isPlaying) goes through the element,
|
|
320
|
+
* because three.js sets `hasPlaybackControl = false` once a media source is attached.
|
|
321
|
+
* It is `false` for the distinct MediaStream path (which uses an element with `srcObject`
|
|
322
|
+
* plus `setMediaStreamSource()` and is controlled differently).
|
|
323
|
+
*/
|
|
324
|
+
_usesMediaElementSource = false;
|
|
284
325
|
// Spatial blend dual-path audio nodes
|
|
285
326
|
_entryNode = null;
|
|
286
327
|
_spatialGain = null;
|
|
@@ -323,18 +364,53 @@ export class AudioSource extends Behaviour {
|
|
|
323
364
|
get audioContext() {
|
|
324
365
|
return this.sound?.context;
|
|
325
366
|
}
|
|
367
|
+
/**
|
|
368
|
+
* Resumes the shared AudioContext if it is currently suspended/interrupted and the
|
|
369
|
+
* page is visible. Uses the same policy as the global resume handler so this never
|
|
370
|
+
* triggers the iOS `InvalidStateError: Failed to start the audio device` (which
|
|
371
|
+
* happens when resuming while the page is hidden). No-op when the context is already
|
|
372
|
+
* running or when resuming is not currently allowed.
|
|
373
|
+
*/
|
|
374
|
+
ensureContextResumed() {
|
|
375
|
+
const ctx = this.audioContext;
|
|
376
|
+
if (!ctx)
|
|
377
|
+
return;
|
|
378
|
+
const visibility = typeof document !== "undefined" ? document.visibilityState : "visible";
|
|
379
|
+
// Only skip while hidden — resuming a hidden context throws iOS InvalidStateError.
|
|
380
|
+
if (visibility !== "visible")
|
|
381
|
+
return;
|
|
382
|
+
// Resume even when ctx.state already reports "running". On iOS an auto-resume that
|
|
383
|
+
// happened OUTSIDE a user gesture (e.g. our visibilitychange retry) can leave the
|
|
384
|
+
// context reporting "running" while the audio HARDWARE stays off ("zombie" context).
|
|
385
|
+
// play() is user-initiated, so this resume() runs inside the gesture and re-enables
|
|
386
|
+
// actual output. It is a harmless no-op on an already-healthy context.
|
|
387
|
+
// (The global handler in engine_audio.ts still uses shouldResumeAudioContext, because
|
|
388
|
+
// it fires on timers/events with no gesture and must not spam resume on a running ctx.)
|
|
389
|
+
ctx.resume().catch(e => { if (debug)
|
|
390
|
+
console.warn("[AudioSource] Failed to resume AudioContext:", e); });
|
|
391
|
+
}
|
|
326
392
|
/** @internal */
|
|
327
393
|
awake() {
|
|
328
394
|
if (debug)
|
|
329
395
|
console.log("[AudioSource]", this);
|
|
330
|
-
this.audioLoader = new AudioLoader();
|
|
331
396
|
if (this.playOnAwake)
|
|
332
397
|
this.shouldPlay = true;
|
|
333
398
|
if (this.preload) {
|
|
334
399
|
if (typeof this.clip === "string" && this.clip.length > 0) {
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
400
|
+
// Preload = create the <audio> element and wire it into the Web Audio graph, but do
|
|
401
|
+
// NOT play. Wiring needs the PositionalAudio (Sound), which in turn needs an
|
|
402
|
+
// AudioListener that only exists after a user gesture — so defer when not ready.
|
|
403
|
+
if (this.Sound) {
|
|
404
|
+
this.createAudioFromElement();
|
|
405
|
+
}
|
|
406
|
+
else {
|
|
407
|
+
AudioSource.registerWaitForAllowAudio(() => {
|
|
408
|
+
if (this.destroyed || this.enabled === false)
|
|
409
|
+
return;
|
|
410
|
+
if (typeof this.clip === "string" && this.clip.length > 0)
|
|
411
|
+
this.createAudioFromElement();
|
|
412
|
+
});
|
|
413
|
+
}
|
|
338
414
|
}
|
|
339
415
|
}
|
|
340
416
|
}
|
|
@@ -364,16 +440,24 @@ export class AudioSource extends Behaviour {
|
|
|
364
440
|
switch (document.visibilityState) {
|
|
365
441
|
case "hidden":
|
|
366
442
|
if (this.playInBackground === false || DeviceUtilities.isMobileDevice()) {
|
|
367
|
-
|
|
368
|
-
if (
|
|
443
|
+
const wasPlaying = this.isPlaying;
|
|
444
|
+
if (wasPlaying) {
|
|
369
445
|
this.pause();
|
|
370
446
|
}
|
|
447
|
+
// pause() clears wasPlaying so a *user-initiated* pause is not auto-resumed on
|
|
448
|
+
// the next foreground. This pause is automatic (page hidden / device locked), so
|
|
449
|
+
// re-assert the resume intent AFTER pause() — otherwise we never resume on unlock.
|
|
450
|
+
this.wasPlaying = wasPlaying;
|
|
371
451
|
}
|
|
372
452
|
break;
|
|
373
453
|
case "visible":
|
|
374
454
|
if (debug)
|
|
375
455
|
console.log("visible", this.enabled, this.playOnAwake, !this.isPlaying, AudioSource.userInteractionRegistered, this.wasPlaying);
|
|
376
|
-
|
|
456
|
+
// Resume anything that was actively playing when the page was hidden — not
|
|
457
|
+
// just playOnAwake sources. `wasPlaying` is the correct signal: it is only
|
|
458
|
+
// set when this source was playing at hide time, so script-started clips
|
|
459
|
+
// resume too (previously they stayed silent until a manual play()).
|
|
460
|
+
if (this.enabled && !this.isPlaying && AudioSource.userInteractionRegistered && this.wasPlaying) {
|
|
377
461
|
this.play();
|
|
378
462
|
}
|
|
379
463
|
break;
|
|
@@ -385,35 +469,103 @@ export class AudioSource extends Behaviour {
|
|
|
385
469
|
else
|
|
386
470
|
this.sound?.setVolume(this.volume);
|
|
387
471
|
};
|
|
388
|
-
|
|
472
|
+
/**
|
|
473
|
+
* Sets up playback of a string (file URL) clip through an `HTMLAudioElement` routed into the
|
|
474
|
+
* Web Audio graph via `sound.setMediaElementSource()`.
|
|
475
|
+
*
|
|
476
|
+
* Why a media element instead of a decoded `AudioBuffer`: on iOS Safari an
|
|
477
|
+
* `AudioBufferSourceNode` has its output torn down after a device lock / audio-session
|
|
478
|
+
* interruption and cannot be reliably revived. A `MediaElementAudioSourceNode` survives the
|
|
479
|
+
* lock because the playing `<audio>` element keeps iOS's media session alive, so the shared
|
|
480
|
+
* AudioContext is never torn down and resumes cleanly. This is the same approach three.js's own
|
|
481
|
+
* `webaudio_orientation` example uses.
|
|
482
|
+
*
|
|
483
|
+
* This does NOT start playback — it only creates/wires the element so a later `.play()` (driven
|
|
484
|
+
* by a user gesture) is cheap.
|
|
485
|
+
*/
|
|
486
|
+
createAudioFromElement() {
|
|
487
|
+
if (this.destroyed) {
|
|
488
|
+
if (debug)
|
|
489
|
+
console.warn("AudioSource destroyed, not creating audio", this.name);
|
|
490
|
+
return;
|
|
491
|
+
}
|
|
492
|
+
const sound = this.Sound;
|
|
493
|
+
if (!sound) {
|
|
494
|
+
if (debug)
|
|
495
|
+
console.warn("Failed getting sound?", this.name);
|
|
496
|
+
return;
|
|
497
|
+
}
|
|
498
|
+
// If the element is already wired for the CURRENT clip, there is nothing to (re)create —
|
|
499
|
+
// re-running setMediaElementSource on the same element throws InvalidStateError
|
|
500
|
+
// ("already connected to a MediaElementSourceNode"), so bail out early.
|
|
501
|
+
if (this._audioElement && this._usesMediaElementSource && this._loadedClip === this.clip) {
|
|
502
|
+
// keep volume/mute in sync, then we're done
|
|
503
|
+
if (this.context.application.muted)
|
|
504
|
+
sound.setVolume(0);
|
|
505
|
+
else
|
|
506
|
+
sound.setVolume(this.volume);
|
|
507
|
+
return;
|
|
508
|
+
}
|
|
509
|
+
// (re)create the element when the clip changed since the element was wired.
|
|
510
|
+
if (this._audioElement && this._loadedClip !== this.clip) {
|
|
511
|
+
this._audioElement.pause();
|
|
512
|
+
this._audioElement = null;
|
|
513
|
+
this._usesMediaElementSource = false;
|
|
514
|
+
}
|
|
515
|
+
const created = !this._audioElement;
|
|
516
|
+
if (created) {
|
|
517
|
+
const el = new Audio();
|
|
518
|
+
el.crossOrigin = "anonymous";
|
|
519
|
+
el.preload = "auto";
|
|
520
|
+
el.src = this.clip;
|
|
521
|
+
this._audioElement = el;
|
|
522
|
+
}
|
|
523
|
+
this._audioElement.loop = this._loop;
|
|
524
|
+
// IMPORTANT: build the spatial-blend graph FIRST so getOutput() returns the entry node,
|
|
525
|
+
// THEN route the media element source into it. setMediaElementSource() immediately calls
|
|
526
|
+
// sound.connect() (source → getOutput()), so the entry node and the getOutput override
|
|
527
|
+
// must already exist. Order matters.
|
|
528
|
+
this.setupSpatialBlendNodes();
|
|
529
|
+
// Only connect once per element — createMediaElementSource() throws if the same
|
|
530
|
+
// HTMLMediaElement is passed to it twice.
|
|
531
|
+
if (!this._usesMediaElementSource) {
|
|
532
|
+
sound.setMediaElementSource(this._audioElement);
|
|
533
|
+
this._usesMediaElementSource = true;
|
|
534
|
+
}
|
|
535
|
+
this._loadedClip = this.clip;
|
|
536
|
+
if (this.context.application.muted)
|
|
537
|
+
sound.setVolume(0);
|
|
538
|
+
else
|
|
539
|
+
sound.setVolume(this.volume);
|
|
540
|
+
this.applySpatialDistanceSettings();
|
|
541
|
+
// Playback is started explicitly by onNewClip()/play()/onEnable — do NOT auto-play here.
|
|
542
|
+
// Registering __onAllowAudioCallback would (once the user has interacted) fire immediately
|
|
543
|
+
// and call play() a SECOND time, restarting the element → audible "clipping repeat".
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Sets up the {@link PositionalAudio} graph for a MediaStream clip (used for the MediaStream
|
|
547
|
+
* path only — string clips go through {@link createAudioFromElement}). The actual stream node
|
|
548
|
+
* is attached in {@link play} via `setMediaStreamSource`.
|
|
549
|
+
*/
|
|
550
|
+
createAudio = () => {
|
|
389
551
|
if (this.destroyed) {
|
|
390
552
|
if (debug)
|
|
391
553
|
console.warn("AudioSource destroyed, not creating audio", this.name);
|
|
392
554
|
return;
|
|
393
555
|
}
|
|
394
|
-
if (debug)
|
|
395
|
-
console.log("AudioBuffer finished loading", buffer);
|
|
396
556
|
const sound = this.Sound;
|
|
397
557
|
if (!sound) {
|
|
398
558
|
if (debug)
|
|
399
559
|
console.warn("Failed getting sound?", this.name);
|
|
400
560
|
return;
|
|
401
561
|
}
|
|
402
|
-
if (sound.isPlaying)
|
|
403
|
-
sound.stop();
|
|
404
|
-
if (buffer)
|
|
405
|
-
sound.setBuffer(buffer);
|
|
406
562
|
this._loadedClip = this.clip;
|
|
407
|
-
sound.loop = this._loop;
|
|
408
563
|
if (this.context.application.muted)
|
|
409
564
|
sound.setVolume(0);
|
|
410
565
|
else
|
|
411
566
|
sound.setVolume(this.volume);
|
|
412
|
-
sound.autoplay = this.shouldPlay && AudioSource.userInteractionRegistered;
|
|
413
567
|
this.setupSpatialBlendNodes();
|
|
414
568
|
this.applySpatialDistanceSettings();
|
|
415
|
-
if (sound.isPlaying)
|
|
416
|
-
sound.stop();
|
|
417
569
|
// make sure we only play the sound if the user has interacted with the page
|
|
418
570
|
AudioSource.registerWaitForAllowAudio(this.__onAllowAudioCallback);
|
|
419
571
|
};
|
|
@@ -528,27 +680,22 @@ export class AudioSource extends Behaviour {
|
|
|
528
680
|
if (debug)
|
|
529
681
|
console.log(clip);
|
|
530
682
|
if (clip.endsWith(".mp3") || clip.endsWith(".wav") || clip.endsWith(".ogg") || clip.endsWith(".opus") || clip.endsWith(".flac") || clip.endsWith(".aac") || clip.endsWith(".webm")) {
|
|
531
|
-
if (!this.audioLoader)
|
|
532
|
-
this.audioLoader = new AudioLoader();
|
|
533
683
|
this.shouldPlay = true;
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
684
|
+
// Route the file URL through an <audio> element (survives iOS lock — see
|
|
685
|
+
// createAudioFromElement). This creates/wires the element without playing.
|
|
686
|
+
this.createAudioFromElement();
|
|
687
|
+
// Start playback through the element (NOT this.sound — hasPlaybackControl is false
|
|
688
|
+
// for a media-element source). __onAllowAudioCallback would also play once
|
|
689
|
+
// interaction is registered; this covers the already-interacted case directly.
|
|
690
|
+
if (this.shouldPlay && AudioSource.userInteractionRegistered) {
|
|
691
|
+
this.ensureContextResumed();
|
|
692
|
+
this._hasEnded = false;
|
|
693
|
+
this._audioElement?.play().catch(e => {
|
|
694
|
+
if (debug)
|
|
695
|
+
console.warn(`[AudioSource] Failed to play audio clip "${clip}":`, e);
|
|
696
|
+
});
|
|
697
|
+
this.fadeEntryGain(1); // fade in (no-op on first play; undoes a prior pause() fade)
|
|
538
698
|
}
|
|
539
|
-
this._lastClipStartedLoading = clip;
|
|
540
|
-
if (debug)
|
|
541
|
-
console.log("load audio", clip);
|
|
542
|
-
const buffer = await this.audioLoader.loadAsync(clip).catch(e => {
|
|
543
|
-
console.error(`[AudioSource] Error loading audio clip "${clip}":`, e);
|
|
544
|
-
return null;
|
|
545
|
-
});
|
|
546
|
-
if (this.destroyed)
|
|
547
|
-
return;
|
|
548
|
-
if (this._lastClipStartedLoading === clip)
|
|
549
|
-
this._lastClipStartedLoading = null;
|
|
550
|
-
if (buffer)
|
|
551
|
-
this.createAudio(buffer);
|
|
552
699
|
}
|
|
553
700
|
else
|
|
554
701
|
console.warn("Unsupported audio clip type", clip);
|
|
@@ -579,7 +726,9 @@ export class AudioSource extends Behaviour {
|
|
|
579
726
|
}
|
|
580
727
|
// Load if the sound hasn't been created yet or if the clip changed since last load
|
|
581
728
|
let needsLoading = !this.sound || (clip && clip !== this._loadedClip);
|
|
582
|
-
|
|
729
|
+
// For string clips the <audio> element must additionally be wired (createAudioFromElement);
|
|
730
|
+
// if it isn't yet (e.g. preload was off, or the element was torn down), force a (re)load.
|
|
731
|
+
if (typeof clip === "string" && (!this._audioElement || !this._usesMediaElementSource))
|
|
583
732
|
needsLoading = true;
|
|
584
733
|
if (clip instanceof MediaStream || typeof clip === "string")
|
|
585
734
|
this.clip = clip;
|
|
@@ -592,15 +741,22 @@ export class AudioSource extends Behaviour {
|
|
|
592
741
|
if (debug)
|
|
593
742
|
console.log("[AudioSource] play", this.sound?.getVolume(), this.sound);
|
|
594
743
|
// If a different clip was passed in, needsLoading above would be true and onNewClip handles it.
|
|
595
|
-
// This guard prevents double-playing the same already-playing sound
|
|
596
|
-
if (this.sound && !this.
|
|
744
|
+
// This guard prevents double-playing the same already-playing sound.
|
|
745
|
+
if (this.sound && !this.isPlaying) {
|
|
746
|
+
// On iOS the shared context can be suspended/interrupted (device locked, app
|
|
747
|
+
// backgrounded, audio session interrupted by a call) — starting playback on it produces
|
|
748
|
+
// no sound until it is resumed. Resume it here (we are inside a user gesture) so playback
|
|
749
|
+
// does not silently depend on the global resume handler running first. See engine_audio.ts.
|
|
750
|
+
this.ensureContextResumed();
|
|
597
751
|
const muted = this.context.application.muted;
|
|
598
752
|
if (muted)
|
|
599
753
|
this.sound.setVolume(0);
|
|
600
754
|
this.gameObject?.add(this.sound);
|
|
601
755
|
if (this.clip instanceof MediaStream) {
|
|
602
|
-
//
|
|
603
|
-
//
|
|
756
|
+
// Distinct from the file-URL media-element path: a MediaStream uses
|
|
757
|
+
// setMediaStreamSource + an element holding srcObject (the element is only needed
|
|
758
|
+
// so the stream actually plays — playback is not controlled through it here).
|
|
759
|
+
this._usesMediaElementSource = false;
|
|
604
760
|
this.sound.setMediaStreamSource(this.clip);
|
|
605
761
|
if (!this._audioElement) {
|
|
606
762
|
this._audioElement = document.createElement('audio');
|
|
@@ -613,14 +769,38 @@ export class AudioSource extends Behaviour {
|
|
|
613
769
|
return true;
|
|
614
770
|
}
|
|
615
771
|
else {
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
772
|
+
// File-URL media-element path: playback control is on the element, not this.sound
|
|
773
|
+
// (hasPlaybackControl is false once setMediaElementSource was called). Volume/mute
|
|
774
|
+
// is still applied via sound.setVolume() above (the gain node still works).
|
|
775
|
+
// Resume the element from its (frozen) position, then fade the entry gain back in so
|
|
776
|
+
// the resume is click-free. No seek, no graph reconnect — both caused the stutter.
|
|
777
|
+
this._audioElement?.play().catch(e => {
|
|
778
|
+
if (debug)
|
|
779
|
+
console.warn("[AudioSource] Failed to play audio element:", e);
|
|
780
|
+
});
|
|
781
|
+
this.fadeEntryGain(1);
|
|
619
782
|
return true;
|
|
620
783
|
}
|
|
621
784
|
}
|
|
622
785
|
return false;
|
|
623
786
|
}
|
|
787
|
+
/**
|
|
788
|
+
* Smoothly ramp the spatial-graph entry-gain node to `target` (1 = audible, 0 = silent) over a
|
|
789
|
+
* few ms. A short *fade* — not a hard 0/1 gain change and not a connect/disconnect — is what
|
|
790
|
+
* avoids the click on pause/resume (an instant change or a graph (dis)connect steps the waveform
|
|
791
|
+
* → audible click). On iOS the MediaElementAudioSourceNode keeps feeding the graph after
|
|
792
|
+
* element.pause() following an interruption, so fading this gain to 0 is what actually silences a
|
|
793
|
+
* "paused" media clip; element.pause() only freezes its playback position.
|
|
794
|
+
*/
|
|
795
|
+
fadeEntryGain(target, seconds = 0.02) {
|
|
796
|
+
if (!this._entryNode || !this.sound)
|
|
797
|
+
return;
|
|
798
|
+
const ctx = this.sound.context;
|
|
799
|
+
const g = this._entryNode.gain;
|
|
800
|
+
g.cancelScheduledValues(ctx.currentTime);
|
|
801
|
+
g.setValueAtTime(g.value, ctx.currentTime);
|
|
802
|
+
g.linearRampToValueAtTime(target, ctx.currentTime + seconds);
|
|
803
|
+
}
|
|
624
804
|
/**
|
|
625
805
|
* Pauses audio playback while maintaining the current position.
|
|
626
806
|
* Use play() to resume from the paused position.
|
|
@@ -630,10 +810,24 @@ export class AudioSource extends Behaviour {
|
|
|
630
810
|
console.log("[AudioSource] pause", this);
|
|
631
811
|
this._hasEnded = true;
|
|
632
812
|
this.shouldPlay = false;
|
|
813
|
+
// A user-initiated pause must not be revived by the visibility handler on the next
|
|
814
|
+
// foreground (it replays sources whose `wasPlaying` is set).
|
|
815
|
+
this.wasPlaying = false;
|
|
816
|
+
if (this._usesMediaElementSource) {
|
|
817
|
+
// File-URL media-element path. On iOS the MediaElementAudioSourceNode keeps emitting into
|
|
818
|
+
// the Web Audio graph after element.pause() once the audio session has been interrupted
|
|
819
|
+
// (lock/unlock) — pausing the element does NOT silence it (confirmed on-device). So we
|
|
820
|
+
// fade the entry gain to 0 (click-free silence — the fade is what actually silences it),
|
|
821
|
+
// then freeze the element's position. play() fades it back in.
|
|
822
|
+
this.fadeEntryGain(0);
|
|
823
|
+
this._audioElement?.pause();
|
|
824
|
+
return;
|
|
825
|
+
}
|
|
633
826
|
if (this.sound && this.sound.isPlaying && this.sound.source) {
|
|
634
827
|
this._lastContextTime = this.sound?.context.currentTime;
|
|
635
828
|
this.sound.pause();
|
|
636
829
|
}
|
|
830
|
+
// MediaStream / legacy path: drop the stream element as before.
|
|
637
831
|
this._audioElement?.remove();
|
|
638
832
|
}
|
|
639
833
|
/**
|
|
@@ -645,12 +839,23 @@ export class AudioSource extends Behaviour {
|
|
|
645
839
|
console.log("[AudioSource] stop", this);
|
|
646
840
|
this._hasEnded = true;
|
|
647
841
|
this.shouldPlay = false;
|
|
842
|
+
this.wasPlaying = false;
|
|
843
|
+
if (this._usesMediaElementSource) {
|
|
844
|
+
// True stop: detach the source from the graph (see pause() — element.pause() alone does
|
|
845
|
+
// not silence it on iOS after an interruption), pause, and rewind to the start.
|
|
846
|
+
this.fadeEntryGain(0);
|
|
847
|
+
this._audioElement?.pause();
|
|
848
|
+
if (this._audioElement)
|
|
849
|
+
this._audioElement.currentTime = 0;
|
|
850
|
+
return;
|
|
851
|
+
}
|
|
648
852
|
if (this.sound && this.sound.source) {
|
|
649
853
|
this._lastContextTime = this.sound?.context.currentTime;
|
|
650
854
|
if (debug)
|
|
651
855
|
console.log("[AudioSource] lastContextTime", this._lastContextTime);
|
|
652
856
|
this.sound.stop();
|
|
653
857
|
}
|
|
858
|
+
// MediaStream / legacy path: drop the stream element as before.
|
|
654
859
|
this._audioElement?.remove();
|
|
655
860
|
}
|
|
656
861
|
_lastContextTime = 0;
|
|
@@ -666,7 +871,10 @@ export class AudioSource extends Behaviour {
|
|
|
666
871
|
if (this._needUpdateSpatialDistanceSettings) {
|
|
667
872
|
this.applySpatialDistanceSettings();
|
|
668
873
|
}
|
|
669
|
-
|
|
874
|
+
// Use the element-aware `isPlaying` getter, NOT `sound.isPlaying`: for a media-element
|
|
875
|
+
// source three.js leaves `sound.isPlaying` permanently false (hasPlaybackControl=false),
|
|
876
|
+
// which would otherwise fire "ended" every frame during playback.
|
|
877
|
+
if (this.sound && !this.isPlaying && this.shouldPlay && !this._hasEnded) {
|
|
670
878
|
this._hasEnded = true;
|
|
671
879
|
if (debug)
|
|
672
880
|
console.log("[AudioSource] Audio clip ended", this.clip);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioSource.js","sourceRoot":"","sources":["../../src/engine-components/AudioSource.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AudioSource.js","sourceRoot":"","sources":["../../src/engine-components/AudioSource.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AAE5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAc,MAAM,gBAAgB,CAAC;AAGvD,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;AAErC;;GAEG;AACH,MAAM,CAAN,IAAY,gBAkBX;AAlBD,WAAY,gBAAgB;IACxB;;;OAGG;IACH,qEAAe,CAAA;IAEf;;;OAGG;IACH,2DAAU,CAAA;IAEV;;;OAGG;IACH,2DAAU,CAAA;AACd,CAAC,EAlBW,gBAAgB,KAAhB,gBAAgB,QAkB3B;AAGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,OAAO,WAAY,SAAQ,SAAS;IAEtC;;;;;;OAMG;IACI,MAAM,KAAK,yBAAyB;QACvC,OAAO,WAAW,CAAC,yBAAyB,CAAC;IACjD,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,yBAAyB,CAAC,EAAY;QAChD,WAAW,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IAEH,IAAI,GAAyB,EAAE,CAAC;IAEhC;;;;OAIG;IAEH,WAAW,GAAY,KAAK,CAAC;IAE7B;;;;OAIG;IAEH,OAAO,GAAY,IAAI,CAAC;IAExB;;;;OAIG;IAEH,gBAAgB,GAAY,IAAI,CAAC;IAEjC;;;;OAIG;IACH,IAAI,SAAS;QACT,wFAAwF;QACxF,0FAA0F;QAC1F,0CAA0C;QAC1C,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QACvF,OAAO,IAAI,CAAC,KAAK,EAAE,SAAS,IAAI,KAAK,CAAC;IAC1C,CAAC;IAED;;;;;OAKG;IACH,IAAI,QAAQ;QACR,sEAAsE;QACtE,sFAAsF;QACtF,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3F,IAAI,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,OAAO,UAAU,CAAC;QACtB,CAAC;aACI,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtC,CAAC;aACI,IAAI,IAAI,CAAC,WAAW,YAAY,WAAW,EAAE,CAAC;YAC/C,2FAA2F;YAC3F,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,IAAI,MAAM;QACN,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,QAAQ,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QAChC,CAAC;QACD,OAAO,CAAC,CAAC;IACb,CAAC;IACD,IAAI,MAAM,CAAC,GAAW;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,QAAQ,CAAC;QAC/B,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,IAAI,IAAI;QACJ,kEAAkE;QAClE,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;QAC9F,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzH,CAAC;IACD,IAAI,IAAI,CAAC,GAAW;QAChB,+FAA+F;QAC/F,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrD,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,GAAG,CAAC;YACrC,OAAO;QACX,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,OAAO;YACtC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;YAClC,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YACxB,IAAI,UAAU;gBACV,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;IACL,CAAC;IAED;;;;OAIG;IAEH,IAAI,IAAI;QACJ,qFAAqF;QACrF,6DAA6D;QAC7D,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACrC,OAAO,IAAI,CAAC,KAAK,CAAC;QACtB,CAAC;QACD,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,CAAC,GAAY;QACjB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACjB,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,GAAG,CAAC;aACjF,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;IAED;;;;;OAKG;IAEH,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IACD,IAAI,YAAY,CAAC,GAAW;QACxB,IAAI,GAAG,KAAK,IAAI,CAAC,aAAa;YAAE,OAAO;QACvC,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;QACzB,IAAI,CAAC,kCAAkC,GAAG,IAAI,CAAC;IACnD,CAAC;IAED;;;OAGG;IAEH,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IACD,IAAI,WAAW,CAAC,GAAW;QACvB,IAAI,IAAI,CAAC,YAAY,KAAK,GAAG;YAAE,OAAO;QACtC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,kCAAkC,GAAG,IAAI,CAAC;IACnD,CAAC;IAED;;;OAGG;IAEH,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IACD,IAAI,WAAW,CAAC,GAAW;QACvB,IAAI,IAAI,CAAC,YAAY,KAAK,GAAG;YAAE,OAAO;QACtC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,kCAAkC,GAAG,IAAI,CAAC;IACnD,CAAC;IAEO,aAAa,GAAW,CAAC,CAAC;IAC1B,YAAY,GAAW,CAAC,CAAC;IACzB,YAAY,GAAW,GAAG,CAAC;IAEnC;;;;OAIG;IAEH,IAAI,MAAM,KAAa,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,GAAW;QAClB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACnB,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YAChD,IAAI,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC;YAC3D,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC;IACO,OAAO,GAAW,CAAC,CAAC;IAE5B;;;;;OAKG;IAEH,IAAI,KAAK,CAAC,GAAW;QACjB,wFAAwF;QACxF,2CAA2C;QAC3C,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,GAAG,CAAC;aACzF,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,KAAK;QACL,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;QAC/F,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;;;OAIG;IAEH,WAAW,GAAqB,CAAC,CAAC;IAG1B,KAAK,GAAY,KAAK,CAAC;IACvB,KAAK,GAA2B,IAAI,CAAC;IACrC,MAAM,GAAiC,IAAI,CAAC;IAC5C,UAAU,GAAG,KAAK,CAAC;IACnB,UAAU,GAAY,KAAK,CAAC;IACpC,yFAAyF;IACzF,iEAAiE;IACzD,WAAW,GAAgC,IAAI,CAAC;IAChD,aAAa,GAA4B,IAAI,CAAC;IACtD;;;;;;;OAOG;IACK,uBAAuB,GAAY,KAAK,CAAC;IAEjD,sCAAsC;IAC9B,UAAU,GAAoB,IAAI,CAAC;IACnC,YAAY,GAAoB,IAAI,CAAC;IACrC,WAAW,GAAoB,IAAI,CAAC;IAE5C;;;;;OAKG;IACH,IAAW,KAAK;QACZ,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC,yBAAyB,EAAE,CAAC;YACvD,8CAA8C;YAC9C,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,gCAAgC;mBACpF,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,wCAAwC;mBAC5F,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,iCAAiC;YAE9F,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU;gBAAE,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YAEzG,IAAI,QAAQ,EAAE,QAAQ,EAAE,CAAC;gBACrB,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACpD,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;iBACI,IAAI,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACH,IAAW,UAAU,KAAc,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAE5D;;;;OAIG;IACH,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;IAC/B,CAAC;IAED;;;;;;OAMG;IACK,oBAAoB;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;QAC9B,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,MAAM,UAAU,GAAG,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,mFAAmF;QACnF,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO;QACrC,mFAAmF;QACnF,kFAAkF;QAClF,qFAAqF;QACrF,oFAAoF;QACpF,uEAAuE;QACvE,sFAAsF;QACtF,wFAAwF;QACxF,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,8CAA8C,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7G,CAAC;IAED,gBAAgB;IAChB,KAAK;QACD,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAE9C,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAE7C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxD,oFAAoF;gBACpF,6EAA6E;gBAC7E,iFAAiF;gBACjF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACb,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAClC,CAAC;qBACI,CAAC;oBACF,WAAW,CAAC,yBAAyB,CAAC,GAAG,EAAE;wBACvC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK;4BAAE,OAAO;wBACrD,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;4BAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBAC7F,CAAC,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,QAAQ;QACJ,IAAI,IAAI,CAAC,KAAK;YACV,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEpC,IAAI,CAAC,WAAW,CAAC,yBAAyB,EAAE,CAAC;YACzC,WAAW,CAAC,yBAAyB,CAAC,GAAG,EAAE;gBACvC,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU;oBAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;QACP,CAAC;aACI,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;YAC9D,IAAI,CAAC,IAAI,EAAE,CAAC;QAChB,CAAC;QACD,UAAU,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC1E,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC5G,CAAC;IAED,gBAAgB;IAChB,SAAS;QACL,UAAU,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC7E,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC3G,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAEO,mBAAmB,GAAG,GAAG,EAAE;QAC/B,QAAQ,QAAQ,CAAC,eAAe,EAAE,CAAC;YAC/B,KAAK,QAAQ;gBACT,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,IAAI,eAAe,CAAC,cAAc,EAAE,EAAE,CAAC;oBACtE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;oBAClC,IAAI,UAAU,EAAE,CAAC;wBACb,IAAI,CAAC,KAAK,EAAE,CAAC;oBACjB,CAAC;oBACD,+EAA+E;oBAC/E,iFAAiF;oBACjF,mFAAmF;oBACnF,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;gBACjC,CAAC;gBACD,MAAM;YACV,KAAK,SAAS;gBACV,IAAI,KAAK;oBAAE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,yBAAyB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC3I,2EAA2E;gBAC3E,2EAA2E;gBAC3E,yEAAyE;gBACzE,oEAAoE;gBACpE,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC,yBAAyB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC9F,IAAI,CAAC,IAAI,EAAE,CAAC;gBAChB,CAAC;gBACD,MAAM;QACd,CAAC;IACL,CAAC,CAAA;IAEO,wBAAwB,GAAG,GAAG,EAAE;QACpC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK;YAC9B,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;;YAEzB,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC,CAAA;IAED;;;;;;;;;;;;;OAaG;IACK,sBAAsB;QAC1B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,2CAA2C,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAChF,OAAO;QACX,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,IAAI,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5D,OAAO;QACX,CAAC;QAED,yFAAyF;QACzF,gFAAgF;QAChF,wEAAwE;QACxE,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACvF,4CAA4C;YAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK;gBAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;gBAClD,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClC,OAAO;QACX,CAAC;QAED,4EAA4E;QAC5E,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACvD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACzC,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;QACpC,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC;YACvB,EAAE,CAAC,WAAW,GAAG,WAAW,CAAC;YAC7B,EAAE,CAAC,OAAO,GAAG,MAAM,CAAC;YACpB,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,IAAc,CAAC;YAC7B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,aAAc,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QAEtC,wFAAwF;QACxF,yFAAyF;QACzF,uFAAuF;QACvF,qCAAqC;QACrC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,gFAAgF;QAChF,0CAA0C;QAC1C,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAChC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAc,CAAC,CAAC;YACjD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;QAE7B,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK;YAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;YAClD,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAEpC,yFAAyF;QACzF,2FAA2F;QAC3F,qFAAqF;IACzF,CAAC;IAED;;;;OAIG;IACK,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,2CAA2C,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAChF,OAAO;QACX,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,IAAI,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5D,OAAO;QACX,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;QAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK;YAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;YAClD,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAEpC,4EAA4E;QAC5E,WAAW,CAAC,yBAAyB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACvE,CAAC,CAAA;IACO,sBAAsB,GAAG,GAAG,EAAE;QAClC,IAAI,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC,CAAA;IAED;;;;;OAKG;IACK,sBAAsB;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QAEtC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QAEpC,qEAAqE;QACrE,IAAI,CAAC;YAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC;QAE1E,+CAA+C;QAC/C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEtC,qCAAqC;QACrC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAErC,+EAA+E;QAC/E,KAAK,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,UAAoC,CAAC;QAElE,gFAAgF;QAChF,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC;QAClC,KAAK,CAAC,OAAO,GAAG;YACZ,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,IAAI,CAAC;gBAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;YACrE,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC;QAEF,sEAAsE;QACtE,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC;QACxC,KAAK,CAAC,UAAU,GAAG;YACf,IAAI,CAAC;gBAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,mCAAmC,CAAC,CAAC;YACjF,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC;QAEF,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACnC,CAAC;IAED,gFAAgF;IACxE,uBAAuB;QAC3B,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;QACzC,kEAAkE;QAClE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;IAEO,4BAA4B;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,CAAC,kCAAkC,GAAG,KAAK,CAAC;QAEhD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/D,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC1B,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAE1B,4EAA4E;QAC5E,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;YACvB,KAAK,gBAAgB,CAAC,WAAW;gBAC7B,mEAAmE;gBACnE,gFAAgF;gBAChF,yEAAyE;gBACzE,iEAAiE;gBACjE,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBAClC,KAAK,CAAC,gBAAgB,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;gBAC9D,MAAM;YACV,KAAK,gBAAgB,CAAC,MAAM;gBACxB,oFAAoF;gBACpF,8DAA8D;gBAC9D,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBACjC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM;YACV,KAAK,gBAAgB,CAAC,MAAM;gBACxB,OAAO,CAAC,IAAI,CAAC,mDAAmD,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9E,MAAM;QACd,CAAC;QAED,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;gBACvE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;aACI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACnC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,IAA2B;QAC/C,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,KAAK;gBACL,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,yEAAyE;gBACzE,2EAA2E;gBAC3E,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC9B,mFAAmF;gBACnF,2EAA2E;gBAC3E,+EAA+E;gBAC/E,IAAI,IAAI,CAAC,UAAU,IAAI,WAAW,CAAC,yBAAyB,EAAE,CAAC;oBAC3D,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC5B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;oBACvB,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;wBACjC,IAAI,KAAK;4BAAE,OAAO,CAAC,IAAI,CAAC,4CAA4C,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;oBACrF,CAAC,CAAC,CAAC;oBACH,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,6DAA6D;gBACxF,CAAC;YACL,CAAC;;gBACI,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAA;QAC1D,CAAC;aACI,CAAC;YACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CAAC,OAAyC,SAAS;QACzD,oDAAoD;QACpD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;YAClB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAErB,2CAA2C;QAC3C,qEAAqE;QACrE,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,YAAY,WAAW,CAAC,EAAE,CAAC;YACnF,iPAAiP;YACjP,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACjB,IAAI,gBAAgB,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,sEAAsE,EAAE,IAAI,GAAG,oCAAoC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACxK,CAAC;QAED,mFAAmF;QACnF,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;QACtE,4FAA4F;QAC5F,0FAA0F;QAC1F,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC;YAAE,YAAY,GAAG,IAAI,CAAC;QAC5G,IAAI,IAAI,YAAY,WAAW,IAAI,OAAO,IAAI,KAAK,QAAQ;YACvD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAErB,IAAI,YAAY,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAClF,gGAAgG;QAChG,qEAAqE;QACrE,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,6EAA6E;YAC7E,wFAAwF;YACxF,0FAA0F;YAC1F,4FAA4F;YAC5F,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC;YAC7C,IAAI,KAAK;gBAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEjC,IAAI,IAAI,CAAC,IAAI,YAAY,WAAW,EAAE,CAAC;gBAEnC,oEAAoE;gBACpE,kFAAkF;gBAClF,8EAA8E;gBAC9E,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;gBACrC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE3C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;oBACtB,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;oBACrD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;gBAC9C,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU;oBAC9B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACnE,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;gBACzC,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACpC,OAAO,IAAI,CAAC;YAEhB,CAAC;iBACI,CAAC;gBACF,kFAAkF;gBAClF,mFAAmF;gBACnF,4EAA4E;gBAC5E,qFAAqF;gBACrF,mFAAmF;gBACnF,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;oBACjC,IAAI,KAAK;wBAAE,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,CAAC,CAAC,CAAC;gBAC9E,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBACtB,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;;;;OAOG;IACK,aAAa,CAAC,MAAc,EAAE,OAAO,GAAG,IAAI;QAChD,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC/B,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3C,CAAC,CAAC,uBAAuB,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,CAAC;IACjE,CAAC;IAED;;;OAGG;IACH,KAAK;QACD,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,mFAAmF;QACnF,6DAA6D;QAC7D,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,0FAA0F;YAC1F,wFAAwF;YACxF,uFAAuF;YACvF,yFAAyF;YACzF,+DAA+D;YAC/D,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC;YAC5B,OAAO;QACX,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC1D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC;YACxD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;QACD,gEAAgE;QAChE,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,IAAI;QACA,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,wFAAwF;YACxF,gFAAgF;YAChF,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,aAAa;gBAAE,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC;YAC3D,OAAO;QACX,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC;YACxD,IAAI,KAAK;gBACL,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACxE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;QACD,gEAAgE;QAChE,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IACjC,CAAC;IAEO,gBAAgB,GAAW,CAAC,CAAC;IAE7B,SAAS,GAAY,IAAI,CAAC;IAC1B,kCAAkC,GAAY,KAAK,CAAC;IAE5D,gBAAgB;IAChB,MAAM;QACF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,SAAS;gBACd,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QACzC,CAAC;QAED,IAAI,IAAI,CAAC,kCAAkC,EAAE,CAAC;YAC1C,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACxC,CAAC;QAED,uFAAuF;QACvF,yFAAyF;QACzF,kEAAkE;QAClE,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACtE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC;QAED,wDAAwD;QACxD,6DAA6D;IACjE,CAAC;CACJ;AA5yBG;IADC,YAAY,CAAC,GAAG,CAAC;yCACc;AAQhC;IADC,YAAY,EAAE;gDACc;AAQ7B;IADC,YAAY,EAAE;4CACS;AAQxB;IADC,YAAY,EAAE;qDACkB;AAuFjC;IADC,YAAY,EAAE;uCAUd;AAcD;IADC,YAAY,EAAE;+CAGd;AAYD;IADC,YAAY,EAAE;8CAGd;AAYD;IADC,YAAY,EAAE;8CAGd;AAiBD;IADC,YAAY,EAAE;yCAC8B;AAiB7C;IADC,YAAY,EAAE;wCAMd;AAYD;IADC,YAAY,EAAE;gDACmB"}
|
|
@@ -750,7 +750,8 @@ export class Component {
|
|
|
750
750
|
this.__didCompleteStart = false;
|
|
751
751
|
this.__inEnableOrDisableCallback = false;
|
|
752
752
|
this.__didEnable = false;
|
|
753
|
-
|
|
753
|
+
// Preserve copied/constructor-assigned enabled state while resetting lifecycle flags.
|
|
754
|
+
// Cloned disabled components must not fall back to the default enabled=true state.
|
|
754
755
|
this.__destroyed = false;
|
|
755
756
|
this._internalInit(init);
|
|
756
757
|
return this;
|