UNPKG

@vimeo/player

Version:

Interact with and control an embedded Vimeo Player.

318 lines (267 loc) 10.3 kB
import type { VimeoEmbedParameters, VimeoUrl, LoadVideoOptions, HexColor, VolumeLevel, PlaybackRate, VimeoQuality, TimeRange, VimeoTextTrack, VimeoChapter, VimeoCuePoint, CameraProperties, Seconds, VimeoColors, Pixels, VideoQualityId, VimeoAudioTrack, AudioLanguage, AudioKind, } from "./formats"; import type { EventDataWithGenerics, PlayerEventMap, } from "./events"; import type { TimingObject } from "timing-object"; import type { TimingSrcConnector, TimingSrcConnectorOptions } from "../src/lib/timing-src-connector"; /** * @typedef {import('./errors').RangeError} RangeError * @typedef {import('./errors').UnsupportedError} UnsupportedError * @typedef {import('./errors').InvalidParameterError} InvalidParameterError * @typedef {import('./errors').NotFoundError} NotFoundError * @typedef {import('./errors').PasswordError} PasswordError * @typedef {import('./errors').PrivacyError} PrivacyError */ declare class Player { /** * Create a new Player instance * @param {HTMLIFrameElement | HTMLElement | string} elementOrSelector - iframe to attach Player to, element to inject player into, or element id to find and inject player into * @param {VimeoEmbedParameters} [options] - Optional parameters for the player */ constructor( elementOrSelector: HTMLIFrameElement | HTMLElement | string, options?: VimeoEmbedParameters ); static isVimeoUrl(url: VimeoUrl | string): boolean; /** * Trigger a function when the player iframe has initialized. * You do not need to wait for ready to trigger to begin adding * event listeners or calling other methods. */ ready(): Promise<void>; destroy(): Promise<void>; /** * Load a new video into the player * @throws {PasswordError} If the video requires a password that was not provided * @throws {PrivacyError} If the video is private and requires authentication * @throws {NotFoundError} If the video does not exist */ loadVideo(loadOptions: LoadVideoOptions): Promise<void>; /** * Play the video * @throws {PasswordError} If the video requires a password that was not provided * @throws {PrivacyError} If the video is private and requires authentication */ play(): Promise<void>; /** * Pause the video if it is playing * @throws {PasswordError} If the video requires a password that was not provided * @throws {PrivacyError} If the video is private and requires authentication */ pause(): Promise<void>; getPaused(): Promise<boolean>; /** * Set the volume of the player on a scale from 0 to 1. * When set via the API, the volume level will not be synchronized to * other players or stored as the viewer’s preference. * Most mobile devices (including iOS and Android) do not support * setting the volume because the volume is controlled at the system level. * An error will not be triggered in that situation. * @throws {RangeError} If volume is less than 0 or greater than 1 */ setVolume(volume: VolumeLevel): Promise<VolumeLevel>; /** * Get the current volume level between 0 and 1 */ getVolume(): Promise<VolumeLevel>; /** * Mute or unmute the video * @param {boolean} muted - Whether to mute the video */ setMuted(muted: boolean): Promise<boolean>; getMuted(): Promise<boolean>; /** * Seek to a specific time in the video * @throws {RangeError} If seconds is less than 0 or greater than the video's duration */ setCurrentTime(seconds: Seconds): Promise<Seconds>; getCurrentTime(): Promise<Seconds>; getDuration(): Promise<Seconds>; setAutopause(autopause: boolean): Promise<boolean>; getAutopause(): Promise<boolean>; /** * Set the playback rate * @throws {RangeError} If playbackRate is less than 0.5 or greater than 2 */ setPlaybackRate(playbackRate: PlaybackRate): Promise<PlaybackRate>; getPlaybackRate(): Promise<PlaybackRate>; setLoop(loop: boolean): Promise<boolean>; getLoop(): Promise<boolean>; /** * Get the available video qualities */ getQualities(): Promise<VimeoQuality[]>; /** * Get the current video quality */ getQuality(): Promise<VideoQualityId>; /** * Set the quality of the video using the quality id (e.g. "2160p"). (available to Plus, PRO and Business accounts) * @throws {TypeError} If the specified quality is not available */ setQuality(quality: VideoQualityId): Promise<VimeoQuality>; getSeekable(): Promise<TimeRange[]>; getSeeking(): Promise<boolean>; getBuffered(): Promise<TimeRange[]>; getPlayed(): Promise<TimeRange[]>; /** * Enable a text track * @throws {InvalidParameterError} If no track was available with the specified language * @throws {InvalidTrackError} If no track was available with the specified language and kind */ enableTextTrack(language: string, kind?: string, showing?: boolean): Promise<VimeoTextTrack>; disableTextTrack(): Promise<void>; getTextTracks(): Promise<VimeoTextTrack[]>; /** * Enable an audio track * @throws {InvalidParameterError} If no track was available with the specified language * @throws {InvalidTrackError} If no track was available with the specified language and kind */ selectAudioTrack(language: AudioLanguage, kind?: AudioKind): Promise<VimeoAudioTrack>; selectDefaultAudioTrack(): Promise<VimeoAudioTrack>; getAudioTracks(): Promise<VimeoAudioTrack[]>; getEnabledAudioTrack(): Promise<VimeoAudioTrack | undefined>; getDefaultAudioTrack(): Promise<VimeoAudioTrack | undefined>; getChapters(): Promise<VimeoChapter[]>; getCurrentChapter(): Promise<VimeoChapter | undefined>; /** * Add a cue point to the video * @throws {RangeError} If time is less than 0 or greater than the video's duration * @throws {UnsupportedError} If cue points are not supported */ addCuePoint<T = Record<string, unknown>>(time: Seconds, data?: T): Promise<string>; /** * Remove a cue point from the video * @throws {InvalidParameterError} If the cue point with the specified ID cannot be found * @throws {UnsupportedError} If cue points are not supported */ removeCuePoint(id: string): Promise<string>; /** * Get all active cue points * @throws {UnsupportedError} If cue points are not supported */ getCuePoints<T = Record<string, unknown>>(): Promise<VimeoCuePoint<T>[]>; /** * Get the primary player color */ getColor(): Promise<HexColor>; /** * Set the primary player color * @throws {TypeError} If the color is not a valid hex or rgb color */ setColor(color: HexColor): Promise<HexColor>; getColors(): Promise<VimeoColors>; /** * Set multiple player colors * @throws {TypeError} If any color is not a valid hex or rgb color */ setColors( colors: VimeoColors ): Promise<VimeoColors>; /** * Get the camera properties for 360° videos */ getCameraProps(): Promise<CameraProperties>; /** * Set the camera properties for 360° videos * @throws {RangeError} If any camera property is out of range */ setCameraProps( camera: Partial<CameraProperties> ): Promise<CameraProperties>; /** * Get the embed code of the video (HTML iframe) * @throws {PrivacyError} If the video is private */ getVideoEmbedCode(): Promise<string>; /** * Get the URL of the video * @throws {PrivacyError} If the video is private */ getVideoUrl(): Promise<VimeoUrl>; /** * Get the video ID */ getVideoId(): Promise<number>; /** * Get the video title */ getVideoTitle(): Promise<string>; /** * Get the native width of the currently‐playing video. * The width of the highest resolution available will be used before playback begins. */ getVideoWidth(): Promise<Pixels>; /** * Get the native height of the currently‐playing video. * The height of the highest resolution available will be used before playback begins. */ getVideoHeight(): Promise<Pixels>; /** * Syncs a Timing Object to the video player (https://webtiming.github.io/timingobject/) */ setTimingSrc(timingObject: typeof TimingObject, options?: TimingSrcConnectorOptions): Promise<TimingSrcConnector>; requestPictureInPicture(): Promise<void>; exitPictureInPicture(): Promise<void>; getPictureInPicture(): Promise<boolean>; requestFullscreen(): Promise<void>; exitFullscreen(): Promise<void>; getFullscreen(): Promise<boolean>; getEnded(): Promise<boolean>; unload(): Promise<void>; remotePlaybackPrompt(): Promise<void>; getRemotePlaybackAvailability(): Promise<boolean>; getRemotePlaybackState(): Promise<'connecting' | 'connected' | 'disconnected'>; /** * Add an event listener for the specified event * @param event The event name to listen for * @param callback The function to call when the event occurs */ on<E extends keyof PlayerEventMap, T = Record<string, unknown>>( event: E, callback: (data: EventDataWithGenerics<E, T>) => void ): void; /** * Remove an event listener for the specified event * @param event The event name to stop listening for * @param callback The function to remove (optional, removes all listeners if not provided) */ off<E extends keyof PlayerEventMap, T = Record<string, unknown>>( event: E, callback?: (data: EventDataWithGenerics<E, T>) => void ): void; /** * Add an event listener that will be triggered only once * @param event The event name to listen for * @param callback The function to call when the event occurs */ once<E extends keyof PlayerEventMap, T = Record<string, unknown>>( event: E, callback: (data: EventDataWithGenerics<E, T>) => void ): void; } export default Player; export * from "./events"; export * from "./errors"; export * from "./formats";