@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.
- package/assets/audio-tracks/template.ejs +1 -1
- package/dist/core.js +1 -1
- package/dist/index.css +335 -335
- package/dist/index.embed.js +43 -13
- package/dist/index.js +69 -32
- package/lib/plugins/audio-selector/AudioTracks.d.ts +4 -0
- package/lib/plugins/audio-selector/AudioTracks.d.ts.map +1 -1
- package/lib/plugins/audio-selector/AudioTracks.js +42 -12
- package/lib/plugins/media-control/MediaControl.d.ts +1 -0
- package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
- package/lib/plugins/media-control/MediaControl.js +9 -1
- package/package.json +1 -1
- package/src/plugins/audio-selector/AudioTracks.ts +51 -16
- package/src/plugins/audio-selector/__tests__/__snapshots__/AudioTracks.test.ts.snap +9 -9
- package/src/plugins/media-control/MediaControl.ts +10 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/assets/vast-ads/style.scss +0 -112
- package/lib/plugins/vast-ads/VastAds.d.ts +0 -74
- package/lib/plugins/vast-ads/VastAds.d.ts.map +0 -1
- package/lib/plugins/vast-ads/VastAds.js +0 -693
- package/lib/plugins/vast-ads/loaderxml.d.ts +0 -32
- package/lib/plugins/vast-ads/loaderxml.d.ts.map +0 -1
- package/lib/plugins/vast-ads/loaderxml.js +0 -229
- package/lib/plugins/vast-ads/roll.d.ts +0 -60
- package/lib/plugins/vast-ads/roll.d.ts.map +0 -1
- package/lib/plugins/vast-ads/roll.js +0 -421
- package/lib/plugins/vast-ads/rollmanager.d.ts +0 -62
- package/lib/plugins/vast-ads/rollmanager.d.ts.map +0 -1
- package/lib/plugins/vast-ads/rollmanager.js +0 -357
- package/lib/plugins/vast-ads/sctemanager.d.ts +0 -18
- package/lib/plugins/vast-ads/sctemanager.d.ts.map +0 -1
- package/lib/plugins/vast-ads/sctemanager.js +0 -117
- package/lib/plugins/vast-ads/types.d.ts +0 -12
- package/lib/plugins/vast-ads/types.d.ts.map +0 -1
- package/lib/plugins/vast-ads/types.js +0 -1
- package/lib/plugins/vast-ads/urlhandler.d.ts +0 -4
- package/lib/plugins/vast-ads/urlhandler.d.ts.map +0 -1
- package/lib/plugins/vast-ads/urlhandler.js +0 -30
- package/lib/plugins/vast-ads/xmlhttprequest.d.ts +0 -6
- package/lib/plugins/vast-ads/xmlhttprequest.d.ts.map +0 -1
- package/lib/plugins/vast-ads/xmlhttprequest.js +0 -40
- package/lib/plugins/vast-ads/xmlmerge.d.ts +0 -12
- package/lib/plugins/vast-ads/xmlmerge.d.ts.map +0 -1
- package/lib/plugins/vast-ads/xmlmerge.js +0 -83
- package/src/plugins/vast-ads/VastAds.ts +0 -919
- package/src/plugins/vast-ads/loaderxml.ts +0 -301
- package/src/plugins/vast-ads/roll.ts +0 -590
- package/src/plugins/vast-ads/rollmanager.ts +0 -447
- package/src/plugins/vast-ads/sctemanager.ts +0 -152
- package/src/plugins/vast-ads/types.ts +0 -20
- package/src/plugins/vast-ads/urlhandler.ts +0 -42
- package/src/plugins/vast-ads/xmlhttprequest.ts +0 -49
- 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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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"
|
|
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="
|
|
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"
|
|
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="
|
|
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"
|
|
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="
|
|
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.
|
|
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
|
/**
|