@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/plugins/index.js
CHANGED
|
@@ -8858,14 +8858,6 @@ Loader.registerPlayback(HTMLImg);
|
|
|
8858
8858
|
Loader.registerPlayback(HTML5Audio);
|
|
8859
8859
|
Loader.registerPlayback(HTML5Video);
|
|
8860
8860
|
|
|
8861
|
-
/**
|
|
8862
|
-
* @public
|
|
8863
|
-
* @param msg
|
|
8864
|
-
* @param data
|
|
8865
|
-
*/
|
|
8866
|
-
function trace(msg, data = {}) {
|
|
8867
|
-
}
|
|
8868
|
-
|
|
8869
8861
|
const global$1 = (typeof global !== "undefined" ? global :
|
|
8870
8862
|
typeof self !== "undefined" ? self :
|
|
8871
8863
|
typeof window !== "undefined" ? window : {});
|
|
@@ -9775,11 +9767,12 @@ function ifError(err) {
|
|
|
9775
9767
|
// export const CLAPPR_VERSION: string = process.env.CLAPPR_VERSION || '0.11.3';
|
|
9776
9768
|
const CLAPPR_VERSION = '0.11.3';
|
|
9777
9769
|
|
|
9778
|
-
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\"
|
|
9770
|
+
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";
|
|
9779
9771
|
|
|
9780
9772
|
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";
|
|
9781
9773
|
|
|
9782
|
-
const VERSION$6 = '
|
|
9774
|
+
const VERSION$6 = '2.22.4';
|
|
9775
|
+
// const T = 'plugins.audiotracks'
|
|
9783
9776
|
/**
|
|
9784
9777
|
* `PLUGIN` that makes possible to switch audio tracks via the media control UI.
|
|
9785
9778
|
* @beta
|
|
@@ -9790,14 +9783,14 @@ const VERSION$6 = '0.0.1';
|
|
|
9790
9783
|
*
|
|
9791
9784
|
* - {@link MediaControl}
|
|
9792
9785
|
*/
|
|
9793
|
-
class
|
|
9786
|
+
class AudioTracks extends UICorePlugin {
|
|
9794
9787
|
currentTrack = null;
|
|
9795
9788
|
tracks = [];
|
|
9796
9789
|
/**
|
|
9797
9790
|
* @internal
|
|
9798
9791
|
*/
|
|
9799
9792
|
get name() {
|
|
9800
|
-
return 'audio_selector';
|
|
9793
|
+
return 'audio_selector'; // TODO rename to audiotracks
|
|
9801
9794
|
}
|
|
9802
9795
|
/**
|
|
9803
9796
|
* @internal
|
|
@@ -9826,52 +9819,43 @@ class AudioSelector extends UICorePlugin {
|
|
|
9826
9819
|
get events() {
|
|
9827
9820
|
return {
|
|
9828
9821
|
'click [data-audiotracks-select]': 'onTrackSelect',
|
|
9829
|
-
'click
|
|
9822
|
+
'click #audiotracks-button': 'toggleContextMenu',
|
|
9830
9823
|
};
|
|
9831
9824
|
}
|
|
9832
9825
|
/**
|
|
9833
9826
|
* @internal
|
|
9834
9827
|
*/
|
|
9835
9828
|
bindEvents() {
|
|
9836
|
-
this.
|
|
9829
|
+
this.listenToOnce(this.core, Events.CORE_READY, this.onCoreReady);
|
|
9837
9830
|
this.listenTo(this.core, Events.CORE_ACTIVE_CONTAINER_CHANGED, this.onActiveContainerChanged);
|
|
9838
9831
|
}
|
|
9839
9832
|
onCoreReady() {
|
|
9840
9833
|
const mediaControl = this.core.getPlugin('media_control');
|
|
9841
9834
|
assert(mediaControl, 'media_control plugin is required');
|
|
9842
|
-
this.listenTo(mediaControl, Events.MEDIACONTROL_RENDERED,
|
|
9843
|
-
|
|
9835
|
+
this.listenTo(mediaControl, Events.MEDIACONTROL_RENDERED, () => {
|
|
9836
|
+
mediaControl.putElement('audiotracks', this.$el);
|
|
9837
|
+
});
|
|
9838
|
+
this.listenTo(mediaControl, Events.MEDIACONTROL_HIDE, this.hideMenu);
|
|
9844
9839
|
}
|
|
9845
|
-
|
|
9840
|
+
onActiveContainerChanged() {
|
|
9846
9841
|
this.currentTrack = null;
|
|
9847
|
-
this.listenTo(this.core.
|
|
9848
|
-
this.setupAudioTrackListeners();
|
|
9849
|
-
}
|
|
9850
|
-
setupAudioTrackListeners() {
|
|
9851
|
-
this.listenTo(this.core.activePlayback, Events.PLAYBACK_AUDIO_AVAILABLE, (tracks) => {
|
|
9842
|
+
this.listenTo(this.core.activeContainer, Events.CONTAINER_AUDIO_AVAILABLE, (tracks) => {
|
|
9852
9843
|
this.currentTrack =
|
|
9853
|
-
tracks.find((track) => track.kind === 'main') ?? null;
|
|
9854
|
-
this.
|
|
9844
|
+
tracks.find((track) => track.kind === 'main') ?? null; // TODO test
|
|
9845
|
+
this.tracks = tracks;
|
|
9846
|
+
this.render();
|
|
9855
9847
|
});
|
|
9856
|
-
this.listenTo(this.core.
|
|
9848
|
+
this.listenTo(this.core.activeContainer, Events.CONTAINER_AUDIO_CHANGED, (track) => {
|
|
9857
9849
|
this.currentTrack = track;
|
|
9858
9850
|
this.highlightCurrentTrack();
|
|
9859
9851
|
this.buttonElement().removeClass('changing');
|
|
9860
9852
|
this.updateText();
|
|
9861
9853
|
});
|
|
9862
9854
|
}
|
|
9863
|
-
onStop() {
|
|
9864
|
-
}
|
|
9865
|
-
onActiveContainerChanged() {
|
|
9866
|
-
this.bindPlaybackEvents();
|
|
9867
|
-
}
|
|
9868
9855
|
shouldRender() {
|
|
9869
|
-
|
|
9870
|
-
return false;
|
|
9871
|
-
}
|
|
9872
|
-
this.tracks = this.core.activePlayback.audioTracks;
|
|
9856
|
+
// Render is called from the parent class constructor so tracks aren't available
|
|
9873
9857
|
// Only care if we have at least 2 to choose from
|
|
9874
|
-
return this.tracks
|
|
9858
|
+
return this.tracks?.length > 1;
|
|
9875
9859
|
}
|
|
9876
9860
|
/**
|
|
9877
9861
|
* @internal
|
|
@@ -9880,43 +9864,35 @@ class AudioSelector extends UICorePlugin {
|
|
|
9880
9864
|
if (!this.shouldRender()) {
|
|
9881
9865
|
return this;
|
|
9882
9866
|
}
|
|
9883
|
-
|
|
9884
|
-
this.$el.html(
|
|
9885
|
-
|
|
9886
|
-
|
|
9867
|
+
this.core.getPlugin('media_control');
|
|
9868
|
+
this.$el.html(AudioTracks.template({
|
|
9869
|
+
tracks: this.tracks,
|
|
9870
|
+
title: this.getTitle(),
|
|
9871
|
+
icon: audioArrow,
|
|
9872
|
+
}));
|
|
9887
9873
|
this.updateText();
|
|
9888
9874
|
this.highlightCurrentTrack();
|
|
9889
9875
|
return this;
|
|
9890
9876
|
}
|
|
9891
|
-
fillTracks(tracks) {
|
|
9892
|
-
this.tracks = tracks;
|
|
9893
|
-
this.render();
|
|
9894
|
-
}
|
|
9895
|
-
findTrackBy(id) {
|
|
9896
|
-
return this.tracks.find((track) => track.id === id);
|
|
9897
|
-
}
|
|
9898
9877
|
onTrackSelect(event) {
|
|
9899
9878
|
const id = event.target?.dataset?.audiotracksSelect;
|
|
9900
9879
|
if (id) {
|
|
9901
9880
|
this.selectAudioTrack(id);
|
|
9902
9881
|
}
|
|
9903
|
-
this.
|
|
9882
|
+
this.hideMenu();
|
|
9904
9883
|
event.stopPropagation();
|
|
9905
9884
|
return false;
|
|
9906
9885
|
}
|
|
9907
9886
|
selectAudioTrack(id) {
|
|
9908
9887
|
this.startTrackSwitch();
|
|
9909
|
-
this.core.
|
|
9888
|
+
this.core.activeContainer.switchAudioTrack(id);
|
|
9910
9889
|
this.updateText();
|
|
9911
9890
|
}
|
|
9912
|
-
|
|
9913
|
-
this.
|
|
9914
|
-
}
|
|
9915
|
-
hideSelectTrackMenu() {
|
|
9916
|
-
this.$('ul').hide();
|
|
9891
|
+
hideMenu() {
|
|
9892
|
+
this.$el.find('#audiotracks-select').addClass('hidden');
|
|
9917
9893
|
}
|
|
9918
9894
|
toggleContextMenu() {
|
|
9919
|
-
this.$('
|
|
9895
|
+
this.$el.find('#audiotracks-select').toggleClass('hidden');
|
|
9920
9896
|
}
|
|
9921
9897
|
buttonElement() {
|
|
9922
9898
|
return this.$('button');
|
|
@@ -9925,11 +9901,14 @@ class AudioSelector extends UICorePlugin {
|
|
|
9925
9901
|
return this.$('button .audio-text');
|
|
9926
9902
|
}
|
|
9927
9903
|
trackElement(id) {
|
|
9928
|
-
return this.$('
|
|
9929
|
-
(id !== undefined ?
|
|
9904
|
+
return this.$('#audiotracks-select a' +
|
|
9905
|
+
(id !== undefined ? `[data-audiotracks-select="${id}"]` : '')).parent();
|
|
9930
9906
|
}
|
|
9931
9907
|
getTitle() {
|
|
9932
|
-
|
|
9908
|
+
if (!this.currentTrack) {
|
|
9909
|
+
return '';
|
|
9910
|
+
}
|
|
9911
|
+
return this.currentTrack.label || this.currentTrack.language;
|
|
9933
9912
|
}
|
|
9934
9913
|
startTrackSwitch() {
|
|
9935
9914
|
this.buttonElement().addClass('changing');
|
|
@@ -9952,6 +9931,14 @@ class AudioSelector extends UICorePlugin {
|
|
|
9952
9931
|
}
|
|
9953
9932
|
}
|
|
9954
9933
|
|
|
9934
|
+
/**
|
|
9935
|
+
* @public
|
|
9936
|
+
* @param msg
|
|
9937
|
+
* @param data
|
|
9938
|
+
*/
|
|
9939
|
+
function trace(msg, data = {}) {
|
|
9940
|
+
}
|
|
9941
|
+
|
|
9955
9942
|
const volumeOffIcon = "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.50025 8.00025C4.67125 8.00025 4.00025 8.67225 4.00025 9.50025V14.5003C4.00025 15.3283 4.67125 16.0003 5.50025 16.0003H7.24824C7.65024 16.0003 8.03627 16.1613 8.31727 16.4483L12.5443 20.7413C12.7083 20.9073 12.9262 20.9963 13.1492 20.9963C13.2572 20.9963 13.3672 20.9763 13.4722 20.9333C13.7932 20.8013 14.0003 20.4923 14.0003 20.1462V16.3283C14.0003 16.1963 13.9473 16.0683 13.8543 15.9753L6.02528 8.14625C5.93228 8.05325 5.80425 8.00025 5.67225 8.00025H5.50025ZM14.0003 3.85426C14.0003 3.50826 13.7932 3.19927 13.4722 3.06727C13.1502 2.93627 12.7873 3.01226 12.5443 3.25926L9.33827 6.51527C9.14627 6.71127 9.14626 7.02625 9.34126 7.22025L13.5733 11.4522C13.7313 11.6102 14.0003 11.4982 14.0003 11.2752V3.85426ZM20.8543 20.8543C20.7563 20.9513 20.6283 21.0003 20.5003 21.0003C20.3723 21.0003 20.2442 20.9513 20.1462 20.8543L3.14625 3.85426C2.95125 3.65826 2.95125 3.34225 3.14625 3.14625C3.34225 2.95125 3.65826 2.95125 3.85426 3.14625L20.8543 20.1462C21.0493 20.3422 21.0493 20.6583 20.8543 20.8543Z\"\n fill=\"#C9C9C9\"/>\n</svg>\n";
|
|
9956
9943
|
|
|
9957
9944
|
const pluginHtml$6 = "<div class=\"big-mute-icon-wrapper\" data-big-mute>\n <div class=\"big-mute-icon gcore-skin-border-color\" data-big-mute-icon></div>\n</div>\n";
|
|
@@ -13358,7 +13345,7 @@ class ClipsPlugin extends UICorePlugin {
|
|
|
13358
13345
|
|
|
13359
13346
|
const templateHtml$1 = "<ul class=\"context-menu-list\">\n <% if(options) { %>\n <% for (var i = 0; i < options.length; i++) { %>\n <li class=\"context-menu-list-item <%= options[i].class %>\"\n data-<%= options[i].name %>><%= options[i].label %></li>\n <% } %>\n <% } %>\n</ul>\n";
|
|
13360
13347
|
|
|
13361
|
-
var version$1 = "2.22.
|
|
13348
|
+
var version$1 = "2.22.4";
|
|
13362
13349
|
|
|
13363
13350
|
var packages = {
|
|
13364
13351
|
"node_modules/@clappr/core": {
|
|
@@ -17163,6 +17150,7 @@ var SpinnerEvents;
|
|
|
17163
17150
|
* `PLUGIN` that shows a pending operation indicator when playback is buffering or in a similar state.
|
|
17164
17151
|
* @public
|
|
17165
17152
|
* @remarks
|
|
17153
|
+
* It is aliased as `Spinner` for convenience.
|
|
17166
17154
|
* Events emitted - {@link SpinnerEvents}
|
|
17167
17155
|
* Other plugins can use {@link SpinnerThreeBounce.show | show} and {@link SpinnerThreeBounce.hide | hide} methods to
|
|
17168
17156
|
* implement custom pending/progress indication scenarios.
|
|
@@ -18703,4 +18691,4 @@ class VolumeFade extends UICorePlugin {
|
|
|
18703
18691
|
}
|
|
18704
18692
|
}
|
|
18705
18693
|
|
|
18706
|
-
export { AudioSelector, BigMuteButton, BottomGear, ClapprNerdStats, ClapprStats, ClickToPause, ClipsPlugin, ClosedCaptions, ContextMenu, DvrControls, ErrorScreen, Favicon, GearEvents, GoogleAnalytics, LevelSelector, Logo, MediaControl, MultiCamera, PictureInPicture, PlaybackRate, Poster, SeekTime, Share, SkipTime, SourceController, SpinnerEvents, SpinnerThreeBounce, ClosedCaptions as Subtitles, Telemetry, TelemetryEvent, Thumbnails, VolumeFade, VolumeFadeEvents };
|
|
18694
|
+
export { AudioTracks as AudioSelector, AudioTracks, BigMuteButton, BottomGear, ClapprNerdStats, ClapprStats, ClickToPause, ClipsPlugin, ClosedCaptions, ContextMenu, DvrControls, ErrorScreen, Favicon, GearEvents, GoogleAnalytics, LevelSelector, Logo, MediaControl, MultiCamera, PictureInPicture, PlaybackRate, Poster, SeekTime, Share, SkipTime, SourceController, SpinnerThreeBounce as Spinner, SpinnerEvents, SpinnerThreeBounce, ClosedCaptions as Subtitles, Telemetry, TelemetryEvent, Thumbnails, VolumeFade, VolumeFadeEvents };
|
package/docs/api/player.md
CHANGED
|
@@ -15,7 +15,7 @@ export declare class SpinnerThreeBounce extends UIContainerPlugin
|
|
|
15
15
|
|
|
16
16
|
## Remarks
|
|
17
17
|
|
|
18
|
-
Events emitted- [SpinnerEvents](./player.spinnerevents.md) Other plugins can use [show](./player.spinnerthreebounce.show.md) and [hide](./player.spinnerthreebounce.hide.md) methods to implement custom pending/progress indication scenarios.
|
|
18
|
+
It is aliased as `Spinner` for convenience. Events emitted - [SpinnerEvents](./player.spinnerevents.md) Other plugins can use [show](./player.spinnerthreebounce.show.md) and [hide](./player.spinnerthreebounce.hide.md) methods to implement custom pending/progress indication scenarios.
|
|
19
19
|
|
|
20
20
|
## Constructors
|
|
21
21
|
|
package/lib/index.plugins.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import '../assets/style/main.scss';
|
|
2
2
|
export * from "./plugins/audio-selector/AudioSelector.js";
|
|
3
|
+
export { AudioTracks as AudioSelector } from "./plugins/audio-selector/AudioSelector.js";
|
|
3
4
|
export * from "./plugins/big-mute-button/BigMuteButton.js";
|
|
4
5
|
export * from "./plugins/bottom-gear/BottomGear.js";
|
|
5
6
|
export * from "./plugins/clappr-nerd-stats/ClapprNerdStats.js";
|
|
@@ -22,6 +23,7 @@ export * from "./plugins/seek-time/SeekTime.js";
|
|
|
22
23
|
export * from "./plugins/share/Share.js";
|
|
23
24
|
export * from "./plugins/skip-time/SkipTime.js";
|
|
24
25
|
export * from "./plugins/spinner-three-bounce/SpinnerThreeBounce.js";
|
|
26
|
+
export { SpinnerThreeBounce as Spinner } from "./plugins/spinner-three-bounce/SpinnerThreeBounce.js";
|
|
25
27
|
export * from "./plugins/source-controller/SourceController.js";
|
|
26
28
|
export * from "./plugins/subtitles/ClosedCaptions.js";
|
|
27
29
|
export { ClosedCaptions as Subtitles } from "./plugins/subtitles/ClosedCaptions.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.plugins.d.ts","sourceRoot":"","sources":["../src/index.plugins.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC;AAEnC,cAAc,2CAA2C,CAAC;AAC1D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,cAAc,0BAA0B,CAAC;AACzC,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AACtD,cAAc,8BAA8B,CAAC;AAE7C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wBAAwB,CAAC;AACvC,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,kDAAkD,CAAC;AACjE,cAAc,yCAAyC,CAAC;AACxD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,sDAAsD,CAAC;AACrE,cAAc,iDAAiD,CAAC;AAChE,cAAc,uCAAuC,CAAC;AACtD,OAAO,EAAE,cAAc,IAAI,SAAS,EAAE,MAAM,uCAAuC,CAAC;AACpF,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AAGnD,cAAc,qCAAqC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.plugins.d.ts","sourceRoot":"","sources":["../src/index.plugins.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC;AAEnC,cAAc,2CAA2C,CAAC;AAC1D,OAAO,EAAE,WAAW,IAAI,aAAa,EAAE,MAAM,2CAA2C,CAAC;AACzF,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,cAAc,0BAA0B,CAAC;AACzC,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AACtD,cAAc,8BAA8B,CAAC;AAE7C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wBAAwB,CAAC;AACvC,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,kDAAkD,CAAC;AACjE,cAAc,yCAAyC,CAAC;AACxD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,sDAAsD,CAAC;AACrE,OAAO,EAAE,kBAAkB,IAAI,OAAO,EAAE,MAAM,sDAAsD,CAAC;AACrG,cAAc,iDAAiD,CAAC;AAChE,cAAc,uCAAuC,CAAC;AACtD,OAAO,EAAE,cAAc,IAAI,SAAS,EAAE,MAAM,uCAAuC,CAAC;AACpF,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AAGnD,cAAc,qCAAqC,CAAC"}
|
package/lib/index.plugins.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import '../assets/style/main.scss';
|
|
2
2
|
export * from "./plugins/audio-selector/AudioSelector.js";
|
|
3
|
+
export { AudioTracks as AudioSelector } from "./plugins/audio-selector/AudioSelector.js";
|
|
3
4
|
export * from "./plugins/big-mute-button/BigMuteButton.js";
|
|
4
5
|
export * from "./plugins/bottom-gear/BottomGear.js";
|
|
5
6
|
export * from "./plugins/clappr-nerd-stats/ClapprNerdStats.js";
|
|
@@ -23,6 +24,7 @@ export * from "./plugins/seek-time/SeekTime.js";
|
|
|
23
24
|
export * from "./plugins/share/Share.js";
|
|
24
25
|
export * from "./plugins/skip-time/SkipTime.js";
|
|
25
26
|
export * from "./plugins/spinner-three-bounce/SpinnerThreeBounce.js";
|
|
27
|
+
export { SpinnerThreeBounce as Spinner } from "./plugins/spinner-three-bounce/SpinnerThreeBounce.js";
|
|
26
28
|
export * from "./plugins/source-controller/SourceController.js";
|
|
27
29
|
export * from "./plugins/subtitles/ClosedCaptions.js";
|
|
28
30
|
export { ClosedCaptions as Subtitles } from "./plugins/subtitles/ClosedCaptions.js"; // TODO remove in future versions
|
|
@@ -10,7 +10,7 @@ import '../../../assets/audio-selector/style.scss';
|
|
|
10
10
|
*
|
|
11
11
|
* - {@link MediaControl}
|
|
12
12
|
*/
|
|
13
|
-
export declare class
|
|
13
|
+
export declare class AudioTracks extends UICorePlugin {
|
|
14
14
|
private currentTrack;
|
|
15
15
|
private tracks;
|
|
16
16
|
/**
|
|
@@ -39,28 +39,22 @@ export declare class AudioSelector extends UICorePlugin {
|
|
|
39
39
|
*/
|
|
40
40
|
get events(): {
|
|
41
41
|
'click [data-audiotracks-select]': string;
|
|
42
|
-
'click
|
|
42
|
+
'click #audiotracks-button': string;
|
|
43
43
|
};
|
|
44
44
|
/**
|
|
45
45
|
* @internal
|
|
46
46
|
*/
|
|
47
47
|
bindEvents(): void;
|
|
48
48
|
private onCoreReady;
|
|
49
|
-
private bindPlaybackEvents;
|
|
50
|
-
private setupAudioTrackListeners;
|
|
51
|
-
private onStop;
|
|
52
49
|
private onActiveContainerChanged;
|
|
53
50
|
private shouldRender;
|
|
54
51
|
/**
|
|
55
52
|
* @internal
|
|
56
53
|
*/
|
|
57
54
|
render(): this;
|
|
58
|
-
private fillTracks;
|
|
59
|
-
private findTrackBy;
|
|
60
55
|
private onTrackSelect;
|
|
61
56
|
private selectAudioTrack;
|
|
62
|
-
private
|
|
63
|
-
private hideSelectTrackMenu;
|
|
57
|
+
private hideMenu;
|
|
64
58
|
private toggleContextMenu;
|
|
65
59
|
private buttonElement;
|
|
66
60
|
private buttonElementText;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioSelector.d.ts","sourceRoot":"","sources":["../../../src/plugins/audio-selector/AudioSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAY,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"AudioSelector.d.ts","sourceRoot":"","sources":["../../../src/plugins/audio-selector/AudioSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAY,MAAM,cAAc,CAAA;AAO7D,OAAO,2CAA2C,CAAA;AASlD;;;;;;;;;GASG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,YAAY,CAA0B;IAE9C,OAAO,CAAC,MAAM,CAAmB;IAEjC;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;IACH,MAAM,KAAK,OAAO,WAEjB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAEvD;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;;MAKlB;IAED;;OAEG;IACM,UAAU;IASnB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,wBAAwB;IAwBhC,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACM,MAAM;IAmBf,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,qBAAqB;CAW9B"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { Events, UICorePlugin, template } from '@clappr/core';
|
|
2
|
-
import { trace } from '@gcorevideo/utils';
|
|
3
2
|
import assert from 'assert';
|
|
4
3
|
import { CLAPPR_VERSION } from '../../build.js';
|
|
5
4
|
import pluginHtml from '../../../assets/audio-selector/track-selector.ejs';
|
|
6
5
|
import '../../../assets/audio-selector/style.scss';
|
|
7
6
|
import audioArrow from '../../../assets/icons/old/quality-arrow.svg';
|
|
8
|
-
const VERSION = '
|
|
9
|
-
const T = 'plugins.
|
|
7
|
+
const VERSION = '2.22.4';
|
|
8
|
+
// const T = 'plugins.audiotracks'
|
|
10
9
|
/**
|
|
11
10
|
* `PLUGIN` that makes possible to switch audio tracks via the media control UI.
|
|
12
11
|
* @beta
|
|
@@ -17,14 +16,14 @@ const T = 'plugins.audio_selector';
|
|
|
17
16
|
*
|
|
18
17
|
* - {@link MediaControl}
|
|
19
18
|
*/
|
|
20
|
-
export class
|
|
19
|
+
export class AudioTracks extends UICorePlugin {
|
|
21
20
|
currentTrack = null;
|
|
22
21
|
tracks = [];
|
|
23
22
|
/**
|
|
24
23
|
* @internal
|
|
25
24
|
*/
|
|
26
25
|
get name() {
|
|
27
|
-
return 'audio_selector';
|
|
26
|
+
return 'audio_selector'; // TODO rename to audiotracks
|
|
28
27
|
}
|
|
29
28
|
/**
|
|
30
29
|
* @internal
|
|
@@ -53,58 +52,43 @@ export class AudioSelector extends UICorePlugin {
|
|
|
53
52
|
get events() {
|
|
54
53
|
return {
|
|
55
54
|
'click [data-audiotracks-select]': 'onTrackSelect',
|
|
56
|
-
'click
|
|
55
|
+
'click #audiotracks-button': 'toggleContextMenu',
|
|
57
56
|
};
|
|
58
57
|
}
|
|
59
58
|
/**
|
|
60
59
|
* @internal
|
|
61
60
|
*/
|
|
62
61
|
bindEvents() {
|
|
63
|
-
this.
|
|
62
|
+
this.listenToOnce(this.core, Events.CORE_READY, this.onCoreReady);
|
|
64
63
|
this.listenTo(this.core, Events.CORE_ACTIVE_CONTAINER_CHANGED, this.onActiveContainerChanged);
|
|
65
64
|
}
|
|
66
65
|
onCoreReady() {
|
|
67
|
-
trace(`${T} onCoreReady`);
|
|
68
66
|
const mediaControl = this.core.getPlugin('media_control');
|
|
69
67
|
assert(mediaControl, 'media_control plugin is required');
|
|
70
|
-
this.listenTo(mediaControl, Events.MEDIACONTROL_RENDERED,
|
|
71
|
-
|
|
68
|
+
this.listenTo(mediaControl, Events.MEDIACONTROL_RENDERED, () => {
|
|
69
|
+
mediaControl.putElement('audiotracks', this.$el);
|
|
70
|
+
});
|
|
71
|
+
this.listenTo(mediaControl, Events.MEDIACONTROL_HIDE, this.hideMenu);
|
|
72
72
|
}
|
|
73
|
-
|
|
74
|
-
trace(`${T} bindPlaybackEvents`);
|
|
73
|
+
onActiveContainerChanged() {
|
|
75
74
|
this.currentTrack = null;
|
|
76
|
-
this.listenTo(this.core.
|
|
77
|
-
this.setupAudioTrackListeners();
|
|
78
|
-
}
|
|
79
|
-
setupAudioTrackListeners() {
|
|
80
|
-
this.listenTo(this.core.activePlayback, Events.PLAYBACK_AUDIO_AVAILABLE, (tracks) => {
|
|
81
|
-
trace(`${T} on PLAYBACK_AUDIO_AVAILABLE`, { audioTracks: tracks });
|
|
75
|
+
this.listenTo(this.core.activeContainer, Events.CONTAINER_AUDIO_AVAILABLE, (tracks) => {
|
|
82
76
|
this.currentTrack =
|
|
83
|
-
tracks.find((track) => track.kind === 'main') ?? null;
|
|
84
|
-
this.
|
|
77
|
+
tracks.find((track) => track.kind === 'main') ?? null; // TODO test
|
|
78
|
+
this.tracks = tracks;
|
|
79
|
+
this.render();
|
|
85
80
|
});
|
|
86
|
-
this.listenTo(this.core.
|
|
87
|
-
trace(`${T} PLAYBACK_AUDIO_CHANGED`, { audioTrack: track });
|
|
81
|
+
this.listenTo(this.core.activeContainer, Events.CONTAINER_AUDIO_CHANGED, (track) => {
|
|
88
82
|
this.currentTrack = track;
|
|
89
83
|
this.highlightCurrentTrack();
|
|
90
84
|
this.buttonElement().removeClass('changing');
|
|
91
85
|
this.updateText();
|
|
92
86
|
});
|
|
93
87
|
}
|
|
94
|
-
onStop() {
|
|
95
|
-
trace(`${T} onStop`);
|
|
96
|
-
}
|
|
97
|
-
onActiveContainerChanged() {
|
|
98
|
-
trace(`${T} onActiveContainerChanged`);
|
|
99
|
-
this.bindPlaybackEvents();
|
|
100
|
-
}
|
|
101
88
|
shouldRender() {
|
|
102
|
-
|
|
103
|
-
return false;
|
|
104
|
-
}
|
|
105
|
-
this.tracks = this.core.activePlayback.audioTracks;
|
|
89
|
+
// Render is called from the parent class constructor so tracks aren't available
|
|
106
90
|
// Only care if we have at least 2 to choose from
|
|
107
|
-
return this.tracks
|
|
91
|
+
return this.tracks?.length > 1;
|
|
108
92
|
}
|
|
109
93
|
/**
|
|
110
94
|
* @internal
|
|
@@ -114,44 +98,34 @@ export class AudioSelector extends UICorePlugin {
|
|
|
114
98
|
return this;
|
|
115
99
|
}
|
|
116
100
|
const mediaControl = this.core.getPlugin('media_control');
|
|
117
|
-
this.$el.html(
|
|
118
|
-
|
|
119
|
-
|
|
101
|
+
this.$el.html(AudioTracks.template({
|
|
102
|
+
tracks: this.tracks,
|
|
103
|
+
title: this.getTitle(),
|
|
104
|
+
icon: audioArrow,
|
|
105
|
+
}));
|
|
120
106
|
this.updateText();
|
|
121
107
|
this.highlightCurrentTrack();
|
|
122
108
|
return this;
|
|
123
109
|
}
|
|
124
|
-
fillTracks(tracks) {
|
|
125
|
-
this.tracks = tracks;
|
|
126
|
-
this.render();
|
|
127
|
-
}
|
|
128
|
-
findTrackBy(id) {
|
|
129
|
-
return this.tracks.find((track) => track.id === id);
|
|
130
|
-
}
|
|
131
110
|
onTrackSelect(event) {
|
|
132
111
|
const id = event.target?.dataset?.audiotracksSelect;
|
|
133
112
|
if (id) {
|
|
134
113
|
this.selectAudioTrack(id);
|
|
135
114
|
}
|
|
136
|
-
this.
|
|
115
|
+
this.hideMenu();
|
|
137
116
|
event.stopPropagation();
|
|
138
117
|
return false;
|
|
139
118
|
}
|
|
140
119
|
selectAudioTrack(id) {
|
|
141
120
|
this.startTrackSwitch();
|
|
142
|
-
this.core.
|
|
121
|
+
this.core.activeContainer.switchAudioTrack(id);
|
|
143
122
|
this.updateText();
|
|
144
123
|
}
|
|
145
|
-
|
|
146
|
-
this.
|
|
147
|
-
}
|
|
148
|
-
hideSelectTrackMenu() {
|
|
149
|
-
;
|
|
150
|
-
this.$('ul').hide();
|
|
124
|
+
hideMenu() {
|
|
125
|
+
this.$el.find('#audiotracks-select').addClass('hidden');
|
|
151
126
|
}
|
|
152
127
|
toggleContextMenu() {
|
|
153
|
-
;
|
|
154
|
-
this.$('ul').toggle();
|
|
128
|
+
this.$el.find('#audiotracks-select').toggleClass('hidden');
|
|
155
129
|
}
|
|
156
130
|
buttonElement() {
|
|
157
131
|
return this.$('button');
|
|
@@ -160,11 +134,14 @@ export class AudioSelector extends UICorePlugin {
|
|
|
160
134
|
return this.$('button .audio-text');
|
|
161
135
|
}
|
|
162
136
|
trackElement(id) {
|
|
163
|
-
return this.$('
|
|
164
|
-
(id !== undefined ?
|
|
137
|
+
return this.$('#audiotracks-select a' +
|
|
138
|
+
(id !== undefined ? `[data-audiotracks-select="${id}"]` : '')).parent();
|
|
165
139
|
}
|
|
166
140
|
getTitle() {
|
|
167
|
-
|
|
141
|
+
if (!this.currentTrack) {
|
|
142
|
+
return '';
|
|
143
|
+
}
|
|
144
|
+
return this.currentTrack.label || this.currentTrack.language;
|
|
168
145
|
}
|
|
169
146
|
startTrackSwitch() {
|
|
170
147
|
this.buttonElement().addClass('changing');
|
|
@@ -15,6 +15,7 @@ export declare enum SpinnerEvents {
|
|
|
15
15
|
* `PLUGIN` that shows a pending operation indicator when playback is buffering or in a similar state.
|
|
16
16
|
* @public
|
|
17
17
|
* @remarks
|
|
18
|
+
* It is aliased as `Spinner` for convenience.
|
|
18
19
|
* Events emitted - {@link SpinnerEvents}
|
|
19
20
|
* Other plugins can use {@link SpinnerThreeBounce.show | show} and {@link SpinnerThreeBounce.hide | hide} methods to
|
|
20
21
|
* implement custom pending/progress indication scenarios.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpinnerThreeBounce.d.ts","sourceRoot":"","sources":["../../../src/plugins/spinner-three-bounce/SpinnerThreeBounce.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,SAAS,EAET,iBAAiB,EAElB,MAAM,cAAc,CAAA;AAKrB,OAAO,mDAAmD,CAAA;AAM1D;;;GAGG;AACH,oBAAY,aAAa;IACvB;;;OAGG;IACH,IAAI,yBAAyB;CAC9B;AAED
|
|
1
|
+
{"version":3,"file":"SpinnerThreeBounce.d.ts","sourceRoot":"","sources":["../../../src/plugins/spinner-three-bounce/SpinnerThreeBounce.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,SAAS,EAET,iBAAiB,EAElB,MAAM,cAAc,CAAA;AAKrB,OAAO,mDAAmD,CAAA;AAM1D;;;GAGG;AACH,oBAAY,aAAa;IACvB;;;OAGG;IACH,IAAI,yBAAyB;CAC9B;AAED;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,SAAQ,iBAAiB;IACvD,OAAO,CAAC,SAAS,CAAQ;IAEzB;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;IACH,IAAa,UAAU;;;MAKtB;IAED,OAAO,CAAC,WAAW,CAAuB;IAE1C,OAAO,CAAC,QAAQ,CAAwB;IAExC,OAAO,CAAC,aAAa,CAAQ;IAE7B,OAAO,CAAC,YAAY,CAAQ;gBAEhB,SAAS,EAAE,SAAS;IAmBhC,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,OAAO;IAUf;;;;;;OAMG;IACH,IAAI,CAAC,KAAK,SAAM;IAMhB;;OAEG;IACH,IAAI;IAKJ,OAAO,CAAC,KAAK;IASb,OAAO,CAAC,KAAK;IAeb;;OAEG;IACM,MAAM;CAiBhB"}
|
|
@@ -26,6 +26,7 @@ export var SpinnerEvents;
|
|
|
26
26
|
* `PLUGIN` that shows a pending operation indicator when playback is buffering or in a similar state.
|
|
27
27
|
* @public
|
|
28
28
|
* @remarks
|
|
29
|
+
* It is aliased as `Spinner` for convenience.
|
|
29
30
|
* Events emitted - {@link SpinnerEvents}
|
|
30
31
|
* Other plugins can use {@link SpinnerThreeBounce.show | show} and {@link SpinnerThreeBounce.hide | hide} methods to
|
|
31
32
|
* implement custom pending/progress indication scenarios.
|
package/lib/testUtils.d.ts
CHANGED
|
@@ -91,6 +91,7 @@ export declare function createMockPlayback(name?: string): Events<string | symbo
|
|
|
91
91
|
canAutoPlay: import("vitest").Mock<(...args: any[]) => any>;
|
|
92
92
|
onResize: import("vitest").Mock<(...args: any[]) => any>;
|
|
93
93
|
setPlaybackRate: import("vitest").Mock<(...args: any[]) => any>;
|
|
94
|
+
switchAudioTrack: import("vitest").Mock<(...args: any[]) => any>;
|
|
94
95
|
trigger: <T extends string | symbol>(event: T, ...args: any[]) => boolean;
|
|
95
96
|
};
|
|
96
97
|
export declare function createMockContainer(playback?: any): Events<string | symbol, any> & {
|
|
@@ -105,6 +106,7 @@ export declare function createMockContainer(playback?: any): Events<string | sym
|
|
|
105
106
|
isPlaying: import("vitest").Mock<(...args: any[]) => any>;
|
|
106
107
|
play: import("vitest").Mock<(...args: any[]) => any>;
|
|
107
108
|
seek: import("vitest").Mock<(...args: any[]) => any>;
|
|
109
|
+
switchAudioTrack: import("vitest").Mock<(...args: any[]) => any>;
|
|
108
110
|
trigger: <T extends string | symbol>(event: T, ...args: any[]) => boolean;
|
|
109
111
|
};
|
|
110
112
|
export declare function createMockMediaControl(core: any): UICorePlugin;
|
package/lib/testUtils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../src/testUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,MAAM,MAAM,eAAe,CAAA;AAElC;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,MAAM;IAErC,SAAS,CAAC,OAAO,EAAE,GAAG;IACtB,QAAQ,CAAC,IAAI,EAAE,GAAG;IAClB,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG;gBAFjB,OAAO,EAAE,GAAG,EACb,IAAI,EAAE,GAAG,EACR,WAAW,CAAC,EAAE,GAAG,YAAA;IAK7B,IAAI,IAAI,WAEP;IAED,OAAO;IAEP,IAAI;IAEJ,KAAK;IAEL,IAAI;IAEJ,OAAO;IAEP,IAAI;IAEJ,cAAc;IAEd,WAAW;IAIX,QAAQ;IAER,OAAO;IAEP,eAAe;IAIf,kBAAkB;IAIlB,cAAc;IAId,qBAAqB;IAIrB,IAAI;IAEJ,MAAM;IAEN,MAAM;IAEN,SAAS;IAET,eAAe;IAIf,WAAW;IAIX,QAAQ;IAIR,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;CAGtC;AAED,wBAAgB,cAAc,CAC5B,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,SAAS,GAAE,GAA2B;;;;;;;;;;;;;;;;EAqBvC;AAED,wBAAgB,gBAAgB;;;EAK/B;AAED,wBAAgB,mBAAmB;;;;;;EAKlC;AAED,wBAAgB,kBAAkB,CAAC,IAAI,SAAS
|
|
1
|
+
{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../src/testUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,MAAM,MAAM,eAAe,CAAA;AAElC;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,MAAM;IAErC,SAAS,CAAC,OAAO,EAAE,GAAG;IACtB,QAAQ,CAAC,IAAI,EAAE,GAAG;IAClB,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG;gBAFjB,OAAO,EAAE,GAAG,EACb,IAAI,EAAE,GAAG,EACR,WAAW,CAAC,EAAE,GAAG,YAAA;IAK7B,IAAI,IAAI,WAEP;IAED,OAAO;IAEP,IAAI;IAEJ,KAAK;IAEL,IAAI;IAEJ,OAAO;IAEP,IAAI;IAEJ,cAAc;IAEd,WAAW;IAIX,QAAQ;IAER,OAAO;IAEP,eAAe;IAIf,kBAAkB;IAIlB,cAAc;IAId,qBAAqB;IAIrB,IAAI;IAEJ,MAAM;IAEN,MAAM;IAEN,SAAS;IAET,eAAe;IAIf,WAAW;IAIX,QAAQ;IAIR,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;CAGtC;AAED,wBAAgB,cAAc,CAC5B,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,SAAS,GAAE,GAA2B;;;;;;;;;;;;;;;;EAqBvC;AAED,wBAAgB,gBAAgB;;;EAK/B;AAED,wBAAgB,mBAAmB;;;;;;EAKlC;AAED,wBAAgB,kBAAkB,CAAC,IAAI,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkC/C;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,GAAE,GAA0B;;;;;;;;;;;;;;EAkBvE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,gBAiB/C;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,OAY7C"}
|
package/lib/testUtils.js
CHANGED
|
@@ -124,6 +124,7 @@ export function createMockPlayback(name = 'mock') {
|
|
|
124
124
|
canAutoPlay: vi.fn().mockImplementation(() => true),
|
|
125
125
|
onResize: vi.fn().mockImplementation(() => true),
|
|
126
126
|
setPlaybackRate: vi.fn(),
|
|
127
|
+
switchAudioTrack: vi.fn(),
|
|
127
128
|
trigger: emitter.emit,
|
|
128
129
|
});
|
|
129
130
|
}
|
|
@@ -142,6 +143,7 @@ export function createMockContainer(playback = createMockPlayback()) {
|
|
|
142
143
|
isPlaying: vi.fn().mockReturnValue(false),
|
|
143
144
|
play: vi.fn(),
|
|
144
145
|
seek: vi.fn(),
|
|
146
|
+
switchAudioTrack: vi.fn(),
|
|
145
147
|
trigger: emitter.emit,
|
|
146
148
|
});
|
|
147
149
|
}
|
package/package.json
CHANGED
package/src/index.plugins.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import '../assets/style/main.scss';
|
|
2
2
|
|
|
3
3
|
export * from "./plugins/audio-selector/AudioSelector.js";
|
|
4
|
+
export { AudioTracks as AudioSelector } from "./plugins/audio-selector/AudioSelector.js";
|
|
4
5
|
export * from "./plugins/big-mute-button/BigMuteButton.js";
|
|
5
6
|
export * from "./plugins/bottom-gear/BottomGear.js";
|
|
6
7
|
export * from "./plugins/clappr-nerd-stats/ClapprNerdStats.js";
|
|
@@ -24,6 +25,7 @@ export * from "./plugins/seek-time/SeekTime.js";
|
|
|
24
25
|
export * from "./plugins/share/Share.js";
|
|
25
26
|
export * from "./plugins/skip-time/SkipTime.js";
|
|
26
27
|
export * from "./plugins/spinner-three-bounce/SpinnerThreeBounce.js";
|
|
28
|
+
export { SpinnerThreeBounce as Spinner } from "./plugins/spinner-three-bounce/SpinnerThreeBounce.js";
|
|
27
29
|
export * from "./plugins/source-controller/SourceController.js";
|
|
28
30
|
export * from "./plugins/subtitles/ClosedCaptions.js";
|
|
29
31
|
export { ClosedCaptions as Subtitles } from "./plugins/subtitles/ClosedCaptions.js"; // TODO remove in future versions
|