@gcorevideo/player 2.21.1 → 2.21.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.
Files changed (97) hide show
  1. package/assets/audio-selector/style.scss +1 -1
  2. package/assets/audio-selector/track-selector.ejs +3 -3
  3. package/assets/bottom-gear/bottomgear.ejs +2 -2
  4. package/assets/media-control/container.scss +1 -1
  5. package/assets/media-control/media-control.ejs +1 -11
  6. package/assets/media-control/media-control.scss +49 -57
  7. package/assets/media-control/width270.scss +1 -1
  8. package/assets/media-control/width370.scss +7 -9
  9. package/assets/playback-rate/button.ejs +2 -2
  10. package/assets/playback-rate/list.ejs +4 -4
  11. package/assets/subtitles/combobox.ejs +10 -12
  12. package/assets/subtitles/string.ejs +1 -1
  13. package/assets/subtitles/style.scss +9 -16
  14. package/dist/core.js +5 -1
  15. package/dist/index.css +782 -794
  16. package/dist/index.js +240 -244
  17. package/dist/player.d.ts +141 -119
  18. package/dist/plugins/index.css +862 -874
  19. package/dist/plugins/index.js +222 -238
  20. package/docs/api/player.bottomgear.getelement.md +2 -2
  21. package/docs/api/player.bottomgear.md +1 -1
  22. package/docs/api/{player.subtitles.hide.md → player.closedcaptions.hide.md} +2 -2
  23. package/docs/api/{player.subtitles.md → player.closedcaptions.md} +11 -11
  24. package/docs/api/{player.subtitles.show.md → player.closedcaptions.show.md} +2 -2
  25. package/docs/api/player.closedcaptionspluginsettings.md +13 -0
  26. package/docs/api/player.gearitemelement.md +6 -4
  27. package/docs/api/player.gearoptionsitem.md +16 -0
  28. package/docs/api/player.md +48 -12
  29. package/docs/api/player.mediacontrol.putelement.md +2 -2
  30. package/docs/api/player.mediacontrolelement.md +1 -1
  31. package/docs/api/player.playbackrate.md +1 -1
  32. package/docs/api/player.subtitlespluginsettings.md +18 -0
  33. package/docs/api/player.texttrackitem.id.md +11 -0
  34. package/docs/api/player.texttrackitem.md +87 -0
  35. package/docs/api/player.texttrackitem.name.md +11 -0
  36. package/docs/api/player.texttrackitem.track.md +11 -0
  37. package/lib/index.d.ts +1 -1
  38. package/lib/index.js +1 -1
  39. package/lib/index.plugins.d.ts +2 -1
  40. package/lib/index.plugins.d.ts.map +1 -1
  41. package/lib/index.plugins.js +2 -1
  42. package/lib/playback/BasePlayback.d.ts +1 -0
  43. package/lib/playback/BasePlayback.d.ts.map +1 -1
  44. package/lib/playback/BasePlayback.js +3 -0
  45. package/lib/playback/dash-playback/DashPlayback.d.ts.map +1 -1
  46. package/lib/playback/dash-playback/DashPlayback.js +1 -0
  47. package/lib/playback.types.d.ts +5 -0
  48. package/lib/playback.types.d.ts.map +1 -1
  49. package/lib/plugins/audio-selector/AudioSelector.d.ts +2 -3
  50. package/lib/plugins/audio-selector/AudioSelector.d.ts.map +1 -1
  51. package/lib/plugins/audio-selector/AudioSelector.js +6 -7
  52. package/lib/plugins/bottom-gear/BottomGear.d.ts +7 -3
  53. package/lib/plugins/bottom-gear/BottomGear.d.ts.map +1 -1
  54. package/lib/plugins/bottom-gear/BottomGear.js +4 -2
  55. package/lib/plugins/media-control/MediaControl.d.ts +5 -6
  56. package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
  57. package/lib/plugins/media-control/MediaControl.js +48 -39
  58. package/lib/plugins/picture-in-picture/PictureInPicture.d.ts +1 -0
  59. package/lib/plugins/picture-in-picture/PictureInPicture.d.ts.map +1 -1
  60. package/lib/plugins/picture-in-picture/PictureInPicture.js +4 -4
  61. package/lib/plugins/playback-rate/PlaybackRate.d.ts +1 -1
  62. package/lib/plugins/playback-rate/PlaybackRate.d.ts.map +1 -1
  63. package/lib/plugins/playback-rate/PlaybackRate.js +24 -14
  64. package/lib/plugins/subtitles/ClosedCaptions.d.ts +118 -0
  65. package/lib/plugins/subtitles/ClosedCaptions.d.ts.map +1 -0
  66. package/lib/plugins/subtitles/ClosedCaptions.js +348 -0
  67. package/lib/plugins/subtitles/Subtitles.d.ts +31 -26
  68. package/lib/plugins/subtitles/Subtitles.d.ts.map +1 -1
  69. package/lib/plugins/subtitles/Subtitles.js +138 -169
  70. package/lib/testUtils.d.ts +22 -18
  71. package/lib/testUtils.d.ts.map +1 -1
  72. package/lib/testUtils.js +22 -36
  73. package/package.json +1 -1
  74. package/src/index.plugins.ts +2 -1
  75. package/src/index.ts +1 -1
  76. package/src/playback/BasePlayback.ts +4 -0
  77. package/src/playback/dash-playback/DashPlayback.ts +1 -0
  78. package/src/playback.types.ts +6 -0
  79. package/src/plugins/audio-selector/AudioSelector.ts +9 -8
  80. package/src/plugins/bottom-gear/BottomGear.ts +14 -5
  81. package/src/plugins/bottom-gear/__tests__/BottomGear.test.ts +1 -1
  82. package/src/plugins/bottom-gear/__tests__/__snapshots__/BottomGear.test.ts.snap +2 -2
  83. package/src/plugins/media-control/MediaControl.ts +84 -60
  84. package/src/plugins/media-control/__tests__/MediaControl.test.ts +43 -0
  85. package/src/plugins/media-control/__tests__/__snapshots__/MediaControl.test.ts.snap +175 -0
  86. package/src/plugins/picture-in-picture/PictureInPicture.ts +5 -5
  87. package/src/plugins/playback-rate/PlaybackRate.ts +143 -100
  88. package/src/plugins/playback-rate/__tests__/PlaybackRate.test.ts +65 -0
  89. package/src/plugins/playback-rate/__tests__/__snapshots__/PlaybackRate.test.ts.snap +11 -0
  90. package/src/plugins/subtitles/ClosedCaptions.ts +469 -0
  91. package/src/plugins/subtitles/__tests__/ClosedCaptions.test.ts +58 -0
  92. package/src/plugins/subtitles/__tests__/__snapshots__/ClosedCaptions.test.ts.snap +25 -0
  93. package/src/testUtils.ts +22 -36
  94. package/temp/player.api.json +269 -89
  95. package/tsconfig.tsbuildinfo +1 -1
  96. package/src/plugins/index.ts +0 -39
  97. package/src/plugins/subtitles/Subtitles.ts +0 -496
@@ -4,7 +4,7 @@
4
4
  outline: none !important;
5
5
  }
6
6
 
7
- .media-control-audio-tracks {
7
+ .media-control-audiotracks {
8
8
  position: relative;
9
9
 
10
10
  button {
@@ -1,10 +1,10 @@
1
- <button data-track-selector-button class='gcore-skin-button-color'>
1
+ <button data-audiotracks-button class='gcore-skin-button-color' id="audiotracks-button">
2
2
  <span class='audio-text'><%= title %></span> <span class="audio-arrow"></span>
3
3
  </button>
4
- <ul class='gcore-skin-bg-color'>
4
+ <ul class='gcore-skin-bg-color' id="audiotracks-select">
5
5
  <% for (const track of tracks) { %>
6
6
  <li>
7
- <a href="#" class='gcore-skin-text-color' data-track-selector-select="<%= track.id %>">
7
+ <a href="#" class='gcore-skin-text-color' data-audiotracks-select="<%= track.id %>">
8
8
  <%= track.label %>
9
9
  </a>
10
10
  </li>
@@ -1,8 +1,8 @@
1
- <button type="button" class="button-gear media-control-button gplayer-lite-btn gcore-skin-button-color gear-icon" data-gear-button="-1">
1
+ <button type="button" class="button-gear media-control-button gplayer-lite-btn gcore-skin-button-color gear-icon" data-gear-button="-1" id="gear-button">
2
2
  <%= icon %>
3
3
  </button>
4
4
  <div class="gear-wrapper gcore-skin-bg-color">
5
- <ul class="gear-options-list">
5
+ <ul class="gear-options-list" id="gear-options">
6
6
  <% for (const item of items) { %>
7
7
  <li data-<%= item %>></li>
8
8
  <% } %>
@@ -16,7 +16,7 @@
16
16
  }
17
17
  }
18
18
 
19
- .subtitle-string {
19
+ .cc-line {
20
20
  position: absolute;
21
21
  bottom: calc(var(--bottom-panel) + 5px);
22
22
  width: 100%;
@@ -42,9 +42,6 @@
42
42
  <% var renderNerd = function(name) { %>
43
43
  <div class="media-control-nerd" data-<%= name %>></div>
44
44
  <% }; %>
45
- <% var renderSubtitles = function(name) { %>
46
- <div class="media-control-subtitles" data-<%= name %>></div>
47
- <% }; %>
48
45
  <% var renderMultiCamera = function(name) { %>
49
46
  <div class="media-control-multicamera" data-<%= name %>></div>
50
47
  <% }; %>
@@ -55,9 +52,6 @@
55
52
  <div class="media-clip-text gcore-skin-text-color" data-<%= name %>></div>
56
53
  </div>
57
54
  <% }; %>
58
- <% var renderPlaybackRate = function(name) { %>
59
- <div class="media-control-playbackrate" data-<%= name %>></div>
60
- <% }; %>
61
55
  <% var renderVR = function(name) { %>
62
56
  <div class="media-control-vr" data-<%= name %>></div>
63
57
  <% }; %>
@@ -87,15 +81,11 @@
87
81
  renderNerd(setting)
88
82
  } else if (setting === "multicamera") {
89
83
  renderMultiCamera(setting)
90
- } else if (setting === "subtitles") {
91
- renderSubtitles(setting)
92
- } else if (setting === "playbackrate") {
93
- renderPlaybackRate(setting)
94
84
  } else if (setting === "vr") {
95
85
  renderVR(setting)
96
86
  } else if (setting === "clipsText") {
97
87
  renderClipsText(setting)
98
- } else {
88
+ } else if (setting === "fullscreen") {
99
89
  renderButton(setting);
100
90
  }
101
91
  });
@@ -86,6 +86,10 @@
86
86
  align-items: center;
87
87
  gap: 1rem;
88
88
  justify-content: flex-end;
89
+ @media (max-width: 420px) {
90
+ gap: 0.5rem;
91
+ overflow: hidden;
92
+ }
89
93
  }
90
94
 
91
95
  button.media-control-button {
@@ -99,6 +103,7 @@
99
103
 
100
104
  svg {
101
105
  height: 20px;
106
+
102
107
  path {
103
108
  fill: white;
104
109
  }
@@ -124,7 +129,6 @@
124
129
  }
125
130
 
126
131
  &[data-fullscreen] {
127
- float: right;
128
132
  order: 100;
129
133
  background-color: transparent;
130
134
  border: 0;
@@ -142,6 +146,7 @@
142
146
  }
143
147
 
144
148
  .media-control-indicator {
149
+
145
150
  &[data-position],
146
151
  &[data-duration] {
147
152
  display: flex;
@@ -237,7 +242,7 @@
237
242
  }
238
243
  }
239
244
 
240
- .bar-container[data-seekbar].seek-disabled + .bar-scrubber[data-seekbar] {
245
+ .bar-container[data-seekbar].seek-disabled+.bar-scrubber[data-seekbar] {
241
246
  cursor: default;
242
247
  display: none;
243
248
  }
@@ -385,69 +390,57 @@
385
390
 
386
391
  /* TODO distribute between plugins' styles */
387
392
  .media-control-skin-1[data-media-control-skin-1] {
388
- .media-control-quality,
389
- .media-control-audio-tracks {
390
- display: block;
391
- }
392
-
393
- .media-control-subtitles {
394
- .subtitles[data-subtitles] {
395
- width: 40px;
396
- margin-top: 0;
397
-
398
- button[data-subtitles-button] {
399
- display: flex;
400
- justify-content: center;
401
- padding: 0;
402
- align-items: center;
393
+ .media-control-cc {
394
+ button[data-cc-button] {
395
+ display: flex;
396
+ justify-content: center;
397
+ padding: 0;
398
+ align-items: center;
403
399
 
404
- &:hover {
405
- color: white;
406
- }
400
+ &:hover {
401
+ color: white;
407
402
  }
403
+ }
408
404
 
409
- ul {
410
- background-color: rgb(74 74 74 / 60%);
411
- border: none;
412
- width: auto;
413
- transform: rotate(180deg);
414
- border-radius: 4px;
415
- bottom: 52px;
416
- margin-left: -28px;
417
-
418
- li {
419
- transform: rotate(-180deg);
420
- font-size: 16px;
421
- text-align: center;
422
- white-space: nowrap;
423
- height: 30px;
424
-
425
- a {
426
- height: 30px;
427
- padding: 5px 10px;
428
- color: #fffffe;
405
+ ul { // TODO extract common styles
406
+ background-color: rgb(74 74 74 / 60%);
407
+ border: none;
408
+ width: auto;
409
+ border-radius: 4px;
410
+ bottom: 52px;
411
+ margin-left: -28px;
412
+
413
+ li {
414
+ font-size: 16px;
415
+ text-align: center;
416
+ white-space: nowrap;
417
+ height: 30px;
429
418
 
430
- &:hover {
431
- background-color: rgb(0 0 0 / 40%);
432
- }
433
- }
419
+ a {
420
+ height: 30px;
421
+ padding: 5px 10px;
422
+ color: #fffffe;
434
423
 
435
- &.current a {
424
+ &:hover {
436
425
  background-color: rgb(0 0 0 / 40%);
437
426
  }
427
+ }
438
428
 
439
- &:first-child {
440
- a {
441
- border-bottom-left-radius: 4px;
442
- border-bottom-right-radius: 4px;
443
- }
429
+ &.current a {
430
+ background-color: rgb(0 0 0 / 40%);
431
+ }
432
+
433
+ &:first-child {
434
+ a {
435
+ border-bottom-left-radius: 4px;
436
+ border-bottom-right-radius: 4px;
444
437
  }
438
+ }
445
439
 
446
- &:last-child {
447
- a {
448
- border-top-left-radius: 4px;
449
- border-top-right-radius: 4px;
450
- }
440
+ &:last-child {
441
+ a {
442
+ border-top-left-radius: 4px;
443
+ border-top-right-radius: 4px;
451
444
  }
452
445
  }
453
446
  }
@@ -476,5 +469,4 @@
476
469
  display: none !important;
477
470
  }
478
471
  }
479
- }
480
-
472
+ }
@@ -1,6 +1,6 @@
1
1
  .media-control-skin-1[data-media-control-skin-1].w270 {
2
2
  .media-control-quality,
3
- .media-control-audio-tracks {
3
+ .media-control-audiotracks {
4
4
  display: none;
5
5
  }
6
6
 
@@ -1,11 +1,9 @@
1
1
  .media-control-skin-1[data-media-control-skin-1].w370 {
2
- .media-control-subtitles {
3
- .subtitles[data-subtitles] {
4
- width: 28px;
2
+ .media-control-cc {
3
+ width: 28px;
5
4
 
6
- svg {
7
- height: 17px;
8
- }
5
+ svg {
6
+ height: 17px;
9
7
  }
10
8
  }
11
9
 
@@ -29,12 +27,12 @@
29
27
  }
30
28
 
31
29
  .media-control-quality,
32
- .media-control-audio-tracks {
30
+ .media-control-audiotracks {
33
31
  display: block;
34
32
  }
35
33
 
36
34
  .level-selector[data-level-selector],
37
- .media-control-audio-tracks[data-track-selector] {
35
+ .media-control-audiotracks[data-audiotracks] {
38
36
  margin-top: 3px;
39
37
  margin-right: 10px;
40
38
 
@@ -54,7 +52,7 @@
54
52
  }
55
53
 
56
54
  button[data-level-selector-button],
57
- button[data-track-selector-button] {
55
+ button[data-audiotracks-button] {
58
56
 
59
57
  .quality-text,
60
58
  .audio-text {
@@ -1,6 +1,6 @@
1
- <button class='gplayer-lite-btn gcore-skin-text-color gear-option'>
1
+ <button class='gplayer-lite-btn gcore-skin-text-color gear-option' id="playback-rate-button">
2
2
  <span class="gear-option_speed-icon"><%= speedIcon %></span>
3
- <span>Playback speed</span>
3
+ <span class="gear-option_label"><%= i18n.t('playback_rate') %></span>
4
4
  <span class="gear-option_arrow-right-icon"><%= arrowRightIcon %></span>
5
5
  <span class='gear-option_value'><%= title %></span>
6
6
  </button>
@@ -1,13 +1,13 @@
1
1
  <button class="gplayer-lite-btn go-back gcore-skin-text-color">
2
2
  <span class="arrow-left-icon"><%= arrowLeftIcon %></span>
3
- Playback speed
3
+ <%= i18n.t('playback_rate') %>
4
4
  </button>
5
5
  <ul class="gear-sub-menu">
6
- <% for (var i = playbackRates.length - 1; i >= 0; i--) { %>
6
+ <% for (const item of playbackRates) { %>
7
7
  <li>
8
- <a href="#" class='gear-sub-menu_btn gcore-skin-text-color' data-rate="<%= playbackRates[i].value %>">
8
+ <a href="#" class='gear-sub-menu_btn gcore-skin-text-color' data-rate="<%= item.value %>">
9
9
  <span class="check-icon"><%= checkIcon %></span>
10
- <%= playbackRates[i].label %>
10
+ <%= item.label %>
11
11
  </a>
12
12
  </li>
13
13
  <% } %>
@@ -1,16 +1,14 @@
1
- <button data-subtitles-button class='media-control-button media-control-icon gcore-skin-button-color'>
2
- <span class='subtitle-text'></span>
1
+ <button data-cc-button class='media-control-button media-control-icon gcore-skin-button-color' id="cc-button">
2
+ <span class='cc-text'></span>
3
3
  </button>
4
4
 
5
- <ul class='gcore-skin-bg-color'>
6
- <li><a href="#" class='gcore-skin-text-color' data-subtitles-select="off">off</a></li>
7
- <% for (const track of tracks) { %>
8
- <% if (track.kind === 'subtitles' || track.kind === 'captions') { %>
9
- <li>
10
- <a href="#" class='gcore-skin-text-color' data-subtitles-select="<%= track.language %>">
11
- <%= track.label %>
12
- </a>
13
- </li>
14
- <% } %>
5
+ <ul class='gcore-skin-bg-color' id="cc-select">
6
+ <% for (const t of tracks) { %>
7
+ <li>
8
+ <a href="#" class='gcore-skin-text-color' data-cc-select="<%= t.id %>">
9
+ <%= t.name %>
10
+ </a>
11
+ </li>
15
12
  <% } %>
13
+ <li><a href="#" class='gcore-skin-text-color' data-cc-select="-1">Off</a></li>
16
14
  </ul>
@@ -1,3 +1,3 @@
1
- <div class="subtitle-string">
1
+ <div class="cc-line" id="cc-line">
2
2
  <p></p>
3
3
  </div>
@@ -1,22 +1,21 @@
1
- *, :focus, :visited {
1
+ *,
2
+ :focus,
3
+ :visited {
2
4
  outline: none !important;
3
5
  }
4
6
 
5
- .subtitles[data-subtitles] {
6
- float: right;
7
+ .media-control-cc[data-cc] {
7
8
  position: relative;
8
- width: 50px;
9
+ order: 85;
9
10
 
10
11
  button {
11
12
  background-color: transparent;
12
13
  color: #fff;
13
- font-family: Roboto, "Open Sans", Arial, sans-serif;
14
14
  -webkit-font-smoothing: antialiased;
15
15
  border: none;
16
- font-size: 14px;
17
16
  cursor: pointer;
18
17
 
19
- .subtitle-text {
18
+ .cc-text {
20
19
  svg {
21
20
  fill: white;
22
21
  }
@@ -31,7 +30,7 @@
31
30
  }
32
31
  }
33
32
 
34
- & > ul {
33
+ ul {
35
34
  width: 80px;
36
35
  list-style-type: none;
37
36
  position: absolute;
@@ -39,16 +38,10 @@
39
38
  border: 1px solid black;
40
39
  display: none;
41
40
  background-color: #e6e6e6;
41
+ padding: 8px 0;
42
42
  }
43
43
 
44
44
  li {
45
- font-size: 10px;
46
-
47
- &[data-title] {
48
- background-color: #c3c2c2;
49
- padding: 5px;
50
- }
51
-
52
45
  a {
53
46
  color: #444;
54
47
  padding: 2px 10px;
@@ -96,4 +89,4 @@
96
89
  .ios-fullscreen::cue {
97
90
  visibility: visible !important;
98
91
  font-size: 1em !important;
99
- }
92
+ }
package/dist/core.js CHANGED
@@ -12542,6 +12542,9 @@ var PlaybackErrorCode;
12542
12542
  * @internal
12543
12543
  */
12544
12544
  class BasePlayback extends HTML5Video$1 {
12545
+ get isHTML5Video() {
12546
+ return true;
12547
+ }
12545
12548
  createError(errorData, options) {
12546
12549
  const i18n = this.i18n ||
12547
12550
  // @ts-ignore
@@ -12847,6 +12850,7 @@ class DashPlayback extends BasePlayback {
12847
12850
  this.trigger(Events$1.PLAYBACK_DVR, status);
12848
12851
  this.trigger(Events$1.PLAYBACK_STATS_ADD, { dvr: status });
12849
12852
  }
12853
+ // TODO move to the base class
12850
12854
  _updateSettings() {
12851
12855
  if (this._playbackType === Playback.VOD) {
12852
12856
  // @ts-expect-error
@@ -43210,7 +43214,7 @@ class Player {
43210
43214
  }
43211
43215
  }
43212
43216
 
43213
- var version$1 = "2.21.1";
43217
+ var version$1 = "2.21.4";
43214
43218
 
43215
43219
  var packages = {
43216
43220
  "node_modules/@clappr/core": {