@gcorevideo/player 2.22.2 → 2.22.4
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/audio-selector/style.scss +4 -2
- package/assets/audio-selector/track-selector.ejs +2 -2
- package/assets/media-control/container.scss +1 -1
- package/assets/spinner-three-bounce/spinner.scss +1 -1
- package/dist/core.js +1 -1
- package/dist/index.css +1374 -1372
- package/dist/index.js +76 -95
- package/dist/player.d.ts +6 -3
- package/dist/plugins/index.css +571 -569
- package/dist/plugins/index.js +47 -59
- package/docs/api/player.md +1 -1
- package/docs/api/player.sourcecontroller.md +1 -1
- package/docs/api/player.spinnerthreebounce.md +1 -1
- package/lib/index.plugins.d.ts +2 -0
- package/lib/index.plugins.d.ts.map +1 -1
- package/lib/index.plugins.js +2 -0
- package/lib/plugins/audio-selector/AudioSelector.d.ts +3 -9
- package/lib/plugins/audio-selector/AudioSelector.d.ts.map +1 -1
- package/lib/plugins/audio-selector/AudioSelector.js +34 -57
- package/lib/plugins/spinner-three-bounce/SpinnerThreeBounce.d.ts +1 -0
- package/lib/plugins/spinner-three-bounce/SpinnerThreeBounce.d.ts.map +1 -1
- package/lib/plugins/spinner-three-bounce/SpinnerThreeBounce.js +1 -0
- package/lib/testUtils.d.ts +2 -0
- package/lib/testUtils.d.ts.map +1 -1
- package/lib/testUtils.js +2 -0
- package/package.json +1 -1
- package/src/index.plugins.ts +2 -0
- package/src/plugins/audio-selector/AudioSelector.ts +36 -72
- package/src/plugins/audio-selector/__tests__/AudioSelector.test.ts +176 -0
- package/src/plugins/audio-selector/__tests__/__snapshots__/AudioSelector.test.ts.snap +67 -0
- package/src/plugins/spinner-three-bounce/SpinnerThreeBounce.ts +1 -0
- package/src/testUtils.ts +2 -0
- package/temp/player.api.json +2 -2
- package/tsconfig.tsbuildinfo +1 -1
- package/assets/bottom-gear/bottomgear copy.ejs +0 -10
package/dist/index.js
CHANGED
|
@@ -12680,7 +12680,7 @@ var PlaybackEvents;
|
|
|
12680
12680
|
// https://github.com/clappr/clappr/blob/8752995ea439321ac7ca3cd35e8c64de7a3c3d17/LICENSE
|
|
12681
12681
|
const AUTO$1 = -1;
|
|
12682
12682
|
const { now: now$2 } = Utils;
|
|
12683
|
-
const T$
|
|
12683
|
+
const T$k = 'playback.dash';
|
|
12684
12684
|
class DashPlayback extends BasePlayback {
|
|
12685
12685
|
_levels = null;
|
|
12686
12686
|
_currentLevel = null;
|
|
@@ -12956,10 +12956,10 @@ class DashPlayback extends BasePlayback {
|
|
|
12956
12956
|
}
|
|
12957
12957
|
_onPlaybackError = (event) => {
|
|
12958
12958
|
// TODO
|
|
12959
|
-
trace(`${T$
|
|
12959
|
+
trace(`${T$k} _onPlaybackError`, { event });
|
|
12960
12960
|
};
|
|
12961
12961
|
_onDASHJSSError = (event) => {
|
|
12962
|
-
trace(`${T$
|
|
12962
|
+
trace(`${T$k} _onDASHJSSError`, { event });
|
|
12963
12963
|
this._stopTimeUpdateTimer();
|
|
12964
12964
|
// Note that the other error types are deprecated
|
|
12965
12965
|
const e = event.error;
|
|
@@ -12994,7 +12994,7 @@ class DashPlayback extends BasePlayback {
|
|
|
12994
12994
|
}
|
|
12995
12995
|
};
|
|
12996
12996
|
triggerError(error) {
|
|
12997
|
-
trace(`${T$
|
|
12997
|
+
trace(`${T$k} triggerError`, { error });
|
|
12998
12998
|
// this triggers Events.ERROR to be handled by the UI
|
|
12999
12999
|
this.trigger(Events$1.PLAYBACK_ERROR, this.createError(error, {
|
|
13000
13000
|
useCodePrefix: false,
|
|
@@ -13033,7 +13033,7 @@ class DashPlayback extends BasePlayback {
|
|
|
13033
13033
|
}
|
|
13034
13034
|
get dvrEnabled() {
|
|
13035
13035
|
if (!this._dash) {
|
|
13036
|
-
trace(`${T$
|
|
13036
|
+
trace(`${T$k} dvrEnable no dash player instance`);
|
|
13037
13037
|
return false;
|
|
13038
13038
|
}
|
|
13039
13039
|
return (this._dash?.getDVRWindowSize() >= this._minDvrSize &&
|
|
@@ -13055,7 +13055,7 @@ class DashPlayback extends BasePlayback {
|
|
|
13055
13055
|
this.trigger(Events$1.PLAYBACK_PROGRESS, progress, {});
|
|
13056
13056
|
}
|
|
13057
13057
|
play() {
|
|
13058
|
-
trace(`${T$
|
|
13058
|
+
trace(`${T$k} play`, { dash: !!this._dash });
|
|
13059
13059
|
if (!this._dash) {
|
|
13060
13060
|
this._setup();
|
|
13061
13061
|
}
|
|
@@ -13141,7 +13141,7 @@ class DashPlayback extends BasePlayback {
|
|
|
13141
13141
|
}
|
|
13142
13142
|
// @ts-expect-error
|
|
13143
13143
|
get currentAudioTrack() {
|
|
13144
|
-
trace(`${T$
|
|
13144
|
+
trace(`${T$k} get currentAudioTrack`);
|
|
13145
13145
|
assert.ok(this._dash, 'DASH.js MediaPlayer is not initialized');
|
|
13146
13146
|
const t = this._dash.getCurrentTrackFor('audio');
|
|
13147
13147
|
if (!t) {
|
|
@@ -41842,7 +41842,7 @@ const AUTO = -1;
|
|
|
41842
41842
|
const DEFAULT_RECOVER_ATTEMPTS = 16;
|
|
41843
41843
|
Events$1.register('PLAYBACK_FRAGMENT_CHANGED');
|
|
41844
41844
|
Events$1.register('PLAYBACK_FRAGMENT_PARSING_METADATA');
|
|
41845
|
-
const T$
|
|
41845
|
+
const T$j = 'playback.hls';
|
|
41846
41846
|
class HlsPlayback extends BasePlayback {
|
|
41847
41847
|
_ccIsSetup = false;
|
|
41848
41848
|
_ccTracksUpdated = false;
|
|
@@ -42071,7 +42071,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
42071
42071
|
maxBufferLength: 2,
|
|
42072
42072
|
maxMaxBufferLength: 4,
|
|
42073
42073
|
}, this.options.playback.hlsjsConfig);
|
|
42074
|
-
trace(`${T$
|
|
42074
|
+
trace(`${T$j} _createHLSInstance`, { config });
|
|
42075
42075
|
this._hls = new Hls(config);
|
|
42076
42076
|
}
|
|
42077
42077
|
_attachHLSMedia() {
|
|
@@ -42162,7 +42162,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
42162
42162
|
}
|
|
42163
42163
|
else {
|
|
42164
42164
|
Log.error('hlsjs: failed to recover', { evt, data });
|
|
42165
|
-
trace(`${T$
|
|
42165
|
+
trace(`${T$j} _recover failed to recover`, {
|
|
42166
42166
|
type: data.type,
|
|
42167
42167
|
details: data.details,
|
|
42168
42168
|
});
|
|
@@ -42248,7 +42248,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
42248
42248
|
this.trigger(Events$1.PLAYBACK_SETTINGSUPDATE);
|
|
42249
42249
|
}
|
|
42250
42250
|
_onHLSJSError(evt, data) {
|
|
42251
|
-
trace(`${T$
|
|
42251
|
+
trace(`${T$j} _onHLSJSError`, {
|
|
42252
42252
|
fatal: data.fatal,
|
|
42253
42253
|
type: data.type,
|
|
42254
42254
|
details: data.details,
|
|
@@ -42296,7 +42296,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
42296
42296
|
evt,
|
|
42297
42297
|
data,
|
|
42298
42298
|
});
|
|
42299
|
-
trace(`${T$
|
|
42299
|
+
trace(`${T$j} _onHLSJSError trying to recover from network error`, {
|
|
42300
42300
|
details: data.details,
|
|
42301
42301
|
});
|
|
42302
42302
|
error.level = PlayerError.Levels.WARN;
|
|
@@ -42309,7 +42309,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
42309
42309
|
evt,
|
|
42310
42310
|
data,
|
|
42311
42311
|
});
|
|
42312
|
-
trace(`${T$
|
|
42312
|
+
trace(`${T$j} _onHLSJSError trying to recover from media error`, {
|
|
42313
42313
|
details: data.details,
|
|
42314
42314
|
});
|
|
42315
42315
|
error.level = PlayerError.Levels.WARN;
|
|
@@ -42339,7 +42339,7 @@ class HlsPlayback extends BasePlayback {
|
|
|
42339
42339
|
return;
|
|
42340
42340
|
}
|
|
42341
42341
|
Log.warn('hlsjs: non-fatal error occurred', { evt, data });
|
|
42342
|
-
trace(`${T$
|
|
42342
|
+
trace(`${T$j} _onHLSJSError non-fatal error occurred`, {
|
|
42343
42343
|
type: data.type,
|
|
42344
42344
|
details: data.details,
|
|
42345
42345
|
});
|
|
@@ -42674,11 +42674,11 @@ class HlsPlayback extends BasePlayback {
|
|
|
42674
42674
|
this._hls.audioTrack = Number(id); // TODO or find index by .id == id?
|
|
42675
42675
|
}
|
|
42676
42676
|
_onAudioTracksUpdated(_, data) {
|
|
42677
|
-
trace(`${T$
|
|
42677
|
+
trace(`${T$j} onAudioTracksUpdated`);
|
|
42678
42678
|
this.trigger(Events$1.PLAYBACK_AUDIO_AVAILABLE, data.audioTracks.map(toClapprTrack));
|
|
42679
42679
|
}
|
|
42680
42680
|
_onAudioTrackSwitched(_, data) {
|
|
42681
|
-
trace(`${T$
|
|
42681
|
+
trace(`${T$j} onAudioTrackSwitched`);
|
|
42682
42682
|
// @ts-ignore
|
|
42683
42683
|
const track = this._hls.audioTracks[data.id];
|
|
42684
42684
|
this.trigger(Events$1.PLAYBACK_AUDIO_CHANGED, toClapprTrack(track));
|
|
@@ -42699,7 +42699,7 @@ function toClapprTrack(t) {
|
|
|
42699
42699
|
};
|
|
42700
42700
|
}
|
|
42701
42701
|
|
|
42702
|
-
const T$
|
|
42702
|
+
const T$i = 'playback.html5_video';
|
|
42703
42703
|
const STALL_TIMEOUT = 15000;
|
|
42704
42704
|
class HTML5Video extends BasePlayback {
|
|
42705
42705
|
stallTimerId = null;
|
|
@@ -42707,7 +42707,7 @@ class HTML5Video extends BasePlayback {
|
|
|
42707
42707
|
* @internal
|
|
42708
42708
|
*/
|
|
42709
42709
|
createError(errorData, options) {
|
|
42710
|
-
trace(`${T$
|
|
42710
|
+
trace(`${T$i} createError`, {
|
|
42711
42711
|
errorData: { ...errorData },
|
|
42712
42712
|
});
|
|
42713
42713
|
const i18n = this.i18n ||
|
|
@@ -42723,11 +42723,11 @@ class HTML5Video extends BasePlayback {
|
|
|
42723
42723
|
return super.createError(errorData, { ...options, useCodePrefix: false });
|
|
42724
42724
|
}
|
|
42725
42725
|
_onWaiting() {
|
|
42726
|
-
trace(`${T$
|
|
42726
|
+
trace(`${T$i} _onWaiting`);
|
|
42727
42727
|
super._onWaiting();
|
|
42728
42728
|
}
|
|
42729
42729
|
_onEnded() {
|
|
42730
|
-
trace(`${T$
|
|
42730
|
+
trace(`${T$i} _onEnded`);
|
|
42731
42731
|
if (this.stallTimerId) {
|
|
42732
42732
|
clearTimeout(this.stallTimerId);
|
|
42733
42733
|
this.stallTimerId = null;
|
|
@@ -42735,12 +42735,12 @@ class HTML5Video extends BasePlayback {
|
|
|
42735
42735
|
super._onEnded();
|
|
42736
42736
|
}
|
|
42737
42737
|
_handleBufferingEvents() {
|
|
42738
|
-
trace(`${T$
|
|
42738
|
+
trace(`${T$i} _handleBufferingEvents`, {
|
|
42739
42739
|
networkState: this.el.networkState,
|
|
42740
42740
|
});
|
|
42741
42741
|
if (!this.stallTimerId) {
|
|
42742
42742
|
this.stallTimerId = setTimeout(() => {
|
|
42743
|
-
trace(`${T$
|
|
42743
|
+
trace(`${T$i} _handleBufferingEvents stall timeout`, {
|
|
42744
42744
|
buffering: this.buffering,
|
|
42745
42745
|
ended: this.ended,
|
|
42746
42746
|
});
|
|
@@ -42758,7 +42758,7 @@ class HTML5Video extends BasePlayback {
|
|
|
42758
42758
|
super._handleBufferingEvents();
|
|
42759
42759
|
}
|
|
42760
42760
|
_onPlaying() {
|
|
42761
|
-
trace(`${T$
|
|
42761
|
+
trace(`${T$i} _onPlaying`);
|
|
42762
42762
|
if (this.stallTimerId) {
|
|
42763
42763
|
clearTimeout(this.stallTimerId);
|
|
42764
42764
|
this.stallTimerId = null;
|
|
@@ -42766,7 +42766,7 @@ class HTML5Video extends BasePlayback {
|
|
|
42766
42766
|
super._onPlaying();
|
|
42767
42767
|
}
|
|
42768
42768
|
_onPause() {
|
|
42769
|
-
trace(`${T$
|
|
42769
|
+
trace(`${T$i} _onPause`);
|
|
42770
42770
|
super._onPause();
|
|
42771
42771
|
if (this.stallTimerId) {
|
|
42772
42772
|
clearTimeout(this.stallTimerId);
|
|
@@ -42776,7 +42776,7 @@ class HTML5Video extends BasePlayback {
|
|
|
42776
42776
|
get audioTracks() {
|
|
42777
42777
|
const tracks = this.el.audioTracks;
|
|
42778
42778
|
const supported = !!tracks;
|
|
42779
|
-
trace(`${T$
|
|
42779
|
+
trace(`${T$i} get audioTracks`, { supported });
|
|
42780
42780
|
const retval = [];
|
|
42781
42781
|
if (supported) {
|
|
42782
42782
|
for (let i = 0; i < tracks.length; i++) {
|
|
@@ -42795,7 +42795,7 @@ class HTML5Video extends BasePlayback {
|
|
|
42795
42795
|
get currentAudioTrack() {
|
|
42796
42796
|
const tracks = this.el.audioTracks;
|
|
42797
42797
|
const supported = !!tracks;
|
|
42798
|
-
trace(`${T$
|
|
42798
|
+
trace(`${T$i} get currentAudioTrack`, {
|
|
42799
42799
|
supported,
|
|
42800
42800
|
});
|
|
42801
42801
|
if (supported) {
|
|
@@ -42816,7 +42816,7 @@ class HTML5Video extends BasePlayback {
|
|
|
42816
42816
|
switchAudioTrack(id) {
|
|
42817
42817
|
const tracks = this.el.audioTracks;
|
|
42818
42818
|
const supported = !!tracks;
|
|
42819
|
-
trace(`${T$
|
|
42819
|
+
trace(`${T$i} switchAudioTrack`, {
|
|
42820
42820
|
supported,
|
|
42821
42821
|
});
|
|
42822
42822
|
if (supported) {
|
|
@@ -42835,7 +42835,7 @@ function registerPlaybacks() {
|
|
|
42835
42835
|
Loader.registerPlayback(DashPlayback);
|
|
42836
42836
|
}
|
|
42837
42837
|
|
|
42838
|
-
const T$
|
|
42838
|
+
const T$h = 'GPlayer';
|
|
42839
42839
|
const DEFAULT_OPTIONS = {
|
|
42840
42840
|
autoPlay: false,
|
|
42841
42841
|
debug: 'none',
|
|
@@ -42930,7 +42930,7 @@ class Player {
|
|
|
42930
42930
|
}
|
|
42931
42931
|
const coreOpts = this.buildCoreOptions(playerElement);
|
|
42932
42932
|
const { core, container } = Player.getRegisteredPlugins();
|
|
42933
|
-
trace(`${T$
|
|
42933
|
+
trace(`${T$h} init`, {
|
|
42934
42934
|
registeredPlaybacks: Loader.registeredPlaybacks.map((p) => p.prototype.name),
|
|
42935
42935
|
});
|
|
42936
42936
|
coreOpts.plugins = {
|
|
@@ -42944,7 +42944,7 @@ class Player {
|
|
|
42944
42944
|
* Destroys the player, releasing all resources and unmounting its UI from the DOM.
|
|
42945
42945
|
*/
|
|
42946
42946
|
destroy() {
|
|
42947
|
-
trace(`${T$
|
|
42947
|
+
trace(`${T$h} destroy`, {
|
|
42948
42948
|
player: !!this.player,
|
|
42949
42949
|
});
|
|
42950
42950
|
if (this.player) {
|
|
@@ -43131,7 +43131,7 @@ class Player {
|
|
|
43131
43131
|
this.config = $.extend(true, this.config, config);
|
|
43132
43132
|
}
|
|
43133
43133
|
initPlayer(coreOptions) {
|
|
43134
|
-
trace(`${T$
|
|
43134
|
+
trace(`${T$h} initPlayer`, {
|
|
43135
43135
|
autoPlay: coreOptions.autoPlay,
|
|
43136
43136
|
sources: coreOptions.sources,
|
|
43137
43137
|
// TODO selected options
|
|
@@ -43156,7 +43156,7 @@ class Player {
|
|
|
43156
43156
|
}
|
|
43157
43157
|
}
|
|
43158
43158
|
triggerAutoPlay() {
|
|
43159
|
-
trace(`${T$
|
|
43159
|
+
trace(`${T$h} triggerAutoPlay`);
|
|
43160
43160
|
setTimeout(() => {
|
|
43161
43161
|
this.player?.play({
|
|
43162
43162
|
autoPlay: true,
|
|
@@ -43174,7 +43174,7 @@ class Player {
|
|
|
43174
43174
|
// TODO test
|
|
43175
43175
|
events = {
|
|
43176
43176
|
onReady: () => {
|
|
43177
|
-
trace(`${T$
|
|
43177
|
+
trace(`${T$h} onReady`, {
|
|
43178
43178
|
ready: this.ready,
|
|
43179
43179
|
});
|
|
43180
43180
|
if (this.ready) {
|
|
@@ -43208,7 +43208,7 @@ class Player {
|
|
|
43208
43208
|
buildCoreOptions(rootNode) {
|
|
43209
43209
|
const sources = this.buildMediaSourcesList();
|
|
43210
43210
|
const source = sources[0];
|
|
43211
|
-
trace(`${T$
|
|
43211
|
+
trace(`${T$h} buildCoreOptions`, {
|
|
43212
43212
|
source,
|
|
43213
43213
|
sources,
|
|
43214
43214
|
});
|
|
@@ -43269,7 +43269,7 @@ class Player {
|
|
|
43269
43269
|
assert.ok(this.player, 'Player is not initialized');
|
|
43270
43270
|
const core = this.player.core;
|
|
43271
43271
|
core.on(Events$1.CORE_SCREEN_ORIENTATION_CHANGED, ({ orientation }) => {
|
|
43272
|
-
trace(`${T$
|
|
43272
|
+
trace(`${T$h} on CORE_SCREEN_ORIENTATION_CHANGED`, {
|
|
43273
43273
|
orientation,
|
|
43274
43274
|
rootNode: {
|
|
43275
43275
|
width: this.rootNode?.clientWidth,
|
|
@@ -43284,14 +43284,14 @@ class Player {
|
|
|
43284
43284
|
}
|
|
43285
43285
|
}, null);
|
|
43286
43286
|
core.on(Events$1.CORE_RESIZE, ({ width, height }) => {
|
|
43287
|
-
trace(`${T$
|
|
43287
|
+
trace(`${T$h} on CORE_RESIZE`, {
|
|
43288
43288
|
width,
|
|
43289
43289
|
height,
|
|
43290
43290
|
});
|
|
43291
43291
|
this.safeTriggerEvent(PlayerEvent.Resize, { width, height });
|
|
43292
43292
|
}, null);
|
|
43293
43293
|
core.on(Events$1.CORE_FULLSCREEN, (isFullscreen) => {
|
|
43294
|
-
trace(`${T$
|
|
43294
|
+
trace(`${T$h} CORE_FULLSCREEN`, {
|
|
43295
43295
|
isFullscreen,
|
|
43296
43296
|
});
|
|
43297
43297
|
this.safeTriggerEvent(PlayerEvent.Fullscreen, isFullscreen);
|
|
@@ -43299,7 +43299,7 @@ class Player {
|
|
|
43299
43299
|
}
|
|
43300
43300
|
}
|
|
43301
43301
|
|
|
43302
|
-
var version$1 = "2.22.
|
|
43302
|
+
var version$1 = "2.22.4";
|
|
43303
43303
|
|
|
43304
43304
|
var packages = {
|
|
43305
43305
|
"node_modules/@clappr/core": {
|
|
@@ -43323,12 +43323,12 @@ function version() {
|
|
|
43323
43323
|
};
|
|
43324
43324
|
}
|
|
43325
43325
|
|
|
43326
|
-
const pluginHtml$7 = "<button data-audiotracks-button class='gcore-skin-button-color' id=\"audiotracks-button\">\n <span class='audio-text'><%= title %></span> <span class=\"audio-arrow\"
|
|
43326
|
+
const pluginHtml$7 = "<button data-audiotracks-button class='gcore-skin-button-color' id=\"audiotracks-button\">\n <span class='audio-text'><%= title %></span> <span class=\"audio-arrow\"><%= icon %></span>\n</button>\n<ul class='gcore-skin-bg-color menu hidden' id=\"audiotracks-select\">\n <% for (const track of tracks) { %>\n <li>\n <a href=\"#\" class='gcore-skin-text-color' data-audiotracks-select=\"<%= track.id %>\">\n <%= track.label %>\n </a>\n </li>\n <% }; %>\n</ul>\n";
|
|
43327
43327
|
|
|
43328
43328
|
const audioArrow = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg width=\"9px\" height=\"6px\" viewBox=\"0 0 9 6\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <!-- Generator: Sketch 49 (51002) - http://www.bohemiancoding.com/sketch -->\n <title>quality-arrow</title>\n <desc>Created with Sketch.</desc>\n <defs></defs>\n <g id=\"quality-arrow\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M5.07079194,5.78553848 C4.91457318,5.94277844 4.70551573,6.00941824 4.50028717,5.99893557 C4.2950586,6.00941824 4.08676693,5.94277844 3.92978239,5.78553848 L0.221118462,1.2997069 C-0.0737061539,1.00469478 -0.0737061539,0.526236029 0.221118462,0.231972666 C0.515177299,-0.0630394586 1.23500883,0.00734414472 1.64852907,0.00734414472 L7.77475484,0.00734414472 C8.21201421,0.00734414472 8.48539703,-0.0630394586 8.77945587,0.231972666 C9.07351471,0.526236029 9.07351471,1.00469478 8.77945587,1.2997069 L5.07079194,5.78553848 Z\"\n fill=\"#FFFFFE\"></path>\n </g>\n</svg>\n";
|
|
43329
43329
|
|
|
43330
|
-
const VERSION$6 = '
|
|
43331
|
-
const T
|
|
43330
|
+
const VERSION$6 = '2.22.4';
|
|
43331
|
+
// const T = 'plugins.audiotracks'
|
|
43332
43332
|
/**
|
|
43333
43333
|
* `PLUGIN` that makes possible to switch audio tracks via the media control UI.
|
|
43334
43334
|
* @beta
|
|
@@ -43339,14 +43339,14 @@ const T$h = 'plugins.audio_selector';
|
|
|
43339
43339
|
*
|
|
43340
43340
|
* - {@link MediaControl}
|
|
43341
43341
|
*/
|
|
43342
|
-
class
|
|
43342
|
+
class AudioTracks extends UICorePlugin {
|
|
43343
43343
|
currentTrack = null;
|
|
43344
43344
|
tracks = [];
|
|
43345
43345
|
/**
|
|
43346
43346
|
* @internal
|
|
43347
43347
|
*/
|
|
43348
43348
|
get name() {
|
|
43349
|
-
return 'audio_selector';
|
|
43349
|
+
return 'audio_selector'; // TODO rename to audiotracks
|
|
43350
43350
|
}
|
|
43351
43351
|
/**
|
|
43352
43352
|
* @internal
|
|
@@ -43375,58 +43375,43 @@ class AudioSelector extends UICorePlugin {
|
|
|
43375
43375
|
get events() {
|
|
43376
43376
|
return {
|
|
43377
43377
|
'click [data-audiotracks-select]': 'onTrackSelect',
|
|
43378
|
-
'click
|
|
43378
|
+
'click #audiotracks-button': 'toggleContextMenu',
|
|
43379
43379
|
};
|
|
43380
43380
|
}
|
|
43381
43381
|
/**
|
|
43382
43382
|
* @internal
|
|
43383
43383
|
*/
|
|
43384
43384
|
bindEvents() {
|
|
43385
|
-
this.
|
|
43385
|
+
this.listenToOnce(this.core, Events$1.CORE_READY, this.onCoreReady);
|
|
43386
43386
|
this.listenTo(this.core, Events$1.CORE_ACTIVE_CONTAINER_CHANGED, this.onActiveContainerChanged);
|
|
43387
43387
|
}
|
|
43388
43388
|
onCoreReady() {
|
|
43389
|
-
trace(`${T$h} onCoreReady`);
|
|
43390
43389
|
const mediaControl = this.core.getPlugin('media_control');
|
|
43391
43390
|
assert(mediaControl, 'media_control plugin is required');
|
|
43392
|
-
this.listenTo(mediaControl, Events$1.MEDIACONTROL_RENDERED,
|
|
43393
|
-
|
|
43391
|
+
this.listenTo(mediaControl, Events$1.MEDIACONTROL_RENDERED, () => {
|
|
43392
|
+
mediaControl.putElement('audiotracks', this.$el);
|
|
43393
|
+
});
|
|
43394
|
+
this.listenTo(mediaControl, Events$1.MEDIACONTROL_HIDE, this.hideMenu);
|
|
43394
43395
|
}
|
|
43395
|
-
|
|
43396
|
-
trace(`${T$h} bindPlaybackEvents`);
|
|
43396
|
+
onActiveContainerChanged() {
|
|
43397
43397
|
this.currentTrack = null;
|
|
43398
|
-
this.listenTo(this.core.
|
|
43399
|
-
this.setupAudioTrackListeners();
|
|
43400
|
-
}
|
|
43401
|
-
setupAudioTrackListeners() {
|
|
43402
|
-
this.listenTo(this.core.activePlayback, Events$1.PLAYBACK_AUDIO_AVAILABLE, (tracks) => {
|
|
43403
|
-
trace(`${T$h} on PLAYBACK_AUDIO_AVAILABLE`, { audioTracks: tracks });
|
|
43398
|
+
this.listenTo(this.core.activeContainer, Events$1.CONTAINER_AUDIO_AVAILABLE, (tracks) => {
|
|
43404
43399
|
this.currentTrack =
|
|
43405
|
-
tracks.find((track) => track.kind === 'main') ?? null;
|
|
43406
|
-
this.
|
|
43400
|
+
tracks.find((track) => track.kind === 'main') ?? null; // TODO test
|
|
43401
|
+
this.tracks = tracks;
|
|
43402
|
+
this.render();
|
|
43407
43403
|
});
|
|
43408
|
-
this.listenTo(this.core.
|
|
43409
|
-
trace(`${T$h} PLAYBACK_AUDIO_CHANGED`, { audioTrack: track });
|
|
43404
|
+
this.listenTo(this.core.activeContainer, Events$1.CONTAINER_AUDIO_CHANGED, (track) => {
|
|
43410
43405
|
this.currentTrack = track;
|
|
43411
43406
|
this.highlightCurrentTrack();
|
|
43412
43407
|
this.buttonElement().removeClass('changing');
|
|
43413
43408
|
this.updateText();
|
|
43414
43409
|
});
|
|
43415
43410
|
}
|
|
43416
|
-
onStop() {
|
|
43417
|
-
trace(`${T$h} onStop`);
|
|
43418
|
-
}
|
|
43419
|
-
onActiveContainerChanged() {
|
|
43420
|
-
trace(`${T$h} onActiveContainerChanged`);
|
|
43421
|
-
this.bindPlaybackEvents();
|
|
43422
|
-
}
|
|
43423
43411
|
shouldRender() {
|
|
43424
|
-
|
|
43425
|
-
return false;
|
|
43426
|
-
}
|
|
43427
|
-
this.tracks = this.core.activePlayback.audioTracks;
|
|
43412
|
+
// Render is called from the parent class constructor so tracks aren't available
|
|
43428
43413
|
// Only care if we have at least 2 to choose from
|
|
43429
|
-
return this.tracks
|
|
43414
|
+
return this.tracks?.length > 1;
|
|
43430
43415
|
}
|
|
43431
43416
|
/**
|
|
43432
43417
|
* @internal
|
|
@@ -43435,43 +43420,35 @@ class AudioSelector extends UICorePlugin {
|
|
|
43435
43420
|
if (!this.shouldRender()) {
|
|
43436
43421
|
return this;
|
|
43437
43422
|
}
|
|
43438
|
-
|
|
43439
|
-
this.$el.html(
|
|
43440
|
-
|
|
43441
|
-
|
|
43423
|
+
this.core.getPlugin('media_control');
|
|
43424
|
+
this.$el.html(AudioTracks.template({
|
|
43425
|
+
tracks: this.tracks,
|
|
43426
|
+
title: this.getTitle(),
|
|
43427
|
+
icon: audioArrow,
|
|
43428
|
+
}));
|
|
43442
43429
|
this.updateText();
|
|
43443
43430
|
this.highlightCurrentTrack();
|
|
43444
43431
|
return this;
|
|
43445
43432
|
}
|
|
43446
|
-
fillTracks(tracks) {
|
|
43447
|
-
this.tracks = tracks;
|
|
43448
|
-
this.render();
|
|
43449
|
-
}
|
|
43450
|
-
findTrackBy(id) {
|
|
43451
|
-
return this.tracks.find((track) => track.id === id);
|
|
43452
|
-
}
|
|
43453
43433
|
onTrackSelect(event) {
|
|
43454
43434
|
const id = event.target?.dataset?.audiotracksSelect;
|
|
43455
43435
|
if (id) {
|
|
43456
43436
|
this.selectAudioTrack(id);
|
|
43457
43437
|
}
|
|
43458
|
-
this.
|
|
43438
|
+
this.hideMenu();
|
|
43459
43439
|
event.stopPropagation();
|
|
43460
43440
|
return false;
|
|
43461
43441
|
}
|
|
43462
43442
|
selectAudioTrack(id) {
|
|
43463
43443
|
this.startTrackSwitch();
|
|
43464
|
-
this.core.
|
|
43444
|
+
this.core.activeContainer.switchAudioTrack(id);
|
|
43465
43445
|
this.updateText();
|
|
43466
43446
|
}
|
|
43467
|
-
|
|
43468
|
-
this.
|
|
43469
|
-
}
|
|
43470
|
-
hideSelectTrackMenu() {
|
|
43471
|
-
this.$('ul').hide();
|
|
43447
|
+
hideMenu() {
|
|
43448
|
+
this.$el.find('#audiotracks-select').addClass('hidden');
|
|
43472
43449
|
}
|
|
43473
43450
|
toggleContextMenu() {
|
|
43474
|
-
this.$('
|
|
43451
|
+
this.$el.find('#audiotracks-select').toggleClass('hidden');
|
|
43475
43452
|
}
|
|
43476
43453
|
buttonElement() {
|
|
43477
43454
|
return this.$('button');
|
|
@@ -43480,11 +43457,14 @@ class AudioSelector extends UICorePlugin {
|
|
|
43480
43457
|
return this.$('button .audio-text');
|
|
43481
43458
|
}
|
|
43482
43459
|
trackElement(id) {
|
|
43483
|
-
return this.$('
|
|
43484
|
-
(id !== undefined ?
|
|
43460
|
+
return this.$('#audiotracks-select a' +
|
|
43461
|
+
(id !== undefined ? `[data-audiotracks-select="${id}"]` : '')).parent();
|
|
43485
43462
|
}
|
|
43486
43463
|
getTitle() {
|
|
43487
|
-
|
|
43464
|
+
if (!this.currentTrack) {
|
|
43465
|
+
return '';
|
|
43466
|
+
}
|
|
43467
|
+
return this.currentTrack.label || this.currentTrack.language;
|
|
43488
43468
|
}
|
|
43489
43469
|
startTrackSwitch() {
|
|
43490
43470
|
this.buttonElement().addClass('changing');
|
|
@@ -50744,6 +50724,7 @@ var SpinnerEvents;
|
|
|
50744
50724
|
* `PLUGIN` that shows a pending operation indicator when playback is buffering or in a similar state.
|
|
50745
50725
|
* @public
|
|
50746
50726
|
* @remarks
|
|
50727
|
+
* It is aliased as `Spinner` for convenience.
|
|
50747
50728
|
* Events emitted - {@link SpinnerEvents}
|
|
50748
50729
|
* Other plugins can use {@link SpinnerThreeBounce.show | show} and {@link SpinnerThreeBounce.hide | hide} methods to
|
|
50749
50730
|
* implement custom pending/progress indication scenarios.
|
|
@@ -52311,4 +52292,4 @@ class VolumeFade extends UICorePlugin {
|
|
|
52311
52292
|
}
|
|
52312
52293
|
}
|
|
52313
52294
|
|
|
52314
|
-
export { AudioSelector, BigMuteButton, BottomGear, ClapprNerdStats, ClapprStats, ClickToPause, ClipsPlugin, ClosedCaptions, ContextMenu, DvrControls, ErrorScreen, Favicon, GearEvents, GoogleAnalytics, LevelSelector, LogTracer, Logger, Logo, MediaControl, MultiCamera, PictureInPicture, PlaybackErrorCode, PlaybackRate, Player, PlayerEvent, Poster, SeekTime, SentryTracer, Share, SkipTime, SourceController, SpinnerEvents, SpinnerThreeBounce, ClosedCaptions as Subtitles, Telemetry, TelemetryEvent, Thumbnails, VolumeFade, VolumeFadeEvents, reportError, setTracer, trace, version };
|
|
52295
|
+
export { AudioTracks as AudioSelector, AudioTracks, BigMuteButton, BottomGear, ClapprNerdStats, ClapprStats, ClickToPause, ClipsPlugin, ClosedCaptions, ContextMenu, DvrControls, ErrorScreen, Favicon, GearEvents, GoogleAnalytics, LevelSelector, LogTracer, Logger, Logo, MediaControl, MultiCamera, PictureInPicture, PlaybackErrorCode, PlaybackRate, Player, PlayerEvent, Poster, SeekTime, SentryTracer, Share, SkipTime, SourceController, SpinnerThreeBounce as Spinner, SpinnerEvents, SpinnerThreeBounce, ClosedCaptions as Subtitles, Telemetry, TelemetryEvent, Thumbnails, VolumeFade, VolumeFadeEvents, reportError, setTracer, trace, version };
|
package/dist/player.d.ts
CHANGED
|
@@ -2422,7 +2422,7 @@ export declare class SkipTime extends UICorePlugin {
|
|
|
2422
2422
|
}
|
|
2423
2423
|
|
|
2424
2424
|
/**
|
|
2425
|
-
* `PLUGIN` that is
|
|
2425
|
+
* `PLUGIN` that is managing the automatic failover between media sources.
|
|
2426
2426
|
* @public
|
|
2427
2427
|
* @remarks
|
|
2428
2428
|
* Have a look at the {@link https://miro.com/app/board/uXjVLiN15tY=/?share_link_id=390327585787 | source failover diagram} for the details
|
|
@@ -2527,11 +2527,12 @@ export declare enum SpinnerEvents {
|
|
|
2527
2527
|
* `PLUGIN` that shows a pending operation indicator when playback is buffering or in a similar state.
|
|
2528
2528
|
* @public
|
|
2529
2529
|
* @remarks
|
|
2530
|
-
*
|
|
2530
|
+
* It is aliased as `Spinner` for convenience.
|
|
2531
|
+
* Events emitted - {@link SpinnerEvents}
|
|
2531
2532
|
* Other plugins can use {@link SpinnerThreeBounce.show | show} and {@link SpinnerThreeBounce.hide | hide} methods to
|
|
2532
2533
|
* implement custom pending/progress indication scenarios.
|
|
2533
2534
|
*/
|
|
2534
|
-
|
|
2535
|
+
declare class SpinnerThreeBounce extends UIContainerPlugin {
|
|
2535
2536
|
private userShown;
|
|
2536
2537
|
/**
|
|
2537
2538
|
* @internal
|
|
@@ -2579,6 +2580,8 @@ export declare class SpinnerThreeBounce extends UIContainerPlugin {
|
|
|
2579
2580
|
*/
|
|
2580
2581
|
render(): this;
|
|
2581
2582
|
}
|
|
2583
|
+
export { SpinnerThreeBounce as Spinner }
|
|
2584
|
+
export { SpinnerThreeBounce }
|
|
2582
2585
|
|
|
2583
2586
|
/**
|
|
2584
2587
|
* Playback stall event data
|