stormcloud-video-player 0.8.62 → 0.8.63
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/dist/stormcloud-vp.min.js +1 -1
- package/lib/StormcloudPlayer.cjs +21 -23
- package/lib/StormcloudPlayer.cjs.map +1 -1
- package/lib/index.cjs +21 -23
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +21 -23
- package/lib/index.js.map +1 -1
- package/lib/player/AdConfigManager.cjs +21 -23
- package/lib/player/AdConfigManager.cjs.map +1 -1
- package/lib/player/AdConfigManager.d.cts +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +21 -23
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.cjs +21 -23
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/index.cjs +21 -23
- package/lib/players/index.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.cjs +21 -23
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/utils/ctvVastSignals.cjs +1 -21
- package/lib/utils/ctvVastSignals.cjs.map +1 -1
- package/lib/utils/vastEnvironmentSignals.cjs +1 -21
- package/lib/utils/vastEnvironmentSignals.cjs.map +1 -1
- package/lib/utils/vastMacros.cjs +17 -0
- package/lib/utils/vastMacros.cjs.map +1 -1
- package/lib/utils/vastMacros.d.cts +2 -1
- package/package.json +1 -1
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\index.js"],"names":["React","useEffect","useRef","useMemo","useCallback","Hls","getChromeVersion","ua","match","parseInt","getWebKitVersion","getPlatform","navigator","userAgentData","platform","userAgent","test","detectBrowser","name","version","majorVersion","isSmartTV","isLegacyTV","supportsModernJS2","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","parts","split","toString","Promise","Map","Set","URLSearchParams","supportsModernJS","requiresMediaPipelineResetAfterAds","browser","getBrowserConfigOverrides","overrides","allowNativeHls","pauseContentDuringAds","Array","from","Object","assign","prototype","forEach","String","includes","e","logBrowserInfo","debug","console","log","supportsFeature","feature","TextEncoder","fetch","crypto","subtle","VAST_MACRO_PATTERN","CACHEBUSTING_ALIASES","KNOWN_VAST_MACROS","generateCachebuster","Math","floor","random","formatPlayhead","seconds","Number","isFinite","total","hh","padStart","mm","ss","ms","resolveMacroValues","ctx","values","set","key","value","adPlayhead","adPlayheadSeconds","contentPlayheadSeconds","assetUri","mediaMime","Date","toISOString","errorCode","playerWidth","playerHeight","round","deviceId","deviceIdType","limitAdTracking","pageUrl","URL","hostname","clientUa","podSequence","adServingId","reason","substituteVastTrackingMacros","url","replace","get","encodeURIComponent","has","LINEAR_TRACKING_EVENTS","textOf","el","textContent","trim","parseVastTime","length","map","p","parseFloat","h","m","s","every","n","parseProgressOffset","offset","trimmed","endsWith","percent","offsetPercent","offsetSeconds","MAX_VAST_WRAPPER_DEPTH","BEACON_TIMEOUT_MS","inFlightBeacons","VAST_ERROR_MEDIA_DISPLAY","VAST_ERROR_WRAPPER_TIMEOUT","VAST_ERROR_WRAPPER_LIMIT","VAST_ERROR_WRAPPER_NO_ADS","VAST_ERROR_NO_SUPPORTED_MEDIA","VERIFICATION_NOT_SUPPORTED_REASON","VIEWABLE_MIN_VISIBLE_RATIO","VIEWABLE_MIN_CONTINUOUS_S","toVastMediaErrorCode","error","code","createHlsAdPlayer","contentVideo","options","adPlaying","originalMutedState","originalVolume","max","min","volume","listeners","mainHlsInstance","AD_CONTAINER_PROP","AD_VIDEO_PROP","FRAME_COUNTER_RELIABLE_PROP","RVFC_RELIABLE_PROP","adVideoElement","adHls","adContainerEl","adEventHandlers","containerHandlers","currentAd","currentAdMediaFile","podAds","podIndex","preloadedAds","preloadingAds","destroyed","pendingTimeouts","STALL_TIMEOUT_MS","STALL_CHECK_INTERVAL_MS","BLACKFRAME_MIN_PLAYBACK_S","stallWatchdogId","lastAdProgressTime","lastAdProgressPosition","sawDecodedVideoFrame","videoFrameCallbackHandle","pendingPlayPromise","createTrackingState","impression","loaded","start","firstQuartile","midpoint","thirdQuartile","complete","viewabilitySettled","lastMuted","progressFired","trackingFired","resolvedAds","viewObserver","visibleRatio","continuousVisibleS","lastViewSampleTime","lastPlayerExpanded","documentHandlers","emit","event","payload","fn","warn","buildTrackingMacroContext","options2","ad","context","currentTime","type","clientWidth","clientHeight","location","href","fireTrackingPixels","urls","macroContext","trackingUrl","img","Image","add","timeoutId","release","clearTimeout","onload","onerror","delete","setTimeout","src","getMainStreamQuality","levels","currentLevel","autoLevel","loadLevel","level2","width","height","bitrate","level","selectBestMediaFile","mediaFiles","Error","firstFile","mainQuality","scoredFiles","file","widthDiff","abs","heightDiff","resolutionDiff","fileBitrate","bitrateDiff","score","sort","a","b","bestMatch","resolution","isHlsMediaFile","mediaFile","toLowerCase","isProgressiveMediaFile","startsWith","isAudioMediaFile","collectVideoMediaFiles","linear","verbose","mediaFileElements","querySelectorAll","mf","index","getAttribute","apiFramework","toUpperCase","bitrateAttr","bitrateValue","hasExplicitDimensions","push","createEmptyTrackingUrls","clickTracking","viewable","notViewable","viewUndetermined","verificationNotExecuted","progress","pushUrls","target","elements","collectLinearTracking","into","indexOf","collectAdLevelTracking","adBody","verification","mergeTrackingUrls","source","targetLists","sourceLists","keys","incoming","concat","parseXml","xmlString","xmlDoc","DOMParser","parseFromString","parserError","querySelector","getAdSequence","adElement","sequence","emptyVastResult","root","errorUrls","parseVastXml","adElements","documentElement","find","parsed","parseAdElement","vastAdTagUri","wrapper","trackingUrls2","linear2","trackingUrls","rules","followAdditionalWrappers","inLine","candidate","files","id","title","duration","clickThrough","fetchVastXml","vastTagUrl","credentials","requestVast","response","creds","mode","headers","referrerPolicy","ok","statusText","text","fetchAndParseVastAd","depth","accumulatedTracking","vastXml","substring","fetchAndParsePod","trimmedXml","empty","resolveAd","podElements","buffet","ads","filter","shift","createAdVideoElement","video","document","createElement","style","position","left","top","objectFit","backgroundColor","playsInline","muted","setupAdEventListeners","onTimeUpdate","noteAdProgress","sampleViewability","threshold","onLoadedMetadata","videoWidth","videoHeight","handleVideoDecodeFailure","onCanPlay","onPlaying","startStallWatchdog","creativeView","adId","onEnded","settleViewability","advanceToNextPodAd","handleAdComplete","onError","reportCurrentAdError","handleAdError","onVolumeChange","mute","unmute","isTrackablePlayback","ended","onPause","pause","onPlay","resume","handler","addEventListener","teardownAdEventListeners","removeEventListener","handleAdClick","window","open","fireNotUsedForUnplayedAds","notUsed","now","inView","visibilityState","paused","handleFullscreenChange","fullscreenEl","fullscreenElement","webkitFullscreenElement","expanded","contains","fullscreen","playerExpand","exitFullscreen","playerCollapse","attachContainerHandlers","onClick","onInteraction","onFullscreenChange","IntersectionObserver","entries","entry","isIntersecting","intersectionRatio","observe","detachContainerHandlers","disconnect","setAdPlayingFlag","isPlaying","dataset","stormcloudAdPlaying","resetAdTracking","isRvfcSupported","requestVideoFrameCallback","settlePendingPlay","startAdPlayback","playPromise","play","catch","finally","prepareVideoElementForNewSource","destroy","removeAttribute","load","recreateAdVideoElement","remove","appendChild","loadCurrentAdMedia","isHlsAd","isSupported","enableWorker","lowLatencyMode","loadSource","attachMedia","on","Events","MANIFEST_PARSED","ERROR","_event","data","fatal","canPlayType","clearStallWatchdog","clearInterval","cancelVideoFrameProbe","handleAdStall","getDecodedVideoFrameCount","getVideoPlaybackQuality","quality","totalVideoFrames","legacyCount","webkitDecodedFrameCount","isFrameCounterReliable","markFrameCounterReliable","isRvfcReliable","markRvfcReliable","cancelVideoFrameCallback","startVideoFrameProbe","rvfc","onPresentedFrame","call","blackFrameDetectionEnabled","setInterval","decodedFrames","timeAdvancing","releaseAdDecoder","display","pointerEvents","continueLiveStreamDuringAds","visibility","opacity","initialize","container","right","bottom","alignItems","justifyContent","zIndex","parentElement","requestAds","preloaded","reject","resolve","contentVolume","stop","previousMutedState","clear","isAdPlaying","resize","listener","off","updateOriginalMutedState","nextVolume","isNaN","getOriginalMutedState","getOriginalVolume","setAdVolume","clamped","getAdVolume","showPlaceholder","hidePlaceholder","getLoadedAdDuration","getLoadedAdId","getPodAdCount","getPodTotalDurationMs","reduce","PRIVATE_HOST_PATTERNS","isLocalDevHost","host","some","pattern","toDevSafeUrl","rawUrl","protocol","cleanPath","pathname","PAL_SDK_URL","_nonceLoader","_nonceLoaderAllowStorage","_palLoadPromise","loadPalSdk","goog","pal","existing","timeout","script","async","setAttribute","head","getOrCreateNonceLoader","allowStorage","consentSettings","ConsentSettings","NonceLoader","createPalNonceManager","currentNonce","currentNonceManager","generateNonce","loader","request","manager","NonceRequest","adWillAutoPlay","adWillPlayMuted","playerVolume","continuousPlayback","descriptionUrl","iconsSupported","playerType","playerVersion","supportedApiFrameworks","ppid","sessionId","JSON","stringify","loadNonceManager","getNonce","getCurrentNonce","injectNonce","searchParams","base","sep","sendPlaybackStart","sendPlaybackEnd","sendAdClick","sendAdTouch","reset","DEFAULT_TRACKING_INGEST_CONFIG","enabled","baseUrl","trackingIngestConfig","applyTrackingIngestConfig","configureTrackingIngest","isTrackingIngestEnabled","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","ingestPlayerTracking","licenseKey","body","method","Authorization","status","CTV_SESSION_STORAGE_KEY","WEB_SESSION_STORAGE_KEY","inMemoryWebSessionId","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","ANDROID_ID_TYPES","resolveVastEnvironmentSignals","isCtv","platformLat","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","realDeviceId","readStoredDeviceId","readStoredString","inferDeviceIdType","readStoredLimitAdTracking","dpid","getOrCreateStoredUuid","deviceTypeHint","resolveDeviceTypeHint","getOrCreateCtvSessionId","webSessionId","getOrCreateWebSessionId","DEVICE_TYPE_HINT","FEATURE_PHONE","SMARTPHONE","DESKTOP","TABLET","CONNECTED_TV","GAME_CONSOLE","SET_TOP_BOX","DEVICE_TYPE_HINT_ALIASES","featurephone","smartphone","mobile","phone","desktop","pc","tablet","ctv","tv","connectedtv","smarttv","gameconsole","stb","settopbox","SET_TOP_BOX_UA","GAME_CONSOLE_UA","CONNECTED_TV_UA","FEATURE_PHONE_UA","override","readDeviceTypeHintOverride","inferDeviceTypeHint","fallback","maxTouchPoints","fromGlobal","normalizeDeviceTypeHint","__STORMCLOUD_DTH__","getNativeBridgeSources","normalized","safeCall","isInteger","thisArg","isEquivalentDeviceIdType","tagType","runtimeType","tag","runtime","resolveNativeDeviceId","includeStored","isMacroPlaceholder","isZeroedAdId","storageKey","readPersistentId","writePersistentId","createUuid","sessionStorage","getItem","setItem","readCookie","localStorage","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","prefix","cookie","part","decodeURIComponent","slice","bytes","randomUUID","Uint8Array","getRandomValues","seed","performanceNow","i","hex","performance","adinfo","webapis","tifa","getTIFA","lat","isLATEnabled","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","t","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","Boolean","result","normalizeBoolean","cachedBrowserId","buildAnalyticsContext","config","debugAdTiming","isLiveStream","inputStreamType","getClientInfo","screen","vendor","memory","deviceMemory","hardwareConcurrency","screenInfo","availWidth","availHeight","orientation","pixelDepth","deviceType","brand","os","model","isAndroid","isWebView","isWebApp","webosMatch","tizenMatch","tvMatch","androidModelMatch","outerHeight","outerWidth","matchMedia","matches","standalone","angle","domain","origin","path","language","languages","join","cookieEnabled","doNotTrack","referrer","sha256Hex","input","encodedData","utf8","buffer","hashBuffer","hash","char","fallbackHash","timestamp","digest","encode","unescape","charCodeAt","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","getBrowserID","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","sendInitialTracking","metricEvent","events","sendAdDetectTracking","adDetectInfo","sendHeartbeat","sendAdLoadedTracking","adLoadedInfo","sendAdImpressionTracking","adImpressionInfo","ad_played_count","ad_url","adUrl","heartbeatData","polyfillURLSearchParams","URLSearchParamsPolyfill","init","params","parseQueryString","append","query","cleanQuery","param","decodedKey","safeDecodeURIComponent","decodedValue","str","getAll","callback","polyfillTextEncoder","TextEncoderPolyfill","encoding","charcode","polyfillPromiseFinally","constructor","then","polyfillObjectAssign","sources","TypeError","to","nextSource","nextKey","hasOwnProperty","polyfillArrayFrom","arrayLike","mapFn","items","len","polyfillStringStartsWith","search","pos","polyfillStringEndsWith","polyfillStringIncludes","initializePolyfills","UNEXPANDED_MACRO_PATTERN","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","getValue","correlator","isMacroPlaceholder2","generateCorrelator","buf","Uint32Array","MAX_SAFE_INTEGER","expandInlineMacroPlaceholders","applyDeviceIdentityParams","runtimeId","tagRdid","tagLat","latValue","tagRdidValid","tagTypeValid","removeBrokenAppNameOrphans","toDelete","_value","suffix","normalizeVastTagUrl","raw","anValue","orphanFragments","reconstructed","_match","val","applyVastMacros","expandedUrl","replaceCorrelatorFallback","streamCorrelator","pod","podMinDurationMs","podMaxDurationMs","podMaxAds","existingUrl","consent","gdpr","gdprConsent","usPrivacy","adTest","programTitle","channelName","staleKeys","correlatorRegex","fetchConsentSignals","timeoutMs","signals","tasks","tcfApi","__tcfapi","settled","tcData","success","eventStatus","gdprApplies","storageAllowed","purpose","consents","tcString","listenerId","uspApi","__uspapi","uspString","all","parseCueOutDuration","num","dStr","d","parseCueOutCont","res","elapsedMatch","durationMatch","elapsed","slashMatch","parseAttributeList","attrs","regex","exec","rawVal","toNumber","isManifestBasedMarker","marker","id3","splice_command_type","decodeId3ValueToText","decoder","TextDecoder","decode","out","fromCharCode","getFragmentStartSeconds","frag","candidates","startPTS","parseScte35FromId3","cueOutMatch","arg","dur","ptsSeconds","durationSeconds","cueOutContMatch","cont","cueInMatch","daterangeMatch","hasScteOut","hasScteIn","klass","bin","parseScte35Binary","normalizeFragmentPayload","ArrayBuffer","isView","view","byteOffset","byteLength","detectTsPacketFormat","packetSizes","packetSize","tsPayloadOffset","matchedPackets","packetStart","getPsiSectionStart","payloadUnitStart","pointerField","sectionStart","getPsiSectionLength","parsePatSection","pmtPids","sectionLength","sectionEnd","programNumber","pid","descriptorsIdentifyScte35","end","descriptorStart","descriptorEnd","registration","parsePmtSection","tsScte35Pids","programInfoLength","streamType","elementaryPid","esInfoLength","hasProcessedTsScte35Section","section","processedSections","checksum","size","firstKey","next","addScte35SectionMarker","markers","appendScte35Bytes","assemblers","assembler","expectedLength","collectScte35SectionsFromPayload","previousAssembler","subarray","tableId","totalLength","parseScte35FromTsPackets","packetInfo","sectionAssemblers","tsStart","secondByte","thirdByte","fourthByte","adaptationFieldControl","hasPayload","payloadStart","adaptationLength","payloadEnd","BitReader","bytePos","bitPos","readBits","numBits","remainingInByte","toRead","currentByte","mask","bits","skipBits","bytePosition","readSpliceTime","r","ptsAdjustmentTicks","timeSpecifiedFlag","high","low","ptsTicks","markerTypeFromSegmentationTypeId","segmentationTypeId","parseScte35SegmentationDescriptor","descriptor","identifier","segmentationEventId","cancelIndicator","programSegmentationFlag","segmentationDurationFlag","componentCount","durationTicks","segmentationUpidLength","markerType","parseScte35SegmentationDescriptors","descriptorLoopLength","descriptorOffset","descriptorTag","descriptorLength","descriptorDataStart","descriptorDataEnd","descriptorMarker","ptsAdjHigh","ptsAdjLow","spliceCommandLength","spliceCommandType","spliceEventId","commandBodyStart","cancel","outOfNetwork","programSpliceFlag","durationFlag","spliceImmediateFlag","componentPtsSeconds","expectedDescriptorOffset","splice_event_id","segmentation_event_id","Scte35CueManager","callbacks","pendingScte35Cues","recentScte35CueKeys","recentScte35CueLimit","processedTsScte35Sections","pendingScte35CueKey","pendingScte35CueKeyValue","activeScte35BreakKey","activeScte35BreakKeyValue","scheduledScte35BreakKey","scheduledScte35BreakKeyValue","createScte35CueContext","readiness","sn","fragmentSn","fragmentStartSec","fragmentStartSeconds","onScte35Cue","cue","createScte35Cue","pendingKey","getPendingScte35CueKey","trimRecentScte35CueMaps","onEarlyStartCue","shouldAcceptScte35EndCue","inAdBreak","isInAdBreak","hasRecentlyHandledScte35Cue","markScte35CueHandled","onPlaybackCue","activatePendingScte35CuesForFragment","matchingCues","getScte35CueKey","getScte35MarkerRaw","toIdentityString","daterangeId","ID","scteValue","isStrongScte35CueKey","recentKey","AdConfigManager","vmapBreaks","consumedVmapBreakIds","viewCorrelator","consentSignals","podCounter","podAssignedByPrefetch","lastHeartbeatTime","defaultPodMaxAds","defaultPodMaxDurationMs","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","vastMode","vastEndpoint","apiUrl","imaPayload","decodedPayload","numberAds","fetchAndParseVmap","apiVastTagUrl","json","ima","vast","cue_tones","number_ads","apiNumberAds","vmapXml","parseVmapToBreaks","doc","VMAP_NS","adBreakNodes","getElementsByTagNameNS","getElementsByTagName","localName","node","timeOffsetRaw","startTimeMs","parseVmapTimeOffsetToMs","adTagNode","adTagUrl","breakId","aStart","bStart","timeOffset","hms","hours","minutes","millis","ratio","durationSec","getAdBreakKey","adBreak","resolveBreakStartMs","findCurrentOrNextBreak","nowMs","schedule","tol","driftToleranceMs","breakStartMs","findBreakForTime","durationMs","selectVastTagsForBreak","beginNewAdPod","resolvePodParams","breakDurationMs","maxDurationMs","maxAds","minDurationMs","podExactDuration","getPalDescriptionUrl","generatePodVastUrl","podParams","adPlayer","palNonce","envSignals","ctvAdRequest","urlWithMacros","autoplay","finalUrl","initializeTracking","heartbeatInterval","sendHeartbeatIfNeeded","destroyTracking","AdTimingService","adRequestWatchdogToken","adFailsafeToken","ptsDriftEmaMs","adBreakPlayedDurationMs","adBreakEpoch","adRequestTokenCounter","activeAdRequestToken","currentAdIndex","totalAdsInBreak","totalAdRequestsInBreak","maxTotalAdRequestsPerBreak","lastAdRequestTime","consecutiveFailures","maxConsecutiveFailures","minAdRequestIntervalMs","backoffBaseMs","maxBackoffMs","defaultMinRemainingMsToStartAd","failedVastUrls","temporaryFailureUrls","temporaryFailureCooldownMs","globalConsecutiveNoFills","globalNoFillThreshold","globalNoFillCooldownUntil","globalNoFillBackoffBaseMs","globalNoFillBackoffMaxMs","globalLastGamRequestTime","globalMinGamIntervalMs","scheduleAdStopCountdown","remainingMs","clearAdStopTimer","ensureAdStoppedByTimer","adStopTimerId","onAdStopTimerFired","scheduleAdStartIn","delayMs","cueKey","clearAdStartTimer","onAdStartTimerFired","adStartTimerId","updatePtsDrift","ptsSecondsSample","sampleMs","alpha","resolveScteBreakStartWallClockMs","nowWallClockMs","estimatedCurrentPtsMs","deltaMs","setAdBreakDurationBoundary","expectedAdBreakDurationMs","currentAdBreakStartWallClockMs","scteAdBreakEndWallClockMs","scheduleAdStopAtBreakBoundary","getWallClockRemainingAdMs","endWallClockMs","getAdBreakEndWallClockMs","getDurationBudgetRemainingMs","getLoadedAdDurationMs","adController","adFitsRemainingBudget","logAdDurationDecision","accepted","remainingBudget","recordPlayedAdDuration","ensureLoadedAdFitsBudget","fits","rejectLoadedAdForDuration","markAdStarted","notePodAdStarted","getRemainingAdMs","wallClockRemaining","budgetRemaining","getMinRemainingMsToStartAd","configured","minRemainingMsToStartAd","hasTimeToStartAnotherAd","minRemaining","isTemporaryAdError","message","isUrlInCooldown","failureTime","cleanupTemporaryFailures","isGamInCooldown","recordGamNoFill","exponent","backoff","pow","resetGamNoFillCounter","enforceGlobalRateLimit","waitMs","startAdRequestWatchdog","token","clearAdRequestWatchdog","adFailsafeTimeoutMs","adRequestWatchdogId","logAdState","onWatchdogTimeout","startAdFailsafeTimer","clearAdFailsafeTimer","failsafeMs","adFailsafeTimerId","videoPaused","onFailsafeTimeout","extra","getAdState","showAds","resetForBreakEnd","PlaceholderLayer","ensureContainer","transition","show","wasHidden","offsetHeight","requestAnimationFrame","hide","removeChild","Hls2","HlsEngine","cueManager","timing","nativeHlsMode","videoSrcProtection","reloadingLiveStream","bufferedSegmentsCount","shouldAutoplayAfterBuffering","hasInitialBufferCompleted","latencyProfileApplied","shouldUseNativeHls","getStreamType","canNative","setupNativeHls","adBehavior","isLive","setupHls","hls","backBufferLength","liveDurationInfinity","maxLiveSyncPlaybackRate","maxBufferLength","maxMaxBufferLength","maxBufferSize","maxBufferHole","highBufferWatchdogPeriod","nudgeOffset","nudgeMaxRetry","startPosition","MEDIA_ATTACHED","_","_data","minSegments","details","live","onManifestParsed","detectedLowLatencyStream","minSegmentsBeforePlay","LEVEL_LOADED","_evt","applyStreamLatencyProfile","hasPendingAdBreak","fragments","fragmentsToScan","tagList","isArray","idx","earlyDetection","FRAG_BUFFERED","err","FRAG_PARSING_METADATA","id3Tags","samples","pts","onId3Tag","FRAG_LOADED","processFragmentScte35Payload","FRAG_DECRYPTED","FRAG_CHANGED","activatePendingCuesForFragment","prog","ErrorTypes","NETWORK_ERROR","startLoad","MEDIA_ERROR","recoverMediaError","onFatalDestroy","isLowLatencyStream","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","canBlockReload","partTarget","partHoldBack","partListLength","partList","targetDuration","targetduration","hasParts","hasPartTarget","hasPartHoldBack","payloadData","getLiveSyncPosition","liveSyncPosition","restartLoadAt","stopLoad","reloadLiveStream","detachMedia","recreateDelayMs","getAdAudioVolume","toggleMute","newMutedState","restoreVolume","toggleFullscreen","requestFullscreen","isMuted","setMuted","setVolume","clampedVolume","getVolume","isFullscreen","resizePlayer","AdBreakOrchestrator","adConfig","placeholder","isShowingPlaceholder","adDetectSentForCurrentBreak","continuousFetchingActive","continuousFetchLoopRunning","adRequestQueue","adPodQueue","maxPlaceholderDurationMs","pendingAdBreak","analyticsContext","nextAdRequestUrl","baseVastUrl","remaining","attachImaEventListeners","getAdPlayer","onAdClick","onAdInteraction","adIndex","queuedUrls","tryNextAvailableAdWithRateLimit","handleAdPodComplete","errorPayload","errorMessage","vastErrorCode","cause","innerError","causeMessage","handleAdFailure","recreateAdController","shouldShowPlaceholder","preservedMutedState","preservedVolumeState","shouldContinueLiveStreamDuringAds","newAdPlayer","createAdPlayer","setAdPlayer","clearPendingAdBreak","prefetchTimerId","handleAdStart","_marker","scheduled","tags","adBreakDurationMs","currentMuted","currentVolume","podPlayed","startOptimizedPod","startContinuousFetching","podUrl","requestToken","podCount","vastUrls","vastUrl","continuousFetchLoop","epoch","maxQueueSize","newAdUrl","queuedUrlsPreview","generationDelay","stopContinuousFetching","backoffMultiplier","backoffDelay","effectiveMinInterval","timeSinceLastRequest","waitTime","tryNextAvailableAd","retryCount","nextAdUrl","maxRetries","playSingleAd","showPlaceholderAndWaitForAds","ap","playError","checkInterval","maxChecks","restoredMuted","restoredVolume","monitorLiveResumeStall","liveSyncPos","toFixed","restartHlsLoad","resumeContentPlayback","getBufferedAhead","ranges","buffered","describeVideoState","networkStates","readyStates","v","net","networkState","ready","readyState","seeking","resumeBaseline","needsReset","pollIntervalMs","graceMs","recoveryCooldownMs","maxRecoveries","maxMonitorMs","startTime","baseline","recoveries","lastRecoveryAt","listenersAttached","onMediaEvent","diagEvents","dt","cleanup","poll","advanced","playing","bufferedAhead","wedged","canRecover","reloadPos","attempt","maxAttempts","onReady","backoffMs","playResult","StormcloudVideoPlayer","attached","palPlaybackStarted","browserOverrides","videoElement","startAdPrefetch","onScte35Marker","startScte35AdBreak","hlsEngine","c","palDescriptionUrl","attach","offsetWidth","prerollKey","endedHandler","onVideoEnded","timeUpdateHandler","emptiedHandler","wasPaused","Infinity","newDurationMs","detectPayload","hasPrefetchedAds","isManifest","forceImmediate","immediateManifestAds","isManifestMarker","hasPts","estCurrentPtsMs","markerPtsMs","tolerance","hasQueuedAds","activeAdRequest","checkIntervalMs","adBreakCheckIntervalMs","maxExtensionMsConfig","maxAdBreakExtensionMs","maxExtensionMs","overrunMs","shouldExtendAdBreak","generatedUrls","detectedAtFragmentSn","isFetching","fetchStartTime","currentTimeSec","breakToPlay","handleVmapAdBreak","postroll","endMs","inWindow","first","rest","getCurrentAdIndex","getTotalAdsInBreak","getAdRemainingMs","isShowingAds","shouldShowNativeControls","showCustomControls","FaPlay","FaPause","FaVolumeUp","FaVolumeMute","FaVolumeDown","Fragment","jsx","jsxs","ExpandIcon","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","focusable","children","CompressIcon","CRITICAL_PROPS","CONTROLS_HIDE_DELAY","DEFAULT_PLAYER_ASPECT_RATIO","StormcloudVideoPlayerComponent","memo","props","hideLoadingIndicator","onVolumeToggle","onFullscreenToggle","onControlClick","wrapperClassName","wrapperStyle","className","controls","preload","poster","restVideoAttrs","videoRef","playerRef","bufferingTimeoutRef","controlsTimerRef","wrapperRef","useState","currentIndex","totalAds","remainingSeconds","adStatus","setAdStatus","setShouldShowNativeControls","isMuted2","setIsMuted","isFullscreen2","setIsFullscreen","setIsPlaying","setCurrentTime","setDuration","setVolume2","playbackRate","setPlaybackRate","showVolumeSlider","setShowVolumeSlider","showSpeedMenu","setShowSpeedMenu","isLoading","setIsLoading","isBuffering","setIsBuffering","showCenterPlay","setShowCenterPlay","showLicenseWarning","setShowLicenseWarning","controlsVisible","setControlsVisible","innerWidth","viewportWidth","setViewportWidth","innerHeight","isPortrait","setIsPortrait","playerAspectRatio","setPlayerAspectRatio","getResponsiveScale","responsiveScale","resetControlsTimer","current","handleWrapperMouseMove","handleWrapperMouseLeave","formatTime","handlePlayPause","hasValidSource","currentSrc","handleCenterPlayClick","handleTimelineSeek","rect","currentTarget","getBoundingClientRect","clickX","clientX","newTime","handleVolumeChange","newVolume","handlePlaybackRateChange","rate","isHlsStream","isLiveUiMode","shouldShowEnhancedControls","criticalPropsKey","prop","player","showNative","checkAdStatus","showAdsFromMethod","showAdsFromAttribute","ceil","prev","interval","handleResize","updateStates","currentTimeValue","durationValue","volumeValue","rateValue","handleLoadedMetadata","video2","handleLoadedData","handleLoadStart","handleCanPlay","handleCanPlayThrough","handleWaiting","handlePlaying","handlePause","isAdActive","handleEnded","progressPercent","VolumeIcon","ref","onMouseMove","onMouseLeave","overflow","minHeight","aspectRatio","maxWidth","maxHeight","borderRadius","boxShadow","transform","animation","inset","border","borderTopColor","borderRightColor","background","backdropFilter","color","padding","textAlign","margin","fontSize","fontWeight","marginBottom","letterSpacing","lineHeight","gap","textTransform","cursor","onMouseEnter","marginLeft","minWidth","paddingRight","paddingLeft","onMouseDown","preventDefault","move","ev","r2","up","stopPropagation","fontFamily","fontVariantNumeric","userSelect","WebkitBackdropFilter","speed","flexShrink","textShadow","flexDirection","prevProps","nextProps","uiProps","callbackProps","React3","Component","Component4","Suspense","noop","defaultProps","loop","progressInterval","onStart","onBuffer","onBufferEnd","onDuration","onSeek","onProgress","lazy","reactLazy","omit","object","isMediaStream","MediaStream","supportsWebKitPresentationMode","randomString","substr","parseQuery","queryString","manualParse","qs","merge","isObject","item","IS_BROWSER","IS_GLOBAL","globalThis","IS_IOS","IS_SAFARI","SUPPORTS_HLS","SUPPORTS_DASH","HLS_EXTENSIONS","HLS_PATHS","DASH_EXTENSIONS","VIDEO_EXTENSIONS","AUDIO_EXTENSIONS","canPlay","dash","audio","HlsPlayer","arguments","mounted","onMount","seekTo","keepPlaying","getDuration","getCurrentTime","getSecondsLoaded","getInternalPlayer","componentDidMount","componentWillUnmount","componentDidUpdate","render","displayName","Component2","FilePlayer","handlePlay","handleError","onLoaded","setLoop","enablePIP","requestPictureInPicture","disablePIP","pictureInPictureElement","exitPictureInPicture","players","lazyPlayer","default","canEnablePIP","pictureInPictureEnabled","webkitSupportsPresentationMode","players_default","React2","Component3","SEEK_ON_PLAY_EXPIRY","Player","isReady","loadOnReady","startOnPlay","seekOnPlay","onDurationCalled","handlePlayerMount","playedSeconds","loadedSeconds","played","prevPlayed","prevLoaded","progressTimeout","handleReady","handleDurationCheck","activePlayer","loopOnEnded","args","durationCheckTimeout","handleLoaded","forceLoad","amount","isFraction","Player2","IS_BROWSER2","IS_GLOBAL2","UniversalSuspense","SUPPORTED_PROPS","customPlayers","createStormcloudPlayer","playerList","_a","state","showPreview","references","getActivePlayer","getAttributes","fraction","renderActivePlayer","fallbackElement","Wrapper","attributes","addCustomPlayer","removeCustomPlayers","StormcloudPlayer","StormcloudPlayer_default"],"mappings":"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","sourcesContent":["// src/ui/StormcloudVideoPlayer.tsx\nimport React, { useEffect, useRef, useMemo, useCallback } from \"react\";\n\n// src/sdk/hlsAdPlayer.ts\nimport Hls from \"hls.js\";\n\n// src/utils/browserCompat.ts\nfunction getChromeVersion(ua) {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getWebKitVersion(ua) {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getPlatform() {\n if (\"userAgentData\" in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? \"iPhone\" : \"MacIntel\";\n }\n if (/Win/i.test(ua)) {\n return \"Win32\";\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? \"Linux armv8l\" : \"Linux x86_64\";\n }\n if (/CrOS/i.test(ua)) {\n return \"CrOS\";\n }\n return navigator.platform || \"Unknown\";\n}\nfunction detectBrowser() {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n let name = \"Unknown\";\n let version = \"0\";\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsModernJS2 = true;\n let webOSVersion;\n let tizenVersion;\n let chromeVersionNum;\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : void 0;\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = \"LG WebOS\";\n isSmartTV = true;\n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n if (match && match[1]) {\n version = match[1];\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = \"6.0\";\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = \"5.0\";\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = \"4.0\";\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = \"3.0\";\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = \"2.0\";\n majorVersion = 2;\n }\n } else {\n version = \"Unknown\";\n webOSVersion = void 0;\n }\n isLegacyTV = webOSVersion !== void 0 && webOSVersion < 3;\n } else if (/Tizen/i.test(ua)) {\n name = \"Samsung Tizen\";\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : \"Unknown\";\n if (version !== \"Unknown\") {\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n isLegacyTV = tizenVersion !== void 0 && tizenVersion < 3;\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = \"Smart TV\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else if (/NetCast/i.test(ua)) {\n name = \"LG NetCast\";\n isSmartTV = true;\n isLegacyTV = true;\n } else if (/BRAVIA/i.test(ua)) {\n name = \"Sony BRAVIA\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else {\n if (chromeVersion > 0) {\n name = \"Chrome\";\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n if (chromeVersion < 50) {\n supportsModernJS2 = false;\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS2 = false;\n }\n }\n if (typeof Promise === \"undefined\" || typeof Map === \"undefined\" || typeof Set === \"undefined\") {\n supportsModernJS2 = false;\n }\n if (typeof URLSearchParams === \"undefined\") {\n supportsModernJS2 = false;\n }\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsModernJS: supportsModernJS2,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum\n };\n}\nfunction requiresMediaPipelineResetAfterAds() {\n const browser = detectBrowser();\n return browser.name === \"Samsung Tizen\" && (browser.tizenVersion ?? 0) >= 5;\n}\nfunction getBrowserConfigOverrides() {\n const browser = detectBrowser();\n const overrides = {};\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n overrides.pauseContentDuringAds = true;\n }\n return overrides;\n}\nfunction supportsModernJS() {\n try {\n return typeof Promise !== \"undefined\" && typeof Map !== \"undefined\" && typeof Set !== \"undefined\" && typeof Array.from !== \"undefined\" && typeof Object.assign !== \"undefined\" && typeof Array.prototype.forEach !== \"undefined\" && typeof String.prototype.includes !== \"undefined\";\n } catch (e) {\n return false;\n }\n}\nfunction logBrowserInfo(debug = false) {\n if (!debug) return;\n const browser = detectBrowser();\n console.log(\"[StormcloudVideoPlayer] Browser Compatibility Info:\", {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsModernJS: browser.supportsModernJS,\n ...browser.webOSVersion !== void 0 ? { webOSVersion: browser.webOSVersion } : {},\n ...browser.tizenVersion !== void 0 ? { tizenVersion: browser.tizenVersion } : {},\n ...browser.chromeVersion !== void 0 ? { chromeVersion: browser.chromeVersion } : {},\n userAgent: navigator.userAgent\n });\n}\nfunction supportsFeature(feature) {\n switch (feature) {\n case \"urlsearchparams\":\n return typeof URLSearchParams !== \"undefined\";\n case \"textencoder\":\n return typeof TextEncoder !== \"undefined\";\n case \"promises\":\n return typeof Promise !== \"undefined\";\n case \"fetch\":\n return typeof fetch !== \"undefined\";\n case \"crypto\":\n return typeof crypto !== \"undefined\" && typeof crypto.subtle !== \"undefined\";\n default:\n return false;\n }\n}\n\n// src/utils/vastTrackingMacros.ts\nvar VAST_MACRO_PATTERN = /\\[([A-Z][A-Z0-9_]*)\\]/g;\nvar CACHEBUSTING_ALIASES = /\\[CACHEBUSTER\\]|\\[cachebuster\\]|\\[timestamp\\]|\\[random\\]|\\[INSERT_RANDOM_NUMBER\\]|%%CACHEBUSTER%%|%%CACHEBUST%%|\\$\\{CACHEBUSTER\\}|\\$\\{CACHEBUSTING\\}|\\{cachebuster\\}|\\{random\\}/g;\nvar KNOWN_VAST_MACROS = /* @__PURE__ */ new Set([\n \"ADCATEGORIES\",\n \"ADCOUNT\",\n \"ADPLAYHEAD\",\n \"ADSERVINGID\",\n \"ADTYPE\",\n \"APIFRAMEWORKS\",\n \"APPBUNDLE\",\n \"ASSETURI\",\n \"BLOCKEDADCATEGORIES\",\n \"BREAKMAXADLENGTH\",\n \"BREAKMAXADS\",\n \"BREAKMAXDURATION\",\n \"BREAKMINADLENGTH\",\n \"BREAKPOSITION\",\n \"CACHEBUSTING\",\n \"CLICKPOS\",\n \"CLICKTYPE\",\n \"CLIENTUA\",\n \"CONTENTID\",\n \"CONTENTPLAYHEAD\",\n \"CONTENTURI\",\n \"DEVICEIP\",\n \"DEVICEUA\",\n \"DOMAIN\",\n \"ERRORCODE\",\n \"EXTENSIONS\",\n \"GDPRCONSENT\",\n \"IFA\",\n \"IFATYPE\",\n \"INVENTORYSTATE\",\n \"LATLONG\",\n \"LIMITADTRACKING\",\n \"MEDIAMIME\",\n \"MEDIAPLAYHEAD\",\n \"OMIDPARTNER\",\n \"PAGEURL\",\n \"PLACEMENTTYPE\",\n \"PLAYERCAPABILITIES\",\n \"PLAYERSIZE\",\n \"PLAYERSTATE\",\n \"PODSEQUENCE\",\n \"REASON\",\n \"REGULATIONS\",\n \"SERVERSIDE\",\n \"SERVERUA\",\n \"TIMESTAMP\",\n \"TRANSACTIONID\",\n \"UNIVERSALADID\",\n \"VASTVERSIONS\",\n \"VERIFICATIONVENDORS\"\n]);\nfunction generateCachebuster() {\n return String(Math.floor(Math.random() * 9e7) + 1e7);\n}\nfunction formatPlayhead(seconds) {\n if (seconds == null || !Number.isFinite(seconds) || seconds < 0) {\n return void 0;\n }\n const total = Math.floor(seconds);\n const hh = String(Math.floor(total / 3600)).padStart(2, \"0\");\n const mm = String(Math.floor(total % 3600 / 60)).padStart(2, \"0\");\n const ss = String(total % 60).padStart(2, \"0\");\n const ms = String(Math.floor((seconds - total) * 1e3)).padStart(3, \"0\");\n return `${hh}:${mm}:${ss}.${ms}`;\n}\nfunction resolveMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (key, value) => {\n if (value != null && value !== \"\") values.set(key, value);\n };\n const adPlayhead = formatPlayhead(ctx.adPlayheadSeconds);\n set(\"ADPLAYHEAD\", adPlayhead);\n set(\"MEDIAPLAYHEAD\", adPlayhead);\n set(\"CONTENTPLAYHEAD\", formatPlayhead(ctx.contentPlayheadSeconds));\n set(\"ASSETURI\", ctx.assetUri);\n set(\"MEDIAMIME\", ctx.mediaMime);\n set(\"TIMESTAMP\", (/* @__PURE__ */ new Date()).toISOString());\n set(\"SERVERSIDE\", \"0\");\n if (ctx.errorCode != null && ctx.errorCode !== \"\") {\n set(\"ERRORCODE\", String(ctx.errorCode));\n }\n if (ctx.playerWidth != null && ctx.playerHeight != null) {\n set(\"PLAYERSIZE\", `${Math.round(ctx.playerWidth)},${Math.round(ctx.playerHeight)}`);\n }\n set(\"IFA\", ctx.deviceId);\n set(\"IFATYPE\", ctx.deviceIdType);\n if (ctx.limitAdTracking != null) {\n set(\"LIMITADTRACKING\", ctx.limitAdTracking ? \"1\" : \"0\");\n }\n set(\"PAGEURL\", ctx.pageUrl);\n if (ctx.pageUrl) {\n try {\n set(\"DOMAIN\", new URL(ctx.pageUrl).hostname);\n } catch {\n }\n }\n set(\"CLIENTUA\", ctx.clientUa);\n set(\"DEVICEUA\", ctx.clientUa);\n if (ctx.podSequence != null) {\n set(\"PODSEQUENCE\", String(ctx.podSequence));\n }\n set(\"ADSERVINGID\", ctx.adServingId);\n if (ctx.reason != null && ctx.reason !== \"\") {\n set(\"REASON\", String(ctx.reason));\n }\n return values;\n}\nfunction substituteVastTrackingMacros(url, ctx = {}) {\n if (!url) return url;\n const values = resolveMacroValues(ctx);\n return url.replace(CACHEBUSTING_ALIASES, () => generateCachebuster()).replace(VAST_MACRO_PATTERN, (match, name) => {\n if (name === \"CACHEBUSTING\") return generateCachebuster();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n return KNOWN_VAST_MACROS.has(name) ? \"\" : match;\n });\n}\n\n// src/sdk/hlsAdPlayer.ts\nvar LINEAR_TRACKING_EVENTS = [\n \"creativeView\",\n \"loaded\",\n \"start\",\n \"firstQuartile\",\n \"midpoint\",\n \"thirdQuartile\",\n \"complete\",\n \"mute\",\n \"unmute\",\n \"pause\",\n \"resume\",\n \"fullscreen\",\n \"exitFullscreen\",\n \"playerExpand\",\n \"playerCollapse\",\n \"notUsed\"\n];\nfunction textOf(el) {\n const value = el?.textContent?.trim();\n return value ? value : void 0;\n}\nfunction parseVastTime(value) {\n if (!value) return void 0;\n const parts = value.trim().split(\":\");\n if (parts.length !== 3) return void 0;\n const [h, m, s] = parts.map((p) => parseFloat(p));\n if (![h, m, s].every((n) => n !== void 0 && Number.isFinite(n))) {\n return void 0;\n }\n return h * 3600 + m * 60 + s;\n}\nfunction parseProgressOffset(offset) {\n if (!offset) return void 0;\n const trimmed = offset.trim();\n if (trimmed.endsWith(\"%\")) {\n const percent = parseFloat(trimmed);\n return Number.isFinite(percent) ? { offsetPercent: percent } : void 0;\n }\n const seconds = parseVastTime(trimmed);\n return seconds !== void 0 ? { offsetSeconds: seconds } : void 0;\n}\nvar MAX_VAST_WRAPPER_DEPTH = 5;\nvar BEACON_TIMEOUT_MS = 3e4;\nvar inFlightBeacons = /* @__PURE__ */ new Set();\nvar VAST_ERROR_MEDIA_DISPLAY = 405;\nvar VAST_ERROR_WRAPPER_TIMEOUT = 301;\nvar VAST_ERROR_WRAPPER_LIMIT = 302;\nvar VAST_ERROR_WRAPPER_NO_ADS = 303;\nvar VAST_ERROR_NO_SUPPORTED_MEDIA = 403;\nvar VERIFICATION_NOT_SUPPORTED_REASON = 2;\nvar VIEWABLE_MIN_VISIBLE_RATIO = 0.5;\nvar VIEWABLE_MIN_CONTINUOUS_S = 2;\nfunction toVastMediaErrorCode(error) {\n switch (error?.code) {\n case 1:\n return 400;\n case 2:\n return 401;\n case 4:\n return 403;\n default:\n return VAST_ERROR_MEDIA_DISPLAY;\n }\n}\nfunction createHlsAdPlayer(contentVideo, options) {\n let adPlaying = false;\n let originalMutedState = false;\n let originalVolume = Math.max(0, Math.min(1, contentVideo.volume || 1));\n const listeners = /* @__PURE__ */ new Map();\n const mainHlsInstance = options?.mainHlsInstance;\n const AD_CONTAINER_PROP = \"__stormcloudAdContainer\";\n const AD_VIDEO_PROP = \"__stormcloudAdVideo\";\n const FRAME_COUNTER_RELIABLE_PROP = \"__stormcloudFrameCounterReliable\";\n const RVFC_RELIABLE_PROP = \"__stormcloudRvfcReliable\";\n let adVideoElement = contentVideo[AD_VIDEO_PROP] ?? void 0;\n let adHls;\n let adContainerEl = contentVideo[AD_CONTAINER_PROP] ?? void 0;\n let adEventHandlers = [];\n let containerHandlers = [];\n let currentAd;\n let currentAdMediaFile;\n let podAds = [];\n let podIndex = 0;\n const preloadedAds = /* @__PURE__ */ new Map();\n const preloadingAds = /* @__PURE__ */ new Map();\n let destroyed = false;\n let pendingTimeouts = [];\n const STALL_TIMEOUT_MS = 4e3;\n const STALL_CHECK_INTERVAL_MS = 1e3;\n const BLACKFRAME_MIN_PLAYBACK_S = 1.5;\n let stallWatchdogId;\n let lastAdProgressTime = 0;\n let lastAdProgressPosition = 0;\n let sawDecodedVideoFrame = false;\n let videoFrameCallbackHandle;\n let pendingPlayPromise;\n function createTrackingState() {\n return {\n impression: false,\n loaded: false,\n start: false,\n firstQuartile: false,\n midpoint: false,\n thirdQuartile: false,\n complete: false,\n viewabilitySettled: false,\n lastMuted: void 0,\n progressFired: /* @__PURE__ */ new Set()\n };\n }\n let trackingFired = createTrackingState();\n const resolvedAds = /* @__PURE__ */ new Set();\n let viewObserver;\n let visibleRatio = 0;\n let continuousVisibleS = 0;\n let lastViewSampleTime;\n let lastPlayerExpanded = false;\n let documentHandlers = [];\n function emit(event, payload) {\n const set = listeners.get(event);\n if (!set) return;\n for (const fn of Array.from(set)) {\n try {\n fn(payload);\n } catch (error) {\n console.warn(\n `[HlsAdPlayer] Error in event listener for ${event}:`,\n error\n );\n }\n }\n }\n function buildTrackingMacroContext(options2 = {}) {\n const { errorCode, reason } = options2;\n const ad = options2.ad ?? currentAd;\n const context = {\n adPlayheadSeconds: adVideoElement?.currentTime,\n contentPlayheadSeconds: contentVideo.currentTime,\n assetUri: currentAdMediaFile?.url,\n mediaMime: currentAdMediaFile?.type,\n playerWidth: adVideoElement?.clientWidth || adContainerEl?.clientWidth,\n playerHeight: adVideoElement?.clientHeight || adContainerEl?.clientHeight\n };\n if (errorCode != null) {\n context.errorCode = errorCode;\n }\n if (typeof navigator !== \"undefined\" && navigator.userAgent) {\n context.clientUa = navigator.userAgent;\n }\n if (typeof location !== \"undefined\" && location.href) {\n context.pageUrl = location.href;\n }\n if (podAds.length > 0) {\n context.podSequence = podIndex + 1;\n }\n if (ad?.adServingId) {\n context.adServingId = ad.adServingId;\n }\n if (reason != null) {\n context.reason = reason;\n }\n return context;\n }\n function fireTrackingPixels(urls, options2) {\n if (!urls || urls.length === 0) return;\n const macroContext = buildTrackingMacroContext(options2);\n urls.forEach((url) => {\n try {\n const trackingUrl = substituteVastTrackingMacros(url, macroContext);\n const img = new Image(1, 1);\n inFlightBeacons.add(img);\n let timeoutId;\n const release = () => {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n img.onload = null;\n img.onerror = null;\n inFlightBeacons.delete(img);\n };\n img.onload = release;\n img.onerror = release;\n timeoutId = setTimeout(release, BEACON_TIMEOUT_MS);\n img.src = trackingUrl;\n console.log(`[HlsAdPlayer] Fired tracking pixel: ${trackingUrl}`);\n } catch (error) {\n console.warn(`[HlsAdPlayer] Error firing tracking pixel:`, error);\n }\n });\n }\n function getMainStreamQuality() {\n if (!mainHlsInstance || !mainHlsInstance.levels) {\n return null;\n }\n const currentLevel = mainHlsInstance.currentLevel;\n if (currentLevel === -1 || !mainHlsInstance.levels[currentLevel]) {\n const autoLevel = mainHlsInstance.loadLevel;\n if (autoLevel !== -1 && mainHlsInstance.levels[autoLevel]) {\n const level2 = mainHlsInstance.levels[autoLevel];\n return {\n width: level2.width || 1920,\n height: level2.height || 1080,\n bitrate: level2.bitrate || 5e6\n };\n }\n return null;\n }\n const level = mainHlsInstance.levels[currentLevel];\n return {\n width: level.width || 1920,\n height: level.height || 1080,\n bitrate: level.bitrate || 5e6\n };\n }\n function selectBestMediaFile(mediaFiles) {\n if (mediaFiles.length === 0) {\n throw new Error(\"No media files available\");\n }\n const firstFile = mediaFiles[0];\n if (!firstFile) {\n throw new Error(\"No media files available\");\n }\n if (mediaFiles.length === 1) {\n return firstFile;\n }\n const mainQuality = getMainStreamQuality();\n if (!mainQuality) {\n console.log(\n \"[HlsAdPlayer] No main stream quality info, using first media file\"\n );\n return firstFile;\n }\n console.log(\"[HlsAdPlayer] Main stream quality:\", mainQuality);\n const scoredFiles = mediaFiles.map((file) => {\n const widthDiff = Math.abs(file.width - mainQuality.width);\n const heightDiff = Math.abs(file.height - mainQuality.height);\n const resolutionDiff = widthDiff + heightDiff;\n const fileBitrate = (file.bitrate || 5e3) * 1e3;\n const bitrateDiff = Math.abs(fileBitrate - mainQuality.bitrate);\n const score = resolutionDiff * 2 + bitrateDiff / 1e3;\n return { file, score, resolutionDiff, bitrateDiff };\n });\n scoredFiles.sort((a, b) => a.score - b.score);\n const bestMatch = scoredFiles[0];\n if (!bestMatch) {\n console.log(\"[HlsAdPlayer] No best match found, using first media file\");\n return firstFile;\n }\n console.log(\"[HlsAdPlayer] Selected media file:\", {\n url: bestMatch.file.url,\n resolution: `${bestMatch.file.width}x${bestMatch.file.height}`,\n bitrate: bestMatch.file.bitrate,\n score: bestMatch.score,\n resolutionDiff: bestMatch.resolutionDiff,\n bitrateDiff: bestMatch.bitrateDiff\n });\n return bestMatch.file;\n }\n function isHlsMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type === \"application/x-mpegurl\" || type === \"application/vnd.apple.mpegurl\" || type.includes(\"mpegurl\") || url.includes(\".m3u8\");\n }\n function isProgressiveMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type.startsWith(\"video/\") || url.endsWith(\".mp4\") || url.includes(\".mp4?\");\n }\n function isAudioMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = (mediaFile.url.toLowerCase().split(\"?\")[0] || \"\").trim();\n return type.startsWith(\"audio/\") || url.endsWith(\".mp3\") || url.endsWith(\".aac\") || url.endsWith(\".m4a\") || url.endsWith(\".ogg\") || url.endsWith(\".oga\") || url.endsWith(\".opus\") || url.endsWith(\".wav\") || url.endsWith(\".weba\");\n }\n function collectVideoMediaFiles(linear, verbose) {\n const mediaFileElements = linear.querySelectorAll(\n \":scope > MediaFiles > MediaFile\"\n );\n const mediaFiles = [];\n if (verbose) {\n console.log(\n `[HlsAdPlayer] Found ${mediaFileElements.length} MediaFile element(s) in VAST XML`\n );\n }\n mediaFileElements.forEach((mf, index) => {\n const type = mf.getAttribute(\"type\") || \"\";\n const url = mf.textContent?.trim() || \"\";\n const width = mf.getAttribute(\"width\") || \"\";\n const height = mf.getAttribute(\"height\") || \"\";\n if (verbose) {\n console.log(\n `[HlsAdPlayer] MediaFile ${index}: type=\"${type}\", url=\"${url}\", width=\"${width}\", height=\"${height}\"`\n );\n }\n if (!url) {\n if (verbose) {\n console.warn(`[HlsAdPlayer] MediaFile ${index} has empty URL`);\n }\n return;\n }\n const apiFramework = (mf.getAttribute(\"apiFramework\") || \"\").toUpperCase();\n if (apiFramework === \"VPAID\") {\n if (verbose) {\n console.log(\n `[HlsAdPlayer] MediaFile ${index} ignored (VPAID creatives are not supported)`\n );\n }\n return;\n }\n const bitrateAttr = mf.getAttribute(\"bitrate\");\n const bitrateValue = bitrateAttr ? parseInt(bitrateAttr, 10) : void 0;\n const mediaFile = {\n url,\n type,\n width: parseInt(width || \"1920\", 10),\n height: parseInt(height || \"1080\", 10),\n bitrate: bitrateValue && bitrateValue > 0 ? bitrateValue : void 0\n };\n if (isAudioMediaFile(mediaFile)) {\n console.warn(\n `[HlsAdPlayer] MediaFile ${index} skipped (audio-only, type=\"${type}\") \\u2014 audio ads are not played to avoid a black screen`\n );\n return;\n }\n const hasExplicitDimensions = mf.getAttribute(\"width\") != null && mf.getAttribute(\"height\") != null;\n if (!isHlsMediaFile(mediaFile) && hasExplicitDimensions && (mediaFile.width <= 1 || mediaFile.height <= 1)) {\n console.warn(\n `[HlsAdPlayer] MediaFile ${index} skipped (degenerate dimensions ${mediaFile.width}x${mediaFile.height}, type=\"${type}\") \\u2014 likely an audio-only placeholder rendition`\n );\n return;\n }\n if (isHlsMediaFile(mediaFile) || isProgressiveMediaFile(mediaFile)) {\n mediaFiles.push(mediaFile);\n if (verbose) {\n console.log(\n `[HlsAdPlayer] Added ${isHlsMediaFile(mediaFile) ? \"HLS\" : \"progressive\"} MediaFile: ${url}`\n );\n }\n } else if (verbose) {\n console.log(\n `[HlsAdPlayer] MediaFile ${index} ignored (type=\"${type}\" is not supported)`\n );\n }\n });\n return mediaFiles;\n }\n function createEmptyTrackingUrls() {\n const urls = {\n impression: [],\n clickTracking: [],\n error: [],\n viewable: [],\n notViewable: [],\n viewUndetermined: [],\n verificationNotExecuted: [],\n progress: []\n };\n for (const event of LINEAR_TRACKING_EVENTS) {\n urls[event] = [];\n }\n return urls;\n }\n function pushUrls(target, elements) {\n elements.forEach((el) => {\n const url = textOf(el);\n if (url) target.push(url);\n });\n }\n function collectLinearTracking(linear, into) {\n linear.querySelectorAll(\":scope > TrackingEvents > Tracking\").forEach((el) => {\n const event = el.getAttribute(\"event\");\n const url = textOf(el);\n if (!event || !url) return;\n if (event === \"progress\") {\n const offset = parseProgressOffset(el.getAttribute(\"offset\"));\n if (offset) into.progress.push({ url, ...offset });\n return;\n }\n if (LINEAR_TRACKING_EVENTS.indexOf(event) !== -1) {\n into[event].push(url);\n }\n });\n pushUrls(\n into.clickTracking,\n linear.querySelectorAll(\":scope > VideoClicks > ClickTracking\")\n );\n }\n function collectAdLevelTracking(adBody, into) {\n pushUrls(into.impression, adBody.querySelectorAll(\":scope > Impression\"));\n pushUrls(into.error, adBody.querySelectorAll(\":scope > Error\"));\n pushUrls(\n into.viewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > Viewable\")\n );\n pushUrls(\n into.notViewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > NotViewable\")\n );\n pushUrls(\n into.viewUndetermined,\n adBody.querySelectorAll(\":scope > ViewableImpression > ViewUndetermined\")\n );\n adBody.querySelectorAll(\n ':scope > AdVerifications > Verification, :scope > Extensions > Extension[type=\"AdVerifications\"] > AdVerifications > Verification'\n ).forEach((verification) => {\n pushUrls(\n into.verificationNotExecuted,\n verification.querySelectorAll(\n ':scope > TrackingEvents > Tracking[event=\"verificationNotExecuted\"]'\n )\n );\n });\n }\n function mergeTrackingUrls(target, source) {\n const targetLists = target;\n const sourceLists = source;\n for (const key of Object.keys(targetLists)) {\n const incoming = sourceLists[key];\n if (incoming && incoming.length > 0) {\n targetLists[key] = targetLists[key].concat(incoming);\n }\n }\n return target;\n }\n function parseXml(xmlString) {\n const xmlDoc = new DOMParser().parseFromString(xmlString, \"text/xml\");\n const parserError = xmlDoc.querySelector(\"parsererror\");\n if (parserError) {\n console.error(\n \"[HlsAdPlayer] XML parsing error (malformed VAST XML):\",\n parserError.textContent\n );\n return null;\n }\n return xmlDoc;\n }\n function getAdSequence(adElement) {\n const sequence = parseInt(adElement.getAttribute(\"sequence\") || \"\", 10);\n return Number.isFinite(sequence) ? sequence : void 0;\n }\n function emptyVastResult(root) {\n const errorUrls = [];\n pushUrls(errorUrls, root.querySelectorAll(\":scope > Error\"));\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_WRAPPER_NO_ADS };\n }\n function parseVastXml(xmlString) {\n try {\n const xmlDoc = parseXml(xmlString);\n if (!xmlDoc) return { type: \"empty\" };\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n const adElement = adElements.find((el) => getAdSequence(el) === void 0) ?? adElements[0];\n if (!adElement) {\n console.warn(\n `[HlsAdPlayer] No Ad element found in VAST ${root.getAttribute(\"version\") ?? \"\"} response`\n );\n return emptyVastResult(root);\n }\n const parsed = parseAdElement(adElement, true);\n if (parsed.type === \"wrapper\") {\n console.log(\n `[HlsAdPlayer] VAST wrapper detected, following VASTAdTagURI: ${parsed.vastAdTagUri}`\n );\n }\n return parsed;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing VAST XML:\", error);\n return { type: \"empty\" };\n }\n }\n function parseAdElement(adElement, verbose = false) {\n try {\n const wrapper = adElement.querySelector(\":scope > Wrapper\");\n if (wrapper) {\n const vastAdTagUri = textOf(\n wrapper.querySelector(\":scope > VASTAdTagURI\")\n );\n if (!vastAdTagUri) {\n console.warn(\"[HlsAdPlayer] <Wrapper> has no VASTAdTagURI\");\n return { type: \"empty\" };\n }\n const trackingUrls2 = createEmptyTrackingUrls();\n collectAdLevelTracking(wrapper, trackingUrls2);\n wrapper.querySelectorAll(\":scope > Creatives > Creative > Linear\").forEach((linear2) => collectLinearTracking(linear2, trackingUrls2));\n return {\n type: \"wrapper\",\n vastAdTagUri,\n trackingUrls: trackingUrls2,\n rules: {\n followAdditionalWrappers: wrapper.getAttribute(\"followAdditionalWrappers\") !== \"false\"\n }\n };\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) {\n console.warn(\"[HlsAdPlayer] <Ad> has neither <InLine> nor <Wrapper>\");\n return { type: \"empty\" };\n }\n const errorUrls = [];\n pushUrls(errorUrls, inLine.querySelectorAll(\":scope > Error\"));\n if (adElement.getAttribute(\"conditionalAd\") === \"true\") {\n console.warn(\"[HlsAdPlayer] Skipping conditional <Ad> (VPAID-only)\");\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n let linear;\n let mediaFiles = [];\n for (const candidate of Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear\")\n )) {\n const files = collectVideoMediaFiles(candidate, verbose);\n if (files.length > 0) {\n linear = candidate;\n mediaFiles = files;\n break;\n }\n }\n if (!linear) {\n console.warn(\"[HlsAdPlayer] No supported linear media files in <Ad>\");\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n const trackingUrls = createEmptyTrackingUrls();\n collectAdLevelTracking(inLine, trackingUrls);\n collectLinearTracking(linear, trackingUrls);\n return {\n type: \"inline\",\n ad: {\n id: adElement.getAttribute(\"id\") || \"unknown\",\n title: textOf(inLine.querySelector(\":scope > AdTitle\")) || \"Ad\",\n duration: parseVastTime(textOf(linear.querySelector(\":scope > Duration\"))) ?? 30,\n mediaFiles,\n trackingUrls,\n clickThrough: textOf(\n linear.querySelector(\":scope > VideoClicks > ClickThrough\")\n ),\n adServingId: textOf(inLine.querySelector(\":scope > AdServingId\"))\n }\n };\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing <Ad> element:\", error);\n return { type: \"empty\" };\n }\n }\n async function fetchVastXml(vastTagUrl, credentials = \"include\") {\n const requestVast = (creds) => fetch(vastTagUrl, {\n mode: \"cors\",\n credentials: creds,\n headers: {\n \"Accept\": \"application/xml, text/xml, */*\"\n },\n referrerPolicy: \"no-referrer-when-downgrade\"\n });\n let response;\n try {\n response = await requestVast(credentials);\n } catch (error) {\n if (credentials !== \"omit\") {\n console.warn(\n `[HlsAdPlayer] VAST fetch failed with credentials=\"${credentials}\", retrying without credentials:`,\n error\n );\n response = await requestVast(\"omit\");\n } else {\n throw error;\n }\n }\n if (!response.ok) {\n throw new Error(`Failed to fetch VAST: ${response.statusText}`);\n }\n return response.text();\n }\n async function fetchAndParseVastAd(vastTagUrl, depth = 0, accumulatedTracking = createEmptyTrackingUrls(), rules = { followAdditionalWrappers: true }) {\n let vastXml;\n try {\n vastXml = await fetchVastXml(\n vastTagUrl,\n depth === 0 ? \"include\" : \"omit\"\n );\n } catch (error) {\n if (depth === 0) throw error;\n console.warn(\"[HlsAdPlayer] Wrapped VAST request failed:\", error);\n fireTrackingPixels(accumulatedTracking.error, {\n errorCode: VAST_ERROR_WRAPPER_TIMEOUT\n });\n return null;\n }\n console.log(\"[HlsAdPlayer] VAST XML received\");\n console.log(\n \"[HlsAdPlayer] VAST XML content (first 2000 chars):\",\n vastXml.substring(0, 2e3)\n );\n const parsed = parseVastXml(vastXml);\n if (parsed.type === \"empty\") {\n fireTrackingPixels(\n (parsed.errorUrls ?? []).concat(accumulatedTracking.error),\n { errorCode: parsed.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS }\n );\n return null;\n }\n if (parsed.type === \"wrapper\") {\n if (depth >= MAX_VAST_WRAPPER_DEPTH || !rules.followAdditionalWrappers) {\n console.warn(\n rules.followAdditionalWrappers ? `[HlsAdPlayer] VAST wrapper depth limit (${MAX_VAST_WRAPPER_DEPTH}) reached, aborting redirect chain` : '[HlsAdPlayer] Parent wrapper set followAdditionalWrappers=\"false\"; rejecting nested wrapper'\n );\n fireTrackingPixels(\n accumulatedTracking.error.concat(parsed.trackingUrls.error),\n { errorCode: VAST_ERROR_WRAPPER_LIMIT }\n );\n return null;\n }\n mergeTrackingUrls(accumulatedTracking, parsed.trackingUrls);\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n depth + 1,\n accumulatedTracking,\n parsed.rules\n );\n }\n mergeTrackingUrls(parsed.ad.trackingUrls, accumulatedTracking);\n return parsed.ad;\n }\n async function fetchAndParsePod(vastTagUrl) {\n const vastXml = await fetchVastXml(vastTagUrl);\n console.log(\n `[HlsAdPlayer] Pod VAST XML received (length=${vastXml.length})`\n );\n const trimmedXml = vastXml.trim();\n if (trimmedXml.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Pod VAST response body is empty (no fill)\"\n );\n return [];\n }\n const xmlDoc = parseXml(vastXml);\n if (!xmlDoc) {\n console.error(\n \"[HlsAdPlayer] Pod VAST XML content (first 2000 chars):\",\n vastXml.substring(0, 2e3)\n );\n return [];\n }\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No <Ad> elements in VAST ${root.getAttribute(\"version\") ?? \"\"} pod response (no fill)`\n );\n const empty = emptyVastResult(root);\n if (empty.type === \"empty\" && empty.errorUrls?.length) {\n fireTrackingPixels(empty.errorUrls, {\n errorCode: empty.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS\n });\n }\n return [];\n }\n const resolveAd = async (adElement) => {\n const parsed = parseAdElement(adElement);\n if (parsed.type === \"inline\") return parsed.ad;\n if (parsed.type === \"wrapper\") {\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n 1,\n parsed.trackingUrls,\n parsed.rules\n );\n }\n if (parsed.errorUrls?.length) {\n fireTrackingPixels(parsed.errorUrls, {\n errorCode: parsed.errorCode ?? VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n }\n return null;\n };\n const podElements = adElements.filter((el) => getAdSequence(el) !== void 0).sort((a, b) => getAdSequence(a) - getAdSequence(b));\n const buffet = adElements.filter((el) => getAdSequence(el) === void 0);\n const ads = [];\n if (podElements.length === 0) {\n for (const adElement of buffet) {\n const ad = await resolveAd(adElement);\n if (ad) ads.push(ad);\n }\n } else {\n for (const adElement of podElements) {\n let ad = await resolveAd(adElement);\n while (!ad && buffet.length > 0) {\n ad = await resolveAd(buffet.shift());\n }\n if (ad) ads.push(ad);\n }\n }\n console.log(\n `[HlsAdPlayer] Parsed ${ads.length} ad(s) from VAST ${root.getAttribute(\"version\") ?? \"\"} pod response`\n );\n return ads;\n }\n function createAdVideoElement() {\n const video = document.createElement(\"video\");\n video.style.position = \"absolute\";\n video.style.left = \"0\";\n video.style.top = \"0\";\n video.style.width = \"100%\";\n video.style.height = \"100%\";\n video.style.objectFit = \"contain\";\n video.style.backgroundColor = \"#000\";\n video.playsInline = true;\n video.muted = false;\n video.volume = 1;\n console.log(\n `[HlsAdPlayer] Created ad video element with volume ${video.volume}`\n );\n return video;\n }\n function setupAdEventListeners() {\n if (!adVideoElement || !currentAd) return;\n if (adEventHandlers.length > 0) return;\n const onTimeUpdate = () => {\n if (!currentAd || !adVideoElement) return;\n noteAdProgress();\n sampleViewability();\n const currentTime = adVideoElement.currentTime;\n if (trackingFired.start) {\n for (const event of currentAd.trackingUrls.progress) {\n if (trackingFired.progressFired.has(event)) continue;\n const threshold = event.offsetSeconds ?? (event.offsetPercent ?? 0) / 100 * currentAd.duration;\n if (currentTime >= threshold) {\n trackingFired.progressFired.add(event);\n fireTrackingPixels([event.url]);\n }\n }\n }\n if (!(currentAd.duration > 0)) return;\n const progress = currentTime / currentAd.duration;\n if (progress >= 0.25 && !trackingFired.firstQuartile) {\n trackingFired.firstQuartile = true;\n fireTrackingPixels(currentAd.trackingUrls.firstQuartile);\n }\n if (progress >= 0.5 && !trackingFired.midpoint) {\n trackingFired.midpoint = true;\n fireTrackingPixels(currentAd.trackingUrls.midpoint);\n }\n if (progress >= 0.75 && !trackingFired.thirdQuartile) {\n trackingFired.thirdQuartile = true;\n fireTrackingPixels(currentAd.trackingUrls.thirdQuartile);\n }\n };\n const onLoadedMetadata = () => {\n if (!adPlaying || !adVideoElement) return;\n const { videoWidth, videoHeight } = adVideoElement;\n if (videoWidth <= 1 || videoHeight <= 1) {\n console.warn(\n `[HlsAdPlayer] Ad creative has no usable video dimensions (${videoWidth}x${videoHeight}) - skipping this creative`\n );\n handleVideoDecodeFailure();\n }\n };\n const onCanPlay = () => {\n if (!currentAd || trackingFired.loaded) return;\n trackingFired.loaded = true;\n fireTrackingPixels(currentAd.trackingUrls.loaded);\n };\n const onPlaying = () => {\n startStallWatchdog();\n if (!currentAd || !adVideoElement) return;\n if (!trackingFired.impression) {\n trackingFired.impression = true;\n resolvedAds.add(currentAd);\n fireTrackingPixels(currentAd.trackingUrls.impression);\n fireTrackingPixels(currentAd.trackingUrls.creativeView);\n fireTrackingPixels(currentAd.trackingUrls.verificationNotExecuted, {\n reason: VERIFICATION_NOT_SUPPORTED_REASON\n });\n emit(\"ad_impression\", {\n adId: currentAd.id,\n index: podIndex,\n total: podAds.length || 1\n });\n }\n if (trackingFired.start) return;\n trackingFired.start = true;\n trackingFired.lastMuted = adVideoElement.muted || adVideoElement.volume === 0;\n fireTrackingPixels(currentAd.trackingUrls.start);\n console.log(\"[HlsAdPlayer] Ad started playing\");\n };\n const onEnded = () => {\n if (!currentAd || trackingFired.complete) return;\n sampleViewability();\n settleViewability();\n trackingFired.complete = true;\n fireTrackingPixels(currentAd.trackingUrls.complete);\n console.log(\"[HlsAdPlayer] Ad completed\");\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) {\n return;\n }\n handleAdComplete();\n };\n const onError = (e) => {\n if (!adPlaying) return;\n console.error(\"[HlsAdPlayer] Ad video error:\", e);\n reportCurrentAdError(toVastMediaErrorCode(adVideoElement?.error));\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) {\n return;\n }\n handleAdError();\n };\n const onVolumeChange = () => {\n if (!currentAd || !adVideoElement) return;\n const muted = adVideoElement.muted || adVideoElement.volume === 0;\n if (!trackingFired.start) {\n trackingFired.lastMuted = muted;\n return;\n }\n if (muted === trackingFired.lastMuted) return;\n trackingFired.lastMuted = muted;\n fireTrackingPixels(\n muted ? currentAd.trackingUrls.mute : currentAd.trackingUrls.unmute\n );\n };\n const isTrackablePlayback = () => adPlaying && !!currentAd && !!adVideoElement && trackingFired.start && !trackingFired.complete && !adVideoElement.ended;\n const onPause = () => {\n continuousVisibleS = 0;\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.pause);\n }\n };\n const onPlay = () => {\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.resume);\n }\n };\n adEventHandlers = [\n { type: \"timeupdate\", handler: onTimeUpdate },\n { type: \"loadedmetadata\", handler: onLoadedMetadata },\n { type: \"canplay\", handler: onCanPlay },\n { type: \"playing\", handler: onPlaying },\n { type: \"ended\", handler: onEnded },\n { type: \"error\", handler: onError },\n { type: \"volumechange\", handler: onVolumeChange },\n { type: \"pause\", handler: onPause },\n { type: \"play\", handler: onPlay }\n ];\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.addEventListener(type, handler);\n }\n }\n function teardownAdEventListeners() {\n if (adVideoElement) {\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.removeEventListener(type, handler);\n }\n }\n adEventHandlers = [];\n }\n function handleAdClick() {\n if (!adPlaying || !currentAd) return;\n fireTrackingPixels(currentAd.trackingUrls.clickTracking);\n emit(\"ad_click\", { adId: currentAd.id, clickThrough: currentAd.clickThrough });\n if (currentAd.clickThrough) {\n try {\n window.open(currentAd.clickThrough, \"_blank\", \"noopener\");\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Failed to open ClickThrough URL:\", error);\n }\n }\n }\n function reportCurrentAdError(errorCode) {\n if (!currentAd) return;\n resolvedAds.add(currentAd);\n fireTrackingPixels(currentAd.trackingUrls.error, { errorCode });\n }\n function fireNotUsedForUnplayedAds() {\n for (const ad of podAds) {\n if (resolvedAds.has(ad)) continue;\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n function sampleViewability() {\n if (!currentAd || !adVideoElement || !viewObserver || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n const now = adVideoElement.currentTime;\n const inView = visibleRatio >= VIEWABLE_MIN_VISIBLE_RATIO && document.visibilityState === \"visible\" && !adVideoElement.paused;\n if (!inView) {\n continuousVisibleS = 0;\n } else if (lastViewSampleTime !== void 0 && now >= lastViewSampleTime) {\n continuousVisibleS += now - lastViewSampleTime;\n }\n lastViewSampleTime = now;\n if (continuousVisibleS >= VIEWABLE_MIN_CONTINUOUS_S) {\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(currentAd.trackingUrls.viewable);\n }\n }\n function settleViewability() {\n if (!currentAd || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(\n viewObserver ? currentAd.trackingUrls.notViewable : currentAd.trackingUrls.viewUndetermined\n );\n }\n function handleFullscreenChange() {\n if (!adPlaying || !currentAd || !adContainerEl || !trackingFired.start) return;\n const fullscreenEl = document.fullscreenElement ?? document.webkitFullscreenElement;\n const expanded = !!fullscreenEl && fullscreenEl.contains(adContainerEl);\n if (expanded === lastPlayerExpanded) return;\n lastPlayerExpanded = expanded;\n const urls = currentAd.trackingUrls;\n fireTrackingPixels(\n expanded ? urls.fullscreen.concat(urls.playerExpand) : urls.exitFullscreen.concat(urls.playerCollapse)\n );\n }\n function attachContainerHandlers() {\n if (!adContainerEl || containerHandlers.length > 0) return;\n const onClick = () => handleAdClick();\n const onInteraction = (event) => {\n if (adPlaying) emit(\"ad_interaction\", event);\n };\n containerHandlers = [\n { type: \"click\", handler: onClick },\n { type: \"mousedown\", handler: onInteraction },\n { type: \"touchstart\", handler: onInteraction }\n ];\n for (const { type, handler } of containerHandlers) {\n adContainerEl.addEventListener(type, handler);\n }\n const onFullscreenChange = () => handleFullscreenChange();\n documentHandlers = [\n { type: \"fullscreenchange\", handler: onFullscreenChange },\n { type: \"webkitfullscreenchange\", handler: onFullscreenChange }\n ];\n for (const { type, handler } of documentHandlers) {\n document.addEventListener(type, handler);\n }\n if (typeof IntersectionObserver !== \"undefined\") {\n viewObserver = new IntersectionObserver(\n (entries) => {\n const entry = entries[entries.length - 1];\n if (entry) {\n visibleRatio = entry.isIntersecting ? entry.intersectionRatio : 0;\n }\n },\n { threshold: [0, 0.25, 0.5, 0.75, 1] }\n );\n viewObserver.observe(adContainerEl);\n }\n }\n function detachContainerHandlers() {\n if (adContainerEl) {\n for (const { type, handler } of containerHandlers) {\n adContainerEl.removeEventListener(type, handler);\n }\n }\n containerHandlers = [];\n for (const { type, handler } of documentHandlers) {\n document.removeEventListener(type, handler);\n }\n documentHandlers = [];\n viewObserver?.disconnect();\n viewObserver = void 0;\n }\n function setAdPlayingFlag(isPlaying) {\n if (isPlaying) {\n contentVideo.dataset.stormcloudAdPlaying = \"true\";\n } else {\n delete contentVideo.dataset.stormcloudAdPlaying;\n }\n }\n function resetAdTracking() {\n trackingFired = createTrackingState();\n continuousVisibleS = 0;\n lastViewSampleTime = void 0;\n }\n function isRvfcSupported(video) {\n return typeof video.requestVideoFrameCallback === \"function\";\n }\n function settlePendingPlay() {\n pendingPlayPromise = void 0;\n }\n function startAdPlayback(context) {\n if (!adVideoElement) return;\n const playPromise = adVideoElement.play();\n pendingPlayPromise = playPromise;\n playPromise.catch((error) => {\n if (pendingPlayPromise !== playPromise) {\n return;\n }\n console.error(`[HlsAdPlayer] Error starting ${context}:`, error);\n handleAdError();\n }).finally(() => {\n if (pendingPlayPromise === playPromise) {\n pendingPlayPromise = void 0;\n }\n });\n }\n function prepareVideoElementForNewSource() {\n settlePendingPlay();\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n if (!adVideoElement) return;\n try {\n adVideoElement.pause();\n adVideoElement.removeAttribute(\"src\");\n adVideoElement.load();\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error preparing ad video for new source:\",\n error\n );\n }\n }\n function recreateAdVideoElement() {\n console.log(\n \"[HlsAdPlayer] Recreating ad video element (single-decoder platform)\"\n );\n teardownAdEventListeners();\n prepareVideoElementForNewSource();\n if (adVideoElement) {\n try {\n adVideoElement.remove();\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error removing ad video element:\", error);\n }\n }\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n }\n function loadCurrentAdMedia() {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n const mediaFile = selectBestMediaFile(currentAd.mediaFiles);\n if (!mediaFile) {\n throw new Error(\"No media file available for ad\");\n }\n currentAdMediaFile = mediaFile;\n const isHlsAd = isHlsMediaFile(mediaFile);\n console.log(\n `[HlsAdPlayer] Loading ${isHlsAd ? \"HLS\" : \"progressive\"} ad (pod ${podIndex + 1}/${podAds.length || 1}) from: ${mediaFile.url}`\n );\n if (isHlsAd && Hls.isSupported()) {\n if (adHls) {\n adHls.destroy();\n }\n adHls = new Hls({\n enableWorker: true,\n lowLatencyMode: false\n });\n adHls.loadSource(mediaFile.url);\n adHls.attachMedia(adVideoElement);\n adHls.on(Hls.Events.MANIFEST_PARSED, () => {\n console.log(\"[HlsAdPlayer] HLS manifest parsed, starting playback\");\n startAdPlayback(\"HLS ad playback\");\n });\n adHls.on(Hls.Events.ERROR, (_event, data) => {\n console.error(\"[HlsAdPlayer] HLS error:\", data);\n if (data.fatal) {\n handleAdError();\n }\n });\n } else if (isHlsAd && adVideoElement.canPlayType(\"application/vnd.apple.mpegurl\")) {\n adVideoElement.src = mediaFile.url;\n startAdPlayback(\"native HLS ad playback\");\n } else if (!isHlsAd && isProgressiveMediaFile(mediaFile)) {\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n adVideoElement.src = mediaFile.url;\n adVideoElement.load();\n startAdPlayback(\"progressive ad playback\");\n } else {\n throw new Error(`Unsupported ad media file type: ${mediaFile.type}`);\n }\n }\n function advanceToNextPodAd() {\n if (podIndex >= podAds.length - 1) {\n return false;\n }\n settleViewability();\n podIndex++;\n currentAd = podAds[podIndex];\n currentAdMediaFile = void 0;\n resetAdTracking();\n if (currentAd) {\n console.log(\n `[HlsAdPlayer] Advancing to next pod ad (${podIndex + 1}/${podAds.length}): ${currentAd.title}, duration: ${currentAd.duration}s`\n );\n }\n clearStallWatchdog();\n if (requiresMediaPipelineResetAfterAds()) {\n recreateAdVideoElement();\n setupAdEventListeners();\n } else {\n prepareVideoElementForNewSource();\n }\n try {\n loadCurrentAdMedia();\n emit(\"pod_ad_started\", { index: podIndex, total: podAds.length });\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load next pod ad:\", error);\n return false;\n }\n }\n function clearStallWatchdog() {\n if (stallWatchdogId != null) {\n clearInterval(stallWatchdogId);\n stallWatchdogId = void 0;\n }\n cancelVideoFrameProbe();\n }\n function noteAdProgress() {\n lastAdProgressTime = Date.now();\n if (adVideoElement) {\n lastAdProgressPosition = adVideoElement.currentTime;\n }\n }\n function handleAdStall() {\n console.warn(\n \"[HlsAdPlayer] Ad playback stalled (no progress) - recovering to avoid a blank frame\"\n );\n clearStallWatchdog();\n reportCurrentAdError(VAST_ERROR_MEDIA_DISPLAY);\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) {\n return;\n }\n handleAdError();\n }\n function getDecodedVideoFrameCount(video) {\n try {\n if (typeof video.getVideoPlaybackQuality === \"function\") {\n const quality = video.getVideoPlaybackQuality();\n if (quality && typeof quality.totalVideoFrames === \"number\") {\n return quality.totalVideoFrames;\n }\n }\n const legacyCount = video.webkitDecodedFrameCount;\n if (typeof legacyCount === \"number\") {\n return legacyCount;\n }\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Unable to read decoded video frame count:\",\n error\n );\n }\n return void 0;\n }\n function isFrameCounterReliable() {\n return contentVideo[FRAME_COUNTER_RELIABLE_PROP] === true;\n }\n function markFrameCounterReliable() {\n contentVideo[FRAME_COUNTER_RELIABLE_PROP] = true;\n }\n function isRvfcReliable() {\n return contentVideo[RVFC_RELIABLE_PROP] === true;\n }\n function markRvfcReliable() {\n contentVideo[RVFC_RELIABLE_PROP] = true;\n }\n function cancelVideoFrameProbe() {\n if (videoFrameCallbackHandle != null && adVideoElement && typeof adVideoElement.cancelVideoFrameCallback === \"function\") {\n try {\n adVideoElement.cancelVideoFrameCallback(\n videoFrameCallbackHandle\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error cancelling video frame callback:\",\n error\n );\n }\n }\n videoFrameCallbackHandle = void 0;\n }\n function startVideoFrameProbe() {\n cancelVideoFrameProbe();\n if (!adVideoElement) return;\n const rvfc = adVideoElement.requestVideoFrameCallback;\n if (typeof rvfc !== \"function\") return;\n const onPresentedFrame = () => {\n videoFrameCallbackHandle = void 0;\n if (!adPlaying) return;\n sawDecodedVideoFrame = true;\n markRvfcReliable();\n };\n try {\n videoFrameCallbackHandle = rvfc.call(\n adVideoElement,\n onPresentedFrame\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error requesting video frame callback:\",\n error\n );\n videoFrameCallbackHandle = void 0;\n }\n }\n function handleVideoDecodeFailure() {\n console.warn(\n \"[HlsAdPlayer] Ad audio is advancing but no video frames decoded (black screen) - skipping this creative\"\n );\n clearStallWatchdog();\n reportCurrentAdError(VAST_ERROR_MEDIA_DISPLAY);\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) {\n return;\n }\n handleAdError();\n }\n function startStallWatchdog() {\n clearStallWatchdog();\n noteAdProgress();\n sawDecodedVideoFrame = false;\n startVideoFrameProbe();\n const blackFrameDetectionEnabled = !requiresMediaPipelineResetAfterAds();\n stallWatchdogId = window.setInterval(() => {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n if (blackFrameDetectionEnabled && !sawDecodedVideoFrame && !adVideoElement.paused) {\n const decodedFrames = getDecodedVideoFrameCount(adVideoElement);\n if (decodedFrames !== void 0 && decodedFrames > 0) {\n sawDecodedVideoFrame = true;\n markFrameCounterReliable();\n } else if (adVideoElement.currentTime >= BLACKFRAME_MIN_PLAYBACK_S) {\n const timeAdvancing = adVideoElement.currentTime > lastAdProgressPosition + 0.05;\n if (isRvfcSupported(adVideoElement) && timeAdvancing && isRvfcReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n if (decodedFrames === 0 && timeAdvancing && isFrameCounterReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n }\n }\n if (adVideoElement.currentTime > lastAdProgressPosition + 0.05) {\n noteAdProgress();\n return;\n }\n if (adVideoElement.paused) {\n noteAdProgress();\n return;\n }\n if (Date.now() - lastAdProgressTime >= STALL_TIMEOUT_MS) {\n handleAdStall();\n }\n }, STALL_CHECK_INTERVAL_MS);\n }\n function releaseAdDecoder() {\n prepareVideoElementForNewSource();\n if (adContainerEl) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n }\n function handleAdComplete() {\n console.log(\"[HlsAdPlayer] Handling ad completion\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode:\", error);\n });\n } else {\n console.log(\"[HlsAdPlayer] Content video already playing in live mode\");\n }\n }\n emit(\"content_resume\");\n }\n function handleAdError() {\n console.log(\"[HlsAdPlayer] Handling ad error\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n emit(\"ad_error\");\n }\n return {\n initialize() {\n console.log(\"[HlsAdPlayer] Initializing\");\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"30\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n contentVideo[AD_CONTAINER_PROP] = adContainerEl;\n attachContainerHandlers();\n },\n async requestAds(vastTagUrl) {\n console.log(\"[HlsAdPlayer] Requesting ads:\", vastTagUrl);\n if (adPlaying) {\n console.warn(\n \"[HlsAdPlayer] Cannot request new ads while an ad is playing\"\n );\n return Promise.reject(new Error(\"Ad already playing\"));\n }\n try {\n let ads = [];\n if (preloadedAds.has(vastTagUrl)) {\n const preloaded = preloadedAds.get(vastTagUrl);\n preloadedAds.delete(vastTagUrl);\n if (preloaded) {\n ads = [preloaded];\n }\n console.log(\n \"[HlsAdPlayer] Using preloaded VAST response:\",\n vastTagUrl\n );\n } else {\n ads = await fetchAndParsePod(vastTagUrl);\n }\n if (!ads.length) {\n console.warn(\"[HlsAdPlayer] No ads available from VAST response\");\n emit(\"ad_error\");\n return Promise.reject(new Error(\"No ads available from VAST response\"));\n }\n podAds = ads;\n podIndex = 0;\n currentAd = ads[0];\n currentAdMediaFile = void 0;\n console.log(\n `[HlsAdPlayer] Pod parsed: ${ads.length} ad(s), first=\"${currentAd?.title}\", duration=${currentAd?.duration}s`\n );\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error requesting ads:\", error);\n emit(\"ad_error\");\n return Promise.reject(error);\n }\n },\n async play() {\n if (!currentAd) {\n console.warn(\n \"[HlsAdPlayer] Cannot play: No ad loaded (no ads available)\"\n );\n return Promise.reject(new Error(\"No ad loaded\"));\n }\n console.log(\"[HlsAdPlayer] Starting ad playback\");\n try {\n if (!adVideoElement) {\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n }\n setupAdEventListeners();\n resetAdTracking();\n const contentVolume = contentVideo.volume;\n originalVolume = Math.max(\n 0,\n Math.min(1, contentVolume || originalVolume)\n );\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.pause();\n console.log(\"[HlsAdPlayer] Content paused (VOD mode)\");\n } else {\n console.log(\"[HlsAdPlayer] Content continues (Live mode)\");\n }\n console.log(\"[HlsAdPlayer] FORCE MUTING main video\");\n contentVideo.muted = true;\n adPlaying = true;\n setAdPlayingFlag(true);\n if (adVideoElement) {\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n console.log(\n `[HlsAdPlayer] Set ad video volume to ${adVideoElement.volume}, muted: ${adVideoElement.muted}, originalMutedState: ${originalMutedState}, contentVolume: ${contentVolume}`\n );\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n emit(\"content_pause\");\n loadCurrentAdMedia();\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error playing ad:\", error);\n handleAdError();\n return Promise.reject(error);\n }\n },\n pause() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && !adVideoElement.paused) {\n adVideoElement.pause();\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error pausing ad:\", error);\n }\n },\n resume() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && adVideoElement.paused) {\n adVideoElement.play().catch(() => {\n });\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error resuming ad:\", error);\n }\n },\n async stop() {\n console.log(\"[HlsAdPlayer] Stopping ad\");\n settleViewability();\n fireNotUsedForUnplayedAds();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n const previousMutedState = contentVideo.muted;\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n console.log(\n `[HlsAdPlayer] Restored mute state on stop: ${previousMutedState} -> ${originalMutedState}, volume: ${contentVideo.volume}`\n );\n releaseAdDecoder();\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback on stop\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode on stop:\", error);\n });\n }\n }\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n },\n destroy() {\n console.log(\"[HlsAdPlayer] Destroying\");\n settleViewability();\n fireNotUsedForUnplayedAds();\n destroyed = true;\n clearStallWatchdog();\n for (const timeoutId of pendingTimeouts) {\n clearTimeout(timeoutId);\n }\n pendingTimeouts = [];\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n teardownAdEventListeners();\n detachContainerHandlers();\n releaseAdDecoder();\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n listeners.clear();\n preloadedAds.clear();\n preloadingAds.clear();\n },\n isAdPlaying() {\n return adPlaying;\n },\n resize(width, height) {\n console.log(`[HlsAdPlayer] Resizing to ${width}x${height}`);\n if (adContainerEl) {\n adContainerEl.style.width = `${width}px`;\n adContainerEl.style.height = `${height}px`;\n }\n if (adVideoElement) {\n adVideoElement.style.width = `${width}px`;\n adVideoElement.style.height = `${height}px`;\n }\n },\n on(event, listener) {\n if (!listeners.has(event)) listeners.set(event, /* @__PURE__ */ new Set());\n listeners.get(event).add(listener);\n },\n off(event, listener) {\n listeners.get(event)?.delete(listener);\n },\n updateOriginalMutedState(muted, volume) {\n const nextVolume = typeof volume === \"number\" && !Number.isNaN(volume) ? Math.max(0, Math.min(1, volume)) : originalVolume;\n console.log(\n `[HlsAdPlayer] updateOriginalMutedState called: { muted: ${originalMutedState} -> ${muted}, volume: ${originalVolume} -> ${nextVolume} }`\n );\n originalMutedState = muted;\n originalVolume = nextVolume;\n },\n getOriginalMutedState() {\n return originalMutedState;\n },\n getOriginalVolume() {\n return originalVolume;\n },\n setAdVolume(volume) {\n if (adVideoElement && adPlaying) {\n const clamped = Math.max(0, Math.min(1, volume));\n adVideoElement.volume = clamped;\n adVideoElement.muted = clamped === 0;\n }\n },\n getAdVolume() {\n if (adVideoElement && adPlaying) {\n return adVideoElement.volume;\n }\n return 1;\n },\n showPlaceholder() {\n contentVideo.style.opacity = \"0\";\n contentVideo.style.visibility = \"hidden\";\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"10\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n },\n hidePlaceholder() {\n if (adContainerEl && !adPlaying) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n if (!adPlaying) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n },\n getLoadedAdDuration() {\n return currentAd?.duration;\n },\n getLoadedAdId() {\n return currentAd?.id;\n },\n getPodAdCount() {\n return podAds.length;\n },\n getPodTotalDurationMs() {\n return podAds.reduce(\n (total, ad) => total + (ad.duration > 0 ? ad.duration * 1e3 : 0),\n 0\n );\n }\n };\n}\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/sdk/pal.ts\nvar PAL_SDK_URL = \"https://imasdk.googleapis.com/pal/sdkloader/pal.js\";\nvar _nonceLoader;\nvar _nonceLoaderAllowStorage;\nvar _palLoadPromise;\nfunction loadPalSdk() {\n if (typeof window !== \"undefined\" && window.goog?.pal) {\n return Promise.resolve();\n }\n if (_palLoadPromise) return _palLoadPromise;\n _palLoadPromise = new Promise((resolve, reject) => {\n const existing = document.querySelector(\n 'script[data-pal=\"true\"]'\n );\n if (existing) {\n if (window.goog?.pal) {\n resolve();\n return;\n }\n const timeout = setTimeout(\n () => reject(new Error(\"PAL SDK load timeout\")),\n 1e4\n );\n existing.addEventListener(\"load\", () => {\n clearTimeout(timeout);\n resolve();\n });\n existing.addEventListener(\"error\", () => {\n clearTimeout(timeout);\n reject(new Error(\"PAL SDK load failed\"));\n });\n return;\n }\n const script = document.createElement(\"script\");\n script.src = PAL_SDK_URL;\n script.async = true;\n script.setAttribute(\"data-pal\", \"true\");\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(\"PAL SDK load failed\"));\n document.head.appendChild(script);\n });\n return _palLoadPromise;\n}\nfunction getOrCreateNonceLoader(allowStorage) {\n if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {\n return _nonceLoader;\n }\n const goog = window.goog;\n const consentSettings = new goog.pal.ConsentSettings();\n consentSettings.allowStorage = allowStorage;\n _nonceLoader = new goog.pal.NonceLoader(consentSettings);\n _nonceLoaderAllowStorage = allowStorage;\n return _nonceLoader;\n}\nfunction createPalNonceManager() {\n let currentNonce = \"\";\n let currentNonceManager;\n return {\n async generateNonce(options = {}) {\n try {\n await loadPalSdk();\n const loader = getOrCreateNonceLoader(options.allowStorage ?? true);\n const goog = window.goog;\n const request = new goog.pal.NonceRequest();\n request.adWillAutoPlay = options.adWillAutoPlay ?? true;\n request.adWillPlayMuted = options.adWillPlayMuted ?? false;\n request.playerVolume = options.playerVolume ?? (request.adWillPlayMuted ? 0 : 1);\n request.continuousPlayback = options.continuousPlayback ?? true;\n request.descriptionUrl = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.iconsSupported = true;\n request.playerType = \"StormcloudVideoPlayer\";\n request.playerVersion = \"1.0\";\n request.supportedApiFrameworks = \"2,7,9\";\n request.url = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.videoWidth = options.videoWidth || 640;\n request.videoHeight = options.videoHeight || 480;\n if (options.ppid) request.ppid = options.ppid;\n if (options.sessionId) request.sessionId = options.sessionId;\n console.log(\n \"[PAL] NonceRequest before generateNonce:\",\n JSON.stringify({\n adWillAutoPlay: request.adWillAutoPlay,\n adWillPlayMuted: request.adWillPlayMuted,\n playerVolume: request.playerVolume,\n continuousPlayback: request.continuousPlayback,\n descriptionUrl: request.descriptionUrl,\n iconsSupported: request.iconsSupported,\n playerType: request.playerType,\n playerVersion: request.playerVersion,\n supportedApiFrameworks: request.supportedApiFrameworks,\n url: request.url,\n videoWidth: request.videoWidth,\n videoHeight: request.videoHeight,\n ppid: request.ppid,\n sessionId: request.sessionId\n }, null, 2)\n );\n const manager = await loader.loadNonceManager(request);\n currentNonceManager = manager;\n currentNonce = manager.getNonce();\n console.log(\"[PAL] Nonce generated successfully\");\n return currentNonce;\n } catch (error) {\n console.warn(\"[PAL] Failed to generate nonce:\", error);\n currentNonce = \"\";\n currentNonceManager = void 0;\n return \"\";\n }\n },\n getCurrentNonce() {\n return currentNonce;\n },\n injectNonce(vastTagUrl) {\n if (!currentNonce || !vastTagUrl) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", currentNonce);\n return url.toString();\n } catch {\n let base = vastTagUrl.replace(/([?&])paln=[^&]*/g, \"\").replace(/[?&]$/, \"\");\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}givn=${encodeURIComponent(currentNonce)}`;\n }\n },\n sendPlaybackStart() {\n try {\n currentNonceManager?.sendPlaybackStart();\n } catch {\n }\n },\n sendPlaybackEnd() {\n try {\n currentNonceManager?.sendPlaybackEnd();\n } catch {\n }\n },\n sendAdClick() {\n try {\n currentNonceManager?.sendAdClick();\n } catch {\n }\n },\n sendAdTouch(event) {\n try {\n currentNonceManager?.sendAdTouch(event);\n } catch {\n }\n },\n reset() {\n currentNonce = \"\";\n currentNonceManager = void 0;\n }\n };\n}\n\n// src/utils/trackingIngest.ts\nvar DEFAULT_TRACKING_INGEST_CONFIG = {\n enabled: true,\n baseUrl: \"https://player-analytics-ingest-api-760490581852.us-central1.run.app/api/adstorm/player-tracking\"\n};\nvar trackingIngestConfig = {\n ...DEFAULT_TRACKING_INGEST_CONFIG\n};\nfunction applyTrackingIngestConfig(overrides) {\n Object.assign(trackingIngestConfig, overrides);\n}\nfunction configureTrackingIngest(overrides) {\n applyTrackingIngestConfig(overrides);\n}\nfunction isTrackingIngestEnabled() {\n return trackingIngestConfig.enabled === true;\n}\nfunction normalizeIngestBaseUrl(baseUrl) {\n return baseUrl.replace(/\\/+$/, \"\");\n}\nfunction buildTrackingIngestUrl(channel) {\n const base = normalizeIngestBaseUrl(trackingIngestConfig.baseUrl);\n if (channel === \"impressions\") {\n return `${base}/impressions/ingest`;\n }\n return `${base}/metrics/ingest`;\n}\nasync function ingestPlayerTracking(licenseKey, channel, body) {\n if (!isTrackingIngestEnabled() || !licenseKey) {\n return false;\n }\n try {\n const response = await fetch(buildTrackingIngestUrl(channel), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `License-Key ${licenseKey}`\n },\n body: JSON.stringify(body)\n });\n if (!response.ok) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest failed (${response.status}) for ${channel}`\n );\n return false;\n }\n return true;\n } catch (error) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest error for ${channel}:`,\n error\n );\n return false;\n }\n}\n\n// src/utils/vastEnvironmentSignals.ts\nvar CTV_SESSION_STORAGE_KEY = \"stormcloud.ctv.sid\";\nvar WEB_SESSION_STORAGE_KEY = \"stormcloud.web.sid\";\nvar inMemoryWebSessionId;\nvar PLAYER_ID_STORAGE_KEY = \"stormcloud.player.id\";\nvar DEVICE_ID_STORAGE_KEYS = [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"advertising_id\",\n \"deviceAdvertisingId\",\n \"aaid\",\n \"adid\",\n \"rida\",\n \"tifa\",\n \"lgudid\"\n];\nvar ANDROID_ID_TYPES = /* @__PURE__ */ new Set([\"aaid\", \"adid\"]);\nfunction resolveVastEnvironmentSignals(isCtv) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const realDeviceId = bridgeSignals.deviceId || (isCtv ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n let deviceId = realDeviceId;\n let deviceIdType = bridgeSignals.deviceIdType || readStoredString(\"deviceIdType\") || readStoredString(\"idtype\") || platformDevice.deviceIdType || inferDeviceIdType();\n const platformLat = bridgeSignals.deviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;\n let limitAdTracking = deviceId != null ? platformLat ?? readStoredLimitAdTracking() ?? false : void 0;\n if (!deviceId && isCtv) {\n const dpid = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (dpid) {\n deviceId = dpid;\n deviceIdType = \"dpid\";\n limitAdTracking = platformLat ?? readStoredLimitAdTracking() ?? false;\n }\n }\n const deviceTypeHint = resolveDeviceTypeHint(isCtv);\n if (isCtv) {\n return {\n isCtv: true,\n sessionId: getOrCreateCtvSessionId(),\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n }\n const webSessionId = getOrCreateWebSessionId();\n return {\n isCtv: false,\n ...webSessionId ? { sessionId: webSessionId } : {},\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n}\nvar DEVICE_TYPE_HINT = {\n FEATURE_PHONE: 1,\n SMARTPHONE: 2,\n DESKTOP: 3,\n TABLET: 4,\n CONNECTED_TV: 5,\n GAME_CONSOLE: 6,\n SET_TOP_BOX: 7\n};\nvar DEVICE_TYPE_HINT_ALIASES = {\n featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,\n smartphone: DEVICE_TYPE_HINT.SMARTPHONE,\n mobile: DEVICE_TYPE_HINT.SMARTPHONE,\n phone: DEVICE_TYPE_HINT.SMARTPHONE,\n desktop: DEVICE_TYPE_HINT.DESKTOP,\n pc: DEVICE_TYPE_HINT.DESKTOP,\n tablet: DEVICE_TYPE_HINT.TABLET,\n ctv: DEVICE_TYPE_HINT.CONNECTED_TV,\n tv: DEVICE_TYPE_HINT.CONNECTED_TV,\n connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,\n smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,\n console: DEVICE_TYPE_HINT.GAME_CONSOLE,\n gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,\n stb: DEVICE_TYPE_HINT.SET_TOP_BOX,\n settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX\n};\nvar SET_TOP_BOX_UA = /LGSTB|\\bSTB\\b|STB\\d|Set-?Top|SetTopBox|TV ?Box|Kaon|Humax|Arris|Technicolor|Sagemcom|Infomir|MAG\\d{3}|KreaTV|Amino|Formuler|Dune ?HD|TiVo|MiBOX|Mi Box|SHIELD Android TV|\\bAFT[A-Z]|Roku|AppleTV|Apple TV|CrKey/i;\nvar GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;\nvar CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\\bTV\\b/i;\nvar FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;\nfunction resolveDeviceTypeHint(isCtv) {\n const override = readDeviceTypeHintOverride(isCtv);\n if (override != null) return override;\n return inferDeviceTypeHint(isCtv);\n}\nfunction inferDeviceTypeHint(isCtv) {\n const fallback = isCtv ? DEVICE_TYPE_HINT.CONNECTED_TV : DEVICE_TYPE_HINT.DESKTOP;\n if (typeof navigator === \"undefined\") return fallback;\n const ua = navigator.userAgent || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n if (SET_TOP_BOX_UA.test(ua)) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n if (GAME_CONSOLE_UA.test(ua)) return DEVICE_TYPE_HINT.GAME_CONSOLE;\n if (CONNECTED_TV_UA.test(ua) && !/Mobile/i.test(ua)) {\n return DEVICE_TYPE_HINT.CONNECTED_TV;\n }\n if (FEATURE_PHONE_UA.test(ua)) return DEVICE_TYPE_HINT.FEATURE_PHONE;\n if (/iPad/i.test(ua) || /Macintosh/i.test(ua) && maxTouchPoints > 1) {\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/iPhone|iPod/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (/Android/i.test(ua)) {\n if (/Mobile/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (maxTouchPoints === 0) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n return fallback;\n}\nfunction readDeviceTypeHintOverride(isCtv) {\n if (typeof window === \"undefined\") return void 0;\n const keys = [\"dth\", \"deviceTypeHint\"];\n const fromGlobal = normalizeDeviceTypeHint(window.__STORMCLOUD_DTH__);\n if (fromGlobal != null) return fromGlobal;\n for (const source of getNativeBridgeSources()) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeDeviceTypeHint(\n typeof value === \"function\" ? safeCall(value, source) : value\n );\n if (normalized != null) return normalized;\n }\n }\n if (!isCtv) return void 0;\n for (const key of [\"stormcloud.dth\", \"dth\"]) {\n const normalized = normalizeDeviceTypeHint(readStoredString(key));\n if (normalized != null) return normalized;\n }\n return void 0;\n}\nfunction normalizeDeviceTypeHint(value) {\n if (typeof value === \"number\") {\n return Number.isInteger(value) && value >= 1 && value <= 7 ? value : void 0;\n }\n if (typeof value !== \"string\") return void 0;\n const trimmed = value.trim();\n if (/^[1-7]$/.test(trimmed)) return parseInt(trimmed, 10);\n return DEVICE_TYPE_HINT_ALIASES[trimmed.toLowerCase().replace(/[\\s_-]/g, \"\")];\n}\nfunction safeCall(fn, thisArg) {\n try {\n return fn.call(thisArg);\n } catch {\n return void 0;\n }\n}\nfunction inferDeviceIdType() {\n if (typeof navigator === \"undefined\") {\n return void 0;\n }\n const ua = navigator.userAgent;\n if (/Roku/i.test(ua)) return \"rida\";\n if (/Tizen|Samsung/i.test(ua)) return \"tifa\";\n if (/AppleTV|Apple TV/i.test(ua)) return \"tvOS\";\n if (/AFT|Fire TV|Amazon/i.test(ua)) return \"afai\";\n if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return \"lgudid\";\n if (/Android|Google TV/i.test(ua)) return \"aaid\";\n if (/iPhone|iPad|iPod/i.test(ua)) return \"idfa\";\n return void 0;\n}\nfunction isEquivalentDeviceIdType(tagType, runtimeType) {\n if (!tagType || !runtimeType) return false;\n const tag = tagType.toLowerCase();\n const runtime = runtimeType.toLowerCase();\n if (tag === runtime) return true;\n return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);\n}\nfunction resolveNativeDeviceId(includeStored = true) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {\n return void 0;\n }\n return deviceId;\n}\nfunction getOrCreateStoredUuid(storageKey) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n const existing = readPersistentId(storageKey);\n if (existing) {\n writePersistentId(storageKey, existing);\n return existing;\n }\n const id = createUuid();\n writePersistentId(storageKey, id);\n return id;\n}\nfunction getOrCreateCtvSessionId() {\n const existing = readPersistentId(CTV_SESSION_STORAGE_KEY);\n if (existing) {\n writePersistentId(CTV_SESSION_STORAGE_KEY, existing);\n return existing;\n }\n const sessionId = createUuid();\n writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);\n return sessionId;\n}\nfunction getOrCreateWebSessionId() {\n if (typeof window === \"undefined\") return void 0;\n try {\n const existing = window.sessionStorage?.getItem(WEB_SESSION_STORAGE_KEY);\n if (existing && !isMacroPlaceholder(existing)) return existing;\n } catch {\n }\n const sessionId = inMemoryWebSessionId || createUuid();\n inMemoryWebSessionId = sessionId;\n try {\n window.sessionStorage?.setItem(WEB_SESSION_STORAGE_KEY, sessionId);\n } catch {\n }\n return sessionId;\n}\nfunction readPersistentId(storageKey) {\n return readStoredString(storageKey) || readCookie(storageKey);\n}\nfunction writePersistentId(storageKey, value) {\n try {\n window.localStorage?.setItem(storageKey, value);\n } catch {\n }\n writeCookie(storageKey, value);\n}\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\nfunction readCookie(name) {\n if (typeof document === \"undefined\") {\n return void 0;\n }\n try {\n const prefix = encodeURIComponent(name) + \"=\";\n const parts = document.cookie ? document.cookie.split(\";\") : [];\n for (const part of parts) {\n const entry = part.trim();\n if (entry.startsWith(prefix)) {\n return decodeURIComponent(entry.slice(prefix.length)) || void 0;\n }\n }\n } catch {\n }\n return void 0;\n}\nfunction writeCookie(name, value) {\n if (typeof document === \"undefined\") {\n return;\n }\n try {\n document.cookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value) + \";path=/;max-age=\" + PERSISTENT_ID_COOKIE_MAX_AGE + \";SameSite=Lax\";\n } catch {\n }\n}\nfunction createUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n if (typeof crypto !== \"undefined\" && typeof crypto.getRandomValues === \"function\") {\n crypto.getRandomValues(bytes);\n } else {\n let seed = Date.now() ^ Math.floor(performanceNow() * 1e3);\n for (let i = 0; i < 16; i++) {\n seed = seed * 1103515245 + 12345 & 2147483647;\n bytes[i] = (seed ^ Math.floor(Math.random() * 256)) & 255;\n }\n }\n bytes[6] = (bytes[6] ?? 0) & 15 | 64;\n bytes[8] = (bytes[8] ?? 0) & 63 | 128;\n let hex = \"\";\n for (let i = 0; i < 16; i++) {\n hex += (bytes[i] ?? 0).toString(16).padStart(2, \"0\");\n }\n return hex.slice(0, 8) + \"-\" + hex.slice(8, 12) + \"-\" + hex.slice(12, 16) + \"-\" + hex.slice(16, 20) + \"-\" + hex.slice(20, 32);\n}\nfunction performanceNow() {\n try {\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n return performance.now();\n }\n } catch {\n }\n return 0;\n}\nfunction readPlatformNativeDeviceId() {\n if (typeof window === \"undefined\") return {};\n try {\n const adinfo = window.webapis?.adinfo;\n if (adinfo) {\n const tifa = typeof adinfo.getTIFA === \"function\" ? adinfo.getTIFA() : adinfo.tifa;\n if (typeof tifa === \"string\" && tifa && !isMacroPlaceholder(tifa)) {\n const lat = typeof adinfo.isLATEnabled === \"function\" ? adinfo.isLATEnabled() : void 0;\n return {\n deviceId: tifa,\n deviceIdType: \"tifa\",\n ...typeof lat === \"boolean\" ? { limitAdTracking: lat } : {}\n };\n }\n }\n } catch {\n }\n try {\n const webOSDev = window.webOSDev;\n if (webOSDev) {\n const lgudid = typeof webOSDev.LGUDID === \"function\" ? webOSDev.LGUDID() : webOSDev.lgudid ?? webOSDev.LGUDID;\n if (typeof lgudid === \"string\" && lgudid) {\n if (isZeroedAdId(lgudid)) {\n return { deviceIdType: \"lgudid\", limitAdTracking: true };\n }\n if (!isMacroPlaceholder(lgudid)) {\n return { deviceId: lgudid, deviceIdType: \"lgudid\", limitAdTracking: false };\n }\n }\n }\n } catch {\n }\n try {\n const roku = window.Roku;\n if (roku) {\n const rida = typeof roku.getPublisherUniqueId === \"function\" ? roku.getPublisherUniqueId() : roku.rida;\n if (typeof rida === \"string\" && rida && !isMacroPlaceholder(rida)) {\n return { deviceId: rida, deviceIdType: \"rida\", limitAdTracking: false };\n }\n }\n } catch {\n }\n return {};\n}\nvar ZEROED_AD_ID_PATTERNS = /* @__PURE__ */ new Set([\n \"38400000-8cf0-11bd-b23e-10b96e40000d\",\n \"00000000-0000-0000-0000-000000000000\"\n]);\nfunction isMacroPlaceholder(value) {\n const t = value.trim();\n return !t || /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/.test(t) || /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(t) || ZEROED_AD_ID_PATTERNS.has(t.toLowerCase());\n}\nfunction isZeroedAdId(value) {\n return ZEROED_AD_ID_PATTERNS.has(value.trim().toLowerCase());\n}\nfunction readNativeBridgeSignals() {\n for (const source of getNativeBridgeSources()) {\n const contentUrl = readBridgeValue(source, [\"contentUrl\", \"url\", \"videoUrl\", \"canonicalUrl\"]) || void 0;\n const appId = readBridgeValue(source, [\"appId\", \"msid\", \"applicationId\", \"packageName\"]) || void 0;\n const appName = readBridgeValue(source, [\"appName\", \"an\", \"applicationName\"]) || void 0;\n const deviceId = readBridgeValue(source, [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"adId\",\n \"deviceId\",\n \"lgudid\",\n \"LGUDID\",\n \"tifa\",\n \"rida\",\n \"afai\",\n \"aaid\"\n ]) || void 0;\n if (!contentUrl && !deviceId && !appId && !appName) continue;\n const deviceIdType = readBridgeValue(source, [\n \"idtype\",\n \"deviceIdType\",\n \"advertisingIdType\",\n \"idType\"\n ]) || inferDeviceIdType();\n const limitAdTracking = readBridgeBoolean(source, [\n \"is_lat\",\n \"limitAdTracking\",\n \"limitedAdTracking\",\n \"lat\"\n ]);\n return {\n ...contentUrl ? { contentUrl } : {},\n ...appId ? { appId } : {},\n ...appName ? { appName } : {},\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {}\n };\n }\n return {};\n}\nfunction getNativeBridgeSources() {\n if (typeof window === \"undefined\") {\n return [];\n }\n return [\n window.__STORMCLOUD_CTV_AD_INFO__,\n window.__STORMCLOUD_CTV__,\n window.stormcloudCtv,\n window.AiryTV,\n window.Android,\n window.webOS,\n window.tizen,\n window.amazon\n ].filter(Boolean);\n}\nfunction readBridgeValue(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n if (typeof value === \"string\" && value) {\n return value;\n }\n if (typeof value === \"function\") {\n try {\n const result = value.call(source);\n if (typeof result === \"string\" && result) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readBridgeBoolean(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeBoolean(value);\n if (normalized != null) {\n return normalized;\n }\n if (typeof value === \"function\") {\n try {\n const result = normalizeBoolean(value.call(source));\n if (result != null) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readStoredDeviceId() {\n for (const key of DEVICE_ID_STORAGE_KEYS) {\n const value = readStoredString(key);\n if (value) {\n return value;\n }\n }\n return void 0;\n}\nfunction readStoredString(key) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n try {\n const value = window.localStorage?.getItem(key);\n return value || void 0;\n } catch {\n return void 0;\n }\n}\nfunction readStoredLimitAdTracking() {\n return normalizeBoolean(\n readStoredString(\"limitAdTracking\") || readStoredString(\"limitedAdTracking\") || readStoredString(\"is_lat\")\n );\n}\nfunction normalizeBoolean(value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n return value === 1;\n }\n if (typeof value === \"string\") {\n const normalized = value.toLowerCase();\n if (normalized === \"1\" || normalized === \"true\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"0\" || normalized === \"false\" || normalized === \"no\") {\n return false;\n }\n }\n return void 0;\n}\n\n// src/utils/tracking.ts\nvar cachedBrowserId = null;\nfunction buildAnalyticsContext(config) {\n const context = {};\n if (config.debugAdTiming) {\n context.debugAdTiming = true;\n }\n if (config.isLiveStream !== void 0) {\n context.inputStreamType = config.isLiveStream ? \"live\" : \"vod\";\n }\n return context;\n}\nfunction getClientInfo() {\n const ua = navigator.userAgent;\n const platform = navigator.platform;\n const vendor = navigator.vendor || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n const memory = navigator.deviceMemory || null;\n const hardwareConcurrency = navigator.hardwareConcurrency || 1;\n const screenInfo = {\n width: screen?.width,\n height: screen?.height,\n availWidth: screen?.availWidth,\n availHeight: screen?.availHeight,\n orientation: screen?.orientation?.type || \"\",\n pixelDepth: screen?.pixelDepth\n };\n let deviceType = \"desktop\";\n let brand = \"Unknown\";\n let os = \"Unknown\";\n let model = \"\";\n let isSmartTV = false;\n let isAndroid = false;\n let isWebView = false;\n let isWebApp = false;\n if (ua.includes(\"Web0S\")) {\n brand = \"LG\";\n os = \"webOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n const webosMatch = ua.match(/Web0S\\/([^\\s]+)/);\n model = webosMatch ? `webOS ${webosMatch[1]}` : \"webOS TV\";\n } else if (ua.includes(\"Tizen\")) {\n brand = \"Samsung\";\n os = \"Tizen\";\n isSmartTV = true;\n deviceType = \"tv\";\n const tizenMatch = ua.match(/Tizen\\/([^\\s]+)/);\n const tvMatch = ua.match(/(?:Smart-TV|SMART-TV|TV)/i) ? \"Smart TV\" : \"\";\n model = tizenMatch ? `Tizen ${tizenMatch[1]} ${tvMatch}`.trim() : \"Tizen TV\";\n } else if (ua.includes(\"Philips\")) {\n brand = \"Philips\";\n os = \"Saphi\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Sharp\") || ua.includes(\"AQUOS\")) {\n brand = \"Sharp\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"Sony\") || vendor.includes(\"Sony\"))) {\n brand = \"Sony\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"NetCast\") || ua.includes(\"LG\"))) {\n brand = \"LG\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\" Roku\") || ua.includes(\"Roku/\")) {\n brand = \"Roku\";\n os = \"Roku OS\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"AppleTV\")) {\n brand = \"Apple\";\n os = \"tvOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n }\n if (ua.includes(\"Android\")) {\n isAndroid = true;\n os = \"Android\";\n deviceType = /Mobile/.test(ua) ? \"mobile\" : \"tablet\";\n if (ua.includes(\"Android\") && (maxTouchPoints === 0 || ua.includes(\"Google TV\") || ua.includes(\"XiaoMi\"))) {\n deviceType = \"tv\";\n isSmartTV = true;\n brand = brand === \"Unknown\" ? \"Android TV\" : brand;\n }\n const androidModelMatch = ua.match(/\\(([^)]*Android[^)]*)\\)/);\n if (androidModelMatch && androidModelMatch[1]) {\n model = androidModelMatch[1];\n }\n }\n if (/iPad|iPhone|iPod/.test(ua)) {\n os = \"iOS\";\n deviceType = \"mobile\";\n brand = \"Apple\";\n if (navigator.maxTouchPoints > 1 && /iPad/.test(ua)) {\n deviceType = \"tablet\";\n }\n }\n if (!isAndroid && !isSmartTV && !/Mobile/.test(ua)) {\n if (ua.includes(\"Windows\")) {\n os = \"Windows\";\n deviceType = \"desktop\";\n } else if (ua.includes(\"Mac\") && !/iPhone/.test(ua)) {\n os = \"macOS\";\n deviceType = \"desktop\";\n if (maxTouchPoints > 1) deviceType = \"tablet\";\n } else if (ua.includes(\"Linux\")) {\n os = \"Linux\";\n deviceType = \"desktop\";\n }\n }\n if (brand === \"Unknown\") {\n if (vendor.includes(\"Google\") || ua.includes(\"Chrome\")) brand = \"Google\";\n if (vendor.includes(\"Apple\")) brand = \"Apple\";\n if (vendor.includes(\"Samsung\") || ua.includes(\"SM-\")) brand = \"Samsung\";\n }\n isWebView = /wv|WebView|Linux; U;/.test(ua);\n if (window?.outerHeight === 0 && window?.outerWidth === 0) {\n isWebView = true;\n }\n isWebApp = window.matchMedia(\"(display-mode: standalone)\").matches || window.navigator.standalone === true || window.screen?.orientation?.angle !== void 0;\n return {\n brand,\n os,\n model: model || ua.substring(0, 50) + \"...\",\n deviceType,\n isSmartTV,\n isAndroid,\n isWebView,\n isWebApp,\n domain: window.location.hostname,\n origin: window.location.origin,\n path: window.location.pathname,\n userAgent: ua,\n vendor,\n platform,\n screen: screenInfo,\n hardwareConcurrency,\n deviceMemory: memory,\n maxTouchPoints,\n language: navigator.language,\n languages: navigator.languages?.join(\",\") || \"\",\n cookieEnabled: navigator.cookieEnabled,\n doNotTrack: navigator.doNotTrack || \"\",\n referrer: document.referrer,\n visibilityState: document.visibilityState\n };\n}\nasync function sha256Hex(input) {\n if (typeof crypto !== \"undefined\" && crypto.subtle?.digest) {\n try {\n await crypto.subtle.digest(\"SHA-256\", new Uint8Array([1, 2, 3]));\n let encodedData;\n if (typeof TextEncoder !== \"undefined\") {\n encodedData = new TextEncoder().encode(input);\n } else {\n const utf8 = unescape(encodeURIComponent(input));\n const buffer = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n buffer[i] = utf8.charCodeAt(i);\n }\n encodedData = buffer;\n }\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", encodedData);\n return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n } catch {\n console.warn(\n \"[StormcloudVideoPlayer] crypto.subtle not supported, using fallback hash\"\n );\n }\n }\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const fallbackHash = Math.abs(hash).toString(16).padStart(8, \"0\");\n const timestamp = Date.now().toString(16).padStart(12, \"0\");\n const random = Math.random().toString(16).substring(2, 14).padStart(12, \"0\");\n return (fallbackHash + timestamp + random).padEnd(64, \"0\");\n}\nfunction resolvePlayerIdentitySeed(clientInfo) {\n const nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);\n if (nativeDeviceId) {\n return `device:${nativeDeviceId}`;\n }\n const persistedId = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (persistedId) {\n return `persisted:${persistedId}`;\n }\n return `fingerprint:${JSON.stringify(clientInfo)}`;\n}\nasync function getBrowserID(clientInfo) {\n if (cachedBrowserId) {\n return cachedBrowserId;\n }\n cachedBrowserId = await sha256Hex(resolvePlayerIdentitySeed(clientInfo));\n return cachedBrowserId;\n}\nfunction canPublish(licenseKey) {\n return Boolean(isTrackingIngestEnabled() && licenseKey);\n}\nasync function buildPlayerMetricEvent(context = {}, flags = {}) {\n const clientInfo = getClientInfo();\n const debugAdTiming = !!context.debugAdTiming;\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] clientInfo: \", JSON.stringify(clientInfo, null, 2));\n }\n const playerId = await getBrowserID(clientInfo);\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] playerId: \", playerId);\n }\n const captureAt = flags.captureAt ?? (/* @__PURE__ */ new Date()).toISOString();\n return {\n player_id: playerId,\n device_type: clientInfo.deviceType,\n os: clientInfo.os.toLowerCase(),\n ad_loaded: flags.adLoaded ?? false,\n ad_detect: flags.adDetect ?? false,\n capture_at: captureAt,\n ...context.inputStreamType ? { input_stream_type: context.inputStreamType } : {}\n };\n}\nasync function sendInitialTracking(licenseKey, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n adLoaded: false,\n adDetect: false\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending initial tracking data:\",\n error\n );\n }\n}\nasync function sendAdDetectTracking(licenseKey, adDetectInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adDetect: true,\n captureAt: adDetectInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad detect tracking:\",\n error\n );\n }\n}\nasync function sendAdLoadedTracking(licenseKey, adLoadedInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adLoaded: true,\n captureAt: adLoadedInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad loaded tracking:\",\n error\n );\n }\n}\nasync function sendAdImpressionTracking(licenseKey, adImpressionInfo, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n captureAt: adImpressionInfo.timestamp\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n await ingestPlayerTracking(licenseKey, \"impressions\", {\n events: [\n {\n player_id: metricEvent.player_id,\n ad_played_count: 1,\n ad_url: adImpressionInfo.adUrl,\n capture_at: adImpressionInfo.timestamp\n }\n ]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad impression tracking:\",\n error\n );\n }\n}\nasync function sendHeartbeat(licenseKey, context = {}, flags = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const heartbeatData = await buildPlayerMetricEvent(context, flags);\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [heartbeatData]\n });\n } catch (error) {\n console.error(\"[StormcloudVideoPlayer] Error sending heartbeat:\", error);\n }\n}\n\n// src/utils/polyfills.ts\nfunction polyfillURLSearchParams() {\n if (typeof URLSearchParams !== \"undefined\") {\n return;\n }\n class URLSearchParamsPolyfill {\n constructor(init) {\n this.params = /* @__PURE__ */ new Map();\n if (typeof init === \"string\") {\n this.parseQueryString(init);\n } else if (init instanceof URLSearchParamsPolyfill) {\n init.forEach((value, key) => {\n this.append(key, value);\n });\n }\n }\n parseQueryString(query) {\n const cleanQuery = query.startsWith(\"?\") ? query.slice(1) : query;\n if (!cleanQuery) return;\n cleanQuery.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n const decodedKey = this.safeDecodeURIComponent(key);\n const decodedValue = value ? this.safeDecodeURIComponent(value) : \"\";\n this.append(decodedKey, decodedValue);\n }\n });\n }\n safeDecodeURIComponent(str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, \" \"));\n } catch (e) {\n return str;\n }\n }\n append(name, value) {\n const values = this.params.get(name) || [];\n values.push(String(value));\n this.params.set(name, values);\n }\n delete(name) {\n this.params.delete(name);\n }\n get(name) {\n const values = this.params.get(name);\n return values && values.length > 0 && values[0] !== void 0 ? values[0] : null;\n }\n getAll(name) {\n return this.params.get(name) || [];\n }\n has(name) {\n return this.params.has(name);\n }\n set(name, value) {\n this.params.set(name, [String(value)]);\n }\n forEach(callback) {\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n callback(value, key, this);\n });\n });\n }\n toString() {\n const parts = [];\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n });\n });\n return parts.join(\"&\");\n }\n }\n window.URLSearchParams = URLSearchParamsPolyfill;\n}\nfunction polyfillTextEncoder() {\n if (typeof TextEncoder !== \"undefined\") {\n return;\n }\n class TextEncoderPolyfill {\n constructor() {\n this.encoding = \"utf-8\";\n }\n encode(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 128) {\n utf8.push(charcode);\n } else if (charcode < 2048) {\n utf8.push(192 | charcode >> 6, 128 | charcode & 63);\n } else if (charcode < 55296 || charcode >= 57344) {\n utf8.push(\n 224 | charcode >> 12,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n } else {\n i++;\n charcode = 65536 + ((charcode & 1023) << 10 | str.charCodeAt(i) & 1023);\n utf8.push(\n 240 | charcode >> 18,\n 128 | charcode >> 12 & 63,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n }\n }\n return new Uint8Array(utf8);\n }\n }\n window.TextEncoder = TextEncoderPolyfill;\n}\nfunction polyfillPromiseFinally() {\n if (typeof Promise !== \"undefined\" && !Promise.prototype.finally) {\n Promise.prototype.finally = function(callback) {\n const constructor = this.constructor;\n return this.then(\n (value) => constructor.resolve(callback()).then(() => value),\n (reason) => constructor.resolve(callback()).then(() => {\n throw reason;\n })\n );\n };\n }\n}\nfunction polyfillObjectAssign() {\n if (typeof Object.assign !== \"function\") {\n Object.assign = function(target, ...sources) {\n if (target == null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n const to = Object(target);\n for (let i = 0; i < sources.length; i++) {\n const nextSource = sources[i];\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}\nfunction polyfillArrayFrom() {\n if (!Array.from) {\n Array.from = function(arrayLike, mapFn, thisArg) {\n const items = Object(arrayLike);\n if (arrayLike == null) {\n throw new TypeError(\"Array.from requires an array-like object\");\n }\n const len = items.length >>> 0;\n const result = new Array(len);\n for (let i = 0; i < len; i++) {\n if (mapFn) {\n result[i] = mapFn.call(thisArg, items[i], i);\n } else {\n result[i] = items[i];\n }\n }\n return result;\n };\n }\n}\nfunction polyfillStringStartsWith() {\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function(search, pos) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n };\n }\n}\nfunction polyfillStringEndsWith() {\n if (!String.prototype.endsWith) {\n String.prototype.endsWith = function(search, length) {\n if (length === void 0 || length > this.length) {\n length = this.length;\n }\n return this.substring(length - search.length, length) === search;\n };\n }\n}\nfunction polyfillStringIncludes() {\n if (!String.prototype.includes) {\n String.prototype.includes = function(search, start) {\n if (typeof start !== \"number\") {\n start = 0;\n }\n if (start + search.length > this.length) {\n return false;\n }\n return this.indexOf(search, start) !== -1;\n };\n }\n}\nfunction initializePolyfills() {\n polyfillObjectAssign();\n polyfillArrayFrom();\n polyfillStringStartsWith();\n polyfillStringEndsWith();\n polyfillStringIncludes();\n polyfillURLSearchParams();\n polyfillTextEncoder();\n polyfillPromiseFinally();\n}\n\n// src/utils/vastMacros.ts\nvar UNEXPANDED_MACRO_PATTERN = /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/;\nvar INVALID_VAST_PARAM_KEY = /^\\s|\\s$/;\nvar EXAMPLE_COM_URL = /example\\.com/i;\nvar CTV_UNSUPPORTED_PARAMS = [\n \"tfcd\",\n \"npa\",\n \"min_ad_duration\",\n \"max_ad_duration\",\n \"unviewed_position_start\",\n \"impl\",\n \"vad_type\",\n \"gdpr\",\n \"gdpr_consent\",\n \"us_privacy\"\n];\nvar INLINE_DEVICE_MACRO_REPLACEMENTS = [\n { pattern: /\\[RDID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IFA\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[ADVERTISING[_-]?ID(?:ENTIFIER)?\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[DEVICE[_-]?ID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IDTYPE\\]/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /\\{rdid\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{device[_-]?id\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{idtype\\}/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_IDENTIFIER_PLAIN%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%ADVERTISING_ID_OPT_OUT%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%ADVERTISING_ID_TYPE%%/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_ID%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%LIMIT_AD_TRACKING%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%SESSION_ID%%/gi, getValue: (ctx) => ctx.sessionId },\n { pattern: /%%CORRELATOR%%/gi, getValue: (ctx) => ctx.correlator }\n];\nfunction isMacroPlaceholder2(value) {\n if (value == null) return true;\n const trimmed = value.trim();\n if (!trimmed) return true;\n if (UNEXPANDED_MACRO_PATTERN.test(trimmed)) return true;\n return /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(trimmed);\n}\nfunction generateCorrelator() {\n if (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\n try {\n const buf = new Uint32Array(2);\n crypto.getRandomValues(buf);\n const value = (buf[0] ?? 0) * 2097152 + ((buf[1] ?? 0) & 2097151);\n if (value > 0) {\n return String(value);\n }\n } catch {\n }\n }\n return String(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1);\n}\nfunction expandInlineMacroPlaceholders(baseUrl, ctx) {\n let url = baseUrl;\n for (const { pattern, getValue } of INLINE_DEVICE_MACRO_REPLACEMENTS) {\n const value = getValue(ctx);\n if (value != null && value !== \"\") {\n url = url.replace(pattern, encodeURIComponent(value));\n }\n }\n return url;\n}\nfunction applyDeviceIdentityParams(params, ctx) {\n const runtimeId = ctx.deviceId?.trim();\n const runtimeType = ctx.deviceIdType?.trim() || inferDeviceIdType();\n const tagRdid = params.get(\"rdid\");\n const tagType = params.get(\"idtype\");\n const tagLat = params.get(\"is_lat\");\n const latValue = ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0;\n if (runtimeId) {\n params.set(\"rdid\", runtimeId);\n params.set(\"idtype\", runtimeType || tagType || \"aaid\");\n params.set(\"is_lat\", latValue ?? (isMacroPlaceholder2(tagLat) ? \"0\" : tagLat));\n return;\n }\n if (!ctx.isCtv) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n const tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));\n const tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));\n if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n if (tagRdidValid) {\n if (isMacroPlaceholder2(tagType) && runtimeType) {\n params.set(\"idtype\", runtimeType);\n }\n if (isMacroPlaceholder2(tagLat)) {\n params.set(\"is_lat\", latValue ?? \"0\");\n }\n return;\n }\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n}\nfunction removeBrokenAppNameOrphans(params, appName) {\n const toDelete = [];\n params.forEach((_value, key) => {\n if (!key || INVALID_VAST_PARAM_KEY.test(key)) {\n toDelete.push(key);\n }\n });\n if (appName && appName.includes(\"&\")) {\n for (const suffix of appName.split(\"&\").slice(1)) {\n const trimmed = suffix.replace(/^\\s+/, \"\");\n if (!trimmed) continue;\n toDelete.push(suffix, ` ${trimmed}`, trimmed);\n }\n }\n for (const key of new Set(toDelete)) {\n if (key) params.delete(key);\n }\n}\nfunction normalizeVastTagUrl(raw) {\n if (!raw) return raw;\n try {\n const url = new URL(raw);\n const anValue = url.searchParams.get(\"an\");\n if (anValue !== null) {\n const orphanFragments = [];\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n orphanFragments.push(key.trim());\n }\n });\n if (orphanFragments.length > 0) {\n const reconstructed = [anValue.replace(/\\s+$/, \"\"), ...orphanFragments].filter(Boolean).join(\" & \");\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n url.searchParams.delete(key);\n }\n });\n url.searchParams.set(\"an\", reconstructed);\n return url.toString().replace(\n /([?&]an=)([^&]*)/,\n (_match, prefix, val) => prefix + val.replace(/\\+/g, \"%20\")\n );\n }\n }\n removeBrokenAppNameOrphans(url.searchParams);\n return url.toString();\n } catch {\n return raw;\n }\n}\nfunction applyVastMacros(baseUrl, ctx) {\n const expandedUrl = expandInlineMacroPlaceholders(baseUrl, ctx);\n let url;\n try {\n url = new URL(normalizeVastTagUrl(expandedUrl));\n } catch {\n return replaceCorrelatorFallback(expandedUrl, ctx.correlator);\n }\n const params = url.searchParams;\n removeBrokenAppNameOrphans(params);\n params.set(\"correlator\", ctx.correlator);\n params.set(\"scor\", ctx.streamCorrelator);\n if (ctx.isCtv) {\n for (const key of CTV_UNSUPPORTED_PARAMS) {\n params.delete(key);\n }\n }\n if (ctx.pod != null) {\n params.set(\"pod\", String(ctx.pod));\n }\n params.delete(\"ppos\");\n params.delete(\"lip\");\n if (ctx.podMinDurationMs != null) {\n params.set(\"pmnd\", String(Math.max(0, Math.round(ctx.podMinDurationMs))));\n }\n if (ctx.podMaxDurationMs != null) {\n params.set(\"pmxd\", String(Math.max(0, Math.round(ctx.podMaxDurationMs))));\n }\n if (ctx.podMaxAds != null) {\n params.set(\"pmad\", String(Math.max(1, Math.round(ctx.podMaxAds))));\n }\n const existingUrl = params.get(\"url\") || \"\";\n if (EXAMPLE_COM_URL.test(existingUrl)) {\n params.delete(\"url\");\n params.delete(\"description_url\");\n }\n if (!ctx.isCtv && ctx.pageUrl) {\n if (isMacroPlaceholder2(params.get(\"url\"))) {\n params.set(\"url\", ctx.pageUrl);\n }\n if (isMacroPlaceholder2(params.get(\"description_url\"))) {\n params.set(\"description_url\", params.get(\"url\") || ctx.pageUrl);\n }\n }\n if (!ctx.isCtv) {\n params.delete(\"an\");\n params.delete(\"msid\");\n params.delete(\"sid\");\n }\n if (ctx.adWillPlayMuted != null) {\n params.set(\"vpmute\", ctx.adWillPlayMuted ? \"1\" : \"0\");\n }\n if (ctx.adWillAutoPlay != null) {\n params.set(\"vpa\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n if (ctx.sessionId) {\n params.set(\"sid\", ctx.sessionId);\n }\n if (ctx.deviceTypeHint != null) {\n params.set(\"dth\", String(ctx.deviceTypeHint));\n } else if (ctx.isCtv) {\n params.set(\"dth\", \"5\");\n }\n applyDeviceIdentityParams(params, ctx);\n if (!ctx.isCtv) {\n const consent = ctx.consent;\n if (consent?.gdpr != null) {\n params.set(\"gdpr\", consent.gdpr);\n }\n if (consent?.gdprConsent != null) {\n params.set(\"gdpr_consent\", consent.gdprConsent);\n }\n if (consent?.usPrivacy != null) {\n params.set(\"us_privacy\", consent.usPrivacy);\n }\n }\n if (ctx.adTest) {\n params.set(\"adtest\", \"on\");\n }\n if (ctx.programTitle) {\n params.set(\"ct_ti\", ctx.programTitle);\n }\n if (ctx.channelName) {\n params.set(\"ct_ch\", ctx.channelName);\n }\n const staleKeys = [];\n params.forEach((value, key) => {\n if (isMacroPlaceholder2(value)) {\n staleKeys.push(key);\n }\n });\n for (const key of staleKeys) {\n params.delete(key);\n }\n removeBrokenAppNameOrphans(params);\n return url.toString();\n}\nfunction replaceCorrelatorFallback(baseUrl, correlator) {\n const correlatorRegex = /([?&])correlator=([^&]*)/;\n if (correlatorRegex.test(baseUrl)) {\n return baseUrl.replace(correlatorRegex, `$1correlator=${correlator}`);\n }\n const sep = baseUrl.includes(\"?\") ? \"&\" : \"?\";\n return `${baseUrl}${sep}correlator=${correlator}`;\n}\nfunction fetchConsentSignals(timeoutMs = 1500) {\n const signals = {};\n if (typeof window === \"undefined\") {\n return Promise.resolve(signals);\n }\n const tasks = [];\n const tcfApi = window.__tcfapi;\n if (typeof tcfApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n let settled = false;\n try {\n tcfApi(\"addEventListener\", 2, (tcData, success) => {\n if (settled) return;\n if (success && tcData && (tcData.eventStatus === \"tcloaded\" || tcData.eventStatus === \"useractioncomplete\")) {\n settled = true;\n signals.gdpr = tcData.gdprApplies ? \"1\" : \"0\";\n signals.storageAllowed = tcData.gdprApplies ? tcData.purpose?.consents?.[1] === true : true;\n if (typeof tcData.tcString === \"string\" && tcData.tcString) {\n signals.gdprConsent = tcData.tcString;\n }\n try {\n tcfApi(\"removeEventListener\", 2, () => {\n }, tcData.listenerId);\n } catch {\n }\n resolve();\n }\n });\n } catch {\n resolve();\n }\n setTimeout(() => {\n if (!settled) {\n settled = true;\n resolve();\n }\n }, timeoutMs);\n })\n );\n }\n const uspApi = window.__uspapi;\n if (typeof uspApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n try {\n uspApi(\"getUSPData\", 1, (data, success) => {\n if (success && typeof data?.uspString === \"string\" && data.uspString) {\n signals.usPrivacy = data.uspString;\n }\n resolve();\n });\n } catch {\n resolve();\n }\n setTimeout(resolve, timeoutMs);\n })\n );\n }\n if (tasks.length === 0) {\n return Promise.resolve(signals);\n }\n return Promise.all(tasks).then(() => signals);\n}\n\n// src/player/Scte35Parser.ts\nfunction parseCueOutDuration(value) {\n const num = parseFloat(value.trim());\n if (!Number.isNaN(num)) return num;\n const match = value.match(/(?:^|[,\\s])DURATION\\s*=\\s*([0-9.]+)/i) || value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (match && match[1] != null) {\n const dStr = match[1];\n const d = parseFloat(dStr);\n return Number.isNaN(d) ? void 0 : d;\n }\n return void 0;\n}\nfunction parseCueOutCont(value) {\n const res = {};\n const elapsedMatch = value.match(/Elapsed\\s*=\\s*([0-9.]+)/i);\n const durationMatch = value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (elapsedMatch && elapsedMatch[1] != null) {\n const e = parseFloat(elapsedMatch[1]);\n if (!Number.isNaN(e)) res.elapsed = e;\n }\n if (durationMatch && durationMatch[1] != null) {\n const d = parseFloat(durationMatch[1]);\n if (!Number.isNaN(d)) res.duration = d;\n }\n if (!(\"elapsed\" in res) || !(\"duration\" in res)) {\n const slashMatch = value.match(/([0-9.]+)\\s*\\/\\s*([0-9.]+)/);\n if (slashMatch && slashMatch[1] && slashMatch[2]) {\n const elapsed = parseFloat(slashMatch[1]);\n const duration = parseFloat(slashMatch[2]);\n if (!Number.isNaN(elapsed) && !(\"elapsed\" in res)) res.elapsed = elapsed;\n if (!Number.isNaN(duration) && !(\"duration\" in res)) res.duration = duration;\n }\n }\n if (\"elapsed\" in res || \"duration\" in res) return res;\n return void 0;\n}\nfunction parseAttributeList(value) {\n const attrs = {};\n const regex = /([A-Z0-9-]+)=((\"[^\"]*\")|([^\",]*))(?:,|$)/gi;\n let match;\n while ((match = regex.exec(value)) !== null) {\n const key = match[1] ?? \"\";\n let rawVal = match[3] ?? match[4] ?? \"\";\n if (rawVal.startsWith('\"') && rawVal.endsWith('\"')) {\n rawVal = rawVal.slice(1, -1);\n }\n if (key) {\n attrs[key] = rawVal;\n }\n }\n return attrs;\n}\nfunction toNumber(val) {\n if (val == null) return void 0;\n const n = typeof val === \"string\" ? parseFloat(val) : Number(val);\n return Number.isNaN(n) ? void 0 : n;\n}\nfunction isManifestBasedMarker(marker) {\n const raw = marker.raw;\n if (!raw) return false;\n if (raw.tag) {\n const tag = String(raw.tag);\n return tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-CUE-IN\") || tag.includes(\"EXT-X-DATERANGE\");\n }\n if (raw.id3) return false;\n if (raw.splice_command_type) return false;\n return false;\n}\nfunction decodeId3ValueToText(value) {\n try {\n if (typeof value === \"string\") return value;\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n const text = decoder.decode(value);\n if (text && /[\\x20-\\x7E]/.test(text)) return text;\n let out = \"\";\n for (let i = 0; i < value.length; i++)\n out += String.fromCharCode(value[i]);\n return out;\n } catch {\n return void 0;\n }\n}\nfunction getFragmentStartSeconds(frag) {\n const candidates = [frag?.start, frag?.startPTS];\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return void 0;\n}\nfunction parseScte35FromId3(tag) {\n const text = decodeId3ValueToText(tag.value);\n if (!text) return void 0;\n const cueOutMatch = text.match(/EXT-X-CUE-OUT(?::([^\\r\\n]*))?/i) || text.match(/CUE-OUT(?::([^\\r\\n]*))?/i);\n if (cueOutMatch) {\n const arg = (cueOutMatch[1] ?? \"\").trim();\n const dur = parseCueOutDuration(arg);\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...dur !== void 0 ? { durationSeconds: dur } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueOutContMatch = text.match(/EXT-X-CUE-OUT-CONT:([^\\r\\n]*)/i);\n if (cueOutContMatch) {\n const arg = (cueOutContMatch[1] ?? \"\").trim();\n const cont = parseCueOutCont(arg);\n const marker = {\n type: \"progress\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...cont?.duration !== void 0 ? { durationSeconds: cont.duration } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueInMatch = text.match(/EXT-X-CUE-IN\\b/i) || text.match(/CUE-IN\\b/i);\n if (cueInMatch) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const daterangeMatch = text.match(/EXT-X-DATERANGE:([^\\r\\n]*)/i);\n if (daterangeMatch) {\n const attrs = parseAttributeList(daterangeMatch[1] ?? \"\");\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n if (hasScteIn) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n }\n if (/SCTE35-OUT/i.test(text)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (/SCTE35-IN/i.test(text)) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (tag.value instanceof Uint8Array) {\n const bin = parseScte35Binary(tag.value);\n if (bin) return bin;\n }\n return void 0;\n}\nfunction normalizeFragmentPayload(payload) {\n if (payload instanceof Uint8Array) {\n return payload;\n }\n if (payload instanceof ArrayBuffer) {\n return new Uint8Array(payload);\n }\n if (ArrayBuffer.isView(payload)) {\n const view = payload;\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n }\n return void 0;\n}\nfunction detectTsPacketFormat(data) {\n const packetSizes = [188, 192, 204];\n for (const packetSize of packetSizes) {\n const tsPayloadOffset = packetSize === 192 ? 4 : 0;\n for (let offset = 0; offset < packetSize; offset++) {\n let matchedPackets = 0;\n for (let packetStart = offset; packetStart + tsPayloadOffset < data.length && matchedPackets < 5; packetStart += packetSize) {\n if (data[packetStart + tsPayloadOffset] !== 71) {\n break;\n }\n matchedPackets++;\n }\n if (matchedPackets >= 2) {\n return { offset, packetSize, tsPayloadOffset };\n }\n }\n }\n return void 0;\n}\nfunction getPsiSectionStart(payload, payloadUnitStart) {\n if (!payloadUnitStart) {\n return void 0;\n }\n const pointerField = payload[0];\n if (pointerField == null) {\n return void 0;\n }\n const sectionStart = 1 + pointerField;\n return sectionStart < payload.length ? sectionStart : void 0;\n}\nfunction getPsiSectionLength(data, offset) {\n return ((data[offset + 1] ?? 0) & 15) << 8 | (data[offset + 2] ?? 0);\n}\nfunction parsePatSection(payload, payloadUnitStart, pmtPids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 8 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 0) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n for (let offset = sectionStart + 8; offset + 4 <= sectionEnd - 4; offset += 4) {\n const programNumber = (payload[offset] ?? 0) << 8 | (payload[offset + 1] ?? 0);\n const pid = ((payload[offset + 2] ?? 0) & 31) << 8 | (payload[offset + 3] ?? 0);\n if (programNumber !== 0) {\n pmtPids.add(pid);\n }\n }\n}\nfunction descriptorsIdentifyScte35(data, start, end) {\n let offset = start;\n while (offset + 2 <= end) {\n const tag = data[offset] ?? 0;\n const length = data[offset + 1] ?? 0;\n const descriptorStart = offset + 2;\n const descriptorEnd = descriptorStart + length;\n if (descriptorEnd > end) {\n return false;\n }\n const registration = length >= 4 ? String.fromCharCode(\n data[descriptorStart] ?? 0,\n data[descriptorStart + 1] ?? 0,\n data[descriptorStart + 2] ?? 0,\n data[descriptorStart + 3] ?? 0\n ) : \"\";\n if (tag === 138 || registration === \"CUEI\" || registration === \"SCTE\") {\n return true;\n }\n offset = descriptorEnd;\n }\n return false;\n}\nfunction parsePmtSection(payload, payloadUnitStart, tsScte35Pids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 12 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 2) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n const programInfoLength = ((payload[sectionStart + 10] ?? 0) & 15) << 8 | (payload[sectionStart + 11] ?? 0);\n let offset = sectionStart + 12 + programInfoLength;\n while (offset + 5 <= sectionEnd - 4) {\n const streamType = payload[offset] ?? 0;\n const elementaryPid = ((payload[offset + 1] ?? 0) & 31) << 8 | (payload[offset + 2] ?? 0);\n const esInfoLength = ((payload[offset + 3] ?? 0) & 15) << 8 | (payload[offset + 4] ?? 0);\n const descriptorStart = offset + 5;\n const descriptorEnd = Math.min(descriptorStart + esInfoLength, sectionEnd - 4);\n if (streamType === 134 || streamType === 6 && descriptorsIdentifyScte35(payload, descriptorStart, descriptorEnd)) {\n tsScte35Pids.add(elementaryPid);\n }\n offset = descriptorStart + esInfoLength;\n }\n}\nfunction hasProcessedTsScte35Section(section, processedSections) {\n let checksum = 0;\n for (let i = 0; i < section.length; i++) {\n checksum = checksum * 31 + (section[i] ?? 0) >>> 0;\n }\n const key = `${section.length}:${checksum}`;\n if (processedSections.has(key)) {\n return true;\n }\n processedSections.add(key);\n if (processedSections.size > 200) {\n const firstKey = processedSections.values().next().value;\n if (firstKey) {\n processedSections.delete(firstKey);\n }\n }\n return false;\n}\nfunction addScte35SectionMarker(section, markers, processedSections) {\n if (section[0] !== 252 || hasProcessedTsScte35Section(section, processedSections)) {\n return;\n }\n const marker = parseScte35Binary(section);\n if (!marker) {\n return;\n }\n marker.raw = {\n ...typeof marker.raw === \"object\" && marker.raw ? marker.raw : {},\n source: \"ts-packet\"\n };\n markers.push(marker);\n}\nfunction appendScte35Bytes(pid, bytes, assemblers, markers, processedSections) {\n const assembler = assemblers.get(pid);\n if (!assembler) {\n return;\n }\n for (let i = 0; i < bytes.length && assembler.bytes.length < assembler.expectedLength; i++) {\n assembler.bytes.push(bytes[i] ?? 0);\n }\n if (assembler.bytes.length >= assembler.expectedLength) {\n assemblers.delete(pid);\n addScte35SectionMarker(new Uint8Array(assembler.bytes), markers, processedSections);\n }\n}\nfunction collectScte35SectionsFromPayload(pid, payload, payloadUnitStart, assemblers, markers, processedSections) {\n if (payload.length === 0) {\n return;\n }\n let offset = 0;\n if (payloadUnitStart) {\n const pointerField = payload[0] ?? 0;\n const previousAssembler = assemblers.get(pid);\n if (previousAssembler && pointerField > 0) {\n appendScte35Bytes(\n pid,\n payload.subarray(1, Math.min(1 + pointerField, payload.length)),\n assemblers,\n markers,\n processedSections\n );\n }\n assemblers.delete(pid);\n offset = 1 + pointerField;\n } else {\n appendScte35Bytes(pid, payload, assemblers, markers, processedSections);\n return;\n }\n while (offset + 3 <= payload.length) {\n const tableId = payload[offset];\n if (tableId == null || tableId === 255) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, offset);\n const totalLength = 3 + sectionLength;\n if (sectionLength <= 0 || totalLength <= 3) {\n return;\n }\n if (offset + totalLength <= payload.length) {\n addScte35SectionMarker(\n payload.subarray(offset, offset + totalLength),\n markers,\n processedSections\n );\n offset += totalLength;\n } else {\n assemblers.set(pid, {\n bytes: Array.from(payload.subarray(offset)),\n expectedLength: totalLength\n });\n return;\n }\n }\n}\nfunction parseScte35FromTsPackets(data, tsScte35Pids, pmtPids, processedSections) {\n const packetInfo = detectTsPacketFormat(data);\n if (!packetInfo) {\n return [];\n }\n const markers = [];\n const sectionAssemblers = /* @__PURE__ */ new Map();\n for (let packetStart = packetInfo.offset; packetStart + packetInfo.packetSize <= data.length; packetStart += packetInfo.packetSize) {\n const tsStart = packetStart + packetInfo.tsPayloadOffset;\n if (data[tsStart] !== 71) {\n continue;\n }\n const secondByte = data[tsStart + 1];\n const thirdByte = data[tsStart + 2];\n const fourthByte = data[tsStart + 3];\n if (secondByte == null || thirdByte == null || fourthByte == null || (secondByte & 128) !== 0) {\n continue;\n }\n const payloadUnitStart = (secondByte & 64) !== 0;\n const pid = (secondByte & 31) << 8 | thirdByte;\n const adaptationFieldControl = fourthByte >> 4 & 3;\n const hasPayload = adaptationFieldControl === 1 || adaptationFieldControl === 3;\n if (!hasPayload) {\n continue;\n }\n let payloadStart = tsStart + 4;\n if (adaptationFieldControl === 3) {\n const adaptationLength = data[payloadStart];\n if (adaptationLength == null) {\n continue;\n }\n payloadStart += 1 + adaptationLength;\n }\n const payloadEnd = Math.min(tsStart + 188, data.length);\n if (payloadStart >= payloadEnd || payloadStart >= data.length) {\n continue;\n }\n const payload = data.subarray(payloadStart, payloadEnd);\n if (pid === 0) {\n parsePatSection(payload, payloadUnitStart, pmtPids);\n } else if (pmtPids.has(pid)) {\n parsePmtSection(payload, payloadUnitStart, tsScte35Pids);\n } else if (tsScte35Pids.has(pid)) {\n collectScte35SectionsFromPayload(\n pid,\n payload,\n payloadUnitStart,\n sectionAssemblers,\n markers,\n processedSections\n );\n }\n }\n return markers;\n}\nvar BitReader = class {\n constructor(buf) {\n this.buf = buf;\n this.bytePos = 0;\n this.bitPos = 0;\n }\n readBits(numBits) {\n let result = 0;\n while (numBits > 0) {\n if (this.bytePos >= this.buf.length) return result;\n const remainingInByte = 8 - this.bitPos;\n const toRead = Math.min(numBits, remainingInByte);\n const currentByte = this.buf[this.bytePos];\n const shift = remainingInByte - toRead;\n const mask = (1 << toRead) - 1 & 255;\n const bits = currentByte >> shift & mask;\n result = result << toRead | bits;\n this.bitPos += toRead;\n if (this.bitPos >= 8) {\n this.bitPos = 0;\n this.bytePos += 1;\n }\n numBits -= toRead;\n }\n return result >>> 0;\n }\n skipBits(n) {\n this.readBits(n);\n }\n get bytePosition() {\n return this.bitPos === 0 ? this.bytePos : this.bytePos + 1;\n }\n};\nfunction readSpliceTime(r, ptsAdjustmentTicks) {\n const timeSpecifiedFlag = r.readBits(1) === 1;\n if (!timeSpecifiedFlag) {\n r.readBits(7);\n return void 0;\n }\n r.readBits(6);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const ptsTicks = (high * 4294967296 + low + ptsAdjustmentTicks) % 8589934592;\n return ptsTicks / 9e4;\n}\nfunction markerTypeFromSegmentationTypeId(segmentationTypeId) {\n switch (segmentationTypeId) {\n case 16:\n case 34:\n case 48:\n case 50:\n case 52:\n case 54:\n return \"start\";\n case 17:\n case 35:\n case 49:\n case 51:\n case 53:\n case 55:\n return \"end\";\n default:\n return void 0;\n }\n}\nfunction parseScte35SegmentationDescriptor(descriptor) {\n if (descriptor.length < 11) {\n return void 0;\n }\n const identifier = String.fromCharCode(\n descriptor[0] ?? 0,\n descriptor[1] ?? 0,\n descriptor[2] ?? 0,\n descriptor[3] ?? 0\n );\n if (identifier !== \"CUEI\") {\n return void 0;\n }\n const segmentationEventId = (descriptor[4] ?? 0) * 16777216 + ((descriptor[5] ?? 0) << 16) + ((descriptor[6] ?? 0) << 8) + (descriptor[7] ?? 0);\n const cancelIndicator = ((descriptor[8] ?? 0) & 128) !== 0;\n if (cancelIndicator) {\n return void 0;\n }\n const flags = descriptor[9] ?? 0;\n const programSegmentationFlag = (flags & 128) !== 0;\n const segmentationDurationFlag = (flags & 64) !== 0;\n let offset = 10;\n if (!programSegmentationFlag) {\n const componentCount = descriptor[offset] ?? 0;\n offset += 1 + componentCount * 6;\n if (offset > descriptor.length) {\n return void 0;\n }\n }\n let durationSeconds = void 0;\n if (segmentationDurationFlag) {\n if (offset + 5 > descriptor.length) {\n return void 0;\n }\n const durationTicks = (descriptor[offset] ?? 0) * 4294967296 + (descriptor[offset + 1] ?? 0) * 16777216 + ((descriptor[offset + 2] ?? 0) << 16) + ((descriptor[offset + 3] ?? 0) << 8) + (descriptor[offset + 4] ?? 0);\n durationSeconds = durationTicks / 9e4;\n offset += 5;\n }\n if (offset + 2 > descriptor.length) {\n return void 0;\n }\n offset += 1;\n const segmentationUpidLength = descriptor[offset] ?? 0;\n offset += 1 + segmentationUpidLength;\n if (offset >= descriptor.length) {\n return void 0;\n }\n const segmentationTypeId = descriptor[offset] ?? 0;\n const markerType = markerTypeFromSegmentationTypeId(segmentationTypeId);\n if (!markerType) {\n return void 0;\n }\n return {\n type: markerType,\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n segmentationEventId\n };\n}\nfunction parseScte35SegmentationDescriptors(data, offset) {\n if (offset + 2 > data.length) {\n return void 0;\n }\n const descriptorLoopLength = (data[offset] ?? 0) << 8 | (data[offset + 1] ?? 0);\n let descriptorOffset = offset + 2;\n const descriptorEnd = Math.min(\n data.length,\n descriptorOffset + descriptorLoopLength\n );\n while (descriptorOffset + 2 <= descriptorEnd) {\n const descriptorTag = data[descriptorOffset] ?? 0;\n const descriptorLength = data[descriptorOffset + 1] ?? 0;\n const descriptorDataStart = descriptorOffset + 2;\n const descriptorDataEnd = descriptorDataStart + descriptorLength;\n if (descriptorDataEnd > descriptorEnd) {\n return void 0;\n }\n if (descriptorTag === 2) {\n const descriptorMarker = parseScte35SegmentationDescriptor(\n data.subarray(descriptorDataStart, descriptorDataEnd)\n );\n if (descriptorMarker) {\n return descriptorMarker;\n }\n }\n descriptorOffset = descriptorDataEnd;\n }\n return void 0;\n}\nfunction parseScte35Binary(data) {\n const r = new BitReader(data);\n const tableId = r.readBits(8);\n if (tableId !== 252) return void 0;\n r.readBits(1);\n r.readBits(1);\n r.readBits(2);\n const sectionLength = r.readBits(12);\n if (sectionLength <= 0 || data.length < 3 + sectionLength) {\n return void 0;\n }\n r.readBits(8);\n r.readBits(1);\n r.readBits(6);\n const ptsAdjHigh = r.readBits(1);\n const ptsAdjLow = r.readBits(32);\n const ptsAdjustmentTicks = ptsAdjHigh * 4294967296 + ptsAdjLow;\n r.readBits(8);\n r.readBits(12);\n const spliceCommandLength = r.readBits(12);\n const spliceCommandType = r.readBits(8);\n let markerType;\n let durationSeconds = void 0;\n let ptsSeconds = void 0;\n let spliceEventId = void 0;\n const commandBodyStart = r.bytePosition;\n if (spliceCommandType === 5) {\n spliceEventId = r.readBits(32);\n const cancel = r.readBits(1) === 1;\n r.readBits(7);\n if (cancel) return void 0;\n const outOfNetwork = r.readBits(1) === 1;\n const programSpliceFlag = r.readBits(1) === 1;\n const durationFlag = r.readBits(1) === 1;\n const spliceImmediateFlag = r.readBits(1) === 1;\n r.readBits(4);\n markerType = outOfNetwork ? \"start\" : \"end\";\n if (programSpliceFlag && !spliceImmediateFlag) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else if (!programSpliceFlag) {\n const componentCount = r.readBits(8);\n for (let i = 0; i < componentCount; i++) {\n r.readBits(8);\n if (!spliceImmediateFlag) {\n const componentPtsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n if (ptsSeconds === void 0) {\n ptsSeconds = componentPtsSeconds;\n }\n }\n }\n }\n if (durationFlag) {\n r.readBits(6);\n r.readBits(1);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const durationTicks = high * 4294967296 + low;\n durationSeconds = durationTicks / 9e4;\n }\n r.readBits(16);\n r.readBits(8);\n r.readBits(8);\n } else if (spliceCommandType === 6) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else {\n return void 0;\n }\n const expectedDescriptorOffset = spliceCommandLength === 4095 ? r.bytePosition : commandBodyStart + spliceCommandLength;\n const descriptorMarker = parseScte35SegmentationDescriptors(\n data,\n expectedDescriptorOffset\n );\n if (descriptorMarker) {\n markerType = descriptorMarker.type;\n if (durationSeconds === void 0) {\n durationSeconds = descriptorMarker.durationSeconds;\n }\n }\n if (!markerType) {\n return void 0;\n }\n const marker = {\n type: markerType,\n ...ptsSeconds !== void 0 ? { ptsSeconds } : {},\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: {\n splice_command_type: spliceCommandType,\n ...spliceEventId !== void 0 ? { splice_event_id: spliceEventId } : {},\n ...descriptorMarker?.segmentationEventId !== void 0 ? { segmentation_event_id: descriptorMarker.segmentationEventId } : {}\n }\n };\n return marker;\n}\n\n// src/player/Scte35CueManager.ts\nvar Scte35CueManager = class {\n constructor(debug, callbacks) {\n this.pendingScte35Cues = /* @__PURE__ */ new Map();\n this.recentScte35CueKeys = /* @__PURE__ */ new Map();\n this.recentScte35CueLimit = 200;\n this.tsScte35Pids = /* @__PURE__ */ new Set();\n this.pmtPids = /* @__PURE__ */ new Set();\n this.processedTsScte35Sections = /* @__PURE__ */ new Set();\n this.debug = debug;\n this.callbacks = callbacks;\n }\n get pendingScte35CueKey() {\n return this.pendingScte35CueKeyValue;\n }\n set pendingScte35CueKey(value) {\n this.pendingScte35CueKeyValue = value;\n }\n get activeScte35BreakKey() {\n return this.activeScte35BreakKeyValue;\n }\n set activeScte35BreakKey(value) {\n this.activeScte35BreakKeyValue = value;\n }\n get scheduledScte35BreakKey() {\n return this.scheduledScte35BreakKeyValue;\n }\n set scheduledScte35BreakKey(value) {\n this.scheduledScte35BreakKeyValue = value;\n }\n createScte35CueContext(source, readiness, frag) {\n const context = { source, readiness };\n if (typeof frag?.sn === \"number\") {\n context.fragmentSn = frag.sn;\n }\n const fragmentStartSec = getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n return context;\n }\n onScte35Cue(marker, context) {\n const cue = this.createScte35Cue(marker, context);\n const pendingKey = this.getPendingScte35CueKey(cue);\n if (context.readiness === \"early\") {\n this.pendingScte35Cues.set(pendingKey, cue);\n this.trimRecentScte35CueMaps();\n if (marker.type === \"start\") {\n this.callbacks.onEarlyStartCue(marker, context.fragmentSn, cue.key);\n }\n return;\n }\n if (marker.type === \"end\" && !this.shouldAcceptScte35EndCue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 end cue\", {\n key: cue.key,\n activeScte35BreakKey: this.activeScte35BreakKeyValue,\n inAdBreak: this.callbacks.isInAdBreak(),\n source: cue.source\n });\n }\n return;\n }\n if (marker.type === \"start\" && this.hasRecentlyHandledScte35Cue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring duplicate SCTE-35 start cue\", {\n key: cue.key,\n source: cue.source\n });\n }\n return;\n }\n this.pendingScte35Cues.delete(pendingKey);\n this.markScte35CueHandled(cue);\n this.callbacks.onPlaybackCue(marker, cue.key);\n }\n activatePendingScte35CuesForFragment(frag) {\n const fragmentSn = typeof frag?.sn === \"number\" ? frag.sn : void 0;\n if (fragmentSn === void 0) {\n return;\n }\n const matchingCues = Array.from(this.pendingScte35Cues.entries()).filter(\n ([, cue]) => cue.fragmentSn === fragmentSn\n );\n matchingCues.forEach(([pendingKey, cue]) => {\n this.pendingScte35Cues.delete(pendingKey);\n const context = {\n source: cue.source,\n readiness: \"playback\"\n };\n context.fragmentSn = fragmentSn;\n const fragmentStartSec = cue.fragmentStartSeconds ?? getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n this.onScte35Cue(cue.marker, context);\n });\n }\n createScte35Cue(marker, context) {\n const cue = {\n marker,\n source: context.source,\n readiness: context.readiness,\n key: this.getScte35CueKey(marker, context)\n };\n if (context.fragmentSn !== void 0) {\n cue.fragmentSn = context.fragmentSn;\n }\n if (context.fragmentStartSeconds !== void 0) {\n cue.fragmentStartSeconds = context.fragmentStartSeconds;\n }\n return cue;\n }\n getScte35CueKey(marker, context) {\n const raw = this.getScte35MarkerRaw(marker);\n const spliceEventId = this.toIdentityString(raw?.splice_event_id);\n if (spliceEventId) {\n return `splice:${spliceEventId}`;\n }\n const segmentationEventId = this.toIdentityString(raw?.segmentation_event_id);\n if (segmentationEventId) {\n return `segmentation:${segmentationEventId}`;\n }\n const daterangeId = this.toIdentityString(raw?.attrs?.ID);\n if (daterangeId) {\n return `daterange:${daterangeId}`;\n }\n const scteValue = this.toIdentityString(raw?.attrs?.[\"SCTE35-OUT\"]) || this.toIdentityString(raw?.attrs?.[\"SCTE35-IN\"]);\n if (scteValue) {\n return `daterange-scte:${scteValue}`;\n }\n if (typeof marker.ptsSeconds === \"number\" && Number.isFinite(marker.ptsSeconds)) {\n return `pts:${Math.round(marker.ptsSeconds * 2) / 2}`;\n }\n if (context.fragmentSn !== void 0) {\n return `fragment:${context.fragmentSn}`;\n }\n return `${context.source}:wallclock:${Math.floor(Date.now() / 1e3)}`;\n }\n getPendingScte35CueKey(cue) {\n return `${cue.marker.type}:${cue.key}:${cue.fragmentSn !== void 0 ? cue.fragmentSn : \"unknown\"}`;\n }\n getScte35MarkerRaw(marker) {\n return typeof marker.raw === \"object\" && marker.raw !== null ? marker.raw : {};\n }\n toIdentityString(value) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return String(value);\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n return value.trim();\n }\n return void 0;\n }\n isStrongScte35CueKey(key) {\n return !!(key && (key.startsWith(\"splice:\") || key.startsWith(\"segmentation:\") || key.startsWith(\"daterange:\") || key.startsWith(\"daterange-scte:\")));\n }\n hasRecentlyHandledScte35Cue(cue) {\n if (this.activeScte35BreakKeyValue === cue.key || this.scheduledScte35BreakKeyValue === cue.key) {\n return true;\n }\n const recentKey = `${cue.marker.type}:${cue.key}`;\n return this.recentScte35CueKeys.has(recentKey);\n }\n markScte35CueHandled(cue) {\n this.recentScte35CueKeys.set(`${cue.marker.type}:${cue.key}`, Date.now());\n this.trimRecentScte35CueMaps();\n }\n trimRecentScte35CueMaps() {\n while (this.recentScte35CueKeys.size > this.recentScte35CueLimit) {\n const firstKey = this.recentScte35CueKeys.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.recentScte35CueKeys.delete(firstKey);\n }\n while (this.pendingScte35Cues.size > this.recentScte35CueLimit) {\n const firstKey = this.pendingScte35Cues.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.pendingScte35Cues.delete(firstKey);\n }\n }\n shouldAcceptScte35EndCue(cue) {\n if (!this.callbacks.isInAdBreak()) {\n return false;\n }\n if (this.isStrongScte35CueKey(this.activeScte35BreakKeyValue) && this.isStrongScte35CueKey(cue.key) && this.activeScte35BreakKeyValue !== cue.key) {\n return false;\n }\n return true;\n }\n};\n\n// src/player/AdConfigManager.ts\nvar AdConfigManager = class {\n constructor(config, video) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds = /* @__PURE__ */ new Set();\n this.streamCorrelator = generateCorrelator();\n this.viewCorrelator = generateCorrelator();\n this.consentSignals = {};\n this.podCounter = 0;\n this.podAssignedByPrefetch = false;\n this.lastHeartbeatTime = 0;\n this.defaultPodMaxAds = 6;\n this.defaultPodMaxDurationMs = 12e4;\n this.config = config;\n this.video = video;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n isVmapEnabled() {\n return !!(this.config.isVmap && this.config.vmapUrl?.trim());\n }\n async fetchAdConfiguration() {\n if (this.isVmapEnabled()) {\n await this.fetchAndParseVmap(this.config.vmapUrl);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VMAP mode enabled\");\n }\n return;\n }\n const vastMode = this.config.vastMode || \"default\";\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VAST mode:\", vastMode);\n }\n if (vastMode === \"adstorm\") {\n if (!this.config.licenseKey) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] AdStorm mode requires a license key\"\n );\n }\n return;\n }\n const vastEndpoint = `https://adstorm.co/api-adstorm-dev/adstorm/vast/${this.config.licenseKey}`;\n this.apiVastTagUrl = vastEndpoint;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using AdStorm VAST endpoint (adstorm mode):\",\n vastEndpoint\n );\n }\n return;\n }\n if (this.config.vastTagUrl) {\n this.apiVastTagUrl = normalizeVastTagUrl(this.config.vastTagUrl);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using custom VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n return;\n }\n const apiUrl = \"https://adstorm.co/api-adstorm-dev/adstorm/ads/web\";\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Fetching ad configuration from:\",\n apiUrl\n );\n }\n const headers = {};\n if (this.config.licenseKey) {\n headers[\"Authorization\"] = `Bearer ${this.config.licenseKey}`;\n }\n const response = await fetch(apiUrl, { headers });\n if (!response.ok) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Failed to fetch ad configuration: ${response.status}`\n );\n }\n return;\n }\n const data = await response.json();\n const imaPayload = data.response?.ima?.[\"publisherdesk.ima\"]?.payload;\n if (imaPayload) {\n let decodedPayload = imaPayload;\n try {\n decodedPayload = decodeURIComponent(imaPayload);\n } catch {\n console.warn(\"[StormcloudVideoPlayer] imaPayload was not URI-encoded; using as-is:\", imaPayload);\n }\n console.log(\"[StormcloudVideoPlayer] Raw VAST tag URL (from API):\", decodedPayload);\n this.apiVastTagUrl = normalizeVastTagUrl(decodedPayload);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Normalized VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n } else {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response\"\n );\n }\n }\n const numberAds = data.response?.options?.vast?.cue_tones?.number_ads;\n if (numberAds != null && numberAds > 0) {\n this.apiNumberAds = numberAds;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Number of ads per break from API:\",\n this.apiNumberAds\n );\n }\n }\n }\n async fetchAndParseVmap(vmapUrl) {\n if (!vmapUrl.trim()) {\n return;\n }\n try {\n const response = await fetch(vmapUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch VMAP (${response.status})`);\n }\n const vmapXml = await response.text();\n this.vmapBreaks = this.parseVmapToBreaks(vmapXml);\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Loaded ${this.vmapBreaks.length} VMAP ad break(s) from:`,\n vmapUrl\n );\n }\n } catch (error) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to load VMAP:\", error);\n }\n }\n }\n parseVmapToBreaks(vmapXml) {\n if (typeof DOMParser === \"undefined\") {\n return [];\n }\n const doc = new DOMParser().parseFromString(vmapXml, \"application/xml\");\n if (doc.querySelector(\"parsererror\")) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Invalid VMAP XML received\");\n }\n return [];\n }\n const VMAP_NS = \"http://www.iab.net/videosuite/vmap\";\n let adBreakNodes = Array.from(doc.getElementsByTagNameNS(VMAP_NS, \"AdBreak\"));\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(\n doc.querySelectorAll(\"AdBreak, vmap\\\\:AdBreak\")\n );\n }\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(doc.getElementsByTagName(\"*\")).filter(\n (el) => el.localName === \"AdBreak\"\n );\n }\n const parsed = [];\n adBreakNodes.forEach((node, index) => {\n const timeOffsetRaw = (node.getAttribute(\"timeOffset\") || \"\").trim();\n const startTimeMs = this.parseVmapTimeOffsetToMs(timeOffsetRaw);\n if (startTimeMs == null) {\n return;\n }\n let adTagNode = node.getElementsByTagNameNS(VMAP_NS, \"AdTagURI\")[0];\n if (!adTagNode) {\n adTagNode = node.querySelector(\"AdTagURI, vmap\\\\:AdTagURI\") ?? void 0;\n }\n const adTagUrl = (adTagNode?.textContent || \"\").trim();\n if (!adTagUrl) {\n return;\n }\n const breakId = node.getAttribute(\"breakId\") || `vmap-break-${index}-${timeOffsetRaw || \"unknown\"}`;\n parsed.push({\n id: breakId,\n startTimeMs,\n vastTagUrl: adTagUrl\n });\n });\n parsed.sort((a, b) => {\n const aStart = a.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : a.startTimeMs;\n const bStart = b.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : b.startTimeMs;\n return aStart - bStart;\n });\n return parsed;\n }\n parseVmapTimeOffsetToMs(timeOffset) {\n if (!timeOffset) {\n return void 0;\n }\n const normalized = timeOffset.trim().toLowerCase();\n if (normalized === \"start\") {\n return 0;\n }\n if (normalized === \"end\") {\n return -1;\n }\n const hms = timeOffset.match(\n /^(\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,3}))?$/\n );\n if (hms) {\n const [, hh, mm, ss, ms = \"0\"] = hms;\n const hours = Number(hh);\n const minutes = Number(mm);\n const seconds = Number(ss);\n const millis = Number(ms.padEnd(3, \"0\").slice(0, 3));\n return (hours * 3600 + minutes * 60 + seconds) * 1e3 + millis;\n }\n const percent = timeOffset.match(/^(\\d+(?:\\.\\d+)?)%$/);\n if (percent) {\n const ratio = Number(percent[1]) / 100;\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3 * ratio);\n }\n return void 0;\n }\n return void 0;\n }\n getAdBreakKey(adBreak) {\n if (adBreak.id) {\n return adBreak.id;\n }\n return `${adBreak.startTimeMs}-${adBreak.vastTagUrl || \"\"}`;\n }\n resolveBreakStartMs(adBreak) {\n if (adBreak.startTimeMs >= 0) {\n return adBreak.startTimeMs;\n }\n if (adBreak.startTimeMs === -1) {\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3);\n }\n }\n return void 0;\n }\n findCurrentOrNextBreak(nowMs) {\n const schedule = this.vmapBreaks;\n let candidate;\n const tol = this.config.driftToleranceMs ?? 1e3;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (breakStartMs <= nowMs + tol && (candidate == null || breakStartMs > (this.resolveBreakStartMs(candidate) ?? 0))) {\n candidate = b;\n }\n }\n return candidate;\n }\n findBreakForTime(nowMs) {\n const schedule = this.vmapBreaks;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (b.durationMs) {\n const end = breakStartMs + b.durationMs;\n if (nowMs >= breakStartMs && nowMs < end) {\n return b;\n }\n continue;\n }\n if (nowMs >= breakStartMs) {\n return b;\n }\n }\n return void 0;\n }\n selectVastTagsForBreak(b) {\n if (!b || !b.vastTagUrl) return void 0;\n if (b.vastTagUrl.includes(\",\")) {\n return b.vastTagUrl.split(\",\").map((s) => s.trim()).filter((s) => s.length > 0);\n }\n return [b.vastTagUrl];\n }\n beginNewAdPod() {\n this.podCounter++;\n }\n resolvePodParams(breakDurationMs) {\n const maxDurationMs = breakDurationMs != null && breakDurationMs > 0 ? breakDurationMs : this.config.podMaxDurationMs != null && this.config.podMaxDurationMs > 0 ? this.config.podMaxDurationMs : this.defaultPodMaxDurationMs;\n const maxAds = this.config.podMaxAds && this.config.podMaxAds > 0 ? this.config.podMaxAds : this.apiNumberAds && this.apiNumberAds > 0 ? this.apiNumberAds : this.defaultPodMaxAds;\n const minDurationMs = this.config.podExactDuration && maxDurationMs != null ? maxDurationMs : 0;\n return { maxAds, minDurationMs, maxDurationMs };\n }\n getPalDescriptionUrl() {\n if (!this.apiVastTagUrl) return void 0;\n try {\n const params = new URL(this.apiVastTagUrl).searchParams;\n return params.get(\"description_url\") || params.get(\"url\") || void 0;\n } catch {\n return void 0;\n }\n }\n generatePodVastUrl(baseUrl, podParams, adPlayer, palNonce, inAdBreak) {\n const adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;\n const envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);\n const urlWithMacros = applyVastMacros(baseUrl, {\n correlator: this.viewCorrelator,\n streamCorrelator: this.streamCorrelator,\n pod: this.podCounter > 0 ? this.podCounter : void 0,\n podMaxAds: podParams.maxAds,\n podMinDurationMs: podParams.minDurationMs,\n podMaxDurationMs: podParams.maxDurationMs,\n isCtv: envSignals.isCtv,\n pageUrl: !envSignals.isCtv && typeof window !== \"undefined\" ? toDevSafeUrl(window.location.href) : void 0,\n adWillPlayMuted,\n adWillAutoPlay: !!this.config.autoplay,\n sessionId: envSignals.isCtv || this.consentSignals.storageAllowed !== false ? envSignals.sessionId : void 0,\n deviceId: envSignals.deviceId,\n deviceIdType: envSignals.deviceIdType,\n limitAdTracking: envSignals.limitAdTracking,\n deviceTypeHint: envSignals.deviceTypeHint,\n adTest: this.config.adTest,\n ...this.config.programTitle ? { programTitle: this.config.programTitle } : {},\n ...this.config.channelName ? { channelName: this.config.channelName } : {},\n consent: this.consentSignals\n });\n const finalUrl = palNonce.injectNonce(urlWithMacros);\n console.log(\n `[StormcloudVideoPlayer] Resolved optimized-pod request URL (pod=${this.podCounter}, pmad=${podParams.maxAds}, pmnd=${podParams.minDurationMs}, pmxd=${podParams.maxDurationMs ?? \"?\"}):`,\n finalUrl\n );\n return finalUrl;\n }\n // --- Tracking ---\n initializeTracking() {\n sendInitialTracking(this.config.licenseKey, buildAnalyticsContext(this.config)).then(() => {\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n }).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send initial tracking:\",\n error\n );\n }\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n });\n }\n sendHeartbeatIfNeeded() {\n const now = Date.now();\n if (!this.lastHeartbeatTime || now - this.lastHeartbeatTime > 3e4) {\n this.lastHeartbeatTime = now;\n sendHeartbeat(this.config.licenseKey, buildAnalyticsContext(this.config)).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send heartbeat:\",\n error\n );\n }\n });\n }\n }\n destroyTracking() {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = void 0;\n }\n }\n};\n\n// src/player/AdTimingService.ts\nvar AdTimingService = class {\n constructor(config, video, callbacks) {\n this.adRequestWatchdogToken = null;\n this.adFailsafeToken = null;\n this.ptsDriftEmaMs = 0;\n this.adBreakPlayedDurationMs = 0;\n this.adBreakEpoch = 0;\n this.adRequestTokenCounter = 0;\n this.activeAdRequestToken = null;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.totalAdRequestsInBreak = 0;\n this.maxTotalAdRequestsPerBreak = 10;\n this.lastAdRequestTime = 0;\n this.consecutiveFailures = 0;\n this.maxConsecutiveFailures = 5;\n this.minAdRequestIntervalMs = 3e3;\n this.backoffBaseMs = 1e3;\n this.maxBackoffMs = 15e3;\n this.defaultMinRemainingMsToStartAd = 4e3;\n this.failedVastUrls = /* @__PURE__ */ new Set();\n this.temporaryFailureUrls = /* @__PURE__ */ new Map();\n this.temporaryFailureCooldownMs = 3e4;\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillThreshold = 3;\n this.globalNoFillCooldownUntil = 0;\n this.globalNoFillBackoffBaseMs = 5e3;\n this.globalNoFillBackoffMaxMs = 6e4;\n this.globalLastGamRequestTime = 0;\n this.globalMinGamIntervalMs = 3e3;\n this.config = config;\n this.video = video;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n // --- Ad stop timer ---\n scheduleAdStopCountdown(remainingMs) {\n this.clearAdStopTimer();\n const ms = Math.max(0, Math.floor(remainingMs));\n if (ms === 0) {\n this.ensureAdStoppedByTimer();\n return;\n }\n this.adStopTimerId = window.setTimeout(() => {\n this.ensureAdStoppedByTimer();\n }, ms);\n }\n clearAdStopTimer() {\n if (this.adStopTimerId != null) {\n clearTimeout(this.adStopTimerId);\n this.adStopTimerId = void 0;\n }\n }\n ensureAdStoppedByTimer() {\n this.adStopTimerId = void 0;\n this.callbacks.onAdStopTimerFired();\n }\n // --- Ad start timer ---\n scheduleAdStartIn(delayMs, marker = { type: \"start\" }, cueKey) {\n this.clearAdStartTimer();\n const ms = Math.max(0, Math.floor(delayMs));\n if (ms === 0) {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n return;\n }\n this.adStartTimerId = window.setTimeout(() => {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n }, ms);\n }\n clearAdStartTimer() {\n if (this.adStartTimerId != null) {\n clearTimeout(this.adStartTimerId);\n this.adStartTimerId = void 0;\n }\n }\n // --- PTS drift ---\n updatePtsDrift(ptsSecondsSample) {\n const sampleMs = (this.video.currentTime - ptsSecondsSample) * 1e3;\n if (!Number.isFinite(sampleMs) || Math.abs(sampleMs) > 6e4) return;\n const alpha = 0.1;\n this.ptsDriftEmaMs = this.ptsDriftEmaMs * (1 - alpha) + sampleMs * alpha;\n }\n resolveScteBreakStartWallClockMs(marker) {\n const nowWallClockMs = Date.now();\n if (typeof marker.ptsSeconds !== \"number\") {\n return nowWallClockMs;\n }\n const nowMs = this.video.currentTime * 1e3;\n const estimatedCurrentPtsMs = nowMs - this.ptsDriftEmaMs;\n const deltaMs = marker.ptsSeconds * 1e3 - estimatedCurrentPtsMs;\n if (!Number.isFinite(deltaMs)) {\n return nowWallClockMs;\n }\n return nowWallClockMs + Math.floor(deltaMs);\n }\n // --- Duration boundary ---\n setAdBreakDurationBoundary(durationMs) {\n this.expectedAdBreakDurationMs = durationMs;\n if (durationMs != null && this.currentAdBreakStartWallClockMs != null) {\n this.scteAdBreakEndWallClockMs = this.currentAdBreakStartWallClockMs + durationMs;\n } else {\n this.scteAdBreakEndWallClockMs = void 0;\n }\n }\n scheduleAdStopAtBreakBoundary() {\n if (this.expectedAdBreakDurationMs == null) {\n return;\n }\n this.scheduleAdStopCountdown(this.getWallClockRemainingAdMs());\n }\n // --- Duration budget ---\n getWallClockRemainingAdMs() {\n const endWallClockMs = this.getAdBreakEndWallClockMs();\n if (endWallClockMs != null) {\n return Math.max(0, endWallClockMs - Date.now());\n }\n return 0;\n }\n getAdBreakEndWallClockMs() {\n if (this.scteAdBreakEndWallClockMs != null) {\n return this.scteAdBreakEndWallClockMs;\n }\n if (this.expectedAdBreakDurationMs == null || this.currentAdBreakStartWallClockMs == null) {\n return void 0;\n }\n return this.currentAdBreakStartWallClockMs + this.expectedAdBreakDurationMs;\n }\n getDurationBudgetRemainingMs() {\n if (this.expectedAdBreakDurationMs == null) {\n return 0;\n }\n return Math.max(0, this.expectedAdBreakDurationMs - this.adBreakPlayedDurationMs);\n }\n getLoadedAdDurationMs(adController) {\n const durationSec = adController.getLoadedAdDuration?.();\n if (durationSec == null || durationSec <= 0) {\n return 0;\n }\n return Math.round(durationSec * 1e3);\n }\n adFitsRemainingBudget(durationMs) {\n if (durationMs <= 0) {\n return true;\n }\n return durationMs <= this.getDurationBudgetRemainingMs();\n }\n logAdDurationDecision(accepted, durationMs, adController) {\n if (!this.debug) {\n return;\n }\n const remainingBudget = this.getDurationBudgetRemainingMs();\n const adId = adController.getLoadedAdId?.() ?? \"unknown\";\n if (accepted) {\n console.log(\n `[AD-DURATION] Accepted ad id=${adId}, duration=${durationMs}ms, budget remaining after play=${Math.max(0, remainingBudget - durationMs)}ms`\n );\n } else {\n console.log(\n `[AD-DURATION] Rejected ad id=${adId}, duration=${durationMs}ms exceeds remaining budget=${remainingBudget}ms \\u2014 requesting another ad`\n );\n }\n }\n recordPlayedAdDuration(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n if (durationMs <= 0) {\n return;\n }\n this.adBreakPlayedDurationMs += durationMs;\n if (this.debug) {\n console.log(\n `[AD-DURATION] Played ${durationMs}ms \\u2014 total played=${this.adBreakPlayedDurationMs}ms / ${this.expectedAdBreakDurationMs ?? \"?\"}ms`\n );\n }\n }\n ensureLoadedAdFitsBudget(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n const fits = this.adFitsRemainingBudget(durationMs);\n this.logAdDurationDecision(fits, durationMs, adController);\n return fits;\n }\n rejectLoadedAdForDuration(adController) {\n try {\n adController.destroy();\n } catch {\n }\n }\n markAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n this.totalAdRequestsInBreak++;\n this.lastAdRequestTime = Date.now();\n }\n notePodAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n getRemainingAdMs() {\n const wallClockRemaining = this.getWallClockRemainingAdMs();\n const budgetRemaining = this.getDurationBudgetRemainingMs();\n if (this.expectedAdBreakDurationMs == null) {\n return wallClockRemaining;\n }\n return Math.min(wallClockRemaining, budgetRemaining);\n }\n getMinRemainingMsToStartAd() {\n const configured = this.config.minRemainingMsToStartAd;\n if (typeof configured === \"number\" && configured >= 0) {\n return configured;\n }\n return this.defaultMinRemainingMsToStartAd;\n }\n hasTimeToStartAnotherAd() {\n const minRemaining = this.getMinRemainingMsToStartAd();\n return this.getWallClockRemainingAdMs() > minRemaining && this.getDurationBudgetRemainingMs() > minRemaining;\n }\n // --- Circuit breaker ---\n isTemporaryAdError(error) {\n const message = error?.message?.toLowerCase() || \"\";\n if (message.includes(\"no ads available\") || message.includes(\"no fill\") || message.includes(\"nofill\")) {\n return true;\n }\n if (message.includes(\"timeout\")) {\n return true;\n }\n if (message.includes(\"rate limit\") || message.includes(\"too many requests\")) {\n return true;\n }\n if (message.includes(\"ad playback error\")) {\n return true;\n }\n return false;\n }\n isUrlInCooldown(vastTagUrl) {\n const failureTime = this.temporaryFailureUrls.get(vastTagUrl);\n if (failureTime == null) {\n return false;\n }\n const elapsed = Date.now() - failureTime;\n if (elapsed >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(vastTagUrl);\n return false;\n }\n return true;\n }\n cleanupTemporaryFailures() {\n const now = Date.now();\n for (const [url, timestamp] of this.temporaryFailureUrls) {\n if (now - timestamp >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(url);\n }\n }\n }\n isGamInCooldown() {\n return Date.now() < this.globalNoFillCooldownUntil;\n }\n recordGamNoFill() {\n this.globalConsecutiveNoFills++;\n if (this.globalConsecutiveNoFills >= this.globalNoFillThreshold) {\n const exponent = this.globalConsecutiveNoFills - this.globalNoFillThreshold;\n const backoff = Math.min(\n this.globalNoFillBackoffBaseMs * Math.pow(2, exponent),\n this.globalNoFillBackoffMaxMs\n );\n this.globalNoFillCooldownUntil = Date.now() + backoff;\n if (this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] GAM cooldown activated: ${backoff}ms (${this.globalConsecutiveNoFills} consecutive no-fills)`\n );\n }\n }\n }\n resetGamNoFillCounter() {\n if (this.globalConsecutiveNoFills > 0 && this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] Resetting no-fill counter (was ${this.globalConsecutiveNoFills})`\n );\n }\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillCooldownUntil = 0;\n }\n async enforceGlobalRateLimit() {\n const now = Date.now();\n const elapsed = now - this.globalLastGamRequestTime;\n if (elapsed < this.globalMinGamIntervalMs) {\n const waitMs = this.globalMinGamIntervalMs - elapsed;\n if (this.debug) {\n console.log(`[RATE-LIMIT] Waiting ${waitMs}ms before next GAM request`);\n }\n await new Promise((resolve) => setTimeout(resolve, waitMs));\n }\n this.globalLastGamRequestTime = Date.now();\n }\n // --- Watchdog ---\n startAdRequestWatchdog(token) {\n this.clearAdRequestWatchdog();\n const timeoutMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adRequestWatchdogToken = token;\n this.adRequestWatchdogId = window.setTimeout(() => {\n if (this.adRequestWatchdogToken !== token) {\n return;\n }\n this.adRequestWatchdogId = void 0;\n this.adRequestWatchdogToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_request_timeout\", { token, timeoutMs });\n this.callbacks.onWatchdogTimeout();\n }, timeoutMs);\n this.logAdState(\"ad_request_watchdog_started\", { token, timeoutMs });\n }\n clearAdRequestWatchdog() {\n if (this.adRequestWatchdogId != null) {\n clearTimeout(this.adRequestWatchdogId);\n this.adRequestWatchdogId = void 0;\n }\n if (this.adRequestWatchdogToken != null) {\n this.logAdState(\"ad_request_watchdog_cleared\", {\n token: this.adRequestWatchdogToken\n });\n this.adRequestWatchdogToken = null;\n }\n }\n // --- Failsafe ---\n startAdFailsafeTimer(token) {\n this.clearAdFailsafeTimer();\n const failsafeMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adFailsafeToken = token;\n this.adFailsafeTimerId = window.setTimeout(() => {\n if (this.adFailsafeToken !== token) {\n return;\n }\n this.adFailsafeTimerId = void 0;\n this.adFailsafeToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_failsafe_triggered\", {\n token,\n failsafeMs,\n videoPaused: this.video.paused\n });\n this.callbacks.onFailsafeTimeout();\n }, failsafeMs);\n this.logAdState(\"ad_failsafe_started\", { token, failsafeMs });\n }\n clearAdFailsafeTimer() {\n if (this.adFailsafeTimerId != null) {\n clearTimeout(this.adFailsafeTimerId);\n this.logAdState(\"ad_failsafe_cleared\", { token: this.adFailsafeToken });\n this.adFailsafeTimerId = void 0;\n }\n this.adFailsafeToken = null;\n }\n logAdState(event, extra = {}) {\n if (!this.debug) {\n return;\n }\n const { inAdBreak, showAds, adPlaying } = this.callbacks.getAdState();\n console.log(\"[StormcloudVideoPlayer][AdState]\", {\n event,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n showAds,\n adPlaying,\n inAdBreak,\n activeAdRequestToken: this.activeAdRequestToken,\n ...extra\n });\n }\n // --- Reset for ad break end ---\n resetForBreakEnd() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdRequestWatchdog();\n this.clearAdFailsafeTimer();\n this.activeAdRequestToken = null;\n this.expectedAdBreakDurationMs = void 0;\n this.currentAdBreakStartWallClockMs = void 0;\n this.scteAdBreakEndWallClockMs = void 0;\n this.adBreakPlayedDurationMs = 0;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.consecutiveFailures = 0;\n this.globalConsecutiveNoFills = 0;\n this.adBreakEpoch++;\n }\n destroy() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdFailsafeTimer();\n this.clearAdRequestWatchdog();\n }\n};\n\n// src/player/PlaceholderLayer.ts\nvar PlaceholderLayer = class {\n constructor(video, debug) {\n this.video = video;\n this.debug = debug;\n }\n ensureContainer() {\n if (this.container) {\n return;\n }\n const el = document.createElement(\"div\");\n el.style.position = \"absolute\";\n el.style.left = \"0\";\n el.style.top = \"0\";\n el.style.right = \"0\";\n el.style.bottom = \"0\";\n el.style.display = \"none\";\n el.style.alignItems = \"center\";\n el.style.justifyContent = \"center\";\n el.style.pointerEvents = \"none\";\n el.style.zIndex = \"5\";\n el.style.backgroundColor = \"#000\";\n el.style.transition = \"opacity 0.3s ease-in-out\";\n el.style.opacity = \"0\";\n if (!this.video.parentElement) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Video element has no parent for placeholder container\");\n }\n return;\n }\n this.video.parentElement.appendChild(el);\n this.container = el;\n }\n show() {\n this.ensureContainer();\n if (!this.container) {\n return;\n }\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video when showing placeholder\");\n }\n }\n const wasHidden = this.container.style.display === \"none\" || this.container.style.opacity === \"0\";\n if (wasHidden) {\n this.container.style.transition = \"none\";\n } else {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n this.container.style.backgroundColor = \"#000\";\n this.container.style.display = \"flex\";\n this.container.offsetHeight;\n this.container.style.opacity = \"1\";\n this.container.style.pointerEvents = \"auto\";\n if (wasHidden) {\n requestAnimationFrame(() => {\n if (this.container) {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n });\n }\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder layer (between content and ad layer)\");\n }\n }\n hide() {\n if (!this.container) {\n return;\n }\n this.container.style.opacity = \"0\";\n setTimeout(() => {\n if (this.container) {\n this.container.style.display = \"none\";\n this.container.style.pointerEvents = \"none\";\n this.container.style.backgroundColor = \"#000\";\n }\n }, 300);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder layer\");\n }\n }\n destroy() {\n if (this.container) {\n if (this.container.parentElement) {\n this.container.parentElement.removeChild(this.container);\n }\n this.container = void 0;\n }\n }\n};\n\n// src/player/HlsEngine.ts\nimport Hls2 from \"hls.js\";\nvar HlsEngine = class {\n constructor(config, video, cueManager, timing, callbacks) {\n this.isLiveStream = false;\n this.nativeHlsMode = false;\n this.videoSrcProtection = null;\n this.reloadingLiveStream = false;\n this.bufferedSegmentsCount = 0;\n this.shouldAutoplayAfterBuffering = false;\n this.hasInitialBufferCompleted = false;\n this.latencyProfileApplied = false;\n this.config = config;\n this.video = video;\n this.cueManager = cueManager;\n this.timing = timing;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n shouldUseNativeHls(getStreamType) {\n const streamType = getStreamType();\n if (streamType === \"other\") {\n return true;\n }\n const canNative = this.video.canPlayType(\"application/vnd.apple.mpegurl\");\n return !!(this.config.allowNativeHls && canNative);\n }\n async setupNativeHls() {\n this.nativeHlsMode = true;\n this.videoSrcProtection = this.config.src;\n this.video.src = this.config.src;\n this.isLiveStream = this.config.isLiveStream ?? (this.config.lowLatencyMode ?? false);\n if (this.debug) {\n const adBehavior = this.isLiveStream ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\n \"[StormcloudVideoPlayer] Using native HLS playback:\",\n {\n isLive: this.isLiveStream,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n }\n );\n }\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n setupHls() {\n this.hls = new Hls2({\n enableWorker: true,\n backBufferLength: 30,\n liveDurationInfinity: true,\n lowLatencyMode: !!this.config.lowLatencyMode,\n maxLiveSyncPlaybackRate: 1.1,\n maxBufferLength: 30,\n maxMaxBufferLength: 600,\n maxBufferSize: 60 * 1e3 * 1e3,\n maxBufferHole: 1,\n highBufferWatchdogPeriod: 2,\n nudgeOffset: 0.2,\n nudgeMaxRetry: 5,\n startPosition: -1\n });\n this.hls.on(Hls2.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(Hls2.Events.MANIFEST_PARSED, async (_, _data) => {\n this.isLiveStream = this.config.isLiveStream ?? (this.hls?.levels?.some(\n (level) => level?.details?.live === true || level?.details?.type === \"LIVE\"\n ) ?? false);\n await this.callbacks.onManifestParsed(this.isLiveStream);\n this.bufferedSegmentsCount = 0;\n this.hasInitialBufferCompleted = false;\n this.shouldAutoplayAfterBuffering = !!this.config.autoplay;\n this.latencyProfileApplied = false;\n this.detectedLowLatencyStream = void 0;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Waiting for\",\n minSegments,\n \"segments to buffer before playback\"\n );\n }\n if (minSegments === 0 || !this.config.autoplay) {\n this.hasInitialBufferCompleted = true;\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n this.reloadingLiveStream = false;\n });\n this.hls.on(Hls2.Events.LEVEL_LOADED, (_evt, data) => {\n this.applyStreamLatencyProfile(data?.details);\n if (this.callbacks.isInAdBreak() || this.callbacks.hasPendingAdBreak()) {\n return;\n }\n const details = data?.details;\n if (!details || !details.fragments || details.fragments.length === 0) {\n return;\n }\n const fragmentsToScan = Math.min(5, details.fragments.length);\n for (let i = 0; i < fragmentsToScan; i++) {\n const frag = details.fragments[i];\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) continue;\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = tag.includes(\"EXT-X-DATERANGE\") ? parseAttributeList(value) : {};\n const hasScteOut = tag.includes(\"EXT-X-CUE-OUT\") || \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n if (hasScteOut) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value, earlyDetection: true }\n };\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] EARLY SCTE-35 DETECTION: Ad break marker found in fragment\", i, \"- starting pre-fetch (NOT playing yet)\");\n }\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"early\", frag)\n });\n return;\n }\n }\n }\n }\n });\n this.hls.on(Hls2.Events.FRAG_BUFFERED, async (_evt, _data) => {\n if (this.hasInitialBufferCompleted) {\n return;\n }\n this.bufferedSegmentsCount++;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Buffered segment ${this.bufferedSegmentsCount}/${minSegments}`\n );\n }\n if (this.bufferedSegmentsCount >= minSegments) {\n this.hasInitialBufferCompleted = true;\n if (this.shouldAutoplayAfterBuffering) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Initial buffer complete (${this.bufferedSegmentsCount} segments). Starting playback.`\n );\n }\n await this.video.play()?.catch((err) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Autoplay failed:\", err);\n }\n });\n }\n }\n });\n this.hls.on(Hls2.Events.FRAG_PARSING_METADATA, (_evt, data) => {\n const id3Tags = (data?.samples || []).map((s) => ({\n key: \"ID3\",\n value: s?.data,\n ptsSeconds: s?.pts\n }));\n id3Tags.forEach((tag) => this.onId3Tag(tag));\n });\n this.hls.on(Hls2.Events.FRAG_LOADED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(Hls2.Events.FRAG_DECRYPTED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(Hls2.Events.FRAG_CHANGED, (_evt, data) => {\n const frag = data?.frag;\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) {\n this.callbacks.activatePendingCuesForFragment(frag);\n return;\n }\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n value = \"\";\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) {\n const prog = parseCueOutCont(value);\n const marker = {\n type: \"progress\",\n ...prog?.duration !== void 0 ? { durationSeconds: prog.duration } : {},\n ...prog?.elapsed !== void 0 ? { ptsSeconds: prog.elapsed } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-OUT\")) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-IN\")) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n } else if (tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = parseAttributeList(value);\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { tag, value, attrs }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n }\n if (hasScteIn) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value, attrs } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n }\n }\n }\n this.callbacks.activatePendingCuesForFragment(frag);\n });\n this.hls.on(Hls2.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case Hls2.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case Hls2.ErrorTypes.MEDIA_ERROR:\n this.hls?.recoverMediaError();\n break;\n default:\n this.callbacks.onFatalDestroy();\n break;\n }\n }\n });\n this.hls.attachMedia(this.video);\n }\n isLowLatencyStream() {\n return this.detectedLowLatencyStream;\n }\n applyStreamLatencyProfile(details) {\n if (this.latencyProfileApplied || !this.hls) {\n return;\n }\n if (!details) {\n return;\n }\n if (details.live !== true) {\n this.latencyProfileApplied = true;\n this.detectedLowLatencyStream = false;\n return;\n }\n const isLowLatencyManifest = this.isLowLatencyManifest(details);\n const useLowLatency = isLowLatencyManifest && !!this.config.lowLatencyMode;\n this.detectedLowLatencyStream = useLowLatency;\n this.latencyProfileApplied = true;\n const cfg = this.hls.config;\n if (useLowLatency) {\n cfg.maxLiveSyncPlaybackRate = 1.5;\n cfg.maxBufferHole = 0.5;\n delete cfg.liveSyncDuration;\n } else {\n cfg.maxLiveSyncPlaybackRate = 1.1;\n cfg.maxBufferHole = 1;\n delete cfg.liveSyncDuration;\n cfg.liveSyncDurationCount = 3;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live latency profile: ${useLowLatency ? \"LL-HLS (low latency)\" : \"standard live (stability)\"}`,\n {\n isLowLatencyManifest,\n lowLatencyModeRequested: !!this.config.lowLatencyMode,\n canBlockReload: details.canBlockReload,\n partTarget: details.partTarget,\n partHoldBack: details.partHoldBack,\n partListLength: Array.isArray(details.partList) ? details.partList.length : 0,\n targetDuration: details.targetduration ?? details.targetDuration,\n maxLiveSyncPlaybackRate: cfg.maxLiveSyncPlaybackRate,\n maxBufferHole: cfg.maxBufferHole\n }\n );\n }\n }\n isLowLatencyManifest(details) {\n if (!details) {\n return false;\n }\n const hasParts = Array.isArray(details.partList) && details.partList.length > 0;\n const hasPartTarget = typeof details.partTarget === \"number\" && details.partTarget > 0;\n const hasPartHoldBack = typeof details.partHoldBack === \"number\" && details.partHoldBack > 0;\n const canBlockReload = details.canBlockReload === true;\n return hasParts || hasPartTarget || hasPartHoldBack || canBlockReload;\n }\n onId3Tag(tag) {\n if (typeof tag.ptsSeconds === \"number\") {\n this.timing.updatePtsDrift(tag.ptsSeconds);\n }\n const marker = parseScte35FromId3(tag);\n if (marker) {\n this.callbacks.onScte35Cue(marker, {\n source: \"id3\",\n readiness: \"playback\"\n });\n }\n }\n processFragmentScte35Payload(payloadData, fragmentSn, fragmentStartSeconds) {\n const payload = normalizeFragmentPayload(payloadData);\n if (!payload) {\n return;\n }\n const markers = parseScte35FromTsPackets(\n payload,\n this.cueManager.tsScte35Pids,\n this.cueManager.pmtPids,\n this.cueManager.processedTsScte35Sections\n );\n markers.forEach((marker) => {\n const context = {\n source: \"ts\",\n readiness: \"early\"\n };\n if (fragmentSn !== void 0) {\n context.fragmentSn = fragmentSn;\n }\n if (fragmentStartSeconds !== void 0) {\n context.fragmentStartSeconds = fragmentStartSeconds;\n }\n this.callbacks.onScte35Cue(marker, context);\n });\n }\n getLiveSyncPosition() {\n const pos = this.hls?.liveSyncPosition;\n return typeof pos === \"number\" && Number.isFinite(pos) ? pos : void 0;\n }\n restartLoadAt(position) {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.stopLoad();\n this.hls.startLoad(position);\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to restart HLS load at live edge:\", error);\n }\n }\n }\n recoverMediaError() {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.recoverMediaError();\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] recoverMediaError() failed:\", error);\n }\n }\n }\n reloadLiveStream() {\n const hls = this.hls;\n if (!hls) {\n return;\n }\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Hard-reloading live stream (destroy hls \\u2192 reset video \\u2192 fresh setupHls)\"\n );\n }\n try {\n this.reloadingLiveStream = true;\n hls.stopLoad();\n hls.detachMedia();\n hls.destroy();\n this.hls = void 0;\n try {\n this.video.removeAttribute(\"src\");\n this.video.load();\n } catch (error) {\n console.warn(\"[StormcloudVideoPlayer] video.load() threw after src removal:\", error);\n }\n } catch (error) {\n this.reloadingLiveStream = false;\n this.hls = void 0;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to tear down during hard-reload:\", error);\n }\n return;\n }\n const recreateDelayMs = 600;\n window.setTimeout(() => {\n if (this.hls) {\n this.reloadingLiveStream = false;\n return;\n }\n try {\n this.setupHls();\n } catch (error) {\n this.reloadingLiveStream = false;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to rebuild pipeline during hard-reload:\", error);\n }\n }\n }, recreateDelayMs);\n }\n destroy() {\n this.hls?.destroy();\n this.hls = void 0;\n }\n};\n\n// src/player/PlayerControls.ts\nfunction getAdAudioVolume(adPlayer) {\n return adPlayer.getOriginalMutedState() ? 0 : adPlayer.getOriginalVolume();\n}\nfunction toggleMute(video, adPlayer, debug) {\n if (adPlayer.isAdPlaying()) {\n const newMutedState = !adPlayer.getOriginalMutedState();\n const restoreVolume = adPlayer.getOriginalVolume() || 1;\n adPlayer.updateOriginalMutedState(newMutedState, video.volume);\n adPlayer.setAdVolume(newMutedState ? 0 : restoreVolume);\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] Mute toggle during ad - immediately applied:\",\n newMutedState\n );\n }\n } else {\n video.muted = !video.muted;\n adPlayer.updateOriginalMutedState(video.muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Muted:\", video.muted);\n }\n }\n}\nfunction toggleFullscreen(video, debug) {\n return new Promise((resolve, reject) => {\n if (!document.fullscreenElement) {\n const container = video.parentElement;\n if (!container) {\n reject(new Error(\"No parent container found for fullscreen\"));\n return;\n }\n container.requestFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Entered fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\"[StormcloudVideoPlayer] Fullscreen error:\", err);\n }\n reject(err);\n });\n } else {\n document.exitFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Exited fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\n \"[StormcloudVideoPlayer] Exit fullscreen error:\",\n err\n );\n }\n reject(err);\n });\n }\n });\n}\nfunction isMuted(video, adPlayer) {\n if (adPlayer.isAdPlaying()) {\n return adPlayer.getOriginalMutedState();\n }\n return video.muted;\n}\nfunction setMuted(video, adPlayer, muted, debug) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying && muted === video.muted) {\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] setMuted reflective update during ad ignored\",\n { muted }\n );\n }\n return;\n }\n video.muted = muted;\n if (adPlaying) {\n adPlayer.updateOriginalMutedState(muted, video.volume);\n adPlayer.setAdVolume(muted ? 0 : 1);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted applied during ad\", {\n muted\n });\n }\n return;\n }\n adPlayer.updateOriginalMutedState(muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted called:\", muted);\n }\n}\nfunction setVolume(video, adPlayer, volume, debug) {\n const clampedVolume = Math.max(0, Math.min(1, volume));\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n adPlayer.setAdVolume(clampedVolume);\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume applied during ad\", {\n volume: clampedVolume\n });\n }\n } else {\n video.volume = clampedVolume;\n video.muted = clampedVolume === 0;\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume called:\", clampedVolume);\n }\n }\n}\nfunction getVolume(video, adPlayer) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n return adPlayer.getAdVolume();\n }\n return video.volume;\n}\nfunction isFullscreen() {\n return !!document.fullscreenElement;\n}\nfunction resizePlayer(video, adPlayer, debug) {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Resizing player\");\n }\n if (adPlayer && adPlayer.isAdPlaying()) {\n const width = video.clientWidth || 640;\n const height = video.clientHeight || 480;\n if (debug) {\n console.log(\n `[StormcloudVideoPlayer] Resizing ads manager to ${width}x${height}`\n );\n }\n adPlayer.resize(width, height);\n }\n}\n\n// src/player/AdBreakOrchestrator.ts\nvar AdBreakOrchestrator = class {\n constructor(host, timing, adConfig, cueManager, placeholder) {\n this.inAdBreak = false;\n this.showAds = false;\n this.isShowingPlaceholder = false;\n this.adDetectSentForCurrentBreak = false;\n this.continuousFetchingActive = false;\n this.continuousFetchLoopRunning = false;\n this.adRequestQueue = [];\n this.adPodQueue = [];\n this.maxPlaceholderDurationMs = 5e3;\n this.pendingAdBreak = null;\n this.host = host;\n this.timing = timing;\n this.adConfig = adConfig;\n this.cueManager = cueManager;\n this.placeholder = placeholder;\n }\n get debug() {\n return !!this.host.config.debugAdTiming;\n }\n get analyticsContext() {\n return buildAnalyticsContext(this.host.config);\n }\n // ───────────────────────────────────────────────────────────────\n // IMA event listeners\n // ───────────────────────────────────────────────────────────────\n nextAdRequestUrl(baseVastUrl) {\n const remaining = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n const breakDurationMs = remaining > 0 ? remaining : void 0;\n return this.host.generatePodVastUrl(baseVastUrl, breakDurationMs);\n }\n attachImaEventListeners() {\n const adPlayer = this.host.getAdPlayer();\n adPlayer.on(\"pod_ad_started\", (payload) => {\n this.timing.notePodAdStarted();\n if (this.debug) {\n console.log(\n `[POD] Playing pod ad ${payload?.index != null ? payload.index + 1 : \"?\"}/${payload?.total ?? \"?\"}`\n );\n }\n });\n adPlayer.on(\"ad_click\", () => {\n this.host.onAdClick();\n });\n adPlayer.on(\"ad_interaction\", (event) => {\n if (event) this.host.onAdInteraction(event);\n });\n adPlayer.on(\"all_ads_completed\", () => {\n sendAdImpressionTracking(\n this.host.config.licenseKey,\n { source: \"hls\", adIndex: this.timing.currentAdIndex, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n const remaining = this.timing.getRemainingAdMs();\n this.timing.consecutiveFailures = 0;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] all_ads_completed event received - remaining=${remaining}ms, queued ads=${this.adRequestQueue.length}`,\n this.adRequestQueue.length > 0 ? { queuedUrls: [...this.adRequestQueue] } : {}\n );\n }\n if (this.inAdBreak) {\n if (this.timing.hasTimeToStartAnotherAd()) {\n this.tryNextAvailableAdWithRateLimit();\n } else {\n this.handleAdPodComplete();\n }\n }\n });\n adPlayer.on(\"ad_error\", (errorPayload) => {\n let errorMessage = \"Ad playback failed\";\n if (errorPayload) {\n const errorCode = errorPayload.code || errorPayload.errorCode || \"unknown\";\n const vastErrorCode = errorPayload.vastErrorCode;\n const message = errorPayload.message || errorPayload.errorMessage || \"Unknown error\";\n const cause = errorPayload.cause || errorPayload.innerError || errorPayload.error;\n errorMessage = `Ad error: AdError ${errorCode}: ${message}`;\n if (vastErrorCode && vastErrorCode !== \"N/A\" && vastErrorCode !== errorCode) {\n errorMessage += ` (VAST Error Code: ${vastErrorCode})`;\n }\n if (cause) {\n const causeMessage = typeof cause === \"string\" ? cause : cause.message || String(cause);\n errorMessage += `. Caused by: ${causeMessage}`;\n }\n }\n console.error(\"[AD-ERROR]\", errorMessage, errorPayload || \"\");\n this.handleAdFailure();\n });\n adPlayer.on(\"content_pause\", () => {\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = true;\n this.timing.resetGamNoFillCounter();\n if (this.inAdBreak && this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad break timer on content_pause (first ad starting)\");\n }\n }\n this.host.getAdPlayer().setAdVolume(getAdAudioVolume(this.host.getAdPlayer()));\n if (this.isShowingPlaceholder) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder - new ads starting\");\n }\n this.host.getAdPlayer().hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n });\n adPlayer.on(\"content_resume\", () => {\n sendAdImpressionTracking(\n this.host.config.licenseKey,\n { source: \"hls\", adIndex: this.timing.currentAdIndex, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n if (!this.host.video.muted) {\n this.host.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on content_resume (ad ended, gap between ads)\");\n }\n }\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = false;\n if (!this.inAdBreak) {\n return;\n }\n this.timing.consecutiveFailures = 0;\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n const remaining = this.timing.getRemainingAdMs();\n if (this.debug) {\n console.log(\n `[CONTINUOUS-FETCH] content_resume event: remaining=${remaining}ms, queued ads=${this.adRequestQueue.length}`,\n this.adRequestQueue.length > 0 ? { queuedUrls: [...this.adRequestQueue] } : {}\n );\n }\n if (this.timing.hasTimeToStartAnotherAd()) {\n this.tryNextAvailableAdWithRateLimit();\n } else {\n this.handleAdPodComplete();\n }\n });\n }\n recreateAdController() {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Recreating AdController for new ad\");\n }\n const shouldShowPlaceholder = this.inAdBreak && this.showAds;\n const adPlayer = this.host.getAdPlayer();\n if (shouldShowPlaceholder && adPlayer) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder before destroying old AdController\");\n }\n this.placeholder.show();\n adPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n const preservedMutedState = adPlayer.getOriginalMutedState();\n const preservedVolumeState = adPlayer.getOriginalVolume();\n if (adPlayer) {\n try {\n adPlayer.destroy();\n this.host.video.muted = true;\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Error destroying old AdController:\", error);\n }\n }\n }\n const continueLiveStreamDuringAds = this.host.shouldContinueLiveStreamDuringAds();\n const newAdPlayer = this.host.createAdPlayer(continueLiveStreamDuringAds);\n this.host.setAdPlayer(newAdPlayer);\n newAdPlayer.initialize();\n newAdPlayer.updateOriginalMutedState(preservedMutedState, preservedVolumeState);\n this.attachImaEventListeners();\n if (shouldShowPlaceholder) {\n this.placeholder.show();\n newAdPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n }\n clearPendingAdBreak() {\n if (this.prefetchTimerId != null) {\n clearTimeout(this.prefetchTimerId);\n this.prefetchTimerId = void 0;\n }\n this.pendingAdBreak = null;\n this.cueManager.pendingScte35CueKey = void 0;\n this.adConfig.podAssignedByPrefetch = false;\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break start\n // ───────────────────────────────────────────────────────────────\n async handleAdStart(_marker) {\n const scheduled = this.adConfig.findCurrentOrNextBreak(\n this.host.video.currentTime * 1e3\n );\n if (scheduled) {\n this.adConfig.consumedVmapBreakIds.add(this.adConfig.getAdBreakKey(scheduled));\n }\n const tags = this.adConfig.selectVastTagsForBreak(scheduled);\n let baseVastUrl;\n if (tags && tags.length > 0 && tags[0]) {\n baseVastUrl = tags[0];\n } else if (this.adConfig.apiVastTagUrl) {\n baseVastUrl = this.adConfig.apiVastTagUrl;\n } else {\n this.clearPendingAdBreak();\n return;\n }\n const adBreakDurationMs = _marker.durationSeconds != null ? _marker.durationSeconds * 1e3 : scheduled?.durationMs;\n if (this.debug) {\n const mode = this.host.config.isLiveStream ? \"LIVE\" : \"VOD\";\n console.log(\n `[CONTINUOUS-FETCH] ${mode} MODE: Target duration=${adBreakDurationMs}ms`\n );\n }\n this.timing.failedVastUrls.clear();\n this.timing.temporaryFailureUrls.clear();\n this.timing.consecutiveFailures = 0;\n this.continuousFetchingActive = true;\n this.isShowingPlaceholder = false;\n this.timing.totalAdRequestsInBreak = 0;\n if (this.adConfig.podAssignedByPrefetch) {\n this.adConfig.podAssignedByPrefetch = false;\n } else {\n this.adConfig.beginNewAdPod();\n }\n const currentMuted = this.host.video.muted;\n const currentVolume = this.host.video.volume;\n this.host.getAdPlayer().updateOriginalMutedState(currentMuted, currentVolume);\n this.inAdBreak = true;\n this.timing.adBreakPlayedDurationMs = 0;\n this.timing.currentAdIndex = 0;\n this.timing.totalAdsInBreak = 0;\n this.adPodQueue = [];\n this.showAds = false;\n if (this.timing.expectedAdBreakDurationMs == null && adBreakDurationMs != null) {\n this.timing.expectedAdBreakDurationMs = adBreakDurationMs;\n }\n const podPlayed = await this.startOptimizedPod(\n baseVastUrl,\n adBreakDurationMs,\n currentMuted,\n currentVolume\n );\n if (!podPlayed) {\n if (this.debug) {\n console.log(\"[POD] Initial pod request did not fill; attempting top-up pod request\");\n }\n this.continuousFetchingActive = true;\n this.startContinuousFetching(baseVastUrl);\n await this.tryNextAvailableAdWithRateLimit();\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Optimized pod (single multi-ad request)\n // ───────────────────────────────────────────────────────────────\n async startOptimizedPod(baseVastUrl, breakDurationMs, currentMuted, currentVolume) {\n let podUrl;\n if (this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0) {\n podUrl = this.pendingAdBreak.vastUrls[0];\n this.clearPendingAdBreak();\n } else {\n podUrl = this.host.generatePodVastUrl(baseVastUrl, breakDurationMs);\n }\n if (!podUrl) {\n return false;\n }\n this.continuousFetchingActive = false;\n this.recreateAdController();\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.timing.startAdRequestWatchdog(requestToken);\n try {\n await this.timing.enforceGlobalRateLimit();\n this.timing.lastAdRequestTime = Date.now();\n await adPlayer.requestAds(podUrl);\n this.timing.clearAdRequestWatchdog();\n if (this.timing.activeAdRequestToken !== requestToken) {\n return true;\n }\n const podCount = adPlayer.getPodAdCount?.() ?? 1;\n if (podCount < 1) {\n return false;\n }\n if (this.debug) {\n console.log(\n podCount === 1 ? \"[POD] Response contained a single ad; playing it and enabling pod top-up\" : `[POD] Optimized pod returned ${podCount} ads; playing pod in one controller`\n );\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: podUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await adPlayer.play();\n this.timing.markAdStarted();\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(currentMuted ? 0 : currentVolume);\n this.timing.consecutiveFailures = 0;\n this.continuousFetchingActive = true;\n this.startContinuousFetching(baseVastUrl);\n return true;\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.debug) {\n console.warn(\"[POD] Optimized pod request/play failed:\", error);\n }\n if (this.timing.isTemporaryAdError(error)) {\n this.timing.temporaryFailureUrls.set(podUrl, Date.now());\n }\n this.continuousFetchingActive = true;\n this.recreateAdController();\n return false;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Continuous fetching\n // ───────────────────────────────────────────────────────────────\n startContinuousFetching(baseVastUrl) {\n if (!this.continuousFetchingActive) {\n return;\n }\n if (this.continuousFetchLoopRunning) {\n if (this.debug) {\n console.log(\"[CONTINUOUS-FETCH] Fetch loop already running, skipping duplicate start\");\n }\n return;\n }\n if (this.debug) {\n console.log(\"[CONTINUOUS-FETCH] Starting continuous ad fetching loop\");\n }\n this.continuousFetchLoopRunning = true;\n this.continuousFetchLoop(baseVastUrl);\n }\n async continuousFetchLoop(baseVastUrl) {\n const epoch = this.timing.adBreakEpoch;\n while (this.continuousFetchingActive && this.inAdBreak && epoch === this.timing.adBreakEpoch) {\n const remaining = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n if (remaining <= this.timing.getMinRemainingMsToStartAd()) {\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] Not enough ad break time left (wall=${this.timing.getWallClockRemainingAdMs()}ms, budget=${this.timing.getDurationBudgetRemainingMs()}ms), stopping URL generation`);\n }\n break;\n }\n if (this.timing.isGamInCooldown()) {\n if (this.debug) {\n console.log(\"[CIRCUIT-BREAKER] GAM in cooldown, stopping URL generation\");\n }\n break;\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] Too many consecutive failures (${this.timing.consecutiveFailures}), stopping URL generation`);\n }\n break;\n }\n if (this.timing.totalAdRequestsInBreak >= this.timing.maxTotalAdRequestsPerBreak) {\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] Maximum ad requests reached (${this.timing.maxTotalAdRequestsPerBreak}), stopping`);\n }\n break;\n }\n const maxQueueSize = 5;\n if (this.adRequestQueue.length >= maxQueueSize) {\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] URL queue full (${this.adRequestQueue.length}), waiting...`);\n }\n await new Promise((resolve) => setTimeout(resolve, 1e3));\n continue;\n }\n const newAdUrl = this.nextAdRequestUrl(baseVastUrl);\n if (!newAdUrl || this.timing.failedVastUrls.has(newAdUrl) || this.timing.isUrlInCooldown(newAdUrl)) {\n await new Promise((resolve) => setTimeout(resolve, 500));\n continue;\n }\n if (this.debug) {\n const queuedUrlsPreview = [...this.adRequestQueue, newAdUrl];\n console.log(\n `[CONTINUOUS-FETCH] Queued VAST URL (queue size: ${queuedUrlsPreview.length})`,\n { queuedUrls: queuedUrlsPreview }\n );\n }\n this.adRequestQueue.push(newAdUrl);\n const generationDelay = this.timing.consecutiveFailures > 0 ? Math.min(1e3 * Math.pow(2, this.timing.consecutiveFailures), 5e3) : 500;\n await new Promise((resolve) => setTimeout(resolve, generationDelay));\n }\n this.continuousFetchLoopRunning = false;\n if (this.debug) {\n console.log(\n `[CONTINUOUS-FETCH] URL generation loop ended (queued: ${this.adRequestQueue.length})`,\n this.adRequestQueue.length > 0 ? { queuedUrls: [...this.adRequestQueue] } : {}\n );\n }\n }\n stopContinuousFetching() {\n this.continuousFetchingActive = false;\n this.continuousFetchLoopRunning = false;\n this.placeholder.hide();\n if (this.debug) {\n console.log(\"[CONTINUOUS-FETCH] Stopping continuous ad fetching\");\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Ad iteration\n // ───────────────────────────────────────────────────────────────\n async tryNextAvailableAdWithRateLimit() {\n if (!this.inAdBreak) {\n return;\n }\n const epoch = this.timing.adBreakEpoch;\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] Too many consecutive failures (${this.timing.consecutiveFailures}), ending ad break gracefully`);\n }\n this.handleAdPodComplete();\n return;\n }\n const backoffMultiplier = Math.pow(2, this.timing.consecutiveFailures);\n const backoffDelay = Math.min(this.timing.backoffBaseMs * backoffMultiplier, this.timing.maxBackoffMs);\n const effectiveMinInterval = this.timing.minAdRequestIntervalMs + (this.timing.consecutiveFailures > 0 ? backoffDelay : 0);\n const timeSinceLastRequest = Date.now() - this.timing.lastAdRequestTime;\n if (timeSinceLastRequest < effectiveMinInterval) {\n const waitTime = effectiveMinInterval - timeSinceLastRequest;\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] Rate limiting: waiting ${waitTime}ms before next request (backoff: ${this.timing.consecutiveFailures} failures)`);\n }\n await new Promise((resolve) => setTimeout(resolve, waitTime));\n }\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) {\n return;\n }\n return this.tryNextAvailableAd(0);\n }\n async tryNextAvailableAd(retryCount = 0) {\n if (!this.inAdBreak) {\n return;\n }\n const remaining = this.timing.getRemainingAdMs();\n if (!this.timing.hasTimeToStartAnotherAd()) {\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] Not enough time remaining (${remaining}ms) to start another ad, ending ad break`);\n }\n this.handleAdPodComplete();\n return;\n }\n if (this.timing.isGamInCooldown()) {\n if (this.debug) {\n console.log(\"[CIRCUIT-BREAKER] GAM in cooldown, ending ad break gracefully\");\n }\n this.handleAdPodComplete();\n return;\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] Too many consecutive failures (${this.timing.consecutiveFailures}), ending ad break`);\n }\n this.handleAdPodComplete();\n return;\n }\n this.timing.cleanupTemporaryFailures();\n while (this.adRequestQueue.length > 0) {\n const nextAdUrl = this.adRequestQueue.shift();\n if (!nextAdUrl) continue;\n if (this.timing.failedVastUrls.has(nextAdUrl)) {\n if (this.debug) console.log(\"[CONTINUOUS-FETCH] Skipping permanently-failed URL, trying next...\");\n continue;\n }\n if (this.timing.isUrlInCooldown(nextAdUrl)) {\n if (this.debug) console.log(\"[CONTINUOUS-FETCH] Skipping URL in cooldown (recent no-fill), trying next...\");\n continue;\n }\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] Requesting next ad via HLS ad player (${this.timing.currentAdIndex + 1}, ${this.adRequestQueue.length} remaining in queue)`);\n }\n try {\n await this.playSingleAd(nextAdUrl);\n this.timing.consecutiveFailures = 0;\n } catch (error) {\n const errorMessage = error.message;\n if (this.debug) console.log(\"[CONTINUOUS-FETCH] Ad request failed:\", errorMessage);\n if (errorMessage.includes(\"ad_duration_exceeds_budget\")) {\n await this.tryNextAvailableAdWithRateLimit();\n return;\n }\n if (!errorMessage.includes(\"permanently failed\") && !errorMessage.includes(\"in cooldown\")) {\n this.timing.consecutiveFailures++;\n }\n await this.tryNextAvailableAdWithRateLimit();\n }\n return;\n }\n const maxRetries = 3;\n if (this.continuousFetchingActive && retryCount < maxRetries && remaining > 2e3) {\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] Queue empty, waiting for URLs... (${retryCount + 1}/${maxRetries})`);\n }\n await new Promise((resolve) => setTimeout(resolve, 500));\n await this.tryNextAvailableAd(retryCount + 1);\n return;\n }\n if (!this.isShowingPlaceholder && remaining > 1e3) {\n this.showPlaceholderAndWaitForAds();\n } else {\n if (this.debug) console.log(\"[CONTINUOUS-FETCH] No more ads available, ending ad break\");\n this.handleAdPodComplete();\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Single ad playback\n // ───────────────────────────────────────────────────────────────\n async playSingleAd(vastTagUrl) {\n const adPlayer = this.host.getAdPlayer();\n if (adPlayer.isAdPlaying()) return;\n if (this.timing.failedVastUrls.has(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping permanently-failed VAST URL:\", vastTagUrl);\n throw new Error(\"VAST URL permanently failed\");\n }\n if (this.timing.isUrlInCooldown(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping URL in cooldown (recent no-fill):\", vastTagUrl);\n throw new Error(\"VAST URL in cooldown after no-fill\");\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) console.warn(\"[AD-ERROR] Too many consecutive failures, not requesting more ads\");\n throw new Error(\"Too many consecutive failures\");\n }\n if (this.timing.isGamInCooldown()) {\n if (this.debug) console.warn(\"[CIRCUIT-BREAKER] GAM in cooldown, skipping ad request\");\n throw new Error(\"GAM in cooldown\");\n }\n this.recreateAdController();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.timing.startAdRequestWatchdog(requestToken);\n try {\n await this.timing.enforceGlobalRateLimit();\n this.timing.lastAdRequestTime = Date.now();\n const ap = this.host.getAdPlayer();\n await ap.requestAds(vastTagUrl);\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: vastTagUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.clearAdRequestWatchdog();\n if (this.timing.activeAdRequestToken !== requestToken) return;\n if (!this.timing.ensureLoadedAdFitsBudget(ap)) {\n this.timing.rejectLoadedAdForDuration(ap);\n this.recreateAdController();\n throw new Error(\"ad_duration_exceeds_budget\");\n }\n try {\n this.timing.startAdFailsafeTimer(requestToken);\n await ap.play();\n this.timing.markAdStarted();\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n ap.setAdVolume(getAdAudioVolume(ap));\n this.timing.consecutiveFailures = 0;\n this.timing.temporaryFailureUrls.delete(vastTagUrl);\n } catch (playError) {\n if (this.debug) console.error(\"[AD-ERROR] Failed to play ad:\", playError);\n if (this.timing.isTemporaryAdError(playError)) {\n this.timing.temporaryFailureUrls.set(vastTagUrl, Date.now());\n if (this.debug) console.log(\"[AD-ERROR] Temporary play error - URL can be retried after cooldown\");\n } else {\n this.timing.failedVastUrls.add(vastTagUrl);\n if (this.debug) console.log(\"[AD-ERROR] Permanent play error - URL blacklisted\");\n }\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n throw playError;\n }\n } catch (error) {\n const errorMessage = error?.message || \"\";\n if (this.debug) console.error(\"[AD-ERROR] Ad request failed:\", errorMessage);\n if (this.timing.isTemporaryAdError(error)) {\n this.timing.temporaryFailureUrls.set(vastTagUrl, Date.now());\n if (this.debug) console.log(\"[AD-ERROR] Temporary error (no-fill/timeout) - URL can be retried after cooldown\");\n } else {\n this.timing.failedVastUrls.add(vastTagUrl);\n if (this.debug) console.log(\"[AD-ERROR] Permanent error - URL blacklisted:\", errorMessage);\n }\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n throw error;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Placeholder wait\n // ───────────────────────────────────────────────────────────────\n async showPlaceholderAndWaitForAds() {\n const remaining = this.timing.getRemainingAdMs();\n const waitTime = Math.min(this.maxPlaceholderDurationMs, remaining);\n if (this.timing.isGamInCooldown()) {\n if (this.debug) console.log(\"[CIRCUIT-BREAKER] GAM in cooldown, skipping placeholder wait\");\n this.handleAdPodComplete();\n return;\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) console.log(\"[CONTINUOUS-FETCH] Skipping placeholder - too many consecutive failures\");\n this.handleAdPodComplete();\n return;\n }\n if (waitTime < 1e3) {\n this.handleAdPodComplete();\n return;\n }\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] Showing placeholder for ${waitTime}ms while waiting for ad URLs`);\n }\n this.isShowingPlaceholder = true;\n this.host.getAdPlayer().showPlaceholder();\n const checkInterval = 300;\n const maxChecks = Math.floor(waitTime / checkInterval);\n for (let i = 0; i < maxChecks; i++) {\n await new Promise((resolve) => setTimeout(resolve, checkInterval));\n if (!this.inAdBreak) return;\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) console.log(\"[CONTINUOUS-FETCH] Too many failures during placeholder wait\");\n break;\n }\n if (!this.timing.hasTimeToStartAnotherAd()) {\n if (this.debug) console.log(\"[CONTINUOUS-FETCH] Not enough time remaining during placeholder wait, ending ad break\");\n break;\n }\n while (this.adRequestQueue.length > 0) {\n if (!this.timing.hasTimeToStartAnotherAd()) break;\n const nextAdUrl = this.adRequestQueue.shift();\n if (!nextAdUrl) continue;\n if (this.timing.failedVastUrls.has(nextAdUrl)) continue;\n if (this.timing.isUrlInCooldown(nextAdUrl)) continue;\n if (this.debug) console.log(\"[CONTINUOUS-FETCH] Ad URL available, requesting via HLS ad player\");\n this.isShowingPlaceholder = false;\n this.host.getAdPlayer().hidePlaceholder();\n try {\n await this.playSingleAd(nextAdUrl);\n this.timing.consecutiveFailures = 0;\n } catch (error) {\n const errorMessage = error.message;\n if (errorMessage.includes(\"ad_duration_exceeds_budget\")) {\n await this.tryNextAvailableAdWithRateLimit();\n return;\n }\n if (!errorMessage.includes(\"permanently failed\") && !errorMessage.includes(\"in cooldown\")) {\n this.timing.consecutiveFailures++;\n }\n await this.tryNextAvailableAdWithRateLimit();\n }\n return;\n }\n }\n if (this.debug) console.log(\"[CONTINUOUS-FETCH] Placeholder timeout, ending ad break\");\n this.isShowingPlaceholder = false;\n this.host.getAdPlayer().hidePlaceholder();\n this.handleAdPodComplete();\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break completion\n // ───────────────────────────────────────────────────────────────\n handleAdPodComplete() {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad pod complete - cleaning up\");\n }\n this.timing.resetForBreakEnd();\n this.stopContinuousFetching();\n this.clearPendingAdBreak();\n if (this.isShowingPlaceholder) {\n this.host.getAdPlayer().hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n this.adRequestQueue = [];\n this.inAdBreak = false;\n this.adDetectSentForCurrentBreak = false;\n this.cueManager.activeScte35BreakKey = void 0;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.adPodQueue = [];\n this.showAds = false;\n this.host.getAdPlayer().stop().catch(() => {\n });\n const restoredMuted = this.host.getAdPlayer().getOriginalMutedState();\n const restoredVolume = this.host.getAdPlayer().getOriginalVolume();\n if (this.host.video.muted !== restoredMuted) {\n this.host.video.muted = restoredMuted;\n }\n if (Math.abs(this.host.video.volume - restoredVolume) > 0.01) {\n this.host.video.volume = restoredVolume;\n }\n this.host.video.style.visibility = \"visible\";\n this.host.video.style.opacity = \"1\";\n if (this.host.isLiveStream()) {\n if (this.host.requiresMediaPipelineResetAfterAds()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Live break end \\u2014 hard-reloading stream to reacquire decoder (single-decoder platform)\"\n );\n }\n this.host.reloadLiveStream();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n const liveSyncPos = this.host.getLiveSyncPosition();\n if (liveSyncPos != null && liveSyncPos > this.host.video.currentTime) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live break end \\u2014 snapping to live edge: ${this.host.video.currentTime.toFixed(2)}s \\u2192 ${liveSyncPos.toFixed(2)}s`\n );\n }\n this.host.video.currentTime = liveSyncPos;\n this.host.restartHlsLoad(liveSyncPos);\n }\n this.resumeContentPlayback();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n this.resumeContentPlayback();\n }\n getBufferedAhead() {\n const video = this.host.video;\n const t = video.currentTime;\n const ranges = video.buffered;\n for (let i = 0; i < ranges.length; i++) {\n if (t >= ranges.start(i) - 0.5 && t <= ranges.end(i)) {\n return ranges.end(i) - t;\n }\n }\n return 0;\n }\n describeVideoState() {\n const v = this.host.video;\n const networkStates = [\"EMPTY\", \"IDLE\", \"LOADING\", \"NO_SOURCE\"];\n const readyStates = [\n \"HAVE_NOTHING\",\n \"HAVE_METADATA\",\n \"HAVE_CURRENT_DATA\",\n \"HAVE_FUTURE_DATA\",\n \"HAVE_ENOUGH_DATA\"\n ];\n const net = networkStates[v.networkState] ?? String(v.networkState);\n const ready = readyStates[v.readyState] ?? String(v.readyState);\n const err = v.error ? `code=${v.error.code}${v.error.message ? ` (${v.error.message})` : \"\"}` : \"none\";\n const ranges = [];\n for (let i = 0; i < v.buffered.length; i++) {\n ranges.push(`[${v.buffered.start(i).toFixed(2)}\\u2013${v.buffered.end(i).toFixed(2)}]`);\n }\n return `t=${v.currentTime.toFixed(2)}s paused=${v.paused} ended=${v.ended} seeking=${v.seeking} readyState=${ready} networkState=${net} error=${err} buffered=${ranges.length ? ranges.join(\",\") : \"none\"}`;\n }\n monitorLiveResumeStall(resumeBaseline) {\n const needsReset = this.host.requiresMediaPipelineResetAfterAds();\n const pollIntervalMs = 1e3;\n const graceMs = needsReset ? 8e3 : 5e3;\n const recoveryCooldownMs = needsReset ? 7e3 : 5e3;\n const maxRecoveries = 3;\n const maxMonitorMs = 45e3;\n const startTime = Date.now();\n let baseline = resumeBaseline;\n let recoveries = 0;\n let lastRecoveryAt = 0;\n const video = this.host.video;\n let listenersAttached = false;\n let onMediaEvent;\n const diagEvents = [\n \"loadstart\",\n \"loadedmetadata\",\n \"loadeddata\",\n \"canplay\",\n \"canplaythrough\",\n \"play\",\n \"playing\",\n \"pause\",\n \"waiting\",\n \"stalled\",\n \"suspend\",\n \"seeking\",\n \"seeked\",\n \"emptied\",\n \"error\",\n \"ended\"\n ];\n if (this.debug) {\n onMediaEvent = (e) => {\n const dt = ((Date.now() - startTime) / 1e3).toFixed(1);\n console.log(\n `[ResumeDiag] +${dt}s event=${e.type} \\u2014 ${this.describeVideoState()}`\n );\n };\n for (const name of diagEvents) {\n video.addEventListener(name, onMediaEvent);\n }\n listenersAttached = true;\n console.log(\n `[ResumeDiag] +0.0s monitor start \\u2014 ${this.describeVideoState()}`\n );\n }\n const cleanup = () => {\n if (listenersAttached && onMediaEvent) {\n for (const name of diagEvents) {\n video.removeEventListener(name, onMediaEvent);\n }\n listenersAttached = false;\n }\n };\n const poll = () => {\n if (this.inAdBreak) {\n cleanup();\n return;\n }\n const currentTime = video.currentTime;\n const advanced = currentTime > baseline + 0.5;\n const playing = !video.paused && video.readyState >= 3;\n if (advanced && playing) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live stream resumed successfully after ad break \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n const elapsed = Date.now() - startTime;\n const bufferedAhead = this.getBufferedAhead();\n const wedged = bufferedAhead < 0.5 && !advanced;\n if (elapsed >= maxMonitorMs) {\n if (this.debug && !advanced) {\n console.warn(\n `[StormcloudVideoPlayer] Live stream failed to resume after ${(maxMonitorMs / 1e3).toFixed(0)}s \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n const canRecover = wedged && elapsed >= graceMs && Date.now() - lastRecoveryAt >= recoveryCooldownMs && recoveries < maxRecoveries;\n if (canRecover) {\n recoveries++;\n lastRecoveryAt = Date.now();\n if (needsReset) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n } else if (recoveries === 1) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 calling recoverMediaError() (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.recoverMediaError();\n } else if (recoveries === 2) {\n const liveSyncPos = this.host.getLiveSyncPosition();\n const reloadPos = liveSyncPos != null && liveSyncPos > currentTime ? liveSyncPos : currentTime;\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 restarting HLS load at ${reloadPos.toFixed(2)}s (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n if (liveSyncPos != null && liveSyncPos > currentTime) {\n video.currentTime = liveSyncPos;\n }\n this.host.restartHlsLoad(reloadPos);\n } else {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n }\n baseline = video.currentTime;\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n }\n window.setTimeout(poll, pollIntervalMs);\n };\n window.setTimeout(poll, pollIntervalMs);\n }\n resumeContentPlayback(attempt = 0) {\n const maxAttempts = 5;\n const video = this.host.video;\n if (!video.paused) {\n if (this.debug && attempt === 0) {\n console.log(\"[StormcloudVideoPlayer] Content video already playing after ads\");\n }\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Resuming content playback after ads (attempt ${attempt + 1}/${maxAttempts}, readyState=${video.readyState})`\n );\n }\n if (video.readyState < 3) {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] readyState never reached HAVE_FUTURE_DATA, forcing play()\"\n );\n }\n video.play()?.catch(() => {\n });\n return;\n }\n const onReady = () => {\n video.removeEventListener(\"canplay\", onReady);\n this.resumeContentPlayback(attempt + 1);\n };\n video.addEventListener(\"canplay\", onReady);\n const backoffMs = 500 * (attempt + 1);\n window.setTimeout(() => {\n video.removeEventListener(\"canplay\", onReady);\n if (video.paused) {\n this.resumeContentPlayback(attempt + 1);\n }\n }, backoffMs);\n return;\n }\n const playResult = video.play();\n if (playResult && typeof playResult.catch === \"function\") {\n playResult.catch((error) => {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to resume content playback after ads:\",\n error\n );\n }\n return;\n }\n const backoffMs = 250 * (attempt + 1);\n window.setTimeout(() => {\n this.resumeContentPlayback(attempt + 1);\n }, backoffMs);\n });\n }\n }\n handleAdFailure() {\n this.timing.consecutiveFailures++;\n this.timing.recordGamNoFill();\n const remaining = this.timing.getRemainingAdMs();\n if (this.debug) {\n console.log(\n `[CONTINUOUS-FETCH] Ad failure: remaining=${remaining}ms, queued ads=${this.adRequestQueue.length}, consecutiveFailures=${this.timing.consecutiveFailures}`,\n this.adRequestQueue.length > 0 ? { queuedUrls: [...this.adRequestQueue] } : {}\n );\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) console.log(`[CONTINUOUS-FETCH] Max consecutive failures reached (${this.timing.consecutiveFailures}), ending ad break gracefully`);\n this.handleAdPodComplete();\n return;\n }\n if (this.timing.hasTimeToStartAnotherAd()) {\n this.tryNextAvailableAdWithRateLimit();\n } else {\n if (this.debug) console.log(\"[AD-ERROR] Ad failed and not enough time remaining for another ad. Failed URLs:\", this.timing.failedVastUrls.size);\n this.handleAdPodComplete();\n }\n }\n};\n\n// src/player/StormcloudVideoPlayer.ts\nvar StormcloudVideoPlayer = class {\n constructor(config) {\n this.attached = false;\n this.palPlaybackStarted = false;\n initializePolyfills();\n const browserOverrides = getBrowserConfigOverrides();\n this.config = { ...browserOverrides, ...config };\n this.video = config.videoElement;\n logBrowserInfo(config.debugAdTiming);\n this.adPlayer = this.createAdPlayer(false);\n this.palNonce = createPalNonceManager();\n this.cueManager = new Scte35CueManager(!!this.config.debugAdTiming, {\n onEarlyStartCue: (marker, fragmentSn, cueKey) => {\n this.startAdPrefetch(marker, fragmentSn, cueKey);\n },\n onPlaybackCue: (marker, cueKey) => {\n this.onScte35Marker(marker, cueKey);\n },\n isInAdBreak: () => this.adBreak.inAdBreak\n });\n this.adConfig = new AdConfigManager(this.config, this.video);\n this.timing = new AdTimingService(this.config, this.video, {\n onAdStopTimerFired: () => this.onAdStopTimerFired(),\n onAdStartTimerFired: (marker, cueKey) => {\n this.startScte35AdBreak(\n marker,\n cueKey,\n marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs\n );\n },\n onWatchdogTimeout: () => this.adBreak.handleAdFailure(),\n onFailsafeTimeout: () => this.adBreak.handleAdFailure(),\n getAdState: () => ({\n inAdBreak: this.adBreak.inAdBreak,\n showAds: this.adBreak.showAds,\n adPlaying: this.adPlayer.isAdPlaying()\n })\n });\n this.placeholder = new PlaceholderLayer(this.video, !!this.config.debugAdTiming);\n this.hlsEngine = new HlsEngine(this.config, this.video, this.cueManager, this.timing, {\n onManifestParsed: async (isLive) => this.onManifestParsed(isLive),\n onScte35Cue: (marker, context) => this.cueManager.onScte35Cue(marker, context),\n activatePendingCuesForFragment: (frag) => this.cueManager.activatePendingScte35CuesForFragment(frag),\n onFatalDestroy: () => this.destroy(),\n isInAdBreak: () => this.adBreak.inAdBreak,\n hasPendingAdBreak: () => this.adBreak.pendingAdBreak !== null\n });\n this.adBreak = new AdBreakOrchestrator(\n {\n config: this.config,\n video: this.video,\n getAdPlayer: () => this.adPlayer,\n setAdPlayer: (p) => {\n this.adPlayer = p;\n },\n createAdPlayer: (c) => this.createAdPlayer(c),\n shouldContinueLiveStreamDuringAds: () => this.shouldContinueLiveStreamDuringAds(),\n isLiveStream: () => this.hlsEngine.isLiveStream,\n getLiveSyncPosition: () => this.hlsEngine.getLiveSyncPosition(),\n restartHlsLoad: (position) => this.hlsEngine.restartLoadAt(position),\n reloadLiveStream: () => this.hlsEngine.reloadLiveStream(),\n recoverMediaError: () => this.hlsEngine.recoverMediaError(),\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds(),\n generatePodVastUrl: (base, breakDurationMs) => this.generatePodVastUrl(base, breakDurationMs),\n onAdClick: () => this.palNonce.sendAdClick(),\n onAdInteraction: (event) => this.palNonce.sendAdTouch(event)\n },\n this.timing,\n this.adConfig,\n this.cueManager,\n this.placeholder\n );\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n createAdPlayer(continueLiveStreamDuringAds) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Creating HLS ad player\");\n }\n return createHlsAdPlayer(this.video, {\n continueLiveStreamDuringAds,\n ...this.config.licenseKey ? { licenseKey: this.config.licenseKey } : {},\n ...this.hlsEngine?.hls ? { mainHlsInstance: this.hlsEngine.hls } : {}\n });\n }\n generatePodVastUrl(baseUrl, breakDurationMs) {\n const podParams = this.adConfig.resolvePodParams(breakDurationMs);\n return this.adConfig.generatePodVastUrl(\n baseUrl,\n podParams,\n this.adPlayer,\n this.palNonce,\n this.adBreak.inAdBreak\n );\n }\n // ───────────────────────────────────────────────────────────────\n // Lifecycle\n // ───────────────────────────────────────────────────────────────\n async load() {\n if (!this.attached) {\n this.attach();\n }\n try {\n await this.adConfig.fetchAdConfiguration();\n } catch (error) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to fetch ad configuration:\",\n error\n );\n }\n }\n const palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;\n fetchConsentSignals().catch(() => ({})).then((signals) => {\n this.adConfig.consentSignals = signals;\n const muted = this.video.muted;\n return this.palNonce.generateNonce({\n videoWidth: this.video.offsetWidth || this.video.clientWidth || 640,\n videoHeight: this.video.offsetHeight || this.video.clientHeight || 480,\n adWillAutoPlay: !!this.config.autoplay,\n adWillPlayMuted: muted,\n playerVolume: muted ? 0 : this.video.volume,\n continuousPlayback: this.config.lowLatencyMode ?? false,\n ...palDescriptionUrl ? { descriptionUrl: palDescriptionUrl } : {},\n ...signals.storageAllowed != null ? { allowStorage: signals.storageAllowed } : {}\n });\n }).catch(() => {\n });\n this.adConfig.initializeTracking();\n if (this.hlsEngine.shouldUseNativeHls(() => this.getStreamType())) {\n await this.hlsEngine.setupNativeHls();\n const continueLiveStreamDuringAds = this.shouldContinueLiveStreamDuringAds();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Native HLS ad behavior:\", {\n isLive: this.hlsEngine.isLiveStream,\n continueLiveStreamDuringAds\n });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(continueLiveStreamDuringAds);\n this.adPlayer.initialize();\n return;\n }\n this.hlsEngine.setupHls();\n }\n async onManifestParsed(isLive) {\n if (this.hlsEngine.reloadingLiveStream) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Manifest re-parsed after hard reload \\u2014 skipping ad-player setup\");\n }\n return;\n }\n if (!this.adConfig.isVmapEnabled() && !isLive && this.adConfig.vmapBreaks.length === 0 && this.adConfig.apiVastTagUrl) {\n const prerollKey = \"synthetic-vod-preroll\";\n if (!this.adConfig.consumedVmapBreakIds.has(prerollKey)) {\n this.adConfig.vmapBreaks = [\n { id: prerollKey, startTimeMs: 0, vastTagUrl: this.adConfig.apiVastTagUrl }\n ];\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Injected synthetic VOD preroll from apiVastTagUrl\"\n );\n }\n }\n }\n if (this.debug) {\n const adBehavior = this.shouldContinueLiveStreamDuringAds() ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\"[StormcloudVideoPlayer] Stream type detected:\", {\n isLive,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(this.shouldContinueLiveStreamDuringAds());\n this.adPlayer.initialize();\n }\n attach() {\n if (this.attached) return;\n this.attached = true;\n this.video.autoplay = !!this.config.autoplay;\n this.video.muted = !!this.config.muted;\n this.adPlayer.initialize();\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.attachImaEventListeners();\n this.video.addEventListener(\"play\", () => {\n if (!this.palPlaybackStarted && !this.adPlayer.isAdPlaying()) {\n this.palPlaybackStarted = true;\n this.palNonce.sendPlaybackStart();\n }\n });\n this.endedHandler = () => {\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.onVideoEnded();\n };\n this.video.addEventListener(\"ended\", this.endedHandler);\n this.video.addEventListener(\"mousedown\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.video.addEventListener(\"touchstart\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.timeUpdateHandler = () => {\n this.onTimeUpdate(this.video.currentTime);\n };\n this.video.addEventListener(\"timeupdate\", this.timeUpdateHandler);\n this.emptiedHandler = () => {\n if (this.hlsEngine.nativeHlsMode && this.hlsEngine.videoSrcProtection && !this.adPlayer.isAdPlaying()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Video src was cleared, restoring:\",\n this.hlsEngine.videoSrcProtection\n );\n }\n const currentTime = this.video.currentTime;\n const wasPaused = this.video.paused;\n this.video.src = this.hlsEngine.videoSrcProtection;\n this.video.currentTime = currentTime;\n if (!wasPaused) {\n this.video.play().catch(() => {\n });\n }\n }\n };\n this.video.addEventListener(\"emptied\", this.emptiedHandler);\n }\n shouldContinueLiveStreamDuringAds() {\n if (this.config.pauseContentDuringAds) {\n return false;\n }\n if (this.hlsEngine.isLiveStream) {\n return true;\n }\n const duration = this.video.duration;\n if (!Number.isFinite(duration) || duration === Infinity) {\n return true;\n }\n return false;\n }\n // ───────────────────────────────────────────────────────────────\n // SCTE-35 marker orchestration\n // ───────────────────────────────────────────────────────────────\n onScte35Marker(marker, cueKey) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 marker detected:\", {\n type: marker.type,\n ptsSeconds: marker.ptsSeconds,\n durationSeconds: marker.durationSeconds,\n currentTime: this.video.currentTime,\n raw: marker.raw,\n hasPendingAdBreak: !!this.adBreak.pendingAdBreak\n });\n }\n if (marker.type === \"start\") {\n if (this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n const newDurationMs = marker.durationSeconds * 1e3;\n if (this.timing.expectedAdBreakDurationMs == null || newDurationMs > this.timing.expectedAdBreakDurationMs) {\n this.timing.setAdBreakDurationBoundary(newDurationMs);\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Updated ad break duration from subsequent marker: ${newDurationMs}ms, remaining: ${this.timing.getWallClockRemainingAdMs()}ms`\n );\n }\n }\n }\n return;\n }\n if (!this.adBreak.adDetectSentForCurrentBreak) {\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n }\n const hasPrefetchedAds = this.adBreak.pendingAdBreak && this.adBreak.pendingAdBreak.vastUrls.length > 0;\n const durationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.adBreak.pendingAdBreak?.marker.durationSeconds != null ? this.adBreak.pendingAdBreak.marker.durationSeconds * 1e3 : void 0;\n const isManifest = isManifestBasedMarker(marker);\n const forceImmediate = this.config.immediateManifestAds ?? true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad start decision:\", {\n isManifestMarker: isManifest,\n forceImmediate,\n hasPts: typeof marker.ptsSeconds === \"number\",\n hasPrefetchedAds\n });\n }\n if (isManifest && forceImmediate) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Starting ad immediately (manifest-based)${hasPrefetchedAds ? \" with prefetched ads\" : \"\"}`\n );\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n } else if (typeof marker.ptsSeconds === \"number\") {\n const tol = this.config.driftToleranceMs ?? 1e3;\n const nowMs = this.video.currentTime * 1e3;\n const estCurrentPtsMs = nowMs - this.timing.ptsDriftEmaMs;\n const deltaMs = Math.floor(marker.ptsSeconds * 1e3 - estCurrentPtsMs);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] PTS-based timing calculation:\", {\n nowMs,\n estCurrentPtsMs,\n markerPtsMs: marker.ptsSeconds * 1e3,\n deltaMs,\n tolerance: tol\n });\n }\n if (deltaMs > tol) {\n if (this.debug) {\n console.log(`[StormcloudVideoPlayer] Scheduling ad start in ${deltaMs}ms`);\n }\n this.timing.expectedAdBreakDurationMs = durationMs;\n this.cueManager.scheduledScte35BreakKey = cueKey;\n this.timing.scheduleAdStartIn(deltaMs, marker, cueKey);\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (within tolerance)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (fallback)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n return;\n }\n if (marker.type === \"progress\" && this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n this.timing.setAdBreakDurationBoundary(marker.durationSeconds * 1e3);\n }\n this.timing.scheduleAdStopAtBreakBoundary();\n if (!this.adPlayer.isAdPlaying() && this.timing.activeAdRequestToken === null && this.adBreak.adRequestQueue.length > 0 && this.timing.hasTimeToStartAnotherAd()) {\n this.adBreak.tryNextAvailableAdWithRateLimit();\n }\n return;\n }\n if (marker.type === \"end\") {\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on SCTE end marker\");\n }\n }\n const remaining = this.timing.getRemainingAdMs();\n const adPlaying = this.adPlayer.isAdPlaying();\n const hasQueuedAds = this.adBreak.adRequestQueue.length > 0;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 end marker received:\", {\n remaining,\n adPlaying,\n hasQueuedAds,\n activeAdRequest: this.timing.activeAdRequestToken !== null\n });\n }\n this.timing.scteAdBreakEndWallClockMs = Date.now();\n this.timing.clearAdStartTimer();\n this.timing.clearAdStopTimer();\n if (adPlaying) {\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete();\n return;\n }\n }\n startScte35AdBreak(marker, cueKey, durationMs) {\n this.adBreak.inAdBreak = true;\n this.cueManager.activeScte35BreakKey = cueKey ?? this.cueManager.pendingScte35CueKey;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.timing.currentAdBreakStartWallClockMs = this.timing.resolveScteBreakStartWallClockMs(marker);\n this.timing.setAdBreakDurationBoundary(durationMs);\n this.adBreak.handleAdStart(marker);\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n onAdStopTimerFired() {\n if (!this.adBreak.inAdBreak) return;\n const adPlaying = this.adPlayer.isAdPlaying();\n const checkIntervalMs = Math.max(\n 250,\n Math.floor(this.config.adBreakCheckIntervalMs ?? 1e3)\n );\n const maxExtensionMsConfig = this.config.maxAdBreakExtensionMs;\n const maxExtensionMs = typeof maxExtensionMsConfig === \"number\" && maxExtensionMsConfig > 0 ? maxExtensionMsConfig : 0;\n const endWallClockMs = this.timing.getAdBreakEndWallClockMs() ?? Date.now();\n const overrunMs = Math.max(0, Date.now() - endWallClockMs);\n const shouldExtendAdBreak = adPlaying && overrunMs < maxExtensionMs;\n if (shouldExtendAdBreak) {\n this.timing.scheduleAdStopCountdown(checkIntervalMs);\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Ad break boundary reached (overrun=${overrunMs}ms) - hard-stopping ads and resuming stream`\n );\n }\n if (adPlaying) {\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete();\n }\n // ───────────────────────────────────────────────────────────────\n // Ad prefetch\n // ───────────────────────────────────────────────────────────────\n startAdPrefetch(marker, fragmentSn, cueKey) {\n if (this.adBreak.pendingAdBreak || this.adBreak.inAdBreak) return;\n const scheduled = this.adConfig.findCurrentOrNextBreak(this.video.currentTime * 1e3);\n const tags = this.adConfig.selectVastTagsForBreak(scheduled);\n let baseVastUrl;\n if (tags && tags.length > 0 && tags[0]) {\n baseVastUrl = tags[0];\n } else if (this.adConfig.apiVastTagUrl) {\n baseVastUrl = this.adConfig.apiVastTagUrl;\n } else {\n if (this.debug) console.warn(\"[StormcloudVideoPlayer] No VAST URL available for prefetch\");\n return;\n }\n this.adConfig.beginNewAdPod();\n this.adConfig.podAssignedByPrefetch = true;\n const breakDurationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : void 0;\n const generatedUrls = [this.generatePodVastUrl(baseVastUrl, breakDurationMs)];\n this.adBreak.pendingAdBreak = {\n marker,\n ...fragmentSn !== void 0 ? { detectedAtFragmentSn: fragmentSn } : {},\n vastUrls: generatedUrls,\n isFetching: false,\n fetchStartTime: Date.now()\n };\n this.cueManager.pendingScte35CueKey = cueKey;\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n if (fragmentSn !== void 0) detectPayload.detectedAtFragmentSn = fragmentSn;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n if (this.debug) {\n console.log(\"[PREFETCH] Starting ad prefetch for upcoming ad break\");\n console.log(`[PREFETCH] Pre-generated pod request URL`);\n }\n }\n // ───────────────────────────────────────────────────────────────\n // VMAP time-based ad breaks\n // ───────────────────────────────────────────────────────────────\n onTimeUpdate(currentTimeSec) {\n if (!this.adConfig.isVmapEnabled() || this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const nowMs = currentTimeSec * 1e3;\n const breakToPlay = this.adConfig.findBreakForTime(nowMs);\n if (breakToPlay) {\n void this.handleVmapAdBreak(breakToPlay, nowMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad break failed gracefully:\", error);\n }\n });\n }\n }\n onVideoEnded() {\n if (!this.adConfig.isVmapEnabled() || this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const durationMs = Number.isFinite(this.video.duration) ? Math.floor(this.video.duration * 1e3) : 0;\n const postroll = this.adConfig.vmapBreaks.find(\n (b) => b.startTimeMs === -1 && !this.adConfig.consumedVmapBreakIds.has(this.adConfig.getAdBreakKey(b))\n );\n if (postroll) {\n void this.handleVmapAdBreak(postroll, durationMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP post-roll failed gracefully:\", error);\n }\n });\n }\n }\n async handleVmapAdBreak(adBreak, nowMs) {\n const key = this.adConfig.getAdBreakKey(adBreak);\n if (this.adConfig.consumedVmapBreakIds.has(key)) return;\n const breakStartMs = this.adConfig.resolveBreakStartMs(adBreak);\n if (breakStartMs == null) return;\n const durationMs = adBreak.durationMs ?? 0;\n const endMs = breakStartMs + durationMs;\n const inWindow = durationMs > 0 ? nowMs >= breakStartMs && nowMs < endMs : nowMs >= breakStartMs;\n if (inWindow) {\n this.adConfig.consumedVmapBreakIds.add(key);\n const tags = this.adConfig.selectVastTagsForBreak(adBreak);\n if (!tags || tags.length === 0) return;\n const first = tags[0];\n const rest = tags.slice(1);\n this.adBreak.adPodQueue = rest;\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.showAds = true;\n this.adBreak.inAdBreak = true;\n this.timing.currentAdBreakStartWallClockMs = Date.now();\n try {\n await this.adBreak.playSingleAd(first);\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad request failed:\", error);\n }\n this.adBreak.handleAdPodComplete();\n }\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Public API\n // ───────────────────────────────────────────────────────────────\n getCurrentAdIndex() {\n return this.timing.currentAdIndex;\n }\n getTotalAdsInBreak() {\n return this.timing.totalAdsInBreak;\n }\n getAdRemainingMs() {\n return this.timing.getRemainingAdMs();\n }\n isAdPlaying() {\n return this.adBreak.inAdBreak && this.adPlayer.isAdPlaying();\n }\n isShowingAds() {\n return this.adBreak.showAds;\n }\n getStreamType() {\n const url = this.config.src.toLowerCase();\n if (url.includes(\".m3u8\") || url.includes(\"/hls/\") || url.includes(\"application/vnd.apple.mpegurl\")) {\n return \"hls\";\n }\n return \"other\";\n }\n shouldShowNativeControls() {\n const streamType = this.getStreamType();\n if (streamType === \"other\") {\n return !(this.config.showCustomControls ?? false);\n }\n return !!(this.config.allowNativeHls && !(this.config.showCustomControls ?? false));\n }\n isLive() {\n return this.hlsEngine.isLiveStream;\n }\n isLowLatencyStream() {\n return this.hlsEngine.isLowLatencyStream();\n }\n get videoElement() {\n return this.video;\n }\n toggleMute() {\n toggleMute(this.video, this.adPlayer, this.debug);\n }\n toggleFullscreen() {\n return toggleFullscreen(this.video, this.debug);\n }\n isMuted() {\n return isMuted(this.video, this.adPlayer);\n }\n setMuted(muted) {\n setMuted(this.video, this.adPlayer, muted, this.debug);\n }\n setVolume(volume) {\n setVolume(this.video, this.adPlayer, volume, this.debug);\n }\n getVolume() {\n return getVolume(this.video, this.adPlayer);\n }\n isFullscreen() {\n return isFullscreen();\n }\n resize() {\n resizePlayer(this.video, this.adPlayer, this.debug);\n }\n // ───────────────────────────────────────────────────────────────\n // Destroy\n // ───────────────────────────────────────────────────────────────\n destroy() {\n this.adBreak.stopContinuousFetching();\n this.timing.destroy();\n this.adBreak.clearPendingAdBreak();\n this.placeholder.destroy();\n if (this.timeUpdateHandler) {\n this.video.removeEventListener(\"timeupdate\", this.timeUpdateHandler);\n delete this.timeUpdateHandler;\n }\n if (this.endedHandler) {\n this.video.removeEventListener(\"ended\", this.endedHandler);\n delete this.endedHandler;\n }\n if (this.emptiedHandler) {\n this.video.removeEventListener(\"emptied\", this.emptiedHandler);\n delete this.emptiedHandler;\n }\n this.adConfig.destroyTracking();\n this.hlsEngine.destroy();\n this.adPlayer?.destroy();\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.palNonce.reset();\n this.adBreak.adRequestQueue = [];\n this.timing.consecutiveFailures = 0;\n }\n};\n\n// src/ui/StormcloudVideoPlayer.tsx\nimport {\n FaPlay,\n FaPause,\n FaVolumeUp,\n FaVolumeMute,\n FaVolumeDown\n} from \"react-icons/fa\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar ExpandIcon = ({ size = 18 }) => /* @__PURE__ */ jsxs(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ jsx(\"path\", { d: \"M9 4H4v5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M20 9V4h-5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M15 20h5v-5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M4 15v5h5\" })\n ]\n }\n);\nvar CompressIcon = ({ size = 18 }) => /* @__PURE__ */ jsxs(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ jsx(\"path\", { d: \"M4 9h5V4\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M15 4v5h5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M20 15h-5v5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M9 20v-5H4\" })\n ]\n }\n);\nvar CRITICAL_PROPS = [\n \"src\",\n \"allowNativeHls\",\n \"isLiveStream\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"lowLatencyMode\",\n \"driftToleranceMs\",\n \"vastMode\",\n \"ctvAdRequest\"\n];\nvar CONTROLS_HIDE_DELAY = 3e3;\nvar DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;\nvar StormcloudVideoPlayerComponent = React.memo(\n (props) => {\n const {\n src,\n autoplay,\n muted,\n lowLatencyMode,\n allowNativeHls,\n isLiveStream,\n driftToleranceMs,\n immediateManifestAds,\n debugAdTiming,\n showCustomControls,\n hideLoadingIndicator,\n onVolumeToggle,\n onFullscreenToggle,\n onControlClick,\n onReady,\n wrapperClassName,\n wrapperStyle,\n className,\n style,\n controls,\n playsInline,\n preload,\n poster,\n children,\n licenseKey,\n vastMode,\n vastTagUrl,\n isVmap,\n vmapUrl,\n minSegmentsBeforePlay,\n ctvAdRequest,\n programTitle,\n channelName,\n ...restVideoAttrs\n } = props;\n const videoRef = useRef(null);\n const playerRef = useRef(null);\n const bufferingTimeoutRef = useRef(null);\n const controlsTimerRef = useRef(null);\n const wrapperRef = useRef(null);\n const [adStatus, setAdStatus] = React.useState({ showAds: false, currentIndex: 0, totalAds: 0, remainingSeconds: 0 });\n const [shouldShowNativeControls, setShouldShowNativeControls] = React.useState(true);\n const [isMuted2, setIsMuted] = React.useState(false);\n const [isFullscreen2, setIsFullscreen] = React.useState(false);\n const [isPlaying, setIsPlaying] = React.useState(false);\n const [currentTime, setCurrentTime] = React.useState(0);\n const [duration, setDuration] = React.useState(0);\n const [volume, setVolume2] = React.useState(1);\n const [playbackRate, setPlaybackRate] = React.useState(1);\n const [showVolumeSlider, setShowVolumeSlider] = React.useState(false);\n const [showSpeedMenu, setShowSpeedMenu] = React.useState(false);\n const [isLoading, setIsLoading] = React.useState(true);\n const [isBuffering, setIsBuffering] = React.useState(false);\n const [showCenterPlay, setShowCenterPlay] = React.useState(false);\n const [showLicenseWarning, setShowLicenseWarning] = React.useState(false);\n const [controlsVisible, setControlsVisible] = React.useState(true);\n const [viewportWidth, setViewportWidth] = React.useState(\n typeof window !== \"undefined\" ? window.innerWidth : 1920\n );\n const [isPortrait, setIsPortrait] = React.useState(\n typeof window !== \"undefined\" ? window.innerHeight > window.innerWidth : false\n );\n const [playerAspectRatio, setPlayerAspectRatio] = React.useState(\n DEFAULT_PLAYER_ASPECT_RATIO\n );\n const getResponsiveScale = () => {\n if (viewportWidth < 480) return 0.7;\n if (viewportWidth < 768) return 0.8;\n if (viewportWidth < 1024) return 0.9;\n return 1;\n };\n const responsiveScale = getResponsiveScale();\n const resetControlsTimer = useCallback(() => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n setControlsVisible(true);\n controlsTimerRef.current = window.setTimeout(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, CONTROLS_HIDE_DELAY);\n }, [showVolumeSlider, showSpeedMenu]);\n const handleWrapperMouseMove = useCallback(() => {\n resetControlsTimer();\n }, [resetControlsTimer]);\n const handleWrapperMouseLeave = useCallback(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, [showVolumeSlider, showSpeedMenu]);\n const formatTime = (seconds) => {\n if (!isFinite(seconds)) return \"0:00:00\";\n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor(seconds % 3600 / 60);\n const remainingSeconds = Math.floor(seconds % 60);\n return `${hours}:${minutes.toString().padStart(2, \"0\")}:${remainingSeconds.toString().padStart(2, \"0\")}`;\n };\n const handlePlayPause = () => {\n if (videoRef.current) {\n if (videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n } else {\n videoRef.current.pause();\n setShowCenterPlay(true);\n }\n }\n resetControlsTimer();\n };\n const handleCenterPlayClick = () => {\n if (videoRef.current && videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n }\n };\n const handleTimelineSeek = (e) => {\n if (videoRef.current && duration > 0 && isFinite(duration)) {\n const rect = e.currentTarget.getBoundingClientRect();\n const clickX = e.clientX - rect.left;\n const progress = Math.max(0, Math.min(1, clickX / rect.width));\n const newTime = progress * duration;\n if (isFinite(newTime) && newTime >= 0 && newTime <= duration) {\n videoRef.current.currentTime = newTime;\n }\n }\n resetControlsTimer();\n };\n const handleVolumeChange = (newVolume) => {\n if (playerRef.current && isFinite(newVolume)) {\n const clampedVolume = Math.max(0, Math.min(1, newVolume));\n playerRef.current.setVolume(clampedVolume);\n }\n };\n const handlePlaybackRateChange = (rate) => {\n if (videoRef.current && isFinite(rate) && rate > 0) {\n videoRef.current.playbackRate = rate;\n }\n setShowSpeedMenu(false);\n };\n const isHlsStream = src?.toLowerCase().includes(\".m3u8\") || src?.toLowerCase().includes(\"/hls/\");\n const isLiveUiMode = isLiveStream === true;\n const shouldShowEnhancedControls = showCustomControls && (isHlsStream ? !isLiveUiMode : true);\n const criticalPropsKey = useMemo(() => {\n return CRITICAL_PROPS.map((prop) => `${prop}:${props[prop]}`).join(\"|\");\n }, [\n src,\n allowNativeHls,\n isLiveStream,\n licenseKey,\n isVmap,\n vmapUrl,\n lowLatencyMode,\n driftToleranceMs,\n vastMode\n ]);\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const el = videoRef.current;\n if (!el || !src) return;\n if (!licenseKey) {\n setShowLicenseWarning(true);\n setIsLoading(false);\n console.warn(\n \"StormcloudVideoPlayer: License key is required but not provided. Please set the licenseKey prop to use the player.\"\n );\n return;\n }\n setShowLicenseWarning(false);\n if (debugAdTiming) {\n console.log(\"[StormcloudUI] Initializing player, isLoading=true\");\n }\n if (playerRef.current) {\n try {\n playerRef.current.destroy();\n } catch {\n }\n playerRef.current = null;\n }\n const cfg = {\n src,\n videoElement: el\n };\n if (autoplay !== void 0) cfg.autoplay = autoplay;\n if (muted !== void 0) cfg.muted = muted;\n if (lowLatencyMode !== void 0) cfg.lowLatencyMode = lowLatencyMode;\n if (allowNativeHls !== void 0) cfg.allowNativeHls = allowNativeHls;\n if (isLiveStream !== void 0) cfg.isLiveStream = isLiveStream;\n if (driftToleranceMs !== void 0)\n cfg.driftToleranceMs = driftToleranceMs;\n if (immediateManifestAds !== void 0)\n cfg.immediateManifestAds = immediateManifestAds;\n if (debugAdTiming !== void 0) cfg.debugAdTiming = debugAdTiming;\n if (showCustomControls !== void 0)\n cfg.showCustomControls = showCustomControls;\n if (onVolumeToggle !== void 0) cfg.onVolumeToggle = onVolumeToggle;\n if (onFullscreenToggle !== void 0)\n cfg.onFullscreenToggle = onFullscreenToggle;\n if (onControlClick !== void 0) cfg.onControlClick = onControlClick;\n if (licenseKey !== void 0) cfg.licenseKey = licenseKey;\n if (vastMode !== void 0) cfg.vastMode = vastMode;\n if (vastTagUrl !== void 0) cfg.vastTagUrl = vastTagUrl;\n if (isVmap !== void 0) cfg.isVmap = isVmap;\n if (vmapUrl !== void 0) cfg.vmapUrl = vmapUrl;\n if (minSegmentsBeforePlay !== void 0)\n cfg.minSegmentsBeforePlay = minSegmentsBeforePlay;\n if (ctvAdRequest !== void 0) cfg.ctvAdRequest = ctvAdRequest;\n if (programTitle !== void 0) cfg.programTitle = programTitle;\n if (channelName !== void 0) cfg.channelName = channelName;\n const player = new StormcloudVideoPlayer(cfg);\n playerRef.current = player;\n player.load().then(() => {\n const showNative = player.shouldShowNativeControls();\n setShouldShowNativeControls(showNative);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Player loaded successfully, waiting for video ready\"\n );\n }\n onReady?.(player);\n }).catch((error) => {\n console.error(\n \"StormcloudVideoPlayer: Failed to load player:\",\n error\n );\n setIsLoading(false);\n onReady?.(player);\n });\n return () => {\n try {\n player.destroy();\n } catch {\n }\n playerRef.current = null;\n };\n }, [criticalPropsKey]);\n useEffect(() => {\n if (!playerRef.current) return;\n try {\n if (autoplay !== void 0 && playerRef.current.videoElement) {\n playerRef.current.videoElement.autoplay = autoplay;\n }\n if (muted !== void 0 && !playerRef.current.isShowingAds()) {\n playerRef.current.setMuted(muted);\n }\n } catch (error) {\n console.warn(\"Failed to update player properties:\", error);\n }\n }, [autoplay, muted]);\n useEffect(() => {\n if (!playerRef.current) return;\n const checkAdStatus = () => {\n if (playerRef.current) {\n const showAdsFromMethod = playerRef.current.isShowingAds();\n const showAdsFromAttribute = videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n const showAds = showAdsFromMethod || showAdsFromAttribute;\n const currentIndex = playerRef.current.getCurrentAdIndex();\n const totalAds = playerRef.current.getTotalAdsInBreak();\n const remainingMs = playerRef.current.getAdRemainingMs();\n const remainingSeconds = showAds ? Math.max(0, Math.ceil(remainingMs / 1e3)) : 0;\n setAdStatus((prev) => {\n if (prev.showAds !== showAds || prev.currentIndex !== currentIndex || prev.totalAds !== totalAds || prev.remainingSeconds !== remainingSeconds) {\n if (showAds && !prev.showAds) {\n setShowCenterPlay(false);\n }\n return { showAds, currentIndex, totalAds, remainingSeconds };\n }\n return prev;\n });\n }\n };\n const interval = setInterval(checkAdStatus, 50);\n return () => clearInterval(interval);\n }, []);\n useEffect(() => {\n if (typeof window === \"undefined\" || !playerRef.current) return;\n const handleResize = () => {\n if (playerRef.current && videoRef.current) {\n if (typeof playerRef.current.resize === \"function\") {\n playerRef.current.resize();\n }\n }\n setViewportWidth(window.innerWidth);\n setIsPortrait(window.innerHeight > window.innerWidth);\n };\n window.addEventListener(\"resize\", handleResize);\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n useEffect(() => {\n if (!playerRef.current || !videoRef.current) return;\n const updateStates = () => {\n if (playerRef.current && videoRef.current) {\n setIsMuted(playerRef.current.isMuted());\n setIsPlaying(!videoRef.current.paused);\n const currentTimeValue = videoRef.current.currentTime;\n setCurrentTime(isFinite(currentTimeValue) ? currentTimeValue : 0);\n const durationValue = videoRef.current.duration;\n setDuration(isFinite(durationValue) ? durationValue : 0);\n const volumeValue = playerRef.current.getVolume();\n setVolume2(\n isFinite(volumeValue) ? Math.max(0, Math.min(1, volumeValue)) : 1\n );\n const rateValue = videoRef.current.playbackRate;\n setPlaybackRate(\n isFinite(rateValue) && rateValue > 0 ? rateValue : 1\n );\n }\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n const interval = setInterval(updateStates, 200);\n const handleFullscreenChange = () => {\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n document.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n return () => {\n clearInterval(interval);\n document.removeEventListener(\n \"fullscreenchange\",\n handleFullscreenChange\n );\n };\n }, []);\n useEffect(() => {\n if (!videoRef.current) return;\n const handleLoadedMetadata = () => {\n const video2 = videoRef.current;\n if (video2) {\n if (video2.videoWidth > 0 && video2.videoHeight > 0) {\n setPlayerAspectRatio(video2.videoWidth / video2.videoHeight);\n }\n void video2.offsetHeight;\n }\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadedmetadata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadedData = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadeddata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadStart = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadstart, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleCanPlay = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplay, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleCanPlayThrough = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplaythrough, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleWaiting = () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n }\n bufferingTimeoutRef.current = window.setTimeout(() => {\n setIsBuffering(true);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video buffering detected (after 300ms delay), readyState:\",\n videoRef.current?.readyState,\n \"- showing spinner, isBuffering=true\"\n );\n }\n }, 300);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: waiting, readyState:\",\n videoRef.current?.readyState,\n \"- buffering delay started (300ms)\"\n );\n }\n };\n const handlePlaying = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n setShowCenterPlay(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: playing, readyState:\",\n videoRef.current?.readyState,\n \"- playback started, isLoading=false, isBuffering=false\"\n );\n }\n };\n const handlePause = () => {\n const isAdActive = playerRef.current?.isShowingAds() || videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n if (playerRef.current && !isAdActive) {\n setShowCenterPlay(true);\n } else {\n setShowCenterPlay(false);\n }\n };\n const handleEnded = () => {\n setShowCenterPlay(true);\n };\n const video = videoRef.current;\n video.addEventListener(\"loadstart\", handleLoadStart);\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.addEventListener(\"canplay\", handleCanPlay);\n video.addEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.addEventListener(\"waiting\", handleWaiting);\n video.addEventListener(\"playing\", handlePlaying);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n if (video.paused) {\n setShowCenterPlay(true);\n }\n return () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n video.removeEventListener(\"loadstart\", handleLoadStart);\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n video.removeEventListener(\"canplay\", handleCanPlay);\n video.removeEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.removeEventListener(\"waiting\", handleWaiting);\n video.removeEventListener(\"playing\", handlePlaying);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n };\n }, [debugAdTiming]);\n useEffect(() => {\n setPlayerAspectRatio(DEFAULT_PLAYER_ASPECT_RATIO);\n }, [src]);\n useEffect(() => {\n return () => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n };\n }, []);\n const progressPercent = duration > 0 ? currentTime / duration * 100 : 0;\n const VolumeIcon = isMuted2 || volume === 0 ? FaVolumeMute : volume < 0.5 ? FaVolumeDown : FaVolumeUp;\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\"style\", { children: `\n @keyframes sc-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n @keyframes sc-loading-glow {\n 0%, 100% { opacity: 0.85; transform: scale(1); }\n 50% { opacity: 1; transform: scale(1.05); }\n }\n @keyframes sc-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.6; }\n }\n @keyframes sc-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .sc-wrapper:fullscreen,\n .sc-wrapper:has(*:fullscreen) {\n border-radius: 0 !important;\n box-shadow: none !important;\n width: 100vw !important;\n height: 100vh !important;\n max-width: 100vw !important;\n max-height: 100vh !important;\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n z-index: 999999 !important;\n background: #000 !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n }\n .sc-ctrl-btn {\n background: none;\n border: none;\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n padding: 8px;\n transition: background 0.15s ease, opacity 0.15s ease;\n opacity: 0.9;\n }\n .sc-ctrl-btn:hover {\n opacity: 1;\n background: rgba(255, 255, 255, 0.1);\n }\n .sc-ctrl-btn:active {\n opacity: 0.7;\n }\n .sc-controls-bar {\n transition: opacity 0.35s ease, transform 0.35s ease;\n }\n .sc-progress-track:hover .sc-progress-thumb {\n transform: translate(-50%, -50%) scale(1) !important;\n }\n .sc-loading-hidden .sc-loading-indicator {\n display: none !important;\n }\n ` }),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n ref: wrapperRef,\n className: `sc-wrapper ${wrapperClassName || \"\"}`,\n onMouseMove: handleWrapperMouseMove,\n onMouseLeave: handleWrapperMouseLeave,\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: isFullscreen2 ? \"fixed\" : \"relative\",\n top: isFullscreen2 ? 0 : void 0,\n left: isFullscreen2 ? 0 : void 0,\n overflow: \"hidden\",\n width: isFullscreen2 ? \"100vw\" : \"100%\",\n height: isFullscreen2 ? \"100vh\" : \"auto\",\n minHeight: isFullscreen2 ? \"100vh\" : \"auto\",\n aspectRatio: isFullscreen2 ? void 0 : playerAspectRatio,\n maxWidth: isFullscreen2 ? \"100vw\" : \"100%\",\n maxHeight: isFullscreen2 ? \"100vh\" : \"none\",\n zIndex: isFullscreen2 ? 999999 : void 0,\n backgroundColor: \"#000\",\n borderRadius: isFullscreen2 ? 0 : void 0,\n boxShadow: isFullscreen2 ? \"none\" : void 0,\n ...wrapperStyle\n },\n children: [\n /* @__PURE__ */ jsx(\n \"video\",\n {\n ref: videoRef,\n className,\n style: {\n display: \"block\",\n width: \"100%\",\n height: \"100%\",\n maxWidth: \"100%\",\n maxHeight: isFullscreen2 ? \"100%\" : \"none\",\n objectFit: isFullscreen2 ? \"cover\" : \"contain\",\n backgroundColor: \"#000\",\n aspectRatio: isFullscreen2 ? \"unset\" : void 0,\n ...style\n },\n controls: shouldShowNativeControls && controls && !showCustomControls,\n playsInline,\n preload,\n poster,\n ...restVideoAttrs,\n children\n }\n ),\n (isLoading || isBuffering) && !hideLoadingIndicator && /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: \"sc-loading-indicator\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 20,\n width: `${Math.max(34, 38 * responsiveScale)}px`,\n height: `${Math.max(34, 38 * responsiveScale)}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n animation: \"sc-loading-glow 1.4s ease-in-out infinite\",\n filter: \"drop-shadow(0 6px 14px rgba(0, 0, 0, 0.55))\"\n },\n children: [\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n inset: 0,\n borderRadius: \"50%\",\n border: \"3px solid rgba(255, 255, 255, 0.25)\",\n borderTopColor: \"#ff0000\",\n borderRightColor: \"rgba(255, 255, 255, 0.85)\",\n animation: \"sc-spin 0.8s linear infinite\"\n }\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n width: \"7px\",\n height: \"7px\",\n borderRadius: \"50%\",\n background: \"#ff0000\",\n boxShadow: \"0 0 10px rgba(255, 0, 0, 0.65)\"\n }\n }\n )\n ]\n }\n ),\n showLicenseWarning && /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 25,\n background: \"rgba(220, 38, 38, 0.92)\",\n backdropFilter: \"blur(24px)\",\n color: \"white\",\n padding: \"28px 36px\",\n borderRadius: \"14px\",\n border: \"1px solid rgba(255, 255, 255, 0.15)\",\n boxShadow: \"0 24px 64px rgba(0, 0, 0, 0.5)\",\n textAlign: \"center\",\n maxWidth: \"400px\",\n margin: \"0 16px\"\n },\n children: [\n /* @__PURE__ */ jsx(\"div\", { style: { fontSize: \"18px\", fontWeight: \"700\", marginBottom: \"10px\", letterSpacing: \"-0.02em\" }, children: \"License Key Required\" }),\n /* @__PURE__ */ jsxs(\"div\", { style: { fontSize: \"13px\", lineHeight: \"1.6\", color: \"rgba(255, 255, 255, 0.85)\" }, children: [\n \"Please provide a valid license key to use the Stormcloud Video Player.\",\n /* @__PURE__ */ jsx(\"br\", {}),\n \"Contact your administrator for licensing information.\"\n ] })\n ]\n }\n ),\n adStatus.showAds && /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${12 * responsiveScale}px`,\n left: `${12 * responsiveScale}px`,\n zIndex: 50,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n pointerEvents: \"none\",\n animation: \"sc-fade-in 0.3s ease\"\n },\n children: /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n background: \"rgba(234, 179, 8, 0.95)\",\n color: \"#111\",\n padding: `${4 * responsiveScale}px ${12 * responsiveScale}px`,\n borderRadius: \"6px\",\n fontSize: `${11 * responsiveScale}px`,\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n textTransform: \"uppercase\",\n boxShadow: \"0 2px 12px rgba(234, 179, 8, 0.35)\"\n },\n children: `Ad ${Math.max(1, adStatus.currentIndex)}`\n }\n )\n }\n ),\n showCenterPlay && !isLoading && !isBuffering && !showLicenseWarning && !adStatus.showAds && /* @__PURE__ */ jsx(\n \"div\",\n {\n onClick: handleCenterPlayClick,\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 15,\n cursor: \"pointer\",\n background: \"rgba(0, 0, 0, 0.55)\",\n backdropFilter: \"blur(8px)\",\n borderRadius: \"50%\",\n width: `${92 * responsiveScale}px`,\n height: `${92 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"background 0.2s ease, transform 0.2s ease\",\n animation: \"sc-fade-in 0.2s ease\"\n },\n onMouseEnter: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.72)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1.06)\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.55)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1)\";\n },\n title: \"Play\",\n children: /* @__PURE__ */ jsx(\n FaPlay,\n {\n size: Math.max(24, 32 * responsiveScale),\n color: \"white\",\n style: { marginLeft: \"4px\" }\n }\n )\n }\n ),\n shouldShowEnhancedControls && !showLicenseWarning ? /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n background: \"linear-gradient(0deg, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0.35) 60%, transparent 100%)\",\n padding: `${20 * responsiveScale}px ${12 * responsiveScale}px ${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible || adStatus.showAds ? 1 : 0,\n transform: controlsVisible || adStatus.showAds ? \"translateY(0)\" : \"translateY(6px)\",\n pointerEvents: controlsVisible || adStatus.showAds ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: \"sc-progress-track\",\n style: {\n width: \"100%\",\n height: \"3px\",\n background: \"rgba(255, 255, 255, 0.2)\",\n borderRadius: \"1.5px\",\n marginBottom: `${8 * responsiveScale}px`,\n cursor: \"pointer\",\n position: \"relative\",\n transition: \"height 0.1s ease\"\n },\n onClick: handleTimelineSeek,\n onMouseEnter: (e) => {\n e.currentTarget.style.height = \"5px\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.height = \"3px\";\n },\n children: [\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"1.5px\",\n width: `${progressPercent}%`,\n transition: \"width 0.15s linear\"\n }\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n className: \"sc-progress-thumb\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${progressPercent}%`,\n transform: \"translate(-50%, -50%) scale(0)\",\n width: \"13px\",\n height: \"13px\",\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 4px rgba(0, 0, 0, 0.3)\",\n transition: \"transform 0.1s ease, left 0.15s linear\"\n }\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"white\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ jsx(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: handlePlayPause,\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isPlaying ? \"Pause\" : \"Play\",\n children: isPlaying ? /* @__PURE__ */ jsx(FaPause, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ jsx(FaPlay, { size: Math.max(14, 18 * responsiveScale), style: { marginLeft: \"2px\" } })\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n paddingRight: `${6 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ jsx(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ jsx(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${8 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ jsx(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"Roboto, 'Segoe UI', Arial, sans-serif\",\n color: \"rgba(255, 255, 255, 0.9)\",\n display: viewportWidth < 480 ? \"none\" : \"block\",\n fontVariantNumeric: \"tabular-nums\",\n userSelect: \"none\",\n marginLeft: `${4 * responsiveScale}px`\n },\n children: [\n formatTime(currentTime),\n \" \",\n /* @__PURE__ */ jsx(\"span\", { style: { color: \"rgba(255,255,255,0.5)\" }, children: \"/\" }),\n \" \",\n formatTime(duration)\n ]\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ jsxs(\"div\", { style: { position: \"relative\", display: viewportWidth < 600 ? \"none\" : \"block\" }, children: [\n /* @__PURE__ */ jsxs(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n setShowSpeedMenu(!showSpeedMenu);\n resetControlsTimer();\n },\n style: {\n padding: `${6 * responsiveScale}px ${10 * responsiveScale}px`,\n borderRadius: `${6 * responsiveScale}px`,\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"'SF Mono', 'Cascadia Code', monospace\",\n fontWeight: \"600\",\n minHeight: `${32 * responsiveScale}px`\n },\n title: \"Playback Speed\",\n children: [\n playbackRate,\n \"x\"\n ]\n }\n ),\n showSpeedMenu && /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n bottom: \"100%\",\n right: 0,\n marginBottom: \"8px\",\n background: \"rgba(0, 0, 0, 0.8)\",\n backdropFilter: \"blur(24px)\",\n WebkitBackdropFilter: \"blur(24px)\",\n borderRadius: \"10px\",\n border: \"1px solid rgba(255, 255, 255, 0.1)\",\n overflow: \"hidden\",\n minWidth: \"80px\",\n boxShadow: \"0 12px 40px rgba(0, 0, 0, 0.5)\",\n animation: \"sc-fade-in 0.15s ease\"\n },\n children: [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2].map((speed) => /* @__PURE__ */ jsxs(\n \"button\",\n {\n onClick: () => handlePlaybackRateChange(speed),\n style: {\n display: \"block\",\n width: \"100%\",\n padding: `${8 * responsiveScale}px ${14 * responsiveScale}px`,\n background: playbackRate === speed ? \"rgba(255, 255, 255, 0.12)\" : \"transparent\",\n border: \"none\",\n color: playbackRate === speed ? \"#fff\" : \"rgba(255, 255, 255, 0.7)\",\n cursor: \"pointer\",\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Mono', monospace\",\n fontWeight: playbackRate === speed ? \"700\" : \"500\",\n textAlign: \"center\",\n transition: \"background 0.15s ease, color 0.15s ease\"\n },\n onMouseEnter: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"rgba(255, 255, 255, 0.08)\";\n e.target.style.color = \"#fff\";\n }\n },\n onMouseLeave: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"transparent\";\n e.target.style.color = \"rgba(255, 255, 255, 0.7)\";\n }\n },\n children: [\n speed,\n \"x\"\n ]\n },\n speed\n ))\n }\n )\n ] }),\n /* @__PURE__ */ jsx(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ jsx(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ jsx(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ]\n }\n )\n ]\n }\n ) : showCustomControls && !showLicenseWarning && /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${10 * responsiveScale}px`,\n left: `${10 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transition: \"opacity 0.35s ease\"\n },\n children: [\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n background: \"#ff3b30\",\n animation: \"sc-pulse 1.5s ease-in-out infinite\",\n flexShrink: 0\n }\n }\n ),\n /* @__PURE__ */ jsx(\n \"span\",\n {\n style: {\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Pro Display', 'Segoe UI', Arial, sans-serif\",\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n color: \"#fff\",\n textShadow: \"0 1px 3px rgba(0,0,0,0.6)\",\n userSelect: \"none\"\n },\n children: \"LIVE\"\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: `${10 * responsiveScale}px`,\n right: `${10 * responsiveScale}px`,\n display: \"flex\",\n flexDirection: isPortrait ? \"column\" : \"row\",\n alignItems: isPortrait ? \"flex-end\" : \"center\",\n gap: `${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transform: controlsVisible ? \"translateY(0)\" : \"translateY(4px)\",\n pointerEvents: controlsVisible ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n background: \"rgba(0, 0, 0, 0.6)\",\n borderRadius: `${18 * responsiveScale}px`,\n padding: \"2px\",\n paddingRight: `${8 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ jsx(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ jsx(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${10 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ jsx(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsx(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`,\n background: \"rgba(0, 0, 0, 0.6)\"\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ jsx(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ jsx(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ] }),\n onControlClick && /* @__PURE__ */ jsx(\n \"div\",\n {\n onClick: onControlClick,\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1,\n cursor: \"pointer\"\n }\n }\n )\n ]\n }\n )\n ] });\n },\n (prevProps, nextProps) => {\n for (const prop of CRITICAL_PROPS) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const uiProps = [\n \"autoplay\",\n \"muted\",\n \"controls\",\n \"showCustomControls\",\n \"className\",\n \"style\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"playsInline\",\n \"preload\",\n \"poster\",\n \"children\"\n ];\n for (const prop of uiProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const callbackProps = [\n \"onReady\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n ];\n for (const prop of callbackProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n return true;\n }\n);\n\n// src/StormcloudPlayer.tsx\nimport React3, { Component as Component4, Suspense } from \"react\";\n\n// src/props.ts\nvar noop = () => {\n};\nvar defaultProps = {\n playing: false,\n loop: false,\n controls: true,\n volume: 1,\n muted: false,\n playbackRate: 1,\n width: \"100%\",\n height: \"auto\",\n style: {},\n progressInterval: 1e3,\n playsInline: false,\n autoplay: false,\n preload: \"metadata\",\n poster: \"\",\n className: \"\",\n wrapperClassName: \"\",\n wrapperStyle: {},\n allowNativeHls: false,\n lowLatencyMode: false,\n driftToleranceMs: 1e3,\n immediateManifestAds: true,\n debugAdTiming: false,\n showCustomControls: false,\n hideLoadingIndicator: false,\n licenseKey: \"\",\n isVmap: false,\n vmapUrl: \"\",\n adFailsafeTimeoutMs: 1e4,\n minSegmentsBeforePlay: 2,\n onStart: noop,\n onPlay: noop,\n onPause: noop,\n onBuffer: noop,\n onBufferEnd: noop,\n onEnded: noop,\n onError: noop,\n onDuration: noop,\n onSeek: noop,\n onProgress: noop,\n onVolumeToggle: noop,\n onFullscreenToggle: noop,\n onControlClick: noop\n};\n\n// src/utils.ts\nimport { lazy as reactLazy } from \"react\";\nvar lazy = reactLazy;\nvar omit = (object, keys) => {\n const result = { ...object };\n keys.forEach((key) => {\n delete result[key];\n });\n return result;\n};\nvar isMediaStream = (url) => {\n return typeof window !== \"undefined\" && window.MediaStream && url instanceof window.MediaStream;\n};\nvar supportsWebKitPresentationMode = () => {\n if (typeof window === \"undefined\") return false;\n const video = document.createElement(\"video\");\n return \"webkitSupportsPresentationMode\" in video;\n};\nvar randomString = () => {\n return Math.random().toString(36).substr(2, 9);\n};\nvar parseQuery = (url) => {\n const query = {};\n const queryString = url.split(\"?\")[1] || \"\";\n if (!queryString) return query;\n const manualParse = (qs) => {\n qs.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n try {\n query[decodeURIComponent(key)] = value ? decodeURIComponent(value.replace(/\\+/g, \" \")) : \"\";\n } catch (e) {\n query[key] = value || \"\";\n }\n }\n });\n };\n if (typeof URLSearchParams !== \"undefined\") {\n try {\n const params = new URLSearchParams(queryString);\n params.forEach((value, key) => {\n query[key] = value;\n });\n return query;\n } catch (e) {\n manualParse(queryString);\n }\n } else {\n manualParse(queryString);\n }\n return query;\n};\nvar merge = (target, ...sources) => {\n if (!sources.length) return target;\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} });\n merge(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n return merge(target, ...sources);\n};\nvar isObject = (item) => {\n return item && typeof item === \"object\" && !Array.isArray(item);\n};\nvar IS_BROWSER = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar IS_SAFARI = IS_BROWSER && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\nvar SUPPORTS_HLS = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/vnd.apple.mpegurl\"));\n};\nvar SUPPORTS_DASH = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/dash+xml\"));\n};\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/HlsPlayer.tsx\nimport { Component } from \"react\";\nvar HlsPlayer = class extends Component {\n constructor() {\n super(...arguments);\n this.player = null;\n this.mounted = false;\n this.load = async () => {\n if (!this.props.videoElement || !this.props.src) return;\n try {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n const config = {\n src: this.props.src,\n videoElement: this.props.videoElement\n };\n if (this.props.autoplay !== void 0)\n config.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) config.muted = this.props.muted;\n if (this.props.lowLatencyMode !== void 0)\n config.lowLatencyMode = this.props.lowLatencyMode;\n if (this.props.allowNativeHls !== void 0)\n config.allowNativeHls = this.props.allowNativeHls;\n if (this.props.isLiveStream !== void 0)\n config.isLiveStream = this.props.isLiveStream;\n if (this.props.driftToleranceMs !== void 0)\n config.driftToleranceMs = this.props.driftToleranceMs;\n if (this.props.immediateManifestAds !== void 0)\n config.immediateManifestAds = this.props.immediateManifestAds;\n if (this.props.debugAdTiming !== void 0)\n config.debugAdTiming = this.props.debugAdTiming;\n if (this.props.showCustomControls !== void 0)\n config.showCustomControls = this.props.showCustomControls;\n if (this.props.onVolumeToggle !== void 0)\n config.onVolumeToggle = this.props.onVolumeToggle;\n if (this.props.onFullscreenToggle !== void 0)\n config.onFullscreenToggle = this.props.onFullscreenToggle;\n if (this.props.onControlClick !== void 0)\n config.onControlClick = this.props.onControlClick;\n if (this.props.licenseKey !== void 0)\n config.licenseKey = this.props.licenseKey;\n if (this.props.adFailsafeTimeoutMs !== void 0)\n config.adFailsafeTimeoutMs = this.props.adFailsafeTimeoutMs;\n if (this.props.minSegmentsBeforePlay !== void 0)\n config.minSegmentsBeforePlay = this.props.minSegmentsBeforePlay;\n if (this.props.ctvAdRequest !== void 0)\n config.ctvAdRequest = this.props.ctvAdRequest;\n this.player = new StormcloudVideoPlayer(config);\n this.props.onMount?.(this);\n await this.player.load();\n if (this.mounted) {\n this.props.onReady?.();\n }\n } catch (error) {\n if (this.mounted) {\n this.props.onError?.(error);\n }\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(\"[HlsPlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n this.props.onPlay?.();\n } else {\n console.warn(\"[HlsPlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n this.props.onPause?.();\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.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 === \"player\") return this.player;\n if (key === \"video\") return this.props.videoElement;\n if (key === \"hls\" && this.player) return this.player.hls;\n return null;\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nHlsPlayer.displayName = \"HlsPlayer\";\nHlsPlayer.canPlay = canPlay.hls;\n\n// src/players/FilePlayer.tsx\nimport { Component as Component2 } from \"react\";\nvar FilePlayer = class extends Component2 {\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\n// src/players/index.ts\nvar players = [\n {\n key: \"hls\",\n name: \"HLS Player\",\n canPlay: canPlay.hls,\n lazyPlayer: lazy(() => Promise.resolve({ default: HlsPlayer }))\n },\n {\n key: \"file\",\n name: \"File Player\",\n canPlay: canPlay.file,\n canEnablePIP: (url) => {\n return canPlay.file(url) && (document.pictureInPictureEnabled || typeof document.webkitSupportsPresentationMode === \"function\");\n },\n lazyPlayer: lazy(() => Promise.resolve({ default: FilePlayer }))\n }\n];\nvar players_default = players;\n\n// src/Player.tsx\nimport React2, { Component as Component3 } from \"react\";\nvar SEEK_ON_PLAY_EXPIRY = 5e3;\nvar Player = class extends Component3 {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.isReady = false;\n this.isPlaying = false;\n this.isLoading = true;\n this.loadOnReady = null;\n this.startOnPlay = true;\n this.seekOnPlay = null;\n this.onDurationCalled = false;\n this.handlePlayerMount = (player) => {\n if (this.player) {\n this.progress();\n return;\n }\n this.player = player;\n this.player.load(this.props.src);\n this.progress();\n };\n this.getInternalPlayer = (key) => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.progress = () => {\n if (this.props.src && this.player && this.isReady) {\n const playedSeconds = this.getCurrentTime() || 0;\n const loadedSeconds = this.getSecondsLoaded();\n const duration = this.getDuration();\n if (duration) {\n const progress = {\n playedSeconds,\n played: playedSeconds / duration,\n loaded: 0,\n loadedSeconds: 0\n };\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds;\n progress.loaded = loadedSeconds / duration;\n }\n if (progress.playedSeconds !== this.prevPlayed || progress.loadedSeconds !== this.prevLoaded) {\n this.props.onProgress?.(progress);\n }\n this.prevPlayed = progress.playedSeconds;\n this.prevLoaded = progress.loadedSeconds;\n }\n }\n this.progressTimeout = window.setTimeout(\n this.progress,\n this.props.progressInterval || 1e3\n );\n };\n this.handleReady = () => {\n if (!this.mounted) return;\n this.isReady = true;\n this.isLoading = false;\n const { onReady, playing, volume, muted } = this.props;\n onReady();\n if (!muted && volume !== null) {\n this.player.setVolume(volume);\n }\n if (this.loadOnReady) {\n this.player.load(this.loadOnReady, true);\n this.loadOnReady = null;\n } else if (playing) {\n this.player.play();\n }\n this.handleDurationCheck();\n };\n this.handlePlay = () => {\n this.isPlaying = true;\n this.isLoading = false;\n const { onStart, onPlay, playbackRate } = this.props;\n if (this.startOnPlay) {\n if (this.player.setPlaybackRate && playbackRate !== 1) {\n this.player.setPlaybackRate(playbackRate);\n }\n onStart?.();\n this.startOnPlay = false;\n }\n onPlay?.();\n if (this.seekOnPlay) {\n this.seekTo(this.seekOnPlay);\n this.seekOnPlay = null;\n }\n this.handleDurationCheck();\n };\n this.handlePause = (e) => {\n this.isPlaying = false;\n if (!this.isLoading) {\n this.props.onPause?.(e);\n }\n };\n this.handleEnded = () => {\n const { activePlayer, loop, onEnded } = this.props;\n if (activePlayer.loopOnEnded && loop) {\n this.seekTo(0);\n }\n if (!loop) {\n this.isPlaying = false;\n onEnded?.();\n }\n };\n this.handleError = (...args) => {\n this.isLoading = false;\n this.props.onError?.(args[0], args[1], args[2], args[3]);\n };\n this.handleDurationCheck = () => {\n clearTimeout(this.durationCheckTimeout);\n const duration = this.getDuration();\n if (duration) {\n if (!this.onDurationCalled) {\n this.props.onDuration?.(duration);\n this.onDurationCalled = true;\n }\n } else {\n this.durationCheckTimeout = window.setTimeout(\n this.handleDurationCheck,\n 100\n );\n }\n };\n this.handleLoaded = () => {\n this.isLoading = false;\n };\n }\n componentDidMount() {\n this.mounted = true;\n }\n componentWillUnmount() {\n clearTimeout(this.progressTimeout);\n clearTimeout(this.durationCheckTimeout);\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (!this.player) return;\n const { src, playing, volume, muted, playbackRate, loop, activePlayer } = this.props;\n if (prevProps.src !== src) {\n if (this.isLoading && !activePlayer.forceLoad && !isMediaStream(src)) {\n console.warn(\n `StormcloudPlayer: the attempt to load ${src} is being deferred until the player has loaded`\n );\n this.loadOnReady = src || null;\n return;\n }\n this.isLoading = true;\n this.startOnPlay = true;\n this.onDurationCalled = false;\n this.player.load(src, this.isReady);\n }\n if (!prevProps.playing && playing && !this.isPlaying) {\n this.player.play();\n }\n if (prevProps.playing && !playing && this.isPlaying) {\n this.player.pause();\n }\n if (prevProps.volume !== volume && volume !== null) {\n this.player.setVolume(volume);\n }\n if (prevProps.muted !== muted) {\n if (muted) {\n this.player.mute();\n } else {\n this.player.unmute();\n if (volume !== null) {\n setTimeout(() => this.player.setVolume(volume));\n }\n }\n }\n if (prevProps.playbackRate !== playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(playbackRate);\n }\n if (prevProps.loop !== loop && this.player.setLoop) {\n this.player.setLoop(loop);\n }\n }\n getDuration() {\n if (!this.isReady) return null;\n return this.player.getDuration();\n }\n getCurrentTime() {\n if (!this.isReady) return null;\n return this.player.getCurrentTime();\n }\n getSecondsLoaded() {\n if (!this.isReady) return null;\n return this.player.getSecondsLoaded();\n }\n seekTo(amount, type, keepPlaying) {\n if (!this.isReady) {\n if (amount !== 0) {\n this.seekOnPlay = amount;\n setTimeout(() => {\n this.seekOnPlay = null;\n }, SEEK_ON_PLAY_EXPIRY);\n }\n return;\n }\n const isFraction = !type ? amount > 0 && amount < 1 : type === \"fraction\";\n if (isFraction) {\n const duration = this.player.getDuration();\n if (!duration) {\n console.warn(\n \"StormcloudPlayer: could not seek using fraction \\u2013 duration not yet available\"\n );\n return;\n }\n this.player.seekTo(duration * amount, keepPlaying);\n return;\n }\n this.player.seekTo(amount, keepPlaying);\n }\n render() {\n const Player2 = this.props.activePlayer;\n if (!Player2) {\n return null;\n }\n return React2.createElement(Player2, {\n ...this.props,\n onMount: this.handlePlayerMount,\n onReady: this.handleReady,\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onEnded: this.handleEnded,\n onLoaded: this.handleLoaded,\n onError: this.handleError\n });\n }\n};\nPlayer.displayName = \"Player\";\nPlayer.defaultProps = defaultProps;\n\n// src/StormcloudPlayer.tsx\nvar IS_BROWSER2 = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL2 = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar UniversalSuspense = IS_BROWSER2 || IS_GLOBAL2 ? Suspense : () => null;\nvar SUPPORTED_PROPS = [\n \"src\",\n \"playing\",\n \"loop\",\n \"controls\",\n \"volume\",\n \"muted\",\n \"playbackRate\",\n \"width\",\n \"height\",\n \"style\",\n \"progressInterval\",\n \"playsInline\",\n \"autoplay\",\n \"preload\",\n \"poster\",\n \"className\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"allowNativeHls\",\n \"lowLatencyMode\",\n \"isLiveStream\",\n \"driftToleranceMs\",\n \"immediateManifestAds\",\n \"debugAdTiming\",\n \"showCustomControls\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"adFailsafeTimeoutMs\",\n \"minSegmentsBeforePlay\",\n \"ctvAdRequest\",\n \"onReady\",\n \"onStart\",\n \"onPlay\",\n \"onPause\",\n \"onBuffer\",\n \"onBufferEnd\",\n \"onEnded\",\n \"onError\",\n \"onDuration\",\n \"onSeek\",\n \"onProgress\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n];\nvar customPlayers = [];\nvar createStormcloudPlayer = (playerList, fallback) => {\n var _a;\n return _a = class extends Component4 {\n constructor() {\n super(...arguments);\n this.state = {\n showPreview: false\n };\n this.references = {\n wrapper: (wrapper) => {\n this.wrapper = wrapper;\n },\n player: (player) => {\n this.player = player;\n }\n };\n this.getActivePlayer = (src) => {\n if (!src) return null;\n for (const player of [...customPlayers, ...playerList]) {\n if (player.canPlay(src)) {\n return player;\n }\n }\n if (fallback) {\n return fallback;\n }\n return null;\n };\n this.getAttributes = (src) => {\n return omit(this.props, SUPPORTED_PROPS);\n };\n this.handleReady = () => {\n this.props.onReady?.(this);\n };\n this.seekTo = (fraction, type, keepPlaying) => {\n if (!this.player) return null;\n this.player.seekTo(fraction, type, keepPlaying);\n };\n this.getCurrentTime = () => {\n if (!this.player) return null;\n return this.player.getCurrentTime();\n };\n this.getSecondsLoaded = () => {\n if (!this.player) return null;\n return this.player.getSecondsLoaded();\n };\n this.getDuration = () => {\n if (!this.player) return null;\n return this.player.getDuration();\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.renderActivePlayer = (src) => {\n if (!src) return null;\n const activePlayer = this.getActivePlayer(src);\n if (!activePlayer) return null;\n return React3.createElement(Player, {\n ...this.props,\n key: activePlayer.key,\n ref: this.references.player,\n activePlayer: activePlayer.lazyPlayer || activePlayer,\n onReady: this.handleReady\n });\n };\n }\n render() {\n const {\n src,\n style,\n width,\n height,\n fallback: fallbackElement,\n wrapper: Wrapper\n } = this.props;\n const attributes = this.getAttributes(src);\n const wrapperRef = typeof Wrapper === \"string\" ? this.references.wrapper : void 0;\n return React3.createElement(\n Wrapper,\n {\n ref: wrapperRef,\n style: { ...style, width, height },\n ...attributes\n },\n React3.createElement(\n UniversalSuspense,\n { fallback: fallbackElement },\n this.renderActivePlayer(src)\n )\n );\n }\n }, _a.displayName = \"StormcloudPlayer\", _a.defaultProps = {\n ...defaultProps,\n fallback: null,\n wrapper: \"div\"\n }, _a.addCustomPlayer = (player) => {\n customPlayers.push(player);\n }, _a.removeCustomPlayers = () => {\n customPlayers.length = 0;\n }, _a.canPlay = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canPlay(src)) {\n return true;\n }\n }\n return false;\n }, _a.canEnablePIP = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canEnablePIP && Player2.canEnablePIP(src)) {\n return true;\n }\n }\n return false;\n }, _a;\n};\nvar StormcloudPlayer = createStormcloudPlayer(\n players_default,\n players_default[players_default.length - 1]\n);\nvar StormcloudPlayer_default = StormcloudPlayer;\nexport {\n DEFAULT_TRACKING_INGEST_CONFIG,\n IS_BROWSER,\n IS_GLOBAL,\n IS_IOS,\n IS_SAFARI,\n SUPPORTS_DASH,\n SUPPORTS_HLS,\n StormcloudPlayer_default as StormcloudPlayer,\n StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig,\n buildAnalyticsContext,\n canPlay,\n configureTrackingIngest,\n createHlsAdPlayer,\n createPalNonceManager,\n createStormcloudPlayer,\n StormcloudVideoPlayerComponent as default,\n detectBrowser,\n getBrowserConfigOverrides,\n getBrowserID,\n getClientInfo,\n ingestPlayerTracking,\n initializePolyfills,\n isMediaStream,\n isTrackingIngestEnabled,\n lazy,\n logBrowserInfo,\n merge,\n omit,\n parseQuery,\n players_default as players,\n randomString,\n requiresMediaPipelineResetAfterAds,\n sendAdDetectTracking,\n sendAdImpressionTracking,\n sendAdLoadedTracking,\n sendHeartbeat,\n sendInitialTracking,\n supportsFeature,\n supportsModernJS,\n supportsWebKitPresentationMode,\n trackingIngestConfig\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\index.js"],"names":["React","useEffect","useRef","useMemo","useCallback","Hls","getChromeVersion","ua","match","parseInt","getWebKitVersion","getPlatform","navigator","userAgentData","platform","userAgent","test","detectBrowser","name","version","majorVersion","isSmartTV","isLegacyTV","supportsModernJS2","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","parts","split","toString","Promise","Map","Set","URLSearchParams","supportsModernJS","requiresMediaPipelineResetAfterAds","browser","getBrowserConfigOverrides","overrides","allowNativeHls","pauseContentDuringAds","Array","from","Object","assign","prototype","forEach","String","includes","e","logBrowserInfo","debug","console","log","supportsFeature","feature","TextEncoder","fetch","crypto","subtle","VAST_MACRO_PATTERN","CACHEBUSTING_ALIASES","KNOWN_VAST_MACROS","generateCachebuster","Math","floor","random","formatPlayhead","seconds","Number","isFinite","total","hh","padStart","mm","ss","ms","resolveMacroValues","ctx","values","set","key","value","adPlayhead","adPlayheadSeconds","contentPlayheadSeconds","assetUri","mediaMime","Date","toISOString","errorCode","playerWidth","playerHeight","round","deviceId","deviceIdType","limitAdTracking","pageUrl","URL","hostname","clientUa","podSequence","adServingId","reason","substituteVastTrackingMacros","url","replace","get","encodeURIComponent","has","LINEAR_TRACKING_EVENTS","textOf","el","textContent","trim","parseVastTime","length","map","p","parseFloat","h","m","s","every","n","parseProgressOffset","offset","trimmed","endsWith","percent","offsetPercent","offsetSeconds","MAX_VAST_WRAPPER_DEPTH","BEACON_TIMEOUT_MS","inFlightBeacons","VAST_ERROR_MEDIA_DISPLAY","VAST_ERROR_WRAPPER_TIMEOUT","VAST_ERROR_WRAPPER_LIMIT","VAST_ERROR_WRAPPER_NO_ADS","VAST_ERROR_NO_SUPPORTED_MEDIA","VERIFICATION_NOT_SUPPORTED_REASON","VIEWABLE_MIN_VISIBLE_RATIO","VIEWABLE_MIN_CONTINUOUS_S","toVastMediaErrorCode","error","code","createHlsAdPlayer","contentVideo","options","adPlaying","originalMutedState","originalVolume","max","min","volume","listeners","mainHlsInstance","AD_CONTAINER_PROP","AD_VIDEO_PROP","FRAME_COUNTER_RELIABLE_PROP","RVFC_RELIABLE_PROP","adVideoElement","adHls","adContainerEl","adEventHandlers","containerHandlers","currentAd","currentAdMediaFile","podAds","podIndex","preloadedAds","preloadingAds","destroyed","pendingTimeouts","STALL_TIMEOUT_MS","STALL_CHECK_INTERVAL_MS","BLACKFRAME_MIN_PLAYBACK_S","stallWatchdogId","lastAdProgressTime","lastAdProgressPosition","sawDecodedVideoFrame","videoFrameCallbackHandle","pendingPlayPromise","createTrackingState","impression","loaded","start","firstQuartile","midpoint","thirdQuartile","complete","viewabilitySettled","lastMuted","progressFired","trackingFired","resolvedAds","viewObserver","visibleRatio","continuousVisibleS","lastViewSampleTime","lastPlayerExpanded","documentHandlers","emit","event","payload","fn","warn","buildTrackingMacroContext","options2","ad","context","currentTime","type","clientWidth","clientHeight","location","href","fireTrackingPixels","urls","macroContext","trackingUrl","img","Image","add","timeoutId","release","clearTimeout","onload","onerror","delete","setTimeout","src","getMainStreamQuality","levels","currentLevel","autoLevel","loadLevel","level2","width","height","bitrate","level","selectBestMediaFile","mediaFiles","Error","firstFile","mainQuality","scoredFiles","file","widthDiff","abs","heightDiff","resolutionDiff","fileBitrate","bitrateDiff","score","sort","a","b","bestMatch","resolution","isHlsMediaFile","mediaFile","toLowerCase","isProgressiveMediaFile","startsWith","isAudioMediaFile","collectVideoMediaFiles","linear","verbose","mediaFileElements","querySelectorAll","mf","index","getAttribute","apiFramework","toUpperCase","bitrateAttr","bitrateValue","hasExplicitDimensions","push","createEmptyTrackingUrls","clickTracking","viewable","notViewable","viewUndetermined","verificationNotExecuted","progress","pushUrls","target","elements","collectLinearTracking","into","indexOf","collectAdLevelTracking","adBody","verification","mergeTrackingUrls","source","targetLists","sourceLists","keys","incoming","concat","parseXml","xmlString","xmlDoc","DOMParser","parseFromString","parserError","querySelector","getAdSequence","adElement","sequence","emptyVastResult","root","errorUrls","parseVastXml","adElements","documentElement","find","parsed","parseAdElement","vastAdTagUri","wrapper","trackingUrls2","linear2","trackingUrls","rules","followAdditionalWrappers","inLine","candidate","files","id","title","duration","clickThrough","fetchVastXml","vastTagUrl","credentials","requestVast","response","creds","mode","headers","referrerPolicy","ok","statusText","text","fetchAndParseVastAd","depth","accumulatedTracking","vastXml","substring","fetchAndParsePod","trimmedXml","empty","resolveAd","podElements","buffet","ads","filter","shift","createAdVideoElement","video","document","createElement","style","position","left","top","objectFit","backgroundColor","playsInline","muted","setupAdEventListeners","onTimeUpdate","noteAdProgress","sampleViewability","threshold","onLoadedMetadata","videoWidth","videoHeight","handleVideoDecodeFailure","onCanPlay","onPlaying","startStallWatchdog","creativeView","adId","onEnded","settleViewability","advanceToNextPodAd","handleAdComplete","onError","reportCurrentAdError","handleAdError","onVolumeChange","mute","unmute","isTrackablePlayback","ended","onPause","pause","onPlay","resume","handler","addEventListener","teardownAdEventListeners","removeEventListener","handleAdClick","window","open","fireNotUsedForUnplayedAds","notUsed","now","inView","visibilityState","paused","handleFullscreenChange","fullscreenEl","fullscreenElement","webkitFullscreenElement","expanded","contains","fullscreen","playerExpand","exitFullscreen","playerCollapse","attachContainerHandlers","onClick","onInteraction","onFullscreenChange","IntersectionObserver","entries","entry","isIntersecting","intersectionRatio","observe","detachContainerHandlers","disconnect","setAdPlayingFlag","isPlaying","dataset","stormcloudAdPlaying","resetAdTracking","isRvfcSupported","requestVideoFrameCallback","settlePendingPlay","startAdPlayback","playPromise","play","catch","finally","prepareVideoElementForNewSource","destroy","removeAttribute","load","recreateAdVideoElement","remove","appendChild","loadCurrentAdMedia","isHlsAd","isSupported","enableWorker","lowLatencyMode","loadSource","attachMedia","on","Events","MANIFEST_PARSED","ERROR","_event","data","fatal","canPlayType","clearStallWatchdog","clearInterval","cancelVideoFrameProbe","handleAdStall","getDecodedVideoFrameCount","getVideoPlaybackQuality","quality","totalVideoFrames","legacyCount","webkitDecodedFrameCount","isFrameCounterReliable","markFrameCounterReliable","isRvfcReliable","markRvfcReliable","cancelVideoFrameCallback","startVideoFrameProbe","rvfc","onPresentedFrame","call","blackFrameDetectionEnabled","setInterval","decodedFrames","timeAdvancing","releaseAdDecoder","display","pointerEvents","continueLiveStreamDuringAds","visibility","opacity","initialize","container","right","bottom","alignItems","justifyContent","zIndex","parentElement","requestAds","preloaded","reject","resolve","contentVolume","stop","previousMutedState","clear","isAdPlaying","resize","listener","off","updateOriginalMutedState","nextVolume","isNaN","getOriginalMutedState","getOriginalVolume","setAdVolume","clamped","getAdVolume","showPlaceholder","hidePlaceholder","getLoadedAdDuration","getLoadedAdId","getPodAdCount","getPodTotalDurationMs","reduce","PRIVATE_HOST_PATTERNS","isLocalDevHost","host","some","pattern","toDevSafeUrl","rawUrl","protocol","cleanPath","pathname","PAL_SDK_URL","_nonceLoader","_nonceLoaderAllowStorage","_palLoadPromise","loadPalSdk","goog","pal","existing","timeout","script","async","setAttribute","head","getOrCreateNonceLoader","allowStorage","consentSettings","ConsentSettings","NonceLoader","createPalNonceManager","currentNonce","currentNonceManager","generateNonce","loader","request","manager","NonceRequest","adWillAutoPlay","adWillPlayMuted","playerVolume","continuousPlayback","descriptionUrl","iconsSupported","playerType","playerVersion","supportedApiFrameworks","ppid","sessionId","JSON","stringify","loadNonceManager","getNonce","getCurrentNonce","injectNonce","searchParams","base","sep","sendPlaybackStart","sendPlaybackEnd","sendAdClick","sendAdTouch","reset","DEFAULT_TRACKING_INGEST_CONFIG","enabled","baseUrl","trackingIngestConfig","applyTrackingIngestConfig","configureTrackingIngest","isTrackingIngestEnabled","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","ingestPlayerTracking","licenseKey","body","method","Authorization","status","CTV_SESSION_STORAGE_KEY","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","ANDROID_ID_TYPES","resolveVastEnvironmentSignals","isCtv","platformLat","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","realDeviceId","readStoredDeviceId","readStoredString","inferDeviceIdType","readStoredLimitAdTracking","dpid","getOrCreateStoredUuid","deviceTypeHint","resolveDeviceTypeHint","getOrCreateCtvSessionId","DEVICE_TYPE_HINT","FEATURE_PHONE","SMARTPHONE","DESKTOP","TABLET","CONNECTED_TV","GAME_CONSOLE","SET_TOP_BOX","DEVICE_TYPE_HINT_ALIASES","featurephone","smartphone","mobile","phone","desktop","pc","tablet","ctv","tv","connectedtv","smarttv","gameconsole","stb","settopbox","SET_TOP_BOX_UA","GAME_CONSOLE_UA","CONNECTED_TV_UA","FEATURE_PHONE_UA","override","readDeviceTypeHintOverride","inferDeviceTypeHint","fallback","maxTouchPoints","fromGlobal","normalizeDeviceTypeHint","__STORMCLOUD_DTH__","getNativeBridgeSources","normalized","safeCall","isInteger","thisArg","isEquivalentDeviceIdType","tagType","runtimeType","tag","runtime","resolveNativeDeviceId","includeStored","isMacroPlaceholder","isZeroedAdId","storageKey","readPersistentId","writePersistentId","createUuid","readCookie","localStorage","setItem","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","prefix","cookie","part","decodeURIComponent","slice","bytes","randomUUID","Uint8Array","getRandomValues","seed","performanceNow","i","hex","performance","adinfo","webapis","tifa","getTIFA","lat","isLATEnabled","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","t","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","Boolean","result","normalizeBoolean","getItem","cachedBrowserId","buildAnalyticsContext","config","debugAdTiming","isLiveStream","inputStreamType","getClientInfo","screen","vendor","memory","deviceMemory","hardwareConcurrency","screenInfo","availWidth","availHeight","orientation","pixelDepth","deviceType","brand","os","model","isAndroid","isWebView","isWebApp","webosMatch","tizenMatch","tvMatch","androidModelMatch","outerHeight","outerWidth","matchMedia","matches","standalone","angle","domain","origin","path","language","languages","join","cookieEnabled","doNotTrack","referrer","sha256Hex","input","encodedData","utf8","buffer","hashBuffer","hash","char","fallbackHash","timestamp","digest","encode","unescape","charCodeAt","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","getBrowserID","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","sendInitialTracking","metricEvent","events","sendAdDetectTracking","adDetectInfo","sendHeartbeat","sendAdLoadedTracking","adLoadedInfo","sendAdImpressionTracking","adImpressionInfo","ad_played_count","ad_url","adUrl","heartbeatData","polyfillURLSearchParams","URLSearchParamsPolyfill","init","params","parseQueryString","append","query","cleanQuery","param","decodedKey","safeDecodeURIComponent","decodedValue","str","getAll","callback","polyfillTextEncoder","TextEncoderPolyfill","encoding","charcode","polyfillPromiseFinally","constructor","then","polyfillObjectAssign","sources","TypeError","to","nextSource","nextKey","hasOwnProperty","polyfillArrayFrom","arrayLike","mapFn","items","len","polyfillStringStartsWith","search","pos","polyfillStringEndsWith","polyfillStringIncludes","initializePolyfills","UNEXPANDED_MACRO_PATTERN","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","getValue","correlator","isMacroPlaceholder2","generateCorrelator","buf","Uint32Array","MAX_SAFE_INTEGER","pageViewCorrelator","getPageViewCorrelator","expandInlineMacroPlaceholders","applyDeviceIdentityParams","runtimeId","tagRdid","tagLat","latValue","tagRdidValid","tagTypeValid","removeBrokenAppNameOrphans","toDelete","_value","suffix","normalizeVastTagUrl","raw","anValue","orphanFragments","reconstructed","_match","val","applyVastMacros","expandedUrl","replaceCorrelatorFallback","streamCorrelator","pod","podMinDurationMs","podMaxDurationMs","podMaxAds","existingUrl","consent","gdpr","gdprConsent","usPrivacy","adTest","programTitle","channelName","staleKeys","correlatorRegex","fetchConsentSignals","timeoutMs","signals","tasks","tcfApi","__tcfapi","settled","tcData","success","eventStatus","gdprApplies","storageAllowed","purpose","consents","tcString","listenerId","uspApi","__uspapi","uspString","all","parseCueOutDuration","num","dStr","d","parseCueOutCont","res","elapsedMatch","durationMatch","elapsed","slashMatch","parseAttributeList","attrs","regex","exec","rawVal","toNumber","isManifestBasedMarker","marker","id3","splice_command_type","decodeId3ValueToText","decoder","TextDecoder","decode","out","fromCharCode","getFragmentStartSeconds","frag","candidates","startPTS","parseScte35FromId3","cueOutMatch","arg","dur","ptsSeconds","durationSeconds","cueOutContMatch","cont","cueInMatch","daterangeMatch","hasScteOut","hasScteIn","klass","bin","parseScte35Binary","normalizeFragmentPayload","ArrayBuffer","isView","view","byteOffset","byteLength","detectTsPacketFormat","packetSizes","packetSize","tsPayloadOffset","matchedPackets","packetStart","getPsiSectionStart","payloadUnitStart","pointerField","sectionStart","getPsiSectionLength","parsePatSection","pmtPids","sectionLength","sectionEnd","programNumber","pid","descriptorsIdentifyScte35","end","descriptorStart","descriptorEnd","registration","parsePmtSection","tsScte35Pids","programInfoLength","streamType","elementaryPid","esInfoLength","hasProcessedTsScte35Section","section","processedSections","checksum","size","firstKey","next","addScte35SectionMarker","markers","appendScte35Bytes","assemblers","assembler","expectedLength","collectScte35SectionsFromPayload","previousAssembler","subarray","tableId","totalLength","parseScte35FromTsPackets","packetInfo","sectionAssemblers","tsStart","secondByte","thirdByte","fourthByte","adaptationFieldControl","hasPayload","payloadStart","adaptationLength","payloadEnd","BitReader","bytePos","bitPos","readBits","numBits","remainingInByte","toRead","currentByte","mask","bits","skipBits","bytePosition","readSpliceTime","r","ptsAdjustmentTicks","timeSpecifiedFlag","high","low","ptsTicks","markerTypeFromSegmentationTypeId","segmentationTypeId","parseScte35SegmentationDescriptor","descriptor","identifier","segmentationEventId","cancelIndicator","programSegmentationFlag","segmentationDurationFlag","componentCount","durationTicks","segmentationUpidLength","markerType","parseScte35SegmentationDescriptors","descriptorLoopLength","descriptorOffset","descriptorTag","descriptorLength","descriptorDataStart","descriptorDataEnd","descriptorMarker","ptsAdjHigh","ptsAdjLow","spliceCommandLength","spliceCommandType","spliceEventId","commandBodyStart","cancel","outOfNetwork","programSpliceFlag","durationFlag","spliceImmediateFlag","componentPtsSeconds","expectedDescriptorOffset","splice_event_id","segmentation_event_id","Scte35CueManager","callbacks","pendingScte35Cues","recentScte35CueKeys","recentScte35CueLimit","processedTsScte35Sections","pendingScte35CueKey","pendingScte35CueKeyValue","activeScte35BreakKey","activeScte35BreakKeyValue","scheduledScte35BreakKey","scheduledScte35BreakKeyValue","createScte35CueContext","readiness","sn","fragmentSn","fragmentStartSec","fragmentStartSeconds","onScte35Cue","cue","createScte35Cue","pendingKey","getPendingScte35CueKey","trimRecentScte35CueMaps","onEarlyStartCue","shouldAcceptScte35EndCue","inAdBreak","isInAdBreak","hasRecentlyHandledScte35Cue","markScte35CueHandled","onPlaybackCue","activatePendingScte35CuesForFragment","matchingCues","getScte35CueKey","getScte35MarkerRaw","toIdentityString","daterangeId","ID","scteValue","isStrongScte35CueKey","recentKey","AdConfigManager","vmapBreaks","consumedVmapBreakIds","consentSignals","podCounter","podAssignedByPrefetch","lastHeartbeatTime","defaultPodMaxAds","defaultPodMaxDurationMs","viewCorrelator","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","vastMode","vastEndpoint","apiUrl","imaPayload","decodedPayload","numberAds","fetchAndParseVmap","apiVastTagUrl","json","ima","vast","cue_tones","number_ads","apiNumberAds","vmapXml","parseVmapToBreaks","doc","VMAP_NS","adBreakNodes","getElementsByTagNameNS","getElementsByTagName","localName","node","timeOffsetRaw","startTimeMs","parseVmapTimeOffsetToMs","adTagNode","adTagUrl","breakId","aStart","bStart","timeOffset","hms","hours","minutes","millis","ratio","durationSec","getAdBreakKey","adBreak","resolveBreakStartMs","findCurrentOrNextBreak","nowMs","schedule","tol","driftToleranceMs","breakStartMs","findBreakForTime","durationMs","selectVastTagsForBreak","beginNewAdPod","resolvePodParams","breakDurationMs","maxDurationMs","maxAds","minDurationMs","podExactDuration","getPalDescriptionUrl","generatePodVastUrl","podParams","adPlayer","palNonce","envSignals","ctvAdRequest","urlWithMacros","autoplay","finalUrl","initializeTracking","heartbeatInterval","sendHeartbeatIfNeeded","destroyTracking","AdTimingService","adRequestWatchdogToken","adFailsafeToken","ptsDriftEmaMs","adBreakPlayedDurationMs","adBreakEpoch","adRequestTokenCounter","activeAdRequestToken","currentAdIndex","totalAdsInBreak","totalAdRequestsInBreak","maxTotalAdRequestsPerBreak","lastAdRequestTime","consecutiveFailures","maxConsecutiveFailures","minAdRequestIntervalMs","backoffBaseMs","maxBackoffMs","defaultMinRemainingMsToStartAd","failedVastUrls","temporaryFailureUrls","temporaryFailureCooldownMs","globalConsecutiveNoFills","globalNoFillThreshold","globalNoFillCooldownUntil","globalNoFillBackoffBaseMs","globalNoFillBackoffMaxMs","globalLastGamRequestTime","globalMinGamIntervalMs","scheduleAdStopCountdown","remainingMs","clearAdStopTimer","ensureAdStoppedByTimer","adStopTimerId","onAdStopTimerFired","scheduleAdStartIn","delayMs","cueKey","clearAdStartTimer","onAdStartTimerFired","adStartTimerId","updatePtsDrift","ptsSecondsSample","sampleMs","alpha","resolveScteBreakStartWallClockMs","nowWallClockMs","estimatedCurrentPtsMs","deltaMs","setAdBreakDurationBoundary","expectedAdBreakDurationMs","currentAdBreakStartWallClockMs","scteAdBreakEndWallClockMs","scheduleAdStopAtBreakBoundary","getWallClockRemainingAdMs","endWallClockMs","getAdBreakEndWallClockMs","getDurationBudgetRemainingMs","getLoadedAdDurationMs","adController","adFitsRemainingBudget","logAdDurationDecision","accepted","remainingBudget","recordPlayedAdDuration","ensureLoadedAdFitsBudget","fits","rejectLoadedAdForDuration","markAdStarted","notePodAdStarted","getRemainingAdMs","wallClockRemaining","budgetRemaining","getMinRemainingMsToStartAd","configured","minRemainingMsToStartAd","hasTimeToStartAnotherAd","minRemaining","isTemporaryAdError","message","isUrlInCooldown","failureTime","cleanupTemporaryFailures","isGamInCooldown","recordGamNoFill","exponent","backoff","pow","resetGamNoFillCounter","enforceGlobalRateLimit","waitMs","startAdRequestWatchdog","token","clearAdRequestWatchdog","adFailsafeTimeoutMs","adRequestWatchdogId","logAdState","onWatchdogTimeout","startAdFailsafeTimer","clearAdFailsafeTimer","failsafeMs","adFailsafeTimerId","videoPaused","onFailsafeTimeout","extra","getAdState","showAds","resetForBreakEnd","PlaceholderLayer","ensureContainer","transition","show","wasHidden","offsetHeight","requestAnimationFrame","hide","removeChild","Hls2","HlsEngine","cueManager","timing","nativeHlsMode","videoSrcProtection","reloadingLiveStream","bufferedSegmentsCount","shouldAutoplayAfterBuffering","hasInitialBufferCompleted","latencyProfileApplied","shouldUseNativeHls","getStreamType","canNative","setupNativeHls","adBehavior","isLive","setupHls","hls","backBufferLength","liveDurationInfinity","maxLiveSyncPlaybackRate","maxBufferLength","maxMaxBufferLength","maxBufferSize","maxBufferHole","highBufferWatchdogPeriod","nudgeOffset","nudgeMaxRetry","startPosition","MEDIA_ATTACHED","_","_data","minSegments","details","live","onManifestParsed","detectedLowLatencyStream","minSegmentsBeforePlay","LEVEL_LOADED","_evt","applyStreamLatencyProfile","hasPendingAdBreak","fragments","fragmentsToScan","tagList","isArray","idx","earlyDetection","FRAG_BUFFERED","err","FRAG_PARSING_METADATA","id3Tags","samples","pts","onId3Tag","FRAG_LOADED","processFragmentScte35Payload","FRAG_DECRYPTED","FRAG_CHANGED","activatePendingCuesForFragment","prog","ErrorTypes","NETWORK_ERROR","startLoad","MEDIA_ERROR","recoverMediaError","onFatalDestroy","isLowLatencyStream","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","canBlockReload","partTarget","partHoldBack","partListLength","partList","targetDuration","targetduration","hasParts","hasPartTarget","hasPartHoldBack","payloadData","getLiveSyncPosition","liveSyncPosition","restartLoadAt","stopLoad","reloadLiveStream","detachMedia","recreateDelayMs","getAdAudioVolume","toggleMute","newMutedState","restoreVolume","toggleFullscreen","requestFullscreen","isMuted","setMuted","setVolume","clampedVolume","getVolume","isFullscreen","resizePlayer","AdBreakOrchestrator","adConfig","placeholder","isShowingPlaceholder","adDetectSentForCurrentBreak","continuousFetchingActive","continuousFetchLoopRunning","adRequestQueue","adPodQueue","maxPlaceholderDurationMs","pendingAdBreak","analyticsContext","nextAdRequestUrl","baseVastUrl","remaining","attachImaEventListeners","getAdPlayer","onAdClick","onAdInteraction","adIndex","queuedUrls","tryNextAvailableAdWithRateLimit","handleAdPodComplete","errorPayload","errorMessage","vastErrorCode","cause","innerError","causeMessage","handleAdFailure","recreateAdController","shouldShowPlaceholder","preservedMutedState","preservedVolumeState","shouldContinueLiveStreamDuringAds","newAdPlayer","createAdPlayer","setAdPlayer","clearPendingAdBreak","prefetchTimerId","handleAdStart","_marker","scheduled","tags","adBreakDurationMs","currentMuted","currentVolume","podPlayed","startOptimizedPod","startContinuousFetching","podUrl","requestToken","podCount","vastUrls","vastUrl","continuousFetchLoop","epoch","maxQueueSize","newAdUrl","queuedUrlsPreview","generationDelay","stopContinuousFetching","backoffMultiplier","backoffDelay","effectiveMinInterval","timeSinceLastRequest","waitTime","tryNextAvailableAd","retryCount","nextAdUrl","maxRetries","playSingleAd","showPlaceholderAndWaitForAds","ap","playError","checkInterval","maxChecks","restoredMuted","restoredVolume","monitorLiveResumeStall","liveSyncPos","toFixed","restartHlsLoad","resumeContentPlayback","getBufferedAhead","ranges","buffered","describeVideoState","networkStates","readyStates","v","net","networkState","ready","readyState","seeking","resumeBaseline","needsReset","pollIntervalMs","graceMs","recoveryCooldownMs","maxRecoveries","maxMonitorMs","startTime","baseline","recoveries","lastRecoveryAt","listenersAttached","onMediaEvent","diagEvents","dt","cleanup","poll","advanced","playing","bufferedAhead","wedged","canRecover","reloadPos","attempt","maxAttempts","onReady","backoffMs","playResult","StormcloudVideoPlayer","attached","palPlaybackStarted","browserOverrides","videoElement","startAdPrefetch","onScte35Marker","startScte35AdBreak","hlsEngine","c","palDescriptionUrl","attach","offsetWidth","prerollKey","endedHandler","onVideoEnded","timeUpdateHandler","emptiedHandler","wasPaused","Infinity","newDurationMs","detectPayload","hasPrefetchedAds","isManifest","forceImmediate","immediateManifestAds","isManifestMarker","hasPts","estCurrentPtsMs","markerPtsMs","tolerance","hasQueuedAds","activeAdRequest","checkIntervalMs","adBreakCheckIntervalMs","maxExtensionMsConfig","maxAdBreakExtensionMs","maxExtensionMs","overrunMs","shouldExtendAdBreak","generatedUrls","detectedAtFragmentSn","isFetching","fetchStartTime","currentTimeSec","breakToPlay","handleVmapAdBreak","postroll","endMs","inWindow","first","rest","getCurrentAdIndex","getTotalAdsInBreak","getAdRemainingMs","isShowingAds","shouldShowNativeControls","showCustomControls","FaPlay","FaPause","FaVolumeUp","FaVolumeMute","FaVolumeDown","Fragment","jsx","jsxs","ExpandIcon","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","focusable","children","CompressIcon","CRITICAL_PROPS","CONTROLS_HIDE_DELAY","DEFAULT_PLAYER_ASPECT_RATIO","StormcloudVideoPlayerComponent","memo","props","hideLoadingIndicator","onVolumeToggle","onFullscreenToggle","onControlClick","wrapperClassName","wrapperStyle","className","controls","preload","poster","restVideoAttrs","videoRef","playerRef","bufferingTimeoutRef","controlsTimerRef","wrapperRef","useState","currentIndex","totalAds","remainingSeconds","adStatus","setAdStatus","setShouldShowNativeControls","isMuted2","setIsMuted","isFullscreen2","setIsFullscreen","setIsPlaying","setCurrentTime","setDuration","setVolume2","playbackRate","setPlaybackRate","showVolumeSlider","setShowVolumeSlider","showSpeedMenu","setShowSpeedMenu","isLoading","setIsLoading","isBuffering","setIsBuffering","showCenterPlay","setShowCenterPlay","showLicenseWarning","setShowLicenseWarning","controlsVisible","setControlsVisible","innerWidth","viewportWidth","setViewportWidth","innerHeight","isPortrait","setIsPortrait","playerAspectRatio","setPlayerAspectRatio","getResponsiveScale","responsiveScale","resetControlsTimer","current","handleWrapperMouseMove","handleWrapperMouseLeave","formatTime","handlePlayPause","hasValidSource","currentSrc","handleCenterPlayClick","handleTimelineSeek","rect","currentTarget","getBoundingClientRect","clickX","clientX","newTime","handleVolumeChange","newVolume","handlePlaybackRateChange","rate","isHlsStream","isLiveUiMode","shouldShowEnhancedControls","criticalPropsKey","prop","player","showNative","checkAdStatus","showAdsFromMethod","showAdsFromAttribute","ceil","prev","interval","handleResize","updateStates","currentTimeValue","durationValue","volumeValue","rateValue","handleLoadedMetadata","video2","handleLoadedData","handleLoadStart","handleCanPlay","handleCanPlayThrough","handleWaiting","handlePlaying","handlePause","isAdActive","handleEnded","progressPercent","VolumeIcon","ref","onMouseMove","onMouseLeave","overflow","minHeight","aspectRatio","maxWidth","maxHeight","borderRadius","boxShadow","transform","animation","inset","border","borderTopColor","borderRightColor","background","backdropFilter","color","padding","textAlign","margin","fontSize","fontWeight","marginBottom","letterSpacing","lineHeight","gap","textTransform","cursor","onMouseEnter","marginLeft","minWidth","paddingRight","paddingLeft","onMouseDown","preventDefault","move","ev","r2","up","stopPropagation","fontFamily","fontVariantNumeric","userSelect","WebkitBackdropFilter","speed","flexShrink","textShadow","flexDirection","prevProps","nextProps","uiProps","callbackProps","React3","Component","Component4","Suspense","noop","defaultProps","loop","progressInterval","onStart","onBuffer","onBufferEnd","onDuration","onSeek","onProgress","lazy","reactLazy","omit","object","isMediaStream","MediaStream","supportsWebKitPresentationMode","randomString","substr","parseQuery","queryString","manualParse","qs","merge","isObject","item","IS_BROWSER","IS_GLOBAL","globalThis","IS_IOS","IS_SAFARI","SUPPORTS_HLS","SUPPORTS_DASH","HLS_EXTENSIONS","HLS_PATHS","DASH_EXTENSIONS","VIDEO_EXTENSIONS","AUDIO_EXTENSIONS","canPlay","dash","audio","HlsPlayer","arguments","mounted","onMount","seekTo","keepPlaying","getDuration","getCurrentTime","getSecondsLoaded","getInternalPlayer","componentDidMount","componentWillUnmount","componentDidUpdate","render","displayName","Component2","FilePlayer","handlePlay","handleError","onLoaded","setLoop","enablePIP","requestPictureInPicture","disablePIP","pictureInPictureElement","exitPictureInPicture","players","lazyPlayer","default","canEnablePIP","pictureInPictureEnabled","webkitSupportsPresentationMode","players_default","React2","Component3","SEEK_ON_PLAY_EXPIRY","Player","isReady","loadOnReady","startOnPlay","seekOnPlay","onDurationCalled","handlePlayerMount","playedSeconds","loadedSeconds","played","prevPlayed","prevLoaded","progressTimeout","handleReady","handleDurationCheck","activePlayer","loopOnEnded","args","durationCheckTimeout","handleLoaded","forceLoad","amount","isFraction","Player2","IS_BROWSER2","IS_GLOBAL2","UniversalSuspense","SUPPORTED_PROPS","customPlayers","createStormcloudPlayer","playerList","_a","state","showPreview","references","getActivePlayer","getAttributes","fraction","renderActivePlayer","fallbackElement","Wrapper","attributes","addCustomPlayer","removeCustomPlayers","StormcloudPlayer","StormcloudPlayer_default"],"mappings":"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","sourcesContent":["// src/ui/StormcloudVideoPlayer.tsx\nimport React, { useEffect, useRef, useMemo, useCallback } from \"react\";\n\n// src/sdk/hlsAdPlayer.ts\nimport Hls from \"hls.js\";\n\n// src/utils/browserCompat.ts\nfunction getChromeVersion(ua) {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getWebKitVersion(ua) {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getPlatform() {\n if (\"userAgentData\" in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? \"iPhone\" : \"MacIntel\";\n }\n if (/Win/i.test(ua)) {\n return \"Win32\";\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? \"Linux armv8l\" : \"Linux x86_64\";\n }\n if (/CrOS/i.test(ua)) {\n return \"CrOS\";\n }\n return navigator.platform || \"Unknown\";\n}\nfunction detectBrowser() {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n let name = \"Unknown\";\n let version = \"0\";\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsModernJS2 = true;\n let webOSVersion;\n let tizenVersion;\n let chromeVersionNum;\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : void 0;\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = \"LG WebOS\";\n isSmartTV = true;\n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n if (match && match[1]) {\n version = match[1];\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = \"6.0\";\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = \"5.0\";\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = \"4.0\";\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = \"3.0\";\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = \"2.0\";\n majorVersion = 2;\n }\n } else {\n version = \"Unknown\";\n webOSVersion = void 0;\n }\n isLegacyTV = webOSVersion !== void 0 && webOSVersion < 3;\n } else if (/Tizen/i.test(ua)) {\n name = \"Samsung Tizen\";\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : \"Unknown\";\n if (version !== \"Unknown\") {\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n isLegacyTV = tizenVersion !== void 0 && tizenVersion < 3;\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = \"Smart TV\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else if (/NetCast/i.test(ua)) {\n name = \"LG NetCast\";\n isSmartTV = true;\n isLegacyTV = true;\n } else if (/BRAVIA/i.test(ua)) {\n name = \"Sony BRAVIA\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else {\n if (chromeVersion > 0) {\n name = \"Chrome\";\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n if (chromeVersion < 50) {\n supportsModernJS2 = false;\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS2 = false;\n }\n }\n if (typeof Promise === \"undefined\" || typeof Map === \"undefined\" || typeof Set === \"undefined\") {\n supportsModernJS2 = false;\n }\n if (typeof URLSearchParams === \"undefined\") {\n supportsModernJS2 = false;\n }\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsModernJS: supportsModernJS2,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum\n };\n}\nfunction requiresMediaPipelineResetAfterAds() {\n const browser = detectBrowser();\n return browser.name === \"Samsung Tizen\" && (browser.tizenVersion ?? 0) >= 5;\n}\nfunction getBrowserConfigOverrides() {\n const browser = detectBrowser();\n const overrides = {};\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n overrides.pauseContentDuringAds = true;\n }\n return overrides;\n}\nfunction supportsModernJS() {\n try {\n return typeof Promise !== \"undefined\" && typeof Map !== \"undefined\" && typeof Set !== \"undefined\" && typeof Array.from !== \"undefined\" && typeof Object.assign !== \"undefined\" && typeof Array.prototype.forEach !== \"undefined\" && typeof String.prototype.includes !== \"undefined\";\n } catch (e) {\n return false;\n }\n}\nfunction logBrowserInfo(debug = false) {\n if (!debug) return;\n const browser = detectBrowser();\n console.log(\"[StormcloudVideoPlayer] Browser Compatibility Info:\", {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsModernJS: browser.supportsModernJS,\n ...browser.webOSVersion !== void 0 ? { webOSVersion: browser.webOSVersion } : {},\n ...browser.tizenVersion !== void 0 ? { tizenVersion: browser.tizenVersion } : {},\n ...browser.chromeVersion !== void 0 ? { chromeVersion: browser.chromeVersion } : {},\n userAgent: navigator.userAgent\n });\n}\nfunction supportsFeature(feature) {\n switch (feature) {\n case \"urlsearchparams\":\n return typeof URLSearchParams !== \"undefined\";\n case \"textencoder\":\n return typeof TextEncoder !== \"undefined\";\n case \"promises\":\n return typeof Promise !== \"undefined\";\n case \"fetch\":\n return typeof fetch !== \"undefined\";\n case \"crypto\":\n return typeof crypto !== \"undefined\" && typeof crypto.subtle !== \"undefined\";\n default:\n return false;\n }\n}\n\n// src/utils/vastTrackingMacros.ts\nvar VAST_MACRO_PATTERN = /\\[([A-Z][A-Z0-9_]*)\\]/g;\nvar CACHEBUSTING_ALIASES = /\\[CACHEBUSTER\\]|\\[cachebuster\\]|\\[timestamp\\]|\\[random\\]|\\[INSERT_RANDOM_NUMBER\\]|%%CACHEBUSTER%%|%%CACHEBUST%%|\\$\\{CACHEBUSTER\\}|\\$\\{CACHEBUSTING\\}|\\{cachebuster\\}|\\{random\\}/g;\nvar KNOWN_VAST_MACROS = /* @__PURE__ */ new Set([\n \"ADCATEGORIES\",\n \"ADCOUNT\",\n \"ADPLAYHEAD\",\n \"ADSERVINGID\",\n \"ADTYPE\",\n \"APIFRAMEWORKS\",\n \"APPBUNDLE\",\n \"ASSETURI\",\n \"BLOCKEDADCATEGORIES\",\n \"BREAKMAXADLENGTH\",\n \"BREAKMAXADS\",\n \"BREAKMAXDURATION\",\n \"BREAKMINADLENGTH\",\n \"BREAKPOSITION\",\n \"CACHEBUSTING\",\n \"CLICKPOS\",\n \"CLICKTYPE\",\n \"CLIENTUA\",\n \"CONTENTID\",\n \"CONTENTPLAYHEAD\",\n \"CONTENTURI\",\n \"DEVICEIP\",\n \"DEVICEUA\",\n \"DOMAIN\",\n \"ERRORCODE\",\n \"EXTENSIONS\",\n \"GDPRCONSENT\",\n \"IFA\",\n \"IFATYPE\",\n \"INVENTORYSTATE\",\n \"LATLONG\",\n \"LIMITADTRACKING\",\n \"MEDIAMIME\",\n \"MEDIAPLAYHEAD\",\n \"OMIDPARTNER\",\n \"PAGEURL\",\n \"PLACEMENTTYPE\",\n \"PLAYERCAPABILITIES\",\n \"PLAYERSIZE\",\n \"PLAYERSTATE\",\n \"PODSEQUENCE\",\n \"REASON\",\n \"REGULATIONS\",\n \"SERVERSIDE\",\n \"SERVERUA\",\n \"TIMESTAMP\",\n \"TRANSACTIONID\",\n \"UNIVERSALADID\",\n \"VASTVERSIONS\",\n \"VERIFICATIONVENDORS\"\n]);\nfunction generateCachebuster() {\n return String(Math.floor(Math.random() * 9e7) + 1e7);\n}\nfunction formatPlayhead(seconds) {\n if (seconds == null || !Number.isFinite(seconds) || seconds < 0) {\n return void 0;\n }\n const total = Math.floor(seconds);\n const hh = String(Math.floor(total / 3600)).padStart(2, \"0\");\n const mm = String(Math.floor(total % 3600 / 60)).padStart(2, \"0\");\n const ss = String(total % 60).padStart(2, \"0\");\n const ms = String(Math.floor((seconds - total) * 1e3)).padStart(3, \"0\");\n return `${hh}:${mm}:${ss}.${ms}`;\n}\nfunction resolveMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (key, value) => {\n if (value != null && value !== \"\") values.set(key, value);\n };\n const adPlayhead = formatPlayhead(ctx.adPlayheadSeconds);\n set(\"ADPLAYHEAD\", adPlayhead);\n set(\"MEDIAPLAYHEAD\", adPlayhead);\n set(\"CONTENTPLAYHEAD\", formatPlayhead(ctx.contentPlayheadSeconds));\n set(\"ASSETURI\", ctx.assetUri);\n set(\"MEDIAMIME\", ctx.mediaMime);\n set(\"TIMESTAMP\", (/* @__PURE__ */ new Date()).toISOString());\n set(\"SERVERSIDE\", \"0\");\n if (ctx.errorCode != null && ctx.errorCode !== \"\") {\n set(\"ERRORCODE\", String(ctx.errorCode));\n }\n if (ctx.playerWidth != null && ctx.playerHeight != null) {\n set(\"PLAYERSIZE\", `${Math.round(ctx.playerWidth)},${Math.round(ctx.playerHeight)}`);\n }\n set(\"IFA\", ctx.deviceId);\n set(\"IFATYPE\", ctx.deviceIdType);\n if (ctx.limitAdTracking != null) {\n set(\"LIMITADTRACKING\", ctx.limitAdTracking ? \"1\" : \"0\");\n }\n set(\"PAGEURL\", ctx.pageUrl);\n if (ctx.pageUrl) {\n try {\n set(\"DOMAIN\", new URL(ctx.pageUrl).hostname);\n } catch {\n }\n }\n set(\"CLIENTUA\", ctx.clientUa);\n set(\"DEVICEUA\", ctx.clientUa);\n if (ctx.podSequence != null) {\n set(\"PODSEQUENCE\", String(ctx.podSequence));\n }\n set(\"ADSERVINGID\", ctx.adServingId);\n if (ctx.reason != null && ctx.reason !== \"\") {\n set(\"REASON\", String(ctx.reason));\n }\n return values;\n}\nfunction substituteVastTrackingMacros(url, ctx = {}) {\n if (!url) return url;\n const values = resolveMacroValues(ctx);\n return url.replace(CACHEBUSTING_ALIASES, () => generateCachebuster()).replace(VAST_MACRO_PATTERN, (match, name) => {\n if (name === \"CACHEBUSTING\") return generateCachebuster();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n return KNOWN_VAST_MACROS.has(name) ? \"\" : match;\n });\n}\n\n// src/sdk/hlsAdPlayer.ts\nvar LINEAR_TRACKING_EVENTS = [\n \"creativeView\",\n \"loaded\",\n \"start\",\n \"firstQuartile\",\n \"midpoint\",\n \"thirdQuartile\",\n \"complete\",\n \"mute\",\n \"unmute\",\n \"pause\",\n \"resume\",\n \"fullscreen\",\n \"exitFullscreen\",\n \"playerExpand\",\n \"playerCollapse\",\n \"notUsed\"\n];\nfunction textOf(el) {\n const value = el?.textContent?.trim();\n return value ? value : void 0;\n}\nfunction parseVastTime(value) {\n if (!value) return void 0;\n const parts = value.trim().split(\":\");\n if (parts.length !== 3) return void 0;\n const [h, m, s] = parts.map((p) => parseFloat(p));\n if (![h, m, s].every((n) => n !== void 0 && Number.isFinite(n))) {\n return void 0;\n }\n return h * 3600 + m * 60 + s;\n}\nfunction parseProgressOffset(offset) {\n if (!offset) return void 0;\n const trimmed = offset.trim();\n if (trimmed.endsWith(\"%\")) {\n const percent = parseFloat(trimmed);\n return Number.isFinite(percent) ? { offsetPercent: percent } : void 0;\n }\n const seconds = parseVastTime(trimmed);\n return seconds !== void 0 ? { offsetSeconds: seconds } : void 0;\n}\nvar MAX_VAST_WRAPPER_DEPTH = 5;\nvar BEACON_TIMEOUT_MS = 3e4;\nvar inFlightBeacons = /* @__PURE__ */ new Set();\nvar VAST_ERROR_MEDIA_DISPLAY = 405;\nvar VAST_ERROR_WRAPPER_TIMEOUT = 301;\nvar VAST_ERROR_WRAPPER_LIMIT = 302;\nvar VAST_ERROR_WRAPPER_NO_ADS = 303;\nvar VAST_ERROR_NO_SUPPORTED_MEDIA = 403;\nvar VERIFICATION_NOT_SUPPORTED_REASON = 2;\nvar VIEWABLE_MIN_VISIBLE_RATIO = 0.5;\nvar VIEWABLE_MIN_CONTINUOUS_S = 2;\nfunction toVastMediaErrorCode(error) {\n switch (error?.code) {\n case 1:\n return 400;\n case 2:\n return 401;\n case 4:\n return 403;\n default:\n return VAST_ERROR_MEDIA_DISPLAY;\n }\n}\nfunction createHlsAdPlayer(contentVideo, options) {\n let adPlaying = false;\n let originalMutedState = false;\n let originalVolume = Math.max(0, Math.min(1, contentVideo.volume || 1));\n const listeners = /* @__PURE__ */ new Map();\n const mainHlsInstance = options?.mainHlsInstance;\n const AD_CONTAINER_PROP = \"__stormcloudAdContainer\";\n const AD_VIDEO_PROP = \"__stormcloudAdVideo\";\n const FRAME_COUNTER_RELIABLE_PROP = \"__stormcloudFrameCounterReliable\";\n const RVFC_RELIABLE_PROP = \"__stormcloudRvfcReliable\";\n let adVideoElement = contentVideo[AD_VIDEO_PROP] ?? void 0;\n let adHls;\n let adContainerEl = contentVideo[AD_CONTAINER_PROP] ?? void 0;\n let adEventHandlers = [];\n let containerHandlers = [];\n let currentAd;\n let currentAdMediaFile;\n let podAds = [];\n let podIndex = 0;\n const preloadedAds = /* @__PURE__ */ new Map();\n const preloadingAds = /* @__PURE__ */ new Map();\n let destroyed = false;\n let pendingTimeouts = [];\n const STALL_TIMEOUT_MS = 4e3;\n const STALL_CHECK_INTERVAL_MS = 1e3;\n const BLACKFRAME_MIN_PLAYBACK_S = 1.5;\n let stallWatchdogId;\n let lastAdProgressTime = 0;\n let lastAdProgressPosition = 0;\n let sawDecodedVideoFrame = false;\n let videoFrameCallbackHandle;\n let pendingPlayPromise;\n function createTrackingState() {\n return {\n impression: false,\n loaded: false,\n start: false,\n firstQuartile: false,\n midpoint: false,\n thirdQuartile: false,\n complete: false,\n viewabilitySettled: false,\n lastMuted: void 0,\n progressFired: /* @__PURE__ */ new Set()\n };\n }\n let trackingFired = createTrackingState();\n const resolvedAds = /* @__PURE__ */ new Set();\n let viewObserver;\n let visibleRatio = 0;\n let continuousVisibleS = 0;\n let lastViewSampleTime;\n let lastPlayerExpanded = false;\n let documentHandlers = [];\n function emit(event, payload) {\n const set = listeners.get(event);\n if (!set) return;\n for (const fn of Array.from(set)) {\n try {\n fn(payload);\n } catch (error) {\n console.warn(\n `[HlsAdPlayer] Error in event listener for ${event}:`,\n error\n );\n }\n }\n }\n function buildTrackingMacroContext(options2 = {}) {\n const { errorCode, reason } = options2;\n const ad = options2.ad ?? currentAd;\n const context = {\n adPlayheadSeconds: adVideoElement?.currentTime,\n contentPlayheadSeconds: contentVideo.currentTime,\n assetUri: currentAdMediaFile?.url,\n mediaMime: currentAdMediaFile?.type,\n playerWidth: adVideoElement?.clientWidth || adContainerEl?.clientWidth,\n playerHeight: adVideoElement?.clientHeight || adContainerEl?.clientHeight\n };\n if (errorCode != null) {\n context.errorCode = errorCode;\n }\n if (typeof navigator !== \"undefined\" && navigator.userAgent) {\n context.clientUa = navigator.userAgent;\n }\n if (typeof location !== \"undefined\" && location.href) {\n context.pageUrl = location.href;\n }\n if (podAds.length > 0) {\n context.podSequence = podIndex + 1;\n }\n if (ad?.adServingId) {\n context.adServingId = ad.adServingId;\n }\n if (reason != null) {\n context.reason = reason;\n }\n return context;\n }\n function fireTrackingPixels(urls, options2) {\n if (!urls || urls.length === 0) return;\n const macroContext = buildTrackingMacroContext(options2);\n urls.forEach((url) => {\n try {\n const trackingUrl = substituteVastTrackingMacros(url, macroContext);\n const img = new Image(1, 1);\n inFlightBeacons.add(img);\n let timeoutId;\n const release = () => {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n img.onload = null;\n img.onerror = null;\n inFlightBeacons.delete(img);\n };\n img.onload = release;\n img.onerror = release;\n timeoutId = setTimeout(release, BEACON_TIMEOUT_MS);\n img.src = trackingUrl;\n console.log(`[HlsAdPlayer] Fired tracking pixel: ${trackingUrl}`);\n } catch (error) {\n console.warn(`[HlsAdPlayer] Error firing tracking pixel:`, error);\n }\n });\n }\n function getMainStreamQuality() {\n if (!mainHlsInstance || !mainHlsInstance.levels) {\n return null;\n }\n const currentLevel = mainHlsInstance.currentLevel;\n if (currentLevel === -1 || !mainHlsInstance.levels[currentLevel]) {\n const autoLevel = mainHlsInstance.loadLevel;\n if (autoLevel !== -1 && mainHlsInstance.levels[autoLevel]) {\n const level2 = mainHlsInstance.levels[autoLevel];\n return {\n width: level2.width || 1920,\n height: level2.height || 1080,\n bitrate: level2.bitrate || 5e6\n };\n }\n return null;\n }\n const level = mainHlsInstance.levels[currentLevel];\n return {\n width: level.width || 1920,\n height: level.height || 1080,\n bitrate: level.bitrate || 5e6\n };\n }\n function selectBestMediaFile(mediaFiles) {\n if (mediaFiles.length === 0) {\n throw new Error(\"No media files available\");\n }\n const firstFile = mediaFiles[0];\n if (!firstFile) {\n throw new Error(\"No media files available\");\n }\n if (mediaFiles.length === 1) {\n return firstFile;\n }\n const mainQuality = getMainStreamQuality();\n if (!mainQuality) {\n console.log(\n \"[HlsAdPlayer] No main stream quality info, using first media file\"\n );\n return firstFile;\n }\n console.log(\"[HlsAdPlayer] Main stream quality:\", mainQuality);\n const scoredFiles = mediaFiles.map((file) => {\n const widthDiff = Math.abs(file.width - mainQuality.width);\n const heightDiff = Math.abs(file.height - mainQuality.height);\n const resolutionDiff = widthDiff + heightDiff;\n const fileBitrate = (file.bitrate || 5e3) * 1e3;\n const bitrateDiff = Math.abs(fileBitrate - mainQuality.bitrate);\n const score = resolutionDiff * 2 + bitrateDiff / 1e3;\n return { file, score, resolutionDiff, bitrateDiff };\n });\n scoredFiles.sort((a, b) => a.score - b.score);\n const bestMatch = scoredFiles[0];\n if (!bestMatch) {\n console.log(\"[HlsAdPlayer] No best match found, using first media file\");\n return firstFile;\n }\n console.log(\"[HlsAdPlayer] Selected media file:\", {\n url: bestMatch.file.url,\n resolution: `${bestMatch.file.width}x${bestMatch.file.height}`,\n bitrate: bestMatch.file.bitrate,\n score: bestMatch.score,\n resolutionDiff: bestMatch.resolutionDiff,\n bitrateDiff: bestMatch.bitrateDiff\n });\n return bestMatch.file;\n }\n function isHlsMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type === \"application/x-mpegurl\" || type === \"application/vnd.apple.mpegurl\" || type.includes(\"mpegurl\") || url.includes(\".m3u8\");\n }\n function isProgressiveMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type.startsWith(\"video/\") || url.endsWith(\".mp4\") || url.includes(\".mp4?\");\n }\n function isAudioMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = (mediaFile.url.toLowerCase().split(\"?\")[0] || \"\").trim();\n return type.startsWith(\"audio/\") || url.endsWith(\".mp3\") || url.endsWith(\".aac\") || url.endsWith(\".m4a\") || url.endsWith(\".ogg\") || url.endsWith(\".oga\") || url.endsWith(\".opus\") || url.endsWith(\".wav\") || url.endsWith(\".weba\");\n }\n function collectVideoMediaFiles(linear, verbose) {\n const mediaFileElements = linear.querySelectorAll(\n \":scope > MediaFiles > MediaFile\"\n );\n const mediaFiles = [];\n if (verbose) {\n console.log(\n `[HlsAdPlayer] Found ${mediaFileElements.length} MediaFile element(s) in VAST XML`\n );\n }\n mediaFileElements.forEach((mf, index) => {\n const type = mf.getAttribute(\"type\") || \"\";\n const url = mf.textContent?.trim() || \"\";\n const width = mf.getAttribute(\"width\") || \"\";\n const height = mf.getAttribute(\"height\") || \"\";\n if (verbose) {\n console.log(\n `[HlsAdPlayer] MediaFile ${index}: type=\"${type}\", url=\"${url}\", width=\"${width}\", height=\"${height}\"`\n );\n }\n if (!url) {\n if (verbose) {\n console.warn(`[HlsAdPlayer] MediaFile ${index} has empty URL`);\n }\n return;\n }\n const apiFramework = (mf.getAttribute(\"apiFramework\") || \"\").toUpperCase();\n if (apiFramework === \"VPAID\") {\n if (verbose) {\n console.log(\n `[HlsAdPlayer] MediaFile ${index} ignored (VPAID creatives are not supported)`\n );\n }\n return;\n }\n const bitrateAttr = mf.getAttribute(\"bitrate\");\n const bitrateValue = bitrateAttr ? parseInt(bitrateAttr, 10) : void 0;\n const mediaFile = {\n url,\n type,\n width: parseInt(width || \"1920\", 10),\n height: parseInt(height || \"1080\", 10),\n bitrate: bitrateValue && bitrateValue > 0 ? bitrateValue : void 0\n };\n if (isAudioMediaFile(mediaFile)) {\n console.warn(\n `[HlsAdPlayer] MediaFile ${index} skipped (audio-only, type=\"${type}\") \\u2014 audio ads are not played to avoid a black screen`\n );\n return;\n }\n const hasExplicitDimensions = mf.getAttribute(\"width\") != null && mf.getAttribute(\"height\") != null;\n if (!isHlsMediaFile(mediaFile) && hasExplicitDimensions && (mediaFile.width <= 1 || mediaFile.height <= 1)) {\n console.warn(\n `[HlsAdPlayer] MediaFile ${index} skipped (degenerate dimensions ${mediaFile.width}x${mediaFile.height}, type=\"${type}\") \\u2014 likely an audio-only placeholder rendition`\n );\n return;\n }\n if (isHlsMediaFile(mediaFile) || isProgressiveMediaFile(mediaFile)) {\n mediaFiles.push(mediaFile);\n if (verbose) {\n console.log(\n `[HlsAdPlayer] Added ${isHlsMediaFile(mediaFile) ? \"HLS\" : \"progressive\"} MediaFile: ${url}`\n );\n }\n } else if (verbose) {\n console.log(\n `[HlsAdPlayer] MediaFile ${index} ignored (type=\"${type}\" is not supported)`\n );\n }\n });\n return mediaFiles;\n }\n function createEmptyTrackingUrls() {\n const urls = {\n impression: [],\n clickTracking: [],\n error: [],\n viewable: [],\n notViewable: [],\n viewUndetermined: [],\n verificationNotExecuted: [],\n progress: []\n };\n for (const event of LINEAR_TRACKING_EVENTS) {\n urls[event] = [];\n }\n return urls;\n }\n function pushUrls(target, elements) {\n elements.forEach((el) => {\n const url = textOf(el);\n if (url) target.push(url);\n });\n }\n function collectLinearTracking(linear, into) {\n linear.querySelectorAll(\":scope > TrackingEvents > Tracking\").forEach((el) => {\n const event = el.getAttribute(\"event\");\n const url = textOf(el);\n if (!event || !url) return;\n if (event === \"progress\") {\n const offset = parseProgressOffset(el.getAttribute(\"offset\"));\n if (offset) into.progress.push({ url, ...offset });\n return;\n }\n if (LINEAR_TRACKING_EVENTS.indexOf(event) !== -1) {\n into[event].push(url);\n }\n });\n pushUrls(\n into.clickTracking,\n linear.querySelectorAll(\":scope > VideoClicks > ClickTracking\")\n );\n }\n function collectAdLevelTracking(adBody, into) {\n pushUrls(into.impression, adBody.querySelectorAll(\":scope > Impression\"));\n pushUrls(into.error, adBody.querySelectorAll(\":scope > Error\"));\n pushUrls(\n into.viewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > Viewable\")\n );\n pushUrls(\n into.notViewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > NotViewable\")\n );\n pushUrls(\n into.viewUndetermined,\n adBody.querySelectorAll(\":scope > ViewableImpression > ViewUndetermined\")\n );\n adBody.querySelectorAll(\n ':scope > AdVerifications > Verification, :scope > Extensions > Extension[type=\"AdVerifications\"] > AdVerifications > Verification'\n ).forEach((verification) => {\n pushUrls(\n into.verificationNotExecuted,\n verification.querySelectorAll(\n ':scope > TrackingEvents > Tracking[event=\"verificationNotExecuted\"]'\n )\n );\n });\n }\n function mergeTrackingUrls(target, source) {\n const targetLists = target;\n const sourceLists = source;\n for (const key of Object.keys(targetLists)) {\n const incoming = sourceLists[key];\n if (incoming && incoming.length > 0) {\n targetLists[key] = targetLists[key].concat(incoming);\n }\n }\n return target;\n }\n function parseXml(xmlString) {\n const xmlDoc = new DOMParser().parseFromString(xmlString, \"text/xml\");\n const parserError = xmlDoc.querySelector(\"parsererror\");\n if (parserError) {\n console.error(\n \"[HlsAdPlayer] XML parsing error (malformed VAST XML):\",\n parserError.textContent\n );\n return null;\n }\n return xmlDoc;\n }\n function getAdSequence(adElement) {\n const sequence = parseInt(adElement.getAttribute(\"sequence\") || \"\", 10);\n return Number.isFinite(sequence) ? sequence : void 0;\n }\n function emptyVastResult(root) {\n const errorUrls = [];\n pushUrls(errorUrls, root.querySelectorAll(\":scope > Error\"));\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_WRAPPER_NO_ADS };\n }\n function parseVastXml(xmlString) {\n try {\n const xmlDoc = parseXml(xmlString);\n if (!xmlDoc) return { type: \"empty\" };\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n const adElement = adElements.find((el) => getAdSequence(el) === void 0) ?? adElements[0];\n if (!adElement) {\n console.warn(\n `[HlsAdPlayer] No Ad element found in VAST ${root.getAttribute(\"version\") ?? \"\"} response`\n );\n return emptyVastResult(root);\n }\n const parsed = parseAdElement(adElement, true);\n if (parsed.type === \"wrapper\") {\n console.log(\n `[HlsAdPlayer] VAST wrapper detected, following VASTAdTagURI: ${parsed.vastAdTagUri}`\n );\n }\n return parsed;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing VAST XML:\", error);\n return { type: \"empty\" };\n }\n }\n function parseAdElement(adElement, verbose = false) {\n try {\n const wrapper = adElement.querySelector(\":scope > Wrapper\");\n if (wrapper) {\n const vastAdTagUri = textOf(\n wrapper.querySelector(\":scope > VASTAdTagURI\")\n );\n if (!vastAdTagUri) {\n console.warn(\"[HlsAdPlayer] <Wrapper> has no VASTAdTagURI\");\n return { type: \"empty\" };\n }\n const trackingUrls2 = createEmptyTrackingUrls();\n collectAdLevelTracking(wrapper, trackingUrls2);\n wrapper.querySelectorAll(\":scope > Creatives > Creative > Linear\").forEach((linear2) => collectLinearTracking(linear2, trackingUrls2));\n return {\n type: \"wrapper\",\n vastAdTagUri,\n trackingUrls: trackingUrls2,\n rules: {\n followAdditionalWrappers: wrapper.getAttribute(\"followAdditionalWrappers\") !== \"false\"\n }\n };\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) {\n console.warn(\"[HlsAdPlayer] <Ad> has neither <InLine> nor <Wrapper>\");\n return { type: \"empty\" };\n }\n const errorUrls = [];\n pushUrls(errorUrls, inLine.querySelectorAll(\":scope > Error\"));\n if (adElement.getAttribute(\"conditionalAd\") === \"true\") {\n console.warn(\"[HlsAdPlayer] Skipping conditional <Ad> (VPAID-only)\");\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n let linear;\n let mediaFiles = [];\n for (const candidate of Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear\")\n )) {\n const files = collectVideoMediaFiles(candidate, verbose);\n if (files.length > 0) {\n linear = candidate;\n mediaFiles = files;\n break;\n }\n }\n if (!linear) {\n console.warn(\"[HlsAdPlayer] No supported linear media files in <Ad>\");\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n const trackingUrls = createEmptyTrackingUrls();\n collectAdLevelTracking(inLine, trackingUrls);\n collectLinearTracking(linear, trackingUrls);\n return {\n type: \"inline\",\n ad: {\n id: adElement.getAttribute(\"id\") || \"unknown\",\n title: textOf(inLine.querySelector(\":scope > AdTitle\")) || \"Ad\",\n duration: parseVastTime(textOf(linear.querySelector(\":scope > Duration\"))) ?? 30,\n mediaFiles,\n trackingUrls,\n clickThrough: textOf(\n linear.querySelector(\":scope > VideoClicks > ClickThrough\")\n ),\n adServingId: textOf(inLine.querySelector(\":scope > AdServingId\"))\n }\n };\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing <Ad> element:\", error);\n return { type: \"empty\" };\n }\n }\n async function fetchVastXml(vastTagUrl, credentials = \"include\") {\n const requestVast = (creds) => fetch(vastTagUrl, {\n mode: \"cors\",\n credentials: creds,\n headers: {\n \"Accept\": \"application/xml, text/xml, */*\"\n },\n referrerPolicy: \"no-referrer-when-downgrade\"\n });\n let response;\n try {\n response = await requestVast(credentials);\n } catch (error) {\n if (credentials !== \"omit\") {\n console.warn(\n `[HlsAdPlayer] VAST fetch failed with credentials=\"${credentials}\", retrying without credentials:`,\n error\n );\n response = await requestVast(\"omit\");\n } else {\n throw error;\n }\n }\n if (!response.ok) {\n throw new Error(`Failed to fetch VAST: ${response.statusText}`);\n }\n return response.text();\n }\n async function fetchAndParseVastAd(vastTagUrl, depth = 0, accumulatedTracking = createEmptyTrackingUrls(), rules = { followAdditionalWrappers: true }) {\n let vastXml;\n try {\n vastXml = await fetchVastXml(\n vastTagUrl,\n depth === 0 ? \"include\" : \"omit\"\n );\n } catch (error) {\n if (depth === 0) throw error;\n console.warn(\"[HlsAdPlayer] Wrapped VAST request failed:\", error);\n fireTrackingPixels(accumulatedTracking.error, {\n errorCode: VAST_ERROR_WRAPPER_TIMEOUT\n });\n return null;\n }\n console.log(\"[HlsAdPlayer] VAST XML received\");\n console.log(\n \"[HlsAdPlayer] VAST XML content (first 2000 chars):\",\n vastXml.substring(0, 2e3)\n );\n const parsed = parseVastXml(vastXml);\n if (parsed.type === \"empty\") {\n fireTrackingPixels(\n (parsed.errorUrls ?? []).concat(accumulatedTracking.error),\n { errorCode: parsed.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS }\n );\n return null;\n }\n if (parsed.type === \"wrapper\") {\n if (depth >= MAX_VAST_WRAPPER_DEPTH || !rules.followAdditionalWrappers) {\n console.warn(\n rules.followAdditionalWrappers ? `[HlsAdPlayer] VAST wrapper depth limit (${MAX_VAST_WRAPPER_DEPTH}) reached, aborting redirect chain` : '[HlsAdPlayer] Parent wrapper set followAdditionalWrappers=\"false\"; rejecting nested wrapper'\n );\n fireTrackingPixels(\n accumulatedTracking.error.concat(parsed.trackingUrls.error),\n { errorCode: VAST_ERROR_WRAPPER_LIMIT }\n );\n return null;\n }\n mergeTrackingUrls(accumulatedTracking, parsed.trackingUrls);\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n depth + 1,\n accumulatedTracking,\n parsed.rules\n );\n }\n mergeTrackingUrls(parsed.ad.trackingUrls, accumulatedTracking);\n return parsed.ad;\n }\n async function fetchAndParsePod(vastTagUrl) {\n const vastXml = await fetchVastXml(vastTagUrl);\n console.log(\n `[HlsAdPlayer] Pod VAST XML received (length=${vastXml.length})`\n );\n const trimmedXml = vastXml.trim();\n if (trimmedXml.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Pod VAST response body is empty (no fill)\"\n );\n return [];\n }\n const xmlDoc = parseXml(vastXml);\n if (!xmlDoc) {\n console.error(\n \"[HlsAdPlayer] Pod VAST XML content (first 2000 chars):\",\n vastXml.substring(0, 2e3)\n );\n return [];\n }\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No <Ad> elements in VAST ${root.getAttribute(\"version\") ?? \"\"} pod response (no fill)`\n );\n const empty = emptyVastResult(root);\n if (empty.type === \"empty\" && empty.errorUrls?.length) {\n fireTrackingPixels(empty.errorUrls, {\n errorCode: empty.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS\n });\n }\n return [];\n }\n const resolveAd = async (adElement) => {\n const parsed = parseAdElement(adElement);\n if (parsed.type === \"inline\") return parsed.ad;\n if (parsed.type === \"wrapper\") {\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n 1,\n parsed.trackingUrls,\n parsed.rules\n );\n }\n if (parsed.errorUrls?.length) {\n fireTrackingPixels(parsed.errorUrls, {\n errorCode: parsed.errorCode ?? VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n }\n return null;\n };\n const podElements = adElements.filter((el) => getAdSequence(el) !== void 0).sort((a, b) => getAdSequence(a) - getAdSequence(b));\n const buffet = adElements.filter((el) => getAdSequence(el) === void 0);\n const ads = [];\n if (podElements.length === 0) {\n for (const adElement of buffet) {\n const ad = await resolveAd(adElement);\n if (ad) ads.push(ad);\n }\n } else {\n for (const adElement of podElements) {\n let ad = await resolveAd(adElement);\n while (!ad && buffet.length > 0) {\n ad = await resolveAd(buffet.shift());\n }\n if (ad) ads.push(ad);\n }\n }\n console.log(\n `[HlsAdPlayer] Parsed ${ads.length} ad(s) from VAST ${root.getAttribute(\"version\") ?? \"\"} pod response`\n );\n return ads;\n }\n function createAdVideoElement() {\n const video = document.createElement(\"video\");\n video.style.position = \"absolute\";\n video.style.left = \"0\";\n video.style.top = \"0\";\n video.style.width = \"100%\";\n video.style.height = \"100%\";\n video.style.objectFit = \"contain\";\n video.style.backgroundColor = \"#000\";\n video.playsInline = true;\n video.muted = false;\n video.volume = 1;\n console.log(\n `[HlsAdPlayer] Created ad video element with volume ${video.volume}`\n );\n return video;\n }\n function setupAdEventListeners() {\n if (!adVideoElement || !currentAd) return;\n if (adEventHandlers.length > 0) return;\n const onTimeUpdate = () => {\n if (!currentAd || !adVideoElement) return;\n noteAdProgress();\n sampleViewability();\n const currentTime = adVideoElement.currentTime;\n if (trackingFired.start) {\n for (const event of currentAd.trackingUrls.progress) {\n if (trackingFired.progressFired.has(event)) continue;\n const threshold = event.offsetSeconds ?? (event.offsetPercent ?? 0) / 100 * currentAd.duration;\n if (currentTime >= threshold) {\n trackingFired.progressFired.add(event);\n fireTrackingPixels([event.url]);\n }\n }\n }\n if (!(currentAd.duration > 0)) return;\n const progress = currentTime / currentAd.duration;\n if (progress >= 0.25 && !trackingFired.firstQuartile) {\n trackingFired.firstQuartile = true;\n fireTrackingPixels(currentAd.trackingUrls.firstQuartile);\n }\n if (progress >= 0.5 && !trackingFired.midpoint) {\n trackingFired.midpoint = true;\n fireTrackingPixels(currentAd.trackingUrls.midpoint);\n }\n if (progress >= 0.75 && !trackingFired.thirdQuartile) {\n trackingFired.thirdQuartile = true;\n fireTrackingPixels(currentAd.trackingUrls.thirdQuartile);\n }\n };\n const onLoadedMetadata = () => {\n if (!adPlaying || !adVideoElement) return;\n const { videoWidth, videoHeight } = adVideoElement;\n if (videoWidth <= 1 || videoHeight <= 1) {\n console.warn(\n `[HlsAdPlayer] Ad creative has no usable video dimensions (${videoWidth}x${videoHeight}) - skipping this creative`\n );\n handleVideoDecodeFailure();\n }\n };\n const onCanPlay = () => {\n if (!currentAd || trackingFired.loaded) return;\n trackingFired.loaded = true;\n fireTrackingPixels(currentAd.trackingUrls.loaded);\n };\n const onPlaying = () => {\n startStallWatchdog();\n if (!currentAd || !adVideoElement) return;\n if (!trackingFired.impression) {\n trackingFired.impression = true;\n resolvedAds.add(currentAd);\n fireTrackingPixels(currentAd.trackingUrls.impression);\n fireTrackingPixels(currentAd.trackingUrls.creativeView);\n fireTrackingPixels(currentAd.trackingUrls.verificationNotExecuted, {\n reason: VERIFICATION_NOT_SUPPORTED_REASON\n });\n emit(\"ad_impression\", {\n adId: currentAd.id,\n index: podIndex,\n total: podAds.length || 1\n });\n }\n if (trackingFired.start) return;\n trackingFired.start = true;\n trackingFired.lastMuted = adVideoElement.muted || adVideoElement.volume === 0;\n fireTrackingPixels(currentAd.trackingUrls.start);\n console.log(\"[HlsAdPlayer] Ad started playing\");\n };\n const onEnded = () => {\n if (!currentAd || trackingFired.complete) return;\n sampleViewability();\n settleViewability();\n trackingFired.complete = true;\n fireTrackingPixels(currentAd.trackingUrls.complete);\n console.log(\"[HlsAdPlayer] Ad completed\");\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) {\n return;\n }\n handleAdComplete();\n };\n const onError = (e) => {\n if (!adPlaying) return;\n console.error(\"[HlsAdPlayer] Ad video error:\", e);\n reportCurrentAdError(toVastMediaErrorCode(adVideoElement?.error));\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) {\n return;\n }\n handleAdError();\n };\n const onVolumeChange = () => {\n if (!currentAd || !adVideoElement) return;\n const muted = adVideoElement.muted || adVideoElement.volume === 0;\n if (!trackingFired.start) {\n trackingFired.lastMuted = muted;\n return;\n }\n if (muted === trackingFired.lastMuted) return;\n trackingFired.lastMuted = muted;\n fireTrackingPixels(\n muted ? currentAd.trackingUrls.mute : currentAd.trackingUrls.unmute\n );\n };\n const isTrackablePlayback = () => adPlaying && !!currentAd && !!adVideoElement && trackingFired.start && !trackingFired.complete && !adVideoElement.ended;\n const onPause = () => {\n continuousVisibleS = 0;\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.pause);\n }\n };\n const onPlay = () => {\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.resume);\n }\n };\n adEventHandlers = [\n { type: \"timeupdate\", handler: onTimeUpdate },\n { type: \"loadedmetadata\", handler: onLoadedMetadata },\n { type: \"canplay\", handler: onCanPlay },\n { type: \"playing\", handler: onPlaying },\n { type: \"ended\", handler: onEnded },\n { type: \"error\", handler: onError },\n { type: \"volumechange\", handler: onVolumeChange },\n { type: \"pause\", handler: onPause },\n { type: \"play\", handler: onPlay }\n ];\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.addEventListener(type, handler);\n }\n }\n function teardownAdEventListeners() {\n if (adVideoElement) {\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.removeEventListener(type, handler);\n }\n }\n adEventHandlers = [];\n }\n function handleAdClick() {\n if (!adPlaying || !currentAd) return;\n fireTrackingPixels(currentAd.trackingUrls.clickTracking);\n emit(\"ad_click\", { adId: currentAd.id, clickThrough: currentAd.clickThrough });\n if (currentAd.clickThrough) {\n try {\n window.open(currentAd.clickThrough, \"_blank\", \"noopener\");\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Failed to open ClickThrough URL:\", error);\n }\n }\n }\n function reportCurrentAdError(errorCode) {\n if (!currentAd) return;\n resolvedAds.add(currentAd);\n fireTrackingPixels(currentAd.trackingUrls.error, { errorCode });\n }\n function fireNotUsedForUnplayedAds() {\n for (const ad of podAds) {\n if (resolvedAds.has(ad)) continue;\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n function sampleViewability() {\n if (!currentAd || !adVideoElement || !viewObserver || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n const now = adVideoElement.currentTime;\n const inView = visibleRatio >= VIEWABLE_MIN_VISIBLE_RATIO && document.visibilityState === \"visible\" && !adVideoElement.paused;\n if (!inView) {\n continuousVisibleS = 0;\n } else if (lastViewSampleTime !== void 0 && now >= lastViewSampleTime) {\n continuousVisibleS += now - lastViewSampleTime;\n }\n lastViewSampleTime = now;\n if (continuousVisibleS >= VIEWABLE_MIN_CONTINUOUS_S) {\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(currentAd.trackingUrls.viewable);\n }\n }\n function settleViewability() {\n if (!currentAd || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(\n viewObserver ? currentAd.trackingUrls.notViewable : currentAd.trackingUrls.viewUndetermined\n );\n }\n function handleFullscreenChange() {\n if (!adPlaying || !currentAd || !adContainerEl || !trackingFired.start) return;\n const fullscreenEl = document.fullscreenElement ?? document.webkitFullscreenElement;\n const expanded = !!fullscreenEl && fullscreenEl.contains(adContainerEl);\n if (expanded === lastPlayerExpanded) return;\n lastPlayerExpanded = expanded;\n const urls = currentAd.trackingUrls;\n fireTrackingPixels(\n expanded ? urls.fullscreen.concat(urls.playerExpand) : urls.exitFullscreen.concat(urls.playerCollapse)\n );\n }\n function attachContainerHandlers() {\n if (!adContainerEl || containerHandlers.length > 0) return;\n const onClick = () => handleAdClick();\n const onInteraction = (event) => {\n if (adPlaying) emit(\"ad_interaction\", event);\n };\n containerHandlers = [\n { type: \"click\", handler: onClick },\n { type: \"mousedown\", handler: onInteraction },\n { type: \"touchstart\", handler: onInteraction }\n ];\n for (const { type, handler } of containerHandlers) {\n adContainerEl.addEventListener(type, handler);\n }\n const onFullscreenChange = () => handleFullscreenChange();\n documentHandlers = [\n { type: \"fullscreenchange\", handler: onFullscreenChange },\n { type: \"webkitfullscreenchange\", handler: onFullscreenChange }\n ];\n for (const { type, handler } of documentHandlers) {\n document.addEventListener(type, handler);\n }\n if (typeof IntersectionObserver !== \"undefined\") {\n viewObserver = new IntersectionObserver(\n (entries) => {\n const entry = entries[entries.length - 1];\n if (entry) {\n visibleRatio = entry.isIntersecting ? entry.intersectionRatio : 0;\n }\n },\n { threshold: [0, 0.25, 0.5, 0.75, 1] }\n );\n viewObserver.observe(adContainerEl);\n }\n }\n function detachContainerHandlers() {\n if (adContainerEl) {\n for (const { type, handler } of containerHandlers) {\n adContainerEl.removeEventListener(type, handler);\n }\n }\n containerHandlers = [];\n for (const { type, handler } of documentHandlers) {\n document.removeEventListener(type, handler);\n }\n documentHandlers = [];\n viewObserver?.disconnect();\n viewObserver = void 0;\n }\n function setAdPlayingFlag(isPlaying) {\n if (isPlaying) {\n contentVideo.dataset.stormcloudAdPlaying = \"true\";\n } else {\n delete contentVideo.dataset.stormcloudAdPlaying;\n }\n }\n function resetAdTracking() {\n trackingFired = createTrackingState();\n continuousVisibleS = 0;\n lastViewSampleTime = void 0;\n }\n function isRvfcSupported(video) {\n return typeof video.requestVideoFrameCallback === \"function\";\n }\n function settlePendingPlay() {\n pendingPlayPromise = void 0;\n }\n function startAdPlayback(context) {\n if (!adVideoElement) return;\n const playPromise = adVideoElement.play();\n pendingPlayPromise = playPromise;\n playPromise.catch((error) => {\n if (pendingPlayPromise !== playPromise) {\n return;\n }\n console.error(`[HlsAdPlayer] Error starting ${context}:`, error);\n handleAdError();\n }).finally(() => {\n if (pendingPlayPromise === playPromise) {\n pendingPlayPromise = void 0;\n }\n });\n }\n function prepareVideoElementForNewSource() {\n settlePendingPlay();\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n if (!adVideoElement) return;\n try {\n adVideoElement.pause();\n adVideoElement.removeAttribute(\"src\");\n adVideoElement.load();\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error preparing ad video for new source:\",\n error\n );\n }\n }\n function recreateAdVideoElement() {\n console.log(\n \"[HlsAdPlayer] Recreating ad video element (single-decoder platform)\"\n );\n teardownAdEventListeners();\n prepareVideoElementForNewSource();\n if (adVideoElement) {\n try {\n adVideoElement.remove();\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error removing ad video element:\", error);\n }\n }\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n }\n function loadCurrentAdMedia() {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n const mediaFile = selectBestMediaFile(currentAd.mediaFiles);\n if (!mediaFile) {\n throw new Error(\"No media file available for ad\");\n }\n currentAdMediaFile = mediaFile;\n const isHlsAd = isHlsMediaFile(mediaFile);\n console.log(\n `[HlsAdPlayer] Loading ${isHlsAd ? \"HLS\" : \"progressive\"} ad (pod ${podIndex + 1}/${podAds.length || 1}) from: ${mediaFile.url}`\n );\n if (isHlsAd && Hls.isSupported()) {\n if (adHls) {\n adHls.destroy();\n }\n adHls = new Hls({\n enableWorker: true,\n lowLatencyMode: false\n });\n adHls.loadSource(mediaFile.url);\n adHls.attachMedia(adVideoElement);\n adHls.on(Hls.Events.MANIFEST_PARSED, () => {\n console.log(\"[HlsAdPlayer] HLS manifest parsed, starting playback\");\n startAdPlayback(\"HLS ad playback\");\n });\n adHls.on(Hls.Events.ERROR, (_event, data) => {\n console.error(\"[HlsAdPlayer] HLS error:\", data);\n if (data.fatal) {\n handleAdError();\n }\n });\n } else if (isHlsAd && adVideoElement.canPlayType(\"application/vnd.apple.mpegurl\")) {\n adVideoElement.src = mediaFile.url;\n startAdPlayback(\"native HLS ad playback\");\n } else if (!isHlsAd && isProgressiveMediaFile(mediaFile)) {\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n adVideoElement.src = mediaFile.url;\n adVideoElement.load();\n startAdPlayback(\"progressive ad playback\");\n } else {\n throw new Error(`Unsupported ad media file type: ${mediaFile.type}`);\n }\n }\n function advanceToNextPodAd() {\n if (podIndex >= podAds.length - 1) {\n return false;\n }\n settleViewability();\n podIndex++;\n currentAd = podAds[podIndex];\n currentAdMediaFile = void 0;\n resetAdTracking();\n if (currentAd) {\n console.log(\n `[HlsAdPlayer] Advancing to next pod ad (${podIndex + 1}/${podAds.length}): ${currentAd.title}, duration: ${currentAd.duration}s`\n );\n }\n clearStallWatchdog();\n if (requiresMediaPipelineResetAfterAds()) {\n recreateAdVideoElement();\n setupAdEventListeners();\n } else {\n prepareVideoElementForNewSource();\n }\n try {\n loadCurrentAdMedia();\n emit(\"pod_ad_started\", { index: podIndex, total: podAds.length });\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load next pod ad:\", error);\n return false;\n }\n }\n function clearStallWatchdog() {\n if (stallWatchdogId != null) {\n clearInterval(stallWatchdogId);\n stallWatchdogId = void 0;\n }\n cancelVideoFrameProbe();\n }\n function noteAdProgress() {\n lastAdProgressTime = Date.now();\n if (adVideoElement) {\n lastAdProgressPosition = adVideoElement.currentTime;\n }\n }\n function handleAdStall() {\n console.warn(\n \"[HlsAdPlayer] Ad playback stalled (no progress) - recovering to avoid a blank frame\"\n );\n clearStallWatchdog();\n reportCurrentAdError(VAST_ERROR_MEDIA_DISPLAY);\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) {\n return;\n }\n handleAdError();\n }\n function getDecodedVideoFrameCount(video) {\n try {\n if (typeof video.getVideoPlaybackQuality === \"function\") {\n const quality = video.getVideoPlaybackQuality();\n if (quality && typeof quality.totalVideoFrames === \"number\") {\n return quality.totalVideoFrames;\n }\n }\n const legacyCount = video.webkitDecodedFrameCount;\n if (typeof legacyCount === \"number\") {\n return legacyCount;\n }\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Unable to read decoded video frame count:\",\n error\n );\n }\n return void 0;\n }\n function isFrameCounterReliable() {\n return contentVideo[FRAME_COUNTER_RELIABLE_PROP] === true;\n }\n function markFrameCounterReliable() {\n contentVideo[FRAME_COUNTER_RELIABLE_PROP] = true;\n }\n function isRvfcReliable() {\n return contentVideo[RVFC_RELIABLE_PROP] === true;\n }\n function markRvfcReliable() {\n contentVideo[RVFC_RELIABLE_PROP] = true;\n }\n function cancelVideoFrameProbe() {\n if (videoFrameCallbackHandle != null && adVideoElement && typeof adVideoElement.cancelVideoFrameCallback === \"function\") {\n try {\n adVideoElement.cancelVideoFrameCallback(\n videoFrameCallbackHandle\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error cancelling video frame callback:\",\n error\n );\n }\n }\n videoFrameCallbackHandle = void 0;\n }\n function startVideoFrameProbe() {\n cancelVideoFrameProbe();\n if (!adVideoElement) return;\n const rvfc = adVideoElement.requestVideoFrameCallback;\n if (typeof rvfc !== \"function\") return;\n const onPresentedFrame = () => {\n videoFrameCallbackHandle = void 0;\n if (!adPlaying) return;\n sawDecodedVideoFrame = true;\n markRvfcReliable();\n };\n try {\n videoFrameCallbackHandle = rvfc.call(\n adVideoElement,\n onPresentedFrame\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error requesting video frame callback:\",\n error\n );\n videoFrameCallbackHandle = void 0;\n }\n }\n function handleVideoDecodeFailure() {\n console.warn(\n \"[HlsAdPlayer] Ad audio is advancing but no video frames decoded (black screen) - skipping this creative\"\n );\n clearStallWatchdog();\n reportCurrentAdError(VAST_ERROR_MEDIA_DISPLAY);\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) {\n return;\n }\n handleAdError();\n }\n function startStallWatchdog() {\n clearStallWatchdog();\n noteAdProgress();\n sawDecodedVideoFrame = false;\n startVideoFrameProbe();\n const blackFrameDetectionEnabled = !requiresMediaPipelineResetAfterAds();\n stallWatchdogId = window.setInterval(() => {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n if (blackFrameDetectionEnabled && !sawDecodedVideoFrame && !adVideoElement.paused) {\n const decodedFrames = getDecodedVideoFrameCount(adVideoElement);\n if (decodedFrames !== void 0 && decodedFrames > 0) {\n sawDecodedVideoFrame = true;\n markFrameCounterReliable();\n } else if (adVideoElement.currentTime >= BLACKFRAME_MIN_PLAYBACK_S) {\n const timeAdvancing = adVideoElement.currentTime > lastAdProgressPosition + 0.05;\n if (isRvfcSupported(adVideoElement) && timeAdvancing && isRvfcReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n if (decodedFrames === 0 && timeAdvancing && isFrameCounterReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n }\n }\n if (adVideoElement.currentTime > lastAdProgressPosition + 0.05) {\n noteAdProgress();\n return;\n }\n if (adVideoElement.paused) {\n noteAdProgress();\n return;\n }\n if (Date.now() - lastAdProgressTime >= STALL_TIMEOUT_MS) {\n handleAdStall();\n }\n }, STALL_CHECK_INTERVAL_MS);\n }\n function releaseAdDecoder() {\n prepareVideoElementForNewSource();\n if (adContainerEl) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n }\n function handleAdComplete() {\n console.log(\"[HlsAdPlayer] Handling ad completion\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode:\", error);\n });\n } else {\n console.log(\"[HlsAdPlayer] Content video already playing in live mode\");\n }\n }\n emit(\"content_resume\");\n }\n function handleAdError() {\n console.log(\"[HlsAdPlayer] Handling ad error\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n emit(\"ad_error\");\n }\n return {\n initialize() {\n console.log(\"[HlsAdPlayer] Initializing\");\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"30\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n contentVideo[AD_CONTAINER_PROP] = adContainerEl;\n attachContainerHandlers();\n },\n async requestAds(vastTagUrl) {\n console.log(\"[HlsAdPlayer] Requesting ads:\", vastTagUrl);\n if (adPlaying) {\n console.warn(\n \"[HlsAdPlayer] Cannot request new ads while an ad is playing\"\n );\n return Promise.reject(new Error(\"Ad already playing\"));\n }\n try {\n let ads = [];\n if (preloadedAds.has(vastTagUrl)) {\n const preloaded = preloadedAds.get(vastTagUrl);\n preloadedAds.delete(vastTagUrl);\n if (preloaded) {\n ads = [preloaded];\n }\n console.log(\n \"[HlsAdPlayer] Using preloaded VAST response:\",\n vastTagUrl\n );\n } else {\n ads = await fetchAndParsePod(vastTagUrl);\n }\n if (!ads.length) {\n console.warn(\"[HlsAdPlayer] No ads available from VAST response\");\n emit(\"ad_error\");\n return Promise.reject(new Error(\"No ads available from VAST response\"));\n }\n podAds = ads;\n podIndex = 0;\n currentAd = ads[0];\n currentAdMediaFile = void 0;\n console.log(\n `[HlsAdPlayer] Pod parsed: ${ads.length} ad(s), first=\"${currentAd?.title}\", duration=${currentAd?.duration}s`\n );\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error requesting ads:\", error);\n emit(\"ad_error\");\n return Promise.reject(error);\n }\n },\n async play() {\n if (!currentAd) {\n console.warn(\n \"[HlsAdPlayer] Cannot play: No ad loaded (no ads available)\"\n );\n return Promise.reject(new Error(\"No ad loaded\"));\n }\n console.log(\"[HlsAdPlayer] Starting ad playback\");\n try {\n if (!adVideoElement) {\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n }\n setupAdEventListeners();\n resetAdTracking();\n const contentVolume = contentVideo.volume;\n originalVolume = Math.max(\n 0,\n Math.min(1, contentVolume || originalVolume)\n );\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.pause();\n console.log(\"[HlsAdPlayer] Content paused (VOD mode)\");\n } else {\n console.log(\"[HlsAdPlayer] Content continues (Live mode)\");\n }\n console.log(\"[HlsAdPlayer] FORCE MUTING main video\");\n contentVideo.muted = true;\n adPlaying = true;\n setAdPlayingFlag(true);\n if (adVideoElement) {\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n console.log(\n `[HlsAdPlayer] Set ad video volume to ${adVideoElement.volume}, muted: ${adVideoElement.muted}, originalMutedState: ${originalMutedState}, contentVolume: ${contentVolume}`\n );\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n emit(\"content_pause\");\n loadCurrentAdMedia();\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error playing ad:\", error);\n handleAdError();\n return Promise.reject(error);\n }\n },\n pause() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && !adVideoElement.paused) {\n adVideoElement.pause();\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error pausing ad:\", error);\n }\n },\n resume() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && adVideoElement.paused) {\n adVideoElement.play().catch(() => {\n });\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error resuming ad:\", error);\n }\n },\n async stop() {\n console.log(\"[HlsAdPlayer] Stopping ad\");\n settleViewability();\n fireNotUsedForUnplayedAds();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n const previousMutedState = contentVideo.muted;\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n console.log(\n `[HlsAdPlayer] Restored mute state on stop: ${previousMutedState} -> ${originalMutedState}, volume: ${contentVideo.volume}`\n );\n releaseAdDecoder();\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback on stop\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode on stop:\", error);\n });\n }\n }\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n },\n destroy() {\n console.log(\"[HlsAdPlayer] Destroying\");\n settleViewability();\n fireNotUsedForUnplayedAds();\n destroyed = true;\n clearStallWatchdog();\n for (const timeoutId of pendingTimeouts) {\n clearTimeout(timeoutId);\n }\n pendingTimeouts = [];\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n teardownAdEventListeners();\n detachContainerHandlers();\n releaseAdDecoder();\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n listeners.clear();\n preloadedAds.clear();\n preloadingAds.clear();\n },\n isAdPlaying() {\n return adPlaying;\n },\n resize(width, height) {\n console.log(`[HlsAdPlayer] Resizing to ${width}x${height}`);\n if (adContainerEl) {\n adContainerEl.style.width = `${width}px`;\n adContainerEl.style.height = `${height}px`;\n }\n if (adVideoElement) {\n adVideoElement.style.width = `${width}px`;\n adVideoElement.style.height = `${height}px`;\n }\n },\n on(event, listener) {\n if (!listeners.has(event)) listeners.set(event, /* @__PURE__ */ new Set());\n listeners.get(event).add(listener);\n },\n off(event, listener) {\n listeners.get(event)?.delete(listener);\n },\n updateOriginalMutedState(muted, volume) {\n const nextVolume = typeof volume === \"number\" && !Number.isNaN(volume) ? Math.max(0, Math.min(1, volume)) : originalVolume;\n console.log(\n `[HlsAdPlayer] updateOriginalMutedState called: { muted: ${originalMutedState} -> ${muted}, volume: ${originalVolume} -> ${nextVolume} }`\n );\n originalMutedState = muted;\n originalVolume = nextVolume;\n },\n getOriginalMutedState() {\n return originalMutedState;\n },\n getOriginalVolume() {\n return originalVolume;\n },\n setAdVolume(volume) {\n if (adVideoElement && adPlaying) {\n const clamped = Math.max(0, Math.min(1, volume));\n adVideoElement.volume = clamped;\n adVideoElement.muted = clamped === 0;\n }\n },\n getAdVolume() {\n if (adVideoElement && adPlaying) {\n return adVideoElement.volume;\n }\n return 1;\n },\n showPlaceholder() {\n contentVideo.style.opacity = \"0\";\n contentVideo.style.visibility = \"hidden\";\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"10\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n },\n hidePlaceholder() {\n if (adContainerEl && !adPlaying) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n if (!adPlaying) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n },\n getLoadedAdDuration() {\n return currentAd?.duration;\n },\n getLoadedAdId() {\n return currentAd?.id;\n },\n getPodAdCount() {\n return podAds.length;\n },\n getPodTotalDurationMs() {\n return podAds.reduce(\n (total, ad) => total + (ad.duration > 0 ? ad.duration * 1e3 : 0),\n 0\n );\n }\n };\n}\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/sdk/pal.ts\nvar PAL_SDK_URL = \"https://imasdk.googleapis.com/pal/sdkloader/pal.js\";\nvar _nonceLoader;\nvar _nonceLoaderAllowStorage;\nvar _palLoadPromise;\nfunction loadPalSdk() {\n if (typeof window !== \"undefined\" && window.goog?.pal) {\n return Promise.resolve();\n }\n if (_palLoadPromise) return _palLoadPromise;\n _palLoadPromise = new Promise((resolve, reject) => {\n const existing = document.querySelector(\n 'script[data-pal=\"true\"]'\n );\n if (existing) {\n if (window.goog?.pal) {\n resolve();\n return;\n }\n const timeout = setTimeout(\n () => reject(new Error(\"PAL SDK load timeout\")),\n 1e4\n );\n existing.addEventListener(\"load\", () => {\n clearTimeout(timeout);\n resolve();\n });\n existing.addEventListener(\"error\", () => {\n clearTimeout(timeout);\n reject(new Error(\"PAL SDK load failed\"));\n });\n return;\n }\n const script = document.createElement(\"script\");\n script.src = PAL_SDK_URL;\n script.async = true;\n script.setAttribute(\"data-pal\", \"true\");\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(\"PAL SDK load failed\"));\n document.head.appendChild(script);\n });\n return _palLoadPromise;\n}\nfunction getOrCreateNonceLoader(allowStorage) {\n if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {\n return _nonceLoader;\n }\n const goog = window.goog;\n const consentSettings = new goog.pal.ConsentSettings();\n consentSettings.allowStorage = allowStorage;\n _nonceLoader = new goog.pal.NonceLoader(consentSettings);\n _nonceLoaderAllowStorage = allowStorage;\n return _nonceLoader;\n}\nfunction createPalNonceManager() {\n let currentNonce = \"\";\n let currentNonceManager;\n return {\n async generateNonce(options = {}) {\n try {\n await loadPalSdk();\n const loader = getOrCreateNonceLoader(options.allowStorage ?? true);\n const goog = window.goog;\n const request = new goog.pal.NonceRequest();\n request.adWillAutoPlay = options.adWillAutoPlay ?? true;\n request.adWillPlayMuted = options.adWillPlayMuted ?? false;\n request.playerVolume = options.playerVolume ?? (request.adWillPlayMuted ? 0 : 1);\n request.continuousPlayback = options.continuousPlayback ?? true;\n request.descriptionUrl = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.iconsSupported = true;\n request.playerType = \"StormcloudVideoPlayer\";\n request.playerVersion = \"1.0\";\n request.supportedApiFrameworks = \"2,7,9\";\n request.url = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.videoWidth = options.videoWidth || 640;\n request.videoHeight = options.videoHeight || 480;\n if (options.ppid) request.ppid = options.ppid;\n if (options.sessionId) request.sessionId = options.sessionId;\n console.log(\n \"[PAL] NonceRequest before generateNonce:\",\n JSON.stringify({\n adWillAutoPlay: request.adWillAutoPlay,\n adWillPlayMuted: request.adWillPlayMuted,\n playerVolume: request.playerVolume,\n continuousPlayback: request.continuousPlayback,\n descriptionUrl: request.descriptionUrl,\n iconsSupported: request.iconsSupported,\n playerType: request.playerType,\n playerVersion: request.playerVersion,\n supportedApiFrameworks: request.supportedApiFrameworks,\n url: request.url,\n videoWidth: request.videoWidth,\n videoHeight: request.videoHeight,\n ppid: request.ppid,\n sessionId: request.sessionId\n }, null, 2)\n );\n const manager = await loader.loadNonceManager(request);\n currentNonceManager = manager;\n currentNonce = manager.getNonce();\n console.log(\"[PAL] Nonce generated successfully\");\n return currentNonce;\n } catch (error) {\n console.warn(\"[PAL] Failed to generate nonce:\", error);\n currentNonce = \"\";\n currentNonceManager = void 0;\n return \"\";\n }\n },\n getCurrentNonce() {\n return currentNonce;\n },\n injectNonce(vastTagUrl) {\n if (!currentNonce || !vastTagUrl) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", currentNonce);\n return url.toString();\n } catch {\n let base = vastTagUrl.replace(/([?&])paln=[^&]*/g, \"\").replace(/[?&]$/, \"\");\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}givn=${encodeURIComponent(currentNonce)}`;\n }\n },\n sendPlaybackStart() {\n try {\n currentNonceManager?.sendPlaybackStart();\n } catch {\n }\n },\n sendPlaybackEnd() {\n try {\n currentNonceManager?.sendPlaybackEnd();\n } catch {\n }\n },\n sendAdClick() {\n try {\n currentNonceManager?.sendAdClick();\n } catch {\n }\n },\n sendAdTouch(event) {\n try {\n currentNonceManager?.sendAdTouch(event);\n } catch {\n }\n },\n reset() {\n currentNonce = \"\";\n currentNonceManager = void 0;\n }\n };\n}\n\n// src/utils/trackingIngest.ts\nvar DEFAULT_TRACKING_INGEST_CONFIG = {\n enabled: true,\n baseUrl: \"https://player-analytics-ingest-api-760490581852.us-central1.run.app/api/adstorm/player-tracking\"\n};\nvar trackingIngestConfig = {\n ...DEFAULT_TRACKING_INGEST_CONFIG\n};\nfunction applyTrackingIngestConfig(overrides) {\n Object.assign(trackingIngestConfig, overrides);\n}\nfunction configureTrackingIngest(overrides) {\n applyTrackingIngestConfig(overrides);\n}\nfunction isTrackingIngestEnabled() {\n return trackingIngestConfig.enabled === true;\n}\nfunction normalizeIngestBaseUrl(baseUrl) {\n return baseUrl.replace(/\\/+$/, \"\");\n}\nfunction buildTrackingIngestUrl(channel) {\n const base = normalizeIngestBaseUrl(trackingIngestConfig.baseUrl);\n if (channel === \"impressions\") {\n return `${base}/impressions/ingest`;\n }\n return `${base}/metrics/ingest`;\n}\nasync function ingestPlayerTracking(licenseKey, channel, body) {\n if (!isTrackingIngestEnabled() || !licenseKey) {\n return false;\n }\n try {\n const response = await fetch(buildTrackingIngestUrl(channel), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `License-Key ${licenseKey}`\n },\n body: JSON.stringify(body)\n });\n if (!response.ok) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest failed (${response.status}) for ${channel}`\n );\n return false;\n }\n return true;\n } catch (error) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest error for ${channel}:`,\n error\n );\n return false;\n }\n}\n\n// src/utils/vastEnvironmentSignals.ts\nvar CTV_SESSION_STORAGE_KEY = \"stormcloud.ctv.sid\";\nvar PLAYER_ID_STORAGE_KEY = \"stormcloud.player.id\";\nvar DEVICE_ID_STORAGE_KEYS = [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"advertising_id\",\n \"deviceAdvertisingId\",\n \"aaid\",\n \"adid\",\n \"rida\",\n \"tifa\",\n \"lgudid\"\n];\nvar ANDROID_ID_TYPES = /* @__PURE__ */ new Set([\"aaid\", \"adid\"]);\nfunction resolveVastEnvironmentSignals(isCtv) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const realDeviceId = bridgeSignals.deviceId || (isCtv ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n let deviceId = realDeviceId;\n let deviceIdType = bridgeSignals.deviceIdType || readStoredString(\"deviceIdType\") || readStoredString(\"idtype\") || platformDevice.deviceIdType || inferDeviceIdType();\n const platformLat = bridgeSignals.deviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;\n let limitAdTracking = deviceId != null ? platformLat ?? readStoredLimitAdTracking() ?? false : void 0;\n if (!deviceId && isCtv) {\n const dpid = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (dpid) {\n deviceId = dpid;\n deviceIdType = \"dpid\";\n limitAdTracking = platformLat ?? readStoredLimitAdTracking() ?? false;\n }\n }\n const deviceTypeHint = resolveDeviceTypeHint(isCtv);\n if (isCtv) {\n return {\n isCtv: true,\n sessionId: getOrCreateCtvSessionId(),\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n }\n return {\n isCtv: false,\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n}\nvar DEVICE_TYPE_HINT = {\n FEATURE_PHONE: 1,\n SMARTPHONE: 2,\n DESKTOP: 3,\n TABLET: 4,\n CONNECTED_TV: 5,\n GAME_CONSOLE: 6,\n SET_TOP_BOX: 7\n};\nvar DEVICE_TYPE_HINT_ALIASES = {\n featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,\n smartphone: DEVICE_TYPE_HINT.SMARTPHONE,\n mobile: DEVICE_TYPE_HINT.SMARTPHONE,\n phone: DEVICE_TYPE_HINT.SMARTPHONE,\n desktop: DEVICE_TYPE_HINT.DESKTOP,\n pc: DEVICE_TYPE_HINT.DESKTOP,\n tablet: DEVICE_TYPE_HINT.TABLET,\n ctv: DEVICE_TYPE_HINT.CONNECTED_TV,\n tv: DEVICE_TYPE_HINT.CONNECTED_TV,\n connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,\n smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,\n console: DEVICE_TYPE_HINT.GAME_CONSOLE,\n gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,\n stb: DEVICE_TYPE_HINT.SET_TOP_BOX,\n settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX\n};\nvar SET_TOP_BOX_UA = /LGSTB|\\bSTB\\b|STB\\d|Set-?Top|SetTopBox|TV ?Box|Kaon|Humax|Arris|Technicolor|Sagemcom|Infomir|MAG\\d{3}|KreaTV|Amino|Formuler|Dune ?HD|TiVo|MiBOX|Mi Box|SHIELD Android TV|\\bAFT[A-Z]|Roku|AppleTV|Apple TV|CrKey/i;\nvar GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;\nvar CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\\bTV\\b/i;\nvar FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;\nfunction resolveDeviceTypeHint(isCtv) {\n const override = readDeviceTypeHintOverride(isCtv);\n if (override != null) return override;\n return inferDeviceTypeHint(isCtv);\n}\nfunction inferDeviceTypeHint(isCtv) {\n const fallback = isCtv ? DEVICE_TYPE_HINT.CONNECTED_TV : DEVICE_TYPE_HINT.DESKTOP;\n if (typeof navigator === \"undefined\") return fallback;\n const ua = navigator.userAgent || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n if (SET_TOP_BOX_UA.test(ua)) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n if (GAME_CONSOLE_UA.test(ua)) return DEVICE_TYPE_HINT.GAME_CONSOLE;\n if (CONNECTED_TV_UA.test(ua) && !/Mobile/i.test(ua)) {\n return DEVICE_TYPE_HINT.CONNECTED_TV;\n }\n if (FEATURE_PHONE_UA.test(ua)) return DEVICE_TYPE_HINT.FEATURE_PHONE;\n if (/iPad/i.test(ua) || /Macintosh/i.test(ua) && maxTouchPoints > 1) {\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/iPhone|iPod/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (/Android/i.test(ua)) {\n if (/Mobile/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (maxTouchPoints === 0) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n return fallback;\n}\nfunction readDeviceTypeHintOverride(isCtv) {\n if (typeof window === \"undefined\") return void 0;\n const keys = [\"dth\", \"deviceTypeHint\"];\n const fromGlobal = normalizeDeviceTypeHint(window.__STORMCLOUD_DTH__);\n if (fromGlobal != null) return fromGlobal;\n for (const source of getNativeBridgeSources()) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeDeviceTypeHint(\n typeof value === \"function\" ? safeCall(value, source) : value\n );\n if (normalized != null) return normalized;\n }\n }\n if (!isCtv) return void 0;\n for (const key of [\"stormcloud.dth\", \"dth\"]) {\n const normalized = normalizeDeviceTypeHint(readStoredString(key));\n if (normalized != null) return normalized;\n }\n return void 0;\n}\nfunction normalizeDeviceTypeHint(value) {\n if (typeof value === \"number\") {\n return Number.isInteger(value) && value >= 1 && value <= 7 ? value : void 0;\n }\n if (typeof value !== \"string\") return void 0;\n const trimmed = value.trim();\n if (/^[1-7]$/.test(trimmed)) return parseInt(trimmed, 10);\n return DEVICE_TYPE_HINT_ALIASES[trimmed.toLowerCase().replace(/[\\s_-]/g, \"\")];\n}\nfunction safeCall(fn, thisArg) {\n try {\n return fn.call(thisArg);\n } catch {\n return void 0;\n }\n}\nfunction inferDeviceIdType() {\n if (typeof navigator === \"undefined\") {\n return void 0;\n }\n const ua = navigator.userAgent;\n if (/Roku/i.test(ua)) return \"rida\";\n if (/Tizen|Samsung/i.test(ua)) return \"tifa\";\n if (/AppleTV|Apple TV/i.test(ua)) return \"tvOS\";\n if (/AFT|Fire TV|Amazon/i.test(ua)) return \"afai\";\n if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return \"lgudid\";\n if (/Android|Google TV/i.test(ua)) return \"aaid\";\n if (/iPhone|iPad|iPod/i.test(ua)) return \"idfa\";\n return void 0;\n}\nfunction isEquivalentDeviceIdType(tagType, runtimeType) {\n if (!tagType || !runtimeType) return false;\n const tag = tagType.toLowerCase();\n const runtime = runtimeType.toLowerCase();\n if (tag === runtime) return true;\n return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);\n}\nfunction resolveNativeDeviceId(includeStored = true) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {\n return void 0;\n }\n return deviceId;\n}\nfunction getOrCreateStoredUuid(storageKey) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n const existing = readPersistentId(storageKey);\n if (existing) {\n writePersistentId(storageKey, existing);\n return existing;\n }\n const id = createUuid();\n writePersistentId(storageKey, id);\n return id;\n}\nfunction getOrCreateCtvSessionId() {\n const existing = readPersistentId(CTV_SESSION_STORAGE_KEY);\n if (existing) {\n writePersistentId(CTV_SESSION_STORAGE_KEY, existing);\n return existing;\n }\n const sessionId = createUuid();\n writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);\n return sessionId;\n}\nfunction readPersistentId(storageKey) {\n return readStoredString(storageKey) || readCookie(storageKey);\n}\nfunction writePersistentId(storageKey, value) {\n try {\n window.localStorage?.setItem(storageKey, value);\n } catch {\n }\n writeCookie(storageKey, value);\n}\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\nfunction readCookie(name) {\n if (typeof document === \"undefined\") {\n return void 0;\n }\n try {\n const prefix = encodeURIComponent(name) + \"=\";\n const parts = document.cookie ? document.cookie.split(\";\") : [];\n for (const part of parts) {\n const entry = part.trim();\n if (entry.startsWith(prefix)) {\n return decodeURIComponent(entry.slice(prefix.length)) || void 0;\n }\n }\n } catch {\n }\n return void 0;\n}\nfunction writeCookie(name, value) {\n if (typeof document === \"undefined\") {\n return;\n }\n try {\n document.cookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value) + \";path=/;max-age=\" + PERSISTENT_ID_COOKIE_MAX_AGE + \";SameSite=Lax\";\n } catch {\n }\n}\nfunction createUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n if (typeof crypto !== \"undefined\" && typeof crypto.getRandomValues === \"function\") {\n crypto.getRandomValues(bytes);\n } else {\n let seed = Date.now() ^ Math.floor(performanceNow() * 1e3);\n for (let i = 0; i < 16; i++) {\n seed = seed * 1103515245 + 12345 & 2147483647;\n bytes[i] = (seed ^ Math.floor(Math.random() * 256)) & 255;\n }\n }\n bytes[6] = (bytes[6] ?? 0) & 15 | 64;\n bytes[8] = (bytes[8] ?? 0) & 63 | 128;\n let hex = \"\";\n for (let i = 0; i < 16; i++) {\n hex += (bytes[i] ?? 0).toString(16).padStart(2, \"0\");\n }\n return hex.slice(0, 8) + \"-\" + hex.slice(8, 12) + \"-\" + hex.slice(12, 16) + \"-\" + hex.slice(16, 20) + \"-\" + hex.slice(20, 32);\n}\nfunction performanceNow() {\n try {\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n return performance.now();\n }\n } catch {\n }\n return 0;\n}\nfunction readPlatformNativeDeviceId() {\n if (typeof window === \"undefined\") return {};\n try {\n const adinfo = window.webapis?.adinfo;\n if (adinfo) {\n const tifa = typeof adinfo.getTIFA === \"function\" ? adinfo.getTIFA() : adinfo.tifa;\n if (typeof tifa === \"string\" && tifa && !isMacroPlaceholder(tifa)) {\n const lat = typeof adinfo.isLATEnabled === \"function\" ? adinfo.isLATEnabled() : void 0;\n return {\n deviceId: tifa,\n deviceIdType: \"tifa\",\n ...typeof lat === \"boolean\" ? { limitAdTracking: lat } : {}\n };\n }\n }\n } catch {\n }\n try {\n const webOSDev = window.webOSDev;\n if (webOSDev) {\n const lgudid = typeof webOSDev.LGUDID === \"function\" ? webOSDev.LGUDID() : webOSDev.lgudid ?? webOSDev.LGUDID;\n if (typeof lgudid === \"string\" && lgudid) {\n if (isZeroedAdId(lgudid)) {\n return { deviceIdType: \"lgudid\", limitAdTracking: true };\n }\n if (!isMacroPlaceholder(lgudid)) {\n return { deviceId: lgudid, deviceIdType: \"lgudid\", limitAdTracking: false };\n }\n }\n }\n } catch {\n }\n try {\n const roku = window.Roku;\n if (roku) {\n const rida = typeof roku.getPublisherUniqueId === \"function\" ? roku.getPublisherUniqueId() : roku.rida;\n if (typeof rida === \"string\" && rida && !isMacroPlaceholder(rida)) {\n return { deviceId: rida, deviceIdType: \"rida\", limitAdTracking: false };\n }\n }\n } catch {\n }\n return {};\n}\nvar ZEROED_AD_ID_PATTERNS = /* @__PURE__ */ new Set([\n \"38400000-8cf0-11bd-b23e-10b96e40000d\",\n \"00000000-0000-0000-0000-000000000000\"\n]);\nfunction isMacroPlaceholder(value) {\n const t = value.trim();\n return !t || /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/.test(t) || /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(t) || ZEROED_AD_ID_PATTERNS.has(t.toLowerCase());\n}\nfunction isZeroedAdId(value) {\n return ZEROED_AD_ID_PATTERNS.has(value.trim().toLowerCase());\n}\nfunction readNativeBridgeSignals() {\n for (const source of getNativeBridgeSources()) {\n const contentUrl = readBridgeValue(source, [\"contentUrl\", \"url\", \"videoUrl\", \"canonicalUrl\"]) || void 0;\n const appId = readBridgeValue(source, [\"appId\", \"msid\", \"applicationId\", \"packageName\"]) || void 0;\n const appName = readBridgeValue(source, [\"appName\", \"an\", \"applicationName\"]) || void 0;\n const deviceId = readBridgeValue(source, [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"adId\",\n \"deviceId\",\n \"lgudid\",\n \"LGUDID\",\n \"tifa\",\n \"rida\",\n \"afai\",\n \"aaid\"\n ]) || void 0;\n if (!contentUrl && !deviceId && !appId && !appName) continue;\n const deviceIdType = readBridgeValue(source, [\n \"idtype\",\n \"deviceIdType\",\n \"advertisingIdType\",\n \"idType\"\n ]) || inferDeviceIdType();\n const limitAdTracking = readBridgeBoolean(source, [\n \"is_lat\",\n \"limitAdTracking\",\n \"limitedAdTracking\",\n \"lat\"\n ]);\n return {\n ...contentUrl ? { contentUrl } : {},\n ...appId ? { appId } : {},\n ...appName ? { appName } : {},\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {}\n };\n }\n return {};\n}\nfunction getNativeBridgeSources() {\n if (typeof window === \"undefined\") {\n return [];\n }\n return [\n window.__STORMCLOUD_CTV_AD_INFO__,\n window.__STORMCLOUD_CTV__,\n window.stormcloudCtv,\n window.AiryTV,\n window.Android,\n window.webOS,\n window.tizen,\n window.amazon\n ].filter(Boolean);\n}\nfunction readBridgeValue(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n if (typeof value === \"string\" && value) {\n return value;\n }\n if (typeof value === \"function\") {\n try {\n const result = value.call(source);\n if (typeof result === \"string\" && result) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readBridgeBoolean(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeBoolean(value);\n if (normalized != null) {\n return normalized;\n }\n if (typeof value === \"function\") {\n try {\n const result = normalizeBoolean(value.call(source));\n if (result != null) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readStoredDeviceId() {\n for (const key of DEVICE_ID_STORAGE_KEYS) {\n const value = readStoredString(key);\n if (value) {\n return value;\n }\n }\n return void 0;\n}\nfunction readStoredString(key) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n try {\n const value = window.localStorage?.getItem(key);\n return value || void 0;\n } catch {\n return void 0;\n }\n}\nfunction readStoredLimitAdTracking() {\n return normalizeBoolean(\n readStoredString(\"limitAdTracking\") || readStoredString(\"limitedAdTracking\") || readStoredString(\"is_lat\")\n );\n}\nfunction normalizeBoolean(value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n return value === 1;\n }\n if (typeof value === \"string\") {\n const normalized = value.toLowerCase();\n if (normalized === \"1\" || normalized === \"true\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"0\" || normalized === \"false\" || normalized === \"no\") {\n return false;\n }\n }\n return void 0;\n}\n\n// src/utils/tracking.ts\nvar cachedBrowserId = null;\nfunction buildAnalyticsContext(config) {\n const context = {};\n if (config.debugAdTiming) {\n context.debugAdTiming = true;\n }\n if (config.isLiveStream !== void 0) {\n context.inputStreamType = config.isLiveStream ? \"live\" : \"vod\";\n }\n return context;\n}\nfunction getClientInfo() {\n const ua = navigator.userAgent;\n const platform = navigator.platform;\n const vendor = navigator.vendor || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n const memory = navigator.deviceMemory || null;\n const hardwareConcurrency = navigator.hardwareConcurrency || 1;\n const screenInfo = {\n width: screen?.width,\n height: screen?.height,\n availWidth: screen?.availWidth,\n availHeight: screen?.availHeight,\n orientation: screen?.orientation?.type || \"\",\n pixelDepth: screen?.pixelDepth\n };\n let deviceType = \"desktop\";\n let brand = \"Unknown\";\n let os = \"Unknown\";\n let model = \"\";\n let isSmartTV = false;\n let isAndroid = false;\n let isWebView = false;\n let isWebApp = false;\n if (ua.includes(\"Web0S\")) {\n brand = \"LG\";\n os = \"webOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n const webosMatch = ua.match(/Web0S\\/([^\\s]+)/);\n model = webosMatch ? `webOS ${webosMatch[1]}` : \"webOS TV\";\n } else if (ua.includes(\"Tizen\")) {\n brand = \"Samsung\";\n os = \"Tizen\";\n isSmartTV = true;\n deviceType = \"tv\";\n const tizenMatch = ua.match(/Tizen\\/([^\\s]+)/);\n const tvMatch = ua.match(/(?:Smart-TV|SMART-TV|TV)/i) ? \"Smart TV\" : \"\";\n model = tizenMatch ? `Tizen ${tizenMatch[1]} ${tvMatch}`.trim() : \"Tizen TV\";\n } else if (ua.includes(\"Philips\")) {\n brand = \"Philips\";\n os = \"Saphi\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Sharp\") || ua.includes(\"AQUOS\")) {\n brand = \"Sharp\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"Sony\") || vendor.includes(\"Sony\"))) {\n brand = \"Sony\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"NetCast\") || ua.includes(\"LG\"))) {\n brand = \"LG\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\" Roku\") || ua.includes(\"Roku/\")) {\n brand = \"Roku\";\n os = \"Roku OS\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"AppleTV\")) {\n brand = \"Apple\";\n os = \"tvOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n }\n if (ua.includes(\"Android\")) {\n isAndroid = true;\n os = \"Android\";\n deviceType = /Mobile/.test(ua) ? \"mobile\" : \"tablet\";\n if (ua.includes(\"Android\") && (maxTouchPoints === 0 || ua.includes(\"Google TV\") || ua.includes(\"XiaoMi\"))) {\n deviceType = \"tv\";\n isSmartTV = true;\n brand = brand === \"Unknown\" ? \"Android TV\" : brand;\n }\n const androidModelMatch = ua.match(/\\(([^)]*Android[^)]*)\\)/);\n if (androidModelMatch && androidModelMatch[1]) {\n model = androidModelMatch[1];\n }\n }\n if (/iPad|iPhone|iPod/.test(ua)) {\n os = \"iOS\";\n deviceType = \"mobile\";\n brand = \"Apple\";\n if (navigator.maxTouchPoints > 1 && /iPad/.test(ua)) {\n deviceType = \"tablet\";\n }\n }\n if (!isAndroid && !isSmartTV && !/Mobile/.test(ua)) {\n if (ua.includes(\"Windows\")) {\n os = \"Windows\";\n deviceType = \"desktop\";\n } else if (ua.includes(\"Mac\") && !/iPhone/.test(ua)) {\n os = \"macOS\";\n deviceType = \"desktop\";\n if (maxTouchPoints > 1) deviceType = \"tablet\";\n } else if (ua.includes(\"Linux\")) {\n os = \"Linux\";\n deviceType = \"desktop\";\n }\n }\n if (brand === \"Unknown\") {\n if (vendor.includes(\"Google\") || ua.includes(\"Chrome\")) brand = \"Google\";\n if (vendor.includes(\"Apple\")) brand = \"Apple\";\n if (vendor.includes(\"Samsung\") || ua.includes(\"SM-\")) brand = \"Samsung\";\n }\n isWebView = /wv|WebView|Linux; U;/.test(ua);\n if (window?.outerHeight === 0 && window?.outerWidth === 0) {\n isWebView = true;\n }\n isWebApp = window.matchMedia(\"(display-mode: standalone)\").matches || window.navigator.standalone === true || window.screen?.orientation?.angle !== void 0;\n return {\n brand,\n os,\n model: model || ua.substring(0, 50) + \"...\",\n deviceType,\n isSmartTV,\n isAndroid,\n isWebView,\n isWebApp,\n domain: window.location.hostname,\n origin: window.location.origin,\n path: window.location.pathname,\n userAgent: ua,\n vendor,\n platform,\n screen: screenInfo,\n hardwareConcurrency,\n deviceMemory: memory,\n maxTouchPoints,\n language: navigator.language,\n languages: navigator.languages?.join(\",\") || \"\",\n cookieEnabled: navigator.cookieEnabled,\n doNotTrack: navigator.doNotTrack || \"\",\n referrer: document.referrer,\n visibilityState: document.visibilityState\n };\n}\nasync function sha256Hex(input) {\n if (typeof crypto !== \"undefined\" && crypto.subtle?.digest) {\n try {\n await crypto.subtle.digest(\"SHA-256\", new Uint8Array([1, 2, 3]));\n let encodedData;\n if (typeof TextEncoder !== \"undefined\") {\n encodedData = new TextEncoder().encode(input);\n } else {\n const utf8 = unescape(encodeURIComponent(input));\n const buffer = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n buffer[i] = utf8.charCodeAt(i);\n }\n encodedData = buffer;\n }\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", encodedData);\n return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n } catch {\n console.warn(\n \"[StormcloudVideoPlayer] crypto.subtle not supported, using fallback hash\"\n );\n }\n }\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const fallbackHash = Math.abs(hash).toString(16).padStart(8, \"0\");\n const timestamp = Date.now().toString(16).padStart(12, \"0\");\n const random = Math.random().toString(16).substring(2, 14).padStart(12, \"0\");\n return (fallbackHash + timestamp + random).padEnd(64, \"0\");\n}\nfunction resolvePlayerIdentitySeed(clientInfo) {\n const nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);\n if (nativeDeviceId) {\n return `device:${nativeDeviceId}`;\n }\n const persistedId = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (persistedId) {\n return `persisted:${persistedId}`;\n }\n return `fingerprint:${JSON.stringify(clientInfo)}`;\n}\nasync function getBrowserID(clientInfo) {\n if (cachedBrowserId) {\n return cachedBrowserId;\n }\n cachedBrowserId = await sha256Hex(resolvePlayerIdentitySeed(clientInfo));\n return cachedBrowserId;\n}\nfunction canPublish(licenseKey) {\n return Boolean(isTrackingIngestEnabled() && licenseKey);\n}\nasync function buildPlayerMetricEvent(context = {}, flags = {}) {\n const clientInfo = getClientInfo();\n const debugAdTiming = !!context.debugAdTiming;\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] clientInfo: \", JSON.stringify(clientInfo, null, 2));\n }\n const playerId = await getBrowserID(clientInfo);\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] playerId: \", playerId);\n }\n const captureAt = flags.captureAt ?? (/* @__PURE__ */ new Date()).toISOString();\n return {\n player_id: playerId,\n device_type: clientInfo.deviceType,\n os: clientInfo.os.toLowerCase(),\n ad_loaded: flags.adLoaded ?? false,\n ad_detect: flags.adDetect ?? false,\n capture_at: captureAt,\n ...context.inputStreamType ? { input_stream_type: context.inputStreamType } : {}\n };\n}\nasync function sendInitialTracking(licenseKey, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n adLoaded: false,\n adDetect: false\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending initial tracking data:\",\n error\n );\n }\n}\nasync function sendAdDetectTracking(licenseKey, adDetectInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adDetect: true,\n captureAt: adDetectInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad detect tracking:\",\n error\n );\n }\n}\nasync function sendAdLoadedTracking(licenseKey, adLoadedInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adLoaded: true,\n captureAt: adLoadedInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad loaded tracking:\",\n error\n );\n }\n}\nasync function sendAdImpressionTracking(licenseKey, adImpressionInfo, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n captureAt: adImpressionInfo.timestamp\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n await ingestPlayerTracking(licenseKey, \"impressions\", {\n events: [\n {\n player_id: metricEvent.player_id,\n ad_played_count: 1,\n ad_url: adImpressionInfo.adUrl,\n capture_at: adImpressionInfo.timestamp\n }\n ]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad impression tracking:\",\n error\n );\n }\n}\nasync function sendHeartbeat(licenseKey, context = {}, flags = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const heartbeatData = await buildPlayerMetricEvent(context, flags);\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [heartbeatData]\n });\n } catch (error) {\n console.error(\"[StormcloudVideoPlayer] Error sending heartbeat:\", error);\n }\n}\n\n// src/utils/polyfills.ts\nfunction polyfillURLSearchParams() {\n if (typeof URLSearchParams !== \"undefined\") {\n return;\n }\n class URLSearchParamsPolyfill {\n constructor(init) {\n this.params = /* @__PURE__ */ new Map();\n if (typeof init === \"string\") {\n this.parseQueryString(init);\n } else if (init instanceof URLSearchParamsPolyfill) {\n init.forEach((value, key) => {\n this.append(key, value);\n });\n }\n }\n parseQueryString(query) {\n const cleanQuery = query.startsWith(\"?\") ? query.slice(1) : query;\n if (!cleanQuery) return;\n cleanQuery.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n const decodedKey = this.safeDecodeURIComponent(key);\n const decodedValue = value ? this.safeDecodeURIComponent(value) : \"\";\n this.append(decodedKey, decodedValue);\n }\n });\n }\n safeDecodeURIComponent(str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, \" \"));\n } catch (e) {\n return str;\n }\n }\n append(name, value) {\n const values = this.params.get(name) || [];\n values.push(String(value));\n this.params.set(name, values);\n }\n delete(name) {\n this.params.delete(name);\n }\n get(name) {\n const values = this.params.get(name);\n return values && values.length > 0 && values[0] !== void 0 ? values[0] : null;\n }\n getAll(name) {\n return this.params.get(name) || [];\n }\n has(name) {\n return this.params.has(name);\n }\n set(name, value) {\n this.params.set(name, [String(value)]);\n }\n forEach(callback) {\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n callback(value, key, this);\n });\n });\n }\n toString() {\n const parts = [];\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n });\n });\n return parts.join(\"&\");\n }\n }\n window.URLSearchParams = URLSearchParamsPolyfill;\n}\nfunction polyfillTextEncoder() {\n if (typeof TextEncoder !== \"undefined\") {\n return;\n }\n class TextEncoderPolyfill {\n constructor() {\n this.encoding = \"utf-8\";\n }\n encode(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 128) {\n utf8.push(charcode);\n } else if (charcode < 2048) {\n utf8.push(192 | charcode >> 6, 128 | charcode & 63);\n } else if (charcode < 55296 || charcode >= 57344) {\n utf8.push(\n 224 | charcode >> 12,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n } else {\n i++;\n charcode = 65536 + ((charcode & 1023) << 10 | str.charCodeAt(i) & 1023);\n utf8.push(\n 240 | charcode >> 18,\n 128 | charcode >> 12 & 63,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n }\n }\n return new Uint8Array(utf8);\n }\n }\n window.TextEncoder = TextEncoderPolyfill;\n}\nfunction polyfillPromiseFinally() {\n if (typeof Promise !== \"undefined\" && !Promise.prototype.finally) {\n Promise.prototype.finally = function(callback) {\n const constructor = this.constructor;\n return this.then(\n (value) => constructor.resolve(callback()).then(() => value),\n (reason) => constructor.resolve(callback()).then(() => {\n throw reason;\n })\n );\n };\n }\n}\nfunction polyfillObjectAssign() {\n if (typeof Object.assign !== \"function\") {\n Object.assign = function(target, ...sources) {\n if (target == null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n const to = Object(target);\n for (let i = 0; i < sources.length; i++) {\n const nextSource = sources[i];\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}\nfunction polyfillArrayFrom() {\n if (!Array.from) {\n Array.from = function(arrayLike, mapFn, thisArg) {\n const items = Object(arrayLike);\n if (arrayLike == null) {\n throw new TypeError(\"Array.from requires an array-like object\");\n }\n const len = items.length >>> 0;\n const result = new Array(len);\n for (let i = 0; i < len; i++) {\n if (mapFn) {\n result[i] = mapFn.call(thisArg, items[i], i);\n } else {\n result[i] = items[i];\n }\n }\n return result;\n };\n }\n}\nfunction polyfillStringStartsWith() {\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function(search, pos) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n };\n }\n}\nfunction polyfillStringEndsWith() {\n if (!String.prototype.endsWith) {\n String.prototype.endsWith = function(search, length) {\n if (length === void 0 || length > this.length) {\n length = this.length;\n }\n return this.substring(length - search.length, length) === search;\n };\n }\n}\nfunction polyfillStringIncludes() {\n if (!String.prototype.includes) {\n String.prototype.includes = function(search, start) {\n if (typeof start !== \"number\") {\n start = 0;\n }\n if (start + search.length > this.length) {\n return false;\n }\n return this.indexOf(search, start) !== -1;\n };\n }\n}\nfunction initializePolyfills() {\n polyfillObjectAssign();\n polyfillArrayFrom();\n polyfillStringStartsWith();\n polyfillStringEndsWith();\n polyfillStringIncludes();\n polyfillURLSearchParams();\n polyfillTextEncoder();\n polyfillPromiseFinally();\n}\n\n// src/utils/vastMacros.ts\nvar UNEXPANDED_MACRO_PATTERN = /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/;\nvar INVALID_VAST_PARAM_KEY = /^\\s|\\s$/;\nvar EXAMPLE_COM_URL = /example\\.com/i;\nvar CTV_UNSUPPORTED_PARAMS = [\n \"tfcd\",\n \"npa\",\n \"min_ad_duration\",\n \"max_ad_duration\",\n \"unviewed_position_start\",\n \"impl\",\n \"vad_type\",\n \"gdpr\",\n \"gdpr_consent\",\n \"us_privacy\"\n];\nvar INLINE_DEVICE_MACRO_REPLACEMENTS = [\n { pattern: /\\[RDID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IFA\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[ADVERTISING[_-]?ID(?:ENTIFIER)?\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[DEVICE[_-]?ID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IDTYPE\\]/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /\\{rdid\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{device[_-]?id\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{idtype\\}/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_IDENTIFIER_PLAIN%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%ADVERTISING_ID_OPT_OUT%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%ADVERTISING_ID_TYPE%%/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_ID%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%LIMIT_AD_TRACKING%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%SESSION_ID%%/gi, getValue: (ctx) => ctx.sessionId },\n { pattern: /%%CORRELATOR%%/gi, getValue: (ctx) => ctx.correlator }\n];\nfunction isMacroPlaceholder2(value) {\n if (value == null) return true;\n const trimmed = value.trim();\n if (!trimmed) return true;\n if (UNEXPANDED_MACRO_PATTERN.test(trimmed)) return true;\n return /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(trimmed);\n}\nfunction generateCorrelator() {\n if (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\n try {\n const buf = new Uint32Array(2);\n crypto.getRandomValues(buf);\n const value = (buf[0] ?? 0) * 2097152 + ((buf[1] ?? 0) & 2097151);\n if (value > 0) {\n return String(value);\n }\n } catch {\n }\n }\n return String(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1);\n}\nvar pageViewCorrelator;\nfunction getPageViewCorrelator() {\n const key = typeof window !== \"undefined\" ? window.location.pathname + window.location.search : \"\";\n if (!pageViewCorrelator || pageViewCorrelator.key !== key) {\n pageViewCorrelator = { key, value: generateCorrelator() };\n }\n return pageViewCorrelator.value;\n}\nfunction expandInlineMacroPlaceholders(baseUrl, ctx) {\n let url = baseUrl;\n for (const { pattern, getValue } of INLINE_DEVICE_MACRO_REPLACEMENTS) {\n const value = getValue(ctx);\n if (value != null && value !== \"\") {\n url = url.replace(pattern, encodeURIComponent(value));\n }\n }\n return url;\n}\nfunction applyDeviceIdentityParams(params, ctx) {\n const runtimeId = ctx.deviceId?.trim();\n const runtimeType = ctx.deviceIdType?.trim() || inferDeviceIdType();\n const tagRdid = params.get(\"rdid\");\n const tagType = params.get(\"idtype\");\n const tagLat = params.get(\"is_lat\");\n const latValue = ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0;\n if (runtimeId) {\n params.set(\"rdid\", runtimeId);\n params.set(\"idtype\", runtimeType || tagType || \"aaid\");\n params.set(\"is_lat\", latValue ?? (isMacroPlaceholder2(tagLat) ? \"0\" : tagLat));\n return;\n }\n if (!ctx.isCtv) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n const tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));\n const tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));\n if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n if (tagRdidValid) {\n if (isMacroPlaceholder2(tagType) && runtimeType) {\n params.set(\"idtype\", runtimeType);\n }\n if (isMacroPlaceholder2(tagLat)) {\n params.set(\"is_lat\", latValue ?? \"0\");\n }\n return;\n }\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n}\nfunction removeBrokenAppNameOrphans(params, appName) {\n const toDelete = [];\n params.forEach((_value, key) => {\n if (!key || INVALID_VAST_PARAM_KEY.test(key)) {\n toDelete.push(key);\n }\n });\n if (appName && appName.includes(\"&\")) {\n for (const suffix of appName.split(\"&\").slice(1)) {\n const trimmed = suffix.replace(/^\\s+/, \"\");\n if (!trimmed) continue;\n toDelete.push(suffix, ` ${trimmed}`, trimmed);\n }\n }\n for (const key of new Set(toDelete)) {\n if (key) params.delete(key);\n }\n}\nfunction normalizeVastTagUrl(raw) {\n if (!raw) return raw;\n try {\n const url = new URL(raw);\n const anValue = url.searchParams.get(\"an\");\n if (anValue !== null) {\n const orphanFragments = [];\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n orphanFragments.push(key.trim());\n }\n });\n if (orphanFragments.length > 0) {\n const reconstructed = [anValue.replace(/\\s+$/, \"\"), ...orphanFragments].filter(Boolean).join(\" & \");\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n url.searchParams.delete(key);\n }\n });\n url.searchParams.set(\"an\", reconstructed);\n return url.toString().replace(\n /([?&]an=)([^&]*)/,\n (_match, prefix, val) => prefix + val.replace(/\\+/g, \"%20\")\n );\n }\n }\n removeBrokenAppNameOrphans(url.searchParams);\n return url.toString();\n } catch {\n return raw;\n }\n}\nfunction applyVastMacros(baseUrl, ctx) {\n const expandedUrl = expandInlineMacroPlaceholders(baseUrl, ctx);\n let url;\n try {\n url = new URL(normalizeVastTagUrl(expandedUrl));\n } catch {\n return replaceCorrelatorFallback(expandedUrl, ctx.correlator);\n }\n const params = url.searchParams;\n removeBrokenAppNameOrphans(params);\n params.set(\"correlator\", ctx.correlator);\n params.set(\"scor\", ctx.streamCorrelator);\n if (ctx.isCtv) {\n for (const key of CTV_UNSUPPORTED_PARAMS) {\n params.delete(key);\n }\n } else {\n params.set(\"unviewed_position_start\", \"1\");\n }\n if (ctx.pod != null) {\n params.set(\"pod\", String(ctx.pod));\n }\n params.delete(\"ppos\");\n params.delete(\"lip\");\n if (ctx.podMinDurationMs != null) {\n params.set(\"pmnd\", String(Math.max(0, Math.round(ctx.podMinDurationMs))));\n }\n if (ctx.podMaxDurationMs != null) {\n params.set(\"pmxd\", String(Math.max(0, Math.round(ctx.podMaxDurationMs))));\n }\n if (ctx.podMaxAds != null) {\n params.set(\"pmad\", String(Math.max(1, Math.round(ctx.podMaxAds))));\n }\n const existingUrl = params.get(\"url\") || \"\";\n if (EXAMPLE_COM_URL.test(existingUrl)) {\n params.delete(\"url\");\n params.delete(\"description_url\");\n }\n if (!ctx.isCtv && ctx.pageUrl) {\n if (isMacroPlaceholder2(params.get(\"url\"))) {\n params.set(\"url\", ctx.pageUrl);\n }\n if (isMacroPlaceholder2(params.get(\"description_url\"))) {\n params.set(\"description_url\", params.get(\"url\") || ctx.pageUrl);\n }\n }\n if (!ctx.isCtv) {\n params.delete(\"an\");\n params.delete(\"msid\");\n params.delete(\"sid\");\n }\n if (ctx.adWillPlayMuted != null) {\n params.set(\"vpmute\", ctx.adWillPlayMuted ? \"1\" : \"0\");\n }\n if (ctx.adWillAutoPlay != null) {\n params.set(\"vpa\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n if (ctx.sessionId) {\n params.set(\"sid\", ctx.sessionId);\n }\n if (ctx.deviceTypeHint != null) {\n params.set(\"dth\", String(ctx.deviceTypeHint));\n } else if (ctx.isCtv) {\n params.set(\"dth\", \"5\");\n }\n applyDeviceIdentityParams(params, ctx);\n if (!ctx.isCtv) {\n const consent = ctx.consent;\n if (consent?.gdpr != null) {\n params.set(\"gdpr\", consent.gdpr);\n }\n if (consent?.gdprConsent != null) {\n params.set(\"gdpr_consent\", consent.gdprConsent);\n }\n if (consent?.usPrivacy != null) {\n params.set(\"us_privacy\", consent.usPrivacy);\n }\n }\n if (ctx.adTest) {\n params.set(\"adtest\", \"on\");\n }\n if (ctx.programTitle) {\n params.set(\"ct_ti\", ctx.programTitle);\n }\n if (ctx.channelName) {\n params.set(\"ct_ch\", ctx.channelName);\n }\n const staleKeys = [];\n params.forEach((value, key) => {\n if (isMacroPlaceholder2(value)) {\n staleKeys.push(key);\n }\n });\n for (const key of staleKeys) {\n params.delete(key);\n }\n removeBrokenAppNameOrphans(params);\n return url.toString();\n}\nfunction replaceCorrelatorFallback(baseUrl, correlator) {\n const correlatorRegex = /([?&])correlator=([^&]*)/;\n if (correlatorRegex.test(baseUrl)) {\n return baseUrl.replace(correlatorRegex, `$1correlator=${correlator}`);\n }\n const sep = baseUrl.includes(\"?\") ? \"&\" : \"?\";\n return `${baseUrl}${sep}correlator=${correlator}`;\n}\nfunction fetchConsentSignals(timeoutMs = 1500) {\n const signals = {};\n if (typeof window === \"undefined\") {\n return Promise.resolve(signals);\n }\n const tasks = [];\n const tcfApi = window.__tcfapi;\n if (typeof tcfApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n let settled = false;\n try {\n tcfApi(\"addEventListener\", 2, (tcData, success) => {\n if (settled) return;\n if (success && tcData && (tcData.eventStatus === \"tcloaded\" || tcData.eventStatus === \"useractioncomplete\")) {\n settled = true;\n signals.gdpr = tcData.gdprApplies ? \"1\" : \"0\";\n signals.storageAllowed = tcData.gdprApplies ? tcData.purpose?.consents?.[1] === true : true;\n if (typeof tcData.tcString === \"string\" && tcData.tcString) {\n signals.gdprConsent = tcData.tcString;\n }\n try {\n tcfApi(\"removeEventListener\", 2, () => {\n }, tcData.listenerId);\n } catch {\n }\n resolve();\n }\n });\n } catch {\n resolve();\n }\n setTimeout(() => {\n if (!settled) {\n settled = true;\n resolve();\n }\n }, timeoutMs);\n })\n );\n }\n const uspApi = window.__uspapi;\n if (typeof uspApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n try {\n uspApi(\"getUSPData\", 1, (data, success) => {\n if (success && typeof data?.uspString === \"string\" && data.uspString) {\n signals.usPrivacy = data.uspString;\n }\n resolve();\n });\n } catch {\n resolve();\n }\n setTimeout(resolve, timeoutMs);\n })\n );\n }\n if (tasks.length === 0) {\n return Promise.resolve(signals);\n }\n return Promise.all(tasks).then(() => signals);\n}\n\n// src/player/Scte35Parser.ts\nfunction parseCueOutDuration(value) {\n const num = parseFloat(value.trim());\n if (!Number.isNaN(num)) return num;\n const match = value.match(/(?:^|[,\\s])DURATION\\s*=\\s*([0-9.]+)/i) || value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (match && match[1] != null) {\n const dStr = match[1];\n const d = parseFloat(dStr);\n return Number.isNaN(d) ? void 0 : d;\n }\n return void 0;\n}\nfunction parseCueOutCont(value) {\n const res = {};\n const elapsedMatch = value.match(/Elapsed\\s*=\\s*([0-9.]+)/i);\n const durationMatch = value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (elapsedMatch && elapsedMatch[1] != null) {\n const e = parseFloat(elapsedMatch[1]);\n if (!Number.isNaN(e)) res.elapsed = e;\n }\n if (durationMatch && durationMatch[1] != null) {\n const d = parseFloat(durationMatch[1]);\n if (!Number.isNaN(d)) res.duration = d;\n }\n if (!(\"elapsed\" in res) || !(\"duration\" in res)) {\n const slashMatch = value.match(/([0-9.]+)\\s*\\/\\s*([0-9.]+)/);\n if (slashMatch && slashMatch[1] && slashMatch[2]) {\n const elapsed = parseFloat(slashMatch[1]);\n const duration = parseFloat(slashMatch[2]);\n if (!Number.isNaN(elapsed) && !(\"elapsed\" in res)) res.elapsed = elapsed;\n if (!Number.isNaN(duration) && !(\"duration\" in res)) res.duration = duration;\n }\n }\n if (\"elapsed\" in res || \"duration\" in res) return res;\n return void 0;\n}\nfunction parseAttributeList(value) {\n const attrs = {};\n const regex = /([A-Z0-9-]+)=((\"[^\"]*\")|([^\",]*))(?:,|$)/gi;\n let match;\n while ((match = regex.exec(value)) !== null) {\n const key = match[1] ?? \"\";\n let rawVal = match[3] ?? match[4] ?? \"\";\n if (rawVal.startsWith('\"') && rawVal.endsWith('\"')) {\n rawVal = rawVal.slice(1, -1);\n }\n if (key) {\n attrs[key] = rawVal;\n }\n }\n return attrs;\n}\nfunction toNumber(val) {\n if (val == null) return void 0;\n const n = typeof val === \"string\" ? parseFloat(val) : Number(val);\n return Number.isNaN(n) ? void 0 : n;\n}\nfunction isManifestBasedMarker(marker) {\n const raw = marker.raw;\n if (!raw) return false;\n if (raw.tag) {\n const tag = String(raw.tag);\n return tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-CUE-IN\") || tag.includes(\"EXT-X-DATERANGE\");\n }\n if (raw.id3) return false;\n if (raw.splice_command_type) return false;\n return false;\n}\nfunction decodeId3ValueToText(value) {\n try {\n if (typeof value === \"string\") return value;\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n const text = decoder.decode(value);\n if (text && /[\\x20-\\x7E]/.test(text)) return text;\n let out = \"\";\n for (let i = 0; i < value.length; i++)\n out += String.fromCharCode(value[i]);\n return out;\n } catch {\n return void 0;\n }\n}\nfunction getFragmentStartSeconds(frag) {\n const candidates = [frag?.start, frag?.startPTS];\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return void 0;\n}\nfunction parseScte35FromId3(tag) {\n const text = decodeId3ValueToText(tag.value);\n if (!text) return void 0;\n const cueOutMatch = text.match(/EXT-X-CUE-OUT(?::([^\\r\\n]*))?/i) || text.match(/CUE-OUT(?::([^\\r\\n]*))?/i);\n if (cueOutMatch) {\n const arg = (cueOutMatch[1] ?? \"\").trim();\n const dur = parseCueOutDuration(arg);\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...dur !== void 0 ? { durationSeconds: dur } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueOutContMatch = text.match(/EXT-X-CUE-OUT-CONT:([^\\r\\n]*)/i);\n if (cueOutContMatch) {\n const arg = (cueOutContMatch[1] ?? \"\").trim();\n const cont = parseCueOutCont(arg);\n const marker = {\n type: \"progress\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...cont?.duration !== void 0 ? { durationSeconds: cont.duration } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueInMatch = text.match(/EXT-X-CUE-IN\\b/i) || text.match(/CUE-IN\\b/i);\n if (cueInMatch) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const daterangeMatch = text.match(/EXT-X-DATERANGE:([^\\r\\n]*)/i);\n if (daterangeMatch) {\n const attrs = parseAttributeList(daterangeMatch[1] ?? \"\");\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n if (hasScteIn) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n }\n if (/SCTE35-OUT/i.test(text)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (/SCTE35-IN/i.test(text)) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (tag.value instanceof Uint8Array) {\n const bin = parseScte35Binary(tag.value);\n if (bin) return bin;\n }\n return void 0;\n}\nfunction normalizeFragmentPayload(payload) {\n if (payload instanceof Uint8Array) {\n return payload;\n }\n if (payload instanceof ArrayBuffer) {\n return new Uint8Array(payload);\n }\n if (ArrayBuffer.isView(payload)) {\n const view = payload;\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n }\n return void 0;\n}\nfunction detectTsPacketFormat(data) {\n const packetSizes = [188, 192, 204];\n for (const packetSize of packetSizes) {\n const tsPayloadOffset = packetSize === 192 ? 4 : 0;\n for (let offset = 0; offset < packetSize; offset++) {\n let matchedPackets = 0;\n for (let packetStart = offset; packetStart + tsPayloadOffset < data.length && matchedPackets < 5; packetStart += packetSize) {\n if (data[packetStart + tsPayloadOffset] !== 71) {\n break;\n }\n matchedPackets++;\n }\n if (matchedPackets >= 2) {\n return { offset, packetSize, tsPayloadOffset };\n }\n }\n }\n return void 0;\n}\nfunction getPsiSectionStart(payload, payloadUnitStart) {\n if (!payloadUnitStart) {\n return void 0;\n }\n const pointerField = payload[0];\n if (pointerField == null) {\n return void 0;\n }\n const sectionStart = 1 + pointerField;\n return sectionStart < payload.length ? sectionStart : void 0;\n}\nfunction getPsiSectionLength(data, offset) {\n return ((data[offset + 1] ?? 0) & 15) << 8 | (data[offset + 2] ?? 0);\n}\nfunction parsePatSection(payload, payloadUnitStart, pmtPids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 8 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 0) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n for (let offset = sectionStart + 8; offset + 4 <= sectionEnd - 4; offset += 4) {\n const programNumber = (payload[offset] ?? 0) << 8 | (payload[offset + 1] ?? 0);\n const pid = ((payload[offset + 2] ?? 0) & 31) << 8 | (payload[offset + 3] ?? 0);\n if (programNumber !== 0) {\n pmtPids.add(pid);\n }\n }\n}\nfunction descriptorsIdentifyScte35(data, start, end) {\n let offset = start;\n while (offset + 2 <= end) {\n const tag = data[offset] ?? 0;\n const length = data[offset + 1] ?? 0;\n const descriptorStart = offset + 2;\n const descriptorEnd = descriptorStart + length;\n if (descriptorEnd > end) {\n return false;\n }\n const registration = length >= 4 ? String.fromCharCode(\n data[descriptorStart] ?? 0,\n data[descriptorStart + 1] ?? 0,\n data[descriptorStart + 2] ?? 0,\n data[descriptorStart + 3] ?? 0\n ) : \"\";\n if (tag === 138 || registration === \"CUEI\" || registration === \"SCTE\") {\n return true;\n }\n offset = descriptorEnd;\n }\n return false;\n}\nfunction parsePmtSection(payload, payloadUnitStart, tsScte35Pids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 12 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 2) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n const programInfoLength = ((payload[sectionStart + 10] ?? 0) & 15) << 8 | (payload[sectionStart + 11] ?? 0);\n let offset = sectionStart + 12 + programInfoLength;\n while (offset + 5 <= sectionEnd - 4) {\n const streamType = payload[offset] ?? 0;\n const elementaryPid = ((payload[offset + 1] ?? 0) & 31) << 8 | (payload[offset + 2] ?? 0);\n const esInfoLength = ((payload[offset + 3] ?? 0) & 15) << 8 | (payload[offset + 4] ?? 0);\n const descriptorStart = offset + 5;\n const descriptorEnd = Math.min(descriptorStart + esInfoLength, sectionEnd - 4);\n if (streamType === 134 || streamType === 6 && descriptorsIdentifyScte35(payload, descriptorStart, descriptorEnd)) {\n tsScte35Pids.add(elementaryPid);\n }\n offset = descriptorStart + esInfoLength;\n }\n}\nfunction hasProcessedTsScte35Section(section, processedSections) {\n let checksum = 0;\n for (let i = 0; i < section.length; i++) {\n checksum = checksum * 31 + (section[i] ?? 0) >>> 0;\n }\n const key = `${section.length}:${checksum}`;\n if (processedSections.has(key)) {\n return true;\n }\n processedSections.add(key);\n if (processedSections.size > 200) {\n const firstKey = processedSections.values().next().value;\n if (firstKey) {\n processedSections.delete(firstKey);\n }\n }\n return false;\n}\nfunction addScte35SectionMarker(section, markers, processedSections) {\n if (section[0] !== 252 || hasProcessedTsScte35Section(section, processedSections)) {\n return;\n }\n const marker = parseScte35Binary(section);\n if (!marker) {\n return;\n }\n marker.raw = {\n ...typeof marker.raw === \"object\" && marker.raw ? marker.raw : {},\n source: \"ts-packet\"\n };\n markers.push(marker);\n}\nfunction appendScte35Bytes(pid, bytes, assemblers, markers, processedSections) {\n const assembler = assemblers.get(pid);\n if (!assembler) {\n return;\n }\n for (let i = 0; i < bytes.length && assembler.bytes.length < assembler.expectedLength; i++) {\n assembler.bytes.push(bytes[i] ?? 0);\n }\n if (assembler.bytes.length >= assembler.expectedLength) {\n assemblers.delete(pid);\n addScte35SectionMarker(new Uint8Array(assembler.bytes), markers, processedSections);\n }\n}\nfunction collectScte35SectionsFromPayload(pid, payload, payloadUnitStart, assemblers, markers, processedSections) {\n if (payload.length === 0) {\n return;\n }\n let offset = 0;\n if (payloadUnitStart) {\n const pointerField = payload[0] ?? 0;\n const previousAssembler = assemblers.get(pid);\n if (previousAssembler && pointerField > 0) {\n appendScte35Bytes(\n pid,\n payload.subarray(1, Math.min(1 + pointerField, payload.length)),\n assemblers,\n markers,\n processedSections\n );\n }\n assemblers.delete(pid);\n offset = 1 + pointerField;\n } else {\n appendScte35Bytes(pid, payload, assemblers, markers, processedSections);\n return;\n }\n while (offset + 3 <= payload.length) {\n const tableId = payload[offset];\n if (tableId == null || tableId === 255) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, offset);\n const totalLength = 3 + sectionLength;\n if (sectionLength <= 0 || totalLength <= 3) {\n return;\n }\n if (offset + totalLength <= payload.length) {\n addScte35SectionMarker(\n payload.subarray(offset, offset + totalLength),\n markers,\n processedSections\n );\n offset += totalLength;\n } else {\n assemblers.set(pid, {\n bytes: Array.from(payload.subarray(offset)),\n expectedLength: totalLength\n });\n return;\n }\n }\n}\nfunction parseScte35FromTsPackets(data, tsScte35Pids, pmtPids, processedSections) {\n const packetInfo = detectTsPacketFormat(data);\n if (!packetInfo) {\n return [];\n }\n const markers = [];\n const sectionAssemblers = /* @__PURE__ */ new Map();\n for (let packetStart = packetInfo.offset; packetStart + packetInfo.packetSize <= data.length; packetStart += packetInfo.packetSize) {\n const tsStart = packetStart + packetInfo.tsPayloadOffset;\n if (data[tsStart] !== 71) {\n continue;\n }\n const secondByte = data[tsStart + 1];\n const thirdByte = data[tsStart + 2];\n const fourthByte = data[tsStart + 3];\n if (secondByte == null || thirdByte == null || fourthByte == null || (secondByte & 128) !== 0) {\n continue;\n }\n const payloadUnitStart = (secondByte & 64) !== 0;\n const pid = (secondByte & 31) << 8 | thirdByte;\n const adaptationFieldControl = fourthByte >> 4 & 3;\n const hasPayload = adaptationFieldControl === 1 || adaptationFieldControl === 3;\n if (!hasPayload) {\n continue;\n }\n let payloadStart = tsStart + 4;\n if (adaptationFieldControl === 3) {\n const adaptationLength = data[payloadStart];\n if (adaptationLength == null) {\n continue;\n }\n payloadStart += 1 + adaptationLength;\n }\n const payloadEnd = Math.min(tsStart + 188, data.length);\n if (payloadStart >= payloadEnd || payloadStart >= data.length) {\n continue;\n }\n const payload = data.subarray(payloadStart, payloadEnd);\n if (pid === 0) {\n parsePatSection(payload, payloadUnitStart, pmtPids);\n } else if (pmtPids.has(pid)) {\n parsePmtSection(payload, payloadUnitStart, tsScte35Pids);\n } else if (tsScte35Pids.has(pid)) {\n collectScte35SectionsFromPayload(\n pid,\n payload,\n payloadUnitStart,\n sectionAssemblers,\n markers,\n processedSections\n );\n }\n }\n return markers;\n}\nvar BitReader = class {\n constructor(buf) {\n this.buf = buf;\n this.bytePos = 0;\n this.bitPos = 0;\n }\n readBits(numBits) {\n let result = 0;\n while (numBits > 0) {\n if (this.bytePos >= this.buf.length) return result;\n const remainingInByte = 8 - this.bitPos;\n const toRead = Math.min(numBits, remainingInByte);\n const currentByte = this.buf[this.bytePos];\n const shift = remainingInByte - toRead;\n const mask = (1 << toRead) - 1 & 255;\n const bits = currentByte >> shift & mask;\n result = result << toRead | bits;\n this.bitPos += toRead;\n if (this.bitPos >= 8) {\n this.bitPos = 0;\n this.bytePos += 1;\n }\n numBits -= toRead;\n }\n return result >>> 0;\n }\n skipBits(n) {\n this.readBits(n);\n }\n get bytePosition() {\n return this.bitPos === 0 ? this.bytePos : this.bytePos + 1;\n }\n};\nfunction readSpliceTime(r, ptsAdjustmentTicks) {\n const timeSpecifiedFlag = r.readBits(1) === 1;\n if (!timeSpecifiedFlag) {\n r.readBits(7);\n return void 0;\n }\n r.readBits(6);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const ptsTicks = (high * 4294967296 + low + ptsAdjustmentTicks) % 8589934592;\n return ptsTicks / 9e4;\n}\nfunction markerTypeFromSegmentationTypeId(segmentationTypeId) {\n switch (segmentationTypeId) {\n case 16:\n case 34:\n case 48:\n case 50:\n case 52:\n case 54:\n return \"start\";\n case 17:\n case 35:\n case 49:\n case 51:\n case 53:\n case 55:\n return \"end\";\n default:\n return void 0;\n }\n}\nfunction parseScte35SegmentationDescriptor(descriptor) {\n if (descriptor.length < 11) {\n return void 0;\n }\n const identifier = String.fromCharCode(\n descriptor[0] ?? 0,\n descriptor[1] ?? 0,\n descriptor[2] ?? 0,\n descriptor[3] ?? 0\n );\n if (identifier !== \"CUEI\") {\n return void 0;\n }\n const segmentationEventId = (descriptor[4] ?? 0) * 16777216 + ((descriptor[5] ?? 0) << 16) + ((descriptor[6] ?? 0) << 8) + (descriptor[7] ?? 0);\n const cancelIndicator = ((descriptor[8] ?? 0) & 128) !== 0;\n if (cancelIndicator) {\n return void 0;\n }\n const flags = descriptor[9] ?? 0;\n const programSegmentationFlag = (flags & 128) !== 0;\n const segmentationDurationFlag = (flags & 64) !== 0;\n let offset = 10;\n if (!programSegmentationFlag) {\n const componentCount = descriptor[offset] ?? 0;\n offset += 1 + componentCount * 6;\n if (offset > descriptor.length) {\n return void 0;\n }\n }\n let durationSeconds = void 0;\n if (segmentationDurationFlag) {\n if (offset + 5 > descriptor.length) {\n return void 0;\n }\n const durationTicks = (descriptor[offset] ?? 0) * 4294967296 + (descriptor[offset + 1] ?? 0) * 16777216 + ((descriptor[offset + 2] ?? 0) << 16) + ((descriptor[offset + 3] ?? 0) << 8) + (descriptor[offset + 4] ?? 0);\n durationSeconds = durationTicks / 9e4;\n offset += 5;\n }\n if (offset + 2 > descriptor.length) {\n return void 0;\n }\n offset += 1;\n const segmentationUpidLength = descriptor[offset] ?? 0;\n offset += 1 + segmentationUpidLength;\n if (offset >= descriptor.length) {\n return void 0;\n }\n const segmentationTypeId = descriptor[offset] ?? 0;\n const markerType = markerTypeFromSegmentationTypeId(segmentationTypeId);\n if (!markerType) {\n return void 0;\n }\n return {\n type: markerType,\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n segmentationEventId\n };\n}\nfunction parseScte35SegmentationDescriptors(data, offset) {\n if (offset + 2 > data.length) {\n return void 0;\n }\n const descriptorLoopLength = (data[offset] ?? 0) << 8 | (data[offset + 1] ?? 0);\n let descriptorOffset = offset + 2;\n const descriptorEnd = Math.min(\n data.length,\n descriptorOffset + descriptorLoopLength\n );\n while (descriptorOffset + 2 <= descriptorEnd) {\n const descriptorTag = data[descriptorOffset] ?? 0;\n const descriptorLength = data[descriptorOffset + 1] ?? 0;\n const descriptorDataStart = descriptorOffset + 2;\n const descriptorDataEnd = descriptorDataStart + descriptorLength;\n if (descriptorDataEnd > descriptorEnd) {\n return void 0;\n }\n if (descriptorTag === 2) {\n const descriptorMarker = parseScte35SegmentationDescriptor(\n data.subarray(descriptorDataStart, descriptorDataEnd)\n );\n if (descriptorMarker) {\n return descriptorMarker;\n }\n }\n descriptorOffset = descriptorDataEnd;\n }\n return void 0;\n}\nfunction parseScte35Binary(data) {\n const r = new BitReader(data);\n const tableId = r.readBits(8);\n if (tableId !== 252) return void 0;\n r.readBits(1);\n r.readBits(1);\n r.readBits(2);\n const sectionLength = r.readBits(12);\n if (sectionLength <= 0 || data.length < 3 + sectionLength) {\n return void 0;\n }\n r.readBits(8);\n r.readBits(1);\n r.readBits(6);\n const ptsAdjHigh = r.readBits(1);\n const ptsAdjLow = r.readBits(32);\n const ptsAdjustmentTicks = ptsAdjHigh * 4294967296 + ptsAdjLow;\n r.readBits(8);\n r.readBits(12);\n const spliceCommandLength = r.readBits(12);\n const spliceCommandType = r.readBits(8);\n let markerType;\n let durationSeconds = void 0;\n let ptsSeconds = void 0;\n let spliceEventId = void 0;\n const commandBodyStart = r.bytePosition;\n if (spliceCommandType === 5) {\n spliceEventId = r.readBits(32);\n const cancel = r.readBits(1) === 1;\n r.readBits(7);\n if (cancel) return void 0;\n const outOfNetwork = r.readBits(1) === 1;\n const programSpliceFlag = r.readBits(1) === 1;\n const durationFlag = r.readBits(1) === 1;\n const spliceImmediateFlag = r.readBits(1) === 1;\n r.readBits(4);\n markerType = outOfNetwork ? \"start\" : \"end\";\n if (programSpliceFlag && !spliceImmediateFlag) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else if (!programSpliceFlag) {\n const componentCount = r.readBits(8);\n for (let i = 0; i < componentCount; i++) {\n r.readBits(8);\n if (!spliceImmediateFlag) {\n const componentPtsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n if (ptsSeconds === void 0) {\n ptsSeconds = componentPtsSeconds;\n }\n }\n }\n }\n if (durationFlag) {\n r.readBits(6);\n r.readBits(1);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const durationTicks = high * 4294967296 + low;\n durationSeconds = durationTicks / 9e4;\n }\n r.readBits(16);\n r.readBits(8);\n r.readBits(8);\n } else if (spliceCommandType === 6) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else {\n return void 0;\n }\n const expectedDescriptorOffset = spliceCommandLength === 4095 ? r.bytePosition : commandBodyStart + spliceCommandLength;\n const descriptorMarker = parseScte35SegmentationDescriptors(\n data,\n expectedDescriptorOffset\n );\n if (descriptorMarker) {\n markerType = descriptorMarker.type;\n if (durationSeconds === void 0) {\n durationSeconds = descriptorMarker.durationSeconds;\n }\n }\n if (!markerType) {\n return void 0;\n }\n const marker = {\n type: markerType,\n ...ptsSeconds !== void 0 ? { ptsSeconds } : {},\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: {\n splice_command_type: spliceCommandType,\n ...spliceEventId !== void 0 ? { splice_event_id: spliceEventId } : {},\n ...descriptorMarker?.segmentationEventId !== void 0 ? { segmentation_event_id: descriptorMarker.segmentationEventId } : {}\n }\n };\n return marker;\n}\n\n// src/player/Scte35CueManager.ts\nvar Scte35CueManager = class {\n constructor(debug, callbacks) {\n this.pendingScte35Cues = /* @__PURE__ */ new Map();\n this.recentScte35CueKeys = /* @__PURE__ */ new Map();\n this.recentScte35CueLimit = 200;\n this.tsScte35Pids = /* @__PURE__ */ new Set();\n this.pmtPids = /* @__PURE__ */ new Set();\n this.processedTsScte35Sections = /* @__PURE__ */ new Set();\n this.debug = debug;\n this.callbacks = callbacks;\n }\n get pendingScte35CueKey() {\n return this.pendingScte35CueKeyValue;\n }\n set pendingScte35CueKey(value) {\n this.pendingScte35CueKeyValue = value;\n }\n get activeScte35BreakKey() {\n return this.activeScte35BreakKeyValue;\n }\n set activeScte35BreakKey(value) {\n this.activeScte35BreakKeyValue = value;\n }\n get scheduledScte35BreakKey() {\n return this.scheduledScte35BreakKeyValue;\n }\n set scheduledScte35BreakKey(value) {\n this.scheduledScte35BreakKeyValue = value;\n }\n createScte35CueContext(source, readiness, frag) {\n const context = { source, readiness };\n if (typeof frag?.sn === \"number\") {\n context.fragmentSn = frag.sn;\n }\n const fragmentStartSec = getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n return context;\n }\n onScte35Cue(marker, context) {\n const cue = this.createScte35Cue(marker, context);\n const pendingKey = this.getPendingScte35CueKey(cue);\n if (context.readiness === \"early\") {\n this.pendingScte35Cues.set(pendingKey, cue);\n this.trimRecentScte35CueMaps();\n if (marker.type === \"start\") {\n this.callbacks.onEarlyStartCue(marker, context.fragmentSn, cue.key);\n }\n return;\n }\n if (marker.type === \"end\" && !this.shouldAcceptScte35EndCue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 end cue\", {\n key: cue.key,\n activeScte35BreakKey: this.activeScte35BreakKeyValue,\n inAdBreak: this.callbacks.isInAdBreak(),\n source: cue.source\n });\n }\n return;\n }\n if (marker.type === \"start\" && this.hasRecentlyHandledScte35Cue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring duplicate SCTE-35 start cue\", {\n key: cue.key,\n source: cue.source\n });\n }\n return;\n }\n this.pendingScte35Cues.delete(pendingKey);\n this.markScte35CueHandled(cue);\n this.callbacks.onPlaybackCue(marker, cue.key);\n }\n activatePendingScte35CuesForFragment(frag) {\n const fragmentSn = typeof frag?.sn === \"number\" ? frag.sn : void 0;\n if (fragmentSn === void 0) {\n return;\n }\n const matchingCues = Array.from(this.pendingScte35Cues.entries()).filter(\n ([, cue]) => cue.fragmentSn === fragmentSn\n );\n matchingCues.forEach(([pendingKey, cue]) => {\n this.pendingScte35Cues.delete(pendingKey);\n const context = {\n source: cue.source,\n readiness: \"playback\"\n };\n context.fragmentSn = fragmentSn;\n const fragmentStartSec = cue.fragmentStartSeconds ?? getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n this.onScte35Cue(cue.marker, context);\n });\n }\n createScte35Cue(marker, context) {\n const cue = {\n marker,\n source: context.source,\n readiness: context.readiness,\n key: this.getScte35CueKey(marker, context)\n };\n if (context.fragmentSn !== void 0) {\n cue.fragmentSn = context.fragmentSn;\n }\n if (context.fragmentStartSeconds !== void 0) {\n cue.fragmentStartSeconds = context.fragmentStartSeconds;\n }\n return cue;\n }\n getScte35CueKey(marker, context) {\n const raw = this.getScte35MarkerRaw(marker);\n const spliceEventId = this.toIdentityString(raw?.splice_event_id);\n if (spliceEventId) {\n return `splice:${spliceEventId}`;\n }\n const segmentationEventId = this.toIdentityString(raw?.segmentation_event_id);\n if (segmentationEventId) {\n return `segmentation:${segmentationEventId}`;\n }\n const daterangeId = this.toIdentityString(raw?.attrs?.ID);\n if (daterangeId) {\n return `daterange:${daterangeId}`;\n }\n const scteValue = this.toIdentityString(raw?.attrs?.[\"SCTE35-OUT\"]) || this.toIdentityString(raw?.attrs?.[\"SCTE35-IN\"]);\n if (scteValue) {\n return `daterange-scte:${scteValue}`;\n }\n if (typeof marker.ptsSeconds === \"number\" && Number.isFinite(marker.ptsSeconds)) {\n return `pts:${Math.round(marker.ptsSeconds * 2) / 2}`;\n }\n if (context.fragmentSn !== void 0) {\n return `fragment:${context.fragmentSn}`;\n }\n return `${context.source}:wallclock:${Math.floor(Date.now() / 1e3)}`;\n }\n getPendingScte35CueKey(cue) {\n return `${cue.marker.type}:${cue.key}:${cue.fragmentSn !== void 0 ? cue.fragmentSn : \"unknown\"}`;\n }\n getScte35MarkerRaw(marker) {\n return typeof marker.raw === \"object\" && marker.raw !== null ? marker.raw : {};\n }\n toIdentityString(value) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return String(value);\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n return value.trim();\n }\n return void 0;\n }\n isStrongScte35CueKey(key) {\n return !!(key && (key.startsWith(\"splice:\") || key.startsWith(\"segmentation:\") || key.startsWith(\"daterange:\") || key.startsWith(\"daterange-scte:\")));\n }\n hasRecentlyHandledScte35Cue(cue) {\n if (this.activeScte35BreakKeyValue === cue.key || this.scheduledScte35BreakKeyValue === cue.key) {\n return true;\n }\n const recentKey = `${cue.marker.type}:${cue.key}`;\n return this.recentScte35CueKeys.has(recentKey);\n }\n markScte35CueHandled(cue) {\n this.recentScte35CueKeys.set(`${cue.marker.type}:${cue.key}`, Date.now());\n this.trimRecentScte35CueMaps();\n }\n trimRecentScte35CueMaps() {\n while (this.recentScte35CueKeys.size > this.recentScte35CueLimit) {\n const firstKey = this.recentScte35CueKeys.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.recentScte35CueKeys.delete(firstKey);\n }\n while (this.pendingScte35Cues.size > this.recentScte35CueLimit) {\n const firstKey = this.pendingScte35Cues.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.pendingScte35Cues.delete(firstKey);\n }\n }\n shouldAcceptScte35EndCue(cue) {\n if (!this.callbacks.isInAdBreak()) {\n return false;\n }\n if (this.isStrongScte35CueKey(this.activeScte35BreakKeyValue) && this.isStrongScte35CueKey(cue.key) && this.activeScte35BreakKeyValue !== cue.key) {\n return false;\n }\n return true;\n }\n};\n\n// src/player/AdConfigManager.ts\nvar AdConfigManager = class {\n constructor(config, video) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds = /* @__PURE__ */ new Set();\n this.streamCorrelator = generateCorrelator();\n this.consentSignals = {};\n this.podCounter = 0;\n this.podAssignedByPrefetch = false;\n this.lastHeartbeatTime = 0;\n this.defaultPodMaxAds = 6;\n this.defaultPodMaxDurationMs = 12e4;\n this.config = config;\n this.video = video;\n }\n get viewCorrelator() {\n return getPageViewCorrelator();\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n isVmapEnabled() {\n return !!(this.config.isVmap && this.config.vmapUrl?.trim());\n }\n async fetchAdConfiguration() {\n if (this.isVmapEnabled()) {\n await this.fetchAndParseVmap(this.config.vmapUrl);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VMAP mode enabled\");\n }\n return;\n }\n const vastMode = this.config.vastMode || \"default\";\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VAST mode:\", vastMode);\n }\n if (vastMode === \"adstorm\") {\n if (!this.config.licenseKey) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] AdStorm mode requires a license key\"\n );\n }\n return;\n }\n const vastEndpoint = `https://adstorm.co/api-adstorm-dev/adstorm/vast/${this.config.licenseKey}`;\n this.apiVastTagUrl = vastEndpoint;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using AdStorm VAST endpoint (adstorm mode):\",\n vastEndpoint\n );\n }\n return;\n }\n if (this.config.vastTagUrl) {\n this.apiVastTagUrl = normalizeVastTagUrl(this.config.vastTagUrl);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using custom VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n return;\n }\n const apiUrl = \"https://adstorm.co/api-adstorm-dev/adstorm/ads/web\";\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Fetching ad configuration from:\",\n apiUrl\n );\n }\n const headers = {};\n if (this.config.licenseKey) {\n headers[\"Authorization\"] = `Bearer ${this.config.licenseKey}`;\n }\n const response = await fetch(apiUrl, { headers });\n if (!response.ok) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Failed to fetch ad configuration: ${response.status}`\n );\n }\n return;\n }\n const data = await response.json();\n const imaPayload = data.response?.ima?.[\"publisherdesk.ima\"]?.payload;\n if (imaPayload) {\n let decodedPayload = imaPayload;\n try {\n decodedPayload = decodeURIComponent(imaPayload);\n } catch {\n console.warn(\"[StormcloudVideoPlayer] imaPayload was not URI-encoded; using as-is:\", imaPayload);\n }\n console.log(\"[StormcloudVideoPlayer] Raw VAST tag URL (from API):\", decodedPayload);\n this.apiVastTagUrl = normalizeVastTagUrl(decodedPayload);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Normalized VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n } else {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response\"\n );\n }\n }\n const numberAds = data.response?.options?.vast?.cue_tones?.number_ads;\n if (numberAds != null && numberAds > 0) {\n this.apiNumberAds = numberAds;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Number of ads per break from API:\",\n this.apiNumberAds\n );\n }\n }\n }\n async fetchAndParseVmap(vmapUrl) {\n if (!vmapUrl.trim()) {\n return;\n }\n try {\n const response = await fetch(vmapUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch VMAP (${response.status})`);\n }\n const vmapXml = await response.text();\n this.vmapBreaks = this.parseVmapToBreaks(vmapXml);\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Loaded ${this.vmapBreaks.length} VMAP ad break(s) from:`,\n vmapUrl\n );\n }\n } catch (error) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to load VMAP:\", error);\n }\n }\n }\n parseVmapToBreaks(vmapXml) {\n if (typeof DOMParser === \"undefined\") {\n return [];\n }\n const doc = new DOMParser().parseFromString(vmapXml, \"application/xml\");\n if (doc.querySelector(\"parsererror\")) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Invalid VMAP XML received\");\n }\n return [];\n }\n const VMAP_NS = \"http://www.iab.net/videosuite/vmap\";\n let adBreakNodes = Array.from(doc.getElementsByTagNameNS(VMAP_NS, \"AdBreak\"));\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(\n doc.querySelectorAll(\"AdBreak, vmap\\\\:AdBreak\")\n );\n }\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(doc.getElementsByTagName(\"*\")).filter(\n (el) => el.localName === \"AdBreak\"\n );\n }\n const parsed = [];\n adBreakNodes.forEach((node, index) => {\n const timeOffsetRaw = (node.getAttribute(\"timeOffset\") || \"\").trim();\n const startTimeMs = this.parseVmapTimeOffsetToMs(timeOffsetRaw);\n if (startTimeMs == null) {\n return;\n }\n let adTagNode = node.getElementsByTagNameNS(VMAP_NS, \"AdTagURI\")[0];\n if (!adTagNode) {\n adTagNode = node.querySelector(\"AdTagURI, vmap\\\\:AdTagURI\") ?? void 0;\n }\n const adTagUrl = (adTagNode?.textContent || \"\").trim();\n if (!adTagUrl) {\n return;\n }\n const breakId = node.getAttribute(\"breakId\") || `vmap-break-${index}-${timeOffsetRaw || \"unknown\"}`;\n parsed.push({\n id: breakId,\n startTimeMs,\n vastTagUrl: adTagUrl\n });\n });\n parsed.sort((a, b) => {\n const aStart = a.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : a.startTimeMs;\n const bStart = b.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : b.startTimeMs;\n return aStart - bStart;\n });\n return parsed;\n }\n parseVmapTimeOffsetToMs(timeOffset) {\n if (!timeOffset) {\n return void 0;\n }\n const normalized = timeOffset.trim().toLowerCase();\n if (normalized === \"start\") {\n return 0;\n }\n if (normalized === \"end\") {\n return -1;\n }\n const hms = timeOffset.match(\n /^(\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,3}))?$/\n );\n if (hms) {\n const [, hh, mm, ss, ms = \"0\"] = hms;\n const hours = Number(hh);\n const minutes = Number(mm);\n const seconds = Number(ss);\n const millis = Number(ms.padEnd(3, \"0\").slice(0, 3));\n return (hours * 3600 + minutes * 60 + seconds) * 1e3 + millis;\n }\n const percent = timeOffset.match(/^(\\d+(?:\\.\\d+)?)%$/);\n if (percent) {\n const ratio = Number(percent[1]) / 100;\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3 * ratio);\n }\n return void 0;\n }\n return void 0;\n }\n getAdBreakKey(adBreak) {\n if (adBreak.id) {\n return adBreak.id;\n }\n return `${adBreak.startTimeMs}-${adBreak.vastTagUrl || \"\"}`;\n }\n resolveBreakStartMs(adBreak) {\n if (adBreak.startTimeMs >= 0) {\n return adBreak.startTimeMs;\n }\n if (adBreak.startTimeMs === -1) {\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3);\n }\n }\n return void 0;\n }\n findCurrentOrNextBreak(nowMs) {\n const schedule = this.vmapBreaks;\n let candidate;\n const tol = this.config.driftToleranceMs ?? 1e3;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (breakStartMs <= nowMs + tol && (candidate == null || breakStartMs > (this.resolveBreakStartMs(candidate) ?? 0))) {\n candidate = b;\n }\n }\n return candidate;\n }\n findBreakForTime(nowMs) {\n const schedule = this.vmapBreaks;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (b.durationMs) {\n const end = breakStartMs + b.durationMs;\n if (nowMs >= breakStartMs && nowMs < end) {\n return b;\n }\n continue;\n }\n if (nowMs >= breakStartMs) {\n return b;\n }\n }\n return void 0;\n }\n selectVastTagsForBreak(b) {\n if (!b || !b.vastTagUrl) return void 0;\n if (b.vastTagUrl.includes(\",\")) {\n return b.vastTagUrl.split(\",\").map((s) => s.trim()).filter((s) => s.length > 0);\n }\n return [b.vastTagUrl];\n }\n beginNewAdPod() {\n this.podCounter++;\n }\n resolvePodParams(breakDurationMs) {\n const maxDurationMs = breakDurationMs != null && breakDurationMs > 0 ? breakDurationMs : this.config.podMaxDurationMs != null && this.config.podMaxDurationMs > 0 ? this.config.podMaxDurationMs : this.defaultPodMaxDurationMs;\n const maxAds = this.config.podMaxAds && this.config.podMaxAds > 0 ? this.config.podMaxAds : this.apiNumberAds && this.apiNumberAds > 0 ? this.apiNumberAds : this.defaultPodMaxAds;\n const minDurationMs = this.config.podExactDuration && maxDurationMs != null ? maxDurationMs : 0;\n return { maxAds, minDurationMs, maxDurationMs };\n }\n getPalDescriptionUrl() {\n if (!this.apiVastTagUrl) return void 0;\n try {\n const params = new URL(this.apiVastTagUrl).searchParams;\n return params.get(\"description_url\") || params.get(\"url\") || void 0;\n } catch {\n return void 0;\n }\n }\n generatePodVastUrl(baseUrl, podParams, adPlayer, palNonce, inAdBreak) {\n const adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;\n const envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);\n const urlWithMacros = applyVastMacros(baseUrl, {\n correlator: this.viewCorrelator,\n streamCorrelator: this.streamCorrelator,\n pod: this.podCounter > 0 ? this.podCounter : void 0,\n podMaxAds: podParams.maxAds,\n podMinDurationMs: podParams.minDurationMs,\n podMaxDurationMs: podParams.maxDurationMs,\n isCtv: envSignals.isCtv,\n pageUrl: !envSignals.isCtv && typeof window !== \"undefined\" ? toDevSafeUrl(window.location.href) : void 0,\n adWillPlayMuted,\n adWillAutoPlay: !!this.config.autoplay,\n sessionId: envSignals.sessionId,\n deviceId: envSignals.deviceId,\n deviceIdType: envSignals.deviceIdType,\n limitAdTracking: envSignals.limitAdTracking,\n deviceTypeHint: envSignals.deviceTypeHint,\n adTest: this.config.adTest,\n ...this.config.programTitle ? { programTitle: this.config.programTitle } : {},\n ...this.config.channelName ? { channelName: this.config.channelName } : {},\n consent: this.consentSignals\n });\n const finalUrl = palNonce.injectNonce(urlWithMacros);\n console.log(\n `[StormcloudVideoPlayer] Resolved optimized-pod request URL (pod=${this.podCounter}, pmad=${podParams.maxAds}, pmnd=${podParams.minDurationMs}, pmxd=${podParams.maxDurationMs ?? \"?\"}):`,\n finalUrl\n );\n return finalUrl;\n }\n // --- Tracking ---\n initializeTracking() {\n sendInitialTracking(this.config.licenseKey, buildAnalyticsContext(this.config)).then(() => {\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n }).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send initial tracking:\",\n error\n );\n }\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n });\n }\n sendHeartbeatIfNeeded() {\n const now = Date.now();\n if (!this.lastHeartbeatTime || now - this.lastHeartbeatTime > 3e4) {\n this.lastHeartbeatTime = now;\n sendHeartbeat(this.config.licenseKey, buildAnalyticsContext(this.config)).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send heartbeat:\",\n error\n );\n }\n });\n }\n }\n destroyTracking() {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = void 0;\n }\n }\n};\n\n// src/player/AdTimingService.ts\nvar AdTimingService = class {\n constructor(config, video, callbacks) {\n this.adRequestWatchdogToken = null;\n this.adFailsafeToken = null;\n this.ptsDriftEmaMs = 0;\n this.adBreakPlayedDurationMs = 0;\n this.adBreakEpoch = 0;\n this.adRequestTokenCounter = 0;\n this.activeAdRequestToken = null;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.totalAdRequestsInBreak = 0;\n this.maxTotalAdRequestsPerBreak = 10;\n this.lastAdRequestTime = 0;\n this.consecutiveFailures = 0;\n this.maxConsecutiveFailures = 5;\n this.minAdRequestIntervalMs = 3e3;\n this.backoffBaseMs = 1e3;\n this.maxBackoffMs = 15e3;\n this.defaultMinRemainingMsToStartAd = 4e3;\n this.failedVastUrls = /* @__PURE__ */ new Set();\n this.temporaryFailureUrls = /* @__PURE__ */ new Map();\n this.temporaryFailureCooldownMs = 3e4;\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillThreshold = 3;\n this.globalNoFillCooldownUntil = 0;\n this.globalNoFillBackoffBaseMs = 5e3;\n this.globalNoFillBackoffMaxMs = 6e4;\n this.globalLastGamRequestTime = 0;\n this.globalMinGamIntervalMs = 3e3;\n this.config = config;\n this.video = video;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n // --- Ad stop timer ---\n scheduleAdStopCountdown(remainingMs) {\n this.clearAdStopTimer();\n const ms = Math.max(0, Math.floor(remainingMs));\n if (ms === 0) {\n this.ensureAdStoppedByTimer();\n return;\n }\n this.adStopTimerId = window.setTimeout(() => {\n this.ensureAdStoppedByTimer();\n }, ms);\n }\n clearAdStopTimer() {\n if (this.adStopTimerId != null) {\n clearTimeout(this.adStopTimerId);\n this.adStopTimerId = void 0;\n }\n }\n ensureAdStoppedByTimer() {\n this.adStopTimerId = void 0;\n this.callbacks.onAdStopTimerFired();\n }\n // --- Ad start timer ---\n scheduleAdStartIn(delayMs, marker = { type: \"start\" }, cueKey) {\n this.clearAdStartTimer();\n const ms = Math.max(0, Math.floor(delayMs));\n if (ms === 0) {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n return;\n }\n this.adStartTimerId = window.setTimeout(() => {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n }, ms);\n }\n clearAdStartTimer() {\n if (this.adStartTimerId != null) {\n clearTimeout(this.adStartTimerId);\n this.adStartTimerId = void 0;\n }\n }\n // --- PTS drift ---\n updatePtsDrift(ptsSecondsSample) {\n const sampleMs = (this.video.currentTime - ptsSecondsSample) * 1e3;\n if (!Number.isFinite(sampleMs) || Math.abs(sampleMs) > 6e4) return;\n const alpha = 0.1;\n this.ptsDriftEmaMs = this.ptsDriftEmaMs * (1 - alpha) + sampleMs * alpha;\n }\n resolveScteBreakStartWallClockMs(marker) {\n const nowWallClockMs = Date.now();\n if (typeof marker.ptsSeconds !== \"number\") {\n return nowWallClockMs;\n }\n const nowMs = this.video.currentTime * 1e3;\n const estimatedCurrentPtsMs = nowMs - this.ptsDriftEmaMs;\n const deltaMs = marker.ptsSeconds * 1e3 - estimatedCurrentPtsMs;\n if (!Number.isFinite(deltaMs)) {\n return nowWallClockMs;\n }\n return nowWallClockMs + Math.floor(deltaMs);\n }\n // --- Duration boundary ---\n setAdBreakDurationBoundary(durationMs) {\n this.expectedAdBreakDurationMs = durationMs;\n if (durationMs != null && this.currentAdBreakStartWallClockMs != null) {\n this.scteAdBreakEndWallClockMs = this.currentAdBreakStartWallClockMs + durationMs;\n } else {\n this.scteAdBreakEndWallClockMs = void 0;\n }\n }\n scheduleAdStopAtBreakBoundary() {\n if (this.expectedAdBreakDurationMs == null) {\n return;\n }\n this.scheduleAdStopCountdown(this.getWallClockRemainingAdMs());\n }\n // --- Duration budget ---\n getWallClockRemainingAdMs() {\n const endWallClockMs = this.getAdBreakEndWallClockMs();\n if (endWallClockMs != null) {\n return Math.max(0, endWallClockMs - Date.now());\n }\n return 0;\n }\n getAdBreakEndWallClockMs() {\n if (this.scteAdBreakEndWallClockMs != null) {\n return this.scteAdBreakEndWallClockMs;\n }\n if (this.expectedAdBreakDurationMs == null || this.currentAdBreakStartWallClockMs == null) {\n return void 0;\n }\n return this.currentAdBreakStartWallClockMs + this.expectedAdBreakDurationMs;\n }\n getDurationBudgetRemainingMs() {\n if (this.expectedAdBreakDurationMs == null) {\n return 0;\n }\n return Math.max(0, this.expectedAdBreakDurationMs - this.adBreakPlayedDurationMs);\n }\n getLoadedAdDurationMs(adController) {\n const durationSec = adController.getLoadedAdDuration?.();\n if (durationSec == null || durationSec <= 0) {\n return 0;\n }\n return Math.round(durationSec * 1e3);\n }\n adFitsRemainingBudget(durationMs) {\n if (durationMs <= 0) {\n return true;\n }\n return durationMs <= this.getDurationBudgetRemainingMs();\n }\n logAdDurationDecision(accepted, durationMs, adController) {\n if (!this.debug) {\n return;\n }\n const remainingBudget = this.getDurationBudgetRemainingMs();\n const adId = adController.getLoadedAdId?.() ?? \"unknown\";\n if (accepted) {\n console.log(\n `[AD-DURATION] Accepted ad id=${adId}, duration=${durationMs}ms, budget remaining after play=${Math.max(0, remainingBudget - durationMs)}ms`\n );\n } else {\n console.log(\n `[AD-DURATION] Rejected ad id=${adId}, duration=${durationMs}ms exceeds remaining budget=${remainingBudget}ms \\u2014 requesting another ad`\n );\n }\n }\n recordPlayedAdDuration(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n if (durationMs <= 0) {\n return;\n }\n this.adBreakPlayedDurationMs += durationMs;\n if (this.debug) {\n console.log(\n `[AD-DURATION] Played ${durationMs}ms \\u2014 total played=${this.adBreakPlayedDurationMs}ms / ${this.expectedAdBreakDurationMs ?? \"?\"}ms`\n );\n }\n }\n ensureLoadedAdFitsBudget(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n const fits = this.adFitsRemainingBudget(durationMs);\n this.logAdDurationDecision(fits, durationMs, adController);\n return fits;\n }\n rejectLoadedAdForDuration(adController) {\n try {\n adController.destroy();\n } catch {\n }\n }\n markAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n this.totalAdRequestsInBreak++;\n this.lastAdRequestTime = Date.now();\n }\n notePodAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n getRemainingAdMs() {\n const wallClockRemaining = this.getWallClockRemainingAdMs();\n const budgetRemaining = this.getDurationBudgetRemainingMs();\n if (this.expectedAdBreakDurationMs == null) {\n return wallClockRemaining;\n }\n return Math.min(wallClockRemaining, budgetRemaining);\n }\n getMinRemainingMsToStartAd() {\n const configured = this.config.minRemainingMsToStartAd;\n if (typeof configured === \"number\" && configured >= 0) {\n return configured;\n }\n return this.defaultMinRemainingMsToStartAd;\n }\n hasTimeToStartAnotherAd() {\n const minRemaining = this.getMinRemainingMsToStartAd();\n return this.getWallClockRemainingAdMs() > minRemaining && this.getDurationBudgetRemainingMs() > minRemaining;\n }\n // --- Circuit breaker ---\n isTemporaryAdError(error) {\n const message = error?.message?.toLowerCase() || \"\";\n if (message.includes(\"no ads available\") || message.includes(\"no fill\") || message.includes(\"nofill\")) {\n return true;\n }\n if (message.includes(\"timeout\")) {\n return true;\n }\n if (message.includes(\"rate limit\") || message.includes(\"too many requests\")) {\n return true;\n }\n if (message.includes(\"ad playback error\")) {\n return true;\n }\n return false;\n }\n isUrlInCooldown(vastTagUrl) {\n const failureTime = this.temporaryFailureUrls.get(vastTagUrl);\n if (failureTime == null) {\n return false;\n }\n const elapsed = Date.now() - failureTime;\n if (elapsed >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(vastTagUrl);\n return false;\n }\n return true;\n }\n cleanupTemporaryFailures() {\n const now = Date.now();\n for (const [url, timestamp] of this.temporaryFailureUrls) {\n if (now - timestamp >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(url);\n }\n }\n }\n isGamInCooldown() {\n return Date.now() < this.globalNoFillCooldownUntil;\n }\n recordGamNoFill() {\n this.globalConsecutiveNoFills++;\n if (this.globalConsecutiveNoFills >= this.globalNoFillThreshold) {\n const exponent = this.globalConsecutiveNoFills - this.globalNoFillThreshold;\n const backoff = Math.min(\n this.globalNoFillBackoffBaseMs * Math.pow(2, exponent),\n this.globalNoFillBackoffMaxMs\n );\n this.globalNoFillCooldownUntil = Date.now() + backoff;\n if (this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] GAM cooldown activated: ${backoff}ms (${this.globalConsecutiveNoFills} consecutive no-fills)`\n );\n }\n }\n }\n resetGamNoFillCounter() {\n if (this.globalConsecutiveNoFills > 0 && this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] Resetting no-fill counter (was ${this.globalConsecutiveNoFills})`\n );\n }\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillCooldownUntil = 0;\n }\n async enforceGlobalRateLimit() {\n const now = Date.now();\n const elapsed = now - this.globalLastGamRequestTime;\n if (elapsed < this.globalMinGamIntervalMs) {\n const waitMs = this.globalMinGamIntervalMs - elapsed;\n if (this.debug) {\n console.log(`[RATE-LIMIT] Waiting ${waitMs}ms before next GAM request`);\n }\n await new Promise((resolve) => setTimeout(resolve, waitMs));\n }\n this.globalLastGamRequestTime = Date.now();\n }\n // --- Watchdog ---\n startAdRequestWatchdog(token) {\n this.clearAdRequestWatchdog();\n const timeoutMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adRequestWatchdogToken = token;\n this.adRequestWatchdogId = window.setTimeout(() => {\n if (this.adRequestWatchdogToken !== token) {\n return;\n }\n this.adRequestWatchdogId = void 0;\n this.adRequestWatchdogToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_request_timeout\", { token, timeoutMs });\n this.callbacks.onWatchdogTimeout();\n }, timeoutMs);\n this.logAdState(\"ad_request_watchdog_started\", { token, timeoutMs });\n }\n clearAdRequestWatchdog() {\n if (this.adRequestWatchdogId != null) {\n clearTimeout(this.adRequestWatchdogId);\n this.adRequestWatchdogId = void 0;\n }\n if (this.adRequestWatchdogToken != null) {\n this.logAdState(\"ad_request_watchdog_cleared\", {\n token: this.adRequestWatchdogToken\n });\n this.adRequestWatchdogToken = null;\n }\n }\n // --- Failsafe ---\n startAdFailsafeTimer(token) {\n this.clearAdFailsafeTimer();\n const failsafeMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adFailsafeToken = token;\n this.adFailsafeTimerId = window.setTimeout(() => {\n if (this.adFailsafeToken !== token) {\n return;\n }\n this.adFailsafeTimerId = void 0;\n this.adFailsafeToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_failsafe_triggered\", {\n token,\n failsafeMs,\n videoPaused: this.video.paused\n });\n this.callbacks.onFailsafeTimeout();\n }, failsafeMs);\n this.logAdState(\"ad_failsafe_started\", { token, failsafeMs });\n }\n clearAdFailsafeTimer() {\n if (this.adFailsafeTimerId != null) {\n clearTimeout(this.adFailsafeTimerId);\n this.logAdState(\"ad_failsafe_cleared\", { token: this.adFailsafeToken });\n this.adFailsafeTimerId = void 0;\n }\n this.adFailsafeToken = null;\n }\n logAdState(event, extra = {}) {\n if (!this.debug) {\n return;\n }\n const { inAdBreak, showAds, adPlaying } = this.callbacks.getAdState();\n console.log(\"[StormcloudVideoPlayer][AdState]\", {\n event,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n showAds,\n adPlaying,\n inAdBreak,\n activeAdRequestToken: this.activeAdRequestToken,\n ...extra\n });\n }\n // --- Reset for ad break end ---\n resetForBreakEnd() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdRequestWatchdog();\n this.clearAdFailsafeTimer();\n this.activeAdRequestToken = null;\n this.expectedAdBreakDurationMs = void 0;\n this.currentAdBreakStartWallClockMs = void 0;\n this.scteAdBreakEndWallClockMs = void 0;\n this.adBreakPlayedDurationMs = 0;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.consecutiveFailures = 0;\n this.globalConsecutiveNoFills = 0;\n this.adBreakEpoch++;\n }\n destroy() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdFailsafeTimer();\n this.clearAdRequestWatchdog();\n }\n};\n\n// src/player/PlaceholderLayer.ts\nvar PlaceholderLayer = class {\n constructor(video, debug) {\n this.video = video;\n this.debug = debug;\n }\n ensureContainer() {\n if (this.container) {\n return;\n }\n const el = document.createElement(\"div\");\n el.style.position = \"absolute\";\n el.style.left = \"0\";\n el.style.top = \"0\";\n el.style.right = \"0\";\n el.style.bottom = \"0\";\n el.style.display = \"none\";\n el.style.alignItems = \"center\";\n el.style.justifyContent = \"center\";\n el.style.pointerEvents = \"none\";\n el.style.zIndex = \"5\";\n el.style.backgroundColor = \"#000\";\n el.style.transition = \"opacity 0.3s ease-in-out\";\n el.style.opacity = \"0\";\n if (!this.video.parentElement) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Video element has no parent for placeholder container\");\n }\n return;\n }\n this.video.parentElement.appendChild(el);\n this.container = el;\n }\n show() {\n this.ensureContainer();\n if (!this.container) {\n return;\n }\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video when showing placeholder\");\n }\n }\n const wasHidden = this.container.style.display === \"none\" || this.container.style.opacity === \"0\";\n if (wasHidden) {\n this.container.style.transition = \"none\";\n } else {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n this.container.style.backgroundColor = \"#000\";\n this.container.style.display = \"flex\";\n this.container.offsetHeight;\n this.container.style.opacity = \"1\";\n this.container.style.pointerEvents = \"auto\";\n if (wasHidden) {\n requestAnimationFrame(() => {\n if (this.container) {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n });\n }\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder layer (between content and ad layer)\");\n }\n }\n hide() {\n if (!this.container) {\n return;\n }\n this.container.style.opacity = \"0\";\n setTimeout(() => {\n if (this.container) {\n this.container.style.display = \"none\";\n this.container.style.pointerEvents = \"none\";\n this.container.style.backgroundColor = \"#000\";\n }\n }, 300);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder layer\");\n }\n }\n destroy() {\n if (this.container) {\n if (this.container.parentElement) {\n this.container.parentElement.removeChild(this.container);\n }\n this.container = void 0;\n }\n }\n};\n\n// src/player/HlsEngine.ts\nimport Hls2 from \"hls.js\";\nvar HlsEngine = class {\n constructor(config, video, cueManager, timing, callbacks) {\n this.isLiveStream = false;\n this.nativeHlsMode = false;\n this.videoSrcProtection = null;\n this.reloadingLiveStream = false;\n this.bufferedSegmentsCount = 0;\n this.shouldAutoplayAfterBuffering = false;\n this.hasInitialBufferCompleted = false;\n this.latencyProfileApplied = false;\n this.config = config;\n this.video = video;\n this.cueManager = cueManager;\n this.timing = timing;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n shouldUseNativeHls(getStreamType) {\n const streamType = getStreamType();\n if (streamType === \"other\") {\n return true;\n }\n const canNative = this.video.canPlayType(\"application/vnd.apple.mpegurl\");\n return !!(this.config.allowNativeHls && canNative);\n }\n async setupNativeHls() {\n this.nativeHlsMode = true;\n this.videoSrcProtection = this.config.src;\n this.video.src = this.config.src;\n this.isLiveStream = this.config.isLiveStream ?? (this.config.lowLatencyMode ?? false);\n if (this.debug) {\n const adBehavior = this.isLiveStream ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\n \"[StormcloudVideoPlayer] Using native HLS playback:\",\n {\n isLive: this.isLiveStream,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n }\n );\n }\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n setupHls() {\n this.hls = new Hls2({\n enableWorker: true,\n backBufferLength: 30,\n liveDurationInfinity: true,\n lowLatencyMode: !!this.config.lowLatencyMode,\n maxLiveSyncPlaybackRate: 1.1,\n maxBufferLength: 30,\n maxMaxBufferLength: 600,\n maxBufferSize: 60 * 1e3 * 1e3,\n maxBufferHole: 1,\n highBufferWatchdogPeriod: 2,\n nudgeOffset: 0.2,\n nudgeMaxRetry: 5,\n startPosition: -1\n });\n this.hls.on(Hls2.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(Hls2.Events.MANIFEST_PARSED, async (_, _data) => {\n this.isLiveStream = this.config.isLiveStream ?? (this.hls?.levels?.some(\n (level) => level?.details?.live === true || level?.details?.type === \"LIVE\"\n ) ?? false);\n await this.callbacks.onManifestParsed(this.isLiveStream);\n this.bufferedSegmentsCount = 0;\n this.hasInitialBufferCompleted = false;\n this.shouldAutoplayAfterBuffering = !!this.config.autoplay;\n this.latencyProfileApplied = false;\n this.detectedLowLatencyStream = void 0;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Waiting for\",\n minSegments,\n \"segments to buffer before playback\"\n );\n }\n if (minSegments === 0 || !this.config.autoplay) {\n this.hasInitialBufferCompleted = true;\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n this.reloadingLiveStream = false;\n });\n this.hls.on(Hls2.Events.LEVEL_LOADED, (_evt, data) => {\n this.applyStreamLatencyProfile(data?.details);\n if (this.callbacks.isInAdBreak() || this.callbacks.hasPendingAdBreak()) {\n return;\n }\n const details = data?.details;\n if (!details || !details.fragments || details.fragments.length === 0) {\n return;\n }\n const fragmentsToScan = Math.min(5, details.fragments.length);\n for (let i = 0; i < fragmentsToScan; i++) {\n const frag = details.fragments[i];\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) continue;\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = tag.includes(\"EXT-X-DATERANGE\") ? parseAttributeList(value) : {};\n const hasScteOut = tag.includes(\"EXT-X-CUE-OUT\") || \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n if (hasScteOut) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value, earlyDetection: true }\n };\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] EARLY SCTE-35 DETECTION: Ad break marker found in fragment\", i, \"- starting pre-fetch (NOT playing yet)\");\n }\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"early\", frag)\n });\n return;\n }\n }\n }\n }\n });\n this.hls.on(Hls2.Events.FRAG_BUFFERED, async (_evt, _data) => {\n if (this.hasInitialBufferCompleted) {\n return;\n }\n this.bufferedSegmentsCount++;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Buffered segment ${this.bufferedSegmentsCount}/${minSegments}`\n );\n }\n if (this.bufferedSegmentsCount >= minSegments) {\n this.hasInitialBufferCompleted = true;\n if (this.shouldAutoplayAfterBuffering) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Initial buffer complete (${this.bufferedSegmentsCount} segments). Starting playback.`\n );\n }\n await this.video.play()?.catch((err) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Autoplay failed:\", err);\n }\n });\n }\n }\n });\n this.hls.on(Hls2.Events.FRAG_PARSING_METADATA, (_evt, data) => {\n const id3Tags = (data?.samples || []).map((s) => ({\n key: \"ID3\",\n value: s?.data,\n ptsSeconds: s?.pts\n }));\n id3Tags.forEach((tag) => this.onId3Tag(tag));\n });\n this.hls.on(Hls2.Events.FRAG_LOADED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(Hls2.Events.FRAG_DECRYPTED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(Hls2.Events.FRAG_CHANGED, (_evt, data) => {\n const frag = data?.frag;\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) {\n this.callbacks.activatePendingCuesForFragment(frag);\n return;\n }\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n value = \"\";\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) {\n const prog = parseCueOutCont(value);\n const marker = {\n type: \"progress\",\n ...prog?.duration !== void 0 ? { durationSeconds: prog.duration } : {},\n ...prog?.elapsed !== void 0 ? { ptsSeconds: prog.elapsed } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-OUT\")) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-IN\")) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n } else if (tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = parseAttributeList(value);\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { tag, value, attrs }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n }\n if (hasScteIn) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value, attrs } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n }\n }\n }\n this.callbacks.activatePendingCuesForFragment(frag);\n });\n this.hls.on(Hls2.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case Hls2.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case Hls2.ErrorTypes.MEDIA_ERROR:\n this.hls?.recoverMediaError();\n break;\n default:\n this.callbacks.onFatalDestroy();\n break;\n }\n }\n });\n this.hls.attachMedia(this.video);\n }\n isLowLatencyStream() {\n return this.detectedLowLatencyStream;\n }\n applyStreamLatencyProfile(details) {\n if (this.latencyProfileApplied || !this.hls) {\n return;\n }\n if (!details) {\n return;\n }\n if (details.live !== true) {\n this.latencyProfileApplied = true;\n this.detectedLowLatencyStream = false;\n return;\n }\n const isLowLatencyManifest = this.isLowLatencyManifest(details);\n const useLowLatency = isLowLatencyManifest && !!this.config.lowLatencyMode;\n this.detectedLowLatencyStream = useLowLatency;\n this.latencyProfileApplied = true;\n const cfg = this.hls.config;\n if (useLowLatency) {\n cfg.maxLiveSyncPlaybackRate = 1.5;\n cfg.maxBufferHole = 0.5;\n delete cfg.liveSyncDuration;\n } else {\n cfg.maxLiveSyncPlaybackRate = 1.1;\n cfg.maxBufferHole = 1;\n delete cfg.liveSyncDuration;\n cfg.liveSyncDurationCount = 3;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live latency profile: ${useLowLatency ? \"LL-HLS (low latency)\" : \"standard live (stability)\"}`,\n {\n isLowLatencyManifest,\n lowLatencyModeRequested: !!this.config.lowLatencyMode,\n canBlockReload: details.canBlockReload,\n partTarget: details.partTarget,\n partHoldBack: details.partHoldBack,\n partListLength: Array.isArray(details.partList) ? details.partList.length : 0,\n targetDuration: details.targetduration ?? details.targetDuration,\n maxLiveSyncPlaybackRate: cfg.maxLiveSyncPlaybackRate,\n maxBufferHole: cfg.maxBufferHole\n }\n );\n }\n }\n isLowLatencyManifest(details) {\n if (!details) {\n return false;\n }\n const hasParts = Array.isArray(details.partList) && details.partList.length > 0;\n const hasPartTarget = typeof details.partTarget === \"number\" && details.partTarget > 0;\n const hasPartHoldBack = typeof details.partHoldBack === \"number\" && details.partHoldBack > 0;\n const canBlockReload = details.canBlockReload === true;\n return hasParts || hasPartTarget || hasPartHoldBack || canBlockReload;\n }\n onId3Tag(tag) {\n if (typeof tag.ptsSeconds === \"number\") {\n this.timing.updatePtsDrift(tag.ptsSeconds);\n }\n const marker = parseScte35FromId3(tag);\n if (marker) {\n this.callbacks.onScte35Cue(marker, {\n source: \"id3\",\n readiness: \"playback\"\n });\n }\n }\n processFragmentScte35Payload(payloadData, fragmentSn, fragmentStartSeconds) {\n const payload = normalizeFragmentPayload(payloadData);\n if (!payload) {\n return;\n }\n const markers = parseScte35FromTsPackets(\n payload,\n this.cueManager.tsScte35Pids,\n this.cueManager.pmtPids,\n this.cueManager.processedTsScte35Sections\n );\n markers.forEach((marker) => {\n const context = {\n source: \"ts\",\n readiness: \"early\"\n };\n if (fragmentSn !== void 0) {\n context.fragmentSn = fragmentSn;\n }\n if (fragmentStartSeconds !== void 0) {\n context.fragmentStartSeconds = fragmentStartSeconds;\n }\n this.callbacks.onScte35Cue(marker, context);\n });\n }\n getLiveSyncPosition() {\n const pos = this.hls?.liveSyncPosition;\n return typeof pos === \"number\" && Number.isFinite(pos) ? pos : void 0;\n }\n restartLoadAt(position) {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.stopLoad();\n this.hls.startLoad(position);\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to restart HLS load at live edge:\", error);\n }\n }\n }\n recoverMediaError() {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.recoverMediaError();\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] recoverMediaError() failed:\", error);\n }\n }\n }\n reloadLiveStream() {\n const hls = this.hls;\n if (!hls) {\n return;\n }\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Hard-reloading live stream (destroy hls \\u2192 reset video \\u2192 fresh setupHls)\"\n );\n }\n try {\n this.reloadingLiveStream = true;\n hls.stopLoad();\n hls.detachMedia();\n hls.destroy();\n this.hls = void 0;\n try {\n this.video.removeAttribute(\"src\");\n this.video.load();\n } catch (error) {\n console.warn(\"[StormcloudVideoPlayer] video.load() threw after src removal:\", error);\n }\n } catch (error) {\n this.reloadingLiveStream = false;\n this.hls = void 0;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to tear down during hard-reload:\", error);\n }\n return;\n }\n const recreateDelayMs = 600;\n window.setTimeout(() => {\n if (this.hls) {\n this.reloadingLiveStream = false;\n return;\n }\n try {\n this.setupHls();\n } catch (error) {\n this.reloadingLiveStream = false;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to rebuild pipeline during hard-reload:\", error);\n }\n }\n }, recreateDelayMs);\n }\n destroy() {\n this.hls?.destroy();\n this.hls = void 0;\n }\n};\n\n// src/player/PlayerControls.ts\nfunction getAdAudioVolume(adPlayer) {\n return adPlayer.getOriginalMutedState() ? 0 : adPlayer.getOriginalVolume();\n}\nfunction toggleMute(video, adPlayer, debug) {\n if (adPlayer.isAdPlaying()) {\n const newMutedState = !adPlayer.getOriginalMutedState();\n const restoreVolume = adPlayer.getOriginalVolume() || 1;\n adPlayer.updateOriginalMutedState(newMutedState, video.volume);\n adPlayer.setAdVolume(newMutedState ? 0 : restoreVolume);\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] Mute toggle during ad - immediately applied:\",\n newMutedState\n );\n }\n } else {\n video.muted = !video.muted;\n adPlayer.updateOriginalMutedState(video.muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Muted:\", video.muted);\n }\n }\n}\nfunction toggleFullscreen(video, debug) {\n return new Promise((resolve, reject) => {\n if (!document.fullscreenElement) {\n const container = video.parentElement;\n if (!container) {\n reject(new Error(\"No parent container found for fullscreen\"));\n return;\n }\n container.requestFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Entered fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\"[StormcloudVideoPlayer] Fullscreen error:\", err);\n }\n reject(err);\n });\n } else {\n document.exitFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Exited fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\n \"[StormcloudVideoPlayer] Exit fullscreen error:\",\n err\n );\n }\n reject(err);\n });\n }\n });\n}\nfunction isMuted(video, adPlayer) {\n if (adPlayer.isAdPlaying()) {\n return adPlayer.getOriginalMutedState();\n }\n return video.muted;\n}\nfunction setMuted(video, adPlayer, muted, debug) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying && muted === video.muted) {\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] setMuted reflective update during ad ignored\",\n { muted }\n );\n }\n return;\n }\n video.muted = muted;\n if (adPlaying) {\n adPlayer.updateOriginalMutedState(muted, video.volume);\n adPlayer.setAdVolume(muted ? 0 : 1);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted applied during ad\", {\n muted\n });\n }\n return;\n }\n adPlayer.updateOriginalMutedState(muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted called:\", muted);\n }\n}\nfunction setVolume(video, adPlayer, volume, debug) {\n const clampedVolume = Math.max(0, Math.min(1, volume));\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n adPlayer.setAdVolume(clampedVolume);\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume applied during ad\", {\n volume: clampedVolume\n });\n }\n } else {\n video.volume = clampedVolume;\n video.muted = clampedVolume === 0;\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume called:\", clampedVolume);\n }\n }\n}\nfunction getVolume(video, adPlayer) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n return adPlayer.getAdVolume();\n }\n return video.volume;\n}\nfunction isFullscreen() {\n return !!document.fullscreenElement;\n}\nfunction resizePlayer(video, adPlayer, debug) {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Resizing player\");\n }\n if (adPlayer && adPlayer.isAdPlaying()) {\n const width = video.clientWidth || 640;\n const height = video.clientHeight || 480;\n if (debug) {\n console.log(\n `[StormcloudVideoPlayer] Resizing ads manager to ${width}x${height}`\n );\n }\n adPlayer.resize(width, height);\n }\n}\n\n// src/player/AdBreakOrchestrator.ts\nvar AdBreakOrchestrator = class {\n constructor(host, timing, adConfig, cueManager, placeholder) {\n this.inAdBreak = false;\n this.showAds = false;\n this.isShowingPlaceholder = false;\n this.adDetectSentForCurrentBreak = false;\n this.continuousFetchingActive = false;\n this.continuousFetchLoopRunning = false;\n this.adRequestQueue = [];\n this.adPodQueue = [];\n this.maxPlaceholderDurationMs = 5e3;\n this.pendingAdBreak = null;\n this.host = host;\n this.timing = timing;\n this.adConfig = adConfig;\n this.cueManager = cueManager;\n this.placeholder = placeholder;\n }\n get debug() {\n return !!this.host.config.debugAdTiming;\n }\n get analyticsContext() {\n return buildAnalyticsContext(this.host.config);\n }\n // ───────────────────────────────────────────────────────────────\n // IMA event listeners\n // ───────────────────────────────────────────────────────────────\n nextAdRequestUrl(baseVastUrl) {\n const remaining = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n const breakDurationMs = remaining > 0 ? remaining : void 0;\n return this.host.generatePodVastUrl(baseVastUrl, breakDurationMs);\n }\n attachImaEventListeners() {\n const adPlayer = this.host.getAdPlayer();\n adPlayer.on(\"pod_ad_started\", (payload) => {\n this.timing.notePodAdStarted();\n if (this.debug) {\n console.log(\n `[POD] Playing pod ad ${payload?.index != null ? payload.index + 1 : \"?\"}/${payload?.total ?? \"?\"}`\n );\n }\n });\n adPlayer.on(\"ad_click\", () => {\n this.host.onAdClick();\n });\n adPlayer.on(\"ad_interaction\", (event) => {\n if (event) this.host.onAdInteraction(event);\n });\n adPlayer.on(\"all_ads_completed\", () => {\n sendAdImpressionTracking(\n this.host.config.licenseKey,\n { source: \"hls\", adIndex: this.timing.currentAdIndex, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n const remaining = this.timing.getRemainingAdMs();\n this.timing.consecutiveFailures = 0;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] all_ads_completed event received - remaining=${remaining}ms, queued ads=${this.adRequestQueue.length}`,\n this.adRequestQueue.length > 0 ? { queuedUrls: [...this.adRequestQueue] } : {}\n );\n }\n if (this.inAdBreak) {\n if (this.timing.hasTimeToStartAnotherAd()) {\n this.tryNextAvailableAdWithRateLimit();\n } else {\n this.handleAdPodComplete();\n }\n }\n });\n adPlayer.on(\"ad_error\", (errorPayload) => {\n let errorMessage = \"Ad playback failed\";\n if (errorPayload) {\n const errorCode = errorPayload.code || errorPayload.errorCode || \"unknown\";\n const vastErrorCode = errorPayload.vastErrorCode;\n const message = errorPayload.message || errorPayload.errorMessage || \"Unknown error\";\n const cause = errorPayload.cause || errorPayload.innerError || errorPayload.error;\n errorMessage = `Ad error: AdError ${errorCode}: ${message}`;\n if (vastErrorCode && vastErrorCode !== \"N/A\" && vastErrorCode !== errorCode) {\n errorMessage += ` (VAST Error Code: ${vastErrorCode})`;\n }\n if (cause) {\n const causeMessage = typeof cause === \"string\" ? cause : cause.message || String(cause);\n errorMessage += `. Caused by: ${causeMessage}`;\n }\n }\n console.error(\"[AD-ERROR]\", errorMessage, errorPayload || \"\");\n this.handleAdFailure();\n });\n adPlayer.on(\"content_pause\", () => {\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = true;\n this.timing.resetGamNoFillCounter();\n if (this.inAdBreak && this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad break timer on content_pause (first ad starting)\");\n }\n }\n this.host.getAdPlayer().setAdVolume(getAdAudioVolume(this.host.getAdPlayer()));\n if (this.isShowingPlaceholder) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder - new ads starting\");\n }\n this.host.getAdPlayer().hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n });\n adPlayer.on(\"content_resume\", () => {\n sendAdImpressionTracking(\n this.host.config.licenseKey,\n { source: \"hls\", adIndex: this.timing.currentAdIndex, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n if (!this.host.video.muted) {\n this.host.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on content_resume (ad ended, gap between ads)\");\n }\n }\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = false;\n if (!this.inAdBreak) {\n return;\n }\n this.timing.consecutiveFailures = 0;\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n const remaining = this.timing.getRemainingAdMs();\n if (this.debug) {\n console.log(\n `[CONTINUOUS-FETCH] content_resume event: remaining=${remaining}ms, queued ads=${this.adRequestQueue.length}`,\n this.adRequestQueue.length > 0 ? { queuedUrls: [...this.adRequestQueue] } : {}\n );\n }\n if (this.timing.hasTimeToStartAnotherAd()) {\n this.tryNextAvailableAdWithRateLimit();\n } else {\n this.handleAdPodComplete();\n }\n });\n }\n recreateAdController() {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Recreating AdController for new ad\");\n }\n const shouldShowPlaceholder = this.inAdBreak && this.showAds;\n const adPlayer = this.host.getAdPlayer();\n if (shouldShowPlaceholder && adPlayer) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder before destroying old AdController\");\n }\n this.placeholder.show();\n adPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n const preservedMutedState = adPlayer.getOriginalMutedState();\n const preservedVolumeState = adPlayer.getOriginalVolume();\n if (adPlayer) {\n try {\n adPlayer.destroy();\n this.host.video.muted = true;\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Error destroying old AdController:\", error);\n }\n }\n }\n const continueLiveStreamDuringAds = this.host.shouldContinueLiveStreamDuringAds();\n const newAdPlayer = this.host.createAdPlayer(continueLiveStreamDuringAds);\n this.host.setAdPlayer(newAdPlayer);\n newAdPlayer.initialize();\n newAdPlayer.updateOriginalMutedState(preservedMutedState, preservedVolumeState);\n this.attachImaEventListeners();\n if (shouldShowPlaceholder) {\n this.placeholder.show();\n newAdPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n }\n clearPendingAdBreak() {\n if (this.prefetchTimerId != null) {\n clearTimeout(this.prefetchTimerId);\n this.prefetchTimerId = void 0;\n }\n this.pendingAdBreak = null;\n this.cueManager.pendingScte35CueKey = void 0;\n this.adConfig.podAssignedByPrefetch = false;\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break start\n // ───────────────────────────────────────────────────────────────\n async handleAdStart(_marker) {\n const scheduled = this.adConfig.findCurrentOrNextBreak(\n this.host.video.currentTime * 1e3\n );\n if (scheduled) {\n this.adConfig.consumedVmapBreakIds.add(this.adConfig.getAdBreakKey(scheduled));\n }\n const tags = this.adConfig.selectVastTagsForBreak(scheduled);\n let baseVastUrl;\n if (tags && tags.length > 0 && tags[0]) {\n baseVastUrl = tags[0];\n } else if (this.adConfig.apiVastTagUrl) {\n baseVastUrl = this.adConfig.apiVastTagUrl;\n } else {\n this.clearPendingAdBreak();\n return;\n }\n const adBreakDurationMs = _marker.durationSeconds != null ? _marker.durationSeconds * 1e3 : scheduled?.durationMs;\n if (this.debug) {\n const mode = this.host.config.isLiveStream ? \"LIVE\" : \"VOD\";\n console.log(\n `[CONTINUOUS-FETCH] ${mode} MODE: Target duration=${adBreakDurationMs}ms`\n );\n }\n this.timing.failedVastUrls.clear();\n this.timing.temporaryFailureUrls.clear();\n this.timing.consecutiveFailures = 0;\n this.continuousFetchingActive = true;\n this.isShowingPlaceholder = false;\n this.timing.totalAdRequestsInBreak = 0;\n if (this.adConfig.podAssignedByPrefetch) {\n this.adConfig.podAssignedByPrefetch = false;\n } else {\n this.adConfig.beginNewAdPod();\n }\n const currentMuted = this.host.video.muted;\n const currentVolume = this.host.video.volume;\n this.host.getAdPlayer().updateOriginalMutedState(currentMuted, currentVolume);\n this.inAdBreak = true;\n this.timing.adBreakPlayedDurationMs = 0;\n this.timing.currentAdIndex = 0;\n this.timing.totalAdsInBreak = 0;\n this.adPodQueue = [];\n this.showAds = false;\n if (this.timing.expectedAdBreakDurationMs == null && adBreakDurationMs != null) {\n this.timing.expectedAdBreakDurationMs = adBreakDurationMs;\n }\n const podPlayed = await this.startOptimizedPod(\n baseVastUrl,\n adBreakDurationMs,\n currentMuted,\n currentVolume\n );\n if (!podPlayed) {\n if (this.debug) {\n console.log(\"[POD] Initial pod request did not fill; attempting top-up pod request\");\n }\n this.continuousFetchingActive = true;\n this.startContinuousFetching(baseVastUrl);\n await this.tryNextAvailableAdWithRateLimit();\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Optimized pod (single multi-ad request)\n // ───────────────────────────────────────────────────────────────\n async startOptimizedPod(baseVastUrl, breakDurationMs, currentMuted, currentVolume) {\n let podUrl;\n if (this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0) {\n podUrl = this.pendingAdBreak.vastUrls[0];\n this.clearPendingAdBreak();\n } else {\n podUrl = this.host.generatePodVastUrl(baseVastUrl, breakDurationMs);\n }\n if (!podUrl) {\n return false;\n }\n this.continuousFetchingActive = false;\n this.recreateAdController();\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.timing.startAdRequestWatchdog(requestToken);\n try {\n await this.timing.enforceGlobalRateLimit();\n this.timing.lastAdRequestTime = Date.now();\n await adPlayer.requestAds(podUrl);\n this.timing.clearAdRequestWatchdog();\n if (this.timing.activeAdRequestToken !== requestToken) {\n return true;\n }\n const podCount = adPlayer.getPodAdCount?.() ?? 1;\n if (podCount < 1) {\n return false;\n }\n if (this.debug) {\n console.log(\n podCount === 1 ? \"[POD] Response contained a single ad; playing it and enabling pod top-up\" : `[POD] Optimized pod returned ${podCount} ads; playing pod in one controller`\n );\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: podUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await adPlayer.play();\n this.timing.markAdStarted();\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(currentMuted ? 0 : currentVolume);\n this.timing.consecutiveFailures = 0;\n this.continuousFetchingActive = true;\n this.startContinuousFetching(baseVastUrl);\n return true;\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.debug) {\n console.warn(\"[POD] Optimized pod request/play failed:\", error);\n }\n if (this.timing.isTemporaryAdError(error)) {\n this.timing.temporaryFailureUrls.set(podUrl, Date.now());\n }\n this.continuousFetchingActive = true;\n this.recreateAdController();\n return false;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Continuous fetching\n // ───────────────────────────────────────────────────────────────\n startContinuousFetching(baseVastUrl) {\n if (!this.continuousFetchingActive) {\n return;\n }\n if (this.continuousFetchLoopRunning) {\n if (this.debug) {\n console.log(\"[CONTINUOUS-FETCH] Fetch loop already running, skipping duplicate start\");\n }\n return;\n }\n if (this.debug) {\n console.log(\"[CONTINUOUS-FETCH] Starting continuous ad fetching loop\");\n }\n this.continuousFetchLoopRunning = true;\n this.continuousFetchLoop(baseVastUrl);\n }\n async continuousFetchLoop(baseVastUrl) {\n const epoch = this.timing.adBreakEpoch;\n while (this.continuousFetchingActive && this.inAdBreak && epoch === this.timing.adBreakEpoch) {\n const remaining = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n if (remaining <= this.timing.getMinRemainingMsToStartAd()) {\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] Not enough ad break time left (wall=${this.timing.getWallClockRemainingAdMs()}ms, budget=${this.timing.getDurationBudgetRemainingMs()}ms), stopping URL generation`);\n }\n break;\n }\n if (this.timing.isGamInCooldown()) {\n if (this.debug) {\n console.log(\"[CIRCUIT-BREAKER] GAM in cooldown, stopping URL generation\");\n }\n break;\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] Too many consecutive failures (${this.timing.consecutiveFailures}), stopping URL generation`);\n }\n break;\n }\n if (this.timing.totalAdRequestsInBreak >= this.timing.maxTotalAdRequestsPerBreak) {\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] Maximum ad requests reached (${this.timing.maxTotalAdRequestsPerBreak}), stopping`);\n }\n break;\n }\n const maxQueueSize = 5;\n if (this.adRequestQueue.length >= maxQueueSize) {\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] URL queue full (${this.adRequestQueue.length}), waiting...`);\n }\n await new Promise((resolve) => setTimeout(resolve, 1e3));\n continue;\n }\n const newAdUrl = this.nextAdRequestUrl(baseVastUrl);\n if (!newAdUrl || this.timing.failedVastUrls.has(newAdUrl) || this.timing.isUrlInCooldown(newAdUrl)) {\n await new Promise((resolve) => setTimeout(resolve, 500));\n continue;\n }\n if (this.debug) {\n const queuedUrlsPreview = [...this.adRequestQueue, newAdUrl];\n console.log(\n `[CONTINUOUS-FETCH] Queued VAST URL (queue size: ${queuedUrlsPreview.length})`,\n { queuedUrls: queuedUrlsPreview }\n );\n }\n this.adRequestQueue.push(newAdUrl);\n const generationDelay = this.timing.consecutiveFailures > 0 ? Math.min(1e3 * Math.pow(2, this.timing.consecutiveFailures), 5e3) : 500;\n await new Promise((resolve) => setTimeout(resolve, generationDelay));\n }\n this.continuousFetchLoopRunning = false;\n if (this.debug) {\n console.log(\n `[CONTINUOUS-FETCH] URL generation loop ended (queued: ${this.adRequestQueue.length})`,\n this.adRequestQueue.length > 0 ? { queuedUrls: [...this.adRequestQueue] } : {}\n );\n }\n }\n stopContinuousFetching() {\n this.continuousFetchingActive = false;\n this.continuousFetchLoopRunning = false;\n this.placeholder.hide();\n if (this.debug) {\n console.log(\"[CONTINUOUS-FETCH] Stopping continuous ad fetching\");\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Ad iteration\n // ───────────────────────────────────────────────────────────────\n async tryNextAvailableAdWithRateLimit() {\n if (!this.inAdBreak) {\n return;\n }\n const epoch = this.timing.adBreakEpoch;\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] Too many consecutive failures (${this.timing.consecutiveFailures}), ending ad break gracefully`);\n }\n this.handleAdPodComplete();\n return;\n }\n const backoffMultiplier = Math.pow(2, this.timing.consecutiveFailures);\n const backoffDelay = Math.min(this.timing.backoffBaseMs * backoffMultiplier, this.timing.maxBackoffMs);\n const effectiveMinInterval = this.timing.minAdRequestIntervalMs + (this.timing.consecutiveFailures > 0 ? backoffDelay : 0);\n const timeSinceLastRequest = Date.now() - this.timing.lastAdRequestTime;\n if (timeSinceLastRequest < effectiveMinInterval) {\n const waitTime = effectiveMinInterval - timeSinceLastRequest;\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] Rate limiting: waiting ${waitTime}ms before next request (backoff: ${this.timing.consecutiveFailures} failures)`);\n }\n await new Promise((resolve) => setTimeout(resolve, waitTime));\n }\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) {\n return;\n }\n return this.tryNextAvailableAd(0);\n }\n async tryNextAvailableAd(retryCount = 0) {\n if (!this.inAdBreak) {\n return;\n }\n const remaining = this.timing.getRemainingAdMs();\n if (!this.timing.hasTimeToStartAnotherAd()) {\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] Not enough time remaining (${remaining}ms) to start another ad, ending ad break`);\n }\n this.handleAdPodComplete();\n return;\n }\n if (this.timing.isGamInCooldown()) {\n if (this.debug) {\n console.log(\"[CIRCUIT-BREAKER] GAM in cooldown, ending ad break gracefully\");\n }\n this.handleAdPodComplete();\n return;\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] Too many consecutive failures (${this.timing.consecutiveFailures}), ending ad break`);\n }\n this.handleAdPodComplete();\n return;\n }\n this.timing.cleanupTemporaryFailures();\n while (this.adRequestQueue.length > 0) {\n const nextAdUrl = this.adRequestQueue.shift();\n if (!nextAdUrl) continue;\n if (this.timing.failedVastUrls.has(nextAdUrl)) {\n if (this.debug) console.log(\"[CONTINUOUS-FETCH] Skipping permanently-failed URL, trying next...\");\n continue;\n }\n if (this.timing.isUrlInCooldown(nextAdUrl)) {\n if (this.debug) console.log(\"[CONTINUOUS-FETCH] Skipping URL in cooldown (recent no-fill), trying next...\");\n continue;\n }\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] Requesting next ad via HLS ad player (${this.timing.currentAdIndex + 1}, ${this.adRequestQueue.length} remaining in queue)`);\n }\n try {\n await this.playSingleAd(nextAdUrl);\n this.timing.consecutiveFailures = 0;\n } catch (error) {\n const errorMessage = error.message;\n if (this.debug) console.log(\"[CONTINUOUS-FETCH] Ad request failed:\", errorMessage);\n if (errorMessage.includes(\"ad_duration_exceeds_budget\")) {\n await this.tryNextAvailableAdWithRateLimit();\n return;\n }\n if (!errorMessage.includes(\"permanently failed\") && !errorMessage.includes(\"in cooldown\")) {\n this.timing.consecutiveFailures++;\n }\n await this.tryNextAvailableAdWithRateLimit();\n }\n return;\n }\n const maxRetries = 3;\n if (this.continuousFetchingActive && retryCount < maxRetries && remaining > 2e3) {\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] Queue empty, waiting for URLs... (${retryCount + 1}/${maxRetries})`);\n }\n await new Promise((resolve) => setTimeout(resolve, 500));\n await this.tryNextAvailableAd(retryCount + 1);\n return;\n }\n if (!this.isShowingPlaceholder && remaining > 1e3) {\n this.showPlaceholderAndWaitForAds();\n } else {\n if (this.debug) console.log(\"[CONTINUOUS-FETCH] No more ads available, ending ad break\");\n this.handleAdPodComplete();\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Single ad playback\n // ───────────────────────────────────────────────────────────────\n async playSingleAd(vastTagUrl) {\n const adPlayer = this.host.getAdPlayer();\n if (adPlayer.isAdPlaying()) return;\n if (this.timing.failedVastUrls.has(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping permanently-failed VAST URL:\", vastTagUrl);\n throw new Error(\"VAST URL permanently failed\");\n }\n if (this.timing.isUrlInCooldown(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping URL in cooldown (recent no-fill):\", vastTagUrl);\n throw new Error(\"VAST URL in cooldown after no-fill\");\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) console.warn(\"[AD-ERROR] Too many consecutive failures, not requesting more ads\");\n throw new Error(\"Too many consecutive failures\");\n }\n if (this.timing.isGamInCooldown()) {\n if (this.debug) console.warn(\"[CIRCUIT-BREAKER] GAM in cooldown, skipping ad request\");\n throw new Error(\"GAM in cooldown\");\n }\n this.recreateAdController();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.timing.startAdRequestWatchdog(requestToken);\n try {\n await this.timing.enforceGlobalRateLimit();\n this.timing.lastAdRequestTime = Date.now();\n const ap = this.host.getAdPlayer();\n await ap.requestAds(vastTagUrl);\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: vastTagUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.clearAdRequestWatchdog();\n if (this.timing.activeAdRequestToken !== requestToken) return;\n if (!this.timing.ensureLoadedAdFitsBudget(ap)) {\n this.timing.rejectLoadedAdForDuration(ap);\n this.recreateAdController();\n throw new Error(\"ad_duration_exceeds_budget\");\n }\n try {\n this.timing.startAdFailsafeTimer(requestToken);\n await ap.play();\n this.timing.markAdStarted();\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n ap.setAdVolume(getAdAudioVolume(ap));\n this.timing.consecutiveFailures = 0;\n this.timing.temporaryFailureUrls.delete(vastTagUrl);\n } catch (playError) {\n if (this.debug) console.error(\"[AD-ERROR] Failed to play ad:\", playError);\n if (this.timing.isTemporaryAdError(playError)) {\n this.timing.temporaryFailureUrls.set(vastTagUrl, Date.now());\n if (this.debug) console.log(\"[AD-ERROR] Temporary play error - URL can be retried after cooldown\");\n } else {\n this.timing.failedVastUrls.add(vastTagUrl);\n if (this.debug) console.log(\"[AD-ERROR] Permanent play error - URL blacklisted\");\n }\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n throw playError;\n }\n } catch (error) {\n const errorMessage = error?.message || \"\";\n if (this.debug) console.error(\"[AD-ERROR] Ad request failed:\", errorMessage);\n if (this.timing.isTemporaryAdError(error)) {\n this.timing.temporaryFailureUrls.set(vastTagUrl, Date.now());\n if (this.debug) console.log(\"[AD-ERROR] Temporary error (no-fill/timeout) - URL can be retried after cooldown\");\n } else {\n this.timing.failedVastUrls.add(vastTagUrl);\n if (this.debug) console.log(\"[AD-ERROR] Permanent error - URL blacklisted:\", errorMessage);\n }\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n throw error;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Placeholder wait\n // ───────────────────────────────────────────────────────────────\n async showPlaceholderAndWaitForAds() {\n const remaining = this.timing.getRemainingAdMs();\n const waitTime = Math.min(this.maxPlaceholderDurationMs, remaining);\n if (this.timing.isGamInCooldown()) {\n if (this.debug) console.log(\"[CIRCUIT-BREAKER] GAM in cooldown, skipping placeholder wait\");\n this.handleAdPodComplete();\n return;\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) console.log(\"[CONTINUOUS-FETCH] Skipping placeholder - too many consecutive failures\");\n this.handleAdPodComplete();\n return;\n }\n if (waitTime < 1e3) {\n this.handleAdPodComplete();\n return;\n }\n if (this.debug) {\n console.log(`[CONTINUOUS-FETCH] Showing placeholder for ${waitTime}ms while waiting for ad URLs`);\n }\n this.isShowingPlaceholder = true;\n this.host.getAdPlayer().showPlaceholder();\n const checkInterval = 300;\n const maxChecks = Math.floor(waitTime / checkInterval);\n for (let i = 0; i < maxChecks; i++) {\n await new Promise((resolve) => setTimeout(resolve, checkInterval));\n if (!this.inAdBreak) return;\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) console.log(\"[CONTINUOUS-FETCH] Too many failures during placeholder wait\");\n break;\n }\n if (!this.timing.hasTimeToStartAnotherAd()) {\n if (this.debug) console.log(\"[CONTINUOUS-FETCH] Not enough time remaining during placeholder wait, ending ad break\");\n break;\n }\n while (this.adRequestQueue.length > 0) {\n if (!this.timing.hasTimeToStartAnotherAd()) break;\n const nextAdUrl = this.adRequestQueue.shift();\n if (!nextAdUrl) continue;\n if (this.timing.failedVastUrls.has(nextAdUrl)) continue;\n if (this.timing.isUrlInCooldown(nextAdUrl)) continue;\n if (this.debug) console.log(\"[CONTINUOUS-FETCH] Ad URL available, requesting via HLS ad player\");\n this.isShowingPlaceholder = false;\n this.host.getAdPlayer().hidePlaceholder();\n try {\n await this.playSingleAd(nextAdUrl);\n this.timing.consecutiveFailures = 0;\n } catch (error) {\n const errorMessage = error.message;\n if (errorMessage.includes(\"ad_duration_exceeds_budget\")) {\n await this.tryNextAvailableAdWithRateLimit();\n return;\n }\n if (!errorMessage.includes(\"permanently failed\") && !errorMessage.includes(\"in cooldown\")) {\n this.timing.consecutiveFailures++;\n }\n await this.tryNextAvailableAdWithRateLimit();\n }\n return;\n }\n }\n if (this.debug) console.log(\"[CONTINUOUS-FETCH] Placeholder timeout, ending ad break\");\n this.isShowingPlaceholder = false;\n this.host.getAdPlayer().hidePlaceholder();\n this.handleAdPodComplete();\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break completion\n // ───────────────────────────────────────────────────────────────\n handleAdPodComplete() {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad pod complete - cleaning up\");\n }\n this.timing.resetForBreakEnd();\n this.stopContinuousFetching();\n this.clearPendingAdBreak();\n if (this.isShowingPlaceholder) {\n this.host.getAdPlayer().hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n this.adRequestQueue = [];\n this.inAdBreak = false;\n this.adDetectSentForCurrentBreak = false;\n this.cueManager.activeScte35BreakKey = void 0;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.adPodQueue = [];\n this.showAds = false;\n this.host.getAdPlayer().stop().catch(() => {\n });\n const restoredMuted = this.host.getAdPlayer().getOriginalMutedState();\n const restoredVolume = this.host.getAdPlayer().getOriginalVolume();\n if (this.host.video.muted !== restoredMuted) {\n this.host.video.muted = restoredMuted;\n }\n if (Math.abs(this.host.video.volume - restoredVolume) > 0.01) {\n this.host.video.volume = restoredVolume;\n }\n this.host.video.style.visibility = \"visible\";\n this.host.video.style.opacity = \"1\";\n if (this.host.isLiveStream()) {\n if (this.host.requiresMediaPipelineResetAfterAds()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Live break end \\u2014 hard-reloading stream to reacquire decoder (single-decoder platform)\"\n );\n }\n this.host.reloadLiveStream();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n const liveSyncPos = this.host.getLiveSyncPosition();\n if (liveSyncPos != null && liveSyncPos > this.host.video.currentTime) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live break end \\u2014 snapping to live edge: ${this.host.video.currentTime.toFixed(2)}s \\u2192 ${liveSyncPos.toFixed(2)}s`\n );\n }\n this.host.video.currentTime = liveSyncPos;\n this.host.restartHlsLoad(liveSyncPos);\n }\n this.resumeContentPlayback();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n this.resumeContentPlayback();\n }\n getBufferedAhead() {\n const video = this.host.video;\n const t = video.currentTime;\n const ranges = video.buffered;\n for (let i = 0; i < ranges.length; i++) {\n if (t >= ranges.start(i) - 0.5 && t <= ranges.end(i)) {\n return ranges.end(i) - t;\n }\n }\n return 0;\n }\n describeVideoState() {\n const v = this.host.video;\n const networkStates = [\"EMPTY\", \"IDLE\", \"LOADING\", \"NO_SOURCE\"];\n const readyStates = [\n \"HAVE_NOTHING\",\n \"HAVE_METADATA\",\n \"HAVE_CURRENT_DATA\",\n \"HAVE_FUTURE_DATA\",\n \"HAVE_ENOUGH_DATA\"\n ];\n const net = networkStates[v.networkState] ?? String(v.networkState);\n const ready = readyStates[v.readyState] ?? String(v.readyState);\n const err = v.error ? `code=${v.error.code}${v.error.message ? ` (${v.error.message})` : \"\"}` : \"none\";\n const ranges = [];\n for (let i = 0; i < v.buffered.length; i++) {\n ranges.push(`[${v.buffered.start(i).toFixed(2)}\\u2013${v.buffered.end(i).toFixed(2)}]`);\n }\n return `t=${v.currentTime.toFixed(2)}s paused=${v.paused} ended=${v.ended} seeking=${v.seeking} readyState=${ready} networkState=${net} error=${err} buffered=${ranges.length ? ranges.join(\",\") : \"none\"}`;\n }\n monitorLiveResumeStall(resumeBaseline) {\n const needsReset = this.host.requiresMediaPipelineResetAfterAds();\n const pollIntervalMs = 1e3;\n const graceMs = needsReset ? 8e3 : 5e3;\n const recoveryCooldownMs = needsReset ? 7e3 : 5e3;\n const maxRecoveries = 3;\n const maxMonitorMs = 45e3;\n const startTime = Date.now();\n let baseline = resumeBaseline;\n let recoveries = 0;\n let lastRecoveryAt = 0;\n const video = this.host.video;\n let listenersAttached = false;\n let onMediaEvent;\n const diagEvents = [\n \"loadstart\",\n \"loadedmetadata\",\n \"loadeddata\",\n \"canplay\",\n \"canplaythrough\",\n \"play\",\n \"playing\",\n \"pause\",\n \"waiting\",\n \"stalled\",\n \"suspend\",\n \"seeking\",\n \"seeked\",\n \"emptied\",\n \"error\",\n \"ended\"\n ];\n if (this.debug) {\n onMediaEvent = (e) => {\n const dt = ((Date.now() - startTime) / 1e3).toFixed(1);\n console.log(\n `[ResumeDiag] +${dt}s event=${e.type} \\u2014 ${this.describeVideoState()}`\n );\n };\n for (const name of diagEvents) {\n video.addEventListener(name, onMediaEvent);\n }\n listenersAttached = true;\n console.log(\n `[ResumeDiag] +0.0s monitor start \\u2014 ${this.describeVideoState()}`\n );\n }\n const cleanup = () => {\n if (listenersAttached && onMediaEvent) {\n for (const name of diagEvents) {\n video.removeEventListener(name, onMediaEvent);\n }\n listenersAttached = false;\n }\n };\n const poll = () => {\n if (this.inAdBreak) {\n cleanup();\n return;\n }\n const currentTime = video.currentTime;\n const advanced = currentTime > baseline + 0.5;\n const playing = !video.paused && video.readyState >= 3;\n if (advanced && playing) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live stream resumed successfully after ad break \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n const elapsed = Date.now() - startTime;\n const bufferedAhead = this.getBufferedAhead();\n const wedged = bufferedAhead < 0.5 && !advanced;\n if (elapsed >= maxMonitorMs) {\n if (this.debug && !advanced) {\n console.warn(\n `[StormcloudVideoPlayer] Live stream failed to resume after ${(maxMonitorMs / 1e3).toFixed(0)}s \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n const canRecover = wedged && elapsed >= graceMs && Date.now() - lastRecoveryAt >= recoveryCooldownMs && recoveries < maxRecoveries;\n if (canRecover) {\n recoveries++;\n lastRecoveryAt = Date.now();\n if (needsReset) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n } else if (recoveries === 1) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 calling recoverMediaError() (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.recoverMediaError();\n } else if (recoveries === 2) {\n const liveSyncPos = this.host.getLiveSyncPosition();\n const reloadPos = liveSyncPos != null && liveSyncPos > currentTime ? liveSyncPos : currentTime;\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 restarting HLS load at ${reloadPos.toFixed(2)}s (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n if (liveSyncPos != null && liveSyncPos > currentTime) {\n video.currentTime = liveSyncPos;\n }\n this.host.restartHlsLoad(reloadPos);\n } else {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n }\n baseline = video.currentTime;\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n }\n window.setTimeout(poll, pollIntervalMs);\n };\n window.setTimeout(poll, pollIntervalMs);\n }\n resumeContentPlayback(attempt = 0) {\n const maxAttempts = 5;\n const video = this.host.video;\n if (!video.paused) {\n if (this.debug && attempt === 0) {\n console.log(\"[StormcloudVideoPlayer] Content video already playing after ads\");\n }\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Resuming content playback after ads (attempt ${attempt + 1}/${maxAttempts}, readyState=${video.readyState})`\n );\n }\n if (video.readyState < 3) {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] readyState never reached HAVE_FUTURE_DATA, forcing play()\"\n );\n }\n video.play()?.catch(() => {\n });\n return;\n }\n const onReady = () => {\n video.removeEventListener(\"canplay\", onReady);\n this.resumeContentPlayback(attempt + 1);\n };\n video.addEventListener(\"canplay\", onReady);\n const backoffMs = 500 * (attempt + 1);\n window.setTimeout(() => {\n video.removeEventListener(\"canplay\", onReady);\n if (video.paused) {\n this.resumeContentPlayback(attempt + 1);\n }\n }, backoffMs);\n return;\n }\n const playResult = video.play();\n if (playResult && typeof playResult.catch === \"function\") {\n playResult.catch((error) => {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to resume content playback after ads:\",\n error\n );\n }\n return;\n }\n const backoffMs = 250 * (attempt + 1);\n window.setTimeout(() => {\n this.resumeContentPlayback(attempt + 1);\n }, backoffMs);\n });\n }\n }\n handleAdFailure() {\n this.timing.consecutiveFailures++;\n this.timing.recordGamNoFill();\n const remaining = this.timing.getRemainingAdMs();\n if (this.debug) {\n console.log(\n `[CONTINUOUS-FETCH] Ad failure: remaining=${remaining}ms, queued ads=${this.adRequestQueue.length}, consecutiveFailures=${this.timing.consecutiveFailures}`,\n this.adRequestQueue.length > 0 ? { queuedUrls: [...this.adRequestQueue] } : {}\n );\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) console.log(`[CONTINUOUS-FETCH] Max consecutive failures reached (${this.timing.consecutiveFailures}), ending ad break gracefully`);\n this.handleAdPodComplete();\n return;\n }\n if (this.timing.hasTimeToStartAnotherAd()) {\n this.tryNextAvailableAdWithRateLimit();\n } else {\n if (this.debug) console.log(\"[AD-ERROR] Ad failed and not enough time remaining for another ad. Failed URLs:\", this.timing.failedVastUrls.size);\n this.handleAdPodComplete();\n }\n }\n};\n\n// src/player/StormcloudVideoPlayer.ts\nvar StormcloudVideoPlayer = class {\n constructor(config) {\n this.attached = false;\n this.palPlaybackStarted = false;\n initializePolyfills();\n const browserOverrides = getBrowserConfigOverrides();\n this.config = { ...browserOverrides, ...config };\n this.video = config.videoElement;\n logBrowserInfo(config.debugAdTiming);\n this.adPlayer = this.createAdPlayer(false);\n this.palNonce = createPalNonceManager();\n this.cueManager = new Scte35CueManager(!!this.config.debugAdTiming, {\n onEarlyStartCue: (marker, fragmentSn, cueKey) => {\n this.startAdPrefetch(marker, fragmentSn, cueKey);\n },\n onPlaybackCue: (marker, cueKey) => {\n this.onScte35Marker(marker, cueKey);\n },\n isInAdBreak: () => this.adBreak.inAdBreak\n });\n this.adConfig = new AdConfigManager(this.config, this.video);\n this.timing = new AdTimingService(this.config, this.video, {\n onAdStopTimerFired: () => this.onAdStopTimerFired(),\n onAdStartTimerFired: (marker, cueKey) => {\n this.startScte35AdBreak(\n marker,\n cueKey,\n marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs\n );\n },\n onWatchdogTimeout: () => this.adBreak.handleAdFailure(),\n onFailsafeTimeout: () => this.adBreak.handleAdFailure(),\n getAdState: () => ({\n inAdBreak: this.adBreak.inAdBreak,\n showAds: this.adBreak.showAds,\n adPlaying: this.adPlayer.isAdPlaying()\n })\n });\n this.placeholder = new PlaceholderLayer(this.video, !!this.config.debugAdTiming);\n this.hlsEngine = new HlsEngine(this.config, this.video, this.cueManager, this.timing, {\n onManifestParsed: async (isLive) => this.onManifestParsed(isLive),\n onScte35Cue: (marker, context) => this.cueManager.onScte35Cue(marker, context),\n activatePendingCuesForFragment: (frag) => this.cueManager.activatePendingScte35CuesForFragment(frag),\n onFatalDestroy: () => this.destroy(),\n isInAdBreak: () => this.adBreak.inAdBreak,\n hasPendingAdBreak: () => this.adBreak.pendingAdBreak !== null\n });\n this.adBreak = new AdBreakOrchestrator(\n {\n config: this.config,\n video: this.video,\n getAdPlayer: () => this.adPlayer,\n setAdPlayer: (p) => {\n this.adPlayer = p;\n },\n createAdPlayer: (c) => this.createAdPlayer(c),\n shouldContinueLiveStreamDuringAds: () => this.shouldContinueLiveStreamDuringAds(),\n isLiveStream: () => this.hlsEngine.isLiveStream,\n getLiveSyncPosition: () => this.hlsEngine.getLiveSyncPosition(),\n restartHlsLoad: (position) => this.hlsEngine.restartLoadAt(position),\n reloadLiveStream: () => this.hlsEngine.reloadLiveStream(),\n recoverMediaError: () => this.hlsEngine.recoverMediaError(),\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds(),\n generatePodVastUrl: (base, breakDurationMs) => this.generatePodVastUrl(base, breakDurationMs),\n onAdClick: () => this.palNonce.sendAdClick(),\n onAdInteraction: (event) => this.palNonce.sendAdTouch(event)\n },\n this.timing,\n this.adConfig,\n this.cueManager,\n this.placeholder\n );\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n createAdPlayer(continueLiveStreamDuringAds) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Creating HLS ad player\");\n }\n return createHlsAdPlayer(this.video, {\n continueLiveStreamDuringAds,\n ...this.config.licenseKey ? { licenseKey: this.config.licenseKey } : {},\n ...this.hlsEngine?.hls ? { mainHlsInstance: this.hlsEngine.hls } : {}\n });\n }\n generatePodVastUrl(baseUrl, breakDurationMs) {\n const podParams = this.adConfig.resolvePodParams(breakDurationMs);\n return this.adConfig.generatePodVastUrl(\n baseUrl,\n podParams,\n this.adPlayer,\n this.palNonce,\n this.adBreak.inAdBreak\n );\n }\n // ───────────────────────────────────────────────────────────────\n // Lifecycle\n // ───────────────────────────────────────────────────────────────\n async load() {\n if (!this.attached) {\n this.attach();\n }\n try {\n await this.adConfig.fetchAdConfiguration();\n } catch (error) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to fetch ad configuration:\",\n error\n );\n }\n }\n const palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;\n fetchConsentSignals().catch(() => ({})).then((signals) => {\n this.adConfig.consentSignals = signals;\n const muted = this.video.muted;\n return this.palNonce.generateNonce({\n videoWidth: this.video.offsetWidth || this.video.clientWidth || 640,\n videoHeight: this.video.offsetHeight || this.video.clientHeight || 480,\n adWillAutoPlay: !!this.config.autoplay,\n adWillPlayMuted: muted,\n playerVolume: muted ? 0 : this.video.volume,\n continuousPlayback: this.config.lowLatencyMode ?? false,\n ...palDescriptionUrl ? { descriptionUrl: palDescriptionUrl } : {},\n ...signals.storageAllowed != null ? { allowStorage: signals.storageAllowed } : {}\n });\n }).catch(() => {\n });\n this.adConfig.initializeTracking();\n if (this.hlsEngine.shouldUseNativeHls(() => this.getStreamType())) {\n await this.hlsEngine.setupNativeHls();\n const continueLiveStreamDuringAds = this.shouldContinueLiveStreamDuringAds();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Native HLS ad behavior:\", {\n isLive: this.hlsEngine.isLiveStream,\n continueLiveStreamDuringAds\n });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(continueLiveStreamDuringAds);\n this.adPlayer.initialize();\n return;\n }\n this.hlsEngine.setupHls();\n }\n async onManifestParsed(isLive) {\n if (this.hlsEngine.reloadingLiveStream) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Manifest re-parsed after hard reload \\u2014 skipping ad-player setup\");\n }\n return;\n }\n if (!this.adConfig.isVmapEnabled() && !isLive && this.adConfig.vmapBreaks.length === 0 && this.adConfig.apiVastTagUrl) {\n const prerollKey = \"synthetic-vod-preroll\";\n if (!this.adConfig.consumedVmapBreakIds.has(prerollKey)) {\n this.adConfig.vmapBreaks = [\n { id: prerollKey, startTimeMs: 0, vastTagUrl: this.adConfig.apiVastTagUrl }\n ];\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Injected synthetic VOD preroll from apiVastTagUrl\"\n );\n }\n }\n }\n if (this.debug) {\n const adBehavior = this.shouldContinueLiveStreamDuringAds() ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\"[StormcloudVideoPlayer] Stream type detected:\", {\n isLive,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(this.shouldContinueLiveStreamDuringAds());\n this.adPlayer.initialize();\n }\n attach() {\n if (this.attached) return;\n this.attached = true;\n this.video.autoplay = !!this.config.autoplay;\n this.video.muted = !!this.config.muted;\n this.adPlayer.initialize();\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.attachImaEventListeners();\n this.video.addEventListener(\"play\", () => {\n if (!this.palPlaybackStarted && !this.adPlayer.isAdPlaying()) {\n this.palPlaybackStarted = true;\n this.palNonce.sendPlaybackStart();\n }\n });\n this.endedHandler = () => {\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.onVideoEnded();\n };\n this.video.addEventListener(\"ended\", this.endedHandler);\n this.video.addEventListener(\"mousedown\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.video.addEventListener(\"touchstart\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.timeUpdateHandler = () => {\n this.onTimeUpdate(this.video.currentTime);\n };\n this.video.addEventListener(\"timeupdate\", this.timeUpdateHandler);\n this.emptiedHandler = () => {\n if (this.hlsEngine.nativeHlsMode && this.hlsEngine.videoSrcProtection && !this.adPlayer.isAdPlaying()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Video src was cleared, restoring:\",\n this.hlsEngine.videoSrcProtection\n );\n }\n const currentTime = this.video.currentTime;\n const wasPaused = this.video.paused;\n this.video.src = this.hlsEngine.videoSrcProtection;\n this.video.currentTime = currentTime;\n if (!wasPaused) {\n this.video.play().catch(() => {\n });\n }\n }\n };\n this.video.addEventListener(\"emptied\", this.emptiedHandler);\n }\n shouldContinueLiveStreamDuringAds() {\n if (this.config.pauseContentDuringAds) {\n return false;\n }\n if (this.hlsEngine.isLiveStream) {\n return true;\n }\n const duration = this.video.duration;\n if (!Number.isFinite(duration) || duration === Infinity) {\n return true;\n }\n return false;\n }\n // ───────────────────────────────────────────────────────────────\n // SCTE-35 marker orchestration\n // ───────────────────────────────────────────────────────────────\n onScte35Marker(marker, cueKey) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 marker detected:\", {\n type: marker.type,\n ptsSeconds: marker.ptsSeconds,\n durationSeconds: marker.durationSeconds,\n currentTime: this.video.currentTime,\n raw: marker.raw,\n hasPendingAdBreak: !!this.adBreak.pendingAdBreak\n });\n }\n if (marker.type === \"start\") {\n if (this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n const newDurationMs = marker.durationSeconds * 1e3;\n if (this.timing.expectedAdBreakDurationMs == null || newDurationMs > this.timing.expectedAdBreakDurationMs) {\n this.timing.setAdBreakDurationBoundary(newDurationMs);\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Updated ad break duration from subsequent marker: ${newDurationMs}ms, remaining: ${this.timing.getWallClockRemainingAdMs()}ms`\n );\n }\n }\n }\n return;\n }\n if (!this.adBreak.adDetectSentForCurrentBreak) {\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n }\n const hasPrefetchedAds = this.adBreak.pendingAdBreak && this.adBreak.pendingAdBreak.vastUrls.length > 0;\n const durationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.adBreak.pendingAdBreak?.marker.durationSeconds != null ? this.adBreak.pendingAdBreak.marker.durationSeconds * 1e3 : void 0;\n const isManifest = isManifestBasedMarker(marker);\n const forceImmediate = this.config.immediateManifestAds ?? true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad start decision:\", {\n isManifestMarker: isManifest,\n forceImmediate,\n hasPts: typeof marker.ptsSeconds === \"number\",\n hasPrefetchedAds\n });\n }\n if (isManifest && forceImmediate) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Starting ad immediately (manifest-based)${hasPrefetchedAds ? \" with prefetched ads\" : \"\"}`\n );\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n } else if (typeof marker.ptsSeconds === \"number\") {\n const tol = this.config.driftToleranceMs ?? 1e3;\n const nowMs = this.video.currentTime * 1e3;\n const estCurrentPtsMs = nowMs - this.timing.ptsDriftEmaMs;\n const deltaMs = Math.floor(marker.ptsSeconds * 1e3 - estCurrentPtsMs);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] PTS-based timing calculation:\", {\n nowMs,\n estCurrentPtsMs,\n markerPtsMs: marker.ptsSeconds * 1e3,\n deltaMs,\n tolerance: tol\n });\n }\n if (deltaMs > tol) {\n if (this.debug) {\n console.log(`[StormcloudVideoPlayer] Scheduling ad start in ${deltaMs}ms`);\n }\n this.timing.expectedAdBreakDurationMs = durationMs;\n this.cueManager.scheduledScte35BreakKey = cueKey;\n this.timing.scheduleAdStartIn(deltaMs, marker, cueKey);\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (within tolerance)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (fallback)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n return;\n }\n if (marker.type === \"progress\" && this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n this.timing.setAdBreakDurationBoundary(marker.durationSeconds * 1e3);\n }\n this.timing.scheduleAdStopAtBreakBoundary();\n if (!this.adPlayer.isAdPlaying() && this.timing.activeAdRequestToken === null && this.adBreak.adRequestQueue.length > 0 && this.timing.hasTimeToStartAnotherAd()) {\n this.adBreak.tryNextAvailableAdWithRateLimit();\n }\n return;\n }\n if (marker.type === \"end\") {\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on SCTE end marker\");\n }\n }\n const remaining = this.timing.getRemainingAdMs();\n const adPlaying = this.adPlayer.isAdPlaying();\n const hasQueuedAds = this.adBreak.adRequestQueue.length > 0;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 end marker received:\", {\n remaining,\n adPlaying,\n hasQueuedAds,\n activeAdRequest: this.timing.activeAdRequestToken !== null\n });\n }\n this.timing.scteAdBreakEndWallClockMs = Date.now();\n this.timing.clearAdStartTimer();\n this.timing.clearAdStopTimer();\n if (adPlaying) {\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete();\n return;\n }\n }\n startScte35AdBreak(marker, cueKey, durationMs) {\n this.adBreak.inAdBreak = true;\n this.cueManager.activeScte35BreakKey = cueKey ?? this.cueManager.pendingScte35CueKey;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.timing.currentAdBreakStartWallClockMs = this.timing.resolveScteBreakStartWallClockMs(marker);\n this.timing.setAdBreakDurationBoundary(durationMs);\n this.adBreak.handleAdStart(marker);\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n onAdStopTimerFired() {\n if (!this.adBreak.inAdBreak) return;\n const adPlaying = this.adPlayer.isAdPlaying();\n const checkIntervalMs = Math.max(\n 250,\n Math.floor(this.config.adBreakCheckIntervalMs ?? 1e3)\n );\n const maxExtensionMsConfig = this.config.maxAdBreakExtensionMs;\n const maxExtensionMs = typeof maxExtensionMsConfig === \"number\" && maxExtensionMsConfig > 0 ? maxExtensionMsConfig : 0;\n const endWallClockMs = this.timing.getAdBreakEndWallClockMs() ?? Date.now();\n const overrunMs = Math.max(0, Date.now() - endWallClockMs);\n const shouldExtendAdBreak = adPlaying && overrunMs < maxExtensionMs;\n if (shouldExtendAdBreak) {\n this.timing.scheduleAdStopCountdown(checkIntervalMs);\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Ad break boundary reached (overrun=${overrunMs}ms) - hard-stopping ads and resuming stream`\n );\n }\n if (adPlaying) {\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete();\n }\n // ───────────────────────────────────────────────────────────────\n // Ad prefetch\n // ───────────────────────────────────────────────────────────────\n startAdPrefetch(marker, fragmentSn, cueKey) {\n if (this.adBreak.pendingAdBreak || this.adBreak.inAdBreak) return;\n const scheduled = this.adConfig.findCurrentOrNextBreak(this.video.currentTime * 1e3);\n const tags = this.adConfig.selectVastTagsForBreak(scheduled);\n let baseVastUrl;\n if (tags && tags.length > 0 && tags[0]) {\n baseVastUrl = tags[0];\n } else if (this.adConfig.apiVastTagUrl) {\n baseVastUrl = this.adConfig.apiVastTagUrl;\n } else {\n if (this.debug) console.warn(\"[StormcloudVideoPlayer] No VAST URL available for prefetch\");\n return;\n }\n this.adConfig.beginNewAdPod();\n this.adConfig.podAssignedByPrefetch = true;\n const breakDurationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : void 0;\n const generatedUrls = [this.generatePodVastUrl(baseVastUrl, breakDurationMs)];\n this.adBreak.pendingAdBreak = {\n marker,\n ...fragmentSn !== void 0 ? { detectedAtFragmentSn: fragmentSn } : {},\n vastUrls: generatedUrls,\n isFetching: false,\n fetchStartTime: Date.now()\n };\n this.cueManager.pendingScte35CueKey = cueKey;\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n if (fragmentSn !== void 0) detectPayload.detectedAtFragmentSn = fragmentSn;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n if (this.debug) {\n console.log(\"[PREFETCH] Starting ad prefetch for upcoming ad break\");\n console.log(`[PREFETCH] Pre-generated pod request URL`);\n }\n }\n // ───────────────────────────────────────────────────────────────\n // VMAP time-based ad breaks\n // ───────────────────────────────────────────────────────────────\n onTimeUpdate(currentTimeSec) {\n if (!this.adConfig.isVmapEnabled() || this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const nowMs = currentTimeSec * 1e3;\n const breakToPlay = this.adConfig.findBreakForTime(nowMs);\n if (breakToPlay) {\n void this.handleVmapAdBreak(breakToPlay, nowMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad break failed gracefully:\", error);\n }\n });\n }\n }\n onVideoEnded() {\n if (!this.adConfig.isVmapEnabled() || this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const durationMs = Number.isFinite(this.video.duration) ? Math.floor(this.video.duration * 1e3) : 0;\n const postroll = this.adConfig.vmapBreaks.find(\n (b) => b.startTimeMs === -1 && !this.adConfig.consumedVmapBreakIds.has(this.adConfig.getAdBreakKey(b))\n );\n if (postroll) {\n void this.handleVmapAdBreak(postroll, durationMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP post-roll failed gracefully:\", error);\n }\n });\n }\n }\n async handleVmapAdBreak(adBreak, nowMs) {\n const key = this.adConfig.getAdBreakKey(adBreak);\n if (this.adConfig.consumedVmapBreakIds.has(key)) return;\n const breakStartMs = this.adConfig.resolveBreakStartMs(adBreak);\n if (breakStartMs == null) return;\n const durationMs = adBreak.durationMs ?? 0;\n const endMs = breakStartMs + durationMs;\n const inWindow = durationMs > 0 ? nowMs >= breakStartMs && nowMs < endMs : nowMs >= breakStartMs;\n if (inWindow) {\n this.adConfig.consumedVmapBreakIds.add(key);\n const tags = this.adConfig.selectVastTagsForBreak(adBreak);\n if (!tags || tags.length === 0) return;\n const first = tags[0];\n const rest = tags.slice(1);\n this.adBreak.adPodQueue = rest;\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.showAds = true;\n this.adBreak.inAdBreak = true;\n this.timing.currentAdBreakStartWallClockMs = Date.now();\n try {\n await this.adBreak.playSingleAd(first);\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad request failed:\", error);\n }\n this.adBreak.handleAdPodComplete();\n }\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Public API\n // ───────────────────────────────────────────────────────────────\n getCurrentAdIndex() {\n return this.timing.currentAdIndex;\n }\n getTotalAdsInBreak() {\n return this.timing.totalAdsInBreak;\n }\n getAdRemainingMs() {\n return this.timing.getRemainingAdMs();\n }\n isAdPlaying() {\n return this.adBreak.inAdBreak && this.adPlayer.isAdPlaying();\n }\n isShowingAds() {\n return this.adBreak.showAds;\n }\n getStreamType() {\n const url = this.config.src.toLowerCase();\n if (url.includes(\".m3u8\") || url.includes(\"/hls/\") || url.includes(\"application/vnd.apple.mpegurl\")) {\n return \"hls\";\n }\n return \"other\";\n }\n shouldShowNativeControls() {\n const streamType = this.getStreamType();\n if (streamType === \"other\") {\n return !(this.config.showCustomControls ?? false);\n }\n return !!(this.config.allowNativeHls && !(this.config.showCustomControls ?? false));\n }\n isLive() {\n return this.hlsEngine.isLiveStream;\n }\n isLowLatencyStream() {\n return this.hlsEngine.isLowLatencyStream();\n }\n get videoElement() {\n return this.video;\n }\n toggleMute() {\n toggleMute(this.video, this.adPlayer, this.debug);\n }\n toggleFullscreen() {\n return toggleFullscreen(this.video, this.debug);\n }\n isMuted() {\n return isMuted(this.video, this.adPlayer);\n }\n setMuted(muted) {\n setMuted(this.video, this.adPlayer, muted, this.debug);\n }\n setVolume(volume) {\n setVolume(this.video, this.adPlayer, volume, this.debug);\n }\n getVolume() {\n return getVolume(this.video, this.adPlayer);\n }\n isFullscreen() {\n return isFullscreen();\n }\n resize() {\n resizePlayer(this.video, this.adPlayer, this.debug);\n }\n // ───────────────────────────────────────────────────────────────\n // Destroy\n // ───────────────────────────────────────────────────────────────\n destroy() {\n this.adBreak.stopContinuousFetching();\n this.timing.destroy();\n this.adBreak.clearPendingAdBreak();\n this.placeholder.destroy();\n if (this.timeUpdateHandler) {\n this.video.removeEventListener(\"timeupdate\", this.timeUpdateHandler);\n delete this.timeUpdateHandler;\n }\n if (this.endedHandler) {\n this.video.removeEventListener(\"ended\", this.endedHandler);\n delete this.endedHandler;\n }\n if (this.emptiedHandler) {\n this.video.removeEventListener(\"emptied\", this.emptiedHandler);\n delete this.emptiedHandler;\n }\n this.adConfig.destroyTracking();\n this.hlsEngine.destroy();\n this.adPlayer?.destroy();\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.palNonce.reset();\n this.adBreak.adRequestQueue = [];\n this.timing.consecutiveFailures = 0;\n }\n};\n\n// src/ui/StormcloudVideoPlayer.tsx\nimport {\n FaPlay,\n FaPause,\n FaVolumeUp,\n FaVolumeMute,\n FaVolumeDown\n} from \"react-icons/fa\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar ExpandIcon = ({ size = 18 }) => /* @__PURE__ */ jsxs(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ jsx(\"path\", { d: \"M9 4H4v5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M20 9V4h-5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M15 20h5v-5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M4 15v5h5\" })\n ]\n }\n);\nvar CompressIcon = ({ size = 18 }) => /* @__PURE__ */ jsxs(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ jsx(\"path\", { d: \"M4 9h5V4\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M15 4v5h5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M20 15h-5v5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M9 20v-5H4\" })\n ]\n }\n);\nvar CRITICAL_PROPS = [\n \"src\",\n \"allowNativeHls\",\n \"isLiveStream\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"lowLatencyMode\",\n \"driftToleranceMs\",\n \"vastMode\",\n \"ctvAdRequest\"\n];\nvar CONTROLS_HIDE_DELAY = 3e3;\nvar DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;\nvar StormcloudVideoPlayerComponent = React.memo(\n (props) => {\n const {\n src,\n autoplay,\n muted,\n lowLatencyMode,\n allowNativeHls,\n isLiveStream,\n driftToleranceMs,\n immediateManifestAds,\n debugAdTiming,\n showCustomControls,\n hideLoadingIndicator,\n onVolumeToggle,\n onFullscreenToggle,\n onControlClick,\n onReady,\n wrapperClassName,\n wrapperStyle,\n className,\n style,\n controls,\n playsInline,\n preload,\n poster,\n children,\n licenseKey,\n vastMode,\n vastTagUrl,\n isVmap,\n vmapUrl,\n minSegmentsBeforePlay,\n ctvAdRequest,\n programTitle,\n channelName,\n ...restVideoAttrs\n } = props;\n const videoRef = useRef(null);\n const playerRef = useRef(null);\n const bufferingTimeoutRef = useRef(null);\n const controlsTimerRef = useRef(null);\n const wrapperRef = useRef(null);\n const [adStatus, setAdStatus] = React.useState({ showAds: false, currentIndex: 0, totalAds: 0, remainingSeconds: 0 });\n const [shouldShowNativeControls, setShouldShowNativeControls] = React.useState(true);\n const [isMuted2, setIsMuted] = React.useState(false);\n const [isFullscreen2, setIsFullscreen] = React.useState(false);\n const [isPlaying, setIsPlaying] = React.useState(false);\n const [currentTime, setCurrentTime] = React.useState(0);\n const [duration, setDuration] = React.useState(0);\n const [volume, setVolume2] = React.useState(1);\n const [playbackRate, setPlaybackRate] = React.useState(1);\n const [showVolumeSlider, setShowVolumeSlider] = React.useState(false);\n const [showSpeedMenu, setShowSpeedMenu] = React.useState(false);\n const [isLoading, setIsLoading] = React.useState(true);\n const [isBuffering, setIsBuffering] = React.useState(false);\n const [showCenterPlay, setShowCenterPlay] = React.useState(false);\n const [showLicenseWarning, setShowLicenseWarning] = React.useState(false);\n const [controlsVisible, setControlsVisible] = React.useState(true);\n const [viewportWidth, setViewportWidth] = React.useState(\n typeof window !== \"undefined\" ? window.innerWidth : 1920\n );\n const [isPortrait, setIsPortrait] = React.useState(\n typeof window !== \"undefined\" ? window.innerHeight > window.innerWidth : false\n );\n const [playerAspectRatio, setPlayerAspectRatio] = React.useState(\n DEFAULT_PLAYER_ASPECT_RATIO\n );\n const getResponsiveScale = () => {\n if (viewportWidth < 480) return 0.7;\n if (viewportWidth < 768) return 0.8;\n if (viewportWidth < 1024) return 0.9;\n return 1;\n };\n const responsiveScale = getResponsiveScale();\n const resetControlsTimer = useCallback(() => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n setControlsVisible(true);\n controlsTimerRef.current = window.setTimeout(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, CONTROLS_HIDE_DELAY);\n }, [showVolumeSlider, showSpeedMenu]);\n const handleWrapperMouseMove = useCallback(() => {\n resetControlsTimer();\n }, [resetControlsTimer]);\n const handleWrapperMouseLeave = useCallback(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, [showVolumeSlider, showSpeedMenu]);\n const formatTime = (seconds) => {\n if (!isFinite(seconds)) return \"0:00:00\";\n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor(seconds % 3600 / 60);\n const remainingSeconds = Math.floor(seconds % 60);\n return `${hours}:${minutes.toString().padStart(2, \"0\")}:${remainingSeconds.toString().padStart(2, \"0\")}`;\n };\n const handlePlayPause = () => {\n if (videoRef.current) {\n if (videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n } else {\n videoRef.current.pause();\n setShowCenterPlay(true);\n }\n }\n resetControlsTimer();\n };\n const handleCenterPlayClick = () => {\n if (videoRef.current && videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n }\n };\n const handleTimelineSeek = (e) => {\n if (videoRef.current && duration > 0 && isFinite(duration)) {\n const rect = e.currentTarget.getBoundingClientRect();\n const clickX = e.clientX - rect.left;\n const progress = Math.max(0, Math.min(1, clickX / rect.width));\n const newTime = progress * duration;\n if (isFinite(newTime) && newTime >= 0 && newTime <= duration) {\n videoRef.current.currentTime = newTime;\n }\n }\n resetControlsTimer();\n };\n const handleVolumeChange = (newVolume) => {\n if (playerRef.current && isFinite(newVolume)) {\n const clampedVolume = Math.max(0, Math.min(1, newVolume));\n playerRef.current.setVolume(clampedVolume);\n }\n };\n const handlePlaybackRateChange = (rate) => {\n if (videoRef.current && isFinite(rate) && rate > 0) {\n videoRef.current.playbackRate = rate;\n }\n setShowSpeedMenu(false);\n };\n const isHlsStream = src?.toLowerCase().includes(\".m3u8\") || src?.toLowerCase().includes(\"/hls/\");\n const isLiveUiMode = isLiveStream === true;\n const shouldShowEnhancedControls = showCustomControls && (isHlsStream ? !isLiveUiMode : true);\n const criticalPropsKey = useMemo(() => {\n return CRITICAL_PROPS.map((prop) => `${prop}:${props[prop]}`).join(\"|\");\n }, [\n src,\n allowNativeHls,\n isLiveStream,\n licenseKey,\n isVmap,\n vmapUrl,\n lowLatencyMode,\n driftToleranceMs,\n vastMode\n ]);\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const el = videoRef.current;\n if (!el || !src) return;\n if (!licenseKey) {\n setShowLicenseWarning(true);\n setIsLoading(false);\n console.warn(\n \"StormcloudVideoPlayer: License key is required but not provided. Please set the licenseKey prop to use the player.\"\n );\n return;\n }\n setShowLicenseWarning(false);\n if (debugAdTiming) {\n console.log(\"[StormcloudUI] Initializing player, isLoading=true\");\n }\n if (playerRef.current) {\n try {\n playerRef.current.destroy();\n } catch {\n }\n playerRef.current = null;\n }\n const cfg = {\n src,\n videoElement: el\n };\n if (autoplay !== void 0) cfg.autoplay = autoplay;\n if (muted !== void 0) cfg.muted = muted;\n if (lowLatencyMode !== void 0) cfg.lowLatencyMode = lowLatencyMode;\n if (allowNativeHls !== void 0) cfg.allowNativeHls = allowNativeHls;\n if (isLiveStream !== void 0) cfg.isLiveStream = isLiveStream;\n if (driftToleranceMs !== void 0)\n cfg.driftToleranceMs = driftToleranceMs;\n if (immediateManifestAds !== void 0)\n cfg.immediateManifestAds = immediateManifestAds;\n if (debugAdTiming !== void 0) cfg.debugAdTiming = debugAdTiming;\n if (showCustomControls !== void 0)\n cfg.showCustomControls = showCustomControls;\n if (onVolumeToggle !== void 0) cfg.onVolumeToggle = onVolumeToggle;\n if (onFullscreenToggle !== void 0)\n cfg.onFullscreenToggle = onFullscreenToggle;\n if (onControlClick !== void 0) cfg.onControlClick = onControlClick;\n if (licenseKey !== void 0) cfg.licenseKey = licenseKey;\n if (vastMode !== void 0) cfg.vastMode = vastMode;\n if (vastTagUrl !== void 0) cfg.vastTagUrl = vastTagUrl;\n if (isVmap !== void 0) cfg.isVmap = isVmap;\n if (vmapUrl !== void 0) cfg.vmapUrl = vmapUrl;\n if (minSegmentsBeforePlay !== void 0)\n cfg.minSegmentsBeforePlay = minSegmentsBeforePlay;\n if (ctvAdRequest !== void 0) cfg.ctvAdRequest = ctvAdRequest;\n if (programTitle !== void 0) cfg.programTitle = programTitle;\n if (channelName !== void 0) cfg.channelName = channelName;\n const player = new StormcloudVideoPlayer(cfg);\n playerRef.current = player;\n player.load().then(() => {\n const showNative = player.shouldShowNativeControls();\n setShouldShowNativeControls(showNative);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Player loaded successfully, waiting for video ready\"\n );\n }\n onReady?.(player);\n }).catch((error) => {\n console.error(\n \"StormcloudVideoPlayer: Failed to load player:\",\n error\n );\n setIsLoading(false);\n onReady?.(player);\n });\n return () => {\n try {\n player.destroy();\n } catch {\n }\n playerRef.current = null;\n };\n }, [criticalPropsKey]);\n useEffect(() => {\n if (!playerRef.current) return;\n try {\n if (autoplay !== void 0 && playerRef.current.videoElement) {\n playerRef.current.videoElement.autoplay = autoplay;\n }\n if (muted !== void 0 && !playerRef.current.isShowingAds()) {\n playerRef.current.setMuted(muted);\n }\n } catch (error) {\n console.warn(\"Failed to update player properties:\", error);\n }\n }, [autoplay, muted]);\n useEffect(() => {\n if (!playerRef.current) return;\n const checkAdStatus = () => {\n if (playerRef.current) {\n const showAdsFromMethod = playerRef.current.isShowingAds();\n const showAdsFromAttribute = videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n const showAds = showAdsFromMethod || showAdsFromAttribute;\n const currentIndex = playerRef.current.getCurrentAdIndex();\n const totalAds = playerRef.current.getTotalAdsInBreak();\n const remainingMs = playerRef.current.getAdRemainingMs();\n const remainingSeconds = showAds ? Math.max(0, Math.ceil(remainingMs / 1e3)) : 0;\n setAdStatus((prev) => {\n if (prev.showAds !== showAds || prev.currentIndex !== currentIndex || prev.totalAds !== totalAds || prev.remainingSeconds !== remainingSeconds) {\n if (showAds && !prev.showAds) {\n setShowCenterPlay(false);\n }\n return { showAds, currentIndex, totalAds, remainingSeconds };\n }\n return prev;\n });\n }\n };\n const interval = setInterval(checkAdStatus, 50);\n return () => clearInterval(interval);\n }, []);\n useEffect(() => {\n if (typeof window === \"undefined\" || !playerRef.current) return;\n const handleResize = () => {\n if (playerRef.current && videoRef.current) {\n if (typeof playerRef.current.resize === \"function\") {\n playerRef.current.resize();\n }\n }\n setViewportWidth(window.innerWidth);\n setIsPortrait(window.innerHeight > window.innerWidth);\n };\n window.addEventListener(\"resize\", handleResize);\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n useEffect(() => {\n if (!playerRef.current || !videoRef.current) return;\n const updateStates = () => {\n if (playerRef.current && videoRef.current) {\n setIsMuted(playerRef.current.isMuted());\n setIsPlaying(!videoRef.current.paused);\n const currentTimeValue = videoRef.current.currentTime;\n setCurrentTime(isFinite(currentTimeValue) ? currentTimeValue : 0);\n const durationValue = videoRef.current.duration;\n setDuration(isFinite(durationValue) ? durationValue : 0);\n const volumeValue = playerRef.current.getVolume();\n setVolume2(\n isFinite(volumeValue) ? Math.max(0, Math.min(1, volumeValue)) : 1\n );\n const rateValue = videoRef.current.playbackRate;\n setPlaybackRate(\n isFinite(rateValue) && rateValue > 0 ? rateValue : 1\n );\n }\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n const interval = setInterval(updateStates, 200);\n const handleFullscreenChange = () => {\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n document.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n return () => {\n clearInterval(interval);\n document.removeEventListener(\n \"fullscreenchange\",\n handleFullscreenChange\n );\n };\n }, []);\n useEffect(() => {\n if (!videoRef.current) return;\n const handleLoadedMetadata = () => {\n const video2 = videoRef.current;\n if (video2) {\n if (video2.videoWidth > 0 && video2.videoHeight > 0) {\n setPlayerAspectRatio(video2.videoWidth / video2.videoHeight);\n }\n void video2.offsetHeight;\n }\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadedmetadata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadedData = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadeddata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadStart = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadstart, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleCanPlay = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplay, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleCanPlayThrough = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplaythrough, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleWaiting = () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n }\n bufferingTimeoutRef.current = window.setTimeout(() => {\n setIsBuffering(true);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video buffering detected (after 300ms delay), readyState:\",\n videoRef.current?.readyState,\n \"- showing spinner, isBuffering=true\"\n );\n }\n }, 300);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: waiting, readyState:\",\n videoRef.current?.readyState,\n \"- buffering delay started (300ms)\"\n );\n }\n };\n const handlePlaying = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n setShowCenterPlay(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: playing, readyState:\",\n videoRef.current?.readyState,\n \"- playback started, isLoading=false, isBuffering=false\"\n );\n }\n };\n const handlePause = () => {\n const isAdActive = playerRef.current?.isShowingAds() || videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n if (playerRef.current && !isAdActive) {\n setShowCenterPlay(true);\n } else {\n setShowCenterPlay(false);\n }\n };\n const handleEnded = () => {\n setShowCenterPlay(true);\n };\n const video = videoRef.current;\n video.addEventListener(\"loadstart\", handleLoadStart);\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.addEventListener(\"canplay\", handleCanPlay);\n video.addEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.addEventListener(\"waiting\", handleWaiting);\n video.addEventListener(\"playing\", handlePlaying);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n if (video.paused) {\n setShowCenterPlay(true);\n }\n return () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n video.removeEventListener(\"loadstart\", handleLoadStart);\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n video.removeEventListener(\"canplay\", handleCanPlay);\n video.removeEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.removeEventListener(\"waiting\", handleWaiting);\n video.removeEventListener(\"playing\", handlePlaying);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n };\n }, [debugAdTiming]);\n useEffect(() => {\n setPlayerAspectRatio(DEFAULT_PLAYER_ASPECT_RATIO);\n }, [src]);\n useEffect(() => {\n return () => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n };\n }, []);\n const progressPercent = duration > 0 ? currentTime / duration * 100 : 0;\n const VolumeIcon = isMuted2 || volume === 0 ? FaVolumeMute : volume < 0.5 ? FaVolumeDown : FaVolumeUp;\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\"style\", { children: `\n @keyframes sc-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n @keyframes sc-loading-glow {\n 0%, 100% { opacity: 0.85; transform: scale(1); }\n 50% { opacity: 1; transform: scale(1.05); }\n }\n @keyframes sc-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.6; }\n }\n @keyframes sc-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .sc-wrapper:fullscreen,\n .sc-wrapper:has(*:fullscreen) {\n border-radius: 0 !important;\n box-shadow: none !important;\n width: 100vw !important;\n height: 100vh !important;\n max-width: 100vw !important;\n max-height: 100vh !important;\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n z-index: 999999 !important;\n background: #000 !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n }\n .sc-ctrl-btn {\n background: none;\n border: none;\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n padding: 8px;\n transition: background 0.15s ease, opacity 0.15s ease;\n opacity: 0.9;\n }\n .sc-ctrl-btn:hover {\n opacity: 1;\n background: rgba(255, 255, 255, 0.1);\n }\n .sc-ctrl-btn:active {\n opacity: 0.7;\n }\n .sc-controls-bar {\n transition: opacity 0.35s ease, transform 0.35s ease;\n }\n .sc-progress-track:hover .sc-progress-thumb {\n transform: translate(-50%, -50%) scale(1) !important;\n }\n .sc-loading-hidden .sc-loading-indicator {\n display: none !important;\n }\n ` }),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n ref: wrapperRef,\n className: `sc-wrapper ${wrapperClassName || \"\"}`,\n onMouseMove: handleWrapperMouseMove,\n onMouseLeave: handleWrapperMouseLeave,\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: isFullscreen2 ? \"fixed\" : \"relative\",\n top: isFullscreen2 ? 0 : void 0,\n left: isFullscreen2 ? 0 : void 0,\n overflow: \"hidden\",\n width: isFullscreen2 ? \"100vw\" : \"100%\",\n height: isFullscreen2 ? \"100vh\" : \"auto\",\n minHeight: isFullscreen2 ? \"100vh\" : \"auto\",\n aspectRatio: isFullscreen2 ? void 0 : playerAspectRatio,\n maxWidth: isFullscreen2 ? \"100vw\" : \"100%\",\n maxHeight: isFullscreen2 ? \"100vh\" : \"none\",\n zIndex: isFullscreen2 ? 999999 : void 0,\n backgroundColor: \"#000\",\n borderRadius: isFullscreen2 ? 0 : void 0,\n boxShadow: isFullscreen2 ? \"none\" : void 0,\n ...wrapperStyle\n },\n children: [\n /* @__PURE__ */ jsx(\n \"video\",\n {\n ref: videoRef,\n className,\n style: {\n display: \"block\",\n width: \"100%\",\n height: \"100%\",\n maxWidth: \"100%\",\n maxHeight: isFullscreen2 ? \"100%\" : \"none\",\n objectFit: isFullscreen2 ? \"cover\" : \"contain\",\n backgroundColor: \"#000\",\n aspectRatio: isFullscreen2 ? \"unset\" : void 0,\n ...style\n },\n controls: shouldShowNativeControls && controls && !showCustomControls,\n playsInline,\n preload,\n poster,\n ...restVideoAttrs,\n children\n }\n ),\n (isLoading || isBuffering) && !hideLoadingIndicator && /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: \"sc-loading-indicator\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 20,\n width: `${Math.max(34, 38 * responsiveScale)}px`,\n height: `${Math.max(34, 38 * responsiveScale)}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n animation: \"sc-loading-glow 1.4s ease-in-out infinite\",\n filter: \"drop-shadow(0 6px 14px rgba(0, 0, 0, 0.55))\"\n },\n children: [\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n inset: 0,\n borderRadius: \"50%\",\n border: \"3px solid rgba(255, 255, 255, 0.25)\",\n borderTopColor: \"#ff0000\",\n borderRightColor: \"rgba(255, 255, 255, 0.85)\",\n animation: \"sc-spin 0.8s linear infinite\"\n }\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n width: \"7px\",\n height: \"7px\",\n borderRadius: \"50%\",\n background: \"#ff0000\",\n boxShadow: \"0 0 10px rgba(255, 0, 0, 0.65)\"\n }\n }\n )\n ]\n }\n ),\n showLicenseWarning && /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 25,\n background: \"rgba(220, 38, 38, 0.92)\",\n backdropFilter: \"blur(24px)\",\n color: \"white\",\n padding: \"28px 36px\",\n borderRadius: \"14px\",\n border: \"1px solid rgba(255, 255, 255, 0.15)\",\n boxShadow: \"0 24px 64px rgba(0, 0, 0, 0.5)\",\n textAlign: \"center\",\n maxWidth: \"400px\",\n margin: \"0 16px\"\n },\n children: [\n /* @__PURE__ */ jsx(\"div\", { style: { fontSize: \"18px\", fontWeight: \"700\", marginBottom: \"10px\", letterSpacing: \"-0.02em\" }, children: \"License Key Required\" }),\n /* @__PURE__ */ jsxs(\"div\", { style: { fontSize: \"13px\", lineHeight: \"1.6\", color: \"rgba(255, 255, 255, 0.85)\" }, children: [\n \"Please provide a valid license key to use the Stormcloud Video Player.\",\n /* @__PURE__ */ jsx(\"br\", {}),\n \"Contact your administrator for licensing information.\"\n ] })\n ]\n }\n ),\n adStatus.showAds && /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${12 * responsiveScale}px`,\n left: `${12 * responsiveScale}px`,\n zIndex: 50,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n pointerEvents: \"none\",\n animation: \"sc-fade-in 0.3s ease\"\n },\n children: /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n background: \"rgba(234, 179, 8, 0.95)\",\n color: \"#111\",\n padding: `${4 * responsiveScale}px ${12 * responsiveScale}px`,\n borderRadius: \"6px\",\n fontSize: `${11 * responsiveScale}px`,\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n textTransform: \"uppercase\",\n boxShadow: \"0 2px 12px rgba(234, 179, 8, 0.35)\"\n },\n children: `Ad ${Math.max(1, adStatus.currentIndex)}`\n }\n )\n }\n ),\n showCenterPlay && !isLoading && !isBuffering && !showLicenseWarning && !adStatus.showAds && /* @__PURE__ */ jsx(\n \"div\",\n {\n onClick: handleCenterPlayClick,\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 15,\n cursor: \"pointer\",\n background: \"rgba(0, 0, 0, 0.55)\",\n backdropFilter: \"blur(8px)\",\n borderRadius: \"50%\",\n width: `${92 * responsiveScale}px`,\n height: `${92 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"background 0.2s ease, transform 0.2s ease\",\n animation: \"sc-fade-in 0.2s ease\"\n },\n onMouseEnter: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.72)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1.06)\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.55)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1)\";\n },\n title: \"Play\",\n children: /* @__PURE__ */ jsx(\n FaPlay,\n {\n size: Math.max(24, 32 * responsiveScale),\n color: \"white\",\n style: { marginLeft: \"4px\" }\n }\n )\n }\n ),\n shouldShowEnhancedControls && !showLicenseWarning ? /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n background: \"linear-gradient(0deg, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0.35) 60%, transparent 100%)\",\n padding: `${20 * responsiveScale}px ${12 * responsiveScale}px ${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible || adStatus.showAds ? 1 : 0,\n transform: controlsVisible || adStatus.showAds ? \"translateY(0)\" : \"translateY(6px)\",\n pointerEvents: controlsVisible || adStatus.showAds ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: \"sc-progress-track\",\n style: {\n width: \"100%\",\n height: \"3px\",\n background: \"rgba(255, 255, 255, 0.2)\",\n borderRadius: \"1.5px\",\n marginBottom: `${8 * responsiveScale}px`,\n cursor: \"pointer\",\n position: \"relative\",\n transition: \"height 0.1s ease\"\n },\n onClick: handleTimelineSeek,\n onMouseEnter: (e) => {\n e.currentTarget.style.height = \"5px\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.height = \"3px\";\n },\n children: [\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"1.5px\",\n width: `${progressPercent}%`,\n transition: \"width 0.15s linear\"\n }\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n className: \"sc-progress-thumb\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${progressPercent}%`,\n transform: \"translate(-50%, -50%) scale(0)\",\n width: \"13px\",\n height: \"13px\",\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 4px rgba(0, 0, 0, 0.3)\",\n transition: \"transform 0.1s ease, left 0.15s linear\"\n }\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"white\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ jsx(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: handlePlayPause,\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isPlaying ? \"Pause\" : \"Play\",\n children: isPlaying ? /* @__PURE__ */ jsx(FaPause, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ jsx(FaPlay, { size: Math.max(14, 18 * responsiveScale), style: { marginLeft: \"2px\" } })\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n paddingRight: `${6 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ jsx(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ jsx(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${8 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ jsx(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"Roboto, 'Segoe UI', Arial, sans-serif\",\n color: \"rgba(255, 255, 255, 0.9)\",\n display: viewportWidth < 480 ? \"none\" : \"block\",\n fontVariantNumeric: \"tabular-nums\",\n userSelect: \"none\",\n marginLeft: `${4 * responsiveScale}px`\n },\n children: [\n formatTime(currentTime),\n \" \",\n /* @__PURE__ */ jsx(\"span\", { style: { color: \"rgba(255,255,255,0.5)\" }, children: \"/\" }),\n \" \",\n formatTime(duration)\n ]\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ jsxs(\"div\", { style: { position: \"relative\", display: viewportWidth < 600 ? \"none\" : \"block\" }, children: [\n /* @__PURE__ */ jsxs(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n setShowSpeedMenu(!showSpeedMenu);\n resetControlsTimer();\n },\n style: {\n padding: `${6 * responsiveScale}px ${10 * responsiveScale}px`,\n borderRadius: `${6 * responsiveScale}px`,\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"'SF Mono', 'Cascadia Code', monospace\",\n fontWeight: \"600\",\n minHeight: `${32 * responsiveScale}px`\n },\n title: \"Playback Speed\",\n children: [\n playbackRate,\n \"x\"\n ]\n }\n ),\n showSpeedMenu && /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n bottom: \"100%\",\n right: 0,\n marginBottom: \"8px\",\n background: \"rgba(0, 0, 0, 0.8)\",\n backdropFilter: \"blur(24px)\",\n WebkitBackdropFilter: \"blur(24px)\",\n borderRadius: \"10px\",\n border: \"1px solid rgba(255, 255, 255, 0.1)\",\n overflow: \"hidden\",\n minWidth: \"80px\",\n boxShadow: \"0 12px 40px rgba(0, 0, 0, 0.5)\",\n animation: \"sc-fade-in 0.15s ease\"\n },\n children: [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2].map((speed) => /* @__PURE__ */ jsxs(\n \"button\",\n {\n onClick: () => handlePlaybackRateChange(speed),\n style: {\n display: \"block\",\n width: \"100%\",\n padding: `${8 * responsiveScale}px ${14 * responsiveScale}px`,\n background: playbackRate === speed ? \"rgba(255, 255, 255, 0.12)\" : \"transparent\",\n border: \"none\",\n color: playbackRate === speed ? \"#fff\" : \"rgba(255, 255, 255, 0.7)\",\n cursor: \"pointer\",\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Mono', monospace\",\n fontWeight: playbackRate === speed ? \"700\" : \"500\",\n textAlign: \"center\",\n transition: \"background 0.15s ease, color 0.15s ease\"\n },\n onMouseEnter: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"rgba(255, 255, 255, 0.08)\";\n e.target.style.color = \"#fff\";\n }\n },\n onMouseLeave: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"transparent\";\n e.target.style.color = \"rgba(255, 255, 255, 0.7)\";\n }\n },\n children: [\n speed,\n \"x\"\n ]\n },\n speed\n ))\n }\n )\n ] }),\n /* @__PURE__ */ jsx(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ jsx(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ jsx(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ]\n }\n )\n ]\n }\n ) : showCustomControls && !showLicenseWarning && /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${10 * responsiveScale}px`,\n left: `${10 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transition: \"opacity 0.35s ease\"\n },\n children: [\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n background: \"#ff3b30\",\n animation: \"sc-pulse 1.5s ease-in-out infinite\",\n flexShrink: 0\n }\n }\n ),\n /* @__PURE__ */ jsx(\n \"span\",\n {\n style: {\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Pro Display', 'Segoe UI', Arial, sans-serif\",\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n color: \"#fff\",\n textShadow: \"0 1px 3px rgba(0,0,0,0.6)\",\n userSelect: \"none\"\n },\n children: \"LIVE\"\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: `${10 * responsiveScale}px`,\n right: `${10 * responsiveScale}px`,\n display: \"flex\",\n flexDirection: isPortrait ? \"column\" : \"row\",\n alignItems: isPortrait ? \"flex-end\" : \"center\",\n gap: `${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transform: controlsVisible ? \"translateY(0)\" : \"translateY(4px)\",\n pointerEvents: controlsVisible ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n background: \"rgba(0, 0, 0, 0.6)\",\n borderRadius: `${18 * responsiveScale}px`,\n padding: \"2px\",\n paddingRight: `${8 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ jsx(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ jsx(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${10 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ jsx(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsx(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`,\n background: \"rgba(0, 0, 0, 0.6)\"\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ jsx(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ jsx(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ] }),\n onControlClick && /* @__PURE__ */ jsx(\n \"div\",\n {\n onClick: onControlClick,\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1,\n cursor: \"pointer\"\n }\n }\n )\n ]\n }\n )\n ] });\n },\n (prevProps, nextProps) => {\n for (const prop of CRITICAL_PROPS) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const uiProps = [\n \"autoplay\",\n \"muted\",\n \"controls\",\n \"showCustomControls\",\n \"className\",\n \"style\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"playsInline\",\n \"preload\",\n \"poster\",\n \"children\"\n ];\n for (const prop of uiProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const callbackProps = [\n \"onReady\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n ];\n for (const prop of callbackProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n return true;\n }\n);\n\n// src/StormcloudPlayer.tsx\nimport React3, { Component as Component4, Suspense } from \"react\";\n\n// src/props.ts\nvar noop = () => {\n};\nvar defaultProps = {\n playing: false,\n loop: false,\n controls: true,\n volume: 1,\n muted: false,\n playbackRate: 1,\n width: \"100%\",\n height: \"auto\",\n style: {},\n progressInterval: 1e3,\n playsInline: false,\n autoplay: false,\n preload: \"metadata\",\n poster: \"\",\n className: \"\",\n wrapperClassName: \"\",\n wrapperStyle: {},\n allowNativeHls: false,\n lowLatencyMode: false,\n driftToleranceMs: 1e3,\n immediateManifestAds: true,\n debugAdTiming: false,\n showCustomControls: false,\n hideLoadingIndicator: false,\n licenseKey: \"\",\n isVmap: false,\n vmapUrl: \"\",\n adFailsafeTimeoutMs: 1e4,\n minSegmentsBeforePlay: 2,\n onStart: noop,\n onPlay: noop,\n onPause: noop,\n onBuffer: noop,\n onBufferEnd: noop,\n onEnded: noop,\n onError: noop,\n onDuration: noop,\n onSeek: noop,\n onProgress: noop,\n onVolumeToggle: noop,\n onFullscreenToggle: noop,\n onControlClick: noop\n};\n\n// src/utils.ts\nimport { lazy as reactLazy } from \"react\";\nvar lazy = reactLazy;\nvar omit = (object, keys) => {\n const result = { ...object };\n keys.forEach((key) => {\n delete result[key];\n });\n return result;\n};\nvar isMediaStream = (url) => {\n return typeof window !== \"undefined\" && window.MediaStream && url instanceof window.MediaStream;\n};\nvar supportsWebKitPresentationMode = () => {\n if (typeof window === \"undefined\") return false;\n const video = document.createElement(\"video\");\n return \"webkitSupportsPresentationMode\" in video;\n};\nvar randomString = () => {\n return Math.random().toString(36).substr(2, 9);\n};\nvar parseQuery = (url) => {\n const query = {};\n const queryString = url.split(\"?\")[1] || \"\";\n if (!queryString) return query;\n const manualParse = (qs) => {\n qs.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n try {\n query[decodeURIComponent(key)] = value ? decodeURIComponent(value.replace(/\\+/g, \" \")) : \"\";\n } catch (e) {\n query[key] = value || \"\";\n }\n }\n });\n };\n if (typeof URLSearchParams !== \"undefined\") {\n try {\n const params = new URLSearchParams(queryString);\n params.forEach((value, key) => {\n query[key] = value;\n });\n return query;\n } catch (e) {\n manualParse(queryString);\n }\n } else {\n manualParse(queryString);\n }\n return query;\n};\nvar merge = (target, ...sources) => {\n if (!sources.length) return target;\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} });\n merge(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n return merge(target, ...sources);\n};\nvar isObject = (item) => {\n return item && typeof item === \"object\" && !Array.isArray(item);\n};\nvar IS_BROWSER = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar IS_SAFARI = IS_BROWSER && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\nvar SUPPORTS_HLS = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/vnd.apple.mpegurl\"));\n};\nvar SUPPORTS_DASH = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/dash+xml\"));\n};\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/HlsPlayer.tsx\nimport { Component } from \"react\";\nvar HlsPlayer = class extends Component {\n constructor() {\n super(...arguments);\n this.player = null;\n this.mounted = false;\n this.load = async () => {\n if (!this.props.videoElement || !this.props.src) return;\n try {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n const config = {\n src: this.props.src,\n videoElement: this.props.videoElement\n };\n if (this.props.autoplay !== void 0)\n config.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) config.muted = this.props.muted;\n if (this.props.lowLatencyMode !== void 0)\n config.lowLatencyMode = this.props.lowLatencyMode;\n if (this.props.allowNativeHls !== void 0)\n config.allowNativeHls = this.props.allowNativeHls;\n if (this.props.isLiveStream !== void 0)\n config.isLiveStream = this.props.isLiveStream;\n if (this.props.driftToleranceMs !== void 0)\n config.driftToleranceMs = this.props.driftToleranceMs;\n if (this.props.immediateManifestAds !== void 0)\n config.immediateManifestAds = this.props.immediateManifestAds;\n if (this.props.debugAdTiming !== void 0)\n config.debugAdTiming = this.props.debugAdTiming;\n if (this.props.showCustomControls !== void 0)\n config.showCustomControls = this.props.showCustomControls;\n if (this.props.onVolumeToggle !== void 0)\n config.onVolumeToggle = this.props.onVolumeToggle;\n if (this.props.onFullscreenToggle !== void 0)\n config.onFullscreenToggle = this.props.onFullscreenToggle;\n if (this.props.onControlClick !== void 0)\n config.onControlClick = this.props.onControlClick;\n if (this.props.licenseKey !== void 0)\n config.licenseKey = this.props.licenseKey;\n if (this.props.adFailsafeTimeoutMs !== void 0)\n config.adFailsafeTimeoutMs = this.props.adFailsafeTimeoutMs;\n if (this.props.minSegmentsBeforePlay !== void 0)\n config.minSegmentsBeforePlay = this.props.minSegmentsBeforePlay;\n if (this.props.ctvAdRequest !== void 0)\n config.ctvAdRequest = this.props.ctvAdRequest;\n this.player = new StormcloudVideoPlayer(config);\n this.props.onMount?.(this);\n await this.player.load();\n if (this.mounted) {\n this.props.onReady?.();\n }\n } catch (error) {\n if (this.mounted) {\n this.props.onError?.(error);\n }\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(\"[HlsPlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n this.props.onPlay?.();\n } else {\n console.warn(\"[HlsPlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n this.props.onPause?.();\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.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 === \"player\") return this.player;\n if (key === \"video\") return this.props.videoElement;\n if (key === \"hls\" && this.player) return this.player.hls;\n return null;\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nHlsPlayer.displayName = \"HlsPlayer\";\nHlsPlayer.canPlay = canPlay.hls;\n\n// src/players/FilePlayer.tsx\nimport { Component as Component2 } from \"react\";\nvar FilePlayer = class extends Component2 {\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\n// src/players/index.ts\nvar players = [\n {\n key: \"hls\",\n name: \"HLS Player\",\n canPlay: canPlay.hls,\n lazyPlayer: lazy(() => Promise.resolve({ default: HlsPlayer }))\n },\n {\n key: \"file\",\n name: \"File Player\",\n canPlay: canPlay.file,\n canEnablePIP: (url) => {\n return canPlay.file(url) && (document.pictureInPictureEnabled || typeof document.webkitSupportsPresentationMode === \"function\");\n },\n lazyPlayer: lazy(() => Promise.resolve({ default: FilePlayer }))\n }\n];\nvar players_default = players;\n\n// src/Player.tsx\nimport React2, { Component as Component3 } from \"react\";\nvar SEEK_ON_PLAY_EXPIRY = 5e3;\nvar Player = class extends Component3 {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.isReady = false;\n this.isPlaying = false;\n this.isLoading = true;\n this.loadOnReady = null;\n this.startOnPlay = true;\n this.seekOnPlay = null;\n this.onDurationCalled = false;\n this.handlePlayerMount = (player) => {\n if (this.player) {\n this.progress();\n return;\n }\n this.player = player;\n this.player.load(this.props.src);\n this.progress();\n };\n this.getInternalPlayer = (key) => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.progress = () => {\n if (this.props.src && this.player && this.isReady) {\n const playedSeconds = this.getCurrentTime() || 0;\n const loadedSeconds = this.getSecondsLoaded();\n const duration = this.getDuration();\n if (duration) {\n const progress = {\n playedSeconds,\n played: playedSeconds / duration,\n loaded: 0,\n loadedSeconds: 0\n };\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds;\n progress.loaded = loadedSeconds / duration;\n }\n if (progress.playedSeconds !== this.prevPlayed || progress.loadedSeconds !== this.prevLoaded) {\n this.props.onProgress?.(progress);\n }\n this.prevPlayed = progress.playedSeconds;\n this.prevLoaded = progress.loadedSeconds;\n }\n }\n this.progressTimeout = window.setTimeout(\n this.progress,\n this.props.progressInterval || 1e3\n );\n };\n this.handleReady = () => {\n if (!this.mounted) return;\n this.isReady = true;\n this.isLoading = false;\n const { onReady, playing, volume, muted } = this.props;\n onReady();\n if (!muted && volume !== null) {\n this.player.setVolume(volume);\n }\n if (this.loadOnReady) {\n this.player.load(this.loadOnReady, true);\n this.loadOnReady = null;\n } else if (playing) {\n this.player.play();\n }\n this.handleDurationCheck();\n };\n this.handlePlay = () => {\n this.isPlaying = true;\n this.isLoading = false;\n const { onStart, onPlay, playbackRate } = this.props;\n if (this.startOnPlay) {\n if (this.player.setPlaybackRate && playbackRate !== 1) {\n this.player.setPlaybackRate(playbackRate);\n }\n onStart?.();\n this.startOnPlay = false;\n }\n onPlay?.();\n if (this.seekOnPlay) {\n this.seekTo(this.seekOnPlay);\n this.seekOnPlay = null;\n }\n this.handleDurationCheck();\n };\n this.handlePause = (e) => {\n this.isPlaying = false;\n if (!this.isLoading) {\n this.props.onPause?.(e);\n }\n };\n this.handleEnded = () => {\n const { activePlayer, loop, onEnded } = this.props;\n if (activePlayer.loopOnEnded && loop) {\n this.seekTo(0);\n }\n if (!loop) {\n this.isPlaying = false;\n onEnded?.();\n }\n };\n this.handleError = (...args) => {\n this.isLoading = false;\n this.props.onError?.(args[0], args[1], args[2], args[3]);\n };\n this.handleDurationCheck = () => {\n clearTimeout(this.durationCheckTimeout);\n const duration = this.getDuration();\n if (duration) {\n if (!this.onDurationCalled) {\n this.props.onDuration?.(duration);\n this.onDurationCalled = true;\n }\n } else {\n this.durationCheckTimeout = window.setTimeout(\n this.handleDurationCheck,\n 100\n );\n }\n };\n this.handleLoaded = () => {\n this.isLoading = false;\n };\n }\n componentDidMount() {\n this.mounted = true;\n }\n componentWillUnmount() {\n clearTimeout(this.progressTimeout);\n clearTimeout(this.durationCheckTimeout);\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (!this.player) return;\n const { src, playing, volume, muted, playbackRate, loop, activePlayer } = this.props;\n if (prevProps.src !== src) {\n if (this.isLoading && !activePlayer.forceLoad && !isMediaStream(src)) {\n console.warn(\n `StormcloudPlayer: the attempt to load ${src} is being deferred until the player has loaded`\n );\n this.loadOnReady = src || null;\n return;\n }\n this.isLoading = true;\n this.startOnPlay = true;\n this.onDurationCalled = false;\n this.player.load(src, this.isReady);\n }\n if (!prevProps.playing && playing && !this.isPlaying) {\n this.player.play();\n }\n if (prevProps.playing && !playing && this.isPlaying) {\n this.player.pause();\n }\n if (prevProps.volume !== volume && volume !== null) {\n this.player.setVolume(volume);\n }\n if (prevProps.muted !== muted) {\n if (muted) {\n this.player.mute();\n } else {\n this.player.unmute();\n if (volume !== null) {\n setTimeout(() => this.player.setVolume(volume));\n }\n }\n }\n if (prevProps.playbackRate !== playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(playbackRate);\n }\n if (prevProps.loop !== loop && this.player.setLoop) {\n this.player.setLoop(loop);\n }\n }\n getDuration() {\n if (!this.isReady) return null;\n return this.player.getDuration();\n }\n getCurrentTime() {\n if (!this.isReady) return null;\n return this.player.getCurrentTime();\n }\n getSecondsLoaded() {\n if (!this.isReady) return null;\n return this.player.getSecondsLoaded();\n }\n seekTo(amount, type, keepPlaying) {\n if (!this.isReady) {\n if (amount !== 0) {\n this.seekOnPlay = amount;\n setTimeout(() => {\n this.seekOnPlay = null;\n }, SEEK_ON_PLAY_EXPIRY);\n }\n return;\n }\n const isFraction = !type ? amount > 0 && amount < 1 : type === \"fraction\";\n if (isFraction) {\n const duration = this.player.getDuration();\n if (!duration) {\n console.warn(\n \"StormcloudPlayer: could not seek using fraction \\u2013 duration not yet available\"\n );\n return;\n }\n this.player.seekTo(duration * amount, keepPlaying);\n return;\n }\n this.player.seekTo(amount, keepPlaying);\n }\n render() {\n const Player2 = this.props.activePlayer;\n if (!Player2) {\n return null;\n }\n return React2.createElement(Player2, {\n ...this.props,\n onMount: this.handlePlayerMount,\n onReady: this.handleReady,\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onEnded: this.handleEnded,\n onLoaded: this.handleLoaded,\n onError: this.handleError\n });\n }\n};\nPlayer.displayName = \"Player\";\nPlayer.defaultProps = defaultProps;\n\n// src/StormcloudPlayer.tsx\nvar IS_BROWSER2 = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL2 = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar UniversalSuspense = IS_BROWSER2 || IS_GLOBAL2 ? Suspense : () => null;\nvar SUPPORTED_PROPS = [\n \"src\",\n \"playing\",\n \"loop\",\n \"controls\",\n \"volume\",\n \"muted\",\n \"playbackRate\",\n \"width\",\n \"height\",\n \"style\",\n \"progressInterval\",\n \"playsInline\",\n \"autoplay\",\n \"preload\",\n \"poster\",\n \"className\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"allowNativeHls\",\n \"lowLatencyMode\",\n \"isLiveStream\",\n \"driftToleranceMs\",\n \"immediateManifestAds\",\n \"debugAdTiming\",\n \"showCustomControls\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"adFailsafeTimeoutMs\",\n \"minSegmentsBeforePlay\",\n \"ctvAdRequest\",\n \"onReady\",\n \"onStart\",\n \"onPlay\",\n \"onPause\",\n \"onBuffer\",\n \"onBufferEnd\",\n \"onEnded\",\n \"onError\",\n \"onDuration\",\n \"onSeek\",\n \"onProgress\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n];\nvar customPlayers = [];\nvar createStormcloudPlayer = (playerList, fallback) => {\n var _a;\n return _a = class extends Component4 {\n constructor() {\n super(...arguments);\n this.state = {\n showPreview: false\n };\n this.references = {\n wrapper: (wrapper) => {\n this.wrapper = wrapper;\n },\n player: (player) => {\n this.player = player;\n }\n };\n this.getActivePlayer = (src) => {\n if (!src) return null;\n for (const player of [...customPlayers, ...playerList]) {\n if (player.canPlay(src)) {\n return player;\n }\n }\n if (fallback) {\n return fallback;\n }\n return null;\n };\n this.getAttributes = (src) => {\n return omit(this.props, SUPPORTED_PROPS);\n };\n this.handleReady = () => {\n this.props.onReady?.(this);\n };\n this.seekTo = (fraction, type, keepPlaying) => {\n if (!this.player) return null;\n this.player.seekTo(fraction, type, keepPlaying);\n };\n this.getCurrentTime = () => {\n if (!this.player) return null;\n return this.player.getCurrentTime();\n };\n this.getSecondsLoaded = () => {\n if (!this.player) return null;\n return this.player.getSecondsLoaded();\n };\n this.getDuration = () => {\n if (!this.player) return null;\n return this.player.getDuration();\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.renderActivePlayer = (src) => {\n if (!src) return null;\n const activePlayer = this.getActivePlayer(src);\n if (!activePlayer) return null;\n return React3.createElement(Player, {\n ...this.props,\n key: activePlayer.key,\n ref: this.references.player,\n activePlayer: activePlayer.lazyPlayer || activePlayer,\n onReady: this.handleReady\n });\n };\n }\n render() {\n const {\n src,\n style,\n width,\n height,\n fallback: fallbackElement,\n wrapper: Wrapper\n } = this.props;\n const attributes = this.getAttributes(src);\n const wrapperRef = typeof Wrapper === \"string\" ? this.references.wrapper : void 0;\n return React3.createElement(\n Wrapper,\n {\n ref: wrapperRef,\n style: { ...style, width, height },\n ...attributes\n },\n React3.createElement(\n UniversalSuspense,\n { fallback: fallbackElement },\n this.renderActivePlayer(src)\n )\n );\n }\n }, _a.displayName = \"StormcloudPlayer\", _a.defaultProps = {\n ...defaultProps,\n fallback: null,\n wrapper: \"div\"\n }, _a.addCustomPlayer = (player) => {\n customPlayers.push(player);\n }, _a.removeCustomPlayers = () => {\n customPlayers.length = 0;\n }, _a.canPlay = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canPlay(src)) {\n return true;\n }\n }\n return false;\n }, _a.canEnablePIP = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canEnablePIP && Player2.canEnablePIP(src)) {\n return true;\n }\n }\n return false;\n }, _a;\n};\nvar StormcloudPlayer = createStormcloudPlayer(\n players_default,\n players_default[players_default.length - 1]\n);\nvar StormcloudPlayer_default = StormcloudPlayer;\nexport {\n DEFAULT_TRACKING_INGEST_CONFIG,\n IS_BROWSER,\n IS_GLOBAL,\n IS_IOS,\n IS_SAFARI,\n SUPPORTS_DASH,\n SUPPORTS_HLS,\n StormcloudPlayer_default as StormcloudPlayer,\n StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig,\n buildAnalyticsContext,\n canPlay,\n configureTrackingIngest,\n createHlsAdPlayer,\n createPalNonceManager,\n createStormcloudPlayer,\n StormcloudVideoPlayerComponent as default,\n detectBrowser,\n getBrowserConfigOverrides,\n getBrowserID,\n getClientInfo,\n ingestPlayerTracking,\n initializePolyfills,\n isMediaStream,\n isTrackingIngestEnabled,\n lazy,\n logBrowserInfo,\n merge,\n omit,\n parseQuery,\n players_default as players,\n randomString,\n requiresMediaPipelineResetAfterAds,\n sendAdDetectTracking,\n sendAdImpressionTracking,\n sendAdLoadedTracking,\n sendHeartbeat,\n sendInitialTracking,\n supportsFeature,\n supportsModernJS,\n supportsWebKitPresentationMode,\n trackingIngestConfig\n};\n"]}
|