@gcorevideo/player 2.25.10 → 2.26.1
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 -60
- package/dist/index.css +851 -851
- package/dist/index.embed.js +50 -130
- package/dist/index.js +79 -230
- package/dist/player.d.ts +2798 -2785
- package/docs/api/player.bigmutebutton.md +0 -3
- package/docs/api/player.bottomgear.additem.md +0 -3
- package/docs/api/player.bottomgear.md +2 -5
- package/docs/api/player.bottomgear.refresh.md +0 -3
- package/docs/api/player.clapprstats._constructor_.md +0 -3
- package/docs/api/player.clapprstats.clearmetrics.md +0 -3
- package/docs/api/player.clapprstats.exportmetrics.md +1 -4
- package/docs/api/player.clapprstats.md +2 -7
- package/docs/api/player.clapprstatsbitratetrack.md +0 -3
- package/docs/api/player.clapprstatschronograph.md +0 -13
- package/docs/api/player.clapprstatscounter.md +0 -25
- package/docs/api/player.clapprstatsevents.md +1 -4
- package/docs/api/player.clapprstatsmetrics.md +0 -3
- package/docs/api/player.clapprstatssettings.md +1 -4
- package/docs/api/player.clapprstatssettings.runeach.md +0 -3
- package/docs/api/player.clicktopause.md +0 -3
- package/docs/api/player.clips.destroy.md +0 -3
- package/docs/api/player.clips.disable.md +0 -3
- package/docs/api/player.clips.enable.md +0 -3
- package/docs/api/player.clips.gettext.md +0 -3
- package/docs/api/player.clips.md +1 -16
- package/docs/api/player.clips.render.md +0 -3
- package/docs/api/player.clips.supportedversion.md +0 -3
- package/docs/api/player.clips.version.md +0 -3
- package/docs/api/player.clipspluginsettings.md +1 -4
- package/docs/api/player.clipspluginsettings.text.md +0 -3
- package/docs/api/player.closedcaptions.hide.md +0 -3
- package/docs/api/player.closedcaptions.md +6 -5
- package/docs/api/player.closedcaptions.show.md +0 -3
- package/docs/api/player.closedcaptionspluginsettings.md +0 -3
- package/docs/api/player.cmcdconfig._constructor_.md +0 -3
- package/docs/api/player.cmcdconfig.exportids.md +0 -3
- package/docs/api/player.cmcdconfig.md +2 -5
- package/docs/api/player.cmcdconfigoptions.contentid.md +0 -3
- package/docs/api/player.cmcdconfigoptions.md +2 -5
- package/docs/api/player.cmcdconfigoptions.sessionid.md +0 -3
- package/docs/api/player.dvrcontrols.md +0 -3
- package/docs/api/player.extendedevents.md +0 -7
- package/docs/api/player.favicon.md +0 -3
- package/docs/api/player.faviconpluginsettings.faviconcolor.md +0 -3
- package/docs/api/player.faviconpluginsettings.md +1 -4
- package/docs/api/player.gearevents.md +1 -4
- package/docs/api/player.md +24 -43
- package/docs/api/player.mediacontrol.defaultsettings.md +5 -1
- package/docs/api/player.mediacontrol.getavailablepopupheight.md +20 -0
- package/docs/api/player.mediacontrol.md +14 -0
- package/docs/api/player.menuoption.md +0 -3
- package/docs/api/player.nerdstats._constructor_.md +0 -3
- package/docs/api/player.nerdstats.md +1 -4
- package/docs/api/player.pictureinpicture.attributes.md +0 -3
- package/docs/api/player.pictureinpicture.md +2 -7
- package/docs/api/player.playbackrateoption.md +0 -3
- package/docs/api/player.playbackratesettings.md +0 -3
- package/docs/api/player.poster.disable.md +0 -3
- package/docs/api/player.poster.enable.md +0 -3
- package/docs/api/player.poster.md +2 -5
- package/docs/api/player.posterpluginsettings.custom.md +0 -3
- package/docs/api/player.posterpluginsettings.md +4 -7
- package/docs/api/player.posterpluginsettings.showfornoop.md +0 -3
- package/docs/api/player.posterpluginsettings.showonvideoend.md +0 -3
- package/docs/api/player.posterpluginsettings.url.md +0 -3
- package/docs/api/player.qualitylevels.events.md +0 -3
- package/docs/api/player.qualitylevels.md +0 -5
- package/docs/api/player.qualitylevelspluginsettings.labels.md +0 -3
- package/docs/api/player.qualitylevelspluginsettings.md +2 -5
- package/docs/api/player.qualitylevelspluginsettings.restrictresolution.md +0 -3
- package/docs/api/player.skiptime.container.md +0 -3
- package/docs/api/player.skiptime.md +0 -9
- package/docs/api/player.skiptime.name.md +0 -3
- package/docs/api/player.skiptime.supportedversion.md +0 -3
- package/docs/api/player.volumefadeevents.md +0 -5
- package/docs/api/player.volumefadesettings.md +0 -3
- package/docs/api/player.zeptoresult.md +0 -3
- package/lib/Player.d.ts.map +1 -1
- package/lib/Player.js +0 -29
- package/lib/playback/HTML5Video.d.ts.map +1 -1
- package/lib/playback/HTML5Video.js +0 -18
- package/lib/playback/dash-playback/DashPlayback.d.ts.map +1 -1
- package/lib/playback/dash-playback/DashPlayback.js +0 -10
- package/lib/playback/hls-playback/HlsPlayback.d.ts.map +1 -1
- package/lib/playback/hls-playback/HlsPlayback.js +0 -2
- package/lib/plugins/big-mute-button/BigMuteButton.d.ts +1 -1
- package/lib/plugins/big-mute-button/BigMuteButton.d.ts.map +1 -1
- package/lib/plugins/big-mute-button/BigMuteButton.js +1 -3
- package/lib/plugins/bottom-gear/BottomGear.d.ts +2 -2
- package/lib/plugins/bottom-gear/BottomGear.d.ts.map +1 -1
- package/lib/plugins/bottom-gear/BottomGear.js +4 -8
- package/lib/plugins/clappr-nerd-stats/NerdStats.d.ts +1 -1
- package/lib/plugins/clappr-nerd-stats/NerdStats.d.ts.map +1 -1
- package/lib/plugins/clappr-nerd-stats/NerdStats.js +3 -5
- package/lib/plugins/clappr-stats/ClapprStats.d.ts +3 -3
- package/lib/plugins/clappr-stats/ClapprStats.js +2 -2
- package/lib/plugins/clappr-stats/types.d.ts +5 -5
- package/lib/plugins/clappr-stats/types.js +3 -3
- package/lib/plugins/click-to-pause/ClickToPause.d.ts +1 -1
- package/lib/plugins/click-to-pause/ClickToPause.d.ts.map +1 -1
- package/lib/plugins/click-to-pause/ClickToPause.js +3 -7
- package/lib/plugins/clips/Clips.d.ts +2 -2
- package/lib/plugins/clips/Clips.d.ts.map +1 -1
- package/lib/plugins/clips/Clips.js +2 -6
- package/lib/plugins/cmcd-config/CmcdConfig.d.ts +2 -2
- package/lib/plugins/cmcd-config/CmcdConfig.js +1 -1
- package/lib/plugins/context-menu/ContextMenu.d.ts +1 -1
- package/lib/plugins/dvr-controls/DvrControls.d.ts +1 -1
- package/lib/plugins/dvr-controls/DvrControls.d.ts.map +1 -1
- package/lib/plugins/dvr-controls/DvrControls.js +3 -4
- package/lib/plugins/error-screen/ErrorScreen.d.ts.map +1 -1
- package/lib/plugins/error-screen/ErrorScreen.js +0 -3
- package/lib/plugins/favicon/Favicon.d.ts +2 -2
- package/lib/plugins/favicon/Favicon.js +1 -1
- package/lib/plugins/level-selector/QualityLevels.d.ts +2 -2
- package/lib/plugins/level-selector/QualityLevels.d.ts.map +1 -1
- package/lib/plugins/level-selector/QualityLevels.js +3 -11
- package/lib/plugins/media-control/MediaControl.d.ts +2 -5
- package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
- package/lib/plugins/media-control/MediaControl.js +4 -6
- package/lib/plugins/picture-in-picture/PictureInPicture.d.ts +3 -3
- package/lib/plugins/picture-in-picture/PictureInPicture.js +3 -3
- package/lib/plugins/playback-rate/PlaybackRate.d.ts +2 -2
- package/lib/plugins/playback-rate/PlaybackRate.d.ts.map +1 -1
- package/lib/plugins/playback-rate/PlaybackRate.js +0 -10
- package/lib/plugins/poster/Poster.d.ts +2 -2
- package/lib/plugins/poster/Poster.d.ts.map +1 -1
- package/lib/plugins/poster/Poster.js +3 -19
- package/lib/plugins/seek-time/SeekTime.d.ts.map +1 -1
- package/lib/plugins/seek-time/SeekTime.js +1 -6
- package/lib/plugins/skip-time/SkipTime.d.ts +1 -1
- package/lib/plugins/skip-time/SkipTime.d.ts.map +1 -1
- package/lib/plugins/skip-time/SkipTime.js +3 -15
- package/lib/plugins/source-controller/SourceController.d.ts.map +1 -1
- package/lib/plugins/source-controller/SourceController.js +0 -5
- package/lib/plugins/spinner-three-bounce/SpinnerThreeBounce.d.ts.map +1 -1
- package/lib/plugins/spinner-three-bounce/SpinnerThreeBounce.js +2 -18
- package/lib/plugins/subtitles/ClosedCaptions.d.ts +2 -2
- package/lib/plugins/subtitles/ClosedCaptions.js +1 -1
- package/lib/plugins/volume-fade/VolumeFade.d.ts +2 -2
- package/lib/plugins/volume-fade/VolumeFade.js +1 -1
- package/lib/types.d.ts +1 -1
- package/package.json +1 -1
- package/src/Player.ts +0 -29
- package/src/playback/HTML5Video.ts +0 -18
- package/src/playback/dash-playback/DashPlayback.ts +0 -11
- package/src/playback/hls-playback/HlsPlayback.ts +0 -3
- package/src/plugins/big-mute-button/BigMuteButton.ts +1 -4
- package/src/plugins/bottom-gear/BottomGear.ts +4 -8
- package/src/plugins/clappr-nerd-stats/NerdStats.ts +3 -5
- package/src/plugins/clappr-stats/ClapprStats.ts +3 -3
- package/src/plugins/clappr-stats/types.ts +5 -5
- package/src/plugins/click-to-pause/ClickToPause.ts +3 -8
- package/src/plugins/clips/Clips.ts +4 -7
- package/src/plugins/cmcd-config/CmcdConfig.ts +2 -2
- package/src/plugins/context-menu/ContextMenu.ts +1 -1
- package/src/plugins/dvr-controls/DvrControls.ts +3 -4
- package/src/plugins/error-screen/ErrorScreen.ts +0 -3
- package/src/plugins/favicon/Favicon.ts +2 -2
- package/src/plugins/level-selector/QualityLevels.ts +4 -12
- package/src/plugins/media-control/MediaControl.ts +4 -10
- package/src/plugins/picture-in-picture/PictureInPicture.ts +3 -3
- package/src/plugins/playback-rate/PlaybackRate.ts +2 -14
- package/src/plugins/poster/Poster.ts +4 -21
- package/src/plugins/seek-time/SeekTime.ts +2 -6
- package/src/plugins/skip-time/SkipTime.ts +3 -15
- package/src/plugins/source-controller/SourceController.ts +0 -5
- package/src/plugins/spinner-three-bounce/SpinnerThreeBounce.ts +2 -18
- package/src/plugins/subtitles/ClosedCaptions.ts +2 -2
- package/src/plugins/volume-fade/VolumeFade.ts +2 -2
- package/src/types.ts +1 -1
- package/temp/player.api.json +157 -152
- package/tsconfig.tsbuildinfo +1 -1
- package/docs/api/player.mediacontrolpluginsettings.md +0 -13
package/dist/index.js
CHANGED
|
@@ -12680,7 +12680,7 @@ var PlaybackEvents;
|
|
|
12680
12680
|
// https://github.com/clappr/clappr/blob/8752995ea439321ac7ca3cd35e8c64de7a3c3d17/LICENSE
|
|
12681
12681
|
const AUTO$1 = -1;
|
|
12682
12682
|
const { now: now$2 } = Utils;
|
|
12683
|
-
const T$
|
|
12683
|
+
const T$d = 'playback.dash';
|
|
12684
12684
|
class DashPlayback extends BasePlayback {
|
|
12685
12685
|
_levels = null;
|
|
12686
12686
|
_currentLevel = null;
|
|
@@ -12954,10 +12954,9 @@ class DashPlayback extends BasePlayback {
|
|
|
12954
12954
|
}
|
|
12955
12955
|
_onPlaybackError = (event) => {
|
|
12956
12956
|
// TODO
|
|
12957
|
-
trace(`${T$
|
|
12957
|
+
trace(`${T$d} _onPlaybackError`, { event });
|
|
12958
12958
|
};
|
|
12959
12959
|
_onDASHJSSError = (event) => {
|
|
12960
|
-
trace(`${T$o} _onDASHJSSError`, { event });
|
|
12961
12960
|
this._stopTimeUpdateTimer();
|
|
12962
12961
|
// Note that the other error types are deprecated
|
|
12963
12962
|
const e = event.error;
|
|
@@ -12992,7 +12991,6 @@ class DashPlayback extends BasePlayback {
|
|
|
12992
12991
|
}
|
|
12993
12992
|
};
|
|
12994
12993
|
triggerError(error) {
|
|
12995
|
-
trace(`${T$o} triggerError`, { error });
|
|
12996
12994
|
// this triggers Events.ERROR to be handled by the UI
|
|
12997
12995
|
this.trigger(Events$1.PLAYBACK_ERROR, this.createError(error, {
|
|
12998
12996
|
useCodePrefix: false,
|
|
@@ -13031,14 +13029,8 @@ class DashPlayback extends BasePlayback {
|
|
|
13031
13029
|
}
|
|
13032
13030
|
get dvrEnabled() {
|
|
13033
13031
|
if (!this._dash) {
|
|
13034
|
-
trace(`${T$o} dvrEnable no dash player instance`);
|
|
13035
13032
|
return false;
|
|
13036
13033
|
}
|
|
13037
|
-
trace(`${T$o} get.dvrEnabled`, {
|
|
13038
|
-
dvrWindowSize: this._dash?.getDVRWindowSize(),
|
|
13039
|
-
minDvrSize: this._minDvrSize,
|
|
13040
|
-
playbackType: this.getPlaybackType(),
|
|
13041
|
-
});
|
|
13042
13034
|
return (this._dash?.getDVRWindowSize() >= this._minDvrSize &&
|
|
13043
13035
|
this.getPlaybackType() === Playback.LIVE);
|
|
13044
13036
|
}
|
|
@@ -13056,7 +13048,6 @@ class DashPlayback extends BasePlayback {
|
|
|
13056
13048
|
this.trigger(Events$1.PLAYBACK_PROGRESS, progress, {});
|
|
13057
13049
|
}
|
|
13058
13050
|
play() {
|
|
13059
|
-
trace(`${T$o} play`, { dash: !!this._dash });
|
|
13060
13051
|
!this._dash && this._setup();
|
|
13061
13052
|
super.play();
|
|
13062
13053
|
this._startTimeUpdateTimer();
|
|
@@ -13142,7 +13133,6 @@ class DashPlayback extends BasePlayback {
|
|
|
13142
13133
|
}
|
|
13143
13134
|
// @ts-expect-error
|
|
13144
13135
|
get currentAudioTrack() {
|
|
13145
|
-
trace(`${T$o} get currentAudioTrack`);
|
|
13146
13136
|
assert.ok(this._dash, 'DASH.js MediaPlayer is not initialized');
|
|
13147
13137
|
const t = this._dash.getCurrentTrackFor('audio');
|
|
13148
13138
|
if (!t) {
|
|
@@ -41850,7 +41840,7 @@ const AUTO = -1;
|
|
|
41850
41840
|
const DEFAULT_RECOVER_ATTEMPTS = 16;
|
|
41851
41841
|
Events$1.register('PLAYBACK_FRAGMENT_CHANGED');
|
|
41852
41842
|
Events$1.register('PLAYBACK_FRAGMENT_PARSING_METADATA');
|
|
41853
|
-
const T$
|
|
41843
|
+
const T$c = 'playback.hls';
|
|
41854
41844
|
class HlsPlayback extends BasePlayback {
|
|
41855
41845
|
_ccIsSetup = false;
|
|
41856
41846
|
_ccTracksUpdated = false;
|
|
@@ -42082,7 +42072,6 @@ class HlsPlayback extends BasePlayback {
|
|
|
42082
42072
|
maxMaxBufferLength: 4,
|
|
42083
42073
|
autoStartLoad: false,
|
|
42084
42074
|
}, this.options.playback.hlsjsConfig);
|
|
42085
|
-
trace(`${T$n} _createHLSInstance`, { config });
|
|
42086
42075
|
this._hls = new Hls(config);
|
|
42087
42076
|
}
|
|
42088
42077
|
_attachHLSMedia() {
|
|
@@ -42175,7 +42164,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
42175
42164
|
}
|
|
42176
42165
|
else {
|
|
42177
42166
|
Log.error('hlsjs: failed to recover', { evt, data });
|
|
42178
|
-
trace(`${T$
|
|
42167
|
+
trace(`${T$c} _recover failed to recover`, {
|
|
42179
42168
|
type: data.type,
|
|
42180
42169
|
details: data.details,
|
|
42181
42170
|
});
|
|
@@ -42261,7 +42250,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
42261
42250
|
this.trigger(Events$1.PLAYBACK_SETTINGSUPDATE);
|
|
42262
42251
|
}
|
|
42263
42252
|
_onHLSJSError(evt, data) {
|
|
42264
|
-
trace(`${T$
|
|
42253
|
+
trace(`${T$c} _onHLSJSError`, {
|
|
42265
42254
|
fatal: data.fatal,
|
|
42266
42255
|
type: data.type,
|
|
42267
42256
|
details: data.details,
|
|
@@ -42309,7 +42298,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
42309
42298
|
evt,
|
|
42310
42299
|
data,
|
|
42311
42300
|
});
|
|
42312
|
-
trace(`${T$
|
|
42301
|
+
trace(`${T$c} _onHLSJSError trying to recover from network error`, {
|
|
42313
42302
|
details: data.details,
|
|
42314
42303
|
});
|
|
42315
42304
|
error.level = PlayerError.Levels.WARN;
|
|
@@ -42322,7 +42311,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
42322
42311
|
evt,
|
|
42323
42312
|
data,
|
|
42324
42313
|
});
|
|
42325
|
-
trace(`${T$
|
|
42314
|
+
trace(`${T$c} _onHLSJSError trying to recover from media error`, {
|
|
42326
42315
|
details: data.details,
|
|
42327
42316
|
});
|
|
42328
42317
|
error.level = PlayerError.Levels.WARN;
|
|
@@ -42352,7 +42341,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
42352
42341
|
return;
|
|
42353
42342
|
}
|
|
42354
42343
|
Log.warn('hlsjs: non-fatal error occurred', { evt, data });
|
|
42355
|
-
trace(`${T$
|
|
42344
|
+
trace(`${T$c} _onHLSJSError non-fatal error occurred`, {
|
|
42356
42345
|
type: data.type,
|
|
42357
42346
|
details: data.details,
|
|
42358
42347
|
});
|
|
@@ -42690,11 +42679,10 @@ class HlsPlayback extends BasePlayback {
|
|
|
42690
42679
|
this._hls.audioTrack = Number(id); // TODO or find index by .id == id?
|
|
42691
42680
|
}
|
|
42692
42681
|
_onAudioTracksUpdated(_, data) {
|
|
42693
|
-
trace(`${T$n} onAudioTracksUpdated`);
|
|
42694
42682
|
this.trigger(Events$1.PLAYBACK_AUDIO_AVAILABLE, data.audioTracks.map(toClapprTrack));
|
|
42695
42683
|
}
|
|
42696
42684
|
_onAudioTrackSwitched(_, data) {
|
|
42697
|
-
trace(`${T$
|
|
42685
|
+
trace(`${T$c} onAudioTrackSwitched`);
|
|
42698
42686
|
// @ts-ignore
|
|
42699
42687
|
const track = this._hls.audioTracks[data.id];
|
|
42700
42688
|
this.trigger(Events$1.PLAYBACK_AUDIO_CHANGED, toClapprTrack(track));
|
|
@@ -42715,7 +42703,7 @@ function toClapprTrack(t) {
|
|
|
42715
42703
|
};
|
|
42716
42704
|
}
|
|
42717
42705
|
|
|
42718
|
-
const T$
|
|
42706
|
+
const T$b = 'playback.html5_video';
|
|
42719
42707
|
const STALL_TIMEOUT = 15000;
|
|
42720
42708
|
class HTML5Video extends BasePlayback {
|
|
42721
42709
|
stallTimerId = null;
|
|
@@ -42723,9 +42711,6 @@ class HTML5Video extends BasePlayback {
|
|
|
42723
42711
|
* @internal
|
|
42724
42712
|
*/
|
|
42725
42713
|
createError(errorData, options) {
|
|
42726
|
-
trace(`${T$m} createError`, {
|
|
42727
|
-
errorData: { ...errorData },
|
|
42728
|
-
});
|
|
42729
42714
|
const i18n = this.i18n ||
|
|
42730
42715
|
// @ts-ignore
|
|
42731
42716
|
(this.core && this.core.i18n) ||
|
|
@@ -42739,11 +42724,9 @@ class HTML5Video extends BasePlayback {
|
|
|
42739
42724
|
return super.createError(errorData, { ...options, useCodePrefix: false });
|
|
42740
42725
|
}
|
|
42741
42726
|
_onWaiting() {
|
|
42742
|
-
trace(`${T$m} _onWaiting`);
|
|
42743
42727
|
super._onWaiting();
|
|
42744
42728
|
}
|
|
42745
42729
|
_onEnded() {
|
|
42746
|
-
trace(`${T$m} _onEnded`);
|
|
42747
42730
|
if (this.stallTimerId) {
|
|
42748
42731
|
clearTimeout(this.stallTimerId);
|
|
42749
42732
|
this.stallTimerId = null;
|
|
@@ -42751,15 +42734,8 @@ class HTML5Video extends BasePlayback {
|
|
|
42751
42734
|
super._onEnded();
|
|
42752
42735
|
}
|
|
42753
42736
|
_handleBufferingEvents() {
|
|
42754
|
-
trace(`${T$m} _handleBufferingEvents`, {
|
|
42755
|
-
networkState: this.el.networkState,
|
|
42756
|
-
});
|
|
42757
42737
|
if (!this.stallTimerId) {
|
|
42758
42738
|
this.stallTimerId = setTimeout(() => {
|
|
42759
|
-
trace(`${T$m} _handleBufferingEvents stall timeout`, {
|
|
42760
|
-
buffering: this.buffering,
|
|
42761
|
-
ended: this.ended,
|
|
42762
|
-
});
|
|
42763
42739
|
this.stallTimerId = null;
|
|
42764
42740
|
const error = this.createError({
|
|
42765
42741
|
code: PlaybackErrorCode.MediaSourceUnavailable,
|
|
@@ -42774,7 +42750,6 @@ class HTML5Video extends BasePlayback {
|
|
|
42774
42750
|
super._handleBufferingEvents();
|
|
42775
42751
|
}
|
|
42776
42752
|
_onPlaying() {
|
|
42777
|
-
trace(`${T$m} _onPlaying`);
|
|
42778
42753
|
if (this.stallTimerId) {
|
|
42779
42754
|
clearTimeout(this.stallTimerId);
|
|
42780
42755
|
this.stallTimerId = null;
|
|
@@ -42782,7 +42757,6 @@ class HTML5Video extends BasePlayback {
|
|
|
42782
42757
|
super._onPlaying();
|
|
42783
42758
|
}
|
|
42784
42759
|
_onPause() {
|
|
42785
|
-
trace(`${T$m} _onPause`);
|
|
42786
42760
|
super._onPause();
|
|
42787
42761
|
if (this.stallTimerId) {
|
|
42788
42762
|
clearTimeout(this.stallTimerId);
|
|
@@ -42792,7 +42766,6 @@ class HTML5Video extends BasePlayback {
|
|
|
42792
42766
|
get audioTracks() {
|
|
42793
42767
|
const tracks = this.el.audioTracks;
|
|
42794
42768
|
const supported = !!tracks;
|
|
42795
|
-
trace(`${T$m} get audioTracks`, { supported });
|
|
42796
42769
|
const retval = [];
|
|
42797
42770
|
if (supported) {
|
|
42798
42771
|
for (let i = 0; i < tracks.length; i++) {
|
|
@@ -42811,9 +42784,6 @@ class HTML5Video extends BasePlayback {
|
|
|
42811
42784
|
get currentAudioTrack() {
|
|
42812
42785
|
const tracks = this.el.audioTracks;
|
|
42813
42786
|
const supported = !!tracks;
|
|
42814
|
-
trace(`${T$m} get currentAudioTrack`, {
|
|
42815
|
-
supported,
|
|
42816
|
-
});
|
|
42817
42787
|
if (supported) {
|
|
42818
42788
|
for (let i = 0; i < tracks.length; i++) {
|
|
42819
42789
|
const track = tracks[i];
|
|
@@ -42832,7 +42802,7 @@ class HTML5Video extends BasePlayback {
|
|
|
42832
42802
|
switchAudioTrack(id) {
|
|
42833
42803
|
const tracks = this.el.audioTracks;
|
|
42834
42804
|
const supported = !!tracks;
|
|
42835
|
-
trace(`${T$
|
|
42805
|
+
trace(`${T$b} switchAudioTrack`, {
|
|
42836
42806
|
supported,
|
|
42837
42807
|
});
|
|
42838
42808
|
if (supported) {
|
|
@@ -42851,7 +42821,7 @@ function registerPlaybacks() {
|
|
|
42851
42821
|
Loader.registerPlayback(DashPlayback);
|
|
42852
42822
|
}
|
|
42853
42823
|
|
|
42854
|
-
const T$
|
|
42824
|
+
const T$a = 'gplayer';
|
|
42855
42825
|
const DEFAULT_OPTIONS = {
|
|
42856
42826
|
autoPlay: false,
|
|
42857
42827
|
debug: 'none',
|
|
@@ -42939,9 +42909,6 @@ class Player {
|
|
|
42939
42909
|
* ```
|
|
42940
42910
|
*/
|
|
42941
42911
|
attachTo(playerElement) {
|
|
42942
|
-
trace(`${T$l} attachTo`, {
|
|
42943
|
-
player: !!this.player,
|
|
42944
|
-
});
|
|
42945
42912
|
assert.ok(!this.player, 'Player already initialized');
|
|
42946
42913
|
assert.ok(playerElement, 'Player container element is required');
|
|
42947
42914
|
if (this.config.debug === 'all' || this.config.debug === 'clappr') {
|
|
@@ -42949,9 +42916,6 @@ class Player {
|
|
|
42949
42916
|
}
|
|
42950
42917
|
const coreOpts = this.buildCoreOptions(playerElement);
|
|
42951
42918
|
const { core, container } = Player.getRegisteredPlugins();
|
|
42952
|
-
trace(`${T$l} init`, {
|
|
42953
|
-
registeredPlaybacks: Loader.registeredPlaybacks.map((p) => p.prototype.name),
|
|
42954
|
-
});
|
|
42955
42919
|
coreOpts.plugins = {
|
|
42956
42920
|
core: Object.values(core),
|
|
42957
42921
|
container: Object.values(container),
|
|
@@ -42963,9 +42927,6 @@ class Player {
|
|
|
42963
42927
|
* Destroys the player, releasing all resources and unmounting its UI from the DOM.
|
|
42964
42928
|
*/
|
|
42965
42929
|
destroy() {
|
|
42966
|
-
trace(`${T$l} destroy`, {
|
|
42967
|
-
player: !!this.player,
|
|
42968
|
-
});
|
|
42969
42930
|
if (this.player) {
|
|
42970
42931
|
this.player.destroy();
|
|
42971
42932
|
this.player = null;
|
|
@@ -43150,12 +43111,6 @@ class Player {
|
|
|
43150
43111
|
this.config = $.extend(true, this.config, config);
|
|
43151
43112
|
}
|
|
43152
43113
|
initPlayer(coreOptions) {
|
|
43153
|
-
trace(`${T$l} initPlayer`, {
|
|
43154
|
-
autoPlay: coreOptions.autoPlay,
|
|
43155
|
-
sources: coreOptions.sources,
|
|
43156
|
-
player: !!this.player,
|
|
43157
|
-
// TODO selected options
|
|
43158
|
-
});
|
|
43159
43114
|
const player = new Player$1(coreOptions);
|
|
43160
43115
|
this.player = player;
|
|
43161
43116
|
this.bindCoreListeners();
|
|
@@ -43175,7 +43130,7 @@ class Player {
|
|
|
43175
43130
|
}
|
|
43176
43131
|
}
|
|
43177
43132
|
triggerAutoPlay() {
|
|
43178
|
-
trace(`${T$
|
|
43133
|
+
trace(`${T$a} triggerAutoPlay`);
|
|
43179
43134
|
setTimeout(() => {
|
|
43180
43135
|
this.player?.play({
|
|
43181
43136
|
autoPlay: true,
|
|
@@ -43193,7 +43148,7 @@ class Player {
|
|
|
43193
43148
|
// TODO test
|
|
43194
43149
|
events = {
|
|
43195
43150
|
onReady: () => {
|
|
43196
|
-
trace(`${T$
|
|
43151
|
+
trace(`${T$a} onReady`, {
|
|
43197
43152
|
ready: this.ready,
|
|
43198
43153
|
});
|
|
43199
43154
|
if (this.ready) {
|
|
@@ -43227,7 +43182,7 @@ class Player {
|
|
|
43227
43182
|
buildCoreOptions(rootNode) {
|
|
43228
43183
|
const sources = this.buildMediaSourcesList();
|
|
43229
43184
|
const source = sources[0];
|
|
43230
|
-
trace(`${T$
|
|
43185
|
+
trace(`${T$a} buildCoreOptions`, {
|
|
43231
43186
|
source,
|
|
43232
43187
|
sources,
|
|
43233
43188
|
});
|
|
@@ -43288,13 +43243,6 @@ class Player {
|
|
|
43288
43243
|
assert.ok(this.player, 'Player is not initialized');
|
|
43289
43244
|
const core = this.player.core;
|
|
43290
43245
|
core.on(Events$1.CORE_SCREEN_ORIENTATION_CHANGED, ({ orientation }) => {
|
|
43291
|
-
trace(`${T$l} on CORE_SCREEN_ORIENTATION_CHANGED`, {
|
|
43292
|
-
orientation,
|
|
43293
|
-
rootNode: {
|
|
43294
|
-
width: this.rootNode?.clientWidth,
|
|
43295
|
-
height: this.rootNode?.clientHeight,
|
|
43296
|
-
},
|
|
43297
|
-
});
|
|
43298
43246
|
if (Browser.isiOS && this.rootNode) {
|
|
43299
43247
|
core?.resize({
|
|
43300
43248
|
width: this.rootNode.clientWidth,
|
|
@@ -43303,22 +43251,15 @@ class Player {
|
|
|
43303
43251
|
}
|
|
43304
43252
|
}, null);
|
|
43305
43253
|
core.on(Events$1.CORE_RESIZE, ({ width, height }) => {
|
|
43306
|
-
trace(`${T$l} on CORE_RESIZE`, {
|
|
43307
|
-
width,
|
|
43308
|
-
height,
|
|
43309
|
-
});
|
|
43310
43254
|
this.safeTriggerEvent(PlayerEvent.Resize, { width, height });
|
|
43311
43255
|
}, null);
|
|
43312
43256
|
core.on(Events$1.CORE_FULLSCREEN, (isFullscreen) => {
|
|
43313
|
-
trace(`${T$l} CORE_FULLSCREEN`, {
|
|
43314
|
-
isFullscreen,
|
|
43315
|
-
});
|
|
43316
43257
|
this.safeTriggerEvent(PlayerEvent.Fullscreen, isFullscreen);
|
|
43317
43258
|
}, null);
|
|
43318
43259
|
}
|
|
43319
43260
|
}
|
|
43320
43261
|
|
|
43321
|
-
var version$1 = "2.
|
|
43262
|
+
var version$1 = "2.26.1";
|
|
43322
43263
|
|
|
43323
43264
|
var packages = {
|
|
43324
43265
|
"node_modules/@clappr/core": {
|
|
@@ -43654,10 +43595,10 @@ const INITIAL_SETTINGS = {
|
|
|
43654
43595
|
default: [],
|
|
43655
43596
|
seekEnabled: false,
|
|
43656
43597
|
};
|
|
43657
|
-
const T
|
|
43598
|
+
// const T = 'plugins.media_control'
|
|
43658
43599
|
/**
|
|
43659
43600
|
* Extended events for the {@link MediaControl} plugin
|
|
43660
|
-
* @
|
|
43601
|
+
* @public
|
|
43661
43602
|
*/
|
|
43662
43603
|
var ExtendedEvents;
|
|
43663
43604
|
(function (ExtendedEvents) {
|
|
@@ -43741,7 +43682,7 @@ class MediaControl extends UICorePlugin {
|
|
|
43741
43682
|
}
|
|
43742
43683
|
/**
|
|
43743
43684
|
* @returns Default media control layout settings
|
|
43744
|
-
* @
|
|
43685
|
+
* @remarks
|
|
43745
43686
|
* The method can be used to change the default dashboard layout, for example, removing the standard UI elements
|
|
43746
43687
|
* @example
|
|
43747
43688
|
* ```ts
|
|
@@ -43936,7 +43877,6 @@ class MediaControl extends UICorePlugin {
|
|
|
43936
43877
|
* Hides the media control UI
|
|
43937
43878
|
*/
|
|
43938
43879
|
disable() {
|
|
43939
|
-
trace(`${T$k} disable`);
|
|
43940
43880
|
this.userDisabled = true; // TODO distinguish between user and system (e.g., unplayable) disabled?
|
|
43941
43881
|
this.hide();
|
|
43942
43882
|
this.unbindKeyEvents();
|
|
@@ -43946,7 +43886,6 @@ class MediaControl extends UICorePlugin {
|
|
|
43946
43886
|
* Reenables the plugin disabled earlier with the {@link MediaControl.disable} method
|
|
43947
43887
|
*/
|
|
43948
43888
|
enable() {
|
|
43949
|
-
trace(`${T$k} enable`);
|
|
43950
43889
|
if (this.options.chromeless) {
|
|
43951
43890
|
return;
|
|
43952
43891
|
}
|
|
@@ -45076,11 +45015,11 @@ class AudioTracks extends UICorePlugin {
|
|
|
45076
45015
|
|
|
45077
45016
|
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";
|
|
45078
45017
|
|
|
45079
|
-
const T$
|
|
45018
|
+
const T$9 = 'plugins.big_mute_button';
|
|
45080
45019
|
// TODO rewrite as a container plugin
|
|
45081
45020
|
/**
|
|
45082
45021
|
* `PLUGIN` that displays a big mute button over the video when it's being played muted.
|
|
45083
|
-
* @
|
|
45022
|
+
* @public
|
|
45084
45023
|
* @remarks
|
|
45085
45024
|
* When pressed, it unmutes the video.
|
|
45086
45025
|
* @example
|
|
@@ -45139,7 +45078,7 @@ class BigMuteButton extends UICorePlugin {
|
|
|
45139
45078
|
if (autoPlay) {
|
|
45140
45079
|
this.autoPlay = true;
|
|
45141
45080
|
}
|
|
45142
|
-
trace(`${T$
|
|
45081
|
+
trace(`${T$9} onPlay`, {
|
|
45143
45082
|
autoPlay: this.autoPlay,
|
|
45144
45083
|
wasMuted,
|
|
45145
45084
|
volume,
|
|
@@ -45152,7 +45091,7 @@ class BigMuteButton extends UICorePlugin {
|
|
|
45152
45091
|
}
|
|
45153
45092
|
}
|
|
45154
45093
|
onStop(_, { ui }) {
|
|
45155
|
-
trace(`${T$
|
|
45094
|
+
trace(`${T$9} onStop`, { ui });
|
|
45156
45095
|
if (ui) {
|
|
45157
45096
|
this.destroy();
|
|
45158
45097
|
}
|
|
@@ -45180,7 +45119,6 @@ class BigMuteButton extends UICorePlugin {
|
|
|
45180
45119
|
* @internal
|
|
45181
45120
|
*/
|
|
45182
45121
|
render() {
|
|
45183
|
-
trace(`${T$j} render`);
|
|
45184
45122
|
this.$el.html(BigMuteButton.template());
|
|
45185
45123
|
this.$el.find('#gplayer-big-mute-icon').append(volumeMuteIcon);
|
|
45186
45124
|
// TODO
|
|
@@ -45200,7 +45138,6 @@ class BigMuteButton extends UICorePlugin {
|
|
|
45200
45138
|
this.$el.find('#gplayer-big-mute-button')?.removeClass('hide');
|
|
45201
45139
|
}
|
|
45202
45140
|
clicked(e) {
|
|
45203
|
-
trace(`${T$j} clicked`);
|
|
45204
45141
|
const mediaControl = this.core.getPlugin('media_control');
|
|
45205
45142
|
// TODO delegate to media_control plugin
|
|
45206
45143
|
const localVolume = Utils.Config.restore('volume');
|
|
@@ -45224,11 +45161,11 @@ const gearIcon = "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"n
|
|
|
45224
45161
|
const gearHdIcon = "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_28_1567)\">\n <path\n d=\"M19.14 12.94C19.18 12.64 19.2 12.33 19.2 12C19.2 11.68 19.18 11.36 19.13 11.06L21.16 9.47999C21.34 9.33999 21.39 9.06999 21.28 8.86999L19.36 5.54999C19.24 5.32999 18.99 5.25999 18.77 5.32999L16.38 6.28999C15.88 5.90999 15.35 5.58999 14.76 5.34999L14.4 2.80999C14.36 2.56999 14.16 2.39999 13.92 2.39999H10.08C9.83999 2.39999 9.64999 2.56999 9.60999 2.80999L9.24999 5.34999C8.65999 5.58999 8.11999 5.91999 7.62999 6.28999L5.23999 5.32999C5.01999 5.24999 4.76999 5.32999 4.64999 5.54999L2.73999 8.86999C2.61999 9.07999 2.65999 9.33999 2.85999 9.47999L4.88999 11.06C4.83999 11.36 4.79999 11.69 4.79999 12C4.79999 12.31 4.81999 12.64 4.86999 12.94L2.83999 14.52C2.65999 14.66 2.60999 14.93 2.71999 15.13L4.63999 18.45C4.75999 18.67 5.00999 18.74 5.22999 18.67L7.61999 17.71C8.11999 18.09 8.64999 18.41 9.23999 18.65L9.59999 21.19C9.64999 21.43 9.83999 21.6 10.08 21.6H13.92C14.16 21.6 14.36 21.43 14.39 21.19L14.75 18.65C15.34 18.41 15.88 18.09 16.37 17.71L18.76 18.67C18.98 18.75 19.23 18.67 19.35 18.45L21.27 15.13C21.39 14.91 21.34 14.66 21.15 14.52L19.14 12.94ZM12 15.6C10.02 15.6 8.39999 13.98 8.39999 12C8.39999 10.02 10.02 8.39999 12 8.39999C13.98 8.39999 15.6 10.02 15.6 12C15.6 13.98 13.98 15.6 12 15.6Z\"\n fill=\"#C9C9C9\"/>\n <rect x=\"13\" width=\"11\" height=\"7\" rx=\"1\" fill=\"#F6413B\"/>\n <path\n d=\"M14.6962 6V1.63636H15.3546V3.53267H17.53V1.63636H18.1905V6H17.53V4.0973H15.3546V6H14.6962ZM20.562 6H19.1493V1.63636H20.6067C21.0343 1.63636 21.4015 1.72372 21.7083 1.89844C22.0151 2.07173 22.2502 2.32102 22.4135 2.64631C22.5783 2.97017 22.6607 3.35866 22.6607 3.81179C22.6607 4.26634 22.5776 4.65696 22.4114 4.98366C22.2466 5.31037 22.008 5.56179 21.6955 5.73793C21.383 5.91264 21.0051 6 20.562 6ZM19.8077 5.42472H20.5257C20.8581 5.42472 21.1344 5.36222 21.3546 5.23722C21.5748 5.1108 21.7395 4.92827 21.8489 4.68963C21.9583 4.44957 22.013 4.15696 22.013 3.81179C22.013 3.46946 21.9583 3.17898 21.8489 2.94034C21.7409 2.7017 21.5797 2.5206 21.3652 2.39702C21.1507 2.27344 20.8844 2.21165 20.5662 2.21165H19.8077V5.42472Z\"\n fill=\"#C9C9C9\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_28_1567\">\n <rect width=\"24\" height=\"24\" fill=\"white\"/>\n </clipPath>\n </defs>\n</svg>\n";
|
|
45225
45162
|
|
|
45226
45163
|
const VERSION$6 = '2.19.12';
|
|
45227
|
-
const T
|
|
45164
|
+
// const T = 'plugins.bottom_gear'
|
|
45228
45165
|
const MENU_BACKLINK_HEIGHT = 44;
|
|
45229
45166
|
/**
|
|
45230
45167
|
* Events triggered by the plugin
|
|
45231
|
-
* @
|
|
45168
|
+
* @public
|
|
45232
45169
|
*/
|
|
45233
45170
|
var GearEvents;
|
|
45234
45171
|
(function (GearEvents) {
|
|
@@ -45239,7 +45176,7 @@ var GearEvents;
|
|
|
45239
45176
|
})(GearEvents || (GearEvents = {}));
|
|
45240
45177
|
/**
|
|
45241
45178
|
* `PLUGIN` that adds a button to extend the media controls UI with extra options.
|
|
45242
|
-
* @
|
|
45179
|
+
* @public
|
|
45243
45180
|
* @remarks
|
|
45244
45181
|
* The plugin renders small gear icon to the right of the media controls.
|
|
45245
45182
|
* It provides a base for attaching custom settings UI in the gear menu
|
|
@@ -45375,14 +45312,12 @@ class BottomGear extends UICorePlugin {
|
|
|
45375
45312
|
addItem(name, $subMenu) {
|
|
45376
45313
|
const $existingItem = this.$el.find(`#gear-options li[data-${name}]`);
|
|
45377
45314
|
if ($existingItem.length) {
|
|
45378
|
-
trace(`${T$i} addItem already exists`, { name });
|
|
45379
45315
|
return $existingItem;
|
|
45380
45316
|
}
|
|
45381
45317
|
const $item = $('<li></li>')
|
|
45382
45318
|
.attr(`data-${name}`, '')
|
|
45383
45319
|
.appendTo(this.$el.find('#gear-options'));
|
|
45384
45320
|
if ($subMenu) {
|
|
45385
|
-
trace(`${T$i} addItem adding submenu`, { name });
|
|
45386
45321
|
$subMenu
|
|
45387
45322
|
.addClass('gear-sub-menu-wrapper')
|
|
45388
45323
|
.hide()
|
|
@@ -45405,7 +45340,6 @@ class BottomGear extends UICorePlugin {
|
|
|
45405
45340
|
});
|
|
45406
45341
|
}
|
|
45407
45342
|
highDefinitionUpdate(isHd) {
|
|
45408
|
-
trace(`${T$i} highDefinitionUpdate`, { isHd });
|
|
45409
45343
|
this.hd = isHd;
|
|
45410
45344
|
this.$el.find('#gear-button').html(isHd ? gearHdIcon : gearIcon);
|
|
45411
45345
|
}
|
|
@@ -45496,7 +45430,7 @@ class BottomGear extends UICorePlugin {
|
|
|
45496
45430
|
}
|
|
45497
45431
|
|
|
45498
45432
|
/**
|
|
45499
|
-
* @
|
|
45433
|
+
* @public
|
|
45500
45434
|
*/
|
|
45501
45435
|
var ClapprStatsChronograph;
|
|
45502
45436
|
(function (ClapprStatsChronograph) {
|
|
@@ -45508,7 +45442,7 @@ var ClapprStatsChronograph;
|
|
|
45508
45442
|
// Latency = 'latency',
|
|
45509
45443
|
})(ClapprStatsChronograph || (ClapprStatsChronograph = {}));
|
|
45510
45444
|
/**
|
|
45511
|
-
* @
|
|
45445
|
+
* @public
|
|
45512
45446
|
*/
|
|
45513
45447
|
var ClapprStatsCounter;
|
|
45514
45448
|
(function (ClapprStatsCounter) {
|
|
@@ -45525,7 +45459,7 @@ var ClapprStatsCounter;
|
|
|
45525
45459
|
ClapprStatsCounter["DvrUsage"] = "dvrUsage";
|
|
45526
45460
|
})(ClapprStatsCounter || (ClapprStatsCounter = {}));
|
|
45527
45461
|
/**
|
|
45528
|
-
* @
|
|
45462
|
+
* @public
|
|
45529
45463
|
*/
|
|
45530
45464
|
var ClapprStatsEvents;
|
|
45531
45465
|
(function (ClapprStatsEvents) {
|
|
@@ -45580,7 +45514,7 @@ function newMetrics$1() {
|
|
|
45580
45514
|
|
|
45581
45515
|
/**
|
|
45582
45516
|
* `PLUGIN` that measures data about playback, which can be useful for analyzing performance and UX.
|
|
45583
|
-
* @
|
|
45517
|
+
* @public
|
|
45584
45518
|
* @remarks
|
|
45585
45519
|
* This plugin does not render anything and is supposed to be extended or used together with other plugins that actually render something.
|
|
45586
45520
|
*
|
|
@@ -45673,7 +45607,7 @@ class ClapprStats extends ContainerPlugin {
|
|
|
45673
45607
|
}
|
|
45674
45608
|
/**
|
|
45675
45609
|
* Returns the collected metrics.
|
|
45676
|
-
* @returns Measurements collected so far
|
|
45610
|
+
* @returns {@link ClapprStatsMetrics | Measurements} collected so far
|
|
45677
45611
|
*/
|
|
45678
45612
|
exportMetrics() {
|
|
45679
45613
|
return structuredClone(this.metrics);
|
|
@@ -45859,7 +45793,7 @@ const CMCD_KEYS = [
|
|
|
45859
45793
|
// const T = 'plugins.cmcd'
|
|
45860
45794
|
/**
|
|
45861
45795
|
* A `PLUGIN` that configures {@link https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf | CMCD} for playback
|
|
45862
|
-
* @
|
|
45796
|
+
* @public
|
|
45863
45797
|
* @remarks
|
|
45864
45798
|
* Configuration options - {@link CmcdConfigOptions}.
|
|
45865
45799
|
* @example
|
|
@@ -48082,10 +48016,10 @@ const PLAYBACK_NAMES = {
|
|
|
48082
48016
|
hls: 'HLS.js',
|
|
48083
48017
|
html5_video: 'Native',
|
|
48084
48018
|
};
|
|
48085
|
-
const T
|
|
48019
|
+
// const T = 'plugins.nerd_stats'
|
|
48086
48020
|
/**
|
|
48087
48021
|
* `PLUGIN` that displays useful statistics regarding the playback as well as the network quality estimation.
|
|
48088
|
-
* @
|
|
48022
|
+
* @public
|
|
48089
48023
|
*
|
|
48090
48024
|
* @remarks
|
|
48091
48025
|
* Depends on:
|
|
@@ -48401,7 +48335,6 @@ class NerdStats extends UICorePlugin {
|
|
|
48401
48335
|
return this;
|
|
48402
48336
|
}
|
|
48403
48337
|
attach() {
|
|
48404
|
-
trace(`${T$h} attach`);
|
|
48405
48338
|
const gear = this.core.getPlugin('bottom_gear');
|
|
48406
48339
|
gear
|
|
48407
48340
|
.addItem('nerd_stats')
|
|
@@ -48415,7 +48348,6 @@ class NerdStats extends UICorePlugin {
|
|
|
48415
48348
|
});
|
|
48416
48349
|
}
|
|
48417
48350
|
clearSpeedtestMetrics() {
|
|
48418
|
-
trace(`${T$h} clearSpeedtestMetrics`);
|
|
48419
48351
|
const clapprStats = this.container?.getPlugin('clappr_stats');
|
|
48420
48352
|
this.speedtestMetrics.connectionSpeed = 0;
|
|
48421
48353
|
this.speedtestMetrics.ping = 0;
|
|
@@ -48470,10 +48402,10 @@ function newMetrics() {
|
|
|
48470
48402
|
// Copyright 2014 Globo.com Player authors. All rights reserved.
|
|
48471
48403
|
// Use of this source code is governed by a BSD-style
|
|
48472
48404
|
// license that can be found at https://github.com/clappr/clappr-plugins/blob/master/LICENSE.
|
|
48473
|
-
const T
|
|
48405
|
+
// const T = 'plugins.click_to_pause'
|
|
48474
48406
|
/**
|
|
48475
48407
|
* A small `PLUGIN` that toggles the playback state on click over the video container
|
|
48476
|
-
* @
|
|
48408
|
+
* @public
|
|
48477
48409
|
*/
|
|
48478
48410
|
class ClickToPause extends ContainerPlugin {
|
|
48479
48411
|
pointerEnabled = false;
|
|
@@ -48500,10 +48432,6 @@ class ClickToPause extends ContainerPlugin {
|
|
|
48500
48432
|
click() {
|
|
48501
48433
|
const isLivePlayback = this.container.getPlaybackType() === Playback.LIVE;
|
|
48502
48434
|
const isDvrEnabled = this.container.isDvrEnabled();
|
|
48503
|
-
trace(`${T$g} click`, {
|
|
48504
|
-
isLivePlayback,
|
|
48505
|
-
isDvrEnabled,
|
|
48506
|
-
});
|
|
48507
48435
|
if (isLivePlayback && !isDvrEnabled) {
|
|
48508
48436
|
this.togglePlay(true);
|
|
48509
48437
|
return;
|
|
@@ -48579,13 +48507,12 @@ function buildSvg(clips, duration, barWidth) {
|
|
|
48579
48507
|
|
|
48580
48508
|
const clipsHTML = "<div class=\"gplayer-mc-clips-text\" id=\"gplayer-mc-clips-text\"></div>";
|
|
48581
48509
|
|
|
48582
|
-
const T$f = 'plugins.clips';
|
|
48583
48510
|
const VERSION$5 = '2.22.16';
|
|
48584
48511
|
const CLAPPR_VERSION = '0.11.4';
|
|
48585
48512
|
const COMPACT_WIDTH = 495;
|
|
48586
48513
|
/**
|
|
48587
48514
|
* `PLUGIN` that allows marking up the timeline of the video
|
|
48588
|
-
* @
|
|
48515
|
+
* @public
|
|
48589
48516
|
* @remarks
|
|
48590
48517
|
* The plugin decorates the seekbar with notches to indicate the clips of the video and displays current clip text in the left panel
|
|
48591
48518
|
*
|
|
@@ -48665,18 +48592,15 @@ class Clips extends UICorePlugin {
|
|
|
48665
48592
|
?.text;
|
|
48666
48593
|
}
|
|
48667
48594
|
onCoreReady() {
|
|
48668
|
-
trace(`${T$f} onCoreReady`);
|
|
48669
48595
|
const mediaControl = this.core.getPlugin('media_control');
|
|
48670
48596
|
assert(mediaControl, 'media_control plugin is required');
|
|
48671
48597
|
this.parseClips(this.options.clips.text);
|
|
48672
48598
|
this.listenTo(mediaControl, Events$1.MEDIACONTROL_RENDERED, this.onMcRender);
|
|
48673
48599
|
}
|
|
48674
48600
|
onMcRender() {
|
|
48675
|
-
trace(`${T$f} onMcRender`);
|
|
48676
48601
|
this.core.getPlugin('media_control')?.slot('clips', this.$el);
|
|
48677
48602
|
}
|
|
48678
48603
|
onContainerChanged() {
|
|
48679
|
-
trace(`${T$f} onContainerChanged`);
|
|
48680
48604
|
// TODO figure out the conditions of changing the container (without destroying the previous one)
|
|
48681
48605
|
// probably it is the case with the MultiCamera plugin
|
|
48682
48606
|
if (this.oldContainer) {
|
|
@@ -48867,11 +48791,11 @@ class ContextMenu extends UIContainerPlugin {
|
|
|
48867
48791
|
|
|
48868
48792
|
const dvrHTML = "<div class=\"live-info\" id=\"gplayer-mc-live\"><%= i18n.t('live') %></div>\n<button type=\"button\"\n class=\"live-button\"\n aria-label=\"<%= i18n.t('back_to_live') %>\"\n id=\"gplayer-mc-back-to-live\"\n>\n <%= i18n.t('back_to_live') %>\n</button>\n";
|
|
48869
48793
|
|
|
48870
|
-
const T
|
|
48794
|
+
// const T = 'plugins.dvr_controls'
|
|
48871
48795
|
/**
|
|
48872
48796
|
* `PLUGIN` that adds the DVR controls to the media control UI
|
|
48873
48797
|
*
|
|
48874
|
-
* @
|
|
48798
|
+
* @public
|
|
48875
48799
|
*
|
|
48876
48800
|
* @remarks
|
|
48877
48801
|
* Depends on:
|
|
@@ -48940,7 +48864,6 @@ class DvrControls extends UICorePlugin {
|
|
|
48940
48864
|
* @internal
|
|
48941
48865
|
*/
|
|
48942
48866
|
render() {
|
|
48943
|
-
trace(`${T$e} render`);
|
|
48944
48867
|
this.$el.html(DvrControls.template({
|
|
48945
48868
|
i18n: this.core.i18n,
|
|
48946
48869
|
}));
|
|
@@ -48983,7 +48906,7 @@ const reloadIcon = "<svg fill=\"#FFFFFF\" height=\"24\" viewBox=\"0 0 24 24\" wi
|
|
|
48983
48906
|
|
|
48984
48907
|
const templateHtml = "<div class=\"player-error-screen__content\" data-error-screen>\n <% if (icon) { %>\n <div class=\"player-error-screen__icon\" data-error-screen><%= icon %></div>\n <% } %>\n <div class=\"player-error-screen__title\" data-error-screen><%= title %></div>\n <% if (message) { %>\n <div class=\"player-error-screen__message\" data-error-screen><%= message %></div>\n <% } %>\n <% if (code) { %>\n <div class=\"player-error-screen__code\" data-error-screen><%= i18n.t('error_code') %>: <%= code %></div>\n <% } %>\n <% if (reloadIcon) { %>\n <div class=\"player-error-screen__reload\" data-error-screen><%= reloadIcon %></div>\n <% } %>\n</div>\n";
|
|
48985
48908
|
|
|
48986
|
-
const T$
|
|
48909
|
+
const T$8 = 'plugins.error_screen';
|
|
48987
48910
|
/**
|
|
48988
48911
|
* `PLUGIN` that displays fatal errors nicely in the overlay on top of the player.
|
|
48989
48912
|
* @public
|
|
@@ -49035,11 +48958,11 @@ class ErrorScreen extends UICorePlugin {
|
|
|
49035
48958
|
this.listenTo(this.core, Events$1.CORE_ACTIVE_CONTAINER_CHANGED, this.onActiveContainerChanged);
|
|
49036
48959
|
}
|
|
49037
48960
|
onPlay() {
|
|
49038
|
-
trace(`${T$
|
|
48961
|
+
trace(`${T$8} onPlay`);
|
|
49039
48962
|
this.unmount();
|
|
49040
48963
|
}
|
|
49041
48964
|
unmount() {
|
|
49042
|
-
trace(`${T$
|
|
48965
|
+
trace(`${T$8} unmount`);
|
|
49043
48966
|
this.err = null;
|
|
49044
48967
|
this.$el.remove();
|
|
49045
48968
|
}
|
|
@@ -49052,7 +48975,7 @@ class ErrorScreen extends UICorePlugin {
|
|
|
49052
48975
|
};
|
|
49053
48976
|
}
|
|
49054
48977
|
reload() {
|
|
49055
|
-
trace(`${T$
|
|
48978
|
+
trace(`${T$8} reload`);
|
|
49056
48979
|
setTimeout(() => {
|
|
49057
48980
|
this.core.configure({
|
|
49058
48981
|
reloading: true,
|
|
@@ -49062,9 +48985,6 @@ class ErrorScreen extends UICorePlugin {
|
|
|
49062
48985
|
}, 0);
|
|
49063
48986
|
}
|
|
49064
48987
|
onActiveContainerChanged() {
|
|
49065
|
-
trace(`${T$d} onActiveContainerChanged`, {
|
|
49066
|
-
reloading: this.core.options.reloading,
|
|
49067
|
-
});
|
|
49068
48988
|
this.err = null;
|
|
49069
48989
|
this.listenTo(this.core.activeContainer.playback, Events$1.PLAYBACK_PLAY, this.onPlay);
|
|
49070
48990
|
if (this.core.options.reloading) {
|
|
@@ -49078,7 +48998,7 @@ class ErrorScreen extends UICorePlugin {
|
|
|
49078
48998
|
}
|
|
49079
48999
|
}
|
|
49080
49000
|
onError(err) {
|
|
49081
|
-
trace(`${T$
|
|
49001
|
+
trace(`${T$8} onError`, { err });
|
|
49082
49002
|
if (err.UI) {
|
|
49083
49003
|
if (this.err) {
|
|
49084
49004
|
this.unmount();
|
|
@@ -49115,7 +49035,7 @@ const FAVICON_COLOR = '#567';
|
|
|
49115
49035
|
const FAVICON_SELECTOR = 'link[rel="shortcut icon"]';
|
|
49116
49036
|
/**
|
|
49117
49037
|
* `PLUGIN` that changes the favicon according to the player's state.
|
|
49118
|
-
* @
|
|
49038
|
+
* @public
|
|
49119
49039
|
* @remarks
|
|
49120
49040
|
* There are three states: stopped, playing and paused.
|
|
49121
49041
|
*/
|
|
@@ -49548,7 +49468,7 @@ const streamsMomentoIcon = "<svg id=\"Слой_1\" data-name=\"Слой 1\" xmln
|
|
|
49548
49468
|
const streamsWhiteNightsIcon = "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"50\" height=\"50\" viewBox=\"0 0 50 50\">\n <defs>\n <clipPath id=\"clip-Icon\">\n <rect width=\"50\" height=\"50\"/>\n </clipPath>\n </defs>\n <g id=\"Icon\" clip-path=\"url(#clip-Icon)\">\n <g id=\"icon2\" transform=\"translate(-0.041 0)\">\n <path id=\"Контур_77\" data-name=\"Контур 77\" d=\"M6.493,13v8.266h6.275V19.74H8.31V17.714h4.006V16.3H8.31V14.53h4.365V13Zm7.5,0v8.266h1.7V15.732h.023l3.438,5.534h1.818V13h-1.7v5.545h-.023L15.8,13Z\" fill=\"#fff\"/>\n <path id=\"Контур_76\" data-name=\"Контур 76\" d=\"M29.949,29.1V26.774H31.94a1.4,1.4,0,0,1,.938.272,1.1,1.1,0,0,1,.313.874,1.155,1.155,0,0,1-.313.9,1.375,1.375,0,0,1-.938.278ZM28.132,25.36v8.266h1.817V30.4h1.818a1.353,1.353,0,0,1,.984.3,1.637,1.637,0,0,1,.394.949c.046.333.079.681.1,1.042a3.2,3.2,0,0,0,.185.938h1.819a1.218,1.218,0,0,1-.191-.423,3.611,3.611,0,0,1-.093-.527c-.019-.185-.033-.367-.041-.544s-.016-.332-.023-.463a5.052,5.052,0,0,0-.087-.625,2.109,2.109,0,0,0-.2-.573,1.586,1.586,0,0,0-.359-.451,1.414,1.414,0,0,0-.556-.284v-.023a1.926,1.926,0,0,0,1-.81,2.494,2.494,0,0,0,.307-1.262,2.308,2.308,0,0,0-.165-.88,2.128,2.128,0,0,0-.486-.724,2.3,2.3,0,0,0-.764-.492,2.67,2.67,0,0,0-1-.179ZM43.506,30.5V25.36H41.689V30.5a2.065,2.065,0,0,1-.37,1.36,1.7,1.7,0,0,1-1.343.434,2.086,2.086,0,0,1-.886-.156,1.283,1.283,0,0,1-.758-.978,3.748,3.748,0,0,1-.058-.66V25.36H36.456V30.5a3.16,3.16,0,0,0,.92,2.5,3.807,3.807,0,0,0,2.6.81,3.82,3.82,0,0,0,2.593-.816,3.132,3.132,0,0,0,.937-2.492Z\" fill=\"#fff\"/>\n <path id=\"Контур_80\" data-name=\"Контур 80\" d=\"M22.646,31.2H4.689a4.505,4.505,0,0,1-4.5-4.5V8.5A4.505,4.505,0,0,1,4.689,4h18.2a4.505,4.505,0,0,1,4.5,4.5v8.445l-.893.1a3.184,3.184,0,0,0-2.846,3.177V30.5l-.465.7ZM4.689,6a2.5,2.5,0,0,0-2.5,2.5V26.7a2.5,2.5,0,0,0,2.5,2.5H21.65V20.22a5.18,5.18,0,0,1,3.739-4.992V8.5a2.5,2.5,0,0,0-2.5-2.5Z\" fill=\"#fff\"/>\n <path id=\"Контур_81\" data-name=\"Контур 81\" d=\"M30.127,47.884a1,1,0,0,1-1-1V43.267H26.846a5.206,5.206,0,0,1-5.2-5.2V20.222a5.206,5.206,0,0,1,5.2-5.2H44.692a5.206,5.206,0,0,1,5.2,5.2V38.068a5.206,5.206,0,0,1-5.2,5.2H35.058l-4.216,4.316A1,1,0,0,1,30.127,47.884ZM26.846,17.022a3.2,3.2,0,0,0-3.2,3.2V38.067a3.2,3.2,0,0,0,3.2,3.2h3.281a1,1,0,0,1,1,1v2.162l2.8-2.86a1,1,0,0,1,.715-.3H44.692a3.2,3.2,0,0,0,3.2-3.2V20.222a3.2,3.2,0,0,0-3.2-3.2Z\" fill=\"#fff\"/>\n </g>\n </g>\n</svg>\n";
|
|
49549
49469
|
|
|
49550
49470
|
const VERSION$4 = '0.0.1';
|
|
49551
|
-
const T$
|
|
49471
|
+
const T$7 = 'plugins.multicamera';
|
|
49552
49472
|
/**
|
|
49553
49473
|
* `PLUGIN` that adds support for loading multiple streams and switching between them using the media control UI.
|
|
49554
49474
|
* @beta
|
|
@@ -49694,7 +49614,7 @@ class MultiCamera extends UICorePlugin {
|
|
|
49694
49614
|
}
|
|
49695
49615
|
onCameraSelect(event) {
|
|
49696
49616
|
const value = event.currentTarget.dataset.multicameraSelectorSelect;
|
|
49697
|
-
trace(`${T$
|
|
49617
|
+
trace(`${T$7} onCameraSelect`, { value });
|
|
49698
49618
|
if (value !== undefined) {
|
|
49699
49619
|
this.changeById(parseInt(value, 10));
|
|
49700
49620
|
}
|
|
@@ -49820,13 +49740,13 @@ class MultiCamera extends UICorePlugin {
|
|
|
49820
49740
|
}
|
|
49821
49741
|
}
|
|
49822
49742
|
changeById(id) {
|
|
49823
|
-
trace(`${T$
|
|
49743
|
+
trace(`${T$7} changeById`, { id });
|
|
49824
49744
|
queueMicrotask(() => {
|
|
49825
49745
|
const playbackOptions = this.core.options.playback || {};
|
|
49826
49746
|
// TODO figure out what this does
|
|
49827
49747
|
playbackOptions.recycleVideo = Browser.isMobile;
|
|
49828
49748
|
this.currentCamera = this.findElementById(id) ?? null;
|
|
49829
|
-
trace(`${T$
|
|
49749
|
+
trace(`${T$7} changeById`, { id, currentCamera: this.currentCamera, multicamera: this.multicamera });
|
|
49830
49750
|
if (!this.currentCamera) {
|
|
49831
49751
|
return;
|
|
49832
49752
|
}
|
|
@@ -49843,7 +49763,7 @@ class MultiCamera extends UICorePlugin {
|
|
|
49843
49763
|
// TODO remove?
|
|
49844
49764
|
// for html5 playback:
|
|
49845
49765
|
this.options.dvrEnabled = this.currentCamera.dvr;
|
|
49846
|
-
trace(`${T$
|
|
49766
|
+
trace(`${T$7} changeById`, { currentCamera: this.currentCamera });
|
|
49847
49767
|
// TODO
|
|
49848
49768
|
this.core.configure({
|
|
49849
49769
|
playback: playbackOptions,
|
|
@@ -49901,16 +49821,16 @@ const pipIcon = "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"no
|
|
|
49901
49821
|
const buttonHtml$2 = "<button class=\"gplayer-lite-btn gcore-skin-button-color\">\n <%= pipIcon %>\n</button>\n";
|
|
49902
49822
|
|
|
49903
49823
|
const VERSION$3 = '0.0.1';
|
|
49904
|
-
const T$
|
|
49824
|
+
const T$6 = `plugins.pip`;
|
|
49905
49825
|
/**
|
|
49906
|
-
* `PLUGIN` that enables picture
|
|
49907
|
-
* @
|
|
49826
|
+
* `PLUGIN` that enables picture-in-picture mode.
|
|
49827
|
+
* @public
|
|
49908
49828
|
* @remarks
|
|
49909
49829
|
* Depends on:
|
|
49910
49830
|
*
|
|
49911
49831
|
* - {@link MediaControl}
|
|
49912
49832
|
*
|
|
49913
|
-
* It renders a button to toggle picture
|
|
49833
|
+
* It renders a button to toggle picture-in-picture mode in the media control UI.
|
|
49914
49834
|
*/
|
|
49915
49835
|
class PictureInPicture extends UICorePlugin {
|
|
49916
49836
|
/**
|
|
@@ -49959,7 +49879,7 @@ class PictureInPicture extends UICorePlugin {
|
|
|
49959
49879
|
});
|
|
49960
49880
|
}
|
|
49961
49881
|
isPiPSupported() {
|
|
49962
|
-
trace(`${T$
|
|
49882
|
+
trace(`${T$6} isPiPSupported`, {
|
|
49963
49883
|
pictureInPictureEnabled: !!document.pictureInPictureEnabled,
|
|
49964
49884
|
requestPictureInPicture: !!HTMLVideoElement.prototype.requestPictureInPicture,
|
|
49965
49885
|
});
|
|
@@ -49980,7 +49900,7 @@ class PictureInPicture extends UICorePlugin {
|
|
|
49980
49900
|
return this;
|
|
49981
49901
|
}
|
|
49982
49902
|
togglePictureInPicture() {
|
|
49983
|
-
trace(`${T$
|
|
49903
|
+
trace(`${T$6} togglePictureInPicture`);
|
|
49984
49904
|
if (this.videoElement !== document.pictureInPictureElement) {
|
|
49985
49905
|
this.requestPictureInPicture();
|
|
49986
49906
|
}
|
|
@@ -49989,13 +49909,13 @@ class PictureInPicture extends UICorePlugin {
|
|
|
49989
49909
|
}
|
|
49990
49910
|
}
|
|
49991
49911
|
requestPictureInPicture() {
|
|
49992
|
-
trace(`${T$
|
|
49912
|
+
trace(`${T$6} requestPictureInPicture`, {
|
|
49993
49913
|
videoElement: !!this.videoElement,
|
|
49994
49914
|
});
|
|
49995
49915
|
this.videoElement.requestPictureInPicture();
|
|
49996
49916
|
}
|
|
49997
49917
|
exitPictureInPicture() {
|
|
49998
|
-
trace(`${T$
|
|
49918
|
+
trace(`${T$6} exitPictureInPicture`);
|
|
49999
49919
|
document.exitPictureInPicture();
|
|
50000
49920
|
}
|
|
50001
49921
|
}
|
|
@@ -50022,7 +49942,7 @@ const DEFAULT_PLAYBACK_RATES = [
|
|
|
50022
49942
|
{ value: 2.0, label: '2x' },
|
|
50023
49943
|
];
|
|
50024
49944
|
const DEFAULT_PLAYBACK_RATE = 1;
|
|
50025
|
-
const T$
|
|
49945
|
+
const T$5 = 'plugins.playback_rate';
|
|
50026
49946
|
/**
|
|
50027
49947
|
* `PLUGIN` that allows changing the playback speed of the video.
|
|
50028
49948
|
* @beta
|
|
@@ -50108,7 +50028,7 @@ class PlaybackRate extends UICorePlugin {
|
|
|
50108
50028
|
this.listenTo(this.core, Events$1.CORE_ACTIVE_CONTAINER_CHANGED, this.onActiveContainerChange);
|
|
50109
50029
|
}
|
|
50110
50030
|
onCoreReady() {
|
|
50111
|
-
trace(`${T$
|
|
50031
|
+
trace(`${T$5} onCoreReady`);
|
|
50112
50032
|
const mediaControl = this.core.getPlugin('media_control');
|
|
50113
50033
|
assert(mediaControl, 'media_control plugin is required');
|
|
50114
50034
|
const gear = this.core.getPlugin('bottom_gear');
|
|
@@ -50117,7 +50037,7 @@ class PlaybackRate extends UICorePlugin {
|
|
|
50117
50037
|
this.listenTo(gear, GearEvents.RENDERED, this.onGearRendered);
|
|
50118
50038
|
}
|
|
50119
50039
|
onActiveContainerChange() {
|
|
50120
|
-
trace(`${T$
|
|
50040
|
+
trace(`${T$5} onActiveContainerChange`);
|
|
50121
50041
|
this.metadataLoaded = false;
|
|
50122
50042
|
this.listenTo(this.core.activePlayback, Events$1.PLAYBACK_STOP, this.onStop);
|
|
50123
50043
|
this.listenTo(this.core.activePlayback, Events$1.PLAYBACK_PLAY, this.onPlay);
|
|
@@ -50125,15 +50045,15 @@ class PlaybackRate extends UICorePlugin {
|
|
|
50125
50045
|
this.listenTo(this.core.activeContainer, Events$1.CONTAINER_LOADEDMETADATA, this.onMetaDataLoaded);
|
|
50126
50046
|
}
|
|
50127
50047
|
onMediaControlRendered() {
|
|
50128
|
-
trace(`${T$
|
|
50048
|
+
trace(`${T$5} onMediaControlRendered`);
|
|
50129
50049
|
this.render();
|
|
50130
50050
|
}
|
|
50131
50051
|
onGearRendered() {
|
|
50132
|
-
trace(`${T$
|
|
50052
|
+
trace(`${T$5} onGearRendered`);
|
|
50133
50053
|
this.mount();
|
|
50134
50054
|
}
|
|
50135
50055
|
mount() {
|
|
50136
|
-
trace(`${T$
|
|
50056
|
+
trace(`${T$5} mount`, {
|
|
50137
50057
|
shouldMount: this.shouldMount(),
|
|
50138
50058
|
});
|
|
50139
50059
|
if (!this.shouldMount()) {
|
|
@@ -50150,7 +50070,7 @@ class PlaybackRate extends UICorePlugin {
|
|
|
50150
50070
|
})));
|
|
50151
50071
|
}
|
|
50152
50072
|
onMetaDataLoaded() {
|
|
50153
|
-
trace(`${T$
|
|
50073
|
+
trace(`${T$5} onMetaDataLoaded`, {
|
|
50154
50074
|
playbackType: this.core.activePlayback.getPlaybackType(),
|
|
50155
50075
|
dvrEnabled: this.core.activePlayback.dvrEnabled,
|
|
50156
50076
|
});
|
|
@@ -50172,17 +50092,13 @@ class PlaybackRate extends UICorePlugin {
|
|
|
50172
50092
|
this.core.activePlayback?.setPlaybackRate(this.selectedRate);
|
|
50173
50093
|
}
|
|
50174
50094
|
else {
|
|
50175
|
-
trace(`${T$
|
|
50095
|
+
trace(`${T$5} onPlaybackRateChange not steering to the selected rate, it is seemingly a catchup algorithm working`, {
|
|
50176
50096
|
playbackRate,
|
|
50177
50097
|
selectedRate: this.selectedRate,
|
|
50178
50098
|
});
|
|
50179
50099
|
}
|
|
50180
50100
|
}
|
|
50181
50101
|
shouldMount() {
|
|
50182
|
-
trace(`${T$a} shouldMount`, {
|
|
50183
|
-
playbackType: this.core.activePlayback?.getPlaybackType(),
|
|
50184
|
-
dvrEnabled: this.core.activePlayback?.dvrEnabled,
|
|
50185
|
-
});
|
|
50186
50102
|
if (!this.core.activePlayback || !this.metadataLoaded) {
|
|
50187
50103
|
return false;
|
|
50188
50104
|
}
|
|
@@ -50196,9 +50112,6 @@ class PlaybackRate extends UICorePlugin {
|
|
|
50196
50112
|
* @internal
|
|
50197
50113
|
*/
|
|
50198
50114
|
render() {
|
|
50199
|
-
trace(`${T$a} render`, {
|
|
50200
|
-
shouldMount: this.shouldMount(),
|
|
50201
|
-
});
|
|
50202
50115
|
this.$el.html(PlaybackRate.listTemplate({
|
|
50203
50116
|
arrowLeftIcon,
|
|
50204
50117
|
checkIcon,
|
|
@@ -50242,13 +50155,13 @@ class PlaybackRate extends UICorePlugin {
|
|
|
50242
50155
|
}
|
|
50243
50156
|
}
|
|
50244
50157
|
syncRate() {
|
|
50245
|
-
trace(`${T$
|
|
50158
|
+
trace(`${T$5} syncRate`, {
|
|
50246
50159
|
selectedRate: this.selectedRate,
|
|
50247
50160
|
});
|
|
50248
50161
|
this.core.activePlayback?.setPlaybackRate(this.selectedRate);
|
|
50249
50162
|
}
|
|
50250
50163
|
resetPlaybackRate() {
|
|
50251
|
-
trace(`${T$
|
|
50164
|
+
trace(`${T$5} resetPlaybackRate`, {
|
|
50252
50165
|
selectedRate: this.selectedRate,
|
|
50253
50166
|
});
|
|
50254
50167
|
this.core.activePlayback?.setPlaybackRate(DEFAULT_PLAYBACK_RATE);
|
|
@@ -50283,7 +50196,7 @@ class PlaybackRate extends UICorePlugin {
|
|
|
50283
50196
|
?.label || `x${rate}`);
|
|
50284
50197
|
}
|
|
50285
50198
|
highlightCurrentRate() {
|
|
50286
|
-
trace(`${T$
|
|
50199
|
+
trace(`${T$5} highlightCurrentRate`, {
|
|
50287
50200
|
selectedRate: this.selectedRate,
|
|
50288
50201
|
});
|
|
50289
50202
|
this.allRateElements().removeClass('current');
|
|
@@ -50294,9 +50207,6 @@ class PlaybackRate extends UICorePlugin {
|
|
|
50294
50207
|
.addClass('gcore-skin-active');
|
|
50295
50208
|
}
|
|
50296
50209
|
updateGearOptionLabel() {
|
|
50297
|
-
trace(`${T$a} updateGearOptionLabel`, {
|
|
50298
|
-
selectedRate: this.selectedRate,
|
|
50299
|
-
});
|
|
50300
50210
|
this.mount();
|
|
50301
50211
|
}
|
|
50302
50212
|
}
|
|
@@ -50306,10 +50216,10 @@ const posterHTML = "<div class=\"play-wrapper\" id=\"gplayer-poster\">\n <div
|
|
|
50306
50216
|
//Copyright 2014 Globo.com Player authors. All rights reserved.
|
|
50307
50217
|
// Use of this source code is governed by a BSD-style
|
|
50308
50218
|
// license that can be found in the LICENSE file.
|
|
50309
|
-
const T
|
|
50219
|
+
// const T = 'plugins.poster'
|
|
50310
50220
|
/**
|
|
50311
50221
|
* `PLUGIN` that displays a poster image in the background and a big play button on top when playback is stopped
|
|
50312
|
-
* @
|
|
50222
|
+
* @public
|
|
50313
50223
|
* @remarks
|
|
50314
50224
|
* When the playback is stopped or not yet started, the media control UI is disabled and hidden.
|
|
50315
50225
|
* Media control gets activated once the metadata is loaded after playback is initiated.
|
|
@@ -50397,7 +50307,6 @@ class Poster extends UIContainerPlugin {
|
|
|
50397
50307
|
* Reenables earlier disabled plugin
|
|
50398
50308
|
*/
|
|
50399
50309
|
enable() {
|
|
50400
|
-
trace(`${T$9} enable`);
|
|
50401
50310
|
super.enable();
|
|
50402
50311
|
this.playing = this.container.playback.isPlaying();
|
|
50403
50312
|
this.update();
|
|
@@ -50406,16 +50315,11 @@ class Poster extends UIContainerPlugin {
|
|
|
50406
50315
|
* Disables the plugin, unmounting it from the DOM
|
|
50407
50316
|
*/
|
|
50408
50317
|
disable() {
|
|
50409
|
-
trace(`${T$9} disable`);
|
|
50410
50318
|
this.playing = false;
|
|
50411
50319
|
this.playRequested = false;
|
|
50412
50320
|
super.disable();
|
|
50413
50321
|
}
|
|
50414
50322
|
onError(error) {
|
|
50415
|
-
trace(`${T$9} onError`, {
|
|
50416
|
-
error,
|
|
50417
|
-
enabled: this.enabled,
|
|
50418
|
-
});
|
|
50419
50323
|
if (this.hasFatalError) {
|
|
50420
50324
|
return;
|
|
50421
50325
|
}
|
|
@@ -50423,24 +50327,20 @@ class Poster extends UIContainerPlugin {
|
|
|
50423
50327
|
// this.hasFatalError is reset on container recreate
|
|
50424
50328
|
}
|
|
50425
50329
|
onPlay() {
|
|
50426
|
-
trace(`${T$9} onPlay`);
|
|
50427
50330
|
this.playing = true;
|
|
50428
50331
|
this.playRequested = false;
|
|
50429
50332
|
this.update();
|
|
50430
50333
|
}
|
|
50431
50334
|
onPlayIntent() {
|
|
50432
|
-
trace(`${T$9} onPlayIntent`);
|
|
50433
50335
|
this.playRequested = true;
|
|
50434
50336
|
this.update();
|
|
50435
50337
|
}
|
|
50436
50338
|
onStop() {
|
|
50437
|
-
trace(`${T$9} onStop`);
|
|
50438
50339
|
this.playing = false;
|
|
50439
50340
|
this.playRequested = false;
|
|
50440
50341
|
this.update();
|
|
50441
50342
|
}
|
|
50442
50343
|
updatePlayButton() {
|
|
50443
|
-
trace(`${T$9} updatePlayButton`);
|
|
50444
50344
|
const show = !this.isNoOp &&
|
|
50445
50345
|
!(this.options.chromeless && !this.options.allowUserInteraction) &&
|
|
50446
50346
|
!this.playRequested &&
|
|
@@ -50456,18 +50356,15 @@ class Poster extends UIContainerPlugin {
|
|
|
50456
50356
|
}
|
|
50457
50357
|
}
|
|
50458
50358
|
showPlayButton() {
|
|
50459
|
-
trace(`${T$9} showPlayButton`);
|
|
50460
50359
|
this.$el.find('#poster-play').show();
|
|
50461
50360
|
this.$el.addClass('clickable');
|
|
50462
50361
|
this.container.$el.addClass('container-with-poster-clickable');
|
|
50463
50362
|
}
|
|
50464
50363
|
hidePlayButton() {
|
|
50465
|
-
trace(`${T$9} hidePlayButton`);
|
|
50466
50364
|
this.$el.find('#poster-play').hide();
|
|
50467
50365
|
this.$el.removeClass('clickable');
|
|
50468
50366
|
}
|
|
50469
50367
|
clicked(e) {
|
|
50470
|
-
trace(`${T$9} clicked`);
|
|
50471
50368
|
e.preventDefault();
|
|
50472
50369
|
e.stopPropagation();
|
|
50473
50370
|
if (this.options.chromeless && !this.options.allowUserInteraction) {
|
|
@@ -50485,12 +50382,10 @@ class Poster extends UIContainerPlugin {
|
|
|
50485
50382
|
return !this.container.playback.isAudioOnly;
|
|
50486
50383
|
}
|
|
50487
50384
|
update() {
|
|
50488
|
-
trace(`${T$9} update`);
|
|
50489
50385
|
this.updatePlayButton();
|
|
50490
50386
|
this.updatePoster();
|
|
50491
50387
|
}
|
|
50492
50388
|
updatePoster() {
|
|
50493
|
-
trace(`${T$9} updatePoster`);
|
|
50494
50389
|
if (!this.playing) {
|
|
50495
50390
|
this.showPoster();
|
|
50496
50391
|
}
|
|
@@ -50503,7 +50398,6 @@ class Poster extends UIContainerPlugin {
|
|
|
50503
50398
|
this.$el.show();
|
|
50504
50399
|
}
|
|
50505
50400
|
hidePoster() {
|
|
50506
|
-
trace(`${T$9} hidePoster`);
|
|
50507
50401
|
if (!this.options.disableMediaControl) {
|
|
50508
50402
|
this.container.enableMediaControl();
|
|
50509
50403
|
}
|
|
@@ -50554,11 +50448,11 @@ const listHtml = "<button class=\"gplayer-lite-btn go-back gcore-skin-text-color
|
|
|
50554
50448
|
|
|
50555
50449
|
const hdIcon = "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M14.9562 8.22232H13.9961V15.1873H14.9562C15.8914 15.1873 16.766 14.8253 17.4195 14.1676C18.0786 13.5037 18.4415 12.6281 18.4415 11.7026C18.4415 9.7837 16.8781 8.22253 14.9561 8.22253L14.9562 8.22232Z\"\n fill=\"#C9C9C9\"/>\n <path\n d=\"M22.0801 4H1.91994C0.859222 4 0 4.86406 0 5.91994V17.4878C0 18.5437 0.859222 19.4078 1.91994 19.4078H22.0801C23.1408 19.4078 24 18.5437 24 17.4878V5.91994C24 4.86406 23.1408 4 22.0801 4ZM10.3975 15.3473C10.3975 15.6124 10.1827 15.8272 9.91754 15.8272C9.65216 15.8272 9.43761 15.6122 9.43761 15.3473V12.0239H5.55956V15.3473C5.55956 15.6124 5.34481 15.8272 5.07963 15.8272C4.81425 15.8272 4.5997 15.6122 4.5997 15.3473L4.59949 7.74042C4.59949 7.47524 4.81425 7.26049 5.07943 7.26049C5.34481 7.26049 5.55936 7.47544 5.55936 7.74042V11.0636H9.43741V7.74042C9.43741 7.47524 9.65216 7.26049 9.91734 7.26049C10.1827 7.26049 10.3973 7.47544 10.3973 7.74042L10.3975 15.3473ZM18.1005 14.8438C17.2652 15.6844 16.1486 16.1472 14.9561 16.1472H13.5161C13.2507 16.1472 13.0361 15.9323 13.0361 15.6673V7.74263C13.0361 7.47745 13.2509 7.26269 13.5161 7.26269H14.9561C17.4072 7.26269 19.4013 9.25438 19.4013 11.7027C19.4013 12.8835 18.9392 13.9991 18.1005 14.844V14.8438Z\"\n fill=\"#C9C9C9\"/>\n</svg>\n";
|
|
50556
50450
|
|
|
50557
|
-
const T
|
|
50451
|
+
// const T = 'plugins.quality_levels'
|
|
50558
50452
|
const VERSION$2 = 'v2.22.5';
|
|
50559
50453
|
/**
|
|
50560
50454
|
* `PLUGIN` that provides a UI to select the desired quality level of the playback.
|
|
50561
|
-
* @
|
|
50455
|
+
* @public
|
|
50562
50456
|
*
|
|
50563
50457
|
* @remarks
|
|
50564
50458
|
* Depends on:
|
|
@@ -50631,14 +50525,12 @@ class QualityLevels extends UICorePlugin {
|
|
|
50631
50525
|
this.listenTo(this.core, Events$1.CORE_ACTIVE_CONTAINER_CHANGED, this.onActiveContainerChange);
|
|
50632
50526
|
}
|
|
50633
50527
|
onCoreReady() {
|
|
50634
|
-
trace(`${T$8} onCoreReady`);
|
|
50635
50528
|
const gear = this.core.getPlugin('bottom_gear');
|
|
50636
50529
|
assert(gear, 'bottom_gear plugin is required');
|
|
50637
50530
|
this.currentText = this.core.i18n.t('auto');
|
|
50638
50531
|
this.listenTo(gear, GearEvents.RENDERED, this.onGearRendered);
|
|
50639
50532
|
}
|
|
50640
50533
|
onGearRendered() {
|
|
50641
|
-
trace(`${T$8} onGearRendered`);
|
|
50642
50534
|
this.render();
|
|
50643
50535
|
}
|
|
50644
50536
|
onActiveContainerChange() {
|
|
@@ -50667,7 +50559,6 @@ class QualityLevels extends UICorePlugin {
|
|
|
50667
50559
|
}
|
|
50668
50560
|
}
|
|
50669
50561
|
onStop() {
|
|
50670
|
-
trace(`${T$8} onStop`);
|
|
50671
50562
|
this.listenToOnce(this.core.activePlayback, Events$1.PLAYBACK_PLAY, () => {
|
|
50672
50563
|
if (this.core.activePlayback.getPlaybackType() === 'live') {
|
|
50673
50564
|
if (this.selectedLevelId !== -1) {
|
|
@@ -50763,7 +50654,6 @@ class QualityLevels extends UICorePlugin {
|
|
|
50763
50654
|
return false;
|
|
50764
50655
|
}
|
|
50765
50656
|
goBack() {
|
|
50766
|
-
trace(`${T$8} goBack`);
|
|
50767
50657
|
this.core.getPlugin('bottom_gear').refresh();
|
|
50768
50658
|
}
|
|
50769
50659
|
setLevel(index) {
|
|
@@ -50798,13 +50688,9 @@ class QualityLevels extends UICorePlugin {
|
|
|
50798
50688
|
return this.levelLabels[index] ?? formatLevelLabel(this.levels[index]);
|
|
50799
50689
|
}
|
|
50800
50690
|
onBitrate(info) {
|
|
50801
|
-
trace(`${T$8} updateCurrentLevel`, { info });
|
|
50802
50691
|
this.highlightCurrentLevel();
|
|
50803
50692
|
}
|
|
50804
50693
|
highlightCurrentLevel() {
|
|
50805
|
-
trace(`${T$8} highlightCurrentLevel`, {
|
|
50806
|
-
selectedLevelId: this.selectedLevelId,
|
|
50807
|
-
});
|
|
50808
50694
|
this.allLevelElements()
|
|
50809
50695
|
.removeClass('current')
|
|
50810
50696
|
.find('a')
|
|
@@ -50828,7 +50714,7 @@ const seekTimeHTML = "<span id=\"mc-seek-time\" class=\"seek-time__pos\"></span>
|
|
|
50828
50714
|
// Use of this source code is governed by a BSD-style
|
|
50829
50715
|
// license that can be found at https://github.com/clappr/clappr-plugins/blob/master/LICENSE
|
|
50830
50716
|
const { formatTime } = Utils;
|
|
50831
|
-
const T
|
|
50717
|
+
// const T = 'plugins.seek_time'
|
|
50832
50718
|
/**
|
|
50833
50719
|
* `PLUGIN` that adds a seek time indicator when the mouse pointer is over the seek bar.
|
|
50834
50720
|
* @beta
|
|
@@ -50887,13 +50773,9 @@ class SeekTime extends UICorePlugin {
|
|
|
50887
50773
|
showTime(event) {
|
|
50888
50774
|
this.hoveringOverSeekBar = true;
|
|
50889
50775
|
this.calculateHoverPosition(event);
|
|
50890
|
-
trace(`${T$7} showTime`, {
|
|
50891
|
-
hoverPosition: this.hoverPosition,
|
|
50892
|
-
});
|
|
50893
50776
|
this.update();
|
|
50894
50777
|
}
|
|
50895
50778
|
hideTime() {
|
|
50896
|
-
trace(`${T$7} hideTime`);
|
|
50897
50779
|
this.hoveringOverSeekBar = false;
|
|
50898
50780
|
this.update();
|
|
50899
50781
|
}
|
|
@@ -51100,10 +50982,10 @@ class Share extends UICorePlugin {
|
|
|
51100
50982
|
|
|
51101
50983
|
const pluginHtml$1 = "<div class=\"skip-container\" id=\"mc-skip-container\">\n <div class=\"skip-item\" id=\"mc-skip-left\">\n </div>\n <div class=\"skip-item\" id=\"mc-skip-mid\">\n </div>\n <div class=\"skip-item\" id=\"mc-skip-right\">\n </div>\n</div>\n";
|
|
51102
50984
|
|
|
51103
|
-
const T
|
|
50985
|
+
// const T = 'plugins.skip_time'
|
|
51104
50986
|
/**
|
|
51105
50987
|
* `PLUGIN` that allows skipping time by tapping on the left or right side of the video.
|
|
51106
|
-
* @
|
|
50988
|
+
* @public
|
|
51107
50989
|
*/
|
|
51108
50990
|
class SkipTime extends UICorePlugin {
|
|
51109
50991
|
get name() {
|
|
@@ -51147,13 +51029,9 @@ class SkipTime extends UICorePlugin {
|
|
|
51147
51029
|
this.mount();
|
|
51148
51030
|
}
|
|
51149
51031
|
setBack() {
|
|
51150
|
-
trace(`${T$6} setBack`);
|
|
51151
51032
|
this.position = 'left';
|
|
51152
51033
|
}
|
|
51153
51034
|
handleRewindClicks() {
|
|
51154
|
-
trace(`${T$6} handleRewindClicks`, {
|
|
51155
|
-
position: this.position,
|
|
51156
|
-
});
|
|
51157
51035
|
if (this.core.getPlaybackType() === Playback.LIVE &&
|
|
51158
51036
|
!this.container.isDvrEnabled()) {
|
|
51159
51037
|
this.toggleFullscreen();
|
|
@@ -51162,9 +51040,6 @@ class SkipTime extends UICorePlugin {
|
|
|
51162
51040
|
this.handleSkip();
|
|
51163
51041
|
}
|
|
51164
51042
|
handleSkip() {
|
|
51165
|
-
trace(`${T$6} handleSkip`, {
|
|
51166
|
-
position: this.position,
|
|
51167
|
-
});
|
|
51168
51043
|
if (Browser.isMobile) {
|
|
51169
51044
|
if (this.position === 'left') {
|
|
51170
51045
|
const seekPos = this.container.getCurrentTime() - 10;
|
|
@@ -51186,15 +51061,12 @@ class SkipTime extends UICorePlugin {
|
|
|
51186
51061
|
}
|
|
51187
51062
|
}
|
|
51188
51063
|
setMidClick() {
|
|
51189
|
-
trace(`${T$6} setMidClick`);
|
|
51190
51064
|
this.position = 'mid';
|
|
51191
51065
|
}
|
|
51192
51066
|
setForward() {
|
|
51193
|
-
trace(`${T$6} setForward`);
|
|
51194
51067
|
this.position = 'right';
|
|
51195
51068
|
}
|
|
51196
51069
|
toggleFullscreen() {
|
|
51197
|
-
trace(`${T$6} toggleFullscreen`);
|
|
51198
51070
|
this.trigger(Events$1.MEDIACONTROL_FULLSCREEN, this.name);
|
|
51199
51071
|
this.container.fullscreen();
|
|
51200
51072
|
this.core.toggleFullscreen();
|
|
@@ -51203,12 +51075,10 @@ class SkipTime extends UICorePlugin {
|
|
|
51203
51075
|
* @internal
|
|
51204
51076
|
*/
|
|
51205
51077
|
render() {
|
|
51206
|
-
trace(`${T$6} render`);
|
|
51207
51078
|
this.$el.html(SkipTime.template());
|
|
51208
51079
|
return this;
|
|
51209
51080
|
}
|
|
51210
51081
|
mount() {
|
|
51211
|
-
trace(`${T$6} mount`);
|
|
51212
51082
|
this.core.activeContainer.$el.append(this.el);
|
|
51213
51083
|
}
|
|
51214
51084
|
}
|
|
@@ -51220,7 +51090,7 @@ const spinnerHTML = "<div data-bounce1></div>\n<div data-bounce2></div>\n<div da
|
|
|
51220
51090
|
// Use of this source code is governed by a BSD-style
|
|
51221
51091
|
// license that can be found in the LICENSE file.
|
|
51222
51092
|
// https://github.com/clappr/clappr-plugins/blob/ffaa9d27005fa5a8a7c243ffc47eb5655b84b371/LICENSE
|
|
51223
|
-
const T
|
|
51093
|
+
// const T = 'plugins.spinner'
|
|
51224
51094
|
/**
|
|
51225
51095
|
* Custom events emitted by the plugin
|
|
51226
51096
|
* @public
|
|
@@ -51290,22 +51160,13 @@ class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
51290
51160
|
this.hasBuffering = false;
|
|
51291
51161
|
}
|
|
51292
51162
|
onPlay() {
|
|
51293
|
-
trace(`${T$5} onPlay`);
|
|
51294
51163
|
this._hide();
|
|
51295
51164
|
}
|
|
51296
51165
|
onStop() {
|
|
51297
|
-
trace(`${T$5} onStop`, {
|
|
51298
|
-
hasFatalError: this.hasFatalError,
|
|
51299
|
-
});
|
|
51300
51166
|
this._hide();
|
|
51301
51167
|
}
|
|
51302
51168
|
onError(e) {
|
|
51303
51169
|
this.hasFatalError = e.code === PlaybackErrorCode.MediaSourceUnavailable;
|
|
51304
|
-
trace(`${T$5} onError`, {
|
|
51305
|
-
e,
|
|
51306
|
-
hasFatalError: this.hasFatalError,
|
|
51307
|
-
error: e.code,
|
|
51308
|
-
});
|
|
51309
51170
|
this._hide();
|
|
51310
51171
|
}
|
|
51311
51172
|
/**
|
|
@@ -51316,7 +51177,6 @@ class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
51316
51177
|
* @param delay - The delay in milliseconds before the spinner is shown.
|
|
51317
51178
|
*/
|
|
51318
51179
|
show(delay = 300) {
|
|
51319
|
-
trace(`${T$5} show`);
|
|
51320
51180
|
this.userShown = true;
|
|
51321
51181
|
this._show(delay);
|
|
51322
51182
|
}
|
|
@@ -51336,9 +51196,6 @@ class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
51336
51196
|
}
|
|
51337
51197
|
}
|
|
51338
51198
|
_hide() {
|
|
51339
|
-
trace(`${T$5} _hide`, {
|
|
51340
|
-
userShown: this.userShown,
|
|
51341
|
-
});
|
|
51342
51199
|
if (this.userShown) {
|
|
51343
51200
|
return;
|
|
51344
51201
|
}
|
|
@@ -51353,9 +51210,6 @@ class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
51353
51210
|
* @internal
|
|
51354
51211
|
*/
|
|
51355
51212
|
render() {
|
|
51356
|
-
trace(`${T$5} render`, {
|
|
51357
|
-
buffering: this.container.buffering,
|
|
51358
|
-
});
|
|
51359
51213
|
this.$el.html(this.template());
|
|
51360
51214
|
this.el.firstElementChild?.addEventListener('animationiteration', () => {
|
|
51361
51215
|
this.trigger(SpinnerEvents.SYNC);
|
|
@@ -51514,14 +51368,9 @@ class SourceController extends CorePlugin {
|
|
|
51514
51368
|
this.listenTo(this.core, Events$1.CORE_ACTIVE_CONTAINER_CHANGED, this.onActiveContainerChanged);
|
|
51515
51369
|
}
|
|
51516
51370
|
onCoreReady() {
|
|
51517
|
-
trace(`${T$4} onCoreReady`);
|
|
51518
51371
|
this.core.getPlugin('error_screen')?.disable(); // TODO test
|
|
51519
51372
|
}
|
|
51520
51373
|
onActiveContainerChanged() {
|
|
51521
|
-
trace(`${T$4} onActiveContainerChanged`, {
|
|
51522
|
-
retrying: this.active,
|
|
51523
|
-
currentSource: this.sourcesList[this.currentSourceIndex],
|
|
51524
|
-
});
|
|
51525
51374
|
const spinner = this.core.activeContainer?.getPlugin('spinner');
|
|
51526
51375
|
if (spinner) {
|
|
51527
51376
|
this.sync = (cb) => {
|
|
@@ -51645,7 +51494,7 @@ const LOCAL_STORAGE_CC_ID = 'gplayer.plugins.cc.selected';
|
|
|
51645
51494
|
const T$3 = 'plugins.cc';
|
|
51646
51495
|
/**
|
|
51647
51496
|
* `PLUGIN` that provides a UI to select the subtitles when available.
|
|
51648
|
-
* @
|
|
51497
|
+
* @public
|
|
51649
51498
|
*
|
|
51650
51499
|
* @remarks
|
|
51651
51500
|
* The plugin is activated when closed captions tracks are detected in the media source.
|
|
@@ -52693,7 +52542,7 @@ class Thumbnails extends UICorePlugin {
|
|
|
52693
52542
|
|
|
52694
52543
|
/**
|
|
52695
52544
|
* Events emitted by the VolumeFade plugin.
|
|
52696
|
-
* @
|
|
52545
|
+
* @public
|
|
52697
52546
|
*/
|
|
52698
52547
|
var VolumeFadeEvents;
|
|
52699
52548
|
(function (VolumeFadeEvents) {
|