@gcorevideo/player 2.19.12 → 2.19.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core.js +16 -11
- package/dist/index.css +1405 -1405
- package/dist/index.js +1239 -1088
- package/dist/player.d.ts +209 -45
- package/dist/plugins/index.css +1461 -1461
- package/dist/plugins/index.js +4005 -3858
- package/docs/api/player.bottomgear.md +3 -289
- package/docs/api/player.dvrcontrols._constructor_.md +3 -0
- package/docs/api/player.dvrcontrols.md +10 -201
- package/docs/api/player.levelselector.md +8 -140
- package/docs/api/player.md +9 -5
- package/docs/api/player.mediacontrol.disable.md +2 -0
- package/docs/api/player.mediacontrol.disabledcontrolbutton.md +1 -1
- package/docs/api/player.mediacontrol.enable.md +2 -0
- package/docs/api/player.mediacontrol.enablecontrolbutton.md +1 -1
- package/docs/api/player.mediacontrol.getelement.md +19 -1
- package/docs/api/player.mediacontrol.md +17 -281
- package/docs/api/player.mediacontrol.volume.md +2 -2
- package/docs/api/player.mediacontrolelement.md +2 -1
- package/docs/api/player.poster.disable.md +5 -0
- package/docs/api/player.poster.enable.md +5 -0
- package/docs/api/player.poster.md +25 -183
- package/lib/Player.d.ts +1 -0
- package/lib/Player.d.ts.map +1 -1
- package/lib/Player.js +15 -10
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/plugins/audio-selector/AudioSelector.js +2 -2
- package/lib/plugins/big-mute-button/BigMuteButton.d.ts.map +1 -1
- package/lib/plugins/big-mute-button/BigMuteButton.js +2 -1
- package/lib/plugins/bottom-gear/BottomGear.d.ts +38 -7
- package/lib/plugins/bottom-gear/BottomGear.d.ts.map +1 -1
- package/lib/plugins/bottom-gear/BottomGear.js +53 -33
- package/lib/plugins/clappr-nerd-stats/ClapprNerdStats.d.ts +1 -1
- package/lib/plugins/clappr-nerd-stats/ClapprNerdStats.d.ts.map +1 -1
- package/lib/plugins/clappr-nerd-stats/ClapprNerdStats.js +20 -24
- package/lib/plugins/clappr-stats/ClapprStats.js +1 -1
- package/lib/plugins/click-to-pause/ClickToPause.js +1 -1
- package/lib/plugins/clips/Clips.js +2 -2
- package/lib/plugins/context-menu/ContextMenu.js +1 -1
- package/lib/plugins/disable-controls/DisableControls.js +1 -1
- package/lib/plugins/dvr-controls/DvrControls.d.ts +30 -4
- package/lib/plugins/dvr-controls/DvrControls.d.ts.map +1 -1
- package/lib/plugins/dvr-controls/DvrControls.js +39 -11
- package/lib/plugins/error-screen/ErrorScreen.d.ts.map +1 -1
- package/lib/plugins/error-screen/ErrorScreen.js +2 -1
- package/lib/plugins/favicon/Favicon.js +1 -1
- package/lib/plugins/google-analytics/GoogleAnalytics.js +1 -1
- package/lib/plugins/level-selector/LevelSelector.d.ts +25 -6
- package/lib/plugins/level-selector/LevelSelector.d.ts.map +1 -1
- package/lib/plugins/level-selector/LevelSelector.js +33 -12
- package/lib/plugins/logo/Logo.js +1 -1
- package/lib/plugins/media-control/MediaControl.d.ts +66 -22
- package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
- package/lib/plugins/media-control/MediaControl.js +72 -35
- package/lib/plugins/multi-camera/MultiCamera.js +3 -3
- package/lib/plugins/picture-in-picture/PictureInPicture.js +3 -3
- package/lib/plugins/playback-rate/PlaybackRate.d.ts.map +1 -1
- package/lib/plugins/playback-rate/PlaybackRate.js +3 -3
- package/lib/plugins/poster/Poster.d.ts +57 -3
- package/lib/plugins/poster/Poster.d.ts.map +1 -1
- package/lib/plugins/poster/Poster.js +57 -9
- package/lib/plugins/seek-time/SeekTime.js +2 -2
- package/lib/plugins/share/Share.js +2 -2
- package/lib/plugins/skip-time/SkipTime.js +1 -1
- package/lib/plugins/source-controller/SourceController.js +1 -1
- package/lib/plugins/spinner-three-bounce/SpinnerThreeBounce.js +1 -1
- package/lib/plugins/statistics/Statistics.js +1 -1
- package/lib/plugins/subtitles/Subtitles.js +3 -3
- package/lib/plugins/thumbnails/Thumbnails.js +3 -3
- package/lib/plugins/types.d.ts +1 -7
- package/lib/plugins/types.d.ts.map +1 -1
- package/lib/plugins/vast-ads/VastAds.d.ts +1 -0
- package/lib/plugins/vast-ads/VastAds.d.ts.map +1 -1
- package/lib/plugins/vast-ads/VastAds.js +6 -3
- package/package.json +2 -1
- package/src/Player.ts +15 -9
- package/src/__tests__/Player.test.ts +15 -76
- package/src/index.ts +1 -0
- package/src/plugins/audio-selector/AudioSelector.ts +2 -2
- package/src/plugins/big-mute-button/BigMuteButton.ts +2 -1
- package/src/plugins/bottom-gear/BottomGear.ts +67 -42
- package/src/plugins/clappr-nerd-stats/ClapprNerdStats.ts +21 -26
- package/src/plugins/clappr-stats/ClapprStats.ts +1 -1
- package/src/plugins/click-to-pause/ClickToPause.ts +1 -1
- package/src/plugins/clips/Clips.ts +2 -2
- package/src/plugins/context-menu/ContextMenu.ts +1 -1
- package/src/plugins/disable-controls/DisableControls.ts +1 -1
- package/src/plugins/dvr-controls/DvrControls.ts +42 -14
- package/src/plugins/error-screen/ErrorScreen.ts +2 -1
- package/src/plugins/favicon/Favicon.ts +1 -1
- package/src/plugins/google-analytics/GoogleAnalytics.ts +1 -1
- package/src/plugins/level-selector/LevelSelector.ts +34 -14
- package/src/plugins/level-selector/__tests__/LevelSelector.test.ts +22 -2
- package/src/plugins/logo/Logo.ts +1 -1
- package/src/plugins/media-control/MediaControl.ts +83 -44
- package/src/plugins/multi-camera/MultiCamera.ts +3 -3
- package/src/plugins/picture-in-picture/PictureInPicture.ts +3 -3
- package/src/plugins/playback-rate/PlaybackRate.ts +3 -4
- package/src/plugins/poster/Poster.ts +59 -12
- package/src/plugins/seek-time/SeekTime.ts +2 -2
- package/src/plugins/share/Share.ts +2 -2
- package/src/plugins/skip-time/SkipTime.ts +1 -1
- package/src/plugins/source-controller/SourceController.ts +1 -1
- package/src/plugins/source-controller/__tests__/SourceController.test.ts +5 -0
- package/src/plugins/spinner-three-bounce/SpinnerThreeBounce.ts +1 -1
- package/src/plugins/statistics/Statistics.ts +1 -1
- package/src/plugins/subtitles/Subtitles.ts +3 -3
- package/src/plugins/thumbnails/Thumbnails.ts +3 -3
- package/src/plugins/types.ts +1 -0
- package/src/plugins/vast-ads/VastAds.ts +6 -6
- package/temp/player.api.json +3301 -5030
- package/tsconfig.tsbuildinfo +1 -1
- package/docs/api/player.bottomgear.attributes.md +0 -17
- package/docs/api/player.bottomgear.bindevents.md +0 -18
- package/docs/api/player.bottomgear.container.md +0 -14
- package/docs/api/player.bottomgear.events.md +0 -16
- package/docs/api/player.bottomgear.hide.md +0 -18
- package/docs/api/player.bottomgear.name.md +0 -14
- package/docs/api/player.bottomgear.refresh.md +0 -18
- package/docs/api/player.bottomgear.reload.md +0 -18
- package/docs/api/player.bottomgear.render.md +0 -18
- package/docs/api/player.bottomgear.supportedversion.md +0 -16
- package/docs/api/player.bottomgear.template.md +0 -14
- package/docs/api/player.bottomgear.togglegearmenu.md +0 -18
- package/docs/api/player.bottomgear.unbindevents.md +0 -18
- package/docs/api/player.bottomgear.version.md +0 -14
- package/docs/api/player.dvrcontrols.attributes.md +0 -14
- package/docs/api/player.dvrcontrols.bindevents.md +0 -15
- package/docs/api/player.dvrcontrols.click.md +0 -15
- package/docs/api/player.dvrcontrols.events.md +0 -13
- package/docs/api/player.dvrcontrols.name.md +0 -11
- package/docs/api/player.dvrcontrols.render.md +0 -15
- package/docs/api/player.dvrcontrols.settingsupdate.md +0 -15
- package/docs/api/player.dvrcontrols.shouldrender.md +0 -15
- package/docs/api/player.dvrcontrols.supportedversion.md +0 -13
- package/docs/api/player.dvrcontrols.template.md +0 -11
- package/docs/api/player.levelselector.attributes.md +0 -17
- package/docs/api/player.levelselector.bindevents.md +0 -18
- package/docs/api/player.levelselector.name.md +0 -14
- package/docs/api/player.levelselector.render.md +0 -18
- package/docs/api/player.levelselector.supportedversion.md +0 -16
- package/docs/api/player.levelselector.version.md +0 -14
- package/docs/api/player.mediacontrol.attributes.md +0 -17
- package/docs/api/player.mediacontrol.bindcontainerevents.md +0 -18
- package/docs/api/player.mediacontrol.bindevents.md +0 -18
- package/docs/api/player.mediacontrol.container.md +0 -14
- package/docs/api/player.mediacontrol.destroy.md +0 -18
- package/docs/api/player.mediacontrol.disabled.md +0 -14
- package/docs/api/player.mediacontrol.events.md +0 -40
- package/docs/api/player.mediacontrol.getexternalinterface.md +0 -21
- package/docs/api/player.mediacontrol.name.md +0 -14
- package/docs/api/player.mediacontrol.pause.md +0 -20
- package/docs/api/player.mediacontrol.play.md +0 -20
- package/docs/api/player.mediacontrol.playback.md +0 -14
- package/docs/api/player.mediacontrol.render.md +0 -18
- package/docs/api/player.mediacontrol.setmuted.md +0 -52
- package/docs/api/player.mediacontrol.stop.md +0 -20
- package/docs/api/player.mediacontrol.supportedversion.md +0 -16
- package/docs/api/player.poster.attributes.md +0 -14
- package/docs/api/player.poster.bindevents.md +0 -15
- package/docs/api/player.poster.destroy.md +0 -15
- package/docs/api/player.poster.events.md +0 -13
- package/docs/api/player.poster.name.md +0 -11
- package/docs/api/player.poster.render.md +0 -15
- package/docs/api/player.poster.shouldrender.md +0 -11
- package/docs/api/player.poster.showonvideoend.md +0 -11
- package/docs/api/player.poster.supportedversion.md +0 -13
- package/docs/api/player.poster.template.md +0 -11
- package/src/plugins/build.ts +0 -1
|
@@ -3,45 +3,78 @@
|
|
|
3
3
|
// license that can be found in the LICENSE file.
|
|
4
4
|
import { Events, Playback, PlayerError, UIContainerPlugin, template, $, } from '@clappr/core';
|
|
5
5
|
import { trace } from '@gcorevideo/utils';
|
|
6
|
-
import { CLAPPR_VERSION } from '
|
|
6
|
+
import { CLAPPR_VERSION } from '../../build.js';
|
|
7
7
|
import '../../../assets/poster/poster.scss';
|
|
8
8
|
import posterHTML from '../../../assets/poster/poster.ejs';
|
|
9
9
|
import playIcon from '../../../assets/icons/new/play.svg';
|
|
10
10
|
const T = 'plugins.poster_custom';
|
|
11
|
+
/**
|
|
12
|
+
* Displays a poster image in the background and a big play button on top when playback is stopped
|
|
13
|
+
* @beta
|
|
14
|
+
* @remarks
|
|
15
|
+
* When the playback is stopped, media control UI is disabled.
|
|
16
|
+
*
|
|
17
|
+
* Configuration options:
|
|
18
|
+
*
|
|
19
|
+
* - `poster.custom` - custom CSS background
|
|
20
|
+
*
|
|
21
|
+
* - `poster.showForNoOp` - whether to show the poster when the playback is not started
|
|
22
|
+
*
|
|
23
|
+
* - `poster.url` - the URL of the poster image
|
|
24
|
+
*
|
|
25
|
+
* - `poster.showOnVideoEnd` - whether to show the poster when the playback is ended
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* new Player({
|
|
30
|
+
* ...
|
|
31
|
+
* poster: {
|
|
32
|
+
* showForNoOp: true,
|
|
33
|
+
* url: 'https://via.placeholder.com/150.png',
|
|
34
|
+
* }
|
|
35
|
+
* })
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
11
38
|
export class Poster extends UIContainerPlugin {
|
|
12
39
|
hasFatalError = false;
|
|
13
40
|
hasStartedPlaying = false;
|
|
14
41
|
playRequested = false;
|
|
15
42
|
$playButton = null;
|
|
16
43
|
$playWrapper = null;
|
|
44
|
+
/**
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
17
47
|
get name() {
|
|
18
48
|
return 'poster_custom';
|
|
19
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* @internal
|
|
52
|
+
*/
|
|
20
53
|
get supportedVersion() {
|
|
21
54
|
return { min: CLAPPR_VERSION };
|
|
22
55
|
}
|
|
23
|
-
|
|
24
|
-
return template(posterHTML);
|
|
25
|
-
}
|
|
56
|
+
static template = template(posterHTML);
|
|
26
57
|
get shouldRender() {
|
|
27
58
|
if (!this.enabled) {
|
|
28
59
|
return false;
|
|
29
60
|
}
|
|
30
|
-
// const showOnError = this.options.poster?.showOnError !== false
|
|
31
|
-
trace(`${T} shouldRender`, {
|
|
32
|
-
hasFatalError: this.hasFatalError,
|
|
33
|
-
});
|
|
34
61
|
const showForNoOp = !!this.options.poster?.showForNoOp;
|
|
35
62
|
return (this.container.playback.name !== 'html_img' &&
|
|
36
63
|
(this.container.playback.getPlaybackType() !== Playback.NO_OP ||
|
|
37
64
|
showForNoOp));
|
|
38
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* @internal
|
|
68
|
+
*/
|
|
39
69
|
get attributes() {
|
|
40
70
|
return {
|
|
41
71
|
class: 'player-poster',
|
|
42
72
|
'data-poster': '',
|
|
43
73
|
};
|
|
44
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* @internal
|
|
77
|
+
*/
|
|
45
78
|
get events() {
|
|
46
79
|
return {
|
|
47
80
|
click: 'clicked',
|
|
@@ -50,6 +83,9 @@ export class Poster extends UIContainerPlugin {
|
|
|
50
83
|
get showOnVideoEnd() {
|
|
51
84
|
return this.options.poster?.showOnVideoEnd !== false;
|
|
52
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* @internal
|
|
88
|
+
*/
|
|
53
89
|
bindEvents() {
|
|
54
90
|
this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop);
|
|
55
91
|
this.listenTo(this.container, Events.CONTAINER_PLAY, this.onPlay);
|
|
@@ -62,11 +98,17 @@ export class Poster extends UIContainerPlugin {
|
|
|
62
98
|
this.listenTo(this.container, Events.CONTAINER_READY, this.render);
|
|
63
99
|
this.listenTo(this.container, Events.PLAYBACK_PLAY_INTENT, this.onPlayIntent);
|
|
64
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Reenables earlier disabled plugin
|
|
103
|
+
*/
|
|
65
104
|
enable() {
|
|
66
105
|
super.enable();
|
|
67
106
|
this.hasStartedPlaying = this.container.playback.isPlaying();
|
|
68
107
|
this.update();
|
|
69
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Disables the plugin, unmounting it from the DOM
|
|
111
|
+
*/
|
|
70
112
|
disable() {
|
|
71
113
|
trace(`${T} disable`);
|
|
72
114
|
this.hasStartedPlaying = false;
|
|
@@ -197,11 +239,14 @@ export class Poster extends UIContainerPlugin {
|
|
|
197
239
|
this.$el.hide();
|
|
198
240
|
}
|
|
199
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* @internal
|
|
244
|
+
*/
|
|
200
245
|
render() {
|
|
201
246
|
if (!this.shouldRender) {
|
|
202
247
|
return this;
|
|
203
248
|
}
|
|
204
|
-
this.$el.html(
|
|
249
|
+
this.$el.html(Poster.template());
|
|
205
250
|
const isRegularPoster = this.options.poster && this.options.poster.custom === undefined;
|
|
206
251
|
if (isRegularPoster) {
|
|
207
252
|
const posterUrl = this.options.poster.url || this.options.poster;
|
|
@@ -225,6 +270,9 @@ export class Poster extends UIContainerPlugin {
|
|
|
225
270
|
this.update();
|
|
226
271
|
return this;
|
|
227
272
|
}
|
|
273
|
+
/**
|
|
274
|
+
* @internal
|
|
275
|
+
*/
|
|
228
276
|
destroy() {
|
|
229
277
|
this.container.$el.removeClass('container-with-poster-clickable');
|
|
230
278
|
return this;
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
// Use of this source code is governed by a BSD-style
|
|
3
3
|
// license that can be found in the LICENSE file.
|
|
4
4
|
import { Events, Playback, UICorePlugin, Utils, template } from '@clappr/core';
|
|
5
|
-
import { CLAPPR_VERSION } from '
|
|
5
|
+
import { CLAPPR_VERSION } from '../../build.js';
|
|
6
6
|
import seekTimeHTML from '../../../assets/seek-time/seek-time.html';
|
|
7
7
|
import '../../../assets/seek-time/seek-time.scss';
|
|
8
8
|
const { formatTime } = Utils;
|
|
9
9
|
export class SeekTime extends UICorePlugin {
|
|
10
10
|
get name() {
|
|
11
|
-
return '
|
|
11
|
+
return 'media_control_seek_time';
|
|
12
12
|
}
|
|
13
13
|
get supportedVersion() {
|
|
14
14
|
return { min: CLAPPR_VERSION };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Events, UICorePlugin, template } from '@clappr/core';
|
|
2
|
-
import { CLAPPR_VERSION } from '
|
|
2
|
+
import { CLAPPR_VERSION } from '../../build.js';
|
|
3
3
|
import pluginHtml from '../../../assets/share/share.ejs';
|
|
4
4
|
import '../../../assets/share/style.scss';
|
|
5
5
|
import shareIcon from '../../../assets/icons/old/share.svg';
|
|
@@ -10,7 +10,7 @@ export class Share extends UICorePlugin {
|
|
|
10
10
|
hide = false;
|
|
11
11
|
container = null;
|
|
12
12
|
get name() {
|
|
13
|
-
return '
|
|
13
|
+
return 'media_control_share';
|
|
14
14
|
}
|
|
15
15
|
get supportedVersion() {
|
|
16
16
|
return { min: CLAPPR_VERSION };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { UICorePlugin as UICorePluginOriginal, Browser, Playback, Events, template } from '@clappr/core';
|
|
2
|
-
import { CLAPPR_VERSION } from '
|
|
2
|
+
import { CLAPPR_VERSION } from '../../build.js';
|
|
3
3
|
import pluginHtml from '../../../assets/skip-time/skip-time.ejs';
|
|
4
4
|
import '../../../assets/skip-time/style.scss';
|
|
5
5
|
export class SkipTime extends UICorePluginOriginal {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Events as ClapprEvents, CorePlugin, } from '@clappr/core';
|
|
2
2
|
import { PlaybackErrorCode, } from '../../playback.types.js';
|
|
3
3
|
import { trace } from '@gcorevideo/utils';
|
|
4
|
-
import { CLAPPR_VERSION } from '
|
|
4
|
+
import { CLAPPR_VERSION } from '../../build.js';
|
|
5
5
|
const T = 'plugins.source_controller';
|
|
6
6
|
const INITIAL_RETRY_DELAY = 1000;
|
|
7
7
|
const MAX_RETRY_DELAY = 5000;
|
|
@@ -6,7 +6,7 @@ import { PlaybackErrorCode } from '../../playback.types.js';
|
|
|
6
6
|
import { trace } from '@gcorevideo/utils';
|
|
7
7
|
import spinnerHTML from '../../../assets/spinner-three-bounce/spinner.ejs';
|
|
8
8
|
import '../../../assets/spinner-three-bounce/spinner.scss';
|
|
9
|
-
import { CLAPPR_VERSION } from '
|
|
9
|
+
import { CLAPPR_VERSION } from '../../build.js';
|
|
10
10
|
const T = 'plugins.spinner';
|
|
11
11
|
export class SpinnerThreeBounce extends UIContainerPlugin {
|
|
12
12
|
get name() {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { ContainerPlugin, Events, Playback } from '@clappr/core';
|
|
3
3
|
import { reportError } from '@gcorevideo/utils';
|
|
4
4
|
import assert from 'assert';
|
|
5
|
-
import { CLAPPR_VERSION } from '
|
|
5
|
+
import { CLAPPR_VERSION } from '../../build.js';
|
|
6
6
|
const CUSTOM_EVENTS_CONTAINER_START = 'container:start';
|
|
7
7
|
const WATCH_CUTOFF = 5;
|
|
8
8
|
const HEATMAP_INTERVAL = 10;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Events, UICorePlugin, Browser, template, $, } from '@clappr/core';
|
|
2
2
|
import { reportError } from '@gcorevideo/utils';
|
|
3
3
|
import assert from 'assert';
|
|
4
|
-
import { CLAPPR_VERSION } from '
|
|
4
|
+
import { CLAPPR_VERSION } from '../../build.js';
|
|
5
5
|
import '../../../assets/subtitles/style.scss';
|
|
6
6
|
import subtitlesOffIcon from '../../../assets/icons/new/subtitles-off.svg';
|
|
7
7
|
import subtitlesOnIcon from '../../../assets/icons/new/subtitles-on.svg';
|
|
@@ -10,7 +10,7 @@ import stringHTML from '../../../assets/subtitles/string.ejs';
|
|
|
10
10
|
import { isFullscreen } from '../utils.js';
|
|
11
11
|
const VERSION = '0.0.1';
|
|
12
12
|
const LOCAL_STORAGE_SUBTITLES_ID = 'subtitles_select';
|
|
13
|
-
const T = 'plugins.
|
|
13
|
+
const T = 'plugins.media_control_subtitles';
|
|
14
14
|
const NO_TRACK = { language: 'off' };
|
|
15
15
|
export class Subtitles extends UICorePlugin {
|
|
16
16
|
currentContainer;
|
|
@@ -20,7 +20,7 @@ export class Subtitles extends UICorePlugin {
|
|
|
20
20
|
tracks;
|
|
21
21
|
$string;
|
|
22
22
|
get name() {
|
|
23
|
-
return '
|
|
23
|
+
return 'media_control_subtitles';
|
|
24
24
|
}
|
|
25
25
|
get supportedVersion() {
|
|
26
26
|
return { min: CLAPPR_VERSION };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { UICorePlugin, Events, template, $ } from '@clappr/core';
|
|
2
2
|
import { reportError, trace } from '@gcorevideo/utils';
|
|
3
3
|
import parseSRT from 'parse-srt';
|
|
4
|
-
import { CLAPPR_VERSION } from '
|
|
4
|
+
import { CLAPPR_VERSION } from '../../build.js';
|
|
5
5
|
import pluginHtml from '../../../assets/thumbnails/scrub-thumbnails.ejs';
|
|
6
6
|
import '../../../assets/thumbnails/style.scss';
|
|
7
7
|
import { getPageX } from '../utils.js';
|
|
8
|
-
const T = 'plugins.
|
|
8
|
+
const T = 'plugins.media_control_thumbnails';
|
|
9
9
|
export class Thumbnails extends UICorePlugin {
|
|
10
10
|
_$spotlight = null;
|
|
11
11
|
_$backdrop = null;
|
|
@@ -21,7 +21,7 @@ export class Thumbnails extends UICorePlugin {
|
|
|
21
21
|
_oldContainer = null;
|
|
22
22
|
_thumbs = [];
|
|
23
23
|
get name() {
|
|
24
|
-
return '
|
|
24
|
+
return 'media_control_thumbnails';
|
|
25
25
|
}
|
|
26
26
|
get supportedVersion() {
|
|
27
27
|
return { min: CLAPPR_VERSION };
|
package/lib/plugins/types.d.ts
CHANGED
|
@@ -1,8 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export type ZeptoResult = ReturnType<typeof $>;
|
|
3
|
-
export type TimePosition = {
|
|
4
|
-
current: number;
|
|
5
|
-
total: number;
|
|
6
|
-
};
|
|
7
|
-
export type TimerId = ReturnType<typeof setTimeout>;
|
|
1
|
+
export type TemplateFunction = (data: Record<string, unknown>) => string;
|
|
8
2
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VastAds.d.ts","sourceRoot":"","sources":["../../../src/plugins/vast-ads/VastAds.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,IAAI,EAIJ,QAAQ,EAER,YAAY,EAEb,MAAM,cAAc,CAAA;AAYrB,OAAO,qCAAqC,CAAA;AAQ5C,qBAAa,OAAQ,SAAQ,YAAY;IACvC,OAAO,CAAC,mBAAmB,CAAiC;IAE5D,OAAO,CAAC,qBAAqB,CAAwC;IAErE,OAAO,CAAC,oBAAoB,CAAwC;IAEpE,OAAO,CAAC,eAAe,CAAI;IAE3B,OAAO,CAAC,mBAAmB,CAAI;IAE/B,OAAO,CAAC,UAAU,CAAyB;IAE3C,OAAO,CAAC,SAAS,CAAyB;IAE1C,OAAO,CAAC,eAAe,CAA2B;IAElD,OAAO,CAAC,gBAAgB,CAAI;IAE5B,OAAO,CAAC,YAAY,CAAY;IAEhC,OAAO,CAAC,YAAY,CAAQ;IAE5B,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,aAAa,CAAuB;IAE5C,OAAO,CAAC,SAAS,CAAwB;IAEzC,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,mBAAmB,CAA2B;IAEtD,OAAO,CAAC,aAAa,CAAiC;IAEtD,OAAO,CAAC,gBAAgB,CAAI;IAE5B,OAAO,CAAC,IAAI,CAA2B;IAEvC,OAAO,CAAC,OAAO,CAAK;IAEpB,OAAO,CAAC,uBAAuB,CAAI;IAEnC,OAAO,CAAC,0BAA0B,CAAI;IAEtC,OAAO,CAAC,YAAY,CAAoB;IAExC,OAAO,CAAC,OAAO,CAA2B;IAE1C,OAAO,CAAC,SAAS,CAA2B;IAE5C,OAAO,CAAC,UAAU,CAA2B;IAE7C,OAAO,CAAC,aAAa,CAA2B;IAEhD,OAAO,CAAC,YAAY,CAA2B;IAE/C,IAAI,IAAI,WAEP;IAED,IAAI,gBAAgB;;MAEnB;IAED,MAAM,KAAK,OAAO,WAEjB;IAED,IAAI,YAAY,QAEf;IAED,IAAa,UAAU;;;MAKtB;gBAEW,IAAI,EAAE,IAAI;IAqEb,UAAU;IA8FnB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,oBAAoB;IAkE5B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,qBAAqB;IAwD7B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,uBAAuB;IAuC/B,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,mBAAmB;IAiD3B,YAAY;IASZ,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IA6BpB,IAAI,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAG3B;IAED,IAAI,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAE9B;IAED,OAAO,CAAC,kBAAkB;IAU1B,gBAAgB,CAAC,CAAC,EAAE,MAAM;IAQ1B,cAAc;IAsBd,eAAe;IAkBf,WAAW;IAiBX,OAAO,CAAC,UAAU;IA+ClB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,iBAAiB;IAiHhB,MAAM;
|
|
1
|
+
{"version":3,"file":"VastAds.d.ts","sourceRoot":"","sources":["../../../src/plugins/vast-ads/VastAds.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,IAAI,EAIJ,QAAQ,EAER,YAAY,EAEb,MAAM,cAAc,CAAA;AAYrB,OAAO,qCAAqC,CAAA;AAQ5C,qBAAa,OAAQ,SAAQ,YAAY;IACvC,OAAO,CAAC,mBAAmB,CAAiC;IAE5D,OAAO,CAAC,qBAAqB,CAAwC;IAErE,OAAO,CAAC,oBAAoB,CAAwC;IAEpE,OAAO,CAAC,eAAe,CAAI;IAE3B,OAAO,CAAC,mBAAmB,CAAI;IAE/B,OAAO,CAAC,UAAU,CAAyB;IAE3C,OAAO,CAAC,SAAS,CAAyB;IAE1C,OAAO,CAAC,eAAe,CAA2B;IAElD,OAAO,CAAC,gBAAgB,CAAI;IAE5B,OAAO,CAAC,YAAY,CAAY;IAEhC,OAAO,CAAC,YAAY,CAAQ;IAE5B,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,aAAa,CAAuB;IAE5C,OAAO,CAAC,SAAS,CAAwB;IAEzC,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,mBAAmB,CAA2B;IAEtD,OAAO,CAAC,aAAa,CAAiC;IAEtD,OAAO,CAAC,gBAAgB,CAAI;IAE5B,OAAO,CAAC,IAAI,CAA2B;IAEvC,OAAO,CAAC,OAAO,CAAK;IAEpB,OAAO,CAAC,uBAAuB,CAAI;IAEnC,OAAO,CAAC,0BAA0B,CAAI;IAEtC,OAAO,CAAC,YAAY,CAAoB;IAExC,OAAO,CAAC,OAAO,CAA2B;IAE1C,OAAO,CAAC,SAAS,CAA2B;IAE5C,OAAO,CAAC,UAAU,CAA2B;IAE7C,OAAO,CAAC,aAAa,CAA2B;IAEhD,OAAO,CAAC,YAAY,CAA2B;IAE/C,IAAI,IAAI,WAEP;IAED,IAAI,gBAAgB;;MAEnB;IAED,MAAM,KAAK,OAAO,WAEjB;IAED,IAAI,YAAY,QAEf;IAED,IAAa,UAAU;;;MAKtB;gBAEW,IAAI,EAAE,IAAI;IAqEb,UAAU;IA8FnB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,oBAAoB;IAkE5B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,qBAAqB;IAwD7B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,uBAAuB;IAuC/B,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,mBAAmB;IAiD3B,YAAY;IASZ,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IA6BpB,IAAI,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAG3B;IAED,IAAI,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAE9B;IAED,OAAO,CAAC,kBAAkB;IAU1B,gBAAgB,CAAC,CAAC,EAAE,MAAM;IAQ1B,cAAc;IAsBd,eAAe;IAkBf,WAAW;IAiBX,OAAO,CAAC,UAAU;IA+ClB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,iBAAiB;IAiHhB,MAAM;IAqBf,OAAO,CAAC,QAAQ;CAGjB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { $, Browser, Events, HTML5Video, Log, UICorePlugin, Utils, } from '@clappr/core';
|
|
2
2
|
import { reportError } from '@gcorevideo/utils';
|
|
3
3
|
import assert from 'assert';
|
|
4
|
-
import { CLAPPR_VERSION } from '
|
|
4
|
+
import { CLAPPR_VERSION } from '../../build.js';
|
|
5
5
|
import RollManager from './rollmanager.js';
|
|
6
6
|
import SCTEManager from './sctemanager.js';
|
|
7
7
|
import { VolumeFadeEvents } from '../volume-fade/VolumeFade.js';
|
|
@@ -604,7 +604,7 @@ export class VastAds extends UICorePlugin {
|
|
|
604
604
|
setTimeout(async () => {
|
|
605
605
|
if (currentRoll === 'scteroll') {
|
|
606
606
|
this.options.mute = this.core.options.mute;
|
|
607
|
-
this.
|
|
607
|
+
this.setMuted(this.core.options.mute);
|
|
608
608
|
this.core.mediaControl.setInitialVolume();
|
|
609
609
|
}
|
|
610
610
|
// this.adTemplates = null;
|
|
@@ -659,7 +659,7 @@ export class VastAds extends UICorePlugin {
|
|
|
659
659
|
}
|
|
660
660
|
await this.playback?.play();
|
|
661
661
|
this.options.mute = this.core.options.mute;
|
|
662
|
-
this.
|
|
662
|
+
this.setMuted(this.core.options.mute);
|
|
663
663
|
this.core.mediaControl.setInitialVolume();
|
|
664
664
|
}
|
|
665
665
|
}, 0);
|
|
@@ -683,4 +683,7 @@ export class VastAds extends UICorePlugin {
|
|
|
683
683
|
this._adContainer = this._$adContainer[0];
|
|
684
684
|
return this;
|
|
685
685
|
}
|
|
686
|
+
setMuted(muted) {
|
|
687
|
+
this.core.activeContainer.options.mute = muted;
|
|
688
|
+
}
|
|
686
689
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gcorevideo/player",
|
|
3
|
-
"version": "2.19.
|
|
3
|
+
"version": "2.19.14",
|
|
4
4
|
"description": "Gcore JavaScript video player",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
"@rollup/plugin-json": "^6.1.0",
|
|
37
37
|
"@rollup/plugin-node-resolve": "^15.3.0",
|
|
38
38
|
"@sinonjs/fake-timers": "^14.0.0",
|
|
39
|
+
"@types/assert": "^1.5.11",
|
|
39
40
|
"@types/human-format": "^1.0.3",
|
|
40
41
|
"@types/mousetrap": "^1.6.15",
|
|
41
42
|
"@types/node": "^22.10.1",
|
package/src/Player.ts
CHANGED
|
@@ -353,6 +353,8 @@ export class Player {
|
|
|
353
353
|
|
|
354
354
|
private initPlayer(coreOptions: CoreOptions): void {
|
|
355
355
|
trace(`${T} initPlayer`, {
|
|
356
|
+
autoPlay: coreOptions.autoPlay,
|
|
357
|
+
sources: coreOptions.sources,
|
|
356
358
|
// TODO selected options
|
|
357
359
|
})
|
|
358
360
|
|
|
@@ -372,12 +374,7 @@ export class Player {
|
|
|
372
374
|
null,
|
|
373
375
|
)
|
|
374
376
|
if (this.config.autoPlay) {
|
|
375
|
-
|
|
376
|
-
setTimeout(() => {
|
|
377
|
-
this.player?.play({
|
|
378
|
-
autoPlay: true,
|
|
379
|
-
})
|
|
380
|
-
}, 0)
|
|
377
|
+
this.triggerAutoPlay()
|
|
381
378
|
}
|
|
382
379
|
try {
|
|
383
380
|
this.emitter.emit(PlayerEvent.Ready)
|
|
@@ -386,6 +383,15 @@ export class Player {
|
|
|
386
383
|
}
|
|
387
384
|
}
|
|
388
385
|
|
|
386
|
+
private triggerAutoPlay() {
|
|
387
|
+
trace(`${T} triggerAutoPlay`)
|
|
388
|
+
setTimeout(() => {
|
|
389
|
+
this.player?.play({
|
|
390
|
+
autoPlay: true,
|
|
391
|
+
})
|
|
392
|
+
}, 0)
|
|
393
|
+
}
|
|
394
|
+
|
|
389
395
|
private safeTriggerEvent<E extends PlayerEvent>(event: E, ...args: PlayerEventParams<E>) {
|
|
390
396
|
try {
|
|
391
397
|
this.emitter.emit(event, ...args)
|
|
@@ -456,10 +462,10 @@ export class Player {
|
|
|
456
462
|
},
|
|
457
463
|
parent: rootNode,
|
|
458
464
|
width: rootNode.clientWidth,
|
|
459
|
-
source: source ? source.source : undefined,
|
|
460
|
-
mimeType: source ? source.mimeType : undefined,
|
|
461
465
|
}, this.config, {
|
|
462
|
-
autoPlay: false,
|
|
466
|
+
autoPlay: false,
|
|
467
|
+
mimeType: source ? source.mimeType : undefined,
|
|
468
|
+
source: source ? source.source : undefined,
|
|
463
469
|
sources,
|
|
464
470
|
})
|
|
465
471
|
return coreOptions
|
|
@@ -146,86 +146,25 @@ describe('Player', () => {
|
|
|
146
146
|
expect(PlayerClappr).toHaveBeenCalledWith(
|
|
147
147
|
expect.objectContaining({
|
|
148
148
|
source,
|
|
149
|
+
// TODO sources
|
|
149
150
|
}),
|
|
150
151
|
)
|
|
151
152
|
})
|
|
152
153
|
},
|
|
153
154
|
)
|
|
154
155
|
})
|
|
156
|
+
describe('autoPlay', () => {
|
|
157
|
+
describe('initially', () => {
|
|
158
|
+
it('should reset to false', () => {
|
|
159
|
+
const player = new Player({autoPlay: true, sources: []})
|
|
160
|
+
const node = document.createElement('div')
|
|
161
|
+
player.attachTo(node)
|
|
162
|
+
expect(PlayerClappr).toHaveBeenCalledWith(
|
|
163
|
+
expect.objectContaining({
|
|
164
|
+
autoPlay: false,
|
|
165
|
+
}),
|
|
166
|
+
)
|
|
167
|
+
})
|
|
168
|
+
})
|
|
169
|
+
})
|
|
155
170
|
})
|
|
156
|
-
|
|
157
|
-
class MockPlayback extends EventLite {
|
|
158
|
-
constructor(
|
|
159
|
-
protected options: any,
|
|
160
|
-
readonly i18n: any,
|
|
161
|
-
protected playerError?: any,
|
|
162
|
-
) {
|
|
163
|
-
super()
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
get name() {
|
|
167
|
-
return 'mock'
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
consent() {}
|
|
171
|
-
|
|
172
|
-
play() {}
|
|
173
|
-
|
|
174
|
-
pause() {}
|
|
175
|
-
|
|
176
|
-
stop() {}
|
|
177
|
-
|
|
178
|
-
destroy() {}
|
|
179
|
-
|
|
180
|
-
seek() {}
|
|
181
|
-
|
|
182
|
-
seekPercentage() {}
|
|
183
|
-
|
|
184
|
-
getDuration() {
|
|
185
|
-
return 100
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
enterPiP() {}
|
|
189
|
-
|
|
190
|
-
exitPiP() {}
|
|
191
|
-
|
|
192
|
-
getPlaybackType() {
|
|
193
|
-
return 'live'
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
getStartTimeOffset() {
|
|
197
|
-
return 0
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
getCurrentTime() {
|
|
201
|
-
return 0
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
isHighDefinitionInUse() {
|
|
205
|
-
return false
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
mute() {}
|
|
209
|
-
|
|
210
|
-
unmute() {}
|
|
211
|
-
|
|
212
|
-
volume() {}
|
|
213
|
-
|
|
214
|
-
configure() {}
|
|
215
|
-
|
|
216
|
-
attemptAutoPlay() {
|
|
217
|
-
return true
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
canAutoPlay() {
|
|
221
|
-
return true
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
onResize() {
|
|
225
|
-
return true
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
trigger(event: string, ...args: any[]) {
|
|
229
|
-
this.emit(event, ...args)
|
|
230
|
-
}
|
|
231
|
-
}
|
package/src/index.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* @remarks
|
|
5
5
|
* This package provides a video player for the Gcore streaming platform.
|
|
6
6
|
* It is built on top of the Clappr library and provides a framework for building custom integrations.
|
|
7
|
+
* Start with {@link Player} for more information.
|
|
7
8
|
*
|
|
8
9
|
* @packageDocumentation
|
|
9
10
|
*/
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
Events as HlsEvents,
|
|
7
7
|
} from 'hls.js';
|
|
8
8
|
|
|
9
|
-
import { CLAPPR_VERSION } from '
|
|
9
|
+
import { CLAPPR_VERSION } from '../../build.js';
|
|
10
10
|
|
|
11
11
|
import pluginHtml from '../../../assets/audio-selector/track-selector.ejs';
|
|
12
12
|
import '../../../assets/audio-selector/style.scss';
|
|
@@ -49,7 +49,7 @@ export class AudioSelector extends UICorePlugin {
|
|
|
49
49
|
private tracks: AudioTrackItem[] = [];
|
|
50
50
|
|
|
51
51
|
get name() {
|
|
52
|
-
return '
|
|
52
|
+
return 'media_control_audio_selector';
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
get supportedVersion() {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Events, template, UICorePlugin, Utils } from '@clappr/core';
|
|
2
2
|
import { trace } from '@gcorevideo/utils';
|
|
3
3
|
|
|
4
|
-
import { CLAPPR_VERSION } from '
|
|
4
|
+
import { CLAPPR_VERSION } from '../../build.js';
|
|
5
5
|
import { ZeptoResult } from "../../utils/types.js";
|
|
6
6
|
|
|
7
7
|
import volumeMuteIcon from '../../../assets/icons/new/volume-off.svg';
|
|
@@ -183,6 +183,7 @@ export class BigMuteButton extends UICorePlugin {
|
|
|
183
183
|
const localVolume = Utils.Config.restore('volume');
|
|
184
184
|
const volume = !isNaN(localVolume) ? localVolume : 100;
|
|
185
185
|
|
|
186
|
+
// TODO use container.setVolume() instead
|
|
186
187
|
this.core.mediaControl.setVolume(volume === 0 ? 100 : volume);
|
|
187
188
|
|
|
188
189
|
this.destroyBigMuteBtn(e);
|