@arcware-cloud/pixelstreaming-websdk 1.3.13 → 1.3.15

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
@@ -80,6 +80,10 @@ For more detailed examples and advanced usage, please refer to our documentation
80
80
 
81
81
  # Changelog
82
82
 
83
+ ### 1.3.14
84
+
85
+ - added white labeling options for loader icon and screen
86
+
83
87
  ### 1.3.12
84
88
 
85
89
  - added orientationZoom field for managing zoom
package/index.cjs.js CHANGED
@@ -23353,11 +23353,13 @@ exports.ArcwareApplication = ArcwareApplication;
23353
23353
 
23354
23354
  Object.defineProperty(exports, "__esModule", ({ value: true }));
23355
23355
  exports.ArcwareConfig = exports.DefaultUrl = void 0;
23356
+ const tslib_1 = __webpack_require__(655);
23356
23357
  const zod_1 = __webpack_require__(8754);
23357
23358
  const lib_pixelstreamingfrontend_ue5_5_1 = __webpack_require__(693);
23358
23359
  const Session_1 = __webpack_require__(2469);
23359
23360
  const ArcwareSettingsSchema_1 = __webpack_require__(5602);
23360
23361
  const whiteLabelling_1 = __webpack_require__(3545);
23362
+ const ZWhiteLabel_1 = __webpack_require__(467);
23361
23363
  /** Default arcware signalling endpoint. */
23362
23364
  exports.DefaultUrl = `wss://signalling-client.ragnarok.arcware.cloud`;
23363
23365
  // The below Logger overrides can likely be removed as PSInfra 5.5 logger supports setting log verbosity
@@ -23421,7 +23423,7 @@ class ArcwareConfig extends lib_pixelstreamingfrontend_ue5_5_1.Config {
23421
23423
  if (!config.initialSettings.ss)
23422
23424
  config.initialSettings.ss = exports.DefaultUrl;
23423
23425
  super(config);
23424
- this.VERSION = "1.3.13";
23426
+ this.VERSION = "1.3.15";
23425
23427
  this.settings = settings;
23426
23428
  this.session = new Session_1.Session();
23427
23429
  this._initialSettings = config.initialSettings;
@@ -23433,14 +23435,70 @@ class ArcwareConfig extends lib_pixelstreamingfrontend_ue5_5_1.Config {
23433
23435
  if (this.useUrlParams) {
23434
23436
  // Get the query string from URL
23435
23437
  const qs = new URLSearchParams(window.location.search);
23436
- // Retrieve image loading from there
23437
- const wlParsed = this.useUrlParams ? (0, whiteLabelling_1.readWhiteLabelFromQuery)(qs) : undefined; // respect useUrlParams
23438
- if (wlParsed) {
23439
- this.settings.whiteLabelling = Object.assign(Object.assign({}, ((_c = this.settings.whiteLabelling) !== null && _c !== void 0 ? _c : {})), wlParsed);
23438
+ if (qs.has("wl") && qs.get("wl") !== "") {
23439
+ // Retrieve image loading from there
23440
+ const wlParsed = this.useUrlParams ? (0, whiteLabelling_1.readWhiteLabelFromQuery)(qs) : undefined; // respect useUrlParams
23441
+ if (wlParsed) {
23442
+ this.settings.whiteLabelling = Object.assign(Object.assign({}, ((_c = this.settings.whiteLabelling) !== null && _c !== void 0 ? _c : {})), wlParsed);
23443
+ }
23440
23444
  }
23441
23445
  this.settings.infoButton = qs.has("i") || qs.has("info");
23442
23446
  }
23443
23447
  }
23448
+ static getWhiteLabelling(ShareId, URL = "https://signalling-client.arcware.cloud/whiteLabel/") {
23449
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
23450
+ const qs = new URLSearchParams(window.location.search);
23451
+ if (qs.has("wl") && qs.get("wl") === "") {
23452
+ // Build final URL safely (trim trailing slashes, encode ShareId)
23453
+ const base = URL.replace(/\/+$/, "");
23454
+ const requestUrl = `${base}/${encodeURIComponent(ShareId)}`;
23455
+ const controller = new AbortController();
23456
+ const timeoutId = setTimeout(() => controller.abort(), 1000);
23457
+ try {
23458
+ const res = yield fetch(requestUrl, {
23459
+ method: "GET",
23460
+ signal: controller.signal,
23461
+ headers: { Accept: "application/json, text/plain" },
23462
+ credentials: "omit"
23463
+ });
23464
+ if (!res.ok) {
23465
+ // Non-2xx: treat as “no white label”
23466
+ return undefined;
23467
+ }
23468
+ // We read as text first to detect empty-string payloads
23469
+ const text = yield res.text();
23470
+ if (!text || text.trim() === "") {
23471
+ return undefined;
23472
+ }
23473
+ // If there is content, try to parse JSON
23474
+ let json;
23475
+ try {
23476
+ json = JSON.parse(text);
23477
+ }
23478
+ catch (_a) {
23479
+ // Not valid JSON → ignore
23480
+ return undefined;
23481
+ }
23482
+ // Validate against the allowlisted schema
23483
+ const parsed = ZWhiteLabel_1.ZWhiteLabel.safeParse(json);
23484
+ if (!parsed.success) {
23485
+ // Optionally log parsed.error for diagnostics
23486
+ return undefined;
23487
+ }
23488
+ return parsed.data;
23489
+ }
23490
+ catch (err) {
23491
+ // Abort or network error → treat as “no white label”
23492
+ // if (err?.name !== "AbortError") console.warn("getWhiteLabelling failed", err);
23493
+ return undefined;
23494
+ }
23495
+ finally {
23496
+ clearTimeout(timeoutId);
23497
+ }
23498
+ }
23499
+ return undefined;
23500
+ });
23501
+ }
23444
23502
  /** Setup connection string. */
23445
23503
  get urlFlags() {
23446
23504
  var _a;
@@ -24361,7 +24419,7 @@ class ArcwarePixelStreaming extends lib_pixelstreamingfrontend_ue5_5_1.PixelStre
24361
24419
  });
24362
24420
  }
24363
24421
  applyBrandingFromSettings() {
24364
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
24422
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
24365
24423
  const cfg = ((_b = (_a = this === null || this === void 0 ? void 0 : this.config) === null || _a === void 0 ? void 0 : _a.settings.whiteLabelling) !== null && _b !== void 0 ? _b : {});
24366
24424
  // Loader image + fade
24367
24425
  try {
@@ -24370,25 +24428,36 @@ class ArcwarePixelStreaming extends lib_pixelstreamingfrontend_ue5_5_1.PixelStre
24370
24428
  (_f = (_e = this.logoLoader).setFade) === null || _f === void 0 ? void 0 : _f.call(_e, cfg.loadingIconFadeMs);
24371
24429
  }
24372
24430
  }
24373
- catch (_p) { }
24374
- // Splash on loveLettersContainer (preferred), fallback to player parent
24431
+ catch (_q) { }
24432
+ // Pick splash host: loveLettersContainer (preferred) or player parent
24375
24433
  try {
24376
24434
  const el = (_m = (_g = this.loveLettersContainer) !== null && _g !== void 0 ? _g : (_l = (_k = (_j = (_h = this.webRtcController) === null || _h === void 0 ? void 0 : _h.videoPlayer) === null || _j === void 0 ? void 0 : _j.getVideoParentElement) === null || _k === void 0 ? void 0 : _k.call(_j)) === null || _l === void 0 ? void 0 : _l.parentElement) !== null && _m !== void 0 ? _m : null;
24377
24435
  if (!el)
24378
24436
  return;
24379
- // Clear previous inline choices
24380
24437
  const s = el.style;
24438
+ // Nuke previous inline styles (longhands only; never touch 'background' shorthand here)
24381
24439
  s.removeProperty("background-image");
24382
24440
  s.removeProperty("background-size");
24383
24441
  s.removeProperty("background-repeat");
24384
24442
  s.removeProperty("background-position");
24385
24443
  s.removeProperty("background-color");
24444
+ // Also clear any earlier 'background' inline shorthand that might have been set elsewhere
24445
+ // (we set to 'initial' first, then re-apply longhands)
24446
+ s.setProperty("background", "initial");
24386
24447
  el.classList.remove("aw-splash");
24387
- if (cfg.splashScreenUrl) {
24388
- el.classList.add("aw-splash"); // keeps your global defaults
24389
- // Compute mode (default to 'contain' if not provided)
24390
- const mode = ((_o = cfg.splashScreenMode) !== null && _o !== void 0 ? _o : "contain");
24391
- // Apply sizing/repeat per mode
24448
+ // If neither color nor image is provided, nothing to do
24449
+ const haveColor = !!cfg.splashScreenBgColor;
24450
+ const haveImage = !!cfg.splashScreenUrl;
24451
+ if (!haveColor && !haveImage)
24452
+ return;
24453
+ // Always ensure our class is present when we brand
24454
+ el.classList.add("aw-splash");
24455
+ // Apply color with !important so external 'background: ... !important' can't wipe it
24456
+ const bgColor = (_o = cfg.splashScreenBgColor) !== null && _o !== void 0 ? _o : "var(--color0)";
24457
+ s.setProperty("background-color", bgColor, "important");
24458
+ if (haveImage) {
24459
+ // Mode → size/repeat mapping
24460
+ const mode = ((_p = cfg.splashScreenMode) !== null && _p !== void 0 ? _p : "contain");
24392
24461
  switch (mode) {
24393
24462
  case "contain":
24394
24463
  s.backgroundSize = "contain";
@@ -24403,17 +24472,25 @@ class ArcwarePixelStreaming extends lib_pixelstreamingfrontend_ue5_5_1.PixelStre
24403
24472
  s.backgroundRepeat = "no-repeat";
24404
24473
  break;
24405
24474
  case "repeat":
24406
- s.backgroundSize = "auto"; // keep intrinsic px
24475
+ s.backgroundSize = "auto"; // intrinsic
24407
24476
  s.backgroundRepeat = "repeat";
24408
24477
  break;
24409
24478
  }
24410
- // Position & color (optional)
24479
+ // Position
24411
24480
  s.backgroundPosition = cfg.splashScreenPosition || "center center";
24412
- s.backgroundColor = cfg.splashScreenBgColor || "var(--color0)";
24481
+ // Image last (longhand so it won't reset color)
24482
+ // Use quotes to be safe with URLs containing parentheses/spaces
24413
24483
  s.backgroundImage = `url("${cfg.splashScreenUrl}")`;
24414
24484
  }
24485
+ else {
24486
+ // No image → ensure any previous image is cleared
24487
+ s.backgroundImage = "none";
24488
+ s.backgroundRepeat = "no-repeat";
24489
+ s.backgroundPosition = "center center";
24490
+ s.backgroundSize = "auto";
24491
+ }
24415
24492
  }
24416
- catch (_q) { }
24493
+ catch (_r) { }
24417
24494
  }
24418
24495
  }
24419
24496
  exports.ArcwarePixelStreaming = ArcwarePixelStreaming;
@@ -24429,6 +24506,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
24429
24506
  exports.ArcwareSettingsSchema = void 0;
24430
24507
  const zod_1 = __webpack_require__(8754);
24431
24508
  const shared_pixelstreaming_websdk_1 = __webpack_require__(7910);
24509
+ const ZWhiteLabel_1 = __webpack_require__(467);
24432
24510
  /** Arcware Settings. */
24433
24511
  exports.ArcwareSettingsSchema = zod_1.z.object({
24434
24512
  /** Overwrites the Session-Tool and uses the provided session instead. */
@@ -24487,7 +24565,7 @@ exports.ArcwareSettingsSchema = zod_1.z.object({
24487
24565
  .strict()
24488
24566
  .optional(),
24489
24567
  /** Loader customization */
24490
- whiteLabelling: shared_pixelstreaming_websdk_1.ZWhiteLabel.optional()
24568
+ whiteLabelling: ZWhiteLabel_1.ZWhiteLabel.optional()
24491
24569
  });
24492
24570
 
24493
24571
 
@@ -25278,6 +25356,40 @@ class DiagnosticsCollector {
25278
25356
  exports.DiagnosticsCollector = DiagnosticsCollector;
25279
25357
 
25280
25358
 
25359
+ /***/ }),
25360
+
25361
+ /***/ 467:
25362
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
25363
+
25364
+
25365
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
25366
+ exports.ZWhiteLabel = void 0;
25367
+ const zod_1 = __webpack_require__(8754);
25368
+ /** Absolute HTTPS URL (no http) */
25369
+ const AbsoluteHttpsUrl = zod_1.z
25370
+ .string()
25371
+ .url()
25372
+ .refine((u) => u.startsWith("https://"), { message: "URL must use https://" });
25373
+ /** Relative path (no scheme like http:, data:, javascript:, etc.) */
25374
+ const RelativePath = zod_1.z
25375
+ .string()
25376
+ .min(1)
25377
+ .refine((s) => !/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(s), { message: "Expected a relative path without a URL scheme" });
25378
+ /** Image URL can be absolute (https) or relative (e.g. /assets/logo.png, ./img.png) */
25379
+ const ImageUrl = zod_1.z.union([AbsoluteHttpsUrl, RelativePath]);
25380
+ /** Strict allowlist for white-label brand fields coming from the URL */
25381
+ exports.ZWhiteLabel = zod_1.z
25382
+ .object({
25383
+ loadingIconUrl: ImageUrl.optional(),
25384
+ loadingIconFadeMs: zod_1.z.number().int().positive().optional(),
25385
+ splashScreenUrl: ImageUrl.optional(),
25386
+ splashScreenMode: zod_1.z.enum(["contain", "cover", "stretch", "repeat"]).optional(),
25387
+ splashScreenPosition: zod_1.z.string().optional(),
25388
+ splashScreenBgColor: zod_1.z.string().optional()
25389
+ })
25390
+ .strict();
25391
+
25392
+
25281
25393
  /***/ }),
25282
25394
 
25283
25395
  /***/ 2483:
@@ -25414,7 +25526,7 @@ exports.waitForElement = waitForElement;
25414
25526
 
25415
25527
  Object.defineProperty(exports, "__esModule", ({ value: true }));
25416
25528
  exports.readWhiteLabelFromQuery = void 0;
25417
- const shared_pixelstreaming_websdk_1 = __webpack_require__(7910);
25529
+ const ZWhiteLabel_1 = __webpack_require__(467);
25418
25530
  function decodeBase64OrBase64Url(raw) {
25419
25531
  const normalized = raw.replace(/-/g, "+").replace(/_/g, "/");
25420
25532
  const padded = normalized + "===".slice((normalized.length + 3) % 4);
@@ -25425,14 +25537,13 @@ function decodeBase64OrBase64Url(raw) {
25425
25537
  }
25426
25538
  /** Parse ?wl=... (or ?whitelabel=...) → validated partial settings */
25427
25539
  function readWhiteLabelFromQuery(qs) {
25428
- var _a;
25429
25540
  try {
25430
- const raw = (_a = qs.get("wl")) !== null && _a !== void 0 ? _a : qs.get("whitelabel");
25541
+ const raw = qs.get("wl");
25431
25542
  if (!raw)
25432
25543
  return undefined;
25433
25544
  const jsonStr = decodeBase64OrBase64Url(raw);
25434
25545
  const obj = JSON.parse(jsonStr);
25435
- const parsed = shared_pixelstreaming_websdk_1.ZWhiteLabel.safeParse(obj);
25546
+ const parsed = ZWhiteLabel_1.ZWhiteLabel.safeParse(obj);
25436
25547
  if (!parsed.success) {
25437
25548
  //console.warn("[ArcwareConfig] Invalid wl payload:", parsed.error?.flatten?.());
25438
25549
  return undefined;
@@ -27146,40 +27257,6 @@ exports.Send = {
27146
27257
  };
27147
27258
 
27148
27259
 
27149
- /***/ }),
27150
-
27151
- /***/ 6750:
27152
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
27153
-
27154
-
27155
- Object.defineProperty(exports, "__esModule", ({ value: true }));
27156
- exports.ZWhiteLabel = void 0;
27157
- const zod_1 = __webpack_require__(8754);
27158
- /** Absolute HTTPS URL (no http) */
27159
- const AbsoluteHttpsUrl = zod_1.z
27160
- .string()
27161
- .url()
27162
- .refine((u) => u.startsWith("https://"), { message: "URL must use https://" });
27163
- /** Relative path (no scheme like http:, data:, javascript:, etc.) */
27164
- const RelativePath = zod_1.z
27165
- .string()
27166
- .min(1)
27167
- .refine((s) => !/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(s), { message: "Expected a relative path without a URL scheme" });
27168
- /** Image URL can be absolute (https) or relative (e.g. /assets/logo.png, ./img.png) */
27169
- const ImageUrl = zod_1.z.union([AbsoluteHttpsUrl, RelativePath]);
27170
- /** Strict allowlist for white-label brand fields coming from the URL */
27171
- exports.ZWhiteLabel = zod_1.z
27172
- .object({
27173
- loadingIconUrl: ImageUrl.optional(),
27174
- loadingIconFadeMs: zod_1.z.number().int().positive().optional(),
27175
- splashScreenUrl: ImageUrl.optional(),
27176
- splashScreenMode: zod_1.z.enum(["contain", "cover", "stretch", "repeat"]).optional(),
27177
- splashScreenPosition: zod_1.z.string().optional(),
27178
- splashScreenBgColor: zod_1.z.string().optional()
27179
- })
27180
- .strict();
27181
-
27182
-
27183
27260
  /***/ }),
27184
27261
 
27185
27262
  /***/ 318:
@@ -27187,10 +27264,8 @@ exports.ZWhiteLabel = zod_1.z
27187
27264
 
27188
27265
 
27189
27266
  Object.defineProperty(exports, "__esModule", ({ value: true }));
27190
- exports.ZWhiteLabel = exports.Messages = void 0;
27267
+ exports.Messages = void 0;
27191
27268
  exports.Messages = __webpack_require__(5387);
27192
- var ZWhiteLabel_1 = __webpack_require__(6750);
27193
- Object.defineProperty(exports, "ZWhiteLabel", ({ enumerable: true, get: function () { return ZWhiteLabel_1.ZWhiteLabel; } }));
27194
27269
 
27195
27270
 
27196
27271
  /***/ }),
package/index.esm.js CHANGED
@@ -23356,12 +23356,16 @@ __webpack_require__.r(__webpack_exports__);
23356
23356
  /* harmony export */ "ArcwareConfig": () => (/* binding */ ArcwareConfig),
23357
23357
  /* harmony export */ "DefaultUrl": () => (/* binding */ DefaultUrl)
23358
23358
  /* harmony export */ });
23359
- /* harmony import */ var zod__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1604);
23360
- /* harmony import */ var _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7800);
23361
- /* harmony import */ var _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7463);
23359
+ /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(655);
23360
+ /* harmony import */ var zod__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1604);
23361
+ /* harmony import */ var _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7800);
23362
+ /* harmony import */ var _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7463);
23362
23363
  /* harmony import */ var _domain_Session__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2469);
23363
23364
  /* harmony import */ var _domain_ArcwareSettingsSchema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5602);
23364
23365
  /* harmony import */ var _features_whiteLabelling__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3545);
23366
+ /* harmony import */ var _features_ZWhiteLabel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(467);
23367
+
23368
+
23365
23369
 
23366
23370
 
23367
23371
 
@@ -23381,8 +23385,8 @@ Logger.Error = (message: string) => {
23381
23385
  if (message?.startsWith("unhandled Stat Type")) return;
23382
23386
  console.error(message);
23383
23387
  };*/
23384
- _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_3__.Logger.InitLogging(2, false);
23385
- class ArcwareConfig extends _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_4__.Config {
23388
+ _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_4__.Logger.InitLogging(2, false);
23389
+ class ArcwareConfig extends _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_5__.Config {
23386
23390
  /**
23387
23391
  * Can be used to fetch projectId and shareId from the current url.
23388
23392
  * Example:
@@ -23401,8 +23405,8 @@ class ArcwareConfig extends _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBP
23401
23405
  static PickIdsOfUrl() {
23402
23406
  const { pathname } = new URL(window.location.href);
23403
23407
  const sections = pathname.split("/");
23404
- const projectId = sections.find((section) => zod__WEBPACK_IMPORTED_MODULE_5__.z.string().uuid().safeParse(section).success);
23405
- const shareId = sections.find((section) => zod__WEBPACK_IMPORTED_MODULE_5__.z.string().startsWith("share-").safeParse(section).success);
23408
+ const projectId = sections.find((section) => zod__WEBPACK_IMPORTED_MODULE_6__.z.string().uuid().safeParse(section).success);
23409
+ const shareId = sections.find((section) => zod__WEBPACK_IMPORTED_MODULE_6__.z.string().startsWith("share-").safeParse(section).success);
23406
23410
  return {
23407
23411
  projectId,
23408
23412
  shareId
@@ -23430,26 +23434,82 @@ class ArcwareConfig extends _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBP
23430
23434
  if (!config.initialSettings.ss)
23431
23435
  config.initialSettings.ss = DefaultUrl;
23432
23436
  super(config);
23433
- this.VERSION = "1.3.13";
23437
+ this.VERSION = "1.3.15";
23434
23438
  this.settings = settings;
23435
23439
  this.session = new _domain_Session__WEBPACK_IMPORTED_MODULE_0__.Session();
23436
23440
  this._initialSettings = config.initialSettings;
23437
23441
  // Setup arcware default settings.
23438
- this.setFlagEnabled(_epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_4__.Flags.AFKDetection, true);
23442
+ this.setFlagEnabled(_epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_5__.Flags.AFKDetection, true);
23439
23443
  // IMPORTANT NOTE: The feature BrowserSendOffer is no longer supported in PSInfra 5.5.
23440
23444
  // The offer is now expected to come from UE. Ensure that your signalling server supports this behaviour.
23441
23445
  //this.setFlagEnabled(Flags.BrowserSendOffer, true);
23442
23446
  if (this.useUrlParams) {
23443
23447
  // Get the query string from URL
23444
23448
  const qs = new URLSearchParams(window.location.search);
23445
- // Retrieve image loading from there
23446
- const wlParsed = this.useUrlParams ? (0,_features_whiteLabelling__WEBPACK_IMPORTED_MODULE_2__.readWhiteLabelFromQuery)(qs) : undefined; // respect useUrlParams
23447
- if (wlParsed) {
23448
- this.settings.whiteLabelling = Object.assign(Object.assign({}, ((_c = this.settings.whiteLabelling) !== null && _c !== void 0 ? _c : {})), wlParsed);
23449
+ if (qs.has("wl") && qs.get("wl") !== "") {
23450
+ // Retrieve image loading from there
23451
+ const wlParsed = this.useUrlParams ? (0,_features_whiteLabelling__WEBPACK_IMPORTED_MODULE_2__.readWhiteLabelFromQuery)(qs) : undefined; // respect useUrlParams
23452
+ if (wlParsed) {
23453
+ this.settings.whiteLabelling = Object.assign(Object.assign({}, ((_c = this.settings.whiteLabelling) !== null && _c !== void 0 ? _c : {})), wlParsed);
23454
+ }
23449
23455
  }
23450
23456
  this.settings.infoButton = qs.has("i") || qs.has("info");
23451
23457
  }
23452
23458
  }
23459
+ static getWhiteLabelling(ShareId, URL = "https://signalling-client.arcware.cloud/whiteLabel/") {
23460
+ return (0,tslib__WEBPACK_IMPORTED_MODULE_7__.__awaiter)(this, void 0, void 0, function* () {
23461
+ const qs = new URLSearchParams(window.location.search);
23462
+ if (qs.has("wl") && qs.get("wl") === "") {
23463
+ // Build final URL safely (trim trailing slashes, encode ShareId)
23464
+ const base = URL.replace(/\/+$/, "");
23465
+ const requestUrl = `${base}/${encodeURIComponent(ShareId)}`;
23466
+ const controller = new AbortController();
23467
+ const timeoutId = setTimeout(() => controller.abort(), 1000);
23468
+ try {
23469
+ const res = yield fetch(requestUrl, {
23470
+ method: "GET",
23471
+ signal: controller.signal,
23472
+ headers: { Accept: "application/json, text/plain" },
23473
+ credentials: "omit"
23474
+ });
23475
+ if (!res.ok) {
23476
+ // Non-2xx: treat as “no white label”
23477
+ return undefined;
23478
+ }
23479
+ // We read as text first to detect empty-string payloads
23480
+ const text = yield res.text();
23481
+ if (!text || text.trim() === "") {
23482
+ return undefined;
23483
+ }
23484
+ // If there is content, try to parse JSON
23485
+ let json;
23486
+ try {
23487
+ json = JSON.parse(text);
23488
+ }
23489
+ catch (_a) {
23490
+ // Not valid JSON → ignore
23491
+ return undefined;
23492
+ }
23493
+ // Validate against the allowlisted schema
23494
+ const parsed = _features_ZWhiteLabel__WEBPACK_IMPORTED_MODULE_3__.ZWhiteLabel.safeParse(json);
23495
+ if (!parsed.success) {
23496
+ // Optionally log parsed.error for diagnostics
23497
+ return undefined;
23498
+ }
23499
+ return parsed.data;
23500
+ }
23501
+ catch (err) {
23502
+ // Abort or network error → treat as “no white label”
23503
+ // if (err?.name !== "AbortError") console.warn("getWhiteLabelling failed", err);
23504
+ return undefined;
23505
+ }
23506
+ finally {
23507
+ clearTimeout(timeoutId);
23508
+ }
23509
+ }
23510
+ return undefined;
23511
+ });
23512
+ }
23453
23513
  /** Setup connection string. */
23454
23514
  get urlFlags() {
23455
23515
  var _a;
@@ -23501,7 +23561,7 @@ class ArcwareConfig extends _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBP
23501
23561
  return this._initialSettings;
23502
23562
  }
23503
23563
  modifyInitialSettings(mouseLock) {
23504
- this.setFlagEnabled(_epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_4__.Flags.HoveringMouseMode, mouseLock);
23564
+ this.setFlagEnabled(_epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_5__.Flags.HoveringMouseMode, mouseLock);
23505
23565
  }
23506
23566
  }
23507
23567
 
@@ -24388,7 +24448,7 @@ class ArcwarePixelStreaming extends _epicgames_ps_lib_pixelstreamingfrontend_ue5
24388
24448
  });
24389
24449
  }
24390
24450
  applyBrandingFromSettings() {
24391
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
24451
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
24392
24452
  const cfg = ((_b = (_a = this === null || this === void 0 ? void 0 : this.config) === null || _a === void 0 ? void 0 : _a.settings.whiteLabelling) !== null && _b !== void 0 ? _b : {});
24393
24453
  // Loader image + fade
24394
24454
  try {
@@ -24397,25 +24457,36 @@ class ArcwarePixelStreaming extends _epicgames_ps_lib_pixelstreamingfrontend_ue5
24397
24457
  (_f = (_e = this.logoLoader).setFade) === null || _f === void 0 ? void 0 : _f.call(_e, cfg.loadingIconFadeMs);
24398
24458
  }
24399
24459
  }
24400
- catch (_p) { }
24401
- // Splash on loveLettersContainer (preferred), fallback to player parent
24460
+ catch (_q) { }
24461
+ // Pick splash host: loveLettersContainer (preferred) or player parent
24402
24462
  try {
24403
24463
  const el = (_m = (_g = this.loveLettersContainer) !== null && _g !== void 0 ? _g : (_l = (_k = (_j = (_h = this.webRtcController) === null || _h === void 0 ? void 0 : _h.videoPlayer) === null || _j === void 0 ? void 0 : _j.getVideoParentElement) === null || _k === void 0 ? void 0 : _k.call(_j)) === null || _l === void 0 ? void 0 : _l.parentElement) !== null && _m !== void 0 ? _m : null;
24404
24464
  if (!el)
24405
24465
  return;
24406
- // Clear previous inline choices
24407
24466
  const s = el.style;
24467
+ // Nuke previous inline styles (longhands only; never touch 'background' shorthand here)
24408
24468
  s.removeProperty("background-image");
24409
24469
  s.removeProperty("background-size");
24410
24470
  s.removeProperty("background-repeat");
24411
24471
  s.removeProperty("background-position");
24412
24472
  s.removeProperty("background-color");
24473
+ // Also clear any earlier 'background' inline shorthand that might have been set elsewhere
24474
+ // (we set to 'initial' first, then re-apply longhands)
24475
+ s.setProperty("background", "initial");
24413
24476
  el.classList.remove("aw-splash");
24414
- if (cfg.splashScreenUrl) {
24415
- el.classList.add("aw-splash"); // keeps your global defaults
24416
- // Compute mode (default to 'contain' if not provided)
24417
- const mode = ((_o = cfg.splashScreenMode) !== null && _o !== void 0 ? _o : "contain");
24418
- // Apply sizing/repeat per mode
24477
+ // If neither color nor image is provided, nothing to do
24478
+ const haveColor = !!cfg.splashScreenBgColor;
24479
+ const haveImage = !!cfg.splashScreenUrl;
24480
+ if (!haveColor && !haveImage)
24481
+ return;
24482
+ // Always ensure our class is present when we brand
24483
+ el.classList.add("aw-splash");
24484
+ // Apply color with !important so external 'background: ... !important' can't wipe it
24485
+ const bgColor = (_o = cfg.splashScreenBgColor) !== null && _o !== void 0 ? _o : "var(--color0)";
24486
+ s.setProperty("background-color", bgColor, "important");
24487
+ if (haveImage) {
24488
+ // Mode → size/repeat mapping
24489
+ const mode = ((_p = cfg.splashScreenMode) !== null && _p !== void 0 ? _p : "contain");
24419
24490
  switch (mode) {
24420
24491
  case "contain":
24421
24492
  s.backgroundSize = "contain";
@@ -24430,17 +24501,25 @@ class ArcwarePixelStreaming extends _epicgames_ps_lib_pixelstreamingfrontend_ue5
24430
24501
  s.backgroundRepeat = "no-repeat";
24431
24502
  break;
24432
24503
  case "repeat":
24433
- s.backgroundSize = "auto"; // keep intrinsic px
24504
+ s.backgroundSize = "auto"; // intrinsic
24434
24505
  s.backgroundRepeat = "repeat";
24435
24506
  break;
24436
24507
  }
24437
- // Position & color (optional)
24508
+ // Position
24438
24509
  s.backgroundPosition = cfg.splashScreenPosition || "center center";
24439
- s.backgroundColor = cfg.splashScreenBgColor || "var(--color0)";
24510
+ // Image last (longhand so it won't reset color)
24511
+ // Use quotes to be safe with URLs containing parentheses/spaces
24440
24512
  s.backgroundImage = `url("${cfg.splashScreenUrl}")`;
24441
24513
  }
24514
+ else {
24515
+ // No image → ensure any previous image is cleared
24516
+ s.backgroundImage = "none";
24517
+ s.backgroundRepeat = "no-repeat";
24518
+ s.backgroundPosition = "center center";
24519
+ s.backgroundSize = "auto";
24520
+ }
24442
24521
  }
24443
- catch (_q) { }
24522
+ catch (_r) { }
24444
24523
  }
24445
24524
  }
24446
24525
 
@@ -24454,68 +24533,70 @@ __webpack_require__.r(__webpack_exports__);
24454
24533
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
24455
24534
  /* harmony export */ "ArcwareSettingsSchema": () => (/* binding */ ArcwareSettingsSchema)
24456
24535
  /* harmony export */ });
24457
- /* harmony import */ var zod__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1604);
24536
+ /* harmony import */ var zod__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1604);
24458
24537
  /* harmony import */ var _arcware_cloud_shared_pixelstreaming_websdk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7910);
24538
+ /* harmony import */ var _features_ZWhiteLabel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(467);
24539
+
24459
24540
 
24460
24541
 
24461
24542
  /** Arcware Settings. */
24462
- const ArcwareSettingsSchema = zod__WEBPACK_IMPORTED_MODULE_1__.z.object({
24543
+ const ArcwareSettingsSchema = zod__WEBPACK_IMPORTED_MODULE_2__.z.object({
24463
24544
  /** Overwrites the Session-Tool and uses the provided session instead. */
24464
- session: zod__WEBPACK_IMPORTED_MODULE_1__.z.string().optional(),
24545
+ session: zod__WEBPACK_IMPORTED_MODULE_2__.z.string().optional(),
24465
24546
  /** Can be used to be added to the request in order to verify access to private projects.
24466
24547
  * For internal use only. => Preview page.
24467
24548
  */
24468
- token: zod__WEBPACK_IMPORTED_MODULE_1__.z.string().optional(),
24549
+ token: zod__WEBPACK_IMPORTED_MODULE_2__.z.string().optional(),
24469
24550
  /** @deprecated in there for legacy use. Can only be used when token is provided. */
24470
- bypass: zod__WEBPACK_IMPORTED_MODULE_1__.z.boolean().optional(),
24551
+ bypass: zod__WEBPACK_IMPORTED_MODULE_2__.z.boolean().optional(),
24471
24552
  // /** Configure DirectFlow Token. */
24472
24553
  // directFlow: z.string().optional(),
24473
24554
  /** Handler for server side error messages. */
24474
- errorHandler: zod__WEBPACK_IMPORTED_MODULE_1__.z["function"]().args(_arcware_cloud_shared_pixelstreaming_websdk__WEBPACK_IMPORTED_MODULE_0__.Messages.ZErrorMessage).returns(zod__WEBPACK_IMPORTED_MODULE_1__.z["void"]()).optional(),
24555
+ errorHandler: zod__WEBPACK_IMPORTED_MODULE_2__.z["function"]().args(_arcware_cloud_shared_pixelstreaming_websdk__WEBPACK_IMPORTED_MODULE_0__.Messages.ZErrorMessage).returns(zod__WEBPACK_IMPORTED_MODULE_2__.z["void"]()).optional(),
24475
24556
  /** Handler for queue events. */
24476
- queueHandler: zod__WEBPACK_IMPORTED_MODULE_1__.z["function"]().args(_arcware_cloud_shared_pixelstreaming_websdk__WEBPACK_IMPORTED_MODULE_0__.Messages.ZQueue).returns(zod__WEBPACK_IMPORTED_MODULE_1__.z["void"]()).optional(),
24557
+ queueHandler: zod__WEBPACK_IMPORTED_MODULE_2__.z["function"]().args(_arcware_cloud_shared_pixelstreaming_websdk__WEBPACK_IMPORTED_MODULE_0__.Messages.ZQueue).returns(zod__WEBPACK_IMPORTED_MODULE_2__.z["void"]()).optional(),
24477
24558
  /** Handler for sessionId message. */
24478
- sessionIdHandler: zod__WEBPACK_IMPORTED_MODULE_1__.z["function"]().args(zod__WEBPACK_IMPORTED_MODULE_1__.z.string()).returns(zod__WEBPACK_IMPORTED_MODULE_1__.z["void"]()).optional(),
24559
+ sessionIdHandler: zod__WEBPACK_IMPORTED_MODULE_2__.z["function"]().args(zod__WEBPACK_IMPORTED_MODULE_2__.z.string()).returns(zod__WEBPACK_IMPORTED_MODULE_2__.z["void"]()).optional(),
24479
24560
  /** Handler for love letters.
24480
24561
  * "LoveLetters" are send from backend to the SDK to state what phase the connection currently is in. */
24481
- loveLetterHandler: zod__WEBPACK_IMPORTED_MODULE_1__.z["function"]().args(_arcware_cloud_shared_pixelstreaming_websdk__WEBPACK_IMPORTED_MODULE_0__.Messages.ZLoveLetter).returns(zod__WEBPACK_IMPORTED_MODULE_1__.z["void"]()).optional(),
24562
+ loveLetterHandler: zod__WEBPACK_IMPORTED_MODULE_2__.z["function"]().args(_arcware_cloud_shared_pixelstreaming_websdk__WEBPACK_IMPORTED_MODULE_0__.Messages.ZLoveLetter).returns(zod__WEBPACK_IMPORTED_MODULE_2__.z["void"]()).optional(),
24482
24563
  /** Show or hide the fullscreen button. */
24483
- fullscreenButton: zod__WEBPACK_IMPORTED_MODULE_1__.z.boolean().optional(),
24564
+ fullscreenButton: zod__WEBPACK_IMPORTED_MODULE_2__.z.boolean().optional(),
24484
24565
  /** Show or hide the settings button. */
24485
- settingsButton: zod__WEBPACK_IMPORTED_MODULE_1__.z.boolean().optional(),
24566
+ settingsButton: zod__WEBPACK_IMPORTED_MODULE_2__.z.boolean().optional(),
24486
24567
  /** Show or hide the info button. */
24487
- infoButton: zod__WEBPACK_IMPORTED_MODULE_1__.z.boolean().optional(),
24568
+ infoButton: zod__WEBPACK_IMPORTED_MODULE_2__.z.boolean().optional(),
24488
24569
  /** Show or hide the audio button. */
24489
- audioButton: zod__WEBPACK_IMPORTED_MODULE_1__.z.boolean().optional(),
24570
+ audioButton: zod__WEBPACK_IMPORTED_MODULE_2__.z.boolean().optional(),
24490
24571
  /** Show or hide the microphone button. */
24491
- micButton: zod__WEBPACK_IMPORTED_MODULE_1__.z.boolean().optional(),
24572
+ micButton: zod__WEBPACK_IMPORTED_MODULE_2__.z.boolean().optional(),
24492
24573
  /** Show or hide the microphone button. */
24493
- stopButton: zod__WEBPACK_IMPORTED_MODULE_1__.z.boolean().optional(),
24574
+ stopButton: zod__WEBPACK_IMPORTED_MODULE_2__.z.boolean().optional(),
24494
24575
  /** Show or hide the connectionStrengthIcon button. */
24495
- connectionStrengthIcon: zod__WEBPACK_IMPORTED_MODULE_1__.z.boolean().optional(),
24576
+ connectionStrengthIcon: zod__WEBPACK_IMPORTED_MODULE_2__.z.boolean().optional(),
24496
24577
  /** ShareId, used for sharing your project.
24497
24578
  * Using ArcwareInit will set this required property for you. */
24498
- shareId: zod__WEBPACK_IMPORTED_MODULE_1__.z.string().startsWith("share-").optional(),
24579
+ shareId: zod__WEBPACK_IMPORTED_MODULE_2__.z.string().startsWith("share-").optional(),
24499
24580
  /** Id of your project, only required if your shareId refers to multiple projects.
24500
24581
  * Using ArcwareInit will set this required property for you. */
24501
- projectId: zod__WEBPACK_IMPORTED_MODULE_1__.z.string().optional(),
24582
+ projectId: zod__WEBPACK_IMPORTED_MODULE_2__.z.string().optional(),
24502
24583
  /** Enable/Disable LoveLetter logging to the console. */
24503
- loveLetterLogging: zod__WEBPACK_IMPORTED_MODULE_1__.z.boolean().optional(),
24584
+ loveLetterLogging: zod__WEBPACK_IMPORTED_MODULE_2__.z.boolean().optional(),
24504
24585
  /** Enable/Disable Connection Identifier logging to the console. */
24505
- connectionIdentifierLoggingDisabled: zod__WEBPACK_IMPORTED_MODULE_1__.z.boolean().optional(),
24586
+ connectionIdentifierLoggingDisabled: zod__WEBPACK_IMPORTED_MODULE_2__.z.boolean().optional(),
24506
24587
  /** Width with which instance should be started */
24507
- startWidth: zod__WEBPACK_IMPORTED_MODULE_1__.z.number().optional(),
24588
+ startWidth: zod__WEBPACK_IMPORTED_MODULE_2__.z.number().optional(),
24508
24589
  /** Height with which instance should be started */
24509
- startHeight: zod__WEBPACK_IMPORTED_MODULE_1__.z.number().optional(),
24590
+ startHeight: zod__WEBPACK_IMPORTED_MODULE_2__.z.number().optional(),
24510
24591
  /** Zoom functionality */
24511
- orientationZoom: zod__WEBPACK_IMPORTED_MODULE_1__.z.object({
24512
- landscape: zod__WEBPACK_IMPORTED_MODULE_1__.z.number(),
24513
- portrait: zod__WEBPACK_IMPORTED_MODULE_1__.z.number()
24592
+ orientationZoom: zod__WEBPACK_IMPORTED_MODULE_2__.z.object({
24593
+ landscape: zod__WEBPACK_IMPORTED_MODULE_2__.z.number(),
24594
+ portrait: zod__WEBPACK_IMPORTED_MODULE_2__.z.number()
24514
24595
  })
24515
24596
  .strict()
24516
24597
  .optional(),
24517
24598
  /** Loader customization */
24518
- whiteLabelling: _arcware_cloud_shared_pixelstreaming_websdk__WEBPACK_IMPORTED_MODULE_0__.ZWhiteLabel.optional()
24599
+ whiteLabelling: _features_ZWhiteLabel__WEBPACK_IMPORTED_MODULE_1__.ZWhiteLabel.optional()
24519
24600
  });
24520
24601
 
24521
24602
 
@@ -25316,6 +25397,39 @@ class DiagnosticsCollector {
25316
25397
  }
25317
25398
 
25318
25399
 
25400
+ /***/ }),
25401
+
25402
+ /***/ 467:
25403
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
25404
+
25405
+ __webpack_require__.r(__webpack_exports__);
25406
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
25407
+ /* harmony export */ "ZWhiteLabel": () => (/* binding */ ZWhiteLabel)
25408
+ /* harmony export */ });
25409
+ /* harmony import */ var zod__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1604);
25410
+
25411
+ /** Absolute HTTPS URL (no http) */
25412
+ const AbsoluteHttpsUrl = zod__WEBPACK_IMPORTED_MODULE_0__.z.string()
25413
+ .url()
25414
+ .refine((u) => u.startsWith("https://"), { message: "URL must use https://" });
25415
+ /** Relative path (no scheme like http:, data:, javascript:, etc.) */
25416
+ const RelativePath = zod__WEBPACK_IMPORTED_MODULE_0__.z.string()
25417
+ .min(1)
25418
+ .refine((s) => !/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(s), { message: "Expected a relative path without a URL scheme" });
25419
+ /** Image URL can be absolute (https) or relative (e.g. /assets/logo.png, ./img.png) */
25420
+ const ImageUrl = zod__WEBPACK_IMPORTED_MODULE_0__.z.union([AbsoluteHttpsUrl, RelativePath]);
25421
+ /** Strict allowlist for white-label brand fields coming from the URL */
25422
+ const ZWhiteLabel = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({
25423
+ loadingIconUrl: ImageUrl.optional(),
25424
+ loadingIconFadeMs: zod__WEBPACK_IMPORTED_MODULE_0__.z.number().int().positive().optional(),
25425
+ splashScreenUrl: ImageUrl.optional(),
25426
+ splashScreenMode: zod__WEBPACK_IMPORTED_MODULE_0__.z["enum"](["contain", "cover", "stretch", "repeat"]).optional(),
25427
+ splashScreenPosition: zod__WEBPACK_IMPORTED_MODULE_0__.z.string().optional(),
25428
+ splashScreenBgColor: zod__WEBPACK_IMPORTED_MODULE_0__.z.string().optional()
25429
+ })
25430
+ .strict();
25431
+
25432
+
25319
25433
  /***/ }),
25320
25434
 
25321
25435
  /***/ 2483:
@@ -25453,7 +25567,7 @@ __webpack_require__.r(__webpack_exports__);
25453
25567
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
25454
25568
  /* harmony export */ "readWhiteLabelFromQuery": () => (/* binding */ readWhiteLabelFromQuery)
25455
25569
  /* harmony export */ });
25456
- /* harmony import */ var _arcware_cloud_shared_pixelstreaming_websdk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7910);
25570
+ /* harmony import */ var _ZWhiteLabel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(467);
25457
25571
 
25458
25572
  function decodeBase64OrBase64Url(raw) {
25459
25573
  const normalized = raw.replace(/-/g, "+").replace(/_/g, "/");
@@ -25465,14 +25579,13 @@ function decodeBase64OrBase64Url(raw) {
25465
25579
  }
25466
25580
  /** Parse ?wl=... (or ?whitelabel=...) → validated partial settings */
25467
25581
  function readWhiteLabelFromQuery(qs) {
25468
- var _a;
25469
25582
  try {
25470
- const raw = (_a = qs.get("wl")) !== null && _a !== void 0 ? _a : qs.get("whitelabel");
25583
+ const raw = qs.get("wl");
25471
25584
  if (!raw)
25472
25585
  return undefined;
25473
25586
  const jsonStr = decodeBase64OrBase64Url(raw);
25474
25587
  const obj = JSON.parse(jsonStr);
25475
- const parsed = _arcware_cloud_shared_pixelstreaming_websdk__WEBPACK_IMPORTED_MODULE_0__.ZWhiteLabel.safeParse(obj);
25588
+ const parsed = _ZWhiteLabel__WEBPACK_IMPORTED_MODULE_0__.ZWhiteLabel.safeParse(obj);
25476
25589
  if (!parsed.success) {
25477
25590
  //console.warn("[ArcwareConfig] Invalid wl payload:", parsed.error?.flatten?.());
25478
25591
  return undefined;
@@ -26737,8 +26850,7 @@ class StopIcon {
26737
26850
 
26738
26851
  __webpack_require__.r(__webpack_exports__);
26739
26852
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
26740
- /* harmony export */ "Messages": () => (/* reexport safe */ _lib__WEBPACK_IMPORTED_MODULE_0__.Messages),
26741
- /* harmony export */ "ZWhiteLabel": () => (/* reexport safe */ _lib__WEBPACK_IMPORTED_MODULE_0__.ZWhiteLabel)
26853
+ /* harmony export */ "Messages": () => (/* reexport safe */ _lib__WEBPACK_IMPORTED_MODULE_0__.Messages)
26742
26854
  /* harmony export */ });
26743
26855
  /* harmony import */ var _lib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(318);
26744
26856
 
@@ -27221,39 +27333,6 @@ const Send = {
27221
27333
  };
27222
27334
 
27223
27335
 
27224
- /***/ }),
27225
-
27226
- /***/ 6750:
27227
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
27228
-
27229
- __webpack_require__.r(__webpack_exports__);
27230
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
27231
- /* harmony export */ "ZWhiteLabel": () => (/* binding */ ZWhiteLabel)
27232
- /* harmony export */ });
27233
- /* harmony import */ var zod__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1604);
27234
-
27235
- /** Absolute HTTPS URL (no http) */
27236
- const AbsoluteHttpsUrl = zod__WEBPACK_IMPORTED_MODULE_0__.z.string()
27237
- .url()
27238
- .refine((u) => u.startsWith("https://"), { message: "URL must use https://" });
27239
- /** Relative path (no scheme like http:, data:, javascript:, etc.) */
27240
- const RelativePath = zod__WEBPACK_IMPORTED_MODULE_0__.z.string()
27241
- .min(1)
27242
- .refine((s) => !/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(s), { message: "Expected a relative path without a URL scheme" });
27243
- /** Image URL can be absolute (https) or relative (e.g. /assets/logo.png, ./img.png) */
27244
- const ImageUrl = zod__WEBPACK_IMPORTED_MODULE_0__.z.union([AbsoluteHttpsUrl, RelativePath]);
27245
- /** Strict allowlist for white-label brand fields coming from the URL */
27246
- const ZWhiteLabel = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({
27247
- loadingIconUrl: ImageUrl.optional(),
27248
- loadingIconFadeMs: zod__WEBPACK_IMPORTED_MODULE_0__.z.number().int().positive().optional(),
27249
- splashScreenUrl: ImageUrl.optional(),
27250
- splashScreenMode: zod__WEBPACK_IMPORTED_MODULE_0__.z["enum"](["contain", "cover", "stretch", "repeat"]).optional(),
27251
- splashScreenPosition: zod__WEBPACK_IMPORTED_MODULE_0__.z.string().optional(),
27252
- splashScreenBgColor: zod__WEBPACK_IMPORTED_MODULE_0__.z.string().optional()
27253
- })
27254
- .strict();
27255
-
27256
-
27257
27336
  /***/ }),
27258
27337
 
27259
27338
  /***/ 318:
@@ -27261,12 +27340,9 @@ const ZWhiteLabel = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({
27261
27340
 
27262
27341
  __webpack_require__.r(__webpack_exports__);
27263
27342
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
27264
- /* harmony export */ "Messages": () => (/* reexport module object */ _Messages__WEBPACK_IMPORTED_MODULE_0__),
27265
- /* harmony export */ "ZWhiteLabel": () => (/* reexport safe */ _Types_ZWhiteLabel__WEBPACK_IMPORTED_MODULE_1__.ZWhiteLabel)
27343
+ /* harmony export */ "Messages": () => (/* reexport module object */ _Messages__WEBPACK_IMPORTED_MODULE_0__)
27266
27344
  /* harmony export */ });
27267
27345
  /* harmony import */ var _Messages__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5387);
27268
- /* harmony import */ var _Types_ZWhiteLabel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6750);
27269
-
27270
27346
 
27271
27347
 
27272
27348
 
package/index.umd.js CHANGED
@@ -23363,11 +23363,13 @@ exports.ArcwareApplication = ArcwareApplication;
23363
23363
 
23364
23364
  Object.defineProperty(exports, "__esModule", ({ value: true }));
23365
23365
  exports.ArcwareConfig = exports.DefaultUrl = void 0;
23366
+ const tslib_1 = __webpack_require__(655);
23366
23367
  const zod_1 = __webpack_require__(8754);
23367
23368
  const lib_pixelstreamingfrontend_ue5_5_1 = __webpack_require__(693);
23368
23369
  const Session_1 = __webpack_require__(2469);
23369
23370
  const ArcwareSettingsSchema_1 = __webpack_require__(5602);
23370
23371
  const whiteLabelling_1 = __webpack_require__(3545);
23372
+ const ZWhiteLabel_1 = __webpack_require__(467);
23371
23373
  /** Default arcware signalling endpoint. */
23372
23374
  exports.DefaultUrl = `wss://signalling-client.ragnarok.arcware.cloud`;
23373
23375
  // The below Logger overrides can likely be removed as PSInfra 5.5 logger supports setting log verbosity
@@ -23431,7 +23433,7 @@ class ArcwareConfig extends lib_pixelstreamingfrontend_ue5_5_1.Config {
23431
23433
  if (!config.initialSettings.ss)
23432
23434
  config.initialSettings.ss = exports.DefaultUrl;
23433
23435
  super(config);
23434
- this.VERSION = "1.3.13";
23436
+ this.VERSION = "1.3.15";
23435
23437
  this.settings = settings;
23436
23438
  this.session = new Session_1.Session();
23437
23439
  this._initialSettings = config.initialSettings;
@@ -23443,14 +23445,70 @@ class ArcwareConfig extends lib_pixelstreamingfrontend_ue5_5_1.Config {
23443
23445
  if (this.useUrlParams) {
23444
23446
  // Get the query string from URL
23445
23447
  const qs = new URLSearchParams(window.location.search);
23446
- // Retrieve image loading from there
23447
- const wlParsed = this.useUrlParams ? (0, whiteLabelling_1.readWhiteLabelFromQuery)(qs) : undefined; // respect useUrlParams
23448
- if (wlParsed) {
23449
- this.settings.whiteLabelling = Object.assign(Object.assign({}, ((_c = this.settings.whiteLabelling) !== null && _c !== void 0 ? _c : {})), wlParsed);
23448
+ if (qs.has("wl") && qs.get("wl") !== "") {
23449
+ // Retrieve image loading from there
23450
+ const wlParsed = this.useUrlParams ? (0, whiteLabelling_1.readWhiteLabelFromQuery)(qs) : undefined; // respect useUrlParams
23451
+ if (wlParsed) {
23452
+ this.settings.whiteLabelling = Object.assign(Object.assign({}, ((_c = this.settings.whiteLabelling) !== null && _c !== void 0 ? _c : {})), wlParsed);
23453
+ }
23450
23454
  }
23451
23455
  this.settings.infoButton = qs.has("i") || qs.has("info");
23452
23456
  }
23453
23457
  }
23458
+ static getWhiteLabelling(ShareId, URL = "https://signalling-client.arcware.cloud/whiteLabel/") {
23459
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
23460
+ const qs = new URLSearchParams(window.location.search);
23461
+ if (qs.has("wl") && qs.get("wl") === "") {
23462
+ // Build final URL safely (trim trailing slashes, encode ShareId)
23463
+ const base = URL.replace(/\/+$/, "");
23464
+ const requestUrl = `${base}/${encodeURIComponent(ShareId)}`;
23465
+ const controller = new AbortController();
23466
+ const timeoutId = setTimeout(() => controller.abort(), 1000);
23467
+ try {
23468
+ const res = yield fetch(requestUrl, {
23469
+ method: "GET",
23470
+ signal: controller.signal,
23471
+ headers: { Accept: "application/json, text/plain" },
23472
+ credentials: "omit"
23473
+ });
23474
+ if (!res.ok) {
23475
+ // Non-2xx: treat as “no white label”
23476
+ return undefined;
23477
+ }
23478
+ // We read as text first to detect empty-string payloads
23479
+ const text = yield res.text();
23480
+ if (!text || text.trim() === "") {
23481
+ return undefined;
23482
+ }
23483
+ // If there is content, try to parse JSON
23484
+ let json;
23485
+ try {
23486
+ json = JSON.parse(text);
23487
+ }
23488
+ catch (_a) {
23489
+ // Not valid JSON → ignore
23490
+ return undefined;
23491
+ }
23492
+ // Validate against the allowlisted schema
23493
+ const parsed = ZWhiteLabel_1.ZWhiteLabel.safeParse(json);
23494
+ if (!parsed.success) {
23495
+ // Optionally log parsed.error for diagnostics
23496
+ return undefined;
23497
+ }
23498
+ return parsed.data;
23499
+ }
23500
+ catch (err) {
23501
+ // Abort or network error → treat as “no white label”
23502
+ // if (err?.name !== "AbortError") console.warn("getWhiteLabelling failed", err);
23503
+ return undefined;
23504
+ }
23505
+ finally {
23506
+ clearTimeout(timeoutId);
23507
+ }
23508
+ }
23509
+ return undefined;
23510
+ });
23511
+ }
23454
23512
  /** Setup connection string. */
23455
23513
  get urlFlags() {
23456
23514
  var _a;
@@ -24371,7 +24429,7 @@ class ArcwarePixelStreaming extends lib_pixelstreamingfrontend_ue5_5_1.PixelStre
24371
24429
  });
24372
24430
  }
24373
24431
  applyBrandingFromSettings() {
24374
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
24432
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
24375
24433
  const cfg = ((_b = (_a = this === null || this === void 0 ? void 0 : this.config) === null || _a === void 0 ? void 0 : _a.settings.whiteLabelling) !== null && _b !== void 0 ? _b : {});
24376
24434
  // Loader image + fade
24377
24435
  try {
@@ -24380,25 +24438,36 @@ class ArcwarePixelStreaming extends lib_pixelstreamingfrontend_ue5_5_1.PixelStre
24380
24438
  (_f = (_e = this.logoLoader).setFade) === null || _f === void 0 ? void 0 : _f.call(_e, cfg.loadingIconFadeMs);
24381
24439
  }
24382
24440
  }
24383
- catch (_p) { }
24384
- // Splash on loveLettersContainer (preferred), fallback to player parent
24441
+ catch (_q) { }
24442
+ // Pick splash host: loveLettersContainer (preferred) or player parent
24385
24443
  try {
24386
24444
  const el = (_m = (_g = this.loveLettersContainer) !== null && _g !== void 0 ? _g : (_l = (_k = (_j = (_h = this.webRtcController) === null || _h === void 0 ? void 0 : _h.videoPlayer) === null || _j === void 0 ? void 0 : _j.getVideoParentElement) === null || _k === void 0 ? void 0 : _k.call(_j)) === null || _l === void 0 ? void 0 : _l.parentElement) !== null && _m !== void 0 ? _m : null;
24387
24445
  if (!el)
24388
24446
  return;
24389
- // Clear previous inline choices
24390
24447
  const s = el.style;
24448
+ // Nuke previous inline styles (longhands only; never touch 'background' shorthand here)
24391
24449
  s.removeProperty("background-image");
24392
24450
  s.removeProperty("background-size");
24393
24451
  s.removeProperty("background-repeat");
24394
24452
  s.removeProperty("background-position");
24395
24453
  s.removeProperty("background-color");
24454
+ // Also clear any earlier 'background' inline shorthand that might have been set elsewhere
24455
+ // (we set to 'initial' first, then re-apply longhands)
24456
+ s.setProperty("background", "initial");
24396
24457
  el.classList.remove("aw-splash");
24397
- if (cfg.splashScreenUrl) {
24398
- el.classList.add("aw-splash"); // keeps your global defaults
24399
- // Compute mode (default to 'contain' if not provided)
24400
- const mode = ((_o = cfg.splashScreenMode) !== null && _o !== void 0 ? _o : "contain");
24401
- // Apply sizing/repeat per mode
24458
+ // If neither color nor image is provided, nothing to do
24459
+ const haveColor = !!cfg.splashScreenBgColor;
24460
+ const haveImage = !!cfg.splashScreenUrl;
24461
+ if (!haveColor && !haveImage)
24462
+ return;
24463
+ // Always ensure our class is present when we brand
24464
+ el.classList.add("aw-splash");
24465
+ // Apply color with !important so external 'background: ... !important' can't wipe it
24466
+ const bgColor = (_o = cfg.splashScreenBgColor) !== null && _o !== void 0 ? _o : "var(--color0)";
24467
+ s.setProperty("background-color", bgColor, "important");
24468
+ if (haveImage) {
24469
+ // Mode → size/repeat mapping
24470
+ const mode = ((_p = cfg.splashScreenMode) !== null && _p !== void 0 ? _p : "contain");
24402
24471
  switch (mode) {
24403
24472
  case "contain":
24404
24473
  s.backgroundSize = "contain";
@@ -24413,17 +24482,25 @@ class ArcwarePixelStreaming extends lib_pixelstreamingfrontend_ue5_5_1.PixelStre
24413
24482
  s.backgroundRepeat = "no-repeat";
24414
24483
  break;
24415
24484
  case "repeat":
24416
- s.backgroundSize = "auto"; // keep intrinsic px
24485
+ s.backgroundSize = "auto"; // intrinsic
24417
24486
  s.backgroundRepeat = "repeat";
24418
24487
  break;
24419
24488
  }
24420
- // Position & color (optional)
24489
+ // Position
24421
24490
  s.backgroundPosition = cfg.splashScreenPosition || "center center";
24422
- s.backgroundColor = cfg.splashScreenBgColor || "var(--color0)";
24491
+ // Image last (longhand so it won't reset color)
24492
+ // Use quotes to be safe with URLs containing parentheses/spaces
24423
24493
  s.backgroundImage = `url("${cfg.splashScreenUrl}")`;
24424
24494
  }
24495
+ else {
24496
+ // No image → ensure any previous image is cleared
24497
+ s.backgroundImage = "none";
24498
+ s.backgroundRepeat = "no-repeat";
24499
+ s.backgroundPosition = "center center";
24500
+ s.backgroundSize = "auto";
24501
+ }
24425
24502
  }
24426
- catch (_q) { }
24503
+ catch (_r) { }
24427
24504
  }
24428
24505
  }
24429
24506
  exports.ArcwarePixelStreaming = ArcwarePixelStreaming;
@@ -24439,6 +24516,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
24439
24516
  exports.ArcwareSettingsSchema = void 0;
24440
24517
  const zod_1 = __webpack_require__(8754);
24441
24518
  const shared_pixelstreaming_websdk_1 = __webpack_require__(7910);
24519
+ const ZWhiteLabel_1 = __webpack_require__(467);
24442
24520
  /** Arcware Settings. */
24443
24521
  exports.ArcwareSettingsSchema = zod_1.z.object({
24444
24522
  /** Overwrites the Session-Tool and uses the provided session instead. */
@@ -24497,7 +24575,7 @@ exports.ArcwareSettingsSchema = zod_1.z.object({
24497
24575
  .strict()
24498
24576
  .optional(),
24499
24577
  /** Loader customization */
24500
- whiteLabelling: shared_pixelstreaming_websdk_1.ZWhiteLabel.optional()
24578
+ whiteLabelling: ZWhiteLabel_1.ZWhiteLabel.optional()
24501
24579
  });
24502
24580
 
24503
24581
 
@@ -25288,6 +25366,40 @@ class DiagnosticsCollector {
25288
25366
  exports.DiagnosticsCollector = DiagnosticsCollector;
25289
25367
 
25290
25368
 
25369
+ /***/ }),
25370
+
25371
+ /***/ 467:
25372
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
25373
+
25374
+
25375
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
25376
+ exports.ZWhiteLabel = void 0;
25377
+ const zod_1 = __webpack_require__(8754);
25378
+ /** Absolute HTTPS URL (no http) */
25379
+ const AbsoluteHttpsUrl = zod_1.z
25380
+ .string()
25381
+ .url()
25382
+ .refine((u) => u.startsWith("https://"), { message: "URL must use https://" });
25383
+ /** Relative path (no scheme like http:, data:, javascript:, etc.) */
25384
+ const RelativePath = zod_1.z
25385
+ .string()
25386
+ .min(1)
25387
+ .refine((s) => !/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(s), { message: "Expected a relative path without a URL scheme" });
25388
+ /** Image URL can be absolute (https) or relative (e.g. /assets/logo.png, ./img.png) */
25389
+ const ImageUrl = zod_1.z.union([AbsoluteHttpsUrl, RelativePath]);
25390
+ /** Strict allowlist for white-label brand fields coming from the URL */
25391
+ exports.ZWhiteLabel = zod_1.z
25392
+ .object({
25393
+ loadingIconUrl: ImageUrl.optional(),
25394
+ loadingIconFadeMs: zod_1.z.number().int().positive().optional(),
25395
+ splashScreenUrl: ImageUrl.optional(),
25396
+ splashScreenMode: zod_1.z.enum(["contain", "cover", "stretch", "repeat"]).optional(),
25397
+ splashScreenPosition: zod_1.z.string().optional(),
25398
+ splashScreenBgColor: zod_1.z.string().optional()
25399
+ })
25400
+ .strict();
25401
+
25402
+
25291
25403
  /***/ }),
25292
25404
 
25293
25405
  /***/ 2483:
@@ -25424,7 +25536,7 @@ exports.waitForElement = waitForElement;
25424
25536
 
25425
25537
  Object.defineProperty(exports, "__esModule", ({ value: true }));
25426
25538
  exports.readWhiteLabelFromQuery = void 0;
25427
- const shared_pixelstreaming_websdk_1 = __webpack_require__(7910);
25539
+ const ZWhiteLabel_1 = __webpack_require__(467);
25428
25540
  function decodeBase64OrBase64Url(raw) {
25429
25541
  const normalized = raw.replace(/-/g, "+").replace(/_/g, "/");
25430
25542
  const padded = normalized + "===".slice((normalized.length + 3) % 4);
@@ -25435,14 +25547,13 @@ function decodeBase64OrBase64Url(raw) {
25435
25547
  }
25436
25548
  /** Parse ?wl=... (or ?whitelabel=...) → validated partial settings */
25437
25549
  function readWhiteLabelFromQuery(qs) {
25438
- var _a;
25439
25550
  try {
25440
- const raw = (_a = qs.get("wl")) !== null && _a !== void 0 ? _a : qs.get("whitelabel");
25551
+ const raw = qs.get("wl");
25441
25552
  if (!raw)
25442
25553
  return undefined;
25443
25554
  const jsonStr = decodeBase64OrBase64Url(raw);
25444
25555
  const obj = JSON.parse(jsonStr);
25445
- const parsed = shared_pixelstreaming_websdk_1.ZWhiteLabel.safeParse(obj);
25556
+ const parsed = ZWhiteLabel_1.ZWhiteLabel.safeParse(obj);
25446
25557
  if (!parsed.success) {
25447
25558
  //console.warn("[ArcwareConfig] Invalid wl payload:", parsed.error?.flatten?.());
25448
25559
  return undefined;
@@ -27156,40 +27267,6 @@ exports.Send = {
27156
27267
  };
27157
27268
 
27158
27269
 
27159
- /***/ }),
27160
-
27161
- /***/ 6750:
27162
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
27163
-
27164
-
27165
- Object.defineProperty(exports, "__esModule", ({ value: true }));
27166
- exports.ZWhiteLabel = void 0;
27167
- const zod_1 = __webpack_require__(8754);
27168
- /** Absolute HTTPS URL (no http) */
27169
- const AbsoluteHttpsUrl = zod_1.z
27170
- .string()
27171
- .url()
27172
- .refine((u) => u.startsWith("https://"), { message: "URL must use https://" });
27173
- /** Relative path (no scheme like http:, data:, javascript:, etc.) */
27174
- const RelativePath = zod_1.z
27175
- .string()
27176
- .min(1)
27177
- .refine((s) => !/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(s), { message: "Expected a relative path without a URL scheme" });
27178
- /** Image URL can be absolute (https) or relative (e.g. /assets/logo.png, ./img.png) */
27179
- const ImageUrl = zod_1.z.union([AbsoluteHttpsUrl, RelativePath]);
27180
- /** Strict allowlist for white-label brand fields coming from the URL */
27181
- exports.ZWhiteLabel = zod_1.z
27182
- .object({
27183
- loadingIconUrl: ImageUrl.optional(),
27184
- loadingIconFadeMs: zod_1.z.number().int().positive().optional(),
27185
- splashScreenUrl: ImageUrl.optional(),
27186
- splashScreenMode: zod_1.z.enum(["contain", "cover", "stretch", "repeat"]).optional(),
27187
- splashScreenPosition: zod_1.z.string().optional(),
27188
- splashScreenBgColor: zod_1.z.string().optional()
27189
- })
27190
- .strict();
27191
-
27192
-
27193
27270
  /***/ }),
27194
27271
 
27195
27272
  /***/ 318:
@@ -27197,10 +27274,8 @@ exports.ZWhiteLabel = zod_1.z
27197
27274
 
27198
27275
 
27199
27276
  Object.defineProperty(exports, "__esModule", ({ value: true }));
27200
- exports.ZWhiteLabel = exports.Messages = void 0;
27277
+ exports.Messages = void 0;
27201
27278
  exports.Messages = __webpack_require__(5387);
27202
- var ZWhiteLabel_1 = __webpack_require__(6750);
27203
- Object.defineProperty(exports, "ZWhiteLabel", ({ enumerable: true, get: function () { return ZWhiteLabel_1.ZWhiteLabel; } }));
27204
27279
 
27205
27280
 
27206
27281
  /***/ }),
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.13",
4
+ "version": "1.3.15",
5
5
  "type": "commonjs",
6
6
  "main": "./index.umd.js",
7
7
  "module": "./index.umd.js",
@@ -1,6 +1,7 @@
1
1
  import { Config, ConfigParams } from "@epicgames-ps/lib-pixelstreamingfrontend-ue5.5";
2
2
  import { Session } from "./domain/Session";
3
3
  import { Settings } from "./domain/ArcwareSettingsSchema";
4
+ import { WhiteLabel } from "./features/ZWhiteLabel";
4
5
  /** Default arcware signalling endpoint. */
5
6
  export declare const DefaultUrl: "wss://signalling-client.ragnarok.arcware.cloud";
6
7
  export interface ArcwareConfigParams extends ConfigParams {
@@ -26,8 +27,9 @@ export declare class ArcwareConfig extends Config {
26
27
  readonly session: Session;
27
28
  readonly settings: Settings;
28
29
  private _initialSettings;
29
- readonly VERSION = "1.3.13";
30
+ readonly VERSION = "1.3.15";
30
31
  constructor(config: ArcwareConfigParams);
32
+ static getWhiteLabelling(ShareId: string, URL?: string): Promise<WhiteLabel | undefined>;
31
33
  /** Setup connection string. */
32
34
  get urlFlags(): string;
33
35
  get initialSettings(): any;
@@ -35,7 +35,8 @@ export declare const ArcwareSettingsSchema: z.ZodObject<{
35
35
  waited: z.ZodOptional<z.ZodNumber>;
36
36
  estimatedWaitTime: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
37
37
  averageWaitTime: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
38
- valueType: z.ZodEnum<["milliseconds", "seconds", "minutes", "hours", "days"]>;
38
+ valueType: z.ZodEnum<["milliseconds", "seconds", "minutes", "hours", "days"]>; /** Handler for love letters.
39
+ * "LoveLetters" are send from backend to the SDK to state what phase the connection currently is in. */
39
40
  }, "strip", z.ZodTypeAny, {
40
41
  index?: number;
41
42
  queueLength?: number;
@@ -22,3 +22,4 @@ export declare const ZWhiteLabel: z.ZodObject<{
22
22
  splashScreenPosition?: string;
23
23
  splashScreenBgColor?: string;
24
24
  }>;
25
+ export type WhiteLabel = z.infer<typeof ZWhiteLabel>;
@@ -1,4 +1,4 @@
1
- import { ZWhiteLabel } from "@arcware-cloud/shared-pixelstreaming-websdk";
1
+ import { ZWhiteLabel } from "./ZWhiteLabel";
2
2
  import { z } from "zod";
3
3
  /** Parse ?wl=... (or ?whitelabel=...) → validated partial settings */
4
4
  export declare function readWhiteLabelFromQuery(qs: URLSearchParams): Partial<z.infer<typeof ZWhiteLabel>> | undefined;
@@ -1,2 +1 @@
1
1
  export * as Messages from "./Messages";
2
- export { ZWhiteLabel } from "./Types/ZWhiteLabel";