@gcorevideo/player 2.19.15 → 2.20.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/level-selector/list.ejs +1 -1
- package/dist/core.js +2 -2
- package/dist/index.css +966 -966
- package/dist/index.js +884 -627
- package/dist/player.d.ts +536 -122
- package/dist/plugins/index.css +1160 -1160
- package/dist/plugins/index.js +2006 -1725
- package/docs/api/player.audioselector.md +1 -251
- package/docs/api/player.bigmutebutton.md +1 -156
- package/docs/api/player.clapprnerdstats.md +12 -259
- 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.playbackrate.setselectedrate.md → player.clipspluginsettings.md} +18 -10
- 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.contextmenupluginsettings.label.md +11 -0
- package/docs/api/player.contextmenupluginsettings.md +93 -0
- package/docs/api/player.contextmenupluginsettings.preventshowcontextmenu.md +11 -0
- package/docs/api/player.contextmenupluginsettings.url.md +11 -0
- package/docs/api/player.dvrcontrols.md +5 -1
- package/docs/api/player.errorscreen.attributes.md +3 -0
- package/docs/api/player.errorscreen.bindevents.md +3 -0
- package/docs/api/player.errorscreen.container.md +3 -0
- package/docs/api/player.errorscreen.hide.md +3 -0
- package/docs/api/player.errorscreen.md +25 -0
- package/docs/api/player.errorscreen.name.md +3 -0
- package/docs/api/player.errorscreen.render.md +3 -0
- package/docs/api/player.errorscreen.show.md +3 -0
- package/docs/api/player.errorscreen.supportedversion.md +3 -0
- package/docs/api/player.errorscreen.template.md +3 -0
- package/docs/api/player.errorscreen.unbindevents.md +3 -0
- 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.clapprstats.name.md → player.initeventdata.event.md} +3 -3
- package/docs/api/player.initeventdata.md +60 -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 +149 -18
- package/docs/api/player.mediacontrolelement.md +1 -1
- package/docs/api/player.multicamera.md +2 -0
- package/docs/api/player.pictureinpicture.md +9 -197
- package/docs/api/player.playbackrate.md +10 -314
- 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.clapprstats.destroy.md → player.stalleventdata.count.md} +5 -7
- package/docs/api/{player.bigmutebutton.template.md → player.stalleventdata.event.md} +3 -3
- package/docs/api/player.stalleventdata.md +117 -0
- package/docs/api/{player.audioselector.onshowlevelselectmenu.md → player.stalleventdata.time.md} +5 -7
- package/docs/api/{player.clapprstats.starttimers.md → player.stalleventdata.total_ms.md} +5 -7
- package/docs/api/{player.audioselector.template.md → player.starteventdata.event.md} +3 -3
- package/docs/api/player.starteventdata.md +60 -0
- package/docs/api/{player.clapprstats._defaultreport.md → player.telemetry._constructor_.md} +7 -9
- package/docs/api/player.telemetry.md +146 -0
- package/docs/api/{player.clapprnerdstats.name.md → player.telemetry.name.md} +4 -2
- package/docs/api/{player.clapprstats.supportedversion.md → player.telemetry.supportedversion.md} +4 -2
- package/docs/api/player.telemetryevent.md +100 -0
- package/docs/api/player.telemetryeventdata.md +18 -0
- package/docs/api/player.telemetrypluginsettings.md +60 -0
- package/docs/api/{player.audioselector.bindevents.md → player.telemetrypluginsettings.send.md} +5 -7
- package/docs/api/{player.audioselector.reload.md → player.telemetryrecord.md} +8 -6
- package/docs/api/player.thumbnails.md +21 -139
- package/docs/api/player.thumbnailspluginsettings.md +23 -0
- package/docs/api/player.volumefade.md +1 -93
- package/docs/api/{player.audioselector.name.md → player.watcheventdata.event.md} +3 -3
- package/docs/api/player.watcheventdata.md +60 -0
- package/lib/index.plugins.d.ts +2 -3
- package/lib/index.plugins.d.ts.map +1 -1
- package/lib/index.plugins.js +2 -3
- package/lib/playback/hls-playback/HlsPlayback.js +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-nerd-stats/ClapprNerdStats.d.ts +38 -5
- package/lib/plugins/clappr-nerd-stats/ClapprNerdStats.d.ts.map +1 -1
- package/lib/plugins/clappr-nerd-stats/ClapprNerdStats.js +63 -17
- 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 +40 -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 +5 -4
- package/lib/plugins/dvr-controls/DvrControls.d.ts.map +1 -1
- package/lib/plugins/dvr-controls/DvrControls.js +15 -29
- package/lib/plugins/error-screen/ErrorScreen.d.ts +4 -0
- package/lib/plugins/error-screen/ErrorScreen.d.ts.map +1 -1
- package/lib/plugins/error-screen/ErrorScreen.js +4 -0
- 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 +2 -4
- package/lib/plugins/index.d.ts.map +1 -1
- package/lib/plugins/index.js +2 -4
- 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 +3 -0
- package/lib/plugins/multi-camera/MultiCamera.d.ts.map +1 -1
- package/lib/plugins/multi-camera/MultiCamera.js +3 -0
- package/lib/plugins/picture-in-picture/PictureInPicture.d.ts +32 -4
- package/lib/plugins/picture-in-picture/PictureInPicture.d.ts.map +1 -1
- package/lib/plugins/picture-in-picture/PictureInPicture.js +30 -2
- package/lib/plugins/playback-rate/PlaybackRate.d.ts +47 -14
- package/lib/plugins/playback-rate/PlaybackRate.d.ts.map +1 -1
- package/lib/plugins/playback-rate/PlaybackRate.js +38 -9
- 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 +5 -1
- 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 +3 -0
- 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/statistics/Statistics.d.ts +38 -3
- package/lib/plugins/statistics/Statistics.d.ts.map +1 -1
- package/lib/plugins/statistics/Statistics.js +51 -9
- package/lib/plugins/telemetry/Telemetry.d.ts +153 -0
- package/lib/plugins/telemetry/Telemetry.d.ts.map +1 -0
- package/lib/plugins/telemetry/Telemetry.js +181 -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 +8 -1
- package/lib/plugins/volume-fade/VolumeFade.d.ts.map +1 -1
- package/lib/plugins/volume-fade/VolumeFade.js +9 -1
- package/package.json +1 -1
- package/src/index.plugins.ts +2 -3
- package/src/playback/hls-playback/HlsPlayback.ts +1 -1
- 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-nerd-stats/ClapprNerdStats.ts +240 -173
- 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 +105 -76
- package/src/plugins/dvr-controls/DvrControls.ts +15 -31
- package/src/plugins/error-screen/ErrorScreen.ts +4 -0
- package/src/plugins/favicon/Favicon.ts +4 -0
- package/src/plugins/google-analytics/GoogleAnalytics.ts +5 -1
- package/src/plugins/index.ts +2 -4
- package/src/plugins/level-selector/__tests__/LevelSelector.test.ts +47 -26
- package/src/plugins/level-selector/__tests__/__snapshots__/LevelSelector.test.ts.snap +18 -18
- package/src/plugins/logo/Logo.ts +4 -0
- package/src/plugins/media-control/MediaControl.ts +4 -1
- package/src/plugins/multi-camera/MultiCamera.ts +3 -0
- package/src/plugins/picture-in-picture/PictureInPicture.ts +35 -7
- package/src/plugins/playback-rate/PlaybackRate.ts +53 -24
- package/src/plugins/seek-time/SeekTime.ts +5 -1
- package/src/plugins/share/Share.ts +3 -0
- package/src/plugins/skip-time/SkipTime.ts +3 -0
- package/src/plugins/telemetry/Telemetry.ts +317 -0
- package/src/plugins/thumbnails/Thumbnails.ts +268 -194
- package/src/plugins/volume-fade/VolumeFade.ts +10 -2
- package/temp/player.api.json +2457 -5257
- package/tsconfig.tsbuildinfo +1 -1
- package/docs/api/player.audioselector.attributes.md +0 -17
- package/docs/api/player.audioselector.events.md +0 -17
- package/docs/api/player.audioselector.hideselecttrackmenu.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.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.clapprnerdstats.attributes.md +0 -17
- package/docs/api/player.clapprnerdstats.bindevents.md +0 -18
- package/docs/api/player.clapprnerdstats.events.md +0 -18
- package/docs/api/player.clapprnerdstats.playerheight.md +0 -14
- package/docs/api/player.clapprnerdstats.playerwidth.md +0 -14
- package/docs/api/player.clapprnerdstats.render.md +0 -18
- package/docs/api/player.clapprnerdstats.statsboxelem.md +0 -14
- package/docs/api/player.clapprnerdstats.statsboxwidththreshold.md +0 -14
- package/docs/api/player.clapprnerdstats.supportedversion.md +0 -16
- package/docs/api/player.clapprnerdstats.template.md +0 -14
- package/docs/api/player.clapprstats._buildreport.md +0 -18
- 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.onfirstplaying.md +0 -18
- package/docs/api/player.clapprstats.playafterpause.md +0 -18
- package/docs/api/player.clapprstats.stopreporting.md +0 -18
- 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.pictureinpicture.bindevents.md +0 -15
- package/docs/api/player.pictureinpicture.events.md +0 -13
- package/docs/api/player.pictureinpicture.exitpictureinpicture.md +0 -15
- package/docs/api/player.pictureinpicture.name.md +0 -11
- package/docs/api/player.pictureinpicture.render.md +0 -15
- package/docs/api/player.pictureinpicture.requestpictureinpicture.md +0 -15
- package/docs/api/player.pictureinpicture.supportedversion.md +0 -13
- package/docs/api/player.pictureinpicture.togglepictureinpicture.md +0 -15
- package/docs/api/player.pictureinpicture.version.md +0 -11
- package/docs/api/player.pictureinpicture.videoelement.md +0 -11
- package/docs/api/player.playbackrate.attributes.md +0 -14
- package/docs/api/player.playbackrate.bindevents.md +0 -15
- package/docs/api/player.playbackrate.events.md +0 -15
- package/docs/api/player.playbackrate.gettitle.md +0 -15
- package/docs/api/player.playbackrate.goback.md +0 -15
- package/docs/api/player.playbackrate.highlightcurrentrate.md +0 -15
- package/docs/api/player.playbackrate.name.md +0 -11
- package/docs/api/player.playbackrate.onfinishad.md +0 -15
- package/docs/api/player.playbackrate.onplay.md +0 -15
- package/docs/api/player.playbackrate.onrateselect.md +0 -49
- package/docs/api/player.playbackrate.onshowmenu.md +0 -15
- package/docs/api/player.playbackrate.onstartad.md +0 -15
- package/docs/api/player.playbackrate.onstop.md +0 -15
- package/docs/api/player.playbackrate.reload.md +0 -15
- package/docs/api/player.playbackrate.render.md +0 -15
- package/docs/api/player.playbackrate.supportedversion.md +0 -13
- package/docs/api/player.playbackrate.template.md +0 -11
- package/docs/api/player.playbackrate.unbindevents.md +0 -15
- package/docs/api/player.playbackrate.updateplaybackrate.md +0 -49
- package/docs/api/player.pluginsettings.md +0 -13
- package/docs/api/player.statistics._constructor_.md +0 -47
- package/docs/api/player.statistics.bindevents.md +0 -15
- package/docs/api/player.statistics.md +0 -141
- package/docs/api/player.statistics.name.md +0 -11
- package/docs/api/player.statistics.supportedversion.md +0 -13
- 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/docs/api/player.volumefade.bindevents.md +0 -18
- package/docs/api/player.volumefade.name.md +0 -14
- package/docs/api/player.volumefade.unbindevents.md +0 -18
- 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
- package/src/plugins/statistics/Statistics.ts +0 -207
- /package/src/plugins/{statistics → telemetry}/Statistics copy.xts +0 -0
|
@@ -2,41 +2,63 @@ import { UICorePlugin } from '@clappr/core';
|
|
|
2
2
|
import { AudioTrackLoadedData, AudioTrackSwitchedData, Events as HlsEvents } from 'hls.js';
|
|
3
3
|
import '../../../assets/audio-selector/style.scss';
|
|
4
4
|
/**
|
|
5
|
+
* Adds an audio track selector to the media control UI.
|
|
5
6
|
* @beta
|
|
6
7
|
*/
|
|
7
8
|
export declare class AudioSelector extends UICorePlugin {
|
|
8
9
|
private selectedTrackId;
|
|
9
10
|
private currentTrack;
|
|
10
11
|
private tracks;
|
|
12
|
+
/**
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
11
15
|
get name(): string;
|
|
16
|
+
/**
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
12
19
|
get supportedVersion(): {
|
|
13
20
|
min: string;
|
|
14
21
|
};
|
|
22
|
+
/**
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
15
25
|
static get version(): string;
|
|
16
|
-
|
|
26
|
+
private static readonly template;
|
|
27
|
+
/**
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
17
30
|
get attributes(): {
|
|
18
31
|
class: string;
|
|
19
32
|
'data-track-selector': string;
|
|
20
33
|
};
|
|
34
|
+
/**
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
21
37
|
get events(): {
|
|
22
38
|
'click [data-track-selector-select]': string;
|
|
23
39
|
'click [data-track-selector-button]': string;
|
|
24
40
|
};
|
|
41
|
+
/**
|
|
42
|
+
* @internal
|
|
43
|
+
*/
|
|
25
44
|
bindEvents(): void;
|
|
26
|
-
unBindEvents
|
|
45
|
+
private unBindEvents;
|
|
27
46
|
private bindPlaybackEvents;
|
|
28
47
|
private setupAudioTrackListeners;
|
|
29
48
|
private onStop;
|
|
30
|
-
reload
|
|
49
|
+
private reload;
|
|
31
50
|
private shouldRender;
|
|
51
|
+
/**
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
32
54
|
render(): this;
|
|
33
55
|
private fillTracks;
|
|
34
56
|
private findTrackBy;
|
|
35
57
|
private onTrackSelect;
|
|
36
58
|
private setIndexTrack;
|
|
37
|
-
onShowLevelSelectMenu
|
|
38
|
-
hideSelectTrackMenu
|
|
39
|
-
toggleContextMenu
|
|
59
|
+
private onShowLevelSelectMenu;
|
|
60
|
+
private hideSelectTrackMenu;
|
|
61
|
+
private toggleContextMenu;
|
|
40
62
|
private buttonElement;
|
|
41
63
|
private buttonElementText;
|
|
42
64
|
private trackElement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioSelector.d.ts","sourceRoot":"","sources":["../../../src/plugins/audio-selector/AudioSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAY,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"AudioSelector.d.ts","sourceRoot":"","sources":["../../../src/plugins/audio-selector/AudioSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAY,MAAM,cAAc,CAAA;AAC7D,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EAEtB,MAAM,IAAI,SAAS,EACpB,MAAM,QAAQ,CAAA;AAKf,OAAO,2CAA2C,CAAA;AAiClD;;;GAGG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAG7C,OAAO,CAAC,eAAe,CAAoB;IAE3C,OAAO,CAAC,YAAY,CAA8B;IAElD,OAAO,CAAC,MAAM,CAAuB;IAErC;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;IACH,MAAM,KAAK,OAAO,WAEjB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAEvD;;OAEG;IACH,IAAa,UAAU;;;MAKtB;IAED;;OAEG;IACH,IAAa,MAAM;;;MAKlB;IAED;;OAEG;IACM,UAAU;IAoBnB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,wBAAwB;IA4EhC,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,YAAY;IAoBpB;;OAEG;IACM,MAAM;IA2Bf,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,QAAQ;IAYhB,gBAAgB;IAIhB,OAAO,CAAC,UAAU;IAYlB,kBAAkB,CAChB,CAAC,EAAE,SAAS,CAAC,oBAAoB,EACjC,IAAI,EAAE,sBAAsB,GAAG,oBAAoB;IAwBrD,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,eAAe;IASvB,qBAAqB;CAatB"}
|
|
@@ -4,42 +4,62 @@ import { CLAPPR_VERSION } from '../../build.js';
|
|
|
4
4
|
import pluginHtml from '../../../assets/audio-selector/track-selector.ejs';
|
|
5
5
|
import '../../../assets/audio-selector/style.scss';
|
|
6
6
|
import audioArrow from '../../../assets/icons/old/quality-arrow.svg';
|
|
7
|
+
import assert from 'assert';
|
|
7
8
|
const VERSION = '0.0.1';
|
|
8
9
|
// const T = 'plugins.audio_selector';
|
|
9
10
|
const AUTO = 0;
|
|
10
11
|
/**
|
|
12
|
+
* Adds an audio track selector to the media control UI.
|
|
11
13
|
* @beta
|
|
12
14
|
*/
|
|
13
15
|
export class AudioSelector extends UICorePlugin {
|
|
16
|
+
// TODO
|
|
14
17
|
selectedTrackId;
|
|
15
18
|
currentTrack = null;
|
|
16
19
|
tracks = [];
|
|
20
|
+
/**
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
17
23
|
get name() {
|
|
18
|
-
return '
|
|
24
|
+
return 'audio_selector';
|
|
19
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* @internal
|
|
28
|
+
*/
|
|
20
29
|
get supportedVersion() {
|
|
21
30
|
return { min: CLAPPR_VERSION };
|
|
22
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
23
35
|
static get version() {
|
|
24
36
|
return VERSION;
|
|
25
37
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
38
|
+
static template = template(pluginHtml);
|
|
39
|
+
/**
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
29
42
|
get attributes() {
|
|
30
43
|
return {
|
|
31
|
-
|
|
32
|
-
'data-track-selector': ''
|
|
44
|
+
class: this.name,
|
|
45
|
+
'data-track-selector': '',
|
|
33
46
|
};
|
|
34
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
35
51
|
get events() {
|
|
36
52
|
return {
|
|
37
53
|
'click [data-track-selector-select]': 'onTrackSelect',
|
|
38
|
-
'click [data-track-selector-button]': 'onShowLevelSelectMenu'
|
|
54
|
+
'click [data-track-selector-button]': 'onShowLevelSelectMenu',
|
|
39
55
|
};
|
|
40
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* @internal
|
|
59
|
+
*/
|
|
41
60
|
bindEvents() {
|
|
42
61
|
this.listenTo(this.core, Events.CORE_READY, this.bindPlaybackEvents);
|
|
62
|
+
// TODO CORE_ACTIVE_CONTAINER_CHANGED
|
|
43
63
|
this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.reload);
|
|
44
64
|
this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_RENDERED, this.render);
|
|
45
65
|
this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_HIDE, this.hideSelectTrackMenu);
|
|
@@ -80,12 +100,12 @@ export class AudioSelector extends UICorePlugin {
|
|
|
80
100
|
if (defaultTrack) {
|
|
81
101
|
this.currentTrack = {
|
|
82
102
|
id: defaultTrack.id,
|
|
83
|
-
label: defaultTrack.name
|
|
103
|
+
label: defaultTrack.name,
|
|
84
104
|
};
|
|
85
105
|
}
|
|
86
|
-
this.fillTracks(data.audioTracks.map(p => ({
|
|
106
|
+
this.fillTracks(data.audioTracks.map((p) => ({
|
|
87
107
|
id: p.id,
|
|
88
|
-
label: p.name
|
|
108
|
+
label: p.name,
|
|
89
109
|
})), defaultTrack?.id);
|
|
90
110
|
});
|
|
91
111
|
currentPlayback._hls.on(HlsEvents.AUDIO_TRACK_SWITCHING, this.startTrackSwitch.bind(this));
|
|
@@ -131,23 +151,30 @@ export class AudioSelector extends UICorePlugin {
|
|
|
131
151
|
if (!currentPlayback) {
|
|
132
152
|
return false;
|
|
133
153
|
}
|
|
134
|
-
const { audioTracks } =
|
|
154
|
+
const { audioTracks } = currentPlayback.activePlayback._hls || currentPlayback.$el.get(0);
|
|
135
155
|
this.tracks = audioTracks;
|
|
136
156
|
// Only care if we have at least 2 to choose from
|
|
137
157
|
return this.tracks && this.tracks.length > 1;
|
|
138
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* @internal
|
|
161
|
+
*/
|
|
139
162
|
render() {
|
|
140
|
-
if (this.shouldRender()) {
|
|
141
|
-
|
|
142
|
-
if (Object.prototype.hasOwnProperty.call(this.core.mediaControl, '$audioTracksSelector') &&
|
|
143
|
-
this.core.mediaControl.$audioTracksSelector.length > 0) {
|
|
144
|
-
this.core.mediaControl.$audioTracksSelector.append(this.el);
|
|
145
|
-
}
|
|
146
|
-
this.highlightCurrentTrack();
|
|
163
|
+
if (!this.shouldRender()) {
|
|
164
|
+
return this;
|
|
147
165
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
166
|
+
const mediaControl = this.core.getPlugin('media_control');
|
|
167
|
+
assert(mediaControl, 'media_control plugin is required');
|
|
168
|
+
this.$el.html(AudioSelector.template({ tracks: this.tracks, title: this.getTitle() }));
|
|
169
|
+
const ats = mediaControl.getElement('audioTracksSelector');
|
|
170
|
+
if (!(ats && ats.length > 0)) {
|
|
171
|
+
return this;
|
|
172
|
+
}
|
|
173
|
+
ats.append(this.el);
|
|
174
|
+
this.highlightCurrentTrack();
|
|
175
|
+
const aa = ats.find('audioArrow');
|
|
176
|
+
if (aa.length > 0) {
|
|
177
|
+
aa.append(audioArrow);
|
|
151
178
|
}
|
|
152
179
|
return this;
|
|
153
180
|
}
|
|
@@ -199,9 +226,11 @@ export class AudioSelector extends UICorePlugin {
|
|
|
199
226
|
this.toggleContextMenu();
|
|
200
227
|
}
|
|
201
228
|
hideSelectTrackMenu() {
|
|
229
|
+
;
|
|
202
230
|
this.$('.audio_selector ul').hide();
|
|
203
231
|
}
|
|
204
232
|
toggleContextMenu() {
|
|
233
|
+
;
|
|
205
234
|
this.$('.audio_selector ul').toggle();
|
|
206
235
|
}
|
|
207
236
|
buttonElement() {
|
|
@@ -211,7 +240,8 @@ export class AudioSelector extends UICorePlugin {
|
|
|
211
240
|
return this.$('.audio_selector button .audio-text');
|
|
212
241
|
}
|
|
213
242
|
trackElement(id) {
|
|
214
|
-
return this.$('.audio_selector ul a' +
|
|
243
|
+
return this.$('.audio_selector ul a' +
|
|
244
|
+
(id !== undefined ? '[data-track-selector-select="' + id + '"]' : '')).parent();
|
|
215
245
|
}
|
|
216
246
|
getTitle() {
|
|
217
247
|
if (!this.tracks) {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { UICorePlugin } from '@clappr/core';
|
|
2
2
|
import '../../../assets/big-mute-button/big-mute-button.scss';
|
|
3
3
|
/**
|
|
4
|
+
* Displays a big mute button over the video when it's muted.
|
|
5
|
+
* Once pressed, it unmutes the video.
|
|
4
6
|
* @beta
|
|
5
7
|
*/
|
|
6
8
|
export declare class BigMuteButton extends UICorePlugin {
|
|
@@ -8,17 +10,28 @@ export declare class BigMuteButton extends UICorePlugin {
|
|
|
8
10
|
private _adIsPlaying;
|
|
9
11
|
private $bigMuteBtnContainer;
|
|
10
12
|
private $bigMuteButton;
|
|
13
|
+
/**
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
11
16
|
get name(): string;
|
|
17
|
+
/**
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
12
20
|
get supportedVersion(): {
|
|
13
21
|
min: string;
|
|
14
22
|
};
|
|
15
|
-
|
|
23
|
+
private static readonly template;
|
|
24
|
+
/**
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
16
27
|
get events(): {
|
|
17
28
|
'click .big-mute-icon': string;
|
|
18
29
|
'click .big-mute-icon-wrapper': string;
|
|
19
30
|
};
|
|
31
|
+
/**
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
20
34
|
bindEvents(): void;
|
|
21
|
-
private unBindEvents;
|
|
22
35
|
private onCoreReady;
|
|
23
36
|
private onContainerVolume;
|
|
24
37
|
private onContainerStart;
|
|
@@ -27,6 +40,9 @@ export declare class BigMuteButton extends UICorePlugin {
|
|
|
27
40
|
private onStartAd;
|
|
28
41
|
private onFinishAd;
|
|
29
42
|
private shouldRender;
|
|
43
|
+
/**
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
30
46
|
render(): this;
|
|
31
47
|
private hideBigMuteBtn;
|
|
32
48
|
private showBigMuteBtn;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BigMuteButton.d.ts","sourceRoot":"","sources":["../../../src/plugins/big-mute-button/BigMuteButton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAS,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"BigMuteButton.d.ts","sourceRoot":"","sources":["../../../src/plugins/big-mute-button/BigMuteButton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAS,MAAM,cAAc,CAAA;AAQpE,OAAO,sDAAsD,CAAA;AAM7D;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,qBAAqB,CAAQ;IAErC,OAAO,CAAC,YAAY,CAAQ;IAE5B,OAAO,CAAC,oBAAoB,CAA2B;IAEvD,OAAO,CAAC,cAAc,CAA2B;IAEjD;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAEvD;;OAEG;IACH,IAAa,MAAM;;;MAKlB;IAED;;OAEG;IACM,UAAU;IAenB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,YAAY;IAmBpB;;OAEG;IACM,MAAM;IAuBf,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,qBAAqB;CAS9B"}
|
|
@@ -4,8 +4,11 @@ import { CLAPPR_VERSION } from '../../build.js';
|
|
|
4
4
|
import volumeMuteIcon from '../../../assets/icons/new/volume-off.svg';
|
|
5
5
|
import pluginHtml from '../../../assets/big-mute-button/big-mute-button.ejs';
|
|
6
6
|
import '../../../assets/big-mute-button/big-mute-button.scss';
|
|
7
|
-
const T =
|
|
7
|
+
const T = 'plugins.big_mute_button';
|
|
8
|
+
// TODO rewrite as a container plugin
|
|
8
9
|
/**
|
|
10
|
+
* Displays a big mute button over the video when it's muted.
|
|
11
|
+
* Once pressed, it unmutes the video.
|
|
9
12
|
* @beta
|
|
10
13
|
*/
|
|
11
14
|
export class BigMuteButton extends UICorePlugin {
|
|
@@ -13,21 +16,31 @@ export class BigMuteButton extends UICorePlugin {
|
|
|
13
16
|
_adIsPlaying = false;
|
|
14
17
|
$bigMuteBtnContainer = null;
|
|
15
18
|
$bigMuteButton = null;
|
|
19
|
+
/**
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
16
22
|
get name() {
|
|
17
23
|
return 'big_mute_button';
|
|
18
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
19
28
|
get supportedVersion() {
|
|
20
29
|
return { min: CLAPPR_VERSION };
|
|
21
30
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
31
|
+
static template = template(pluginHtml);
|
|
32
|
+
/**
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
25
35
|
get events() {
|
|
26
36
|
return {
|
|
27
37
|
'click .big-mute-icon': 'handleBigMuteBtnClick',
|
|
28
38
|
'click .big-mute-icon-wrapper': 'destroyBigMuteBtn',
|
|
29
39
|
};
|
|
30
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* @internal
|
|
43
|
+
*/
|
|
31
44
|
bindEvents() {
|
|
32
45
|
super.bindEvents();
|
|
33
46
|
this.listenTo(this.core, Events.CORE_READY, this.onCoreReady);
|
|
@@ -38,17 +51,6 @@ export class BigMuteButton extends UICorePlugin {
|
|
|
38
51
|
});
|
|
39
52
|
this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_RENDERED, this.mediaControlRendered);
|
|
40
53
|
}
|
|
41
|
-
unBindEvents() {
|
|
42
|
-
// @ts-ignore
|
|
43
|
-
this.stopListening(this.core, Events.CORE_READY);
|
|
44
|
-
this.stopListening(this.core, 'core:advertisement:start', this.onStartAd);
|
|
45
|
-
this.stopListening(this.core, 'core:advertisement:finish', this.onFinishAd);
|
|
46
|
-
this.stopListening(this.core.mediaControl, Events.MEDIACONTROL_RENDERED, this.mediaControlRendered);
|
|
47
|
-
const container = this.core.activeContainer;
|
|
48
|
-
if (container) {
|
|
49
|
-
this.stopListening(container.playback, Events.PLAYBACK_PLAY, this.render);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
54
|
onCoreReady() {
|
|
53
55
|
this.listenTo(this.core.activeContainer, Events.CONTAINER_VOLUME, this.onContainerVolume);
|
|
54
56
|
this.listenTo(this.core.activeContainer, Events.CONTAINER_READY, this.onContainerStart);
|
|
@@ -105,12 +107,15 @@ export class BigMuteButton extends UICorePlugin {
|
|
|
105
107
|
});
|
|
106
108
|
return autoPlay && !wasMuted && volume === 0;
|
|
107
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* @internal
|
|
112
|
+
*/
|
|
108
113
|
render() {
|
|
109
114
|
if (this.shouldRender()) {
|
|
110
115
|
trace(`${T} render`, {
|
|
111
116
|
el: !!this.$el,
|
|
112
117
|
});
|
|
113
|
-
this.$el.html(
|
|
118
|
+
this.$el.html(BigMuteButton.template());
|
|
114
119
|
this.$bigMuteBtnContainer = this.$el.find('.big-mute-icon-wrapper[data-big-mute]');
|
|
115
120
|
this._adIsPlaying && this.$bigMuteBtnContainer.addClass('hide');
|
|
116
121
|
this.$bigMuteButton = this.$bigMuteBtnContainer.find('.big-mute-icon');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomGear.d.ts","sourceRoot":"","sources":["../../../src/plugins/bottom-gear/BottomGear.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoC,MAAM,cAAc,CAAC;AAO9E,OAAO,uCAAuC,CAAC;AAC/C,OAAO,gDAAgD,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMnD
|
|
1
|
+
{"version":3,"file":"BottomGear.d.ts","sourceRoot":"","sources":["../../../src/plugins/bottom-gear/BottomGear.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoC,MAAM,cAAc,CAAC;AAO9E,OAAO,uCAAuC,CAAC;AAC/C,OAAO,gDAAgD,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMnD;;;GAGG;AACH,oBAAY,UAAU;IACpB;;OAEG;IACH,0BAA0B,+BAA+B;CAC1D;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1D;;;;;;;;;GASG;AACH,qBAAa,UAAW,SAAQ,YAAY;IAC1C,OAAO,CAAC,IAAI,CAAS;IAErB;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;IACH,MAAM,KAAK,OAAO,WAEjB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAEvD;;OAEG;IACH,IAAa,UAAU;;;MAKtB;IAED;;OAEG;IACH,IAAa,MAAM;;MAIlB;IAED;;OAEG;IACM,UAAU;IAUnB;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW,GAAG,IAAI;IAIrD;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,WAAW;IAI/B,OAAO,CAAC,wBAAwB;IAKhC,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACM,MAAM;IAmBf,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,IAAI;CAGb"}
|
|
@@ -1,7 +1,22 @@
|
|
|
1
1
|
import { UICorePlugin, Core } from '@clappr/core';
|
|
2
2
|
import '../../../assets/clappr-nerd-stats/clappr-nerd-stats.scss';
|
|
3
3
|
/**
|
|
4
|
+
* Displays useful network-related statistics.
|
|
4
5
|
* @beta
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* Depends on:
|
|
9
|
+
*
|
|
10
|
+
* - {@link MediaControl}
|
|
11
|
+
*
|
|
12
|
+
* - {@link BottomGear}
|
|
13
|
+
*
|
|
14
|
+
* - {@link ClapprStats}
|
|
15
|
+
*
|
|
16
|
+
* The plugin is rendered as an item in the gear menu.
|
|
17
|
+
*
|
|
18
|
+
* When clicked, it shows an overlay window with the information about the network speed, latency, etc,
|
|
19
|
+
* and recommended quality level.
|
|
5
20
|
*/
|
|
6
21
|
export declare class ClapprNerdStats extends UICorePlugin {
|
|
7
22
|
private container;
|
|
@@ -10,25 +25,40 @@ export declare class ClapprNerdStats extends UICorePlugin {
|
|
|
10
25
|
private showing;
|
|
11
26
|
private shortcut;
|
|
12
27
|
private iconPosition;
|
|
28
|
+
/**
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
13
31
|
get name(): string;
|
|
32
|
+
/**
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
14
35
|
get supportedVersion(): {
|
|
15
36
|
min: string;
|
|
16
37
|
};
|
|
17
|
-
|
|
38
|
+
private static readonly template;
|
|
39
|
+
/**
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
18
42
|
get attributes(): {
|
|
19
43
|
'data-clappr-nerd-stats': string;
|
|
20
44
|
class: string;
|
|
21
45
|
};
|
|
46
|
+
/**
|
|
47
|
+
* @internal
|
|
48
|
+
*/
|
|
22
49
|
get events(): {
|
|
23
50
|
'click [data-show-stats-button]': string;
|
|
24
51
|
'click [data-close-button]': string;
|
|
25
52
|
'click [data-refresh-button]': string;
|
|
26
53
|
};
|
|
27
|
-
get statsBoxElem()
|
|
28
|
-
get statsBoxWidthThreshold()
|
|
29
|
-
get playerWidth()
|
|
30
|
-
get playerHeight()
|
|
54
|
+
private get statsBoxElem();
|
|
55
|
+
private get statsBoxWidthThreshold();
|
|
56
|
+
private get playerWidth();
|
|
57
|
+
private get playerHeight();
|
|
31
58
|
constructor(core: Core);
|
|
59
|
+
/**
|
|
60
|
+
* @internal
|
|
61
|
+
*/
|
|
32
62
|
bindEvents(): void;
|
|
33
63
|
private init;
|
|
34
64
|
private toggle;
|
|
@@ -39,6 +69,9 @@ export declare class ClapprNerdStats extends UICorePlugin {
|
|
|
39
69
|
private addCustomMetrics;
|
|
40
70
|
private updateMetrics;
|
|
41
71
|
private setStatsBoxSize;
|
|
72
|
+
/**
|
|
73
|
+
* @internal
|
|
74
|
+
*/
|
|
42
75
|
render(): this;
|
|
43
76
|
private addToBottomGear;
|
|
44
77
|
private clearCustomMetrics;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClapprNerdStats.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-nerd-stats/ClapprNerdStats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoB,IAAI,EAAa,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"ClapprNerdStats.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-nerd-stats/ClapprNerdStats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoB,IAAI,EAAa,MAAM,cAAc,CAAA;AAsB9E,OAAO,0DAA0D,CAAA;AAgGjE;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,SAAS,CAAyB;IAE1C,OAAO,CAAC,aAAa,CAIpB;IAED,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO,CAAC,OAAO,CAAQ;IAEvB,OAAO,CAAC,QAAQ,CAAU;IAE1B,OAAO,CAAC,YAAY,CAAc;IAElC;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAEvD;;OAEG;IACH,IAAa,UAAU;;;MAKtB;IAED;;OAEG;IACH,IAAa,MAAM;;;;MAMlB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,sBAAsB,GAEjC;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,YAAY,GAEvB;gBAEW,IAAI,EAAE,IAAI;IAgBtB;;OAEG;IACM,UAAU;IAWnB,OAAO,CAAC,IAAI;IA4BZ,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,IAAI;IAeZ,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACM,MAAM;IAQf,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,gBAAgB;CAWzB"}
|
|
@@ -2,7 +2,7 @@ import { UICorePlugin, Events, template } from '@clappr/core';
|
|
|
2
2
|
import { reportError } from '@gcorevideo/utils';
|
|
3
3
|
import Mousetrap from 'mousetrap';
|
|
4
4
|
import { CLAPPR_VERSION } from '../../build.js';
|
|
5
|
-
import { ClapprStatsEvents } from '../clappr-stats/types.js';
|
|
5
|
+
import { ClapprStatsEvents, } from '../clappr-stats/types.js';
|
|
6
6
|
import { newMetrics as newBaseMetrics } from '../clappr-stats/utils.js';
|
|
7
7
|
import Formatter from './formatter.js';
|
|
8
8
|
import { clearSpeedTestResults, configureSpeedTest, drawSpeedTestResults, initSpeedTest, startSpeedtest, stopSpeedtest, } from './speedtest/index.js';
|
|
@@ -17,7 +17,7 @@ const qualityClasses = [
|
|
|
17
17
|
'speedtest-quality-value-2',
|
|
18
18
|
'speedtest-quality-value-3',
|
|
19
19
|
'speedtest-quality-value-4',
|
|
20
|
-
'speedtest-quality-value-5'
|
|
20
|
+
'speedtest-quality-value-5',
|
|
21
21
|
];
|
|
22
22
|
const getDownloadQuality = (speedValue) => {
|
|
23
23
|
if (speedValue < 3) {
|
|
@@ -81,7 +81,22 @@ const drawSummary = (customMetrics, vodContainer, liveContainer) => {
|
|
|
81
81
|
};
|
|
82
82
|
// const T = 'plugins.clappr_nerd_stats';
|
|
83
83
|
/**
|
|
84
|
+
* Displays useful network-related statistics.
|
|
84
85
|
* @beta
|
|
86
|
+
*
|
|
87
|
+
* @remarks
|
|
88
|
+
* Depends on:
|
|
89
|
+
*
|
|
90
|
+
* - {@link MediaControl}
|
|
91
|
+
*
|
|
92
|
+
* - {@link BottomGear}
|
|
93
|
+
*
|
|
94
|
+
* - {@link ClapprStats}
|
|
95
|
+
*
|
|
96
|
+
* The plugin is rendered as an item in the gear menu.
|
|
97
|
+
*
|
|
98
|
+
* When clicked, it shows an overlay window with the information about the network speed, latency, etc,
|
|
99
|
+
* and recommended quality level.
|
|
85
100
|
*/
|
|
86
101
|
export class ClapprNerdStats extends UICorePlugin {
|
|
87
102
|
container = null;
|
|
@@ -94,21 +109,31 @@ export class ClapprNerdStats extends UICorePlugin {
|
|
|
94
109
|
showing = false;
|
|
95
110
|
shortcut;
|
|
96
111
|
iconPosition;
|
|
112
|
+
/**
|
|
113
|
+
* @internal
|
|
114
|
+
*/
|
|
97
115
|
get name() {
|
|
98
116
|
return 'nerd_stats';
|
|
99
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* @internal
|
|
120
|
+
*/
|
|
100
121
|
get supportedVersion() {
|
|
101
122
|
return { min: CLAPPR_VERSION };
|
|
102
123
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
124
|
+
static template = template(pluginHtml);
|
|
125
|
+
/**
|
|
126
|
+
* @internal
|
|
127
|
+
*/
|
|
106
128
|
get attributes() {
|
|
107
129
|
return {
|
|
108
130
|
'data-clappr-nerd-stats': '',
|
|
109
|
-
|
|
131
|
+
class: 'clappr-nerd-stats',
|
|
110
132
|
};
|
|
111
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* @internal
|
|
136
|
+
*/
|
|
112
137
|
get events() {
|
|
113
138
|
return {
|
|
114
139
|
'click [data-show-stats-button]': 'showOrHide',
|
|
@@ -130,8 +155,12 @@ export class ClapprNerdStats extends UICorePlugin {
|
|
|
130
155
|
}
|
|
131
156
|
constructor(core) {
|
|
132
157
|
super(core);
|
|
133
|
-
this.shortcut = core.options.clapprNerdStats?.shortcut ?? [
|
|
134
|
-
|
|
158
|
+
this.shortcut = core.options.clapprNerdStats?.shortcut ?? [
|
|
159
|
+
'command+shift+s',
|
|
160
|
+
'ctrl+shift+s',
|
|
161
|
+
];
|
|
162
|
+
this.iconPosition =
|
|
163
|
+
core.options.clapprNerdStats?.iconPosition ?? 'bottom-right';
|
|
135
164
|
this.customMetrics = {
|
|
136
165
|
connectionSpeed: 0,
|
|
137
166
|
ping: 0,
|
|
@@ -139,6 +168,9 @@ export class ClapprNerdStats extends UICorePlugin {
|
|
|
139
168
|
};
|
|
140
169
|
configureSpeedTest(core.options.clapprNerdStats?.speedTestServers ?? []);
|
|
141
170
|
}
|
|
171
|
+
/**
|
|
172
|
+
* @internal
|
|
173
|
+
*/
|
|
142
174
|
bindEvents() {
|
|
143
175
|
const mediaControl = this.core.getPlugin('media_control');
|
|
144
176
|
assert(mediaControl, 'media_control plugin is required');
|
|
@@ -178,9 +210,11 @@ export class ClapprNerdStats extends UICorePlugin {
|
|
|
178
210
|
this.core.$el.find(this.statsBoxElem).show();
|
|
179
211
|
this.showing = true;
|
|
180
212
|
this.refreshSpeedTest();
|
|
181
|
-
initSpeedTest(this.customMetrics)
|
|
213
|
+
initSpeedTest(this.customMetrics)
|
|
214
|
+
.then(() => {
|
|
182
215
|
startSpeedtest();
|
|
183
|
-
})
|
|
216
|
+
})
|
|
217
|
+
.catch((e) => {
|
|
184
218
|
reportError(e);
|
|
185
219
|
this.disable();
|
|
186
220
|
});
|
|
@@ -195,13 +229,19 @@ export class ClapprNerdStats extends UICorePlugin {
|
|
|
195
229
|
}
|
|
196
230
|
addGeneralMetrics() {
|
|
197
231
|
this.metrics.general = {
|
|
198
|
-
displayResolution:
|
|
199
|
-
volume: this.container?.volume
|
|
232
|
+
displayResolution: this.playerWidth + 'x' + this.playerHeight,
|
|
233
|
+
volume: this.container?.volume,
|
|
200
234
|
};
|
|
201
235
|
}
|
|
202
236
|
addCustomMetrics() {
|
|
203
237
|
this.metrics.custom = this.customMetrics;
|
|
204
|
-
const videoQualityNames = [
|
|
238
|
+
const videoQualityNames = [
|
|
239
|
+
'SD (480p)',
|
|
240
|
+
'HD (720p)',
|
|
241
|
+
'Full HD (1080p)',
|
|
242
|
+
'2K (1440p)',
|
|
243
|
+
'4K (2160p)',
|
|
244
|
+
];
|
|
205
245
|
const { connectionSpeed, ping } = this.customMetrics;
|
|
206
246
|
if (!connectionSpeed || !ping) {
|
|
207
247
|
const calculatingText = 'Calculating... Please wait.';
|
|
@@ -213,17 +253,19 @@ export class ClapprNerdStats extends UICorePlugin {
|
|
|
213
253
|
const pingQuality = getPingQuality(ping);
|
|
214
254
|
const liveQuality = Math.min(downloadQuality, pingQuality);
|
|
215
255
|
const prefix = 'Optimal for ';
|
|
216
|
-
this.metrics.custom.vodQuality =
|
|
217
|
-
|
|
256
|
+
this.metrics.custom.vodQuality =
|
|
257
|
+
prefix + videoQualityNames[downloadQuality - 1];
|
|
258
|
+
this.metrics.custom.liveQuality =
|
|
259
|
+
prefix + videoQualityNames[liveQuality - 1];
|
|
218
260
|
}
|
|
219
261
|
updateMetrics(metrics) {
|
|
220
262
|
Object.assign(this.metrics, metrics);
|
|
221
263
|
this.addGeneralMetrics();
|
|
222
264
|
this.addCustomMetrics();
|
|
223
265
|
const scrollTop = this.core.$el.find(this.statsBoxElem).scrollTop();
|
|
224
|
-
this.$el.html(
|
|
266
|
+
this.$el.html(ClapprNerdStats.template({
|
|
225
267
|
metrics: Formatter.format(this.metrics),
|
|
226
|
-
iconPosition: this.iconPosition
|
|
268
|
+
iconPosition: this.iconPosition,
|
|
227
269
|
}));
|
|
228
270
|
this.setStatsBoxSize();
|
|
229
271
|
drawSpeedTestResults();
|
|
@@ -243,7 +285,11 @@ export class ClapprNerdStats extends UICorePlugin {
|
|
|
243
285
|
this.$el.find(this.statsBoxElem).addClass('narrow');
|
|
244
286
|
}
|
|
245
287
|
}
|
|
288
|
+
/**
|
|
289
|
+
* @internal
|
|
290
|
+
*/
|
|
246
291
|
render() {
|
|
292
|
+
// TODO append to the container
|
|
247
293
|
this.core.$el.append(this.$el[0]);
|
|
248
294
|
this.hide();
|
|
249
295
|
return this;
|