UNPKG

unified-video-framework

Version:

Cross-platform video player framework supporting iOS, Android, Web, Smart TVs (Samsung/LG), Roku, and more

435 lines 14.7 kB
import { BasePlayer } from '../../core/dist/BasePlayer'; import { ControlsVisibilityConfig, Chapter, ChapterSegment } from '../../core/dist/index'; import { ChapterConfig, VideoChapters, VideoSegment } from './chapters/types/ChapterTypes'; import type { FlashNewsTickerConfig } from './react/types/FlashNewsTickerTypes'; import type { ThumbnailPreviewConfig } from './react/types/ThumbnailPreviewTypes'; declare global { interface Window { Hls: any; dashjs: any; cast?: any; chrome?: any; YT?: any; __onGCastApiAvailable?: (isAvailable: boolean) => void; } } export declare class WebPlayer extends BasePlayer { protected video: HTMLVideoElement | null; private hls; private dash; private qualities; private currentQualityIndex; private autoQuality; private currentStreamType; private useCustomControls; private controlsContainer; private volumeHideTimeout; private hideControlsTimeout; private isVolumeSliding; private availableQualities; private availableSubtitles; private currentQuality; private currentSubtitle; private currentPlaybackRate; private isDragging; private globalMouseMoveHandler; private globalTouchMoveHandler; private globalMouseUpHandler; private globalTouchEndHandler; private settingsConfig; private controlsVisibility; private watermarkCanvas; private playerWrapper; private instanceId; private static instanceCounter; private cachedElements; private flashTickerContainer; private flashTickerTopElement; private flashTickerBottomElement; private tickerCurrentItemIndex; private tickerCycleTimer; private tickerConfig; private tickerHeadlineElement; private tickerDetailElement; private tickerIntroOverlay; private tickerProgressBar; private tickerProgressFill; private tickerIsPaused; private tickerPauseStartTime; private tickerRemainingTime; private previewGateHit; private paymentSuccessTime; private paymentSuccessful; private isPaywallActive; private authValidationInterval; private overlayRemovalAttempts; private maxOverlayRemovalAttempts; private lastSecurityCheck; private castContext; private remotePlayer; private remoteController; private isCasting; private _castTrackIdByKey; private selectedSubtitleKey; private _kiTo; private paywallController; private _playPromise; private _deferredPause; private _lastToggleAt; private _TOGGLE_DEBOUNCE_MS; private hasTriedButtonFallback; private lastUserInteraction; private showTimeTooltip; private tapStartTime; private tapStartX; private tapStartY; private lastTapTime; private lastTapX; private tapCount; private longPressTimer; private isLongPressing; private longPressPlaybackRate; private tapResetTimer; private fastBackwardInterval; private handleSingleTap; private handleDoubleTap; private handleLongPress; private handleLongPressEnd; private autoplayCapabilities; private autoplayRetryPending; private autoplayRetryAttempts; private maxAutoplayRetries; private chapterManager; private drmManager; private isDRMProtected; private hasAppliedStartTime; private coreChapterManager; private chapterConfig; private qualityFilter; private premiumQualities; private youtubeNativeControls; private isAdPlaying; private fallbackSourceIndex; private fallbackErrors; private isLoadingFallback; private currentRetryAttempt; private lastFailedUrl; private isFallbackPosterMode; private hlsErrorRetryCount; private readonly MAX_HLS_ERROR_RETRIES; private lastDuration; private isDetectedAsLive; private isWaitingForLiveStream; private liveRetryTimer; private liveRetryAttempts; private bandwidthDetector; private readonly BANDWIDTH_TIERS; private liveStreamOriginalSource; private liveMessageRotationTimer; private liveMessageIndex; private liveBufferingTimeoutTimer; private liveCountdownTimer; private liveCountdownRemainingSeconds; private isShowingLiveCountdown; private hasCountdownCompleted; private isReloadingAfterCountdown; private countdownCallbackFired; private thumbnailPreviewConfig; private thumbnailEntries; private preloadedThumbnails; private currentThumbnailUrl; private thumbnailPreviewEnabled; private subtitleBlobUrls; private subtitleOverlay; private debugLog; private debugError; private debugWarn; private isLiveStreamNotReady; private startLiveStreamWaiting; private stopLiveStreamWaiting; private scheduleLiveStreamRetry; private retryLiveStreamLoad; private showLiveWaitingUI; private updateLiveWaitingMessage; private getLiveWaitingMessages; private rotateLoadingMessage; private showLiveCountdown; private sanitizeHtml; private updateLiveCountdownDisplay; private tickCountdown; private handleCountdownComplete; private stopLiveCountdown; updateLiveCountdown(config: any): void; private getElementId; private getElement; private cacheElementReferences; private deepMergeControlsConfig; private setElementVisibility; private applyControlsVisibility; setControlsEnabled(enabled: boolean): void; setControlsVisibility(config: Partial<ControlsVisibilityConfig>): void; initializeThumbnailPreview(config: ThumbnailPreviewConfig): void; private transformThumbnailData; private findThumbnailForTime; private preloadThumbnailImages; private applyThumbnailStyles; private updateThumbnailPreview; private hideThumbnailPreview; setThumbnailPreview(config: ThumbnailPreviewConfig | null): void; initialize(container: HTMLElement | string, config?: any): Promise<void>; protected setupPlayer(): Promise<void>; private autoplayAttempted; private setupVideoEventListeners; private getMediaErrorMessage; private updateBufferProgress; load(source: any): Promise<void>; private loadVideoSource; private initializeDRM; private handleDRMError; private tryFallbackSource; private showFallbackPoster; private detectSourceType; private loadHLS; private handleHLSError; private loadDASH; private updateDASHQuality; private detectBandwidth; private getBandwidthTier; private getOptimizedHLSConfig; private getOptimizedDASHSettings; private setupBandwidthMonitoring; private reoptimizePlayback; getBandwidthInfo(): { estimated: number | null; tier: 'high' | 'medium' | 'low' | null; method: 'probe' | 'manifest' | 'fallback' | null; }; redetectBandwidth(): Promise<void>; private loadNative; private loadYouTube; private youtubePlayer; private youtubePlayerReady; private youtubeIframe; private createYouTubePlayer; private loadYouTubeAPI; private waitForYouTubeAPI; private onYouTubePlayerReady; private onYouTubePlayerStateChange; private updateYouTubeUI; private onYouTubePlayerError; private youtubeTimeTrackingInterval; private startYouTubeTimeTracking; private updateYouTubeProgressBar; protected loadScript(src: string): Promise<void>; private loadSubtitles; private updateSubtitleOverlay; private isAbortPlayError; private isAutoplayRestrictionError; private detectAutoplayCapabilities; private hasUserActivation; private attemptIntelligentAutoplay; private setupAutoplayRetry; private showUnmuteButton; private setupClickToUnmute; private clickToUnmuteHandler; private hideUnmuteButton; private updateTimeTooltip; private hideTimeTooltip; private setupUserInteractionTracking; play(): Promise<void>; pause(): void; requestPause(): void; private safeSetCurrentTime; seek(time: number): void; setVolume(level: number): void; mute(): void; unmute(): void; getCurrentTime(): number; getQualities(): any[]; getCurrentQuality(): any; setQuality(index: number): void; setPlaybackRate(rate: number): void; setFlashNewsTicker(config: FlashNewsTickerConfig): void; private createTickerElement; private createSimpleTickerElement; private createBroadcastTickerElement; private getBroadcastThemeColors; private createBroadcast1Element; private createSeamlessScrollingTrack; private createGlobeElement; private createLiveBadgeElement; private ensureTickerAnimations; private calculateTickerDuration; private createProfessionalTickerElement; private createProfessionalHeader; private createDecorativeSeparator; private createTwoLineBody; private createProgressBar; private createIntroOverlay; private playIntroAnimation; private startItemCycling; private stopItemCycling; private pauseItemCycling; private resumeItemCycling; private animateProgress; private transitionToNextItem; private applyItemTransition; private formatHeadlineText; private escapeHtml; private updateItemContent; setAutoQuality(enabled: boolean): void; enterFullscreen(): Promise<void>; exitFullscreen(): Promise<void>; enterPictureInPicture(): Promise<void>; exitPictureInPicture(): Promise<void>; focusPlayer(): void; showFullscreenTip(): void; private isBraveBrowser; private checkFullscreenPermissions; private isPrivateWindow; triggerFullscreenButton(): void; private performFullscreenButtonClick; private requestFullscreenPermissionBrave; enterFullscreenWithBraveSupport(): Promise<void>; showTemporaryMessage(message: string): void; enterFullscreenSynchronously(): void; requestFullscreenWithUserGesture(event: Event): Promise<boolean>; showFullscreenInstructions(): void; attemptFullscreen(): Promise<boolean>; protected applySubtitleTrack(track: any): void; protected removeSubtitles(): void; private injectStyles; private getPlayerStyles; private createFrameworkBranding; private resolveControlVisibility; private createNavigationButtons; private getNavigationIcon; private createCustomControls; private setupControlsEventListeners; protected setupKeyboardShortcuts(): void; protected setupWatermark(): void; setPaywallConfig(config: any): void; dismissPaywall(options?: { resume?: boolean; }): void; private togglePlayPause; private enforceFreePreviewGate; setFreeDuration(seconds: number): void; resetFreePreviewGate(): void; resetPaymentStatus(): void; private toggleMuteAction; private isMobileDevice; private isPipSupported; private isIOSDevice; private isAndroidDevice; private isFullscreenSupported; private lockOrientationLandscape; private unlockOrientation; private handleVolumeChange; private seekToPosition; private formatTime; private formatCountdownTime; private resetProgressBar; private getYouTubeHeight; private updateTimeDisplay; private showControls; private hideControls; private scheduleHideControls; private setupAdvancedTapHandling; private startFastBackward; private stopFastBackward; private isFullscreen; private setupFullscreenListeners; private showShortcutIndicator; setSettingsScrollbarStyle(mode: 'default' | 'compact' | 'overlay'): void; setSettingsScrollbarConfig(options: { widthPx?: number; intensity?: number; }): void; private applyScrollbarPreferencesFromDataset; private setupChapterManager; private convertToChapters; private convertToChapterSegments; private mapSegmentAction; loadChapters(chapters: VideoChapters): Promise<void>; loadChaptersFromUrl(url: string): Promise<void>; getCurrentSegment(): VideoSegment | null; skipToSegment(segmentId: string): void; getSegments(): VideoSegment[]; updateChapterConfig(newConfig: Partial<ChapterConfig>): void; hasChapters(): boolean; getChapters(): VideoChapters | null; getCoreChapters(): Chapter[]; getCoreSegments(): ChapterSegment[]; getCurrentChapterInfo(): Chapter | null; seekToChapter(chapterId: string): void; getNextChapter(): Chapter | null; getPreviousChapter(): Chapter | null; setTheme(theme: any): void; private _parseRgb; private _rgbToString; private _lightenRgb; private _toRgba; private changeVolume; private setSpeed; private setQualityByLabel; private updateQualityBadgeText; private updateQualityLabel; private togglePiP; private setupCastContextSafe; private setupCastContext; private enableCastRemoteControl; private disableCastRemoteControl; private _bindRemotePlayerEvents; private updateVolumeUIFromRemote; private _syncUIFromRemote; private _syncCastButtons; private updateSettingsMenu; private generateAccordionMenu; private detectAvailableQualities; private applyQualityFilter; setQualityFilter(filter: any): void; setAdPlaying(isPlaying: boolean): void; isAdCurrentlyPlaying(): boolean; private isQualityPremium; private isPremiumUser; private handlePremiumQualityClick; private detectAvailableSubtitles; private setupSettingsEventListeners; private toggleAccordionSection; private hideSettingsMenu; private updateAccordionAfterSelection; private updateSettingsActiveStates; private setPlaybackRateFromSettings; private setQualityFromSettings; private applyHLSQualityFilter; private applyDASHQualityFilter; private setSubtitle; private _updateCastActiveTracks; private onCastButtonClick; private showAirPlayPicker; private stopCasting; private initCast; private shareVideo; private isTextTruncated; private showTextTooltip; private hideTextTooltip; private setupTextTooltips; private smartTruncateText; private applySmartTextDisplay; private updateMetadataUI; private showNotification; private canPlayVideo; private enforcePaywallSecurity; private startOverlayMonitoring; private handleSecurityViolation; private showSecurityViolationMessage; private forceCleanupOverlays; showEPGButton(): void; hideEPGButton(): void; setEPGData(epgData: any): void; isEPGButtonVisible(): boolean; private cleanup; destroy(): Promise<void>; } //# sourceMappingURL=WebPlayer.d.ts.map