@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.
Files changed (338) hide show
  1. package/assets/level-selector/list.ejs +1 -1
  2. package/dist/core.js +2 -2
  3. package/dist/index.css +966 -966
  4. package/dist/index.js +884 -627
  5. package/dist/player.d.ts +536 -122
  6. package/dist/plugins/index.css +1160 -1160
  7. package/dist/plugins/index.js +2006 -1725
  8. package/docs/api/player.audioselector.md +1 -251
  9. package/docs/api/player.bigmutebutton.md +1 -156
  10. package/docs/api/player.clapprnerdstats.md +12 -259
  11. package/docs/api/player.clapprstats.exportmetrics.md +4 -0
  12. package/docs/api/player.clapprstats.md +7 -223
  13. package/docs/api/player.clapprstats.setupdatemetrics.md +2 -0
  14. package/docs/api/player.clicktopause.md +5 -113
  15. package/docs/api/player.clipsplugin.gettext.md +9 -0
  16. package/docs/api/player.clipsplugin.md +10 -94
  17. package/docs/api/{player.playbackrate.setselectedrate.md → player.clipspluginsettings.md} +18 -10
  18. package/docs/api/player.clipspluginsettings.text.md +13 -0
  19. package/docs/api/player.contextmenu._constructor_.md +6 -3
  20. package/docs/api/player.contextmenu.md +13 -256
  21. package/docs/api/player.contextmenupluginsettings.label.md +11 -0
  22. package/docs/api/player.contextmenupluginsettings.md +93 -0
  23. package/docs/api/player.contextmenupluginsettings.preventshowcontextmenu.md +11 -0
  24. package/docs/api/player.contextmenupluginsettings.url.md +11 -0
  25. package/docs/api/player.dvrcontrols.md +5 -1
  26. package/docs/api/player.errorscreen.attributes.md +3 -0
  27. package/docs/api/player.errorscreen.bindevents.md +3 -0
  28. package/docs/api/player.errorscreen.container.md +3 -0
  29. package/docs/api/player.errorscreen.hide.md +3 -0
  30. package/docs/api/player.errorscreen.md +25 -0
  31. package/docs/api/player.errorscreen.name.md +3 -0
  32. package/docs/api/player.errorscreen.render.md +3 -0
  33. package/docs/api/player.errorscreen.show.md +3 -0
  34. package/docs/api/player.errorscreen.supportedversion.md +3 -0
  35. package/docs/api/player.errorscreen.template.md +3 -0
  36. package/docs/api/player.errorscreen.unbindevents.md +3 -0
  37. package/docs/api/player.favicon._constructor_.md +3 -0
  38. package/docs/api/player.favicon.bindevents.md +3 -0
  39. package/docs/api/player.favicon.configure.md +3 -0
  40. package/docs/api/player.favicon.destroy.md +3 -0
  41. package/docs/api/player.favicon.disable.md +3 -0
  42. package/docs/api/player.favicon.md +18 -1
  43. package/docs/api/player.favicon.name.md +3 -0
  44. package/docs/api/player.favicon.supportedversion.md +3 -0
  45. package/docs/api/player.gearevents.md +4 -1
  46. package/docs/api/player.googleanalytics._constructor_.md +3 -0
  47. package/docs/api/player.googleanalytics.addeventlisteners.md +3 -0
  48. package/docs/api/player.googleanalytics.embedscript.md +3 -0
  49. package/docs/api/player.googleanalytics.md +42 -1
  50. package/docs/api/player.googleanalytics.name.md +3 -0
  51. package/docs/api/player.googleanalytics.onbufferfull.md +3 -0
  52. package/docs/api/player.googleanalytics.onbuffering.md +3 -0
  53. package/docs/api/player.googleanalytics.ondvr.md +3 -0
  54. package/docs/api/player.googleanalytics.onended.md +3 -0
  55. package/docs/api/player.googleanalytics.onerror.md +3 -0
  56. package/docs/api/player.googleanalytics.onfullscreen.md +3 -0
  57. package/docs/api/player.googleanalytics.onhd.md +3 -0
  58. package/docs/api/player.googleanalytics.onpause.md +3 -0
  59. package/docs/api/player.googleanalytics.onplay.md +3 -0
  60. package/docs/api/player.googleanalytics.onready.md +3 -0
  61. package/docs/api/player.googleanalytics.onseek.md +3 -0
  62. package/docs/api/player.googleanalytics.onstop.md +3 -0
  63. package/docs/api/player.googleanalytics.onvolumechanged.md +3 -0
  64. package/docs/api/player.googleanalytics.push.md +3 -0
  65. package/docs/api/player.googleanalytics.supportedversion.md +3 -0
  66. package/docs/api/{player.clapprstats.name.md → player.initeventdata.event.md} +3 -3
  67. package/docs/api/player.initeventdata.md +60 -0
  68. package/docs/api/player.logo._constructor_.md +3 -0
  69. package/docs/api/player.logo.attributes.md +3 -0
  70. package/docs/api/player.logo.bindevents.md +3 -0
  71. package/docs/api/player.logo.md +20 -1
  72. package/docs/api/player.logo.name.md +3 -0
  73. package/docs/api/player.logo.render.md +3 -0
  74. package/docs/api/player.logo.stoplistening.md +3 -0
  75. package/docs/api/player.logo.supportedversion.md +3 -0
  76. package/docs/api/player.logo.template.md +3 -0
  77. package/docs/api/player.md +149 -18
  78. package/docs/api/player.mediacontrolelement.md +1 -1
  79. package/docs/api/player.multicamera.md +2 -0
  80. package/docs/api/player.pictureinpicture.md +9 -197
  81. package/docs/api/player.playbackrate.md +10 -314
  82. package/docs/api/player.seektime.attributes.md +3 -0
  83. package/docs/api/player.seektime.bindevents.md +3 -0
  84. package/docs/api/player.seektime.durationshown.md +3 -0
  85. package/docs/api/player.seektime.getseektime.md +3 -0
  86. package/docs/api/player.seektime.islivestreamwithdvr.md +3 -0
  87. package/docs/api/player.seektime.md +31 -0
  88. package/docs/api/player.seektime.mediacontrol.md +3 -0
  89. package/docs/api/player.seektime.mediacontrolcontainer.md +3 -0
  90. package/docs/api/player.seektime.name.md +3 -0
  91. package/docs/api/player.seektime.render.md +3 -0
  92. package/docs/api/player.seektime.shouldbevisible.md +3 -0
  93. package/docs/api/player.seektime.supportedversion.md +3 -0
  94. package/docs/api/player.seektime.template.md +3 -0
  95. package/docs/api/player.seektime.update.md +3 -0
  96. package/docs/api/player.share.md +2 -0
  97. package/docs/api/player.skiptime.md +2 -0
  98. package/docs/api/{player.clapprstats.destroy.md → player.stalleventdata.count.md} +5 -7
  99. package/docs/api/{player.bigmutebutton.template.md → player.stalleventdata.event.md} +3 -3
  100. package/docs/api/player.stalleventdata.md +117 -0
  101. package/docs/api/{player.audioselector.onshowlevelselectmenu.md → player.stalleventdata.time.md} +5 -7
  102. package/docs/api/{player.clapprstats.starttimers.md → player.stalleventdata.total_ms.md} +5 -7
  103. package/docs/api/{player.audioselector.template.md → player.starteventdata.event.md} +3 -3
  104. package/docs/api/player.starteventdata.md +60 -0
  105. package/docs/api/{player.clapprstats._defaultreport.md → player.telemetry._constructor_.md} +7 -9
  106. package/docs/api/player.telemetry.md +146 -0
  107. package/docs/api/{player.clapprnerdstats.name.md → player.telemetry.name.md} +4 -2
  108. package/docs/api/{player.clapprstats.supportedversion.md → player.telemetry.supportedversion.md} +4 -2
  109. package/docs/api/player.telemetryevent.md +100 -0
  110. package/docs/api/player.telemetryeventdata.md +18 -0
  111. package/docs/api/player.telemetrypluginsettings.md +60 -0
  112. package/docs/api/{player.audioselector.bindevents.md → player.telemetrypluginsettings.send.md} +5 -7
  113. package/docs/api/{player.audioselector.reload.md → player.telemetryrecord.md} +8 -6
  114. package/docs/api/player.thumbnails.md +21 -139
  115. package/docs/api/player.thumbnailspluginsettings.md +23 -0
  116. package/docs/api/player.volumefade.md +1 -93
  117. package/docs/api/{player.audioselector.name.md → player.watcheventdata.event.md} +3 -3
  118. package/docs/api/player.watcheventdata.md +60 -0
  119. package/lib/index.plugins.d.ts +2 -3
  120. package/lib/index.plugins.d.ts.map +1 -1
  121. package/lib/index.plugins.js +2 -3
  122. package/lib/playback/hls-playback/HlsPlayback.js +1 -1
  123. package/lib/plugins/audio-selector/AudioSelector.d.ts +28 -6
  124. package/lib/plugins/audio-selector/AudioSelector.d.ts.map +1 -1
  125. package/lib/plugins/audio-selector/AudioSelector.js +52 -22
  126. package/lib/plugins/big-mute-button/BigMuteButton.d.ts +18 -2
  127. package/lib/plugins/big-mute-button/BigMuteButton.d.ts.map +1 -1
  128. package/lib/plugins/big-mute-button/BigMuteButton.js +21 -16
  129. package/lib/plugins/bottom-gear/BottomGear.d.ts +1 -0
  130. package/lib/plugins/bottom-gear/BottomGear.d.ts.map +1 -1
  131. package/lib/plugins/bottom-gear/BottomGear.js +1 -0
  132. package/lib/plugins/clappr-nerd-stats/ClapprNerdStats.d.ts +38 -5
  133. package/lib/plugins/clappr-nerd-stats/ClapprNerdStats.d.ts.map +1 -1
  134. package/lib/plugins/clappr-nerd-stats/ClapprNerdStats.js +63 -17
  135. package/lib/plugins/clappr-stats/ClapprStats.d.ts +31 -8
  136. package/lib/plugins/clappr-stats/ClapprStats.d.ts.map +1 -1
  137. package/lib/plugins/clappr-stats/ClapprStats.js +24 -0
  138. package/lib/plugins/clappr-stats/types.d.ts +12 -0
  139. package/lib/plugins/clappr-stats/types.d.ts.map +1 -1
  140. package/lib/plugins/clappr-stats/types.js +3 -0
  141. package/lib/plugins/click-to-pause/ClickToPause.d.ts +13 -1
  142. package/lib/plugins/click-to-pause/ClickToPause.d.ts.map +1 -1
  143. package/lib/plugins/click-to-pause/ClickToPause.js +14 -4
  144. package/lib/plugins/clips/Clips.d.ts +34 -2
  145. package/lib/plugins/clips/Clips.d.ts.map +1 -1
  146. package/lib/plugins/clips/Clips.js +51 -22
  147. package/lib/plugins/context-menu/ContextMenu.d.ts +40 -13
  148. package/lib/plugins/context-menu/ContextMenu.d.ts.map +1 -1
  149. package/lib/plugins/context-menu/ContextMenu.js +48 -36
  150. package/lib/plugins/dvr-controls/DvrControls.d.ts +5 -4
  151. package/lib/plugins/dvr-controls/DvrControls.d.ts.map +1 -1
  152. package/lib/plugins/dvr-controls/DvrControls.js +15 -29
  153. package/lib/plugins/error-screen/ErrorScreen.d.ts +4 -0
  154. package/lib/plugins/error-screen/ErrorScreen.d.ts.map +1 -1
  155. package/lib/plugins/error-screen/ErrorScreen.js +4 -0
  156. package/lib/plugins/favicon/Favicon.d.ts +4 -0
  157. package/lib/plugins/favicon/Favicon.d.ts.map +1 -1
  158. package/lib/plugins/favicon/Favicon.js +4 -0
  159. package/lib/plugins/google-analytics/GoogleAnalytics.d.ts +4 -0
  160. package/lib/plugins/google-analytics/GoogleAnalytics.d.ts.map +1 -1
  161. package/lib/plugins/google-analytics/GoogleAnalytics.js +5 -1
  162. package/lib/plugins/index.d.ts +2 -4
  163. package/lib/plugins/index.d.ts.map +1 -1
  164. package/lib/plugins/index.js +2 -4
  165. package/lib/plugins/logo/Logo.d.ts +4 -0
  166. package/lib/plugins/logo/Logo.d.ts.map +1 -1
  167. package/lib/plugins/logo/Logo.js +4 -0
  168. package/lib/plugins/media-control/MediaControl.d.ts +1 -1
  169. package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
  170. package/lib/plugins/media-control/MediaControl.js +3 -1
  171. package/lib/plugins/multi-camera/MultiCamera.d.ts +3 -0
  172. package/lib/plugins/multi-camera/MultiCamera.d.ts.map +1 -1
  173. package/lib/plugins/multi-camera/MultiCamera.js +3 -0
  174. package/lib/plugins/picture-in-picture/PictureInPicture.d.ts +32 -4
  175. package/lib/plugins/picture-in-picture/PictureInPicture.d.ts.map +1 -1
  176. package/lib/plugins/picture-in-picture/PictureInPicture.js +30 -2
  177. package/lib/plugins/playback-rate/PlaybackRate.d.ts +47 -14
  178. package/lib/plugins/playback-rate/PlaybackRate.d.ts.map +1 -1
  179. package/lib/plugins/playback-rate/PlaybackRate.js +38 -9
  180. package/lib/plugins/seek-time/SeekTime.d.ts +4 -0
  181. package/lib/plugins/seek-time/SeekTime.d.ts.map +1 -1
  182. package/lib/plugins/seek-time/SeekTime.js +5 -1
  183. package/lib/plugins/share/Share.d.ts +3 -0
  184. package/lib/plugins/share/Share.d.ts.map +1 -1
  185. package/lib/plugins/share/Share.js +3 -0
  186. package/lib/plugins/skip-time/SkipTime.d.ts +3 -0
  187. package/lib/plugins/skip-time/SkipTime.d.ts.map +1 -1
  188. package/lib/plugins/skip-time/SkipTime.js +3 -0
  189. package/lib/plugins/statistics/Statistics.d.ts +38 -3
  190. package/lib/plugins/statistics/Statistics.d.ts.map +1 -1
  191. package/lib/plugins/statistics/Statistics.js +51 -9
  192. package/lib/plugins/telemetry/Telemetry.d.ts +153 -0
  193. package/lib/plugins/telemetry/Telemetry.d.ts.map +1 -0
  194. package/lib/plugins/telemetry/Telemetry.js +181 -0
  195. package/lib/plugins/thumbnails/Thumbnails.d.ts +48 -3
  196. package/lib/plugins/thumbnails/Thumbnails.d.ts.map +1 -1
  197. package/lib/plugins/thumbnails/Thumbnails.js +52 -18
  198. package/lib/plugins/volume-fade/VolumeFade.d.ts +8 -1
  199. package/lib/plugins/volume-fade/VolumeFade.d.ts.map +1 -1
  200. package/lib/plugins/volume-fade/VolumeFade.js +9 -1
  201. package/package.json +1 -1
  202. package/src/index.plugins.ts +2 -3
  203. package/src/playback/hls-playback/HlsPlayback.ts +1 -1
  204. package/src/plugins/audio-selector/AudioSelector.ts +227 -154
  205. package/src/plugins/big-mute-button/BigMuteButton.ts +100 -79
  206. package/src/plugins/bottom-gear/BottomGear.ts +1 -0
  207. package/src/plugins/clappr-nerd-stats/ClapprNerdStats.ts +240 -173
  208. package/src/plugins/clappr-stats/ClapprStats.ts +32 -8
  209. package/src/plugins/clappr-stats/types.ts +13 -0
  210. package/src/plugins/click-to-pause/ClickToPause.ts +47 -36
  211. package/src/plugins/clips/Clips.ts +127 -71
  212. package/src/plugins/context-menu/ContextMenu.ts +105 -76
  213. package/src/plugins/dvr-controls/DvrControls.ts +15 -31
  214. package/src/plugins/error-screen/ErrorScreen.ts +4 -0
  215. package/src/plugins/favicon/Favicon.ts +4 -0
  216. package/src/plugins/google-analytics/GoogleAnalytics.ts +5 -1
  217. package/src/plugins/index.ts +2 -4
  218. package/src/plugins/level-selector/__tests__/LevelSelector.test.ts +47 -26
  219. package/src/plugins/level-selector/__tests__/__snapshots__/LevelSelector.test.ts.snap +18 -18
  220. package/src/plugins/logo/Logo.ts +4 -0
  221. package/src/plugins/media-control/MediaControl.ts +4 -1
  222. package/src/plugins/multi-camera/MultiCamera.ts +3 -0
  223. package/src/plugins/picture-in-picture/PictureInPicture.ts +35 -7
  224. package/src/plugins/playback-rate/PlaybackRate.ts +53 -24
  225. package/src/plugins/seek-time/SeekTime.ts +5 -1
  226. package/src/plugins/share/Share.ts +3 -0
  227. package/src/plugins/skip-time/SkipTime.ts +3 -0
  228. package/src/plugins/telemetry/Telemetry.ts +317 -0
  229. package/src/plugins/thumbnails/Thumbnails.ts +268 -194
  230. package/src/plugins/volume-fade/VolumeFade.ts +10 -2
  231. package/temp/player.api.json +2457 -5257
  232. package/tsconfig.tsbuildinfo +1 -1
  233. package/docs/api/player.audioselector.attributes.md +0 -17
  234. package/docs/api/player.audioselector.events.md +0 -17
  235. package/docs/api/player.audioselector.hideselecttrackmenu.md +0 -18
  236. package/docs/api/player.audioselector.render.md +0 -18
  237. package/docs/api/player.audioselector.supportedversion.md +0 -16
  238. package/docs/api/player.audioselector.togglecontextmenu.md +0 -18
  239. package/docs/api/player.audioselector.unbindevents.md +0 -18
  240. package/docs/api/player.audioselector.version.md +0 -14
  241. package/docs/api/player.bigmutebutton.bindevents.md +0 -18
  242. package/docs/api/player.bigmutebutton.events.md +0 -17
  243. package/docs/api/player.bigmutebutton.name.md +0 -14
  244. package/docs/api/player.bigmutebutton.render.md +0 -18
  245. package/docs/api/player.bigmutebutton.supportedversion.md +0 -16
  246. package/docs/api/player.clapprnerdstats.attributes.md +0 -17
  247. package/docs/api/player.clapprnerdstats.bindevents.md +0 -18
  248. package/docs/api/player.clapprnerdstats.events.md +0 -18
  249. package/docs/api/player.clapprnerdstats.playerheight.md +0 -14
  250. package/docs/api/player.clapprnerdstats.playerwidth.md +0 -14
  251. package/docs/api/player.clapprnerdstats.render.md +0 -18
  252. package/docs/api/player.clapprnerdstats.statsboxelem.md +0 -14
  253. package/docs/api/player.clapprnerdstats.statsboxwidththreshold.md +0 -14
  254. package/docs/api/player.clapprnerdstats.supportedversion.md +0 -16
  255. package/docs/api/player.clapprnerdstats.template.md +0 -14
  256. package/docs/api/player.clapprstats._buildreport.md +0 -18
  257. package/docs/api/player.clapprstats._playbackname.md +0 -14
  258. package/docs/api/player.clapprstats._playbacktype.md +0 -14
  259. package/docs/api/player.clapprstats.bindevents.md +0 -18
  260. package/docs/api/player.clapprstats.onfirstplaying.md +0 -18
  261. package/docs/api/player.clapprstats.playafterpause.md +0 -18
  262. package/docs/api/player.clapprstats.stopreporting.md +0 -18
  263. package/docs/api/player.clicktopause.bindevents.md +0 -15
  264. package/docs/api/player.clicktopause.config.md +0 -11
  265. package/docs/api/player.clicktopause.name.md +0 -11
  266. package/docs/api/player.clicktopause.supportedversion.md +0 -13
  267. package/docs/api/player.clipsplugin.attributes.md +0 -13
  268. package/docs/api/player.clipsplugin.bindevents.md +0 -15
  269. package/docs/api/player.clipsplugin.makesvg.md +0 -49
  270. package/docs/api/player.clipsplugin.name.md +0 -11
  271. package/docs/api/player.clipsplugin.unbindevents.md +0 -15
  272. package/docs/api/player.contextmenu.attributes.md +0 -13
  273. package/docs/api/player.contextmenu.bindevents.md +0 -15
  274. package/docs/api/player.contextmenu.destroy.md +0 -15
  275. package/docs/api/player.contextmenu.events.md +0 -13
  276. package/docs/api/player.contextmenu.exposeversion.md +0 -14
  277. package/docs/api/player.contextmenu.label.md +0 -11
  278. package/docs/api/player.contextmenu.mediacontrol.md +0 -11
  279. package/docs/api/player.contextmenu.name.md +0 -11
  280. package/docs/api/player.contextmenu.render.md +0 -15
  281. package/docs/api/player.contextmenu.supportedversion.md +0 -13
  282. package/docs/api/player.contextmenu.template.md +0 -11
  283. package/docs/api/player.contextmenu.url.md +0 -11
  284. package/docs/api/player.disablecontrols.bindevents.md +0 -15
  285. package/docs/api/player.disablecontrols.container.md +0 -11
  286. package/docs/api/player.disablecontrols.md +0 -138
  287. package/docs/api/player.disablecontrols.name.md +0 -11
  288. package/docs/api/player.disablecontrols.supportedversion.md +0 -13
  289. package/docs/api/player.disablecontrols.unbindevents.md +0 -15
  290. package/docs/api/player.pictureinpicture.bindevents.md +0 -15
  291. package/docs/api/player.pictureinpicture.events.md +0 -13
  292. package/docs/api/player.pictureinpicture.exitpictureinpicture.md +0 -15
  293. package/docs/api/player.pictureinpicture.name.md +0 -11
  294. package/docs/api/player.pictureinpicture.render.md +0 -15
  295. package/docs/api/player.pictureinpicture.requestpictureinpicture.md +0 -15
  296. package/docs/api/player.pictureinpicture.supportedversion.md +0 -13
  297. package/docs/api/player.pictureinpicture.togglepictureinpicture.md +0 -15
  298. package/docs/api/player.pictureinpicture.version.md +0 -11
  299. package/docs/api/player.pictureinpicture.videoelement.md +0 -11
  300. package/docs/api/player.playbackrate.attributes.md +0 -14
  301. package/docs/api/player.playbackrate.bindevents.md +0 -15
  302. package/docs/api/player.playbackrate.events.md +0 -15
  303. package/docs/api/player.playbackrate.gettitle.md +0 -15
  304. package/docs/api/player.playbackrate.goback.md +0 -15
  305. package/docs/api/player.playbackrate.highlightcurrentrate.md +0 -15
  306. package/docs/api/player.playbackrate.name.md +0 -11
  307. package/docs/api/player.playbackrate.onfinishad.md +0 -15
  308. package/docs/api/player.playbackrate.onplay.md +0 -15
  309. package/docs/api/player.playbackrate.onrateselect.md +0 -49
  310. package/docs/api/player.playbackrate.onshowmenu.md +0 -15
  311. package/docs/api/player.playbackrate.onstartad.md +0 -15
  312. package/docs/api/player.playbackrate.onstop.md +0 -15
  313. package/docs/api/player.playbackrate.reload.md +0 -15
  314. package/docs/api/player.playbackrate.render.md +0 -15
  315. package/docs/api/player.playbackrate.supportedversion.md +0 -13
  316. package/docs/api/player.playbackrate.template.md +0 -11
  317. package/docs/api/player.playbackrate.unbindevents.md +0 -15
  318. package/docs/api/player.playbackrate.updateplaybackrate.md +0 -49
  319. package/docs/api/player.pluginsettings.md +0 -13
  320. package/docs/api/player.statistics._constructor_.md +0 -47
  321. package/docs/api/player.statistics.bindevents.md +0 -15
  322. package/docs/api/player.statistics.md +0 -141
  323. package/docs/api/player.statistics.name.md +0 -11
  324. package/docs/api/player.statistics.supportedversion.md +0 -13
  325. package/docs/api/player.thumbnails.attributes.md +0 -13
  326. package/docs/api/player.thumbnails.bindevents.md +0 -15
  327. package/docs/api/player.thumbnails.name.md +0 -11
  328. package/docs/api/player.thumbnails.settext.md +0 -49
  329. package/docs/api/player.thumbnails.supportedversion.md +0 -13
  330. package/docs/api/player.thumbnails.template.md +0 -11
  331. package/docs/api/player.volumefade.bindevents.md +0 -18
  332. package/docs/api/player.volumefade.name.md +0 -14
  333. package/docs/api/player.volumefade.unbindevents.md +0 -18
  334. package/src/plugins/disable-controls/DisableControls.ts +0 -81
  335. package/src/plugins/ga-events/GaEvents.js +0 -395
  336. package/src/plugins/ga-events/ga-tracking.js +0 -46
  337. package/src/plugins/statistics/Statistics.ts +0 -207
  338. /package/src/plugins/{statistics → telemetry}/Statistics copy.xts +0 -0
@@ -1,134 +1,163 @@
1
- import { UICorePlugin, Events, template, $, Core, Container } from '@clappr/core';
2
-
3
- import { CLAPPR_VERSION } from '../../build.js';
4
-
5
- import '../../../assets/context-menu/context_menu.scss';
6
- import templateHtml from '../../../assets/context-menu/context_menu.ejs';
1
+ import {
2
+ UICorePlugin,
3
+ Events,
4
+ template,
5
+ $,
6
+ Core,
7
+ Container,
8
+ UIContainerPlugin,
9
+ } from '@clappr/core'
10
+
11
+ import { CLAPPR_VERSION } from '../../build.js'
12
+
13
+ import '../../../assets/context-menu/context_menu.scss'
14
+ import templateHtml from '../../../assets/context-menu/context_menu.ejs'
15
+ import { version } from '../../version.js'
7
16
 
8
17
  type MenuOption = {
9
- label: string;
10
- name: string;
18
+ label: string
19
+ name: string
11
20
  }
12
21
 
13
- export class ContextMenu extends UICorePlugin {
14
- private _label: string = '';
22
+ export interface ContextMenuPluginSettings {
23
+ label?: string
24
+ url?: string
25
+ preventShowContextMenu?: boolean
26
+ }
15
27
 
16
- private _url: string = '';
28
+ /**
29
+ * Displays a small context menu when clicked on the player container.
30
+ * @beta
31
+ * @remarks
32
+ * Configuration options - {@link ContextMenuPluginSettings}
33
+ */
34
+ export class ContextMenu extends UIContainerPlugin {
35
+ private _label: string = ''
17
36
 
18
- private container: Container | null = null;
37
+ private _url: string = ''
19
38
 
20
- private menuOptions: MenuOption[] = [];
39
+ private menuOptions: MenuOption[] = []
21
40
 
41
+ /**
42
+ * @internal
43
+ */
22
44
  get name() {
23
- return 'context_menu';
45
+ return 'context_menu'
24
46
  }
25
47
 
48
+ /**
49
+ * @internal
50
+ */
26
51
  get supportedVersion() {
27
- return { min: CLAPPR_VERSION };
52
+ return { min: CLAPPR_VERSION }
28
53
  }
29
54
 
55
+ /**
56
+ * @internal
57
+ */
30
58
  override get attributes() {
31
- return { 'class': 'context-menu' };
32
- }
33
-
34
- get mediaControl() {
35
- return this.core.mediaControl;
59
+ return { class: 'context-menu' }
36
60
  }
37
61
 
38
- get template() {
39
- return template(templateHtml);
40
- }
62
+ private static readonly template = template(templateHtml)
41
63
 
42
- get label() {
43
- return this._label || 'Gcore player ver. ' + process.env.VERSION;
64
+ private get label() {
65
+ return this._label || 'Gcore player ver. ' + version().gplayer
44
66
  }
45
67
 
46
- get url() {
47
- return this._url || 'https://gcore.com/';
68
+ private get url() {
69
+ return this._url || 'https://gcore.com/'
48
70
  }
49
71
 
50
- get exposeVersion() {
72
+ private get exposeVersion() {
51
73
  return {
52
74
  label: this.label,
53
- name: 'version'
54
- };
75
+ name: 'version',
76
+ }
55
77
  }
56
78
 
79
+ /**
80
+ * @internal
81
+ */
57
82
  override get events() {
58
83
  return {
59
- 'click [data-version]': 'onOpenMainPage'
60
- };
84
+ 'click [data-version]': 'onOpenMainPage',
85
+ }
61
86
  }
62
87
 
63
- constructor(core: Core) {
64
- super(core);
88
+ constructor(container: Container) {
89
+ super(container)
65
90
  if (this.options.contextMenu && this.options.contextMenu.label) {
66
- this._label = this.options.contextMenu.label;
91
+ this._label = this.options.contextMenu.label
67
92
  }
68
93
  if (this.options.contextMenu && this.options.contextMenu.url) {
69
- this._url = this.options.contextMenu.url;
94
+ this._url = this.options.contextMenu.url
70
95
  }
71
- this.render();
72
- this.bindEvents();
96
+ this.render()
97
+ this.bindEvents()
73
98
  }
74
99
 
100
+ /**
101
+ * @internal
102
+ */
75
103
  override bindEvents() {
76
- if (this.mediaControl) {
77
- this.listenTo(this.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.containerChanged);
78
-
79
- if (this.container) {
80
- this.listenTo(this.container, Events.CONTAINER_CONTEXTMENU, this.toggleContextMenu);
81
- this.listenTo(this.container, Events.CONTAINER_CLICK, this.hide);
82
- }
83
- }
84
- $('body').on('click', this.hide.bind(this));
85
- }
86
-
104
+ this.listenTo(
105
+ this.container,
106
+ Events.CONTAINER_CONTEXTMENU,
107
+ this.toggleContextMenu,
108
+ )
109
+ this.listenTo(this.container, Events.CONTAINER_CLICK, this.hide)
110
+ $('body').on('click', this.hideOnBodyClick)
111
+ }
112
+
113
+ /**
114
+ * @internal
115
+ */
87
116
  override destroy() {
88
- $('body').off('click', this.hide.bind(this));
89
- // @ts-ignore
90
- this.stopListening();
91
- return super.destroy();
92
- }
93
-
94
- private containerChanged() {
95
- this.container = this.core.activeContainer;
96
- // @ts-ignore
97
- this.stopListening();
98
- this.bindEvents();
117
+ $('body').off('click', this.hideOnBodyClick)
118
+ return super.destroy()
99
119
  }
100
120
 
101
121
  private toggleContextMenu(event: MouseEvent) {
102
- event.preventDefault();
103
- const offset = this.container?.$el.offset();
122
+ event.preventDefault()
123
+ const offset = this.container?.$el.offset()
104
124
 
105
- this.show(event.pageY - offset.top, event.pageX - offset.left);
125
+ this.show(event.pageY - offset.top, event.pageX - offset.left)
106
126
  }
107
127
 
108
128
  private show(top: number, left: number) {
109
- this.hide();
110
- if (this.options.contextMenu && this.options.contextMenu.preventShowContextMenu) {
111
- return;
129
+ this.hide()
130
+ if (
131
+ this.options.contextMenu &&
132
+ this.options.contextMenu.preventShowContextMenu
133
+ ) {
134
+ return
112
135
  }
113
- this.$el.css({ top, left });
114
- this.$el.show();
136
+ this.$el.css({ top, left })
137
+ this.$el.show()
115
138
  }
116
139
 
117
140
  private hide() {
118
- this.$el.hide();
141
+ this.$el.hide()
119
142
  }
120
143
 
121
144
  private onOpenMainPage() {
122
- window.open(this.url, '_blank');
145
+ window.open(this.url, '_blank')
123
146
  }
124
147
 
148
+ /**
149
+ * @internal
150
+ */
125
151
  override render() {
126
- this.menuOptions = [this.exposeVersion];
127
- this.$el.html(this.template({ options: this.menuOptions }));
128
- this.core.$el.append(this.$el);
129
- this.hide();
130
- this.disable();
152
+ this.menuOptions = [this.exposeVersion]
153
+ this.$el.html(ContextMenu.template({ options: this.menuOptions }))
154
+ this.container.$el.append(this.$el) // TODO append to the container, turn into a container plugin
155
+ this.hide()
156
+
157
+ return this
158
+ }
131
159
 
132
- return this;
160
+ private hideOnBodyClick = () => {
161
+ this.hide()
133
162
  }
134
163
  }
@@ -11,8 +11,11 @@ import '../../../assets/dvr-controls/dvr_controls.scss';
11
11
  * @beta
12
12
  *
13
13
  * @remarks
14
- * The plugin is rendered in the {@link MediaControl | media control} UI.
15
- * It renders the live stream indicator and the DVR seek bar if DVR is enabled.
14
+ * Depends on:
15
+ *
16
+ * - {@link MediaControl}
17
+ *
18
+ * The plugin renders the live stream indicator and the DVR seek bar, if DVR is enabled, in the media control UI.
16
19
  */
17
20
  export class DvrControls extends UICorePlugin {
18
21
  private static readonly template = template(dvrHTML);
@@ -21,7 +24,7 @@ export class DvrControls extends UICorePlugin {
21
24
  * @internal
22
25
  */
23
26
  get name() {
24
- return 'media_control_dvr';
27
+ return 'dvr_controls';
25
28
  }
26
29
 
27
30
  /**
@@ -59,35 +62,16 @@ export class DvrControls extends UICorePlugin {
59
62
  * @internal
60
63
  */
61
64
  override bindEvents() {
62
- this.bindCoreEvents();
63
- this.bindContainerEvents();
64
-
65
- if (this.core.activeContainer) {
66
- this.listenTo(this.core.activeContainer, Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.dvrChanged);
67
- }
68
- }
69
-
70
- private bindCoreEvents() {
71
- if (this.core.mediaControl.settings) {
72
- this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.containerChanged);
73
- this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_RENDERED, this.settingsUpdate);
74
- this.listenTo(this.core, Events.CORE_OPTIONS_CHANGE, this.render);
75
- } else {
76
- setTimeout(() => this.bindCoreEvents(), 100);
77
- }
65
+ const mediaControl = this.core.getPlugin('media_control');
66
+ assert(mediaControl, 'media_control plugin is required');
67
+ this.listenTo(mediaControl, Events.MEDIACONTROL_RENDERED, this.settingsUpdate);
68
+ this.listenTo(this.core, Events.CORE_OPTIONS_CHANGE, this.render);
69
+ this.listenTo(this.core, Events.CORE_ACTIVE_CONTAINER_CHANGED, this.bindContainerEvents);
78
70
  }
79
71
 
80
72
  private bindContainerEvents() {
81
- if (this.core.activeContainer) {
82
- this.listenToOnce(this.core.activeContainer, Events.CONTAINER_TIMEUPDATE, this.render);
83
- this.listenTo(this.core.activeContainer, Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.dvrChanged);
84
- }
85
- }
86
-
87
- private containerChanged() {
88
- // @ts-ignore
89
- this.stopListening();
90
- this.bindEvents();
73
+ this.listenToOnce(this.core.activeContainer, Events.CONTAINER_TIMEUPDATE, this.render);
74
+ this.listenTo(this.core.activeContainer, Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.dvrChanged);
91
75
  }
92
76
 
93
77
  private dvrChanged(dvrEnabled: boolean) {
@@ -124,7 +108,7 @@ export class DvrControls extends UICorePlugin {
124
108
  private settingsUpdate() {
125
109
  // @ts-ignore
126
110
  this.stopListening(); // TODO sort out
127
- this.core.mediaControl.$el.removeClass('live');
111
+ this.core.getPlugin('media_control').$el.removeClass('live'); // TODO don't access directly
128
112
  if (this.shouldRender()) {
129
113
  this.render();
130
114
  this.$el.click(() => this.click());
@@ -147,7 +131,7 @@ export class DvrControls extends UICorePlugin {
147
131
  backToLive: this.core.i18n.t('back_to_live')
148
132
  }));
149
133
  if (this.shouldRender()) {
150
- const mediaControl = this.core.mediaControl;
134
+ const mediaControl = this.core.getPlugin('media_control');
151
135
  assert(mediaControl, 'media_control plugin is required');
152
136
  // TODO don't tap into the $el directly
153
137
  mediaControl.$el.addClass('live');
@@ -29,6 +29,10 @@ type PresentationalError = {
29
29
 
30
30
  const T = 'plugins.error_screen'
31
31
 
32
+ /**
33
+ * Displays a descriptive error in the overlay on top of the player.
34
+ * @beta
35
+ */
32
36
  export class ErrorScreen extends UICorePlugin {
33
37
  private _retry = 0;
34
38
 
@@ -12,6 +12,10 @@ const FAVICON_SELECTOR = 'link[rel="shortcut icon"]';
12
12
 
13
13
  // const oldIcon = $(FAVICON_SELECTOR);
14
14
 
15
+ /**
16
+ * The plugin adds custom favicon to the player's tab.
17
+ * @beta
18
+ */
15
19
  export class Favicon extends CorePlugin {
16
20
  private _container: Container | null = null;
17
21
 
@@ -1,6 +1,6 @@
1
1
  // Copyright 2014 Globo.com Player authors. All rights reserved.
2
2
  // Use of this source code is governed by a BSD-style
3
- // license that can be found in the LICENSE file.
3
+ // license that can be found at https://github.com/clappr/clappr-plugins/blob/master/LICENSE
4
4
 
5
5
  import { Container, ContainerPlugin, Events } from '@clappr/core';
6
6
 
@@ -10,6 +10,10 @@ declare const _gaq: {
10
10
  push(args: string[]): void;
11
11
  };
12
12
 
13
+ /**
14
+ * An example Google Analytics integration plugin
15
+ * @beta
16
+ */
13
17
  export class GoogleAnalytics extends ContainerPlugin {
14
18
  private account: string = '';
15
19
 
@@ -14,7 +14,6 @@ export * from "./clappr-stats/ClapprStats.js";
14
14
  export * from "./click-to-pause/ClickToPause.js";
15
15
  export * from "./clips/Clips.js";
16
16
  export * from "./context-menu/ContextMenu.js";
17
- export * from "./disable-controls/DisableControls.js";
18
17
  export * from "./dvr-controls/DvrControls.js";
19
18
  export * from "./error-screen/ErrorScreen.js";
20
19
  export * from "./favicon/Favicon.js";
@@ -31,12 +30,11 @@ export * from "./poster/Poster.js";
31
30
  export * from "./seek-time/SeekTime.js";
32
31
  export * from "./share/Share.js";
33
32
  export * from "./skip-time/SkipTime.js";
33
+ export * from "./source-controller/SourceController.js";
34
34
  export * from "./spinner-three-bounce/SpinnerThreeBounce.js";
35
- export * from "./statistics/Statistics.js";
36
35
  export * from "./subtitles/Subtitles.js";
36
+ export * from "./telemetry/Telemetry.js";
37
37
  export * from "./thumbnails/Thumbnails.js";
38
- export { setTracer} from "@gcorevideo/utils";
39
- export * from "./source-controller/SourceController.js";
40
38
  // _ vast-ads
41
39
  // _ video360
42
40
  export * from "./volume-fade/VolumeFade.js";
@@ -44,6 +44,7 @@ describe('LevelSelector', () => {
44
44
  const activeContainer = createContainer()
45
45
  activePlayback = createPlayback()
46
46
  let mediaControl: UICorePlugin | null = null
47
+ let bottomGear: UICorePlugin | null = null
47
48
  core = Object.assign(new EventLite(), {
48
49
  activeContainer,
49
50
  activePlayback,
@@ -57,10 +58,14 @@ describe('LevelSelector', () => {
57
58
  if (name === 'media_control') {
58
59
  return mediaControl
59
60
  }
61
+ if (name === 'bottom_gear') {
62
+ return bottomGear
63
+ }
60
64
  return null
61
65
  }),
62
66
  })
63
67
  mediaControl = createMediaControl(core)
68
+ bottomGear = createBottomGear(core)
64
69
  levelSelector = new LevelSelector(core)
65
70
  })
66
71
  describe('initially', () => {
@@ -71,29 +76,15 @@ describe('LevelSelector', () => {
71
76
  await clock.tickAsync(1)
72
77
  })
73
78
  it('should render the proper level label', () => {
79
+ // @ts-ignore
74
80
  expect(levelSelector.el.textContent).toMatchQualityLevelLabel('Auto')
75
81
  })
76
82
  })
77
83
  describe.each([
78
- [
79
- 'auto',
80
- LEVELS,
81
- -1,
82
- 'Auto',
83
- ],
84
- [
85
- 'standard label',
86
- LEVELS,
87
- 0,
88
- '360p',
89
- ],
90
- [
91
- 'custom label',
92
- LEVELS,
93
- 1,
94
- 'HD',
95
- ],
96
- ])("%s", (_, levels, current, label) => {
84
+ ['auto', LEVELS, -1, 'Auto'],
85
+ ['standard label', LEVELS, 0, '360p'],
86
+ ['custom label', LEVELS, 1, 'HD'],
87
+ ])('%s', (_, levels, current, label) => {
97
88
  beforeEach(async () => {
98
89
  core.emit('core:active:container:changed')
99
90
  await clock.tickAsync(1)
@@ -102,14 +93,19 @@ describe('LevelSelector', () => {
102
93
  await clock.tickAsync(1)
103
94
  levelSelector.$el.find('.gear-option').click()
104
95
  await clock.tickAsync(1)
105
- levelSelector.$el.find(`.gear-sub-menu_btn[data-id="${current}"]`).click()
96
+ levelSelector.$el
97
+ .find(`.gear-sub-menu_btn[data-id="${current}"]`)
98
+ .click()
106
99
  await clock.tickAsync(1)
107
100
  })
108
101
  it('should render the proper level labels', () => {
109
102
  expect(levelSelector.el.innerHTML).toMatchSnapshot()
110
103
  })
111
104
  it('should render the selected level', () => {
112
- expect(levelSelector.$el.find('ul.gear-sub-menu .current')[0].textContent).toMatchQualityLevelOption(label)
105
+ expect(
106
+ levelSelector.$el.find('ul.gear-sub-menu .current')[0].textContent,
107
+ // @ts-ignore
108
+ ).toMatchQualityLevelOption(label)
113
109
  })
114
110
  })
115
111
  })
@@ -118,6 +114,7 @@ describe('LevelSelector', () => {
118
114
  const activeContainer = createContainer()
119
115
  activePlayback = createPlayback()
120
116
  let mediaControl: UICorePlugin | null = null
117
+ let bottomGear: UICorePlugin | null = null
121
118
  core = Object.assign(new EventLite(), {
122
119
  activeContainer,
123
120
  activePlayback,
@@ -131,10 +128,14 @@ describe('LevelSelector', () => {
131
128
  if (name === 'media_control') {
132
129
  return mediaControl
133
130
  }
131
+ if (name === 'bottom_gear') {
132
+ return bottomGear
133
+ }
134
134
  return null
135
135
  }),
136
136
  })
137
137
  mediaControl = createMediaControl(core)
138
+ bottomGear = createBottomGear(core)
138
139
  levelSelector = new LevelSelector(core)
139
140
  })
140
141
  describe('basically', () => {
@@ -146,7 +147,8 @@ describe('LevelSelector', () => {
146
147
  })
147
148
  it('should render the restricted quality level label', () => {
148
149
  expect(
149
- levelSelector.el.textContent
150
+ levelSelector.el.textContent,
151
+ // @ts-ignore
150
152
  ).toMatchQualityLevelLabel('360p')
151
153
 
152
154
  expect(levelSelector.el.innerHTML).toMatchSnapshot()
@@ -185,7 +187,10 @@ describe('LevelSelector', () => {
185
187
  expect(levelSelector.el.innerHTML).toMatchSnapshot()
186
188
  })
187
189
  it('should properly apply the restriction', () => {
188
- expect(levelSelector.$el.find('li:not(.level-disabled)')[0].textContent).toMatchQualityLevelOption('360p')
190
+ expect(
191
+ levelSelector.$el.find('li:not(.level-disabled)')[0].textContent,
192
+ // @ts-ignore
193
+ ).toMatchQualityLevelOption('360p')
189
194
  })
190
195
  })
191
196
  })
@@ -217,7 +222,10 @@ expect.extend({
217
222
  .trim()
218
223
  return {
219
224
  pass: rendered.includes(`Quality ${expected}`),
220
- message: () => `Quality label must${isNot ? ' not' : ''} be ${expected} in "${rendered}"`,
225
+ message: () =>
226
+ `Quality label must${
227
+ isNot ? ' not' : ''
228
+ } be ${expected} in "${rendered}"`,
221
229
  }
222
230
  },
223
231
  toMatchQualityLevelOption(received, expected) {
@@ -228,13 +236,26 @@ expect.extend({
228
236
  .trim()
229
237
  return {
230
238
  pass: rendered === expected,
231
- message: () => `Quality option must${isNot ? ' not' : ''} be ${expected} in "${rendered}"`,
239
+ message: () =>
240
+ `Quality option must${
241
+ isNot ? ' not' : ''
242
+ } be ${expected} in "${rendered}"`,
232
243
  }
233
- }
244
+ },
234
245
  })
235
246
 
236
247
  function createMediaControl(core: any) {
237
248
  const mediaControl = new UICorePlugin(core)
249
+ // @ts-ignore
238
250
  mediaControl.getElement = vi.fn().mockReturnValue(null)
239
251
  return mediaControl
240
252
  }
253
+
254
+ function createBottomGear(core: any) {
255
+ const bottomGear = new UICorePlugin(core)
256
+ // @ts-ignore
257
+ bottomGear.getElement = vi.fn().mockReturnValue(null)
258
+ // @ts-ignore
259
+ bottomGear.setContent = vi.fn()
260
+ return bottomGear
261
+ }