@arcware-cloud/pixelstreaming-websdk 1.3.12 → 1.3.13

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/index.esm.js CHANGED
@@ -23356,11 +23356,13 @@ __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_4__ = __webpack_require__(1604);
23360
- /* harmony import */ var _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7800);
23361
- /* harmony import */ var _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7463);
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);
23362
23362
  /* harmony import */ var _domain_Session__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2469);
23363
23363
  /* harmony import */ var _domain_ArcwareSettingsSchema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5602);
23364
+ /* harmony import */ var _features_whiteLabelling__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3545);
23365
+
23364
23366
 
23365
23367
 
23366
23368
 
@@ -23379,8 +23381,8 @@ Logger.Error = (message: string) => {
23379
23381
  if (message?.startsWith("unhandled Stat Type")) return;
23380
23382
  console.error(message);
23381
23383
  };*/
23382
- _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_2__.Logger.InitLogging(2, false);
23383
- class ArcwareConfig extends _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_3__.Config {
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 {
23384
23386
  /**
23385
23387
  * Can be used to fetch projectId and shareId from the current url.
23386
23388
  * Example:
@@ -23399,15 +23401,15 @@ class ArcwareConfig extends _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBP
23399
23401
  static PickIdsOfUrl() {
23400
23402
  const { pathname } = new URL(window.location.href);
23401
23403
  const sections = pathname.split("/");
23402
- const projectId = sections.find((section) => zod__WEBPACK_IMPORTED_MODULE_4__.z.string().uuid().safeParse(section).success);
23403
- const shareId = sections.find((section) => zod__WEBPACK_IMPORTED_MODULE_4__.z.string().startsWith("share-").safeParse(section).success);
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);
23404
23406
  return {
23405
23407
  projectId,
23406
23408
  shareId
23407
23409
  };
23408
23410
  }
23409
23411
  constructor(config) {
23410
- var _a, _b;
23412
+ var _a, _b, _c;
23411
23413
  const dfToken = new URL(window.location.href).search
23412
23414
  .slice(1)
23413
23415
  .split("&")
@@ -23428,15 +23430,25 @@ class ArcwareConfig extends _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBP
23428
23430
  if (!config.initialSettings.ss)
23429
23431
  config.initialSettings.ss = DefaultUrl;
23430
23432
  super(config);
23431
- this.VERSION = "1.3.12";
23433
+ this.VERSION = "1.3.13";
23432
23434
  this.settings = settings;
23433
23435
  this.session = new _domain_Session__WEBPACK_IMPORTED_MODULE_0__.Session();
23434
23436
  this._initialSettings = config.initialSettings;
23435
23437
  // Setup arcware default settings.
23436
- this.setFlagEnabled(_epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_3__.Flags.AFKDetection, true);
23438
+ this.setFlagEnabled(_epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_4__.Flags.AFKDetection, true);
23437
23439
  // IMPORTANT NOTE: The feature BrowserSendOffer is no longer supported in PSInfra 5.5.
23438
23440
  // The offer is now expected to come from UE. Ensure that your signalling server supports this behaviour.
23439
23441
  //this.setFlagEnabled(Flags.BrowserSendOffer, true);
23442
+ if (this.useUrlParams) {
23443
+ // Get the query string from URL
23444
+ 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
+ }
23450
+ this.settings.infoButton = qs.has("i") || qs.has("info");
23451
+ }
23440
23452
  }
23441
23453
  /** Setup connection string. */
23442
23454
  get urlFlags() {
@@ -23489,7 +23501,7 @@ class ArcwareConfig extends _epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBP
23489
23501
  return this._initialSettings;
23490
23502
  }
23491
23503
  modifyInitialSettings(mouseLock) {
23492
- this.setFlagEnabled(_epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_3__.Flags.HoveringMouseMode, mouseLock);
23504
+ this.setFlagEnabled(_epicgames_ps_lib_pixelstreamingfrontend_ue5_5__WEBPACK_IMPORTED_MODULE_4__.Flags.HoveringMouseMode, mouseLock);
23493
23505
  }
23494
23506
  }
23495
23507
 
@@ -23547,7 +23559,14 @@ function ArcwareInit({ shareId, projectId }, configuration, forceRefresh = false
23547
23559
  useUrlParams: (configuration === null || configuration === void 0 ? void 0 : configuration.useUrlParams) === true,
23548
23560
  initialSettings: Object.assign({ ss: _ArcwareConfig__WEBPACK_IMPORTED_MODULE_0__.DefaultUrl, AutoConnect: false, StartVideoMuted: true, AutoPlayVideo: true, KeyboardInput: true, MouseInput: true, GamepadInput: true, TouchInput: true, XRControllerInput: true, UseMic: true, SuppressBrowserKeys: true, FakeMouseWithTouches: false, ForceMonoAudio: false, HoveringMouse: true }, configuration === null || configuration === void 0 ? void 0 : configuration.initialSettings),
23549
23561
  settings: Object.assign({ shareId,
23550
- projectId, fullscreenButton: true, audioButton: true, stopButton: false, infoButton: false, micButton: false, settingsButton: false, connectionStrengthIcon: false, connectionIdentifierLoggingDisabled: undefined, errorHandler: undefined, loveLetterHandler: undefined, loveLetterLogging: undefined, queueHandler: undefined, sessionIdHandler: undefined, startHeight: undefined, startWidth: undefined, orientationZoom: undefined }, configuration === null || configuration === void 0 ? void 0 : configuration.settings)
23562
+ projectId, fullscreenButton: true, audioButton: true, stopButton: false, infoButton: false, micButton: false, settingsButton: false, connectionStrengthIcon: false, connectionIdentifierLoggingDisabled: undefined, errorHandler: undefined, loveLetterHandler: undefined, loveLetterLogging: undefined, queueHandler: undefined, sessionIdHandler: undefined, startHeight: undefined, startWidth: undefined, orientationZoom: undefined, whiteLabelling: {
23563
+ splashScreenUrl: undefined,
23564
+ loadingIconFadeMs: undefined,
23565
+ loadingIconUrl: undefined,
23566
+ splashScreenMode: undefined,
23567
+ splashScreenPosition: undefined,
23568
+ splashScreenBgColor: undefined
23569
+ } }, configuration === null || configuration === void 0 ? void 0 : configuration.settings)
23551
23570
  });
23552
23571
  const PixelStreaming = new _ArcwarePixelStreaming__WEBPACK_IMPORTED_MODULE_1__.ArcwarePixelStreaming(Config);
23553
23572
  const Application = new _ArcwareApplication__WEBPACK_IMPORTED_MODULE_2__.ArcwareApplication({ stream: PixelStreaming });
@@ -23911,6 +23930,7 @@ class ArcwarePixelStreaming extends _epicgames_ps_lib_pixelstreamingfrontend_ue5
23911
23930
  });
23912
23931
  }
23913
23932
  }
23933
+ this.applyBrandingFromSettings();
23914
23934
  this.handleMouseLock();
23915
23935
  this.injectCustomUI();
23916
23936
  }
@@ -24158,12 +24178,12 @@ class ArcwarePixelStreaming extends _epicgames_ps_lib_pixelstreamingfrontend_ue5
24158
24178
  // Zoom level for orientation change if provided
24159
24179
  if (orientationZoom) {
24160
24180
  if (browserWidth < browserHeight) {
24161
- if (orientationZoom.hasOwnProperty('portrait'))
24181
+ if (orientationZoom.hasOwnProperty("portrait"))
24162
24182
  (_a = this === null || this === void 0 ? void 0 : this.webRtcController) === null || _a === void 0 ? void 0 : _a.emitUIInteraction({
24163
24183
  zoom: orientationZoom.portrait
24164
24184
  });
24165
24185
  }
24166
- else if (orientationZoom.hasOwnProperty('landscape')) {
24186
+ else if (orientationZoom.hasOwnProperty("landscape")) {
24167
24187
  (_b = this === null || this === void 0 ? void 0 : this.webRtcController) === null || _b === void 0 ? void 0 : _b.emitUIInteraction({
24168
24188
  zoom: orientationZoom.landscape
24169
24189
  });
@@ -24233,26 +24253,27 @@ class ArcwarePixelStreaming extends _epicgames_ps_lib_pixelstreamingfrontend_ue5
24233
24253
  initLoveLettersContainer() {
24234
24254
  var _a;
24235
24255
  const logoLoader = new _ui_ArcwareLogoLoader__WEBPACK_IMPORTED_MODULE_12__.ArcwareLogoLoader();
24256
+ this.logoLoader = logoLoader;
24236
24257
  if (!this.loveLettersContainer) {
24237
- const loveLettersContainer = document === null || document === void 0 ? void 0 : document.createElement("div");
24238
- const { videoPlayer } = this === null || this === void 0 ? void 0 : this.webRtcController;
24258
+ const loveLettersContainer = document.createElement("div");
24259
+ this.loveLettersContainer = loveLettersContainer; // keep the ref
24260
+ const { videoPlayer } = this.webRtcController;
24239
24261
  const videoElementParent = videoPlayer.getVideoParentElement();
24240
- (_a = loveLettersContainer === null || loveLettersContainer === void 0 ? void 0 : loveLettersContainer.classList) === null || _a === void 0 ? void 0 : _a.add("love-letters-box-root");
24241
- videoElementParent === null || videoElementParent === void 0 ? void 0 : videoElementParent.appendChild(loveLettersContainer);
24242
- const lettersBlock = document === null || document === void 0 ? void 0 : document.createElement("div");
24262
+ loveLettersContainer.classList.add("love-letters-box-root");
24263
+ videoElementParent.appendChild(loveLettersContainer);
24264
+ const lettersBlock = document.createElement("div");
24243
24265
  lettersBlock.id = "letters-block";
24244
- const lettersWrapper = document === null || document === void 0 ? void 0 : document.createElement("div");
24266
+ const lettersWrapper = document.createElement("div");
24245
24267
  lettersWrapper.id = "letters-wrapper";
24246
- if (loveLettersContainer) {
24247
- lettersBlock === null || lettersBlock === void 0 ? void 0 : lettersBlock.appendChild(logoLoader === null || logoLoader === void 0 ? void 0 : logoLoader.arcwareLogoLoader);
24248
- loveLettersContainer === null || loveLettersContainer === void 0 ? void 0 : loveLettersContainer.appendChild(lettersBlock);
24249
- lettersBlock === null || lettersBlock === void 0 ? void 0 : lettersBlock.appendChild(lettersWrapper);
24250
- }
24251
- lettersBlock.innerHTML = "";
24252
- if (lettersBlock) {
24253
- lettersBlock === null || lettersBlock === void 0 ? void 0 : lettersBlock.appendChild(logoLoader === null || logoLoader === void 0 ? void 0 : logoLoader.arcwareLogoLoader);
24254
- lettersBlock === null || lettersBlock === void 0 ? void 0 : lettersBlock.appendChild(lettersWrapper);
24255
- }
24268
+ // append your existing loader root (with SVG) into the lettersBlock
24269
+ const loaderRoot = logoLoader.arcwareLogoLoader; // your existing getter
24270
+ lettersBlock.appendChild(loaderRoot);
24271
+ // ensure the loader knows its host
24272
+ (_a = logoLoader.setHostElement) === null || _a === void 0 ? void 0 : _a.call(logoLoader, loaderRoot);
24273
+ loveLettersContainer.appendChild(lettersBlock);
24274
+ lettersBlock.appendChild(lettersWrapper);
24275
+ // apply current (local) settings immediately
24276
+ this.applyBrandingFromSettings();
24256
24277
  }
24257
24278
  }
24258
24279
  pushLetter(letter) {
@@ -24358,8 +24379,7 @@ class ArcwarePixelStreaming extends _epicgames_ps_lib_pixelstreamingfrontend_ue5
24358
24379
  }
24359
24380
  }
24360
24381
  injectCustomUI() {
24361
- (0,_features_common__WEBPACK_IMPORTED_MODULE_14__.waitForElement)('#stream-ui')
24362
- .then(el => {
24382
+ (0,_features_common__WEBPACK_IMPORTED_MODULE_14__.waitForElement)("#stream-ui").then((el) => {
24363
24383
  var _a;
24364
24384
  const videoElementParent = (_a = this === null || this === void 0 ? void 0 : this.videoElementParent) === null || _a === void 0 ? void 0 : _a.parentElement;
24365
24385
  if (videoElementParent) {
@@ -24367,6 +24387,61 @@ class ArcwarePixelStreaming extends _epicgames_ps_lib_pixelstreamingfrontend_ue5
24367
24387
  }
24368
24388
  });
24369
24389
  }
24390
+ applyBrandingFromSettings() {
24391
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
24392
+ 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
+ // Loader image + fade
24394
+ try {
24395
+ if (this.logoLoader) {
24396
+ (_d = (_c = this.logoLoader).setImage) === null || _d === void 0 ? void 0 : _d.call(_c, cfg.loadingIconUrl);
24397
+ (_f = (_e = this.logoLoader).setFade) === null || _f === void 0 ? void 0 : _f.call(_e, cfg.loadingIconFadeMs);
24398
+ }
24399
+ }
24400
+ catch (_p) { }
24401
+ // Splash on loveLettersContainer (preferred), fallback to player parent
24402
+ try {
24403
+ 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
+ if (!el)
24405
+ return;
24406
+ // Clear previous inline choices
24407
+ const s = el.style;
24408
+ s.removeProperty("background-image");
24409
+ s.removeProperty("background-size");
24410
+ s.removeProperty("background-repeat");
24411
+ s.removeProperty("background-position");
24412
+ s.removeProperty("background-color");
24413
+ 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
24419
+ switch (mode) {
24420
+ case "contain":
24421
+ s.backgroundSize = "contain";
24422
+ s.backgroundRepeat = "no-repeat";
24423
+ break;
24424
+ case "cover":
24425
+ s.backgroundSize = "cover";
24426
+ s.backgroundRepeat = "no-repeat";
24427
+ break;
24428
+ case "stretch":
24429
+ s.backgroundSize = "100% 100%";
24430
+ s.backgroundRepeat = "no-repeat";
24431
+ break;
24432
+ case "repeat":
24433
+ s.backgroundSize = "auto"; // keep intrinsic px
24434
+ s.backgroundRepeat = "repeat";
24435
+ break;
24436
+ }
24437
+ // Position & color (optional)
24438
+ s.backgroundPosition = cfg.splashScreenPosition || "center center";
24439
+ s.backgroundColor = cfg.splashScreenBgColor || "var(--color0)";
24440
+ s.backgroundImage = `url("${cfg.splashScreenUrl}")`;
24441
+ }
24442
+ }
24443
+ catch (_q) { }
24444
+ }
24370
24445
  }
24371
24446
 
24372
24447
 
@@ -24435,8 +24510,12 @@ const ArcwareSettingsSchema = zod__WEBPACK_IMPORTED_MODULE_1__.z.object({
24435
24510
  /** Zoom functionality */
24436
24511
  orientationZoom: zod__WEBPACK_IMPORTED_MODULE_1__.z.object({
24437
24512
  landscape: zod__WEBPACK_IMPORTED_MODULE_1__.z.number(),
24438
- portrait: zod__WEBPACK_IMPORTED_MODULE_1__.z.number(),
24439
- }).strict().optional()
24513
+ portrait: zod__WEBPACK_IMPORTED_MODULE_1__.z.number()
24514
+ })
24515
+ .strict()
24516
+ .optional(),
24517
+ /** Loader customization */
24518
+ whiteLabelling: _arcware_cloud_shared_pixelstreaming_websdk__WEBPACK_IMPORTED_MODULE_0__.ZWhiteLabel.optional()
24440
24519
  });
24441
24520
 
24442
24521
 
@@ -25365,6 +25444,48 @@ function waitForElement(selector, { root = document, timeout = 3000 } = {}) {
25365
25444
  }
25366
25445
 
25367
25446
 
25447
+ /***/ }),
25448
+
25449
+ /***/ 3545:
25450
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
25451
+
25452
+ __webpack_require__.r(__webpack_exports__);
25453
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
25454
+ /* harmony export */ "readWhiteLabelFromQuery": () => (/* binding */ readWhiteLabelFromQuery)
25455
+ /* harmony export */ });
25456
+ /* harmony import */ var _arcware_cloud_shared_pixelstreaming_websdk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7910);
25457
+
25458
+ function decodeBase64OrBase64Url(raw) {
25459
+ const normalized = raw.replace(/-/g, "+").replace(/_/g, "/");
25460
+ const padded = normalized + "===".slice((normalized.length + 3) % 4);
25461
+ if (typeof atob === "function")
25462
+ return atob(padded);
25463
+ // @ts-ignore (Node fallback if this runs server-side)
25464
+ return Buffer.from(padded, "base64").toString("utf-8");
25465
+ }
25466
+ /** Parse ?wl=... (or ?whitelabel=...) → validated partial settings */
25467
+ function readWhiteLabelFromQuery(qs) {
25468
+ var _a;
25469
+ try {
25470
+ const raw = (_a = qs.get("wl")) !== null && _a !== void 0 ? _a : qs.get("whitelabel");
25471
+ if (!raw)
25472
+ return undefined;
25473
+ const jsonStr = decodeBase64OrBase64Url(raw);
25474
+ const obj = JSON.parse(jsonStr);
25475
+ const parsed = _arcware_cloud_shared_pixelstreaming_websdk__WEBPACK_IMPORTED_MODULE_0__.ZWhiteLabel.safeParse(obj);
25476
+ if (!parsed.success) {
25477
+ //console.warn("[ArcwareConfig] Invalid wl payload:", parsed.error?.flatten?.());
25478
+ return undefined;
25479
+ }
25480
+ return parsed.data;
25481
+ }
25482
+ catch (e) {
25483
+ //console.warn("[ArcwareConfig] Failed to parse wl payload:", e);
25484
+ return undefined;
25485
+ }
25486
+ }
25487
+
25488
+
25368
25489
  /***/ }),
25369
25490
 
25370
25491
  /***/ 9399:
@@ -25417,16 +25538,27 @@ const ArcwareStyles = {
25417
25538
  "--color11": "rgba(65,0,139,1) !important",
25418
25539
  "--color12": "#222224 !important",
25419
25540
  "--color13": "#f0f0f2 !important",
25420
- "--colorBoxShadow": "rgba(0, 0, 0, 0.20) !important",
25541
+ "--colorBoxShadow": "rgba(0, 0, 0, 0.20) !important"
25542
+ },
25543
+ ".aw-splash": {
25544
+ backgroundRepeat: "no-repeat",
25545
+ backgroundPosition: "center center",
25546
+ backgroundSize: "contain",
25547
+ backgroundColor: "var(--color0)"
25421
25548
  },
25549
+ "@keyframes aw-loader-fade": {
25550
+ from: { opacity: 0.25 },
25551
+ to: { opacity: 1 }
25552
+ },
25553
+ /* ---------- /NEW ---------- */
25422
25554
  "#playerUI *": {
25423
- fontFamily: "system-ui",
25555
+ fontFamily: "system-ui"
25424
25556
  },
25425
25557
  "#shared-stream-container": {
25426
- boxSizing: "border-box",
25558
+ boxSizing: "border-box"
25427
25559
  },
25428
25560
  "#shared-stream-container::-webkit-scrollbar": {
25429
- width: "10px",
25561
+ width: "10px"
25430
25562
  },
25431
25563
  "#shared-stream-container::-webkit-scrollbar-track": {
25432
25564
  background: "var(--color13)",
@@ -25435,10 +25567,10 @@ const ArcwareStyles = {
25435
25567
  borderTop: "20px solid var(--color0)",
25436
25568
  borderRight: "5px solid var(--color0)",
25437
25569
  borderBottom: "20px solid var(--color0)",
25438
- borderLeft: "5px solid var(--color0)",
25570
+ borderLeft: "5px solid var(--color0)"
25439
25571
  },
25440
25572
  "#shared-stream-container::-webkit-scrollbar-track-piece": {
25441
- background: "transparent",
25573
+ background: "transparent"
25442
25574
  },
25443
25575
  "#shared-stream-container::-webkit-scrollbar-thumb": {
25444
25576
  background: "var(--color13)",
@@ -25446,11 +25578,11 @@ const ArcwareStyles = {
25446
25578
  borderRight: "2px solid var(--color0)",
25447
25579
  borderLeft: "2px solid var(--color0)",
25448
25580
  transition: "all ease-in-out 0.3s",
25449
- borderRadius: "7px",
25581
+ borderRadius: "7px"
25450
25582
  },
25451
25583
  "#shared-stream-container::-webkit-scrollbar-thumb:hover": {
25452
25584
  transition: "all ease-in-out 0.3s",
25453
- background: "var(--color3)",
25585
+ background: "var(--color3)"
25454
25586
  },
25455
25587
  "#playerUI, #videoElementParent": {
25456
25588
  position: "absolute",
@@ -25464,13 +25596,13 @@ const ArcwareStyles = {
25464
25596
  left: 0,
25465
25597
  margin: "auto",
25466
25598
  boxSizing: "border-box",
25467
- pointerEvents: "all",
25599
+ pointerEvents: "all"
25468
25600
  },
25469
25601
  "#streamingVideo": {
25470
25602
  maxWidth: "100%",
25471
25603
  maxHeight: "100%",
25472
25604
  boxSizing: "border-box",
25473
- background: "#18181A",
25605
+ background: "#18181A"
25474
25606
  },
25475
25607
  "#uiFeatures #controls": {
25476
25608
  top: "auto",
@@ -25478,13 +25610,13 @@ const ArcwareStyles = {
25478
25610
  bottom: "10px",
25479
25611
  right: "20px",
25480
25612
  display: "flex",
25481
- flexDirection: "column-reverse",
25613
+ flexDirection: "column-reverse"
25482
25614
  },
25483
25615
  "#uiFeatures #connection": {
25484
25616
  bottom: "5px",
25485
25617
  left: "10px",
25486
25618
  width: "2.5rem",
25487
- heihgt: "2.5rem",
25619
+ heihgt: "2.5rem"
25488
25620
  },
25489
25621
  "#uiFeatures button": {
25490
25622
  backgroundColor: "var(--color12)",
@@ -25501,23 +25633,23 @@ const ArcwareStyles = {
25501
25633
  alignItems: "center",
25502
25634
  boxShadow: "0px 0px 24px 0px var(--colorBoxShadow)",
25503
25635
  borderRadius: "3px",
25504
- outline: "none",
25636
+ outline: "none"
25505
25637
  },
25506
25638
  "#uiFeatures button:hover, #uiFeatures button:active": {
25507
25639
  padding: "0 !important",
25508
- border: "none",
25640
+ border: "none"
25509
25641
  },
25510
25642
  "#uiFeatures button #audioIconMuted, #uiFeatures button #audioIconUnmuted, #uiFeatures button #micIconMuted, #uiFeatures button #micIconUnmuted": {
25511
25643
  width: "31px",
25512
- height: "28px",
25644
+ height: "28px"
25513
25645
  },
25514
25646
  "#uiFeatures button #maximizeIcon, #uiFeatures button #minimizeIcon": {
25515
25647
  width: "25px",
25516
- height: "25px",
25648
+ height: "25px"
25517
25649
  },
25518
25650
  "#stopIcon, #playIcon": {
25519
25651
  width: "30px",
25520
- height: "30px",
25652
+ height: "30px"
25521
25653
  },
25522
25654
  "#uiFeatures button .tooltiptext": {
25523
25655
  right: "125%",
@@ -25526,35 +25658,35 @@ const ArcwareStyles = {
25526
25658
  borderRadius: "3px",
25527
25659
  backgroundColor: "var(--color12)",
25528
25660
  width: "95px",
25529
- visibility: "hidden!important",
25661
+ visibility: "hidden!important"
25530
25662
  },
25531
25663
  "@media (hover: hover) and (pointer: fine)": {
25532
25664
  "#uiFeatures button:hover .tooltiptext": {
25533
- visibility: "visible!important",
25534
- },
25665
+ visibility: "visible!important"
25666
+ }
25535
25667
  },
25536
25668
  "#controls>*": {
25537
25669
  marginBottom: "0.5rem",
25538
25670
  display: "block",
25539
25671
  lineHeight: "1.75rem",
25540
25672
  padding: "0.5rem",
25541
- backgroundColor: "var(--color12)",
25673
+ backgroundColor: "var(--color12)"
25542
25674
  },
25543
25675
  "#uiFeatures #settingsIcon, #uiFeatures #statsIcon": {
25544
25676
  width: "27px",
25545
- height: "27px",
25677
+ height: "27px"
25546
25678
  },
25547
25679
  ".svgIcon": {
25548
- fill: "var(--color13)",
25680
+ fill: "var(--color13)"
25549
25681
  },
25550
25682
  "#uiFeatures button:hover .svgIcon, #uiFeatures button:active .svgIcon": {
25551
- fill: "var(--color12)",
25683
+ fill: "var(--color12)"
25552
25684
  },
25553
25685
  ".tgl-switch .tgl-slider, .tgl-flat:checked+.tgl-slider": {
25554
- border: "3px solid transparent",
25686
+ border: "3px solid transparent"
25555
25687
  },
25556
25688
  ".tgl-switch .tgl-slider": {
25557
- background: "none",
25689
+ background: "none"
25558
25690
  },
25559
25691
  ".tgl-switch .tgl-slider::before": {
25560
25692
  content: "''",
@@ -25568,18 +25700,18 @@ const ArcwareStyles = {
25568
25700
  top: "0",
25569
25701
  bottom: "0",
25570
25702
  left: "0",
25571
- right: "0",
25703
+ right: "0"
25572
25704
  },
25573
25705
  ".tgl-switch .tgl-slider::after": {
25574
25706
  height: "13px",
25575
25707
  width: "13px",
25576
25708
  borderRadius: "50%",
25577
25709
  top: "-2px",
25578
- left: "-1%",
25710
+ left: "-1%"
25579
25711
  },
25580
25712
  ".tgl-flat:checked+.tgl-slider:after": {
25581
25713
  left: "62%",
25582
- background: "var(--color3)",
25714
+ background: "var(--color3)"
25583
25715
  },
25584
25716
  ".form-control": {
25585
25717
  backgroundColor: "transparent",
@@ -25588,7 +25720,7 @@ const ArcwareStyles = {
25588
25720
  color: "var(--color13)",
25589
25721
  textAlign: "left",
25590
25722
  fontFamily: "inherit",
25591
- padding: "5px 15px ",
25723
+ padding: "5px 15px "
25592
25724
  },
25593
25725
  ".btn-flat": {
25594
25726
  background: "var(--color3)",
@@ -25598,31 +25730,62 @@ const ArcwareStyles = {
25598
25730
  cursor: "pointer",
25599
25731
  borderRadius: "4px",
25600
25732
  textTransform: "uppercase",
25601
- minWidth: "175px",
25733
+ minWidth: "175px"
25602
25734
  },
25603
25735
  ".btn-flat:disabled": {
25604
25736
  background: "var(--color7)",
25605
25737
  borderColor: "var(--color3)",
25606
25738
  color: "var(--color3)",
25607
- cursor: "default",
25739
+ cursor: "default"
25608
25740
  },
25609
25741
  ".btn-flat:focus": {
25610
- outline: "none",
25742
+ outline: "none"
25611
25743
  },
25612
25744
  ".arcware-logo-loader": {
25613
25745
  position: "relative",
25614
- display: "block",
25746
+ display: "flex",
25747
+ alignItems: "center",
25748
+ justifyContent: "center",
25615
25749
  width: "12.5%",
25616
25750
  height: "12.5%",
25751
+ margin: "0 auto",
25752
+ boxSizing: "border-box"
25753
+ },
25754
+ // image rendering + centering inside the box
25755
+ ".arcware-logo-loader img": {
25756
+ maxWidth: "40%",
25757
+ maxHeight: "40%",
25758
+ objectFit: "contain",
25759
+ objectPosition: "center center",
25760
+ display: "block",
25761
+ margin: 0,
25762
+ verticalAlign: "middle"
25763
+ },
25764
+ // fade stays the same
25765
+ ".arcware-logo-loader.pulse img": {
25766
+ animation: "aw-loader-fade var(--aw-fade,1200ms) ease-in-out infinite alternate"
25767
+ },
25768
+ ".arcware-logo-loader.aw-custom-loader": {
25769
+ width: "auto !important",
25770
+ height: "auto !important"
25771
+ },
25772
+ ".arcware-logo-loader.aw-custom-loader img": {
25773
+ display: "block",
25774
+ width: "auto",
25775
+ height: "auto",
25776
+ maxWidth: "80%",
25777
+ maxHeight: "80%",
25778
+ objectFit: "contain",
25779
+ margin: "0 auto" // ensure horizontal centering inside the loader
25617
25780
  },
25618
25781
  "#playOverlay img#playButton": {
25619
- width: "5%",
25782
+ width: "5%"
25620
25783
  },
25621
25784
  "#disconnectOverlay, #errorOverlay": {
25622
25785
  textTransform: "initial",
25623
25786
  textAlign: "center",
25624
25787
  fontSize: "20px",
25625
- lineHeight: 2.5,
25788
+ lineHeight: 2.5
25626
25789
  },
25627
25790
  "#disconnectOverlay .clickableState": {
25628
25791
  textTransform: "initial",
@@ -25632,13 +25795,13 @@ const ArcwareStyles = {
25632
25795
  fontSize: "18px",
25633
25796
  border: "1px solid #DAF693",
25634
25797
  margin: "25px auto 0",
25635
- width: "180px",
25798
+ width: "180px"
25636
25799
  },
25637
25800
  "#afkOverlay": {
25638
25801
  background: "none",
25639
25802
  transition: "all ease-in-out 0.5s",
25640
25803
  opacity: 1,
25641
- pointerEvents: "initial",
25804
+ pointerEvents: "initial"
25642
25805
  },
25643
25806
  "#afkOverlayInner": {
25644
25807
  textTransform: "initial",
@@ -25647,18 +25810,18 @@ const ArcwareStyles = {
25647
25810
  fontSize: "18px",
25648
25811
  width: "360px",
25649
25812
  textAlign: "center",
25650
- lineHeight: 2.5,
25813
+ lineHeight: 2.5
25651
25814
  },
25652
25815
  "#afkOverlayInner center::first-line": {
25653
25816
  textTransform: "uppercase",
25654
25817
  color: "#FF8461",
25655
25818
  fontWeight: "bold",
25656
- fontSize: "24px",
25819
+ fontSize: "24px"
25657
25820
  },
25658
25821
  "#afkOverlayInner #afkCountDownNumber": {
25659
25822
  color: "#DAF693",
25660
25823
  fontSize: "26px",
25661
- lineHeight: "22px",
25824
+ lineHeight: "22px"
25662
25825
  },
25663
25826
  "#afkOverlayInner center .retry-button": {
25664
25827
  textTransform: "initial",
@@ -25668,7 +25831,7 @@ const ArcwareStyles = {
25668
25831
  fontSize: "18px",
25669
25832
  border: "1px solid #DAF693",
25670
25833
  margin: "25px auto 0",
25671
- width: "180px",
25834
+ width: "180px"
25672
25835
  },
25673
25836
  "#connectOverlay #connectButton": {
25674
25837
  textTransform: "initial",
@@ -25678,33 +25841,33 @@ const ArcwareStyles = {
25678
25841
  fontSize: "18px",
25679
25842
  border: "1px solid #DAF693",
25680
25843
  margin: "25px auto 0",
25681
- width: "180px",
25844
+ width: "180px"
25682
25845
  },
25683
25846
  "#connectOverlay .connection-text": {
25684
25847
  textTransform: "initial",
25685
25848
  textAlign: "center",
25686
- margin: "25px auto 0",
25849
+ margin: "25px auto 0"
25687
25850
  },
25688
25851
  "#connectOverlay .connection-text .title": {
25689
25852
  color: "#ffffff",
25690
25853
  fontSize: "18px",
25691
- margin: "5px 0",
25854
+ margin: "5px 0"
25692
25855
  },
25693
25856
  "#connectOverlay .connection-text .subtitle": {
25694
25857
  color: "#ffffff",
25695
25858
  opacity: 0.5,
25696
25859
  fontSize: "12px",
25697
- margin: "10px 0",
25860
+ margin: "10px 0"
25698
25861
  },
25699
25862
  "#infoOverlay.hiddenState": {
25700
- display: "none",
25863
+ display: "none"
25701
25864
  },
25702
25865
  "#disconnectOverlay, #playOverlay, #errorOverlay, #microphoneOverlay, #connectOverlay": {
25703
25866
  background: "#18181A",
25704
25867
  display: "flex",
25705
25868
  transition: "all ease-in-out 0.5s",
25706
25869
  opacity: 1,
25707
- pointerEvents: "initial",
25870
+ pointerEvents: "initial"
25708
25871
  },
25709
25872
  "#microphoneOverlay": {
25710
25873
  textTransform: "initial",
@@ -25723,51 +25886,51 @@ const ArcwareStyles = {
25723
25886
  justifyContent: "center",
25724
25887
  alignItems: "center",
25725
25888
  flexDirection: "column",
25726
- zIndex: 99999,
25889
+ zIndex: 99999
25727
25890
  },
25728
25891
  "#microphoneOverlay .title": {
25729
25892
  fontSize: "24px",
25730
25893
  position: "relative",
25731
25894
  marginBottom: "20px",
25732
- color: "#F0F0F2",
25895
+ color: "#F0F0F2"
25733
25896
  },
25734
25897
  "#microphoneOverlay .title:after": {
25735
25898
  content: "''",
25736
25899
  display: "inline-block",
25737
25900
  animation: "dotty steps(1,end) 1s infinite",
25738
- position: "absolute",
25901
+ position: "absolute"
25739
25902
  },
25740
25903
  "#microphoneOverlay p": {
25741
25904
  margin: 0,
25742
- color: "#858588",
25905
+ color: "#858588"
25743
25906
  },
25744
25907
  "#microphoneOverlay svg": {
25745
25908
  height: "65px",
25746
25909
  marginBottom: "15px",
25747
- marginTop: "-5px",
25910
+ marginTop: "-5px"
25748
25911
  },
25749
25912
  "#microphoneOverlay .svgIcon": {
25750
- fill: "#DAF693",
25913
+ fill: "#DAF693"
25751
25914
  },
25752
25915
  "#disconnectOverlay.hiddenState, #playOverlay.hiddenState, #errorOverlay.hiddenState, #afkOverlay.hiddenState, #microphoneOverlay.hiddenState": {
25753
25916
  opacity: 0,
25754
- pointerEvents: "none",
25917
+ pointerEvents: "none"
25755
25918
  },
25756
25919
  "#disconnectOverlay.mic-overlay-is-visible, #errorOverlay.mic-overlay-is-visible, #infoOverlay.mic-overlay-is-visible": {
25757
25920
  opacity: 0,
25758
- pointerEvents: "none",
25921
+ pointerEvents: "none"
25759
25922
  },
25760
25923
  "#infoOverlay.hiddenState, #connectOverlay.hiddenState": {
25761
- display: "none",
25924
+ display: "none"
25762
25925
  },
25763
25926
  "#connectOverlay": {
25764
25927
  display: "flex",
25765
25928
  flexDirection: "column-reverse",
25766
25929
  alignItems: "center",
25767
- justifyContent: "center",
25930
+ justifyContent: "center"
25768
25931
  },
25769
25932
  "#infoOverlay": {
25770
- display: "none",
25933
+ display: "none"
25771
25934
  },
25772
25935
  ".love-letters-box-root": {
25773
25936
  display: "flex",
@@ -25779,11 +25942,11 @@ const ArcwareStyles = {
25779
25942
  alignItems: "center",
25780
25943
  flexDirection: "column",
25781
25944
  background: "#18181A",
25782
- zIndex: 1,
25945
+ zIndex: 1
25783
25946
  },
25784
25947
  ".love-letters-box-root.fade-out": {
25785
25948
  opacity: 0,
25786
- transition: "opacity 0.5s",
25949
+ transition: "opacity 0.5s"
25787
25950
  },
25788
25951
  "#letters-block": {
25789
25952
  position: "absolute",
@@ -25800,7 +25963,7 @@ const ArcwareStyles = {
25800
25963
  alignItems: "center",
25801
25964
  fontSize: "16px",
25802
25965
  textTransform: "initial",
25803
- textAlign: "center",
25966
+ textAlign: "center"
25804
25967
  },
25805
25968
  "#letters-wrapper": {
25806
25969
  height: "77px",
@@ -25811,62 +25974,88 @@ const ArcwareStyles = {
25811
25974
  alignItems: "center",
25812
25975
  justifyContent: "flex-end",
25813
25976
  marginTop: "10px",
25814
- paddingBottom: "2px",
25977
+ paddingBottom: "2px"
25815
25978
  },
25816
25979
  "#letters-wrapper p": {
25817
25980
  textAlign: "center",
25818
25981
  lineHeight: 1.25,
25819
- fontSize: "16px",
25982
+ fontSize: "16px"
25820
25983
  },
25821
25984
  ".letter-animation:nth-last-of-type(1)::after": {
25822
25985
  display: "inline-block",
25823
25986
  animation: "dotty steps(1,end) 1s infinite",
25824
25987
  content: "''",
25825
- position: "absolute",
25988
+ position: "absolute"
25826
25989
  },
25827
25990
  ".letter-animation": {
25828
25991
  transition: "all 0.5s ease-in-out",
25829
25992
  transformOrigin: "bottom",
25830
- margin: "0 auto",
25993
+ margin: "0 auto"
25831
25994
  },
25832
25995
  ".letter-animation-enter": {
25833
- animation: "fadeInUp 0.75s ease-out",
25996
+ animation: "fadeInUp 0.75s ease-out"
25834
25997
  },
25835
25998
  ".letter-animation-exit": {
25836
25999
  opacity: 0,
25837
26000
  scale: 0.9,
25838
26001
  transition: "all ease-in-out 1s",
25839
- margin: 0,
26002
+ margin: 0
25840
26003
  },
25841
26004
  "@keyframes dotty": {
25842
26005
  "0%": { content: "''" },
25843
26006
  "25%": { content: "'.'" },
25844
26007
  "50%": { content: "'..'" },
25845
26008
  "75%": { content: "'...'" },
25846
- "100%": { content: "''" },
26009
+ "100%": { content: "''" }
25847
26010
  },
25848
26011
  "@keyframes fadeInUp": {
25849
26012
  from: {
25850
26013
  opacity: 0,
25851
26014
  transform: " translateY(5px)",
25852
- scale: 0.9,
26015
+ scale: 0.9
25853
26016
  },
25854
26017
  to: {
25855
26018
  opacity: 1,
25856
26019
  transform: "translateY(0)",
25857
- scale: 1,
25858
- },
26020
+ scale: 1
26021
+ }
25859
26022
  },
25860
26023
  ".hidden": {
25861
26024
  display: "none",
25862
- opacity: 0,
26025
+ opacity: 0
25863
26026
  },
25864
26027
  ".visible": {
25865
26028
  display: "block",
25866
26029
  opacity: 1,
25867
- transition: "opacity 1s ease-out",
26030
+ transition: "opacity 1s ease-out"
25868
26031
  },
25869
- },
26032
+ // Make the host a flex centering box
26033
+ ".love-letters-box-root .arcware-logo-loader": {
26034
+ display: "flex",
26035
+ alignItems: "center",
26036
+ justifyContent: "center"
26037
+ },
26038
+ // When a custom image is active, ignore the legacy 12.5% box
26039
+ ".love-letters-box-root .arcware-logo-loader.aw-custom-loader": {
26040
+ width: "auto !important",
26041
+ height: "auto !important"
26042
+ },
26043
+ // Size & center the <img> itself (independent of host size)
26044
+ ".love-letters-box-root .arcware-logo-loader.aw-custom-loader img": {
26045
+ display: "block",
26046
+ margin: "0 auto",
26047
+ width: "min(40vmin, 40vw)",
26048
+ height: "auto",
26049
+ objectFit: "contain",
26050
+ objectPosition: "center center"
26051
+ },
26052
+ // (optional) If you prefer the old “percentage of container” behavior:
26053
+ ".love-letters-box-root .arcware-logo-loader.aw-custom-loader img.alt-40pct": {
26054
+ width: "40%",
26055
+ maxWidth: "100%",
26056
+ height: "auto"
26057
+ }
26058
+ }
25870
26059
  };
25871
26060
 
25872
26061
 
@@ -25889,6 +26078,56 @@ class ArcwareLogoLoader {
25889
26078
  arcwareLogoLoader.innerHTML = this.getSvg();
25890
26079
  return arcwareLogoLoader;
25891
26080
  }
26081
+ /** Call this once after you create the wrapper/root that contains the SVG */
26082
+ setHostElement(el) {
26083
+ this._hostEl = el;
26084
+ }
26085
+ /** Swap the loader image at runtime; pass undefined to go back to SVG */
26086
+ setImage(url) {
26087
+ var _a, _b;
26088
+ if (!this._hostEl)
26089
+ return;
26090
+ // lazily create <img> once
26091
+ if (!this._imgEl) {
26092
+ const img = document.createElement("img");
26093
+ img.alt = "Loading";
26094
+ img.style.display = "none"; // hidden until we set a URL
26095
+ this._hostEl.appendChild(img);
26096
+ this._imgEl = img;
26097
+ }
26098
+ if (url && url.trim()) {
26099
+ (_a = this._hostEl) === null || _a === void 0 ? void 0 : _a.classList.add("aw-custom-loader");
26100
+ if (this._imgEl.src !== url)
26101
+ this._imgEl.src = url;
26102
+ // show <img>, hide SVG
26103
+ this._imgEl.style.display = "";
26104
+ const svg = this._hostEl.querySelector("svg");
26105
+ if (svg)
26106
+ svg.style.display = "none";
26107
+ }
26108
+ else {
26109
+ // no url → fall back to SVG
26110
+ (_b = this._hostEl) === null || _b === void 0 ? void 0 : _b.classList.remove("aw-custom-loader");
26111
+ this._imgEl.style.display = "none";
26112
+ const svg = this._hostEl.querySelector("svg");
26113
+ if (svg)
26114
+ svg.style.display = "";
26115
+ }
26116
+ }
26117
+ /** Enable/disable pulsing fade in ms; 0 disables */
26118
+ setFade(ms) {
26119
+ if (!this._hostEl)
26120
+ return;
26121
+ const n = Number(ms) || 0;
26122
+ if (n > 0) {
26123
+ this._hostEl.style.setProperty("--aw-fade", `${n}ms`);
26124
+ this._hostEl.classList.add("pulse"); // uses #aw-loader.pulse styles you added
26125
+ }
26126
+ else {
26127
+ this._hostEl.classList.remove("pulse");
26128
+ this._hostEl.style.removeProperty("--aw-fade");
26129
+ }
26130
+ }
25892
26131
  getSvg() {
25893
26132
  return `
25894
26133
  <svg width="42" height="80" viewBox="0 0 42 80" xmlns="http://www.w3.org/2000/svg">
@@ -26498,7 +26737,8 @@ class StopIcon {
26498
26737
 
26499
26738
  __webpack_require__.r(__webpack_exports__);
26500
26739
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
26501
- /* harmony export */ "Messages": () => (/* reexport safe */ _lib__WEBPACK_IMPORTED_MODULE_0__.Messages)
26740
+ /* harmony export */ "Messages": () => (/* reexport safe */ _lib__WEBPACK_IMPORTED_MODULE_0__.Messages),
26741
+ /* harmony export */ "ZWhiteLabel": () => (/* reexport safe */ _lib__WEBPACK_IMPORTED_MODULE_0__.ZWhiteLabel)
26502
26742
  /* harmony export */ });
26503
26743
  /* harmony import */ var _lib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(318);
26504
26744
 
@@ -26981,6 +27221,39 @@ const Send = {
26981
27221
  };
26982
27222
 
26983
27223
 
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
+
26984
27257
  /***/ }),
26985
27258
 
26986
27259
  /***/ 318:
@@ -26988,9 +27261,12 @@ const Send = {
26988
27261
 
26989
27262
  __webpack_require__.r(__webpack_exports__);
26990
27263
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
26991
- /* harmony export */ "Messages": () => (/* reexport module object */ _Messages__WEBPACK_IMPORTED_MODULE_0__)
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)
26992
27266
  /* harmony export */ });
26993
27267
  /* 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
+
26994
27270
 
26995
27271
 
26996
27272