@gcorevideo/player 2.24.11 → 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.
- package/README.md +1 -0
- package/assets/dvr-controls/dvr_controls.scss +43 -80
- package/assets/dvr-controls/index.ejs +8 -2
- package/assets/media-control/width370.scss +1 -1
- package/dist/core.js +18 -17
- package/dist/index.css +516 -542
- package/dist/index.embed.js +91 -65
- package/dist/index.js +156 -128
- package/dist/player.d.ts +3264 -0
- package/lib/playback/dash-playback/DashPlayback.d.ts +2 -0
- package/lib/playback/dash-playback/DashPlayback.d.ts.map +1 -1
- package/lib/playback/dash-playback/DashPlayback.js +17 -11
- package/lib/playback/hls-playback/HlsPlayback.d.ts.map +1 -1
- package/lib/playback/hls-playback/HlsPlayback.js +0 -5
- package/lib/plugins/audio-selector/AudioTracks.js +1 -1
- package/lib/plugins/bottom-gear/BottomGear.js +1 -1
- package/lib/plugins/clips/Clips.js +1 -1
- package/lib/plugins/dvr-controls/DvrControls.d.ts +3 -3
- package/lib/plugins/dvr-controls/DvrControls.d.ts.map +1 -1
- package/lib/plugins/dvr-controls/DvrControls.js +14 -12
- package/lib/plugins/media-control/MediaControl.d.ts +14 -5
- package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
- package/lib/plugins/media-control/MediaControl.js +55 -29
- package/lib/plugins/picture-in-picture/PictureInPicture.js +1 -1
- package/lib/plugins/subtitles/ClosedCaptions.js +1 -1
- package/lib/testUtils.d.ts.map +1 -1
- package/lib/testUtils.js +2 -0
- package/package.json +1 -1
- package/src/playback/dash-playback/DashPlayback.ts +20 -13
- package/src/playback/hls-playback/HlsPlayback.ts +3 -8
- package/src/plugins/audio-selector/AudioTracks.ts +1 -1
- package/src/plugins/audio-selector/__tests__/AudioTracks.test.ts +2 -2
- package/src/plugins/bottom-gear/BottomGear.ts +1 -1
- package/src/plugins/bottom-gear/__tests__/BottomGear.test.ts +2 -2
- package/src/plugins/clips/Clips.ts +1 -1
- package/src/plugins/clips/__tests__/Clips.test.ts +1 -1
- package/src/plugins/dvr-controls/DvrControls.ts +14 -14
- package/src/plugins/dvr-controls/__tests__/DvrControls.test.ts +20 -17
- package/src/plugins/dvr-controls/__tests__/__snapshots__/DvrControls.test.ts.snap +4 -2
- package/src/plugins/media-control/MediaControl.ts +69 -35
- package/src/plugins/media-control/__tests__/MediaControl.test.ts +128 -112
- package/src/plugins/media-control/__tests__/__snapshots__/MediaControl.test.ts.snap +227 -24
- package/src/plugins/picture-in-picture/PictureInPicture.ts +1 -1
- package/src/plugins/subtitles/ClosedCaptions.ts +1 -1
- package/src/plugins/subtitles/__tests__/ClosedCaptions.test.ts +1 -1
- package/src/testUtils.ts +2 -0
- 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":"AAKA,OAAO,EAAe,QAAQ,EAAyB,MAAM,cAAc,CAAA;AAG3E,OAAO,MAAM,EAAE,EAIb,KAAK,WAAW,IAAI,eAAe,EAEnC,aAAa,EACd,MAAM,QAAQ,CAAA;AAEf,OAAO,EAGL,YAAY,EACZ,YAAY,EACZ,SAAS,EACV,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAA;AAMzE,KAAK,YAAY,GACb,OAAO,QAAQ,CAAC,GAAG,GACnB,OAAO,QAAQ,CAAC,IAAI,GACpB,OAAO,QAAQ,CAAC,GAAG,GACnB,OAAO,QAAQ,CAAC,KAAK,CAAA;AAEzB,KAAK,YAAY,GAAG,MAAM,CAAA;AAE1B,KAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAID,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,YAAY;IACpD,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAO;IAErC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAO;IAKnC,mCAAmC,EAAE,OAAO,CAAQ;IAEpD,aAAa,EAAE,OAAO,CAAQ;IAI9B,uBAAuB,EAAE,MAAM,CAAI;IASnC,wBAAwB,EAAE,MAAM,CAAI;IAEpC,aAAa,EAAE,YAAY,CAAe;IAG1C,aAAa,EAAE,YAAY,GAAG,IAAI,CAAO;IAEzC,gBAAgB,EAAE,SAAS,CAAI;IAE/B,KAAK,EAAE,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAO;IAE5C,2BAA2B,EAAE,MAAM,CAAI;IAEvC,aAAa,EAAE,SAAS,GAAG,IAAI,CAAO;IAEtC,eAAe,EAAE,YAAY,CAA2B;IAIxD,0BAA0B,EAAE,oBAAoB,GAAG,IAAI,CAAO;IAI9D,wBAAwB,EAAE,oBAAoB,GAAG,IAAI,CAAO;IAE5D,kBAAkB,UAAQ;IAE1B,YAAY,EAAE,aAAa,GAAG,IAAI,CAAO;IAEzC,gBAAgB,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,IAAI,CAAO;IAE9D,IAAI,IAAI,WAEP;IAED,IAAI,MAAM,IAAI,YAAY,EAAE,CAE3B;IAED,IAAI,YAAY,IAAI,MAAM,CAMzB;IAED,IAAI,OAAO,YAEV;IAED,IAAI,YAAY,CAAC,EAAE,EAAE,MAAM,EAoC1B;IAED,IAAI,UAAU,WASb;IAED,IAAI,IAAI,WAEP;IAID,IAAI,sBAAsB,WAczB;IAID,IAAI,oBAAoB,WAgBvB;IAED,IAAI,SAAS,WAKZ;gBAEW,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,GAAG;IAOzD,MAAM;IA6FN,MAAM;IAMN,MAAM;
|
|
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.
|
|
207
|
-
|
|
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
|
-
|
|
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.
|
|
408
|
+
this.destroyInstance();
|
|
412
409
|
super.stop();
|
|
413
|
-
this._dash = null;
|
|
414
410
|
}
|
|
415
411
|
}
|
|
416
|
-
|
|
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
|
-
|
|
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');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HlsPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/hls-playback/HlsPlayback.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,EACZ,MAAM,IAAI,SAAS,EAInB,KAAK,eAAe,EACpB,KAAK,cAAc,EAInB,KAAK,kBAAkB,EAIxB,MAAM,QAAQ,CAAA;AAEf,OAAO,EAIL,YAAY,EAEb,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAA;AAoCzE,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,YAAY;IACnD,OAAO,CAAC,UAAU,CAAQ;IAE1B,OAAO,CAAC,gBAAgB,CAAQ;IAEhC,OAAO,CAAC,gBAAgB,CAAwB;IAEhD,OAAO,CAAC,aAAa,CAAsB;IAE3C,OAAO,CAAC,mCAAmC,CAAQ;IAEnD,OAAO,CAAC,8BAA8B,CAAI;IAE1C,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,IAAI,CAAqB;IAEjC,OAAO,CAAC,aAAa,CAAsB;IAE3C,OAAO,CAAC,eAAe,CAA4B;IAEnD,OAAO,CAAC,OAAO,CAA8B;IAE7C,OAAO,CAAC,0BAA0B,CAA+B;IAEjE,OAAO,CAAC,wBAAwB,CAA+B;IAE/D,OAAO,CAAC,eAAe,CAAQ;IAE/B,OAAO,CAAC,uBAAuB,CAAI;IAEnC,OAAO,CAAC,aAAa,CAA6C;IAElE,OAAO,CAAC,aAAa,CAA4B;IAEjD,OAAO,CAAC,wBAAwB,CAAI;IAEpC,OAAO,CAAC,gBAAgB,CAAsB;IAE9C,OAAO,CAAC,yBAAyB,CAAI;IAErC,OAAO,CAAC,yBAAyB,CAAQ;IAEzC,OAAO,CAAC,uBAAuB,CAAQ;IAEvC,OAAO,CAAC,sBAAsB,CAAsB;IAEpD,OAAO,CAAC,gBAAgB,CAAuB;IAE/C;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,IAAI,MAAM,mBAET;IAED,IAAI,YAAY,IAIK,MAAM,CAF1B;IAED,IAAI,YAAY,CAAC,EAAE,EAAE,MAAM,EAS1B;IAED,IAAI,OAAO,WAGV;IAED,IAAI,sBAAsB,SAIzB;IAED,OAAO,KAAK,UAAU,GASrB;IAED,OAAO,KAAK,IAAI,GAEf;IAID,OAAO,KAAK,sBAAsB,GAcjC;IAID,IAAI,oBAAoB,WAevB;IAED,OAAO,KAAK,SAAS,GAEpB;IAmBD,OAAO,KAAK,2BAA2B,GAMtC;IAED,IAAI,iBAAiB,kBAEpB;IAED,IAAI,cAAc;;MAEjB;IAED,IAAI,eAAe,QAKlB;IAED,IAAI,WAAW,QAEd;IAED,IAAI,gBAAgB,kBAcnB;IAED,MAAM,KAAK,KAAK,iBAEf;gBAEW,GAAG,IAAI,EAAE,GAAG,EAAE;IAU1B,OAAO,CAAC,gBAAgB;IAmDxB,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,gBAAgB;IAkFxB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,0BAA0B;cAWf,MAAM;cAMN,MAAM;
|
|
1
|
+
{"version":3,"file":"HlsPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/hls-playback/HlsPlayback.ts"],"names":[],"mappings":"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"}
|
|
@@ -323,12 +323,7 @@ export default class HlsPlayback extends BasePlayback {
|
|
|
323
323
|
return super.render();
|
|
324
324
|
}
|
|
325
325
|
_ready() {
|
|
326
|
-
trace(`${T} _ready`, {
|
|
327
|
-
isReadyState: this._isReadyState, // is defined in HTML5Video
|
|
328
|
-
});
|
|
329
326
|
!this._hls && this._setup();
|
|
330
|
-
// this._isReadyState = true
|
|
331
|
-
// this.trigger(Events.PLAYBACK_READY, this.name)
|
|
332
327
|
super._ready();
|
|
333
328
|
}
|
|
334
329
|
_recover(evt, data, error) {
|
|
@@ -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.
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
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;
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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('
|
|
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('#
|
|
108
|
-
this.$el.find('#
|
|
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('#
|
|
112
|
-
this.$el.find('#
|
|
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
|
-
* @
|
|
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
|
|
256
|
-
* this.core.getPlugin('media_control').mount('
|
|
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:
|
|
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":"AAOA,OAAO,EAEL,YAAY,EAMZ,IAAI,EACL,MAAM,cAAc,CAAA;AASrB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAI5C,OAAO,kDAAkD,CAAA;AAWzD;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAC/B,UAAU,GACV,UAAU,GACV,KAAK,GACL,WAAW,GACX,UAAU,GACV,UAAU,GACV,QAAQ,GACR,OAAO,CAAA;AAEX;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,SAAS,GAAG,kBAAkB,CAAA;
|
|
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()
|
|
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(() =>
|
|
634
|
+
this.hideVolumeId = setTimeout(() => {
|
|
635
|
+
this.hideVolumeId = null;
|
|
636
|
+
this.hideVolumeBar();
|
|
637
|
+
}, timeout);
|
|
636
638
|
}
|
|
637
639
|
else {
|
|
638
|
-
this.hideVolumeId = setTimeout(() =>
|
|
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 =
|
|
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
|
-
* @
|
|
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
|
|
846
|
-
* this.core.getPlugin('media_control').mount('
|
|
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
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
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
|
-
|
|
1070
|
-
if (this.displayedSeekBarPercentage) {
|
|
1071
|
-
previousSeekPercentage = this.displayedSeekBarPercentage;
|
|
1072
|
-
}
|
|
1090
|
+
const prevSeekPercentage = this.displayedSeekBarPercentage || 0;
|
|
1073
1091
|
this.displayedSeekBarPercentage = null;
|
|
1074
|
-
this.setSeekPercentage(
|
|
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.
|
|
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.
|
|
262
|
+
mediaControl.slot('cc', this.$el);
|
|
263
263
|
this.updateSelection();
|
|
264
264
|
this.renderIcon();
|
|
265
265
|
return this;
|
package/lib/testUtils.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
@@ -325,11 +325,10 @@ export default class DashPlayback extends BasePlayback {
|
|
|
325
325
|
}
|
|
326
326
|
|
|
327
327
|
_ready() {
|
|
328
|
-
this.
|
|
329
|
-
|
|
328
|
+
!this._dash && this._setup()
|
|
329
|
+
super._ready()
|
|
330
330
|
}
|
|
331
331
|
|
|
332
|
-
// override
|
|
333
332
|
private override _setupSrc() {
|
|
334
333
|
// this playback manages the src on the video element itself
|
|
335
334
|
}
|
|
@@ -558,10 +557,7 @@ export default class DashPlayback extends BasePlayback {
|
|
|
558
557
|
|
|
559
558
|
override play() {
|
|
560
559
|
trace(`${T} play`, { dash: !!this._dash })
|
|
561
|
-
|
|
562
|
-
this._setup()
|
|
563
|
-
}
|
|
564
|
-
|
|
560
|
+
!this._dash && this._setup()
|
|
565
561
|
super.play()
|
|
566
562
|
this._startTimeUpdateTimer()
|
|
567
563
|
}
|
|
@@ -579,14 +575,12 @@ export default class DashPlayback extends BasePlayback {
|
|
|
579
575
|
override stop() {
|
|
580
576
|
if (this._dash) {
|
|
581
577
|
this._stopTimeUpdateTimer()
|
|
582
|
-
this.
|
|
578
|
+
this.destroyInstance()
|
|
583
579
|
super.stop()
|
|
584
|
-
this._dash = null
|
|
585
580
|
}
|
|
586
581
|
}
|
|
587
582
|
|
|
588
|
-
|
|
589
|
-
this._stopTimeUpdateTimer()
|
|
583
|
+
private destroyInstance() {
|
|
590
584
|
if (this._dash) {
|
|
591
585
|
this._dash.off(DASHJS.MediaPlayer.events.ERROR, this._onDASHJSSError)
|
|
592
586
|
this._dash.off(
|
|
@@ -598,8 +592,13 @@ export default class DashPlayback extends BasePlayback {
|
|
|
598
592
|
this.getDuration,
|
|
599
593
|
)
|
|
600
594
|
this._dash.reset()
|
|
595
|
+
this._dash = null
|
|
601
596
|
}
|
|
602
|
-
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
override destroy() {
|
|
600
|
+
this._stopTimeUpdateTimer()
|
|
601
|
+
this.destroyInstance()
|
|
603
602
|
return super.destroy()
|
|
604
603
|
}
|
|
605
604
|
|
|
@@ -673,7 +672,7 @@ export default class DashPlayback extends BasePlayback {
|
|
|
673
672
|
return toClapprTrack(t)
|
|
674
673
|
}
|
|
675
674
|
|
|
676
|
-
switchAudioTrack(id: string): void {
|
|
675
|
+
override switchAudioTrack(id: string): void {
|
|
677
676
|
assert.ok(this._dash, 'DASH.js MediaPlayer is not initialized')
|
|
678
677
|
const tracks = this._dash.getTracksFor('audio')
|
|
679
678
|
const track = tracks.find((t) => t.id === id)
|
|
@@ -681,6 +680,14 @@ export default class DashPlayback extends BasePlayback {
|
|
|
681
680
|
this._dash.setCurrentTrack(track)
|
|
682
681
|
}
|
|
683
682
|
|
|
683
|
+
override load(srcUrl: string) {
|
|
684
|
+
this._stopTimeUpdateTimer()
|
|
685
|
+
this.options.src = srcUrl
|
|
686
|
+
// TODO destroy the instance first?
|
|
687
|
+
this.destroyInstance()
|
|
688
|
+
this._setup()
|
|
689
|
+
}
|
|
690
|
+
|
|
684
691
|
private checkAudioTracks() {
|
|
685
692
|
// @ts-ignore
|
|
686
693
|
const tracks = this._dash.getTracksFor('audio')
|