@gcorevideo/player 2.24.10 → 2.24.13

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.
Files changed (48) hide show
  1. package/README.md +1 -0
  2. package/assets/dvr-controls/dvr_controls.scss +43 -80
  3. package/assets/dvr-controls/index.ejs +8 -2
  4. package/assets/media-control/width370.scss +1 -1
  5. package/dist/core.js +34 -23
  6. package/dist/index.css +394 -420
  7. package/dist/index.embed.js +107 -71
  8. package/dist/index.js +172 -134
  9. package/dist/player.d.ts +3264 -0
  10. package/lib/playback/dash-playback/DashPlayback.d.ts +2 -0
  11. package/lib/playback/dash-playback/DashPlayback.d.ts.map +1 -1
  12. package/lib/playback/dash-playback/DashPlayback.js +17 -11
  13. package/lib/playback/hls-playback/HlsPlayback.d.ts +6 -2
  14. package/lib/playback/hls-playback/HlsPlayback.d.ts.map +1 -1
  15. package/lib/playback/hls-playback/HlsPlayback.js +16 -11
  16. package/lib/plugins/audio-selector/AudioTracks.js +1 -1
  17. package/lib/plugins/bottom-gear/BottomGear.js +1 -1
  18. package/lib/plugins/clips/Clips.js +1 -1
  19. package/lib/plugins/dvr-controls/DvrControls.d.ts +3 -3
  20. package/lib/plugins/dvr-controls/DvrControls.d.ts.map +1 -1
  21. package/lib/plugins/dvr-controls/DvrControls.js +14 -12
  22. package/lib/plugins/media-control/MediaControl.d.ts +14 -5
  23. package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
  24. package/lib/plugins/media-control/MediaControl.js +55 -29
  25. package/lib/plugins/picture-in-picture/PictureInPicture.js +1 -1
  26. package/lib/plugins/subtitles/ClosedCaptions.js +1 -1
  27. package/lib/testUtils.d.ts.map +1 -1
  28. package/lib/testUtils.js +2 -0
  29. package/package.json +1 -1
  30. package/src/playback/dash-playback/DashPlayback.ts +20 -13
  31. package/src/playback/hls-playback/HlsPlayback.ts +40 -26
  32. package/src/plugins/audio-selector/AudioTracks.ts +1 -1
  33. package/src/plugins/audio-selector/__tests__/AudioTracks.test.ts +2 -2
  34. package/src/plugins/bottom-gear/BottomGear.ts +1 -1
  35. package/src/plugins/bottom-gear/__tests__/BottomGear.test.ts +2 -2
  36. package/src/plugins/clips/Clips.ts +1 -1
  37. package/src/plugins/clips/__tests__/Clips.test.ts +1 -1
  38. package/src/plugins/dvr-controls/DvrControls.ts +14 -14
  39. package/src/plugins/dvr-controls/__tests__/DvrControls.test.ts +20 -17
  40. package/src/plugins/dvr-controls/__tests__/__snapshots__/DvrControls.test.ts.snap +4 -2
  41. package/src/plugins/media-control/MediaControl.ts +69 -35
  42. package/src/plugins/media-control/__tests__/MediaControl.test.ts +128 -112
  43. package/src/plugins/media-control/__tests__/__snapshots__/MediaControl.test.ts.snap +227 -24
  44. package/src/plugins/picture-in-picture/PictureInPicture.ts +1 -1
  45. package/src/plugins/subtitles/ClosedCaptions.ts +1 -1
  46. package/src/plugins/subtitles/__tests__/ClosedCaptions.test.ts +1 -1
  47. package/src/testUtils.ts +2 -0
  48. package/tsconfig.tsbuildinfo +1 -1
@@ -63,6 +63,7 @@ export default class DashPlayback extends BasePlayback {
63
63
  play(): void;
64
64
  pause(): void;
65
65
  stop(): void;
66
+ private destroyInstance;
66
67
  destroy(): void;
67
68
  _updatePlaybackType(): void;
68
69
  _fillLevels(levels: DashBitrateInfo[]): void;
@@ -75,6 +76,7 @@ export default class DashPlayback extends BasePlayback {
75
76
  get audioTracks(): AudioTrack[];
76
77
  get currentAudioTrack(): AudioTrack | null;
77
78
  switchAudioTrack(id: string): void;
79
+ load(srcUrl: string): void;
78
80
  private checkAudioTracks;
79
81
  }
80
82
  export {};
@@ -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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"}
@@ -203,10 +203,9 @@ export default class DashPlayback extends BasePlayback {
203
203
  return super.render();
204
204
  }
205
205
  _ready() {
206
- this._isReadyState = true;
207
- this.trigger(Events.PLAYBACK_READY, this.name);
206
+ !this._dash && this._setup();
207
+ super._ready();
208
208
  }
209
- // override
210
209
  _setupSrc() {
211
210
  // this playback manages the src on the video element itself
212
211
  }
@@ -390,9 +389,7 @@ export default class DashPlayback extends BasePlayback {
390
389
  }
391
390
  play() {
392
391
  trace(`${T} play`, { dash: !!this._dash });
393
- if (!this._dash) {
394
- this._setup();
395
- }
392
+ !this._dash && this._setup();
396
393
  super.play();
397
394
  this._startTimeUpdateTimer();
398
395
  }
@@ -408,20 +405,22 @@ export default class DashPlayback extends BasePlayback {
408
405
  stop() {
409
406
  if (this._dash) {
410
407
  this._stopTimeUpdateTimer();
411
- this._dash.reset();
408
+ this.destroyInstance();
412
409
  super.stop();
413
- this._dash = null;
414
410
  }
415
411
  }
416
- destroy() {
417
- this._stopTimeUpdateTimer();
412
+ destroyInstance() {
418
413
  if (this._dash) {
419
414
  this._dash.off(DASHJS.MediaPlayer.events.ERROR, this._onDASHJSSError);
420
415
  this._dash.off(DASHJS.MediaPlayer.events.PLAYBACK_ERROR, this._onPlaybackError);
421
416
  this._dash.off(DASHJS.MediaPlayer.events.MANIFEST_LOADED, this.getDuration);
422
417
  this._dash.reset();
418
+ this._dash = null;
423
419
  }
424
- this._dash = null;
420
+ }
421
+ destroy() {
422
+ this._stopTimeUpdateTimer();
423
+ this.destroyInstance();
425
424
  return super.destroy();
426
425
  }
427
426
  _updatePlaybackType() {
@@ -490,6 +489,13 @@ export default class DashPlayback extends BasePlayback {
490
489
  assert.ok(track, 'Invalid audio track ID');
491
490
  this._dash.setCurrentTrack(track);
492
491
  }
492
+ load(srcUrl) {
493
+ this._stopTimeUpdateTimer();
494
+ this.options.src = srcUrl;
495
+ // TODO destroy the instance first?
496
+ this.destroyInstance();
497
+ this._setup();
498
+ }
493
499
  checkAudioTracks() {
494
500
  // @ts-ignore
495
501
  const tracks = this._dash.getTracksFor('audio');
@@ -12,7 +12,6 @@ export default class HlsPlayback extends BasePlayback {
12
12
  private _extrapolatedWindowNumSegments;
13
13
  private highDefinition;
14
14
  private _hls;
15
- private _isReadyState;
16
15
  private _lastDuration;
17
16
  private _lastTimeUpdate;
18
17
  private _levels;
@@ -29,13 +28,18 @@ export default class HlsPlayback extends BasePlayback {
29
28
  private _recoveredDecodingError;
30
29
  private _segmentTargetDuration;
31
30
  private _timeUpdateTimer;
31
+ /**
32
+ * @internal
33
+ */
32
34
  get name(): string;
35
+ /**
36
+ * @internal
37
+ */
33
38
  get supportedVersion(): {
34
39
  min: string;
35
40
  };
36
41
  get levels(): QualityLevel[];
37
42
  get currentLevel(): number;
38
- get isReady(): boolean;
39
43
  set currentLevel(id: number);
40
44
  get latency(): number;
41
45
  get currentProgramDateTime(): Date;
@@ -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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"}
@@ -24,7 +24,6 @@ export default class HlsPlayback extends BasePlayback {
24
24
  _extrapolatedWindowNumSegments = 0; // TODO
25
25
  highDefinition = false;
26
26
  _hls = null;
27
- _isReadyState = false;
28
27
  _lastDuration = null;
29
28
  _lastTimeUpdate = null;
30
29
  _levels = null;
@@ -41,9 +40,15 @@ export default class HlsPlayback extends BasePlayback {
41
40
  _recoveredDecodingError = false;
42
41
  _segmentTargetDuration = null;
43
42
  _timeUpdateTimer = null;
43
+ /**
44
+ * @internal
45
+ */
44
46
  get name() {
45
47
  return 'hls';
46
48
  }
49
+ /**
50
+ * @internal
51
+ */
47
52
  get supportedVersion() {
48
53
  return { min: CLAPPR_VERSION };
49
54
  }
@@ -53,9 +58,6 @@ export default class HlsPlayback extends BasePlayback {
53
58
  get currentLevel() {
54
59
  return this._currentLevel ?? AUTO;
55
60
  }
56
- get isReady() {
57
- return this._isReadyState;
58
- }
59
61
  set currentLevel(id) {
60
62
  this._currentLevel = id;
61
63
  this.trigger(Events.PLAYBACK_LEVEL_SWITCH_START);
@@ -242,6 +244,7 @@ export default class HlsPlayback extends BasePlayback {
242
244
  const config = $.extend(true, {
243
245
  maxBufferLength: 2,
244
246
  maxMaxBufferLength: 4,
247
+ autoStartLoad: false,
245
248
  }, this.options.playback.hlsjsConfig);
246
249
  trace(`${T} _createHLSInstance`, { config });
247
250
  this._hls = new HLSJS(config);
@@ -260,6 +263,7 @@ export default class HlsPlayback extends BasePlayback {
260
263
  assert.ok(this._hls, 'HLS.js is not initialized');
261
264
  this.options.hlsPlayback.preload && this._hls.loadSource(this.options.src);
262
265
  });
266
+ // TODO drop?
263
267
  const onPlaying = () => {
264
268
  if (this._hls) {
265
269
  this._hls.config.maxBufferLength =
@@ -270,8 +274,13 @@ export default class HlsPlayback extends BasePlayback {
270
274
  this.el.removeEventListener('playing', onPlaying);
271
275
  };
272
276
  this.el.addEventListener('playing', onPlaying);
273
- this._hls.on(HLSJS.Events.MANIFEST_PARSED, () => (this._manifestParsed = true));
274
- this._hls.on(HLSJS.Events.LEVEL_LOADED, (evt, data) => this._updatePlaybackType(evt, data));
277
+ this._hls.on(HLSJS.Events.MANIFEST_PARSED, () => {
278
+ this._manifestParsed = true;
279
+ this._hls.startLoad(-1);
280
+ });
281
+ this._hls.on(HLSJS.Events.LEVEL_LOADED, (evt, data) => {
282
+ this._updatePlaybackType(evt, data);
283
+ });
275
284
  this._hls.on(HLSJS.Events.LEVEL_UPDATED, (evt, data) => this._onLevelUpdated(evt, data));
276
285
  this._hls.on(HLSJS.Events.LEVEL_SWITCHING, (evt, data) => this._onLevelSwitch(evt, data));
277
286
  this._hls.on(HLSJS.Events.LEVEL_SWITCHED, (evt, data) => this._onLevelSwitched(evt, data));
@@ -314,12 +323,8 @@ export default class HlsPlayback extends BasePlayback {
314
323
  return super.render();
315
324
  }
316
325
  _ready() {
317
- if (this._isReadyState) {
318
- return;
319
- }
320
326
  !this._hls && this._setup();
321
- this._isReadyState = true;
322
- this.trigger(Events.PLAYBACK_READY, this.name);
327
+ super._ready();
323
328
  }
324
329
  _recover(evt, data, error) {
325
330
  assert(this._hls, 'HLS.js is not initialized');
@@ -68,7 +68,7 @@ export class AudioTracks extends UICorePlugin {
68
68
  const mediaControl = this.core.getPlugin('media_control');
69
69
  assert(mediaControl, 'media_control plugin is required');
70
70
  this.listenTo(mediaControl, Events.MEDIACONTROL_RENDERED, () => {
71
- mediaControl.mount('audiotracks', this.$el);
71
+ mediaControl.slot('audiotracks', this.$el);
72
72
  });
73
73
  this.listenTo(mediaControl, Events.MEDIACONTROL_HIDE, this.hideMenu);
74
74
  this.listenTo(mediaControl, ExtendedEvents.MEDIACONTROL_MENU_COLLAPSE, (from) => {
@@ -270,7 +270,7 @@ export class BottomGear extends UICorePlugin {
270
270
  }
271
271
  mount() {
272
272
  const mediaControl = this.core.getPlugin('media_control');
273
- mediaControl.mount('gear', this.$el);
273
+ mediaControl.slot('gear', this.$el);
274
274
  }
275
275
  alignSubmenu($subMenu) {
276
276
  const availableHeight = this.core.getPlugin('media_control').getAvailableHeight() -
@@ -99,7 +99,7 @@ export class Clips extends UICorePlugin {
99
99
  onMcRender() {
100
100
  trace(`${T} onMcRender`);
101
101
  const mediaControl = this.core.getPlugin('media_control');
102
- mediaControl.mount('clips', this.$el);
102
+ mediaControl.slot('clips', this.$el);
103
103
  }
104
104
  onContainerChanged() {
105
105
  trace(`${T} onContainerChanged`);
@@ -30,13 +30,14 @@ export declare class DvrControls extends UICorePlugin {
30
30
  * @internal
31
31
  */
32
32
  get events(): {
33
- 'click .live-button': string;
33
+ 'click #gplayer-mc-back-to-live': string;
34
34
  };
35
35
  /**
36
36
  * @internal
37
37
  */
38
38
  get attributes(): {
39
39
  class: string;
40
+ 'data-dvr': string;
40
41
  };
41
42
  /**
42
43
  * @internal
@@ -44,12 +45,11 @@ export declare class DvrControls extends UICorePlugin {
44
45
  bindEvents(): void;
45
46
  private onCoreReady;
46
47
  private onActiveContainerChanged;
47
- private click;
48
+ private clicked;
48
49
  /**
49
50
  * @internal
50
51
  */
51
52
  render(): this;
52
- private onMediacontrolRendered;
53
53
  private onMetadataLoaded;
54
54
  private mount;
55
55
  private onDvrStateChanged;
@@ -1 +1 @@
1
- {"version":3,"file":"DvrControls.d.ts","sourceRoot":"","sources":["../../../src/plugins/dvr-controls/DvrControls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAY,MAAM,cAAc,CAAA;AAMvE,OAAO,gDAAgD,CAAA;AAMvD;;;;;;;;;;;;;GAaG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAEpD;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;IACH,IAAa,MAAM;;MAIlB;IAED;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACM,UAAU;IASnB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,KAAK;IAQb;;OAEG;IACM,MAAM;IAUf,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,KAAK;IAab,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,WAAW;CASpB"}
1
+ {"version":3,"file":"DvrControls.d.ts","sourceRoot":"","sources":["../../../src/plugins/dvr-controls/DvrControls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAY,MAAM,cAAc,CAAA;AAOvE,OAAO,gDAAgD,CAAA;AAKvD;;;;;;;;;;;;;GAaG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAEpD;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;IACH,IAAa,MAAM;;MAIlB;IAED;;OAEG;IACH,IAAa,UAAU;;;MAKtB;IAED;;OAEG;IACM,UAAU;IASnB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,OAAO;IAQf;;OAEG;IACM,MAAM;IAaf,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,KAAK;IAab,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,WAAW;CASpB"}
@@ -1,9 +1,10 @@
1
1
  import { Events, Playback, UICorePlugin, template } from '@clappr/core';
2
2
  import assert from 'assert';
3
+ import { trace } from '@gcorevideo/utils';
3
4
  import { CLAPPR_VERSION } from '../../build.js';
4
5
  import dvrHTML from '../../../assets/dvr-controls/index.ejs';
5
6
  import '../../../assets/dvr-controls/dvr_controls.scss';
6
- // const T = 'plugins.dvr_controls'
7
+ const T = 'plugins.dvr_controls';
7
8
  /**
8
9
  * `PLUGIN` that adds the DVR controls to the media control UI
9
10
  *
@@ -37,7 +38,7 @@ export class DvrControls extends UICorePlugin {
37
38
  */
38
39
  get events() {
39
40
  return {
40
- 'click .live-button': 'click',
41
+ 'click #gplayer-mc-back-to-live': 'clicked',
41
42
  };
42
43
  }
43
44
  /**
@@ -46,6 +47,7 @@ export class DvrControls extends UICorePlugin {
46
47
  get attributes() {
47
48
  return {
48
49
  class: 'dvr-controls',
50
+ 'data-dvr': '',
49
51
  };
50
52
  }
51
53
  /**
@@ -64,7 +66,7 @@ export class DvrControls extends UICorePlugin {
64
66
  this.listenTo(this.core.activeContainer, Events.CONTAINER_LOADEDMETADATA, this.onMetadataLoaded);
65
67
  this.listenTo(this.core.activeContainer, Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.onDvrStateChanged);
66
68
  }
67
- click() {
69
+ clicked() {
68
70
  const container = this.core.activeContainer;
69
71
  if (!container.isPlaying()) {
70
72
  container.play();
@@ -75,14 +77,14 @@ export class DvrControls extends UICorePlugin {
75
77
  * @internal
76
78
  */
77
79
  render() {
80
+ trace(`${T} render`);
78
81
  this.$el.html(DvrControls.template({
79
82
  i18n: this.core.i18n,
80
83
  }));
84
+ this.$el.find('#gplayer-mc-back-to-live').hide();
85
+ this.$el.find('#gplayer-mc-live').hide();
81
86
  return this;
82
87
  }
83
- onMediacontrolRendered() {
84
- this.render();
85
- }
86
88
  onMetadataLoaded() {
87
89
  this.mount();
88
90
  this.toggleState(this.core.activeContainer.isDvrInUse());
@@ -94,22 +96,22 @@ export class DvrControls extends UICorePlugin {
94
96
  }
95
97
  const mediaControl = this.core.getPlugin('media_control');
96
98
  assert(mediaControl, 'media_control plugin is required');
97
- // TODO -> to MediaControl
99
+ // TODO -> to MediaControl (auto hide)
98
100
  mediaControl.toggleElement('duration', false);
99
101
  mediaControl.toggleElement('position', false);
100
- mediaControl.mount('dvr', this.$el);
102
+ mediaControl.mount('left', this.$el); // TODO use independent mount point
101
103
  }
102
104
  onDvrStateChanged(dvrInUse) {
103
105
  this.toggleState(dvrInUse);
104
106
  }
105
107
  toggleState(dvrInUse) {
106
108
  if (dvrInUse) {
107
- this.$el.find('#media-control-back-to-live').show();
108
- this.$el.find('#media-control-live').hide();
109
+ this.$el.find('#gplayer-mc-back-to-live').show();
110
+ this.$el.find('#gplayer-mc-live').hide();
109
111
  }
110
112
  else {
111
- this.$el.find('#media-control-back-to-live').hide();
112
- this.$el.find('#media-control-live').show();
113
+ this.$el.find('#gplayer-mc-back-to-live').hide();
114
+ this.$el.find('#gplayer-mc-live').show();
113
115
  }
114
116
  }
115
117
  }
@@ -10,7 +10,7 @@ export type MediaControlLeftElement = 'clipText' | 'duration' | 'dvr' | 'playpau
10
10
  * Media control elements that appear in main layer, spanning the entire width of the player.
11
11
  * @beta
12
12
  */
13
- export type MediaControlLayerElement = 'seekbar' | 'seekBarContainer';
13
+ export type MediaControlLayerElement = 'seekbar' | 'seekBarContainer' | '_';
14
14
  /**
15
15
  * Media control elements that appear in the right area.
16
16
  * @beta
@@ -21,6 +21,7 @@ export type MediaControlRightElement = 'audiotracks' | 'cc' | 'fullscreen' | 'hd
21
21
  * @beta
22
22
  */
23
23
  export type MediaControlElement = MediaControlLeftElement | MediaControlLayerElement | MediaControlRightElement;
24
+ export type MediaControlSlotSelector = 'root' | 'base' | 'left' | 'right' | 'center' | 'seekbar';
24
25
  /**
25
26
  * Specifies the allowed media control elements in each area.
26
27
  * Can be used to restrict rendered media control elements.
@@ -245,21 +246,29 @@ export declare class MediaControl extends UICorePlugin {
245
246
  /**
246
247
  * Get a media control element DOM node
247
248
  * @param name - The name of the media control element
248
- * @returns The DOM node to render to or extend
249
+ * @param element - The DOM node/fragment to mount
250
+ * @deprecated Use {@link MediaControl.mount} instead
251
+ */
252
+ slot(name: MediaControlElement, element: ZeptoResult): void;
253
+ /**
254
+ * Mounts a media control element at a specific location
255
+ * @param name - The location to mount the element
256
+ * @param element - The element to mount
249
257
  * @remarks
250
258
  * Use this method to render custom media control UI in a plugin
251
259
  * @example
252
260
  * ```ts
253
261
  * class MyPlugin extends UICorePlugin {
254
262
  * override render() {
255
- * this.$el.html('<div data-clips>Here we go</div>')
256
- * this.core.getPlugin('media_control').mount('clips', this.$el)
263
+ * this.$el.html('<div id="my-element" class="my-class">Here we go</div>')
264
+ * this.core.getPlugin('media_control').mount('left', this.$el)
257
265
  * return this
258
266
  * }
259
267
  * }
260
268
  * ```
261
269
  */
262
- mount(name: MediaControlElement, element: ZeptoResult): void;
270
+ mount(name: MediaControlSlotSelector, element: ZeptoResult): void;
271
+ private getMountParent;
263
272
  /**
264
273
  * Toggle the visibility of a media control element
265
274
  * @param name - The name of the media control element
@@ -1 +1 @@
1
- {"version":3,"file":"MediaControl.d.ts","sourceRoot":"","sources":["../../../src/plugins/media-control/MediaControl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MediaControl.d.ts","sourceRoot":"","sources":["../../../src/plugins/media-control/MediaControl.ts"],"names":[],"mappings":"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"}
@@ -483,7 +483,9 @@ export class MediaControl extends UICorePlugin {
483
483
  return false;
484
484
  }
485
485
  togglePlayStop() {
486
- this.container.isPlaying() ? this.container.stop({ ui: true }) : this.container.play();
486
+ this.container.isPlaying()
487
+ ? this.container.stop({ ui: true })
488
+ : this.container.play();
487
489
  }
488
490
  startSeekDrag(event) {
489
491
  if (!this.settings.seekEnabled) {
@@ -625,17 +627,20 @@ export class MediaControl extends UICorePlugin {
625
627
  this.$volumeBarContainer?.removeClass('volume-bar-hide');
626
628
  }
627
629
  hideVolumeBar(timeout = 400) {
628
- if (!this.$volumeBarContainer) {
629
- return;
630
- }
631
630
  if (this.hideVolumeId) {
632
631
  clearTimeout(this.hideVolumeId);
633
632
  }
634
633
  if (this.draggingVolumeBar) {
635
- this.hideVolumeId = setTimeout(() => this.hideVolumeBar(), timeout);
634
+ this.hideVolumeId = setTimeout(() => {
635
+ this.hideVolumeId = null;
636
+ this.hideVolumeBar();
637
+ }, timeout);
636
638
  }
637
639
  else {
638
- this.hideVolumeId = setTimeout(() => this.$volumeBarContainer?.addClass('volume-bar-hide'), timeout);
640
+ this.hideVolumeId = setTimeout(() => {
641
+ this.hideVolumeId = null;
642
+ this.$volumeBarContainer.addClass('volume-bar-hide');
643
+ }, timeout);
639
644
  }
640
645
  }
641
646
  ended() {
@@ -800,7 +805,7 @@ export class MediaControl extends UICorePlugin {
800
805
  if (this.core.activePlayback.name === 'html5_video') {
801
806
  newSettings.seekEnabled = this.isSeekEnabledForHtml5Playback();
802
807
  }
803
- const settingsChanged = serializeSettings(this.settings) !== serializeSettings(newSettings);
808
+ const settingsChanged = !isEqualSettings(this.settings, newSettings);
804
809
  if (settingsChanged) {
805
810
  this.settings = newSettings;
806
811
  this.hasUpdate = true;
@@ -835,35 +840,50 @@ export class MediaControl extends UICorePlugin {
835
840
  /**
836
841
  * Get a media control element DOM node
837
842
  * @param name - The name of the media control element
838
- * @returns The DOM node to render to or extend
843
+ * @param element - The DOM node/fragment to mount
844
+ * @deprecated Use {@link MediaControl.mount} instead
845
+ */
846
+ slot(name, element) {
847
+ const panel = this.getElementLocation(name);
848
+ if (panel) {
849
+ element.attr(`data-${name}`, '');
850
+ mountTo(panel, element);
851
+ }
852
+ }
853
+ /**
854
+ * Mounts a media control element at a specific location
855
+ * @param name - The location to mount the element
856
+ * @param element - The element to mount
839
857
  * @remarks
840
858
  * Use this method to render custom media control UI in a plugin
841
859
  * @example
842
860
  * ```ts
843
861
  * class MyPlugin extends UICorePlugin {
844
862
  * override render() {
845
- * this.$el.html('<div data-clips>Here we go</div>')
846
- * this.core.getPlugin('media_control').mount('clips', this.$el)
863
+ * this.$el.html('<div id="my-element" class="my-class">Here we go</div>')
864
+ * this.core.getPlugin('media_control').mount('left', this.$el)
847
865
  * return this
848
866
  * }
849
867
  * }
850
868
  * ```
851
869
  */
852
870
  mount(name, element) {
853
- const panel = this.getElementLocation(name);
854
- if (panel) {
855
- const current = panel.find(`[data-${name}]`);
856
- element.attr(`data-${name}`, '');
857
- // TODO test
858
- if (current.length) {
859
- if (current[0] === element[0]) {
860
- return;
861
- }
862
- current.replaceWith(element);
863
- }
864
- else {
865
- panel.append(element);
866
- }
871
+ mountTo(this.getMountParent(name), element);
872
+ }
873
+ getMountParent(name) {
874
+ switch (name) {
875
+ case 'root':
876
+ return this.$el;
877
+ case 'base':
878
+ return this.$el.find('.media-control-layer');
879
+ case 'center':
880
+ return this.getCenterPanel();
881
+ case 'left':
882
+ return this.getLeftPanel();
883
+ case 'right':
884
+ return this.getRightPanel();
885
+ default:
886
+ assert.fail(`Invalid mount parent name: ${name}`);
867
887
  }
868
888
  }
869
889
  /**
@@ -1064,14 +1084,12 @@ export class MediaControl extends UICorePlugin {
1064
1084
  this.$volumeBarContainer?.css({ display: 'none' });
1065
1085
  }
1066
1086
  }
1087
+ // TODO check if needed
1067
1088
  this.$seekBarPosition?.addClass('media-control-notransition');
1068
1089
  this.$seekBarScrubber?.addClass('media-control-notransition');
1069
- let previousSeekPercentage = 0;
1070
- if (this.displayedSeekBarPercentage) {
1071
- previousSeekPercentage = this.displayedSeekBarPercentage;
1072
- }
1090
+ const prevSeekPercentage = this.displayedSeekBarPercentage || 0;
1073
1091
  this.displayedSeekBarPercentage = null;
1074
- this.setSeekPercentage(previousSeekPercentage);
1092
+ this.setSeekPercentage(prevSeekPercentage);
1075
1093
  setTimeout(() => {
1076
1094
  !this.settings.seekEnabled &&
1077
1095
  this.$seekBarContainer?.addClass('seek-disabled');
@@ -1195,3 +1213,11 @@ function serializeSettings(s) {
1195
1213
  .concat([s.seekEnabled])
1196
1214
  .join(',');
1197
1215
  }
1216
+ function isEqualSettings(a, b) {
1217
+ return serializeSettings(a) === serializeSettings(b);
1218
+ }
1219
+ function mountTo(parent, element) {
1220
+ if (!parent.find(element).length) {
1221
+ parent.append(element);
1222
+ }
1223
+ }
@@ -80,7 +80,7 @@ export class PictureInPicture extends UICorePlugin {
80
80
  this.$el.html(PictureInPicture.buttonTemplate({ pipIcon }));
81
81
  const mediaControl = this.core.getPlugin('media_control');
82
82
  if (mediaControl) {
83
- mediaControl.mount('pip', this.$el);
83
+ mediaControl.slot('pip', this.$el);
84
84
  }
85
85
  return this;
86
86
  }
@@ -259,7 +259,7 @@ export class ClosedCaptions extends UICorePlugin {
259
259
  this.$line = $(ClosedCaptions.templateString());
260
260
  this.resizeFont();
261
261
  this.core.activeContainer.$el.append(this.$line);
262
- mediaControl.mount('cc', this.$el);
262
+ mediaControl.slot('cc', this.$el);
263
263
  this.updateSelection();
264
264
  this.renderIcon();
265
265
  return this;
@@ -1 +1 @@
1
- {"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../src/testUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,MAAM,MAAM,eAAe,CAAA;AAGlC,wBAAgB,cAAc,CAC5B,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,SAAS,GAAE,GAAkC;;;;;;;;;;;;;;;;;EAsB9C;AAED,wBAAgB,gBAAgB;;;EAK/B;AAED,wBAAgB,mBAAmB;;;;;;EAKlC;AAED,wBAAgB,kBAAkB,CAChC,IAAI,SAAS,EACb,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqCtC;AAED,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,QAAQ,GAAE,GAAgD;;;;;;;;;;;;;;;;;;;;;;;;;EA8B3D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,gBAmB/C;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,OAe7C"}
1
+ {"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../src/testUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,MAAM,MAAM,eAAe,CAAA;AAGlC,wBAAgB,cAAc,CAC5B,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,SAAS,GAAE,GAAkC;;;;;;;;;;;;;;;;;EAsB9C;AAED,wBAAgB,gBAAgB;;;EAK/B;AAED,wBAAgB,mBAAmB;;;;;;EAKlC;AAED,wBAAgB,kBAAkB,CAChC,IAAI,SAAS,EACb,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqCtC;AAED,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,QAAQ,GAAE,GAAgD;;;;;;;;;;;;;;;;;;;;;;;;;EA8B3D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,gBAqB/C;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,OAe7C"}
package/lib/testUtils.js CHANGED
@@ -111,6 +111,8 @@ export function createMockMediaControl(core) {
111
111
  // @ts-ignore
112
112
  mediaControl.mount = vi.fn();
113
113
  // @ts-ignore
114
+ mediaControl.slot = vi.fn();
115
+ // @ts-ignore
114
116
  mediaControl.container = core.activeContainer;
115
117
  // @ts-ignore
116
118
  mediaControl.getAvailableHeight = vi.fn().mockReturnValue(300);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gcorevideo/player",
3
- "version": "2.24.10",
3
+ "version": "2.24.13",
4
4
  "description": "Gcore JavaScript video player",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",