@mattebox/player 0.1.0 → 0.2.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 (410) hide show
  1. package/README.md +4 -3
  2. package/dist/cdn/mattebox-player.min.js +200 -196
  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 +46 -0
  60. package/dist/elements/control-bar.d.ts.map +1 -0
  61. package/dist/elements/control-bar.js +207 -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/seek-bar.d.ts +83 -0
  112. package/dist/elements/seek-bar.d.ts.map +1 -0
  113. package/dist/elements/seek-bar.js +352 -0
  114. package/dist/elements/seek-bar.js.map +1 -0
  115. package/dist/elements/shared.d.ts +27 -0
  116. package/dist/elements/shared.d.ts.map +1 -0
  117. package/dist/elements/shared.js +155 -0
  118. package/dist/elements/shared.js.map +1 -0
  119. package/dist/elements/skip-button.d.ts +14 -0
  120. package/dist/elements/skip-button.d.ts.map +1 -0
  121. package/dist/elements/skip-button.js +60 -0
  122. package/dist/elements/skip-button.js.map +1 -0
  123. package/dist/elements/spacer.d.ts +4 -0
  124. package/dist/elements/spacer.d.ts.map +1 -0
  125. package/dist/elements/spacer.js +9 -0
  126. package/dist/elements/spacer.js.map +1 -0
  127. package/dist/elements/speed-menu.d.ts +18 -0
  128. package/dist/elements/speed-menu.d.ts.map +1 -0
  129. package/dist/elements/speed-menu.js +56 -0
  130. package/dist/elements/speed-menu.js.map +1 -0
  131. package/dist/elements/start-button.d.ts +13 -0
  132. package/dist/elements/start-button.d.ts.map +1 -0
  133. package/dist/elements/start-button.js +83 -0
  134. package/dist/elements/start-button.js.map +1 -0
  135. package/dist/elements/subtitles-menu.d.ts +17 -0
  136. package/dist/elements/subtitles-menu.d.ts.map +1 -0
  137. package/dist/elements/subtitles-menu.js +108 -0
  138. package/dist/elements/subtitles-menu.js.map +1 -0
  139. package/dist/elements/time-element.d.ts +14 -0
  140. package/dist/elements/time-element.d.ts.map +1 -0
  141. package/dist/elements/time-element.js +29 -0
  142. package/dist/elements/time-element.js.map +1 -0
  143. package/dist/elements/volume-slider.d.ts +10 -0
  144. package/dist/elements/volume-slider.d.ts.map +1 -0
  145. package/dist/elements/volume-slider.js +46 -0
  146. package/dist/elements/volume-slider.js.map +1 -0
  147. package/dist/elements/volume.d.ts +9 -0
  148. package/dist/elements/volume.d.ts.map +1 -0
  149. package/dist/elements/volume.js +50 -0
  150. package/dist/elements/volume.js.map +1 -0
  151. package/dist/entries/audio-menu.d.ts +5 -0
  152. package/dist/entries/audio-menu.d.ts.map +1 -0
  153. package/dist/entries/audio-menu.js +8 -0
  154. package/dist/entries/audio-menu.js.map +1 -0
  155. package/dist/entries/chapters-menu.d.ts +5 -0
  156. package/dist/entries/chapters-menu.d.ts.map +1 -0
  157. package/dist/entries/chapters-menu.js +9 -0
  158. package/dist/entries/chapters-menu.js.map +1 -0
  159. package/dist/entries/control-bar.d.ts +5 -0
  160. package/dist/entries/control-bar.d.ts.map +1 -0
  161. package/dist/entries/control-bar.js +8 -0
  162. package/dist/entries/control-bar.js.map +1 -0
  163. package/dist/entries/current-time.d.ts +5 -0
  164. package/dist/entries/current-time.d.ts.map +1 -0
  165. package/dist/entries/current-time.js +8 -0
  166. package/dist/entries/current-time.js.map +1 -0
  167. package/dist/entries/drm-badge.d.ts +5 -0
  168. package/dist/entries/drm-badge.d.ts.map +1 -0
  169. package/dist/entries/drm-badge.js +8 -0
  170. package/dist/entries/drm-badge.js.map +1 -0
  171. package/dist/entries/duration.d.ts +5 -0
  172. package/dist/entries/duration.d.ts.map +1 -0
  173. package/dist/entries/duration.js +8 -0
  174. package/dist/entries/duration.js.map +1 -0
  175. package/dist/entries/error-screen.d.ts +5 -0
  176. package/dist/entries/error-screen.d.ts.map +1 -0
  177. package/dist/entries/error-screen.js +8 -0
  178. package/dist/entries/error-screen.js.map +1 -0
  179. package/dist/entries/fullscreen-button.d.ts +5 -0
  180. package/dist/entries/fullscreen-button.d.ts.map +1 -0
  181. package/dist/entries/fullscreen-button.js +8 -0
  182. package/dist/entries/fullscreen-button.js.map +1 -0
  183. package/dist/entries/live-button.d.ts +5 -0
  184. package/dist/entries/live-button.d.ts.map +1 -0
  185. package/dist/entries/live-button.js +8 -0
  186. package/dist/entries/live-button.js.map +1 -0
  187. package/dist/entries/mute-button.d.ts +5 -0
  188. package/dist/entries/mute-button.d.ts.map +1 -0
  189. package/dist/entries/mute-button.js +8 -0
  190. package/dist/entries/mute-button.js.map +1 -0
  191. package/dist/entries/panels.d.ts +5 -0
  192. package/dist/entries/panels.d.ts.map +1 -0
  193. package/dist/entries/panels.js +8 -0
  194. package/dist/entries/panels.js.map +1 -0
  195. package/dist/entries/pip-button.d.ts +5 -0
  196. package/dist/entries/pip-button.d.ts.map +1 -0
  197. package/dist/entries/pip-button.js +8 -0
  198. package/dist/entries/pip-button.js.map +1 -0
  199. package/dist/entries/play-button.d.ts +5 -0
  200. package/dist/entries/play-button.d.ts.map +1 -0
  201. package/dist/entries/play-button.js +8 -0
  202. package/dist/entries/play-button.js.map +1 -0
  203. package/dist/entries/quality-menu.d.ts +5 -0
  204. package/dist/entries/quality-menu.d.ts.map +1 -0
  205. package/dist/entries/quality-menu.js +8 -0
  206. package/dist/entries/quality-menu.js.map +1 -0
  207. package/dist/entries/seek-bar.d.ts +5 -0
  208. package/dist/entries/seek-bar.d.ts.map +1 -0
  209. package/dist/entries/seek-bar.js +8 -0
  210. package/dist/entries/seek-bar.js.map +1 -0
  211. package/dist/entries/skip-button.d.ts +5 -0
  212. package/dist/entries/skip-button.d.ts.map +1 -0
  213. package/dist/entries/skip-button.js +8 -0
  214. package/dist/entries/skip-button.js.map +1 -0
  215. package/dist/entries/spacer.d.ts +5 -0
  216. package/dist/entries/spacer.d.ts.map +1 -0
  217. package/dist/entries/spacer.js +8 -0
  218. package/dist/entries/spacer.js.map +1 -0
  219. package/dist/entries/speed-menu.d.ts +5 -0
  220. package/dist/entries/speed-menu.d.ts.map +1 -0
  221. package/dist/entries/speed-menu.js +8 -0
  222. package/dist/entries/speed-menu.js.map +1 -0
  223. package/dist/entries/start-button.d.ts +5 -0
  224. package/dist/entries/start-button.d.ts.map +1 -0
  225. package/dist/entries/start-button.js +8 -0
  226. package/dist/entries/start-button.js.map +1 -0
  227. package/dist/entries/subtitles-menu.d.ts +5 -0
  228. package/dist/entries/subtitles-menu.d.ts.map +1 -0
  229. package/dist/entries/subtitles-menu.js +8 -0
  230. package/dist/entries/subtitles-menu.js.map +1 -0
  231. package/dist/entries/volume-slider.d.ts +5 -0
  232. package/dist/entries/volume-slider.d.ts.map +1 -0
  233. package/dist/entries/volume-slider.js +8 -0
  234. package/dist/entries/volume-slider.js.map +1 -0
  235. package/dist/entries/volume.d.ts +7 -0
  236. package/dist/entries/volume.d.ts.map +1 -0
  237. package/dist/entries/volume.js +10 -0
  238. package/dist/entries/volume.js.map +1 -0
  239. package/dist/es2015/compose.js +33 -0
  240. package/dist/es2015/controls/chapters.js +61 -0
  241. package/dist/es2015/controls/cues.js +39 -11
  242. package/dist/es2015/controls/fullscreen.js +25 -23
  243. package/dist/es2015/controls/icons.js +5 -9
  244. package/dist/es2015/controls/menu.js +39 -35
  245. package/dist/es2015/controls/session.js +40 -0
  246. package/dist/es2015/controls/slider.js +18 -13
  247. package/dist/es2015/controls/time.js +1 -5
  248. package/dist/es2015/dom.js +5 -25
  249. package/dist/es2015/element-entry.js +10 -0
  250. package/dist/es2015/element.js +118 -65
  251. package/dist/es2015/elements/audio-menu.js +68 -0
  252. package/dist/es2015/elements/chapters-menu.js +68 -0
  253. package/dist/es2015/elements/component.js +84 -0
  254. package/dist/es2015/elements/control-bar.js +178 -0
  255. package/dist/es2015/elements/current-time.js +27 -0
  256. package/dist/es2015/elements/drm-badge.js +138 -0
  257. package/dist/es2015/elements/duration.js +23 -0
  258. package/dist/es2015/elements/error-screen.js +97 -0
  259. package/dist/es2015/elements/fullscreen-button.js +49 -0
  260. package/dist/es2015/elements/live-button.js +97 -0
  261. package/dist/es2015/elements/menu-element.js +39 -0
  262. package/dist/es2015/elements/mute-button.js +60 -0
  263. package/dist/es2015/elements/panels.js +52 -0
  264. package/dist/es2015/elements/pip-button.js +56 -0
  265. package/dist/es2015/elements/play-button.js +68 -0
  266. package/dist/es2015/elements/quality-menu.js +68 -0
  267. package/dist/es2015/elements/seek-bar.js +314 -0
  268. package/dist/es2015/elements/shared.js +155 -0
  269. package/dist/es2015/elements/skip-button.js +59 -0
  270. package/dist/es2015/elements/spacer.js +11 -0
  271. package/dist/es2015/elements/speed-menu.js +60 -0
  272. package/dist/es2015/elements/start-button.js +87 -0
  273. package/dist/es2015/elements/subtitles-menu.js +103 -0
  274. package/dist/es2015/elements/time-element.js +38 -0
  275. package/dist/es2015/elements/volume-slider.js +47 -0
  276. package/dist/es2015/elements/volume.js +50 -0
  277. package/dist/es2015/entries/audio-menu.js +7 -0
  278. package/dist/es2015/entries/chapters-menu.js +7 -0
  279. package/dist/es2015/entries/control-bar.js +7 -0
  280. package/dist/es2015/entries/current-time.js +7 -0
  281. package/dist/es2015/entries/drm-badge.js +7 -0
  282. package/dist/es2015/entries/duration.js +7 -0
  283. package/dist/es2015/entries/error-screen.js +7 -0
  284. package/dist/es2015/entries/fullscreen-button.js +7 -0
  285. package/dist/es2015/entries/live-button.js +7 -0
  286. package/dist/es2015/entries/mute-button.js +7 -0
  287. package/dist/es2015/entries/panels.js +7 -0
  288. package/dist/es2015/entries/pip-button.js +7 -0
  289. package/dist/es2015/entries/play-button.js +7 -0
  290. package/dist/es2015/entries/quality-menu.js +7 -0
  291. package/dist/es2015/entries/seek-bar.js +7 -0
  292. package/dist/es2015/entries/skip-button.js +7 -0
  293. package/dist/es2015/entries/spacer.js +7 -0
  294. package/dist/es2015/entries/speed-menu.js +7 -0
  295. package/dist/es2015/entries/start-button.js +7 -0
  296. package/dist/es2015/entries/subtitles-menu.js +7 -0
  297. package/dist/es2015/entries/volume-slider.js +7 -0
  298. package/dist/es2015/entries/volume.js +9 -0
  299. package/dist/es2015/host.js +23 -0
  300. package/dist/es2015/index.js +46 -9
  301. package/dist/es2015/labels.js +14 -0
  302. package/dist/es2015/style.js +21 -294
  303. package/dist/es2015/{panels/error.js → surface.js} +3 -3
  304. package/dist/es2015/tags.js +27 -0
  305. package/dist/host.d.ts +26 -0
  306. package/dist/host.d.ts.map +1 -0
  307. package/dist/host.js +23 -0
  308. package/dist/host.js.map +1 -0
  309. package/dist/index.d.ts +81 -3
  310. package/dist/index.d.ts.map +1 -1
  311. package/dist/index.js +23 -8
  312. package/dist/index.js.map +1 -1
  313. package/dist/labels.d.ts +7 -0
  314. package/dist/labels.d.ts.map +1 -0
  315. package/dist/labels.js +12 -0
  316. package/dist/labels.js.map +1 -0
  317. package/dist/style.d.ts +4 -2
  318. package/dist/style.d.ts.map +1 -1
  319. package/dist/style.js +21 -294
  320. package/dist/style.js.map +1 -1
  321. package/dist/surface.d.ts +15 -0
  322. package/dist/surface.d.ts.map +1 -0
  323. package/dist/{panels/error.js → surface.js} +3 -3
  324. package/dist/surface.js.map +1 -0
  325. package/dist/tags.d.ts +25 -0
  326. package/dist/tags.d.ts.map +1 -0
  327. package/dist/tags.js +25 -0
  328. package/dist/tags.js.map +1 -0
  329. package/package.json +22 -2
  330. package/dist/controls/bar.d.ts +0 -56
  331. package/dist/controls/bar.d.ts.map +0 -1
  332. package/dist/controls/bar.js +0 -245
  333. package/dist/controls/bar.js.map +0 -1
  334. package/dist/controls/buttons.d.ts +0 -13
  335. package/dist/controls/buttons.d.ts.map +0 -1
  336. package/dist/controls/buttons.js +0 -157
  337. package/dist/controls/buttons.js.map +0 -1
  338. package/dist/controls/control.d.ts +0 -12
  339. package/dist/controls/control.d.ts.map +0 -1
  340. package/dist/controls/control.js +0 -2
  341. package/dist/controls/control.js.map +0 -1
  342. package/dist/controls/keys.d.ts +0 -26
  343. package/dist/controls/keys.d.ts.map +0 -1
  344. package/dist/controls/keys.js +0 -66
  345. package/dist/controls/keys.js.map +0 -1
  346. package/dist/controls/live.d.ts +0 -10
  347. package/dist/controls/live.d.ts.map +0 -1
  348. package/dist/controls/live.js +0 -59
  349. package/dist/controls/live.js.map +0 -1
  350. package/dist/controls/menus.d.ts +0 -43
  351. package/dist/controls/menus.d.ts.map +0 -1
  352. package/dist/controls/menus.js +0 -262
  353. package/dist/controls/menus.js.map +0 -1
  354. package/dist/controls/options.d.ts +0 -44
  355. package/dist/controls/options.d.ts.map +0 -1
  356. package/dist/controls/options.js +0 -54
  357. package/dist/controls/options.js.map +0 -1
  358. package/dist/controls/screens.d.ts +0 -22
  359. package/dist/controls/screens.d.ts.map +0 -1
  360. package/dist/controls/screens.js +0 -69
  361. package/dist/controls/screens.js.map +0 -1
  362. package/dist/controls/seek.d.ts +0 -52
  363. package/dist/controls/seek.d.ts.map +0 -1
  364. package/dist/controls/seek.js +0 -215
  365. package/dist/controls/seek.js.map +0 -1
  366. package/dist/controls/speed.d.ts +0 -8
  367. package/dist/controls/speed.d.ts.map +0 -1
  368. package/dist/controls/speed.js +0 -34
  369. package/dist/controls/speed.js.map +0 -1
  370. package/dist/controls/volume.d.ts +0 -8
  371. package/dist/controls/volume.d.ts.map +0 -1
  372. package/dist/controls/volume.js +0 -29
  373. package/dist/controls/volume.js.map +0 -1
  374. package/dist/es2015/controls/bar.js +0 -227
  375. package/dist/es2015/controls/buttons.js +0 -146
  376. package/dist/es2015/controls/keys.js +0 -60
  377. package/dist/es2015/controls/live.js +0 -60
  378. package/dist/es2015/controls/menus.js +0 -258
  379. package/dist/es2015/controls/options.js +0 -46
  380. package/dist/es2015/controls/screens.js +0 -74
  381. package/dist/es2015/controls/seek.js +0 -203
  382. package/dist/es2015/controls/speed.js +0 -41
  383. package/dist/es2015/controls/volume.js +0 -30
  384. package/dist/es2015/panels/drm.js +0 -29
  385. package/dist/es2015/panels/live.js +0 -48
  386. package/dist/es2015/panels/quality.js +0 -52
  387. package/dist/es2015/panels/tracks.js +0 -47
  388. package/dist/panels/drm.d.ts +0 -8
  389. package/dist/panels/drm.d.ts.map +0 -1
  390. package/dist/panels/drm.js +0 -36
  391. package/dist/panels/drm.js.map +0 -1
  392. package/dist/panels/error.d.ts +0 -13
  393. package/dist/panels/error.d.ts.map +0 -1
  394. package/dist/panels/error.js.map +0 -1
  395. package/dist/panels/live.d.ts +0 -3
  396. package/dist/panels/live.d.ts.map +0 -1
  397. package/dist/panels/live.js +0 -56
  398. package/dist/panels/live.js.map +0 -1
  399. package/dist/panels/panel.d.ts +0 -13
  400. package/dist/panels/panel.d.ts.map +0 -1
  401. package/dist/panels/panel.js +0 -2
  402. package/dist/panels/panel.js.map +0 -1
  403. package/dist/panels/quality.d.ts +0 -3
  404. package/dist/panels/quality.d.ts.map +0 -1
  405. package/dist/panels/quality.js +0 -59
  406. package/dist/panels/quality.js.map +0 -1
  407. package/dist/panels/tracks.d.ts +0 -3
  408. package/dist/panels/tracks.d.ts.map +0 -1
  409. package/dist/panels/tracks.js +0 -49
  410. package/dist/panels/tracks.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skip-button.js","sourceRoot":"","sources":["../../src/elements/skip-button.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare class MbxSpacer extends HTMLElement {
2
+ constructor();
3
+ }
4
+ //# sourceMappingURL=spacer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spacer.d.ts","sourceRoot":"","sources":["../../src/elements/spacer.ts"],"names":[],"mappings":"AAGA,qBAAa,SAAU,SAAQ,WAAW;;CAKzC"}
@@ -0,0 +1,9 @@
1
+ /** <mbx-spacer>: takes the room in a row, so what follows sits at the far end. */
2
+ import { style } from './shared.js';
3
+ export class MbxSpacer extends HTMLElement {
4
+ constructor() {
5
+ super();
6
+ this.attachShadow({ mode: 'open' }).append(style(':host { display: block; flex: 1 1 auto; }'));
7
+ }
8
+ }
9
+ //# sourceMappingURL=spacer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spacer.js","sourceRoot":"","sources":["../../src/elements/spacer.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,MAAM,OAAO,SAAU,SAAQ,WAAW;IACxC;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC,CAAC;IACjG,CAAC;CACF"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * <mbx-speed-menu>: the rate over `video.playbackRate`. Video-only, so it
3
+ * works for every session, native included. The rates come from `rates`,
4
+ * space-separated, and the video's own value is the truth, read on
5
+ * `ratechange` and listed even when it is not one of them. The name comes
6
+ * from `label`, the word for one from `label-normal`.
7
+ */
8
+ import type { PlayerHost } from '../host.js';
9
+ import { MenuElement } from './menu-element.js';
10
+ export declare class MbxSpeedMenu extends MenuElement {
11
+ static get observedAttributes(): readonly string[];
12
+ constructor();
13
+ protected name(): string;
14
+ private rates;
15
+ protected attach(player: PlayerHost): void;
16
+ protected render(): void;
17
+ }
18
+ //# sourceMappingURL=speed-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speed-menu.d.ts","sourceRoot":"","sources":["../../src/elements/speed-menu.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAU,MAAM,mBAAmB,CAAC;AAKxD,qBAAa,YAAa,SAAQ,WAAW;IAC3C,MAAM,KAAK,kBAAkB,IAAI,SAAS,MAAM,EAAE,CAEjD;;cAOkB,IAAI,IAAI,MAAM;IAIjC,OAAO,CAAC,KAAK;cAUM,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;cAOhC,MAAM,IAAI,IAAI;CAsBlC"}
@@ -0,0 +1,56 @@
1
+ import { MenuElement, single } from './menu-element.js';
2
+ import { show } from './shared.js';
3
+ const RATES = [0.5, 0.75, 1, 1.25, 1.5, 2];
4
+ export class MbxSpeedMenu extends MenuElement {
5
+ static get observedAttributes() {
6
+ return ['rates', 'label', 'label-normal', 'label-back'];
7
+ }
8
+ constructor() {
9
+ super(...single('playback-speed'));
10
+ show(this.slots, 'default');
11
+ }
12
+ name() {
13
+ return 'Playback speed';
14
+ }
15
+ rates() {
16
+ const raw = this.getAttribute('rates');
17
+ if (raw === null)
18
+ return RATES;
19
+ const out = raw
20
+ .split(/\s+/)
21
+ .map(Number)
22
+ .filter((rate) => Number.isFinite(rate) && rate > 0);
23
+ return out.length === 0 ? RATES : out;
24
+ }
25
+ attach(player) {
26
+ this.listen(player.video, ['ratechange'], () => {
27
+ this.render();
28
+ });
29
+ this.render();
30
+ }
31
+ render() {
32
+ super.render();
33
+ const video = this.player?.video;
34
+ if (video === undefined)
35
+ return;
36
+ const normal = this.getAttribute('label-normal') ?? 'Normal';
37
+ const items = this.rates().map((rate) => [
38
+ String(rate),
39
+ rate === 1 ? normal : `${rate}×`,
40
+ ]);
41
+ const current = String(video.playbackRate);
42
+ if (!items.some(([id]) => id === current))
43
+ items.push([current, `${current}×`]);
44
+ this.menu.fill([
45
+ {
46
+ name: 'rate',
47
+ items,
48
+ value: current,
49
+ onSelect: (value) => {
50
+ video.playbackRate = Number(value);
51
+ },
52
+ },
53
+ ]);
54
+ }
55
+ }
56
+ //# sourceMappingURL=speed-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speed-menu.js","sourceRoot":"","sources":["../../src/elements/speed-menu.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAE3C,MAAM,OAAO,YAAa,SAAQ,WAAW;IAC3C,MAAM,KAAK,kBAAkB;QAC3B,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED;QACE,KAAK,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC9B,CAAC;IAEkB,IAAI;QACrB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAEO,KAAK;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAC/B,MAAM,GAAG,GAAG,GAAG;aACZ,KAAK,CAAC,KAAK,CAAC;aACZ,GAAG,CAAC,MAAM,CAAC;aACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;QACvD,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;IACxC,CAAC;IAEkB,MAAM,CAAC,MAAkB;QAC1C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE;YAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEkB,MAAM;QACvB,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;QACjC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,QAAQ,CAAC;QAC7D,MAAM,KAAK,GAAqC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACzE,MAAM,CAAC,IAAI,CAAC;YACZ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG;SACjC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACb;gBACE,IAAI,EAAE,MAAM;gBACZ,KAAK;gBACL,KAAK,EAAE,OAAO;gBACd,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBACrC,CAAC;aACF;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import type { PlayerHost } from '../host.js';
2
+ import { Component } from './component.js';
3
+ export declare class MbxStartButton extends Component {
4
+ static get observedAttributes(): readonly string[];
5
+ private readonly button;
6
+ private readonly slots;
7
+ /** A fatal error is on screen, and the play stays out of its way until playback or a load. */
8
+ private failed;
9
+ constructor();
10
+ protected attach(player: PlayerHost): void;
11
+ protected render(): void;
12
+ }
13
+ //# sourceMappingURL=start-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-button.d.ts","sourceRoot":"","sources":["../../src/elements/start-button.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AA6B3C,qBAAa,cAAe,SAAQ,SAAS;IAC3C,MAAM,KAAK,kBAAkB,IAAI,SAAS,MAAM,EAAE,CAEjD;IAED,iBAAyB,MAAM,CAAoB;IACnD,iBAAyB,KAAK,CAAiC;IAC/D,8FAA8F;IAC9F,QAAgB,MAAM,CAAU;;cAiBb,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;cA2BhC,MAAM,IAAI,IAAI;CAWlC"}
@@ -0,0 +1,83 @@
1
+ import { icon } from '../controls/icons.js';
2
+ import { Component } from './component.js';
3
+ import { BUTTON_STYLE, iconSlots, show, style } from './shared.js';
4
+ const STATES = ['play', 'replay'];
5
+ const STYLE = `${BUTTON_STYLE}
6
+ :host {
7
+ position: absolute;
8
+ top: 50%;
9
+ left: 50%;
10
+ margin: -32px 0 0 -52px;
11
+ }
12
+ [part~="button"] {
13
+ width: 104px;
14
+ height: 64px;
15
+ border: 1px solid rgba(255, 255, 255, 0.18);
16
+ background: rgba(0, 0, 0, 0.45);
17
+ color: var(--mbx-text);
18
+ opacity: 0.9;
19
+ transition: opacity 0.15s, background 0.15s;
20
+ }
21
+ [part~="button"]:hover { opacity: 1; background: rgba(0, 0, 0, 0.6); }
22
+ [part~="icon"], ::slotted(*) { width: 40px; height: 40px; margin-left: 2px; }
23
+ @media (prefers-reduced-motion: reduce) {
24
+ [part~="button"] { transition: none; }
25
+ }
26
+ `;
27
+ export class MbxStartButton extends Component {
28
+ static get observedAttributes() {
29
+ return ['label-play', 'label-replay'];
30
+ }
31
+ constructor() {
32
+ super();
33
+ this.failed = false;
34
+ const root = this.attachShadow({ mode: 'open' });
35
+ this.button = document.createElement('button');
36
+ this.button.type = 'button';
37
+ this.button.setAttribute('part', 'button');
38
+ this.slots = iconSlots(STATES, icon);
39
+ for (const state of STATES)
40
+ this.button.append(this.slots[state]);
41
+ this.button.addEventListener('click', () => {
42
+ this.player?.video.play().catch(() => undefined);
43
+ });
44
+ root.append(style(STYLE), this.button);
45
+ }
46
+ attach(player) {
47
+ const video = player.video;
48
+ this.listen(video, ['play', 'pause', 'ended'], () => {
49
+ this.render();
50
+ });
51
+ this.listen(video, ['playing', 'loadstart'], () => {
52
+ this.failed = false;
53
+ this.render();
54
+ });
55
+ this.listen(player, ['sourcechange'], () => {
56
+ this.failed = false;
57
+ this.render();
58
+ });
59
+ const failure = (event) => {
60
+ const error = event.detail;
61
+ if (!error.fatal)
62
+ return;
63
+ this.failed = true;
64
+ this.render();
65
+ };
66
+ player.addEventListener('error', failure);
67
+ this.keep(() => {
68
+ player.removeEventListener('error', failure);
69
+ });
70
+ this.failed = player.error !== null;
71
+ this.render();
72
+ }
73
+ render() {
74
+ const video = this.player?.video;
75
+ if (video === undefined)
76
+ return;
77
+ const state = video.ended ? 'replay' : 'play';
78
+ show(this.slots, state);
79
+ this.button.setAttribute('aria-label', this.getAttribute(`label-${state}`) ?? (state === 'play' ? 'Play' : 'Replay'));
80
+ this.hidden = this.failed || !video.paused;
81
+ }
82
+ }
83
+ //# sourceMappingURL=start-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-button.js","sourceRoot":"","sources":["../../src/elements/start-button.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { PlayerHost } from '../host.js';
2
+ import { MenuElement } from './menu-element.js';
3
+ export declare const SUBTITLE_SIZE = "subtitle-size";
4
+ export declare const SUBTITLE_BACKGROUND = "subtitle-background";
5
+ type State = 'off' | 'on';
6
+ export declare class MbxSubtitlesMenu extends MenuElement<State> {
7
+ static get observedAttributes(): readonly string[];
8
+ private engine;
9
+ constructor();
10
+ protected name(): string;
11
+ /** A look's group: the choices named from the attributes, the value from the player's. */
12
+ private looks;
13
+ protected attach(player: PlayerHost): void;
14
+ protected render(): void;
15
+ }
16
+ export {};
17
+ //# sourceMappingURL=subtitles-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subtitles-menu.d.ts","sourceRoot":"","sources":["../../src/elements/subtitles-menu.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAczD,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;AAG1B,qBAAa,gBAAiB,SAAQ,WAAW,CAAC,KAAK,CAAC;IACtD,MAAM,KAAK,kBAAkB,IAAI,SAAS,MAAM,EAAE,CAYjD;IAED,QAAgB,MAAM,CAAkB;;cAQrB,IAAI,IAAI,MAAM;IAIjC,0FAA0F;IAC1F,OAAO,CAAC,KAAK;cAsBM,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;cAWhC,MAAM,IAAI,IAAI;CAqClC"}
@@ -0,0 +1,108 @@
1
+ import { icon } from '../controls/icons.js';
2
+ import { onTracks, trackItems } from './audio-menu.js';
3
+ import { MenuElement } from './menu-element.js';
4
+ import { show } from './shared.js';
5
+ const OFF = 'off';
6
+ export const SUBTITLE_SIZE = 'subtitle-size';
7
+ export const SUBTITLE_BACKGROUND = 'subtitle-background';
8
+ const SIZES = [
9
+ ['small', 'Small'],
10
+ ['medium', 'Medium'],
11
+ ['large', 'Large'],
12
+ ['xlarge', 'Extra large'],
13
+ ];
14
+ const BACKGROUNDS = [
15
+ ['none', 'None'],
16
+ ['dark', 'Dark'],
17
+ ['solid', 'Solid'],
18
+ ];
19
+ const STATES = ['off', 'on'];
20
+ export class MbxSubtitlesMenu extends MenuElement {
21
+ static get observedAttributes() {
22
+ return [
23
+ 'label',
24
+ 'label-back',
25
+ 'label-off',
26
+ 'label-track',
27
+ 'label-settings',
28
+ 'label-size',
29
+ 'label-background',
30
+ ...SIZES.map(([id]) => `label-${id}`),
31
+ ...BACKGROUNDS.map(([id]) => `label-${id}`),
32
+ ];
33
+ }
34
+ constructor() {
35
+ super(STATES, (state) => icon(state === 'on' ? 'closed-captions-on' : 'closed-captions'));
36
+ this.engine = null;
37
+ show(this.slots, 'off');
38
+ }
39
+ name() {
40
+ return 'Subtitles';
41
+ }
42
+ /** A look's group: the choices named from the attributes, the value from the player's. */
43
+ looks(player, attribute, name, fallback, choices, initial) {
44
+ const set = player.getAttribute(attribute);
45
+ const value = set !== null && choices.some(([id]) => id === set) ? set : initial;
46
+ return {
47
+ name,
48
+ label: this.getAttribute(`label-${name}`) ?? fallback,
49
+ items: choices.map(([id, text]) => [id, this.getAttribute(`label-${id}`) ?? text]),
50
+ value,
51
+ onSelect: (chosen) => {
52
+ player.setAttribute(attribute, chosen);
53
+ this.render();
54
+ },
55
+ };
56
+ }
57
+ attach(player) {
58
+ this.follow(player, (engine) => {
59
+ this.engine = engine;
60
+ this.render();
61
+ if (engine === null)
62
+ return undefined;
63
+ return onTracks(engine, () => {
64
+ this.render();
65
+ });
66
+ });
67
+ }
68
+ render() {
69
+ super.render();
70
+ const engine = this.engine;
71
+ const player = this.player;
72
+ if (engine === null || player === null) {
73
+ this.hidden = true;
74
+ return;
75
+ }
76
+ const [tracks, active] = trackItems(engine, 'text');
77
+ const items = [
78
+ [OFF, this.getAttribute('label-off') ?? 'Off'],
79
+ ...tracks,
80
+ ];
81
+ this.menu.fill([
82
+ {
83
+ name: 'track',
84
+ label: this.getAttribute('label-track') ?? 'Track',
85
+ items,
86
+ value: active ?? OFF,
87
+ onSelect: (value) => {
88
+ if (value === OFF)
89
+ engine.tracks.deselect('text');
90
+ else
91
+ engine.tracks.select(value);
92
+ this.render();
93
+ },
94
+ },
95
+ {
96
+ name: 'settings',
97
+ label: this.getAttribute('label-settings') ?? 'Settings',
98
+ entries: [
99
+ this.looks(player, SUBTITLE_SIZE, 'size', 'Size', SIZES, 'medium'),
100
+ this.looks(player, SUBTITLE_BACKGROUND, 'background', 'Background', BACKGROUNDS, 'dark'),
101
+ ],
102
+ },
103
+ ]);
104
+ show(this.slots, active === null ? 'off' : 'on');
105
+ this.hidden = tracks.length === 0;
106
+ }
107
+ }
108
+ //# sourceMappingURL=subtitles-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subtitles-menu.js","sourceRoot":"","sources":["../../src/elements/subtitles-menu.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * What the two time readouts share: the events they re-read the video on,
3
+ * and the live and seekable states of the player, which the seek bar sets.
4
+ * Each sits in the bar's seek row unless the page says otherwise.
5
+ */
6
+ import type { PlayerHost } from '../host.js';
7
+ import { Component } from './component.js';
8
+ export declare abstract class TimeElement extends Component {
9
+ protected readonly text: Text;
10
+ constructor(extra?: string);
11
+ connectedCallback(): void;
12
+ protected attach(player: PlayerHost): void;
13
+ }
14
+ //# sourceMappingURL=time-element.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-element.d.ts","sourceRoot":"","sources":["../../src/elements/time-element.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAU3C,8BAAsB,WAAY,SAAQ,SAAS;IACjD,mBAA2B,IAAI,EAAE,IAAI,CAAC;gBAE1B,KAAK,SAAK;IAOb,iBAAiB,IAAI,IAAI;cAKf,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;CASpD"}
@@ -0,0 +1,29 @@
1
+ import { Component } from './component.js';
2
+ import { seekRow, style } from './shared.js';
3
+ const STYLE = `
4
+ :host { display: inline-block; min-width: 3ch; white-space: nowrap; font-variant-numeric: tabular-nums; }
5
+ :host([hidden]) { display: none; }
6
+ `;
7
+ const EVENTS = ['timeupdate', 'durationchange', 'loadedmetadata', 'seeking', 'seeked', 'emptied'];
8
+ export class TimeElement extends Component {
9
+ constructor(extra = '') {
10
+ super();
11
+ const root = this.attachShadow({ mode: 'open' });
12
+ this.text = document.createTextNode('0:00');
13
+ root.append(style(STYLE + extra), this.text);
14
+ }
15
+ connectedCallback() {
16
+ seekRow(this);
17
+ super.connectedCallback();
18
+ }
19
+ attach(player) {
20
+ const tick = () => {
21
+ this.render();
22
+ };
23
+ this.listen(player.video, EVENTS, tick);
24
+ this.listen(player, ['sourcechange'], tick);
25
+ this.observe(player, ['live', 'seekable'], tick);
26
+ this.render();
27
+ }
28
+ }
29
+ //# sourceMappingURL=time-element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-element.js","sourceRoot":"","sources":["../../src/elements/time-element.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,KAAK,GAAG;;;CAGb,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAElG,MAAM,OAAgB,WAAY,SAAQ,SAAS;IAGjD,YAAY,KAAK,GAAG,EAAE;QACpB,KAAK,EAAE,CAAC;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAEQ,iBAAiB;QACxB,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC5B,CAAC;IAEkB,MAAM,CAAC,MAAkB;QAC1C,MAAM,IAAI,GAAG,GAAS,EAAE;YACtB,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import type { PlayerHost } from '../host.js';
2
+ import { Component } from './component.js';
3
+ export declare class MbxVolumeSlider extends Component {
4
+ static get observedAttributes(): readonly string[];
5
+ private readonly bar;
6
+ constructor();
7
+ protected attach(player: PlayerHost): void;
8
+ protected render(): void;
9
+ }
10
+ //# sourceMappingURL=volume-slider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"volume-slider.d.ts","sourceRoot":"","sources":["../../src/elements/volume-slider.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAM3C,qBAAa,eAAgB,SAAQ,SAAS;IAC5C,MAAM,KAAK,kBAAkB,IAAI,SAAS,MAAM,EAAE,CAEjD;IAED,iBAAyB,GAAG,CAAS;;cAsBlB,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;cAOhC,MAAM,IAAI,IAAI;CAOlC"}
@@ -0,0 +1,46 @@
1
+ import { slider } from '../controls/slider.js';
2
+ import { Component } from './component.js';
3
+ import { number, SLIDER_STYLE, style } from './shared.js';
4
+ const STEP = 0.05;
5
+ const PAGE = 0.2;
6
+ export class MbxVolumeSlider extends Component {
7
+ static get observedAttributes() {
8
+ return ['label'];
9
+ }
10
+ constructor() {
11
+ super();
12
+ const root = this.attachShadow({ mode: 'open' });
13
+ this.bar = slider({
14
+ step: () => number(this, 'step', STEP),
15
+ page: () => number(this, 'page', PAGE),
16
+ onInput: (value) => {
17
+ const video = this.player?.video;
18
+ if (video === undefined)
19
+ return;
20
+ video.volume = value;
21
+ if (value > 0)
22
+ video.muted = false;
23
+ },
24
+ onDrag: (on) => {
25
+ this.toggleAttribute('dragging', on);
26
+ },
27
+ });
28
+ this.bar.range(0, 1);
29
+ root.append(style(`${SLIDER_STYLE}:host { width: 80px; flex: none; }`), this.bar.root);
30
+ }
31
+ attach(player) {
32
+ this.listen(player.video, ['volumechange', 'emptied'], () => {
33
+ this.render();
34
+ });
35
+ this.render();
36
+ }
37
+ render() {
38
+ const video = this.player?.video;
39
+ if (video === undefined)
40
+ return;
41
+ this.bar.label(this.getAttribute('label') ?? 'Volume');
42
+ const level = video.muted ? 0 : video.volume;
43
+ this.bar.set(level, `${Math.round(level * 100)}%`);
44
+ }
45
+ }
46
+ //# sourceMappingURL=volume-slider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"volume-slider.js","sourceRoot":"","sources":["../../src/elements/volume-slider.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,IAAI,GAAG,IAAI,CAAC;AAClB,MAAM,IAAI,GAAG,GAAG,CAAC;AAEjB,MAAM,OAAO,eAAgB,SAAQ,SAAS;IAC5C,MAAM,KAAK,kBAAkB;QAC3B,OAAO,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAID;QACE,KAAK,EAAE,CAAC;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;YAChB,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC;YACtC,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC;YACtC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;gBACjC,IAAI,KAAK,KAAK,SAAS;oBAAE,OAAO;gBAChC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;gBACrB,IAAI,KAAK,GAAG,CAAC;oBAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACrC,CAAC;YACD,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;gBACb,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACvC,CAAC;SACF,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,oCAAoC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzF,CAAC;IAEkB,MAAM,CAAC,MAAkB;QAC1C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,cAAc,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE;YAC1D,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEkB,MAAM;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;QACjC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO;QAChC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ import { Component } from './component.js';
2
+ export declare class MbxVolume extends Component {
3
+ constructor();
4
+ /** Both parts, when the page wrote none: a constructor must not add children. */
5
+ connectedCallback(): void;
6
+ protected attach(): void;
7
+ protected detach(): void;
8
+ }
9
+ //# sourceMappingURL=volume.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"volume.d.ts","sourceRoot":"","sources":["../../src/elements/volume.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAa3C,qBAAa,SAAU,SAAQ,SAAS;;IAMtC,iFAAiF;IACxE,iBAAiB,IAAI,IAAI;cAOf,MAAM,IAAI,IAAI;cASd,MAAM,IAAI,IAAI;CAGlC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * <mbx-volume>: the mute button with the slider unfolding from it under
3
+ * the pointer or keyboard focus, the way a bar keeps its width for the
4
+ * rest. The two are its children, in light DOM, so the page labels and
5
+ * styles each; a group left empty fills itself with both. The slider
6
+ * folds to nothing otherwise, and a page that wants it always out sets
7
+ * its width on `mbx-volume-slider` itself.
8
+ *
9
+ * Keyboard focus, not any focus: a click leaves focus on the mute button,
10
+ * and a slider that stayed out until something else took it would read as
11
+ * stuck. So the group carries `pointer` from a pointer press until a key
12
+ * is pressed or focus leaves, and focus unfolds the slider only without it.
13
+ */
14
+ import { MUTE_BUTTON, VOLUME_SLIDER } from '../tags.js';
15
+ import { Component } from './component.js';
16
+ import { style } from './shared.js';
17
+ const STYLE = `
18
+ :host { display: inline-flex; align-items: center; }
19
+ :host([hidden]) { display: none; }
20
+ ::slotted(mbx-volume-slider) { width: 0; opacity: 0; overflow: hidden; transition: width 0.2s ease, opacity 0.2s ease; }
21
+ :host(:hover) ::slotted(mbx-volume-slider), :host(:focus-within:not([pointer])) ::slotted(mbx-volume-slider) { width: 80px; opacity: 1; }
22
+ @media (prefers-reduced-motion: reduce) {
23
+ ::slotted(mbx-volume-slider) { transition: none; }
24
+ }
25
+ `;
26
+ export class MbxVolume extends Component {
27
+ constructor() {
28
+ super();
29
+ this.attachShadow({ mode: 'open' }).append(style(STYLE), document.createElement('slot'));
30
+ }
31
+ /** Both parts, when the page wrote none: a constructor must not add children. */
32
+ connectedCallback() {
33
+ if (this.childElementCount === 0) {
34
+ this.append(document.createElement(MUTE_BUTTON), document.createElement(VOLUME_SLIDER));
35
+ }
36
+ super.connectedCallback();
37
+ }
38
+ attach() {
39
+ this.listen(this, ['pointerdown'], () => {
40
+ this.toggleAttribute('pointer', true);
41
+ });
42
+ this.listen(this, ['keydown', 'focusout'], () => {
43
+ this.removeAttribute('pointer');
44
+ });
45
+ }
46
+ detach() {
47
+ this.removeAttribute('pointer');
48
+ }
49
+ }
50
+ //# sourceMappingURL=volume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"volume.js","sourceRoot":"","sources":["../../src/elements/volume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,MAAM,KAAK,GAAG;;;;;;;;CAQb,CAAC;AAEF,MAAM,OAAO,SAAU,SAAQ,SAAS;IACtC;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED,iFAAiF;IACxE,iBAAiB;QACxB,IAAI,IAAI,CAAC,iBAAiB,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;QAC1F,CAAC;QACD,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC5B,CAAC;IAEkB,MAAM;QACvB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE;YACtC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE;YAC9C,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAEkB,MAAM;QACvB,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ /** `@mattebox/player/elements/audio-menu`: registers <mbx-audio-menu>, and the player with it. */
2
+ import '../element-entry.js';
3
+ import { MbxAudioMenu } from '../elements/audio-menu.js';
4
+ export { MbxAudioMenu };
5
+ //# sourceMappingURL=audio-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-menu.d.ts","sourceRoot":"","sources":["../../src/entries/audio-menu.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAKzD,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ /** `@mattebox/player/elements/audio-menu`: registers <mbx-audio-menu>, and the player with it. */
2
+ import '../element-entry.js';
3
+ import { MbxAudioMenu } from '../elements/audio-menu.js';
4
+ import { AUDIO_MENU } from '../tags.js';
5
+ if (customElements.get(AUDIO_MENU) === undefined)
6
+ customElements.define(AUDIO_MENU, MbxAudioMenu);
7
+ export { MbxAudioMenu };
8
+ //# sourceMappingURL=audio-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-menu.js","sourceRoot":"","sources":["../../src/entries/audio-menu.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,IAAI,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,SAAS;IAAE,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAElG,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** `@mattebox/player/elements/chapters-menu`: registers <mbx-chapters-menu>, and the player with it. */
2
+ import '../element-entry.js';
3
+ import { MbxChaptersMenu } from '../elements/chapters-menu.js';
4
+ export { MbxChaptersMenu };
5
+ //# sourceMappingURL=chapters-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chapters-menu.d.ts","sourceRoot":"","sources":["../../src/entries/chapters-menu.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAO/D,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ /** `@mattebox/player/elements/chapters-menu`: registers <mbx-chapters-menu>, and the player with it. */
2
+ import '../element-entry.js';
3
+ import { MbxChaptersMenu } from '../elements/chapters-menu.js';
4
+ import { CHAPTERS_MENU } from '../tags.js';
5
+ if (customElements.get(CHAPTERS_MENU) === undefined) {
6
+ customElements.define(CHAPTERS_MENU, MbxChaptersMenu);
7
+ }
8
+ export { MbxChaptersMenu };
9
+ //# sourceMappingURL=chapters-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chapters-menu.js","sourceRoot":"","sources":["../../src/entries/chapters-menu.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,IAAI,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE,CAAC;IACpD,cAAc,CAAC,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;AACxD,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** `@mattebox/player/elements/control-bar`: registers <mbx-control-bar>, and the player with it. */
2
+ import '../element-entry.js';
3
+ import { MbxControlBar } from '../elements/control-bar.js';
4
+ export { MbxControlBar };
5
+ //# sourceMappingURL=control-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"control-bar.d.ts","sourceRoot":"","sources":["../../src/entries/control-bar.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAM3D,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ /** `@mattebox/player/elements/control-bar`: registers <mbx-control-bar>, and the player with it. */
2
+ import '../element-entry.js';
3
+ import { MbxControlBar } from '../elements/control-bar.js';
4
+ import { CONTROL_BAR } from '../tags.js';
5
+ if (customElements.get(CONTROL_BAR) === undefined)
6
+ customElements.define(CONTROL_BAR, MbxControlBar);
7
+ export { MbxControlBar };
8
+ //# sourceMappingURL=control-bar.js.map