@gcorevideo/player 2.24.10 → 2.24.13

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.
Files changed (48) hide show
  1. package/README.md +1 -0
  2. package/assets/dvr-controls/dvr_controls.scss +43 -80
  3. package/assets/dvr-controls/index.ejs +8 -2
  4. package/assets/media-control/width370.scss +1 -1
  5. package/dist/core.js +34 -23
  6. package/dist/index.css +394 -420
  7. package/dist/index.embed.js +107 -71
  8. package/dist/index.js +172 -134
  9. package/dist/player.d.ts +3264 -0
  10. package/lib/playback/dash-playback/DashPlayback.d.ts +2 -0
  11. package/lib/playback/dash-playback/DashPlayback.d.ts.map +1 -1
  12. package/lib/playback/dash-playback/DashPlayback.js +17 -11
  13. package/lib/playback/hls-playback/HlsPlayback.d.ts +6 -2
  14. package/lib/playback/hls-playback/HlsPlayback.d.ts.map +1 -1
  15. package/lib/playback/hls-playback/HlsPlayback.js +16 -11
  16. package/lib/plugins/audio-selector/AudioTracks.js +1 -1
  17. package/lib/plugins/bottom-gear/BottomGear.js +1 -1
  18. package/lib/plugins/clips/Clips.js +1 -1
  19. package/lib/plugins/dvr-controls/DvrControls.d.ts +3 -3
  20. package/lib/plugins/dvr-controls/DvrControls.d.ts.map +1 -1
  21. package/lib/plugins/dvr-controls/DvrControls.js +14 -12
  22. package/lib/plugins/media-control/MediaControl.d.ts +14 -5
  23. package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
  24. package/lib/plugins/media-control/MediaControl.js +55 -29
  25. package/lib/plugins/picture-in-picture/PictureInPicture.js +1 -1
  26. package/lib/plugins/subtitles/ClosedCaptions.js +1 -1
  27. package/lib/testUtils.d.ts.map +1 -1
  28. package/lib/testUtils.js +2 -0
  29. package/package.json +1 -1
  30. package/src/playback/dash-playback/DashPlayback.ts +20 -13
  31. package/src/playback/hls-playback/HlsPlayback.ts +40 -26
  32. package/src/plugins/audio-selector/AudioTracks.ts +1 -1
  33. package/src/plugins/audio-selector/__tests__/AudioTracks.test.ts +2 -2
  34. package/src/plugins/bottom-gear/BottomGear.ts +1 -1
  35. package/src/plugins/bottom-gear/__tests__/BottomGear.test.ts +2 -2
  36. package/src/plugins/clips/Clips.ts +1 -1
  37. package/src/plugins/clips/__tests__/Clips.test.ts +1 -1
  38. package/src/plugins/dvr-controls/DvrControls.ts +14 -14
  39. package/src/plugins/dvr-controls/__tests__/DvrControls.test.ts +20 -17
  40. package/src/plugins/dvr-controls/__tests__/__snapshots__/DvrControls.test.ts.snap +4 -2
  41. package/src/plugins/media-control/MediaControl.ts +69 -35
  42. package/src/plugins/media-control/__tests__/MediaControl.test.ts +128 -112
  43. package/src/plugins/media-control/__tests__/__snapshots__/MediaControl.test.ts.snap +227 -24
  44. package/src/plugins/picture-in-picture/PictureInPicture.ts +1 -1
  45. package/src/plugins/subtitles/ClosedCaptions.ts +1 -1
  46. package/src/plugins/subtitles/__tests__/ClosedCaptions.test.ts +1 -1
  47. package/src/testUtils.ts +2 -0
  48. package/tsconfig.tsbuildinfo +1 -1
package/README.md CHANGED
@@ -1,4 +1,5 @@
1
1
  # Gcore video player
2
+ $
2
3
 
3
4
  ## Installation
4
5
 
@@ -1,104 +1,67 @@
1
- $disabled-opacity: 0.3;
2
- $control-height: 32px;
3
- $circle-radius: 3.5px;
4
- $bottom-panel: 40px;
1
+ .dvr-controls {
2
+ --disabled-opacity: 0.3;
3
+ --circle-radius: 5px;
5
4
 
6
- .dvr-controls[data-dvr] {
7
- display: inline-block;
5
+ display: flex;
6
+ align-items: center;
8
7
  color: var(--player-dvr-color);
9
- line-height: 32px;
10
8
  font-size: 10px;
11
- font-weight: bold;
12
- margin-left: 6px;
9
+ font-weight: 500;
10
+ height: var(--bottom-panel);
11
+ line-height: var(--bottom-panel);
12
+ margin-left: 0;
13
13
 
14
- .live-info {
15
- cursor: default;
14
+ .live-info,
15
+ .live-button {
16
+ font-size: 14px;
17
+ font-weight: 500;
18
+ margin-left: 20px;
19
+ letter-spacing: 0.8px;
16
20
  text-transform: uppercase;
17
21
 
18
- &:before {
22
+ &::before {
23
+ margin-right: 8px;
19
24
  content: "";
20
25
  display: inline-block;
21
26
  position: relative;
22
- width: $circle-radius*2;
23
- height: $circle-radius*2;
24
- border-radius: $circle-radius;
25
- margin-right: $circle-radius;
26
- background-color: var(--player-live-color);
27
- }
28
-
29
- &.disabled {
30
- opacity: $disabled-opacity;
31
-
32
- &:before {
33
- background-color: var(--player-dvr-color);
34
- }
27
+ width: calc(var(--circle-radius)*2);
28
+ height: calc(var(--circle-radius)*2);
29
+ border-radius: var(--circle-radius);
30
+ background-color: var(--player-dvr-color);
35
31
  }
36
32
  }
37
33
 
38
- .live-button {
39
- cursor: pointer;
40
- outline: none;
41
- display: none;
42
- border: 0;
43
- color: var(--player-dvr-color);
44
- background-color: transparent;
45
- height: 32px;
46
- padding: 0;
47
- opacity: 0.7;
48
- text-transform: uppercase;
49
- transition: all 0.1s ease;
34
+ &.disabled {
35
+ opacity: var(--disabled-opacity);
50
36
 
51
37
  &:before {
52
- content: "";
53
- display: inline-block;
54
- position: relative;
55
- width: $circle-radius*2;
56
- height: $circle-radius*2;
57
- border-radius: $circle-radius;
58
- margin-right: $circle-radius;
59
38
  background-color: var(--player-dvr-color);
60
39
  }
61
-
62
- &:hover {
63
- opacity: 1;
64
- text-shadow: rgba(255, 255, 255, .75) 0 0 5px;
65
- }
66
40
  }
41
+ }
67
42
 
68
- height: $bottom-panel;
69
- line-height: $bottom-panel;
70
- margin-left: 0;
71
-
72
- .live-info {
73
- font-size: 14px;
74
- letter-spacing: 0.8px;
75
- font-weight: 500;
76
- color: #fffffe;
77
- margin-left: 21px;
43
+ .live-info {
44
+ text-transform: uppercase;
45
+ color: #fffffe;
78
46
 
79
- &::before {
80
- width: 10px;
81
- height: 10px;
82
- border-radius: 50%;
83
- margin-right: 8px;
84
- background-color: #ed4f4a;
85
- }
47
+ &::before {
48
+ background-color: var(--player-live-color); // TODO
49
+ background-color: #ed4f4a;
86
50
  }
51
+ }
87
52
 
88
- .live-button {
89
- height: $bottom-panel;
90
- opacity: 1;
91
- font-size: 14px;
92
- letter-spacing: 0.8px;
93
- font-weight: 500;
94
- margin-left: 20px;
53
+ .live-button {
54
+ cursor: pointer;
55
+ outline: none;
56
+ border: 0;
57
+ color: var(--player-dvr-color);
58
+ background-color: transparent;
59
+ padding: 0;
60
+ opacity: 0.7;
61
+ transition: all 0.1s ease;
95
62
 
96
- &::before {
97
- width: 10px;
98
- height: 10px;
99
- border-radius: 50%;
100
- margin-right: 8px;
101
- background-color: #cacaca;
102
- }
63
+ &:hover {
64
+ opacity: 1;
65
+ text-shadow: rgba(255, 255, 255, .75) 0 0 5px;
103
66
  }
104
67
  }
@@ -1,2 +1,8 @@
1
- <div class="live-info" id="media-control-live"><%= i18n.t('live') %></div>
2
- <button type="button" class="live-button" aria-label="<%= i18n.t('back_to_live') %>" id="media-control-back-to-live"><%= i18n.t('back_to_live') %></button>
1
+ <div class="live-info" id="gplayer-mc-live"><%= i18n.t('live') %></div>
2
+ <button type="button"
3
+ class="live-button"
4
+ aria-label="<%= i18n.t('back_to_live') %>"
5
+ id="gplayer-mc-back-to-live"
6
+ >
7
+ <%= i18n.t('back_to_live') %>
8
+ </button>
@@ -99,7 +99,7 @@
99
99
  }
100
100
  }
101
101
 
102
- .dvr-controls[data-dvr] {
102
+ .dvr-controls {
103
103
  height: 32px;
104
104
 
105
105
  .live-button {
package/dist/core.js CHANGED
@@ -12785,10 +12785,9 @@ class DashPlayback extends BasePlayback {
12785
12785
  return super.render();
12786
12786
  }
12787
12787
  _ready() {
12788
- this._isReadyState = true;
12789
- this.trigger(Events$1.PLAYBACK_READY, this.name);
12788
+ !this._dash && this._setup();
12789
+ super._ready();
12790
12790
  }
12791
- // override
12792
12791
  _setupSrc() {
12793
12792
  // this playback manages the src on the video element itself
12794
12793
  }
@@ -12972,9 +12971,7 @@ class DashPlayback extends BasePlayback {
12972
12971
  }
12973
12972
  play() {
12974
12973
  trace(`${T$3} play`, { dash: !!this._dash });
12975
- if (!this._dash) {
12976
- this._setup();
12977
- }
12974
+ !this._dash && this._setup();
12978
12975
  super.play();
12979
12976
  this._startTimeUpdateTimer();
12980
12977
  }
@@ -12990,20 +12987,22 @@ class DashPlayback extends BasePlayback {
12990
12987
  stop() {
12991
12988
  if (this._dash) {
12992
12989
  this._stopTimeUpdateTimer();
12993
- this._dash.reset();
12990
+ this.destroyInstance();
12994
12991
  super.stop();
12995
- this._dash = null;
12996
12992
  }
12997
12993
  }
12998
- destroy() {
12999
- this._stopTimeUpdateTimer();
12994
+ destroyInstance() {
13000
12995
  if (this._dash) {
13001
12996
  this._dash.off(DASHJS.MediaPlayer.events.ERROR, this._onDASHJSSError);
13002
12997
  this._dash.off(DASHJS.MediaPlayer.events.PLAYBACK_ERROR, this._onPlaybackError);
13003
12998
  this._dash.off(DASHJS.MediaPlayer.events.MANIFEST_LOADED, this.getDuration);
13004
12999
  this._dash.reset();
13000
+ this._dash = null;
13005
13001
  }
13006
- this._dash = null;
13002
+ }
13003
+ destroy() {
13004
+ this._stopTimeUpdateTimer();
13005
+ this.destroyInstance();
13007
13006
  return super.destroy();
13008
13007
  }
13009
13008
  _updatePlaybackType() {
@@ -13072,6 +13071,13 @@ class DashPlayback extends BasePlayback {
13072
13071
  assert.ok(track, 'Invalid audio track ID');
13073
13072
  this._dash.setCurrentTrack(track);
13074
13073
  }
13074
+ load(srcUrl) {
13075
+ this._stopTimeUpdateTimer();
13076
+ this.options.src = srcUrl;
13077
+ // TODO destroy the instance first?
13078
+ this.destroyInstance();
13079
+ this._setup();
13080
+ }
13075
13081
  checkAudioTracks() {
13076
13082
  // @ts-ignore
13077
13083
  const tracks = this._dash.getTracksFor('audio');
@@ -41768,7 +41774,6 @@ class HlsPlayback extends BasePlayback {
41768
41774
  _extrapolatedWindowNumSegments = 0; // TODO
41769
41775
  highDefinition = false;
41770
41776
  _hls = null;
41771
- _isReadyState = false;
41772
41777
  _lastDuration = null;
41773
41778
  _lastTimeUpdate = null;
41774
41779
  _levels = null;
@@ -41785,9 +41790,15 @@ class HlsPlayback extends BasePlayback {
41785
41790
  _recoveredDecodingError = false;
41786
41791
  _segmentTargetDuration = null;
41787
41792
  _timeUpdateTimer = null;
41793
+ /**
41794
+ * @internal
41795
+ */
41788
41796
  get name() {
41789
41797
  return 'hls';
41790
41798
  }
41799
+ /**
41800
+ * @internal
41801
+ */
41791
41802
  get supportedVersion() {
41792
41803
  return { min: CLAPPR_VERSION };
41793
41804
  }
@@ -41797,9 +41808,6 @@ class HlsPlayback extends BasePlayback {
41797
41808
  get currentLevel() {
41798
41809
  return this._currentLevel ?? AUTO;
41799
41810
  }
41800
- get isReady() {
41801
- return this._isReadyState;
41802
- }
41803
41811
  set currentLevel(id) {
41804
41812
  this._currentLevel = id;
41805
41813
  this.trigger(Events$1.PLAYBACK_LEVEL_SWITCH_START);
@@ -41986,6 +41994,7 @@ class HlsPlayback extends BasePlayback {
41986
41994
  const config = $.extend(true, {
41987
41995
  maxBufferLength: 2,
41988
41996
  maxMaxBufferLength: 4,
41997
+ autoStartLoad: false,
41989
41998
  }, this.options.playback.hlsjsConfig);
41990
41999
  trace(`${T$2} _createHLSInstance`, { config });
41991
42000
  this._hls = new Hls(config);
@@ -42004,6 +42013,7 @@ class HlsPlayback extends BasePlayback {
42004
42013
  assert.ok(this._hls, 'HLS.js is not initialized');
42005
42014
  this.options.hlsPlayback.preload && this._hls.loadSource(this.options.src);
42006
42015
  });
42016
+ // TODO drop?
42007
42017
  const onPlaying = () => {
42008
42018
  if (this._hls) {
42009
42019
  this._hls.config.maxBufferLength =
@@ -42014,8 +42024,13 @@ class HlsPlayback extends BasePlayback {
42014
42024
  this.el.removeEventListener('playing', onPlaying);
42015
42025
  };
42016
42026
  this.el.addEventListener('playing', onPlaying);
42017
- this._hls.on(Hls.Events.MANIFEST_PARSED, () => (this._manifestParsed = true));
42018
- this._hls.on(Hls.Events.LEVEL_LOADED, (evt, data) => this._updatePlaybackType(evt, data));
42027
+ this._hls.on(Hls.Events.MANIFEST_PARSED, () => {
42028
+ this._manifestParsed = true;
42029
+ this._hls.startLoad(-1);
42030
+ });
42031
+ this._hls.on(Hls.Events.LEVEL_LOADED, (evt, data) => {
42032
+ this._updatePlaybackType(evt, data);
42033
+ });
42019
42034
  this._hls.on(Hls.Events.LEVEL_UPDATED, (evt, data) => this._onLevelUpdated(evt, data));
42020
42035
  this._hls.on(Hls.Events.LEVEL_SWITCHING, (evt, data) => this._onLevelSwitch(evt, data));
42021
42036
  this._hls.on(Hls.Events.LEVEL_SWITCHED, (evt, data) => this._onLevelSwitched(evt, data));
@@ -42058,12 +42073,8 @@ class HlsPlayback extends BasePlayback {
42058
42073
  return super.render();
42059
42074
  }
42060
42075
  _ready() {
42061
- if (this._isReadyState) {
42062
- return;
42063
- }
42064
42076
  !this._hls && this._setup();
42065
- this._isReadyState = true;
42066
- this.trigger(Events$1.PLAYBACK_READY, this.name);
42077
+ super._ready();
42067
42078
  }
42068
42079
  _recover(evt, data, error) {
42069
42080
  assert(this._hls, 'HLS.js is not initialized');
@@ -43217,7 +43228,7 @@ class Player {
43217
43228
  }
43218
43229
  }
43219
43230
 
43220
- var version$1 = "2.24.10";
43231
+ var version$1 = "2.24.13";
43221
43232
 
43222
43233
  var packages = {
43223
43234
  "node_modules/@clappr/core": {