@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
package/dist/element.d.ts CHANGED
@@ -1,17 +1,24 @@
1
1
  /**
2
2
  * <mattebox-player>: a real <video> as a light-DOM child, so the integrator
3
- * can reach it, and the player's own panels in shadow DOM. The element never
3
+ * can reach it, and the error surface in shadow DOM. The element never
4
4
  * forwards or wraps a media element member: play, pause, seek, volume and
5
5
  * the rest live on the video, where the browser, Picture-in-Picture and the
6
6
  * OS media session already find them.
7
7
  *
8
+ * The controls are elements the page places inside, beside the video, and
9
+ * the stage slots them: over the picture for the bar and the screens, in
10
+ * flow under it for the panels row. A page that places none gets the
11
+ * default composition for its mode appended to its light DOM. The element
12
+ * reflects the video's state as attributes on itself, `paused`, `playing`,
13
+ * `ended` and `muted`, for the page's stylesheet and the controls alike.
14
+ *
8
15
  * No class fields, `#private` or otherwise: the ES2015 build would lower
9
16
  * them into runtime helpers, and the emit check bans helpers. Statics are
10
17
  * getters and instance state is declared, then assigned in the constructor.
11
18
  */
12
19
  import type { Handler, Player, PlayerError, Session } from '@mattebox/player-core';
13
- import type { Mattebox, Stage } from 'mattebox';
14
- import type { ControlsOptions } from './controls/options.js';
20
+ import type { KernelConfig, Mattebox, Stage } from 'mattebox';
21
+ import type { PlayerHost } from './host.js';
15
22
  /**
16
23
  * What the element dispatches. `error` is also a standard DOM event name, so
17
24
  * without these overloads a listener on it is typed as `ErrorEvent` and the
@@ -32,8 +39,12 @@ export interface MatteboxPlayerOptions {
32
39
  readonly handlers?: readonly Handler[];
33
40
  /** Stages for the mattebox handler. Takes precedence over the `preset` attribute. */
34
41
  readonly stages?: readonly Stage[];
35
- /** The bar's knobs under `controls="custom"`. An attribute of the same name in kebab-case wins over each. */
36
- readonly controls?: ControlsOptions;
42
+ /**
43
+ * Kernel tuning for the engines the elements build, `traceCapacity` among
44
+ * it. A page decision, like the stages, so not an attribute. Ignored with
45
+ * `handlers`, which carry their own.
46
+ */
47
+ readonly config?: Partial<KernelConfig>;
37
48
  }
38
49
  /**
39
50
  * The interface above merges only `addEventListener` and `removeEventListener`
@@ -41,22 +52,38 @@ export interface MatteboxPlayerOptions {
41
52
  * guards against properties an interface declares and a constructor never
42
53
  * assigns, and there are none.
43
54
  */
44
- export declare class MatteboxPlayerElement extends HTMLElement {
55
+ export declare class MatteboxPlayerElement extends HTMLElement implements PlayerHost {
45
56
  static get observedAttributes(): readonly string[];
46
- /** Registers the element once, and records the stages markup-only pages get. */
57
+ /**
58
+ * Registers the element once, and records the stages markup-only pages
59
+ * get. The controls register through their own entries, the package's
60
+ * root entry importing every one; a control connected before its player
61
+ * is defined waits for the definition.
62
+ */
47
63
  static define(options?: MatteboxPlayerOptions): void;
48
64
  private readonly media;
49
- /** Wraps the slot, so the overlay's bottom is the video's bottom and not the panels'. */
65
+ /** Wraps the slot: the picture, and the controls over it or under it. */
50
66
  private readonly stage;
51
- private readonly bar;
52
- private controls;
67
+ /** The default composition this element appended, to take back when the mode changes. */
68
+ private composed;
69
+ /**
70
+ * Whether the children are all in. While the parser is still inside the
71
+ * element, a page's own bar has not arrived yet, and appending the
72
+ * default then would leave two. So the decision waits for the document
73
+ * to be parsed, or for the microtask after a scripted connect.
74
+ */
75
+ private settled;
53
76
  /** Whether the element gave itself a tabindex for the bar, to take back with it. */
54
77
  private focusable;
55
78
  private readonly surface;
79
+ /** The chapters track element, while the `chapters` attribute names one. */
80
+ private track;
56
81
  private readonly options;
57
- private panels;
58
82
  private core;
59
83
  private current;
84
+ private failure;
85
+ /** Whether an attribute change is the element's own reflection, which must not write back to the video. */
86
+ private reflecting;
60
87
  private offs;
61
88
  /** Everything the element does to the player runs here, so it runs in order. */
62
89
  private queue;
@@ -69,15 +96,28 @@ export declare class MatteboxPlayerElement extends HTMLElement {
69
96
  get player(): Player | null;
70
97
  /** The engine feeding the video, or null for a native session and before the first load. */
71
98
  get engine(): Mattebox | null;
99
+ /**
100
+ * The fatal error of the current load, or null once a load starts or
101
+ * playback resumes. The `error` event says when; this says what, for a
102
+ * control that attaches after the event, such as the default composition
103
+ * behind a source that fails while the page is still parsing.
104
+ */
105
+ get error(): PlayerError | null;
72
106
  connectedCallback(): void;
107
+ /** Decides on the default composition once the children are all in, then on every mode change. */
108
+ private settle;
109
+ /** The video's state on the element, for `mattebox-player[paused]` and the like. */
110
+ private reflect;
73
111
  disconnectedCallback(): void;
74
112
  attributeChangedCallback(name: string): void;
75
113
  /**
76
- * Applies the `controls` attribute and the knobs: the video's own
77
- * controls, and the bar rebuilt from scratch. Rebuilding is cheap, the
78
- * knobs are read once at build, and a session re-attaches in one call.
114
+ * Applies the `controls` attribute: the video's own controls, the
115
+ * tabindex, and the default composition for the mode where the page
116
+ * wrote none. The controls themselves are elements and attach on their own.
79
117
  */
80
118
  private mode;
119
+ /** Keeps a hidden chapters track on the video for the `chapters` attribute, or none. */
120
+ private chapters;
81
121
  private forward;
82
122
  private enqueue;
83
123
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"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"}
package/dist/element.js CHANGED
@@ -1,30 +1,40 @@
1
1
  /**
2
2
  * <mattebox-player>: a real <video> as a light-DOM child, so the integrator
3
- * can reach it, and the player's own panels in shadow DOM. The element never
3
+ * can reach it, and the error surface in shadow DOM. The element never
4
4
  * forwards or wraps a media element member: play, pause, seek, volume and
5
5
  * the rest live on the video, where the browser, Picture-in-Picture and the
6
6
  * OS media session already find them.
7
7
  *
8
+ * The controls are elements the page places inside, beside the video, and
9
+ * the stage slots them: over the picture for the bar and the screens, in
10
+ * flow under it for the panels row. A page that places none gets the
11
+ * default composition for its mode appended to its light DOM. The element
12
+ * reflects the video's state as attributes on itself, `paused`, `playing`,
13
+ * `ended` and `muted`, for the page's stylesheet and the controls alike.
14
+ *
8
15
  * No class fields, `#private` or otherwise: the ES2015 build would lower
9
16
  * them into runtime helpers, and the emit check bans helpers. Statics are
10
17
  * getters and instance state is declared, then assigned in the constructor.
11
18
  */
12
19
  import { createPlayer, matteboxHandler, nativeHandler } from '@mattebox/player-core';
13
- import { controlBar } from './controls/bar.js';
14
- import { ATTRIBUTES, resolve } from './controls/options.js';
20
+ import { composeBar, composePanels } from './compose.js';
15
21
  import { namespaces } from './namespaces.js';
16
- import { drmPanel } from './panels/drm.js';
17
- import { errorSurface } from './panels/error.js';
18
- import { livePanel } from './panels/live.js';
19
- import { qualityPanel } from './panels/quality.js';
20
- import { tracksPanel } from './panels/tracks.js';
21
22
  import { drmGuard, resolvePreset } from './presets.js';
22
23
  import { STYLE } from './style.js';
23
- const TAG = 'mattebox-player';
24
+ import { errorSurface } from './surface.js';
25
+ import { CONTROL_BAR, PANELS, PLAYER } from './tags.js';
24
26
  /** Attributes forwarded onto the video as attributes, never as properties. */
25
- const FORWARDED = ['autoplay', 'muted', 'poster'];
27
+ const FORWARDED = ['autoplay', 'muted', 'poster', 'crossorigin'];
26
28
  /** Everything else the element watches. Changing any of them reloads. */
27
29
  const OWN = ['src', 'type', 'preset', 'license-url', 'thumbnails'];
30
+ /**
31
+ * The chapters track URL. A `<track kind="chapters">` on the video, hidden
32
+ * so its cues load and nothing is drawn: chapters are the browser's own
33
+ * text track, which the seek bar and the chapters menu read, and which a
34
+ * page can also put there itself. Changing it swaps the track and never
35
+ * reloads the source.
36
+ */
37
+ const CHAPTERS = 'chapters';
28
38
  /**
29
39
  * The one attribute whose meaning the element owns: `native` keeps the
30
40
  * browser's controls on the video, `custom` swaps them for the bar, `none`
@@ -32,10 +42,8 @@ const OWN = ['src', 'type', 'preset', 'license-url', 'thumbnails'];
32
42
  * `native`. Changing it swaps the bar without touching the session.
33
43
  */
34
44
  const CONTROLS = 'controls';
35
- /** The bar's knobs as attributes. Changing one rebuilds the bar with the new value. */
36
- const KNOBS = Object.values(ATTRIBUTES);
37
- /** Composed in this order, and each one answers null when its namespace is absent. */
38
- const PANELS = [qualityPanel, tracksPanel, livePanel, drmPanel];
45
+ /** The video's state, as attributes on the element, read on the events the video fires for it. */
46
+ const STATE_EVENTS = ['play', 'pause', 'ended', 'emptied', 'volumechange', 'loadedmetadata'];
39
47
  /** Every stage the engine ships. A narrower preset is optimization. */
40
48
  const DEFAULT_PRESET = 'full';
41
49
  /**
@@ -53,23 +61,32 @@ let defaults = {};
53
61
  // biome-ignore lint/suspicious/noUnsafeDeclarationMerging: method overloads only, no properties
54
62
  export class MatteboxPlayerElement extends HTMLElement {
55
63
  static get observedAttributes() {
56
- return [...FORWARDED, ...OWN, CONTROLS, ...KNOBS];
64
+ return [...FORWARDED, ...OWN, CONTROLS, CHAPTERS];
57
65
  }
58
- /** Registers the element once, and records the stages markup-only pages get. */
66
+ /**
67
+ * Registers the element once, and records the stages markup-only pages
68
+ * get. The controls register through their own entries, the package's
69
+ * root entry importing every one; a control connected before its player
70
+ * is defined waits for the definition.
71
+ */
59
72
  static define(options) {
60
73
  if (options !== undefined)
61
74
  defaults = options;
62
- if (customElements.get(TAG) === undefined)
63
- customElements.define(TAG, MatteboxPlayerElement);
75
+ if (customElements.get(PLAYER) === undefined) {
76
+ customElements.define(PLAYER, MatteboxPlayerElement);
77
+ }
64
78
  }
65
79
  constructor(options) {
66
80
  super();
67
81
  this.options = options ?? defaults;
68
- this.panels = [];
69
- this.controls = null;
82
+ this.composed = [];
83
+ this.settled = false;
70
84
  this.focusable = false;
85
+ this.track = null;
71
86
  this.core = null;
72
87
  this.current = null;
88
+ this.failure = null;
89
+ this.reflecting = false;
73
90
  this.offs = [];
74
91
  this.queue = Promise.resolve();
75
92
  this.pending = false;
@@ -77,18 +94,25 @@ export class MatteboxPlayerElement extends HTMLElement {
77
94
  // Native until the `controls` attribute says otherwise, which arrives
78
95
  // through attributeChangedCallback: a constructor must not read attributes.
79
96
  this.media.controls = true;
97
+ for (const name of STATE_EVENTS) {
98
+ this.media.addEventListener(name, () => {
99
+ this.reflect();
100
+ });
101
+ }
102
+ // An error over a picture that then plays is wrong by definition.
103
+ this.media.addEventListener('playing', () => {
104
+ this.failure = null;
105
+ });
80
106
  this.stage = document.createElement('div');
81
107
  this.stage.setAttribute('part', 'stage');
82
108
  this.stage.append(document.createElement('slot'));
83
- this.bar = document.createElement('div');
84
- this.bar.setAttribute('part', 'panels');
85
109
  this.surface = errorSurface(() => {
86
110
  this.reload();
87
111
  });
88
112
  const root = this.attachShadow({ mode: 'open' });
89
113
  const style = document.createElement('style');
90
114
  style.textContent = STYLE;
91
- root.append(style, this.stage, this.bar, this.surface.root);
115
+ root.append(style, this.stage, this.surface.root);
92
116
  }
93
117
  /** The media element. Everything the browser already does is here. */
94
118
  get video() {
@@ -102,13 +126,51 @@ export class MatteboxPlayerElement extends HTMLElement {
102
126
  get engine() {
103
127
  return this.current?.engine ?? null;
104
128
  }
129
+ /**
130
+ * The fatal error of the current load, or null once a load starts or
131
+ * playback resumes. The `error` event says when; this says what, for a
132
+ * control that attaches after the event, such as the default composition
133
+ * behind a source that fails while the page is still parsing.
134
+ */
135
+ get error() {
136
+ return this.failure;
137
+ }
105
138
  connectedCallback() {
106
139
  if (this.media.parentNode !== this)
107
140
  this.append(this.media);
108
141
  for (const name of FORWARDED)
109
142
  this.forward(name);
143
+ this.reflect();
144
+ if (!this.settled)
145
+ this.settle();
110
146
  this.reload();
111
147
  }
148
+ /** Decides on the default composition once the children are all in, then on every mode change. */
149
+ settle() {
150
+ const done = () => {
151
+ this.settled = true;
152
+ this.mode();
153
+ };
154
+ if (document.readyState === 'loading') {
155
+ document.addEventListener('DOMContentLoaded', done, { once: true });
156
+ }
157
+ else {
158
+ queueMicrotask(done);
159
+ }
160
+ }
161
+ /** The video's state on the element, for `mattebox-player[paused]` and the like. */
162
+ reflect() {
163
+ const video = this.media;
164
+ this.reflecting = true;
165
+ this.toggleAttribute('paused', video.paused);
166
+ this.toggleAttribute('playing', !video.paused);
167
+ this.toggleAttribute('ended', video.ended);
168
+ // `muted` is also forwarded: the page's attribute sets the video, and
169
+ // the video's state sets the attribute. Reflection never forwards, so
170
+ // a read can only ever change the attribute, never the video.
171
+ this.toggleAttribute('muted', video.muted);
172
+ this.reflecting = false;
173
+ }
112
174
  disconnectedCallback() {
113
175
  // A single-page app must not leave a pipeline attached to a video it
114
176
  // navigated away from. Reconnecting loads the `src` again.
@@ -116,60 +178,81 @@ export class MatteboxPlayerElement extends HTMLElement {
116
178
  }
117
179
  attributeChangedCallback(name) {
118
180
  if (FORWARDED.includes(name)) {
119
- this.forward(name);
181
+ if (!this.reflecting)
182
+ this.forward(name);
120
183
  return;
121
184
  }
122
- if (name === CONTROLS || KNOBS.includes(name)) {
185
+ if (name === CONTROLS) {
123
186
  this.mode();
124
187
  return;
125
188
  }
189
+ if (name === CHAPTERS) {
190
+ this.chapters();
191
+ return;
192
+ }
126
193
  // The preset decides the chain, so it is the one attribute that rebuilds it.
127
194
  if (name === 'preset')
128
195
  this.enqueue(() => this.discard());
129
196
  this.reload();
130
197
  }
131
198
  /**
132
- * Applies the `controls` attribute and the knobs: the video's own
133
- * controls, and the bar rebuilt from scratch. Rebuilding is cheap, the
134
- * knobs are read once at build, and a session re-attaches in one call.
199
+ * Applies the `controls` attribute: the video's own controls, the
200
+ * tabindex, and the default composition for the mode where the page
201
+ * wrote none. The controls themselves are elements and attach on their own.
135
202
  */
136
203
  mode() {
137
204
  const value = this.getAttribute(CONTROLS);
138
205
  const custom = value === 'custom';
139
206
  this.media.controls = !custom && value !== 'none';
140
- // The bar carries the menus, so the panels row would say it all twice.
141
- this.bar.hidden = custom;
142
- if (this.controls !== null) {
143
- this.controls.dispose();
144
- this.controls = null;
145
- this.removeAttribute('fullscreen');
207
+ // Under custom controls the error screen element carries a fatal error.
208
+ if (custom)
209
+ this.surface.clear();
210
+ if (!custom) {
146
211
  if (this.focusable)
147
212
  this.removeAttribute('tabindex');
148
213
  this.focusable = false;
149
214
  }
150
- if (!custom)
151
- return;
152
- // A bare video is not focusable, so without this a click on it would
153
- // leave the shortcuts nowhere to listen. A page that set its own
154
- // tabindex keeps it.
155
- if (!this.hasAttribute('tabindex')) {
215
+ else if (!this.hasAttribute('tabindex')) {
216
+ // A bare video is not focusable, so without this a click on it would
217
+ // leave the shortcuts nowhere to listen. A page that set its own
218
+ // tabindex keeps it.
156
219
  this.tabIndex = 0;
157
220
  this.focusable = true;
158
221
  }
159
- const knobs = resolve(this.options.controls, (name) => this.getAttribute(name));
160
- // Fullscreen goes on the stage, in shadow DOM, and `:fullscreen` does
161
- // not match the host for that; the attribute is how a page styles the
162
- // light-DOM video in that state.
163
- this.controls = controlBar(this, this.stage, this.media, knobs, (name, on) => {
164
- this.toggleAttribute(name, on);
165
- }, () => {
166
- this.reload();
167
- });
168
- // The bar's own screen carries a fatal error while the bar is up.
169
- this.surface.clear();
170
- this.stage.append(this.controls.root);
171
- if (this.current !== null)
172
- this.controls.attach(this.current);
222
+ if (!this.settled)
223
+ return;
224
+ for (const node of this.composed)
225
+ node.remove();
226
+ this.composed = [];
227
+ const own = custom ? CONTROL_BAR : PANELS;
228
+ if (this.querySelector(`:scope > ${own}`) === null) {
229
+ this.composed = custom ? composeBar() : composePanels();
230
+ this.append(...this.composed);
231
+ }
232
+ }
233
+ /** Keeps a hidden chapters track on the video for the `chapters` attribute, or none. */
234
+ chapters() {
235
+ const url = this.getAttribute(CHAPTERS);
236
+ if (url === null) {
237
+ this.track?.remove();
238
+ this.track = null;
239
+ return;
240
+ }
241
+ const held = this.track;
242
+ if (held !== null && held.parentNode === this.media && held.getAttribute('src') === url)
243
+ return;
244
+ // A new element each time: one removed mid-load, as the engine's attach
245
+ // does, stays in its error state, and neither a new `src` nor a second
246
+ // insertion starts it loading again.
247
+ held?.remove();
248
+ const track = document.createElement('track');
249
+ track.kind = 'chapters';
250
+ track.src = url;
251
+ this.track = track;
252
+ this.media.append(track);
253
+ // Set after the insertion: a track element's mode exists once it is in
254
+ // a media element, and `hidden` is what makes its cues load unseen.
255
+ track.track.mode = 'hidden';
173
256
  }
174
257
  forward(name) {
175
258
  const value = this.getAttribute(name);
@@ -205,9 +288,10 @@ export class MatteboxPlayerElement extends HTMLElement {
205
288
  }
206
289
  report(error) {
207
290
  if (error.fatal) {
208
- if (this.controls !== null)
209
- this.controls.error(error);
210
- else
291
+ this.failure = error;
292
+ // Under custom controls the error screen element is the surface, and
293
+ // the row under the video stays quiet, as the panels do.
294
+ if (this.getAttribute(CONTROLS) !== 'custom')
211
295
  this.surface.show(error);
212
296
  }
213
297
  this.emit('error', error);
@@ -222,8 +306,8 @@ export class MatteboxPlayerElement extends HTMLElement {
222
306
  const core = await this.ensure();
223
307
  const type = this.getAttribute('type');
224
308
  const source = type === null ? { url } : { url, type };
309
+ this.failure = null;
225
310
  this.surface.clear();
226
- this.controls?.clearError();
227
311
  let session;
228
312
  try {
229
313
  session = await core.load(source);
@@ -239,20 +323,21 @@ export class MatteboxPlayerElement extends HTMLElement {
239
323
  }
240
324
  this.current = session;
241
325
  this.configure(session);
242
- this.controls?.attach(session);
243
- for (const factory of PANELS) {
244
- const panel = factory(session, this.media);
245
- if (panel === null)
246
- continue;
247
- this.panels.push(panel);
248
- this.bar.append(panel.root);
249
- }
326
+ // The engine's attach empties the media element to reset its resource
327
+ // selection (`kernel/mse.ts`), and the chapters track goes with the
328
+ // `<source>` children it means. Wanted: the track to survive attach.
329
+ // Had to: put it back once the session is in. The surface that would
330
+ // make it one call: an attach that removes `<source>` children alone.
331
+ this.chapters();
250
332
  }
251
333
  async ensure() {
252
334
  if (this.core !== null)
253
335
  return this.core;
254
336
  const core = createPlayer(this.media, { handlers: await this.chain() });
255
337
  this.offs.push(core.on('sourcechange', (session) => {
338
+ // Before the event goes out, so a control that reads `engine` on
339
+ // `sourcechange` sees the session the event is about.
340
+ this.current = session;
256
341
  this.emit('sourcechange', session);
257
342
  }), core.on('error', (error) => {
258
343
  this.report(error);
@@ -263,8 +348,9 @@ export class MatteboxPlayerElement extends HTMLElement {
263
348
  async chain() {
264
349
  if (this.options.handlers !== undefined)
265
350
  return this.options.handlers;
351
+ const config = this.options.config === undefined ? {} : { config: this.options.config };
266
352
  if (this.options.stages !== undefined) {
267
- return [matteboxHandler({ stages: this.options.stages }), nativeHandler()];
353
+ return [matteboxHandler({ stages: this.options.stages, ...config }), nativeHandler()];
268
354
  }
269
355
  const name = this.getAttribute('preset') ?? DEFAULT_PRESET;
270
356
  const preset = await resolvePreset(name);
@@ -279,7 +365,7 @@ export class MatteboxPlayerElement extends HTMLElement {
279
365
  });
280
366
  return [nativeHandler()];
281
367
  }
282
- return [matteboxHandler({ preset, ...drmGuard() }), nativeHandler()];
368
+ return [matteboxHandler({ preset, ...config, ...drmGuard() }), nativeHandler()];
283
369
  }
284
370
  /** What the attributes ask of the session's namespaces, once there is one. */
285
371
  configure(session) {
@@ -303,11 +389,6 @@ export class MatteboxPlayerElement extends HTMLElement {
303
389
  }
304
390
  }
305
391
  unmount() {
306
- this.controls?.detach();
307
- for (const panel of this.panels)
308
- panel.dispose();
309
- this.panels = [];
310
- this.bar.replaceChildren();
311
392
  this.current = null;
312
393
  }
313
394
  async teardown() {
@@ -1 +1 @@
1
- {"version":3,"file":"element.js","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"element.js","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * <mbx-audio-menu>: the audio track over `engine.tracks`. Hidden unless
3
+ * there is a choice to make, and for a native session. The name comes
4
+ * from `label`. A track reads as its language, then its role, then its
5
+ * id: whichever the manifest gave.
6
+ */
7
+ import type { ContentType, Mattebox, Track } from 'mattebox';
8
+ import type { PlayerHost } from '../host.js';
9
+ import { MenuElement } from './menu-element.js';
10
+ /** The language, then the role, then the id: whichever the manifest gave. */
11
+ export declare function trackLabel(track: Track): string;
12
+ /** The tracks of one content type as menu items, with the active one's id. */
13
+ export declare function trackItems(engine: Mattebox, contentType: ContentType): [Array<readonly [string, string]>, string | null];
14
+ /** Subscribes `tick` to the track events, and answers the unsubscribe. */
15
+ export declare function onTracks(engine: Mattebox, tick: () => void): () => void;
16
+ export declare class MbxAudioMenu extends MenuElement {
17
+ static get observedAttributes(): readonly string[];
18
+ private engine;
19
+ constructor();
20
+ protected name(): string;
21
+ protected attach(player: PlayerHost): void;
22
+ protected render(): void;
23
+ }
24
+ //# sourceMappingURL=audio-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-menu.d.ts","sourceRoot":"","sources":["../../src/elements/audio-menu.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAU,MAAM,mBAAmB,CAAC;AAGxD,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAG/C;AAED,8EAA8E;AAC9E,wBAAgB,UAAU,CACxB,MAAM,EAAE,QAAQ,EAChB,WAAW,EAAE,WAAW,GACvB,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,CAMnD;AAED,0EAA0E;AAC1E,wBAAgB,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAKvE;AAED,qBAAa,YAAa,SAAQ,WAAW;IAC3C,MAAM,KAAK,kBAAkB,IAAI,SAAS,MAAM,EAAE,CAEjD;IAED,QAAgB,MAAM,CAAkB;;cAQrB,IAAI,IAAI,MAAM;cAId,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;cAWhC,MAAM,IAAI,IAAI;CAqBlC"}