@arcware-cloud/pixelstreaming-websdk 1.3.32 → 1.3.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,8 +8,6 @@ If you are not familiar with Arcware Cloud yet, check it out on [www.arcware.com
8
8
 
9
9
  The WebSDK is designed to bring immersive experiences, similar to those found in native applications, to the web. It's enabled for a range of applications, from gaming and architectural visualization to interactive training. Bringing high quality real-time and ensures a seamless user experience.
10
10
 
11
- This README offers an initial guide to integrating the WebSDK into your application. For comprehensive instructions, including setup, configuration, advanced features, and best practices, please refer to our detailed documentation: [Arcware Pixel Streaming WebSDK Documentation](https://docs.arcware.cloud/web-integration/new-websdk).
12
-
13
11
  For an in-depth understanding of the underlying technology and infrastructure, you can explore the original "PixelStreamingInfrastructure" repository by Epic Games on GitHub: [EpicGames/PixelStreamingInfrastructure](https://github.com/EpicGames/PixelStreamingInfrastructure).
14
12
 
15
13
  ## Getting Started
@@ -20,252 +18,17 @@ Before integrating the `@arcware-cloud/pixelstreaming-websdk` into your project,
20
18
 
21
19
  1. **Share ID**: You must have a valid Share ID set up for your project. This ID is crucial for establishing the connection between your application and the Arcware Cloud pixel streaming service. If you need assistance in setting up your Share ID, please refer to our detailed guide: [Setting up Share ID](https://docs.arcware.cloud/arcware-cloud-platform/getting-started/07.-preview-and-share-the-stream).
22
20
 
23
- 2. **Web Application Development Environment**: Ensure that your web application development environment is set up with either `yarn` or `npm`. These package managers are required for installing the WebSDK.
24
-
25
- 3. **TypeScript Recommendation**: While the SDK can be used with JavaScript, we strongly recommend using TypeScript in your development process. TypeScript offers enhanced code quality, readability, and will provide you with more intrinsic information during development, often surpassing what traditional documentation can offer.
26
-
27
- ### Installation
28
-
29
- To integrate the Arcware Cloud Pixel Streaming WebSDK into your project, you can use either npm or yarn. Run one of the following commands in your project directory:
30
-
31
- ```bash
32
- npm install @arcware-cloud/pixelstreaming-websdk --save
33
- ```
34
-
35
- ```bash
36
- yarn add @arcware-cloud/pixelstreaming-websdk
37
- ```
38
-
39
- We recommend keeping the WebSDK up to date to ensure you have the latest features and bug fixes. Regularly check for and install updates.
40
-
41
- ### Basic Usage
42
-
43
- Below is a simple example demonstrating how to use the WebSDK in an HTML file to set up pixel streaming. This example imports the SDK and initializes it with a share ID and initial settings. It then attaches the streaming application to a div element in your HTML.
44
-
45
- ```html
46
- <html>
47
- <head>
48
- <title>Arcware Cloud - Pixel Streaming</title>
49
- <script type="module">
50
- import * as PixelStreamingWebSdkCore from "https://unpkg.com/@arcware-cloud/pixelstreaming-websdk@latest/index.esm.js";
51
-
52
- const { ArcwareInit } = PixelStreamingWebSdkCore;
53
-
54
- const { Config, PixelStreaming, Application } = ArcwareInit(
55
- {
56
- // Replace with your actual share ID
57
- shareId: "share-0be4620b-77aa-42b1-98cb-f7ee61be443?"
58
- },
59
- {
60
- initialSettings: {
61
- AutoConnect: false
62
- // additional initial settings
63
- },
64
- settings: {
65
- // additional settings
66
- }
67
- }
68
- );
69
-
70
- document.getElementById("videoContainer").appendChild(Application.rootElement);
71
- </script>
72
- </head>
73
- <body>
74
- <div id="videoContainer" style="height: 1000px; width: 1000px;"></div>
75
- </body>
76
- </html>
77
- ```
78
-
79
- For more detailed examples and advanced usage, please refer to our documentation: [Arcware Cloud Pixelstreaming WebSDK Documentation](https://docs.arcware.cloud/web-integration/new-websdk).
80
-
81
- # Changelog
82
-
83
- ### 1.3.25
84
-
85
- - fixed types being emitted again after bundler change
86
-
87
- ### 1.3.24
88
-
89
- - allowing json type payload for upcoming events feature
90
-
91
- ### 1.3.20
92
-
93
- - polished types a bit and aligned with documentation
94
-
95
- ### 1.3.19
96
-
97
- - added new configuration parameters to optionally hide AfkOverlay and to hide love letters box
98
- - exposing a function to clear session ID which can be called before connecting to stream to force a fresh instance
99
- - fixed a bug that was causing onWebsocketClosedEventHandler to fire three times. Also it now returns proper CloseEvent
100
-
101
- ### 1.3.17
102
-
103
- - added support for videos in white labelling
104
-
105
- ### 1.3.16
106
-
107
- - added white labeling options for loader icon and screen
108
- - options can be loaded via base64 encoded string in URL, fetched via API (configured on platform) or set as properties on the SDK
109
-
110
- ### 1.3.12
111
-
112
- - added orientationZoom field for managing zoom
113
- - fixed stream-ui issue (occurred on React.js)
114
-
115
- ### 1.3.9
116
-
117
- - added an event handler to check if video is streaming if cloud requests evidence
118
-
119
- ### 1.3.8
120
-
121
- - fixed error handling in SDK to back of reconnects if connection was intentionally terminated by cloud
122
-
123
- ### 1.3.3
124
-
125
- - adding built in functionality for filetransfer (docs will follow soon)
126
- - added function to send events to Arcware Platform for custom analytics (this feature is alpha on backend, contact account manager if you are interested)
127
- - some fixes to
128
-
129
- ### 1.2.18
130
-
131
- - fixed webpack to emit types
132
-
133
- ### 1.2.17 (broken)
134
-
135
- - fixed diagnostics to interpred user agent and user agent data more accurately
136
- - webpack did not emit types.d.ts do not use this version!
137
-
138
- ### 1.2.16
139
-
140
- - Added "diagnostics collector" module
141
-
142
- ### 1.2.13
143
-
144
- - Replaced "moment" by "date-fns"
145
-
146
- ### 1.2.7
147
-
148
- - "@epicgames-ps/lib-pixelstreamingcommon-ue5.5": "0.3.1",
149
- - "@epicgames-ps/lib-pixelstreamingfrontend-ue5.5": "1.2.1",
150
- - "@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.5": "1.3.1",
151
-
152
- ### 1.2.6
153
-
154
- - Added the "TextboxEntry" handler
155
- - global CSS rule encapsulation
156
-
157
- ### 1.2.5
158
-
159
- - Initial resolution can now be set as configuration parameter. Platform will start the instance with this resolution as startup argument for Unreal, such that Unreal will start with the web container size's resolution for fastest loading experience and screen adaptation
160
-
161
- ### 1.1.22
162
-
163
- - Added flag to force refresh the components on ArcwareInit
164
- - removed lodash and lottie dependencies to reduce package size significantly
165
-
166
- ### 1.1.20
21
+ 2. **Web Application Development Environment**: Please check out our documentation [Arcware Pixel Streaming WebSDK Getting started](https://docs.arcware.cloud/web-integration/new-websdk/implementing-the-stream-on-your-app/getting-started)
167
22
 
168
- - fixing ZoD error on queuing
23
+ # CHANGELOG
169
24
 
170
- ### 1.1.19
171
-
172
- - "@epicgames-ps/lib-pixelstreamingcommon-ue5.5": "0.2.9"
173
- - "@epicgames-ps/lib-pixelstreamingfrontend-ue5.5": "1.1.0"
174
- - "@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.5": "1.2.0"
175
-
176
- ### 1.1.18
177
-
178
- - hotfix: PixelStreaming.websocketState now returning correct state
179
-
180
- ### 1.1.17
181
-
182
- - "@epicgames-ps/lib-pixelstreamingcommon-ue5.5": "0.2.9"
183
- - "@epicgames-ps/lib-pixelstreamingfrontend-ue5.5": "1.0.3"
184
- - "@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.5": "1.0.2"
185
-
186
- ### 1.1.12
187
-
188
- - pushing to newer versions of pixelstreaming infrastructure
189
- - "@epicgames-ps/lib-pixelstreamingcommon-ue5.5": "0.2.8"
190
- - "@epicgames-ps/lib-pixelstreamingfrontend-ue5.5": "1.0.1"
191
- - "@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.5": "1.0.0"
192
-
193
- ### 1.1.5
194
-
195
- - removing the reconnect on successive calls to ArcwareInit if websocket was stale. If this behaviour is needed, it should be implemented outside the SDK
196
-
197
- ### 1.1.3
198
-
199
- - reverting as the new versions of pixelstreaming infrastructure break things at least on Arcware side
200
- - "@epicgames-ps/lib-pixelstreamingcommon-ue5.5": "0.1.7"
201
- - "@epicgames-ps/lib-pixelstreamingfrontend-ue5.5": "0.4.8"
202
- - "@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.5": "0.4.8"
203
-
204
- ### 1.0.11
205
-
206
- - reduced logging verbosity of pixel streaming infrastructure to not spam console
207
-
208
- ### 1.0.10
209
-
210
- - Storing initialized WebSDK in global variable after calling ArcwareInit to return existing object on consecutive calls.
211
- This prevents double websocket connections and potential failures to connect to stream
212
-
213
- ### 1.0.9
214
-
215
- - Fixed peerDependencies in package.json
216
-
217
- ### 1.0.0
218
-
219
- This version was created with the support of Tensorworks and is now sourcing from upstream packages
220
-
221
- - "@epicgames-ps/lib-pixelstreamingcommon-ue5.5": "0.1.7"
222
- - "@epicgames-ps/lib-pixelstreamingfrontend-ue5.5": "^0.4.8"
223
- - "@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.5": "^0.4.8"
224
-
225
- #### Added
226
-
227
- - Support for Versions 5.1 and higher
228
- - Support for controllers
229
- - Experimental support for VR streaming
230
-
231
- #### Fixed
232
-
233
- - Random freezes on streams
234
-
235
- #### Deprecated
236
-
237
- - Support for Unreal 4.27 (fall back to WebRTC Plugin)
238
- - Support for Unreal 5.0.3.0 (fall back to WebRTC Plugin)
239
-
240
- ### 0.1.\* (Initial Release)
241
-
242
- <!-- - Upcoming changes or improvements that are currently in development can be listed here.
243
-
244
- ### [Version Number] - Release Date
245
-
246
- #### Added
247
- - List of new features or additions to the WebSDK in this release.
248
-
249
- #### Changed
250
- - Updates to existing features or overall improvements to the WebSDK.
251
-
252
- #### Deprecated
253
- - Features that are planned to be removed in future releases.
254
-
255
- #### Removed
256
- - Features or functionalities that have been removed from the WebSDK.
257
-
258
- #### Fixed
259
- - Bug fixes and corrections made in this release.
260
-
261
- ### [Previous Version Number] - Previous Release Date
262
- - Changes for previous versions follow the same format. -->
25
+ Our changelog moved to the documentation: [CHANGELOG](https://docs.arcware.cloud/web-integration/new-websdk/changelog)
263
26
 
264
27
  # LICENSE
265
28
 
266
29
  MIT License
267
30
 
268
- Copyright 2023 Arcware GmbH
31
+ Copyright 2026 Arcware GmbH
269
32
 
270
33
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
271
34
 
@@ -286,51 +49,3 @@ This software inherits code from several other libraries, namely:
286
49
  Here's a summary of these [Dependency Licenses](https://www.npmjs.com/package/@arcware-cloud/pixelstreaming-websdk?activeTab=code)/DEPENDENCY_LICENSE.md.
287
50
 
288
51
  We appreciate the contributions of these libraries, as they are essential in supporting our development efforts.
289
-
290
- <!-- # Configuration Options
291
-
292
- When creating a new instance of `ArcwareConfig`, you provide an object with two main properties: `initialSettings` and `settings`.
293
-
294
- ####
295
-
296
- `initialSettings`
297
-
298
- This property is an object that defines the initial environment and behavior of the Pixel Streaming session. Here's a breakdown of the options used in the example:
299
-
300
- - `ss`: This is the URL to the signalling server, which is essential for establishing the WebRTC connection. It is typically provided by your environment configuration.
301
- - `StartVideoMuted`: A boolean that, when set to `true`, starts the video in a muted state.
302
- - `AutoConnect`: If `true`, the client will automatically attempt to connect to the Pixel Streaming session as soon as possible.
303
- - `AutoPlayVideo`: When set to `true`, the video will automatically play as soon as it's ready.
304
-
305
- ####
306
-
307
- `settings`
308
-
309
- The `settings` property is an object containing various configuration options that tailor the user interface and interaction capabilities of the streaming session:
310
-
311
- - `shareId`: An identifier used for sharing sessions. \*Required
312
- - `session`: The session ID, which can be used for session management and reconnection.
313
- - `token`: An authentication token, if required by your backend.
314
- - `infoButton`: A boolean to toggle the visibility of an information button in the UI.
315
- - `micButton`: A boolean to control the display of a microphone toggle button.
316
- - `audioButton`: A boolean to show or hide the audio control button.
317
- - `fullscreenButton`: A boolean to enable a fullscreen toggle button.
318
- - `settingsButton`: A boolean to add a settings button to the UI.
319
- - `connectionStrengthIcon`: A boolean to display an icon indicating the connection strength.
320
-
321
- ###
322
-
323
- Initialization Process
324
-
325
- After configuring `ArcwareConfig`, you create an instance of `ArcwarePixelStreaming` by passing the configuration object. This instance is responsible for managing the streaming session and handling user interactions.
326
-
327
- const pixelStreamingInstance = new ArcwarePixelStreaming(config);
328
-
329
- Once initialized, `pixelStreamingInstance` can be used to interact with the streaming session. For example, you can retrieve the application's response or emit UI interactions:
330
-
331
- const application = new ArcwareApplication({
332
- stream: pixelStreamingInstance,
333
- });
334
-
335
- - ` application.getApplicationResponse(``string``) `: This method can be called to get a response from the application, which might include status updates or other messages.
336
- - `application.emitUIInteraction(descriptor:` ` object | string``) `: This method allows you to send UI interaction events to the streaming application, such as button presses or command inputs. -->
package/index.cjs CHANGED
@@ -22985,6 +22985,7 @@ class ArcwareApplication extends lib_pixelstreamingfrontend_ui_ue5_5_1.Applicati
22985
22985
  this.createAudioToggleButton();
22986
22986
  this.createMicToggleButton();
22987
22987
  this.createStopButton();
22988
+ this.applyCustomStyling();
22988
22989
  this.applyArcwareStyles();
22989
22990
  this.videoElementParent = (_b = this === null || this === void 0 ? void 0 : this.stream) === null || _b === void 0 ? void 0 : _b.videoElementParent;
22990
22991
  this.parentElement = (_c = this === null || this === void 0 ? void 0 : this.videoElementParent) === null || _c === void 0 ? void 0 : _c.parentElement;
@@ -23171,6 +23172,37 @@ class ArcwareApplication extends lib_pixelstreamingfrontend_ui_ue5_5_1.Applicati
23171
23172
  }
23172
23173
  }
23173
23174
  }
23175
+ applyCustomStyling(preset) {
23176
+ var _b;
23177
+ const resolved = preset !== null && preset !== void 0 ? preset : {
23178
+ position: "Bottom-Right",
23179
+ orientation: "Vertical",
23180
+ order_reverse: false,
23181
+ };
23182
+ const videoElementParent = (_b = this === null || this === void 0 ? void 0 : this.stream) === null || _b === void 0 ? void 0 : _b.videoElementParent;
23183
+ const playerUI = videoElementParent === null || videoElementParent === void 0 ? void 0 : videoElementParent.parentElement;
23184
+ if (!playerUI)
23185
+ return;
23186
+ const uiFeatures = playerUI.querySelector("#uiFeatures");
23187
+ if (!uiFeatures)
23188
+ return;
23189
+ // position
23190
+ uiFeatures.classList.add(ArcwarePixelStreamingApplicationStyles_1.CONTROLS_CLASSES.uiFeatures.buttons_position[resolved.position]);
23191
+ // orientation
23192
+ uiFeatures.classList.add(ArcwarePixelStreamingApplicationStyles_1.CONTROLS_CLASSES.uiFeatures.buttons_orientation[resolved.orientation]);
23193
+ // order reverse
23194
+ if (resolved.order_reverse) {
23195
+ uiFeatures.classList.add(ArcwarePixelStreamingApplicationStyles_1.CONTROLS_CLASSES.uiFeatures.buttons_reverse);
23196
+ }
23197
+ // exception - moving 'connection indicator' icon
23198
+ if (resolved.position === "Bottom-Left") {
23199
+ const connection = document.getElementById("connection");
23200
+ if (connection) {
23201
+ connection.style.right = "10px";
23202
+ connection.style.left = "auto";
23203
+ }
23204
+ }
23205
+ }
23174
23206
  uiDefaultButtonVisibilty(buttonType, id) {
23175
23207
  var _b, _c, _d;
23176
23208
  if (this === null || this === void 0 ? void 0 : this.parentElement) {
@@ -23391,6 +23423,7 @@ const ArcwareSettingsSchema_1 = __webpack_require__(9913);
23391
23423
  const whiteLabelling_1 = __webpack_require__(5292);
23392
23424
  const ZWhiteLabel_1 = __webpack_require__(1938);
23393
23425
  const EventHandler_1 = __webpack_require__(3916);
23426
+ lib_pixelstreamingfrontend_ue5_5_1.Logger.InitLogging(2, false);
23394
23427
  /** Default arcware signalling endpoint. */
23395
23428
  exports.DefaultUrl = `wss://signalling-client.ragnarok.arcware.cloud`;
23396
23429
  function deepEqual(a, b) {
@@ -23449,7 +23482,7 @@ class ArcwareConfig extends lib_pixelstreamingfrontend_ue5_5_1.Config {
23449
23482
  if (!config.initialSettings.ss)
23450
23483
  config.initialSettings.ss = exports.DefaultUrl;
23451
23484
  super(config);
23452
- this.VERSION = "1.3.32";
23485
+ this.VERSION = "1.3.39";
23453
23486
  this.whiteLabellingChanged = new EventHandler_1.EventHandler();
23454
23487
  this.signallingWlURL = "https://signalling-client.arcware.cloud/whiteLabel/";
23455
23488
  if (config.envName) {
@@ -25670,7 +25703,22 @@ tslib_1.__exportStar(__webpack_require__(6125), exports);
25670
25703
 
25671
25704
 
25672
25705
  Object.defineProperty(exports, "__esModule", ({ value: true }));
25673
- exports.ArcwareStyles = void 0;
25706
+ exports.ArcwareStyles = exports.CONTROLS_CLASSES = void 0;
25707
+ exports.CONTROLS_CLASSES = {
25708
+ uiFeatures: {
25709
+ buttons_position: {
25710
+ "Top-Left": "controls__position_tl",
25711
+ "Top-Right": "controls__position_tr",
25712
+ "Bottom-Left": "controls__position_bl",
25713
+ "Bottom-Right": "controls__position_br",
25714
+ },
25715
+ buttons_orientation: {
25716
+ "Horizontal": "controls__orientation_h",
25717
+ "Vertical": "controls__orientation_v",
25718
+ },
25719
+ buttons_reverse: "controls__order_reverse",
25720
+ }
25721
+ };
25674
25722
  exports.ArcwareStyles = {
25675
25723
  customStyles: {
25676
25724
  ":root": {
@@ -25755,18 +25803,63 @@ exports.ArcwareStyles = {
25755
25803
  background: "#18181A"
25756
25804
  },
25757
25805
  "#uiFeatures #controls": {
25758
- top: "auto",
25759
- left: "auto",
25760
- bottom: "10px",
25761
- right: "20px",
25762
25806
  display: "flex",
25763
25807
  flexDirection: "column-reverse"
25764
25808
  },
25809
+ /* START Custom position */
25810
+ // #controls
25811
+ controls: {
25812
+ gap: "0.5rem",
25813
+ "& > *": {
25814
+ marginBottom: "0 !important",
25815
+ },
25816
+ },
25817
+ // position
25818
+ uiFeatures: {
25819
+ "&.controls__position_tl #controls": {
25820
+ top: "10px",
25821
+ left: "20px",
25822
+ bottom: "auto",
25823
+ right: "auto",
25824
+ },
25825
+ "&.controls__position_tr #controls": {
25826
+ top: "10px",
25827
+ right: "20px",
25828
+ bottom: "auto",
25829
+ left: "auto",
25830
+ },
25831
+ "&.controls__position_bl #controls": {
25832
+ bottom: "10px",
25833
+ left: "20px",
25834
+ top: "auto",
25835
+ right: "auto",
25836
+ },
25837
+ "&.controls__position_br #controls": {
25838
+ bottom: "10px",
25839
+ right: "20px",
25840
+ top: "auto",
25841
+ left: "auto",
25842
+ },
25843
+ // orientation + order
25844
+ "&.controls__orientation_h #controls": {
25845
+ flexDirection: "row",
25846
+ },
25847
+ "&.controls__orientation_h.controls__order_reverse #controls": {
25848
+ flexDirection: "row-reverse",
25849
+ },
25850
+ "&.controls__orientation_v #controls": {
25851
+ flexDirection: "column",
25852
+ },
25853
+ "&.controls__orientation_v.controls__order_reverse #controls": {
25854
+ flexDirection: "column-reverse",
25855
+ },
25856
+ },
25857
+ /* END Custom position */
25765
25858
  "#uiFeatures #connection": {
25766
25859
  bottom: "5px",
25767
25860
  left: "10px",
25768
25861
  width: "2.5rem",
25769
- heihgt: "2.5rem"
25862
+ height: "2.5rem"
25770
25863
  },
25771
25864
  "#uiFeatures button": {
25772
25865
  backgroundColor: "var(--color12)",
package/index.mjs CHANGED
@@ -22987,6 +22987,7 @@ class ArcwareApplication extends _epicgames_ps_lib_pixelstreamingfrontend_ui_ue5
22987
22987
  this.createAudioToggleButton();
22988
22988
  this.createMicToggleButton();
22989
22989
  this.createStopButton();
22990
+ this.applyCustomStyling();
22990
22991
  this.applyArcwareStyles();
22991
22992
  this.videoElementParent = (_b = this === null || this === void 0 ? void 0 : this.stream) === null || _b === void 0 ? void 0 : _b.videoElementParent;
22992
22993
  this.parentElement = (_c = this === null || this === void 0 ? void 0 : this.videoElementParent) === null || _c === void 0 ? void 0 : _c.parentElement;
@@ -23173,6 +23174,37 @@ class ArcwareApplication extends _epicgames_ps_lib_pixelstreamingfrontend_ui_ue5
23173
23174
  }
23174
23175
  }
23175
23176
  }
23177
+ applyCustomStyling(preset) {
23178
+ var _b;
23179
+ const resolved = preset !== null && preset !== void 0 ? preset : {
23180
+ position: "Bottom-Right",
23181
+ orientation: "Vertical",
23182
+ order_reverse: false,
23183
+ };
23184
+ const videoElementParent = (_b = this === null || this === void 0 ? void 0 : this.stream) === null || _b === void 0 ? void 0 : _b.videoElementParent;
23185
+ const playerUI = videoElementParent === null || videoElementParent === void 0 ? void 0 : videoElementParent.parentElement;
23186
+ if (!playerUI)
23187
+ return;
23188
+ const uiFeatures = playerUI.querySelector("#uiFeatures");
23189
+ if (!uiFeatures)
23190
+ return;
23191
+ // position
23192
+ uiFeatures.classList.add(_styles_ArcwarePixelStreamingApplicationStyles__WEBPACK_IMPORTED_MODULE_10__.CONTROLS_CLASSES.uiFeatures.buttons_position[resolved.position]);
23193
+ // orientation
23194
+ uiFeatures.classList.add(_styles_ArcwarePixelStreamingApplicationStyles__WEBPACK_IMPORTED_MODULE_10__.CONTROLS_CLASSES.uiFeatures.buttons_orientation[resolved.orientation]);
23195
+ // order reverse
23196
+ if (resolved.order_reverse) {
23197
+ uiFeatures.classList.add(_styles_ArcwarePixelStreamingApplicationStyles__WEBPACK_IMPORTED_MODULE_10__.CONTROLS_CLASSES.uiFeatures.buttons_reverse);
23198
+ }
23199
+ // exception - moving 'connection indicator' icon
23200
+ if (resolved.position === "Bottom-Left") {
23201
+ const connection = document.getElementById("connection");
23202
+ if (connection) {
23203
+ connection.style.right = "10px";
23204
+ connection.style.left = "auto";
23205
+ }
23206
+ }
23207
+ }
23176
23208
  uiDefaultButtonVisibilty(buttonType, id) {
23177
23209
  var _b, _c, _d;
23178
23210
  if (this === null || this === void 0 ? void 0 : this.parentElement) {
@@ -23388,12 +23420,13 @@ __webpack_require__.r(__webpack_exports__);
23388
23420
  /* harmony export */ });
23389
23421
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1635);
23390
23422
  /* harmony import */ var zod__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2080);
23391
- /* harmony import */ var _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(223);
23392
- /* harmony import */ var _domain_Session__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3266);
23393
- /* harmony import */ var _domain_ArcwareSettingsSchema__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9913);
23394
- /* harmony import */ var _features_whiteLabelling__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5292);
23395
- /* harmony import */ var _features_ZWhiteLabel__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1938);
23396
- /* harmony import */ var _domain_EventHandler__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(3916);
23423
+ /* harmony import */ var _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(948);
23424
+ /* harmony import */ var _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(223);
23425
+ /* harmony import */ var _domain_Session__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3266);
23426
+ /* harmony import */ var _domain_ArcwareSettingsSchema__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(9913);
23427
+ /* harmony import */ var _features_whiteLabelling__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(5292);
23428
+ /* harmony import */ var _features_ZWhiteLabel__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(1938);
23429
+ /* harmony import */ var _domain_EventHandler__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(3916);
23397
23430
 
23398
23431
 
23399
23432
 
@@ -23402,6 +23435,7 @@ __webpack_require__.r(__webpack_exports__);
23402
23435
 
23403
23436
 
23404
23437
 
23438
+ _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_2__.Logger.InitLogging(2, false);
23405
23439
  /** Default arcware signalling endpoint. */
23406
23440
  const DefaultUrl = `wss://signalling-client.ragnarok.arcware.cloud`;
23407
23441
  function deepEqual(a, b) {
@@ -23412,7 +23446,7 @@ function deepEqual(a, b) {
23412
23446
  return false;
23413
23447
  }
23414
23448
  }
23415
- class ArcwareConfig extends _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_2__.Config {
23449
+ class ArcwareConfig extends _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_3__.Config {
23416
23450
  /**
23417
23451
  * Can be used to fetch projectId and shareId from the current url.
23418
23452
  * Example:
@@ -23448,7 +23482,7 @@ class ArcwareConfig extends _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBP
23448
23482
  throw new Error(`ShareId or ProjectId must be specified.`);
23449
23483
  }
23450
23484
  // Validate settings input.
23451
- const settings = _domain_ArcwareSettingsSchema__WEBPACK_IMPORTED_MODULE_4__.ArcwareSettingsSchema.parse(config.settings);
23485
+ const settings = _domain_ArcwareSettingsSchema__WEBPACK_IMPORTED_MODULE_5__.ArcwareSettingsSchema.parse(config.settings);
23452
23486
  // Setup arcware default settings.
23453
23487
  if (!config.initialSettings)
23454
23488
  config.initialSettings = {};
@@ -23460,17 +23494,17 @@ class ArcwareConfig extends _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBP
23460
23494
  if (!config.initialSettings.ss)
23461
23495
  config.initialSettings.ss = DefaultUrl;
23462
23496
  super(config);
23463
- this.VERSION = "1.3.32";
23464
- this.whiteLabellingChanged = new _domain_EventHandler__WEBPACK_IMPORTED_MODULE_7__.EventHandler();
23497
+ this.VERSION = "1.3.39";
23498
+ this.whiteLabellingChanged = new _domain_EventHandler__WEBPACK_IMPORTED_MODULE_8__.EventHandler();
23465
23499
  this.signallingWlURL = "https://signalling-client.arcware.cloud/whiteLabel/";
23466
23500
  if (config.envName) {
23467
23501
  this.signallingWlURL = `https://signalling-client.${config.envName}.arcware.cloud/whiteLabel/`;
23468
23502
  }
23469
23503
  this.settings = settings;
23470
- this.session = new _domain_Session__WEBPACK_IMPORTED_MODULE_3__.Session();
23504
+ this.session = new _domain_Session__WEBPACK_IMPORTED_MODULE_4__.Session();
23471
23505
  this._initialSettings = config.initialSettings;
23472
23506
  // Setup arcware default settings.
23473
- this.setFlagEnabled(_epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_2__.Flags.AFKDetection, true);
23507
+ this.setFlagEnabled(_epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_3__.Flags.AFKDetection, true);
23474
23508
  // IMPORTANT NOTE: The feature BrowserSendOffer is no longer supported in PSInfra 5.5.
23475
23509
  // The offer is now expected to come from UE. Ensure that your signalling server supports this behaviour.
23476
23510
  //this.setFlagEnabled(Flags.BrowserSendOffer, true);
@@ -23480,7 +23514,7 @@ class ArcwareConfig extends _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBP
23480
23514
  if (qs.has("wl")) {
23481
23515
  if (qs.get("wl") !== "") {
23482
23516
  // Retrieve image loading from there
23483
- const wlParsed = this.useUrlParams ? (0,_features_whiteLabelling__WEBPACK_IMPORTED_MODULE_5__.readWhiteLabelFromQuery)(qs) : undefined; // respect useUrlParams
23517
+ const wlParsed = this.useUrlParams ? (0,_features_whiteLabelling__WEBPACK_IMPORTED_MODULE_6__.readWhiteLabelFromQuery)(qs) : undefined; // respect useUrlParams
23484
23518
  if (wlParsed) {
23485
23519
  this.settings.whiteLabelling = Object.assign(Object.assign({}, ((_c = this.settings.whiteLabelling) !== null && _c !== void 0 ? _c : {})), wlParsed);
23486
23520
  }
@@ -23496,7 +23530,7 @@ class ArcwareConfig extends _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBP
23496
23530
  return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__awaiter)(this, void 0, void 0, function* () {
23497
23531
  const qs = new URLSearchParams(window.location.search);
23498
23532
  if (qs.get("wl") !== "") {
23499
- _domain_EventHandler__WEBPACK_IMPORTED_MODULE_7__.EventHandler.Emit(this.whiteLabellingChanged, {
23533
+ _domain_EventHandler__WEBPACK_IMPORTED_MODULE_8__.EventHandler.Emit(this.whiteLabellingChanged, {
23500
23534
  next: this.settings.whiteLabelling,
23501
23535
  changed: false
23502
23536
  });
@@ -23526,14 +23560,14 @@ class ArcwareConfig extends _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBP
23526
23560
  catch (_a) {
23527
23561
  return undefined;
23528
23562
  }
23529
- const parsed = _features_ZWhiteLabel__WEBPACK_IMPORTED_MODULE_6__.ZWhiteLabel.safeParse(json);
23563
+ const parsed = _features_ZWhiteLabel__WEBPACK_IMPORTED_MODULE_7__.ZWhiteLabel.safeParse(json);
23530
23564
  if (!parsed.success)
23531
23565
  return undefined;
23532
23566
  // Only apply & emit if it actually changed
23533
23567
  const prev = this.settings.whiteLabelling;
23534
23568
  const next = parsed.data;
23535
23569
  this.settings.whiteLabelling = next;
23536
- _domain_EventHandler__WEBPACK_IMPORTED_MODULE_7__.EventHandler.Emit(this.whiteLabellingChanged, { next, changed: !deepEqual(prev, next) });
23570
+ _domain_EventHandler__WEBPACK_IMPORTED_MODULE_8__.EventHandler.Emit(this.whiteLabellingChanged, { next, changed: !deepEqual(prev, next) });
23537
23571
  return parsed.data;
23538
23572
  }
23539
23573
  catch (_b) {
@@ -23595,7 +23629,7 @@ class ArcwareConfig extends _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBP
23595
23629
  return this._initialSettings;
23596
23630
  }
23597
23631
  modifyInitialSettings(mouseLock) {
23598
- this.setFlagEnabled(_epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_2__.Flags.HoveringMouseMode, mouseLock);
23632
+ this.setFlagEnabled(_epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_3__.Flags.HoveringMouseMode, mouseLock);
23599
23633
  }
23600
23634
  }
23601
23635
 
@@ -25715,6 +25749,7 @@ __webpack_require__.r(__webpack_exports__);
25715
25749
  /* harmony export */ ArcwareInit: () => (/* reexport safe */ _ArcwareInit__WEBPACK_IMPORTED_MODULE_3__.ArcwareInit),
25716
25750
  /* harmony export */ ArcwarePixelStreaming: () => (/* reexport safe */ _ArcwarePixelStreaming__WEBPACK_IMPORTED_MODULE_2__.ArcwarePixelStreaming),
25717
25751
  /* harmony export */ ArcwareStyles: () => (/* reexport safe */ _styles_ArcwarePixelStreamingApplicationStyles__WEBPACK_IMPORTED_MODULE_4__.ArcwareStyles),
25752
+ /* harmony export */ CONTROLS_CLASSES: () => (/* reexport safe */ _styles_ArcwarePixelStreamingApplicationStyles__WEBPACK_IMPORTED_MODULE_4__.CONTROLS_CLASSES),
25718
25753
  /* harmony export */ DefaultUrl: () => (/* reexport safe */ _ArcwareConfig__WEBPACK_IMPORTED_MODULE_1__.DefaultUrl),
25719
25754
  /* harmony export */ WebsocketState: () => (/* reexport safe */ _ArcwarePixelStreaming__WEBPACK_IMPORTED_MODULE_2__.WebsocketState)
25720
25755
  /* harmony export */ });
@@ -25737,8 +25772,24 @@ __webpack_require__.r(__webpack_exports__);
25737
25772
 
25738
25773
  __webpack_require__.r(__webpack_exports__);
25739
25774
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
25740
- /* harmony export */ ArcwareStyles: () => (/* binding */ ArcwareStyles)
25775
+ /* harmony export */ ArcwareStyles: () => (/* binding */ ArcwareStyles),
25776
+ /* harmony export */ CONTROLS_CLASSES: () => (/* binding */ CONTROLS_CLASSES)
25741
25777
  /* harmony export */ });
25778
+ const CONTROLS_CLASSES = {
25779
+ uiFeatures: {
25780
+ buttons_position: {
25781
+ "Top-Left": "controls__position_tl",
25782
+ "Top-Right": "controls__position_tr",
25783
+ "Bottom-Left": "controls__position_bl",
25784
+ "Bottom-Right": "controls__position_br",
25785
+ },
25786
+ buttons_orientation: {
25787
+ "Horizontal": "controls__orientation_h",
25788
+ "Vertical": "controls__orientation_v",
25789
+ },
25790
+ buttons_reverse: "controls__order_reverse",
25791
+ }
25792
+ };
25742
25793
  const ArcwareStyles = {
25743
25794
  customStyles: {
25744
25795
  ":root": {
@@ -25823,18 +25874,63 @@ const ArcwareStyles = {
25823
25874
  background: "#18181A"
25824
25875
  },
25825
25876
  "#uiFeatures #controls": {
25826
- top: "auto",
25827
- left: "auto",
25828
- bottom: "10px",
25829
- right: "20px",
25830
25877
  display: "flex",
25831
25878
  flexDirection: "column-reverse"
25832
25879
  },
25880
+ /* START Custom position */
25881
+ // #controls
25882
+ controls: {
25883
+ gap: "0.5rem",
25884
+ "& > *": {
25885
+ marginBottom: "0 !important",
25886
+ },
25887
+ },
25888
+ // position
25889
+ uiFeatures: {
25890
+ "&.controls__position_tl #controls": {
25891
+ top: "10px",
25892
+ left: "20px",
25893
+ bottom: "auto",
25894
+ right: "auto",
25895
+ },
25896
+ "&.controls__position_tr #controls": {
25897
+ top: "10px",
25898
+ right: "20px",
25899
+ bottom: "auto",
25900
+ left: "auto",
25901
+ },
25902
+ "&.controls__position_bl #controls": {
25903
+ bottom: "10px",
25904
+ left: "20px",
25905
+ top: "auto",
25906
+ right: "auto",
25907
+ },
25908
+ "&.controls__position_br #controls": {
25909
+ bottom: "10px",
25910
+ right: "20px",
25911
+ top: "auto",
25912
+ left: "auto",
25913
+ },
25914
+ // orientation + order
25915
+ "&.controls__orientation_h #controls": {
25916
+ flexDirection: "row",
25917
+ },
25918
+ "&.controls__orientation_h.controls__order_reverse #controls": {
25919
+ flexDirection: "row-reverse",
25920
+ },
25921
+ "&.controls__orientation_v #controls": {
25922
+ flexDirection: "column",
25923
+ },
25924
+ "&.controls__orientation_v.controls__order_reverse #controls": {
25925
+ flexDirection: "column-reverse",
25926
+ },
25927
+ },
25928
+ /* END Custom position */
25833
25929
  "#uiFeatures #connection": {
25834
25930
  bottom: "5px",
25835
25931
  left: "10px",
25836
25932
  width: "2.5rem",
25837
- heihgt: "2.5rem"
25933
+ height: "2.5rem"
25838
25934
  },
25839
25935
  "#uiFeatures button": {
25840
25936
  backgroundColor: "var(--color12)",
@@ -32527,6 +32623,7 @@ __webpack_require__.r(__webpack_exports__);
32527
32623
  /* harmony export */ ArcwareInit: () => (/* reexport safe */ _lib__WEBPACK_IMPORTED_MODULE_2__.ArcwareInit),
32528
32624
  /* harmony export */ ArcwarePixelStreaming: () => (/* reexport safe */ _lib__WEBPACK_IMPORTED_MODULE_2__.ArcwarePixelStreaming),
32529
32625
  /* harmony export */ ArcwareStyles: () => (/* reexport safe */ _lib__WEBPACK_IMPORTED_MODULE_2__.ArcwareStyles),
32626
+ /* harmony export */ CONTROLS_CLASSES: () => (/* reexport safe */ _lib__WEBPACK_IMPORTED_MODULE_2__.CONTROLS_CLASSES),
32530
32627
  /* harmony export */ CandidatePairStats: () => (/* reexport safe */ _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_0__.CandidatePairStats),
32531
32628
  /* harmony export */ CandidateStat: () => (/* reexport safe */ _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_0__.CandidateStat),
32532
32629
  /* harmony export */ Config: () => (/* reexport safe */ _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_0__.Config),
@@ -32653,6 +32750,7 @@ const __webpack_exports__ArcwareConfig = __webpack_exports__.ArcwareConfig;
32653
32750
  const __webpack_exports__ArcwareInit = __webpack_exports__.ArcwareInit;
32654
32751
  const __webpack_exports__ArcwarePixelStreaming = __webpack_exports__.ArcwarePixelStreaming;
32655
32752
  const __webpack_exports__ArcwareStyles = __webpack_exports__.ArcwareStyles;
32753
+ const __webpack_exports__CONTROLS_CLASSES = __webpack_exports__.CONTROLS_CLASSES;
32656
32754
  const __webpack_exports__CandidatePairStats = __webpack_exports__.CandidatePairStats;
32657
32755
  const __webpack_exports__CandidateStat = __webpack_exports__.CandidateStat;
32658
32756
  const __webpack_exports__Config = __webpack_exports__.Config;
@@ -32757,4 +32855,4 @@ const __webpack_exports__isNumericId = __webpack_exports__.isNumericId;
32757
32855
  const __webpack_exports__isOptionId = __webpack_exports__.isOptionId;
32758
32856
  const __webpack_exports__isTextId = __webpack_exports__.isTextId;
32759
32857
  const __webpack_exports__overrideLogger = __webpack_exports__.overrideLogger;
32760
- export { __webpack_exports__AFKOverlay as AFKOverlay, __webpack_exports__ActionOverlay as ActionOverlay, __webpack_exports__AfkLogic as AfkLogic, __webpack_exports__AfkTimedOutEvent as AfkTimedOutEvent, __webpack_exports__AfkWarningActivateEvent as AfkWarningActivateEvent, __webpack_exports__AfkWarningDeactivateEvent as AfkWarningDeactivateEvent, __webpack_exports__AfkWarningUpdateEvent as AfkWarningUpdateEvent, __webpack_exports__AggregatedStats as AggregatedStats, __webpack_exports__Application as Application, __webpack_exports__ArcwareApplication as ArcwareApplication, __webpack_exports__ArcwareConfig as ArcwareConfig, __webpack_exports__ArcwareInit as ArcwareInit, __webpack_exports__ArcwarePixelStreaming as ArcwarePixelStreaming, __webpack_exports__ArcwareStyles as ArcwareStyles, __webpack_exports__CandidatePairStats as CandidatePairStats, __webpack_exports__CandidateStat as CandidateStat, __webpack_exports__Config as Config, __webpack_exports__ConfigUI as ConfigUI, __webpack_exports__ConnectOverlay as ConnectOverlay, __webpack_exports__ControlSchemeType as ControlSchemeType, __webpack_exports__DataChannelCloseEvent as DataChannelCloseEvent, __webpack_exports__DataChannelErrorEvent as DataChannelErrorEvent, __webpack_exports__DataChannelLatencyTestRecord as DataChannelLatencyTestRecord, __webpack_exports__DataChannelLatencyTestResponseEvent as DataChannelLatencyTestResponseEvent, __webpack_exports__DataChannelLatencyTestResultEvent as DataChannelLatencyTestResultEvent, __webpack_exports__DataChannelOpenEvent as DataChannelOpenEvent, __webpack_exports__DataChannelStats as DataChannelStats, __webpack_exports__DefaultUrl as DefaultUrl, __webpack_exports__DisconnectOverlay as DisconnectOverlay, __webpack_exports__EncoderSettings as EncoderSettings, __webpack_exports__ErrorOverlay as ErrorOverlay, __webpack_exports__EventEmitter as EventEmitter, __webpack_exports__Flags as Flags, __webpack_exports__FrameTimingInfo as FrameTimingInfo, __webpack_exports__HideFreezeFrameEvent as HideFreezeFrameEvent, __webpack_exports__InboundAudioStats as InboundAudioStats, __webpack_exports__InboundVideoStats as InboundVideoStats, __webpack_exports__InfoOverlay as InfoOverlay, __webpack_exports__InitialSettings as InitialSettings, __webpack_exports__InitialSettingsEvent as InitialSettingsEvent, __webpack_exports__InputCoordTranslator as InputCoordTranslator, __webpack_exports__KeepaliveMonitor as KeepaliveMonitor, __webpack_exports__LatencyCalculatedEvent as LatencyCalculatedEvent, __webpack_exports__LatencyCalculator as LatencyCalculator, __webpack_exports__LatencyInfo as LatencyInfo, __webpack_exports__LatencyTestResultEvent as LatencyTestResultEvent, __webpack_exports__LatencyTestResults as LatencyTestResults, __webpack_exports__LoadFreezeFrameEvent as LoadFreezeFrameEvent, __webpack_exports__LogLevel as LogLevel, __webpack_exports__Logger as Logger, __webpack_exports__MessageDirection as MessageDirection, __webpack_exports__MessageHelpers as MessageHelpers, __webpack_exports__MessageRegistry as MessageRegistry, __webpack_exports__Messages as Messages, __webpack_exports__NumericParameters as NumericParameters, __webpack_exports__OptionParameters as OptionParameters, __webpack_exports__OutboundRTPStats as OutboundRTPStats, __webpack_exports__OverlayBase as OverlayBase, __webpack_exports__PixelStreaming as PixelStreaming, __webpack_exports__PixelStreamingApplicationStyle as PixelStreamingApplicationStyle, __webpack_exports__PixelStreamingEventEmitter as PixelStreamingEventEmitter, __webpack_exports__PixelStreamingSettings as PixelStreamingSettings, __webpack_exports__PlayOverlay as PlayOverlay, __webpack_exports__PlayStreamErrorEvent as PlayStreamErrorEvent, __webpack_exports__PlayStreamEvent as PlayStreamEvent, __webpack_exports__PlayStreamRejectedEvent as PlayStreamRejectedEvent, __webpack_exports__PlayerCountEvent as PlayerCountEvent, __webpack_exports__RemoteOutboundRTPStats as RemoteOutboundRTPStats, __webpack_exports__SDPUtils as SDPUtils, __webpack_exports__SettingBase as SettingBase, __webpack_exports__SettingFlag as SettingFlag, __webpack_exports__SettingNumber as SettingNumber, __webpack_exports__SettingOption as SettingOption, __webpack_exports__SettingText as SettingText, __webpack_exports__SettingUIBase as SettingUIBase, __webpack_exports__SettingUIFlag as SettingUIFlag, __webpack_exports__SettingUINumber as SettingUINumber, __webpack_exports__SettingUIOption as SettingUIOption, __webpack_exports__SettingUIText as SettingUIText, __webpack_exports__SettingsChangedEvent as SettingsChangedEvent, __webpack_exports__ShowOnScreenKeyboardEvent as ShowOnScreenKeyboardEvent, __webpack_exports__SignallingProtocol as SignallingProtocol, __webpack_exports__StatsReceivedEvent as StatsReceivedEvent, __webpack_exports__StreamLoadingEvent as StreamLoadingEvent, __webpack_exports__StreamPreConnectEvent as StreamPreConnectEvent, __webpack_exports__StreamPreDisconnectEvent as StreamPreDisconnectEvent, __webpack_exports__StreamReconnectEvent as StreamReconnectEvent, __webpack_exports__StreamerIDChangedMessageEvent as StreamerIDChangedMessageEvent, __webpack_exports__StreamerListMessageEvent as StreamerListMessageEvent, __webpack_exports__SubscribeFailedEvent as SubscribeFailedEvent, __webpack_exports__TextOverlay as TextOverlay, __webpack_exports__TextParameters as TextParameters, __webpack_exports__UIElementCreationMode as UIElementCreationMode, __webpack_exports__VideoEncoderAvgQPEvent as VideoEncoderAvgQPEvent, __webpack_exports__VideoInitializedEvent as VideoInitializedEvent, __webpack_exports__WebRTCSettings as WebRTCSettings, __webpack_exports__WebRtcAutoConnectEvent as WebRtcAutoConnectEvent, __webpack_exports__WebRtcConnectedEvent as WebRtcConnectedEvent, __webpack_exports__WebRtcConnectingEvent as WebRtcConnectingEvent, __webpack_exports__WebRtcDisconnectedEvent as WebRtcDisconnectedEvent, __webpack_exports__WebRtcFailedEvent as WebRtcFailedEvent, __webpack_exports__WebRtcPlayerController as WebRtcPlayerController, __webpack_exports__WebRtcSdpAnswerEvent as WebRtcSdpAnswerEvent, __webpack_exports__WebRtcSdpEvent as WebRtcSdpEvent, __webpack_exports__WebRtcSdpOfferEvent as WebRtcSdpOfferEvent, __webpack_exports__WebRtcTCPRelayDetectedEvent as WebRtcTCPRelayDetectedEvent, __webpack_exports__WebSocketTransport as WebSocketTransport, __webpack_exports__WebSocketTransportNJS as WebSocketTransportNJS, __webpack_exports__WebXRController as WebXRController, __webpack_exports__WebsocketState as WebsocketState, __webpack_exports__XrFrameEvent as XrFrameEvent, __webpack_exports__XrSessionEndedEvent as XrSessionEndedEvent, __webpack_exports__XrSessionStartedEvent as XrSessionStartedEvent, __webpack_exports__isFlagId as isFlagId, __webpack_exports__isNumericId as isNumericId, __webpack_exports__isOptionId as isOptionId, __webpack_exports__isTextId as isTextId, __webpack_exports__overrideLogger as overrideLogger };
32858
+ export { __webpack_exports__AFKOverlay as AFKOverlay, __webpack_exports__ActionOverlay as ActionOverlay, __webpack_exports__AfkLogic as AfkLogic, __webpack_exports__AfkTimedOutEvent as AfkTimedOutEvent, __webpack_exports__AfkWarningActivateEvent as AfkWarningActivateEvent, __webpack_exports__AfkWarningDeactivateEvent as AfkWarningDeactivateEvent, __webpack_exports__AfkWarningUpdateEvent as AfkWarningUpdateEvent, __webpack_exports__AggregatedStats as AggregatedStats, __webpack_exports__Application as Application, __webpack_exports__ArcwareApplication as ArcwareApplication, __webpack_exports__ArcwareConfig as ArcwareConfig, __webpack_exports__ArcwareInit as ArcwareInit, __webpack_exports__ArcwarePixelStreaming as ArcwarePixelStreaming, __webpack_exports__ArcwareStyles as ArcwareStyles, __webpack_exports__CONTROLS_CLASSES as CONTROLS_CLASSES, __webpack_exports__CandidatePairStats as CandidatePairStats, __webpack_exports__CandidateStat as CandidateStat, __webpack_exports__Config as Config, __webpack_exports__ConfigUI as ConfigUI, __webpack_exports__ConnectOverlay as ConnectOverlay, __webpack_exports__ControlSchemeType as ControlSchemeType, __webpack_exports__DataChannelCloseEvent as DataChannelCloseEvent, __webpack_exports__DataChannelErrorEvent as DataChannelErrorEvent, __webpack_exports__DataChannelLatencyTestRecord as DataChannelLatencyTestRecord, __webpack_exports__DataChannelLatencyTestResponseEvent as DataChannelLatencyTestResponseEvent, __webpack_exports__DataChannelLatencyTestResultEvent as DataChannelLatencyTestResultEvent, __webpack_exports__DataChannelOpenEvent as DataChannelOpenEvent, __webpack_exports__DataChannelStats as DataChannelStats, __webpack_exports__DefaultUrl as DefaultUrl, __webpack_exports__DisconnectOverlay as DisconnectOverlay, __webpack_exports__EncoderSettings as EncoderSettings, __webpack_exports__ErrorOverlay as ErrorOverlay, __webpack_exports__EventEmitter as EventEmitter, __webpack_exports__Flags as Flags, __webpack_exports__FrameTimingInfo as FrameTimingInfo, __webpack_exports__HideFreezeFrameEvent as HideFreezeFrameEvent, __webpack_exports__InboundAudioStats as InboundAudioStats, __webpack_exports__InboundVideoStats as InboundVideoStats, __webpack_exports__InfoOverlay as InfoOverlay, __webpack_exports__InitialSettings as InitialSettings, __webpack_exports__InitialSettingsEvent as InitialSettingsEvent, __webpack_exports__InputCoordTranslator as InputCoordTranslator, __webpack_exports__KeepaliveMonitor as KeepaliveMonitor, __webpack_exports__LatencyCalculatedEvent as LatencyCalculatedEvent, __webpack_exports__LatencyCalculator as LatencyCalculator, __webpack_exports__LatencyInfo as LatencyInfo, __webpack_exports__LatencyTestResultEvent as LatencyTestResultEvent, __webpack_exports__LatencyTestResults as LatencyTestResults, __webpack_exports__LoadFreezeFrameEvent as LoadFreezeFrameEvent, __webpack_exports__LogLevel as LogLevel, __webpack_exports__Logger as Logger, __webpack_exports__MessageDirection as MessageDirection, __webpack_exports__MessageHelpers as MessageHelpers, __webpack_exports__MessageRegistry as MessageRegistry, __webpack_exports__Messages as Messages, __webpack_exports__NumericParameters as NumericParameters, __webpack_exports__OptionParameters as OptionParameters, __webpack_exports__OutboundRTPStats as OutboundRTPStats, __webpack_exports__OverlayBase as OverlayBase, __webpack_exports__PixelStreaming as PixelStreaming, __webpack_exports__PixelStreamingApplicationStyle as PixelStreamingApplicationStyle, __webpack_exports__PixelStreamingEventEmitter as PixelStreamingEventEmitter, __webpack_exports__PixelStreamingSettings as PixelStreamingSettings, __webpack_exports__PlayOverlay as PlayOverlay, __webpack_exports__PlayStreamErrorEvent as PlayStreamErrorEvent, __webpack_exports__PlayStreamEvent as PlayStreamEvent, __webpack_exports__PlayStreamRejectedEvent as PlayStreamRejectedEvent, __webpack_exports__PlayerCountEvent as PlayerCountEvent, __webpack_exports__RemoteOutboundRTPStats as RemoteOutboundRTPStats, __webpack_exports__SDPUtils as SDPUtils, __webpack_exports__SettingBase as SettingBase, __webpack_exports__SettingFlag as SettingFlag, __webpack_exports__SettingNumber as SettingNumber, __webpack_exports__SettingOption as SettingOption, __webpack_exports__SettingText as SettingText, __webpack_exports__SettingUIBase as SettingUIBase, __webpack_exports__SettingUIFlag as SettingUIFlag, __webpack_exports__SettingUINumber as SettingUINumber, __webpack_exports__SettingUIOption as SettingUIOption, __webpack_exports__SettingUIText as SettingUIText, __webpack_exports__SettingsChangedEvent as SettingsChangedEvent, __webpack_exports__ShowOnScreenKeyboardEvent as ShowOnScreenKeyboardEvent, __webpack_exports__SignallingProtocol as SignallingProtocol, __webpack_exports__StatsReceivedEvent as StatsReceivedEvent, __webpack_exports__StreamLoadingEvent as StreamLoadingEvent, __webpack_exports__StreamPreConnectEvent as StreamPreConnectEvent, __webpack_exports__StreamPreDisconnectEvent as StreamPreDisconnectEvent, __webpack_exports__StreamReconnectEvent as StreamReconnectEvent, __webpack_exports__StreamerIDChangedMessageEvent as StreamerIDChangedMessageEvent, __webpack_exports__StreamerListMessageEvent as StreamerListMessageEvent, __webpack_exports__SubscribeFailedEvent as SubscribeFailedEvent, __webpack_exports__TextOverlay as TextOverlay, __webpack_exports__TextParameters as TextParameters, __webpack_exports__UIElementCreationMode as UIElementCreationMode, __webpack_exports__VideoEncoderAvgQPEvent as VideoEncoderAvgQPEvent, __webpack_exports__VideoInitializedEvent as VideoInitializedEvent, __webpack_exports__WebRTCSettings as WebRTCSettings, __webpack_exports__WebRtcAutoConnectEvent as WebRtcAutoConnectEvent, __webpack_exports__WebRtcConnectedEvent as WebRtcConnectedEvent, __webpack_exports__WebRtcConnectingEvent as WebRtcConnectingEvent, __webpack_exports__WebRtcDisconnectedEvent as WebRtcDisconnectedEvent, __webpack_exports__WebRtcFailedEvent as WebRtcFailedEvent, __webpack_exports__WebRtcPlayerController as WebRtcPlayerController, __webpack_exports__WebRtcSdpAnswerEvent as WebRtcSdpAnswerEvent, __webpack_exports__WebRtcSdpEvent as WebRtcSdpEvent, __webpack_exports__WebRtcSdpOfferEvent as WebRtcSdpOfferEvent, __webpack_exports__WebRtcTCPRelayDetectedEvent as WebRtcTCPRelayDetectedEvent, __webpack_exports__WebSocketTransport as WebSocketTransport, __webpack_exports__WebSocketTransportNJS as WebSocketTransportNJS, __webpack_exports__WebXRController as WebXRController, __webpack_exports__WebsocketState as WebsocketState, __webpack_exports__XrFrameEvent as XrFrameEvent, __webpack_exports__XrSessionEndedEvent as XrSessionEndedEvent, __webpack_exports__XrSessionStartedEvent as XrSessionStartedEvent, __webpack_exports__isFlagId as isFlagId, __webpack_exports__isNumericId as isNumericId, __webpack_exports__isOptionId as isOptionId, __webpack_exports__isTextId as isTextId, __webpack_exports__overrideLogger as overrideLogger };
package/index.umd.cjs CHANGED
@@ -22995,6 +22995,7 @@ class ArcwareApplication extends lib_pixelstreamingfrontend_ui_ue5_5_1.Applicati
22995
22995
  this.createAudioToggleButton();
22996
22996
  this.createMicToggleButton();
22997
22997
  this.createStopButton();
22998
+ this.applyCustomStyling();
22998
22999
  this.applyArcwareStyles();
22999
23000
  this.videoElementParent = (_b = this === null || this === void 0 ? void 0 : this.stream) === null || _b === void 0 ? void 0 : _b.videoElementParent;
23000
23001
  this.parentElement = (_c = this === null || this === void 0 ? void 0 : this.videoElementParent) === null || _c === void 0 ? void 0 : _c.parentElement;
@@ -23181,6 +23182,37 @@ class ArcwareApplication extends lib_pixelstreamingfrontend_ui_ue5_5_1.Applicati
23181
23182
  }
23182
23183
  }
23183
23184
  }
23185
+ applyCustomStyling(preset) {
23186
+ var _b;
23187
+ const resolved = preset !== null && preset !== void 0 ? preset : {
23188
+ position: "Bottom-Right",
23189
+ orientation: "Vertical",
23190
+ order_reverse: false,
23191
+ };
23192
+ const videoElementParent = (_b = this === null || this === void 0 ? void 0 : this.stream) === null || _b === void 0 ? void 0 : _b.videoElementParent;
23193
+ const playerUI = videoElementParent === null || videoElementParent === void 0 ? void 0 : videoElementParent.parentElement;
23194
+ if (!playerUI)
23195
+ return;
23196
+ const uiFeatures = playerUI.querySelector("#uiFeatures");
23197
+ if (!uiFeatures)
23198
+ return;
23199
+ // position
23200
+ uiFeatures.classList.add(ArcwarePixelStreamingApplicationStyles_1.CONTROLS_CLASSES.uiFeatures.buttons_position[resolved.position]);
23201
+ // orientation
23202
+ uiFeatures.classList.add(ArcwarePixelStreamingApplicationStyles_1.CONTROLS_CLASSES.uiFeatures.buttons_orientation[resolved.orientation]);
23203
+ // order reverse
23204
+ if (resolved.order_reverse) {
23205
+ uiFeatures.classList.add(ArcwarePixelStreamingApplicationStyles_1.CONTROLS_CLASSES.uiFeatures.buttons_reverse);
23206
+ }
23207
+ // exception - moving 'connection indicator' icon
23208
+ if (resolved.position === "Bottom-Left") {
23209
+ const connection = document.getElementById("connection");
23210
+ if (connection) {
23211
+ connection.style.right = "10px";
23212
+ connection.style.left = "auto";
23213
+ }
23214
+ }
23215
+ }
23184
23216
  uiDefaultButtonVisibilty(buttonType, id) {
23185
23217
  var _b, _c, _d;
23186
23218
  if (this === null || this === void 0 ? void 0 : this.parentElement) {
@@ -23401,6 +23433,7 @@ const ArcwareSettingsSchema_1 = __webpack_require__(9913);
23401
23433
  const whiteLabelling_1 = __webpack_require__(5292);
23402
23434
  const ZWhiteLabel_1 = __webpack_require__(1938);
23403
23435
  const EventHandler_1 = __webpack_require__(3916);
23436
+ lib_pixelstreamingfrontend_ue5_5_1.Logger.InitLogging(2, false);
23404
23437
  /** Default arcware signalling endpoint. */
23405
23438
  exports.DefaultUrl = `wss://signalling-client.ragnarok.arcware.cloud`;
23406
23439
  function deepEqual(a, b) {
@@ -23459,7 +23492,7 @@ class ArcwareConfig extends lib_pixelstreamingfrontend_ue5_5_1.Config {
23459
23492
  if (!config.initialSettings.ss)
23460
23493
  config.initialSettings.ss = exports.DefaultUrl;
23461
23494
  super(config);
23462
- this.VERSION = "1.3.32";
23495
+ this.VERSION = "1.3.39";
23463
23496
  this.whiteLabellingChanged = new EventHandler_1.EventHandler();
23464
23497
  this.signallingWlURL = "https://signalling-client.arcware.cloud/whiteLabel/";
23465
23498
  if (config.envName) {
@@ -25680,7 +25713,22 @@ tslib_1.__exportStar(__webpack_require__(6125), exports);
25680
25713
 
25681
25714
 
25682
25715
  Object.defineProperty(exports, "__esModule", ({ value: true }));
25683
- exports.ArcwareStyles = void 0;
25716
+ exports.ArcwareStyles = exports.CONTROLS_CLASSES = void 0;
25717
+ exports.CONTROLS_CLASSES = {
25718
+ uiFeatures: {
25719
+ buttons_position: {
25720
+ "Top-Left": "controls__position_tl",
25721
+ "Top-Right": "controls__position_tr",
25722
+ "Bottom-Left": "controls__position_bl",
25723
+ "Bottom-Right": "controls__position_br",
25724
+ },
25725
+ buttons_orientation: {
25726
+ "Horizontal": "controls__orientation_h",
25727
+ "Vertical": "controls__orientation_v",
25728
+ },
25729
+ buttons_reverse: "controls__order_reverse",
25730
+ }
25731
+ };
25684
25732
  exports.ArcwareStyles = {
25685
25733
  customStyles: {
25686
25734
  ":root": {
@@ -25765,18 +25813,63 @@ exports.ArcwareStyles = {
25765
25813
  background: "#18181A"
25766
25814
  },
25767
25815
  "#uiFeatures #controls": {
25768
- top: "auto",
25769
- left: "auto",
25770
- bottom: "10px",
25771
- right: "20px",
25772
25816
  display: "flex",
25773
25817
  flexDirection: "column-reverse"
25774
25818
  },
25819
+ /* START Custom position */
25820
+ // #controls
25821
+ controls: {
25822
+ gap: "0.5rem",
25823
+ "& > *": {
25824
+ marginBottom: "0 !important",
25825
+ },
25826
+ },
25827
+ // position
25828
+ uiFeatures: {
25829
+ "&.controls__position_tl #controls": {
25830
+ top: "10px",
25831
+ left: "20px",
25832
+ bottom: "auto",
25833
+ right: "auto",
25834
+ },
25835
+ "&.controls__position_tr #controls": {
25836
+ top: "10px",
25837
+ right: "20px",
25838
+ bottom: "auto",
25839
+ left: "auto",
25840
+ },
25841
+ "&.controls__position_bl #controls": {
25842
+ bottom: "10px",
25843
+ left: "20px",
25844
+ top: "auto",
25845
+ right: "auto",
25846
+ },
25847
+ "&.controls__position_br #controls": {
25848
+ bottom: "10px",
25849
+ right: "20px",
25850
+ top: "auto",
25851
+ left: "auto",
25852
+ },
25853
+ // orientation + order
25854
+ "&.controls__orientation_h #controls": {
25855
+ flexDirection: "row",
25856
+ },
25857
+ "&.controls__orientation_h.controls__order_reverse #controls": {
25858
+ flexDirection: "row-reverse",
25859
+ },
25860
+ "&.controls__orientation_v #controls": {
25861
+ flexDirection: "column",
25862
+ },
25863
+ "&.controls__orientation_v.controls__order_reverse #controls": {
25864
+ flexDirection: "column-reverse",
25865
+ },
25866
+ },
25867
+ /* END Custom position */
25775
25868
  "#uiFeatures #connection": {
25776
25869
  bottom: "5px",
25777
25870
  left: "10px",
25778
25871
  width: "2.5rem",
25779
- heihgt: "2.5rem"
25872
+ height: "2.5rem"
25780
25873
  },
25781
25874
  "#uiFeatures button": {
25782
25875
  backgroundColor: "var(--color12)",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@arcware-cloud/pixelstreaming-websdk",
3
3
  "description": "WebSDK for easy implementation of pixel streaming with Arcware Cloud Services. Heavily based on the '@epicgames-ps' library.",
4
- "version": "1.3.32",
4
+ "version": "1.3.39",
5
5
  "type": "commonjs",
6
6
  "main": "./index.cjs",
7
7
  "types": "./types/index.d.ts",
@@ -29,6 +29,7 @@ export declare class ArcwareApplication extends Application {
29
29
  private createAudioToggleButton;
30
30
  private createMicToggleButton;
31
31
  private createStopButton;
32
+ private applyCustomStyling;
32
33
  private uiDefaultButtonVisibilty;
33
34
  private preventDefaultKeyboardEvents;
34
35
  private autoPlayHandler;
@@ -29,7 +29,7 @@ export declare class ArcwareConfig extends Config {
29
29
  readonly session: Session;
30
30
  readonly settings: Settings;
31
31
  private _initialSettings;
32
- readonly VERSION = "1.3.32";
32
+ readonly VERSION = "1.3.39";
33
33
  readonly whiteLabellingChanged: EventHandler<{
34
34
  next: WhiteLabel;
35
35
  changed: boolean;
@@ -1,3 +1,10 @@
1
+ export declare const CONTROLS_CLASSES: {
2
+ uiFeatures: {
3
+ buttons_position: Record<'Top-Left' | 'Top-Right' | 'Bottom-Left' | 'Bottom-Right', string>;
4
+ buttons_orientation: Record<'Horizontal' | 'Vertical', string>;
5
+ buttons_reverse: string;
6
+ };
7
+ };
1
8
  export declare const ArcwareStyles: {
2
9
  customStyles: {
3
10
  ":root": {
@@ -85,18 +92,58 @@ export declare const ArcwareStyles: {
85
92
  background: string;
86
93
  };
87
94
  "#uiFeatures #controls": {
88
- top: string;
89
- left: string;
90
- bottom: string;
91
- right: string;
92
95
  display: string;
93
96
  flexDirection: string;
94
97
  };
98
+ controls: {
99
+ gap: string;
100
+ "& > *": {
101
+ marginBottom: string;
102
+ };
103
+ };
104
+ uiFeatures: {
105
+ "&.controls__position_tl #controls": {
106
+ top: string;
107
+ left: string;
108
+ bottom: string;
109
+ right: string;
110
+ };
111
+ "&.controls__position_tr #controls": {
112
+ top: string;
113
+ right: string;
114
+ bottom: string;
115
+ left: string;
116
+ };
117
+ "&.controls__position_bl #controls": {
118
+ bottom: string;
119
+ left: string;
120
+ top: string;
121
+ right: string;
122
+ };
123
+ "&.controls__position_br #controls": {
124
+ bottom: string;
125
+ right: string;
126
+ top: string;
127
+ left: string;
128
+ };
129
+ "&.controls__orientation_h #controls": {
130
+ flexDirection: string;
131
+ };
132
+ "&.controls__orientation_h.controls__order_reverse #controls": {
133
+ flexDirection: string;
134
+ };
135
+ "&.controls__orientation_v #controls": {
136
+ flexDirection: string;
137
+ };
138
+ "&.controls__orientation_v.controls__order_reverse #controls": {
139
+ flexDirection: string;
140
+ };
141
+ };
95
142
  "#uiFeatures #connection": {
96
143
  bottom: string;
97
144
  left: string;
98
145
  width: string;
99
- heihgt: string;
146
+ height: string;
100
147
  };
101
148
  "#uiFeatures button": {
102
149
  backgroundColor: string;