@memberjunction/ng-media-player 0.0.1 → 5.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +241 -28
- package/dist/lib/media-player/cue-utils.d.ts +24 -0
- package/dist/lib/media-player/cue-utils.d.ts.map +1 -0
- package/dist/lib/media-player/cue-utils.js +47 -0
- package/dist/lib/media-player/cue-utils.js.map +1 -0
- package/dist/lib/media-player/media-player.component.d.ts +326 -0
- package/dist/lib/media-player/media-player.component.d.ts.map +1 -0
- package/dist/lib/media-player/media-player.component.js +1545 -0
- package/dist/lib/media-player/media-player.component.js.map +1 -0
- package/dist/lib/media-player/playback-state.d.ts +46 -0
- package/dist/lib/media-player/playback-state.d.ts.map +1 -0
- package/dist/lib/media-player/playback-state.js +86 -0
- package/dist/lib/media-player/playback-state.js.map +1 -0
- package/dist/lib/media-player/transcript-layout.d.ts +35 -0
- package/dist/lib/media-player/transcript-layout.d.ts.map +1 -0
- package/dist/lib/media-player/transcript-layout.js +37 -0
- package/dist/lib/media-player/transcript-layout.js.map +1 -0
- package/dist/lib/media-player/waveform-utils.d.ts +45 -0
- package/dist/lib/media-player/waveform-utils.d.ts.map +1 -0
- package/dist/lib/media-player/waveform-utils.js +108 -0
- package/dist/lib/media-player/waveform-utils.js.map +1 -0
- package/dist/lib/media-player.types.d.ts +107 -0
- package/dist/lib/media-player.types.d.ts.map +1 -0
- package/dist/lib/media-player.types.js +9 -0
- package/dist/lib/media-player.types.js.map +1 -0
- package/dist/lib/storage-media-player/storage-media-player.component.d.ts +77 -0
- package/dist/lib/storage-media-player/storage-media-player.component.d.ts.map +1 -0
- package/dist/lib/storage-media-player/storage-media-player.component.js +283 -0
- package/dist/lib/storage-media-player/storage-media-player.component.js.map +1 -0
- package/dist/public-api.d.ts +8 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/public-api.js +11 -0
- package/dist/public-api.js.map +1 -0
- package/package.json +36 -7
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
import { ElementRef, EventEmitter, OnDestroy } from '@angular/core';
|
|
2
|
+
import { MediaCueEvent, MediaPlaybackState, MediaPlayerCancelableEvent, MediaRateEvent, MediaSeekEvent, MediaTrack, MediaTranscriptCue } from '../media-player.types';
|
|
3
|
+
import { TranscriptPosition } from './transcript-layout';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* `mj-media-player` — a generic, framework-agnostic media player.
|
|
7
|
+
*
|
|
8
|
+
* Renders one or many audio/video tracks with a custom transport bar (play/pause,
|
|
9
|
+
* click-and-drag scrubber, skip ±N, playback-rate menu, volume + mute, fullscreen),
|
|
10
|
+
* a **real** audio waveform (decoded client-side, or supplied precomputed via
|
|
11
|
+
* `MediaTrack.Peaks`) that doubles as the scrubber, and an optional time-synced
|
|
12
|
+
* transcript panel whose cues are clickable and auto-highlight as playback advances.
|
|
13
|
+
*
|
|
14
|
+
* This component has ZERO MemberJunction-core dependencies — it is pure Angular and
|
|
15
|
+
* is safe to reuse in any application. The MJStorage binding lives in the separate
|
|
16
|
+
* `mj-storage-media-player` wrapper.
|
|
17
|
+
*/
|
|
18
|
+
export declare class MJMediaPlayerComponent implements OnDestroy {
|
|
19
|
+
private cdr;
|
|
20
|
+
private host;
|
|
21
|
+
constructor();
|
|
22
|
+
/** The track(s) to play. One audio track → transport bar; many videos → grid. */
|
|
23
|
+
set Tracks(value: MediaTrack[]);
|
|
24
|
+
get Tracks(): MediaTrack[];
|
|
25
|
+
private _tracks;
|
|
26
|
+
/** Optional transcript cues. When set (and `ShowTranscript`), a transcript panel renders. */
|
|
27
|
+
set Transcript(value: MediaTranscriptCue[] | null);
|
|
28
|
+
get Transcript(): MediaTranscriptCue[] | null;
|
|
29
|
+
private _transcript;
|
|
30
|
+
/** Begin playback automatically once media is ready. */
|
|
31
|
+
Autoplay: boolean;
|
|
32
|
+
/** Start playback at this position (ms) once metadata loads. */
|
|
33
|
+
StartAtMs: number | null;
|
|
34
|
+
/** Whether the transcript panel is shown (when a transcript is provided). */
|
|
35
|
+
ShowTranscript: boolean;
|
|
36
|
+
/** Whether the transcript show/hide toggle button renders in the transport bar. */
|
|
37
|
+
ShowTranscriptToggle: boolean;
|
|
38
|
+
/** Whether the playback-rate menu is shown. */
|
|
39
|
+
ShowSpeedControl: boolean;
|
|
40
|
+
/** Whether the ±skip buttons are shown. */
|
|
41
|
+
ShowSkipControls: boolean;
|
|
42
|
+
/** Whether the volume slider + mute are shown. */
|
|
43
|
+
ShowVolume: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Whether the real audio waveform (which doubles as the scrubber) is shown for
|
|
46
|
+
* audio-only tracks. On by default. When a track supplies {@link MediaTrack.Peaks}
|
|
47
|
+
* those are rendered directly; otherwise the player decodes the track URL client-side
|
|
48
|
+
* to extract real peaks, falling back to a plain progress bar if decoding fails.
|
|
49
|
+
*/
|
|
50
|
+
ShowWaveform: boolean;
|
|
51
|
+
/** Number of bars the waveform renders / downsamples to. */
|
|
52
|
+
WaveformBarCount: number;
|
|
53
|
+
/** Whether the fullscreen button is shown for video. */
|
|
54
|
+
ShowFullscreen: boolean;
|
|
55
|
+
/** Number of seconds the skip buttons jump. */
|
|
56
|
+
SkipSeconds: number;
|
|
57
|
+
/** The playback rates offered in the rate menu. */
|
|
58
|
+
PlaybackRates: number[];
|
|
59
|
+
/** The initial playback rate. */
|
|
60
|
+
InitialRate: number;
|
|
61
|
+
/** The initial volume (0..1). */
|
|
62
|
+
InitialVolume: number;
|
|
63
|
+
/**
|
|
64
|
+
* Where the transcript panel sits relative to the media. Defaults to `'bottom'`
|
|
65
|
+
* (full width below the player, filling remaining height) which reads better than
|
|
66
|
+
* the narrower side layout; consumers can opt into `'side'`.
|
|
67
|
+
*/
|
|
68
|
+
TranscriptPosition: TranscriptPosition;
|
|
69
|
+
BeforePlay: EventEmitter<MediaPlayerCancelableEvent>;
|
|
70
|
+
AfterPlay: EventEmitter<void>;
|
|
71
|
+
BeforePause: EventEmitter<MediaPlayerCancelableEvent>;
|
|
72
|
+
AfterPause: EventEmitter<void>;
|
|
73
|
+
BeforeSeek: EventEmitter<MediaSeekEvent>;
|
|
74
|
+
AfterSeek: EventEmitter<number>;
|
|
75
|
+
BeforeRateChange: EventEmitter<MediaRateEvent>;
|
|
76
|
+
AfterRateChange: EventEmitter<number>;
|
|
77
|
+
CueActivated: EventEmitter<MediaCueEvent>;
|
|
78
|
+
CueClicked: EventEmitter<MediaCueEvent>;
|
|
79
|
+
TimeUpdate: EventEmitter<number>;
|
|
80
|
+
DurationChange: EventEmitter<number>;
|
|
81
|
+
Ended: EventEmitter<void>;
|
|
82
|
+
/** Emits whenever the primary element's {@link MediaPlaybackState} transitions. */
|
|
83
|
+
StateChanged: EventEmitter<MediaPlaybackState>;
|
|
84
|
+
/** Emits the new visibility (`true` = shown) whenever the transcript is toggled. */
|
|
85
|
+
TranscriptVisibilityChanged: EventEmitter<boolean>;
|
|
86
|
+
/** The primary media element (the single audio/video, or the first video in a grid). */
|
|
87
|
+
primaryMedia?: ElementRef<HTMLMediaElement>;
|
|
88
|
+
private _currentTimeMs;
|
|
89
|
+
private _durationMs;
|
|
90
|
+
private _isPlaying;
|
|
91
|
+
private _playbackRate;
|
|
92
|
+
private _volume;
|
|
93
|
+
private _muted;
|
|
94
|
+
private _activeCueIndex;
|
|
95
|
+
private _isFullscreen;
|
|
96
|
+
private _isScrubbing;
|
|
97
|
+
private _hasError;
|
|
98
|
+
private _rateMenuOpen;
|
|
99
|
+
/** Media elements we've already nudged to resolve a real (finite) duration. */
|
|
100
|
+
private _durationForced;
|
|
101
|
+
/** True while a force-duration nudge is in flight — suppresses the transient time/position jump. */
|
|
102
|
+
private _suppressTimeUpdate;
|
|
103
|
+
private _activeMediaEl;
|
|
104
|
+
private _rateInitialized;
|
|
105
|
+
/** Runtime (toggle-driven) transcript visibility. Reset to `true` when a transcript is set. */
|
|
106
|
+
private _transcriptUserVisible;
|
|
107
|
+
/** The high-level playback lifecycle state of the primary element. */
|
|
108
|
+
private _mediaState;
|
|
109
|
+
/**
|
|
110
|
+
* Whether the buffering spinner is currently visible. Distinct from `_mediaState ===
|
|
111
|
+
* 'buffering'`: the state flips immediately, but the *visible* spinner is debounced by
|
|
112
|
+
* {@link BUFFERING_INDICATOR_DELAY_MS} so instant seeks don't flash it.
|
|
113
|
+
*/
|
|
114
|
+
private _bufferingVisible;
|
|
115
|
+
/** Pending timer that promotes a `buffering` state to a visible spinner after the delay. */
|
|
116
|
+
private _bufferingTimer;
|
|
117
|
+
/** Per-track computed/supplied waveform peaks (0..1), keyed by track Id. */
|
|
118
|
+
private _peaksByTrackId;
|
|
119
|
+
/** Track Ids whose client-side decode failed (→ fall back to a plain progress bar). */
|
|
120
|
+
private _waveformFailedTrackIds;
|
|
121
|
+
/** Track Ids currently being decoded (avoid duplicate in-flight decodes). */
|
|
122
|
+
private _waveformPendingTrackIds;
|
|
123
|
+
/** Lazily-created AudioContext used only for client-side peak extraction. */
|
|
124
|
+
private _audioCtx;
|
|
125
|
+
/** Whether the user prefers reduced motion (suppresses the bar draw-in animation). */
|
|
126
|
+
private _prefersReducedMotion;
|
|
127
|
+
get CurrentTimeMs(): number;
|
|
128
|
+
get DurationMs(): number;
|
|
129
|
+
get IsPlaying(): boolean;
|
|
130
|
+
get PlaybackRate(): number;
|
|
131
|
+
get ActiveCueIndex(): number;
|
|
132
|
+
get Muted(): boolean;
|
|
133
|
+
get Volume(): number;
|
|
134
|
+
get IsFullscreen(): boolean;
|
|
135
|
+
get RateMenuOpen(): boolean;
|
|
136
|
+
get HasError(): boolean;
|
|
137
|
+
/** The current high-level playback lifecycle state of the primary element. */
|
|
138
|
+
get MediaState(): MediaPlaybackState;
|
|
139
|
+
/** True during the initial source load (shows the "Loading…" stage indicator). */
|
|
140
|
+
get IsLoading(): boolean;
|
|
141
|
+
/**
|
|
142
|
+
* True while buffering — but reflects the *debounced* visible flag, so an instant seek
|
|
143
|
+
* that resolves within {@link BUFFERING_INDICATOR_DELAY_MS} never shows the spinner.
|
|
144
|
+
*/
|
|
145
|
+
get IsBuffering(): boolean;
|
|
146
|
+
/** Whether the stage should show ANY busy indicator (loading or visible buffering). */
|
|
147
|
+
get ShowBusyIndicator(): boolean;
|
|
148
|
+
/** The label shown alongside the busy spinner. */
|
|
149
|
+
get BusyLabel(): string;
|
|
150
|
+
/** A short, screen-reader-friendly status phrase reflecting the current state. */
|
|
151
|
+
get StatusLabel(): string;
|
|
152
|
+
get HasTracks(): boolean;
|
|
153
|
+
/** Whether a transcript (one or more cues) is available, regardless of visibility. */
|
|
154
|
+
get HasTranscript(): boolean;
|
|
155
|
+
/**
|
|
156
|
+
* Whether the transcript panel should render right now — requires a transcript,
|
|
157
|
+
* the `ShowTranscript` master switch, AND the runtime toggle to be visible.
|
|
158
|
+
*/
|
|
159
|
+
get ShowTranscriptPanel(): boolean;
|
|
160
|
+
/** The current runtime visibility of the transcript (toggle-driven). */
|
|
161
|
+
get TranscriptVisible(): boolean;
|
|
162
|
+
/** Whether the transcript show/hide toggle button should render in the transport. */
|
|
163
|
+
get ShowTranscriptToggleButton(): boolean;
|
|
164
|
+
get ScrubFraction(): number;
|
|
165
|
+
get ScrubPercent(): number;
|
|
166
|
+
get PrefersReducedMotion(): boolean;
|
|
167
|
+
/** The active audio track that drives the waveform (the first audio track, if any). */
|
|
168
|
+
private get WaveformTrack();
|
|
169
|
+
/**
|
|
170
|
+
* True when the waveform should render as bars — i.e. it's enabled, the active track
|
|
171
|
+
* is audio, and we have peaks (supplied or successfully decoded) for it. When false
|
|
172
|
+
* (decode pending/failed, no track), the template shows a plain progress bar instead.
|
|
173
|
+
*/
|
|
174
|
+
get ShowWaveformBars(): boolean;
|
|
175
|
+
/**
|
|
176
|
+
* The normalized `0..1` peaks for the active audio track, or `null` when none are
|
|
177
|
+
* available yet (still decoding) or decoding failed. Reading this lazily kicks off
|
|
178
|
+
* client-side extraction when needed — re-renders/seeks never re-decode (cached by Id).
|
|
179
|
+
*/
|
|
180
|
+
get WaveformPeaks(): number[] | null;
|
|
181
|
+
/** The played/unplayed split point for the waveform, as a `0..1` fraction. */
|
|
182
|
+
get WaveformPlayedFraction(): number;
|
|
183
|
+
/** The single audio track when this is an audio-only player (drives waveform). */
|
|
184
|
+
get AudioTracks(): MediaTrack[];
|
|
185
|
+
get VideoTracks(): MediaTrack[];
|
|
186
|
+
/** True when the layout is a single audio track with no video. */
|
|
187
|
+
get IsAudioOnly(): boolean;
|
|
188
|
+
get IsMultiVideo(): boolean;
|
|
189
|
+
/** Begin playback. Honors {@link BeforePlay}. */
|
|
190
|
+
Play(): void;
|
|
191
|
+
/** Pause playback. Honors {@link BeforePause}. */
|
|
192
|
+
Pause(): void;
|
|
193
|
+
/** Toggle play/pause. */
|
|
194
|
+
TogglePlay(): void;
|
|
195
|
+
/** Seek to an absolute position in milliseconds. Honors {@link BeforeSeek}. */
|
|
196
|
+
SeekToMs(ms: number): void;
|
|
197
|
+
/** Skip forward by {@link SkipSeconds}. */
|
|
198
|
+
SkipForward(): void;
|
|
199
|
+
/** Skip backward by {@link SkipSeconds}. */
|
|
200
|
+
SkipBackward(): void;
|
|
201
|
+
/** Set the playback rate. Honors {@link BeforeRateChange}. */
|
|
202
|
+
SetPlaybackRate(rate: number): void;
|
|
203
|
+
/**
|
|
204
|
+
* Seek to the cue at `index`. If currently playing, playback continues from the
|
|
205
|
+
* cue's start; if paused, the timeline is repositioned without starting playback.
|
|
206
|
+
*/
|
|
207
|
+
SeekToCue(index: number): void;
|
|
208
|
+
/** Set the volume (0..1). Unmutes if volume > 0. */
|
|
209
|
+
SetVolume(v: number): void;
|
|
210
|
+
/** Toggle mute. */
|
|
211
|
+
ToggleMute(): void;
|
|
212
|
+
/** Request fullscreen for the player surface (video). */
|
|
213
|
+
EnterFullscreen(): void;
|
|
214
|
+
/** Exit fullscreen. */
|
|
215
|
+
ExitFullscreen(): void;
|
|
216
|
+
/** Toggle fullscreen. */
|
|
217
|
+
ToggleFullscreen(): void;
|
|
218
|
+
/**
|
|
219
|
+
* Show/hide the transcript panel (pure component state — nothing is persisted).
|
|
220
|
+
* Emits {@link TranscriptVisibilityChanged} with the new visibility.
|
|
221
|
+
*/
|
|
222
|
+
ToggleTranscript(): void;
|
|
223
|
+
/** Initial source fetch began — drives the "Loading…" indicator. */
|
|
224
|
+
OnMediaLoadStart(el: HTMLMediaElement): void;
|
|
225
|
+
/** Wire-up when a media element fires its first event — caches the primary element & applies initial state. */
|
|
226
|
+
OnMediaLoadedMetadata(el: HTMLMediaElement): void;
|
|
227
|
+
/** Enough data buffered to begin playback — clears loading/buffering. */
|
|
228
|
+
OnMediaCanPlay(el: HTMLMediaElement): void;
|
|
229
|
+
/** Ran out of buffered data mid-playback — enters buffering. */
|
|
230
|
+
OnMediaWaiting(el: HTMLMediaElement): void;
|
|
231
|
+
/** Seek began (skip / scrub into un-buffered territory) — show buffering during the seek. */
|
|
232
|
+
OnMediaSeeking(el: HTMLMediaElement): void;
|
|
233
|
+
/** Seek completed — clears buffering once the element has playable data. */
|
|
234
|
+
OnMediaSeeked(el: HTMLMediaElement): void;
|
|
235
|
+
/** Element is actively playing — clears loading + buffering. */
|
|
236
|
+
OnMediaPlaying(el: HTMLMediaElement): void;
|
|
237
|
+
/** Conservative buffering signals — only buffer when actively trying to play. */
|
|
238
|
+
OnMediaStalled(el: HTMLMediaElement): void;
|
|
239
|
+
OnMediaSuspend(el: HTMLMediaElement): void;
|
|
240
|
+
/** Track switch / source cleared — resets the lifecycle. */
|
|
241
|
+
OnMediaEmptied(el: HTMLMediaElement): void;
|
|
242
|
+
OnMediaTimeUpdate(el: HTMLMediaElement): void;
|
|
243
|
+
OnMediaDurationChange(el: HTMLMediaElement): void;
|
|
244
|
+
/**
|
|
245
|
+
* Forces a header-less media element (e.g. a MediaRecorder webm that reports `Infinity`
|
|
246
|
+
* duration) to resolve a real, finite duration by briefly seeking far past the end. The browser
|
|
247
|
+
* clamps to the true end, fires `durationchange` with the real value (picked up by
|
|
248
|
+
* {@link OnMediaDurationChange}) and builds its seek index — after which fraction-based seeking
|
|
249
|
+
* works. We then restore the prior position and suppress the transient time jump. Runs at most
|
|
250
|
+
* once per element.
|
|
251
|
+
*/
|
|
252
|
+
private forceDurationResolution;
|
|
253
|
+
OnMediaPlay(el: HTMLMediaElement): void;
|
|
254
|
+
OnMediaPause(el: HTMLMediaElement): void;
|
|
255
|
+
OnMediaEnded(el: HTMLMediaElement): void;
|
|
256
|
+
OnMediaError(el?: HTMLMediaElement): void;
|
|
257
|
+
/**
|
|
258
|
+
* Runs the pure {@link nextPlaybackState} reducer for a native media event, commits the
|
|
259
|
+
* resulting state, manages the debounced buffering spinner, and emits {@link StateChanged}
|
|
260
|
+
* on transitions. The single funnel for all media-event → state changes.
|
|
261
|
+
*/
|
|
262
|
+
private applyMediaEvent;
|
|
263
|
+
/** Commits a new state, syncs the buffering spinner, and emits on change. */
|
|
264
|
+
private setMediaState;
|
|
265
|
+
/**
|
|
266
|
+
* Keeps the visible buffering spinner in sync with the target state. `loading` shows
|
|
267
|
+
* immediately (no debounce); `buffering` is debounced so instant seeks don't flash it;
|
|
268
|
+
* any non-busy state clears the spinner and cancels a pending show.
|
|
269
|
+
*/
|
|
270
|
+
private syncBufferingIndicator;
|
|
271
|
+
private clearBufferingTimer;
|
|
272
|
+
OnScrubPointerDown(event: PointerEvent, trackEl: HTMLElement): void;
|
|
273
|
+
OnScrubPointerMove(event: PointerEvent, trackEl: HTMLElement): void;
|
|
274
|
+
OnScrubPointerUp(event: PointerEvent): void;
|
|
275
|
+
OnWaveformPointerDown(event: PointerEvent, trackEl: HTMLElement): void;
|
|
276
|
+
OnWaveformPointerMove(event: PointerEvent, trackEl: HTMLElement): void;
|
|
277
|
+
OnWaveformPointerUp(event: PointerEvent): void;
|
|
278
|
+
/** Keyboard support for the scrubber (role="slider"). */
|
|
279
|
+
OnScrubKeyDown(event: KeyboardEvent): void;
|
|
280
|
+
OnCueClicked(index: number): void;
|
|
281
|
+
OnCueKeyDown(event: KeyboardEvent, index: number): void;
|
|
282
|
+
ToggleRateMenu(): void;
|
|
283
|
+
OnVolumeInput(event: Event): void;
|
|
284
|
+
OnHostKeyDown(event: KeyboardEvent): void;
|
|
285
|
+
OnFullscreenChange(): void;
|
|
286
|
+
/** Formats a millisecond value as `mm:ss` (or `h:mm:ss` for long media). */
|
|
287
|
+
FormatTime(ms: number): string;
|
|
288
|
+
/** Stable color for a speaker label (deterministic hue from the label string). */
|
|
289
|
+
SpeakerColor(label: string | undefined): string;
|
|
290
|
+
TrackById(_index: number, track: MediaTrack): string;
|
|
291
|
+
CueTrackById(_index: number, cue: MediaTranscriptCue): string;
|
|
292
|
+
/**
|
|
293
|
+
* The element that owns the master timeline. In a single audio track or a single
|
|
294
|
+
* video, that's the primary element. For one-video-plus-audio, the video carries
|
|
295
|
+
* playback (audio track is muted/secondary). For multi-video, the first video leads.
|
|
296
|
+
*/
|
|
297
|
+
private resolveMediaElement;
|
|
298
|
+
private initializeMediaElement;
|
|
299
|
+
private applyToAllMedia;
|
|
300
|
+
private applyScrubFromPointer;
|
|
301
|
+
private refreshActiveCue;
|
|
302
|
+
private clampMs;
|
|
303
|
+
private resetPlaybackState;
|
|
304
|
+
/**
|
|
305
|
+
* Resolves peaks for a track: supplied {@link MediaTrack.Peaks} win (rendered as-is,
|
|
306
|
+
* no decode); otherwise returns any cached/decoded peaks, kicking off a best-effort
|
|
307
|
+
* client-side decode on first miss. Returns `null` while decoding or after a failure.
|
|
308
|
+
*/
|
|
309
|
+
private peaksForTrack;
|
|
310
|
+
/** Kicks off client-side extraction for every audio track that still needs it. */
|
|
311
|
+
private ensureWaveforms;
|
|
312
|
+
/**
|
|
313
|
+
* Best-effort: fetch → arrayBuffer → decodeAudioData → downsample channel 0 → cache.
|
|
314
|
+
* Never throws into the view; on any failure marks the track as failed so the template
|
|
315
|
+
* falls back to a plain progress bar (not the old synthetic bars).
|
|
316
|
+
*/
|
|
317
|
+
private extractPeaks;
|
|
318
|
+
private markWaveformFailed;
|
|
319
|
+
/** Lazily creates a single AudioContext used only for offline peak extraction. */
|
|
320
|
+
private resolveAudioContext;
|
|
321
|
+
private detectReducedMotion;
|
|
322
|
+
ngOnDestroy(): void;
|
|
323
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MJMediaPlayerComponent, never>;
|
|
324
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MJMediaPlayerComponent, "mj-media-player", never, { "Tracks": { "alias": "Tracks"; "required": false; }; "Transcript": { "alias": "Transcript"; "required": false; }; "Autoplay": { "alias": "Autoplay"; "required": false; }; "StartAtMs": { "alias": "StartAtMs"; "required": false; }; "ShowTranscript": { "alias": "ShowTranscript"; "required": false; }; "ShowTranscriptToggle": { "alias": "ShowTranscriptToggle"; "required": false; }; "ShowSpeedControl": { "alias": "ShowSpeedControl"; "required": false; }; "ShowSkipControls": { "alias": "ShowSkipControls"; "required": false; }; "ShowVolume": { "alias": "ShowVolume"; "required": false; }; "ShowWaveform": { "alias": "ShowWaveform"; "required": false; }; "WaveformBarCount": { "alias": "WaveformBarCount"; "required": false; }; "ShowFullscreen": { "alias": "ShowFullscreen"; "required": false; }; "SkipSeconds": { "alias": "SkipSeconds"; "required": false; }; "PlaybackRates": { "alias": "PlaybackRates"; "required": false; }; "InitialRate": { "alias": "InitialRate"; "required": false; }; "InitialVolume": { "alias": "InitialVolume"; "required": false; }; "TranscriptPosition": { "alias": "TranscriptPosition"; "required": false; }; }, { "BeforePlay": "BeforePlay"; "AfterPlay": "AfterPlay"; "BeforePause": "BeforePause"; "AfterPause": "AfterPause"; "BeforeSeek": "BeforeSeek"; "AfterSeek": "AfterSeek"; "BeforeRateChange": "BeforeRateChange"; "AfterRateChange": "AfterRateChange"; "CueActivated": "CueActivated"; "CueClicked": "CueClicked"; "TimeUpdate": "TimeUpdate"; "DurationChange": "DurationChange"; "Ended": "Ended"; "StateChanged": "StateChanged"; "TranscriptVisibilityChanged": "TranscriptVisibilityChanged"; }, never, never, true, never>;
|
|
325
|
+
}
|
|
326
|
+
//# sourceMappingURL=media-player.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-player.component.d.ts","sourceRoot":"","sources":["../../../src/lib/media-player/media-player.component.ts"],"names":[],"mappings":"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"}
|