///
import * as i0 from '@angular/core';
import { InjectionToken, AfterViewInit, OnChanges, OnDestroy, ElementRef, SimpleChanges } from '@angular/core';
import { Observable } from 'rxjs';
/** Quality of the placeholder image. */
type PlaceholderImageQuality = 'high' | 'standard' | 'low';
/** Injection token used to configure the `YouTubePlayer`. */
declare const YOUTUBE_PLAYER_CONFIG: InjectionToken;
/** Object that can be used to configure the `YouTubePlayer`. */
interface YouTubePlayerConfig {
/** Whether to load the YouTube iframe API automatically. Defaults to `true`. */
loadApi?: boolean;
/**
* By default the player shows a placeholder image instead of loading the YouTube API which
* improves the initial page load performance. Use this option to disable the placeholder loading
* behavior globally. Defaults to `false`.
*/
disablePlaceholder?: boolean;
/** Accessible label for the play button inside of the placeholder. */
placeholderButtonLabel?: string;
/**
* Quality of the displayed placeholder image. Defaults to `standard`,
* because not all video have a high-quality placeholder.
*/
placeholderImageQuality?: PlaceholderImageQuality;
}
/**
* Angular component that renders a YouTube player via the YouTube player
* iframe API.
* @see https://developers.google.com/youtube/iframe_api_reference
*/
declare class YouTubePlayer implements AfterViewInit, OnChanges, OnDestroy {
private _ngZone;
private readonly _nonce;
private readonly _changeDetectorRef;
private readonly _elementRef;
private _player;
private _pendingPlayer;
private _existingApiReadyCallback;
private _pendingPlayerState;
private readonly _destroyed;
private readonly _playerChanges;
protected _isLoading: boolean;
protected _hasPlaceholder: boolean;
/** Whether we're currently rendering inside a browser. */
private readonly _isBrowser;
/** YouTube Video ID to view */
videoId: string | undefined;
/** Height of video player */
get height(): number;
set height(height: number | undefined);
private _height;
/** Width of video player */
get width(): number;
set width(width: number | undefined);
private _width;
/** The moment when the player is supposed to start playing */
startSeconds: number | undefined;
/** The moment when the player is supposed to stop playing */
endSeconds: number | undefined;
/** The suggested quality of the player */
suggestedQuality: YT.SuggestedVideoQuality | undefined;
/**
* Extra parameters used to configure the player. See:
* https://developers.google.com/youtube/player_parameters.html?playerVersion=HTML5#Parameters
*/
playerVars: YT.PlayerVars | undefined;
/** Whether cookies inside the player have been disabled. */
disableCookies: boolean;
/** Whether to automatically load the YouTube iframe API. Defaults to `true`. */
loadApi: boolean;
/**
* By default the player shows a placeholder image instead of loading the YouTube API which
* improves the initial page load performance. This input allows for the behavior to be disabled.
*/
disablePlaceholder: boolean;
/**
* Whether the iframe will attempt to load regardless of the status of the api on the
* page. Set this to true if you don't want the `onYouTubeIframeAPIReady` field to be
* set on the global window.
*/
showBeforeIframeApiLoads: boolean;
/** Accessible label for the play button inside of the placeholder. */
placeholderButtonLabel: string;
/**
* Quality of the displayed placeholder image. Defaults to `standard`,
* because not all video have a high-quality placeholder.
*/
placeholderImageQuality: PlaceholderImageQuality;
/** Emits when the player is initialized. */
readonly ready: Observable;
/** Emits when the state of the player has changed. */
readonly stateChange: Observable;
/** Emits when there's an error while initializing the player. */
readonly error: Observable;
/** Emits when the underlying API of the player has changed. */
readonly apiChange: Observable;
/** Emits when the playback quality has changed. */
readonly playbackQualityChange: Observable;
/** Emits when the playback rate has changed. */
readonly playbackRateChange: Observable;
/** The element that will be replaced by the iframe. */
youtubeContainer: ElementRef;
constructor(...args: unknown[]);
ngAfterViewInit(): void;
ngOnChanges(changes: SimpleChanges): void;
ngOnDestroy(): void;
/** See https://developers.google.com/youtube/iframe_api_reference#playVideo */
playVideo(): void;
/** See https://developers.google.com/youtube/iframe_api_reference#pauseVideo */
pauseVideo(): void;
/** See https://developers.google.com/youtube/iframe_api_reference#stopVideo */
stopVideo(): void;
/** See https://developers.google.com/youtube/iframe_api_reference#seekTo */
seekTo(seconds: number, allowSeekAhead: boolean): void;
/** See https://developers.google.com/youtube/iframe_api_reference#mute */
mute(): void;
/** See https://developers.google.com/youtube/iframe_api_reference#unMute */
unMute(): void;
/** See https://developers.google.com/youtube/iframe_api_reference#isMuted */
isMuted(): boolean;
/** See https://developers.google.com/youtube/iframe_api_reference#setVolume */
setVolume(volume: number): void;
/** See https://developers.google.com/youtube/iframe_api_reference#getVolume */
getVolume(): number;
/** See https://developers.google.com/youtube/iframe_api_reference#setPlaybackRate */
setPlaybackRate(playbackRate: number): void;
/** See https://developers.google.com/youtube/iframe_api_reference#getPlaybackRate */
getPlaybackRate(): number;
/** See https://developers.google.com/youtube/iframe_api_reference#getAvailablePlaybackRates */
getAvailablePlaybackRates(): number[];
/** See https://developers.google.com/youtube/iframe_api_reference#getVideoLoadedFraction */
getVideoLoadedFraction(): number;
/** See https://developers.google.com/youtube/iframe_api_reference#getPlayerState */
getPlayerState(): YT.PlayerState | undefined;
/** See https://developers.google.com/youtube/iframe_api_reference#getCurrentTime */
getCurrentTime(): number;
/** See https://developers.google.com/youtube/iframe_api_reference#getPlaybackQuality */
getPlaybackQuality(): YT.SuggestedVideoQuality;
/** See https://developers.google.com/youtube/iframe_api_reference#getAvailableQualityLevels */
getAvailableQualityLevels(): YT.SuggestedVideoQuality[];
/** See https://developers.google.com/youtube/iframe_api_reference#getDuration */
getDuration(): number;
/** See https://developers.google.com/youtube/iframe_api_reference#getVideoUrl */
getVideoUrl(): string;
/** See https://developers.google.com/youtube/iframe_api_reference#getVideoEmbedCode */
getVideoEmbedCode(): string;
/**
* Attempts to put the player into fullscreen mode, depending on browser support.
* @param options Options controlling how the element behaves in fullscreen mode.
*/
requestFullscreen(options?: FullscreenOptions): Promise;
/**
* Loads the YouTube API and sets up the player.
* @param playVideo Whether to automatically play the video once the player is loaded.
*/
protected _load(playVideo: boolean): void;
/** Loads the player depending on the internal state of the component. */
private _conditionallyLoad;
/** Whether to show the placeholder element. */
protected _shouldShowPlaceholder(): boolean;
/** Gets an object that should be used to store the temporary API state. */
private _getPendingState;
/**
* Determines whether a change in the component state
* requires the YouTube player to be recreated.
*/
private _shouldRecreatePlayer;
/**
* Creates a new YouTube player and destroys the existing one.
* @param playVideo Whether to play the video once it loads.
*/
private _createPlayer;
/** Applies any state that changed before the player was initialized. */
private _applyPendingPlayerState;
/** Cues the player based on the current component state. */
private _cuePlayer;
/** Sets the player's size based on the current input values. */
private _setSize;
/** Sets the player's quality based on the current input values. */
private _setQuality;
/** Gets an observable that adds an event listener to the player when a user subscribes to it. */
private _getLazyEmitter;
static ɵfac: i0.ɵɵFactoryDeclaration;
static ɵcmp: i0.ɵɵComponentDeclaration;
static ngAcceptInputType_height: unknown;
static ngAcceptInputType_width: unknown;
static ngAcceptInputType_startSeconds: number | undefined;
static ngAcceptInputType_endSeconds: number | undefined;
static ngAcceptInputType_disableCookies: unknown;
static ngAcceptInputType_loadApi: unknown;
static ngAcceptInputType_disablePlaceholder: unknown;
static ngAcceptInputType_showBeforeIframeApiLoads: unknown;
}
declare class YouTubePlayerModule {
static ɵfac: i0.ɵɵFactoryDeclaration;
static ɵmod: i0.ɵɵNgModuleDeclaration;
static ɵinj: i0.ɵɵInjectorDeclaration;
}
export { YOUTUBE_PLAYER_CONFIG, YouTubePlayer, YouTubePlayerModule };
export type { PlaceholderImageQuality, YouTubePlayerConfig };