@gcorevideo/player 2.30.1 → 2.30.3

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 (53) hide show
  1. package/assets/audio-tracks/template.ejs +1 -1
  2. package/dist/core.js +1 -1
  3. package/dist/index.css +335 -335
  4. package/dist/index.embed.js +43 -13
  5. package/dist/index.js +69 -32
  6. package/lib/plugins/audio-selector/AudioTracks.d.ts +4 -0
  7. package/lib/plugins/audio-selector/AudioTracks.d.ts.map +1 -1
  8. package/lib/plugins/audio-selector/AudioTracks.js +42 -12
  9. package/lib/plugins/media-control/MediaControl.d.ts +1 -0
  10. package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
  11. package/lib/plugins/media-control/MediaControl.js +9 -1
  12. package/package.json +1 -1
  13. package/src/plugins/audio-selector/AudioTracks.ts +51 -16
  14. package/src/plugins/audio-selector/__tests__/__snapshots__/AudioTracks.test.ts.snap +9 -9
  15. package/src/plugins/media-control/MediaControl.ts +10 -1
  16. package/tsconfig.tsbuildinfo +1 -1
  17. package/assets/vast-ads/style.scss +0 -112
  18. package/lib/plugins/vast-ads/VastAds.d.ts +0 -74
  19. package/lib/plugins/vast-ads/VastAds.d.ts.map +0 -1
  20. package/lib/plugins/vast-ads/VastAds.js +0 -693
  21. package/lib/plugins/vast-ads/loaderxml.d.ts +0 -32
  22. package/lib/plugins/vast-ads/loaderxml.d.ts.map +0 -1
  23. package/lib/plugins/vast-ads/loaderxml.js +0 -229
  24. package/lib/plugins/vast-ads/roll.d.ts +0 -60
  25. package/lib/plugins/vast-ads/roll.d.ts.map +0 -1
  26. package/lib/plugins/vast-ads/roll.js +0 -421
  27. package/lib/plugins/vast-ads/rollmanager.d.ts +0 -62
  28. package/lib/plugins/vast-ads/rollmanager.d.ts.map +0 -1
  29. package/lib/plugins/vast-ads/rollmanager.js +0 -357
  30. package/lib/plugins/vast-ads/sctemanager.d.ts +0 -18
  31. package/lib/plugins/vast-ads/sctemanager.d.ts.map +0 -1
  32. package/lib/plugins/vast-ads/sctemanager.js +0 -117
  33. package/lib/plugins/vast-ads/types.d.ts +0 -12
  34. package/lib/plugins/vast-ads/types.d.ts.map +0 -1
  35. package/lib/plugins/vast-ads/types.js +0 -1
  36. package/lib/plugins/vast-ads/urlhandler.d.ts +0 -4
  37. package/lib/plugins/vast-ads/urlhandler.d.ts.map +0 -1
  38. package/lib/plugins/vast-ads/urlhandler.js +0 -30
  39. package/lib/plugins/vast-ads/xmlhttprequest.d.ts +0 -6
  40. package/lib/plugins/vast-ads/xmlhttprequest.d.ts.map +0 -1
  41. package/lib/plugins/vast-ads/xmlhttprequest.js +0 -40
  42. package/lib/plugins/vast-ads/xmlmerge.d.ts +0 -12
  43. package/lib/plugins/vast-ads/xmlmerge.d.ts.map +0 -1
  44. package/lib/plugins/vast-ads/xmlmerge.js +0 -83
  45. package/src/plugins/vast-ads/VastAds.ts +0 -919
  46. package/src/plugins/vast-ads/loaderxml.ts +0 -301
  47. package/src/plugins/vast-ads/roll.ts +0 -590
  48. package/src/plugins/vast-ads/rollmanager.ts +0 -447
  49. package/src/plugins/vast-ads/sctemanager.ts +0 -152
  50. package/src/plugins/vast-ads/types.ts +0 -20
  51. package/src/plugins/vast-ads/urlhandler.ts +0 -42
  52. package/src/plugins/vast-ads/xmlhttprequest.ts +0 -49
  53. package/src/plugins/vast-ads/xmlmerge.ts +0 -106
@@ -1,7 +1,7 @@
1
1
  import { Events, UICorePlugin, template } from '@clappr/core'
2
2
  import { AudioTrack } from '@clappr/core/types/base/playback/playback.js'
3
3
  import assert from 'assert'
4
- // import { trace } from '@gcorevideo/utils'
4
+ import { trace } from '@gcorevideo/utils'
5
5
 
6
6
  import { CLAPPR_VERSION } from '../../build.js'
7
7
 
@@ -13,7 +13,7 @@ import { mediaControlClickaway } from '../../utils/clickaway.js'
13
13
 
14
14
  const VERSION: string = '2.22.4'
15
15
 
16
- // const T = 'plugins.audiotracks'
16
+ const T = 'plugins.audiotracks'
17
17
 
18
18
  /**
19
19
  * `PLUGIN` that makes possible to switch audio tracks via the media control UI.
@@ -32,6 +32,8 @@ export class AudioTracks extends UICorePlugin {
32
32
 
33
33
  private tracks: AudioTrack[] = []
34
34
 
35
+ private autoUpdateTimerId: ReturnType<typeof setTimeout> | null = null
36
+
35
37
  /**
36
38
  * @internal
37
39
  */
@@ -112,24 +114,23 @@ export class AudioTracks extends UICorePlugin {
112
114
  this.core.activeContainer,
113
115
  Events.CONTAINER_AUDIO_AVAILABLE,
114
116
  (tracks: AudioTrack[]) => {
117
+ trace(`${T} on Events.CONTAINER_AUDIO_AVAILABLE`, {
118
+ tracks,
119
+ })
120
+ const currentTrackId =
121
+ this.core.activeContainer.currentAudioTrack?.id ??
122
+ this.core.activePlayback?.currentAudioTrack?.id
115
123
  this.currentTrack =
116
- tracks.find((track) => track.kind === 'main') ?? null // TODO test
124
+ tracks.find((track) => track.id === currentTrackId) ??
125
+ tracks.find((track) => track.kind === 'main') ??
126
+ tracks[0] ??
127
+ null
117
128
  this.tracks = tracks
118
129
  this.render()
119
130
  this.mount()
120
131
  },
121
132
  )
122
- this.listenTo(
123
- this.core.activeContainer,
124
- Events.CONTAINER_AUDIO_CHANGED,
125
- (track: AudioTrack) => {
126
- this.currentTrack = track
127
- this.highlightCurrentTrack()
128
- this.buttonElement().removeClass('changing')
129
- this.updateText()
130
- },
131
- )
132
- // TODO test
133
+ this.bindContainerAudioChanged()
133
134
  this.listenTo(this.core.activeContainer, Events.CONTAINER_CLICK, () => {
134
135
  this.hideMenu()
135
136
  })
@@ -138,6 +139,30 @@ export class AudioTracks extends UICorePlugin {
138
139
  })
139
140
  }
140
141
 
142
+ private bindContainerAudioChanged() {
143
+ this.listenTo(
144
+ this.core.activeContainer,
145
+ Events.CONTAINER_AUDIO_CHANGED,
146
+ (track: AudioTrack) => {
147
+ trace(`${T} on Events.CONTAINER_AUDIO_CHANGED`, {
148
+ track,
149
+ })
150
+ this.setCurrentTrack(track)
151
+ }
152
+ )
153
+ }
154
+
155
+ private setCurrentTrack(track: AudioTrack | null) {
156
+ if (this.autoUpdateTimerId) {
157
+ clearTimeout(this.autoUpdateTimerId)
158
+ this.autoUpdateTimerId = null
159
+ }
160
+ this.currentTrack = track
161
+ this.highlightCurrentTrack()
162
+ this.buttonElement().removeClass('changing')
163
+ this.updateText()
164
+ }
165
+
141
166
  private shouldRender() {
142
167
  // Render is called from the parent class constructor so tracks aren't available
143
168
  // Only care if we have at least 2 to choose from
@@ -176,7 +201,7 @@ export class AudioTracks extends UICorePlugin {
176
201
  private selectAudioTrack(id: string) {
177
202
  this.startTrackSwitching()
178
203
  this.core.activeContainer.switchAudioTrack(id)
179
- this.updateText()
204
+ this.autoUpdateSelected(id)
180
205
  }
181
206
 
182
207
  private hideMenu() {
@@ -241,7 +266,7 @@ export class AudioTracks extends UICorePlugin {
241
266
  if (!this.currentTrack) {
242
267
  return
243
268
  }
244
- this.buttonElementText().text(this.currentTrack.label)
269
+ this.buttonElementText().text(this.getTitle())
245
270
  }
246
271
 
247
272
  private highlightCurrentTrack() {
@@ -266,5 +291,15 @@ export class AudioTracks extends UICorePlugin {
266
291
  }
267
292
  }
268
293
 
294
+ private autoUpdateSelected(id: string) {
295
+ if (this.autoUpdateTimerId) {
296
+ clearTimeout(this.autoUpdateTimerId)
297
+ }
298
+ this.autoUpdateTimerId = setTimeout(() => {
299
+ const track = this.tracks.find(t => t.id === id) ?? null
300
+ this.setCurrentTrack(track)
301
+ }, 500)
302
+ }
303
+
269
304
  private clickaway = mediaControlClickaway(() => this.hideMenu())
270
305
  }
@@ -2,13 +2,13 @@
2
2
 
3
3
  exports[`AudioTracks > when audio tracks are available > should render menu 1`] = `
4
4
  "<button class="gcore-skin-button-color media-control-dd" id="gplayer-audiotracks-button" aria-haspopup="menu" aria-expanded="false">
5
- <span class="media-control-dd__text" id="gplayer-audiotracks-button-text"></span>
5
+ <span class="media-control-dd__text" id="gplayer-audiotracks-button-text">English</span>
6
6
  <span class="media-control-dd__arrow">/assets/icons/old/quality-arrow.svg</span>
7
7
  </button>
8
8
  <ul class="gcore-skin-bg-color menu media-control-dd__popup" id="gplayer-audiotracks-menu" role="menu" style="display: none;">
9
9
 
10
- <li class="">
11
- <a href="#" class="gcore-skin-text-color" data-item="1" role="menuitemradio" aria-checked="false">
10
+ <li class="current">
11
+ <a href="#" class="gcore-skin-text-color gcore-skin-active" data-item="1" role="menuitemradio" aria-checked="true">
12
12
  English
13
13
  </a>
14
14
  </li>
@@ -25,13 +25,13 @@ exports[`AudioTracks > when audio tracks are available > should render menu 1`]
25
25
 
26
26
  exports[`AudioTracks > when audio tracks are available > when button is clicked > should show menu 1`] = `
27
27
  "<button class="gcore-skin-button-color media-control-dd" id="gplayer-audiotracks-button" aria-haspopup="menu" aria-expanded="true">
28
- <span class="media-control-dd__text" id="gplayer-audiotracks-button-text"></span>
28
+ <span class="media-control-dd__text" id="gplayer-audiotracks-button-text">English</span>
29
29
  <span class="media-control-dd__arrow">/assets/icons/old/quality-arrow.svg</span>
30
30
  </button>
31
31
  <ul class="gcore-skin-bg-color menu media-control-dd__popup" id="gplayer-audiotracks-menu" role="menu">
32
32
 
33
- <li class="">
34
- <a href="#" class="gcore-skin-text-color" data-item="1" role="menuitemradio" aria-checked="false">
33
+ <li class="current">
34
+ <a href="#" class="gcore-skin-text-color gcore-skin-active" data-item="1" role="menuitemradio" aria-checked="true">
35
35
  English
36
36
  </a>
37
37
  </li>
@@ -48,13 +48,13 @@ exports[`AudioTracks > when audio tracks are available > when button is clicked
48
48
 
49
49
  exports[`AudioTracks > when audio tracks are available > when button is clicked > when audio track is selected > should hide the menu 1`] = `
50
50
  "<button class="gcore-skin-button-color media-control-dd changing" id="gplayer-audiotracks-button" aria-haspopup="menu" aria-expanded="false">
51
- <span class="media-control-dd__text" id="gplayer-audiotracks-button-text"></span>
51
+ <span class="media-control-dd__text" id="gplayer-audiotracks-button-text">English</span>
52
52
  <span class="media-control-dd__arrow">/assets/icons/old/quality-arrow.svg</span>
53
53
  </button>
54
54
  <ul class="gcore-skin-bg-color menu media-control-dd__popup" id="gplayer-audiotracks-menu" role="menu" style="display: none;">
55
55
 
56
- <li class="">
57
- <a href="#" class="gcore-skin-text-color" data-item="1" role="menuitemradio" aria-checked="false">
56
+ <li class="current">
57
+ <a href="#" class="gcore-skin-text-color gcore-skin-active" data-item="1" role="menuitemradio" aria-checked="true">
58
58
  English
59
59
  </a>
60
60
  </li>
@@ -189,6 +189,9 @@ export class MediaControl extends UICorePlugin {
189
189
 
190
190
  private persistConfig: boolean
191
191
 
192
+ // Volume before muting, used to restore the volume when unmuting
193
+ private prevVolume = 0
194
+
192
195
  private renderTimerId: ReturnType<typeof setTimeout> | null = null
193
196
 
194
197
  private rendered = false
@@ -855,7 +858,13 @@ export class MediaControl extends UICorePlugin {
855
858
  }
856
859
 
857
860
  private toggleMute() {
858
- this.setVolume(this.muted ? 100 : 0)
861
+ const nextVolume = this.muted ? (this.prevVolume === 0 ? 100 : this.prevVolume) : 0
862
+ if (this.muted) {
863
+
864
+ } else {
865
+ this.prevVolume = this.volume
866
+ }
867
+ this.setVolume(nextVolume)
859
868
  }
860
869
 
861
870
  /**