@gcorevideo/player 2.20.1 → 2.20.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.
- package/dist/core.js +30 -6
- package/dist/index.css +1572 -1572
- package/dist/index.js +343 -226
- package/dist/player.d.ts +280 -52
- package/dist/plugins/index.css +619 -619
- package/dist/plugins/index.js +1468 -1351
- package/docs/api/player.audioselector.md +1 -251
- package/docs/api/player.bigmutebutton.md +1 -156
- package/docs/api/player.clapprstats.exportmetrics.md +4 -0
- package/docs/api/player.clapprstats.md +7 -223
- package/docs/api/player.clapprstats.setupdatemetrics.md +2 -0
- package/docs/api/player.clicktopause.md +5 -113
- package/docs/api/player.clipsplugin.gettext.md +9 -0
- package/docs/api/player.clipsplugin.md +10 -94
- package/docs/api/player.clipspluginsettings.md +57 -0
- package/docs/api/player.clipspluginsettings.text.md +13 -0
- package/docs/api/player.contextmenu._constructor_.md +6 -3
- package/docs/api/player.contextmenu.md +13 -256
- package/docs/api/{player.audioselector.bindevents.md → player.contextmenupluginsettings.label.md} +3 -7
- package/docs/api/player.contextmenupluginsettings.md +98 -0
- package/docs/api/{player.audioselector.attributes.md → player.contextmenupluginsettings.preventshowcontextmenu.md} +3 -6
- package/docs/api/{player.audioselector.reload.md → player.contextmenupluginsettings.url.md} +3 -7
- package/docs/api/player.dvrcontrols.md +1 -1
- package/docs/api/player.errorscreen.md +0 -2
- package/docs/api/player.favicon._constructor_.md +3 -0
- package/docs/api/player.favicon.bindevents.md +3 -0
- package/docs/api/player.favicon.configure.md +3 -0
- package/docs/api/player.favicon.destroy.md +3 -0
- package/docs/api/player.favicon.disable.md +3 -0
- package/docs/api/player.favicon.md +18 -1
- package/docs/api/player.favicon.name.md +3 -0
- package/docs/api/player.favicon.supportedversion.md +3 -0
- package/docs/api/player.gearevents.md +4 -1
- package/docs/api/player.googleanalytics._constructor_.md +3 -0
- package/docs/api/player.googleanalytics.addeventlisteners.md +3 -0
- package/docs/api/player.googleanalytics.embedscript.md +3 -0
- package/docs/api/player.googleanalytics.md +42 -1
- package/docs/api/player.googleanalytics.name.md +3 -0
- package/docs/api/player.googleanalytics.onbufferfull.md +3 -0
- package/docs/api/player.googleanalytics.onbuffering.md +3 -0
- package/docs/api/player.googleanalytics.ondvr.md +3 -0
- package/docs/api/player.googleanalytics.onended.md +3 -0
- package/docs/api/player.googleanalytics.onerror.md +3 -0
- package/docs/api/player.googleanalytics.onfullscreen.md +3 -0
- package/docs/api/player.googleanalytics.onhd.md +3 -0
- package/docs/api/player.googleanalytics.onpause.md +3 -0
- package/docs/api/player.googleanalytics.onplay.md +3 -0
- package/docs/api/player.googleanalytics.onready.md +3 -0
- package/docs/api/player.googleanalytics.onseek.md +3 -0
- package/docs/api/player.googleanalytics.onstop.md +3 -0
- package/docs/api/player.googleanalytics.onvolumechanged.md +3 -0
- package/docs/api/player.googleanalytics.push.md +3 -0
- package/docs/api/player.googleanalytics.supportedversion.md +3 -0
- package/docs/api/player.initeventdata.event.md +3 -0
- package/docs/api/player.initeventdata.md +7 -0
- package/docs/api/player.logo._constructor_.md +3 -0
- package/docs/api/player.logo.attributes.md +3 -0
- package/docs/api/player.logo.bindevents.md +3 -0
- package/docs/api/player.logo.md +20 -1
- package/docs/api/player.logo.name.md +3 -0
- package/docs/api/player.logo.render.md +3 -0
- package/docs/api/player.logo.stoplistening.md +3 -0
- package/docs/api/player.logo.supportedversion.md +3 -0
- package/docs/api/player.logo.template.md +3 -0
- package/docs/api/player.md +73 -21
- package/docs/api/player.mediacontrolelement.md +1 -1
- package/docs/api/player.multicamera._constructor_.md +3 -0
- package/docs/api/player.multicamera.activebyid.md +3 -0
- package/docs/api/player.multicamera.attributes.md +3 -0
- package/docs/api/player.multicamera.bindevents.md +3 -0
- package/docs/api/player.multicamera.events.md +3 -0
- package/docs/api/player.multicamera.getcameraslist.md +3 -0
- package/docs/api/player.multicamera.getcurrentcamera.md +3 -0
- package/docs/api/player.multicamera.md +30 -1
- package/docs/api/player.multicamera.name.md +3 -0
- package/docs/api/player.multicamera.render.md +3 -0
- package/docs/api/player.multicamera.supportedversion.md +3 -0
- package/docs/api/player.multicamera.template.md +3 -0
- package/docs/api/player.multicamera.unbindevents.md +3 -0
- package/docs/api/player.multicamera.version.md +3 -0
- package/docs/api/player.seektime.attributes.md +3 -0
- package/docs/api/player.seektime.bindevents.md +3 -0
- package/docs/api/player.seektime.durationshown.md +3 -0
- package/docs/api/player.seektime.getseektime.md +3 -0
- package/docs/api/player.seektime.islivestreamwithdvr.md +3 -0
- package/docs/api/player.seektime.md +31 -0
- package/docs/api/player.seektime.mediacontrol.md +3 -0
- package/docs/api/player.seektime.mediacontrolcontainer.md +3 -0
- package/docs/api/player.seektime.name.md +3 -0
- package/docs/api/player.seektime.render.md +3 -0
- package/docs/api/player.seektime.shouldbevisible.md +3 -0
- package/docs/api/player.seektime.supportedversion.md +3 -0
- package/docs/api/player.seektime.template.md +3 -0
- package/docs/api/player.seektime.update.md +3 -0
- package/docs/api/player.share.md +2 -0
- package/docs/api/player.skiptime.md +2 -0
- package/docs/api/player.stalleventdata.count.md +3 -0
- package/docs/api/player.stalleventdata.event.md +3 -0
- package/docs/api/player.stalleventdata.md +8 -3
- package/docs/api/player.stalleventdata.time.md +3 -0
- package/docs/api/player.stalleventdata.total_ms.md +3 -0
- package/docs/api/player.starteventdata.event.md +3 -0
- package/docs/api/player.starteventdata.md +7 -0
- package/docs/api/player.telemetryevent.md +11 -0
- package/docs/api/player.telemetryeventdata.md +3 -0
- package/docs/api/player.telemetrypluginsettings.md +4 -1
- package/docs/api/player.telemetrypluginsettings.send.md +3 -0
- package/docs/api/player.telemetryrecord.md +3 -0
- package/docs/api/player.thumbnails.md +21 -139
- package/docs/api/player.thumbnailspluginsettings.md +23 -0
- package/docs/api/player.volumefade.md +1 -0
- package/docs/api/player.volumefadeevents.md +7 -0
- package/docs/api/player.watcheventdata.event.md +3 -0
- package/docs/api/player.watcheventdata.md +7 -0
- package/docs/api/player.zeptoresult.md +1 -0
- package/lib/Player.d.ts +5 -3
- package/lib/Player.d.ts.map +1 -1
- package/lib/Player.js +30 -6
- package/lib/index.plugins.d.ts +0 -1
- package/lib/index.plugins.d.ts.map +1 -1
- package/lib/index.plugins.js +0 -1
- package/lib/internal.types.d.ts +7 -7
- package/lib/internal.types.d.ts.map +1 -1
- package/lib/plugins/audio-selector/AudioSelector.d.ts +28 -6
- package/lib/plugins/audio-selector/AudioSelector.d.ts.map +1 -1
- package/lib/plugins/audio-selector/AudioSelector.js +52 -22
- package/lib/plugins/big-mute-button/BigMuteButton.d.ts +18 -2
- package/lib/plugins/big-mute-button/BigMuteButton.d.ts.map +1 -1
- package/lib/plugins/big-mute-button/BigMuteButton.js +21 -16
- package/lib/plugins/bottom-gear/BottomGear.d.ts +1 -0
- package/lib/plugins/bottom-gear/BottomGear.d.ts.map +1 -1
- package/lib/plugins/bottom-gear/BottomGear.js +1 -0
- package/lib/plugins/clappr-stats/ClapprStats.d.ts +31 -8
- package/lib/plugins/clappr-stats/ClapprStats.d.ts.map +1 -1
- package/lib/plugins/clappr-stats/ClapprStats.js +24 -0
- package/lib/plugins/clappr-stats/types.d.ts +12 -0
- package/lib/plugins/clappr-stats/types.d.ts.map +1 -1
- package/lib/plugins/clappr-stats/types.js +3 -0
- package/lib/plugins/click-to-pause/ClickToPause.d.ts +13 -1
- package/lib/plugins/click-to-pause/ClickToPause.d.ts.map +1 -1
- package/lib/plugins/click-to-pause/ClickToPause.js +14 -4
- package/lib/plugins/clips/Clips.d.ts +34 -2
- package/lib/plugins/clips/Clips.d.ts.map +1 -1
- package/lib/plugins/clips/Clips.js +51 -22
- package/lib/plugins/context-menu/ContextMenu.d.ts +44 -13
- package/lib/plugins/context-menu/ContextMenu.d.ts.map +1 -1
- package/lib/plugins/context-menu/ContextMenu.js +48 -36
- package/lib/plugins/dvr-controls/DvrControls.d.ts +1 -3
- package/lib/plugins/dvr-controls/DvrControls.d.ts.map +1 -1
- package/lib/plugins/dvr-controls/DvrControls.js +11 -28
- package/lib/plugins/error-screen/ErrorScreen.d.ts +0 -1
- package/lib/plugins/error-screen/ErrorScreen.d.ts.map +1 -1
- package/lib/plugins/error-screen/ErrorScreen.js +0 -1
- package/lib/plugins/favicon/Favicon.d.ts +4 -0
- package/lib/plugins/favicon/Favicon.d.ts.map +1 -1
- package/lib/plugins/favicon/Favicon.js +4 -0
- package/lib/plugins/google-analytics/GoogleAnalytics.d.ts +4 -0
- package/lib/plugins/google-analytics/GoogleAnalytics.d.ts.map +1 -1
- package/lib/plugins/google-analytics/GoogleAnalytics.js +5 -1
- package/lib/plugins/index.d.ts +0 -1
- package/lib/plugins/index.d.ts.map +1 -1
- package/lib/plugins/index.js +0 -1
- package/lib/plugins/logo/Logo.d.ts +4 -0
- package/lib/plugins/logo/Logo.d.ts.map +1 -1
- package/lib/plugins/logo/Logo.js +4 -0
- package/lib/plugins/media-control/MediaControl.d.ts +1 -1
- package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
- package/lib/plugins/media-control/MediaControl.js +3 -1
- package/lib/plugins/multi-camera/MultiCamera.d.ts +4 -0
- package/lib/plugins/multi-camera/MultiCamera.d.ts.map +1 -1
- package/lib/plugins/multi-camera/MultiCamera.js +6 -2
- package/lib/plugins/seek-time/SeekTime.d.ts +4 -0
- package/lib/plugins/seek-time/SeekTime.d.ts.map +1 -1
- package/lib/plugins/seek-time/SeekTime.js +6 -2
- package/lib/plugins/share/Share.d.ts +3 -0
- package/lib/plugins/share/Share.d.ts.map +1 -1
- package/lib/plugins/share/Share.js +4 -1
- package/lib/plugins/skip-time/SkipTime.d.ts +3 -0
- package/lib/plugins/skip-time/SkipTime.d.ts.map +1 -1
- package/lib/plugins/skip-time/SkipTime.js +3 -0
- package/lib/plugins/telemetry/Telemetry.d.ts +18 -0
- package/lib/plugins/telemetry/Telemetry.d.ts.map +1 -1
- package/lib/plugins/telemetry/Telemetry.js +1 -0
- package/lib/plugins/thumbnails/Thumbnails.d.ts +48 -3
- package/lib/plugins/thumbnails/Thumbnails.d.ts.map +1 -1
- package/lib/plugins/thumbnails/Thumbnails.js +52 -18
- package/lib/plugins/volume-fade/VolumeFade.d.ts +5 -0
- package/lib/plugins/volume-fade/VolumeFade.d.ts.map +1 -1
- package/lib/plugins/volume-fade/VolumeFade.js +5 -0
- package/lib/types.d.ts +9 -1
- package/lib/types.d.ts.map +1 -1
- package/lib/utils/types.d.ts +1 -0
- package/lib/utils/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/release_notes +297 -0
- package/src/Player.ts +101 -46
- package/src/__tests__/Player.test.ts +23 -1
- package/src/index.plugins.ts +0 -1
- package/src/internal.types.ts +86 -79
- package/src/plugins/audio-selector/AudioSelector.ts +227 -154
- package/src/plugins/big-mute-button/BigMuteButton.ts +100 -79
- package/src/plugins/bottom-gear/BottomGear.ts +1 -0
- package/src/plugins/clappr-stats/ClapprStats.ts +32 -8
- package/src/plugins/clappr-stats/types.ts +13 -0
- package/src/plugins/click-to-pause/ClickToPause.ts +47 -36
- package/src/plugins/clips/Clips.ts +127 -71
- package/src/plugins/context-menu/ContextMenu.ts +109 -76
- package/src/plugins/dvr-controls/DvrControls.ts +11 -30
- package/src/plugins/error-screen/ErrorScreen.ts +0 -1
- package/src/plugins/favicon/Favicon.ts +4 -0
- package/src/plugins/google-analytics/GoogleAnalytics.ts +5 -1
- package/src/plugins/index.ts +0 -1
- package/src/plugins/logo/Logo.ts +4 -0
- package/src/plugins/media-control/MediaControl.ts +4 -1
- package/src/plugins/multi-camera/MultiCamera.ts +6 -2
- package/src/plugins/seek-time/SeekTime.ts +6 -2
- package/src/plugins/share/Share.ts +4 -1
- package/src/plugins/skip-time/SkipTime.ts +3 -0
- package/src/plugins/telemetry/Telemetry.ts +18 -0
- package/src/plugins/thumbnails/Thumbnails.ts +268 -194
- package/src/plugins/volume-fade/VolumeFade.ts +5 -0
- package/src/types.ts +11 -1
- package/src/utils/types.ts +1 -0
- package/temp/player.api.json +627 -2468
- package/tsconfig.tsbuildinfo +1 -1
- package/docs/api/player.audioselector.events.md +0 -17
- package/docs/api/player.audioselector.hideselecttrackmenu.md +0 -18
- package/docs/api/player.audioselector.name.md +0 -14
- package/docs/api/player.audioselector.onshowlevelselectmenu.md +0 -18
- package/docs/api/player.audioselector.render.md +0 -18
- package/docs/api/player.audioselector.supportedversion.md +0 -16
- package/docs/api/player.audioselector.template.md +0 -14
- package/docs/api/player.audioselector.togglecontextmenu.md +0 -18
- package/docs/api/player.audioselector.unbindevents.md +0 -18
- package/docs/api/player.audioselector.version.md +0 -14
- package/docs/api/player.bigmutebutton.bindevents.md +0 -18
- package/docs/api/player.bigmutebutton.events.md +0 -17
- package/docs/api/player.bigmutebutton.name.md +0 -14
- package/docs/api/player.bigmutebutton.render.md +0 -18
- package/docs/api/player.bigmutebutton.supportedversion.md +0 -16
- package/docs/api/player.bigmutebutton.template.md +0 -14
- package/docs/api/player.clapprstats._buildreport.md +0 -18
- package/docs/api/player.clapprstats._defaultreport.md +0 -52
- package/docs/api/player.clapprstats._playbackname.md +0 -14
- package/docs/api/player.clapprstats._playbacktype.md +0 -14
- package/docs/api/player.clapprstats.bindevents.md +0 -18
- package/docs/api/player.clapprstats.destroy.md +0 -18
- package/docs/api/player.clapprstats.name.md +0 -14
- package/docs/api/player.clapprstats.onfirstplaying.md +0 -18
- package/docs/api/player.clapprstats.playafterpause.md +0 -18
- package/docs/api/player.clapprstats.starttimers.md +0 -18
- package/docs/api/player.clapprstats.stopreporting.md +0 -18
- package/docs/api/player.clapprstats.supportedversion.md +0 -16
- package/docs/api/player.clicktopause.bindevents.md +0 -15
- package/docs/api/player.clicktopause.config.md +0 -11
- package/docs/api/player.clicktopause.name.md +0 -11
- package/docs/api/player.clicktopause.supportedversion.md +0 -13
- package/docs/api/player.clipsplugin.attributes.md +0 -13
- package/docs/api/player.clipsplugin.bindevents.md +0 -15
- package/docs/api/player.clipsplugin.makesvg.md +0 -49
- package/docs/api/player.clipsplugin.name.md +0 -11
- package/docs/api/player.clipsplugin.unbindevents.md +0 -15
- package/docs/api/player.contextmenu.attributes.md +0 -13
- package/docs/api/player.contextmenu.bindevents.md +0 -15
- package/docs/api/player.contextmenu.destroy.md +0 -15
- package/docs/api/player.contextmenu.events.md +0 -13
- package/docs/api/player.contextmenu.exposeversion.md +0 -14
- package/docs/api/player.contextmenu.label.md +0 -11
- package/docs/api/player.contextmenu.mediacontrol.md +0 -11
- package/docs/api/player.contextmenu.name.md +0 -11
- package/docs/api/player.contextmenu.render.md +0 -15
- package/docs/api/player.contextmenu.supportedversion.md +0 -13
- package/docs/api/player.contextmenu.template.md +0 -11
- package/docs/api/player.contextmenu.url.md +0 -11
- package/docs/api/player.disablecontrols.bindevents.md +0 -15
- package/docs/api/player.disablecontrols.container.md +0 -11
- package/docs/api/player.disablecontrols.md +0 -138
- package/docs/api/player.disablecontrols.name.md +0 -11
- package/docs/api/player.disablecontrols.supportedversion.md +0 -13
- package/docs/api/player.disablecontrols.unbindevents.md +0 -15
- package/docs/api/player.thumbnails.attributes.md +0 -13
- package/docs/api/player.thumbnails.bindevents.md +0 -15
- package/docs/api/player.thumbnails.name.md +0 -11
- package/docs/api/player.thumbnails.settext.md +0 -49
- package/docs/api/player.thumbnails.supportedversion.md +0 -13
- package/docs/api/player.thumbnails.template.md +0 -11
- package/src/plugins/disable-controls/DisableControls.ts +0 -81
- package/src/plugins/ga-events/GaEvents.js +0 -395
- package/src/plugins/ga-events/ga-tracking.js +0 -46
|
@@ -1,224 +1,287 @@
|
|
|
1
|
-
import { Events, UICorePlugin, template } from '@clappr/core'
|
|
1
|
+
import { Events, UICorePlugin, template } from '@clappr/core'
|
|
2
2
|
import {
|
|
3
3
|
AudioTrackLoadedData,
|
|
4
4
|
AudioTrackSwitchedData,
|
|
5
5
|
AudioTracksUpdatedData,
|
|
6
6
|
Events as HlsEvents,
|
|
7
|
-
} from 'hls.js'
|
|
7
|
+
} from 'hls.js'
|
|
8
8
|
|
|
9
|
-
import { CLAPPR_VERSION } from '../../build.js'
|
|
9
|
+
import { CLAPPR_VERSION } from '../../build.js'
|
|
10
10
|
|
|
11
|
-
import pluginHtml from '../../../assets/audio-selector/track-selector.ejs'
|
|
12
|
-
import '../../../assets/audio-selector/style.scss'
|
|
13
|
-
import audioArrow from '../../../assets/icons/old/quality-arrow.svg'
|
|
14
|
-
import { ZeptoResult } from '../../utils/types.js'
|
|
11
|
+
import pluginHtml from '../../../assets/audio-selector/track-selector.ejs'
|
|
12
|
+
import '../../../assets/audio-selector/style.scss'
|
|
13
|
+
import audioArrow from '../../../assets/icons/old/quality-arrow.svg'
|
|
14
|
+
import { ZeptoResult } from '../../utils/types.js'
|
|
15
|
+
import assert from 'assert'
|
|
15
16
|
|
|
16
|
-
const VERSION: string = '0.0.1'
|
|
17
|
+
const VERSION: string = '0.0.1'
|
|
17
18
|
|
|
18
19
|
// const T = 'plugins.audio_selector';
|
|
19
20
|
|
|
20
|
-
const AUTO = 0
|
|
21
|
+
const AUTO = 0
|
|
21
22
|
|
|
22
23
|
type AudioTrackW3C = {
|
|
23
|
-
enabled: boolean
|
|
24
|
-
id: string
|
|
24
|
+
enabled: boolean
|
|
25
|
+
id: string
|
|
25
26
|
kind: string
|
|
26
|
-
label: string
|
|
27
|
+
label: string
|
|
27
28
|
}
|
|
28
29
|
|
|
29
30
|
type AudioTrackItem = {
|
|
30
|
-
id: number
|
|
31
|
-
label: string
|
|
31
|
+
id: number
|
|
32
|
+
label: string
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
type AudioTrackList = {
|
|
35
|
-
length: number
|
|
36
|
-
addEventListener(
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
length: number
|
|
37
|
+
addEventListener(
|
|
38
|
+
type: 'change' | 'addtrack' | 'removetrack',
|
|
39
|
+
listener: EventListenerOrEventListenerObject,
|
|
40
|
+
): void
|
|
41
|
+
getTrackById(id: string): AudioTrackW3C | null
|
|
42
|
+
[Symbol.iterator](): IterableIterator<AudioTrackW3C>
|
|
39
43
|
}
|
|
40
44
|
|
|
41
45
|
/**
|
|
46
|
+
* Adds an audio track selector to the media control UI.
|
|
42
47
|
* @beta
|
|
43
48
|
*/
|
|
44
49
|
export class AudioSelector extends UICorePlugin {
|
|
45
|
-
|
|
50
|
+
// TODO
|
|
46
51
|
|
|
47
|
-
private
|
|
52
|
+
private selectedTrackId: number | undefined
|
|
48
53
|
|
|
49
|
-
private
|
|
54
|
+
private currentTrack: AudioTrackItem | null = null
|
|
50
55
|
|
|
56
|
+
private tracks: AudioTrackItem[] = []
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @internal
|
|
60
|
+
*/
|
|
51
61
|
get name() {
|
|
52
|
-
return '
|
|
62
|
+
return 'audio_selector'
|
|
53
63
|
}
|
|
54
64
|
|
|
65
|
+
/**
|
|
66
|
+
* @internal
|
|
67
|
+
*/
|
|
55
68
|
get supportedVersion() {
|
|
56
|
-
return { min: CLAPPR_VERSION }
|
|
69
|
+
return { min: CLAPPR_VERSION }
|
|
57
70
|
}
|
|
58
71
|
|
|
72
|
+
/**
|
|
73
|
+
* @internal
|
|
74
|
+
*/
|
|
59
75
|
static get version() {
|
|
60
|
-
return VERSION
|
|
76
|
+
return VERSION
|
|
61
77
|
}
|
|
62
78
|
|
|
63
|
-
|
|
64
|
-
return template(pluginHtml);
|
|
65
|
-
}
|
|
79
|
+
private static readonly template = template(pluginHtml)
|
|
66
80
|
|
|
81
|
+
/**
|
|
82
|
+
* @internal
|
|
83
|
+
*/
|
|
67
84
|
override get attributes() {
|
|
68
85
|
return {
|
|
69
|
-
|
|
70
|
-
'data-track-selector': ''
|
|
71
|
-
}
|
|
86
|
+
class: this.name,
|
|
87
|
+
'data-track-selector': '',
|
|
88
|
+
}
|
|
72
89
|
}
|
|
73
90
|
|
|
91
|
+
/**
|
|
92
|
+
* @internal
|
|
93
|
+
*/
|
|
74
94
|
override get events() {
|
|
75
95
|
return {
|
|
76
96
|
'click [data-track-selector-select]': 'onTrackSelect',
|
|
77
|
-
'click [data-track-selector-button]': 'onShowLevelSelectMenu'
|
|
78
|
-
}
|
|
97
|
+
'click [data-track-selector-button]': 'onShowLevelSelectMenu',
|
|
98
|
+
}
|
|
79
99
|
}
|
|
80
100
|
|
|
101
|
+
/**
|
|
102
|
+
* @internal
|
|
103
|
+
*/
|
|
81
104
|
override bindEvents() {
|
|
82
|
-
this.listenTo(this.core, Events.CORE_READY, this.bindPlaybackEvents)
|
|
83
|
-
|
|
84
|
-
this.listenTo(
|
|
85
|
-
|
|
105
|
+
this.listenTo(this.core, Events.CORE_READY, this.bindPlaybackEvents)
|
|
106
|
+
// TODO CORE_ACTIVE_CONTAINER_CHANGED
|
|
107
|
+
this.listenTo(
|
|
108
|
+
this.core.mediaControl,
|
|
109
|
+
Events.MEDIACONTROL_CONTAINERCHANGED,
|
|
110
|
+
this.reload,
|
|
111
|
+
)
|
|
112
|
+
this.listenTo(
|
|
113
|
+
this.core.mediaControl,
|
|
114
|
+
Events.MEDIACONTROL_RENDERED,
|
|
115
|
+
this.render,
|
|
116
|
+
)
|
|
117
|
+
this.listenTo(
|
|
118
|
+
this.core.mediaControl,
|
|
119
|
+
Events.MEDIACONTROL_HIDE,
|
|
120
|
+
this.hideSelectTrackMenu,
|
|
121
|
+
)
|
|
86
122
|
}
|
|
87
123
|
|
|
88
|
-
unBindEvents() {
|
|
124
|
+
private unBindEvents() {
|
|
89
125
|
// @ts-ignore
|
|
90
|
-
this.stopListening(this.core, Events.CORE_READY)
|
|
126
|
+
this.stopListening(this.core, Events.CORE_READY)
|
|
91
127
|
// @ts-ignore
|
|
92
|
-
this.stopListening(
|
|
128
|
+
this.stopListening(
|
|
129
|
+
this.core.mediaControl,
|
|
130
|
+
Events.MEDIACONTROL_CONTAINERCHANGED,
|
|
131
|
+
)
|
|
93
132
|
// @ts-ignore
|
|
94
|
-
this.stopListening(this.core.mediaControl, Events.MEDIACONTROL_RENDERED)
|
|
133
|
+
this.stopListening(this.core.mediaControl, Events.MEDIACONTROL_RENDERED)
|
|
95
134
|
// @ts-ignore
|
|
96
|
-
this.stopListening(this.core.mediaControl, Events.MEDIACONTROL_HIDE)
|
|
135
|
+
this.stopListening(this.core.mediaControl, Events.MEDIACONTROL_HIDE)
|
|
97
136
|
}
|
|
98
137
|
|
|
99
138
|
private bindPlaybackEvents() {
|
|
100
139
|
// this.currentTrack = {};
|
|
101
140
|
// this.removeAuto = false;
|
|
102
|
-
this.selectedTrackId = undefined
|
|
103
|
-
const currentPlayback = this.core.activePlayback
|
|
141
|
+
this.selectedTrackId = undefined
|
|
142
|
+
const currentPlayback = this.core.activePlayback
|
|
104
143
|
|
|
105
|
-
this.listenTo(currentPlayback, Events.PLAYBACK_STOP, this.onStop)
|
|
106
|
-
this.setupAudioTrackListeners()
|
|
144
|
+
this.listenTo(currentPlayback, Events.PLAYBACK_STOP, this.onStop)
|
|
145
|
+
this.setupAudioTrackListeners()
|
|
107
146
|
}
|
|
108
147
|
|
|
109
148
|
private setupAudioTrackListeners() {
|
|
110
|
-
const currentPlayback = this.core.activePlayback
|
|
149
|
+
const currentPlayback = this.core.activePlayback
|
|
111
150
|
|
|
112
151
|
// TODO no-crutch:currentPlayback._hls
|
|
113
152
|
if (currentPlayback._hls) {
|
|
114
153
|
// TODO AUDIO_TRACKS_UPDATED
|
|
115
154
|
// currentPlayback._hls.on('hlsAudioTracksUpdated', (e, data) => {
|
|
116
|
-
currentPlayback._hls.on(
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
155
|
+
currentPlayback._hls.on(
|
|
156
|
+
HlsEvents.AUDIO_TRACKS_UPDATED,
|
|
157
|
+
(e: HlsEvents.AUDIO_TRACKS_UPDATED, data: AudioTracksUpdatedData) => {
|
|
158
|
+
// let id = -1;
|
|
159
|
+
// for (const audioTrack of data.audioTracks) {
|
|
160
|
+
// if (audioTrack.default) {
|
|
161
|
+
// id = audioTrack.id;
|
|
162
|
+
// this.currentTrack = audioTrack;
|
|
163
|
+
// }
|
|
164
|
+
// }
|
|
165
|
+
const defaultTrack = data.audioTracks.find((track) => track.default)
|
|
166
|
+
if (defaultTrack) {
|
|
167
|
+
this.currentTrack = {
|
|
168
|
+
id: defaultTrack.id,
|
|
169
|
+
label: defaultTrack.name,
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
this.fillTracks(
|
|
173
|
+
data.audioTracks.map((p) => ({
|
|
174
|
+
id: p.id,
|
|
175
|
+
label: p.name,
|
|
176
|
+
})),
|
|
177
|
+
defaultTrack?.id,
|
|
178
|
+
)
|
|
179
|
+
},
|
|
180
|
+
)
|
|
181
|
+
currentPlayback._hls.on(
|
|
182
|
+
HlsEvents.AUDIO_TRACK_SWITCHING,
|
|
183
|
+
this.startTrackSwitch.bind(this),
|
|
184
|
+
)
|
|
185
|
+
currentPlayback._hls.on(
|
|
186
|
+
HlsEvents.AUDIO_TRACK_SWITCHED,
|
|
187
|
+
this.updateCurrentTrack.bind(this),
|
|
188
|
+
)
|
|
189
|
+
currentPlayback._hls.on(
|
|
190
|
+
HlsEvents.AUDIO_TRACK_LOADED,
|
|
191
|
+
this.updateCurrentTrack.bind(this),
|
|
192
|
+
)
|
|
139
193
|
} else {
|
|
140
194
|
this.listenToOnce(currentPlayback, Events.PLAYBACK_PLAY, () => {
|
|
141
|
-
const mediaElement = currentPlayback.$el.get(0)
|
|
195
|
+
const mediaElement = currentPlayback.$el.get(0)
|
|
142
196
|
// const { audioTracks } = currentPlayback.$el.get(0);
|
|
143
|
-
const audioTracks: AudioTrackList = mediaElement.audioTracks
|
|
197
|
+
const audioTracks: AudioTrackList = mediaElement.audioTracks
|
|
144
198
|
|
|
145
199
|
if (audioTracks && audioTracks.length) {
|
|
146
|
-
let index = 0
|
|
147
|
-
const trackItems: AudioTrackItem[] = []
|
|
200
|
+
let index = 0
|
|
201
|
+
const trackItems: AudioTrackItem[] = []
|
|
148
202
|
for (const audioTrack of audioTracks) {
|
|
149
203
|
if (audioTrack.enabled) {
|
|
150
204
|
const t = {
|
|
151
205
|
id: index,
|
|
152
206
|
label: audioTrack.label,
|
|
153
|
-
}
|
|
154
|
-
this.currentTrack = t
|
|
155
|
-
trackItems.push(t)
|
|
156
|
-
index
|
|
207
|
+
}
|
|
208
|
+
this.currentTrack = t
|
|
209
|
+
trackItems.push(t)
|
|
210
|
+
index++
|
|
157
211
|
}
|
|
158
212
|
}
|
|
159
213
|
|
|
160
|
-
audioTracks.addEventListener('change', () =>
|
|
214
|
+
audioTracks.addEventListener('change', () =>
|
|
215
|
+
this.updateCurrentTrackW3C(),
|
|
216
|
+
)
|
|
161
217
|
|
|
162
|
-
this.fillTracks(trackItems, trackItems[0].id)
|
|
218
|
+
this.fillTracks(trackItems, trackItems[0].id)
|
|
163
219
|
}
|
|
164
|
-
})
|
|
220
|
+
})
|
|
165
221
|
}
|
|
166
222
|
}
|
|
167
223
|
|
|
168
|
-
private onStop() {
|
|
224
|
+
private onStop() {}
|
|
169
225
|
|
|
170
|
-
reload() {
|
|
171
|
-
this.unBindEvents()
|
|
172
|
-
this.bindEvents()
|
|
173
|
-
this.bindPlaybackEvents()
|
|
226
|
+
private reload() {
|
|
227
|
+
this.unBindEvents()
|
|
228
|
+
this.bindEvents()
|
|
229
|
+
this.bindPlaybackEvents()
|
|
174
230
|
}
|
|
175
231
|
|
|
176
232
|
private shouldRender() {
|
|
177
233
|
if (!this.core.activeContainer) {
|
|
178
|
-
return false
|
|
234
|
+
return false
|
|
179
235
|
}
|
|
180
236
|
|
|
181
|
-
const currentPlayback = this.core.activePlayback
|
|
237
|
+
const currentPlayback = this.core.activePlayback
|
|
182
238
|
|
|
183
239
|
if (!currentPlayback) {
|
|
184
|
-
return false
|
|
240
|
+
return false
|
|
185
241
|
}
|
|
186
242
|
|
|
187
|
-
const { audioTracks } =
|
|
243
|
+
const { audioTracks } =
|
|
244
|
+
currentPlayback.activePlayback._hls || currentPlayback.$el.get(0)
|
|
188
245
|
|
|
189
|
-
this.tracks = audioTracks
|
|
246
|
+
this.tracks = audioTracks
|
|
190
247
|
|
|
191
248
|
// Only care if we have at least 2 to choose from
|
|
192
|
-
return this.tracks && this.tracks.length > 1
|
|
249
|
+
return this.tracks && this.tracks.length > 1
|
|
193
250
|
}
|
|
194
251
|
|
|
252
|
+
/**
|
|
253
|
+
* @internal
|
|
254
|
+
*/
|
|
195
255
|
override render() {
|
|
196
|
-
if (this.shouldRender()) {
|
|
197
|
-
|
|
256
|
+
if (!this.shouldRender()) {
|
|
257
|
+
return this
|
|
258
|
+
}
|
|
198
259
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
)
|
|
203
|
-
|
|
204
|
-
}
|
|
260
|
+
const mediaControl = this.core.getPlugin('media_control')
|
|
261
|
+
assert(mediaControl, 'media_control plugin is required')
|
|
262
|
+
this.$el.html(
|
|
263
|
+
AudioSelector.template({ tracks: this.tracks, title: this.getTitle() }),
|
|
264
|
+
)
|
|
205
265
|
|
|
206
|
-
|
|
266
|
+
const ats = mediaControl.getElement('audioTracksSelector')
|
|
267
|
+
if (!(ats && ats.length > 0)) {
|
|
268
|
+
return this
|
|
207
269
|
}
|
|
270
|
+
ats.append(this.el)
|
|
208
271
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
) {
|
|
213
|
-
|
|
272
|
+
this.highlightCurrentTrack()
|
|
273
|
+
|
|
274
|
+
const aa = ats.find('audioArrow')
|
|
275
|
+
if (aa.length > 0) {
|
|
276
|
+
aa.append(audioArrow)
|
|
214
277
|
}
|
|
215
278
|
|
|
216
|
-
return this
|
|
279
|
+
return this
|
|
217
280
|
}
|
|
218
281
|
|
|
219
282
|
private fillTracks(tracks: AudioTrackItem[], selected = AUTO) {
|
|
220
283
|
if (this.selectedTrackId === undefined) {
|
|
221
|
-
this.selectedTrackId = selected
|
|
284
|
+
this.selectedTrackId = selected
|
|
222
285
|
}
|
|
223
286
|
// this.tracks = levels.audioTracks;
|
|
224
287
|
// for (let i = 0; i < this.tracks.length; i++) {
|
|
@@ -226,98 +289,108 @@ export class AudioSelector extends UICorePlugin {
|
|
|
226
289
|
// this.tracks[i].label = this.tracks[i].name;
|
|
227
290
|
// }
|
|
228
291
|
// }
|
|
229
|
-
this.tracks = tracks
|
|
292
|
+
this.tracks = tracks
|
|
230
293
|
|
|
231
294
|
// Player.player.trigger('tracks', this.tracks);
|
|
232
295
|
// this.core.trigger('tracks', this.tracks);
|
|
233
|
-
this.render()
|
|
296
|
+
this.render()
|
|
234
297
|
}
|
|
235
298
|
|
|
236
299
|
private findTrackBy(id: number) {
|
|
237
|
-
return this.tracks.find((track) => track.id === id)
|
|
300
|
+
return this.tracks.find((track) => track.id === id)
|
|
238
301
|
}
|
|
239
302
|
|
|
240
303
|
private onTrackSelect(event: MouseEvent) {
|
|
241
304
|
// this.selectedTrackId = parseInt(event.target.dataset.levelSelectorSelect, 10)
|
|
242
|
-
const id = (event.target as HTMLElement)?.dataset?.trackSelectorSelect
|
|
305
|
+
const id = (event.target as HTMLElement)?.dataset?.trackSelectorSelect
|
|
243
306
|
if (id) {
|
|
244
|
-
this.setIndexTrack(Number(id))
|
|
307
|
+
this.setIndexTrack(Number(id))
|
|
245
308
|
}
|
|
246
|
-
this.toggleContextMenu()
|
|
247
|
-
event.stopPropagation()
|
|
248
|
-
return false
|
|
309
|
+
this.toggleContextMenu()
|
|
310
|
+
event.stopPropagation()
|
|
311
|
+
return false
|
|
249
312
|
}
|
|
250
313
|
|
|
251
314
|
private setIndexTrack(index: number) {
|
|
252
|
-
this.selectedTrackId = index
|
|
315
|
+
this.selectedTrackId = index
|
|
253
316
|
if (this.core.activePlayback._hls) {
|
|
254
|
-
if (
|
|
255
|
-
|
|
317
|
+
if (
|
|
318
|
+
this.core.activePlayback._hls.audioTrack.id === this.selectedTrackId
|
|
319
|
+
) {
|
|
320
|
+
return
|
|
256
321
|
}
|
|
257
|
-
this.core.activePlayback._hls.audioTrack = this.selectedTrackId
|
|
322
|
+
this.core.activePlayback._hls.audioTrack = this.selectedTrackId
|
|
258
323
|
} else {
|
|
259
|
-
const { audioTracks } = this.core.activePlayback.$el.get(0)
|
|
324
|
+
const { audioTracks } = this.core.activePlayback.$el.get(0)
|
|
260
325
|
|
|
261
326
|
for (const track of audioTracks) {
|
|
262
|
-
track.enabled = track.id === this.selectedTrackId
|
|
327
|
+
track.enabled = track.id === this.selectedTrackId
|
|
263
328
|
}
|
|
264
329
|
}
|
|
265
|
-
this.updateText(this.selectedTrackId)
|
|
330
|
+
this.updateText(this.selectedTrackId)
|
|
266
331
|
}
|
|
267
332
|
|
|
268
|
-
onShowLevelSelectMenu() {
|
|
269
|
-
this.toggleContextMenu()
|
|
333
|
+
private onShowLevelSelectMenu() {
|
|
334
|
+
this.toggleContextMenu()
|
|
270
335
|
}
|
|
271
336
|
|
|
272
|
-
hideSelectTrackMenu() {
|
|
273
|
-
(this.$('.audio_selector ul') as ZeptoResult).hide()
|
|
337
|
+
private hideSelectTrackMenu() {
|
|
338
|
+
;(this.$('.audio_selector ul') as ZeptoResult).hide()
|
|
274
339
|
}
|
|
275
340
|
|
|
276
|
-
toggleContextMenu() {
|
|
277
|
-
(this.$('.audio_selector ul') as ZeptoResult).toggle()
|
|
341
|
+
private toggleContextMenu() {
|
|
342
|
+
;(this.$('.audio_selector ul') as ZeptoResult).toggle()
|
|
278
343
|
}
|
|
279
344
|
|
|
280
345
|
private buttonElement(): ZeptoResult {
|
|
281
|
-
return this.$('.audio_selector button')
|
|
346
|
+
return this.$('.audio_selector button')
|
|
282
347
|
}
|
|
283
348
|
|
|
284
349
|
private buttonElementText(): ZeptoResult {
|
|
285
|
-
return this.$('.audio_selector button .audio-text')
|
|
350
|
+
return this.$('.audio_selector button .audio-text')
|
|
286
351
|
}
|
|
287
352
|
|
|
288
353
|
private trackElement(id?: number): ZeptoResult {
|
|
289
|
-
return (
|
|
354
|
+
return (
|
|
355
|
+
this.$(
|
|
356
|
+
'.audio_selector ul a' +
|
|
357
|
+
(id !== undefined ? '[data-track-selector-select="' + id + '"]' : ''),
|
|
358
|
+
) as ZeptoResult
|
|
359
|
+
).parent()
|
|
290
360
|
}
|
|
291
361
|
|
|
292
362
|
private getTitle(): string {
|
|
293
363
|
if (!this.tracks) {
|
|
294
|
-
return ''
|
|
364
|
+
return ''
|
|
295
365
|
}
|
|
296
366
|
|
|
297
|
-
const selectedTrackId = this.selectedTrackId || 0
|
|
367
|
+
const selectedTrackId = this.selectedTrackId || 0
|
|
298
368
|
|
|
299
|
-
const selectedTrack = this.tracks[selectedTrackId]
|
|
369
|
+
const selectedTrack = this.tracks[selectedTrackId]
|
|
300
370
|
|
|
301
|
-
return selectedTrack?.label || ''
|
|
371
|
+
return selectedTrack?.label || ''
|
|
302
372
|
}
|
|
303
373
|
|
|
304
374
|
startTrackSwitch() {
|
|
305
|
-
this.buttonElement().addClass('changing')
|
|
375
|
+
this.buttonElement().addClass('changing')
|
|
306
376
|
}
|
|
307
377
|
|
|
308
378
|
private updateText(trackId: number | undefined) {
|
|
309
379
|
if (trackId === undefined) {
|
|
310
|
-
return
|
|
380
|
+
return
|
|
311
381
|
}
|
|
312
382
|
|
|
313
|
-
const track = this.findTrackBy(trackId)
|
|
383
|
+
const track = this.findTrackBy(trackId)
|
|
314
384
|
|
|
315
385
|
if (track) {
|
|
316
|
-
this.buttonElementText().text(track.label)
|
|
386
|
+
this.buttonElementText().text(track.label)
|
|
317
387
|
}
|
|
318
388
|
}
|
|
319
389
|
|
|
320
|
-
updateCurrentTrack(
|
|
390
|
+
updateCurrentTrack(
|
|
391
|
+
e: HlsEvents.AUDIO_TRACK_SWITCHED,
|
|
392
|
+
info: AudioTrackSwitchedData | AudioTrackLoadedData,
|
|
393
|
+
) {
|
|
321
394
|
// if (!info) {
|
|
322
395
|
// const { audioTracks } = this.core.activePlayback.$el.get(0);
|
|
323
396
|
|
|
@@ -337,37 +410,37 @@ export class AudioSelector extends UICorePlugin {
|
|
|
337
410
|
// this.selectedTrackId = track?.id;
|
|
338
411
|
// this.highlightCurrentTrack();
|
|
339
412
|
// this.buttonElement().removeClass('changing');
|
|
340
|
-
this.setCurrentTrack(info.id)
|
|
413
|
+
this.setCurrentTrack(info.id)
|
|
341
414
|
}
|
|
342
415
|
|
|
343
416
|
private updateCurrentTrackW3C() {
|
|
344
|
-
const { audioTracks } = this.core.activePlayback.$el.get(0)
|
|
345
|
-
const index = audioTracks.findIndex((track: AudioTrackW3C) => track.enabled)
|
|
417
|
+
const { audioTracks } = this.core.activePlayback.$el.get(0)
|
|
418
|
+
const index = audioTracks.findIndex((track: AudioTrackW3C) => track.enabled)
|
|
346
419
|
if (index >= 0) {
|
|
347
420
|
this.setCurrentTrack(index)
|
|
348
421
|
}
|
|
349
422
|
}
|
|
350
423
|
|
|
351
424
|
private setCurrentTrack(index: number) {
|
|
352
|
-
const track = this.findTrackBy(index)
|
|
425
|
+
const track = this.findTrackBy(index)
|
|
353
426
|
|
|
354
|
-
this.currentTrack = track ?? null
|
|
355
|
-
this.selectedTrackId = index
|
|
356
|
-
this.highlightCurrentTrack()
|
|
357
|
-
this.buttonElement().removeClass('changing')
|
|
427
|
+
this.currentTrack = track ?? null
|
|
428
|
+
this.selectedTrackId = index
|
|
429
|
+
this.highlightCurrentTrack()
|
|
430
|
+
this.buttonElement().removeClass('changing')
|
|
358
431
|
}
|
|
359
432
|
|
|
360
433
|
highlightCurrentTrack() {
|
|
361
|
-
this.trackElement().removeClass('current')
|
|
362
|
-
this.trackElement().find('a').removeClass('gcore-skin-active')
|
|
434
|
+
this.trackElement().removeClass('current')
|
|
435
|
+
this.trackElement().find('a').removeClass('gcore-skin-active')
|
|
363
436
|
|
|
364
437
|
if (this.currentTrack) {
|
|
365
|
-
const currentTrackElement = this.trackElement(this.currentTrack.id)
|
|
438
|
+
const currentTrackElement = this.trackElement(this.currentTrack.id)
|
|
366
439
|
|
|
367
|
-
currentTrackElement.addClass('current')
|
|
368
|
-
currentTrackElement.find('a').addClass('gcore-skin-active')
|
|
440
|
+
currentTrackElement.addClass('current')
|
|
441
|
+
currentTrackElement.find('a').addClass('gcore-skin-active')
|
|
369
442
|
}
|
|
370
443
|
|
|
371
|
-
this.updateText(this.selectedTrackId)
|
|
444
|
+
this.updateText(this.selectedTrackId)
|
|
372
445
|
}
|
|
373
446
|
}
|