@gcorevideo/player 2.25.7 → 2.25.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/bottom-gear/gear-sub-menu.scss +4 -9
- package/assets/media-control/container.scss +0 -13
- package/assets/media-control/media-control.scss +14 -12
- package/assets/media-control/width270.scss +3 -0
- package/assets/media-control/width370.scss +4 -0
- package/assets/multi-camera/style.scss +0 -5
- package/assets/subtitles/combobox.ejs +27 -6
- package/assets/subtitles/string.ejs +1 -1
- package/assets/subtitles/style.scss +16 -69
- package/dist/core.js +1 -1
- package/dist/index.css +1036 -1090
- package/dist/index.embed.js +139 -101
- package/dist/index.js +80 -46
- package/lib/plugins/bottom-gear/BottomGear.d.ts +1 -1
- package/lib/plugins/bottom-gear/BottomGear.d.ts.map +1 -1
- package/lib/plugins/bottom-gear/BottomGear.js +3 -4
- package/lib/plugins/media-control/MediaControl.d.ts +4 -0
- package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
- package/lib/plugins/media-control/MediaControl.js +7 -0
- package/lib/plugins/subtitles/ClosedCaptions.d.ts +8 -5
- package/lib/plugins/subtitles/ClosedCaptions.d.ts.map +1 -1
- package/lib/plugins/subtitles/ClosedCaptions.js +67 -38
- package/lib/testUtils.d.ts.map +1 -1
- package/lib/testUtils.js +2 -0
- package/package.json +1 -1
- package/src/plugins/bottom-gear/BottomGear.ts +3 -4
- package/src/plugins/bottom-gear/__tests__/BottomGear.test.ts +1 -1
- package/src/plugins/media-control/MediaControl.ts +10 -0
- package/src/plugins/subtitles/ClosedCaptions.ts +73 -39
- package/src/plugins/subtitles/__tests__/ClosedCaptions.test.ts +220 -35
- package/src/plugins/subtitles/__tests__/__snapshots__/ClosedCaptions.test.ts.snap +8 -19
- package/src/testUtils.ts +2 -0
- package/tsconfig.tsbuildinfo +1 -1
package/dist/index.embed.js
CHANGED
|
@@ -12524,7 +12524,7 @@ var PlaybackEvents;
|
|
|
12524
12524
|
// https://github.com/clappr/clappr/blob/8752995ea439321ac7ca3cd35e8c64de7a3c3d17/LICENSE
|
|
12525
12525
|
const AUTO$1 = -1;
|
|
12526
12526
|
const { now: now$2 } = Utils;
|
|
12527
|
-
const T$
|
|
12527
|
+
const T$d = 'playback.dash';
|
|
12528
12528
|
class DashPlayback extends BasePlayback {
|
|
12529
12529
|
_levels = null;
|
|
12530
12530
|
_currentLevel = null;
|
|
@@ -12873,7 +12873,7 @@ class DashPlayback extends BasePlayback {
|
|
|
12873
12873
|
if (!this._dash) {
|
|
12874
12874
|
return false;
|
|
12875
12875
|
}
|
|
12876
|
-
trace(`${T$
|
|
12876
|
+
trace(`${T$d} get.dvrEnabled`, {
|
|
12877
12877
|
dvrWindowSize: this._dash?.getDVRWindowSize(),
|
|
12878
12878
|
minDvrSize: this._minDvrSize,
|
|
12879
12879
|
playbackType: this.getPlaybackType(),
|
|
@@ -12895,7 +12895,7 @@ class DashPlayback extends BasePlayback {
|
|
|
12895
12895
|
this.trigger(Events$1.PLAYBACK_PROGRESS, progress, {});
|
|
12896
12896
|
}
|
|
12897
12897
|
play() {
|
|
12898
|
-
trace(`${T$
|
|
12898
|
+
trace(`${T$d} play`, { dash: !!this._dash });
|
|
12899
12899
|
!this._dash && this._setup();
|
|
12900
12900
|
super.play();
|
|
12901
12901
|
this._startTimeUpdateTimer();
|
|
@@ -41688,7 +41688,7 @@ const AUTO = -1;
|
|
|
41688
41688
|
const DEFAULT_RECOVER_ATTEMPTS = 16;
|
|
41689
41689
|
Events$1.register('PLAYBACK_FRAGMENT_CHANGED');
|
|
41690
41690
|
Events$1.register('PLAYBACK_FRAGMENT_PARSING_METADATA');
|
|
41691
|
-
const T$
|
|
41691
|
+
const T$c = 'playback.hls';
|
|
41692
41692
|
class HlsPlayback extends BasePlayback {
|
|
41693
41693
|
_ccIsSetup = false;
|
|
41694
41694
|
_ccTracksUpdated = false;
|
|
@@ -42012,7 +42012,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
42012
42012
|
}
|
|
42013
42013
|
else {
|
|
42014
42014
|
Log.error('hlsjs: failed to recover', { evt, data });
|
|
42015
|
-
trace(`${T$
|
|
42015
|
+
trace(`${T$c} _recover failed to recover`, {
|
|
42016
42016
|
type: data.type,
|
|
42017
42017
|
details: data.details,
|
|
42018
42018
|
});
|
|
@@ -42098,7 +42098,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
42098
42098
|
this.trigger(Events$1.PLAYBACK_SETTINGSUPDATE);
|
|
42099
42099
|
}
|
|
42100
42100
|
_onHLSJSError(evt, data) {
|
|
42101
|
-
trace(`${T$
|
|
42101
|
+
trace(`${T$c} _onHLSJSError`, {
|
|
42102
42102
|
fatal: data.fatal,
|
|
42103
42103
|
type: data.type,
|
|
42104
42104
|
details: data.details,
|
|
@@ -42146,7 +42146,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
42146
42146
|
evt,
|
|
42147
42147
|
data,
|
|
42148
42148
|
});
|
|
42149
|
-
trace(`${T$
|
|
42149
|
+
trace(`${T$c} _onHLSJSError trying to recover from network error`, {
|
|
42150
42150
|
details: data.details,
|
|
42151
42151
|
});
|
|
42152
42152
|
error.level = PlayerError.Levels.WARN;
|
|
@@ -42159,7 +42159,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
42159
42159
|
evt,
|
|
42160
42160
|
data,
|
|
42161
42161
|
});
|
|
42162
|
-
trace(`${T$
|
|
42162
|
+
trace(`${T$c} _onHLSJSError trying to recover from media error`, {
|
|
42163
42163
|
details: data.details,
|
|
42164
42164
|
});
|
|
42165
42165
|
error.level = PlayerError.Levels.WARN;
|
|
@@ -42189,7 +42189,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
42189
42189
|
return;
|
|
42190
42190
|
}
|
|
42191
42191
|
Log.warn('hlsjs: non-fatal error occurred', { evt, data });
|
|
42192
|
-
trace(`${T$
|
|
42192
|
+
trace(`${T$c} _onHLSJSError non-fatal error occurred`, {
|
|
42193
42193
|
type: data.type,
|
|
42194
42194
|
details: data.details,
|
|
42195
42195
|
});
|
|
@@ -42546,7 +42546,7 @@ function toClapprTrack(t) {
|
|
|
42546
42546
|
};
|
|
42547
42547
|
}
|
|
42548
42548
|
|
|
42549
|
-
const T$
|
|
42549
|
+
const T$b = 'playback.html5_video';
|
|
42550
42550
|
const STALL_TIMEOUT = 15000;
|
|
42551
42551
|
class HTML5Video extends BasePlayback {
|
|
42552
42552
|
stallTimerId = null;
|
|
@@ -42554,7 +42554,7 @@ class HTML5Video extends BasePlayback {
|
|
|
42554
42554
|
* @internal
|
|
42555
42555
|
*/
|
|
42556
42556
|
createError(errorData, options) {
|
|
42557
|
-
trace(`${T$
|
|
42557
|
+
trace(`${T$b} createError`, {
|
|
42558
42558
|
errorData: { ...errorData },
|
|
42559
42559
|
});
|
|
42560
42560
|
const i18n = this.i18n ||
|
|
@@ -42580,12 +42580,12 @@ class HTML5Video extends BasePlayback {
|
|
|
42580
42580
|
super._onEnded();
|
|
42581
42581
|
}
|
|
42582
42582
|
_handleBufferingEvents() {
|
|
42583
|
-
trace(`${T$
|
|
42583
|
+
trace(`${T$b} _handleBufferingEvents`, {
|
|
42584
42584
|
networkState: this.el.networkState,
|
|
42585
42585
|
});
|
|
42586
42586
|
if (!this.stallTimerId) {
|
|
42587
42587
|
this.stallTimerId = setTimeout(() => {
|
|
42588
|
-
trace(`${T$
|
|
42588
|
+
trace(`${T$b} _handleBufferingEvents stall timeout`, {
|
|
42589
42589
|
buffering: this.buffering,
|
|
42590
42590
|
ended: this.ended,
|
|
42591
42591
|
});
|
|
@@ -42671,7 +42671,7 @@ function registerPlaybacks() {
|
|
|
42671
42671
|
Loader.registerPlayback(DashPlayback);
|
|
42672
42672
|
}
|
|
42673
42673
|
|
|
42674
|
-
const T$
|
|
42674
|
+
const T$a = 'gplayer';
|
|
42675
42675
|
const DEFAULT_OPTIONS = {
|
|
42676
42676
|
autoPlay: false,
|
|
42677
42677
|
debug: 'none',
|
|
@@ -42759,7 +42759,7 @@ class Player {
|
|
|
42759
42759
|
* ```
|
|
42760
42760
|
*/
|
|
42761
42761
|
attachTo(playerElement) {
|
|
42762
|
-
trace(`${T$
|
|
42762
|
+
trace(`${T$a} attachTo`, {
|
|
42763
42763
|
player: !!this.player,
|
|
42764
42764
|
});
|
|
42765
42765
|
assert.ok(!this.player, 'Player already initialized');
|
|
@@ -42769,7 +42769,7 @@ class Player {
|
|
|
42769
42769
|
}
|
|
42770
42770
|
const coreOpts = this.buildCoreOptions(playerElement);
|
|
42771
42771
|
const { core, container } = Player.getRegisteredPlugins();
|
|
42772
|
-
trace(`${T$
|
|
42772
|
+
trace(`${T$a} init`, {
|
|
42773
42773
|
registeredPlaybacks: Loader.registeredPlaybacks.map((p) => p.prototype.name),
|
|
42774
42774
|
});
|
|
42775
42775
|
coreOpts.plugins = {
|
|
@@ -42783,7 +42783,7 @@ class Player {
|
|
|
42783
42783
|
* Destroys the player, releasing all resources and unmounting its UI from the DOM.
|
|
42784
42784
|
*/
|
|
42785
42785
|
destroy() {
|
|
42786
|
-
trace(`${T$
|
|
42786
|
+
trace(`${T$a} destroy`, {
|
|
42787
42787
|
player: !!this.player,
|
|
42788
42788
|
});
|
|
42789
42789
|
if (this.player) {
|
|
@@ -42970,7 +42970,7 @@ class Player {
|
|
|
42970
42970
|
this.config = $.extend(true, this.config, config);
|
|
42971
42971
|
}
|
|
42972
42972
|
initPlayer(coreOptions) {
|
|
42973
|
-
trace(`${T$
|
|
42973
|
+
trace(`${T$a} initPlayer`, {
|
|
42974
42974
|
autoPlay: coreOptions.autoPlay,
|
|
42975
42975
|
sources: coreOptions.sources,
|
|
42976
42976
|
player: !!this.player,
|
|
@@ -43010,7 +43010,7 @@ class Player {
|
|
|
43010
43010
|
// TODO test
|
|
43011
43011
|
events = {
|
|
43012
43012
|
onReady: () => {
|
|
43013
|
-
trace(`${T$
|
|
43013
|
+
trace(`${T$a} onReady`, {
|
|
43014
43014
|
ready: this.ready,
|
|
43015
43015
|
});
|
|
43016
43016
|
if (this.ready) {
|
|
@@ -43100,7 +43100,7 @@ class Player {
|
|
|
43100
43100
|
assert.ok(this.player, 'Player is not initialized');
|
|
43101
43101
|
const core = this.player.core;
|
|
43102
43102
|
core.on(Events$1.CORE_SCREEN_ORIENTATION_CHANGED, ({ orientation }) => {
|
|
43103
|
-
trace(`${T$
|
|
43103
|
+
trace(`${T$a} on CORE_SCREEN_ORIENTATION_CHANGED`, {
|
|
43104
43104
|
rootNode: {
|
|
43105
43105
|
width: this.rootNode?.clientWidth,
|
|
43106
43106
|
height: this.rootNode?.clientHeight,
|
|
@@ -43396,7 +43396,7 @@ const FullscreenIOS = {
|
|
|
43396
43396
|
},
|
|
43397
43397
|
};
|
|
43398
43398
|
|
|
43399
|
-
insertStyle("[data-player] {\n --bottom-panel: 40px;\n}\n\n.container .media-control-notransition {\n transition: none !important;\n}\n.container .player-poster .play-wrapper {\n opacity: 1;\n}\n.container.crop-video [data-html5-video] {\n object-fit: cover;\n}\n.container .cc-line {\n position: absolute;\n bottom: calc(var(--bottom-panel) + 5px);\n width: 100%;\n}\n.container .cc-line p {\n width: auto;\n background-color: rgba(0, 0, 0, 0.4);\n color: white;\n display: inline-block;\n}\n.container .player-poster .circle-poster {\n top: 50%;\n margin-top: -60px;\n left: 50%;\n margin-left: -60px;\n position: absolute;\n width: 120px;\n height: 120px;\n border: 2px solid white;\n border-radius: 50%;\n filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)\";\n filter: alpha(opacity=60);\n opacity: 1;\n box-shadow: 0 0 1px 0 white;\n}\n.container .player-poster .circle-poster svg {\n margin-left: 5px;\n width: 80px;\n}\n.container .spinner-three-bounce[data-spinner] > div {\n background-color: #ff5700;\n}\n\n.media-control-skin-1.w270 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] {\n transform: rotate(270deg);\n float: none;\n display: block;\n position: absolute;\n margin: 0;\n top: -40px;\n padding: 0;\n margin-left: -32px;\n margin-top: -3px;\n width: 80px;\n}\n.media-control-skin-1.w270 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-background-mask {\n position: absolute;\n width: 100%;\n height: 100%;\n left: -5px;\n}\n.media-control-skin-1.w270 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume].volume-bar-hide {\n display: none;\n}\n.media-control-skin-1.w270 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-background {\n margin-left: 11px;\n top: 7px;\n width: 80px;\n}\n.media-control-skin-1.w270 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-scrubber {\n margin-left: 11px;\n top: 1px;\n}\n\n.media-control-skin-1.w370 .media-control-cc {\n width: 28px;\n}\n.media-control-skin-1.w370 .media-control-cc svg {\n height: 17px;\n}\n.media-control-skin-1.w370 .share_plugin[data-share] .share-container {\n top: calc(50% - 150px);\n left: calc(50% - 125px);\n width: 250px;\n height: calc(100% - 32px);\n max-height: 300px;\n transform: none;\n}\n.media-control-skin-1.w370 .share_plugin[data-share] .share-container .share-container-header {\n border: none;\n}\n.media-control-skin-1.w370 .share_plugin[data-share] .share-container .share-container-header .share-container-header--title {\n visibility: hidden;\n}\n.media-control-skin-1.w370 .media-control-quality {\n display: block;\n}\n.media-control-skin-1.w370 .media-control-multicamera .multicamera {\n margin-top: 0;\n margin-right: 10px;\n}\n.media-control-skin-1.w370 .media-control-multicamera .multicamera button {\n height: 32px;\n}\n.media-control-skin-1.w370 .media-control-multicamera .multicamera button svg {\n height: 17px;\n margin: 0;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] {\n padding-left: 10px;\n padding-right: 12px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .media-control-indicator {\n line-height: 32px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .media-control-indicator[data-position], .media-control-skin-1.w370 .media-control-layer[data-controls] .media-control-indicator[data-duration] {\n font-size: 11px;\n line-height: 32px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .dvr-controls .live-button {\n margin-left: 10px;\n height: 32px;\n font-size: 12px;\n line-height: 32px;\n text-shadow: none;\n letter-spacing: 0.6px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .dvr-controls .live-button::before {\n width: 8px;\n height: 8px;\n margin-right: 4px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .dvr-controls .live-info {\n margin-left: 10px;\n height: 32px;\n font-size: 12px;\n line-height: 32px;\n text-shadow: none;\n letter-spacing: 0.6px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .dvr-controls .live-info::before {\n width: 8px;\n height: 8px;\n margin-right: 4px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] button.media-control-button[data-fullscreen] {\n height: 33px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] button.media-control-button svg {\n height: 17px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .gplayer-mc-clips .gplayer-mc-clips-text {\n line-height: 33px;\n font-size: 11px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .gplayer-mc-clips .gplayer-mc-clips-text {\n max-width: 50px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .drawer-container[data-volume] {\n height: 32px;\n margin-right: 8px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume] {\n height: 32px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume] svg {\n height: 17px;\n margin-top: 5px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] {\n display: none;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume].volume-bar-hide {\n width: 0;\n height: 12px;\n top: 9px;\n padding: 0;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .media-control-button,\n.media-control-skin-1.w370 .media-control-layer[data-controls] .media-control-item {\n height: 32px;\n}\n\n:root {\n --font-size-media-controls: 14px;\n --font-size-media-controls-dropdown: 16px;\n --gplayer-mc-font-size-dropdown: 16px;\n --player-vod-color: #005aff;\n --player-dvr-color: #fff;\n --player-live-color: #ff0101;\n --player-seekbar-current-color: #ff5700;\n --player-seekbar-buffer-color: #fff;\n --gplayer-mc-text-color: #fff;\n --gplayer-mc-popup-border-color: rgb(255 255 255 / 10%);\n --gplayer-mc-popup-bg: rgb(74 74 74 / 60%);\n}\n\n.media-control-skin-1 {\n position: absolute;\n width: 100%;\n height: 100%;\n z-index: 9999;\n pointer-events: none;\n font-family: Roboto, \"Open Sans\", Arial, sans-serif;\n font-size: var(--font-size-media-controls);\n}\n.media-control-skin-1.dragging {\n pointer-events: auto;\n cursor: grabbing !important;\n cursor: url(\"closed-hand.cur\"), move;\n}\n.media-control-skin-1.dragging * {\n cursor: grabbing !important;\n cursor: url(\"closed-hand.cur\"), move;\n}\n.media-control-skin-1 .media-control-icon {\n line-height: 0;\n letter-spacing: 0;\n speak: none;\n color: var(--gplayer-mc-text-color);\n vertical-align: middle;\n text-align: left;\n transition: all 0.1s ease;\n}\n.media-control-skin-1 .media-control-icon:hover {\n color: white;\n}\n.media-control-skin-1.media-control-hide .media-control-background[data-background] {\n opacity: 0;\n}\n.media-control-skin-1.media-control-hide .media-control-layer[data-controls] {\n bottom: -50px;\n}\n.media-control-skin-1.media-control-hide .media-control-layer[data-controls] .bar-scrubber[data-seekbar] {\n opacity: 0;\n}\n.media-control-skin-1 .media-control-layer[data-controls] {\n position: absolute;\n bottom: 0;\n width: 100%;\n padding: 0 12px 0 8px;\n height: var(--bottom-panel);\n vertical-align: middle;\n pointer-events: auto;\n transition: bottom 0.4s ease-out;\n display: flex;\n justify-content: space-between;\n}\n.media-control-skin-1 .media-control-left-panel {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n justify-content: flex-start;\n}\n.media-control-skin-1 .media-control-button,\n.media-control-skin-1 .media-control-indicator,\n.media-control-skin-1 .media-control-item {\n order: 50;\n}\n.media-control-skin-1 .media-control-item {\n display: flex;\n align-items: center;\n}\n.media-control-skin-1 [data-playpause],\n.media-control-skin-1 [data-playstop] {\n order: 1;\n}\n.media-control-skin-1 [data-volume] {\n order: 2;\n}\n.media-control-skin-1 [data-position] {\n order: 3;\n}\n.media-control-skin-1 [data-duration] {\n order: 3;\n}\n.media-control-skin-1 .media-control-center-panel {\n height: 100%;\n text-align: center;\n line-height: var(--bottom-panel);\n}\n.media-control-skin-1 .media-control-right-panel {\n display: flex;\n align-items: center;\n gap: 1rem;\n justify-content: flex-end;\n}\n@media (max-width: 420px) {\n .media-control-skin-1 .media-control-right-panel {\n gap: 0.5rem;\n }\n}\n.media-control-skin-1 button.media-control-button {\n background-color: transparent;\n border: 0;\n padding: 0;\n cursor: pointer;\n display: inline-block;\n height: 20px;\n width: 24px;\n}\n.media-control-skin-1 button.media-control-button svg {\n height: 20px;\n}\n.media-control-skin-1 button.media-control-button svg path {\n fill: white;\n}\n.media-control-skin-1 button.media-control-button:focus {\n outline: none;\n}\n.media-control-skin-1 button.media-control-button[data-play] {\n float: left;\n height: 100%;\n}\n.media-control-skin-1 button.media-control-button[data-pause] {\n float: left;\n height: 100%;\n}\n.media-control-skin-1 button.media-control-button[data-stop] {\n float: left;\n height: 100%;\n}\n.media-control-skin-1 button.media-control-button[data-fullscreen] {\n order: 100;\n background-color: transparent;\n border: 0;\n height: 40px;\n}\n.media-control-skin-1 button.media-control-button[data-hd-indicator] {\n background-color: transparent;\n border: 0;\n cursor: default;\n display: none !important;\n float: right;\n height: 100%;\n}\n.media-control-skin-1 .media-control-indicator[data-position], .media-control-skin-1 .media-control-indicator[data-duration] {\n display: flex;\n color: white;\n cursor: default;\n line-height: var(--bottom-panel);\n position: relative;\n}\n.media-control-skin-1 .media-control-indicator[data-position] {\n margin: 1px 0 0 7px;\n}\n.media-control-skin-1 .media-control-indicator[data-duration] {\n color: rgb(255, 255, 255);\n opacity: 0.5;\n margin-top: 1px;\n margin-right: 6px;\n}\n.media-control-skin-1 .media-control-indicator[data-duration]::before {\n content: \"|\";\n margin-right: 7px;\n}\n.media-control-skin-1 .bar-container[data-seekbar] {\n position: absolute;\n top: -11px;\n left: 0;\n display: inline-block;\n vertical-align: middle;\n width: 100%;\n height: 20px;\n cursor: pointer;\n}\n.media-control-skin-1 .bar-container[data-seekbar] .bar-background[data-seekbar] {\n width: 100%;\n height: 3px;\n position: relative;\n top: 8px;\n background-color: #666;\n}\n.media-control-skin-1 .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-1[data-seekbar] {\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 100%;\n background-color: var(--player-seekbar-buffer-color);\n transition: all 0.1s ease-out;\n}\n.media-control-skin-1 .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar] {\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 100%;\n background-color: var(--player-seekbar-current-color);\n transition: all 0.1s ease-out;\n}\n.media-control-skin-1 .bar-container[data-seekbar].seek-disabled {\n cursor: default;\n display: none;\n}\n.media-control-skin-1 .bar-container[data-seekbar].seek-disabled + .bar-scrubber[data-seekbar] {\n cursor: default;\n display: none;\n}\n.media-control-skin-1 .bar-scrubber[data-seekbar] {\n position: absolute;\n transform: translateX(-50%);\n top: -11.5px;\n left: 0;\n width: 20px;\n height: 20px;\n opacity: 1;\n transition: all 0.1s ease-out;\n}\n.media-control-skin-1 .bar-scrubber[data-seekbar] .bar-scrubber-icon[data-seekbar] {\n position: absolute;\n left: 4.5px;\n top: 4.5px;\n width: 11px;\n height: 11px;\n border-radius: 50%;\n background-color: white;\n}\n.media-control-skin-1 .drawer-container[data-volume] {\n display: flex;\n justify-content: flex-start;\n height: var(--bottom-panel);\n cursor: pointer;\n box-sizing: border-box;\n}\n.media-control-skin-1 .drawer-container[data-volume] .drawer-icon-container[data-volume] {\n bottom: 0;\n}\n.media-control-skin-1 .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume] {\n background-color: transparent;\n border: 0;\n box-sizing: content-box;\n height: var(--bottom-panel);\n width: 20px;\n}\n.media-control-skin-1 .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume] svg {\n height: 20px;\n position: relative;\n top: 3px;\n margin-top: 7px;\n}\n.media-control-skin-1 .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume] svg path {\n fill: white;\n}\n.media-control-skin-1 .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume].muted svg {\n margin-left: 2px;\n}\n.media-control-skin-1 .drawer-container[data-volume] .bar-container[data-volume] {\n position: relative;\n margin-left: 10px;\n top: 8px;\n width: 80px;\n height: 23px;\n padding: 3px 0;\n transition: width 0.2s ease-out;\n}\n.media-control-skin-1 .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume] {\n height: 3px;\n border-radius: 100px;\n position: relative;\n top: 7px;\n background-color: #666;\n}\n.media-control-skin-1 .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume] .bar-fill-1[data-volume] {\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 100%;\n border-radius: 100px;\n background-color: white;\n transition: all 0.1s ease-out;\n}\n.media-control-skin-1 .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume] .bar-fill-2[data-volume] {\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 100%;\n background-color: var(--player-vod-color);\n transition: all 0.1s ease-out;\n}\n.media-control-skin-1 .drawer-container[data-volume] .bar-container[data-volume] .bar-scrubber[data-volume] {\n position: absolute;\n transform: translateX(-50%);\n top: 3px;\n margin-left: 3px;\n width: 16px;\n height: 16px;\n opacity: 1;\n transition: all 0.1s ease-out;\n}\n.media-control-skin-1 .drawer-container[data-volume] .bar-container[data-volume] .bar-scrubber[data-volume] .bar-scrubber-icon[data-volume] {\n position: absolute;\n left: 3px;\n top: 5px;\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background-color: white;\n}\n.media-control-skin-1 .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume] {\n float: left;\n width: 4px;\n padding-left: 2px;\n height: 12px;\n opacity: 0.5;\n box-shadow: inset 2px 0 0 white;\n transition: transform 0.2s ease-out;\n}\n.media-control-skin-1 .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume].fill {\n box-shadow: inset 2px 0 0 #fff;\n opacity: 1;\n}\n.media-control-skin-1 .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:nth-of-type(1) {\n padding-left: 0;\n}\n.media-control-skin-1 .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:hover {\n transform: scaleY(1.5);\n}\n.media-control-skin-1 .seek-time {\n height: 26px;\n line-height: 26px;\n bottom: 52px;\n border-radius: 3px;\n background-color: rgba(74, 74, 74, 0.7);\n}\n.media-control-skin-1 .seek-time span {\n letter-spacing: 0.8px;\n font-size: 14px;\n font-family: Roboto, \"Open Sans\", Arial, sans-serif;\n}\n.media-control-skin-1 .seek-time .seek-time__pos {\n padding-left: 8px;\n padding-right: 8px;\n}\n.media-control-skin-1 .media-control-dd {\n display: flex;\n height: 32px;\n line-height: 32px;\n align-items: baseline;\n gap: 4px;\n vertical-align: baseline;\n padding: 0;\n background-color: transparent;\n color: var(--gplayer-mc-text-color);\n -webkit-font-smoothing: antialiased;\n border: none;\n cursor: pointer;\n}\n.media-control-skin-1 .media-control-dd__text {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n max-width: 100px;\n}\n.media-control-skin-1 .media-control-dd.changing {\n animation: pulse 0.5s infinite alternate;\n}\n.media-control-skin-1 .media-control-dd__arrow {\n width: 9px;\n height: 6px;\n}\n.media-control-skin-1 .media-control-dd__wrap {\n position: relative;\n}\n.media-control-skin-1 .media-control-dd__popup {\n max-width: 114px;\n list-style-type: none;\n position: absolute;\n box-shadow: 0 0 1px 1px var(--gplayer-mc-popup-border-color);\n border: none;\n min-width: 60px;\n border-radius: 4px;\n bottom: 40px;\n right: -2px;\n overflow: hidden;\n}\n.media-control-skin-1 .media-control-dd__popup li {\n font-size: var(--gplayer-mc-font-size-dropdown);\n text-align: right;\n height: 30px;\n}\n.media-control-skin-1 .media-control-dd__popup li[data-title] {\n background-color: #c3c2c2;\n padding: 5px;\n}\n.media-control-skin-1 .media-control-dd__popup li a {\n display: block;\n text-decoration: none;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n height: 30px;\n padding: 5px 10px;\n line-height: 20px;\n color: #fffffe;\n}\n.media-control-skin-1 .media-control-dd__popup li a:hover {\n text-decoration: none;\n background-color: rgba(0, 0, 0, 0.4);\n color: white;\n}\n.media-control-skin-1 .media-control-dd__popup li.current a {\n color: #f00;\n}\n.media-control-skin-1 .media-control-dd__popup li:first-child a {\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n.media-control-skin-1 .media-control-dd__popup li:last-child a {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n}\n\n@keyframes pulse {\n 0% {\n color: #fff;\n }\n 50% {\n color: #ff0101;\n }\n 100% {\n color: #B80000;\n }\n}");
|
|
43399
|
+
insertStyle("[data-player] {\n --bottom-panel: 40px;\n}\n\n.container .media-control-notransition {\n transition: none !important;\n}\n.container .player-poster .play-wrapper {\n opacity: 1;\n}\n.container.crop-video [data-html5-video] {\n object-fit: cover;\n}\n.container .player-poster .circle-poster {\n top: 50%;\n margin-top: -60px;\n left: 50%;\n margin-left: -60px;\n position: absolute;\n width: 120px;\n height: 120px;\n border: 2px solid white;\n border-radius: 50%;\n filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)\";\n filter: alpha(opacity=60);\n opacity: 1;\n box-shadow: 0 0 1px 0 white;\n}\n.container .player-poster .circle-poster svg {\n margin-left: 5px;\n width: 80px;\n}\n.container .spinner-three-bounce[data-spinner] > div {\n background-color: #ff5700;\n}\n\n.media-control-skin-1.w270 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] {\n transform: rotate(270deg);\n float: none;\n display: block;\n position: absolute;\n margin: 0;\n top: -40px;\n padding: 0;\n margin-left: -32px;\n margin-top: -3px;\n width: 80px;\n}\n.media-control-skin-1.w270 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-background-mask {\n position: absolute;\n width: 100%;\n height: 100%;\n left: -5px;\n}\n.media-control-skin-1.w270 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume].volume-bar-hide {\n display: none;\n}\n.media-control-skin-1.w270 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-background {\n margin-left: 11px;\n top: 7px;\n width: 80px;\n}\n.media-control-skin-1.w270 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-scrubber {\n margin-left: 11px;\n top: 1px;\n}\n.media-control-skin-1.w270 .media-control-dd__popup {\n max-width: 114px;\n}\n\n.media-control-skin-1.w370 .media-control-cc {\n width: 28px;\n}\n.media-control-skin-1.w370 .media-control-cc svg {\n height: 17px;\n}\n.media-control-skin-1.w370 .share_plugin[data-share] .share-container {\n top: calc(50% - 150px);\n left: calc(50% - 125px);\n width: 250px;\n height: calc(100% - 32px);\n max-height: 300px;\n transform: none;\n}\n.media-control-skin-1.w370 .share_plugin[data-share] .share-container .share-container-header {\n border: none;\n}\n.media-control-skin-1.w370 .share_plugin[data-share] .share-container .share-container-header .share-container-header--title {\n visibility: hidden;\n}\n.media-control-skin-1.w370 .media-control-quality {\n display: block;\n}\n.media-control-skin-1.w370 .media-control-multicamera .multicamera {\n margin-top: 0;\n margin-right: 10px;\n}\n.media-control-skin-1.w370 .media-control-multicamera .multicamera button {\n height: 32px;\n}\n.media-control-skin-1.w370 .media-control-multicamera .multicamera button svg {\n height: 17px;\n margin: 0;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] {\n padding-left: 10px;\n padding-right: 12px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .media-control-indicator {\n line-height: 32px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .media-control-indicator[data-position], .media-control-skin-1.w370 .media-control-layer[data-controls] .media-control-indicator[data-duration] {\n font-size: 11px;\n line-height: 32px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .dvr-controls .live-button {\n margin-left: 10px;\n height: 32px;\n font-size: 12px;\n line-height: 32px;\n text-shadow: none;\n letter-spacing: 0.6px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .dvr-controls .live-button::before {\n width: 8px;\n height: 8px;\n margin-right: 4px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .dvr-controls .live-info {\n margin-left: 10px;\n height: 32px;\n font-size: 12px;\n line-height: 32px;\n text-shadow: none;\n letter-spacing: 0.6px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .dvr-controls .live-info::before {\n width: 8px;\n height: 8px;\n margin-right: 4px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] button.media-control-button[data-fullscreen] {\n height: 33px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] button.media-control-button svg {\n height: 17px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .gplayer-mc-clips .gplayer-mc-clips-text {\n line-height: 33px;\n font-size: 11px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .gplayer-mc-clips .gplayer-mc-clips-text {\n max-width: 50px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .drawer-container[data-volume] {\n height: 32px;\n margin-right: 8px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume] {\n height: 32px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume] svg {\n height: 17px;\n margin-top: 5px;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] {\n display: none;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume].volume-bar-hide {\n width: 0;\n height: 12px;\n top: 9px;\n padding: 0;\n}\n.media-control-skin-1.w370 .media-control-layer[data-controls] .media-control-button,\n.media-control-skin-1.w370 .media-control-layer[data-controls] .media-control-item {\n height: 32px;\n}\n.media-control-skin-1.w370 .media-control-dd__popup {\n max-width: 150px;\n}\n\n:root {\n --font-size-media-controls: 14px;\n --font-size-media-controls-dropdown: 16px;\n --gplayer-mc-font-size-dropdown: 16px;\n --player-vod-color: #005aff;\n --player-dvr-color: #fff;\n --player-live-color: #ff0101;\n --player-seekbar-current-color: #ff5700;\n --player-seekbar-buffer-color: #fff;\n --gplayer-mc-text-color: #fff;\n --gplayer-mc-text-dim-color: #fffffe;\n --gplayer-mc-popup-border-color: rgb(255 255 255 / 10%);\n --gplayer-mc-popup-bg: rgb(74 74 74 / 60%);\n}\n\n.media-control-skin-1 {\n position: absolute;\n width: 100%;\n height: 100%;\n z-index: 9999;\n pointer-events: none;\n font-family: Roboto, \"Open Sans\", Arial, sans-serif;\n font-size: var(--font-size-media-controls);\n}\n.media-control-skin-1.dragging {\n pointer-events: auto;\n cursor: grabbing !important;\n cursor: url(\"closed-hand.cur\"), move;\n}\n.media-control-skin-1.dragging * {\n cursor: grabbing !important;\n cursor: url(\"closed-hand.cur\"), move;\n}\n.media-control-skin-1 .media-control-icon {\n line-height: 0;\n letter-spacing: 0;\n speak: none;\n color: var(--gplayer-mc-text-color);\n vertical-align: middle;\n text-align: left;\n transition: all 0.1s ease;\n}\n.media-control-skin-1 .media-control-icon:hover {\n color: white;\n}\n.media-control-skin-1.media-control-hide .media-control-background[data-background] {\n opacity: 0;\n}\n.media-control-skin-1.media-control-hide .media-control-layer[data-controls] {\n bottom: -50px;\n}\n.media-control-skin-1.media-control-hide .media-control-layer[data-controls] .bar-scrubber[data-seekbar] {\n opacity: 0;\n}\n.media-control-skin-1 .media-control-layer[data-controls] {\n position: absolute;\n bottom: 0;\n width: 100%;\n padding: 0 12px 0 8px;\n height: var(--bottom-panel);\n vertical-align: middle;\n pointer-events: auto;\n transition: bottom 0.4s ease-out;\n display: flex;\n justify-content: space-between;\n}\n.media-control-skin-1 .media-control-left-panel {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n justify-content: flex-start;\n}\n.media-control-skin-1 .media-control-button,\n.media-control-skin-1 .media-control-indicator,\n.media-control-skin-1 .media-control-item {\n order: 50;\n}\n.media-control-skin-1 .media-control-item {\n display: flex;\n align-items: center;\n}\n.media-control-skin-1 [data-playpause],\n.media-control-skin-1 [data-playstop] {\n order: 1;\n}\n.media-control-skin-1 [data-volume] {\n order: 2;\n}\n.media-control-skin-1 [data-position] {\n order: 3;\n}\n.media-control-skin-1 [data-duration] {\n order: 3;\n}\n.media-control-skin-1 .media-control-center-panel {\n height: 100%;\n text-align: center;\n line-height: var(--bottom-panel);\n}\n.media-control-skin-1 .media-control-right-panel {\n display: flex;\n align-items: center;\n gap: 1rem;\n justify-content: flex-end;\n}\n@media (max-width: 420px) {\n .media-control-skin-1 .media-control-right-panel {\n gap: 0.5rem;\n }\n}\n.media-control-skin-1 button.media-control-button {\n background-color: transparent;\n border: 0;\n padding: 0;\n cursor: pointer;\n display: inline-block;\n height: 20px;\n width: 24px;\n}\n.media-control-skin-1 button.media-control-button svg {\n height: 20px;\n}\n.media-control-skin-1 button.media-control-button svg path {\n fill: white;\n}\n.media-control-skin-1 button.media-control-button:focus {\n outline: none;\n}\n.media-control-skin-1 button.media-control-button[data-play] {\n float: left;\n height: 100%;\n}\n.media-control-skin-1 button.media-control-button[data-pause] {\n float: left;\n height: 100%;\n}\n.media-control-skin-1 button.media-control-button[data-stop] {\n float: left;\n height: 100%;\n}\n.media-control-skin-1 button.media-control-button[data-fullscreen] {\n order: 100;\n background-color: transparent;\n border: 0;\n height: 40px;\n}\n.media-control-skin-1 button.media-control-button[data-hd-indicator] {\n background-color: transparent;\n border: 0;\n cursor: default;\n display: none !important;\n float: right;\n height: 100%;\n}\n.media-control-skin-1 .media-control-indicator[data-position], .media-control-skin-1 .media-control-indicator[data-duration] {\n display: flex;\n color: white;\n cursor: default;\n line-height: var(--bottom-panel);\n position: relative;\n}\n.media-control-skin-1 .media-control-indicator[data-position] {\n margin: 1px 0 0 7px;\n}\n.media-control-skin-1 .media-control-indicator[data-duration] {\n color: rgb(255, 255, 255);\n opacity: 0.5;\n margin-top: 1px;\n margin-right: 6px;\n}\n.media-control-skin-1 .media-control-indicator[data-duration]::before {\n content: \"|\";\n margin-right: 7px;\n}\n.media-control-skin-1 .bar-container[data-seekbar] {\n position: absolute;\n top: -11px;\n left: 0;\n display: inline-block;\n vertical-align: middle;\n width: 100%;\n height: 20px;\n cursor: pointer;\n}\n.media-control-skin-1 .bar-container[data-seekbar] .bar-background[data-seekbar] {\n width: 100%;\n height: 3px;\n position: relative;\n top: 8px;\n background-color: #666;\n}\n.media-control-skin-1 .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-1[data-seekbar] {\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 100%;\n background-color: var(--player-seekbar-buffer-color);\n transition: all 0.1s ease-out;\n}\n.media-control-skin-1 .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar] {\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 100%;\n background-color: var(--player-seekbar-current-color);\n transition: all 0.1s ease-out;\n}\n.media-control-skin-1 .bar-container[data-seekbar].seek-disabled {\n cursor: default;\n display: none;\n}\n.media-control-skin-1 .bar-container[data-seekbar].seek-disabled + .bar-scrubber[data-seekbar] {\n cursor: default;\n display: none;\n}\n.media-control-skin-1 .bar-scrubber[data-seekbar] {\n position: absolute;\n transform: translateX(-50%);\n top: -11.5px;\n left: 0;\n width: 20px;\n height: 20px;\n opacity: 1;\n transition: all 0.1s ease-out;\n}\n.media-control-skin-1 .bar-scrubber[data-seekbar] .bar-scrubber-icon[data-seekbar] {\n position: absolute;\n left: 4.5px;\n top: 4.5px;\n width: 11px;\n height: 11px;\n border-radius: 50%;\n background-color: white;\n}\n.media-control-skin-1 .drawer-container[data-volume] {\n display: flex;\n justify-content: flex-start;\n height: var(--bottom-panel);\n cursor: pointer;\n box-sizing: border-box;\n}\n.media-control-skin-1 .drawer-container[data-volume] .drawer-icon-container[data-volume] {\n bottom: 0;\n}\n.media-control-skin-1 .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume] {\n background-color: transparent;\n border: 0;\n box-sizing: content-box;\n height: var(--bottom-panel);\n width: 20px;\n}\n.media-control-skin-1 .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume] svg {\n height: 20px;\n position: relative;\n top: 3px;\n margin-top: 7px;\n}\n.media-control-skin-1 .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume] svg path {\n fill: white;\n}\n.media-control-skin-1 .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume].muted svg {\n margin-left: 2px;\n}\n.media-control-skin-1 .drawer-container[data-volume] .bar-container[data-volume] {\n position: relative;\n margin-left: 10px;\n top: 8px;\n width: 80px;\n height: 23px;\n padding: 3px 0;\n transition: width 0.2s ease-out;\n}\n.media-control-skin-1 .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume] {\n height: 3px;\n border-radius: 100px;\n position: relative;\n top: 7px;\n background-color: #666;\n}\n.media-control-skin-1 .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume] .bar-fill-1[data-volume] {\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 100%;\n border-radius: 100px;\n background-color: white;\n transition: all 0.1s ease-out;\n}\n.media-control-skin-1 .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume] .bar-fill-2[data-volume] {\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 100%;\n background-color: var(--player-vod-color);\n transition: all 0.1s ease-out;\n}\n.media-control-skin-1 .drawer-container[data-volume] .bar-container[data-volume] .bar-scrubber[data-volume] {\n position: absolute;\n transform: translateX(-50%);\n top: 3px;\n margin-left: 3px;\n width: 16px;\n height: 16px;\n opacity: 1;\n transition: all 0.1s ease-out;\n}\n.media-control-skin-1 .drawer-container[data-volume] .bar-container[data-volume] .bar-scrubber[data-volume] .bar-scrubber-icon[data-volume] {\n position: absolute;\n left: 3px;\n top: 5px;\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background-color: white;\n}\n.media-control-skin-1 .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume] {\n float: left;\n width: 4px;\n padding-left: 2px;\n height: 12px;\n opacity: 0.5;\n box-shadow: inset 2px 0 0 white;\n transition: transform 0.2s ease-out;\n}\n.media-control-skin-1 .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume].fill {\n box-shadow: inset 2px 0 0 #fff;\n opacity: 1;\n}\n.media-control-skin-1 .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:nth-of-type(1) {\n padding-left: 0;\n}\n.media-control-skin-1 .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:hover {\n transform: scaleY(1.5);\n}\n.media-control-skin-1 .seek-time {\n height: 26px;\n line-height: 26px;\n bottom: 52px;\n border-radius: 3px;\n background-color: rgba(74, 74, 74, 0.7);\n}\n.media-control-skin-1 .seek-time span {\n letter-spacing: 0.8px;\n font-size: 14px;\n font-family: Roboto, \"Open Sans\", Arial, sans-serif;\n}\n.media-control-skin-1 .seek-time .seek-time__pos {\n padding-left: 8px;\n padding-right: 8px;\n}\n.media-control-skin-1 .media-control-dd {\n display: flex;\n height: 32px;\n line-height: 32px;\n align-items: baseline;\n gap: 4px;\n vertical-align: baseline;\n padding: 0;\n background-color: transparent;\n color: var(--gplayer-mc-text-color);\n -webkit-font-smoothing: antialiased;\n border: none;\n cursor: pointer;\n}\n.media-control-skin-1 .media-control-dd__text {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n max-width: 100px;\n}\n.media-control-skin-1 .media-control-dd.changing {\n animation: pulse 0.5s infinite alternate;\n}\n.media-control-skin-1 .media-control-dd svg {\n fill: var(--gplayer-mc-text-color);\n}\n.media-control-skin-1 .media-control-dd__arrow {\n width: 9px;\n height: 6px;\n}\n.media-control-skin-1 .media-control-dd__wrap {\n position: relative;\n}\n.media-control-skin-1 .media-control-dd__popup {\n max-width: 200px;\n list-style-type: none;\n position: absolute;\n box-shadow: 0 0 1px 1px var(--gplayer-mc-popup-border-color);\n border: none;\n min-width: 60px;\n border-radius: 4px;\n bottom: 40px;\n right: -2px;\n overflow-x: hidden;\n overflow-y: auto;\n padding: 5px 0;\n}\n.media-control-skin-1 .media-control-dd__popup li {\n font-size: var(--gplayer-mc-font-size-dropdown);\n text-align: right;\n height: 30px;\n}\n.media-control-skin-1 .media-control-dd__popup li a {\n display: block;\n text-decoration: none;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n padding: 5px 10px;\n line-height: 20px;\n color: #fffffe;\n}\n.media-control-skin-1 .media-control-dd__popup li a:hover {\n text-decoration: none;\n background-color: rgba(0, 0, 0, 0.4);\n color: var(--gplayer-mc-text-color);\n}\n.media-control-skin-1 .media-control-dd__popup li.current a {\n color: #f00;\n}\n.media-control-skin-1 .media-control-dd__popup li:first-child a {\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n.media-control-skin-1 .media-control-dd__popup li:last-child a {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n}\n\n@keyframes pulse {\n 0% {\n color: #fff;\n }\n 50% {\n color: #ff0101;\n }\n 100% {\n color: #B80000;\n }\n}");
|
|
43400
43400
|
|
|
43401
43401
|
const mediaControlHTML = "<div class=\"media-control-background\" data-background></div>\n\n<div class=\"media-control-layer gcore-skin-bg-color\" data-controls>\n <% var renderBar = function(name) { %>\n <div class=\"bar-container\" data-<%= name %>>\n <div class=\"bar-background\" data-<%= name %>>\n <div class=\"bar-fill-1\" data-<%= name %>></div>\n <div class=\"bar-fill-2 gcore-skin-main-color\" data-<%= name %>></div>\n <div class=\"bar-hover\" data-<%= name %>></div>\n </div>\n </div>\n <div class=\"bar-scrubber\" data-<%= name %>>\n <div class=\"bar-scrubber-icon gcore-skin-main-color\" data-<%= name %>></div>\n </div>\n <% }; %>\n <% var renderSegmentedBar = function(name, segments) {\n segments = segments || 10; %>\n <div class=\"bar-container\" data-<%= name %>>\n <div class=\"bar-background\" data-<%= name %>>\n <div class=\"bar-fill-1 gcore-skin-main-color\" data-<%= name %>></div>\n </div>\n <div class=\"bar-scrubber\" data-<%= name %>>\n <div class=\"bar-scrubber-icon gcore-skin-main-color\" data-<%= name %>></div>\n </div>\n </div>\n <% }; %>\n <% var renderDrawer = function(name, renderContent) { %>\n <div class=\"drawer-container\" data-<%= name %>>\n <div class=\"drawer-icon-container\" data-<%= name %>>\n <div class=\"drawer-icon media-control-icon gcore-skin-button-color\" data-<%= name %>></div>\n <span class=\"drawer-text\" data-<%= name %>></span>\n </div>\n <% renderContent(name); %>\n </div>\n <% }; %>\n <% var renderIndicator = function(name) { %>\n <div class=\"media-control-indicator gcore-skin-text-color\" data-<%= name %>></div>\n <% }; %>\n <% var renderQuality = function(name) { %>\n <div class=\"media-control-quality\" data-<%= name %>></div>\n <% }; %>\n <% var renderNerd = function(name) { %>\n <div class=\"media-control-nerd\" data-<%= name %>></div>\n <% }; %>\n <% var renderMultiCamera = function(name) { %>\n <div class=\"media-control-multicamera\" data-<%= name %>></div>\n <% }; %>\n <% var renderVR = function(name) { %>\n <div class=\"media-control-vr\" data-<%= name %>></div>\n <% }; %>\n <% var renderButton = function(name) { %>\n <button type=\"button\" class=\"media-control-button media-control-icon gcore-skin-button-color\" data-<%= name %>\n aria-label=\"<%= name %>\"></button>\n <% }; %>\n\n <% var templates = {\n bar: renderBar,\n segmentedBar: renderSegmentedBar,\n };\n var render = function (settingsList) {\n settingsList.forEach(function (setting) {\n\n if (setting === \"seekbar\") {\n renderBar(setting);\n } else if (setting === \"volume\") {\n renderDrawer(setting, settings.volumeBarTemplate ? templates[settings.volumeBarTemplate] : function (name) {\n return renderSegmentedBar(name);\n });\n } else if (setting === \"duration\" || setting === \"position\" || setting === \"clips\") {\n renderIndicator(setting);\n } else if (setting === \"quality\") {\n renderQuality(setting)\n } else if (setting === \"nerd\") {\n renderNerd(setting)\n } else if (setting === \"multicamera\") {\n renderMultiCamera(setting)\n } else if (setting === \"vr\") {\n renderVR(setting)\n } else if ([\"playpause\", \"playstop\", \"fullscreen\"].includes(setting)) {\n renderButton(setting);\n }\n });\n }; %>\n <% if (settings.left && settings.left.length) { %>\n <div class=\"media-control-left-panel\" data-media-control>\n <% render(settings.left); %>\n </div>\n <% } %>\n <% if (settings.default && settings.default.length) { %>\n <div class=\"media-control-center-panel\" data-media-control>\n <% render(settings.default); %>\n </div>\n <% } %>\n <% if (settings.right && settings.right.length) { %>\n <div class=\"media-control-right-panel\" data-media-control>\n <% render(settings.right); %>\n </div>\n <% } %>\n</div>\n";
|
|
43402
43402
|
|
|
@@ -43429,6 +43429,7 @@ const STANDARD_MEDIA_CONTROL_ELEMENTS = [
|
|
|
43429
43429
|
'seekbar',
|
|
43430
43430
|
'volume',
|
|
43431
43431
|
];
|
|
43432
|
+
const MENU_VMARGIN = 12;
|
|
43432
43433
|
// TODO export
|
|
43433
43434
|
const DEFAULT_SETTINGS = {
|
|
43434
43435
|
default: ['seekbar'],
|
|
@@ -43752,6 +43753,12 @@ class MediaControl extends UICorePlugin {
|
|
|
43752
43753
|
getAvailableHeight() {
|
|
43753
43754
|
return (this.core.$el.height() - this.$el.find('.media-control-layer').height());
|
|
43754
43755
|
}
|
|
43756
|
+
/**
|
|
43757
|
+
* @returns Vertical space available to render a popup menu
|
|
43758
|
+
*/
|
|
43759
|
+
getAvailablePopupHeight() {
|
|
43760
|
+
return this.getAvailableHeight() - MENU_VMARGIN * 2;
|
|
43761
|
+
}
|
|
43755
43762
|
/**
|
|
43756
43763
|
* Set the initial volume, which is preserved when playback is interrupted by an advertisement
|
|
43757
43764
|
*/
|
|
@@ -44860,7 +44867,7 @@ const templateHtml$2 = "<div class=\"big-mute-icon-wrapper\" data-big-mute id=\"
|
|
|
44860
44867
|
|
|
44861
44868
|
insertStyle(".big-mute-icon-wrapper[data-big-mute] {\n position: absolute;\n z-index: 9998;\n background-color: transparent;\n display: flex;\n justify-content: center;\n width: 100%;\n height: calc(100% - 50px);\n margin: 0 auto;\n opacity: 0.75;\n transition: opacity 0.1s ease;\n pointer-events: auto;\n}\n.big-mute-icon-wrapper[data-big-mute].hide {\n display: none;\n}\n.big-mute-icon-wrapper[data-big-mute]:hover {\n cursor: pointer;\n}\n\n.big-mute-icon[data-big-mute-icon] {\n display: flex;\n align-items: center;\n justify-content: center;\n align-self: center;\n width: 120px;\n height: 120px;\n border: 2px solid white;\n border-radius: 50%;\n filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)\";\n filter: alpha(opacity=60);\n opacity: 1;\n box-shadow: 0 0 1px 0 white;\n background: rgba(240, 243, 247, 0.9411764706);\n z-index: 10000;\n}\n.big-mute-icon[data-big-mute-icon] svg {\n margin-left: 5px;\n width: 80px;\n height: 80px;\n}\n.big-mute-icon[data-big-mute-icon] svg path {\n fill: #1f1e1e !important;\n}\n.big-mute-icon[data-big-mute-icon]:hover {\n background: rgba(240, 243, 247, 0.8784313725);\n}\n.big-mute-icon[data-big-mute-icon]:hover svg path {\n fill: #151515 !important;\n}");
|
|
44862
44869
|
|
|
44863
|
-
const T$
|
|
44870
|
+
const T$9 = 'plugins.big_mute_button';
|
|
44864
44871
|
// TODO rewrite as a container plugin
|
|
44865
44872
|
/**
|
|
44866
44873
|
* `PLUGIN` that displays a big mute button over the video when it's being played muted.
|
|
@@ -44923,7 +44930,7 @@ class BigMuteButton extends UICorePlugin {
|
|
|
44923
44930
|
if (autoPlay) {
|
|
44924
44931
|
this.autoPlay = true;
|
|
44925
44932
|
}
|
|
44926
|
-
trace(`${T$
|
|
44933
|
+
trace(`${T$9} onPlay`, {
|
|
44927
44934
|
autoPlay: this.autoPlay});
|
|
44928
44935
|
if (this.autoPlay && !wasMuted && volume === 0) {
|
|
44929
44936
|
this.mount();
|
|
@@ -44999,14 +45006,13 @@ const pluginHtml$3 = "<button class=\"media-control-button gplayer-lite-btn gcor
|
|
|
44999
45006
|
|
|
45000
45007
|
insertStyle(".media-control-skin-1 .media-control-item.media-control-gear {\n order: 99;\n}\n.media-control-skin-1 .media-control-item.media-control-gear .gear-wrapper {\n position: absolute;\n right: 16px;\n bottom: 52px;\n width: 250px;\n min-height: 48px;\n z-index: 9999;\n border-radius: 4px;\n box-shadow: 0 0 1px 1px var(--gplayer-mc-popup-border-color);\n}\n.media-control-skin-1 .media-control-item.media-control-gear .gear-options-list {\n padding: 8px 0;\n}\n.media-control-skin-1 .media-control-item.media-control-gear .gear-option {\n margin: 0;\n text-align: left;\n line-height: 22px;\n padding: 5px 14px;\n width: 250px;\n font-size: 12px;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 8px;\n}\n.media-control-skin-1 .media-control-item.media-control-gear .gear-option_icon {\n flex: 24px 0 0;\n height: 24px;\n}\n.media-control-skin-1 .media-control-item.media-control-gear .gear-option_icon.hidden {\n visibility: hidden;\n display: inline-block;\n}\n.media-control-skin-1 .media-control-item.media-control-gear .gear-option_label {\n flex: 0 1 100%;\n}\n.media-control-skin-1 .media-control-item.media-control-gear .gear-option_arrow-right-icon {\n flex: 0 0 14px;\n height: 24px;\n}\n.media-control-skin-1 .media-control-item.media-control-gear .gear-option_value {\n flex: 1 0 auto;\n}");
|
|
45001
45008
|
|
|
45002
|
-
insertStyle("*, :focus, :visited {\n outline: none !important;\n}\n\n.gear-wrapper .go-back {\n font-weight: 600;\n font-size: 14px;\n line-height: 20px;\n width: 100%;\n text-align: left;\n padding: 12px;\n}\n.gear-wrapper .go-back .arrow-left-icon {\n float: left;\n padding-top: 2px;\n padding-right: 2px;\n}\n.gear-wrapper .go-back .arrow-left-icon svg {\n height: 16px;\n}\n.gear-wrapper ul.gear-sub-menu {\n width: 100%;\n list-style-type: none;\n min-width: 60px;\n border-top: 2px solid rgb(36, 36, 36);\n overflow-y: auto;\n}\n.gear-wrapper ul.gear-sub-menu li {\n font-size: 12px;\n text-align: left;\n}\n.gear-wrapper ul.gear-sub-menu li
|
|
45009
|
+
insertStyle("*, :focus, :visited {\n outline: none !important;\n}\n\n.gear-wrapper .go-back {\n font-weight: 600;\n font-size: 14px;\n line-height: 20px;\n width: 100%;\n text-align: left;\n padding: 12px;\n}\n.gear-wrapper .go-back .arrow-left-icon {\n float: left;\n padding-top: 2px;\n padding-right: 2px;\n}\n.gear-wrapper .go-back .arrow-left-icon svg {\n height: 16px;\n}\n.gear-wrapper ul.gear-sub-menu {\n width: 100%;\n list-style-type: none;\n min-width: 60px;\n border-top: 2px solid rgb(36, 36, 36);\n overflow-y: auto;\n}\n.gear-wrapper ul.gear-sub-menu li {\n font-size: 12px;\n text-align: left;\n}\n.gear-wrapper ul.gear-sub-menu li a {\n display: block;\n text-decoration: none;\n height: 30px;\n padding: 5px 10px;\n line-height: 22px;\n color: var(--gplayer-mc-text-dim-color);\n}\n.gear-wrapper ul.gear-sub-menu li a:hover {\n color: var(--gplayer-mc-text-color);\n background-color: rgba(0, 0, 0, 0.4);\n}\n.gear-wrapper ul.gear-sub-menu li a:hover a {\n color: var(--gplayer-mc-text-color);\n text-decoration: none;\n}\n.gear-wrapper ul.gear-sub-menu li a .check-icon {\n width: 30px;\n height: 20px;\n float: left;\n display: block;\n}\n.gear-wrapper ul.gear-sub-menu li a .check-icon svg {\n display: none;\n}\n.gear-wrapper ul.gear-sub-menu li.current a .check-icon svg {\n display: inline;\n}");
|
|
45003
45010
|
|
|
45004
45011
|
const gearIcon = "<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_660_1503)\">\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 </g>\n <defs>\n <clipPath id=\"clip0_660_1503\">\n <rect width=\"24\" height=\"24\" fill=\"white\"/>\n </clipPath>\n </defs>\n</svg>\n";
|
|
45005
45012
|
|
|
45006
45013
|
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";
|
|
45007
45014
|
|
|
45008
45015
|
const VERSION$5 = '2.19.12';
|
|
45009
|
-
const MENU_VMARGIN = 12;
|
|
45010
45016
|
const MENU_BACKLINK_HEIGHT = 44;
|
|
45011
45017
|
/**
|
|
45012
45018
|
* Events triggered by the plugin
|
|
@@ -45169,7 +45175,7 @@ class BottomGear extends UICorePlugin {
|
|
|
45169
45175
|
.appendTo(this.$el.find('#gear-options-wrapper'));
|
|
45170
45176
|
$item.on('click', (e) => {
|
|
45171
45177
|
e.stopPropagation();
|
|
45172
|
-
this.
|
|
45178
|
+
this.clampPopup($subMenu);
|
|
45173
45179
|
$subMenu.show();
|
|
45174
45180
|
this.$el.find('#gear-options').hide();
|
|
45175
45181
|
});
|
|
@@ -45265,9 +45271,8 @@ class BottomGear extends UICorePlugin {
|
|
|
45265
45271
|
const mediaControl = this.core.getPlugin('media_control');
|
|
45266
45272
|
mediaControl.slot('gear', this.$el);
|
|
45267
45273
|
}
|
|
45268
|
-
|
|
45269
|
-
const availableHeight = this.core.getPlugin('media_control').
|
|
45270
|
-
MENU_VMARGIN * 2;
|
|
45274
|
+
clampPopup($subMenu) {
|
|
45275
|
+
const availableHeight = this.core.getPlugin('media_control').getAvailablePopupHeight();
|
|
45271
45276
|
$subMenu.css('max-height', `${availableHeight}px`);
|
|
45272
45277
|
$subMenu
|
|
45273
45278
|
.find('.gear-sub-menu')
|
|
@@ -48494,7 +48499,7 @@ const templateHtml = "<div class=\"player-error-screen__content\" data-error-scr
|
|
|
48494
48499
|
|
|
48495
48500
|
insertStyle("div.player-error-screen, [data-player] div.player-error-screen {\n color: #CCCACA;\n position: absolute;\n top: 0;\n height: 100%;\n width: 100%;\n background-color: rgba(0, 0, 0, 0.7);\n z-index: 2000;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\ndiv.player-error-screen__content[data-error-screen], [data-player] div.player-error-screen__content[data-error-screen] {\n font-size: 14px;\n color: #CCCACA;\n margin-top: 45px;\n}\ndiv.player-error-screen__title[data-error-screen], [data-player] div.player-error-screen__title[data-error-screen] {\n font-weight: bold;\n line-height: 30px;\n font-size: 18px;\n}\ndiv.player-error-screen__message[data-error-screen], [data-player] div.player-error-screen__message[data-error-screen] {\n width: 90%;\n margin: 0 auto;\n}\ndiv.player-error-screen__code[data-error-screen], [data-player] div.player-error-screen__code[data-error-screen] {\n font-size: 13px;\n margin-top: 15px;\n}\ndiv.player-error-screen__reload, [data-player] div.player-error-screen__reload {\n cursor: pointer;\n width: 30px;\n margin: 15px auto 0;\n}");
|
|
48496
48501
|
|
|
48497
|
-
const T$
|
|
48502
|
+
const T$8 = 'plugins.error_screen';
|
|
48498
48503
|
/**
|
|
48499
48504
|
* `PLUGIN` that displays fatal errors nicely in the overlay on top of the player.
|
|
48500
48505
|
* @public
|
|
@@ -48570,7 +48575,7 @@ class ErrorScreen extends UICorePlugin {
|
|
|
48570
48575
|
}, 0);
|
|
48571
48576
|
}
|
|
48572
48577
|
onActiveContainerChanged() {
|
|
48573
|
-
trace(`${T$
|
|
48578
|
+
trace(`${T$8} onActiveContainerChanged`, {
|
|
48574
48579
|
reloading: this.core.options.reloading,
|
|
48575
48580
|
});
|
|
48576
48581
|
this.err = null;
|
|
@@ -48620,7 +48625,7 @@ class ErrorScreen extends UICorePlugin {
|
|
|
48620
48625
|
|
|
48621
48626
|
insertStyle(".player-logo[data-logo] {\n position: absolute;\n z-index: 2;\n width: 100%;\n height: 100%;\n}\n\n.clappr-logo {\n position: absolute;\n}");
|
|
48622
48627
|
|
|
48623
|
-
insertStyle("*,\n:focus,\n:visited {\n outline: none !important;\n}\n\n.multicamera[data-multicamera] {\n float: right;\n margin-top: 4px;\n position: relative;\n margin-right: 20px;\n width: 20px;\n}\n.multicamera[data-multicamera] button {\n background-color: transparent;\n color: #fff;\n font-family: Roboto, \"Open Sans\", Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n border: none;\n font-size: 14px;\n padding: 0;\n}\n.multicamera[data-multicamera] button svg {\n height: 20px;\n position: relative;\n margin-top: 6px;\n}\n.multicamera[data-multicamera] button:hover {\n color: #c9c9c9;\n}\n.multicamera[data-multicamera] button.changing {\n animation: pulse 0.5s infinite alternate;\n}\n.multicamera[data-multicamera] button span.quality-arrow {\n width: 9px;\n height: 6px;\n margin-top: 11px;\n margin-left: 5px;\n}\n.multicamera[data-multicamera] > ul {\n padding: 6px 0;\n right: -24px;\n width: 245px;\n list-style-type: none;\n position: absolute;\n bottom: 48px;\n border-radius: 4px;\n display: none;\n background-color: rgba(74, 74, 74, 0.9);\n}\n.multicamera[data-multicamera] > ul::after {\n content: \"\";\n position: absolute;\n top: 100%;\n left: 85%;\n margin-left: -10px;\n width: 0;\n height: 0;\n border-top: 10px solid rgba(74, 74, 74, 0.9);\n border-right: 10px solid transparent;\n border-left: 10px solid transparent;\n}\n.multicamera[data-multicamera] li {\n font-size: 10px;\n cursor: pointer;\n}\n.multicamera[data-multicamera] li .multicamera-item {\n display: flex;\n padding: 10px 0;\n justify-content: center;\n position: relative;\n}\n.multicamera[data-multicamera] li .multicamera-item[data-mulitcamera-selector-live=false] {\n pointer-events: none;\n}\n.multicamera[data-multicamera] li .multicamera-item[data-mulitcamera-selector-live=false] .multicamera-screenshot {\n opacity: 0.5;\n}\n.multicamera[data-multicamera] li .multicamera-item[data-mulitcamera-selector-live=false] .multicamera-text {\n opacity: 0.5;\n}\n.multicamera[data-multicamera] li .multicamera-item[data-mulitcamera-selector-live=false]:hover {\n background-color: rgba(0, 0, 0, 0);\n}\n.multicamera[data-multicamera] li .multicamera-item:hover, .multicamera[data-multicamera] li .multicamera-item.multicamera-active {\n background-color: rgba(0, 0, 0, 0.3);\n}\n.multicamera[data-multicamera] li .multicamera-item .multicamera-screenshot {\n width: 80px;\n height: 60px;\n}\n.multicamera[data-multicamera] li .multicamera-item .multicamera-screenshot img {\n width: 80px;\n height: 60px;\n}\n.multicamera[data-multicamera] li .multicamera-item .multicamera-text {\n width: 120px;\n text-align: left;\n margin-left: 15px;\n}\n.multicamera[data-multicamera] li .multicamera-item .multicamera-text .multicamera-title,\n.multicamera[data-multicamera] li .multicamera-item .multicamera-text .multicamera-description {\n width: 120px;\n height: 20px;\n font-family: Roboto, \"Open Sans\", Arial, sans-serif;\n font-size: 14px;\n font-weight: normal;\n font-style: normal;\n font-stretch: normal;\n line-height: 1.43;\n letter-spacing: normal;\n text-align: left;\n color: #fff;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n.multicamera[data-multicamera] li .multicamera-item .multicamera-text .multicamera-description {\n opacity: 0.6;\n}\n.multicamera[data-multicamera] li
|
|
48628
|
+
insertStyle("*,\n:focus,\n:visited {\n outline: none !important;\n}\n\n.multicamera[data-multicamera] {\n float: right;\n margin-top: 4px;\n position: relative;\n margin-right: 20px;\n width: 20px;\n}\n.multicamera[data-multicamera] button {\n background-color: transparent;\n color: #fff;\n font-family: Roboto, \"Open Sans\", Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n border: none;\n font-size: 14px;\n padding: 0;\n}\n.multicamera[data-multicamera] button svg {\n height: 20px;\n position: relative;\n margin-top: 6px;\n}\n.multicamera[data-multicamera] button:hover {\n color: #c9c9c9;\n}\n.multicamera[data-multicamera] button.changing {\n animation: pulse 0.5s infinite alternate;\n}\n.multicamera[data-multicamera] button span.quality-arrow {\n width: 9px;\n height: 6px;\n margin-top: 11px;\n margin-left: 5px;\n}\n.multicamera[data-multicamera] > ul {\n padding: 6px 0;\n right: -24px;\n width: 245px;\n list-style-type: none;\n position: absolute;\n bottom: 48px;\n border-radius: 4px;\n display: none;\n background-color: rgba(74, 74, 74, 0.9);\n}\n.multicamera[data-multicamera] > ul::after {\n content: \"\";\n position: absolute;\n top: 100%;\n left: 85%;\n margin-left: -10px;\n width: 0;\n height: 0;\n border-top: 10px solid rgba(74, 74, 74, 0.9);\n border-right: 10px solid transparent;\n border-left: 10px solid transparent;\n}\n.multicamera[data-multicamera] li {\n font-size: 10px;\n cursor: pointer;\n}\n.multicamera[data-multicamera] li .multicamera-item {\n display: flex;\n padding: 10px 0;\n justify-content: center;\n position: relative;\n}\n.multicamera[data-multicamera] li .multicamera-item[data-mulitcamera-selector-live=false] {\n pointer-events: none;\n}\n.multicamera[data-multicamera] li .multicamera-item[data-mulitcamera-selector-live=false] .multicamera-screenshot {\n opacity: 0.5;\n}\n.multicamera[data-multicamera] li .multicamera-item[data-mulitcamera-selector-live=false] .multicamera-text {\n opacity: 0.5;\n}\n.multicamera[data-multicamera] li .multicamera-item[data-mulitcamera-selector-live=false]:hover {\n background-color: rgba(0, 0, 0, 0);\n}\n.multicamera[data-multicamera] li .multicamera-item:hover, .multicamera[data-multicamera] li .multicamera-item.multicamera-active {\n background-color: rgba(0, 0, 0, 0.3);\n}\n.multicamera[data-multicamera] li .multicamera-item .multicamera-screenshot {\n width: 80px;\n height: 60px;\n}\n.multicamera[data-multicamera] li .multicamera-item .multicamera-screenshot img {\n width: 80px;\n height: 60px;\n}\n.multicamera[data-multicamera] li .multicamera-item .multicamera-text {\n width: 120px;\n text-align: left;\n margin-left: 15px;\n}\n.multicamera[data-multicamera] li .multicamera-item .multicamera-text .multicamera-title,\n.multicamera[data-multicamera] li .multicamera-item .multicamera-text .multicamera-description {\n width: 120px;\n height: 20px;\n font-family: Roboto, \"Open Sans\", Arial, sans-serif;\n font-size: 14px;\n font-weight: normal;\n font-style: normal;\n font-stretch: normal;\n line-height: 1.43;\n letter-spacing: normal;\n text-align: left;\n color: #fff;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n.multicamera[data-multicamera] li .multicamera-item .multicamera-text .multicamera-description {\n opacity: 0.6;\n}\n.multicamera[data-multicamera] li a {\n color: #444;\n padding: 2px 10px;\n display: block;\n text-decoration: none;\n}\n.multicamera[data-multicamera] li a:hover {\n background-color: #555;\n color: white;\n}\n.multicamera[data-multicamera] li a:hover a {\n color: white;\n text-decoration: none;\n}\n.multicamera[data-multicamera] li.current a {\n color: #f00;\n}");
|
|
48624
48629
|
|
|
48625
48630
|
const pipIcon = "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M21.05 3.00001C21.302 3.00001 21.5435 3.10003 21.7217 3.27833C21.9 3.45646 22 3.69802 22 3.95003V10.6H20.1V4.90003H4.90001V18.2H10.6V20.1H3.95001C3.69802 20.1 3.45647 20 3.27832 19.8217C3.10002 19.6436 3 19.402 3 19.15V3.95001C3 3.69802 3.10002 3.45647 3.27832 3.27832C3.45644 3.10002 3.69801 3 3.95001 3L21.05 3.00001ZM21.05 12.5C21.302 12.5 21.5435 12.6 21.7217 12.7783C21.9 12.9565 22 13.198 22 13.45V19.15C22 19.402 21.9 19.6436 21.7217 19.8217C21.5436 20 21.302 20.1 21.05 20.1H13.45C13.198 20.1 12.9564 20 12.7783 19.8217C12.6 19.6436 12.5 19.402 12.5 19.15V13.45C12.5 13.198 12.6 12.9565 12.7783 12.7783C12.9564 12.6 13.198 12.5 13.45 12.5H21.05ZM7.47178 6.12823L9.60928 8.26572L11.5501 6.32492V11.5499H6.32509L8.26589 9.60911L6.12839 7.47161L7.47178 6.12823Z\"\n fill=\"#C9C9C9\"/>\n</svg>\n";
|
|
48626
48631
|
|
|
@@ -48629,7 +48634,7 @@ const buttonHtml$2 = "<button class=\"gplayer-lite-btn gcore-skin-button-color\"
|
|
|
48629
48634
|
insertStyle(".media-control-skin-1 .media-control-item.media-control-pip {\n order: 95;\n}\n.media-control-skin-1 .media-control-item.media-control-pip button {\n height: 20px;\n}\n.media-control-skin-1 .media-control-item.media-control-pip button svg {\n height: 20px;\n}");
|
|
48630
48635
|
|
|
48631
48636
|
const VERSION$3 = '0.0.1';
|
|
48632
|
-
const T$
|
|
48637
|
+
const T$7 = `plugins.pip`;
|
|
48633
48638
|
/**
|
|
48634
48639
|
* `PLUGIN` that enables picture in picture mode.
|
|
48635
48640
|
* @beta
|
|
@@ -48712,7 +48717,7 @@ class PictureInPicture extends UICorePlugin {
|
|
|
48712
48717
|
}
|
|
48713
48718
|
}
|
|
48714
48719
|
requestPictureInPicture() {
|
|
48715
|
-
trace(`${T$
|
|
48720
|
+
trace(`${T$7} requestPictureInPicture`, {
|
|
48716
48721
|
videoElement: !!this.videoElement,
|
|
48717
48722
|
});
|
|
48718
48723
|
this.videoElement.requestPictureInPicture();
|
|
@@ -48744,7 +48749,7 @@ const DEFAULT_PLAYBACK_RATES = [
|
|
|
48744
48749
|
{ value: 2.0, label: '2x' },
|
|
48745
48750
|
];
|
|
48746
48751
|
const DEFAULT_PLAYBACK_RATE = 1;
|
|
48747
|
-
const T$
|
|
48752
|
+
const T$6 = 'plugins.playback_rate';
|
|
48748
48753
|
/**
|
|
48749
48754
|
* `PLUGIN` that allows changing the playback speed of the video.
|
|
48750
48755
|
* @beta
|
|
@@ -48851,7 +48856,7 @@ class PlaybackRate extends UICorePlugin {
|
|
|
48851
48856
|
this.mount();
|
|
48852
48857
|
}
|
|
48853
48858
|
mount() {
|
|
48854
|
-
trace(`${T$
|
|
48859
|
+
trace(`${T$6} mount`, {
|
|
48855
48860
|
shouldMount: this.shouldMount(),
|
|
48856
48861
|
});
|
|
48857
48862
|
if (!this.shouldMount()) {
|
|
@@ -48868,7 +48873,7 @@ class PlaybackRate extends UICorePlugin {
|
|
|
48868
48873
|
})));
|
|
48869
48874
|
}
|
|
48870
48875
|
onMetaDataLoaded() {
|
|
48871
|
-
trace(`${T$
|
|
48876
|
+
trace(`${T$6} onMetaDataLoaded`, {
|
|
48872
48877
|
playbackType: this.core.activePlayback.getPlaybackType(),
|
|
48873
48878
|
dvrEnabled: this.core.activePlayback.dvrEnabled,
|
|
48874
48879
|
});
|
|
@@ -48890,13 +48895,13 @@ class PlaybackRate extends UICorePlugin {
|
|
|
48890
48895
|
this.core.activePlayback?.setPlaybackRate(this.selectedRate);
|
|
48891
48896
|
}
|
|
48892
48897
|
else {
|
|
48893
|
-
trace(`${T$
|
|
48898
|
+
trace(`${T$6} onPlaybackRateChange not steering to the selected rate, it is seemingly a catchup algorithm working`, {
|
|
48894
48899
|
selectedRate: this.selectedRate,
|
|
48895
48900
|
});
|
|
48896
48901
|
}
|
|
48897
48902
|
}
|
|
48898
48903
|
shouldMount() {
|
|
48899
|
-
trace(`${T$
|
|
48904
|
+
trace(`${T$6} shouldMount`, {
|
|
48900
48905
|
playbackType: this.core.activePlayback?.getPlaybackType(),
|
|
48901
48906
|
dvrEnabled: this.core.activePlayback?.dvrEnabled,
|
|
48902
48907
|
});
|
|
@@ -48913,7 +48918,7 @@ class PlaybackRate extends UICorePlugin {
|
|
|
48913
48918
|
* @internal
|
|
48914
48919
|
*/
|
|
48915
48920
|
render() {
|
|
48916
|
-
trace(`${T$
|
|
48921
|
+
trace(`${T$6} render`, {
|
|
48917
48922
|
shouldMount: this.shouldMount(),
|
|
48918
48923
|
});
|
|
48919
48924
|
this.$el.html(PlaybackRate.listTemplate({
|
|
@@ -48959,13 +48964,13 @@ class PlaybackRate extends UICorePlugin {
|
|
|
48959
48964
|
}
|
|
48960
48965
|
}
|
|
48961
48966
|
syncRate() {
|
|
48962
|
-
trace(`${T$
|
|
48967
|
+
trace(`${T$6} syncRate`, {
|
|
48963
48968
|
selectedRate: this.selectedRate,
|
|
48964
48969
|
});
|
|
48965
48970
|
this.core.activePlayback?.setPlaybackRate(this.selectedRate);
|
|
48966
48971
|
}
|
|
48967
48972
|
resetPlaybackRate() {
|
|
48968
|
-
trace(`${T$
|
|
48973
|
+
trace(`${T$6} resetPlaybackRate`, {
|
|
48969
48974
|
selectedRate: this.selectedRate,
|
|
48970
48975
|
});
|
|
48971
48976
|
this.core.activePlayback?.setPlaybackRate(DEFAULT_PLAYBACK_RATE);
|
|
@@ -49000,7 +49005,7 @@ class PlaybackRate extends UICorePlugin {
|
|
|
49000
49005
|
?.label || `x${rate}`);
|
|
49001
49006
|
}
|
|
49002
49007
|
highlightCurrentRate() {
|
|
49003
|
-
trace(`${T$
|
|
49008
|
+
trace(`${T$6} highlightCurrentRate`, {
|
|
49004
49009
|
selectedRate: this.selectedRate,
|
|
49005
49010
|
});
|
|
49006
49011
|
this.allRateElements().removeClass('current');
|
|
@@ -49011,7 +49016,7 @@ class PlaybackRate extends UICorePlugin {
|
|
|
49011
49016
|
.addClass('gcore-skin-active');
|
|
49012
49017
|
}
|
|
49013
49018
|
updateGearOptionLabel() {
|
|
49014
|
-
trace(`${T$
|
|
49019
|
+
trace(`${T$6} updateGearOptionLabel`, {
|
|
49015
49020
|
selectedRate: this.selectedRate,
|
|
49016
49021
|
});
|
|
49017
49022
|
this.mount();
|
|
@@ -49025,7 +49030,7 @@ const posterHTML = "<div class=\"play-wrapper\" id=\"gplayer-poster\">\n <div
|
|
|
49025
49030
|
//Copyright 2014 Globo.com Player authors. All rights reserved.
|
|
49026
49031
|
// Use of this source code is governed by a BSD-style
|
|
49027
49032
|
// license that can be found in the LICENSE file.
|
|
49028
|
-
const T$
|
|
49033
|
+
const T$5 = 'plugins.poster';
|
|
49029
49034
|
/**
|
|
49030
49035
|
* `PLUGIN` that displays a poster image in the background and a big play button on top when playback is stopped
|
|
49031
49036
|
* @beta
|
|
@@ -49129,7 +49134,7 @@ class Poster extends UIContainerPlugin {
|
|
|
49129
49134
|
super.disable();
|
|
49130
49135
|
}
|
|
49131
49136
|
onError(error) {
|
|
49132
|
-
trace(`${T$
|
|
49137
|
+
trace(`${T$5} onError`, {
|
|
49133
49138
|
enabled: this.enabled,
|
|
49134
49139
|
});
|
|
49135
49140
|
if (this.hasFatalError) {
|
|
@@ -49262,7 +49267,7 @@ const hdIcon = "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"non
|
|
|
49262
49267
|
|
|
49263
49268
|
insertStyle(".quality-levels li.disabled {\n opacity: 0.5;\n pointer-events: none;\n}\n.quality-levels li.current {\n background-color: #000;\n}");
|
|
49264
49269
|
|
|
49265
|
-
const T$
|
|
49270
|
+
const T$4 = 'plugins.quality_levels';
|
|
49266
49271
|
const VERSION$2 = 'v2.22.5';
|
|
49267
49272
|
/**
|
|
49268
49273
|
* `PLUGIN` that provides a UI to select the desired quality level of the playback.
|
|
@@ -49505,7 +49510,7 @@ class QualityLevels extends UICorePlugin {
|
|
|
49505
49510
|
this.highlightCurrentLevel();
|
|
49506
49511
|
}
|
|
49507
49512
|
highlightCurrentLevel() {
|
|
49508
|
-
trace(`${T$
|
|
49513
|
+
trace(`${T$4} highlightCurrentLevel`, {
|
|
49509
49514
|
selectedLevelId: this.selectedLevelId,
|
|
49510
49515
|
});
|
|
49511
49516
|
this.allLevelElements()
|
|
@@ -49533,7 +49538,7 @@ insertStyle(".seek-time {\n position: absolute;\n white-space: nowrap;\n heig
|
|
|
49533
49538
|
// Use of this source code is governed by a BSD-style
|
|
49534
49539
|
// license that can be found at https://github.com/clappr/clappr-plugins/blob/master/LICENSE
|
|
49535
49540
|
const { formatTime } = Utils;
|
|
49536
|
-
const T$
|
|
49541
|
+
const T$3 = 'plugins.seek_time';
|
|
49537
49542
|
/**
|
|
49538
49543
|
* `PLUGIN` that adds a seek time indicator when the mouse pointer is over the seek bar.
|
|
49539
49544
|
* @beta
|
|
@@ -49592,7 +49597,7 @@ class SeekTime extends UICorePlugin {
|
|
|
49592
49597
|
showTime(event) {
|
|
49593
49598
|
this.hoveringOverSeekBar = true;
|
|
49594
49599
|
this.calculateHoverPosition(event);
|
|
49595
|
-
trace(`${T$
|
|
49600
|
+
trace(`${T$3} showTime`, {
|
|
49596
49601
|
hoverPosition: this.hoverPosition,
|
|
49597
49602
|
});
|
|
49598
49603
|
this.update();
|
|
@@ -49679,7 +49684,7 @@ const pluginHtml$1 = "<div class=\"skip-container\" id=\"mc-skip-container\">\n
|
|
|
49679
49684
|
|
|
49680
49685
|
insertStyle(".container-with-poster-clickable .mc-skip-time {\n height: 0;\n}\n\n.mc-skip-time {\n position: absolute;\n width: 100%;\n height: calc(100% - 50px);\n z-index: 9998;\n background-color: transparent;\n font-family: Roboto, \"Open Sans\", Arial, sans-serif;\n}\n.mc-skip-time .skip-container {\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: space-between;\n}\n.mc-skip-time .skip-container .skip-item {\n flex: 1 0 0px;\n height: 100%;\n}");
|
|
49681
49686
|
|
|
49682
|
-
const T$
|
|
49687
|
+
const T$2 = 'plugins.skip_time';
|
|
49683
49688
|
/**
|
|
49684
49689
|
* `PLUGIN` that allows skipping time by tapping on the left or right side of the video.
|
|
49685
49690
|
* @beta
|
|
@@ -49729,7 +49734,7 @@ class SkipTime extends UICorePlugin {
|
|
|
49729
49734
|
this.position = 'left';
|
|
49730
49735
|
}
|
|
49731
49736
|
handleRewindClicks() {
|
|
49732
|
-
trace(`${T$
|
|
49737
|
+
trace(`${T$2} handleRewindClicks`, {
|
|
49733
49738
|
position: this.position,
|
|
49734
49739
|
});
|
|
49735
49740
|
if (this.core.getPlaybackType() === Playback.LIVE &&
|
|
@@ -49740,7 +49745,7 @@ class SkipTime extends UICorePlugin {
|
|
|
49740
49745
|
this.handleSkip();
|
|
49741
49746
|
}
|
|
49742
49747
|
handleSkip() {
|
|
49743
|
-
trace(`${T$
|
|
49748
|
+
trace(`${T$2} handleSkip`, {
|
|
49744
49749
|
position: this.position,
|
|
49745
49750
|
});
|
|
49746
49751
|
if (Browser.isMobile) {
|
|
@@ -49795,7 +49800,7 @@ insertStyle(".spinner-three-bounce[data-spinner] {\n position: absolute;\n wid
|
|
|
49795
49800
|
// Use of this source code is governed by a BSD-style
|
|
49796
49801
|
// license that can be found in the LICENSE file.
|
|
49797
49802
|
// https://github.com/clappr/clappr-plugins/blob/ffaa9d27005fa5a8a7c243ffc47eb5655b84b371/LICENSE
|
|
49798
|
-
const T$
|
|
49803
|
+
const T$1 = 'plugins.spinner';
|
|
49799
49804
|
/**
|
|
49800
49805
|
* Custom events emitted by the plugin
|
|
49801
49806
|
* @public
|
|
@@ -49868,14 +49873,14 @@ class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
49868
49873
|
this._hide();
|
|
49869
49874
|
}
|
|
49870
49875
|
onStop() {
|
|
49871
|
-
trace(`${T$
|
|
49876
|
+
trace(`${T$1} onStop`, {
|
|
49872
49877
|
hasFatalError: this.hasFatalError,
|
|
49873
49878
|
});
|
|
49874
49879
|
this._hide();
|
|
49875
49880
|
}
|
|
49876
49881
|
onError(e) {
|
|
49877
49882
|
this.hasFatalError = e.code === PlaybackErrorCode.MediaSourceUnavailable;
|
|
49878
|
-
trace(`${T$
|
|
49883
|
+
trace(`${T$1} onError`, {
|
|
49879
49884
|
hasFatalError: this.hasFatalError,
|
|
49880
49885
|
error: e.code,
|
|
49881
49886
|
});
|
|
@@ -49908,7 +49913,7 @@ class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
49908
49913
|
}
|
|
49909
49914
|
}
|
|
49910
49915
|
_hide() {
|
|
49911
|
-
trace(`${T$
|
|
49916
|
+
trace(`${T$1} _hide`, {
|
|
49912
49917
|
userShown: this.userShown,
|
|
49913
49918
|
});
|
|
49914
49919
|
if (this.userShown) {
|
|
@@ -49925,7 +49930,7 @@ class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
49925
49930
|
* @internal
|
|
49926
49931
|
*/
|
|
49927
49932
|
render() {
|
|
49928
|
-
trace(`${T$
|
|
49933
|
+
trace(`${T$1} render`, {
|
|
49929
49934
|
buffering: this.container.buffering,
|
|
49930
49935
|
});
|
|
49931
49936
|
this.$el.html(this.template());
|
|
@@ -49943,7 +49948,7 @@ class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
49943
49948
|
}
|
|
49944
49949
|
}
|
|
49945
49950
|
|
|
49946
|
-
const T
|
|
49951
|
+
const T = 'plugins.source_controller';
|
|
49947
49952
|
const INITIAL_RETRY_DELAY = 1000;
|
|
49948
49953
|
const MAX_RETRY_DELAY = 5000;
|
|
49949
49954
|
const RETRY_DELAY_BLUR = 500;
|
|
@@ -50089,7 +50094,7 @@ class SourceController extends CorePlugin {
|
|
|
50089
50094
|
this.core.getPlugin('error_screen')?.disable(); // TODO test
|
|
50090
50095
|
}
|
|
50091
50096
|
onActiveContainerChanged() {
|
|
50092
|
-
trace(`${T
|
|
50097
|
+
trace(`${T} onActiveContainerChanged`, {
|
|
50093
50098
|
retrying: this.active,
|
|
50094
50099
|
currentSource: this.sourcesList[this.currentSourceIndex],
|
|
50095
50100
|
});
|
|
@@ -50110,7 +50115,7 @@ class SourceController extends CorePlugin {
|
|
|
50110
50115
|
}
|
|
50111
50116
|
bindContainerEventListeners() {
|
|
50112
50117
|
this.core.activePlayback.on(Events$1.PLAYBACK_ERROR, (error) => {
|
|
50113
|
-
trace(`${T
|
|
50118
|
+
trace(`${T} on PLAYBACK_ERROR`, {
|
|
50114
50119
|
error: {
|
|
50115
50120
|
code: error?.code,
|
|
50116
50121
|
description: error?.description,
|
|
@@ -50134,7 +50139,7 @@ class SourceController extends CorePlugin {
|
|
|
50134
50139
|
}
|
|
50135
50140
|
});
|
|
50136
50141
|
this.core.activePlayback.on(Events$1.PLAYBACK_PLAY, () => {
|
|
50137
|
-
trace(`${T
|
|
50142
|
+
trace(`${T} on PLAYBACK_PLAY`, {
|
|
50138
50143
|
currentSource: this.sourcesList[this.currentSourceIndex],
|
|
50139
50144
|
retrying: this.active,
|
|
50140
50145
|
});
|
|
@@ -50153,7 +50158,7 @@ class SourceController extends CorePlugin {
|
|
|
50153
50158
|
this.sourcesDelay = {};
|
|
50154
50159
|
}
|
|
50155
50160
|
retryPlayback() {
|
|
50156
|
-
trace(`${T
|
|
50161
|
+
trace(`${T} retryPlayback enter`, {
|
|
50157
50162
|
currentSourceIndex: this.currentSourceIndex,
|
|
50158
50163
|
currentSource: this.sourcesList[this.currentSourceIndex],
|
|
50159
50164
|
});
|
|
@@ -50166,7 +50171,7 @@ class SourceController extends CorePlugin {
|
|
|
50166
50171
|
this.switching = false;
|
|
50167
50172
|
this.core.load(nextSource.source, nextSource.mimeType);
|
|
50168
50173
|
setTimeout(() => {
|
|
50169
|
-
trace(`${T
|
|
50174
|
+
trace(`${T} retryPlayback playing`, {
|
|
50170
50175
|
autoPlay: this.autoPlay,
|
|
50171
50176
|
});
|
|
50172
50177
|
this.core.activeContainer.play({
|
|
@@ -50194,19 +50199,18 @@ class SourceController extends CorePlugin {
|
|
|
50194
50199
|
}
|
|
50195
50200
|
}
|
|
50196
50201
|
|
|
50197
|
-
insertStyle(".media-control-skin-1 .media-control-cc button.media-control-button {\n display: flex;\n justify-content: center;\n padding: 0;\n align-items: center;\n vertical-align: top;\n}\n.media-control-skin-1 .media-control-cc button.media-control-button:hover {\n color: white;\n}\n.media-control-skin-1 .media-control-cc ul
|
|
50202
|
+
insertStyle(".media-control-skin-1 .media-control-cc button.media-control-button {\n display: flex;\n justify-content: center;\n padding: 0;\n align-items: center;\n vertical-align: top;\n}\n.media-control-skin-1 .media-control-cc button.media-control-button:hover {\n color: white;\n}\n.media-control-skin-1 .media-control-cc ul li {\n text-align: center;\n}\n.media-control-skin-1 .media-control-cc ul li a {\n height: 30px;\n padding: 5px 10px;\n color: #fffffe;\n}\n.media-control-skin-1 .media-control-cc ul li a:hover {\n background-color: rgba(0, 0, 0, 0.4);\n}\n.media-control-skin-1 .media-control-cc ul li.current a {\n background-color: rgba(0, 0, 0, 0.4);\n}\n.media-control-skin-1 .media-control-cc ul li:first-child a {\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n.media-control-skin-1 .media-control-cc ul li:last-child a {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n}\n.media-control-skin-1 .media-control-cc {\n position: relative;\n order: 85;\n}\n\n.container .gplayer-cc-line {\n position: absolute;\n bottom: calc(var(--bottom-panel) + 5px);\n width: 100%;\n}\n.container .gplayer-cc-line p {\n width: auto;\n background-color: rgba(0, 0, 0, 0.4);\n color: white;\n display: inline-block;\n}");
|
|
50198
50203
|
|
|
50199
50204
|
const subtitlesOffIcon = "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M16.238 16.1C13.979 16.1 12.578 14.538 12.578 11.997C12.578 9.462 13.973 7.9 16.238 7.9C18.087 7.9 19.5029 9.127 19.6219 10.824H18.032C17.876 9.927 17.168 9.338 16.238 9.338C15.011 9.338 14.249 10.354 14.249 11.997C14.249 13.641 15.011 14.662 16.243 14.662C17.178 14.662 17.881 14.111 18.038 13.251H19.627C19.492 14.938 18.119 16.1 16.238 16.1ZM8.03198 16.1C5.77298 16.1 4.37299 14.538 4.37299 11.997C4.37299 9.462 5.76798 7.9 8.03198 7.9C9.88098 7.9 11.298 9.127 11.416 10.824H9.82697C9.67097 9.927 8.96198 9.338 8.03198 9.338C6.80598 9.338 6.04297 10.354 6.04297 11.997C6.04297 13.641 6.80596 14.662 8.03796 14.662C8.97296 14.662 9.67601 14.111 9.83301 13.251H11.422C11.287 14.938 9.91398 16.1 8.03198 16.1ZM22.5 3H1.5C0.672 3 0 3.671 0 4.5V19.5C0 20.329 0.672 21 1.5 21H22.5C23.329 21 24 20.329 24 19.5V4.5C24 3.671 23.329 3 22.5 3Z\"\n fill=\"#C9C9C9\"/>\n</svg>\n";
|
|
50200
50205
|
|
|
50201
50206
|
const subtitlesOnIcon = "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M16.238 16.1C13.979 16.1 12.578 14.538 12.578 11.997C12.578 9.462 13.973 7.9 16.238 7.9C18.087 7.9 19.5029 9.127 19.6219 10.824H18.032C17.876 9.927 17.168 9.338 16.238 9.338C15.011 9.338 14.249 10.354 14.249 11.997C14.249 13.641 15.011 14.662 16.243 14.662C17.178 14.662 17.881 14.111 18.038 13.251H19.627C19.492 14.938 18.119 16.1 16.238 16.1ZM8.03198 16.1C5.77298 16.1 4.37299 14.538 4.37299 11.997C4.37299 9.462 5.76798 7.9 8.03198 7.9C9.88098 7.9 11.298 9.127 11.416 10.824H9.82697C9.67097 9.927 8.96198 9.338 8.03198 9.338C6.80598 9.338 6.04297 10.354 6.04297 11.997C6.04297 13.641 6.80596 14.662 8.03796 14.662C8.97296 14.662 9.67601 14.111 9.83301 13.251H11.422C11.287 14.938 9.91398 16.1 8.03198 16.1ZM22.5 3H1.5C0.672 3 0 3.671 0 4.5V19.5C0 20.329 0.672 21 1.5 21H22.5C23.329 21 24 20.329 24 19.5V4.5C24 3.671 23.329 3 22.5 3Z\"\n fill=\"#C9C9C9\"/>\n <rect y=\"22\" width=\"24\" height=\"2\" rx=\"1\" fill=\"#F6413B\"/>\n</svg>\n";
|
|
50202
50207
|
|
|
50203
|
-
const comboboxHTML = "<button
|
|
50208
|
+
const comboboxHTML = "<button\n class='media-control-button media-control-icon gcore-skin-button-color media-control-dd'\n id=\"gplayer-cc-button\"\n aria-haspopup=\"menu\"\n aria-expanded=\"false\"\n aria-controls=\"gplayer-cc-menu\"\n>\n</button>\n\n<ul class='gcore-skin-bg-color media-control-dd__popup' id=\"gplayer-cc-menu\" role=\"menu\">\n <% for (const t of tracks) { %>\n <li>\n <a\n href=\"#\"\n class=\"gcore-skin-text-color\"\n data-item=\"<%= t.id %>\"\n role=\"menuitemradio\"\n aria-checked=\"<%= t.id === current %>\"\n >\n <%= t.name %>\n </a>\n </li>\n <% } %>\n <li class=\"current\">\n <a\n href=\"#\"\n class='gcore-skin-text-color gcore-skin-active'\n data-item=\"-1\"\n role=\"menuitemradio\"\n aria-checked=\"<%= current === -1 %>\"\n >\n <%= i18n.t('off') %>\n </a>\n </li>\n</ul>";
|
|
50204
50209
|
|
|
50205
|
-
const stringHTML = "<div class=\"cc-line\" id=\"cc-line\">\n <p></p>\n</div>\n";
|
|
50210
|
+
const stringHTML = "<div class=\"gplayer-cc-line\" id=\"gplayer-cc-line\">\n <p></p>\n</div>\n";
|
|
50206
50211
|
|
|
50207
50212
|
const VERSION = '2.19.14';
|
|
50208
50213
|
const LOCAL_STORAGE_CC_ID = 'gplayer.plugins.cc.selected';
|
|
50209
|
-
const T = 'plugins.cc';
|
|
50210
50214
|
/**
|
|
50211
50215
|
* `PLUGIN` that provides a UI to select the subtitles when available.
|
|
50212
50216
|
* @beta
|
|
@@ -50237,6 +50241,7 @@ const T = 'plugins.cc';
|
|
|
50237
50241
|
class ClosedCaptions extends UICorePlugin {
|
|
50238
50242
|
isPreselectedApplied = false;
|
|
50239
50243
|
active = false;
|
|
50244
|
+
open = false;
|
|
50240
50245
|
track = null;
|
|
50241
50246
|
tracks = [];
|
|
50242
50247
|
$line = null;
|
|
@@ -50258,14 +50263,14 @@ class ClosedCaptions extends UICorePlugin {
|
|
|
50258
50263
|
static get version() {
|
|
50259
50264
|
return VERSION;
|
|
50260
50265
|
}
|
|
50261
|
-
static
|
|
50262
|
-
static
|
|
50266
|
+
static templateControl = tmpl(comboboxHTML);
|
|
50267
|
+
static templateLine = tmpl(stringHTML);
|
|
50263
50268
|
/**
|
|
50264
50269
|
* @internal
|
|
50265
50270
|
*/
|
|
50266
50271
|
get attributes() {
|
|
50267
50272
|
return {
|
|
50268
|
-
class: 'media-control-cc',
|
|
50273
|
+
class: 'media-control-cc media-control-dd__wrap',
|
|
50269
50274
|
};
|
|
50270
50275
|
}
|
|
50271
50276
|
/**
|
|
@@ -50273,8 +50278,8 @@ class ClosedCaptions extends UICorePlugin {
|
|
|
50273
50278
|
*/
|
|
50274
50279
|
get events() {
|
|
50275
50280
|
return {
|
|
50276
|
-
'click #cc-
|
|
50277
|
-
'click #cc-button': 'toggleMenu',
|
|
50281
|
+
'click #gplayer-cc-menu [data-item]': 'onItemSelect',
|
|
50282
|
+
'click #gplayer-cc-button': 'toggleMenu',
|
|
50278
50283
|
};
|
|
50279
50284
|
}
|
|
50280
50285
|
get preselectedLanguage() {
|
|
@@ -50287,13 +50292,12 @@ class ClosedCaptions extends UICorePlugin {
|
|
|
50287
50292
|
*/
|
|
50288
50293
|
bindEvents() {
|
|
50289
50294
|
this.listenTo(this.core, Events$1.CORE_READY, this.onCoreReady);
|
|
50290
|
-
this.listenTo(this.core, Events$1.CORE_RESIZE, this.playerResize);
|
|
50291
50295
|
this.listenTo(this.core, Events$1.CORE_ACTIVE_CONTAINER_CHANGED, this.onContainerChanged);
|
|
50292
50296
|
}
|
|
50293
50297
|
onCoreReady() {
|
|
50294
50298
|
const mediaControl = this.core.getPlugin('media_control');
|
|
50295
50299
|
assert(mediaControl, 'media_control plugin is required');
|
|
50296
|
-
this.listenTo(mediaControl, Events$1.MEDIACONTROL_RENDERED, this.
|
|
50300
|
+
this.listenTo(mediaControl, Events$1.MEDIACONTROL_RENDERED, this.mount);
|
|
50297
50301
|
this.listenTo(mediaControl, Events$1.MEDIACONTROL_HIDE, () => {
|
|
50298
50302
|
this.hideMenu();
|
|
50299
50303
|
});
|
|
@@ -50304,10 +50308,15 @@ class ClosedCaptions extends UICorePlugin {
|
|
|
50304
50308
|
});
|
|
50305
50309
|
}
|
|
50306
50310
|
onContainerChanged() {
|
|
50307
|
-
this.listenTo(this.core.activeContainer, Events$1.CONTAINER_FULLSCREEN, this.
|
|
50311
|
+
this.listenTo(this.core.activeContainer, Events$1.CONTAINER_FULLSCREEN, this.onContainerResize);
|
|
50312
|
+
this.listenTo(this.core.activeContainer, Events$1.CONTAINER_RESIZE, this.onContainerResize);
|
|
50308
50313
|
this.listenTo(this.core.activeContainer, 'container:advertisement:start', this.onStartAd);
|
|
50309
50314
|
this.listenTo(this.core.activePlayback, Events$1.PLAYBACK_SUBTITLE_AVAILABLE, this.onSubtitleAvailable);
|
|
50310
50315
|
this.listenTo(this.core.activePlayback, Events$1.PLAYBACK_SUBTITLE_CHANGED, this.onSubtitleChanged);
|
|
50316
|
+
this.listenTo(this.core.activeContainer, Events$1.CONTAINER_CLICK, () => {
|
|
50317
|
+
// TODO test
|
|
50318
|
+
this.hideMenu();
|
|
50319
|
+
});
|
|
50311
50320
|
// fix for iOS
|
|
50312
50321
|
const video = this.core.activePlayback.el;
|
|
50313
50322
|
assert(video, 'video element is required');
|
|
@@ -50324,6 +50333,7 @@ class ClosedCaptions extends UICorePlugin {
|
|
|
50324
50333
|
}
|
|
50325
50334
|
onSubtitleAvailable() {
|
|
50326
50335
|
this.applyTracks();
|
|
50336
|
+
this.mount();
|
|
50327
50337
|
}
|
|
50328
50338
|
onSubtitleChanged({ id }) {
|
|
50329
50339
|
if (id === -1) {
|
|
@@ -50372,7 +50382,7 @@ class ClosedCaptions extends UICorePlugin {
|
|
|
50372
50382
|
this.show();
|
|
50373
50383
|
this.stopListening(this.core.activeContainer, 'container:advertisement:finish', this.onFinishAd);
|
|
50374
50384
|
}
|
|
50375
|
-
|
|
50385
|
+
onContainerResize() {
|
|
50376
50386
|
const shouldShow = this.core.activeContainer &&
|
|
50377
50387
|
isFullscreen(this.core.activeContainer.el) &&
|
|
50378
50388
|
this.track &&
|
|
@@ -50384,6 +50394,7 @@ class ClosedCaptions extends UICorePlugin {
|
|
|
50384
50394
|
}
|
|
50385
50395
|
try {
|
|
50386
50396
|
this.resizeFont();
|
|
50397
|
+
this.clampPopup();
|
|
50387
50398
|
}
|
|
50388
50399
|
catch (error) {
|
|
50389
50400
|
}
|
|
@@ -50393,7 +50404,10 @@ class ClosedCaptions extends UICorePlugin {
|
|
|
50393
50404
|
*/
|
|
50394
50405
|
hide() {
|
|
50395
50406
|
this.active = false;
|
|
50407
|
+
this.open = false;
|
|
50396
50408
|
this.renderIcon();
|
|
50409
|
+
this.$el.find('#gplayer-cc-menu').hide();
|
|
50410
|
+
this.$el.find('#gplayer-cc-button').attr('aria-expanded', 'false');
|
|
50397
50411
|
this.$line.hide();
|
|
50398
50412
|
if (this.tracks) {
|
|
50399
50413
|
for (const t of this.tracks) {
|
|
@@ -50436,17 +50450,18 @@ class ClosedCaptions extends UICorePlugin {
|
|
|
50436
50450
|
if (!this.core.activeContainer) {
|
|
50437
50451
|
return this;
|
|
50438
50452
|
}
|
|
50439
|
-
|
|
50440
|
-
|
|
50441
|
-
|
|
50442
|
-
|
|
50443
|
-
|
|
50444
|
-
this.$el.find('#cc-
|
|
50445
|
-
this.
|
|
50446
|
-
this.$line
|
|
50453
|
+
this.$el.html(ClosedCaptions.templateControl({
|
|
50454
|
+
tracks: this.tracks ?? [],
|
|
50455
|
+
i18n: this.core.i18n,
|
|
50456
|
+
current: this.track?.id ?? -1,
|
|
50457
|
+
}));
|
|
50458
|
+
this.$el.find('#gplayer-cc-menu').hide();
|
|
50459
|
+
this.open = false;
|
|
50460
|
+
this.core.activeContainer.$el.find('#gplayer-cc-line').remove();
|
|
50461
|
+
this.$line = $(ClosedCaptions.templateLine());
|
|
50447
50462
|
this.resizeFont();
|
|
50463
|
+
this.clampPopup();
|
|
50448
50464
|
this.core.activeContainer.$el.append(this.$line);
|
|
50449
|
-
mediaControl.slot('cc', this.$el);
|
|
50450
50465
|
this.updateSelection();
|
|
50451
50466
|
this.renderIcon();
|
|
50452
50467
|
return this;
|
|
@@ -50460,8 +50475,10 @@ class ClosedCaptions extends UICorePlugin {
|
|
|
50460
50475
|
this.updateSelection();
|
|
50461
50476
|
}
|
|
50462
50477
|
onItemSelect(event) {
|
|
50463
|
-
|
|
50464
|
-
|
|
50478
|
+
// event.target does not exist for some reason in tests
|
|
50479
|
+
const id = (event.target ?? event.currentTarget).dataset?.item ??
|
|
50480
|
+
'-1';
|
|
50481
|
+
localStorage.setItem(LOCAL_STORAGE_CC_ID, id); // TODO store language instead
|
|
50465
50482
|
this.selectItem(this.findById(Number(id)));
|
|
50466
50483
|
this.hideMenu();
|
|
50467
50484
|
return false;
|
|
@@ -50478,25 +50495,33 @@ class ClosedCaptions extends UICorePlugin {
|
|
|
50478
50495
|
}
|
|
50479
50496
|
}
|
|
50480
50497
|
hideMenu() {
|
|
50481
|
-
this
|
|
50498
|
+
this.open = false;
|
|
50499
|
+
this.$el.find('#gplayer-cc-menu').hide();
|
|
50500
|
+
this.$el.find('#gplayer-cc-button').attr('aria-expanded', 'false');
|
|
50482
50501
|
}
|
|
50483
50502
|
toggleMenu() {
|
|
50484
|
-
trace(`${T} toggleMenu`, { display: this.$el.find('#cc-select').css('display') });
|
|
50485
50503
|
this.core
|
|
50486
50504
|
.getPlugin('media_control')
|
|
50487
50505
|
.trigger(ExtendedEvents.MEDIACONTROL_MENU_COLLAPSE, this.name);
|
|
50488
|
-
this
|
|
50489
|
-
|
|
50506
|
+
this.open = !this.open;
|
|
50507
|
+
if (this.open) {
|
|
50508
|
+
this.$el.find('#gplayer-cc-menu').show();
|
|
50509
|
+
}
|
|
50510
|
+
else {
|
|
50511
|
+
this.$el.find('#gplayer-cc-menu').hide();
|
|
50512
|
+
}
|
|
50513
|
+
this.$el.find('#gplayer-cc-button').attr('aria-expanded', this.open);
|
|
50490
50514
|
}
|
|
50491
50515
|
itemElement(id) {
|
|
50492
|
-
|
|
50516
|
+
// TODO fix semantically
|
|
50517
|
+
return this.$el.find(`#gplayer-cc-menu [data-item="${id}"]`).parent();
|
|
50493
50518
|
}
|
|
50494
50519
|
allItemElements() {
|
|
50495
|
-
return this.$('#cc-
|
|
50520
|
+
return this.$el.find('#gplayer-cc-menu li'); // TODO fix semantically
|
|
50496
50521
|
}
|
|
50497
50522
|
selectSubtitles() {
|
|
50498
50523
|
const trackId = this.track ? this.track.id : -1;
|
|
50499
|
-
this.core.activePlayback.closedCaptionsTrackId = trackId;
|
|
50524
|
+
this.core.activePlayback.closedCaptionsTrackId = trackId; // TODO test
|
|
50500
50525
|
}
|
|
50501
50526
|
getSubtitleText(track) {
|
|
50502
50527
|
const currentTime = this.core.activePlayback?.getCurrentTime() ?? 0;
|
|
@@ -50506,6 +50531,7 @@ class ClosedCaptions extends UICorePlugin {
|
|
|
50506
50531
|
for (const cue of cues) {
|
|
50507
50532
|
if (currentTime >= cue.startTime && currentTime <= cue.endTime) {
|
|
50508
50533
|
lines.push(cue.getCueAsHTML().textContent);
|
|
50534
|
+
// TODO break?
|
|
50509
50535
|
}
|
|
50510
50536
|
}
|
|
50511
50537
|
}
|
|
@@ -50531,19 +50557,31 @@ class ClosedCaptions extends UICorePlugin {
|
|
|
50531
50557
|
this.allItemElements()
|
|
50532
50558
|
.removeClass('current')
|
|
50533
50559
|
.find('a')
|
|
50534
|
-
.removeClass('gcore-skin-active')
|
|
50535
|
-
|
|
50536
|
-
track: this.track?.id,
|
|
50537
|
-
});
|
|
50560
|
+
.removeClass('gcore-skin-active')
|
|
50561
|
+
.attr('aria-checked', 'false');
|
|
50538
50562
|
const currentLevelElement = this.itemElement(this.track ? this.track.id : -1);
|
|
50539
50563
|
currentLevelElement
|
|
50540
50564
|
.addClass('current')
|
|
50541
50565
|
.find('a')
|
|
50542
|
-
.addClass('gcore-skin-active')
|
|
50566
|
+
.addClass('gcore-skin-active')
|
|
50567
|
+
.attr('aria-checked', 'true');
|
|
50543
50568
|
}
|
|
50544
50569
|
renderIcon() {
|
|
50570
|
+
// render both icons at once
|
|
50545
50571
|
const icon = this.active ? subtitlesOnIcon : subtitlesOffIcon;
|
|
50546
|
-
this.$el.find('
|
|
50572
|
+
this.$el.find('#gplayer-cc-button').html(icon);
|
|
50573
|
+
}
|
|
50574
|
+
clampPopup() {
|
|
50575
|
+
const availableHeight = this.core
|
|
50576
|
+
.getPlugin('media_control')
|
|
50577
|
+
.getAvailablePopupHeight();
|
|
50578
|
+
this.$el.find('#gplayer-cc-menu').css('max-height', `${availableHeight}px`);
|
|
50579
|
+
}
|
|
50580
|
+
mount() {
|
|
50581
|
+
if (this.shouldRender()) {
|
|
50582
|
+
const mediaControl = this.core.getPlugin('media_control');
|
|
50583
|
+
mediaControl.slot('cc', this.$el);
|
|
50584
|
+
}
|
|
50547
50585
|
}
|
|
50548
50586
|
}
|
|
50549
50587
|
|