UNPKG

@7sage/vidstack

Version:

UI component library for building high-quality, accessible video and audio experiences on the web.

402 lines (380 loc) 29.3 kB
/// <reference path="./dom.d.ts" /> /// <reference path="./google-cast.d.ts" /> import { TextRenderer, TextTrack, TextTrackList, VideoQuality, MediaKeyShortcuts, AudioProvider, VideoProvider, HLSProvider, DASHProvider, YouTubeProvider, VimeoProvider, GoogleCastProvider, MediaProviderLoader, Src, MediaType, MediaContext, Thumbnail, SliderOrientation } from './types/vidstack-tX8MEPiY.js'; export { AirPlayButton, AirPlayButtonEvents, AirPlayButtonProps, AnyMediaProvider, AudioGainRadioGroup, AudioGainRadioGroupChangeEvent, AudioGainRadioGroupEvents, AudioGainRadioGroupProps, AudioGainSlider, AudioGainSliderCSSVars, AudioGainSliderEvents, AudioGainSliderProps, AudioGainSliderState, AudioMimeType, AudioRadioGroup, AudioRadioGroupChangeEvent, AudioRadioGroupEvents, AudioRadioGroupProps, AudioRadioOption, AudioSrc, AudioSrcMeta, AudioTrack, AudioTrackAddEvent, AudioTrackChangeEvent, AudioTrackList, AudioTrackListEvent, AudioTrackListEvents, AudioTrackRemoveEvent, CaptionButton, CaptionButtonEvents, CaptionButtonProps, Captions, CaptionsProps, CaptionsRadioGroup, CaptionsRadioGroupChangeEvent, CaptionsRadioGroupEvents, CaptionsRadioGroupProps, CaptionsRadioOption, ChangeAudioTrackEventDetail, ChapterRadioGroupProps, ChaptersRadioGroup, ChaptersRadioGroupChangeEvent, ChaptersRadioGroupEvents, ChaptersRadioOption, Controls, ControlsChangeEvent, ControlsEvents, ControlsGroup, ControlsProps, DASHAdaptationSetRemovedNoCapabilitiesEvent, DASHAllTextTracksAddedEvent, DASHAstInFutureEvent, DASHBaseUrlsUpdatedEvent, DASHBufferLevelUpdatedEvent, DASHBufferLoadedEvent, DASHBufferStalledEvent, DASHBufferStateChangedEvent, DASHCanPlayEvent, DASHCanPlayThroughEvent, DASHCaptionContainerResizeEvent, DASHCaptionRenderedEvent, DASHConformanceViolationEvent, DASHConstructor, DASHConstructorLoader, DASHContentSteeringRequestCompletedEvent, DASHCueEnterEvent, DASHCueExitEvent, DASHDvbFontDownloadAddedEvent, DASHDvbFontDownloadCompleteEvent, DASHDvbFontDownloadFailedEvent, DASHDynamicToStaticEvent, DASHErrorEvent, DASHEventModeOnReceiveEvent, DASHEventModeOnStartEvent, DASHFragmentLoadingAbandonedEvent, DASHFragmentLoadingCompletedEvent, DASHFragmentLoadingProgressEvent, DASHFragmentLoadingStartedEvent, DASHInbandPrftEvent, DASHInstanceCallback, DASHInstanceEvent, DASHLibLoadErrorEvent, DASHLibLoadStartEvent, DASHLibLoadedEvent, DASHLibrary, DASHLogEvent, DASHManagedMediaSourceEndStreamingEvent, DASHManagedMediaSourceStartStreamingEvent, DASHManifestLoadedEvent, DASHManifestLoadingFinishedEvent, DASHManifestLoadingStartedEvent, DASHManifestValidityChangedEvent, DASHMediaEvent, DASHMetricAddedEvent, DASHMetricChangedEvent, DASHMetricUpdatedEvent, DASHMetricsChangedEvent, DASHMimeType, DASHNamespace, DASHNamespaceLoader, DASHPeriodSwitchCompletedEvent, DASHPeriodSwitchStartedEvent, DASHPlaybackEndedEvent, DASHPlaybackErrorEvent, DASHPlaybackLoadedDataEvent, DASHPlaybackMetaDataLoadedEvent, DASHPlaybackNotAllowedEvent, DASHPlaybackPausedEvent, DASHPlaybackPlayingEvent, DASHPlaybackProgressEvent, DASHPlaybackRateChangedEvent, DASHPlaybackSeekedEvent, DASHPlaybackSeekingEvent, DASHPlaybackStalledEvent, DASHPlaybackStartedEvent, DASHPlaybackTimeUpdatedEvent, DASHPlaybackVolumeChangedEvent, DASHPlaybackWaitingEvent, DASHProviderEvents, DASHQualityChangeRenderedEvent, DASHQualityChangeRequestedEvent, DASHRepresentationSwitchEvent, DASHSrc, DASHStreamActivatedEvent, DASHStreamDeactivatedEvent, DASHStreamInitializedEvent, DASHStreamInitializingEvent, DASHStreamTeardownCompleteEvent, DASHStreamUpdatedEvent, DASHTextTrackAddedEvent, DASHThroughputMeasurementStoredEvent, DASHTrackChangeRenderedEvent, DASHTtmlParsedEvent, DASHTtmlToParseEvent, DASHUnsupportedEvent, DEFAULT_AUDIO_GAINS, DEFAULT_PLAYBACK_RATES, DefaultLayoutProps, DefaultLayoutTranslations, DefaultLayoutWord, FileDownloadInfo, FindMediaPlayerEvent, FindMediaPlayerEventDetail, FullscreenAdapter, FullscreenButton, FullscreenButtonEvents, FullscreenButtonProps, FullscreenChangeEvent, FullscreenController, FullscreenErrorEvent, FullscreenEvents, Gesture, GestureAction, GestureEvent, GestureEventType, GestureEvents, GestureProps, GestureTriggerEvent, GestureWillTriggerEvent, GoogleCastButton, GoogleCastButtonEvents, GoogleCastButtonProps, GoogleCastEvent, GoogleCastEvents, GoogleCastLoadStartEvent, GoogleCastLoadedEvent, GoogleCastPromptError, GoogleCastPromptErrorCode, GoogleCastPromptErrorEvent, GoogleCastPromptEvent, HLSAudioTrackLoadedEvent, HLSAudioTrackLoadingEvent, HLSAudioTrackSwitchedEvent, HLSAudioTrackSwitchingEvent, HLSAudioTracksUpdatedEvent, HLSBackBufferReachedEvent, HLSBufferAppendedEvent, HLSBufferAppendingEvent, HLSBufferCodecsEvent, HLSBufferCreatedEvent, HLSBufferEosEvent, HLSBufferFlushedEvent, HLSBufferFlushingEvent, HLSBufferResetEvent, HLSConstructor, HLSConstructorLoader, HLSCuesParsedEvent, HLSDestroyingEvent, HLSErrorEvent, HLSFpsDropEvent, HLSFpsDropLevelCappingEvent, HLSFragBufferedDataEvent, HLSFragChangedEvent, HLSFragDecryptedEvent, HLSFragLoadEmergencyAbortedEvent, HLSFragLoadedEvent, HLSFragLoadingEvent, HLSFragParsedEvent, HLSFragParsingInitSegmentEvent, HLSFragParsingMetadataEvent, HLSFragParsingUserdataEvent, HLSInitPtsFoundEvent, HLSInstanceCallback, HLSInstanceEvent, HLSKeyLoadedEvent, HLSKeyLoadingEvent, HLSLevelLoadedEvent, HLSLevelLoadingEvent, HLSLevelPtsUpdatedEvent, HLSLevelSwitchedEvent, HLSLevelSwitchingEvent, HLSLevelUpdatedEvent, HLSLevelsUpdatedEvent, HLSLibLoadErrorEvent, HLSLibLoadStartEvent, HLSLibLoadedEvent, HLSLibrary, HLSManifestLoadedEvent, HLSManifestLoadingEvent, HLSManifestParsedEvent, HLSMediaAttachedEvent, HLSMediaAttachingEvent, HLSMediaDetachedEvent, HLSMediaDetachingEvent, HLSMediaEvent, HLSMimeType, HLSNonNativeTextTracksFoundEvent, HLSProviderEvents, HLSSrc, HLSSubtitleFragProcessedEvent, HLSSubtitleTrackLoadedEvent, HLSSubtitleTrackLoadingEvent, HLSSubtitleTrackSwitchEvent, HLSSubtitleTracksClearedEvent, HLSSubtitleTracksUpdatedEvent, HLSUnsupportedEvent, HTMLMediaSrc, List, ListAddEvent, ListEvents, ListItem, ListReadonlyChangeEvent, ListRemoveEvent, LiveButton, LiveButtonEvents, LiveButtonProps, LocalMediaStorage, LogEvent, LogEventDetail, Logger, LoggerEvents, MediaAbortEvent, MediaAirPlayRequestEvent, MediaAnnouncer, MediaAnnouncerEvents, MediaAnnouncerProps, MediaAnnouncerState, MediaAnnouncerTranslations, MediaAnnouncerWord, MediaAudioGainChangeEvent, MediaAudioGainChangeRequestEvent, MediaAudioTrackChangeEvent, MediaAudioTrackChangeRequestEvent, MediaAudioTracksChangeEvent, MediaAutoPlayChangeEvent, MediaAutoPlayEvent, MediaAutoPlayEventDetail, MediaAutoPlayFailEvent, MediaAutoPlayFailEventDetail, MediaCanLoadEvent, MediaCanLoadPosterEvent, MediaCanPlayDetail, MediaCanPlayEvent, MediaCanPlayThroughEvent, MediaClipEndChangeRequestEvent, MediaClipStartChangeRequestEvent, MediaControls, MediaControlsChangeEvent, MediaCrossOrigin, MediaDestroyEvent, MediaDurationChangeEvent, MediaDurationChangeRequestEvent, MediaEmptiedEvent, MediaEndEvent, MediaEndedEvent, MediaEnterFullscreenRequestEvent, MediaEnterPIPRequestEvent, MediaErrorCode, MediaErrorDetail, MediaErrorEvent, MediaEvent, MediaEvents, MediaExitFullscreenRequestEvent, MediaExitPIPRequestEvent, MediaFullscreenAdapter, MediaFullscreenChangeEvent, MediaFullscreenErrorEvent, MediaFullscreenRequestTarget, MediaGoogleCastRequestEvent, MediaHidePosterRequestEvent, MediaKeyShortcut, MediaKeyTarget, MediaKeysCallback, MediaLiveChangeEvent, MediaLiveEdgeChangeEvent, MediaLiveEdgeRequestEvent, MediaLoadStartEvent, MediaLoadedDataEvent, MediaLoadedMetadataEvent, MediaLoadingStrategy, MediaLoopChangeEvent, MediaLoopRequestEvent, MediaMuteRequestEvent, MediaOrientationChangeEvent, MediaOrientationLockRequestEvent, MediaOrientationUnlockRequestEvent, MediaPIPChangeEvent, MediaPIPErrorEvent, MediaPauseControlsRequestEvent, MediaPauseEvent, MediaPauseRequestEvent, MediaPlayEvent, MediaPlayFailEvent, MediaPlayRequestEvent, MediaPlayer, MediaPlayerConnectEvent, MediaPlayerEvents, MediaPlayerProps, MediaPlayerQuery, MediaPlayerState, MediaPlayingEvent, MediaPlaysInlineChangeEvent, MediaPosterChangeEvent, MediaPosterLoadingStrategy, MediaPosterStartLoadingRequestEvent, MediaProgressEvent, MediaProgressEventDetail, MediaProvider, MediaProviderAdapter, MediaProviderChangeEvent, MediaProviderLoaderChangeEvent, MediaProviderProps, MediaProviderSetupEvent, MediaProviderState, MediaQualitiesChangeEvent, MediaQualityChangeEvent, MediaQualityChangeRequestEvent, MediaRateChangeEvent, MediaRateChangeRequestEvent, MediaRemoteControl, MediaRemotePlaybackChangeEvent, MediaRemotePlaybackChangeEventDetail, MediaReplayEvent, MediaRequestEvents, MediaResumeControlsRequestEvent, MediaSeekRequestEvent, MediaSeekedEvent, MediaSeekingEvent, MediaSeekingRequestEvent, MediaShowPosterRequestEvent, MediaSourceChangeEvent, MediaSourcesChangeEvent, MediaSrc, MediaSrcObject, MediaStalledEvent, MediaStartLoadingRequestEvent, MediaStartedEvent, MediaState, MediaStateAccessors, MediaStorage, MediaStore, MediaStreamType, MediaStreamTypeChangeEvent, MediaSuspendEvent, MediaTextTrackChangeEvent, MediaTextTrackChangeRequestEvent, MediaTextTracksChangeEvent, MediaTimeChangeEvent, MediaTimeUpdateEvent, MediaTimeUpdateEventDetail, MediaTitleChangeEvent, MediaTypeChangeEvent, MediaUnmuteRequestEvent, MediaUserEvents, MediaUserLoopChangeRequestEvent, MediaViewType, MediaViewTypeChangeEvent, MediaVolumeChange, MediaVolumeChangeEvent, MediaVolumeChangeRequestEvent, MediaWaitingEvent, Menu, MenuButton, MenuButtonEvents, MenuButtonProps, MenuButtonSelectEvent, MenuCloseEvent, MenuEvents, MenuItem, MenuItems, MenuItemsProps, MenuOpenEvent, MenuPlacement, MenuPlacementAlign, MenuPlacementSide, MenuPortal, MenuPortalContext, MenuPortalProps, MenuProps, MuteButton, MuteButtonEvents, MuteButtonProps, MuxThumbnailStoryboard, MuxThumbnailTile, PIPButton, PIPButtonEvents, PIPButtonProps, PlayButton, PlayButtonEvents, PlayButtonProps, PlayerSrc, PlayerStore, PlyrControl, PlyrLayoutProps, PlyrLayoutTranslations, PlyrLayoutWord, PlyrMarker, Poster, PosterProps, PosterState, QualityRadioGroup, QualityRadioGroupChangeEvent, QualityRadioGroupEvents, QualityRadioGroupProps, QualityRadioOption, QualitySlider, QualitySliderCSSVars, QualitySliderEvents, QualitySliderProps, QualitySliderState, Radio, RadioChangeEvent, RadioEvents, RadioGroup, RadioGroupChangeEvent, RadioGroupEvents, RadioGroupProps, RadioOption, RadioProps, RadioSelectEvent, RemotePlaybackInfo, RemotePlaybackType, ScreenOrientationChangeEvent, ScreenOrientationChangeEventDetail, ScreenOrientationController, ScreenOrientationEvents, ScreenOrientationLockType, ScreenOrientationType, SeekButton, SeekButtonEvents, SeekButtonProps, SerializedVideoQuality, Slider, SliderCSSVars, SliderChapters, SliderChaptersCSSVars, SliderChaptersProps, SliderController, SliderControllerProps, SliderDelegate, SliderDragEndEvent, SliderDragStartEvent, SliderDragValueChangeEvent, SliderEvent, SliderEvents, SliderPointerValueChangeEvent, SliderPreview, SliderPreviewProps, SliderProps, SliderState, SliderStore, SliderValue, SliderValueChangeEvent, SliderValueProps, SliderVideo, SliderVideoCanPlayEvent, SliderVideoErrorEvent, SliderVideoEvents, SliderVideoProps, SliderVideoState, SpeedRadioGroup, SpeedRadioGroupChangeEvent, SpeedRadioGroupEvents, SpeedRadioGroupProps, SpeedSlider, SpeedSliderCSSVars, SpeedSliderEvents, SpeedSliderProps, SpeedSliderState, TextRenderers, TextTrackAddCueEvent, TextTrackAddEvent, TextTrackCueChangeEvent, TextTrackErrorEvent, TextTrackEvent, TextTrackEvents, TextTrackInit, TextTrackListEvent, TextTrackListEvents, TextTrackListModeChangeEvent, TextTrackLoadEvent, TextTrackLoadStartEvent, TextTrackModeChangeEvent, TextTrackReadyState, TextTrackRemoveCueEvent, TextTrackRemoveEvent, ThumbnailCoords, ThumbnailImage, ThumbnailImageInit, ThumbnailProps, ThumbnailSrc, ThumbnailState, ThumbnailStoryboard, ThumbnailTile, ThumbnailsLoader, Time, TimeProps, TimeSlider, TimeSliderCSSVars, TimeSliderEvents, TimeSliderProps, TimeSliderState, TimeState, ToggleButton, ToggleButtonProps, Tooltip, TooltipContent, TooltipContentProps, TooltipPlacement, TooltipPlacementAlign, TooltipPlacementSide, TooltipProps, TooltipTrigger, VTTContent, VTTCueInit, VTTRegionInit, VideoMimeType, VideoPresentationChangeEvent, VideoPresentationEvents, VideoQualityAddEvent, VideoQualityAutoChangeEvent, VideoQualityChangeEvent, VideoQualityChangeEventDetail, VideoQualityList, VideoQualityListEvent, VideoQualityListEvents, VideoQualityRemoveEvent, VideoSrc, VideoSrcMeta, VimeoSrc, VolumeSlider, VolumeSliderCSSVars, VolumeSliderEvents, VolumeSliderProps, VolumeSliderState, YouTubeSrc, boundTime, canFullscreen, getDownloadFile, isTrackCaptionKind, isVideoQualitySrc, mediaContext, mediaState, menuPortalContext, parseJSONCaptionsFile, sliderState, softResetMediaState, updateSliderPreviewPlacement, usePlyrLayoutClasses } from './types/vidstack-tX8MEPiY.js'; import { EventsTarget, Dispose, ViewController, Context, ReadSignal, WriteSignal } from './types/vidstack-BNOTL9fc.js'; export { appendTriggerEvent, findTriggerEvent, hasTriggerEvent, isKeyboardClick, isKeyboardEvent, isPointerEvent, walkTriggerEventChain } from './types/vidstack-BNOTL9fc.js'; import { VTTCue } from 'media-captions'; import 'dashjs'; import 'hls.js'; declare class LibASSTextRenderer implements TextRenderer { #private; readonly loader: LibASSModuleLoader; config?: LibASSConfig | undefined; readonly priority = 1; constructor(loader: LibASSModuleLoader, config?: LibASSConfig | undefined); canRender(track: TextTrack, video: HTMLVideoElement | null): boolean; attach(video: HTMLVideoElement | null): void; changeTrack(track: TextTrack | null): void; detach(): void; } interface LibASSModuleLoader { (): Promise<{ default: LibASSConstructor; }>; } interface LibASSConstructor { new (config?: { video: HTMLVideoElement; canvas?: HTMLCanvasElement; subUrl?: string; } & LibASSConfig): LibASSInstance; } interface LibASSInstance extends EventsTarget<LibASSInstanceEvents> { _video: HTMLVideoElement; _canvas: HTMLVideoElement | null; setTrackByUrl(url: string): void; setCurrentTime(time: number): void; freeTrack(): void; destroy(): void; } interface LibASSInstanceEvents { ready: LibASSReadyEvent; error: LibASSErrorEvent; } interface LibASSReadyEvent extends Event { } interface LibASSErrorEvent extends ErrorEvent { } /** * @see {@link https://github.com/ThaUnknown/jassub/tree/main#options} */ interface LibASSConfig { /** * Which image blending mode to use. WASM will perform better on lower end devices, JS will * perform better if the device and browser supports hardware acceleration. * * @defaultValue "js" */ blendMode?: 'js' | 'wasm'; /** * Whether or not to use async rendering, which offloads the CPU by creating image bitmaps on * the GPU. * * @defaultValue true */ asyncRender?: boolean; /** * Whether or not to render things fully on the worker, greatly reduces CPU usage. * * @defaultValue true */ offscreenRender?: boolean; /** * Whether or not to render subtitles as the video player renders frames, rather than predicting * which frame the player is on using events. * * @defaultValue true */ onDemandRender?: boolean; /** * Target FPS to render subtitles at. Ignored when onDemandRender is enabled. * * @defaultValue 24 */ targetFps?: number; /** * Subtitle time offset in seconds. * * @defaultValue 0 */ timeOffset?: number; /** * Whether or not to print debug information. * * @defaultValue false */ debug?: boolean; /** * Scale down (< 1.0) the subtitles canvas to improve performance at the expense of quality, or * scale it up (> 1.0). * * @defaultValue 1.0 */ prescaleFactor?: number; /** * The height in pixels beyond which the subtitles canvas won't be pre-scaled. * * @defaultValue 1080 */ prescaleHeightLimit?: number; /** * The maximum rendering height in pixels of the subtitles canvas. Beyond this subtitles will * be up-scaled by the browser. * * @defaultValue 0 */ maxRenderHeight?: number; /** * Attempt to discard all animated tags. Enabling this may severely mangle complex subtitles * and should only be considered as an last ditch effort of uncertain success for hardware * otherwise incapable of displaying anything. Will not reliably work with manually edited or * allocated events. * * @defaultValue false */ dropAllAnimations?: boolean; /** * The URL of the worker. * * @defaultValue "jassub-worker.js" */ workerUrl?: string; /** * The URL of the legacy worker. Only loaded if the browser doesn't support WASM. * * @defaultValue "jassub-worker-legacy.js" */ legacyWorkerUrl?: string; /** * The URL of the subtitle file to play. * */ subUrl?: string; /** * The content of the subtitle file to play. * */ subContent?: string; /** * An array of links or `Uint8Array` to the fonts used in the subtitle. If `Uint8Array` is used * the array is copied, not referenced. This forces all the fonts in this array to be loaded * by the renderer, regardless of if they are used. * */ fonts?: string[] | Uint8Array[]; /** * Object with all available fonts. Key is font family in lower case, value is link or * `Uint8Array`. These fonts are selectively loaded if detected as used in the current * subtitle track. * * @defaultValue {'liberation sans': './default.woff2'}} */ availableFonts?: Record<string, string>; /** * The font family key of the fallback font in `availableFonts` to use if the other font * for the style is missing special glyphs or unicode. * * @defaultValue "liberation sans" */ fallbackFont?: string; /** * If the Local Font Access API is enabled `[chrome://flags/#font-access]`, the library will * query for permissions to use local fonts and use them if any are missing. The permission can * be queried beforehand using `navigator.permissions.request({ name: 'local-fonts' })`. * * @defaultValue true */ useLocalFonts?: boolean; /** * libass bitmap cache memory limit in MiB (approximate). */ libassMemoryLimit?: number; /** * libass glyph cache memory limit in MiB (approximate). */ libassGlyphLimit?: number; } declare function findActiveCue(cues: readonly VTTCue[], time: number): VTTCue | null; declare function isCueActive(cue: VTTCue, time: number): boolean; declare function watchActiveTextTrack(tracks: TextTrackList, kind: TextTrackKind | TextTrackKind[], onChange: (track: TextTrack | null) => void): Dispose; declare function watchCueTextChange(tracks: TextTrackList, kind: TextTrackKind | TextTrackKind[], callback: (title: string) => void): void; declare function sortVideoQualities(qualities: VideoQuality[], desc?: boolean): VideoQuality[]; declare const MEDIA_KEY_SHORTCUTS: MediaKeyShortcuts; declare class ARIAKeyShortcuts extends ViewController { #private; constructor(shortcut: string); protected onAttach(el: HTMLElement): void; } type TimeInterval = [start: number, end: number]; declare class TimeRange implements TimeRanges { #private; get length(): number; constructor(start?: number | TimeInterval[], end?: number); start(index: number): number; end(index: number): number; } declare function getTimeRangesStart(range: TimeRanges): number | null; declare function getTimeRangesEnd(range: TimeRanges): number | null; declare function normalizeTimeIntervals(intervals: TimeInterval[]): TimeInterval[]; declare function updateTimeIntervals(intervals: TimeInterval[], interval: TimeInterval, value: number): TimeInterval; /** @see {@link https://www.vidstack.io/docs/player/providers/audio} */ declare function isAudioProvider(provider: any): provider is AudioProvider; /** @see {@link https://www.vidstack.io/docs/player/providers/video} */ declare function isVideoProvider(provider: any): provider is VideoProvider; /** @see {@link https://www.vidstack.io/docs/player/providers/hls} */ declare function isHLSProvider(provider: any): provider is HLSProvider; declare function isDASHProvider(provider: any): provider is DASHProvider; /** @see {@link https://www.vidstack.io/docs/player/providers/youtube} */ declare function isYouTubeProvider(provider: any): provider is YouTubeProvider; /** @see {@link https://www.vidstack.io/docs/player/providers/vimeo} */ declare function isVimeoProvider(provider: any): provider is VimeoProvider; /** @see {@link https://www.vidstack.io/docs/player/providers/google-cast} */ declare function isGoogleCastProvider(provider: any): provider is GoogleCastProvider; /** @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLAudioElement} */ declare function isHTMLAudioElement(element: unknown): element is HTMLAudioElement; /** @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement} */ declare function isHTMLVideoElement(element: unknown): element is HTMLVideoElement; /** @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement} */ declare function isHTMLMediaElement(element: unknown): element is HTMLMediaElement; /** @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement} */ declare function isHTMLIFrameElement(element: unknown): element is HTMLIFrameElement; declare class AudioProviderLoader implements MediaProviderLoader<AudioProvider> { readonly name = "audio"; target: HTMLAudioElement; canPlay(src: Src): boolean; mediaType(): MediaType; load(ctx: MediaContext): Promise<AudioProvider>; } declare class VideoProviderLoader implements MediaProviderLoader<VideoProvider> { readonly name: string; target: HTMLVideoElement; canPlay(src: Src): boolean; mediaType(): MediaType; load(ctx: MediaContext): Promise<VideoProvider>; } declare class HLSProviderLoader extends VideoProviderLoader implements MediaProviderLoader<HLSProvider> { static supported: boolean; readonly name = "hls"; canPlay(src: Src): boolean; load(context: any): Promise<HLSProvider>; } declare class DASHProviderLoader extends VideoProviderLoader implements MediaProviderLoader<DASHProvider> { static supported: boolean; readonly name = "dash"; canPlay(src: Src): boolean; load(context: any): Promise<DASHProvider>; } declare class GoogleCastLoader implements MediaProviderLoader<GoogleCastProvider> { #private; readonly name = "google-cast"; target: HTMLElement; /** * @see {@link https://developers.google.com/cast/docs/reference/web_sender/cast.framework.CastContext} */ get cast(): cast.framework.CastContext; mediaType(): MediaType; canPlay(src: Src): boolean; prompt(ctx: MediaContext): Promise<void>; load(ctx: MediaContext): Promise<GoogleCastProvider>; } declare class VimeoProviderLoader implements MediaProviderLoader<VimeoProvider> { readonly name = "vimeo"; target: HTMLIFrameElement; preconnect(): void; canPlay(src: Src): boolean; mediaType(): MediaType; load(ctx: MediaContext): Promise<VimeoProvider>; loadPoster(src: Src, ctx: MediaContext, abort: AbortController): Promise<string | null>; } declare class YouTubeProviderLoader implements MediaProviderLoader<YouTubeProvider> { readonly name = "youtube"; target: HTMLIFrameElement; preconnect(): void; canPlay(src: Src): boolean; mediaType(): MediaType; load(ctx: MediaContext): Promise<YouTubeProvider>; loadPoster(src: Src, ctx: MediaContext, abort: AbortController): Promise<string | null>; } /** * Used to display preview thumbnails when the user is hovering or dragging the time slider. * The time ranges in the WebVTT file will automatically be matched based on the current slider * pointer position. * * @attr data-loading - Whether thumbnail image is loading. * @attr data-error - Whether an error occurred loading thumbnail. * @attr data-hidden - Whether thumbnail is not available or failed to load. * @docs {@link https://www.vidstack.io/docs/player/components/sliders/slider-thumbnail} */ declare class SliderThumbnail extends Thumbnail { #private; protected onAttach(el: HTMLElement): void; protected getTime(): number; } interface SliderContext { disabled: ReadSignal<boolean>; orientation: ReadSignal<SliderOrientation>; preview: WriteSignal<HTMLElement | null>; } declare const sliderContext: Context<SliderContext>; interface FormatTimeOptions { padHrs?: boolean | null; padMins?: boolean | null; showHrs?: boolean; showMs?: boolean; } /** * Formats the given `duration` into a human readable form that can be displayed to the user. * * @param duration - The length of time to parse in seconds. * @param shouldPadHours - Whether to pad the hours to be length of 2. * @param shouldPadMinutes - Whether to pad the minutes to be length of 2. * @param shouldAlwaysShowHours - Whether to always show the hours unit. * @example `01:20 -> minutes:seconds` * @example `3:01:20 -> hours:minutes:seconds` * @example If `shouldPadHours` is `true` - `03:01:20` * @example If `shouldAlwaysShowHours` is `true` - `0:01:20` */ declare function formatTime(duration: number, { padHrs, padMins, showHrs, showMs }?: FormatTimeOptions): string; /** * Formats the given `duration` into human spoken form. * * @param duration - The length of time to parse in seconds. * @example `2 hour 3 min 4 sec` */ declare function formatSpokenTime(duration: number): string; declare const AUDIO_EXTENSIONS: RegExp; declare const AUDIO_TYPES: Set<string>; declare const VIDEO_EXTENSIONS: RegExp; declare const VIDEO_TYPES: Set<string>; declare const HLS_VIDEO_EXTENSIONS: RegExp; declare const DASH_VIDEO_EXTENSIONS: RegExp; declare const HLS_VIDEO_TYPES: Set<string>; declare const DASH_VIDEO_TYPES: Set<string>; declare function isAudioSrc({ src, type }: Src): boolean; declare function isVideoSrc(src: Src): boolean; declare function isHLSSrc({ src, type }: Src): boolean; declare function isDASHSrc({ src, type }: Src): boolean; declare function canGoogleCastSrc(src: Src): boolean; declare function isMediaStream(src: unknown): src is MediaStream; /** * Checks if the ScreenOrientation API is available. * * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/orientation} */ declare function canOrientScreen(): boolean; /** * Checks if the screen orientation can be changed. * * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Screen/orientation} */ declare function canRotateScreen(): boolean; /** * Checks if the native HTML5 video player can play HLS. */ declare function canPlayHLSNatively(video?: HTMLVideoElement | null): boolean; /** * Checks if the native HTML5 video player can enter picture-in-picture (PIP) mode when using * the Chrome browser. * * @see {@link https://developers.google.com/web/updates/2018/10/watch-video-using-picture-in-picture} */ declare function canUsePictureInPicture(video: HTMLVideoElement | null): boolean; /** * Checks if the native HTML5 video player can use the presentation API in Safari. * * @see {@link https://developer.apple.com/documentation/webkitjs/htmlvideoelement/1631913-webkitpresentationmode} */ declare function canUseVideoPresentation(video: HTMLVideoElement | null): boolean; declare function canChangeVolume(): Promise<boolean>; export { ARIAKeyShortcuts, AUDIO_EXTENSIONS, AUDIO_TYPES, AudioProvider, AudioProviderLoader, DASHProvider, DASHProviderLoader, DASH_VIDEO_EXTENSIONS, DASH_VIDEO_TYPES, GoogleCastLoader, GoogleCastProvider, HLSProvider, HLSProviderLoader, HLS_VIDEO_EXTENSIONS, HLS_VIDEO_TYPES, type LibASSConfig, type LibASSConstructor, type LibASSErrorEvent, type LibASSInstance, type LibASSInstanceEvents, type LibASSModuleLoader, type LibASSReadyEvent, LibASSTextRenderer, MEDIA_KEY_SHORTCUTS, MediaContext, MediaKeyShortcuts, MediaProviderLoader, MediaType, type SliderContext, SliderOrientation, SliderThumbnail, Src, TextRenderer, TextTrack, TextTrackList, Thumbnail, type TimeInterval, TimeRange, VIDEO_EXTENSIONS, VIDEO_TYPES, VideoProvider, VideoProviderLoader, VideoQuality, VimeoProvider, VimeoProviderLoader, YouTubeProvider, YouTubeProviderLoader, canChangeVolume, canGoogleCastSrc, canOrientScreen, canPlayHLSNatively, canRotateScreen, canUsePictureInPicture, canUseVideoPresentation, findActiveCue, formatSpokenTime, formatTime, getTimeRangesEnd, getTimeRangesStart, isAudioProvider, isAudioSrc, isCueActive, isDASHProvider, isDASHSrc, isGoogleCastProvider, isHLSProvider, isHLSSrc, isHTMLAudioElement, isHTMLIFrameElement, isHTMLMediaElement, isHTMLVideoElement, isMediaStream, isVideoProvider, isVideoSrc, isVimeoProvider, isYouTubeProvider, normalizeTimeIntervals, sliderContext, sortVideoQualities, updateTimeIntervals, watchActiveTextTrack, watchCueTextChange };