/// /// import { BaseComponent, IBaseComponentOptions } from '@iiif/base-component'; import { Helper } from '@iiif/manifold'; import { MediaType } from '@iiif/vocabulary'; import { Annotation, AnnotationBody, Canvas, Manifest, Range } from 'manifesto.js'; export interface IAVComponentContent { currentTime: string; collapse: string; duration: string; expand: string; mute: string; next: string; pause: string; play: string; previous: string; unmute: string; fastForward: string; fastRewind: string; fullscreen: string; } export interface IAVComponentData { [key: string]: any; adaptiveAuthEnabled?: boolean; autoPlay?: boolean; autoSelectRange?: boolean; canvasId?: string; constrainNavigationToRange?: boolean; content?: IAVComponentContent; defaultAspectRatio?: number; doubleClickMS?: number; helper?: Helper; halveAtWidth?: number; limitToRange?: boolean; posterImageRatio?: number; rangeId?: string; virtualCanvasEnabled?: boolean; waveformBarSpacing?: number; waveformBarWidth?: number; waveformColor?: string; enableFastForward?: boolean; enableFastRewind?: boolean; } declare class VirtualCanvas { canvases: Canvas[]; id: string; durationMap: { [id: string]: { duration: number; runningDuration: number; }; }; totalDuration: number; constructor(); addCanvas(canvas: Canvas): void; getContent(): Annotation[]; getDuration(): number | null; getWidth(): number; getHeight(): number; } export interface IAVCanvasInstanceData extends IAVComponentData { canvas?: Canvas | VirtualCanvas; range?: Range; visible?: boolean; volume?: number; } declare class Tagged { protected _nominal_: N; } export declare type Nominal = T & Tagged; export declare type TimelineTime = Nominal; export declare type TimelineTimeMs = Nominal; export declare type CanvasTime = Nominal; export declare type AnnotationTime = Nominal; export declare type TimeStop = { type: 'time-stop'; canvasIndex: number; start: TimelineTime; end: TimelineTime; duration: TimelineTime; rangeId: string; rawCanvasSelector: string; rangeStack: string[]; canvasTime: { start: CanvasTime; end: CanvasTime; }; }; export declare type TimePlan = { type: 'time-plan'; duration: TimelineTime; start: TimelineTime; end: TimelineTime; stops: TimeStop[]; rangeId: string; canvases: any[]; rangeStack: string[]; rangeOrder: string[]; items: Array; }; export declare type MediaOptions = { adaptiveAuthEnabled?: boolean; mediaSyncMarginSecs?: number; }; declare abstract class MediaFormat { options: MediaOptions; source: string; protected constructor(source: string, options?: MediaOptions); attachTo(element: HTMLMediaElement): void; } export interface MediaSource { type: string; format?: MediaType; mediaSource: string; canvasId: string; x?: number; y?: number; width?: number; height?: number; start: AnnotationTime; end: AnnotationTime; bodyId: string; offsetStart?: CanvasTime; offsetEnd?: CanvasTime; } declare class MediaElement { type: string; format?: string; mediaSource: string; source: MediaSource; element: HTMLMediaElement; instance: MediaFormat; mediaSyncMarginSecs: number; constructor(source: MediaSource, mediaOptions?: MediaOptions); syncClock(time: AnnotationTime): void; getCanvasId(): string; isWithinRange(time: number): boolean; load(withAudio?: boolean): Promise; setSize(top: number, left: number, width: number, height: number): void; isDash(): boolean | "" | undefined; isHls(): any; isMpeg(): boolean; stop(): void; play(time?: AnnotationTime): Promise; pause(): void; isBuffering(): boolean; } declare class CompositeMediaElement { elements: MediaElement[]; activeElement: MediaElement; playing: boolean; canvasMap: { [id: string]: MediaElement[]; }; private _onPlay; private _onPause; constructor(mediaElements: MediaElement[]); syncClock(time: AnnotationTime): void; onPlay(func: (canvasId: string, time: number, el: HTMLMediaElement) => void): void; onPause(func: (canvasId: string, time: number, el: HTMLMediaElement) => void): void; findElementInRange(canvasId: string, time: number): MediaElement | undefined; appendTo($element: JQuery): void; load(): Promise; seekToMediaTime(realTime: AnnotationTime): Promise; seekTo(canvasId: string, time: AnnotationTime): Promise; play(canvasId?: string, time?: AnnotationTime): Promise; pause(): void; setVolume(volume: number): void; isBuffering(): boolean; } declare class TimePlanPlayer { plan: TimePlan; fullPlan: TimePlan; media: CompositeMediaElement; currentStop: TimeStop; currentRange: string; continuous: boolean; playing: boolean; _time: TimelineTime; notifyRangeChange: (rangeId: string, stops: { from: TimeStop; to: TimeStop; }) => void; notifyTimeChange: (time: TimelineTime) => void; notifyPlaying: (playing: boolean) => void; logging: boolean; constructor(media: CompositeMediaElement, plan: TimePlan, notifyRangeChange: (rangeId: string, stops: { from: TimeStop; to: TimeStop; }) => void, notifyTimeChange: (time: TimelineTime) => void, notifyPlaying: (playing: boolean) => void); selectPlan({ reset, rangeId }?: { reset?: boolean; rangeId?: string; }): void; initialisePlan(plan: TimePlan): void; getCurrentRange(): { start: number; end: number; duration: number; }; getTime(): TimelineTime; setInternalTime(time: TimelineTime): TimelineTime; log(...content: any[]): void; setContinuousPlayback(continuous: boolean): void; setIsPlaying(playing: boolean): void; play(): TimelineTime; currentTimelineTime(): TimelineTime; currentMediaTime(): AnnotationTime; pause(): TimelineTime; setVolume(volume: number): void; findStop(time: number): TimeStop | undefined; setTime(time: TimelineTime, setRange?: boolean): Promise; next(): TimelineTime; previous(): TimelineTime; setRange(id: string): TimelineTime; isBuffering(): boolean; advanceToTime(time: TimelineTime): { paused?: boolean; buffering?: boolean; time: TimelineTime | undefined; }; hasEnded(): boolean; advanceToStop(from: TimeStop, to: TimeStop, rangeId?: string): Promise; getStartTime(): TimelineTime; getDuration(): TimelineTime; } export declare class CanvasInstance extends BaseComponent { private _$canvasContainer; private _$canvasDuration; private _$canvasHoverHighlight; private _$canvasHoverPreview; private _$canvasTime; private _$canvasTimelineContainer; private _$controlsContainer; private _$durationHighlight; private _$hoverPreviewTemplate; private _$nextButton; private _$fastForward; private _$fastRewind; private _$optionsContainer; private _$playButton; private _$prevButton; private _$rangeHoverHighlight; private _$rangeHoverPreview; private _$rangeTimelineContainer; private _$timeDisplay; private _$timelineItemContainer; private _canvasClockFrequency; private _canvasClockInterval; private _canvasClockStartDate; private _canvasClockTime; private _canvasHeight; private _canvasWidth; private _compositeWaveform; private _contentAnnotations; private _data; private _highPriorityFrequency; private _highPriorityInterval; private _isPlaying; private _isStalled; private _lowPriorityFrequency; private _lowPriorityInterval; private _mediaSyncMarginSecs; private _rangeSpanPadding; private _readyMediaCount; private _stallRequestedBy; private _volume; private _wasPlaying; private _waveformCanvas; private _waveformCtx; ranges: Range[]; waveforms: string[]; private _buffering; private _bufferShown; $playerElement: JQuery; _$element: JQuery; isOnlyCanvasInstance: boolean; logMessage: (message: string) => void; timePlanPlayer: TimePlanPlayer; private _$canvasLoadingProgress; private _$fullscreenButton; private _mediaDuration; constructor(options: IBaseComponentOptions); loaded(): void; isPlaying(): boolean; getClockTime(): TimelineTime; createTimeStops(): void; init(): void; private _getBody; private _getDuration; data(): IAVCanvasInstanceData; /** * @deprecated */ isVirtual(): boolean; isVisible(): boolean; includesVirtualSubCanvas(canvasId: string): boolean; setVisibility(visibility: boolean): void; viewRange(rangeId: string): void; limitToRange: boolean; currentRange?: string; setCurrentRangeId(range: null | string, { autoChanged, limitToRange }?: { autoChanged?: boolean; limitToRange?: boolean; }): void; setVolume(volume: number): void; setLimitToRange(limitToRange: boolean): void; set(data: IAVCanvasInstanceData): void; private _hasRangeChanged; private _getRangeForCurrentTime; private _rangeSpansCurrentTime; private _rangeNavigable; private _render; getCanvasId(): string | undefined; private _updateHoverPreview; private _previous; private _next; destroy(): void; private _convertToPercentage; private _renderMediaElement; private _getWaveformData; private waveformDeltaX; private waveformPageX; private waveFormInit; private _renderWaveform; private getRangeTiming; private _drawWaveform; private _scaleY; private _getWaveformMaxAndMin; isLimitedToRange(): boolean | undefined; hasCurrentRange(): boolean; private _updateCurrentTimeDisplay; private _updateDurationDisplay; private _renderSyncIndicator; setCurrentTime(seconds: TimelineTime): Promise; getCurrentTime(): number; now(): TimelineTime; nowMs(): TimelineTimeMs; private _setCurrentTime; private _rewind; private _fastforward; play(withoutUpdate?: boolean): Promise; pause(withoutUpdate?: boolean): void; private _isNavigationConstrainedToRange; private _canvasClockUpdater; private _highPriorityUpdater; private _lowPriorityUpdater; private _updateMediaActiveStates; private _pauseMedia; private _setMediaCurrentTime; private _synchronizeMedia; private _checkMediaSynchronization; private _playbackStalled; resize(): void; } export declare class AVComponent extends BaseComponent { static newRanges: boolean; private _data; options: IBaseComponentOptions; canvasInstances: CanvasInstance[]; private _checkAllMediaReadyInterval; private _checkAllWaveformsReadyInterval; private _readyMedia; private _readyWaveforms; private _posterCanvasWidth; private _posterCanvasHeight; private _$posterContainer; private _$posterImage; private _$posterExpandButton; private _$element; private _posterImageExpanded; constructor(options: IBaseComponentOptions); protected _init(): boolean; getCurrentCanvasInstance(): Canvas | null; data(): IAVComponentData; set(data: IAVComponentData): void; private _render; reset(): void; private _reset; setCurrentTime(time: number): Promise; getCurrentTime(): number; isPlaying(): boolean; private _checkAllMediaReady; private _checkAllWaveformsReady; private _getCanvasInstancesWithWaveforms; private _getCanvases; private _initCanvas; getCurrentRange(): Range | null; private _prevRange; private _nextRange; private _setCanvasInstanceVolumes; private _getNormaliseCanvasId; private _getCanvasInstanceById; private _getCurrentCanvas; private _rewind; play(): void; viewRange(rangeId: string): void; pause(): void; playRange(rangeId: string, autoChanged?: boolean): void; showCanvas(canvasId: string): void; private _logMessage; private _getPosterImageCss; resize(): void; } export interface IAVVolumeControlState { volume?: number; } export declare class AVVolumeControl extends BaseComponent { private _$volumeSlider; private _$volumeMute; private _lastVolume; private _$element; private _data; constructor(options: IBaseComponentOptions); protected _init(): boolean; set(data: IAVVolumeControlState): void; private _render; protected _resize(): void; } declare function canPlayHls(): boolean; declare function createTimePlansFromManifest(manifest: Manifest, mediaElements: MediaElement[]): TimePlan; declare function debounce(fn: any, debounceDuration: number): any; declare function diffData(a: any, b: any): string[]; declare function extractMediaFromAnnotationBodies(annotation: Annotation): AnnotationBody | null; declare function formatTime(aNumber: number): string; declare function getFirstTargetedCanvasId(range: Range): string | undefined; declare function getMediaSourceFromAnnotationBody(annotation: Annotation, body: AnnotationBody, canvasDimensions: { id: string; width: number; height: number; duration: number; }): MediaSource; declare function getSpatialComponent(target: string): number[] | null; declare function getTimestamp(): string; declare function isHLSFormat(format: MediaType): boolean; declare function isIE(): number | boolean; declare function isMpegDashFormat(format: MediaType): boolean; declare function isSafari(): boolean; declare function isVirtual(canvas: Canvas | VirtualCanvas | undefined): canvas is VirtualCanvas; declare function normalise(num: number, min: number, max: number): number; declare function retargetTemporalComponent(canvases: Canvas[], target: string): string | undefined; export declare const AVComponentUtils: { canPlayHls: typeof canPlayHls; createTimePlansFromManifest: typeof createTimePlansFromManifest; debounce: typeof debounce; diffData: typeof diffData; diff: typeof diffData; extractMediaFromAnnotationBodies: typeof extractMediaFromAnnotationBodies; formatTime: typeof formatTime; getFirstTargetedCanvasId: typeof getFirstTargetedCanvasId; getMediaSourceFromAnnotationBody: typeof getMediaSourceFromAnnotationBody; getSpatialComponent: typeof getSpatialComponent; getTimestamp: typeof getTimestamp; hlsMimeTypes: string[]; hlsMediaTypes: string[]; isHLSFormat: typeof isHLSFormat; isIE: typeof isIE; isMpegDashFormat: typeof isMpegDashFormat; isSafari: typeof isSafari; isVirtual: typeof isVirtual; normalise: typeof normalise; normalize: typeof normalise; normalizeNumber: typeof normalise; normaliseNumber: typeof normalise; retargetTemporalComponent: typeof retargetTemporalComponent; }; export declare class Events { static PLAY: string; static PAUSE: string; static MEDIA_READY: string; static MEDIA_ERROR: string; static LOG: string; static RANGE_CHANGED: string; static WAVEFORM_READY: string; static WAVEFORMS_READY: string; static FULLSCREEN: string; } export declare class CanvasInstanceEvents { static NEXT_RANGE: string; static PAUSECANVAS: string; static PLAYCANVAS: string; static PREVIOUS_RANGE: string; } export declare class VolumeEvents { static VOLUME_CHANGED: string; } export as namespace IIIFAVComponent;