@gcorevideo/player 2.22.14 → 2.22.15
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/assets/context-menu/context_menu.ejs +14 -6
- package/assets/context-menu/context_menu.scss +18 -4
- package/dist/core.js +5 -23
- package/dist/index.css +625 -613
- package/dist/index.js +45 -60
- package/dist/plugins/index.css +1378 -1366
- package/dist/plugins/index.js +39 -60
- package/lib/Player.d.ts.map +1 -1
- package/lib/Player.js +4 -1
- package/lib/playback/hls-playback/HlsPlayback.d.ts.map +1 -1
- package/lib/playback/hls-playback/HlsPlayback.js +0 -21
- package/lib/plugins/click-to-pause/ClickToPause.js +1 -1
- package/lib/plugins/context-menu/ContextMenu.d.ts +33 -12
- package/lib/plugins/context-menu/ContextMenu.d.ts.map +1 -1
- package/lib/plugins/context-menu/ContextMenu.js +40 -37
- package/package.json +1 -1
- package/src/Player.ts +4 -3
- package/src/playback/hls-playback/HlsPlayback.ts +0 -22
- package/src/plugins/click-to-pause/ClickToPause.ts +1 -1
- package/src/plugins/context-menu/ContextMenu.ts +72 -56
- package/src/plugins/media-control/__tests__/MediaControl.test.ts +66 -30
- package/tsconfig.tsbuildinfo +1 -1
package/dist/plugins/index.js
CHANGED
|
@@ -13318,42 +13318,18 @@ class ClipsPlugin extends UICorePlugin {
|
|
|
13318
13318
|
}
|
|
13319
13319
|
}
|
|
13320
13320
|
|
|
13321
|
-
const templateHtml$1 = "<ul class=\"context-menu-list\">\n <%
|
|
13322
|
-
|
|
13323
|
-
var version$1 = "2.22.14";
|
|
13324
|
-
|
|
13325
|
-
var packages = {
|
|
13326
|
-
"node_modules/@clappr/core": {
|
|
13327
|
-
version: "0.11.4"},
|
|
13328
|
-
"node_modules/dashjs": {
|
|
13329
|
-
version: "4.7.4"},
|
|
13330
|
-
"node_modules/hls.js": {
|
|
13331
|
-
version: "1.5.20"}};
|
|
13332
|
-
|
|
13333
|
-
/**
|
|
13334
|
-
* Version information about the gplayer and its main dependencies
|
|
13335
|
-
* @returns Version information about the gplayer and its main dependencies
|
|
13336
|
-
* @beta
|
|
13337
|
-
*/
|
|
13338
|
-
function version() {
|
|
13339
|
-
return {
|
|
13340
|
-
gplayer: version$1,
|
|
13341
|
-
clappr: packages['node_modules/@clappr/core'].version,
|
|
13342
|
-
dashjs: packages['node_modules/dashjs'].version,
|
|
13343
|
-
hlsjs: packages['node_modules/hls.js'].version,
|
|
13344
|
-
};
|
|
13345
|
-
}
|
|
13321
|
+
const templateHtml$1 = "<ul class=\"context-menu-list\" role=\"menu\" id=\"context-menu-options\">\n <% for (const item of options) { %>\n <li class=\"context-menu-list-item <%= item.class %>\">\n <button role=\"menuitem\" data-name=\"<%= item.name %>\">\n <% if (iconic) { %>\n <span class=\"context-menu-list-item_icon\"><%= item.icon || '' %></span>\n <% } %>\n <% if (item.labelKey) { %>\n <%= i18n.t(item.labelKey) %>\n <% } else { %>\n <%= item.label %>\n <% } %>\n </button>\n </li>\n <% } %>\n</ul>\n";
|
|
13346
13322
|
|
|
13347
13323
|
/**
|
|
13348
13324
|
* `PLUGIN` that displays a small context menu when clicked on the player container.
|
|
13349
13325
|
* @beta
|
|
13350
13326
|
* @remarks
|
|
13351
13327
|
* Configuration options - {@link ContextMenuPluginSettings}
|
|
13328
|
+
*
|
|
13329
|
+
* Should not be used together with {@link ClickToPause} plugin
|
|
13352
13330
|
*/
|
|
13353
13331
|
class ContextMenu extends UIContainerPlugin {
|
|
13354
|
-
|
|
13355
|
-
_url = '';
|
|
13356
|
-
menuOptions = [];
|
|
13332
|
+
open = false;
|
|
13357
13333
|
/**
|
|
13358
13334
|
* @internal
|
|
13359
13335
|
*/
|
|
@@ -13373,34 +13349,16 @@ class ContextMenu extends UIContainerPlugin {
|
|
|
13373
13349
|
return { class: 'context-menu' };
|
|
13374
13350
|
}
|
|
13375
13351
|
static template = tmpl(templateHtml$1);
|
|
13376
|
-
get label() {
|
|
13377
|
-
return this._label || 'Gcore player ver. ' + version().gplayer;
|
|
13378
|
-
}
|
|
13379
|
-
get url() {
|
|
13380
|
-
return this._url || 'https://gcore.com/';
|
|
13381
|
-
}
|
|
13382
|
-
get exposeVersion() {
|
|
13383
|
-
return {
|
|
13384
|
-
label: this.label,
|
|
13385
|
-
name: 'version',
|
|
13386
|
-
};
|
|
13387
|
-
}
|
|
13388
13352
|
/**
|
|
13389
13353
|
* @internal
|
|
13390
13354
|
*/
|
|
13391
13355
|
get events() {
|
|
13392
13356
|
return {
|
|
13393
|
-
'click [
|
|
13357
|
+
'click [role="menuitem"]': 'runAction',
|
|
13394
13358
|
};
|
|
13395
13359
|
}
|
|
13396
13360
|
constructor(container) {
|
|
13397
13361
|
super(container);
|
|
13398
|
-
if (this.options.contextMenu && this.options.contextMenu.label) {
|
|
13399
|
-
this._label = this.options.contextMenu.label;
|
|
13400
|
-
}
|
|
13401
|
-
if (this.options.contextMenu && this.options.contextMenu.url) {
|
|
13402
|
-
this._url = this.options.contextMenu.url;
|
|
13403
|
-
}
|
|
13404
13362
|
this.render();
|
|
13405
13363
|
$('body').on('click', this.hideOnBodyClick);
|
|
13406
13364
|
}
|
|
@@ -13408,8 +13366,8 @@ class ContextMenu extends UIContainerPlugin {
|
|
|
13408
13366
|
* @internal
|
|
13409
13367
|
*/
|
|
13410
13368
|
bindEvents() {
|
|
13411
|
-
this.listenTo(this.container, Events.CONTAINER_CONTEXTMENU, this.
|
|
13412
|
-
this.listenTo(this.container, Events.CONTAINER_CLICK, this.
|
|
13369
|
+
this.listenTo(this.container, Events.CONTAINER_CONTEXTMENU, this.onContextMenu);
|
|
13370
|
+
this.listenTo(this.container, Events.CONTAINER_CLICK, this.onContainerClick);
|
|
13413
13371
|
}
|
|
13414
13372
|
/**
|
|
13415
13373
|
* @internal
|
|
@@ -13418,34 +13376,55 @@ class ContextMenu extends UIContainerPlugin {
|
|
|
13418
13376
|
$('body').off('click', this.hideOnBodyClick);
|
|
13419
13377
|
return super.destroy();
|
|
13420
13378
|
}
|
|
13421
|
-
|
|
13379
|
+
onContainerClick() {
|
|
13380
|
+
this.hide();
|
|
13381
|
+
}
|
|
13382
|
+
onContextMenu(event) {
|
|
13383
|
+
if (!this.options.contextMenu?.options?.length) {
|
|
13384
|
+
return;
|
|
13385
|
+
}
|
|
13422
13386
|
event.preventDefault();
|
|
13387
|
+
event.stopPropagation();
|
|
13423
13388
|
const offset = this.container?.$el.offset();
|
|
13424
13389
|
this.show(event.pageY - offset.top, event.pageX - offset.left);
|
|
13425
13390
|
}
|
|
13426
13391
|
show(top, left) {
|
|
13427
|
-
this.
|
|
13428
|
-
if (this.options.contextMenu &&
|
|
13429
|
-
this.options.contextMenu.preventShowContextMenu) {
|
|
13430
|
-
return;
|
|
13431
|
-
}
|
|
13392
|
+
this.open = true;
|
|
13432
13393
|
this.$el.css({ top, left });
|
|
13433
13394
|
this.$el.show();
|
|
13434
13395
|
}
|
|
13435
13396
|
hide() {
|
|
13397
|
+
this.open = false;
|
|
13436
13398
|
this.$el.hide();
|
|
13437
13399
|
}
|
|
13438
|
-
|
|
13439
|
-
|
|
13400
|
+
runAction(event) {
|
|
13401
|
+
event.preventDefault();
|
|
13402
|
+
event.stopPropagation();
|
|
13403
|
+
const itemName = event.currentTarget.dataset.name;
|
|
13404
|
+
if (!itemName) {
|
|
13405
|
+
return;
|
|
13406
|
+
}
|
|
13407
|
+
const item = this.options.contextMenu?.options.find((option) => option.name === itemName);
|
|
13408
|
+
if (item?.handler) {
|
|
13409
|
+
item.handler();
|
|
13410
|
+
}
|
|
13411
|
+
this.hide();
|
|
13440
13412
|
}
|
|
13441
13413
|
/**
|
|
13442
13414
|
* @internal
|
|
13443
13415
|
*/
|
|
13444
13416
|
render() {
|
|
13445
|
-
this.
|
|
13446
|
-
|
|
13417
|
+
if (!this.options.contextMenu?.options?.length) {
|
|
13418
|
+
return this;
|
|
13419
|
+
}
|
|
13420
|
+
const options = this.options.contextMenu.options;
|
|
13421
|
+
this.$el.html(ContextMenu.template({
|
|
13422
|
+
options,
|
|
13423
|
+
i18n: this.container.i18n,
|
|
13424
|
+
iconic: options.some((option) => option.icon),
|
|
13425
|
+
}));
|
|
13447
13426
|
this.container.$el.append(this.$el); // TODO append to the container, turn into a container plugin
|
|
13448
|
-
this.hide();
|
|
13427
|
+
this.$el.hide();
|
|
13449
13428
|
return this;
|
|
13450
13429
|
}
|
|
13451
13430
|
hideOnBodyClick = () => {
|
package/lib/Player.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../src/Player.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,aAAa,EAEb,uBAAuB,EACxB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAGtD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEjE;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,WAAW,IACjD,CAAC,SAAS,WAAW,CAAC,IAAI,GACtB,CAAC,MAAM,CAAC,GACR,CAAC,SAAS,WAAW,CAAC,YAAY,GAClC,CAAC,MAAM,CAAC,GACR,CAAC,SAAS,WAAW,CAAC,UAAU,GAChC,CAAC,YAAY,CAAC,GACd,CAAC,SAAS,WAAW,CAAC,MAAM,GAC5B,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GACnC,CAAC,SAAS,WAAW,CAAC,UAAU,GAChC,CAAC,OAAO,CAAC,GACT,CAAC,SAAS,WAAW,CAAC,KAAK,GAC3B,CAAC,aAAa,CAAC,GACf,EAAE,CAAA;AAER;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,WAAW,IAAI,CACtD,GAAG,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAC1B,IAAI,CAAA;AAeT;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,aAAa,CAAA;AAI3D;;;;;;;GAOG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAgC;IAE9C,OAAO,CAAC,OAAO,CAAqB;IAEpC,OAAO,CAAC,MAAM,CAA4B;IAE1C,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO,CAAC,QAAQ,CAA2B;gBAE/B,MAAM,EAAE,YAAY;IAOhC;;;;OAIG;IACH,EAAE,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAIlE;;;;OAIG;IACH,GAAG,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAInE;;;;;;;;;OASG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC;IAIvC;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,QAAQ,CAAC,aAAa,EAAE,WAAW,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../src/Player.ts"],"names":[],"mappings":"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"}
|
package/lib/Player.js
CHANGED
|
@@ -93,6 +93,9 @@ export class Player {
|
|
|
93
93
|
* ```
|
|
94
94
|
*/
|
|
95
95
|
attachTo(playerElement) {
|
|
96
|
+
trace(`${T} attachTo`, {
|
|
97
|
+
player: !!this.player,
|
|
98
|
+
});
|
|
96
99
|
assert.ok(!this.player, 'Player already initialized');
|
|
97
100
|
assert.ok(playerElement, 'Player container element is required');
|
|
98
101
|
if (this.config.debug === 'all' || this.config.debug === 'clappr') {
|
|
@@ -304,9 +307,9 @@ export class Player {
|
|
|
304
307
|
trace(`${T} initPlayer`, {
|
|
305
308
|
autoPlay: coreOptions.autoPlay,
|
|
306
309
|
sources: coreOptions.sources,
|
|
310
|
+
player: !!this.player,
|
|
307
311
|
// TODO selected options
|
|
308
312
|
});
|
|
309
|
-
assert.ok(!this.player, 'Player already initialized');
|
|
310
313
|
const player = new PlayerClappr(coreOptions);
|
|
311
314
|
this.player = player;
|
|
312
315
|
this.bindCoreListeners();
|
|
@@ -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,EAGb,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,CAAQ;IAE7B,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,IAAI,IAAI,WAEP;IAED,IAAI,gBAAgB;;MAEnB;IAED,IAAI,MAAM,mBAET;IAED,IAAI,YAAY,IAQK,MAAM,CAN1B;IAED,IAAI,OAAO,YAEV;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;IAc1B,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,gBAAgB;IA8ExB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,0BAA0B;cAWf,MAAM;cAMN,MAAM;IASzB,OAAO,CAAC,QAAQ;cAsBG,SAAS,CAAC,MAAM,EAAE,MAAM;IAE3C,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,kBAAkB;IAO1B,WAAW;IAIX,cAAc;IAad,kBAAkB;IAIlB,cAAc,CAAC,UAAU,EAAE,MAAM;IAOjC,IAAI,CAAC,IAAI,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"HlsPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/hls-playback/HlsPlayback.ts"],"names":[],"mappings":"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"}
|
|
@@ -386,16 +386,6 @@ export default class HlsPlayback extends BasePlayback {
|
|
|
386
386
|
this.seek(seekTo);
|
|
387
387
|
}
|
|
388
388
|
seek(time) {
|
|
389
|
-
// trace(`${T} seek`, {
|
|
390
|
-
// time,
|
|
391
|
-
// duration: this._duration,
|
|
392
|
-
// startTime: this._startTime,
|
|
393
|
-
// currentTimestamp: this.currentTimestamp,
|
|
394
|
-
// playbackType: this.getPlaybackType(),
|
|
395
|
-
// dvrEnabled: this.dvrEnabled,
|
|
396
|
-
// durationExcludesAfterLiveSyncPoint: this._durationExcludesAfterLiveSyncPoint,
|
|
397
|
-
// minDvrSize: this._minDvrSize,
|
|
398
|
-
// })
|
|
399
389
|
if (time < 0) {
|
|
400
390
|
Log.warn('Attempt to seek to a negative time. Resetting to live point. Use seekToLivePoint() to seek to the live point.');
|
|
401
391
|
time = this.getDuration();
|
|
@@ -547,11 +537,6 @@ export default class HlsPlayback extends BasePlayback {
|
|
|
547
537
|
return;
|
|
548
538
|
}
|
|
549
539
|
this._lastTimeUpdate = update;
|
|
550
|
-
// trace(`${T} _onTimeUpdate`, {
|
|
551
|
-
// current: update.current,
|
|
552
|
-
// total: update.total,
|
|
553
|
-
// firstFragDateTime: update.firstFragDateTime,
|
|
554
|
-
// })
|
|
555
540
|
this.trigger(Events.PLAYBACK_TIMEUPDATE, update, this.name);
|
|
556
541
|
}
|
|
557
542
|
_onDurationChange() {
|
|
@@ -823,12 +808,6 @@ export default class HlsPlayback extends BasePlayback {
|
|
|
823
808
|
this.trigger(Events.PLAYBACK_LEVEL_SWITCH_END);
|
|
824
809
|
}
|
|
825
810
|
get dvrEnabled() {
|
|
826
|
-
// trace(`${T} dvrEnabled`, {
|
|
827
|
-
// durationExcludesAfterLiveSyncPoint: this._durationExcludesAfterLiveSyncPoint,
|
|
828
|
-
// duration: this._duration,
|
|
829
|
-
// minDvrSize: this._minDvrSize,
|
|
830
|
-
// playbackType: this.getPlaybackType(),
|
|
831
|
-
// })
|
|
832
811
|
// enabled when:
|
|
833
812
|
// - the duration does not include content after hlsjs's live sync point
|
|
834
813
|
// - the playable region duration is longer than the configured duration to enable dvr after
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { ContainerPlugin, Events, Playback } from '@clappr/core';
|
|
6
6
|
import { trace } from '@gcorevideo/utils';
|
|
7
7
|
import { CLAPPR_VERSION } from '../../build.js';
|
|
8
|
-
const T = 'plugins.
|
|
8
|
+
const T = 'plugins.click_to_pause';
|
|
9
9
|
/**
|
|
10
10
|
* A small `PLUGIN` that toggles the playback state on click over the video container
|
|
11
11
|
* @beta
|
|
@@ -1,24 +1,47 @@
|
|
|
1
1
|
import { Container, UIContainerPlugin } from '@clappr/core';
|
|
2
2
|
import '../../../assets/context-menu/context_menu.scss';
|
|
3
|
+
/**
|
|
4
|
+
* @beta
|
|
5
|
+
*/
|
|
6
|
+
export type MenuOption = {
|
|
7
|
+
/**
|
|
8
|
+
* Menu item label text. One of `label` or `labelKey` must be specified.
|
|
9
|
+
*/
|
|
10
|
+
label?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Menu item label localisation key, if specified, the `label` will be ignored
|
|
13
|
+
*/
|
|
14
|
+
labelKey?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Menu item name. Must be unique.
|
|
17
|
+
*/
|
|
18
|
+
name: string;
|
|
19
|
+
/**
|
|
20
|
+
* Menu item handler function
|
|
21
|
+
*/
|
|
22
|
+
handler?: () => void;
|
|
23
|
+
/**
|
|
24
|
+
* Menu item icon, plain HTML string
|
|
25
|
+
*/
|
|
26
|
+
icon?: string;
|
|
27
|
+
};
|
|
3
28
|
/**
|
|
4
29
|
* Context menu plugin settings
|
|
5
30
|
* @beta
|
|
6
31
|
*/
|
|
7
32
|
export interface ContextMenuPluginSettings {
|
|
8
|
-
|
|
9
|
-
url?: string;
|
|
10
|
-
preventShowContextMenu?: boolean;
|
|
33
|
+
options?: MenuOption[];
|
|
11
34
|
}
|
|
12
35
|
/**
|
|
13
36
|
* `PLUGIN` that displays a small context menu when clicked on the player container.
|
|
14
37
|
* @beta
|
|
15
38
|
* @remarks
|
|
16
39
|
* Configuration options - {@link ContextMenuPluginSettings}
|
|
40
|
+
*
|
|
41
|
+
* Should not be used together with {@link ClickToPause} plugin
|
|
17
42
|
*/
|
|
18
43
|
export declare class ContextMenu extends UIContainerPlugin {
|
|
19
|
-
private
|
|
20
|
-
private _url;
|
|
21
|
-
private menuOptions;
|
|
44
|
+
private open;
|
|
22
45
|
/**
|
|
23
46
|
* @internal
|
|
24
47
|
*/
|
|
@@ -36,14 +59,11 @@ export declare class ContextMenu extends UIContainerPlugin {
|
|
|
36
59
|
class: string;
|
|
37
60
|
};
|
|
38
61
|
private static readonly template;
|
|
39
|
-
private get label();
|
|
40
|
-
private get url();
|
|
41
|
-
private get exposeVersion();
|
|
42
62
|
/**
|
|
43
63
|
* @internal
|
|
44
64
|
*/
|
|
45
65
|
get events(): {
|
|
46
|
-
'click [
|
|
66
|
+
'click [role="menuitem"]': string;
|
|
47
67
|
};
|
|
48
68
|
constructor(container: Container);
|
|
49
69
|
/**
|
|
@@ -54,10 +74,11 @@ export declare class ContextMenu extends UIContainerPlugin {
|
|
|
54
74
|
* @internal
|
|
55
75
|
*/
|
|
56
76
|
destroy(): import("@clappr/core").UIObject;
|
|
57
|
-
private
|
|
77
|
+
private onContainerClick;
|
|
78
|
+
private onContextMenu;
|
|
58
79
|
private show;
|
|
59
80
|
private hide;
|
|
60
|
-
private
|
|
81
|
+
private runAction;
|
|
61
82
|
/**
|
|
62
83
|
* @internal
|
|
63
84
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../../src/plugins/context-menu/ContextMenu.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../../src/plugins/context-menu/ContextMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,SAAS,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAIhF,OAAO,gDAAgD,CAAA;AAGvD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;CACvB;AAID;;;;;;;GAOG;AACH,qBAAa,WAAY,SAAQ,iBAAiB;IAChD,OAAO,CAAC,IAAI,CAAQ;IAEpB;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;IACH,IAAa,UAAU;;MAEtB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAEzD;;OAEG;IACH,IAAa,MAAM;;MAIlB;gBAEW,SAAS,EAAE,SAAS;IAMhC;;OAEG;IACM,UAAU;IASnB;;OAEG;IACM,OAAO;IAKhB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,SAAS;IAiBjB;;OAEG;IACM,MAAM;IAkBf,OAAO,CAAC,eAAe,CAEtB;CACF"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { Events, template, $, UIContainerPlugin
|
|
1
|
+
import { Events, template, $, UIContainerPlugin } from '@clappr/core';
|
|
2
2
|
import { CLAPPR_VERSION } from '../../build.js';
|
|
3
3
|
import '../../../assets/context-menu/context_menu.scss';
|
|
4
4
|
import templateHtml from '../../../assets/context-menu/context_menu.ejs';
|
|
5
|
-
|
|
5
|
+
const T = 'plugins.context_menu';
|
|
6
6
|
/**
|
|
7
7
|
* `PLUGIN` that displays a small context menu when clicked on the player container.
|
|
8
8
|
* @beta
|
|
9
9
|
* @remarks
|
|
10
10
|
* Configuration options - {@link ContextMenuPluginSettings}
|
|
11
|
+
*
|
|
12
|
+
* Should not be used together with {@link ClickToPause} plugin
|
|
11
13
|
*/
|
|
12
14
|
export class ContextMenu extends UIContainerPlugin {
|
|
13
|
-
|
|
14
|
-
_url = '';
|
|
15
|
-
menuOptions = [];
|
|
15
|
+
open = false;
|
|
16
16
|
/**
|
|
17
17
|
* @internal
|
|
18
18
|
*/
|
|
@@ -32,34 +32,16 @@ export class ContextMenu extends UIContainerPlugin {
|
|
|
32
32
|
return { class: 'context-menu' };
|
|
33
33
|
}
|
|
34
34
|
static template = template(templateHtml);
|
|
35
|
-
get label() {
|
|
36
|
-
return this._label || 'Gcore player ver. ' + version().gplayer;
|
|
37
|
-
}
|
|
38
|
-
get url() {
|
|
39
|
-
return this._url || 'https://gcore.com/';
|
|
40
|
-
}
|
|
41
|
-
get exposeVersion() {
|
|
42
|
-
return {
|
|
43
|
-
label: this.label,
|
|
44
|
-
name: 'version',
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
35
|
/**
|
|
48
36
|
* @internal
|
|
49
37
|
*/
|
|
50
38
|
get events() {
|
|
51
39
|
return {
|
|
52
|
-
'click [
|
|
40
|
+
'click [role="menuitem"]': 'runAction',
|
|
53
41
|
};
|
|
54
42
|
}
|
|
55
43
|
constructor(container) {
|
|
56
44
|
super(container);
|
|
57
|
-
if (this.options.contextMenu && this.options.contextMenu.label) {
|
|
58
|
-
this._label = this.options.contextMenu.label;
|
|
59
|
-
}
|
|
60
|
-
if (this.options.contextMenu && this.options.contextMenu.url) {
|
|
61
|
-
this._url = this.options.contextMenu.url;
|
|
62
|
-
}
|
|
63
45
|
this.render();
|
|
64
46
|
$('body').on('click', this.hideOnBodyClick);
|
|
65
47
|
}
|
|
@@ -67,8 +49,8 @@ export class ContextMenu extends UIContainerPlugin {
|
|
|
67
49
|
* @internal
|
|
68
50
|
*/
|
|
69
51
|
bindEvents() {
|
|
70
|
-
this.listenTo(this.container, Events.CONTAINER_CONTEXTMENU, this.
|
|
71
|
-
this.listenTo(this.container, Events.CONTAINER_CLICK, this.
|
|
52
|
+
this.listenTo(this.container, Events.CONTAINER_CONTEXTMENU, this.onContextMenu);
|
|
53
|
+
this.listenTo(this.container, Events.CONTAINER_CLICK, this.onContainerClick);
|
|
72
54
|
}
|
|
73
55
|
/**
|
|
74
56
|
* @internal
|
|
@@ -77,34 +59,55 @@ export class ContextMenu extends UIContainerPlugin {
|
|
|
77
59
|
$('body').off('click', this.hideOnBodyClick);
|
|
78
60
|
return super.destroy();
|
|
79
61
|
}
|
|
80
|
-
|
|
62
|
+
onContainerClick() {
|
|
63
|
+
this.hide();
|
|
64
|
+
}
|
|
65
|
+
onContextMenu(event) {
|
|
66
|
+
if (!this.options.contextMenu?.options?.length) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
81
69
|
event.preventDefault();
|
|
70
|
+
event.stopPropagation();
|
|
82
71
|
const offset = this.container?.$el.offset();
|
|
83
72
|
this.show(event.pageY - offset.top, event.pageX - offset.left);
|
|
84
73
|
}
|
|
85
74
|
show(top, left) {
|
|
86
|
-
this.
|
|
87
|
-
if (this.options.contextMenu &&
|
|
88
|
-
this.options.contextMenu.preventShowContextMenu) {
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
75
|
+
this.open = true;
|
|
91
76
|
this.$el.css({ top, left });
|
|
92
77
|
this.$el.show();
|
|
93
78
|
}
|
|
94
79
|
hide() {
|
|
80
|
+
this.open = false;
|
|
95
81
|
this.$el.hide();
|
|
96
82
|
}
|
|
97
|
-
|
|
98
|
-
|
|
83
|
+
runAction(event) {
|
|
84
|
+
event.preventDefault();
|
|
85
|
+
event.stopPropagation();
|
|
86
|
+
const itemName = event.currentTarget.dataset.name;
|
|
87
|
+
if (!itemName) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
const item = this.options.contextMenu?.options.find((option) => option.name === itemName);
|
|
91
|
+
if (item?.handler) {
|
|
92
|
+
item.handler();
|
|
93
|
+
}
|
|
94
|
+
this.hide();
|
|
99
95
|
}
|
|
100
96
|
/**
|
|
101
97
|
* @internal
|
|
102
98
|
*/
|
|
103
99
|
render() {
|
|
104
|
-
this.
|
|
105
|
-
|
|
100
|
+
if (!this.options.contextMenu?.options?.length) {
|
|
101
|
+
return this;
|
|
102
|
+
}
|
|
103
|
+
const options = this.options.contextMenu.options;
|
|
104
|
+
this.$el.html(ContextMenu.template({
|
|
105
|
+
options,
|
|
106
|
+
i18n: this.container.i18n,
|
|
107
|
+
iconic: options.some((option) => option.icon),
|
|
108
|
+
}));
|
|
106
109
|
this.container.$el.append(this.$el); // TODO append to the container, turn into a container plugin
|
|
107
|
-
this.hide();
|
|
110
|
+
this.$el.hide();
|
|
108
111
|
return this;
|
|
109
112
|
}
|
|
110
113
|
hideOnBodyClick = () => {
|
package/package.json
CHANGED
package/src/Player.ts
CHANGED
|
@@ -159,6 +159,9 @@ export class Player {
|
|
|
159
159
|
* ```
|
|
160
160
|
*/
|
|
161
161
|
attachTo(playerElement: HTMLElement): void {
|
|
162
|
+
trace(`${T} attachTo`, {
|
|
163
|
+
player: !!this.player,
|
|
164
|
+
})
|
|
162
165
|
assert.ok(!this.player, 'Player already initialized')
|
|
163
166
|
assert.ok(playerElement, 'Player container element is required')
|
|
164
167
|
if (this.config.debug === 'all' || this.config.debug === 'clappr') {
|
|
@@ -398,11 +401,9 @@ export class Player {
|
|
|
398
401
|
trace(`${T} initPlayer`, {
|
|
399
402
|
autoPlay: coreOptions.autoPlay,
|
|
400
403
|
sources: coreOptions.sources,
|
|
404
|
+
player: !!this.player,
|
|
401
405
|
// TODO selected options
|
|
402
406
|
})
|
|
403
|
-
|
|
404
|
-
assert.ok(!this.player, 'Player already initialized')
|
|
405
|
-
|
|
406
407
|
const player = new PlayerClappr(coreOptions)
|
|
407
408
|
this.player = player
|
|
408
409
|
this.bindCoreListeners()
|
|
@@ -586,17 +586,6 @@ export default class HlsPlayback extends BasePlayback {
|
|
|
586
586
|
}
|
|
587
587
|
|
|
588
588
|
seek(time: number) {
|
|
589
|
-
// trace(`${T} seek`, {
|
|
590
|
-
// time,
|
|
591
|
-
// duration: this._duration,
|
|
592
|
-
// startTime: this._startTime,
|
|
593
|
-
// currentTimestamp: this.currentTimestamp,
|
|
594
|
-
// playbackType: this.getPlaybackType(),
|
|
595
|
-
// dvrEnabled: this.dvrEnabled,
|
|
596
|
-
// durationExcludesAfterLiveSyncPoint: this._durationExcludesAfterLiveSyncPoint,
|
|
597
|
-
// minDvrSize: this._minDvrSize,
|
|
598
|
-
|
|
599
|
-
// })
|
|
600
589
|
if (time < 0) {
|
|
601
590
|
Log.warn(
|
|
602
591
|
'Attempt to seek to a negative time. Resetting to live point. Use seekToLivePoint() to seek to the live point.',
|
|
@@ -768,11 +757,6 @@ export default class HlsPlayback extends BasePlayback {
|
|
|
768
757
|
return
|
|
769
758
|
}
|
|
770
759
|
this._lastTimeUpdate = update
|
|
771
|
-
// trace(`${T} _onTimeUpdate`, {
|
|
772
|
-
// current: update.current,
|
|
773
|
-
// total: update.total,
|
|
774
|
-
// firstFragDateTime: update.firstFragDateTime,
|
|
775
|
-
// })
|
|
776
760
|
this.trigger(Events.PLAYBACK_TIMEUPDATE, update, this.name)
|
|
777
761
|
}
|
|
778
762
|
|
|
@@ -1097,12 +1081,6 @@ export default class HlsPlayback extends BasePlayback {
|
|
|
1097
1081
|
}
|
|
1098
1082
|
|
|
1099
1083
|
get dvrEnabled() {
|
|
1100
|
-
// trace(`${T} dvrEnabled`, {
|
|
1101
|
-
// durationExcludesAfterLiveSyncPoint: this._durationExcludesAfterLiveSyncPoint,
|
|
1102
|
-
// duration: this._duration,
|
|
1103
|
-
// minDvrSize: this._minDvrSize,
|
|
1104
|
-
// playbackType: this.getPlaybackType(),
|
|
1105
|
-
// })
|
|
1106
1084
|
// enabled when:
|
|
1107
1085
|
// - the duration does not include content after hlsjs's live sync point
|
|
1108
1086
|
// - the playable region duration is longer than the configured duration to enable dvr after
|
|
@@ -10,7 +10,7 @@ import { CLAPPR_VERSION } from '../../build.js'
|
|
|
10
10
|
|
|
11
11
|
type Timer = ReturnType<typeof setTimeout>
|
|
12
12
|
|
|
13
|
-
const T = 'plugins.
|
|
13
|
+
const T = 'plugins.click_to_pause'
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* A small `PLUGIN` that toggles the playback state on click over the video container
|