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/lib/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\index.cjs"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","name","all","target","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","index_exports","DEFAULT_TRACKING_INGEST_CONFIG","IS_BROWSER","IS_GLOBAL","IS_IOS","IS_SAFARI","SUPPORTS_DASH","SUPPORTS_HLS","StormcloudPlayer","StormcloudPlayer_default","StormcloudVideoPlayer","StormcloudVideoPlayerComponent","applyTrackingIngestConfig","buildAnalyticsContext","canPlay","createPalNonceManager","createStormcloudPlayer","configureTrackingIngest","createHlsAdPlayer","default","detectBrowser","getBrowserConfigOverrides","getBrowserID","getClientInfo","ingestPlayerTracking","initializePolyfills","isMediaStream","isTrackingIngestEnabled","lazy","logBrowserInfo","merge","omit","parseQuery","players","players_default","randomString","requiresMediaPipelineResetAfterAds","sendAdDetectTracking","sendAdImpressionTracking","sendAdLoadedTracking","sendHeartbeat","sendInitialTracking","supportsFeature","supportsModernJS","supportsWebKitPresentationMode","trackingIngestConfig","module","exports","import_react","require","import_hls","getChromeVersion","ua","match","parseInt","getWebKitVersion","getPlatform","navigator","userAgentData","platform","userAgent","test","version","majorVersion","isSmartTV","isLegacyTV","supportsModernJS2","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","parts","split","toString","Promise","Map","Set","URLSearchParams","browser","overrides","allowNativeHls","pauseContentDuringAds","Array","assign","forEach","String","includes","debug","console","log","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","set","values","adPlayhead","adPlayheadSeconds","contentPlayheadSeconds","assetUri","mediaMime","Date","toISOString","errorCode","playerWidth","playerHeight","limitAdTracking","round","deviceId","deviceIdType","pageUrl","URL","hostname","clientUa","podSequence","adServingId","reason","substituteVastTrackingMacros","url","offset","trim","replace","encodeURIComponent","has","LINEAR_TRACKING_EVENTS","textOf","el","textContent","parseVastTime","length","map","p","parseFloat","h","m","s","every","n","parseProgressOffset","trimmed","endsWith","percent","offsetPercent","offsetSeconds","MAX_VAST_WRAPPER_DEPTH","BEACON_TIMEOUT_MS","inFlightBeacons","VAST_ERROR_MEDIA_DISPLAY","toVastMediaErrorCode","error","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","adPlaying","originalMutedState","originalVolume","max","min","contentVideo","volume","listeners","mainHlsInstance","options","AD_CONTAINER_PROP","AD_VIDEO_PROP","adEventHandlers","stallWatchdogId","sawDecodedVideoFrame","videoFrameCallbackHandle","RVFC_RELIABLE_PROP","adVideoElement","adHls","containerHandlers","currentAd","currentAdMediaFile","podAds","podIndex","preloadedAds","destroyed","pendingTimeouts","STALL_TIMEOUT_MS","STALL_CHECK_INTERVAL_MS","lastAdProgressTime","lastAdProgressPosition","createTrackingState","impression","loaded","start","firstQuartile","thirdQuartile","complete","viewabilitySettled","progressFired","trackingFired","resolvedAds","viewObserver","visibleRatio","continuousVisibleS","lastPlayerExpanded","documentHandlers","emit","event","payload","options2","buildTrackingMacroContext","context","macroContext","urls","fn","warn","ad","currentTime","type","clientWidth","adContainerEl","clientHeight","location","href","trackingUrl","add","img","timeoutId","onload","clearTimeout","delete","release","onerror","setTimeout","src","getMainStreamQuality","levels","currentLevel","autoLevel","loadLevel","level2","width","height","bitrate","level","selectBestMediaFile","mediaFiles","Error","firstFile","mainQuality","scoredFiles","file","widthDiff","abs","heightDiff","resolutionDiff","fileBitrate","score","bitrateDiff","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","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","rules","followAdditionalWrappers","inLine","files","candidate","trackingUrls","id","title","duration","clickThrough","fetchVastXml","vastTagUrl","credentials","requestVast","response","creds","mode","headers","referrerPolicy","ok","statusText","text","fetchAndParseVastAd","depth","accumulatedTracking","vastXml","fireTrackingPixels","fetchAndParsePod","trimmedXml","empty","resolveAd","podElements","buffet","ads","substring","filter","shift","createAdVideoElement","video","document","createElement","style","position","left","top","objectFit","backgroundColor","playsInline","muted","setupAdEventListeners","onTimeUpdate","noteAdProgress","sampleViewability","threshold","midpoint","onLoadedMetadata","videoWidth","videoHeight","handleVideoDecodeFailure","onCanPlay","onPlaying","startStallWatchdog","creativeView","adId","lastMuted","onEnded","settleViewability","advanceToNextPodAd","handleAdComplete","onError","e","reportCurrentAdError","handleAdError","onVolumeChange","mute","unmute","isTrackablePlayback","ended","onPause","pause","onPlay","handler","addEventListener","teardownAdEventListeners","removeEventListener","handleAdClick","window","open","fireNotUsedForUnplayedAds","notUsed","now","inView","visibilityState","paused","lastViewSampleTime","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","pendingPlayPromise","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","FRAME_COUNTER_RELIABLE_PROP","markFrameCounterReliable","isRvfcReliable","markRvfcReliable","cancelVideoFrameCallback","startVideoFrameProbe","rvfc","onPresentedFrame","blackFrameDetectionEnabled","setInterval","decodedFrames","BLACKFRAME_MIN_PLAYBACK_S","timeAdvancing","releaseAdDecoder","display","pointerEvents","visibility","opacity","continueLiveStreamDuringAds","initialize","container","right","bottom","alignItems","justifyContent","zIndex","parentElement","requestAds","preloaded","reject","resolve","contentVolume","resume","stop","previousMutedState","clear","preloadingAds","isAdPlaying","resize","updateOriginalMutedState","getOriginalMutedState","off","listener","nextVolume","isNaN","setAdVolume","clamped","getAdVolume","hidePlaceholder","getLoadedAdDuration","getLoadedAdId","getPodAdCount","getPodTotalDurationMs","reduce","host","isLocalDevHost","PRIVATE_HOST_PATTERNS","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","currentNonce","currentNonceManager","loader","request","NonceRequest","adWillPlayMuted","playerVolume","continuousPlayback","descriptionUrl","playerType","playerVersion","supportedApiFrameworks","ppid","sessionId","JSON","stringify","adWillAutoPlay","iconsSupported","loadNonceManager","manager","getNonce","getCurrentNonce","injectNonce","searchParams","base","sep","sendPlaybackStart","sendPlaybackEnd","sendAdClick","sendAdTouch","reset","enabled","baseUrl","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","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","readPersistentId","storageKey","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","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","config","debugAdTiming","isLiveStream","inputStreamType","screen","vendor","memory","deviceMemory","hardwareConcurrency","screenInfo","availWidth","availHeight","orientation","pixelDepth","deviceType","brand","os","model","isAndroid","isWebApp","webosMatch","tizenMatch","tvMatch","androidModelMatch","language","isWebView","outerHeight","outerWidth","matchMedia","matches","standalone","angle","domain","origin","path","languages","join","cookieEnabled","doNotTrack","referrer","sha256Hex","input","encodedData","utf8","buffer","hashBuffer","hash","char","fallbackHash","timestamp","digest","unescape","charCodeAt","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","player_id","device_type","ad_detect","adDetect","capture_at","input_stream_type","metricEvent","adLoaded","events","adDetectInfo","adLoadedInfo","adImpressionInfo","ad_url","adUrl","init","heartbeatData","URLSearchParamsPolyfill","params","parseQueryString","append","query","str","cleanQuery","param","decodedKey","safeDecodeURIComponent","decodedValue","getAll","callback","polyfillTextEncoder","TextEncoderPolyfill","encoding","encode","charcode","polyfillPromiseFinally","constructor","then","polyfillObjectAssign","sources","TypeError","nextSource","nextKey","polyfillArrayFrom","arrayLike","mapFn","items","len","polyfillStringStartsWith","search","pos","polyfillStringEndsWith","polyfillStringIncludes","polyfillURLSearchParams","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","_value","toDelete","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","tcData","success","settled","eventStatus","storageAllowed","gdprApplies","purpose","consents","tcString","listenerId","uspApi","__uspapi","uspString","parseCueOutDuration","num","dStr","d","parseCueOutCont","res","elapsedMatch","durationMatch","elapsed","slashMatch","parseAttributeList","attrs","regex","rawVal","toNumber","isManifestBasedMarker","marker","id3","splice_command_type","decodeId3ValueToText","decoder","decode","out","TextDecoder","fromCharCode","getFragmentStartSeconds","frag","startPTS","candidates","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","pointerField","sectionStart","getPsiSectionLength","parsePatSection","payloadUnitStart","pmtPids","sectionEnd","programNumber","pid","descriptorsIdentifyScte35","end","descriptorStart","descriptorEnd","registration","parsePmtSection","tsScte35Pids","getPsiSectionStart","sectionLength","programInfoLength","streamType","elementaryPid","esInfoLength","hasProcessedTsScte35Section","section","processedSections","checksum","size","firstKey","addScte35SectionMarker","markers","appendScte35Bytes","assemblers","assembler","expectedLength","collectScte35SectionsFromPayload","previousAssembler","subarray","tableId","totalLength","parseScte35FromTsPackets","packetInfo","sectionAssemblers","tsStart","secondByte","fourthByte","thirdByte","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","descriptorDataEnd","descriptorDataStart","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","recentKey","scteValue","isStrongScte35CueKey","next","AdConfigManager","vmapBreaks","consumedVmapBreakIds","viewCorrelator","consentSignals","podCounter","podAssignedByPrefetch","lastHeartbeatTime","defaultPodMaxAds","defaultPodMaxDurationMs","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","vastMode","vastEndpoint","apiUrl","imaPayload","decodedPayload","numberAds","fetchAndParseVmap","apiVastTagUrl","apiNumberAds","json","ima","vast","cue_tones","number_ads","vmapXml","localName","parseVmapToBreaks","doc","VMAP_NS","adBreakNodes","getElementsByTagNameNS","node","timeOffsetRaw","startTimeMs","parseVmapTimeOffsetToMs","adTagNode","adTagUrl","breakId","ratio","getAdBreakKey","aStart","bStart","timeOffset","hms","hours","minutes","millis","durationSec","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","temporaryFailureUrls","temporaryFailureCooldownMs","globalConsecutiveNoFills","globalMinGamIntervalMs","globalNoFillThreshold","globalNoFillCooldownUntil","globalNoFillBackoffBaseMs","globalLastGamRequestTime","scheduleAdStopCountdown","remainingMs","clearAdStopTimer","ensureAdStoppedByTimer","adStopTimerId","onAdStopTimerFired","scheduleAdStartIn","delayMs","cueKey","clearAdStartTimer","onAdStartTimerFired","adStartTimerId","updatePtsDrift","ptsSecondsSample","sampleMs","alpha","resolveScteBreakStartWallClockMs","nowWallClockMs","deltaMs","estimatedCurrentPtsMs","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","globalNoFillBackoffMaxMs","resetGamNoFillCounter","enforceGlobalRateLimit","waitMs","startAdRequestWatchdog","token","clearAdRequestWatchdog","adFailsafeTimeoutMs","adRequestWatchdogId","logAdState","onWatchdogTimeout","startAdFailsafeTimer","clearAdFailsafeTimer","failsafeMs","adFailsafeTimerId","videoPaused","onFailsafeTimeout","extra","getAdState","showAds","resetForBreakEnd","PlaceholderLayer","ensureContainer","transition","wasHidden","offsetHeight","requestAnimationFrame","hide","removeChild","import_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","onManifestParsed","live","detectedLowLatencyStream","minSegmentsBeforePlay","LEVEL_LOADED","_evt","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","recoverMediaError","onFatalDestroy","isLowLatencyStream","applyStreamLatencyProfile","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","canBlockReload","partTarget","partListLength","partList","targetDuration","targetduration","hasPartTarget","hasPartHoldBack","partHoldBack","hasParts","payloadData","getLiveSyncPosition","liveSyncPosition","restartLoadAt","stopLoad","reloadLiveStream","detachMedia","requestFullscreen","setMuted","setVolume","clampedVolume","isFullscreen","AdBreakOrchestrator","adConfig","placeholder","isShowingPlaceholder","adDetectSentForCurrentBreak","continuousFetchingActive","continuousFetchLoopRunning","adRequestQueue","adPodQueue","maxPlaceholderDurationMs","pendingAdBreak","nextAdRequestUrl","baseVastUrl","remaining","attachImaEventListeners","getAdPlayer","onAdClick","onAdInteraction","adIndex","analyticsContext","queuedUrls","tryNextAvailableAdWithRateLimit","handleAdPodComplete","errorPayload","errorMessage","code","vastErrorCode","cause","innerError","causeMessage","handleAdFailure","getAdAudioVolume","recreateAdController","shouldShowPlaceholder","show","showPlaceholder","preservedMutedState","preservedVolumeState","getOriginalVolume","shouldContinueLiveStreamDuringAds","newAdPlayer","createAdPlayer","setAdPlayer","clearPendingAdBreak","prefetchTimerId","handleAdStart","_marker","tags","adBreakDurationMs","currentMuted","currentVolume","podPlayed","scheduled","failedVastUrls","startOptimizedPod","startContinuousFetching","requestToken","podCount","vastUrls","podUrl","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","needsReset","maxRecoveries","pollIntervalMs","recoveryCooldownMs","maxMonitorMs","recoveries","listenersAttached","onMediaEvent","diagEvents","dt","startTime","cleanup","poll","advanced","baseline","playing","bufferedAhead","wedged","canRecover","graceMs","lastRecoveryAt","reloadPos","attempt","maxAttempts","onReady","backoffMs","playResult","attached","palPlaybackStarted","browserOverrides","videoElement","startAdPrefetch","startScte35AdBreak","hlsEngine","c","palDescriptionUrl","attach","generateNonce","offsetWidth","prerollKey"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n DEFAULT_TRACKING_INGEST_CONFIG: () => DEFAULT_TRACKING_INGEST_CONFIG,\n IS_BROWSER: () => IS_BROWSER,\n IS_GLOBAL: () => IS_GLOBAL,\n IS_IOS: () => IS_IOS,\n IS_SAFARI: () => IS_SAFARI,\n SUPPORTS_DASH: () => SUPPORTS_DASH,\n SUPPORTS_HLS: () => SUPPORTS_HLS,\n StormcloudPlayer: () => StormcloudPlayer_default,\n StormcloudVideoPlayer: () => StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent: () => StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig: () => applyTrackingIngestConfig,\n buildAnalyticsContext: () => buildAnalyticsContext,\n canPlay: () => canPlay,\n configureTrackingIngest: () => configureTrackingIngest,\n createHlsAdPlayer: () => createHlsAdPlayer,\n createPalNonceManager: () => createPalNonceManager,\n createStormcloudPlayer: () => createStormcloudPlayer,\n default: () => StormcloudVideoPlayerComponent,\n detectBrowser: () => detectBrowser,\n getBrowserConfigOverrides: () => getBrowserConfigOverrides,\n getBrowserID: () => getBrowserID,\n getClientInfo: () => getClientInfo,\n ingestPlayerTracking: () => ingestPlayerTracking,\n initializePolyfills: () => initializePolyfills,\n isMediaStream: () => isMediaStream,\n isTrackingIngestEnabled: () => isTrackingIngestEnabled,\n lazy: () => lazy,\n logBrowserInfo: () => logBrowserInfo,\n merge: () => merge,\n omit: () => omit,\n parseQuery: () => parseQuery,\n players: () => players_default,\n randomString: () => randomString,\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds,\n sendAdDetectTracking: () => sendAdDetectTracking,\n sendAdImpressionTracking: () => sendAdImpressionTracking,\n sendAdLoadedTracking: () => sendAdLoadedTracking,\n sendHeartbeat: () => sendHeartbeat,\n sendInitialTracking: () => sendInitialTracking,\n supportsFeature: () => supportsFeature,\n supportsModernJS: () => supportsModernJS,\n supportsWebKitPresentationMode: () => supportsWebKitPresentationMode,\n trackingIngestConfig: () => trackingIngestConfig\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// src/ui/StormcloudVideoPlayer.tsx\nvar import_react = __toESM(require(\"react\"), 1);\n\n// src/sdk/hlsAdPlayer.ts\nvar import_hls = __toESM(require(\"hls.js\"), 1);\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 && import_hls.default.isSupported()) {\n if (adHls) {\n adHls.destroy();\n }\n adHls = new import_hls.default({\n enableWorker: true,\n lowLatencyMode: false\n });\n adHls.loadSource(mediaFile.url);\n adHls.attachMedia(adVideoElement);\n adHls.on(import_hls.default.Events.MANIFEST_PARSED, () => {\n console.log(\"[HlsAdPlayer] HLS manifest parsed, starting playback\");\n startAdPlayback(\"HLS ad playback\");\n });\n adHls.on(import_hls.default.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\nvar import_hls2 = __toESM(require(\"hls.js\"), 1);\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 import_hls2.default({\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(import_hls2.default.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(import_hls2.default.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(import_hls2.default.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(import_hls2.default.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(import_hls2.default.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(import_hls2.default.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(import_hls2.default.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(import_hls2.default.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(import_hls2.default.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case import_hls2.default.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case import_hls2.default.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\nvar import_fa = require(\"react-icons/fa\");\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar ExpandIcon = ({ size = 18 }) => /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M9 4H4v5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M20 9V4h-5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M15 20h5v-5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M4 15v5h5\" })\n ]\n }\n);\nvar CompressIcon = ({ size = 18 }) => /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M4 9h5V4\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M15 4v5h5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M20 15h-5v5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.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 = import_react.default.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 = (0, import_react.useRef)(null);\n const playerRef = (0, import_react.useRef)(null);\n const bufferingTimeoutRef = (0, import_react.useRef)(null);\n const controlsTimerRef = (0, import_react.useRef)(null);\n const wrapperRef = (0, import_react.useRef)(null);\n const [adStatus, setAdStatus] = import_react.default.useState({ showAds: false, currentIndex: 0, totalAds: 0, remainingSeconds: 0 });\n const [shouldShowNativeControls, setShouldShowNativeControls] = import_react.default.useState(true);\n const [isMuted2, setIsMuted] = import_react.default.useState(false);\n const [isFullscreen2, setIsFullscreen] = import_react.default.useState(false);\n const [isPlaying, setIsPlaying] = import_react.default.useState(false);\n const [currentTime, setCurrentTime] = import_react.default.useState(0);\n const [duration, setDuration] = import_react.default.useState(0);\n const [volume, setVolume2] = import_react.default.useState(1);\n const [playbackRate, setPlaybackRate] = import_react.default.useState(1);\n const [showVolumeSlider, setShowVolumeSlider] = import_react.default.useState(false);\n const [showSpeedMenu, setShowSpeedMenu] = import_react.default.useState(false);\n const [isLoading, setIsLoading] = import_react.default.useState(true);\n const [isBuffering, setIsBuffering] = import_react.default.useState(false);\n const [showCenterPlay, setShowCenterPlay] = import_react.default.useState(false);\n const [showLicenseWarning, setShowLicenseWarning] = import_react.default.useState(false);\n const [controlsVisible, setControlsVisible] = import_react.default.useState(true);\n const [viewportWidth, setViewportWidth] = import_react.default.useState(\n typeof window !== \"undefined\" ? window.innerWidth : 1920\n );\n const [isPortrait, setIsPortrait] = import_react.default.useState(\n typeof window !== \"undefined\" ? window.innerHeight > window.innerWidth : false\n );\n const [playerAspectRatio, setPlayerAspectRatio] = import_react.default.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 = (0, import_react.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 = (0, import_react.useCallback)(() => {\n resetControlsTimer();\n }, [resetControlsTimer]);\n const handleWrapperMouseLeave = (0, import_react.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 = (0, import_react.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 (0, import_react.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 (0, import_react.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 (0, import_react.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 (0, import_react.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 (0, import_react.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 (0, import_react.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 (0, import_react.useEffect)(() => {\n setPlayerAspectRatio(DEFAULT_PLAYER_ASPECT_RATIO);\n }, [src]);\n (0, import_react.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 ? import_fa.FaVolumeMute : volume < 0.5 ? import_fa.FaVolumeDown : import_fa.FaVolumeUp;\n return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { fontSize: \"18px\", fontWeight: \"700\", marginBottom: \"10px\", letterSpacing: \"-0.02em\" }, children: \"License Key Required\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(\"br\", {}),\n \"Contact your administrator for licensing information.\"\n ] })\n ]\n }\n ),\n adStatus.showAds && /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(\n import_fa.FaPlay,\n {\n size: Math.max(24, 32 * responsiveScale),\n color: \"white\",\n style: { marginLeft: \"4px\" }\n }\n )\n }\n ),\n shouldShowEnhancedControls && !showLicenseWarning ? /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(import_fa.FaPause, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaPlay, { size: Math.max(14, 18 * responsiveScale), style: { marginLeft: \"2px\" } })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(\"span\", { style: { color: \"rgba(255,255,255,0.5)\" }, children: \"/\" }),\n \" \",\n formatTime(duration)\n ]\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\"div\", { style: { position: \"relative\", display: viewportWidth < 600 ? \"none\" : \"block\" }, children: [\n /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ]\n }\n )\n ]\n }\n ) : showCustomControls && !showLicenseWarning && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ] }),\n onControlClick && /* @__PURE__ */ (0, import_jsx_runtime.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\nvar import_react6 = __toESM(require(\"react\"), 1);\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\nvar import_react2 = require(\"react\");\nvar lazy = import_react2.lazy;\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\nvar import_react3 = require(\"react\");\nvar HlsPlayer = class extends import_react3.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\nvar import_react4 = require(\"react\");\nvar FilePlayer = class extends import_react4.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.ready = false;\n this.load = () => {\n if (!this.props.videoElement || !this.props.src) return;\n const video = this.props.videoElement;\n const handleLoadedMetadata = () => {\n if (this.mounted && !this.ready) {\n this.ready = true;\n this.props.onReady?.();\n }\n };\n const handlePlay = () => {\n if (this.mounted) {\n this.props.onPlay?.();\n }\n };\n const handlePause = () => {\n if (this.mounted) {\n this.props.onPause?.();\n }\n };\n const handleEnded = () => {\n if (this.mounted) {\n this.props.onEnded?.();\n }\n };\n const handleError = (error) => {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n };\n const handleLoadedData = () => {\n if (this.mounted) {\n this.props.onLoaded?.();\n }\n };\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"play\", handlePlay);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n video.addEventListener(\"error\", handleError);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.src = this.props.src;\n if (this.props.autoplay !== void 0) video.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) video.muted = this.props.muted;\n if (this.props.loop !== void 0) video.loop = this.props.loop;\n if (this.props.controls !== void 0) video.controls = this.props.controls;\n if (this.props.playsInline !== void 0)\n video.playsInline = this.props.playsInline;\n if (this.props.preload !== void 0)\n video.preload = this.props.preload;\n if (this.props.poster !== void 0) video.poster = this.props.poster;\n this.props.onMount?.(this);\n return () => {\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"play\", handlePlay);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n video.removeEventListener(\"error\", handleError);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n };\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[FilePlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n } else {\n console.warn(\"[FilePlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.setLoop = (loop) => {\n if (this.props.videoElement) {\n this.props.videoElement.loop = loop;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"video\") return this.props.videoElement;\n return null;\n };\n this.enablePIP = async () => {\n if (this.props.videoElement && \"requestPictureInPicture\" in this.props.videoElement) {\n try {\n await this.props.videoElement.requestPictureInPicture();\n } catch (error) {\n console.warn(\"Picture-in-Picture failed:\", error);\n }\n }\n };\n this.disablePIP = async () => {\n if (document.pictureInPictureElement) {\n try {\n await document.exitPictureInPicture();\n } catch (error) {\n console.warn(\"Exit Picture-in-Picture failed:\", error);\n }\n }\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nFilePlayer.displayName = \"FilePlayer\";\nFilePlayer.canPlay = canPlay.file;\n\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\nvar import_react5 = __toESM(require(\"react\"), 1);\nvar SEEK_ON_PLAY_EXPIRY = 5e3;\nvar Player = class extends import_react5.Component {\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 import_react5.default.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 ? import_react6.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 import_react6.Component {\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 import_react6.default.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 import_react6.default.createElement(\n Wrapper,\n {\n ref: wrapperRef,\n style: { ...style, width, height },\n ...attributes\n },\n import_react6.default.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;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\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,\n StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig,\n buildAnalyticsContext,\n canPlay,\n configureTrackingIngest,\n createHlsAdPlayer,\n createPalNonceManager,\n createStormcloudPlayer,\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,\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.cjs"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","name","all","target","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","index_exports","DEFAULT_TRACKING_INGEST_CONFIG","IS_BROWSER","IS_GLOBAL","IS_IOS","IS_SAFARI","SUPPORTS_DASH","SUPPORTS_HLS","StormcloudPlayer","StormcloudPlayer_default","StormcloudVideoPlayer","StormcloudVideoPlayerComponent","applyTrackingIngestConfig","buildAnalyticsContext","canPlay","createPalNonceManager","createStormcloudPlayer","configureTrackingIngest","createHlsAdPlayer","default","detectBrowser","getBrowserConfigOverrides","getBrowserID","getClientInfo","ingestPlayerTracking","initializePolyfills","isMediaStream","isTrackingIngestEnabled","lazy","logBrowserInfo","merge","omit","parseQuery","players","players_default","randomString","requiresMediaPipelineResetAfterAds","sendAdDetectTracking","sendAdImpressionTracking","sendAdLoadedTracking","sendHeartbeat","sendInitialTracking","supportsFeature","supportsModernJS","supportsWebKitPresentationMode","trackingIngestConfig","module","exports","import_react","require","import_hls","getChromeVersion","ua","match","parseInt","getWebKitVersion","getPlatform","navigator","userAgentData","platform","userAgent","test","version","majorVersion","isSmartTV","isLegacyTV","supportsModernJS2","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","parts","split","toString","Promise","Map","Set","URLSearchParams","browser","overrides","allowNativeHls","pauseContentDuringAds","Array","assign","forEach","String","includes","debug","console","log","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","set","values","adPlayhead","adPlayheadSeconds","contentPlayheadSeconds","assetUri","mediaMime","Date","toISOString","errorCode","playerWidth","playerHeight","limitAdTracking","round","deviceId","deviceIdType","pageUrl","URL","hostname","clientUa","podSequence","adServingId","reason","substituteVastTrackingMacros","url","offset","trim","replace","encodeURIComponent","has","LINEAR_TRACKING_EVENTS","textOf","el","textContent","parseVastTime","length","map","p","parseFloat","h","m","s","every","n","parseProgressOffset","trimmed","endsWith","percent","offsetPercent","offsetSeconds","MAX_VAST_WRAPPER_DEPTH","BEACON_TIMEOUT_MS","inFlightBeacons","VAST_ERROR_MEDIA_DISPLAY","toVastMediaErrorCode","error","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","adPlaying","originalMutedState","originalVolume","max","min","contentVideo","volume","listeners","mainHlsInstance","options","AD_CONTAINER_PROP","AD_VIDEO_PROP","adEventHandlers","stallWatchdogId","sawDecodedVideoFrame","videoFrameCallbackHandle","RVFC_RELIABLE_PROP","adVideoElement","adHls","containerHandlers","currentAd","currentAdMediaFile","podAds","podIndex","preloadedAds","destroyed","pendingTimeouts","STALL_TIMEOUT_MS","STALL_CHECK_INTERVAL_MS","lastAdProgressTime","lastAdProgressPosition","createTrackingState","impression","loaded","start","firstQuartile","thirdQuartile","complete","viewabilitySettled","progressFired","trackingFired","resolvedAds","viewObserver","visibleRatio","continuousVisibleS","lastPlayerExpanded","documentHandlers","emit","event","payload","options2","buildTrackingMacroContext","context","macroContext","urls","fn","warn","ad","currentTime","type","clientWidth","adContainerEl","clientHeight","location","href","trackingUrl","add","img","timeoutId","onload","clearTimeout","delete","release","onerror","setTimeout","src","getMainStreamQuality","levels","currentLevel","autoLevel","loadLevel","level2","width","height","bitrate","level","selectBestMediaFile","mediaFiles","Error","firstFile","mainQuality","scoredFiles","file","widthDiff","abs","heightDiff","resolutionDiff","fileBitrate","score","bitrateDiff","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","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","rules","followAdditionalWrappers","inLine","files","candidate","trackingUrls","id","title","duration","clickThrough","fetchVastXml","vastTagUrl","credentials","requestVast","response","creds","mode","headers","referrerPolicy","ok","statusText","text","fetchAndParseVastAd","depth","accumulatedTracking","vastXml","fireTrackingPixels","fetchAndParsePod","trimmedXml","empty","resolveAd","podElements","buffet","ads","substring","filter","shift","createAdVideoElement","video","document","createElement","style","position","left","top","objectFit","backgroundColor","playsInline","muted","setupAdEventListeners","onTimeUpdate","noteAdProgress","sampleViewability","threshold","midpoint","onLoadedMetadata","videoWidth","videoHeight","handleVideoDecodeFailure","onCanPlay","onPlaying","startStallWatchdog","creativeView","adId","lastMuted","onEnded","settleViewability","advanceToNextPodAd","handleAdComplete","onError","e","reportCurrentAdError","handleAdError","onVolumeChange","mute","unmute","isTrackablePlayback","ended","onPause","pause","onPlay","handler","addEventListener","teardownAdEventListeners","removeEventListener","handleAdClick","window","open","fireNotUsedForUnplayedAds","notUsed","now","inView","visibilityState","paused","lastViewSampleTime","handleFullscreenChange","fullscreenEl","fullscreenElement","webkitFullscreenElement","expanded","contains","fullscreen","playerExpand","exitFullscreen","playerCollapse","attachContainerHandlers","onClick","onInteraction","onFullscreenChange","entry","entries","IntersectionObserver","isIntersecting","intersectionRatio","observe","detachContainerHandlers","disconnect","setAdPlayingFlag","isPlaying","dataset","stormcloudAdPlaying","resetAdTracking","isRvfcSupported","requestVideoFrameCallback","settlePendingPlay","pendingPlayPromise","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","FRAME_COUNTER_RELIABLE_PROP","markFrameCounterReliable","isRvfcReliable","markRvfcReliable","cancelVideoFrameCallback","startVideoFrameProbe","rvfc","onPresentedFrame","blackFrameDetectionEnabled","setInterval","decodedFrames","BLACKFRAME_MIN_PLAYBACK_S","timeAdvancing","releaseAdDecoder","display","pointerEvents","continueLiveStreamDuringAds","visibility","opacity","initialize","container","right","bottom","alignItems","justifyContent","zIndex","parentElement","requestAds","preloaded","reject","resolve","contentVolume","resume","stop","previousMutedState","resize","clear","preloadingAds","isAdPlaying","listener","nextVolume","off","updateOriginalMutedState","isNaN","getOriginalVolume","clamped","setAdVolume","showPlaceholder","hidePlaceholder","getLoadedAdDuration","getPodAdCount","getPodTotalDurationMs","PRIVATE_HOST_PATTERNS","isLocalDevHost","host","some","pattern","toDevSafeUrl","rawUrl","protocol","cleanPath","pathname","PAL_SDK_URL","_nonceLoader","_nonceLoaderAllowStorage","_palLoadPromise","loadPalSdk","goog","pal","existing","timeout","script","setAttribute","getOrCreateNonceLoader","allowStorage","consentSettings","ConsentSettings","NonceLoader","currentNonceManager","generateNonce","loader","request","manager","NonceRequest","adWillAutoPlay","adWillPlayMuted","playerVolume","continuousPlayback","descriptionUrl","iconsSupported","playerType","playerVersion","supportedApiFrameworks","ppid","sessionId","JSON","stringify","loadNonceManager","currentNonce","getNonce","getCurrentNonce","injectNonce","searchParams","base","sep","sendPlaybackStart","sendPlaybackEnd","sendAdClick","sendAdTouch","reset","enabled","baseUrl","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","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","config","debugAdTiming","isLiveStream","inputStreamType","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","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","metricEvent","events","adDetectInfo","adLoadedInfo","adImpressionInfo","ad_played_count","ad_url","adUrl","cleanQuery","heartbeatData","polyfillURLSearchParams","URLSearchParamsPolyfill","init","params","parseQueryString","query","param","decodedKey","safeDecodeURIComponent","decodedValue","str","append","getAll","callback","polyfillTextEncoder","TextEncoderPolyfill","encoding","charcode","polyfillPromiseFinally","constructor","then","polyfillObjectAssign","sources","TypeError","nextSource","nextKey","polyfillArrayFrom","arrayLike","mapFn","items","len","polyfillStringStartsWith","search","pos","polyfillStringEndsWith","polyfillStringIncludes","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","getValue","correlator","isMacroPlaceholder2","UNEXPANDED_MACRO_PATTERN","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","tcData","success","settled","eventStatus","storageAllowed","gdprApplies","purpose","consents","tcString","listenerId","uspApi","__uspapi","uspString","parseCueOutDuration","num","dStr","d","parseCueOutCont","res","elapsedMatch","durationMatch","elapsed","slashMatch","parseAttributeList","attrs","regex","rawVal","toNumber","isManifestBasedMarker","marker","id3","splice_command_type","decodeId3ValueToText","decoder","decode","out","TextDecoder","fromCharCode","getFragmentStartSeconds","frag","startPTS","candidates","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","pointerField","sectionStart","getPsiSectionLength","parsePatSection","payloadUnitStart","pmtPids","sectionEnd","programNumber","pid","descriptorsIdentifyScte35","end","descriptorStart","descriptorEnd","registration","parsePmtSection","tsScte35Pids","getPsiSectionStart","sectionLength","programInfoLength","streamType","elementaryPid","esInfoLength","hasProcessedTsScte35Section","section","processedSections","checksum","size","firstKey","addScte35SectionMarker","markers","appendScte35Bytes","assemblers","assembler","expectedLength","collectScte35SectionsFromPayload","previousAssembler","subarray","tableId","totalLength","parseScte35FromTsPackets","packetInfo","sectionAssemblers","tsStart","secondByte","fourthByte","thirdByte","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","descriptorDataEnd","descriptorDataStart","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","next","AdConfigManager","vmapBreaks","consumedVmapBreakIds","consentSignals","podCounter","podAssignedByPrefetch","lastHeartbeatTime","defaultPodMaxAds","defaultPodMaxDurationMs","viewCorrelator","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","fetchAndParseVmap","vastMode","vastEndpoint","apiVastTagUrl","apiUrl","json","imaPayload","ima","decodedPayload","numberAds","vast","cue_tones","number_ads","apiNumberAds","parseVmapToBreaks","adBreakNodes","vmapXml","doc","VMAP_NS","getElementsByTagName","localName","node","timeOffsetRaw","startTimeMs","parseVmapTimeOffsetToMs","adTagNode","getElementsByTagNameNS","adTagUrl","millis","breakId","aStart","bStart","timeOffset","hms","hours","minutes","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","getOriginalMutedState","envSignals","ctvAdRequest","urlWithMacros","autoplay","finalUrl","initializeTracking","heartbeatInterval","sendHeartbeatIfNeeded","destroyTracking","AdTimingService","adRequestWatchdogToken","adFailsafeToken","ptsDriftEmaMs","adBreakPlayedDurationMs","adBreakEpoch","adRequestTokenCounter","activeAdRequestToken","currentAdIndex","totalAdsInBreak","totalAdRequestsInBreak","maxTotalAdRequestsPerBreak","lastAdRequestTime","consecutiveFailures","minAdRequestIntervalMs","backoffBaseMs","maxBackoffMs","globalNoFillThreshold","defaultMinRemainingMsToStartAd","failedVastUrls","temporaryFailureUrls","globalConsecutiveNoFills","globalNoFillCooldownUntil","globalNoFillBackoffBaseMs","globalNoFillBackoffMaxMs","globalLastGamRequestTime","globalMinGamIntervalMs","scheduleAdStopCountdown","remainingMs","clearAdStopTimer","ensureAdStoppedByTimer","adStopTimerId","onAdStopTimerFired","scheduleAdStartIn","delayMs","cueKey","clearAdStartTimer","adStartTimerId","onAdStartTimerFired","updatePtsDrift","ptsSecondsSample","sampleMs","alpha","resolveScteBreakStartWallClockMs","nowWallClockMs","estimatedCurrentPtsMs","deltaMs","setAdBreakDurationBoundary","expectedAdBreakDurationMs","currentAdBreakStartWallClockMs","scteAdBreakEndWallClockMs","scheduleAdStopAtBreakBoundary","getWallClockRemainingAdMs","endWallClockMs","getAdBreakEndWallClockMs","getDurationBudgetRemainingMs","getLoadedAdDurationMs","adController","recordPlayedAdDuration","adFitsRemainingBudget","logAdDurationDecision","accepted","remainingBudget","getLoadedAdId","ensureLoadedAdFitsBudget","fits","rejectLoadedAdForDuration","markAdStarted","notePodAdStarted","getRemainingAdMs","wallClockRemaining","budgetRemaining","getMinRemainingMsToStartAd","configured","minRemainingMsToStartAd","hasTimeToStartAnotherAd","minRemaining","isTemporaryAdError","message","isUrlInCooldown","failureTime","temporaryFailureCooldownMs","cleanupTemporaryFailures","exponent","isGamInCooldown","recordGamNoFill","backoff","pow","resetGamNoFillCounter","enforceGlobalRateLimit","waitMs","startAdRequestWatchdog","token","clearAdRequestWatchdog","adFailsafeTimeoutMs","adRequestWatchdogId","logAdState","onWatchdogTimeout","startAdFailsafeTimer","adFailsafeTimerId","clearAdFailsafeTimer","failsafeMs","videoPaused","extra","getAdState","showAds","resetForBreakEnd","PlaceholderLayer","ensureContainer","transition","show","wasHidden","offsetHeight","requestAnimationFrame","hide","removeChild","import_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","onManifestParsed","live","detectedLowLatencyStream","minSegmentsBeforePlay","_evt","applyStreamLatencyProfile","LEVEL_LOADED","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","requestFullscreen","isMuted","setVolume","clampedVolume","getAdVolume","isFullscreen","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","code","vastErrorCode","cause","innerError","causeMessage","handleAdFailure","getAdAudioVolume","recreateAdController","shouldShowPlaceholder","preservedMutedState","preservedVolumeState","shouldContinueLiveStreamDuringAds","newAdPlayer","createAdPlayer","setAdPlayer","clearPendingAdBreak","prefetchTimerId","handleAdStart","_marker","tags","adBreakDurationMs","currentMuted","currentVolume","podPlayed","scheduled","startOptimizedPod","startContinuousFetching","requestToken","podCount","vastUrls","vastUrl","podUrl","continuousFetchLoop","epoch","maxQueueSize","newAdUrl","queuedUrlsPreview","generationDelay","maxConsecutiveFailures","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","resumeBaseline","needsReset","recoveryCooldownMs","maxMonitorMs","startTime","baseline","recoveries","lastRecoveryAt","listenersAttached","onMediaEvent","diagEvents","dt","cleanup","poll","advanced","playing","bufferedAhead","wedged","canRecover","graceMs","maxRecoveries","reloadPos","pollIntervalMs","attempt","maxAttempts","onReady","backoffMs","playResult","attached","palPlaybackStarted","browserOverrides","videoElement","startAdPrefetch","onScte35Marker","startScte35AdBreak","hlsEngine","hasPendingAdBreak","c","palDescriptionUrl","attach","offsetWidth","prerollKey"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n DEFAULT_TRACKING_INGEST_CONFIG: () => DEFAULT_TRACKING_INGEST_CONFIG,\n IS_BROWSER: () => IS_BROWSER,\n IS_GLOBAL: () => IS_GLOBAL,\n IS_IOS: () => IS_IOS,\n IS_SAFARI: () => IS_SAFARI,\n SUPPORTS_DASH: () => SUPPORTS_DASH,\n SUPPORTS_HLS: () => SUPPORTS_HLS,\n StormcloudPlayer: () => StormcloudPlayer_default,\n StormcloudVideoPlayer: () => StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent: () => StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig: () => applyTrackingIngestConfig,\n buildAnalyticsContext: () => buildAnalyticsContext,\n canPlay: () => canPlay,\n configureTrackingIngest: () => configureTrackingIngest,\n createHlsAdPlayer: () => createHlsAdPlayer,\n createPalNonceManager: () => createPalNonceManager,\n createStormcloudPlayer: () => createStormcloudPlayer,\n default: () => StormcloudVideoPlayerComponent,\n detectBrowser: () => detectBrowser,\n getBrowserConfigOverrides: () => getBrowserConfigOverrides,\n getBrowserID: () => getBrowserID,\n getClientInfo: () => getClientInfo,\n ingestPlayerTracking: () => ingestPlayerTracking,\n initializePolyfills: () => initializePolyfills,\n isMediaStream: () => isMediaStream,\n isTrackingIngestEnabled: () => isTrackingIngestEnabled,\n lazy: () => lazy,\n logBrowserInfo: () => logBrowserInfo,\n merge: () => merge,\n omit: () => omit,\n parseQuery: () => parseQuery,\n players: () => players_default,\n randomString: () => randomString,\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds,\n sendAdDetectTracking: () => sendAdDetectTracking,\n sendAdImpressionTracking: () => sendAdImpressionTracking,\n sendAdLoadedTracking: () => sendAdLoadedTracking,\n sendHeartbeat: () => sendHeartbeat,\n sendInitialTracking: () => sendInitialTracking,\n supportsFeature: () => supportsFeature,\n supportsModernJS: () => supportsModernJS,\n supportsWebKitPresentationMode: () => supportsWebKitPresentationMode,\n trackingIngestConfig: () => trackingIngestConfig\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// src/ui/StormcloudVideoPlayer.tsx\nvar import_react = __toESM(require(\"react\"), 1);\n\n// src/sdk/hlsAdPlayer.ts\nvar import_hls = __toESM(require(\"hls.js\"), 1);\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 && import_hls.default.isSupported()) {\n if (adHls) {\n adHls.destroy();\n }\n adHls = new import_hls.default({\n enableWorker: true,\n lowLatencyMode: false\n });\n adHls.loadSource(mediaFile.url);\n adHls.attachMedia(adVideoElement);\n adHls.on(import_hls.default.Events.MANIFEST_PARSED, () => {\n console.log(\"[HlsAdPlayer] HLS manifest parsed, starting playback\");\n startAdPlayback(\"HLS ad playback\");\n });\n adHls.on(import_hls.default.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\nvar import_hls2 = __toESM(require(\"hls.js\"), 1);\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 import_hls2.default({\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(import_hls2.default.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(import_hls2.default.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(import_hls2.default.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(import_hls2.default.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(import_hls2.default.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(import_hls2.default.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(import_hls2.default.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(import_hls2.default.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(import_hls2.default.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case import_hls2.default.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case import_hls2.default.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\nvar import_fa = require(\"react-icons/fa\");\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar ExpandIcon = ({ size = 18 }) => /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M9 4H4v5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M20 9V4h-5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M15 20h5v-5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M4 15v5h5\" })\n ]\n }\n);\nvar CompressIcon = ({ size = 18 }) => /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M4 9h5V4\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M15 4v5h5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M20 15h-5v5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.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 = import_react.default.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 = (0, import_react.useRef)(null);\n const playerRef = (0, import_react.useRef)(null);\n const bufferingTimeoutRef = (0, import_react.useRef)(null);\n const controlsTimerRef = (0, import_react.useRef)(null);\n const wrapperRef = (0, import_react.useRef)(null);\n const [adStatus, setAdStatus] = import_react.default.useState({ showAds: false, currentIndex: 0, totalAds: 0, remainingSeconds: 0 });\n const [shouldShowNativeControls, setShouldShowNativeControls] = import_react.default.useState(true);\n const [isMuted2, setIsMuted] = import_react.default.useState(false);\n const [isFullscreen2, setIsFullscreen] = import_react.default.useState(false);\n const [isPlaying, setIsPlaying] = import_react.default.useState(false);\n const [currentTime, setCurrentTime] = import_react.default.useState(0);\n const [duration, setDuration] = import_react.default.useState(0);\n const [volume, setVolume2] = import_react.default.useState(1);\n const [playbackRate, setPlaybackRate] = import_react.default.useState(1);\n const [showVolumeSlider, setShowVolumeSlider] = import_react.default.useState(false);\n const [showSpeedMenu, setShowSpeedMenu] = import_react.default.useState(false);\n const [isLoading, setIsLoading] = import_react.default.useState(true);\n const [isBuffering, setIsBuffering] = import_react.default.useState(false);\n const [showCenterPlay, setShowCenterPlay] = import_react.default.useState(false);\n const [showLicenseWarning, setShowLicenseWarning] = import_react.default.useState(false);\n const [controlsVisible, setControlsVisible] = import_react.default.useState(true);\n const [viewportWidth, setViewportWidth] = import_react.default.useState(\n typeof window !== \"undefined\" ? window.innerWidth : 1920\n );\n const [isPortrait, setIsPortrait] = import_react.default.useState(\n typeof window !== \"undefined\" ? window.innerHeight > window.innerWidth : false\n );\n const [playerAspectRatio, setPlayerAspectRatio] = import_react.default.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 = (0, import_react.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 = (0, import_react.useCallback)(() => {\n resetControlsTimer();\n }, [resetControlsTimer]);\n const handleWrapperMouseLeave = (0, import_react.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 = (0, import_react.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 (0, import_react.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 (0, import_react.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 (0, import_react.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 (0, import_react.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 (0, import_react.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 (0, import_react.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 (0, import_react.useEffect)(() => {\n setPlayerAspectRatio(DEFAULT_PLAYER_ASPECT_RATIO);\n }, [src]);\n (0, import_react.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 ? import_fa.FaVolumeMute : volume < 0.5 ? import_fa.FaVolumeDown : import_fa.FaVolumeUp;\n return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { fontSize: \"18px\", fontWeight: \"700\", marginBottom: \"10px\", letterSpacing: \"-0.02em\" }, children: \"License Key Required\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(\"br\", {}),\n \"Contact your administrator for licensing information.\"\n ] })\n ]\n }\n ),\n adStatus.showAds && /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(\n import_fa.FaPlay,\n {\n size: Math.max(24, 32 * responsiveScale),\n color: \"white\",\n style: { marginLeft: \"4px\" }\n }\n )\n }\n ),\n shouldShowEnhancedControls && !showLicenseWarning ? /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(import_fa.FaPause, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaPlay, { size: Math.max(14, 18 * responsiveScale), style: { marginLeft: \"2px\" } })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(\"span\", { style: { color: \"rgba(255,255,255,0.5)\" }, children: \"/\" }),\n \" \",\n formatTime(duration)\n ]\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\"div\", { style: { position: \"relative\", display: viewportWidth < 600 ? \"none\" : \"block\" }, children: [\n /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ]\n }\n )\n ]\n }\n ) : showCustomControls && !showLicenseWarning && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.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__ */ (0, import_jsx_runtime.jsx)(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ] }),\n onControlClick && /* @__PURE__ */ (0, import_jsx_runtime.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\nvar import_react6 = __toESM(require(\"react\"), 1);\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\nvar import_react2 = require(\"react\");\nvar lazy = import_react2.lazy;\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\nvar import_react3 = require(\"react\");\nvar HlsPlayer = class extends import_react3.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\nvar import_react4 = require(\"react\");\nvar FilePlayer = class extends import_react4.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.ready = false;\n this.load = () => {\n if (!this.props.videoElement || !this.props.src) return;\n const video = this.props.videoElement;\n const handleLoadedMetadata = () => {\n if (this.mounted && !this.ready) {\n this.ready = true;\n this.props.onReady?.();\n }\n };\n const handlePlay = () => {\n if (this.mounted) {\n this.props.onPlay?.();\n }\n };\n const handlePause = () => {\n if (this.mounted) {\n this.props.onPause?.();\n }\n };\n const handleEnded = () => {\n if (this.mounted) {\n this.props.onEnded?.();\n }\n };\n const handleError = (error) => {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n };\n const handleLoadedData = () => {\n if (this.mounted) {\n this.props.onLoaded?.();\n }\n };\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"play\", handlePlay);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n video.addEventListener(\"error\", handleError);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.src = this.props.src;\n if (this.props.autoplay !== void 0) video.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) video.muted = this.props.muted;\n if (this.props.loop !== void 0) video.loop = this.props.loop;\n if (this.props.controls !== void 0) video.controls = this.props.controls;\n if (this.props.playsInline !== void 0)\n video.playsInline = this.props.playsInline;\n if (this.props.preload !== void 0)\n video.preload = this.props.preload;\n if (this.props.poster !== void 0) video.poster = this.props.poster;\n this.props.onMount?.(this);\n return () => {\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"play\", handlePlay);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n video.removeEventListener(\"error\", handleError);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n };\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[FilePlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n } else {\n console.warn(\"[FilePlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.setLoop = (loop) => {\n if (this.props.videoElement) {\n this.props.videoElement.loop = loop;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"video\") return this.props.videoElement;\n return null;\n };\n this.enablePIP = async () => {\n if (this.props.videoElement && \"requestPictureInPicture\" in this.props.videoElement) {\n try {\n await this.props.videoElement.requestPictureInPicture();\n } catch (error) {\n console.warn(\"Picture-in-Picture failed:\", error);\n }\n }\n };\n this.disablePIP = async () => {\n if (document.pictureInPictureElement) {\n try {\n await document.exitPictureInPicture();\n } catch (error) {\n console.warn(\"Exit Picture-in-Picture failed:\", error);\n }\n }\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nFilePlayer.displayName = \"FilePlayer\";\nFilePlayer.canPlay = canPlay.file;\n\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\nvar import_react5 = __toESM(require(\"react\"), 1);\nvar SEEK_ON_PLAY_EXPIRY = 5e3;\nvar Player = class extends import_react5.Component {\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 import_react5.default.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 ? import_react6.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 import_react6.Component {\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 import_react6.default.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 import_react6.default.createElement(\n Wrapper,\n {\n ref: wrapperRef,\n style: { ...style, width, height },\n ...attributes\n },\n import_react6.default.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;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\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,\n StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig,\n buildAnalyticsContext,\n canPlay,\n configureTrackingIngest,\n createHlsAdPlayer,\n createPalNonceManager,\n createStormcloudPlayer,\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,\n randomString,\n requiresMediaPipelineResetAfterAds,\n sendAdDetectTracking,\n sendAdImpressionTracking,\n sendAdLoadedTracking,\n sendHeartbeat,\n sendInitialTracking,\n supportsFeature,\n supportsModernJS,\n supportsWebKitPresentationMode,\n trackingIngestConfig\n});\n"]}