@gcorevideo/player 2.28.28 → 2.28.29

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.
@@ -1 +1 @@
1
- {"version":3,"file":"DashPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/dash-playback/DashPlayback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DashPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/dash-playback/DashPlayback.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,8 @@ export default class DashPlayback extends BasePlayback {
49
49
  startChangeQuality = false;
50
50
  manifestInfo = null;
51
51
  _timeUpdateTimer = null;
52
+ oncueenter = null;
53
+ oncueexit = null;
52
54
  get name() {
53
55
  return 'dash';
54
56
  }
@@ -91,6 +93,7 @@ export default class DashPlayback extends BasePlayback {
91
93
  }
92
94
  }
93
95
  get _startTime() {
96
+ // TODO review
94
97
  if (this._playbackType === Playback.LIVE &&
95
98
  this._playlistType !== 'EVENT') {
96
99
  return this._extrapolatedStartTime;
@@ -145,12 +148,12 @@ export default class DashPlayback extends BasePlayback {
145
148
  streaming: {
146
149
  text: {
147
150
  defaultEnabled: false,
151
+ dispatchForManualRendering: true,
148
152
  },
149
153
  },
150
154
  }, this.options.dash);
151
155
  this._dash.updateSettings(settings);
152
156
  }
153
- assert.ok(this.el instanceof HTMLMediaElement, 'el must be an HTMLMediaElement');
154
157
  this._dash.attachView(this.el);
155
158
  this._dash.setAutoPlay(false);
156
159
  this._dash.attachSource(this.options.src);
@@ -194,6 +197,19 @@ export default class DashPlayback extends BasePlayback {
194
197
  this.trigger(Events.PLAYBACK_AUDIO_CHANGED, toClapprTrack(e.newMediaInfo));
195
198
  }
196
199
  });
200
+ this._dash.on(MediaPlayer.events.CUE_ENTER, (e) => {
201
+ this.oncueenter?.({
202
+ end: e.end,
203
+ id: e.id,
204
+ start: e.start,
205
+ text: e.text,
206
+ });
207
+ });
208
+ this._dash.on(MediaPlayer.events.CUE_EXIT, (e) => {
209
+ this.oncueexit?.({
210
+ id: e.id,
211
+ });
212
+ });
197
213
  }
198
214
  render() {
199
215
  this._ready();
@@ -282,8 +298,7 @@ export default class DashPlayback extends BasePlayback {
282
298
  this.trigger(Events.PLAYBACK_SETTINGSUPDATE);
283
299
  }
284
300
  _onPlaybackError = (event) => {
285
- // TODO
286
- trace(`${T} _onPlaybackError`, { event });
301
+ trace(`${T} _onPlaybackError`, { type: event.type, code: event.error.code, message: event.error.message });
287
302
  };
288
303
  _onDASHJSSError = (event) => {
289
304
  this._stopTimeUpdateTimer();
@@ -402,7 +417,14 @@ export default class DashPlayback extends BasePlayback {
402
417
  this._dash.off(MediaPlayer.events.ERROR, this._onDASHJSSError);
403
418
  this._dash.off(MediaPlayer.events.PLAYBACK_ERROR, this._onPlaybackError);
404
419
  this._dash.off(MediaPlayer.events.MANIFEST_LOADED, this.getDuration);
420
+ const tracks = this._dash.getTracksFor('text');
421
+ tracks.forEach(track => {
422
+ if (track.id) {
423
+ this._dash.removeExternalSubtitleById(track.id);
424
+ }
425
+ });
405
426
  this._dash.reset();
427
+ this._dash.destroy();
406
428
  this._dash = null;
407
429
  }
408
430
  }
@@ -420,8 +442,6 @@ export default class DashPlayback extends BasePlayback {
420
442
  }
421
443
  }
422
444
  _fillLevels(levels) {
423
- // TOOD check that levels[i].index === i
424
- trace(`${T} _fillLevels`, { levels });
425
445
  this._levels = levels.map((level) => {
426
446
  return {
427
447
  level: level.index,
@@ -498,6 +518,31 @@ export default class DashPlayback extends BasePlayback {
498
518
  super._handleTextTrackChange();
499
519
  this._dash?.setTextTrack(this.closedCaptionsTrackId);
500
520
  }
521
+ setTextTrack(id) {
522
+ this._dash?.setTextTrack(id);
523
+ }
524
+ /**
525
+ * @override
526
+ */
527
+ get closedCaptionsTracks() {
528
+ const tt = this.getTextTracks();
529
+ return tt;
530
+ }
531
+ getTextTracks() {
532
+ return this._dash?.getTracksFor('text').map((t, index) => ({
533
+ id: index,
534
+ name: getTextTrackLabel(t) || "",
535
+ track: {
536
+ id: index,
537
+ label: getTextTrackLabel(t) || "",
538
+ language: t.lang,
539
+ mode: "hidden",
540
+ },
541
+ })) || [];
542
+ }
543
+ }
544
+ function getTextTrackLabel(t) {
545
+ return t.labels.find((l) => !l.lang || l.lang === t.lang)?.text;
501
546
  }
502
547
  DashPlayback.canPlay = function (resource, mimeType) {
503
548
  if (!isDashSource(resource, mimeType)) {
@@ -1,10 +1,9 @@
1
- import HLSJS, { Events as HlsEvents, type FragChangedData, type FragLoadedData, type LevelSwitchingData } from 'hls.js';
2
- import { QualityLevel } from '../../playback.types.js';
1
+ import HLSJS, { Events as HlsEvents, type LevelSwitchingData } from 'hls.js';
2
+ import { QualityLevel, VTTCueInfo } from '../../playback.types.js';
3
3
  import { PlaybackType } from '../../types.js';
4
4
  import { BasePlayback } from '../BasePlayback.js';
5
5
  import { AudioTrack } from '@clappr/core/types/base/playback/playback.js';
6
6
  export default class HlsPlayback extends BasePlayback {
7
- private _ccIsSetup;
8
7
  private _ccTracksUpdated;
9
8
  private _currentFragment;
10
9
  private _currentLevel;
@@ -28,6 +27,12 @@ export default class HlsPlayback extends BasePlayback {
28
27
  private _recoveredDecodingError;
29
28
  private _segmentTargetDuration;
30
29
  private _timeUpdateTimer;
30
+ oncueenter: ((e: VTTCueInfo) => void) | null;
31
+ oncueexit: ((e: {
32
+ id: string;
33
+ }) => void) | null;
34
+ private cues;
35
+ private currentCueId;
31
36
  /**
32
37
  * @internal
33
38
  */
@@ -66,7 +71,6 @@ export default class HlsPlayback extends BasePlayback {
66
71
  private _listenHLSEvents;
67
72
  private bindCustomListeners;
68
73
  private unbindCustomListeners;
69
- private _onFragmentParsingMetadata;
70
74
  protected render(): this;
71
75
  protected _ready(): void;
72
76
  private _recover;
@@ -83,10 +87,12 @@ export default class HlsPlayback extends BasePlayback {
83
87
  private _updateDvr;
84
88
  private _updateSettings;
85
89
  private _onHLSJSError;
90
+ private reload;
86
91
  private _keyIsDenied;
87
92
  _onTimeUpdate(): void;
88
93
  _onDurationChange(): void;
89
94
  _onProgress(): void;
95
+ private triggerCues;
90
96
  load(url: string): void;
91
97
  play(): void;
92
98
  pause(): void;
@@ -95,8 +101,6 @@ export default class HlsPlayback extends BasePlayback {
95
101
  private _updatePlaybackType;
96
102
  private _fillLevels;
97
103
  private _onLevelUpdated;
98
- _onFragmentChanged(evt: HlsEvents.FRAG_CHANGED, data: FragChangedData): void;
99
- _onFragmentLoaded(evt: HlsEvents.FRAG_LOADED, data: FragLoadedData): void;
100
104
  _onLevelSwitch(evt: HlsEvents.LEVEL_SWITCHING, data: LevelSwitchingData): void;
101
105
  _onLevelSwitched(evt: HlsEvents.LEVEL_SWITCHED, data: {
102
106
  level: number;
@@ -110,5 +114,27 @@ export default class HlsPlayback extends BasePlayback {
110
114
  switchAudioTrack(id: string): void;
111
115
  private _onAudioTracksUpdated;
112
116
  private _onAudioTrackSwitched;
117
+ setTextTrack(id: number): void;
118
+ /**
119
+ * @override
120
+ */
121
+ get closedCaptionsTracks(): {
122
+ id: number;
123
+ name: string;
124
+ track: {
125
+ id: number;
126
+ label: string;
127
+ language: string | undefined;
128
+ };
129
+ }[];
130
+ getTextTracks(): {
131
+ id: number;
132
+ name: string;
133
+ track: {
134
+ id: number;
135
+ label: string;
136
+ language: string | undefined;
137
+ };
138
+ }[];
113
139
  }
114
140
  //# sourceMappingURL=HlsPlayback.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HlsPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/hls-playback/HlsPlayback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HlsPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/hls-playback/HlsPlayback.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  import { Events, Log, Playback, PlayerError, Utils, $ } from '@clappr/core';
5
5
  import { trace } from '@gcorevideo/utils';
6
6
  import assert from 'assert';
7
- import HLSJS, { Events as HlsEvents, } from 'hls.js';
7
+ import HLSJS, { Events as HlsEvents, ErrorDetails, ErrorTypes, } from 'hls.js';
8
8
  import { PlaybackErrorCode, } from '../../playback.types.js';
9
9
  import { isHlsSource } from '../../utils/mediaSources.js';
10
10
  import { BasePlayback } from '../BasePlayback.js';
@@ -12,11 +12,9 @@ import { CLAPPR_VERSION } from '../../build.js';
12
12
  const { now } = Utils;
13
13
  const AUTO = -1;
14
14
  const DEFAULT_RECOVER_ATTEMPTS = 16;
15
- Events.register('PLAYBACK_FRAGMENT_CHANGED');
16
15
  Events.register('PLAYBACK_FRAGMENT_PARSING_METADATA');
17
16
  const T = 'playback.hls';
18
17
  export default class HlsPlayback extends BasePlayback {
19
- _ccIsSetup = false;
20
18
  _ccTracksUpdated = false;
21
19
  _currentFragment = null;
22
20
  _currentLevel = null;
@@ -40,6 +38,10 @@ export default class HlsPlayback extends BasePlayback {
40
38
  _recoveredDecodingError = false;
41
39
  _segmentTargetDuration = null;
42
40
  _timeUpdateTimer = null;
41
+ oncueenter = null;
42
+ oncueexit = null;
43
+ cues = []; // TODO check the list size and use BST if needed
44
+ currentCueId = null;
43
45
  /**
44
46
  * @internal
45
47
  */
@@ -234,7 +236,7 @@ export default class HlsPlayback extends BasePlayback {
234
236
  return;
235
237
  }
236
238
  this._manifestParsed = false;
237
- this._ccIsSetup = false;
239
+ // this._ccIsSetup = false
238
240
  this._ccTracksUpdated = false;
239
241
  this._setInitialState();
240
242
  this._hls.destroy();
@@ -245,6 +247,7 @@ export default class HlsPlayback extends BasePlayback {
245
247
  maxBufferLength: 2,
246
248
  maxMaxBufferLength: 4,
247
249
  autoStartLoad: false,
250
+ renderTextTracksNatively: false,
248
251
  }, this.options.playback.hlsjsConfig);
249
252
  this._hls = new HLSJS(config);
250
253
  }
@@ -258,7 +261,7 @@ export default class HlsPlayback extends BasePlayback {
258
261
  if (!this._hls) {
259
262
  return;
260
263
  }
261
- this._hls.once(HLSJS.Events.MEDIA_ATTACHED, () => {
264
+ this._hls.once(HlsEvents.MEDIA_ATTACHED, () => {
262
265
  assert.ok(this._hls, 'HLS.js is not initialized');
263
266
  this.options.hlsPlayback.preload && this._hls.loadSource(this.options.src);
264
267
  });
@@ -273,25 +276,29 @@ export default class HlsPlayback extends BasePlayback {
273
276
  this.el.removeEventListener('playing', onPlaying);
274
277
  };
275
278
  this.el.addEventListener('playing', onPlaying);
276
- this._hls.on(HLSJS.Events.MANIFEST_PARSED, () => {
279
+ this._hls.on(HlsEvents.MANIFEST_PARSED, () => {
277
280
  this._manifestParsed = true;
278
- this._hls.startLoad(-1);
281
+ this.reload();
279
282
  });
280
- this._hls.on(HLSJS.Events.LEVEL_LOADED, (evt, data) => {
283
+ this._hls.on(HlsEvents.LEVEL_LOADED, (evt, data) => {
281
284
  this._updatePlaybackType(evt, data);
282
285
  });
283
- this._hls.on(HLSJS.Events.LEVEL_UPDATED, (evt, data) => this._onLevelUpdated(evt, data));
284
- this._hls.on(HLSJS.Events.LEVEL_SWITCHING, (evt, data) => this._onLevelSwitch(evt, data));
285
- this._hls.on(HLSJS.Events.LEVEL_SWITCHED, (evt, data) => this._onLevelSwitched(evt, data));
286
- this._hls.on(HLSJS.Events.FRAG_CHANGED, (evt, data) => this._onFragmentChanged(evt, data));
287
- this._hls.on(HLSJS.Events.FRAG_LOADED, (evt, data) => this._onFragmentLoaded(evt, data));
288
- this._hls.on(HLSJS.Events.FRAG_PARSING_METADATA, (evt, data) => this._onFragmentParsingMetadata(evt, data));
289
- this._hls.on(HLSJS.Events.ERROR, (evt, data) => this._onHLSJSError(evt, data));
290
- // this._hls.on(HLSJS.Events.SUBTITLE_TRACK_LOADED, () =>
291
- // this._onSubtitleLoaded(),
292
- // )
286
+ this._hls.on(HlsEvents.LEVEL_UPDATED, (evt, data) => this._onLevelUpdated(evt, data));
287
+ this._hls.on(HlsEvents.LEVEL_SWITCHING, (evt, data) => this._onLevelSwitch(evt, data));
288
+ this._hls.on(HlsEvents.LEVEL_SWITCHED, (evt, data) => this._onLevelSwitched(evt, data));
289
+ this._hls.on(HlsEvents.ERROR, (evt, data) => this._onHLSJSError(evt, data));
293
290
  this._hls.on(HlsEvents.AUDIO_TRACKS_UPDATED, (evt, data) => this._onAudioTracksUpdated(evt, data));
294
291
  this._hls.on(HlsEvents.AUDIO_TRACK_SWITCHED, (evt, data) => this._onAudioTrackSwitched(evt, data));
292
+ this._hls.on(HlsEvents.CUES_PARSED, (evt, data) => {
293
+ data.cues?.forEach((cue) => {
294
+ this.cues.push({
295
+ id: cue.id,
296
+ start: cue.startTime,
297
+ end: cue.endTime,
298
+ text: cue.text,
299
+ });
300
+ });
301
+ });
295
302
  this.bindCustomListeners();
296
303
  }
297
304
  bindCustomListeners() {
@@ -310,13 +317,6 @@ export default class HlsPlayback extends BasePlayback {
310
317
  requestedEventName && this._hls.off(requestedEventName, item.callback);
311
318
  });
312
319
  }
313
- _onFragmentParsingMetadata(evt, data) {
314
- // @ts-ignore
315
- this.trigger(Events.Custom.PLAYBACK_FRAGMENT_PARSING_METADATA, {
316
- evt,
317
- data,
318
- });
319
- }
320
320
  render() {
321
321
  this._ready();
322
322
  return super.render();
@@ -398,6 +398,7 @@ export default class HlsPlayback extends BasePlayback {
398
398
  this.dvrEnabled && this._updateDvr(time < this.getDuration() - 3);
399
399
  time += this._startTime;
400
400
  this.el.currentTime = time;
401
+ this.triggerCues();
401
402
  }
402
403
  seekToLivePoint() {
403
404
  this.seek(this.getDuration());
@@ -446,20 +447,20 @@ export default class HlsPlayback extends BasePlayback {
446
447
  if (this._recoverAttemptsRemaining > 0) {
447
448
  this._recoverAttemptsRemaining -= 1;
448
449
  switch (data.type) {
449
- case HLSJS.ErrorTypes.NETWORK_ERROR:
450
+ case ErrorTypes.NETWORK_ERROR:
450
451
  switch (data.details) {
451
452
  // The following network errors cannot be recovered with HLS.startLoad()
452
453
  // For more details, see https://github.com/video-dev/hls.js/blob/master/doc/design.md#error-detection-and-handling
453
454
  // For "level load" fatal errors, see https://github.com/video-dev/hls.js/issues/1138
454
455
  // TODO test handling of these errors
455
- case HLSJS.ErrorDetails.MANIFEST_LOAD_ERROR:
456
- case HLSJS.ErrorDetails.MANIFEST_LOAD_TIMEOUT:
457
- case HLSJS.ErrorDetails.MANIFEST_PARSING_ERROR:
456
+ case ErrorDetails.MANIFEST_LOAD_ERROR:
457
+ case ErrorDetails.MANIFEST_LOAD_TIMEOUT:
458
+ case ErrorDetails.MANIFEST_PARSING_ERROR:
458
459
  // TODO sort out the errors below, perhaps some of them are recoverable
459
- case HLSJS.ErrorDetails.LEVEL_LOAD_ERROR:
460
- case HLSJS.ErrorDetails.LEVEL_LOAD_TIMEOUT:
461
- case HLSJS.ErrorDetails.FRAG_LOAD_ERROR:
462
- case HLSJS.ErrorDetails.FRAG_LOAD_TIMEOUT:
460
+ case ErrorDetails.LEVEL_LOAD_ERROR:
461
+ case ErrorDetails.LEVEL_LOAD_TIMEOUT:
462
+ case ErrorDetails.FRAG_LOAD_ERROR:
463
+ case ErrorDetails.FRAG_LOAD_TIMEOUT:
463
464
  Log.error('hlsjs: unrecoverable network fatal error.', {
464
465
  evt,
465
466
  data,
@@ -476,11 +477,11 @@ export default class HlsPlayback extends BasePlayback {
476
477
  details: data.details,
477
478
  });
478
479
  error.level = PlayerError.Levels.WARN;
479
- this._hls?.startLoad();
480
+ this.reload();
480
481
  break;
481
482
  }
482
483
  break;
483
- case HLSJS.ErrorTypes.MEDIA_ERROR:
484
+ case ErrorTypes.MEDIA_ERROR:
484
485
  Log.warn('hlsjs: trying to recover from media error.', {
485
486
  evt,
486
487
  data,
@@ -521,9 +522,14 @@ export default class HlsPlayback extends BasePlayback {
521
522
  });
522
523
  }
523
524
  }
525
+ reload() {
526
+ this.cues = [];
527
+ this.currentCueId = null;
528
+ this._hls?.startLoad(-1);
529
+ }
524
530
  _keyIsDenied(data) {
525
- return (data.type === HLSJS.ErrorTypes.NETWORK_ERROR &&
526
- data.details === HLSJS.ErrorDetails.KEY_LOAD_ERROR &&
531
+ return (data.type === ErrorTypes.NETWORK_ERROR &&
532
+ data.details === ErrorDetails.KEY_LOAD_ERROR &&
527
533
  data.response &&
528
534
  data.response.code &&
529
535
  data.response.code >= 400);
@@ -541,6 +547,7 @@ export default class HlsPlayback extends BasePlayback {
541
547
  }
542
548
  this._lastTimeUpdate = update;
543
549
  this.trigger(Events.PLAYBACK_TIMEUPDATE, update, this.name);
550
+ this.triggerCues();
544
551
  }
545
552
  _onDurationChange() {
546
553
  const duration = this.getDuration();
@@ -579,6 +586,20 @@ export default class HlsPlayback extends BasePlayback {
579
586
  };
580
587
  this.trigger(Events.PLAYBACK_PROGRESS, progress, buffered);
581
588
  }
589
+ triggerCues() {
590
+ const currentTime = this.getCurrentTime();
591
+ // const cues = Object.values(this.cues)
592
+ // TODO build a search tree
593
+ const cue = this.cues.find((cue) => currentTime >= cue.start && currentTime <= cue.end);
594
+ if (cue) {
595
+ this.currentCueId = cue.id;
596
+ this.oncueenter?.(cue);
597
+ }
598
+ else if (this.currentCueId) {
599
+ this.oncueexit?.({ id: this.currentCueId });
600
+ this.currentCueId = null;
601
+ }
602
+ }
582
603
  load(url) {
583
604
  this._stopTimeUpdateTimer();
584
605
  this.options.src = url;
@@ -771,26 +792,6 @@ export default class HlsPlayback extends BasePlayback {
771
792
  durationChanged && this._onDurationChange();
772
793
  startTimeChanged && this._onProgress();
773
794
  }
774
- _onFragmentChanged(evt, data) {
775
- this._currentFragment = data.frag;
776
- // @ts-ignore
777
- this.trigger(Events.Custom.PLAYBACK_FRAGMENT_CHANGED, data);
778
- }
779
- _onFragmentLoaded(evt, data) {
780
- this.trigger(Events.PLAYBACK_FRAGMENT_LOADED, data);
781
- }
782
- // _onSubtitleLoaded() {
783
- // trace(`${T} _onSubtitleLoaded`)
784
- // // This event may be triggered multiple times
785
- // // Setup CC only once (disable CC by default)
786
- // if (!this._ccIsSetup) {
787
- // this.trigger(Events.PLAYBACK_SUBTITLE_AVAILABLE)
788
- // const trackId =
789
- // this._playbackType === Playback.LIVE ? -1 : this.closedCaptionsTrackId
790
- // this.closedCaptionsTrackId = trackId
791
- // this._ccIsSetup = true
792
- // }
793
- // }
794
795
  _onLevelSwitch(evt, data) {
795
796
  if (!this.levels.length) {
796
797
  this._fillLevels();
@@ -862,6 +863,26 @@ export default class HlsPlayback extends BasePlayback {
862
863
  const track = this._hls.audioTracks[data.id];
863
864
  this.trigger(Events.PLAYBACK_AUDIO_CHANGED, toClapprTrack(track));
864
865
  }
866
+ setTextTrack(id) {
867
+ this._hls.subtitleTrack = id;
868
+ }
869
+ /**
870
+ * @override
871
+ */
872
+ get closedCaptionsTracks() {
873
+ return this.getTextTracks();
874
+ }
875
+ getTextTracks() {
876
+ return this._hls?.subtitleTracks.map((t) => ({
877
+ id: t.id,
878
+ name: t.name,
879
+ track: {
880
+ id: t.id,
881
+ label: t.name,
882
+ language: t.lang,
883
+ },
884
+ })) || [];
885
+ }
865
886
  }
866
887
  HlsPlayback.canPlay = function (resource, mimeType) {
867
888
  if (!isHlsSource(resource, mimeType)) {
@@ -135,4 +135,10 @@ export interface PlaybackError {
135
135
  icon?: string;
136
136
  };
137
137
  }
138
+ export type VTTCueInfo = {
139
+ id: string;
140
+ start: number;
141
+ end: number;
142
+ text: string;
143
+ };
138
144
  //# sourceMappingURL=playback.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"playback.types.d.ts","sourceRoot":"","sources":["../src/playback.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAE9B;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,OAAO,EAAE,SAAS,CAAA;IAClB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;IAChB;;OAEG;IACH,OAAO,EAAE,SAAS,CAAA;IAClB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,YAAY,CAAA;AAErC;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,oBAAY,iBAAiB;IAC3B;;OAEG;IACH,OAAO,kBAAkB;IACzB;;OAEG;IACH,sBAAsB,6BAA6B;IACnD;;OAEG;IACH,uBAAuB,+BAA+B;CACvD;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAElD;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,CAAA;AAEnE;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,IAAI,EAAE,iBAAiB,CAAA;IACvB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,KAAK,EAAE,UAAU,CAAA;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,KAAK,EAAE,mBAAmB,CAAA;IAE1B;;OAEG;IACH,EAAE,CAAC,EAAE;QACH,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF"}
1
+ {"version":3,"file":"playback.types.d.ts","sourceRoot":"","sources":["../src/playback.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAE9B;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,OAAO,EAAE,SAAS,CAAA;IAClB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;IAChB;;OAEG;IACH,OAAO,EAAE,SAAS,CAAA;IAClB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,YAAY,CAAA;AAErC;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,oBAAY,iBAAiB;IAC3B;;OAEG;IACH,OAAO,kBAAkB;IACzB;;OAEG;IACH,sBAAsB,6BAA6B;IACnD;;OAEG;IACH,uBAAuB,+BAA+B;CACvD;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAElD;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,CAAA;AAEnE;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,IAAI,EAAE,iBAAiB,CAAA;IACvB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,KAAK,EAAE,UAAU,CAAA;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,KAAK,EAAE,mBAAmB,CAAA;IAE1B;;OAEG;IACH,EAAE,CAAC,EAAE;QACH,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;CACb,CAAA"}
@@ -93,6 +93,7 @@ export declare class ClosedCaptions extends UICorePlugin {
93
93
  bindEvents(): void;
94
94
  private onCoreReady;
95
95
  private onContainerChanged;
96
+ private onPlaybackReady;
96
97
  private onSubtitleAvailable;
97
98
  private onSubtitleChanged;
98
99
  private activateTrack;
@@ -131,6 +132,10 @@ export declare class ClosedCaptions extends UICorePlugin {
131
132
  private clampPopup;
132
133
  private mount;
133
134
  private get useNativeSubtitles();
135
+ private get currentTracks();
136
+ private get currentTrack();
137
+ private set currentTrack(value);
138
+ private set currentTracks(value);
134
139
  private clickaway;
135
140
  }
136
141
  //# sourceMappingURL=ClosedCaptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClosedCaptions.d.ts","sourceRoot":"","sources":["../../../src/plugins/subtitles/ClosedCaptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAwB,MAAM,cAAc,CAAA;AAOzE,OAAO,sCAAsC,CAAA;AAiB7C;;;GAGG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAC3B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,oBAAoB,CAAQ;IAEpC,OAAO,CAAC,MAAM,CAAQ;IAEtB,OAAO,CAAC,IAAI,CAAQ;IAEpB,OAAO,CAAC,KAAK,CAA6B;IAE1C,OAAO,CAAC,MAAM,CAAsB;IAEpC,OAAO,CAAC,KAAK,CAA2B;IAExC;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;IACH,MAAM,KAAK,OAAO,WAEjB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAyB;IAEhE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAuB;IAE3D;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;;MAKlB;IAED,OAAO,KAAK,mBAAmB,GAI9B;IAED,OAAO,CAAC,qBAAqB;IAO7B;;OAEG;IACM,UAAU;IASnB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,kBAAkB;IAqD1B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,aAAa;IA+BrB,OAAO,CAAC,WAAW;IA8BnB,OAAO,CAAC,iBAAiB;IAqBzB;;OAEG;IACH,IAAI;IAcJ;;OAEG;IACH,IAAI;IAiBJ,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACM,MAAM;IA4Bf,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,yBAAyB;IAejC,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,yBAAyB;IAiBjC,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,KAAK;IAOb,OAAO,KAAK,kBAAkB,GAU7B;IAED,OAAO,CAAC,SAAS,CAA+C;CACjE"}
1
+ {"version":3,"file":"ClosedCaptions.d.ts","sourceRoot":"","sources":["../../../src/plugins/subtitles/ClosedCaptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAwB,MAAM,cAAc,CAAA;AAOzE,OAAO,sCAAsC,CAAA;AAkB7C;;;GAGG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAC3B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,oBAAoB,CAAQ;IAEpC,OAAO,CAAC,MAAM,CAAQ;IAEtB,OAAO,CAAC,IAAI,CAAQ;IAEpB,OAAO,CAAC,KAAK,CAA6B;IAE1C,OAAO,CAAC,MAAM,CAAsB;IAEpC,OAAO,CAAC,KAAK,CAA2B;IAExC;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;IACH,MAAM,KAAK,OAAO,WAEjB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAyB;IAEhE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAuB;IAE3D;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;;MAKlB;IAED,OAAO,KAAK,mBAAmB,GAI9B;IAED,OAAO,CAAC,qBAAqB;IAO7B;;OAEG;IACM,UAAU;IAWnB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,kBAAkB;IAiD1B,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,aAAa;IAmCrB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,iBAAiB;IAqBzB;;OAEG;IACH,IAAI;IAYJ;;OAEG;IACH,IAAI;IAiBJ,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACM,MAAM;IA+Bf,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,yBAAyB;IAejC,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,yBAAyB;IAiBjC,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,KAAK;IAOb,OAAO,KAAK,kBAAkB,GAO7B;IAED,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,YAAY,QAEvB;IAED,OAAO,KAAK,aAAa,QAMxB;IAED,OAAO,CAAC,SAAS,CAA+C;CACjE"}