@gcorevideo/player 2.28.16 → 2.28.17
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/dist/core.js +1 -1
- package/dist/index.css +273 -273
- package/dist/index.embed.js +64 -39
- package/dist/index.js +81 -49
- package/lib/plugins/clappr-nerd-stats/NerdStats.d.ts.map +1 -1
- package/lib/plugins/clappr-nerd-stats/NerdStats.js +10 -2
- package/lib/plugins/clappr-nerd-stats/speedtest/index.d.ts.map +1 -1
- package/lib/plugins/clappr-nerd-stats/speedtest/index.js +14 -3
- package/lib/plugins/media-control/MediaControl.d.ts +0 -3
- package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
- package/lib/plugins/media-control/MediaControl.js +34 -20
- package/package.json +1 -1
- package/src/plugins/clappr-nerd-stats/NerdStats.ts +10 -2
- package/src/plugins/clappr-nerd-stats/speedtest/index.ts +15 -3
- package/src/plugins/media-control/MediaControl.ts +39 -26
- package/tsconfig.tsbuildinfo +1 -1
package/dist/index.js
CHANGED
|
@@ -12856,7 +12856,7 @@ var PlaybackEvents;
|
|
|
12856
12856
|
// https://github.com/clappr/clappr/blob/8752995ea439321ac7ca3cd35e8c64de7a3c3d17/LICENSE
|
|
12857
12857
|
const AUTO$1 = -1;
|
|
12858
12858
|
const { now: now$2 } = Utils;
|
|
12859
|
-
const T$
|
|
12859
|
+
const T$f = 'playback.dash';
|
|
12860
12860
|
class DashPlayback extends BasePlayback {
|
|
12861
12861
|
_levels = null;
|
|
12862
12862
|
_currentLevel = null;
|
|
@@ -13130,7 +13130,7 @@ class DashPlayback extends BasePlayback {
|
|
|
13130
13130
|
}
|
|
13131
13131
|
_onPlaybackError = (event) => {
|
|
13132
13132
|
// TODO
|
|
13133
|
-
trace(`${T$
|
|
13133
|
+
trace(`${T$f} _onPlaybackError`, { event });
|
|
13134
13134
|
};
|
|
13135
13135
|
_onDASHJSSError = (event) => {
|
|
13136
13136
|
this._stopTimeUpdateTimer();
|
|
@@ -49961,7 +49961,7 @@ const AUTO = -1;
|
|
|
49961
49961
|
const DEFAULT_RECOVER_ATTEMPTS = 16;
|
|
49962
49962
|
Events$1.register('PLAYBACK_FRAGMENT_CHANGED');
|
|
49963
49963
|
Events$1.register('PLAYBACK_FRAGMENT_PARSING_METADATA');
|
|
49964
|
-
const T$
|
|
49964
|
+
const T$e = 'playback.hls';
|
|
49965
49965
|
class HlsPlayback extends BasePlayback {
|
|
49966
49966
|
_ccIsSetup = false;
|
|
49967
49967
|
_ccTracksUpdated = false;
|
|
@@ -50285,7 +50285,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
50285
50285
|
}
|
|
50286
50286
|
else {
|
|
50287
50287
|
Log.error('hlsjs: failed to recover', { evt, data });
|
|
50288
|
-
trace(`${T$
|
|
50288
|
+
trace(`${T$e} _recover failed to recover`, {
|
|
50289
50289
|
type: data.type,
|
|
50290
50290
|
details: data.details,
|
|
50291
50291
|
});
|
|
@@ -50371,7 +50371,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
50371
50371
|
this.trigger(Events$1.PLAYBACK_SETTINGSUPDATE);
|
|
50372
50372
|
}
|
|
50373
50373
|
_onHLSJSError(evt, data) {
|
|
50374
|
-
trace(`${T$
|
|
50374
|
+
trace(`${T$e} _onHLSJSError`, {
|
|
50375
50375
|
fatal: data.fatal,
|
|
50376
50376
|
type: data.type,
|
|
50377
50377
|
details: data.details,
|
|
@@ -50419,7 +50419,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
50419
50419
|
evt,
|
|
50420
50420
|
data,
|
|
50421
50421
|
});
|
|
50422
|
-
trace(`${T$
|
|
50422
|
+
trace(`${T$e} _onHLSJSError trying to recover from network error`, {
|
|
50423
50423
|
details: data.details,
|
|
50424
50424
|
});
|
|
50425
50425
|
error.level = PlayerError.Levels.WARN;
|
|
@@ -50432,7 +50432,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
50432
50432
|
evt,
|
|
50433
50433
|
data,
|
|
50434
50434
|
});
|
|
50435
|
-
trace(`${T$
|
|
50435
|
+
trace(`${T$e} _onHLSJSError trying to recover from media error`, {
|
|
50436
50436
|
details: data.details,
|
|
50437
50437
|
});
|
|
50438
50438
|
error.level = PlayerError.Levels.WARN;
|
|
@@ -50462,7 +50462,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
50462
50462
|
return;
|
|
50463
50463
|
}
|
|
50464
50464
|
Log.warn('hlsjs: non-fatal error occurred', { evt, data });
|
|
50465
|
-
trace(`${T$
|
|
50465
|
+
trace(`${T$e} _onHLSJSError non-fatal error occurred`, {
|
|
50466
50466
|
type: data.type,
|
|
50467
50467
|
details: data.details,
|
|
50468
50468
|
});
|
|
@@ -50803,7 +50803,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
50803
50803
|
this.trigger(Events$1.PLAYBACK_AUDIO_AVAILABLE, data.audioTracks.map(toClapprTrack));
|
|
50804
50804
|
}
|
|
50805
50805
|
_onAudioTrackSwitched(_, data) {
|
|
50806
|
-
trace(`${T$
|
|
50806
|
+
trace(`${T$e} onAudioTrackSwitched`);
|
|
50807
50807
|
// @ts-ignore
|
|
50808
50808
|
const track = this._hls.audioTracks[data.id];
|
|
50809
50809
|
this.trigger(Events$1.PLAYBACK_AUDIO_CHANGED, toClapprTrack(track));
|
|
@@ -50824,7 +50824,7 @@ function toClapprTrack(t) {
|
|
|
50824
50824
|
};
|
|
50825
50825
|
}
|
|
50826
50826
|
|
|
50827
|
-
const T$
|
|
50827
|
+
const T$d = 'playback.html5_video';
|
|
50828
50828
|
const STALL_TIMEOUT = 15000;
|
|
50829
50829
|
class HTML5Video extends BasePlayback {
|
|
50830
50830
|
stallTimerId = null;
|
|
@@ -50925,7 +50925,7 @@ class HTML5Video extends BasePlayback {
|
|
|
50925
50925
|
switchAudioTrack(id) {
|
|
50926
50926
|
const tracks = this.el.audioTracks;
|
|
50927
50927
|
const supported = !!tracks;
|
|
50928
|
-
trace(`${T$
|
|
50928
|
+
trace(`${T$d} switchAudioTrack`, {
|
|
50929
50929
|
supported,
|
|
50930
50930
|
});
|
|
50931
50931
|
if (supported) {
|
|
@@ -50944,7 +50944,7 @@ function registerPlaybacks() {
|
|
|
50944
50944
|
Loader.registerPlayback(DashPlayback);
|
|
50945
50945
|
}
|
|
50946
50946
|
|
|
50947
|
-
const T$
|
|
50947
|
+
const T$c = 'gplayer';
|
|
50948
50948
|
const DEFAULT_OPTIONS = {
|
|
50949
50949
|
autoPlay: false,
|
|
50950
50950
|
debug: 'none',
|
|
@@ -51280,7 +51280,7 @@ class Player {
|
|
|
51280
51280
|
}
|
|
51281
51281
|
}
|
|
51282
51282
|
triggerAutoPlay() {
|
|
51283
|
-
trace(`${T$
|
|
51283
|
+
trace(`${T$c} triggerAutoPlay`);
|
|
51284
51284
|
setTimeout(() => {
|
|
51285
51285
|
this.player?.play({
|
|
51286
51286
|
autoPlay: true,
|
|
@@ -51298,7 +51298,7 @@ class Player {
|
|
|
51298
51298
|
// TODO test
|
|
51299
51299
|
events = {
|
|
51300
51300
|
onReady: () => {
|
|
51301
|
-
trace(`${T$
|
|
51301
|
+
trace(`${T$c} onReady`, {
|
|
51302
51302
|
ready: this.ready,
|
|
51303
51303
|
});
|
|
51304
51304
|
if (this.ready) {
|
|
@@ -51332,7 +51332,7 @@ class Player {
|
|
|
51332
51332
|
buildCoreOptions(rootNode) {
|
|
51333
51333
|
const sources = this.buildMediaSourcesList();
|
|
51334
51334
|
const source = sources[0];
|
|
51335
|
-
trace(`${T$
|
|
51335
|
+
trace(`${T$c} buildCoreOptions`, {
|
|
51336
51336
|
source,
|
|
51337
51337
|
sources,
|
|
51338
51338
|
});
|
|
@@ -51409,7 +51409,7 @@ class Player {
|
|
|
51409
51409
|
}
|
|
51410
51410
|
}
|
|
51411
51411
|
|
|
51412
|
-
var version$1 = "2.28.
|
|
51412
|
+
var version$1 = "2.28.17";
|
|
51413
51413
|
|
|
51414
51414
|
var packages = {
|
|
51415
51415
|
"node_modules/@clappr/core": {
|
|
@@ -51746,7 +51746,7 @@ const INITIAL_SETTINGS = {
|
|
|
51746
51746
|
default: [],
|
|
51747
51747
|
seekEnabled: false,
|
|
51748
51748
|
};
|
|
51749
|
-
const T$
|
|
51749
|
+
const T$b = 'plugins.media_control';
|
|
51750
51750
|
/**
|
|
51751
51751
|
* Extended events for the {@link MediaControl} plugin
|
|
51752
51752
|
* @public
|
|
@@ -51982,8 +51982,8 @@ class MediaControl extends UICorePlugin {
|
|
|
51982
51982
|
this.listenTo(this.core, Events$1.CORE_FULLSCREEN, this.show);
|
|
51983
51983
|
this.listenTo(this.core, Events$1.CORE_OPTIONS_CHANGE, this.configure);
|
|
51984
51984
|
this.listenTo(this.core, Events$1.CORE_RESIZE, this.playerResize);
|
|
51985
|
-
this.listenTo(this.core, 'core:advertisement:start', this.onStartAd)
|
|
51986
|
-
this.listenTo(this.core, 'core:advertisement:finish', this.onFinishAd)
|
|
51985
|
+
// this.listenTo(this.core, 'core:advertisement:start', this.onStartAd)
|
|
51986
|
+
// this.listenTo(this.core, 'core:advertisement:finish', this.onFinishAd)
|
|
51987
51987
|
// const has360 = this.core?.getPlugin('video_360');
|
|
51988
51988
|
// if (Browser.isiOS && has360) {
|
|
51989
51989
|
// this.container?.el.addEventListener('click', e => {
|
|
@@ -52009,6 +52009,10 @@ class MediaControl extends UICorePlugin {
|
|
|
52009
52009
|
this.listenTo(this.core.activeContainer, Events$1.CONTAINER_PAUSE, this.changeTogglePlay);
|
|
52010
52010
|
this.listenTo(this.core.activeContainer, Events$1.CONTAINER_STOP, this.changeTogglePlay);
|
|
52011
52011
|
this.listenTo(this.core.activeContainer, Events$1.CONTAINER_DBLCLICK, this.toggleFullscreen);
|
|
52012
|
+
const clk = clickaway(() => {
|
|
52013
|
+
this.resetUserKeepVisible();
|
|
52014
|
+
}, this.core.activeContainer.$el[0]);
|
|
52015
|
+
this.listenTo(this.core.activeContainer, Events$1.CONTAINER_CLICK, clk);
|
|
52012
52016
|
this.listenTo(this.core.activeContainer, Events$1.CONTAINER_TIMEUPDATE, this.onTimeUpdate);
|
|
52013
52017
|
this.listenTo(this.core.activeContainer, Events$1.CONTAINER_PROGRESS, this.updateProgressBar);
|
|
52014
52018
|
this.listenTo(this.core.activeContainer, Events$1.CONTAINER_SETTINGSUPDATE, this.updateSettings);
|
|
@@ -52030,15 +52034,20 @@ class MediaControl extends UICorePlugin {
|
|
|
52030
52034
|
* Hides the media control UI
|
|
52031
52035
|
*/
|
|
52032
52036
|
disable() {
|
|
52037
|
+
trace(`${T$b} disable`);
|
|
52033
52038
|
this.userDisabled = true; // TODO distinguish between user and system (e.g., unplayable) disabled?
|
|
52034
52039
|
this.hide();
|
|
52035
52040
|
this.unbindKeyEvents();
|
|
52036
|
-
this.$el.hide();
|
|
52041
|
+
this.$el.hide();
|
|
52037
52042
|
}
|
|
52038
52043
|
/**
|
|
52039
52044
|
* Reenables the plugin disabled earlier with the {@link MediaControl.disable} method
|
|
52040
52045
|
*/
|
|
52041
52046
|
enable() {
|
|
52047
|
+
trace(`${T$b} enable`, {
|
|
52048
|
+
chromeless: this.options.chromeless,
|
|
52049
|
+
userDisabled: this.userDisabled,
|
|
52050
|
+
});
|
|
52042
52051
|
if (this.options.chromeless) {
|
|
52043
52052
|
return;
|
|
52044
52053
|
}
|
|
@@ -52192,7 +52201,7 @@ class MediaControl extends UICorePlugin {
|
|
|
52192
52201
|
this.$el.removeClass('w370');
|
|
52193
52202
|
this.$el.removeClass('w270');
|
|
52194
52203
|
this.verticalVolume = false;
|
|
52195
|
-
trace(`${T$
|
|
52204
|
+
trace(`${T$b} playerResize`, {
|
|
52196
52205
|
size,
|
|
52197
52206
|
width: this.container.$el.width(),
|
|
52198
52207
|
height: this.container.$el.height(),
|
|
@@ -52374,7 +52383,7 @@ class MediaControl extends UICorePlugin {
|
|
|
52374
52383
|
else {
|
|
52375
52384
|
this.hideVolumeId = setTimeout(() => {
|
|
52376
52385
|
this.hideVolumeId = null;
|
|
52377
|
-
trace(`${T$
|
|
52386
|
+
trace(`${T$b} hideVolumeBar`, {
|
|
52378
52387
|
volumeBarContainer: !!this.$volumeBarContainer,
|
|
52379
52388
|
});
|
|
52380
52389
|
this.$volumeBarContainer?.addClass('volume-bar-hide');
|
|
@@ -52446,15 +52455,26 @@ class MediaControl extends UICorePlugin {
|
|
|
52446
52455
|
this.setSeekPercentage(pos);
|
|
52447
52456
|
}
|
|
52448
52457
|
setUserKeepVisible() {
|
|
52458
|
+
trace(`${T$b} setUserKeepVisible`, {
|
|
52459
|
+
userKeepVisible: this.userKeepVisible,
|
|
52460
|
+
});
|
|
52449
52461
|
this.userKeepVisible = true;
|
|
52450
52462
|
}
|
|
52451
52463
|
resetUserKeepVisible() {
|
|
52464
|
+
trace(`${T$b} resetUserKeepVisible`, {
|
|
52465
|
+
userKeepVisible: this.userKeepVisible,
|
|
52466
|
+
});
|
|
52452
52467
|
this.userKeepVisible = false;
|
|
52453
52468
|
}
|
|
52454
52469
|
isVisible() {
|
|
52455
52470
|
return !this.$el.hasClass('media-control-hide');
|
|
52456
52471
|
}
|
|
52457
52472
|
show(event) {
|
|
52473
|
+
trace(`${T$b} show`, {
|
|
52474
|
+
disabled: this.disabled,
|
|
52475
|
+
disableControlPanel: this.options.disableControlPanel,
|
|
52476
|
+
event,
|
|
52477
|
+
});
|
|
52458
52478
|
if (this.disabled || this.options.disableControlPanel) {
|
|
52459
52479
|
return;
|
|
52460
52480
|
}
|
|
@@ -52481,7 +52501,7 @@ class MediaControl extends UICorePlugin {
|
|
|
52481
52501
|
this.updateCursorStyle(showing);
|
|
52482
52502
|
}
|
|
52483
52503
|
hide(delay = 0) {
|
|
52484
|
-
trace(`${T$
|
|
52504
|
+
trace(`${T$b} hide`, {
|
|
52485
52505
|
delay,
|
|
52486
52506
|
visible: this.isVisible(),
|
|
52487
52507
|
disabled: this.disabled,
|
|
@@ -52893,23 +52913,6 @@ class MediaControl extends UICorePlugin {
|
|
|
52893
52913
|
}
|
|
52894
52914
|
this.resetUserKeepVisible();
|
|
52895
52915
|
}
|
|
52896
|
-
// TODO manage by the ads plugin
|
|
52897
|
-
onStartAd() {
|
|
52898
|
-
// this.advertisementPlaying = true
|
|
52899
|
-
this.disable();
|
|
52900
|
-
}
|
|
52901
|
-
// TODO manage by the ads plugin
|
|
52902
|
-
onFinishAd() {
|
|
52903
|
-
// this.advertisementPlaying = false
|
|
52904
|
-
this.enable();
|
|
52905
|
-
}
|
|
52906
|
-
// TODO remove
|
|
52907
|
-
hideControllAds() {
|
|
52908
|
-
if (this.container.advertisement &&
|
|
52909
|
-
this.container.advertisement.type !== 'idle') {
|
|
52910
|
-
this.hide();
|
|
52911
|
-
}
|
|
52912
|
-
}
|
|
52913
52916
|
static getPageX(event) {
|
|
52914
52917
|
return getPageX(event);
|
|
52915
52918
|
}
|
|
@@ -52951,7 +52954,7 @@ class MediaControl extends UICorePlugin {
|
|
|
52951
52954
|
}
|
|
52952
52955
|
}
|
|
52953
52956
|
delayHide(e) {
|
|
52954
|
-
trace(`${T$
|
|
52957
|
+
trace(`${T$b} delayHide`, {
|
|
52955
52958
|
e,
|
|
52956
52959
|
});
|
|
52957
52960
|
this.hide(this.options.hideMediaControlDelay || DEFAULT_HIDE_DELAY);
|
|
@@ -52996,6 +52999,17 @@ function mergeElements(a, b) {
|
|
|
52996
52999
|
return acc;
|
|
52997
53000
|
}, a);
|
|
52998
53001
|
}
|
|
53002
|
+
function clickaway(callback, element) {
|
|
53003
|
+
const handler = (event) => {
|
|
53004
|
+
if (!element.contains(event.target)) {
|
|
53005
|
+
callback();
|
|
53006
|
+
window.removeEventListener('click', handler);
|
|
53007
|
+
}
|
|
53008
|
+
};
|
|
53009
|
+
return () => {
|
|
53010
|
+
window.addEventListener('click', handler);
|
|
53011
|
+
};
|
|
53012
|
+
}
|
|
52999
53013
|
|
|
53000
53014
|
const VERSION$7 = '2.22.4';
|
|
53001
53015
|
// const T = 'plugins.audiotracks'
|
|
@@ -53192,7 +53206,7 @@ class AudioTracks extends UICorePlugin {
|
|
|
53192
53206
|
|
|
53193
53207
|
const templateHtml$2 = "<div class=\"big-mute-icon-wrapper\" data-big-mute id=\"gplayer-big-mute-button\">\n <div class=\"big-mute-icon gcore-skin-border-color\" data-big-mute-icon id=\"gplayer-big-mute-icon\"></div>\n</div>\n";
|
|
53194
53208
|
|
|
53195
|
-
const T$
|
|
53209
|
+
const T$a = 'plugins.big_mute_button';
|
|
53196
53210
|
// TODO rewrite as a container plugin
|
|
53197
53211
|
/**
|
|
53198
53212
|
* `PLUGIN` that displays a big mute button over the video when it's being played muted.
|
|
@@ -53255,7 +53269,7 @@ class BigMuteButton extends UICorePlugin {
|
|
|
53255
53269
|
if (autoPlay) {
|
|
53256
53270
|
this.autoPlay = true;
|
|
53257
53271
|
}
|
|
53258
|
-
trace(`${T$
|
|
53272
|
+
trace(`${T$a} onPlay`, {
|
|
53259
53273
|
autoPlay: this.autoPlay,
|
|
53260
53274
|
wasMuted,
|
|
53261
53275
|
volume,
|
|
@@ -53269,7 +53283,7 @@ class BigMuteButton extends UICorePlugin {
|
|
|
53269
53283
|
}
|
|
53270
53284
|
onStop(_, metadata) {
|
|
53271
53285
|
const ui = metadata?.ui;
|
|
53272
|
-
trace(`${T$
|
|
53286
|
+
trace(`${T$a} onStop`, { ui });
|
|
53273
53287
|
if (ui) {
|
|
53274
53288
|
this.destroy();
|
|
53275
53289
|
}
|
|
@@ -56077,11 +56091,13 @@ const initSpeedTest = (customMetrics) => {
|
|
|
56077
56091
|
}
|
|
56078
56092
|
}
|
|
56079
56093
|
};
|
|
56080
|
-
|
|
56081
|
-
await fetch('https://iam.gcdn.co/info/json')
|
|
56094
|
+
const myinfoUrl = 'https://gcore.com/.well-known/cdn-debug/json';
|
|
56095
|
+
// await fetch('https://iam.gcdn.co/info/json')
|
|
56096
|
+
await fetch(myinfoUrl)
|
|
56082
56097
|
.then(r => r.json())
|
|
56083
56098
|
.then(data => {
|
|
56084
|
-
const country = data['Server Country code'].toLowerCase();
|
|
56099
|
+
// const country = data['Server Country code'].toLowerCase();
|
|
56100
|
+
const country = getCountryCodeFromClientHeaders(data.client_headers);
|
|
56085
56101
|
const server = serversList.find(s => s.country === country) || serversList[0];
|
|
56086
56102
|
if (!server) {
|
|
56087
56103
|
throw new Error('Failed to select a server');
|
|
@@ -56127,6 +56143,15 @@ function rankConnectionSpeed(dlSpeed) {
|
|
|
56127
56143
|
}
|
|
56128
56144
|
return 0;
|
|
56129
56145
|
}
|
|
56146
|
+
function getCountryCodeFromClientHeaders(clientHeaders) {
|
|
56147
|
+
if (clientHeaders && clientHeaders['country']) {
|
|
56148
|
+
const m = clientHeaders['country'].match(/'code':\s*'([A-Za-z]{2})'/);
|
|
56149
|
+
if (m) {
|
|
56150
|
+
return m[1].toLowerCase();
|
|
56151
|
+
}
|
|
56152
|
+
}
|
|
56153
|
+
return 'lu';
|
|
56154
|
+
}
|
|
56130
56155
|
|
|
56131
56156
|
const pluginHtml$4 = "<% general = metrics.general %>\n<% counters = metrics.counters %>\n<% timers = metrics.chrono %>\n<% extra = metrics.extra %>\n<% custom = metrics.custom %>\n\n<div class=\"stats-box\" id=\"nerd-stats-box\">\n <div class=\"stats-box-top\">\n <a class=\"close-button gplayer-lite-btn\" id=\"nerd-stats-close\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <g clip-path=\"url(#clip0_184_1489)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.41376 6.00013L13.7068 -0.292872C14.0978 -0.683872 14.0978 -1.31587 13.7068 -1.70687C13.3158 -2.09787 12.6838 -2.09787 12.2928 -1.70687L5.99976 4.58613L-0.293238 -1.70687C-0.684238 -2.09787 -1.31624 -2.09787 -1.70724 -1.70687C-2.09824 -1.31587 -2.09824 -0.683872 -1.70724 -0.292872L4.58576 6.00013L-1.70724 12.2931C-2.09824 12.6841 -2.09824 13.3161 -1.70724 13.7071C-1.51224 13.9021 -1.25624 14.0001 -1.00024 14.0001C-0.744238 14.0001 -0.488238 13.9021 -0.293238 13.7071L5.99976 7.41413L12.2928 13.7071C12.4878 13.9021 12.7438 14.0001 12.9998 14.0001C13.2558 14.0001 13.5118 13.9021 13.7068 13.7071C14.0978 13.3161 14.0978 12.6841 13.7068 12.2931L7.41376 6.00013Z\"\n fill=\"white\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_184_1489\">\n <rect width=\"12\" height=\"12\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n </a>\n </div>\n <div class=\"stats-box-main\">\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.general') %></span></li>\n <li>\n <%= i18n.t('stats.display_resolution') %>\n <div><span><span id=\"nerd-stats-resolution-width\"><%= general.resolution.width %></span>×<span id=\"nerd-stats-resolution-height\"><%= general.resolution.height %></span></span></div>\n </li>\n <li>\n <%= i18n.t('stats.volume') %>\n <div id=\"nerd-stats-volume\"><span><%= general.volume %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.connection_speed') %>\n <div><span id=\"nerd-stats-dl-text\"><%= custom.connectionSpeed %></span> <%= i18n.t('mbps') %></div>\n </li>\n <li class=\"canvas-wrapper\">\n <canvas id=\"nerd-stats-speed-test-canvas\" width=\"190\" height=\"20\"></canvas>\n </li>\n <li>\n <%= i18n.t('stats.ping') %>\n <div><span id=\"nerd-stats-ping-text\"><%= custom.ping %></span> <%= i18n.t('ms') %></div>\n </li>\n <li>\n <%= i18n.t('stats.jitter') %>\n <div><span id=\"nerd-stats-jitter-text\"><%= custom.jitter %></span> <%= i18n.t('ms') %></div>\n </li>\n </ul>\n\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.duration') %></span></li>\n <li>\n <%= i18n.t('stats.startup') %>\n <div><span id=\"nerd-stats-startup-time\"><%= timers.startup %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.watching') %>\n <div><span id=\"nerd-stats-watch-time\"><%= timers.watch %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.paused') %>\n <div><span id=\"nerd-stats-pause-time\"><%= timers.pause %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.buffering') %>\n <div><span id=\"nerd-stats-buffering-time\"><%= timers.buffering %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.session') %>\n <div><span id=\"nerd-stats-session-time\"><%= timers.session %></span></div>\n </li>\n </ul>\n\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.counters') %></span></li>\n <li>\n <%= i18n.t('stats.plays') %>\n <div><span id=\"nerd-stats-plays\"><%= counters.play %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.pauses') %>\n <div><span id=\"nerd-stats-pauses\"><%= counters.pause %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.errors') %>\n <div><span id=\"nerd-stats-errors\"><%= counters.error %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bufferings') %>\n <div><span id=\"nerd-stats-bufferings\"><%= counters.buffering %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.decoded_frames') %>\n <div><span id=\"nerd-stats-decoded-frames\"><%= counters.decodedFrames %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.dropped_frames') %>\n <div><span id=\"nerd-stats-dropped-frames\"><%= counters.droppedFrames %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.fps') %>\n <div><span id=\"nerd-stats-fps\"><%= counters.fps %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bitrate_changes') %>\n <div><span id=\"nerd-stats-bitrate-changes\"><%= counters.changeLevel %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.seeks') %>\n <div><span id=\"nerd-stats-seeks\"><%= counters.seek %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.fullscreen') %>\n <div><span id=\"nerd-stats-fullscreen\"><%= counters.fullscreen %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.dvr_seeks') %>\n <div><span id=\"nerd-stats-dvr-usage\"><%= counters.dvrUsage %></span></div>\n </li>\n </ul>\n\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.extra') %></span></li>\n <li>\n <%= i18n.t('stats.playback') %>\n <div><span id=\"nerd-stats-playback-name\"><%= extra.playbackName %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.playback_type') %>\n <div><span id=\"nerd-stats-playback-type\"><%= extra.playbackType %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.buffer_size') %>\n <div><span id=\"nerd-stats-buffer-size\"><%= extra.buffersize %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.video_duration') %>\n <div><span id=\"nerd-stats-video-duration\"><%= extra.duration %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.current_time') %>\n <div><span id=\"nerd-stats-current-time\"><%= extra.currentTime %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bitrate_weighted_mean') %>\n <div><span id=\"nerd-stats-bitrate-weighted-mean\"><%= extra.bitrateWeightedMean %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bitrate_most_used') %>\n <div><span id=\"nerd-stats-bitrate-most-used\"><%= extra.bitrateMostUsed %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.watched_percentage') %>\n <div><span id=\"nerd-stats-watched-percentage\"><%= extra.watchedPercentage %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.buffering_percentage') %>\n <div><span id=\"nerd-stats-buffering-percentage\"><%= extra.bufferingPercentage %></span></div>\n </li>\n </ul>\n </div>\n <div class=\"speedtest-summary\">\n <div class=\"speedtest-summary-header\"><%= i18n.t('stats.your_internet_quality_summary') %>:</div>\n <div class=\"speedtest-summary-block\">\n <div class=\"speedtest-summary-subblock\">\n <div class=\"speedtest-summary-subblock-content\">\n <div class=\"speedtest-quality\">\n <div class=\"speedtest-quality-header\"><%= i18n.t('vod') %>: \n <span id=\"nerd-stats-quality-vod-text\"><%= custom.vodQuality %></span></div>\n <div class=\"speedtest-quality-content\" data-streaming-type=\"vod\" id=\"nerd-stats-quality-vod\">\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"speedtest-summary-subblock\">\n <div class=\"speedtest-summary-subblock-content\">\n <div class=\"speedtest-quality\">\n <div class=\"speedtest-quality-header\"><%= i18n.t('live') %>: \n <span id=\"nerd-stats-quality-live-text\"><%= custom.liveQuality %></span></div>\n <div class=\"speedtest-quality-content\" data-streaming-type=\"live\" id=\"nerd-stats-quality-live\">\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"speedtest-footer\">\n <!-- <a class=\"speedtest-footer-about-link\" href=\"\" target=\"_blank\">I am not a nerd, what's this all about?</a>-->\n <button class=\"gplayer-lite-btn speedtest-btn speedtest-footer-refresh\" type=\"button\" id=\"nerd-stats-refresh\">\n <svg width=\"12\" height=\"10\" viewBox=\"0 0 12 10\" fill=\"none\">\n <path\n d=\"M6.03968 0.124998C3.64268 0.124998 1.67268 1.9565 1.48068 4.2915H1.00018C0.925833 4.29146 0.853156 4.31353 0.791378 4.35489C0.729601 4.39625 0.681511 4.45503 0.653218 4.52378C0.624925 4.59253 0.617705 4.66814 0.632476 4.74101C0.647248 4.81387 0.683343 4.88069 0.736177 4.933L1.57618 5.766C1.64641 5.83561 1.74129 5.87467 1.84018 5.87467C1.93906 5.87467 2.03395 5.83561 2.10418 5.766L2.94418 4.933C2.99701 4.88069 3.03311 4.81387 3.04788 4.74101C3.06265 4.66814 3.05543 4.59253 3.02714 4.52378C2.99884 4.45503 2.95075 4.39625 2.88898 4.35489C2.8272 4.31353 2.75452 4.29146 2.68018 4.2915H2.23368C2.42368 2.376 4.05268 0.874998 6.03968 0.874998C6.6948 0.873639 7.33932 1.04039 7.91158 1.35931C8.48384 1.67822 8.9647 2.13863 9.30818 2.6965C9.33331 2.73978 9.36686 2.7776 9.40684 2.80771C9.44682 2.83783 9.49243 2.85963 9.54097 2.87184C9.58951 2.88405 9.64001 2.88643 9.68948 2.87881C9.73895 2.8712 9.7864 2.85377 9.82902 2.82753C9.87165 2.80129 9.90859 2.76679 9.93767 2.72605C9.96675 2.68531 9.98739 2.63916 9.99835 2.59032C10.0093 2.54148 10.0104 2.49095 10.0015 2.44168C9.99264 2.39242 9.974 2.34544 9.94668 2.3035C9.53615 1.63664 8.96146 1.08621 8.27752 0.704805C7.59359 0.323402 6.82277 0.123774 6.03968 0.124998ZM10.4207 4.2335C10.3505 4.16419 10.2558 4.12532 10.1572 4.12532C10.0585 4.12532 9.96386 4.16419 9.89368 4.2335L9.05018 5.0665C8.9972 5.11874 8.96096 5.18557 8.94608 5.25847C8.93119 5.33137 8.93833 5.40705 8.96658 5.47588C8.99483 5.54472 9.04292 5.60359 9.10473 5.64501C9.16654 5.68644 9.23927 5.70853 9.31368 5.7085H9.76318C9.57218 7.6235 7.93768 9.125 5.94118 9.125C5.28399 9.12683 4.63729 8.96035 4.06269 8.64141C3.48808 8.32247 3.00473 7.86169 2.65868 7.303C2.63281 7.26107 2.59893 7.22465 2.55899 7.19582C2.51904 7.16699 2.47381 7.14631 2.42587 7.13495C2.37793 7.1236 2.32823 7.1218 2.27959 7.12966C2.23096 7.13752 2.18435 7.15488 2.14243 7.18075C2.05776 7.233 1.99731 7.31674 1.97438 7.41355C1.95146 7.51037 1.96793 7.61233 2.02018 7.697C2.43345 8.36457 3.01076 8.91521 3.69713 9.29647C4.38349 9.67772 5.15604 9.87689 5.94118 9.875C8.34518 9.875 10.3237 8.045 10.5162 5.7085H11.0002C11.0746 5.70853 11.1473 5.68644 11.2091 5.64501C11.2709 5.60359 11.319 5.54472 11.3473 5.47588C11.3755 5.40705 11.3827 5.33137 11.3678 5.25847C11.3529 5.18557 11.3167 5.11874 11.2637 5.0665L10.4207 4.2335Z\"\n fill=\"white\"/>\n </svg>\n <%= i18n.t('stats.refresh') %>\n </button>\n </div>\n</div>\n";
|
|
56132
56157
|
|
|
@@ -56206,7 +56231,7 @@ const PLAYBACK_NAMES = {
|
|
|
56206
56231
|
hls: 'HLS.js',
|
|
56207
56232
|
html5_video: 'Native',
|
|
56208
56233
|
};
|
|
56209
|
-
|
|
56234
|
+
const T$9 = 'plugins.nerd_stats';
|
|
56210
56235
|
/**
|
|
56211
56236
|
* `PLUGIN` that displays useful statistics regarding the playback as well as the network quality estimation.
|
|
56212
56237
|
* @public
|
|
@@ -56343,6 +56368,9 @@ class NerdStats extends UICorePlugin {
|
|
|
56343
56368
|
return super.destroy();
|
|
56344
56369
|
}
|
|
56345
56370
|
toggle = () => {
|
|
56371
|
+
trace(`${T$9} toggle`, {
|
|
56372
|
+
open: this.open,
|
|
56373
|
+
});
|
|
56346
56374
|
if (this.open) {
|
|
56347
56375
|
this.hide();
|
|
56348
56376
|
}
|
|
@@ -56352,7 +56380,7 @@ class NerdStats extends UICorePlugin {
|
|
|
56352
56380
|
};
|
|
56353
56381
|
show() {
|
|
56354
56382
|
this.$el.show();
|
|
56355
|
-
this.statsBoxElem.scrollTop(this.statsBoxElem
|
|
56383
|
+
this.statsBoxElem.scrollTop(this.statsBoxElem?.scrollTop());
|
|
56356
56384
|
this.open = true;
|
|
56357
56385
|
initSpeedTest(this.speedtestMetrics)
|
|
56358
56386
|
.then(() => {
|
|
@@ -56360,10 +56388,14 @@ class NerdStats extends UICorePlugin {
|
|
|
56360
56388
|
})
|
|
56361
56389
|
.catch((e) => {
|
|
56362
56390
|
reportError(e);
|
|
56391
|
+
trace(`${T$9} speedtest error`, {
|
|
56392
|
+
error: e,
|
|
56393
|
+
});
|
|
56363
56394
|
this.disable();
|
|
56364
56395
|
});
|
|
56365
56396
|
}
|
|
56366
56397
|
hide() {
|
|
56398
|
+
trace(`${T$9} hide`);
|
|
56367
56399
|
this.$el.hide();
|
|
56368
56400
|
this.open = false;
|
|
56369
56401
|
stopSpeedtest();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NerdStats.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-nerd-stats/NerdStats.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGZ,IAAI,EAGL,MAAM,cAAc,CAAA;AAuBrB,OAAO,0DAA0D,CAAA;
|
|
1
|
+
{"version":3,"file":"NerdStats.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-nerd-stats/NerdStats.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGZ,IAAI,EAGL,MAAM,cAAc,CAAA;AAuBrB,OAAO,0DAA0D,CAAA;AAkCjE;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,SAAS,CAAyB;IAE1C,OAAO,CAAC,gBAAgB,CAIvB;IAED,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO,CAAC,IAAI,CAAQ;IAEpB,OAAO,CAAC,QAAQ,CAAU;IAE1B,OAAO,CAAC,YAAY,CAAc;IAElC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAuB;IAE7D;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAEvD;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;;;MAMlB;IAED,OAAO,CAAC,OAAO;IAKf,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,sBAAsB,GAEjC;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,YAAY,GAEvB;gBAEW,IAAI,EAAE,IAAI;IAgBtB;;OAEG;IACM,UAAU;IAUnB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,wBAAwB;IAiChC;;OAEG;IACM,OAAO;IAKhB,OAAO,CAAC,MAAM,CASb;IAED,OAAO,CAAC,IAAI;IAkBZ,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,aAAa;IAkFrB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACM,MAAM;IAcf,OAAO,CAAC,MAAM;IAgBd,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,kBAAkB;CAU3B"}
|
|
@@ -14,12 +14,13 @@ import statsIcon from '../../../assets/icons/new/stats.svg';
|
|
|
14
14
|
import { GearEvents } from '../bottom-gear/BottomGear.js';
|
|
15
15
|
import { drawSummary, getPingQuality } from './utils.js';
|
|
16
16
|
import { getDownloadQuality } from './utils.js';
|
|
17
|
+
import { trace } from '@gcorevideo/utils';
|
|
17
18
|
const PLAYBACK_NAMES = {
|
|
18
19
|
dash: 'DASH.js',
|
|
19
20
|
hls: 'HLS.js',
|
|
20
21
|
html5_video: 'Native',
|
|
21
22
|
};
|
|
22
|
-
|
|
23
|
+
const T = 'plugins.nerd_stats';
|
|
23
24
|
/**
|
|
24
25
|
* `PLUGIN` that displays useful statistics regarding the playback as well as the network quality estimation.
|
|
25
26
|
* @public
|
|
@@ -156,6 +157,9 @@ export class NerdStats extends UICorePlugin {
|
|
|
156
157
|
return super.destroy();
|
|
157
158
|
}
|
|
158
159
|
toggle = () => {
|
|
160
|
+
trace(`${T} toggle`, {
|
|
161
|
+
open: this.open,
|
|
162
|
+
});
|
|
159
163
|
if (this.open) {
|
|
160
164
|
this.hide();
|
|
161
165
|
}
|
|
@@ -165,7 +169,7 @@ export class NerdStats extends UICorePlugin {
|
|
|
165
169
|
};
|
|
166
170
|
show() {
|
|
167
171
|
this.$el.show();
|
|
168
|
-
this.statsBoxElem.scrollTop(this.statsBoxElem
|
|
172
|
+
this.statsBoxElem.scrollTop(this.statsBoxElem?.scrollTop());
|
|
169
173
|
this.open = true;
|
|
170
174
|
initSpeedTest(this.speedtestMetrics)
|
|
171
175
|
.then(() => {
|
|
@@ -173,10 +177,14 @@ export class NerdStats extends UICorePlugin {
|
|
|
173
177
|
})
|
|
174
178
|
.catch((e) => {
|
|
175
179
|
reportError(e);
|
|
180
|
+
trace(`${T} speedtest error`, {
|
|
181
|
+
error: e,
|
|
182
|
+
});
|
|
176
183
|
this.disable();
|
|
177
184
|
});
|
|
178
185
|
}
|
|
179
186
|
hide() {
|
|
187
|
+
trace(`${T} hide`);
|
|
180
188
|
this.$el.hide();
|
|
181
189
|
this.open = false;
|
|
182
190
|
stopSpeedtest();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/clappr-nerd-stats/speedtest/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAkC,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAqC9C,wBAAgB,oBAAoB,SAmBnC;AAID,eAAO,MAAM,aAAa,GAAI,eAAe,gBAAgB,KAAG,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/clappr-nerd-stats/speedtest/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAkC,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAqC9C,wBAAgB,oBAAoB,SAmBnC;AAID,eAAO,MAAM,aAAa,GAAI,eAAe,gBAAgB,KAAG,OAAO,CAAC,IAAI,CAiF3E,CAAC;AAEF,eAAO,MAAM,aAAa,YAIzB,CAAC;AAEF,eAAO,MAAM,cAAc,YAI1B,CAAC;AAEF,eAAO,MAAM,qBAAqB,YAEjC,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAGnD"}
|
|
@@ -102,11 +102,13 @@ export const initSpeedTest = (customMetrics) => {
|
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
104
|
};
|
|
105
|
-
|
|
106
|
-
await fetch('https://iam.gcdn.co/info/json')
|
|
105
|
+
const myinfoUrl = 'https://gcore.com/.well-known/cdn-debug/json';
|
|
106
|
+
// await fetch('https://iam.gcdn.co/info/json')
|
|
107
|
+
await fetch(myinfoUrl)
|
|
107
108
|
.then(r => r.json())
|
|
108
109
|
.then(data => {
|
|
109
|
-
const country = data['Server Country code'].toLowerCase();
|
|
110
|
+
// const country = data['Server Country code'].toLowerCase();
|
|
111
|
+
const country = getCountryCodeFromClientHeaders(data.client_headers);
|
|
110
112
|
const server = serversList.find(s => s.country === country) || serversList[0];
|
|
111
113
|
if (!server) {
|
|
112
114
|
throw new Error('Failed to select a server');
|
|
@@ -152,3 +154,12 @@ function rankConnectionSpeed(dlSpeed) {
|
|
|
152
154
|
}
|
|
153
155
|
return 0;
|
|
154
156
|
}
|
|
157
|
+
function getCountryCodeFromClientHeaders(clientHeaders) {
|
|
158
|
+
if (clientHeaders && clientHeaders['country']) {
|
|
159
|
+
const m = clientHeaders['country'].match(/'code':\s*'([A-Za-z]{2})'/);
|
|
160
|
+
if (m) {
|
|
161
|
+
return m[1].toLowerCase();
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return 'lu';
|
|
165
|
+
}
|
|
@@ -360,9 +360,6 @@ export declare class MediaControl extends UICorePlugin {
|
|
|
360
360
|
*/
|
|
361
361
|
render(): this;
|
|
362
362
|
private handleFullScreenOnBtn;
|
|
363
|
-
private onStartAd;
|
|
364
|
-
private onFinishAd;
|
|
365
|
-
private hideControllAds;
|
|
366
363
|
private static getPageX;
|
|
367
364
|
private static getPageY;
|
|
368
365
|
private isSeekEnabledForHtml5Playback;
|
|
@@ -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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"}
|
|
@@ -285,8 +285,8 @@ export class MediaControl extends UICorePlugin {
|
|
|
285
285
|
this.listenTo(this.core, Events.CORE_FULLSCREEN, this.show);
|
|
286
286
|
this.listenTo(this.core, Events.CORE_OPTIONS_CHANGE, this.configure);
|
|
287
287
|
this.listenTo(this.core, Events.CORE_RESIZE, this.playerResize);
|
|
288
|
-
this.listenTo(this.core, 'core:advertisement:start', this.onStartAd)
|
|
289
|
-
this.listenTo(this.core, 'core:advertisement:finish', this.onFinishAd)
|
|
288
|
+
// this.listenTo(this.core, 'core:advertisement:start', this.onStartAd)
|
|
289
|
+
// this.listenTo(this.core, 'core:advertisement:finish', this.onFinishAd)
|
|
290
290
|
// const has360 = this.core?.getPlugin('video_360');
|
|
291
291
|
// if (Browser.isiOS && has360) {
|
|
292
292
|
// this.container?.el.addEventListener('click', e => {
|
|
@@ -312,6 +312,10 @@ export class MediaControl extends UICorePlugin {
|
|
|
312
312
|
this.listenTo(this.core.activeContainer, Events.CONTAINER_PAUSE, this.changeTogglePlay);
|
|
313
313
|
this.listenTo(this.core.activeContainer, Events.CONTAINER_STOP, this.changeTogglePlay);
|
|
314
314
|
this.listenTo(this.core.activeContainer, Events.CONTAINER_DBLCLICK, this.toggleFullscreen);
|
|
315
|
+
const clk = clickaway(() => {
|
|
316
|
+
this.resetUserKeepVisible();
|
|
317
|
+
}, this.core.activeContainer.$el[0]);
|
|
318
|
+
this.listenTo(this.core.activeContainer, Events.CONTAINER_CLICK, clk);
|
|
315
319
|
this.listenTo(this.core.activeContainer, Events.CONTAINER_TIMEUPDATE, this.onTimeUpdate);
|
|
316
320
|
this.listenTo(this.core.activeContainer, Events.CONTAINER_PROGRESS, this.updateProgressBar);
|
|
317
321
|
this.listenTo(this.core.activeContainer, Events.CONTAINER_SETTINGSUPDATE, this.updateSettings);
|
|
@@ -333,15 +337,20 @@ export class MediaControl extends UICorePlugin {
|
|
|
333
337
|
* Hides the media control UI
|
|
334
338
|
*/
|
|
335
339
|
disable() {
|
|
340
|
+
trace(`${T} disable`);
|
|
336
341
|
this.userDisabled = true; // TODO distinguish between user and system (e.g., unplayable) disabled?
|
|
337
342
|
this.hide();
|
|
338
343
|
this.unbindKeyEvents();
|
|
339
|
-
this.$el.hide();
|
|
344
|
+
this.$el.hide();
|
|
340
345
|
}
|
|
341
346
|
/**
|
|
342
347
|
* Reenables the plugin disabled earlier with the {@link MediaControl.disable} method
|
|
343
348
|
*/
|
|
344
349
|
enable() {
|
|
350
|
+
trace(`${T} enable`, {
|
|
351
|
+
chromeless: this.options.chromeless,
|
|
352
|
+
userDisabled: this.userDisabled,
|
|
353
|
+
});
|
|
345
354
|
if (this.options.chromeless) {
|
|
346
355
|
return;
|
|
347
356
|
}
|
|
@@ -749,15 +758,26 @@ export class MediaControl extends UICorePlugin {
|
|
|
749
758
|
this.setSeekPercentage(pos);
|
|
750
759
|
}
|
|
751
760
|
setUserKeepVisible() {
|
|
761
|
+
trace(`${T} setUserKeepVisible`, {
|
|
762
|
+
userKeepVisible: this.userKeepVisible,
|
|
763
|
+
});
|
|
752
764
|
this.userKeepVisible = true;
|
|
753
765
|
}
|
|
754
766
|
resetUserKeepVisible() {
|
|
767
|
+
trace(`${T} resetUserKeepVisible`, {
|
|
768
|
+
userKeepVisible: this.userKeepVisible,
|
|
769
|
+
});
|
|
755
770
|
this.userKeepVisible = false;
|
|
756
771
|
}
|
|
757
772
|
isVisible() {
|
|
758
773
|
return !this.$el.hasClass('media-control-hide');
|
|
759
774
|
}
|
|
760
775
|
show(event) {
|
|
776
|
+
trace(`${T} show`, {
|
|
777
|
+
disabled: this.disabled,
|
|
778
|
+
disableControlPanel: this.options.disableControlPanel,
|
|
779
|
+
event,
|
|
780
|
+
});
|
|
761
781
|
if (this.disabled || this.options.disableControlPanel) {
|
|
762
782
|
return;
|
|
763
783
|
}
|
|
@@ -1196,23 +1216,6 @@ export class MediaControl extends UICorePlugin {
|
|
|
1196
1216
|
}
|
|
1197
1217
|
this.resetUserKeepVisible();
|
|
1198
1218
|
}
|
|
1199
|
-
// TODO manage by the ads plugin
|
|
1200
|
-
onStartAd() {
|
|
1201
|
-
// this.advertisementPlaying = true
|
|
1202
|
-
this.disable();
|
|
1203
|
-
}
|
|
1204
|
-
// TODO manage by the ads plugin
|
|
1205
|
-
onFinishAd() {
|
|
1206
|
-
// this.advertisementPlaying = false
|
|
1207
|
-
this.enable();
|
|
1208
|
-
}
|
|
1209
|
-
// TODO remove
|
|
1210
|
-
hideControllAds() {
|
|
1211
|
-
if (this.container.advertisement &&
|
|
1212
|
-
this.container.advertisement.type !== 'idle') {
|
|
1213
|
-
this.hide();
|
|
1214
|
-
}
|
|
1215
|
-
}
|
|
1216
1219
|
static getPageX(event) {
|
|
1217
1220
|
return getPageX(event);
|
|
1218
1221
|
}
|
|
@@ -1299,3 +1302,14 @@ function mergeElements(a, b) {
|
|
|
1299
1302
|
return acc;
|
|
1300
1303
|
}, a);
|
|
1301
1304
|
}
|
|
1305
|
+
function clickaway(callback, element) {
|
|
1306
|
+
const handler = (event) => {
|
|
1307
|
+
if (!element.contains(event.target)) {
|
|
1308
|
+
callback();
|
|
1309
|
+
window.removeEventListener('click', handler);
|
|
1310
|
+
}
|
|
1311
|
+
};
|
|
1312
|
+
return () => {
|
|
1313
|
+
window.addEventListener('click', handler);
|
|
1314
|
+
};
|
|
1315
|
+
}
|