@gcorevideo/player 2.18.3 → 2.19.0

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 (349) hide show
  1. package/assets/audio-selector/style.scss +156 -0
  2. package/assets/audio-selector/track-selector.ejs +12 -0
  3. package/assets/big-mute-button/big-mute-button.ejs +3 -0
  4. package/assets/big-mute-button/big-mute-button.scss +57 -0
  5. package/assets/bottom-gear/bottomgear.ejs +12 -0
  6. package/assets/bottom-gear/gear-sub-menu.scss +95 -0
  7. package/assets/bottom-gear/gear.scss +79 -0
  8. package/assets/clappr-nerd-stats/button.ejs +4 -0
  9. package/assets/clappr-nerd-stats/clappr-nerd-stats.ejs +212 -0
  10. package/assets/clappr-nerd-stats/clappr-nerd-stats.scss +488 -0
  11. package/assets/clappr-nerd-stats/options-list.ejs +9 -0
  12. package/assets/clappr-nerd-stats/settings.ejs +12 -0
  13. package/assets/clappr-nerd-stats/speedtest/speedtest.worker.js +775 -0
  14. package/assets/clips/clips.scss +3 -0
  15. package/assets/context-menu/context_menu.ejs +8 -0
  16. package/assets/context-menu/context_menu.scss +31 -0
  17. package/assets/dvr-controls/dvr_controls.scss +136 -0
  18. package/assets/dvr-controls/index.ejs +2 -0
  19. package/assets/error-screen/error_screen.ejs +13 -0
  20. package/assets/error-screen/error_screen.scss +40 -0
  21. package/assets/icons/new/arrow-left.svg +5 -0
  22. package/assets/icons/new/arrow-right.svg +5 -0
  23. package/assets/icons/new/check.svg +5 -0
  24. package/assets/icons/new/close.svg +12 -0
  25. package/assets/icons/new/full.svg +8 -0
  26. package/assets/icons/new/fullscreen-off.svg +14 -0
  27. package/assets/icons/new/fullscreen-on.svg +14 -0
  28. package/assets/icons/new/gear-hd.svg +16 -0
  29. package/assets/icons/new/gear.svg +12 -0
  30. package/assets/icons/new/hd.svg +8 -0
  31. package/assets/icons/new/pause.svg +5 -0
  32. package/assets/icons/new/pip.svg +5 -0
  33. package/assets/icons/new/play.svg +10 -0
  34. package/assets/icons/new/replayleft.svg +5 -0
  35. package/assets/icons/new/replayright.svg +5 -0
  36. package/assets/icons/new/speed.svg +5 -0
  37. package/assets/icons/new/stats.svg +3 -0
  38. package/assets/icons/new/stop.svg +3 -0
  39. package/assets/icons/new/subtitles-off.svg +5 -0
  40. package/assets/icons/new/subtitles-on.svg +6 -0
  41. package/assets/icons/new/volume-max.svg +5 -0
  42. package/assets/icons/new/volume-min.svg +5 -0
  43. package/assets/icons/new/volume-off.svg +5 -0
  44. package/assets/icons/old/cardboard.svg +4 -0
  45. package/assets/icons/old/close-share.svg +13 -0
  46. package/assets/icons/old/close.svg +13 -0
  47. package/assets/icons/old/fb.svg +13 -0
  48. package/assets/icons/old/fullscreen.svg +12 -0
  49. package/assets/icons/old/language.svg +1 -0
  50. package/assets/icons/old/pause.svg +12 -0
  51. package/assets/icons/old/play.svg +12 -0
  52. package/assets/icons/old/quality-arrow.svg +13 -0
  53. package/assets/icons/old/reload.svg +4 -0
  54. package/assets/icons/old/share.svg +13 -0
  55. package/assets/icons/old/sound-off.svg +15 -0
  56. package/assets/icons/old/sound-on.svg +15 -0
  57. package/assets/icons/old/streams.svg +3 -0
  58. package/assets/icons/old/twitter.svg +13 -0
  59. package/assets/icons/old/wn.svg +15 -0
  60. package/assets/icons/standard/01-play.svg +3 -0
  61. package/assets/icons/standard/02-pause.svg +3 -0
  62. package/assets/icons/standard/03-stop.svg +3 -0
  63. package/assets/icons/standard/04-volume.svg +3 -0
  64. package/assets/icons/standard/05-mute.svg +3 -0
  65. package/assets/icons/standard/06-expand.svg +3 -0
  66. package/assets/icons/standard/07-shrink.svg +3 -0
  67. package/assets/icons/standard/08-hd.svg +3 -0
  68. package/assets/icons/standard/09-cc.svg +8 -0
  69. package/assets/icons/standard/10-reload.svg +4 -0
  70. package/assets/level-selector/button.ejs +8 -0
  71. package/assets/level-selector/list.ejs +22 -0
  72. package/assets/level-selector/style.scss +4 -0
  73. package/assets/logo/styles/logo.scss +10 -0
  74. package/assets/logo/templates/logo.ejs +3 -0
  75. package/assets/media-control/closed-hand.cur +0 -0
  76. package/assets/media-control/container.scss +57 -0
  77. package/assets/media-control/media-control.ejs +133 -0
  78. package/assets/media-control/media-control.scss +390 -0
  79. package/assets/media-control/plugins.scss +94 -0
  80. package/assets/media-control/width270.scss +50 -0
  81. package/assets/media-control/width370.scss +263 -0
  82. package/assets/multi-camera/multicamera.ejs +29 -0
  83. package/assets/multi-camera/style.scss +176 -0
  84. package/assets/picture-in-picture/button.ejs +3 -0
  85. package/assets/picture-in-picture/button.scss +11 -0
  86. package/assets/playback-rate/button.ejs +6 -0
  87. package/assets/playback-rate/list.ejs +14 -0
  88. package/assets/playback-rate/playback-rate-selector.ejs +9 -0
  89. package/assets/poster/poster.ejs +1 -0
  90. package/assets/poster/poster.scss +32 -0
  91. package/assets/seek-time/seek-time.html +2 -0
  92. package/assets/seek-time/seek-time.scss +38 -0
  93. package/assets/share/share.ejs +37 -0
  94. package/assets/share/style.scss +104 -0
  95. package/assets/skip-time/skip-time.ejs +8 -0
  96. package/assets/skip-time/style.scss +24 -0
  97. package/assets/spinner-three-bounce/spinner.ejs +3 -0
  98. package/assets/spinner-three-bounce/spinner.scss +44 -0
  99. package/assets/style/main.scss +50 -0
  100. package/assets/style/theme.scss +42 -0
  101. package/assets/style/variables.scss +7 -0
  102. package/assets/subtitles/combobox copy.ejs +16 -0
  103. package/assets/subtitles/combobox.ejs +16 -0
  104. package/assets/subtitles/string.ejs +3 -0
  105. package/assets/subtitles/style.scss +99 -0
  106. package/assets/thumbnails/scrub-thumbnails.ejs +10 -0
  107. package/assets/thumbnails/style.scss +75 -0
  108. package/assets/vast-ads/style.scss +112 -0
  109. package/assets/video360/button.ejs +1 -0
  110. package/assets/video360/style.scss +8 -0
  111. package/build/vite-raw-plugin.js +18 -0
  112. package/dist/index.js +1 -1
  113. package/dist/plugins/index.css +2164 -0
  114. package/dist/plugins/index.js/index.plugins.js +40837 -0
  115. package/dist/plugins/index.plugins.js +40837 -0
  116. package/lib/index.core.d.ts +15 -0
  117. package/lib/index.core.d.ts.map +1 -0
  118. package/lib/index.core.js +14 -0
  119. package/lib/index.d.ts +2 -14
  120. package/lib/index.d.ts.map +1 -1
  121. package/lib/index.js +2 -14
  122. package/lib/index.plugins.d.ts +38 -0
  123. package/lib/index.plugins.d.ts.map +1 -0
  124. package/lib/index.plugins.js +40 -0
  125. package/lib/plugins/audio-selector/AudioSelector.d.ts +3 -3
  126. package/lib/plugins/audio-selector/AudioSelector.d.ts.map +1 -1
  127. package/lib/plugins/audio-selector/AudioSelector.js +6 -12
  128. package/lib/plugins/big-mute-button/BigMuteButton.d.ts +2 -2
  129. package/lib/plugins/big-mute-button/BigMuteButton.d.ts.map +1 -1
  130. package/lib/plugins/big-mute-button/BigMuteButton.js +7 -12
  131. package/lib/plugins/bottom-gear/BottomGear.d.ts +4 -3
  132. package/lib/plugins/bottom-gear/BottomGear.d.ts.map +1 -1
  133. package/lib/plugins/bottom-gear/BottomGear.js +11 -16
  134. package/lib/plugins/build.d.ts +2 -0
  135. package/lib/plugins/build.d.ts.map +1 -0
  136. package/lib/plugins/build.js +1 -0
  137. package/lib/plugins/clappr-nerd-stats/ClapprNerdStats.d.ts +44 -0
  138. package/lib/plugins/clappr-nerd-stats/ClapprNerdStats.d.ts.map +1 -0
  139. package/lib/plugins/clappr-nerd-stats/ClapprNerdStats.js +294 -0
  140. package/lib/plugins/clappr-nerd-stats/formatter.d.ts +8 -0
  141. package/lib/plugins/clappr-nerd-stats/formatter.d.ts.map +1 -0
  142. package/lib/plugins/clappr-nerd-stats/formatter.js +91 -0
  143. package/lib/plugins/clappr-nerd-stats/speedtest/Speedtest.d.ts +54 -0
  144. package/lib/plugins/clappr-nerd-stats/speedtest/Speedtest.d.ts.map +1 -0
  145. package/lib/plugins/clappr-nerd-stats/speedtest/Speedtest.js +335 -0
  146. package/lib/plugins/clappr-nerd-stats/speedtest/index.d.ts +9 -0
  147. package/lib/plugins/clappr-nerd-stats/speedtest/index.d.ts.map +1 -0
  148. package/lib/plugins/clappr-nerd-stats/speedtest/index.js +154 -0
  149. package/lib/plugins/clappr-nerd-stats/speedtest/types.d.ts +6 -0
  150. package/lib/plugins/clappr-nerd-stats/speedtest/types.d.ts.map +1 -0
  151. package/lib/plugins/clappr-nerd-stats/speedtest/types.js +1 -0
  152. package/lib/plugins/clappr-nerd-stats/types.d.ts +4 -0
  153. package/lib/plugins/clappr-nerd-stats/types.d.ts.map +1 -0
  154. package/lib/plugins/clappr-nerd-stats/types.js +1 -0
  155. package/lib/plugins/clappr-stats/ClapprStats.d.ts +56 -0
  156. package/lib/plugins/clappr-stats/ClapprStats.d.ts.map +1 -0
  157. package/lib/plugins/clappr-stats/ClapprStats.js +332 -0
  158. package/lib/plugins/clappr-stats/types.d.ts +50 -0
  159. package/lib/plugins/clappr-stats/types.d.ts.map +1 -0
  160. package/lib/plugins/clappr-stats/types.js +5 -0
  161. package/lib/plugins/clappr-stats/utils.d.ts +3 -0
  162. package/lib/plugins/clappr-stats/utils.d.ts.map +1 -0
  163. package/lib/plugins/clappr-stats/utils.js +40 -0
  164. package/lib/plugins/click-to-pause/ClickToPause.d.ts +2 -2
  165. package/lib/plugins/click-to-pause/ClickToPause.d.ts.map +1 -1
  166. package/lib/plugins/click-to-pause/ClickToPause.js +4 -6
  167. package/lib/plugins/clips/Clips.d.ts +23 -0
  168. package/lib/plugins/clips/Clips.d.ts.map +1 -0
  169. package/lib/plugins/clips/Clips.js +109 -0
  170. package/lib/plugins/context-menu/ContextMenu.d.ts +36 -0
  171. package/lib/plugins/context-menu/ContextMenu.d.ts.map +1 -0
  172. package/lib/plugins/context-menu/ContextMenu.js +102 -0
  173. package/lib/plugins/disable-controls/DisableControls.d.ts +1 -1
  174. package/lib/plugins/disable-controls/DisableControls.d.ts.map +1 -1
  175. package/lib/plugins/disable-controls/DisableControls.js +3 -5
  176. package/lib/plugins/dvr-controls/DVRControls.d.ts +4 -4
  177. package/lib/plugins/dvr-controls/DVRControls.d.ts.map +1 -1
  178. package/lib/plugins/dvr-controls/DVRControls.js +5 -4
  179. package/lib/plugins/error-screen/ErrorScreen.d.ts +44 -0
  180. package/lib/plugins/error-screen/ErrorScreen.d.ts.map +1 -0
  181. package/lib/plugins/error-screen/ErrorScreen.js +179 -0
  182. package/lib/plugins/favicon/Favicon.d.ts +24 -0
  183. package/lib/plugins/favicon/Favicon.d.ts.map +1 -0
  184. package/lib/plugins/favicon/Favicon.js +106 -0
  185. package/lib/plugins/google-analytics/GoogleAnalytics.d.ts +30 -0
  186. package/lib/plugins/google-analytics/GoogleAnalytics.d.ts.map +1 -0
  187. package/lib/plugins/google-analytics/GoogleAnalytics.js +114 -0
  188. package/lib/plugins/index.d.ts +38 -0
  189. package/lib/plugins/index.d.ts.map +1 -0
  190. package/lib/plugins/index.js +40 -0
  191. package/lib/plugins/kibo/index.d.ts +23 -0
  192. package/lib/plugins/kibo/index.d.ts.map +1 -0
  193. package/lib/plugins/kibo/index.js +199 -0
  194. package/lib/plugins/level-selector/LevelSelector.d.ts +48 -17
  195. package/lib/plugins/level-selector/LevelSelector.d.ts.map +1 -1
  196. package/lib/plugins/level-selector/LevelSelector.js +169 -155
  197. package/lib/plugins/logo/Logo.d.ts +29 -0
  198. package/lib/plugins/logo/Logo.d.ts.map +1 -0
  199. package/lib/plugins/logo/Logo.js +181 -0
  200. package/lib/plugins/logo/utils/index.d.ts +22 -0
  201. package/lib/plugins/logo/utils/index.d.ts.map +1 -0
  202. package/lib/plugins/logo/utils/index.js +32 -0
  203. package/lib/plugins/media-control/MediaControl.d.ts +20 -25
  204. package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
  205. package/lib/plugins/media-control/MediaControl.js +136 -106
  206. package/lib/plugins/multi-camera/MultiCamera.d.ts +59 -0
  207. package/lib/plugins/multi-camera/MultiCamera.d.ts.map +1 -0
  208. package/lib/plugins/multi-camera/MultiCamera.js +353 -0
  209. package/lib/plugins/picture-in-picture/PictureInPicture.d.ts +20 -0
  210. package/lib/plugins/picture-in-picture/PictureInPicture.d.ts.map +1 -0
  211. package/lib/plugins/picture-in-picture/PictureInPicture.js +68 -0
  212. package/lib/plugins/playback-rate/PlaybackRate.d.ts +42 -0
  213. package/lib/plugins/playback-rate/PlaybackRate.d.ts.map +1 -0
  214. package/lib/plugins/playback-rate/PlaybackRate.js +205 -0
  215. package/lib/plugins/poster/Poster.d.ts +18 -17
  216. package/lib/plugins/poster/Poster.d.ts.map +1 -1
  217. package/lib/plugins/poster/Poster.js +83 -37
  218. package/lib/plugins/seek-time/SeekTime.d.ts +38 -0
  219. package/lib/plugins/seek-time/SeekTime.d.ts.map +1 -0
  220. package/lib/plugins/seek-time/SeekTime.js +153 -0
  221. package/lib/plugins/share/Share.d.ts +38 -0
  222. package/lib/plugins/share/Share.d.ts.map +1 -0
  223. package/lib/plugins/share/Share.js +122 -0
  224. package/lib/plugins/skip-time/SkipTime.d.ts +28 -0
  225. package/lib/plugins/skip-time/SkipTime.d.ts.map +1 -0
  226. package/lib/plugins/skip-time/SkipTime.js +86 -0
  227. package/lib/plugins/source-controller/SourceController.d.ts +41 -0
  228. package/lib/plugins/source-controller/SourceController.d.ts.map +1 -0
  229. package/lib/plugins/source-controller/SourceController.js +199 -0
  230. package/lib/plugins/spinner-three-bounce/SpinnerThreeBounce.d.ts +26 -0
  231. package/lib/plugins/spinner-three-bounce/SpinnerThreeBounce.d.ts.map +1 -0
  232. package/lib/plugins/spinner-three-bounce/SpinnerThreeBounce.js +117 -0
  233. package/lib/plugins/statistics/Statistics.d.ts +52 -0
  234. package/lib/plugins/statistics/Statistics.d.ts.map +1 -0
  235. package/lib/plugins/statistics/Statistics.js +130 -0
  236. package/lib/plugins/subtitles/Subtitles.d.ts +61 -0
  237. package/lib/plugins/subtitles/Subtitles.d.ts.map +1 -0
  238. package/lib/plugins/subtitles/Subtitles.js +354 -0
  239. package/lib/plugins/thumbnails/Thumbnails.d.ts +47 -0
  240. package/lib/plugins/thumbnails/Thumbnails.d.ts.map +1 -0
  241. package/lib/plugins/thumbnails/Thumbnails.js +414 -0
  242. package/lib/plugins/types.d.ts +8 -0
  243. package/lib/plugins/types.d.ts.map +1 -0
  244. package/lib/plugins/types.js +1 -0
  245. package/lib/plugins/utils.d.ts +5 -0
  246. package/lib/plugins/utils.d.ts.map +1 -0
  247. package/lib/plugins/utils.js +68 -0
  248. package/lib/plugins/vast-ads/VastAds.d.ts +72 -0
  249. package/lib/plugins/vast-ads/VastAds.d.ts.map +1 -0
  250. package/lib/plugins/vast-ads/VastAds.js +686 -0
  251. package/lib/plugins/vast-ads/loaderxml.d.ts +32 -0
  252. package/lib/plugins/vast-ads/loaderxml.d.ts.map +1 -0
  253. package/lib/plugins/vast-ads/loaderxml.js +226 -0
  254. package/lib/plugins/vast-ads/roll.d.ts +60 -0
  255. package/lib/plugins/vast-ads/roll.d.ts.map +1 -0
  256. package/lib/plugins/vast-ads/roll.js +415 -0
  257. package/lib/plugins/vast-ads/rollmanager.d.ts +62 -0
  258. package/lib/plugins/vast-ads/rollmanager.d.ts.map +1 -0
  259. package/lib/plugins/vast-ads/rollmanager.js +347 -0
  260. package/lib/plugins/vast-ads/sctemanager.d.ts +18 -0
  261. package/lib/plugins/vast-ads/sctemanager.d.ts.map +1 -0
  262. package/lib/plugins/vast-ads/sctemanager.js +116 -0
  263. package/lib/plugins/vast-ads/types.d.ts +12 -0
  264. package/lib/plugins/vast-ads/types.d.ts.map +1 -0
  265. package/lib/plugins/vast-ads/types.js +1 -0
  266. package/lib/plugins/vast-ads/urlhandler.d.ts +4 -0
  267. package/lib/plugins/vast-ads/urlhandler.d.ts.map +1 -0
  268. package/lib/plugins/vast-ads/urlhandler.js +30 -0
  269. package/lib/plugins/vast-ads/xmlhttprequest.d.ts +6 -0
  270. package/lib/plugins/vast-ads/xmlhttprequest.d.ts.map +1 -0
  271. package/lib/plugins/vast-ads/xmlhttprequest.js +39 -0
  272. package/lib/plugins/vast-ads/xmlmerge.d.ts +12 -0
  273. package/lib/plugins/vast-ads/xmlmerge.d.ts.map +1 -0
  274. package/lib/plugins/vast-ads/xmlmerge.js +82 -0
  275. package/lib/plugins/volume-fade/VolumeFade.d.ts +21 -0
  276. package/lib/plugins/volume-fade/VolumeFade.d.ts.map +1 -0
  277. package/lib/plugins/volume-fade/VolumeFade.js +90 -0
  278. package/package.json +10 -2
  279. package/rollup.config.js +32 -2
  280. package/src/index.core.ts +15 -0
  281. package/src/index.plugins.ts +42 -0
  282. package/src/index.ts +2 -15
  283. package/src/plugins/audio-selector/AudioSelector.ts +370 -0
  284. package/src/plugins/big-mute-button/BigMuteButton.ts +187 -0
  285. package/src/plugins/bottom-gear/BottomGear.ts +122 -0
  286. package/src/plugins/build.ts +1 -0
  287. package/src/plugins/clappr-nerd-stats/ClapprNerdStats.ts +369 -0
  288. package/src/plugins/clappr-nerd-stats/formatter.ts +109 -0
  289. package/src/plugins/clappr-nerd-stats/speedtest/Speedtest.ts +414 -0
  290. package/src/plugins/clappr-nerd-stats/speedtest/index.ts +183 -0
  291. package/src/plugins/clappr-nerd-stats/speedtest/types.ts +5 -0
  292. package/src/plugins/clappr-nerd-stats/types.ts +3 -0
  293. package/src/plugins/clappr-stats/ClapprStats.ts +441 -0
  294. package/src/plugins/clappr-stats/types.ts +52 -0
  295. package/src/plugins/clappr-stats/utils.ts +42 -0
  296. package/src/plugins/click-to-pause/ClickToPause.ts +93 -0
  297. package/src/plugins/clips/Clips.ts +152 -0
  298. package/src/plugins/context-menu/ContextMenu.ts +134 -0
  299. package/src/plugins/disable-controls/DisableControls.ts +81 -0
  300. package/src/plugins/dvr-controls/DvrControls.ts +131 -0
  301. package/src/plugins/error-screen/ErrorScreen.ts +241 -0
  302. package/src/plugins/favicon/Favicon.ts +137 -0
  303. package/src/plugins/ga-events/GaEvents.js +395 -0
  304. package/src/plugins/ga-events/ga-tracking.js +46 -0
  305. package/src/plugins/google-analytics/GoogleAnalytics.ts +147 -0
  306. package/src/plugins/index.ts +42 -0
  307. package/src/plugins/kibo/index.ts +244 -0
  308. package/src/plugins/level-selector/LevelSelector.ts +400 -0
  309. package/src/plugins/level-selector/__tests__/LevelSelector.test.ts +72 -0
  310. package/src/plugins/level-selector/__tests__/__snapshots__/LevelSelector.test.ts.snap +11 -0
  311. package/src/plugins/logo/Logo.ts +233 -0
  312. package/src/plugins/logo/utils/index.ts +46 -0
  313. package/src/plugins/media-control/MediaControl.ts +1383 -0
  314. package/src/plugins/multi-camera/MultiCamera copy.xts +414 -0
  315. package/src/plugins/multi-camera/MultiCamera.ts +426 -0
  316. package/src/plugins/picture-in-picture/PictureInPicture.ts +87 -0
  317. package/src/plugins/playback-rate/PlaybackRate.ts +269 -0
  318. package/src/plugins/poster/Poster.ts +298 -0
  319. package/src/plugins/seek-time/SeekTime.ts +191 -0
  320. package/src/plugins/share/Share.ts +148 -0
  321. package/src/plugins/skip-time/SkipTime.ts +109 -0
  322. package/src/plugins/source-controller/SourceController.ts +239 -0
  323. package/src/plugins/source-controller/__tests__/SourceController.test.ts +230 -0
  324. package/src/plugins/spinner-three-bounce/SpinnerThreeBounce.ts +135 -0
  325. package/src/plugins/statistics/Statistics copy.xts +296 -0
  326. package/src/plugins/statistics/Statistics.ts +207 -0
  327. package/src/plugins/subtitles/Subtitles.ts +505 -0
  328. package/src/plugins/thumbnails/Thumbnails.ts +530 -0
  329. package/src/plugins/types.ts +7 -0
  330. package/src/plugins/typings/globals.d.ts +10 -0
  331. package/src/plugins/typings/parse-srt.d.ts +14 -0
  332. package/src/plugins/typings/workers.d.ts +3 -0
  333. package/src/plugins/utils.ts +77 -0
  334. package/src/plugins/vast-ads/VastAds.ts +915 -0
  335. package/src/plugins/vast-ads/loaderxml.ts +260 -0
  336. package/src/plugins/vast-ads/roll.ts +492 -0
  337. package/src/plugins/vast-ads/rollmanager.ts +403 -0
  338. package/src/plugins/vast-ads/sctemanager.ts +134 -0
  339. package/src/plugins/vast-ads/types.ts +14 -0
  340. package/src/plugins/vast-ads/urlhandler.ts +37 -0
  341. package/src/plugins/vast-ads/xmlhttprequest.ts +44 -0
  342. package/src/plugins/vast-ads/xmlmerge.ts +96 -0
  343. package/src/plugins/video360/VRControls.js +104 -0
  344. package/src/plugins/video360/VREffect.js +422 -0
  345. package/src/plugins/video360/Video360.js +979 -0
  346. package/src/plugins/video360/orbit-oriention-controls.js +1002 -0
  347. package/src/plugins/video360/utils.js +49 -0
  348. package/src/plugins/volume-fade/VolumeFade.ts +109 -0
  349. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,52 @@
1
+ import { Container, ContainerPlugin } from '@clappr/core';
2
+ import type { PlaybackType } from '../..//types';
3
+ type StatisticsEventData = Record<string, string | number | boolean>;
4
+ type StatisticsRecord = {
5
+ event: StatisticsEvent;
6
+ type: PlaybackType;
7
+ } & StatisticsEventData;
8
+ export type PluginSettings = {
9
+ /**
10
+ * Sends the statistics record to the storage.
11
+ * The actual delivery is presumably async and batched.
12
+ * @param data - The statistics record to send.
13
+ */
14
+ send: (data: StatisticsRecord) => void;
15
+ };
16
+ type StatisticsEvent = 'init' | 'start' | 'watch' | 'heatmap';
17
+ export declare class Statistics extends ContainerPlugin {
18
+ get name(): string;
19
+ get supportedVersion(): {
20
+ min: string;
21
+ };
22
+ private started;
23
+ private timeStart;
24
+ private heatmapSent;
25
+ private heatmapLastTime;
26
+ private watchSent;
27
+ private bufTracking;
28
+ private lags;
29
+ /**
30
+ * The time when buffering last started.
31
+ */
32
+ private bufLastStarted;
33
+ /**
34
+ * The accumulated buffering duration.
35
+ */
36
+ private bufAccDuration;
37
+ constructor(container: Container);
38
+ bindEvents(): void;
39
+ private startLevelSwitch;
40
+ private stopLevelSwitch;
41
+ private onBuffering;
42
+ private onBufferFull;
43
+ private onReady;
44
+ private initEvent;
45
+ private sendMessage;
46
+ private send;
47
+ private sendHeatmap;
48
+ private onTimeUpdateLive;
49
+ private onStart;
50
+ }
51
+ export {};
52
+ //# sourceMappingURL=Statistics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Statistics.d.ts","sourceRoot":"","sources":["../../../src/plugins/statistics/Statistics.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAoB,MAAM,cAAc,CAAA;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAYhD,KAAK,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;AAEpE,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,eAAe,CAAA;IACtB,IAAI,EAAE,YAAY,CAAA;CACnB,GAAG,mBAAmB,CAAA;AAEvB,MAAM,MAAM,cAAc,GAAG;IAC3B;;;;OAIG;IACH,IAAI,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAA;CACvC,CAAA;AAED,KAAK,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAA;AAG7D,qBAAa,UAAW,SAAQ,eAAe;IAC7C,IAAI,IAAI,WAEP;IAED,IAAI,gBAAgB;;MAEnB;IAED,OAAO,CAAC,OAAO,CAAQ;IAEvB,OAAO,CAAC,SAAS,CAAI;IAErB,OAAO,CAAC,WAAW,CAAQ;IAE3B,OAAO,CAAC,eAAe,CAAI;IAE3B,OAAO,CAAC,SAAS,CAAQ;IAEzB,OAAO,CAAC,WAAW,CAAQ;IAE3B,OAAO,CAAC,IAAI,CAAI;IAEhB;;OAEG;IACH,OAAO,CAAC,cAAc,CAAI;IAE1B;;OAEG;IACH,OAAO,CAAC,cAAc,CAAI;gBAEd,SAAS,EAAE,SAAS;IASvB,UAAU;IAoCnB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,OAAO;CAOhB"}
@@ -0,0 +1,130 @@
1
+ // An example implementation of client side performancestatistics
2
+ import { ContainerPlugin, Events, Playback } from '@clappr/core';
3
+ import { reportError } from '@gcorevideo/utils';
4
+ import assert from 'assert';
5
+ import { CLAPPR_VERSION } from '../build.js';
6
+ const CUSTOM_EVENTS_CONTAINER_START = 'container:start';
7
+ const WATCH_CUTOFF = 5;
8
+ const HEATMAP_INTERVAL = 10;
9
+ // TODO rewrite as core plugin
10
+ export class Statistics extends ContainerPlugin {
11
+ get name() {
12
+ return 'statistics_gplayer';
13
+ }
14
+ get supportedVersion() {
15
+ return { min: CLAPPR_VERSION };
16
+ }
17
+ started = false;
18
+ timeStart = 0;
19
+ heatmapSent = false;
20
+ heatmapLastTime = 0;
21
+ watchSent = false;
22
+ bufTracking = false;
23
+ lags = 0;
24
+ /**
25
+ * The time when buffering last started.
26
+ */
27
+ bufLastStarted = 0;
28
+ /**
29
+ * The accumulated buffering duration.
30
+ */
31
+ bufAccDuration = 0;
32
+ constructor(container) {
33
+ super(container);
34
+ assert(this.options.statistics &&
35
+ typeof this.options.statistics.send === 'function', 'Statistics plugin requires statistics options');
36
+ }
37
+ bindEvents() {
38
+ // TODO remove this
39
+ this.listenToOnce(this.container, CUSTOM_EVENTS_CONTAINER_START, this.onStart);
40
+ this.listenToOnce(this.container, Events.CONTAINER_READY, this.onReady);
41
+ this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERING, this.onBuffering);
42
+ this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERFULL, this.onBufferFull);
43
+ this.listenTo(this.container.playback, Events.PLAYBACK_TIMEUPDATE, this.onTimeUpdateLive);
44
+ this.listenTo(this.container.playback, Events.PLAYBACK_LEVEL_SWITCH_START, this.startLevelSwitch);
45
+ this.listenTo(this.container.playback, Events.PLAYBACK_LEVEL_SWITCH_END, this.stopLevelSwitch);
46
+ }
47
+ startLevelSwitch() {
48
+ this.bufTracking = false;
49
+ }
50
+ stopLevelSwitch() {
51
+ this.bufTracking = true;
52
+ }
53
+ onBuffering() {
54
+ if (this.bufTracking) {
55
+ this.bufLastStarted = performance.now();
56
+ }
57
+ }
58
+ onBufferFull() {
59
+ if (this.bufTracking && this.bufLastStarted) {
60
+ this.bufAccDuration += performance.now() - this.bufLastStarted;
61
+ this.lags++;
62
+ }
63
+ this.bufTracking = true;
64
+ }
65
+ onReady() {
66
+ this.initEvent();
67
+ if (this.options.autoPlay) {
68
+ this.onStart();
69
+ }
70
+ }
71
+ initEvent() {
72
+ this.sendMessage('init');
73
+ }
74
+ sendMessage(state) {
75
+ this.send(state, {
76
+ // embed_url: this.options.referer,
77
+ // user_agent: Browser.userAgent
78
+ });
79
+ }
80
+ send(event, data = {}) {
81
+ ;
82
+ this.options.statistics.send({
83
+ event,
84
+ type: this.container.getPlaybackType(),
85
+ ...data,
86
+ });
87
+ }
88
+ sendHeatmap(time) {
89
+ const res = {
90
+ buffering: Math.round(this.bufAccDuration),
91
+ lags: this.lags,
92
+ };
93
+ this.bufAccDuration = 0;
94
+ this.lags = 0;
95
+ if (this.container.getPlaybackType() === Playback.VOD) {
96
+ res.timestamp = time;
97
+ }
98
+ this.send('heatmap', res);
99
+ this.heatmapSent = true;
100
+ this.heatmapLastTime = time;
101
+ }
102
+ onTimeUpdateLive({ current }) {
103
+ // TODO check the `current` values for the live streams
104
+ if (!this.timeStart) {
105
+ this.timeStart = current;
106
+ }
107
+ try {
108
+ const elapsed = current - this.timeStart;
109
+ const heatmapElapsed = current - this.heatmapLastTime;
110
+ // TODO check if the heatmap is only needed for the live streams
111
+ if (!this.heatmapSent || heatmapElapsed >= HEATMAP_INTERVAL) {
112
+ this.sendHeatmap(current);
113
+ }
114
+ if (!this.watchSent && elapsed >= WATCH_CUTOFF) {
115
+ this.watchSent = true;
116
+ this.sendMessage('watch');
117
+ }
118
+ }
119
+ catch (error) {
120
+ reportError(error);
121
+ }
122
+ }
123
+ onStart() {
124
+ if (this.started) {
125
+ return;
126
+ }
127
+ this.started = true;
128
+ this.sendMessage('start');
129
+ }
130
+ }
@@ -0,0 +1,61 @@
1
+ import { UICorePlugin } from '@clappr/core';
2
+ import '../../../assets/subtitles/style.scss';
3
+ import type { ZeptoResult } from '../types.js';
4
+ export declare class Subtitles extends UICorePlugin {
5
+ private currentContainer;
6
+ private currentLevel;
7
+ private currentPlayback;
8
+ private isShowing;
9
+ private tracks;
10
+ private $string;
11
+ get name(): string;
12
+ get supportedVersion(): {
13
+ min: string;
14
+ };
15
+ static get version(): string;
16
+ get template(): any;
17
+ get templateString(): any;
18
+ get attributes(): {
19
+ class: string;
20
+ 'data-subtitles': string;
21
+ };
22
+ get events(): {
23
+ 'click [data-subtitles-select]': string;
24
+ 'click [data-subtitles-button]': string;
25
+ };
26
+ private isPreselectedApplied;
27
+ private track;
28
+ get preselectedLanguage(): string;
29
+ bindEvents(): void;
30
+ unBindEvents(): void;
31
+ private bindPlaybackEvents;
32
+ private getTracks;
33
+ private onStartAd;
34
+ private onFinishAd;
35
+ reload(): void;
36
+ private playerResize;
37
+ hide(): void;
38
+ show(): void;
39
+ private shouldRender;
40
+ private resizeFont;
41
+ render(): this;
42
+ private fillLevels;
43
+ private findLevelBy;
44
+ private selectLevel;
45
+ private onLevelSelect;
46
+ private applyPreselectedSubtitles;
47
+ private onShowLevelSelectMenu;
48
+ private hideSelectLevelMenu;
49
+ private toggleContextMenu;
50
+ buttonElement(): ZeptoResult;
51
+ levelElement(id?: string): ZeptoResult;
52
+ startLevelSwitch(): void;
53
+ stopLevelSwitch(): void;
54
+ selectSubtitles(): void;
55
+ private setSubtitleText;
56
+ private clearSubtitleText;
57
+ private updateCurrentLevel;
58
+ private highlightCurrentSubtitles;
59
+ private renderIcon;
60
+ }
61
+ //# sourceMappingURL=Subtitles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Subtitles.d.ts","sourceRoot":"","sources":["../../../src/plugins/subtitles/Subtitles.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EAIb,MAAM,cAAc,CAAA;AAOrB,OAAO,sCAAsC,CAAA;AAO7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAmB9C,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,gBAAgB,CAAuB;IAE/C,OAAO,CAAC,YAAY,CAA2B;IAE/C,OAAO,CAAC,eAAe,CAA4B;IAEnD,OAAO,CAAC,SAAS,CAAQ;IAEzB,OAAO,CAAC,MAAM,CAA2B;IAEzC,OAAO,CAAC,OAAO,CAAyB;IAExC,IAAI,IAAI,WAEP;IAED,IAAI,gBAAgB;;MAEnB;IAED,MAAM,KAAK,OAAO,WAEjB;IAED,IAAI,QAAQ,QAEX;IAED,IAAI,cAAc,QAEjB;IAED,IAAa,UAAU;;;MAKtB;IAED,IAAa,MAAM;;;MAKlB;IAED,OAAO,CAAC,oBAAoB,CAAQ;IAEpC,OAAO,CAAC,KAAK,CAAiC;IAE9C,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAEQ,UAAU;IAoBnB,YAAY;IAgCZ,OAAO,CAAC,kBAAkB;IA4C1B,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,UAAU;IASlB,MAAM;IAMN,OAAO,CAAC,YAAY;IAoBpB,IAAI;IAWJ,IAAI;IAiBJ,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,UAAU;IAcT,MAAM;IAgCf,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,yBAAyB;IASjC,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,iBAAiB;IAIzB,aAAa,IAAI,WAAW;IAI5B,YAAY,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,WAAW;IAQtC,gBAAgB;IAIhB,eAAe;IAIf,eAAe;IAgDf,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,yBAAyB;IAYjC,OAAO,CAAC,UAAU;CAOnB"}
@@ -0,0 +1,354 @@
1
+ import { Events, UICorePlugin, Browser, template, $, } from '@clappr/core';
2
+ import { reportError } from '@gcorevideo/utils';
3
+ import assert from 'assert';
4
+ import { CLAPPR_VERSION } from '../build.js';
5
+ import '../../../assets/subtitles/style.scss';
6
+ import subtitlesOffIcon from '../../../assets/icons/new/subtitles-off.svg';
7
+ import subtitlesOnIcon from '../../../assets/icons/new/subtitles-on.svg';
8
+ import comboboxHTML from '../../../assets/subtitles/combobox.ejs';
9
+ import stringHTML from '../../../assets/subtitles/string.ejs';
10
+ import { isFullscreen } from '../utils.js';
11
+ const VERSION = '0.0.1';
12
+ const LOCAL_STORAGE_SUBTITLES_ID = 'subtitles_select';
13
+ const T = 'plugins.subtitles';
14
+ const NO_TRACK = { language: 'off' };
15
+ export class Subtitles extends UICorePlugin {
16
+ currentContainer;
17
+ currentLevel;
18
+ currentPlayback;
19
+ isShowing = false;
20
+ tracks;
21
+ $string;
22
+ get name() {
23
+ return 'subtitles';
24
+ }
25
+ get supportedVersion() {
26
+ return { min: CLAPPR_VERSION };
27
+ }
28
+ static get version() {
29
+ return VERSION;
30
+ }
31
+ get template() {
32
+ return template(comboboxHTML);
33
+ }
34
+ get templateString() {
35
+ return template(stringHTML);
36
+ }
37
+ get attributes() {
38
+ return {
39
+ class: this.name,
40
+ 'data-subtitles': '',
41
+ };
42
+ }
43
+ get events() {
44
+ return {
45
+ 'click [data-subtitles-select]': 'onLevelSelect',
46
+ 'click [data-subtitles-button]': 'onShowLevelSelectMenu',
47
+ };
48
+ }
49
+ isPreselectedApplied = false;
50
+ track = { ...NO_TRACK };
51
+ get preselectedLanguage() {
52
+ return this.core.options.subtitles?.language ?? 'off';
53
+ }
54
+ bindEvents() {
55
+ this.listenTo(this.core, Events.CORE_RESIZE, this.playerResize);
56
+ this.listenToOnce(this.core, Events.CORE_READY, this.bindPlaybackEvents);
57
+ this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.reload);
58
+ this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_RENDERED, this.render);
59
+ this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_HIDE, this.hideSelectLevelMenu);
60
+ }
61
+ unBindEvents() {
62
+ // @ts-ignore
63
+ this.stopListening(this.core, Events.CORE_READY);
64
+ // @ts-ignore
65
+ this.stopListening(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED);
66
+ // @ts-ignore
67
+ this.stopListening(this.core.mediaControl, Events.MEDIACONTROL_RENDERED);
68
+ // @ts-ignore
69
+ this.stopListening(this.core.mediaControl, Events.MEDIACONTROL_HIDE);
70
+ // @ts-ignore
71
+ this.stopListening(this.core.mediaControl, Events.MEDIACONTROL_SHOW);
72
+ if (this.currentContainer) {
73
+ // @ts-ignore
74
+ this.stopListening(this.currentContainer, Events.CONTAINER_FULLSCREEN);
75
+ // @ts-ignore
76
+ this.stopListening(this.currentContainer, 'container:advertisement:start', this.onStartAd);
77
+ // @ts-ignore
78
+ this.stopListening(this.currentContainer, 'container:advertisement:finish', this.onFinishAd);
79
+ }
80
+ }
81
+ bindPlaybackEvents() {
82
+ if (this.currentPlayback &&
83
+ this.currentPlayback === this.core.activePlayback) {
84
+ return;
85
+ }
86
+ this.currentPlayback = this.core.activePlayback;
87
+ this.currentContainer = this.core.activeContainer;
88
+ this.listenTo(this.currentContainer, Events.CONTAINER_FULLSCREEN, this.playerResize);
89
+ this.listenToOnce(this.currentPlayback, Events.PLAYBACK_PLAY, this.getTracks);
90
+ this.listenTo(this.currentContainer, 'container:advertisement:start', this.onStartAd);
91
+ // fix for iOS
92
+ const video = this.currentPlayback?.el;
93
+ assert(video, 'video element is required');
94
+ video.addEventListener('webkitbeginfullscreen', () => {
95
+ if (Browser.isiOS) {
96
+ video.classList.add('ios-fullscreen');
97
+ }
98
+ });
99
+ video.addEventListener('webkitendfullscreen', () => {
100
+ if (Browser.isiOS) {
101
+ video.classList.remove('ios-fullscreen');
102
+ }
103
+ });
104
+ }
105
+ getTracks() {
106
+ if (this.currentPlayback) {
107
+ try {
108
+ const tracks = this.currentPlayback.el.textTracks;
109
+ tracks.length > 0 && this.fillLevels(tracks);
110
+ }
111
+ catch (error) {
112
+ reportError(error);
113
+ }
114
+ }
115
+ }
116
+ onStartAd() {
117
+ if (this.isShowing && this.currentContainer) {
118
+ this.hide();
119
+ this.listenTo(this.currentContainer, 'container:advertisement:finish', this.onFinishAd);
120
+ }
121
+ }
122
+ onFinishAd() {
123
+ this.show();
124
+ this.stopListening(this.currentContainer, 'container:advertisement:finish', this.onFinishAd);
125
+ }
126
+ reload() {
127
+ this.unBindEvents();
128
+ this.bindEvents();
129
+ this.bindPlaybackEvents();
130
+ }
131
+ playerResize() {
132
+ const shouldShow = this.currentContainer &&
133
+ isFullscreen(this.currentContainer.el) &&
134
+ this.currentLevel &&
135
+ this.currentLevel.mode &&
136
+ Browser.isiOS &&
137
+ this.isShowing;
138
+ if (shouldShow) {
139
+ this.show();
140
+ }
141
+ try {
142
+ this.resizeFont();
143
+ }
144
+ catch (error) {
145
+ reportError(error);
146
+ }
147
+ }
148
+ hide() {
149
+ this.isShowing = false;
150
+ this.renderIcon();
151
+ this.$string.hide();
152
+ if (this.tracks) {
153
+ for (const t of this.tracks) {
154
+ t.mode = 'hidden';
155
+ }
156
+ }
157
+ }
158
+ show() {
159
+ this.isShowing = true;
160
+ this.renderIcon();
161
+ if (this.currentContainer &&
162
+ isFullscreen(this.currentContainer.el) &&
163
+ this.currentLevel &&
164
+ this.currentLevel.mode &&
165
+ Browser.isiOS) {
166
+ this.$string.hide();
167
+ this.currentLevel.mode = 'showing';
168
+ }
169
+ else {
170
+ this.$string.show();
171
+ }
172
+ }
173
+ shouldRender() {
174
+ if (!this.currentContainer) {
175
+ return false;
176
+ }
177
+ if (!this.currentPlayback) {
178
+ return false;
179
+ }
180
+ // Only care if we have at least 2 to choose from
181
+ const hasLevels = !!(this.tracks && this.tracks.length > 0);
182
+ return hasLevels;
183
+ }
184
+ resizeFont() {
185
+ if (!this.currentContainer) {
186
+ return;
187
+ }
188
+ if (!this.$string) {
189
+ return;
190
+ }
191
+ const skinWidth = this.currentContainer.$el.width();
192
+ this.$string.find('p').css('font-size', skinWidth * 0.03);
193
+ }
194
+ render() {
195
+ if (this.shouldRender()) {
196
+ this.$el.html(this.template({ tracks: this.tracks }));
197
+ this.currentContainer?.$el.find('.subtitle-string').remove();
198
+ this.$string = $(this.templateString());
199
+ this.resizeFont();
200
+ this.currentContainer?.$el.append(this.$string[0]);
201
+ if (this.core.mediaControl.$subtitlesSelector &&
202
+ this.core.mediaControl.$subtitlesSelector.length > 0) {
203
+ this.core.mediaControl.$subtitlesSelector.append(this.el);
204
+ }
205
+ else {
206
+ this.core.mediaControl.$('.media-control-right-panel').append(this.el);
207
+ }
208
+ this.updateCurrentLevel(this.track);
209
+ this.highlightCurrentSubtitles();
210
+ this.applyPreselectedSubtitles();
211
+ }
212
+ if (this.core.mediaControl.$subtitlesSelector?.find('span.subtitle-text')
213
+ .length > 0) {
214
+ this.renderIcon();
215
+ }
216
+ return this;
217
+ }
218
+ fillLevels(tracks) {
219
+ this.tracks = tracks;
220
+ this.render();
221
+ }
222
+ findLevelBy(id) {
223
+ if (this.tracks) {
224
+ for (let i = 0; i < this.tracks.length; i++) {
225
+ if (this.tracks[i].language === id) {
226
+ return this.tracks[i]; // TODO TrackInfo?
227
+ }
228
+ }
229
+ }
230
+ }
231
+ selectLevel(id) {
232
+ this.clearSubtitleText();
233
+ this.track = this.findLevelBy(id) || { ...NO_TRACK };
234
+ this.hideSelectLevelMenu();
235
+ if (!this.track) {
236
+ this.track = { language: 'off' };
237
+ }
238
+ this.updateCurrentLevel(this.track);
239
+ }
240
+ onLevelSelect(event) {
241
+ const id = event.target.dataset.subtitlesSelect;
242
+ if (id) {
243
+ localStorage.setItem(LOCAL_STORAGE_SUBTITLES_ID, id);
244
+ this.selectLevel(id);
245
+ }
246
+ return false;
247
+ }
248
+ applyPreselectedSubtitles() {
249
+ if (!this.isPreselectedApplied) {
250
+ this.isPreselectedApplied = true;
251
+ setTimeout(() => {
252
+ this.selectLevel(this.preselectedLanguage);
253
+ }, 300);
254
+ }
255
+ }
256
+ onShowLevelSelectMenu() {
257
+ this.toggleContextMenu();
258
+ }
259
+ hideSelectLevelMenu() {
260
+ ;
261
+ this.$('.subtitles ul').hide();
262
+ }
263
+ toggleContextMenu() {
264
+ ;
265
+ this.$('.subtitles ul').toggle();
266
+ }
267
+ buttonElement() {
268
+ return this.$('.subtitles button');
269
+ }
270
+ levelElement(id) {
271
+ return this.$('.subtitles ul a' + (id ? '[data-subtitles-select="' + id + '"]' : '')).parent();
272
+ }
273
+ startLevelSwitch() {
274
+ this.buttonElement().addClass('changing');
275
+ }
276
+ stopLevelSwitch() {
277
+ this.buttonElement().removeClass('changing');
278
+ }
279
+ selectSubtitles() {
280
+ if (!this.currentLevel) {
281
+ return;
282
+ }
283
+ if (this.tracks) {
284
+ for (let i = 0; i < this.tracks.length; i++) {
285
+ const track = this.tracks[i];
286
+ if (track.language === this.currentLevel.language) {
287
+ track.mode = 'showing';
288
+ const currentTime = this.currentPlayback?.getCurrentTime() ?? 0;
289
+ const cues = track.cues;
290
+ let subtitleText = '';
291
+ if (cues && cues.length) {
292
+ for (const cue of cues) {
293
+ if (currentTime >= cue.startTime && currentTime <= cue.endTime) {
294
+ subtitleText +=
295
+ cue.getCueAsHTML().textContent + '\n';
296
+ }
297
+ }
298
+ }
299
+ this.setSubtitleText(subtitleText);
300
+ track.oncuechange = (e) => {
301
+ try {
302
+ if (track.activeCues?.length) {
303
+ const html = track.activeCues[0].getCueAsHTML();
304
+ this.setSubtitleText(html);
305
+ }
306
+ else {
307
+ this.clearSubtitleText();
308
+ }
309
+ }
310
+ catch (error) {
311
+ // console.error(error);
312
+ reportError(error);
313
+ }
314
+ };
315
+ continue;
316
+ }
317
+ this.tracks[i].oncuechange = null;
318
+ this.tracks[i].mode = 'hidden';
319
+ }
320
+ }
321
+ }
322
+ setSubtitleText(text) {
323
+ this.$string.find('p').html(text);
324
+ }
325
+ clearSubtitleText() {
326
+ this.setSubtitleText('');
327
+ }
328
+ updateCurrentLevel(track) {
329
+ this.currentLevel = track;
330
+ if (track.language === 'off') {
331
+ this.hide();
332
+ }
333
+ else {
334
+ this.show();
335
+ }
336
+ this.selectSubtitles();
337
+ this.highlightCurrentSubtitles();
338
+ }
339
+ highlightCurrentSubtitles() {
340
+ this.levelElement().removeClass('current');
341
+ this.levelElement().find('a').removeClass('gcore-skin-active');
342
+ if (this.currentLevel) {
343
+ const currentLevelElement = this.levelElement(this.currentLevel.language);
344
+ currentLevelElement.addClass('current');
345
+ currentLevelElement.find('a').addClass('gcore-skin-active');
346
+ }
347
+ }
348
+ renderIcon() {
349
+ const icon = this.isShowing ? subtitlesOnIcon : subtitlesOffIcon;
350
+ this.core.mediaControl.$subtitlesSelector
351
+ .find('span.subtitle-text')
352
+ .html(icon);
353
+ }
354
+ }
@@ -0,0 +1,47 @@
1
+ import { UICorePlugin } from '@clappr/core';
2
+ import { TimeValue } from '../..//playback.types';
3
+ import '../../../assets/thumbnails/style.scss';
4
+ export declare class Thumbnails extends UICorePlugin {
5
+ private _$spotlight;
6
+ private _$backdrop;
7
+ private $container;
8
+ private $img;
9
+ private _$carousel;
10
+ private $textThumbnail;
11
+ private _$backdropCarouselImgs;
12
+ private spriteSheetHeight;
13
+ private _hoverPosition;
14
+ private _show;
15
+ private _thumbsLoaded;
16
+ private _oldContainer;
17
+ private _thumbs;
18
+ get name(): string;
19
+ get supportedVersion(): {
20
+ min: string;
21
+ };
22
+ get attributes(): {
23
+ class: string;
24
+ };
25
+ get template(): any;
26
+ private buildSpriteConfig;
27
+ bindEvents(): void;
28
+ private _bindContainerEvents;
29
+ private _onCoreReady;
30
+ private loadSpriteSheet;
31
+ private _onMediaControlContainerChanged;
32
+ private _init;
33
+ private _getOptions;
34
+ private _appendElToMediaControl;
35
+ private _onMouseMove;
36
+ private _onMouseLeave;
37
+ private _calculateHoverPosition;
38
+ private _buildImg;
39
+ private _loadBackdrop;
40
+ setText(time: TimeValue): void;
41
+ private _updateCarousel;
42
+ private _updateSpotlightThumb;
43
+ private _getThumbIndexForTime;
44
+ private _renderPlugin;
45
+ private _createElements;
46
+ }
47
+ //# sourceMappingURL=Thumbnails.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Thumbnails.d.ts","sourceRoot":"","sources":["../../../src/plugins/thumbnails/Thumbnails.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAkC,MAAM,cAAc,CAAC;AAI5E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAKlD,OAAO,uCAAuC,CAAC;AA0B/C,qBAAa,UAAW,SAAQ,YAAY;IAC1C,OAAO,CAAC,WAAW,CAA4B;IAE/C,OAAO,CAAC,UAAU,CAA4B;IAE9C,OAAO,CAAC,UAAU,CAA4B;IAE9C,OAAO,CAAC,IAAI,CAA4B;IAExC,OAAO,CAAC,UAAU,CAA4B;IAE9C,OAAO,CAAC,cAAc,CAA4B;IAElD,OAAO,CAAC,sBAAsB,CAAqB;IAEnD,OAAO,CAAC,iBAAiB,CAAa;IAEtC,OAAO,CAAC,cAAc,CAAK;IAE3B,OAAO,CAAC,KAAK,CAAS;IAEtB,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,aAAa,CAA0B;IAE/C,OAAO,CAAC,OAAO,CAAe;IAE9B,IAAI,IAAI,WAEP;IAED,IAAI,gBAAgB;;MAEnB;IAED,IAAa,UAAU;;MAItB;IAED,IAAI,QAAQ,QAEX;IAcD,OAAO,CAAC,iBAAiB;IAmChB,UAAU;IAQnB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,YAAY;YA0BN,eAAe;IAY7B,OAAO,CAAC,+BAA+B;IAIvC,OAAO,CAAC,KAAK;IAcb,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,uBAAuB;IA4E/B,OAAO,CAAC,SAAS;IA2BjB,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,IAAI,EAAE,SAAS;IAUvB,OAAO,CAAC,eAAe;IAwEvB,OAAO,CAAC,qBAAqB;IA6C7B,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,eAAe;CAkBxB"}