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
@@ -1 +1 @@
1
- {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\playerTypes.cjs"],"names":["__defProp","Object","defineProperty"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mEACIA,QAAYC,EAAAA,IAAAA,KAAAA;oBAAAA,KAAAA,CAAAA,CAAAA,GAAAA,IAAAA;+BAAAA,GAAOC,CAAAA,CAAAA,IAAAA","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/player/playerTypes.ts\nvar playerTypes_exports = {};\nmodule.exports = __toCommonJS(playerTypes_exports);\n"]}
1
+ {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\playerTypes.cjs"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__copyProps","to","from","except","desc","key","call","get","enumerable","__toCommonJS","mod","value","playerTypes_exports","module","exports"],"mappings":"AAAA;;;;;AACA,IAAIA,YAAYC,OAAOC,cAAc;AACrC,IAAIC,mBAAmBF,OAAOG,wBAAwB;AACtD,IAAIC,oBAAoBJ,OAAOK,mBAAmB;AAClD,IAAIC,eAAeN,OAAOO,SAAS,CAACC,cAAc;AAClD,IAAIC,cAAc,qBAACC,IAAIC,MAAMC,QAAQC;IACnC,IAAIF,QAAQ,CAAA,OAAOA,qCAAP,SAAOA,KAAG,MAAM,YAAY,OAAOA,SAAS,YAAY;YAC7D,kCAAA,2BAAA;;;gBAAA,IAAIG,MAAJ;gBACH,IAAI,CAACR,aAAaS,IAAI,CAACL,IAAII,QAAQA,QAAQF,QACzCb,UAAUW,IAAII,KAAK;oBAAEE,KAAK,SAALA;+BAAWL,IAAI,CAACG,IAAI;;oBAAEG,YAAY,CAAEJ,CAAAA,OAAOX,iBAAiBS,MAAMG,IAAG,KAAMD,KAAKI,UAAU;gBAAC;;YAFpH,QAAK,YAAWb,kBAAkBO,0BAA7B,SAAA,6BAAA,QAAA,yBAAA;;YAAA;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;IAGP;IACA,OAAOD;AACT;AACA,IAAIQ,eAAe,sBAACC;WAAQV,YAAYV,UAAU,CAAC,GAAG,cAAc;QAAEqB,OAAO;IAAK,IAAID;;AAEtF,4BAA4B;AAC5B,IAAIE,sBAAsB,CAAC;AAC3BC,OAAOC,OAAO,GAAGL,aAAaG","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/player/playerTypes.ts\nvar playerTypes_exports = {};\nmodule.exports = __toCommonJS(playerTypes_exports);\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\players\\FilePlayer.cjs"],"names":[],"mappings":"AAAA","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/players/FilePlayer.tsx\nvar FilePlayer_exports = {};\n__export(FilePlayer_exports, {\n default: () => FilePlayer\n});\nmodule.exports = __toCommonJS(FilePlayer_exports);\nvar import_react = require(\"react\");\n\n// src/patterns.ts\nvar HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nvar HLS_PATHS = /\\/hls\\//i;\nvar DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nvar VIDEO_EXTENSIONS = /\\.(mp4|webm|ogg|avi|mov|wmv|flv|mkv)($|\\?)/i;\nvar AUDIO_EXTENSIONS = /\\.(mp3|wav|ogg|aac|wma|flac|m4a)($|\\?)/i;\nvar canPlay = {\n hls: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return HLS_EXTENSIONS.test(url) || HLS_PATHS.test(url);\n },\n dash: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return DASH_EXTENSIONS.test(url);\n },\n video: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url);\n },\n audio: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return AUDIO_EXTENSIONS.test(url);\n },\n file: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url) || AUDIO_EXTENSIONS.test(url);\n }\n};\n\n// src/players/FilePlayer.tsx\nvar FilePlayer = class extends import_react.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.ready = false;\n this.load = () => {\n if (!this.props.videoElement || !this.props.src) return;\n const video = this.props.videoElement;\n const handleLoadedMetadata = () => {\n if (this.mounted && !this.ready) {\n this.ready = true;\n this.props.onReady?.();\n }\n };\n const handlePlay = () => {\n if (this.mounted) {\n this.props.onPlay?.();\n }\n };\n const handlePause = () => {\n if (this.mounted) {\n this.props.onPause?.();\n }\n };\n const handleEnded = () => {\n if (this.mounted) {\n this.props.onEnded?.();\n }\n };\n const handleError = (error) => {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n };\n const handleLoadedData = () => {\n if (this.mounted) {\n this.props.onLoaded?.();\n }\n };\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"play\", handlePlay);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n video.addEventListener(\"error\", handleError);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.src = this.props.src;\n if (this.props.autoplay !== void 0) video.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) video.muted = this.props.muted;\n if (this.props.loop !== void 0) video.loop = this.props.loop;\n if (this.props.controls !== void 0) video.controls = this.props.controls;\n if (this.props.playsInline !== void 0)\n video.playsInline = this.props.playsInline;\n if (this.props.preload !== void 0)\n video.preload = this.props.preload;\n if (this.props.poster !== void 0) video.poster = this.props.poster;\n this.props.onMount?.(this);\n return () => {\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"play\", handlePlay);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n video.removeEventListener(\"error\", handleError);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n };\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[FilePlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n } else {\n console.warn(\"[FilePlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.setLoop = (loop) => {\n if (this.props.videoElement) {\n this.props.videoElement.loop = loop;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"video\") return this.props.videoElement;\n return null;\n };\n this.enablePIP = async () => {\n if (this.props.videoElement && \"requestPictureInPicture\" in this.props.videoElement) {\n try {\n await this.props.videoElement.requestPictureInPicture();\n } catch (error) {\n console.warn(\"Picture-in-Picture failed:\", error);\n }\n }\n };\n this.disablePIP = async () => {\n if (document.pictureInPictureElement) {\n try {\n await document.exitPictureInPicture();\n } catch (error) {\n console.warn(\"Exit Picture-in-Picture failed:\", error);\n }\n }\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nFilePlayer.displayName = \"FilePlayer\";\nFilePlayer.canPlay = canPlay.file;\n"]}
1
+ {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\players\\FilePlayer.cjs"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","FilePlayer_exports","default","FilePlayer","module","exports","import_react","require","HLS_EXTENSIONS","HLS_PATHS","DASH_EXTENSIONS","VIDEO_EXTENSIONS","AUDIO_EXTENSIONS","canPlay","hls","url","test","dash","video","audio","file","arguments","mounted","ready","load","props","videoElement","src","handleLoadedMetadata","onReady","handlePlay","onPlay","handlePause","onPause","handleEnded","onEnded","handleError","error","onError","handleLoadedData","onLoaded","addEventListener","autoplay","muted","loop","controls","playsInline","preload","poster","onMount","removeEventListener","play","hasValidSource","currentSrc","readyState","catch","console","warn","pause","stop","currentTime","seekTo","seconds","keepPlaying","setVolume","volume","Math","max","min","mute","unmute","setPlaybackRate","rate","playbackRate","setLoop","getDuration","isFinite","duration","getCurrentTime","getSecondsLoaded","buffered","length","end","getInternalPlayer","enablePIP","requestPictureInPicture","disablePIP","document","pictureInPictureElement","exitPictureInPicture","componentDidMount","componentWillUnmount","componentDidUpdate","prevProps","render","Component","displayName"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/players/FilePlayer.tsx\nvar FilePlayer_exports = {};\n__export(FilePlayer_exports, {\n default: () => FilePlayer\n});\nmodule.exports = __toCommonJS(FilePlayer_exports);\nvar import_react = require(\"react\");\n\n// src/patterns.ts\nvar HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nvar HLS_PATHS = /\\/hls\\//i;\nvar DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nvar VIDEO_EXTENSIONS = /\\.(mp4|webm|ogg|avi|mov|wmv|flv|mkv)($|\\?)/i;\nvar AUDIO_EXTENSIONS = /\\.(mp3|wav|ogg|aac|wma|flac|m4a)($|\\?)/i;\nvar canPlay = {\n hls: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return HLS_EXTENSIONS.test(url) || HLS_PATHS.test(url);\n },\n dash: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return DASH_EXTENSIONS.test(url);\n },\n video: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url);\n },\n audio: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return AUDIO_EXTENSIONS.test(url);\n },\n file: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url) || AUDIO_EXTENSIONS.test(url);\n }\n};\n\n// src/players/FilePlayer.tsx\nvar FilePlayer = class extends import_react.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.ready = false;\n this.load = () => {\n if (!this.props.videoElement || !this.props.src) return;\n const video = this.props.videoElement;\n const handleLoadedMetadata = () => {\n if (this.mounted && !this.ready) {\n this.ready = true;\n this.props.onReady?.();\n }\n };\n const handlePlay = () => {\n if (this.mounted) {\n this.props.onPlay?.();\n }\n };\n const handlePause = () => {\n if (this.mounted) {\n this.props.onPause?.();\n }\n };\n const handleEnded = () => {\n if (this.mounted) {\n this.props.onEnded?.();\n }\n };\n const handleError = (error) => {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n };\n const handleLoadedData = () => {\n if (this.mounted) {\n this.props.onLoaded?.();\n }\n };\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"play\", handlePlay);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n video.addEventListener(\"error\", handleError);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.src = this.props.src;\n if (this.props.autoplay !== void 0) video.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) video.muted = this.props.muted;\n if (this.props.loop !== void 0) video.loop = this.props.loop;\n if (this.props.controls !== void 0) video.controls = this.props.controls;\n if (this.props.playsInline !== void 0)\n video.playsInline = this.props.playsInline;\n if (this.props.preload !== void 0)\n video.preload = this.props.preload;\n if (this.props.poster !== void 0) video.poster = this.props.poster;\n this.props.onMount?.(this);\n return () => {\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"play\", handlePlay);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n video.removeEventListener(\"error\", handleError);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n };\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[FilePlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n } else {\n console.warn(\"[FilePlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.setLoop = (loop) => {\n if (this.props.videoElement) {\n this.props.videoElement.loop = loop;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"video\") return this.props.videoElement;\n return null;\n };\n this.enablePIP = async () => {\n if (this.props.videoElement && \"requestPictureInPicture\" in this.props.videoElement) {\n try {\n await this.props.videoElement.requestPictureInPicture();\n } catch (error) {\n console.warn(\"Picture-in-Picture failed:\", error);\n }\n }\n };\n this.disablePIP = async () => {\n if (document.pictureInPictureElement) {\n try {\n await document.exitPictureInPicture();\n } catch (error) {\n console.warn(\"Exit Picture-in-Picture failed:\", error);\n }\n }\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nFilePlayer.displayName = \"FilePlayer\";\nFilePlayer.canPlay = canPlay.file;\n"]}
@@ -2862,6 +2862,7 @@ function toDevSafeUrl(rawUrl) {
2862
2862
  // src/sdk/pal.ts
2863
2863
  var PAL_SDK_URL = "https://imasdk.googleapis.com/pal/sdkloader/pal.js";
2864
2864
  var _nonceLoader;
2865
+ var _nonceLoaderAllowStorage;
2865
2866
  var _palLoadPromise;
2866
2867
  function loadPalSdk() {
2867
2868
  var _window_goog;
@@ -2904,12 +2905,15 @@ function loadPalSdk() {
2904
2905
  });
2905
2906
  return _palLoadPromise;
2906
2907
  }
2907
- function getOrCreateNonceLoader() {
2908
- if (_nonceLoader) return _nonceLoader;
2908
+ function getOrCreateNonceLoader(allowStorage) {
2909
+ if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {
2910
+ return _nonceLoader;
2911
+ }
2909
2912
  var goog = window.goog;
2910
2913
  var consentSettings = new goog.pal.ConsentSettings();
2911
- consentSettings.allowStorage = true;
2914
+ consentSettings.allowStorage = allowStorage;
2912
2915
  _nonceLoader = new goog.pal.NonceLoader(consentSettings);
2916
+ _nonceLoaderAllowStorage = allowStorage;
2913
2917
  return _nonceLoader;
2914
2918
  }
2915
2919
  function createPalNonceManager() {
@@ -2918,7 +2922,7 @@ function createPalNonceManager() {
2918
2922
  return {
2919
2923
  generateNonce: function generateNonce() {
2920
2924
  return _async_to_generator(function() {
2921
- var options, _options_adWillAutoPlay, _options_adWillPlayMuted, _options_playerVolume, _options_continuousPlayback, loader, goog, request, manager, error;
2925
+ var options, _options_allowStorage, _options_adWillAutoPlay, _options_adWillPlayMuted, _options_playerVolume, _options_continuousPlayback, loader, goog, request, manager, error;
2922
2926
  var _arguments = arguments;
2923
2927
  return _ts_generator(this, function(_state) {
2924
2928
  switch(_state.label){
@@ -2938,7 +2942,7 @@ function createPalNonceManager() {
2938
2942
  ];
2939
2943
  case 2:
2940
2944
  _state.sent();
2941
- loader = getOrCreateNonceLoader();
2945
+ loader = getOrCreateNonceLoader((_options_allowStorage = options.allowStorage) !== null && _options_allowStorage !== void 0 ? _options_allowStorage : true);
2942
2946
  goog = window.goog;
2943
2947
  request = new goog.pal.NonceRequest();
2944
2948
  request.adWillAutoPlay = (_options_adWillAutoPlay = options.adWillAutoPlay) !== null && _options_adWillAutoPlay !== void 0 ? _options_adWillAutoPlay : true;
@@ -3123,6 +3127,8 @@ function ingestPlayerTracking(licenseKey, channel, body) {
3123
3127
  }
3124
3128
  // src/utils/vastEnvironmentSignals.ts
3125
3129
  var CTV_SESSION_STORAGE_KEY = "stormcloud.ctv.sid";
3130
+ var WEB_SESSION_STORAGE_KEY = "stormcloud.web.sid";
3131
+ var inMemoryWebSessionId;
3126
3132
  var PLAYER_ID_STORAGE_KEY = "stormcloud.player.id";
3127
3133
  var DEVICE_ID_STORAGE_KEYS = [
3128
3134
  "rdid",
@@ -3144,7 +3150,7 @@ function resolveVastEnvironmentSignals(isCtv) {
3144
3150
  var _ref;
3145
3151
  var bridgeSignals = readNativeBridgeSignals();
3146
3152
  var platformDevice = readPlatformNativeDeviceId();
3147
- var realDeviceId = bridgeSignals.deviceId || readStoredDeviceId() || platformDevice.deviceId;
3153
+ var realDeviceId = bridgeSignals.deviceId || (isCtv ? readStoredDeviceId() : void 0) || platformDevice.deviceId;
3148
3154
  var deviceId = realDeviceId;
3149
3155
  var deviceIdType = bridgeSignals.deviceIdType || readStoredString("deviceIdType") || readStoredString("idtype") || platformDevice.deviceIdType || inferDeviceIdType();
3150
3156
  var platformLat = bridgeSignals.deviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;
@@ -3173,9 +3179,12 @@ function resolveVastEnvironmentSignals(isCtv) {
3173
3179
  deviceTypeHint: deviceTypeHint
3174
3180
  });
3175
3181
  }
3182
+ var webSessionId = getOrCreateWebSessionId();
3176
3183
  return _object_spread_props(_object_spread({
3177
3184
  isCtv: false
3178
- }, deviceId ? {
3185
+ }, webSessionId ? {
3186
+ sessionId: webSessionId
3187
+ } : {}, deviceId ? {
3179
3188
  deviceId: deviceId
3180
3189
  } : {}, deviceId && deviceIdType ? {
3181
3190
  deviceIdType: deviceIdType
@@ -3216,7 +3225,7 @@ var GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;
3216
3225
  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;
3217
3226
  var FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;
3218
3227
  function resolveDeviceTypeHint(isCtv) {
3219
- var override = readDeviceTypeHintOverride();
3228
+ var override = readDeviceTypeHintOverride(isCtv);
3220
3229
  if (override != null) return override;
3221
3230
  return inferDeviceTypeHint(isCtv);
3222
3231
  }
@@ -3243,7 +3252,7 @@ function inferDeviceTypeHint(isCtv) {
3243
3252
  if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;
3244
3253
  return fallback;
3245
3254
  }
3246
- function readDeviceTypeHintOverride() {
3255
+ function readDeviceTypeHintOverride(isCtv) {
3247
3256
  if (typeof window === "undefined") return void 0;
3248
3257
  var keys = [
3249
3258
  "dth",
@@ -3292,6 +3301,7 @@ function readDeviceTypeHintOverride() {
3292
3301
  }
3293
3302
  }
3294
3303
  }
3304
+ if (!isCtv) return void 0;
3295
3305
  for(var _i = 0, _iter = [
3296
3306
  "stormcloud.dth",
3297
3307
  "dth"
@@ -3340,9 +3350,10 @@ function isEquivalentDeviceIdType(tagType, runtimeType) {
3340
3350
  return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);
3341
3351
  }
3342
3352
  function resolveNativeDeviceId() {
3353
+ var includeStored = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;
3343
3354
  var bridgeSignals = readNativeBridgeSignals();
3344
3355
  var platformDevice = readPlatformNativeDeviceId();
3345
- var deviceId = bridgeSignals.deviceId || readStoredDeviceId() || platformDevice.deviceId;
3356
+ var deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;
3346
3357
  if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {
3347
3358
  return void 0;
3348
3359
  }
@@ -3371,6 +3382,21 @@ function getOrCreateCtvSessionId() {
3371
3382
  writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);
3372
3383
  return sessionId;
3373
3384
  }
3385
+ function getOrCreateWebSessionId() {
3386
+ if (typeof window === "undefined") return void 0;
3387
+ try {
3388
+ var _window_sessionStorage;
3389
+ var existing = (_window_sessionStorage = window.sessionStorage) === null || _window_sessionStorage === void 0 ? void 0 : _window_sessionStorage.getItem(WEB_SESSION_STORAGE_KEY);
3390
+ if (existing && !isMacroPlaceholder(existing)) return existing;
3391
+ } catch (unused) {}
3392
+ var sessionId = inMemoryWebSessionId || createUuid();
3393
+ inMemoryWebSessionId = sessionId;
3394
+ try {
3395
+ var _window_sessionStorage1;
3396
+ (_window_sessionStorage1 = window.sessionStorage) === null || _window_sessionStorage1 === void 0 ? void 0 : _window_sessionStorage1.setItem(WEB_SESSION_STORAGE_KEY, sessionId);
3397
+ } catch (unused) {}
3398
+ return sessionId;
3399
+ }
3374
3400
  function readPersistentId(storageKey) {
3375
3401
  return readStoredString(storageKey) || readCookie(storageKey);
3376
3402
  }
@@ -3972,7 +3998,7 @@ function sha256Hex(input) {
3972
3998
  })();
3973
3999
  }
3974
4000
  function resolvePlayerIdentitySeed(clientInfo) {
3975
- var nativeDeviceId = resolveNativeDeviceId();
4001
+ var nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);
3976
4002
  if (nativeDeviceId) {
3977
4003
  return "device:".concat(nativeDeviceId);
3978
4004
  }
@@ -4741,6 +4767,12 @@ function applyDeviceIdentityParams(params, ctx) {
4741
4767
  params.set("is_lat", latValue !== null && latValue !== void 0 ? latValue : isMacroPlaceholder2(tagLat) ? "0" : tagLat);
4742
4768
  return;
4743
4769
  }
4770
+ if (!ctx.isCtv) {
4771
+ params.delete("rdid");
4772
+ params.delete("idtype");
4773
+ params.delete("is_lat");
4774
+ return;
4775
+ }
4744
4776
  var tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));
4745
4777
  var tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));
4746
4778
  if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {
@@ -4895,15 +4927,24 @@ function applyVastMacros(baseUrl, ctx) {
4895
4927
  if (ctx.podMaxAds != null) {
4896
4928
  params.set("pmad", String(Math.max(1, Math.round(ctx.podMaxAds))));
4897
4929
  }
4898
- if (!ctx.isCtv && ctx.pageUrl) {
4899
- params.set("url", ctx.pageUrl);
4900
- params.set("description_url", ctx.pageUrl);
4901
- }
4902
4930
  var existingUrl = params.get("url") || "";
4903
4931
  if (EXAMPLE_COM_URL.test(existingUrl)) {
4904
4932
  params.delete("url");
4905
4933
  params.delete("description_url");
4906
4934
  }
4935
+ if (!ctx.isCtv && ctx.pageUrl) {
4936
+ if (isMacroPlaceholder2(params.get("url"))) {
4937
+ params.set("url", ctx.pageUrl);
4938
+ }
4939
+ if (isMacroPlaceholder2(params.get("description_url"))) {
4940
+ params.set("description_url", params.get("url") || ctx.pageUrl);
4941
+ }
4942
+ }
4943
+ if (!ctx.isCtv) {
4944
+ params.delete("an");
4945
+ params.delete("msid");
4946
+ params.delete("sid");
4947
+ }
4907
4948
  if (ctx.adWillPlayMuted != null) {
4908
4949
  params.set("vpmute", ctx.adWillPlayMuted ? "1" : "0");
4909
4950
  }
@@ -4937,6 +4978,9 @@ function applyVastMacros(baseUrl, ctx) {
4937
4978
  if (ctx.programTitle) {
4938
4979
  params.set("ct_ti", ctx.programTitle);
4939
4980
  }
4981
+ if (ctx.channelName) {
4982
+ params.set("ct_ch", ctx.channelName);
4983
+ }
4940
4984
  var staleKeys = [];
4941
4985
  params.forEach(function(value, key) {
4942
4986
  if (isMacroPlaceholder2(value)) {
@@ -4989,8 +5033,10 @@ function fetchConsentSignals() {
4989
5033
  tcfApi("addEventListener", 2, function(tcData, success) {
4990
5034
  if (settled) return;
4991
5035
  if (success && tcData && (tcData.eventStatus === "tcloaded" || tcData.eventStatus === "useractioncomplete")) {
5036
+ var _tcData_purpose_consents, _tcData_purpose;
4992
5037
  settled = true;
4993
5038
  signals.gdpr = tcData.gdprApplies ? "1" : "0";
5039
+ 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;
4994
5040
  if (typeof tcData.tcString === "string" && tcData.tcString) {
4995
5041
  signals.gdprConsent = tcData.tcString;
4996
5042
  }
@@ -6523,7 +6569,7 @@ var AdConfigManager = /*#__PURE__*/ function() {
6523
6569
  pageUrl: !envSignals.isCtv && typeof window !== "undefined" ? toDevSafeUrl(window.location.href) : void 0,
6524
6570
  adWillPlayMuted: adWillPlayMuted,
6525
6571
  adWillAutoPlay: !!this.config.autoplay,
6526
- sessionId: envSignals.sessionId,
6572
+ sessionId: envSignals.isCtv || this.consentSignals.storageAllowed !== false ? envSignals.sessionId : void 0,
6527
6573
  deviceId: envSignals.deviceId,
6528
6574
  deviceIdType: envSignals.deviceIdType,
6529
6575
  limitAdTracking: envSignals.limitAdTracking,
@@ -6531,6 +6577,8 @@ var AdConfigManager = /*#__PURE__*/ function() {
6531
6577
  adTest: this.config.adTest
6532
6578
  }, this.config.programTitle ? {
6533
6579
  programTitle: this.config.programTitle
6580
+ } : {}, this.config.channelName ? {
6581
+ channelName: this.config.channelName
6534
6582
  } : {}), {
6535
6583
  consent: this.consentSignals
6536
6584
  }));
@@ -9651,7 +9699,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
9651
9699
  // ───────────────────────────────────────────────────────────────
9652
9700
  function load() {
9653
9701
  return _async_to_generator(function() {
9654
- var _this, _this_config_lowLatencyMode, error, palDescriptionUrl, continueLiveStreamDuringAds;
9702
+ var _this, error, palDescriptionUrl, continueLiveStreamDuringAds;
9655
9703
  return _ts_generator(this, function(_state) {
9656
9704
  switch(_state.label){
9657
9705
  case 0:
@@ -9687,19 +9735,25 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
9687
9735
  4
9688
9736
  ];
9689
9737
  case 4:
9690
- palDescriptionUrl = this.adConfig.getPalDescriptionUrl();
9691
- this.palNonce.generateNonce(_object_spread({
9692
- videoWidth: this.video.offsetWidth || this.video.clientWidth || 640,
9693
- videoHeight: this.video.offsetHeight || this.video.clientHeight || 480,
9694
- adWillAutoPlay: !!this.config.autoplay,
9695
- adWillPlayMuted: true,
9696
- playerVolume: 0,
9697
- continuousPlayback: (_this_config_lowLatencyMode = this.config.lowLatencyMode) !== null && _this_config_lowLatencyMode !== void 0 ? _this_config_lowLatencyMode : false
9698
- }, palDescriptionUrl ? {
9699
- descriptionUrl: palDescriptionUrl
9700
- } : {})).catch(function() {});
9701
- fetchConsentSignals().then(function(signals) {
9738
+ palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;
9739
+ fetchConsentSignals().catch(function() {
9740
+ return {};
9741
+ }).then(function(signals) {
9742
+ var _this_config_lowLatencyMode;
9702
9743
  _this.adConfig.consentSignals = signals;
9744
+ var muted = _this.video.muted;
9745
+ return _this.palNonce.generateNonce(_object_spread({
9746
+ videoWidth: _this.video.offsetWidth || _this.video.clientWidth || 640,
9747
+ videoHeight: _this.video.offsetHeight || _this.video.clientHeight || 480,
9748
+ adWillAutoPlay: !!_this.config.autoplay,
9749
+ adWillPlayMuted: muted,
9750
+ playerVolume: muted ? 0 : _this.video.volume,
9751
+ continuousPlayback: (_this_config_lowLatencyMode = _this.config.lowLatencyMode) !== null && _this_config_lowLatencyMode !== void 0 ? _this_config_lowLatencyMode : false
9752
+ }, palDescriptionUrl ? {
9753
+ descriptionUrl: palDescriptionUrl
9754
+ } : {}, signals.storageAllowed != null ? {
9755
+ allowStorage: signals.storageAllowed
9756
+ } : {}));
9703
9757
  }).catch(function() {});
9704
9758
  this.adConfig.initializeTracking();
9705
9759
  if (!this.hlsEngine.shouldUseNativeHls(function() {