stormcloud-video-player 0.8.60 → 0.8.62

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.
Files changed (54) hide show
  1. package/dist/stormcloud-vp.min.js +1 -1
  2. package/lib/Player.cjs.map +1 -1
  3. package/lib/StormcloudPlayer.cjs +83 -29
  4. package/lib/StormcloudPlayer.cjs.map +1 -1
  5. package/lib/index.cjs +87 -31
  6. package/lib/index.cjs.map +1 -1
  7. package/lib/index.d.ts +4034 -0
  8. package/lib/index.js +13001 -0
  9. package/lib/index.js.map +1 -0
  10. package/lib/patterns.cjs.map +1 -1
  11. package/lib/player/AdBreakOrchestrator.cjs +3 -2
  12. package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
  13. package/lib/player/AdConfigManager.cjs +53 -11
  14. package/lib/player/AdConfigManager.cjs.map +1 -1
  15. package/lib/player/AdTimingService.cjs.map +1 -1
  16. package/lib/player/HlsEngine.cjs.map +1 -1
  17. package/lib/player/PlaceholderLayer.cjs.map +1 -1
  18. package/lib/player/PlayerControls.cjs.map +1 -1
  19. package/lib/player/Scte35CueManager.cjs.map +1 -1
  20. package/lib/player/Scte35Parser.cjs.map +1 -1
  21. package/lib/player/StormcloudVideoPlayer.cjs +83 -29
  22. package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
  23. package/lib/player/playerTypes.cjs.map +1 -1
  24. package/lib/players/FilePlayer.cjs.map +1 -1
  25. package/lib/players/HlsPlayer.cjs +83 -29
  26. package/lib/players/HlsPlayer.cjs.map +1 -1
  27. package/lib/players/index.cjs +83 -29
  28. package/lib/players/index.cjs.map +1 -1
  29. package/lib/props.cjs.map +1 -1
  30. package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
  31. package/lib/sdk/pal.cjs +9 -5
  32. package/lib/sdk/pal.cjs.map +1 -1
  33. package/lib/sdk/pal.d.cts +1 -0
  34. package/lib/types.cjs.map +1 -1
  35. package/lib/types.d.cts +1 -0
  36. package/lib/ui/StormcloudVideoPlayer.cjs +87 -31
  37. package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
  38. package/lib/utils/browserCompat.cjs.map +1 -1
  39. package/lib/utils/ctvVastSignals.cjs +25 -4
  40. package/lib/utils/ctvVastSignals.cjs.map +1 -1
  41. package/lib/utils/devUrl.cjs.map +1 -1
  42. package/lib/utils/polyfills.cjs.map +1 -1
  43. package/lib/utils/tracking.cjs +3 -2
  44. package/lib/utils/tracking.cjs.map +1 -1
  45. package/lib/utils/trackingIngest.cjs.map +1 -1
  46. package/lib/utils/vastEnvironmentSignals.cjs +27 -5
  47. package/lib/utils/vastEnvironmentSignals.cjs.map +1 -1
  48. package/lib/utils/vastEnvironmentSignals.d.cts +1 -1
  49. package/lib/utils/vastMacros.cjs +24 -4
  50. package/lib/utils/vastMacros.cjs.map +1 -1
  51. package/lib/utils/vastMacros.d.cts +2 -0
  52. package/lib/utils/vastTrackingMacros.cjs.map +1 -1
  53. package/lib/utils.cjs.map +1 -1
  54. package/package.json +5 -3
package/lib/index.cjs CHANGED
@@ -3048,6 +3048,7 @@ function toDevSafeUrl(rawUrl) {
3048
3048
  // src/sdk/pal.ts
3049
3049
  var PAL_SDK_URL = "https://imasdk.googleapis.com/pal/sdkloader/pal.js";
3050
3050
  var _nonceLoader;
3051
+ var _nonceLoaderAllowStorage;
3051
3052
  var _palLoadPromise;
3052
3053
  function loadPalSdk() {
3053
3054
  var _window_goog;
@@ -3090,12 +3091,15 @@ function loadPalSdk() {
3090
3091
  });
3091
3092
  return _palLoadPromise;
3092
3093
  }
3093
- function getOrCreateNonceLoader() {
3094
- if (_nonceLoader) return _nonceLoader;
3094
+ function getOrCreateNonceLoader(allowStorage) {
3095
+ if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {
3096
+ return _nonceLoader;
3097
+ }
3095
3098
  var goog = window.goog;
3096
3099
  var consentSettings = new goog.pal.ConsentSettings();
3097
- consentSettings.allowStorage = true;
3100
+ consentSettings.allowStorage = allowStorage;
3098
3101
  _nonceLoader = new goog.pal.NonceLoader(consentSettings);
3102
+ _nonceLoaderAllowStorage = allowStorage;
3099
3103
  return _nonceLoader;
3100
3104
  }
3101
3105
  function createPalNonceManager() {
@@ -3104,7 +3108,7 @@ function createPalNonceManager() {
3104
3108
  return {
3105
3109
  generateNonce: function generateNonce() {
3106
3110
  return _async_to_generator(function() {
3107
- var options, _options_adWillAutoPlay, _options_adWillPlayMuted, _options_playerVolume, _options_continuousPlayback, loader, goog, request, manager, error;
3111
+ var options, _options_allowStorage, _options_adWillAutoPlay, _options_adWillPlayMuted, _options_playerVolume, _options_continuousPlayback, loader, goog, request, manager, error;
3108
3112
  var _arguments = arguments;
3109
3113
  return _ts_generator(this, function(_state) {
3110
3114
  switch(_state.label){
@@ -3124,7 +3128,7 @@ function createPalNonceManager() {
3124
3128
  ];
3125
3129
  case 2:
3126
3130
  _state.sent();
3127
- loader = getOrCreateNonceLoader();
3131
+ loader = getOrCreateNonceLoader((_options_allowStorage = options.allowStorage) !== null && _options_allowStorage !== void 0 ? _options_allowStorage : true);
3128
3132
  goog = window.goog;
3129
3133
  request = new goog.pal.NonceRequest();
3130
3134
  request.adWillAutoPlay = (_options_adWillAutoPlay = options.adWillAutoPlay) !== null && _options_adWillAutoPlay !== void 0 ? _options_adWillAutoPlay : true;
@@ -3315,6 +3319,8 @@ function ingestPlayerTracking(licenseKey, channel, body) {
3315
3319
  }
3316
3320
  // src/utils/vastEnvironmentSignals.ts
3317
3321
  var CTV_SESSION_STORAGE_KEY = "stormcloud.ctv.sid";
3322
+ var WEB_SESSION_STORAGE_KEY = "stormcloud.web.sid";
3323
+ var inMemoryWebSessionId;
3318
3324
  var PLAYER_ID_STORAGE_KEY = "stormcloud.player.id";
3319
3325
  var DEVICE_ID_STORAGE_KEYS = [
3320
3326
  "rdid",
@@ -3336,7 +3342,7 @@ function resolveVastEnvironmentSignals(isCtv) {
3336
3342
  var _ref;
3337
3343
  var bridgeSignals = readNativeBridgeSignals();
3338
3344
  var platformDevice = readPlatformNativeDeviceId();
3339
- var realDeviceId = bridgeSignals.deviceId || readStoredDeviceId() || platformDevice.deviceId;
3345
+ var realDeviceId = bridgeSignals.deviceId || (isCtv ? readStoredDeviceId() : void 0) || platformDevice.deviceId;
3340
3346
  var deviceId = realDeviceId;
3341
3347
  var deviceIdType = bridgeSignals.deviceIdType || readStoredString("deviceIdType") || readStoredString("idtype") || platformDevice.deviceIdType || inferDeviceIdType();
3342
3348
  var platformLat = bridgeSignals.deviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;
@@ -3365,9 +3371,12 @@ function resolveVastEnvironmentSignals(isCtv) {
3365
3371
  deviceTypeHint: deviceTypeHint
3366
3372
  });
3367
3373
  }
3374
+ var webSessionId = getOrCreateWebSessionId();
3368
3375
  return _object_spread_props(_object_spread({
3369
3376
  isCtv: false
3370
- }, deviceId ? {
3377
+ }, webSessionId ? {
3378
+ sessionId: webSessionId
3379
+ } : {}, deviceId ? {
3371
3380
  deviceId: deviceId
3372
3381
  } : {}, deviceId && deviceIdType ? {
3373
3382
  deviceIdType: deviceIdType
@@ -3408,7 +3417,7 @@ var GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;
3408
3417
  var CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\bTV\b/i;
3409
3418
  var FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;
3410
3419
  function resolveDeviceTypeHint(isCtv) {
3411
- var override = readDeviceTypeHintOverride();
3420
+ var override = readDeviceTypeHintOverride(isCtv);
3412
3421
  if (override != null) return override;
3413
3422
  return inferDeviceTypeHint(isCtv);
3414
3423
  }
@@ -3435,7 +3444,7 @@ function inferDeviceTypeHint(isCtv) {
3435
3444
  if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;
3436
3445
  return fallback;
3437
3446
  }
3438
- function readDeviceTypeHintOverride() {
3447
+ function readDeviceTypeHintOverride(isCtv) {
3439
3448
  if (typeof window === "undefined") return void 0;
3440
3449
  var keys = [
3441
3450
  "dth",
@@ -3484,6 +3493,7 @@ function readDeviceTypeHintOverride() {
3484
3493
  }
3485
3494
  }
3486
3495
  }
3496
+ if (!isCtv) return void 0;
3487
3497
  for(var _i = 0, _iter = [
3488
3498
  "stormcloud.dth",
3489
3499
  "dth"
@@ -3532,9 +3542,10 @@ function isEquivalentDeviceIdType(tagType, runtimeType) {
3532
3542
  return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);
3533
3543
  }
3534
3544
  function resolveNativeDeviceId() {
3545
+ var includeStored = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;
3535
3546
  var bridgeSignals = readNativeBridgeSignals();
3536
3547
  var platformDevice = readPlatformNativeDeviceId();
3537
- var deviceId = bridgeSignals.deviceId || readStoredDeviceId() || platformDevice.deviceId;
3548
+ var deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;
3538
3549
  if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {
3539
3550
  return void 0;
3540
3551
  }
@@ -3563,6 +3574,21 @@ function getOrCreateCtvSessionId() {
3563
3574
  writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);
3564
3575
  return sessionId;
3565
3576
  }
3577
+ function getOrCreateWebSessionId() {
3578
+ if (typeof window === "undefined") return void 0;
3579
+ try {
3580
+ var _window_sessionStorage;
3581
+ var existing = (_window_sessionStorage = window.sessionStorage) === null || _window_sessionStorage === void 0 ? void 0 : _window_sessionStorage.getItem(WEB_SESSION_STORAGE_KEY);
3582
+ if (existing && !isMacroPlaceholder(existing)) return existing;
3583
+ } catch (unused) {}
3584
+ var sessionId = inMemoryWebSessionId || createUuid();
3585
+ inMemoryWebSessionId = sessionId;
3586
+ try {
3587
+ var _window_sessionStorage1;
3588
+ (_window_sessionStorage1 = window.sessionStorage) === null || _window_sessionStorage1 === void 0 ? void 0 : _window_sessionStorage1.setItem(WEB_SESSION_STORAGE_KEY, sessionId);
3589
+ } catch (unused) {}
3590
+ return sessionId;
3591
+ }
3566
3592
  function readPersistentId(storageKey) {
3567
3593
  return readStoredString(storageKey) || readCookie(storageKey);
3568
3594
  }
@@ -4164,7 +4190,7 @@ function sha256Hex(input) {
4164
4190
  })();
4165
4191
  }
4166
4192
  function resolvePlayerIdentitySeed(clientInfo) {
4167
- var nativeDeviceId = resolveNativeDeviceId();
4193
+ var nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);
4168
4194
  if (nativeDeviceId) {
4169
4195
  return "device:".concat(nativeDeviceId);
4170
4196
  }
@@ -4933,6 +4959,12 @@ function applyDeviceIdentityParams(params, ctx) {
4933
4959
  params.set("is_lat", latValue !== null && latValue !== void 0 ? latValue : isMacroPlaceholder2(tagLat) ? "0" : tagLat);
4934
4960
  return;
4935
4961
  }
4962
+ if (!ctx.isCtv) {
4963
+ params.delete("rdid");
4964
+ params.delete("idtype");
4965
+ params.delete("is_lat");
4966
+ return;
4967
+ }
4936
4968
  var tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));
4937
4969
  var tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));
4938
4970
  if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {
@@ -5087,15 +5119,24 @@ function applyVastMacros(baseUrl, ctx) {
5087
5119
  if (ctx.podMaxAds != null) {
5088
5120
  params.set("pmad", String(Math.max(1, Math.round(ctx.podMaxAds))));
5089
5121
  }
5090
- if (!ctx.isCtv && ctx.pageUrl) {
5091
- params.set("url", ctx.pageUrl);
5092
- params.set("description_url", ctx.pageUrl);
5093
- }
5094
5122
  var existingUrl = params.get("url") || "";
5095
5123
  if (EXAMPLE_COM_URL.test(existingUrl)) {
5096
5124
  params.delete("url");
5097
5125
  params.delete("description_url");
5098
5126
  }
5127
+ if (!ctx.isCtv && ctx.pageUrl) {
5128
+ if (isMacroPlaceholder2(params.get("url"))) {
5129
+ params.set("url", ctx.pageUrl);
5130
+ }
5131
+ if (isMacroPlaceholder2(params.get("description_url"))) {
5132
+ params.set("description_url", params.get("url") || ctx.pageUrl);
5133
+ }
5134
+ }
5135
+ if (!ctx.isCtv) {
5136
+ params.delete("an");
5137
+ params.delete("msid");
5138
+ params.delete("sid");
5139
+ }
5099
5140
  if (ctx.adWillPlayMuted != null) {
5100
5141
  params.set("vpmute", ctx.adWillPlayMuted ? "1" : "0");
5101
5142
  }
@@ -5129,6 +5170,9 @@ function applyVastMacros(baseUrl, ctx) {
5129
5170
  if (ctx.programTitle) {
5130
5171
  params.set("ct_ti", ctx.programTitle);
5131
5172
  }
5173
+ if (ctx.channelName) {
5174
+ params.set("ct_ch", ctx.channelName);
5175
+ }
5132
5176
  var staleKeys = [];
5133
5177
  params.forEach(function(value, key) {
5134
5178
  if (isMacroPlaceholder2(value)) {
@@ -5181,8 +5225,10 @@ function fetchConsentSignals() {
5181
5225
  tcfApi("addEventListener", 2, function(tcData, success) {
5182
5226
  if (settled) return;
5183
5227
  if (success && tcData && (tcData.eventStatus === "tcloaded" || tcData.eventStatus === "useractioncomplete")) {
5228
+ var _tcData_purpose_consents, _tcData_purpose;
5184
5229
  settled = true;
5185
5230
  signals.gdpr = tcData.gdprApplies ? "1" : "0";
5231
+ signals.storageAllowed = tcData.gdprApplies ? ((_tcData_purpose = tcData.purpose) === null || _tcData_purpose === void 0 ? void 0 : (_tcData_purpose_consents = _tcData_purpose.consents) === null || _tcData_purpose_consents === void 0 ? void 0 : _tcData_purpose_consents[1]) === true : true;
5186
5232
  if (typeof tcData.tcString === "string" && tcData.tcString) {
5187
5233
  signals.gdprConsent = tcData.tcString;
5188
5234
  }
@@ -6715,7 +6761,7 @@ var AdConfigManager = /*#__PURE__*/ function() {
6715
6761
  pageUrl: !envSignals.isCtv && typeof window !== "undefined" ? toDevSafeUrl(window.location.href) : void 0,
6716
6762
  adWillPlayMuted: adWillPlayMuted,
6717
6763
  adWillAutoPlay: !!this.config.autoplay,
6718
- sessionId: envSignals.sessionId,
6764
+ sessionId: envSignals.isCtv || this.consentSignals.storageAllowed !== false ? envSignals.sessionId : void 0,
6719
6765
  deviceId: envSignals.deviceId,
6720
6766
  deviceIdType: envSignals.deviceIdType,
6721
6767
  limitAdTracking: envSignals.limitAdTracking,
@@ -6723,6 +6769,8 @@ var AdConfigManager = /*#__PURE__*/ function() {
6723
6769
  adTest: this.config.adTest
6724
6770
  }, this.config.programTitle ? {
6725
6771
  programTitle: this.config.programTitle
6772
+ } : {}, this.config.channelName ? {
6773
+ channelName: this.config.channelName
6726
6774
  } : {}), {
6727
6775
  consent: this.consentSignals
6728
6776
  }));
@@ -9843,7 +9891,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
9843
9891
  // ───────────────────────────────────────────────────────────────
9844
9892
  function load() {
9845
9893
  return _async_to_generator(function() {
9846
- var _this, _this_config_lowLatencyMode, error, palDescriptionUrl, continueLiveStreamDuringAds;
9894
+ var _this, error, palDescriptionUrl, continueLiveStreamDuringAds;
9847
9895
  return _ts_generator(this, function(_state) {
9848
9896
  switch(_state.label){
9849
9897
  case 0:
@@ -9879,19 +9927,25 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
9879
9927
  4
9880
9928
  ];
9881
9929
  case 4:
9882
- palDescriptionUrl = this.adConfig.getPalDescriptionUrl();
9883
- this.palNonce.generateNonce(_object_spread({
9884
- videoWidth: this.video.offsetWidth || this.video.clientWidth || 640,
9885
- videoHeight: this.video.offsetHeight || this.video.clientHeight || 480,
9886
- adWillAutoPlay: !!this.config.autoplay,
9887
- adWillPlayMuted: true,
9888
- playerVolume: 0,
9889
- continuousPlayback: (_this_config_lowLatencyMode = this.config.lowLatencyMode) !== null && _this_config_lowLatencyMode !== void 0 ? _this_config_lowLatencyMode : false
9890
- }, palDescriptionUrl ? {
9891
- descriptionUrl: palDescriptionUrl
9892
- } : {})).catch(function() {});
9893
- fetchConsentSignals().then(function(signals) {
9930
+ palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;
9931
+ fetchConsentSignals().catch(function() {
9932
+ return {};
9933
+ }).then(function(signals) {
9934
+ var _this_config_lowLatencyMode;
9894
9935
  _this.adConfig.consentSignals = signals;
9936
+ var muted = _this.video.muted;
9937
+ return _this.palNonce.generateNonce(_object_spread({
9938
+ videoWidth: _this.video.offsetWidth || _this.video.clientWidth || 640,
9939
+ videoHeight: _this.video.offsetHeight || _this.video.clientHeight || 480,
9940
+ adWillAutoPlay: !!_this.config.autoplay,
9941
+ adWillPlayMuted: muted,
9942
+ playerVolume: muted ? 0 : _this.video.volume,
9943
+ continuousPlayback: (_this_config_lowLatencyMode = _this.config.lowLatencyMode) !== null && _this_config_lowLatencyMode !== void 0 ? _this_config_lowLatencyMode : false
9944
+ }, palDescriptionUrl ? {
9945
+ descriptionUrl: palDescriptionUrl
9946
+ } : {}, signals.storageAllowed != null ? {
9947
+ allowStorage: signals.storageAllowed
9948
+ } : {}));
9895
9949
  }).catch(function() {});
9896
9950
  this.adConfig.initializeTracking();
9897
9951
  if (!this.hlsEngine.shouldUseNativeHls(function() {
@@ -10613,7 +10667,7 @@ var CRITICAL_PROPS = [
10613
10667
  var CONTROLS_HIDE_DELAY = 3e3;
10614
10668
  var DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;
10615
10669
  var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
10616
- var src = props.src, autoplay = props.autoplay, muted = props.muted, lowLatencyMode = props.lowLatencyMode, allowNativeHls = props.allowNativeHls, isLiveStream = props.isLiveStream, driftToleranceMs = props.driftToleranceMs, immediateManifestAds = props.immediateManifestAds, debugAdTiming = props.debugAdTiming, showCustomControls = props.showCustomControls, hideLoadingIndicator = props.hideLoadingIndicator, onVolumeToggle = props.onVolumeToggle, onFullscreenToggle = props.onFullscreenToggle, onControlClick = props.onControlClick, onReady = props.onReady, wrapperClassName = props.wrapperClassName, wrapperStyle = props.wrapperStyle, className = props.className, style = props.style, controls = props.controls, playsInline = props.playsInline, preload = props.preload, poster = props.poster, children = props.children, licenseKey = props.licenseKey, vastMode = props.vastMode, vastTagUrl = props.vastTagUrl, isVmap = props.isVmap, vmapUrl = props.vmapUrl, minSegmentsBeforePlay = props.minSegmentsBeforePlay, ctvAdRequest = props.ctvAdRequest, programTitle = props.programTitle, restVideoAttrs = _object_without_properties(props, [
10670
+ var src = props.src, autoplay = props.autoplay, muted = props.muted, lowLatencyMode = props.lowLatencyMode, allowNativeHls = props.allowNativeHls, isLiveStream = props.isLiveStream, driftToleranceMs = props.driftToleranceMs, immediateManifestAds = props.immediateManifestAds, debugAdTiming = props.debugAdTiming, showCustomControls = props.showCustomControls, hideLoadingIndicator = props.hideLoadingIndicator, onVolumeToggle = props.onVolumeToggle, onFullscreenToggle = props.onFullscreenToggle, onControlClick = props.onControlClick, onReady = props.onReady, wrapperClassName = props.wrapperClassName, wrapperStyle = props.wrapperStyle, className = props.className, style = props.style, controls = props.controls, playsInline = props.playsInline, preload = props.preload, poster = props.poster, children = props.children, licenseKey = props.licenseKey, vastMode = props.vastMode, vastTagUrl = props.vastTagUrl, isVmap = props.isVmap, vmapUrl = props.vmapUrl, minSegmentsBeforePlay = props.minSegmentsBeforePlay, ctvAdRequest = props.ctvAdRequest, programTitle = props.programTitle, channelName = props.channelName, restVideoAttrs = _object_without_properties(props, [
10617
10671
  "src",
10618
10672
  "autoplay",
10619
10673
  "muted",
@@ -10645,7 +10699,8 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
10645
10699
  "vmapUrl",
10646
10700
  "minSegmentsBeforePlay",
10647
10701
  "ctvAdRequest",
10648
- "programTitle"
10702
+ "programTitle",
10703
+ "channelName"
10649
10704
  ]);
10650
10705
  var videoRef = (0, import_react.useRef)(null);
10651
10706
  var playerRef = (0, import_react.useRef)(null);
@@ -10837,6 +10892,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
10837
10892
  if (minSegmentsBeforePlay !== void 0) cfg.minSegmentsBeforePlay = minSegmentsBeforePlay;
10838
10893
  if (ctvAdRequest !== void 0) cfg.ctvAdRequest = ctvAdRequest;
10839
10894
  if (programTitle !== void 0) cfg.programTitle = programTitle;
10895
+ if (channelName !== void 0) cfg.channelName = channelName;
10840
10896
  var player = new StormcloudVideoPlayer(cfg);
10841
10897
  playerRef.current = player;
10842
10898
  player.load().then(function() {