@mattebox/player 0.1.0 → 0.3.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 (420) hide show
  1. package/README.md +4 -3
  2. package/dist/cdn/mattebox-player.min.js +222 -198
  3. package/dist/compose.d.ts +5 -0
  4. package/dist/compose.d.ts.map +1 -0
  5. package/dist/compose.js +31 -0
  6. package/dist/compose.js.map +1 -0
  7. package/dist/controls/chapters.d.ts +29 -0
  8. package/dist/controls/chapters.d.ts.map +1 -0
  9. package/dist/controls/chapters.js +81 -0
  10. package/dist/controls/chapters.js.map +1 -0
  11. package/dist/controls/cues.d.ts +8 -3
  12. package/dist/controls/cues.d.ts.map +1 -1
  13. package/dist/controls/cues.js +44 -10
  14. package/dist/controls/cues.js.map +1 -1
  15. package/dist/controls/fullscreen.d.ts +9 -9
  16. package/dist/controls/fullscreen.d.ts.map +1 -1
  17. package/dist/controls/fullscreen.js +17 -21
  18. package/dist/controls/fullscreen.js.map +1 -1
  19. package/dist/controls/icons.d.ts +1 -3
  20. package/dist/controls/icons.d.ts.map +1 -1
  21. package/dist/controls/icons.js +3 -6
  22. package/dist/controls/icons.js.map +1 -1
  23. package/dist/controls/menu.d.ts +14 -11
  24. package/dist/controls/menu.d.ts.map +1 -1
  25. package/dist/controls/menu.js +39 -34
  26. package/dist/controls/menu.js.map +1 -1
  27. package/dist/controls/session.d.ts +27 -0
  28. package/dist/controls/session.d.ts.map +1 -0
  29. package/dist/controls/session.js +36 -0
  30. package/dist/controls/session.js.map +1 -0
  31. package/dist/controls/slider.d.ts +6 -6
  32. package/dist/controls/slider.d.ts.map +1 -1
  33. package/dist/controls/slider.js +18 -13
  34. package/dist/controls/slider.js.map +1 -1
  35. package/dist/dom.d.ts +4 -10
  36. package/dist/dom.d.ts.map +1 -1
  37. package/dist/dom.js +4 -24
  38. package/dist/dom.js.map +1 -1
  39. package/dist/element-entry.d.ts +4 -0
  40. package/dist/element-entry.d.ts.map +1 -0
  41. package/dist/element-entry.js +9 -0
  42. package/dist/element-entry.js.map +1 -0
  43. package/dist/element.d.ts +54 -14
  44. package/dist/element.d.ts.map +1 -1
  45. package/dist/element.js +154 -73
  46. package/dist/element.js.map +1 -1
  47. package/dist/elements/audio-menu.d.ts +24 -0
  48. package/dist/elements/audio-menu.d.ts.map +1 -0
  49. package/dist/elements/audio-menu.js +70 -0
  50. package/dist/elements/audio-menu.js.map +1 -0
  51. package/dist/elements/chapters-menu.d.ts +12 -0
  52. package/dist/elements/chapters-menu.d.ts.map +1 -0
  53. package/dist/elements/chapters-menu.js +67 -0
  54. package/dist/elements/chapters-menu.js.map +1 -0
  55. package/dist/elements/component.d.ts +45 -0
  56. package/dist/elements/component.d.ts.map +1 -0
  57. package/dist/elements/component.js +90 -0
  58. package/dist/elements/component.js.map +1 -0
  59. package/dist/elements/control-bar.d.ts +75 -0
  60. package/dist/elements/control-bar.d.ts.map +1 -0
  61. package/dist/elements/control-bar.js +339 -0
  62. package/dist/elements/control-bar.js.map +1 -0
  63. package/dist/elements/current-time.d.ts +5 -0
  64. package/dist/elements/current-time.d.ts.map +1 -0
  65. package/dist/elements/current-time.js +27 -0
  66. package/dist/elements/current-time.js.map +1 -0
  67. package/dist/elements/drm-badge.d.ts +29 -0
  68. package/dist/elements/drm-badge.d.ts.map +1 -0
  69. package/dist/elements/drm-badge.js +145 -0
  70. package/dist/elements/drm-badge.js.map +1 -0
  71. package/dist/elements/duration.d.ts +6 -0
  72. package/dist/elements/duration.d.ts.map +1 -0
  73. package/dist/elements/duration.js +23 -0
  74. package/dist/elements/duration.js.map +1 -0
  75. package/dist/elements/error-screen.d.ts +17 -0
  76. package/dist/elements/error-screen.d.ts.map +1 -0
  77. package/dist/elements/error-screen.js +103 -0
  78. package/dist/elements/error-screen.js.map +1 -0
  79. package/dist/elements/fullscreen-button.d.ts +19 -0
  80. package/dist/elements/fullscreen-button.d.ts.map +1 -0
  81. package/dist/elements/fullscreen-button.js +55 -0
  82. package/dist/elements/fullscreen-button.js.map +1 -0
  83. package/dist/elements/live-button.d.ts +12 -0
  84. package/dist/elements/live-button.d.ts.map +1 -0
  85. package/dist/elements/live-button.js +96 -0
  86. package/dist/elements/live-button.js.map +1 -0
  87. package/dist/elements/menu-element.d.ts +22 -0
  88. package/dist/elements/menu-element.d.ts.map +1 -0
  89. package/dist/elements/menu-element.js +31 -0
  90. package/dist/elements/menu-element.js.map +1 -0
  91. package/dist/elements/mute-button.d.ts +12 -0
  92. package/dist/elements/mute-button.d.ts.map +1 -0
  93. package/dist/elements/mute-button.js +61 -0
  94. package/dist/elements/mute-button.js.map +1 -0
  95. package/dist/elements/panels.d.ts +15 -0
  96. package/dist/elements/panels.d.ts.map +1 -0
  97. package/dist/elements/panels.js +55 -0
  98. package/dist/elements/panels.js.map +1 -0
  99. package/dist/elements/pip-button.d.ts +13 -0
  100. package/dist/elements/pip-button.d.ts.map +1 -0
  101. package/dist/elements/pip-button.js +56 -0
  102. package/dist/elements/pip-button.js.map +1 -0
  103. package/dist/elements/play-button.d.ts +12 -0
  104. package/dist/elements/play-button.d.ts.map +1 -0
  105. package/dist/elements/play-button.js +60 -0
  106. package/dist/elements/play-button.js.map +1 -0
  107. package/dist/elements/quality-menu.d.ts +11 -0
  108. package/dist/elements/quality-menu.d.ts.map +1 -0
  109. package/dist/elements/quality-menu.js +72 -0
  110. package/dist/elements/quality-menu.js.map +1 -0
  111. package/dist/elements/remaining-time.d.ts +6 -0
  112. package/dist/elements/remaining-time.d.ts.map +1 -0
  113. package/dist/elements/remaining-time.js +26 -0
  114. package/dist/elements/remaining-time.js.map +1 -0
  115. package/dist/elements/seek-bar.d.ts +83 -0
  116. package/dist/elements/seek-bar.d.ts.map +1 -0
  117. package/dist/elements/seek-bar.js +352 -0
  118. package/dist/elements/seek-bar.js.map +1 -0
  119. package/dist/elements/shared.d.ts +27 -0
  120. package/dist/elements/shared.d.ts.map +1 -0
  121. package/dist/elements/shared.js +155 -0
  122. package/dist/elements/shared.js.map +1 -0
  123. package/dist/elements/skip-button.d.ts +14 -0
  124. package/dist/elements/skip-button.d.ts.map +1 -0
  125. package/dist/elements/skip-button.js +60 -0
  126. package/dist/elements/skip-button.js.map +1 -0
  127. package/dist/elements/spacer.d.ts +4 -0
  128. package/dist/elements/spacer.d.ts.map +1 -0
  129. package/dist/elements/spacer.js +9 -0
  130. package/dist/elements/spacer.js.map +1 -0
  131. package/dist/elements/speed-menu.d.ts +18 -0
  132. package/dist/elements/speed-menu.d.ts.map +1 -0
  133. package/dist/elements/speed-menu.js +56 -0
  134. package/dist/elements/speed-menu.js.map +1 -0
  135. package/dist/elements/start-button.d.ts +23 -0
  136. package/dist/elements/start-button.d.ts.map +1 -0
  137. package/dist/elements/start-button.js +120 -0
  138. package/dist/elements/start-button.js.map +1 -0
  139. package/dist/elements/subtitles-menu.d.ts +17 -0
  140. package/dist/elements/subtitles-menu.d.ts.map +1 -0
  141. package/dist/elements/subtitles-menu.js +108 -0
  142. package/dist/elements/subtitles-menu.js.map +1 -0
  143. package/dist/elements/time-element.d.ts +14 -0
  144. package/dist/elements/time-element.d.ts.map +1 -0
  145. package/dist/elements/time-element.js +29 -0
  146. package/dist/elements/time-element.js.map +1 -0
  147. package/dist/elements/volume-slider.d.ts +10 -0
  148. package/dist/elements/volume-slider.d.ts.map +1 -0
  149. package/dist/elements/volume-slider.js +46 -0
  150. package/dist/elements/volume-slider.js.map +1 -0
  151. package/dist/elements/volume.d.ts +9 -0
  152. package/dist/elements/volume.d.ts.map +1 -0
  153. package/dist/elements/volume.js +52 -0
  154. package/dist/elements/volume.js.map +1 -0
  155. package/dist/entries/audio-menu.d.ts +5 -0
  156. package/dist/entries/audio-menu.d.ts.map +1 -0
  157. package/dist/entries/audio-menu.js +8 -0
  158. package/dist/entries/audio-menu.js.map +1 -0
  159. package/dist/entries/chapters-menu.d.ts +5 -0
  160. package/dist/entries/chapters-menu.d.ts.map +1 -0
  161. package/dist/entries/chapters-menu.js +9 -0
  162. package/dist/entries/chapters-menu.js.map +1 -0
  163. package/dist/entries/control-bar.d.ts +5 -0
  164. package/dist/entries/control-bar.d.ts.map +1 -0
  165. package/dist/entries/control-bar.js +8 -0
  166. package/dist/entries/control-bar.js.map +1 -0
  167. package/dist/entries/current-time.d.ts +5 -0
  168. package/dist/entries/current-time.d.ts.map +1 -0
  169. package/dist/entries/current-time.js +8 -0
  170. package/dist/entries/current-time.js.map +1 -0
  171. package/dist/entries/drm-badge.d.ts +5 -0
  172. package/dist/entries/drm-badge.d.ts.map +1 -0
  173. package/dist/entries/drm-badge.js +8 -0
  174. package/dist/entries/drm-badge.js.map +1 -0
  175. package/dist/entries/duration.d.ts +5 -0
  176. package/dist/entries/duration.d.ts.map +1 -0
  177. package/dist/entries/duration.js +8 -0
  178. package/dist/entries/duration.js.map +1 -0
  179. package/dist/entries/error-screen.d.ts +5 -0
  180. package/dist/entries/error-screen.d.ts.map +1 -0
  181. package/dist/entries/error-screen.js +8 -0
  182. package/dist/entries/error-screen.js.map +1 -0
  183. package/dist/entries/fullscreen-button.d.ts +5 -0
  184. package/dist/entries/fullscreen-button.d.ts.map +1 -0
  185. package/dist/entries/fullscreen-button.js +8 -0
  186. package/dist/entries/fullscreen-button.js.map +1 -0
  187. package/dist/entries/live-button.d.ts +5 -0
  188. package/dist/entries/live-button.d.ts.map +1 -0
  189. package/dist/entries/live-button.js +8 -0
  190. package/dist/entries/live-button.js.map +1 -0
  191. package/dist/entries/mute-button.d.ts +5 -0
  192. package/dist/entries/mute-button.d.ts.map +1 -0
  193. package/dist/entries/mute-button.js +8 -0
  194. package/dist/entries/mute-button.js.map +1 -0
  195. package/dist/entries/panels.d.ts +5 -0
  196. package/dist/entries/panels.d.ts.map +1 -0
  197. package/dist/entries/panels.js +8 -0
  198. package/dist/entries/panels.js.map +1 -0
  199. package/dist/entries/pip-button.d.ts +5 -0
  200. package/dist/entries/pip-button.d.ts.map +1 -0
  201. package/dist/entries/pip-button.js +8 -0
  202. package/dist/entries/pip-button.js.map +1 -0
  203. package/dist/entries/play-button.d.ts +5 -0
  204. package/dist/entries/play-button.d.ts.map +1 -0
  205. package/dist/entries/play-button.js +8 -0
  206. package/dist/entries/play-button.js.map +1 -0
  207. package/dist/entries/quality-menu.d.ts +5 -0
  208. package/dist/entries/quality-menu.d.ts.map +1 -0
  209. package/dist/entries/quality-menu.js +8 -0
  210. package/dist/entries/quality-menu.js.map +1 -0
  211. package/dist/entries/remaining-time.d.ts +5 -0
  212. package/dist/entries/remaining-time.d.ts.map +1 -0
  213. package/dist/entries/remaining-time.js +9 -0
  214. package/dist/entries/remaining-time.js.map +1 -0
  215. package/dist/entries/seek-bar.d.ts +5 -0
  216. package/dist/entries/seek-bar.d.ts.map +1 -0
  217. package/dist/entries/seek-bar.js +8 -0
  218. package/dist/entries/seek-bar.js.map +1 -0
  219. package/dist/entries/skip-button.d.ts +5 -0
  220. package/dist/entries/skip-button.d.ts.map +1 -0
  221. package/dist/entries/skip-button.js +8 -0
  222. package/dist/entries/skip-button.js.map +1 -0
  223. package/dist/entries/spacer.d.ts +5 -0
  224. package/dist/entries/spacer.d.ts.map +1 -0
  225. package/dist/entries/spacer.js +8 -0
  226. package/dist/entries/spacer.js.map +1 -0
  227. package/dist/entries/speed-menu.d.ts +5 -0
  228. package/dist/entries/speed-menu.d.ts.map +1 -0
  229. package/dist/entries/speed-menu.js +8 -0
  230. package/dist/entries/speed-menu.js.map +1 -0
  231. package/dist/entries/start-button.d.ts +5 -0
  232. package/dist/entries/start-button.d.ts.map +1 -0
  233. package/dist/entries/start-button.js +8 -0
  234. package/dist/entries/start-button.js.map +1 -0
  235. package/dist/entries/subtitles-menu.d.ts +5 -0
  236. package/dist/entries/subtitles-menu.d.ts.map +1 -0
  237. package/dist/entries/subtitles-menu.js +8 -0
  238. package/dist/entries/subtitles-menu.js.map +1 -0
  239. package/dist/entries/volume-slider.d.ts +5 -0
  240. package/dist/entries/volume-slider.d.ts.map +1 -0
  241. package/dist/entries/volume-slider.js +8 -0
  242. package/dist/entries/volume-slider.js.map +1 -0
  243. package/dist/entries/volume.d.ts +7 -0
  244. package/dist/entries/volume.d.ts.map +1 -0
  245. package/dist/entries/volume.js +10 -0
  246. package/dist/entries/volume.js.map +1 -0
  247. package/dist/es2015/compose.js +33 -0
  248. package/dist/es2015/controls/chapters.js +61 -0
  249. package/dist/es2015/controls/cues.js +39 -11
  250. package/dist/es2015/controls/fullscreen.js +25 -23
  251. package/dist/es2015/controls/icons.js +5 -9
  252. package/dist/es2015/controls/menu.js +39 -35
  253. package/dist/es2015/controls/session.js +40 -0
  254. package/dist/es2015/controls/slider.js +18 -13
  255. package/dist/es2015/controls/time.js +1 -5
  256. package/dist/es2015/dom.js +5 -25
  257. package/dist/es2015/element-entry.js +10 -0
  258. package/dist/es2015/element.js +118 -65
  259. package/dist/es2015/elements/audio-menu.js +68 -0
  260. package/dist/es2015/elements/chapters-menu.js +68 -0
  261. package/dist/es2015/elements/component.js +85 -0
  262. package/dist/es2015/elements/control-bar.js +299 -0
  263. package/dist/es2015/elements/current-time.js +27 -0
  264. package/dist/es2015/elements/drm-badge.js +138 -0
  265. package/dist/es2015/elements/duration.js +23 -0
  266. package/dist/es2015/elements/error-screen.js +97 -0
  267. package/dist/es2015/elements/fullscreen-button.js +49 -0
  268. package/dist/es2015/elements/live-button.js +97 -0
  269. package/dist/es2015/elements/menu-element.js +39 -0
  270. package/dist/es2015/elements/mute-button.js +60 -0
  271. package/dist/es2015/elements/panels.js +52 -0
  272. package/dist/es2015/elements/pip-button.js +56 -0
  273. package/dist/es2015/elements/play-button.js +68 -0
  274. package/dist/es2015/elements/quality-menu.js +68 -0
  275. package/dist/es2015/elements/remaining-time.js +26 -0
  276. package/dist/es2015/elements/seek-bar.js +314 -0
  277. package/dist/es2015/elements/shared.js +155 -0
  278. package/dist/es2015/elements/skip-button.js +59 -0
  279. package/dist/es2015/elements/spacer.js +11 -0
  280. package/dist/es2015/elements/speed-menu.js +60 -0
  281. package/dist/es2015/elements/start-button.js +124 -0
  282. package/dist/es2015/elements/subtitles-menu.js +103 -0
  283. package/dist/es2015/elements/time-element.js +38 -0
  284. package/dist/es2015/elements/volume-slider.js +47 -0
  285. package/dist/es2015/elements/volume.js +52 -0
  286. package/dist/es2015/entries/audio-menu.js +7 -0
  287. package/dist/es2015/entries/chapters-menu.js +7 -0
  288. package/dist/es2015/entries/control-bar.js +7 -0
  289. package/dist/es2015/entries/current-time.js +7 -0
  290. package/dist/es2015/entries/drm-badge.js +7 -0
  291. package/dist/es2015/entries/duration.js +7 -0
  292. package/dist/es2015/entries/error-screen.js +7 -0
  293. package/dist/es2015/entries/fullscreen-button.js +7 -0
  294. package/dist/es2015/entries/live-button.js +7 -0
  295. package/dist/es2015/entries/mute-button.js +7 -0
  296. package/dist/es2015/entries/panels.js +7 -0
  297. package/dist/es2015/entries/pip-button.js +7 -0
  298. package/dist/es2015/entries/play-button.js +7 -0
  299. package/dist/es2015/entries/quality-menu.js +7 -0
  300. package/dist/es2015/entries/remaining-time.js +7 -0
  301. package/dist/es2015/entries/seek-bar.js +7 -0
  302. package/dist/es2015/entries/skip-button.js +7 -0
  303. package/dist/es2015/entries/spacer.js +7 -0
  304. package/dist/es2015/entries/speed-menu.js +7 -0
  305. package/dist/es2015/entries/start-button.js +7 -0
  306. package/dist/es2015/entries/subtitles-menu.js +7 -0
  307. package/dist/es2015/entries/volume-slider.js +7 -0
  308. package/dist/es2015/entries/volume.js +9 -0
  309. package/dist/es2015/host.js +23 -0
  310. package/dist/es2015/index.js +48 -9
  311. package/dist/es2015/labels.js +14 -0
  312. package/dist/es2015/style.js +40 -292
  313. package/dist/es2015/{panels/error.js → surface.js} +3 -3
  314. package/dist/es2015/tags.js +28 -0
  315. package/dist/host.d.ts +26 -0
  316. package/dist/host.d.ts.map +1 -0
  317. package/dist/host.js +23 -0
  318. package/dist/host.js.map +1 -0
  319. package/dist/index.d.ts +84 -3
  320. package/dist/index.d.ts.map +1 -1
  321. package/dist/index.js +24 -8
  322. package/dist/index.js.map +1 -1
  323. package/dist/labels.d.ts +7 -0
  324. package/dist/labels.d.ts.map +1 -0
  325. package/dist/labels.js +12 -0
  326. package/dist/labels.js.map +1 -0
  327. package/dist/style.d.ts +10 -2
  328. package/dist/style.d.ts.map +1 -1
  329. package/dist/style.js +40 -292
  330. package/dist/style.js.map +1 -1
  331. package/dist/surface.d.ts +15 -0
  332. package/dist/surface.d.ts.map +1 -0
  333. package/dist/{panels/error.js → surface.js} +3 -3
  334. package/dist/surface.js.map +1 -0
  335. package/dist/tags.d.ts +26 -0
  336. package/dist/tags.d.ts.map +1 -0
  337. package/dist/tags.js +26 -0
  338. package/dist/tags.js.map +1 -0
  339. package/package.json +22 -2
  340. package/dist/controls/bar.d.ts +0 -56
  341. package/dist/controls/bar.d.ts.map +0 -1
  342. package/dist/controls/bar.js +0 -245
  343. package/dist/controls/bar.js.map +0 -1
  344. package/dist/controls/buttons.d.ts +0 -13
  345. package/dist/controls/buttons.d.ts.map +0 -1
  346. package/dist/controls/buttons.js +0 -157
  347. package/dist/controls/buttons.js.map +0 -1
  348. package/dist/controls/control.d.ts +0 -12
  349. package/dist/controls/control.d.ts.map +0 -1
  350. package/dist/controls/control.js +0 -2
  351. package/dist/controls/control.js.map +0 -1
  352. package/dist/controls/keys.d.ts +0 -26
  353. package/dist/controls/keys.d.ts.map +0 -1
  354. package/dist/controls/keys.js +0 -66
  355. package/dist/controls/keys.js.map +0 -1
  356. package/dist/controls/live.d.ts +0 -10
  357. package/dist/controls/live.d.ts.map +0 -1
  358. package/dist/controls/live.js +0 -59
  359. package/dist/controls/live.js.map +0 -1
  360. package/dist/controls/menus.d.ts +0 -43
  361. package/dist/controls/menus.d.ts.map +0 -1
  362. package/dist/controls/menus.js +0 -262
  363. package/dist/controls/menus.js.map +0 -1
  364. package/dist/controls/options.d.ts +0 -44
  365. package/dist/controls/options.d.ts.map +0 -1
  366. package/dist/controls/options.js +0 -54
  367. package/dist/controls/options.js.map +0 -1
  368. package/dist/controls/screens.d.ts +0 -22
  369. package/dist/controls/screens.d.ts.map +0 -1
  370. package/dist/controls/screens.js +0 -69
  371. package/dist/controls/screens.js.map +0 -1
  372. package/dist/controls/seek.d.ts +0 -52
  373. package/dist/controls/seek.d.ts.map +0 -1
  374. package/dist/controls/seek.js +0 -215
  375. package/dist/controls/seek.js.map +0 -1
  376. package/dist/controls/speed.d.ts +0 -8
  377. package/dist/controls/speed.d.ts.map +0 -1
  378. package/dist/controls/speed.js +0 -34
  379. package/dist/controls/speed.js.map +0 -1
  380. package/dist/controls/volume.d.ts +0 -8
  381. package/dist/controls/volume.d.ts.map +0 -1
  382. package/dist/controls/volume.js +0 -29
  383. package/dist/controls/volume.js.map +0 -1
  384. package/dist/es2015/controls/bar.js +0 -227
  385. package/dist/es2015/controls/buttons.js +0 -146
  386. package/dist/es2015/controls/keys.js +0 -60
  387. package/dist/es2015/controls/live.js +0 -60
  388. package/dist/es2015/controls/menus.js +0 -258
  389. package/dist/es2015/controls/options.js +0 -46
  390. package/dist/es2015/controls/screens.js +0 -74
  391. package/dist/es2015/controls/seek.js +0 -203
  392. package/dist/es2015/controls/speed.js +0 -41
  393. package/dist/es2015/controls/volume.js +0 -30
  394. package/dist/es2015/panels/drm.js +0 -29
  395. package/dist/es2015/panels/live.js +0 -48
  396. package/dist/es2015/panels/quality.js +0 -52
  397. package/dist/es2015/panels/tracks.js +0 -47
  398. package/dist/panels/drm.d.ts +0 -8
  399. package/dist/panels/drm.d.ts.map +0 -1
  400. package/dist/panels/drm.js +0 -36
  401. package/dist/panels/drm.js.map +0 -1
  402. package/dist/panels/error.d.ts +0 -13
  403. package/dist/panels/error.d.ts.map +0 -1
  404. package/dist/panels/error.js.map +0 -1
  405. package/dist/panels/live.d.ts +0 -3
  406. package/dist/panels/live.d.ts.map +0 -1
  407. package/dist/panels/live.js +0 -56
  408. package/dist/panels/live.js.map +0 -1
  409. package/dist/panels/panel.d.ts +0 -13
  410. package/dist/panels/panel.d.ts.map +0 -1
  411. package/dist/panels/panel.js +0 -2
  412. package/dist/panels/panel.js.map +0 -1
  413. package/dist/panels/quality.d.ts +0 -3
  414. package/dist/panels/quality.d.ts.map +0 -1
  415. package/dist/panels/quality.js +0 -59
  416. package/dist/panels/quality.js.map +0 -1
  417. package/dist/panels/tracks.d.ts +0 -3
  418. package/dist/panels/tracks.d.ts.map +0 -1
  419. package/dist/panels/tracks.js +0 -49
  420. package/dist/panels/tracks.js.map +0 -1
@@ -1,203 +0,0 @@
1
- import { el } from "../dom.js";
2
- import { EMPTY, at, clip, fraction, spans, window } from "./ranges.js";
3
- import { slider } from "./slider.js";
4
- import { clock, describe, format } from "./time.js";
5
- //#region src/controls/seek.ts
6
- /** What the tile scales down to when the page sets no `--mbx-preview-width`. */
7
- const PREVIEW_WIDTH = 160;
8
- /** The buffer goal assumed for a session that reports none. */
9
- const BUFFER_GOAL = 30;
10
- /** The events on which the row re-reads the video. */
11
- const EVENTS = [
12
- "timeupdate",
13
- "progress",
14
- "durationchange",
15
- "loadedmetadata",
16
- "seeking",
17
- "seeked",
18
- "emptied"
19
- ];
20
- function percent(part) {
21
- return `${part * 100}%`;
22
- }
23
- function seekBar(video, flag, options) {
24
- let source = {};
25
- let span = EMPTY;
26
- let pending = null;
27
- let frame = 0;
28
- function isLive() {
29
- const live = source.live;
30
- return live !== void 0 && live.edge !== null;
31
- }
32
- /** The wall clock at a presentation time, when the session can say it. */
33
- function wall(time) {
34
- var _source$pdt$toWallClo, _source$pdt;
35
- const epoch = (_source$pdt$toWallClo = (_source$pdt = source.pdt) === null || _source$pdt === void 0 ? void 0 : _source$pdt.toWallClock(time)) !== null && _source$pdt$toWallClo !== void 0 ? _source$pdt$toWallClo : null;
36
- return epoch === null ? null : clock(epoch);
37
- }
38
- /** What a screen reader hears at a time. */
39
- function say(time) {
40
- if (!isLive()) return describe(time, span.end);
41
- const behind = `${format(span.end - time)} behind live`;
42
- const at = wall(time);
43
- return at === null ? behind : `${at}, ${behind}`;
44
- }
45
- /** What the preview and the time show at a time. */
46
- function label(time) {
47
- var _wall;
48
- if (!isLive()) return format(time);
49
- return (_wall = wall(time)) !== null && _wall !== void 0 ? _wall : `-${format(span.end - time)}`;
50
- }
51
- function flush() {
52
- frame = 0;
53
- if (pending === null) return;
54
- video.currentTime = pending;
55
- pending = null;
56
- }
57
- const current = el("span", "current-time", "0:00");
58
- const duration = el("span", "duration", "0:00");
59
- const bar = slider({
60
- name: "seek",
61
- label: "Seek",
62
- step: options.seekStep,
63
- page: options.seekPage,
64
- onInput(value) {
65
- bar.set(value, say(value));
66
- current.textContent = label(value);
67
- if (!bar.dragging()) {
68
- pending = null;
69
- video.currentTime = value;
70
- return;
71
- }
72
- pending = value;
73
- if (frame === 0) frame = requestAnimationFrame(flush);
74
- }
75
- });
76
- const root = el("div", "row seek-row");
77
- root.append(current, bar.root, duration);
78
- const buffered = el("div", "buffered seek-buffered");
79
- const hover = el("div", "hover seek-hover");
80
- const edge = el("div", "edge seek-edge");
81
- hover.hidden = true;
82
- edge.hidden = true;
83
- bar.track.prepend(buffered);
84
- bar.track.append(hover, edge);
85
- const preview = el("div", "preview seek-preview");
86
- const image = el("div", "preview-image seek-preview-image");
87
- const tile = el("div", "preview-tile seek-preview-tile");
88
- const time = el("span", "preview-time seek-preview-time");
89
- image.append(tile);
90
- image.hidden = true;
91
- preview.append(image, time);
92
- preview.hidden = true;
93
- bar.root.append(preview);
94
- /** The width the page asked for through the token, or the default. */
95
- function previewWidth() {
96
- const set = Number.parseFloat(getComputedStyle(preview).getPropertyValue("--mbx-preview-width"));
97
- return Number.isFinite(set) && set > 0 ? set : PREVIEW_WIDTH;
98
- }
99
- /** The tile for a time, if the track has one, drawn at its size and scaled to fit. */
100
- function paintTile(when) {
101
- var _source$thumbnails$at, _source$thumbnails;
102
- const found = (_source$thumbnails$at = (_source$thumbnails = source.thumbnails) === null || _source$thumbnails === void 0 ? void 0 : _source$thumbnails.at(when)) !== null && _source$thumbnails$at !== void 0 ? _source$thumbnails$at : null;
103
- image.hidden = found === null;
104
- if (found === null) return;
105
- const scale = previewWidth() / found.width;
106
- image.style.width = `${found.width * scale}px`;
107
- image.style.height = `${found.height * scale}px`;
108
- tile.style.width = `${found.width}px`;
109
- tile.style.height = `${found.height}px`;
110
- tile.style.backgroundImage = `url("${found.url}")`;
111
- tile.style.backgroundPosition = `-${found.x}px -${found.y}px`;
112
- tile.style.transform = `scale(${scale})`;
113
- }
114
- function paintBuffered() {
115
- var _buffered$lastElement;
116
- const parts = clip(spans(video.buffered), span);
117
- while (buffered.childElementCount > parts.length) (_buffered$lastElement = buffered.lastElementChild) === null || _buffered$lastElement === void 0 || _buffered$lastElement.remove();
118
- while (buffered.childElementCount < parts.length) buffered.append(el("div", "buffered-range seek-buffered-range"));
119
- let i = 0;
120
- for (const child of buffered.children) {
121
- const part = parts[i];
122
- i += 1;
123
- if (part === void 0) break;
124
- const node = child;
125
- node.style.left = percent(part[0]);
126
- node.style.width = percent(part[1] - part[0]);
127
- }
128
- }
129
- /** Whether a live window is wide enough to be worth a bar. */
130
- function worthSeeking() {
131
- var _source$bufferGoal, _source$bufferGoal2;
132
- if (options.liveWindow === 0) return true;
133
- const goal = (_source$bufferGoal = (_source$bufferGoal2 = source.bufferGoal) === null || _source$bufferGoal2 === void 0 ? void 0 : _source$bufferGoal2.call(source)) !== null && _source$bufferGoal !== void 0 ? _source$bufferGoal : BUFFER_GOAL;
134
- return span.end - span.start >= options.liveWindow * goal;
135
- }
136
- function tick() {
137
- var _source$window, _source$window2;
138
- const on = isLive();
139
- const own = on ? (_source$window = (_source$window2 = source.window) === null || _source$window2 === void 0 ? void 0 : _source$window2.call(source)) !== null && _source$window !== void 0 ? _source$window : null : null;
140
- span = own !== null && own.end > own.start ? own : window(video.duration, spans(video.seekable), on);
141
- bar.range(span.start, span.end);
142
- paintBuffered();
143
- const live = source.live;
144
- edge.hidden = !on;
145
- if (on && live !== void 0 && live.edge !== null) edge.style.left = percent(fraction(live.edge, span));
146
- const seekable = !on || worthSeeking();
147
- bar.root.hidden = !seekable;
148
- current.hidden = !seekable;
149
- duration.hidden = on;
150
- flag("live", on);
151
- flag("seekable", seekable);
152
- if (!on) duration.textContent = format(span.end);
153
- if (!bar.dragging()) {
154
- bar.set(video.currentTime, say(video.currentTime));
155
- current.textContent = label(video.currentTime);
156
- }
157
- }
158
- /** The hover marker and the preview follow the pointer, clamped to the bar. */
159
- function point(event) {
160
- const rect = bar.rail.getBoundingClientRect();
161
- if (rect.width === 0 || span.end <= span.start) return;
162
- const part = Math.min(1, Math.max(0, (event.clientX - rect.left) / rect.width));
163
- hover.hidden = false;
164
- hover.style.left = percent(part);
165
- preview.hidden = false;
166
- const when = at(part, span);
167
- time.textContent = label(when);
168
- paintTile(when);
169
- const whole = bar.root.getBoundingClientRect();
170
- const half = preview.offsetWidth / 2;
171
- const x = rect.left - whole.left + part * rect.width;
172
- preview.style.left = `${Math.min(whole.width - half, Math.max(half, x))}px`;
173
- }
174
- function leave() {
175
- hover.hidden = true;
176
- preview.hidden = true;
177
- }
178
- bar.root.addEventListener("pointermove", point);
179
- bar.root.addEventListener("pointerleave", leave);
180
- for (const name of EVENTS) video.addEventListener(name, tick);
181
- tick();
182
- return {
183
- root,
184
- attach(found) {
185
- source = found;
186
- tick();
187
- },
188
- detach() {
189
- source = {};
190
- leave();
191
- tick();
192
- },
193
- dispose() {
194
- cancelAnimationFrame(frame);
195
- bar.root.removeEventListener("pointermove", point);
196
- bar.root.removeEventListener("pointerleave", leave);
197
- for (const name of EVENTS) video.removeEventListener(name, tick);
198
- bar.dispose();
199
- }
200
- };
201
- }
202
- //#endregion
203
- export { seekBar };
@@ -1,41 +0,0 @@
1
- import { menu } from "./menu.js";
2
- //#region src/controls/speed.ts
3
- const RATES = [
4
- .5,
5
- .75,
6
- 1,
7
- 1.25,
8
- 1.5,
9
- 2
10
- ];
11
- function speedMenu(video) {
12
- const control = menu({
13
- name: "speed",
14
- label: "Playback speed",
15
- icon: "playback-speed"
16
- });
17
- function render() {
18
- const items = RATES.map((rate) => [String(rate), rate === 1 ? "Normal" : `${rate}×`]);
19
- const current = String(video.playbackRate);
20
- if (!RATES.some((rate) => String(rate) === current)) items.push([current, `${current}×`]);
21
- control.fill([{
22
- name: "rate",
23
- items,
24
- value: current,
25
- onSelect(value) {
26
- video.playbackRate = Number(value);
27
- }
28
- }]);
29
- }
30
- video.addEventListener("ratechange", render);
31
- render();
32
- return {
33
- root: control.root,
34
- dispose() {
35
- video.removeEventListener("ratechange", render);
36
- control.dispose();
37
- }
38
- };
39
- }
40
- //#endregion
41
- export { speedMenu };
@@ -1,30 +0,0 @@
1
- import { slider } from "./slider.js";
2
- //#region src/controls/volume.ts
3
- function volumeSlider(video) {
4
- const bar = slider({
5
- name: "volume",
6
- label: "Volume",
7
- step: .05,
8
- page: .2,
9
- onInput(value) {
10
- video.volume = value;
11
- if (value > 0) video.muted = false;
12
- }
13
- });
14
- bar.range(0, 1);
15
- function render() {
16
- const level = video.muted ? 0 : video.volume;
17
- bar.set(level, `${Math.round(level * 100)}%`);
18
- }
19
- video.addEventListener("volumechange", render);
20
- render();
21
- return {
22
- root: bar.root,
23
- dispose() {
24
- video.removeEventListener("volumechange", render);
25
- bar.dispose();
26
- }
27
- };
28
- }
29
- //#endregion
30
- export { volumeSlider };
@@ -1,29 +0,0 @@
1
- import { el } from "../dom.js";
2
- import { namespaces } from "../namespaces.js";
3
- //#region src/panels/drm.ts
4
- const drmPanel = (session) => {
5
- const engine = session.engine;
6
- if (engine === null) return null;
7
- const found = namespaces(engine).drm;
8
- if (found === void 0) return null;
9
- const drm = found;
10
- const root = el("div", "panel drm");
11
- root.append(el("span", "text drm-text", "DRM"));
12
- const keySystem = el("span", "value drm-key-system");
13
- root.append(keySystem);
14
- function render() {
15
- const name = drm.keySystem;
16
- keySystem.textContent = name !== null && name !== void 0 ? name : "";
17
- root.hidden = name === null;
18
- }
19
- const off = engine.on("drm:keysystem", render);
20
- render();
21
- return {
22
- root,
23
- dispose() {
24
- off();
25
- }
26
- };
27
- };
28
- //#endregion
29
- export { drmPanel };
@@ -1,48 +0,0 @@
1
- import { el, state } from "../dom.js";
2
- import { namespaces } from "../namespaces.js";
3
- //#region src/panels/live.ts
4
- /**
5
- * The live badge over `engine.live`. Present only when a live stage is
6
- * composed, so the factory answers null for VOD-only engines and for native.
7
- *
8
- * Latency has no event; it moves with the playhead. The video's `timeupdate`
9
- * is the clock the browser already runs, so the badge reads on that.
10
- */
11
- const livePanel = (session, video) => {
12
- const engine = session.engine;
13
- if (engine === null) return null;
14
- const found = namespaces(engine).live;
15
- if (found === void 0) return null;
16
- const live = found;
17
- const root = el("div", "panel live");
18
- const badge = el("span", "badge live-badge", "Live");
19
- const latency = el("span", "value live-latency");
20
- const button = el("button", "button live-edge-button", "Go to live");
21
- button.type = "button";
22
- root.append(badge, latency, button);
23
- let shown = "";
24
- function tick() {
25
- root.hidden = live.edge === null;
26
- const atEdge = live.atEdge;
27
- state(root, "panel live", { "at-edge": atEdge });
28
- button.disabled = atEdge;
29
- const seconds = live.latency;
30
- const text = seconds === null ? "" : `${seconds.toFixed(1)}s behind`;
31
- if (text === shown) return;
32
- shown = text;
33
- latency.textContent = text;
34
- }
35
- button.addEventListener("click", () => {
36
- live.seekToEdge();
37
- });
38
- video.addEventListener("timeupdate", tick);
39
- tick();
40
- return {
41
- root,
42
- dispose() {
43
- video.removeEventListener("timeupdate", tick);
44
- }
45
- };
46
- };
47
- //#endregion
48
- export { livePanel };
@@ -1,52 +0,0 @@
1
- import { el, fill, menu } from "../dom.js";
2
- //#region src/panels/quality.ts
3
- const AUTO = "auto";
4
- /** A rendition's height when the manifest declared one, its bitrate otherwise. */
5
- function label(rendition) {
6
- if (rendition.height !== void 0) return `${rendition.height}p`;
7
- return `${Math.round(rendition.bitrate / 1e3)} kbps`;
8
- }
9
- const qualityPanel = (session, video) => {
10
- const engine = session.engine;
11
- if (engine === null) return null;
12
- const quality = engine.quality;
13
- const root = el("div", "panel quality");
14
- const [wrapper, select] = menu("quality", "Quality");
15
- const playing = el("span", "value quality-playing");
16
- root.append(wrapper, playing);
17
- let shown = "";
18
- function render() {
19
- var _quality$pinned;
20
- const items = [[AUTO, "Auto"]];
21
- for (const rendition of quality.renditions) items.push([rendition.id, label(rendition)]);
22
- fill(select, items, (_quality$pinned = quality.pinned) !== null && _quality$pinned !== void 0 ? _quality$pinned : AUTO);
23
- root.hidden = quality.renditions.length === 0;
24
- }
25
- function tick() {
26
- const current = quality.playing === null ? "" : label(quality.playing);
27
- if (current === shown) return;
28
- shown = current;
29
- playing.textContent = current;
30
- }
31
- select.addEventListener("change", () => {
32
- if (select.value === AUTO) quality.auto();
33
- else quality.pin(select.value);
34
- });
35
- const offs = [
36
- engine.on("tracks:changed", render),
37
- engine.on("quality:constraints-unsatisfiable", render),
38
- engine.on("quality:pin-unsatisfiable", render)
39
- ];
40
- video.addEventListener("timeupdate", tick);
41
- render();
42
- tick();
43
- return {
44
- root,
45
- dispose() {
46
- for (const off of offs) off();
47
- video.removeEventListener("timeupdate", tick);
48
- }
49
- };
50
- };
51
- //#endregion
52
- export { qualityPanel };
@@ -1,47 +0,0 @@
1
- import { el, fill, menu } from "../dom.js";
2
- //#region src/panels/tracks.ts
3
- const OFF = "off";
4
- /** The language, then the role, then the id: whichever the manifest gave. */
5
- function label(track) {
6
- const parts = [track.lang, track.role].filter((part) => part !== void 0);
7
- return parts.length === 0 ? track.id : parts.join(" · ");
8
- }
9
- const tracksPanel = (session) => {
10
- const engine = session.engine;
11
- if (engine === null) return null;
12
- const tracks = engine.tracks;
13
- const root = el("div", "panel tracks");
14
- const [audioLabel, audio] = menu("audio", "Audio");
15
- const [textLabel, text] = menu("text", "Subtitles");
16
- root.append(audioLabel, textLabel);
17
- function renderOne(select, wrapper, contentType, off) {
18
- var _tracks$active$id, _tracks$active;
19
- const available = tracks.available.filter((track) => track.contentType === contentType);
20
- const items = off ? [[OFF, "Off"]] : [];
21
- for (const track of available) items.push([track.id, label(track)]);
22
- fill(select, items, (_tracks$active$id = (_tracks$active = tracks.active(contentType)) === null || _tracks$active === void 0 ? void 0 : _tracks$active.id) !== null && _tracks$active$id !== void 0 ? _tracks$active$id : OFF);
23
- wrapper.hidden = available.length === 0;
24
- return available.length;
25
- }
26
- function render() {
27
- const count = renderOne(audio, audioLabel, "audio", false) + renderOne(text, textLabel, "text", true);
28
- root.hidden = count === 0;
29
- }
30
- audio.addEventListener("change", () => {
31
- tracks.select(audio.value);
32
- });
33
- text.addEventListener("change", () => {
34
- if (text.value === OFF) tracks.deselect("text");
35
- else tracks.select(text.value);
36
- });
37
- const offs = [engine.on("tracks:changed", render), engine.on("tracks:selected", render)];
38
- render();
39
- return {
40
- root,
41
- dispose() {
42
- for (const off of offs) off();
43
- }
44
- };
45
- };
46
- //#endregion
47
- export { tracksPanel };
@@ -1,8 +0,0 @@
1
- /**
2
- * The DRM indicator over `engine.drm`. Present only when the EME stages are
3
- * composed. It shows the key system in use and nothing else: sessions and key
4
- * statuses are diagnostics, and the element is not a diagnostics surface.
5
- */
6
- import type { PanelFactory } from './panel.js';
7
- export declare const drmPanel: PanelFactory;
8
- //# sourceMappingURL=drm.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drm.d.ts","sourceRoot":"","sources":["../../src/panels/drm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAS,YAAY,EAAE,MAAM,YAAY,CAAC;AAEtD,eAAO,MAAM,QAAQ,EAAE,YA6BtB,CAAC"}
@@ -1,36 +0,0 @@
1
- /**
2
- * The DRM indicator over `engine.drm`. Present only when the EME stages are
3
- * composed. It shows the key system in use and nothing else: sessions and key
4
- * statuses are diagnostics, and the element is not a diagnostics surface.
5
- */
6
- import { el } from '../dom.js';
7
- import { namespaces } from '../namespaces.js';
8
- export const drmPanel = (session) => {
9
- const engine = session.engine;
10
- if (engine === null)
11
- return null;
12
- const found = namespaces(engine).drm;
13
- if (found === undefined)
14
- return null;
15
- const drm = found;
16
- const root = el('div', 'panel drm');
17
- root.append(el('span', 'text drm-text', 'DRM'));
18
- const keySystem = el('span', 'value drm-key-system');
19
- root.append(keySystem);
20
- function render() {
21
- const name = drm.keySystem;
22
- keySystem.textContent = name ?? '';
23
- // Nothing to show until a key session opens, and an empty indicator is
24
- // worse than none.
25
- root.hidden = name === null;
26
- }
27
- const off = engine.on('drm:keysystem', render);
28
- render();
29
- return {
30
- root,
31
- dispose() {
32
- off();
33
- },
34
- };
35
- };
36
- //# sourceMappingURL=drm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drm.js","sourceRoot":"","sources":["../../src/panels/drm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,MAAM,CAAC,MAAM,QAAQ,GAAiB,CAAC,OAAO,EAAgB,EAAE;IAC9D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;IACrC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,GAAG,GAAW,KAAK,CAAC;IAE1B,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,EAAE,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEvB,SAAS,MAAM;QACb,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC;QAC3B,SAAS,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QACnC,uEAAuE;QACvE,mBAAmB;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9B,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,EAAE,CAAC;IAET,OAAO;QACL,IAAI;QACJ,OAAO;YACL,GAAG,EAAE,CAAC;QACR,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -1,13 +0,0 @@
1
- /**
2
- * The error surface. It is not a panel: it outlives a session, because the
3
- * core reports "no handler claimed this source" when there is no session to
4
- * hang it on. It stays hidden until a fatal error arrives.
5
- */
6
- import type { PlayerError } from '@mattebox/player-core';
7
- export interface ErrorSurface {
8
- readonly root: HTMLElement;
9
- show(error: PlayerError): void;
10
- clear(): void;
11
- }
12
- export declare function errorSurface(retry: () => void): ErrorSurface;
13
- //# sourceMappingURL=error.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/panels/error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC/B,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,IAAI,GAAG,YAAY,CAqB5D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/panels/error.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAQ/B,MAAM,UAAU,YAAY,CAAC,KAAiB;IAC5C,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;IAC3D,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;IACvB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IAEnB,OAAO;QACL,IAAI;QACJ,IAAI,CAAC,KAAkB;YACrB,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC;YACtC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB,CAAC;QACD,KAAK;YACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { PanelFactory } from './panel.js';
2
- export declare const livePanel: PanelFactory;
3
- //# sourceMappingURL=live.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../src/panels/live.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAS,YAAY,EAAE,MAAM,YAAY,CAAC;AAEtD,eAAO,MAAM,SAAS,EAAE,YA8CvB,CAAC"}
@@ -1,56 +0,0 @@
1
- /**
2
- * The live badge over `engine.live`. Present only when a live stage is
3
- * composed, so the factory answers null for VOD-only engines and for native.
4
- *
5
- * Latency has no event; it moves with the playhead. The video's `timeupdate`
6
- * is the clock the browser already runs, so the badge reads on that.
7
- */
8
- import { el, state } from '../dom.js';
9
- import { namespaces } from '../namespaces.js';
10
- export const livePanel = (session, video) => {
11
- const engine = session.engine;
12
- if (engine === null)
13
- return null;
14
- const found = namespaces(engine).live;
15
- if (found === undefined)
16
- return null;
17
- // Annotated, not narrowed: a hoisted function declaration below reads it.
18
- const live = found;
19
- const root = el('div', 'panel live');
20
- const badge = el('span', 'badge live-badge', 'Live');
21
- const latency = el('span', 'value live-latency');
22
- const button = el('button', 'button live-edge-button', 'Go to live');
23
- button.type = 'button';
24
- root.append(badge, latency, button);
25
- let shown = '';
26
- function tick() {
27
- // The namespace is present whenever a live stage was composed, which says
28
- // nothing about the stream: `full` carries both live adapters, so a VOD
29
- // presentation has `engine.live` too. A window that never opened leaves
30
- // `edge` null, and that is what makes a stream live.
31
- root.hidden = live.edge === null;
32
- const atEdge = live.atEdge;
33
- // State rides the part name: `::part()` takes no attribute selector, so
34
- // `::part(at-edge)` is the only way a page can style the edge state.
35
- state(root, 'panel live', { 'at-edge': atEdge });
36
- button.disabled = atEdge;
37
- const seconds = live.latency;
38
- const text = seconds === null ? '' : `${seconds.toFixed(1)}s behind`;
39
- if (text === shown)
40
- return;
41
- shown = text;
42
- latency.textContent = text;
43
- }
44
- button.addEventListener('click', () => {
45
- live.seekToEdge();
46
- });
47
- video.addEventListener('timeupdate', tick);
48
- tick();
49
- return {
50
- root,
51
- dispose() {
52
- video.removeEventListener('timeupdate', tick);
53
- },
54
- };
55
- };
56
- //# sourceMappingURL=live.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"live.js","sourceRoot":"","sources":["../../src/panels/live.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,MAAM,CAAC,MAAM,SAAS,GAAiB,CAAC,OAAO,EAAE,KAAK,EAAgB,EAAE;IACtE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;IACtC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,0EAA0E;IAC1E,MAAM,IAAI,GAAY,KAAK,CAAC;IAE5B,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,EAAE,yBAAyB,EAAE,YAAY,CAAC,CAAC;IACrE,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;IACvB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAEpC,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,SAAS,IAAI;QACX,0EAA0E;QAC1E,wEAAwE;QACxE,wEAAwE;QACxE,qDAAqD;QACrD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,wEAAwE;QACxE,qEAAqE;QACrE,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,IAAI,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;QACrE,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO;QAC3B,KAAK,GAAG,IAAI,CAAC;QACb,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC3C,IAAI,EAAE,CAAC;IAEP,OAAO;QACL,IAAI;QACJ,OAAO;YACL,KAAK,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -1,13 +0,0 @@
1
- /**
2
- * What a panel is. A panel reads one engine namespace, subscribes to what it
3
- * needs, and hands back a root and a teardown. It renders nothing for a
4
- * native session, and nothing for an engine whose stage was not composed:
5
- * the factory answers null and the element never inserts it.
6
- */
7
- import type { Session } from '@mattebox/player-core';
8
- export interface Panel {
9
- readonly root: HTMLElement;
10
- dispose(): void;
11
- }
12
- export type PanelFactory = (session: Session, video: HTMLVideoElement) => Panel | null;
13
- //# sourceMappingURL=panel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/panels/panel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,KAAK,KAAK,GAAG,IAAI,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=panel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"panel.js","sourceRoot":"","sources":["../../src/panels/panel.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- import type { PanelFactory } from './panel.js';
2
- export declare const qualityPanel: PanelFactory;
3
- //# sourceMappingURL=quality.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quality.d.ts","sourceRoot":"","sources":["../../src/panels/quality.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAS,YAAY,EAAE,MAAM,YAAY,CAAC;AAUtD,eAAO,MAAM,YAAY,EAAE,YAiD1B,CAAC"}