@3dsource/angular-unreal-module 0.0.113-dev.0 → 0.0.113-dev.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@3dsource/angular-unreal-module",
3
- "version": "0.0.113-dev.0",
3
+ "version": "0.0.113-dev.1",
4
4
  "description": "Angular Unreal module for connect with unreal engine stream",
5
5
  "keywords": [
6
6
  "3dsource",
@@ -1,8 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
- import { ElementRef, OnInit, InjectionToken, DestroyRef, PipeTransform } from '@angular/core';
2
+ import { ElementRef, InjectionToken, DestroyRef, OnInit, PipeTransform } from '@angular/core';
3
+ import * as _3dsource_angular_unreal_module from '@3dsource/angular-unreal-module';
3
4
  import * as rxjs from 'rxjs';
4
5
  import { Observable, Subject, Subscription } from 'rxjs';
5
- import * as _3dsource_angular_unreal_module from '@3dsource/angular-unreal-module';
6
6
  import * as _ngrx_store from '@ngrx/store';
7
7
  import { Store } from '@ngrx/store';
8
8
  import * as _ngrx_effects from '@ngrx/effects';
@@ -41,7 +41,7 @@ declare class ImageLoadingSrcComponent {
41
41
  #private;
42
42
  readonly isLoaderScreenVisible: i0.Signal<boolean>;
43
43
  readonly imageLoadingSrc: i0.Signal<string>;
44
- imageError(): void;
44
+ loadingImageError(): void;
45
45
  static ɵfac: i0.ɵɵFactoryDeclaration<ImageLoadingSrcComponent, never>;
46
46
  static ɵcmp: i0.ɵɵComponentDeclaration<ImageLoadingSrcComponent, "app-image-loading-src", never, {}, {}, never, never, true, never>;
47
47
  }
@@ -72,33 +72,30 @@ declare class StatGraphComponent {
72
72
 
73
73
  declare class UnrealSceneComponent {
74
74
  #private;
75
- readonly isStudio: i0.InputSignal<boolean>;
76
75
  readonly useContainerAsSizeProvider: i0.InputSignal<boolean>;
77
- readonly studioResolutionSize: i0.InputSignal<{
78
- width: number;
79
- height: number;
80
- }>;
81
- studioResolutionValues: rxjs.Observable<{
76
+ readonly isStudio: i0.InputSignal<boolean>;
77
+ readonly resolutionSize: i0.InputSignal<{
82
78
  width: number;
83
79
  height: number;
84
80
  }>;
81
+ readonly changeMouseOverScene: i0.OutputEmitterRef<boolean>;
85
82
  readonly videoElement: i0.Signal<ElementRef<HTMLDivElement> | undefined>;
86
- changeMouseOverScene: i0.OutputEmitterRef<boolean>;
83
+ private readonly resolutionValues$;
87
84
  private width;
88
85
  private height;
89
86
  private readonly actions$;
90
- private isExistMatchUrls;
87
+ private readonly isExistMatchUrls;
91
88
  readonly isDevMode: boolean;
92
- private isFreezeFrameLoading;
89
+ private readonly isFreezeFrameLoading;
93
90
  private readonly maxResolution;
94
- private commandsSender;
95
- private videoService;
96
- private element;
97
- private destroyRef;
91
+ private readonly commandsSender;
92
+ private readonly videoService;
93
+ private readonly destroyRef;
98
94
  private get resizeValues();
99
95
  private get pixelRatio();
100
96
  onMouseOver(): void;
101
97
  onMouseOut(): void;
98
+ onContextMenu(event: Event): void;
102
99
  constructor();
103
100
  private listenResizeValues;
104
101
  private adaptVideo;
@@ -106,7 +103,7 @@ declare class UnrealSceneComponent {
106
103
  private getResizeStudioValues;
107
104
  private sendResize;
108
105
  static ɵfac: i0.ɵɵFactoryDeclaration<UnrealSceneComponent, never>;
109
- static ɵcmp: i0.ɵɵComponentDeclaration<UnrealSceneComponent, "app-unreal-scene", never, { "isStudio": { "alias": "isStudio"; "required": false; "isSignal": true; }; "useContainerAsSizeProvider": { "alias": "useContainerAsSizeProvider"; "required": false; "isSignal": true; }; "studioResolutionSize": { "alias": "studioResolutionSize"; "required": false; "isSignal": true; }; }, { "changeMouseOverScene": "changeMouseOverScene"; }, never, ["app-pdf", "app-show-case"], true, never>;
106
+ static ɵcmp: i0.ɵɵComponentDeclaration<UnrealSceneComponent, "app-unreal-scene", never, { "useContainerAsSizeProvider": { "alias": "useContainerAsSizeProvider"; "required": false; "isSignal": true; }; "isStudio": { "alias": "isStudio"; "required": false; "isSignal": true; }; "resolutionSize": { "alias": "resolutionSize"; "required": false; "isSignal": true; }; }, { "changeMouseOverScene": "changeMouseOverScene"; }, never, ["app-pdf", "app-show-case"], true, never>;
110
107
  }
111
108
 
112
109
  declare class IntroSrcComponent {
@@ -116,8 +113,8 @@ declare class IntroSrcComponent {
116
113
  protected videoIntroSrc: i0.Signal<string | null>;
117
114
  private viewportReady;
118
115
  constructor();
116
+ loadingImageError(): void;
119
117
  private createVideo;
120
- imageError(): void;
121
118
  static ɵfac: i0.ɵɵFactoryDeclaration<IntroSrcComponent, never>;
122
119
  static ɵcmp: i0.ɵɵComponentDeclaration<IntroSrcComponent, "app-intro-src", never, {}, {}, never, never, true, never>;
123
120
  }
@@ -129,12 +126,12 @@ interface GraphListItem {
129
126
  value: number;
130
127
  }>;
131
128
  }
132
- declare class VideoStatsComponent implements OnInit {
129
+ declare class VideoStatsComponent {
133
130
  readonly collapsed: i0.WritableSignal<boolean>;
134
- private store;
135
- private videoService;
136
- private isDevMode;
137
- private obs$;
131
+ private readonly store;
132
+ private readonly videoService;
133
+ private readonly isDevMode;
134
+ private readonly obs$;
138
135
  readonly viewportReady: i0.Signal<boolean>;
139
136
  readonly ssData: i0.Signal<string>;
140
137
  readonly fpsTick: i0.Signal<{
@@ -165,18 +162,15 @@ declare class VideoStatsComponent implements OnInit {
165
162
  };
166
163
  } | null | undefined;
167
164
  }[] | undefined>;
168
- fields: string[];
169
- graphList: GraphListItem[];
170
- graphList$: Observable<GraphListItem[]>;
171
- private idKey;
172
- private elementsToShow;
173
- private trigger$;
165
+ readonly fields: string[];
166
+ private readonly elementsToShow;
167
+ private readonly idKey;
168
+ private readonly graphListItems;
169
+ readonly graphList: i0.Signal<GraphListItem[]>;
174
170
  constructor();
175
- ngOnInit(): void;
176
- updateGraph(): void;
177
171
  toggle(): void;
178
172
  toggleGraph($event: MouseEvent, el: string, value?: unknown): void;
179
- private getFields;
173
+ private restoreFromStorage;
180
174
  private writeFields;
181
175
  static ɵfac: i0.ɵɵFactoryDeclaration<VideoStatsComponent, never>;
182
176
  static ɵcmp: i0.ɵɵComponentDeclaration<VideoStatsComponent, "app-video-stats", never, {}, {}, never, never, true, never>;
@@ -185,8 +179,8 @@ declare class VideoStatsComponent implements OnInit {
185
179
  declare class WebrtcErrorModalComponent {
186
180
  #private;
187
181
  readonly isCirrusConnected: i0.Signal<boolean>;
188
- close(): void;
189
182
  closeModalWithCirrusDisconnect(): void;
183
+ private close;
190
184
  static ɵfac: i0.ɵɵFactoryDeclaration<WebrtcErrorModalComponent, never>;
191
185
  static ɵcmp: i0.ɵɵComponentDeclaration<WebrtcErrorModalComponent, "app-webrtc-error-modal", never, {}, {}, never, never, true, never>;
192
186
  }
@@ -346,8 +340,10 @@ declare const DESTROY_DISCONNECT_REASONS: DisconnectReasonType[];
346
340
 
347
341
  declare const DEBOUNCE_TO_MANY_RESIZE_CALLS = 100;
348
342
  declare const SAME_SIZE_THRESHOLD = 1.01;
343
+ declare const MIN_CONTAINER_SIZE = 2;
349
344
  declare const MINIMAL_FPS = 6;
350
345
  declare const STREAMING_VIDEO_ID = "streamingVideo";
346
+ declare const STREAMING_AUDIO_ID = "streamingAudio";
351
347
  declare const CONSOLE_COMMAND_ENABLE_MESSAGES = "EnableAllScreenMessages";
352
348
  declare const CONSOLE_COMMAND_DISABLE_MESSAGES = "DisableAllScreenMessages";
353
349
  declare const CONSOLE_COMMAND_PIXEL_QUALITY = "PixelStreaming.FreezeFrameQuality 95";
@@ -357,7 +353,7 @@ declare const WS_TIMEOUT = 2000;
357
353
  declare const POLLING_TIME = 4000;
358
354
  declare const WS_OPEN_STATE = 1;
359
355
  declare const DEFAULT_AFK_TIMEOUT_PERIOD = 15;
360
- declare const DEFAULT_AFK_TIMEOUT = 120;
356
+ declare const DEFAULT_AFK_TIMEOUT = 10;
361
357
  declare const DATA_CHANNEL_CONNECTION_TIMEOUT = 8000;
362
358
  declare const SIGNALLING_PERCENT_VALUE = 56;
363
359
  declare const SCREEN_LOCKER_CONTAINER_ID = "3dsource_start_screen";
@@ -598,10 +594,10 @@ type TelemetryType = 'commandSent' | 'commandStop';
598
594
  declare class SubService {
599
595
  protected readonly destroyRef: DestroyRef;
600
596
  protected readonly destroy$: Subject<void>;
601
- actions$: Actions<any>;
602
- store: Store<any>;
597
+ protected readonly actions$: Actions<any>;
598
+ protected readonly store: Store<any>;
603
599
  disconnect$: rxjs.Observable<false>;
604
- _destroy: () => void;
600
+ constructor();
605
601
  }
606
602
 
607
603
  declare class AFKService extends SubService {
@@ -616,6 +612,8 @@ declare class AFKService extends SubService {
616
612
  private readonly afkResetTrigger;
617
613
  /** Ticks when cirrus disconnects */
618
614
  private readonly disconnected;
615
+ /** Ticks when resetUserInactivityTimeout action fires */
616
+ private readonly resetUserInactivityTrigger;
619
617
  constructor();
620
618
  private hideOverlay;
621
619
  /**
@@ -639,6 +637,14 @@ declare class AFKService extends SubService {
639
637
  static ɵprov: i0.ɵɵInjectableDeclaration<AFKService>;
640
638
  }
641
639
 
640
+ declare class LoadingProgressService {
641
+ #private;
642
+ readonly loaderVisible: i0.Signal<boolean>;
643
+ readonly percents: i0.Signal<number | undefined>;
644
+ static ɵfac: i0.ɵɵFactoryDeclaration<LoadingProgressService, never>;
645
+ static ɵprov: i0.ɵɵInjectableDeclaration<LoadingProgressService>;
646
+ }
647
+
642
648
  declare class AggregatorService extends SubService {
643
649
  private readonly selectStreamConfig;
644
650
  private readonly videoService;
@@ -655,7 +661,6 @@ declare class AggregatorService extends SubService {
655
661
  protected listenWebRTC(): void;
656
662
  protected initialize(): void;
657
663
  private addResponseEventListener;
658
- private showOnScreenKeyboard;
659
664
  private removeLoadScreen;
660
665
  private startListenCallbacks;
661
666
  private showMessageFromUnreal;
@@ -790,9 +795,9 @@ declare class FreezeFrameService extends SubService {
790
795
  }
791
796
 
792
797
  declare class InputService extends SubService {
793
- private commandsSender;
794
- private isDevMode;
795
- private videoService;
798
+ private readonly commandsSender;
799
+ private readonly isDevMode;
800
+ private readonly videoService;
796
801
  private readonly unrealConfig;
797
802
  readonly defaultKeys: (17 | 37 | 38 | 39 | 40 | 46 | 65 | 68 | 83 | 87 | 107 | 109 | 187 | 189)[];
798
803
  private availableKeys;
@@ -801,10 +806,10 @@ declare class InputService extends SubService {
801
806
  private deactivatedVideoTrigger$;
802
807
  private normalizeAndQuantizeUnsigned;
803
808
  private normalizeAndQuantizeSigned;
804
- videoBoundingRect: DOMRect;
805
- fingerIds: Map<any, any>;
806
- maxByteValue: number;
807
- fingers: (0 | 2 | 1 | 4 | 8 | 3 | 5 | 6 | 7 | 9)[];
809
+ private videoBoundingRect;
810
+ private fingerIds;
811
+ private maxByteValue;
812
+ private fingers;
808
813
  private offsetParams;
809
814
  constructor();
810
815
  protected init(): void;
@@ -914,7 +919,7 @@ declare class SignallingService extends SubService {
914
919
  *
915
920
  * 1. **Telemetry** — Starts a `getSignaling` span for end-to-end timing.
916
921
  * 2. **Candidate URL selection** — A stateful generator (`urlGen`) is created
917
- * from `urlsPool`. Each resubscription (e.g. via `retry`) advances to the next URL.
922
+ * from `urlsPool`. Each resubscription (e.g., via `retry`) advances to the next URL.
918
923
  * 3. **Short-circuit for WS URLs** — If the picked candidate already matches
919
924
  * `ws://` or `wss://`, emit `{ wsUrl, pollingUrl: null, instanceName: null }`
920
925
  * immediately and complete (no HTTP request).
@@ -926,7 +931,7 @@ declare class SignallingService extends SubService {
926
931
  * while the request is in flight are **ignored** until completion, preventing overlap.
927
932
  * 6. **Per-attempt timeout** — `timeout(WS_TIMEOUT)` caps how long we wait for a response.
928
933
  * On timeout, the attempt errors and the outer `retry` schedules the next URL.
929
- * 7. **Response validation & progress reporting** — A `filter`:
934
+ * 7. **Response validation and progress reporting** — A `filter`:
930
935
  * - Calls `TelemetryStop('getSignaling', { ...data, multi: true })` on receipt.
931
936
  * - If `data.signallingServer === ''` or `data.error`:
932
937
  * shows a status message, optionally dispatches `setStatusPercentSignallingServer`
@@ -943,7 +948,7 @@ declare class SignallingService extends SubService {
943
948
  *
944
949
  * ### Concurrency semantics
945
950
  *
946
- * - `exhaustMap` guarantees a **single** HTTP request per attempt; subsequent
951
+ * - `exhaustMap` guarantees a **single** HTTP request per attempt; later
947
952
  * `{clientId, viewId}` emissions are ignored until the current request completes.
948
953
  *
949
954
  * ### Telemetry semantics
@@ -977,7 +982,7 @@ declare class SignallingService extends SubService {
977
982
  * @remarks
978
983
  * - The URL generator (`urlGen`) is created **outside** `defer`, so resubscriptions
979
984
  * advance the pool. Creating it inside `defer` would restart from the first URL each retry.
980
- * - `location.protocol` is used to derive `ws` vs `wss`. If this may run in non-browser
985
+ * - `location.protocol` is used to derive `ws` vs. `wss`. If this may run in non-browser
981
986
  * contexts (e.g., SSR), guard or abstract this logic.
982
987
  * - Consider capping retries with `count` in `retry({ count, delay })` when appropriate.
983
988
  *
@@ -1186,10 +1191,10 @@ declare class StreamStatusTelemetryService2 {
1186
1191
  }
1187
1192
 
1188
1193
  declare class UnrealCommunicatorService {
1189
- private store;
1190
- private actions$;
1191
- private commandTelemetryService;
1192
- private webRtcPlayerService;
1194
+ private readonly store;
1195
+ private readonly actions$;
1196
+ private readonly commandTelemetryService;
1197
+ private readonly webRtcPlayerService;
1193
1198
  private readonly unrealConfig;
1194
1199
  private destroy$;
1195
1200
  private cirrusConnected;
@@ -1257,9 +1262,9 @@ declare class WebRtcPlayerService extends SubService {
1257
1262
  onDataChannelMessage$: Subject<ArrayBuffer>;
1258
1263
  private pcClient;
1259
1264
  private dcClient;
1260
- private signallingSrv;
1261
- private videoService;
1262
- private commandTelemetryService;
1265
+ private readonly signallingSrv;
1266
+ private readonly videoService;
1267
+ private readonly commandTelemetryService;
1263
1268
  private cfg;
1264
1269
  private useMic;
1265
1270
  private forceTURN;
@@ -1310,7 +1315,7 @@ declare class WebRtcPlayerService extends SubService {
1310
1315
  * RFC 6184 that encodes three H.264 parameters:
1311
1316
  * - **Profile IDC** (`XX`) — the H.264 profile.
1312
1317
  * - **Profile IOP** (`YY`) — constraint flags that further narrow the profile.
1313
- * - **Level IDC** (`ZZ`) — the level, which caps resolution/framerate/bitrate.
1318
+ * - **Level IDC** (`ZZ`) — the level which caps resolution/framerate/bitrate.
1314
1319
  *
1315
1320
  * ### H.264 profiles relevant to Unreal Engine Pixel Streaming
1316
1321
  *
@@ -1328,12 +1333,12 @@ declare class WebRtcPlayerService extends SubService {
1328
1333
  * | `f4001f` | High 4:4:4 Predictive | 3.1 | Lossless capable; rare in browsers |
1329
1334
  *
1330
1335
  * UE Pixel Streaming defaults to Constrained Baseline (`42e01f`) or High (`6400xx`)
1331
- * depending on engine version and `WebRTC.H264Profile` CVar.
1336
+ * depending on the engine version and `WebRTC.H264Profile` CVar.
1332
1337
  *
1333
1338
  * We prioritize `42e01f` because it guarantees hardware decoding on
1334
1339
  * virtually all client devices (desktop, mobile, embedded), avoiding
1335
1340
  * fallback to software decoding or negotiation of a higher profile
1336
- * that the client GPU may not accelerate.
1341
+ * that the client GPU may not speed up.
1337
1342
  */
1338
1343
  private prioritizeH264Profile;
1339
1344
  private mungeSDP;
@@ -1857,21 +1862,6 @@ declare function getResizeValuesUniversal(params: {
1857
1862
  maxResolution: boolean;
1858
1863
  }): Area;
1859
1864
 
1860
- declare function getResizeValuesUniversalOld(params: {
1861
- pixelRatio: number;
1862
- containerWidth: number;
1863
- containerHeight: number;
1864
- maxResolution: boolean;
1865
- }): Area;
1866
- declare function getResizeStudioValuesOld(params: {
1867
- pixelRatio: number;
1868
- containerWidth: number;
1869
- containerHeight: number;
1870
- studioWidth: number;
1871
- studioHeight: number;
1872
- maxResolution: boolean;
1873
- }): Area;
1874
-
1875
1865
  /**
1876
1866
  * Rounds a number to the nearest even integer (rounding up for odd values).
1877
1867
  *
@@ -2049,7 +2039,7 @@ declare class FilterSettingsComponent implements OnInit {
2049
2039
  }
2050
2040
 
2051
2041
  declare class LowBandwidthDetectorComponent implements OnInit {
2052
- private readonly store;
2042
+ #private;
2053
2043
  private readonly dialog;
2054
2044
  private readonly destroyRef;
2055
2045
  private readonly videoService;
@@ -2121,8 +2111,8 @@ declare const commandCompleted: _ngrx_store.ActionCreator<string, (props: {
2121
2111
  } & _ngrx_store.Action<string>>;
2122
2112
 
2123
2113
  declare class CommandsEffects {
2124
- private actions$;
2125
- private unrealInitialConfig;
2114
+ private readonly actions$;
2115
+ private readonly unrealInitialConfig;
2126
2116
  listenUnrealCallbackByInitSignalling$: rxjs.Observable<{
2127
2117
  id: string;
2128
2118
  } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
@@ -2396,10 +2386,8 @@ declare const showUnrealErrorMessage: _ngrx_store.ActionCreator<string, (props:
2396
2386
  code: number | null;
2397
2387
  error?: string;
2398
2388
  } & _ngrx_store.Action<string>>;
2399
- declare const initSignalling: _ngrx_store.FunctionWithParametersType<[data?: {
2400
- resetDisconnectionReason: boolean;
2401
- } | undefined], {
2402
- resetDisconnectionReason: boolean;
2389
+ declare const initSignalling: _ngrx_store.FunctionWithParametersType<[resetDisconnectionReason?: any], {
2390
+ resetDisconnectionReason: any;
2403
2391
  } & _ngrx_store.Action<string>> & _ngrx_store.Action<string>;
2404
2392
  declare const startStream: _ngrx_store.ActionCreator<string, (props: {
2405
2393
  config: Partial<StreamConfig>;
@@ -2463,31 +2451,32 @@ declare const showResumeStreamPopup: _ngrx_store.ActionCreator<string, (props: {
2463
2451
  }) => {
2464
2452
  visible: boolean;
2465
2453
  } & _ngrx_store.Action<string>>;
2466
- declare const showAfkTimeoutPopup: _ngrx_store.ActionCreator<string, (props: {
2454
+ declare const showUserInactivityTimeoutPopup: _ngrx_store.ActionCreator<string, (props: {
2467
2455
  visible: boolean;
2468
2456
  }) => {
2469
2457
  visible: boolean;
2470
2458
  } & _ngrx_store.Action<string>>;
2471
- declare const setAfkTimeout: _ngrx_store.ActionCreator<string, (props: {
2459
+ declare const setUserInactivityTimeout: _ngrx_store.ActionCreator<string, (props: {
2472
2460
  timeout: number;
2473
2461
  }) => {
2474
2462
  timeout: number;
2475
2463
  } & _ngrx_store.Action<string>>;
2464
+ declare const resetUserInactivityTimeout: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
2476
2465
 
2477
2466
  declare class UnrealEffects {
2478
- private actions$;
2479
- private dialog;
2480
- private http;
2481
- private store;
2482
- private isDevMode;
2483
- private scrollStrategy;
2484
- private unrealInitialConfig;
2485
- private webRtcPlayerService;
2486
- private commandsSender;
2467
+ private readonly actions$;
2468
+ private readonly dialog;
2469
+ private readonly http;
2470
+ private readonly store;
2471
+ private readonly isDevMode;
2472
+ private readonly scrollStrategy;
2473
+ private readonly unrealInitialConfig;
2474
+ private readonly webRtcPlayerService;
2475
+ private readonly commandsSender;
2487
2476
  private readonly commandTelemetryService;
2488
- private signallingService;
2489
- private videoService;
2490
- private unrealCallbackService;
2477
+ private readonly signallingService;
2478
+ private readonly videoService;
2479
+ private readonly unrealCallbackService;
2491
2480
  private dataChannelConnectionTimeout;
2492
2481
  private connectionCompleted$;
2493
2482
  private reconnectConfig;
@@ -2504,6 +2493,7 @@ declare class UnrealEffects {
2504
2493
  } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2505
2494
  resetAfk$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2506
2495
  abortEstablishingConnection$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2496
+ iframeMessaging$: rxjs.Observable<string | null> & _ngrx_effects.CreateEffectMetadata;
2507
2497
  setSignalingTo100$: rxjs.Observable<{
2508
2498
  percent: number | null;
2509
2499
  } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
@@ -2516,7 +2506,7 @@ declare class UnrealEffects {
2516
2506
  } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2517
2507
  resetCirrusOnDestroy$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2518
2508
  destroyConnectionAndRestart$: rxjs.Observable<{
2519
- resetDisconnectionReason: boolean;
2509
+ resetDisconnectionReason: any;
2520
2510
  } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2521
2511
  showUnrealError$: rxjs.Observable<{
2522
2512
  code: number | null;
@@ -2526,8 +2516,9 @@ declare class UnrealEffects {
2526
2516
  initAppByDataChannelReady$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2527
2517
  setViewportReadyBySetLoopBackCommandIsCompleted$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2528
2518
  startStream$: rxjs.Observable<{
2529
- resetDisconnectionReason: boolean;
2519
+ resetDisconnectionReason: any;
2530
2520
  } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2521
+ resetAfkOnVideoStart$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2531
2522
  /**
2532
2523
  * Effect: `forceViewportNotReady$`
2533
2524
  *
@@ -2591,12 +2582,8 @@ declare class UnrealEffects {
2591
2582
  webrtcErrorModalComponent$: rxjs.Observable<false> & _ngrx_effects.CreateEffectMetadata;
2592
2583
  sendStatisticsToUnreal$: rxjs.Observable<Object> & _ngrx_effects.CreateEffectMetadata;
2593
2584
  connectToSignaling$: rxjs.Observable<WebSocket> & _ngrx_effects.CreateEffectMetadata;
2594
- /**
2595
- * Effect: `logPeerReconnectSuccess$`
2596
- *
2597
- * Logs successful peer reconnection for telemetry.
2598
- */
2599
- logPeerReconnectSuccess$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2585
+ private canPeerReconnect;
2586
+ private postToScreenLocker;
2600
2587
  static ɵfac: i0.ɵɵFactoryDeclaration<UnrealEffects, never>;
2601
2588
  static ɵprov: i0.ɵɵInjectableDeclaration<UnrealEffects>;
2602
2589
  }
@@ -2612,7 +2599,7 @@ declare const unrealFeature: {
2612
2599
  selectStreamRequestContext: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.StreamRequestContext | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.StreamRequestContext | null>;
2613
2600
  selectSsData: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.SignalingData | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.SignalingData | null>;
2614
2601
  selectStreamConfig: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.StreamConfig, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.StreamConfig>;
2615
- selectAfkTimeout: _ngrx_store.MemoizedSelector<Record<string, any>, number, (featureState: _3dsource_angular_unreal_module.UnrealState) => number>;
2602
+ selectUserInactivityTimeout: _ngrx_store.MemoizedSelector<Record<string, any>, number, (featureState: _3dsource_angular_unreal_module.UnrealState) => number>;
2616
2603
  selectAwsInstance: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.AwsInstance, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.AwsInstance>;
2617
2604
  selectIsFirstSuccessLoad: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
2618
2605
  selectIsAfkTimerVisible: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
@@ -2647,8 +2634,7 @@ declare const unrealFeature: {
2647
2634
 
2648
2635
  interface UnrealState {
2649
2636
  streamConfig: StreamConfig;
2650
- /** Custom AFK timeout (seconds) set via query param or action. Survives config resets. */
2651
- afkTimeout: number;
2637
+ userInactivityTimeout: number;
2652
2638
  awsInstance: AwsInstance;
2653
2639
  isFirstSuccessLoad: boolean;
2654
2640
  isAfkTimerVisible: boolean;
@@ -2695,7 +2681,7 @@ declare const selectWarnTimeout: _ngrx_store.MemoizedSelector<Record<string, any
2695
2681
  declare const selectIsExistMatchUrls: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: string[]) => boolean>;
2696
2682
  declare const selectIsAutostart: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: _3dsource_angular_unreal_module.StreamConfig) => boolean>;
2697
2683
  declare const selectShowReconnectPopup: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean) => boolean>;
2698
- declare const selectShowLoader: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean, s3: boolean) => boolean>;
2684
+ declare const selectShowLoader: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean) => boolean>;
2699
2685
  declare const selectIsVideoPlayingAndDataChannelConnected: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean) => boolean>;
2700
2686
  declare const selectSignalingParameters: _ngrx_store.MemoizedSelector<Record<string, any>, string, (s1: _3dsource_angular_unreal_module.SignalingData | null, s2: _3dsource_angular_unreal_module.AwsInstance) => string>;
2701
2687
  declare const selectClientAndViewIds: _ngrx_store.MemoizedSelector<Record<string, any>, {
@@ -2705,12 +2691,21 @@ declare const selectClientAndViewIds: _ngrx_store.MemoizedSelector<Record<string
2705
2691
  clientId: string | null;
2706
2692
  viewId: string | null;
2707
2693
  }>;
2708
- declare const selectIsLoaderScreenVisible: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean, s3: boolean) => boolean>;
2694
+ declare const selectIsFullyConnected: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean, s3: boolean) => boolean>;
2695
+ declare const selectIsLoaderScreenVisible: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean) => boolean>;
2709
2696
  declare const selectCirrusConnectionId: _ngrx_store.MemoizedSelector<Record<string, any>, string | undefined, (s1: _3dsource_angular_unreal_module.SignalingData | null) => string | undefined>;
2710
2697
  /**
2711
- * Returns Scene load progress as a float value in between 0-1
2698
+ * Returns Scene load progress as a float value between 0 and 1.
2699
+ *
2700
+ * Progress is split into two phases:
2701
+ * 1. **Signaling** (0 → ~56%): connection polling or orchestration progress.
2702
+ * Starts at 0.1%, so the bar is never visually empty while connecting.
2703
+ * 2. **Commands** (~56% → 100%): Unreal command progress after the data channel connects.
2704
+ *
2705
+ * The split point bumps by +1% once the WebSocket URL is known,
2706
+ * producing a small visual step that indicates the WS handshake succeeded.
2712
2707
  */
2713
2708
  declare const selectTotalProgress: _ngrx_store.MemoizedSelector<Record<string, any>, number, (s1: number | null, s2: number, s3: _3dsource_angular_unreal_module.AwsInstance, s4: boolean) => number>;
2714
2709
 
2715
- export { AFKService, AfkTimeoutModalComponent, AggregatorService, AnalyticsService, AnswerHandler, CONSOLE_COMMAND_DISABLE_MESSAGES, CONSOLE_COMMAND_ENABLE_MESSAGES, CONSOLE_COMMAND_PIXEL_QUALITY, CommandTelemetryService, CommandsEffects, ConfigHandler, ConsoleExtensionsService, ControlScheme, DATA_CHANNEL_CONNECTION_TIMEOUT, DEBOUNCE_TO_MANY_RESIZE_CALLS, DEFAULT_AFK_TIMEOUT, DEFAULT_AFK_TIMEOUT_PERIOD, DEFAULT_RECONNECT_DELAY_MS, DEFAULT_RECONNECT_ENABLED, DEFAULT_RECONNECT_MAX_ATTEMPTS, DEFAULT_RECONNECT_ON_DATACHANNEL_CLOSE, DEFAULT_RECONNECT_ON_ICE_FAILURE, DESTROY_DISCONNECT_REASONS, DataFlowMonitor, DevModeService, DisconnectReason, FULL_HD_HEIGHT, FULL_HD_WIDTH, FileHandlerService, FileReceiverService, FilterSettingsComponent, FpsMonitorService, FreezeFrameComponent, FreezeFrameService, IceCandidateHandler, ImageLoadingSrcComponent, InputOptions, InputService, InstanceReadyHandler, InstanceReservedHandler, IntroSrcComponent, KalmanFilter1D, LatencyTimings, LowBandwidthDetectorComponent, LowBandwidthModalComponent, MINIMAL_FPS, MessageType, MouseButton, MouseButtonsMask, OnCloseHandler, OnErrorHandler, OnMessageHandler, OnOpenHandler, OrchestrationMessageTypes, POLLING_TIME, PingHandler, PlayerCountHandler, RegionsPingService, SAME_SIZE_THRESHOLD, SCREEN_LOCKER_CONTAINER_ID, SIGNALLING_PERCENT_VALUE, SSInfoHandler, STREAMING_VIDEO_ID, SafePipe, SignallingService, SpecialKeyCodes, StatGraphComponent, StreamStatusTelemetryService, StreamStatusTelemetryService2, SubService, ToClientMessage, UNREAL_CONFIG, UnrealCallbackService, UnrealCommunicatorService, UnrealEffects, UnrealSceneComponent, UnrealStatusMessage, VideoService, VideoStatsComponent, WSCloseCode_CIRRUS_ABNORMAL_CLOSURE, WSCloseCode_CIRRUS_MAX_PLAYERS_ERROR, WSCloseCode_CIRRUS_PLAYER_DISCONNECTED, WSCloseCode_CIRRUS_STREAMER_KIKED_PLAYER, WSCloseCode_FORCE_CIRRUS_CLOSE, WSCloseCode_NORMAL_AFK_TIMEOUT, WSCloseCode_NORMAL_CLOSURE, WSCloseCode_NORMAL_MANUAL_DISCONNECT, WSCloseCode_UNKNOWN, WSCloseCodes, WS_OPEN_STATE, WS_TIMEOUT, WebRtcPlayerService, WebrtcErrorModalComponent, abortEstablishingConnection, answerSent, changeStatusMainVideoOnScene, changeStreamResolutionAction, changeStreamResolutionSuccessAction, commandCompleted, commandStarted, commandsFeature, commandsReducer, dataChannelConnected, dataChannelReady, decodeData, destroyRemoteConnections, destroyUnrealScene, disconnectStream, dispatchResize, dropConnection, dropDC, dropPC, floatToSmoothPercents, forceResizeViewport, fromResizeObserver, getActiveUrl, getImageFromVideoStream, getResizeStudioValues, getResizeStudioValuesOld, getResizeValuesUniversal, getResizeValuesUniversalOld, getRtcErrorMessage, iceConnectionFailed, initSignalling, instanceReady, keepMaxUntilReset, makeEven, pollingEnded, pollingStarted, provideUnrealModule, qpToQuality, reconnectPeer, reconnectPeerFailed, reconnectPeerSuccess, regionPingFetchEnd, regionPingFetchStart, regionResolved, resetAfk, resetConfig, resetDataChannelForReconnect, resetIntroSrc, resetWarnTimeout, saveAnalyticsEvent, selectCirrusConnectionId, selectClientAndViewIds, selectCommandProgress, selectCommandsInProgress, selectFreezeFrameCombinedDataUrl, selectFreezeFrameDataUrl, selectFreezeFrameDataUrlFromVideo, selectFreezeFrameProgressMessageFromVideo, selectIsAutostart, selectIsExistMatchUrls, selectIsFreezeFrameLoading, selectIsLoaderScreenVisible, selectIsVideoPlayingAndDataChannelConnected, selectShowLoader, selectShowReconnectPopup, selectSignalingParameters, selectStreamConfig, selectTotalProgress, selectWarnTimeout, setAfkTimeout, setAfkTimerCountdown, setAfkTimerHide, setAfkTimerVisible, setAwsInstance, setCirrusConnected, setCirrusDisconnected, setConfig, setEstablishingConnection, setFreezeFrame, setFreezeFrameFromVideo, setIntroImageSrc, setIntroVideoSrc, setLoadingImageSrc, setLoopBackCommandIsCompleted, setMaxFps, setOrchestrationContext, setOrchestrationMessage, setOrchestrationParameters, setOrchestrationProgress, setSignalingName, setStatusMessage, setStatusPercentSignallingServer, setStreamClientCompanyId, setStreamViewId, setUnrealPlaywrightConfig, setViewportNotReady, setViewportReady, showAfkTimeoutPopup, showLoadingProgress, showResumeStreamPopup, showUnrealErrorMessage, smoothTransition, startStream, trackMixpanelEvent, trackTelemetryData, unrealCommandCallback, unrealFeature, unrealReducer, updateCirrusInfo, videoAdaptedToContainer, videoStreamInitialized };
2710
+ export { AFKService, AfkTimeoutModalComponent, AggregatorService, AnalyticsService, AnswerHandler, CONSOLE_COMMAND_DISABLE_MESSAGES, CONSOLE_COMMAND_ENABLE_MESSAGES, CONSOLE_COMMAND_PIXEL_QUALITY, CommandTelemetryService, CommandsEffects, ConfigHandler, ConsoleExtensionsService, ControlScheme, DATA_CHANNEL_CONNECTION_TIMEOUT, DEBOUNCE_TO_MANY_RESIZE_CALLS, DEFAULT_AFK_TIMEOUT, DEFAULT_AFK_TIMEOUT_PERIOD, DEFAULT_RECONNECT_DELAY_MS, DEFAULT_RECONNECT_ENABLED, DEFAULT_RECONNECT_MAX_ATTEMPTS, DEFAULT_RECONNECT_ON_DATACHANNEL_CLOSE, DEFAULT_RECONNECT_ON_ICE_FAILURE, DESTROY_DISCONNECT_REASONS, DataFlowMonitor, DevModeService, DisconnectReason, FULL_HD_HEIGHT, FULL_HD_WIDTH, FileHandlerService, FileReceiverService, FilterSettingsComponent, FpsMonitorService, FreezeFrameComponent, FreezeFrameService, IceCandidateHandler, ImageLoadingSrcComponent, InputOptions, InputService, InstanceReadyHandler, InstanceReservedHandler, IntroSrcComponent, KalmanFilter1D, LatencyTimings, LoadingProgressService, LowBandwidthDetectorComponent, LowBandwidthModalComponent, MINIMAL_FPS, MIN_CONTAINER_SIZE, MessageType, MouseButton, MouseButtonsMask, OnCloseHandler, OnErrorHandler, OnMessageHandler, OnOpenHandler, OrchestrationMessageTypes, POLLING_TIME, PingHandler, PlayerCountHandler, RegionsPingService, SAME_SIZE_THRESHOLD, SCREEN_LOCKER_CONTAINER_ID, SIGNALLING_PERCENT_VALUE, SSInfoHandler, STREAMING_AUDIO_ID, STREAMING_VIDEO_ID, SafePipe, SignallingService, SpecialKeyCodes, StatGraphComponent, StreamStatusTelemetryService, StreamStatusTelemetryService2, SubService, ToClientMessage, UNREAL_CONFIG, UnrealCallbackService, UnrealCommunicatorService, UnrealEffects, UnrealSceneComponent, UnrealStatusMessage, VideoService, VideoStatsComponent, WSCloseCode_CIRRUS_ABNORMAL_CLOSURE, WSCloseCode_CIRRUS_MAX_PLAYERS_ERROR, WSCloseCode_CIRRUS_PLAYER_DISCONNECTED, WSCloseCode_CIRRUS_STREAMER_KIKED_PLAYER, WSCloseCode_FORCE_CIRRUS_CLOSE, WSCloseCode_NORMAL_AFK_TIMEOUT, WSCloseCode_NORMAL_CLOSURE, WSCloseCode_NORMAL_MANUAL_DISCONNECT, WSCloseCode_UNKNOWN, WSCloseCodes, WS_OPEN_STATE, WS_TIMEOUT, WebRtcPlayerService, WebrtcErrorModalComponent, abortEstablishingConnection, answerSent, changeStatusMainVideoOnScene, changeStreamResolutionAction, changeStreamResolutionSuccessAction, commandCompleted, commandStarted, commandsFeature, commandsReducer, dataChannelConnected, dataChannelReady, decodeData, destroyRemoteConnections, destroyUnrealScene, disconnectStream, dispatchResize, dropConnection, dropDC, dropPC, floatToSmoothPercents, forceResizeViewport, fromResizeObserver, getActiveUrl, getImageFromVideoStream, getResizeStudioValues, getResizeValuesUniversal, getRtcErrorMessage, iceConnectionFailed, initSignalling, instanceReady, keepMaxUntilReset, makeEven, pollingEnded, pollingStarted, provideUnrealModule, qpToQuality, reconnectPeer, reconnectPeerFailed, reconnectPeerSuccess, regionPingFetchEnd, regionPingFetchStart, regionResolved, resetAfk, resetConfig, resetDataChannelForReconnect, resetIntroSrc, resetUserInactivityTimeout, resetWarnTimeout, saveAnalyticsEvent, selectCirrusConnectionId, selectClientAndViewIds, selectCommandProgress, selectCommandsInProgress, selectFreezeFrameCombinedDataUrl, selectFreezeFrameDataUrl, selectFreezeFrameDataUrlFromVideo, selectFreezeFrameProgressMessageFromVideo, selectIsAutostart, selectIsExistMatchUrls, selectIsFreezeFrameLoading, selectIsFullyConnected, selectIsLoaderScreenVisible, selectIsVideoPlayingAndDataChannelConnected, selectShowLoader, selectShowReconnectPopup, selectSignalingParameters, selectStreamConfig, selectTotalProgress, selectWarnTimeout, setAfkTimerCountdown, setAfkTimerHide, setAfkTimerVisible, setAwsInstance, setCirrusConnected, setCirrusDisconnected, setConfig, setEstablishingConnection, setFreezeFrame, setFreezeFrameFromVideo, setIntroImageSrc, setIntroVideoSrc, setLoadingImageSrc, setLoopBackCommandIsCompleted, setMaxFps, setOrchestrationContext, setOrchestrationMessage, setOrchestrationParameters, setOrchestrationProgress, setSignalingName, setStatusMessage, setStatusPercentSignallingServer, setStreamClientCompanyId, setStreamViewId, setUnrealPlaywrightConfig, setUserInactivityTimeout, setViewportNotReady, setViewportReady, showLoadingProgress, showResumeStreamPopup, showUnrealErrorMessage, showUserInactivityTimeoutPopup, smoothTransition, startStream, trackMixpanelEvent, trackTelemetryData, unrealCommandCallback, unrealFeature, unrealReducer, updateCirrusInfo, videoAdaptedToContainer, videoStreamInitialized };
2716
2711
  export type { AggregatedStat, AnySignalingMessage, AwsInstance, CandidateMessage, CloseReason, ConfigMessage, ConnectionError, ControlSchemeValues, DataFlowCheckResult, DisconnectReasonType, EmittedMilestone, ForceClientDisconnect, FreezeFrameMessage, InboundVideoStats, InputProps, InstanceReady, InstanceReserved, InterruptClientStream, ListStreamersMessage, MessageBase, MessageTypeValues, NormalizeAndQuantizeSignedValue, NormalizeAndQuantizeUnsignedValue, OrchestrationErrorMessage, OrchestrationMessageType, P2PEstablishedMessage, PhaseOverlay, PhaseParam, PingMessage, PlayerCountMessage, PollingOrchestrationMessage, Quality, ReceivedFile, ReconnectConfig, RequestStream, SSInfo, SelectedIceCandidatePair, SignalingData, SignalingMessageHandler, SignalingMessageMap, StreamConfig, StreamRequestContext, StreamResolutionProps, StreamerListMessage, TelemetryType, UnknownFields, UnquantizeAndDenormalizeUnsignedValue, UnrealCallbackDescriptor, UnrealCallbackEventMap, UnrealCallbackJson, UnrealCallbackJsonWrapped, UnrealCommandsState, UnrealInitialConfig, UnrealState, WSCloseCodesValues, streamPreparedForUserInteractionMessage };