@mattebox/player 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (420) hide show
  1. package/README.md +4 -3
  2. package/dist/cdn/mattebox-player.min.js +222 -198
  3. package/dist/compose.d.ts +5 -0
  4. package/dist/compose.d.ts.map +1 -0
  5. package/dist/compose.js +31 -0
  6. package/dist/compose.js.map +1 -0
  7. package/dist/controls/chapters.d.ts +29 -0
  8. package/dist/controls/chapters.d.ts.map +1 -0
  9. package/dist/controls/chapters.js +81 -0
  10. package/dist/controls/chapters.js.map +1 -0
  11. package/dist/controls/cues.d.ts +8 -3
  12. package/dist/controls/cues.d.ts.map +1 -1
  13. package/dist/controls/cues.js +44 -10
  14. package/dist/controls/cues.js.map +1 -1
  15. package/dist/controls/fullscreen.d.ts +9 -9
  16. package/dist/controls/fullscreen.d.ts.map +1 -1
  17. package/dist/controls/fullscreen.js +17 -21
  18. package/dist/controls/fullscreen.js.map +1 -1
  19. package/dist/controls/icons.d.ts +1 -3
  20. package/dist/controls/icons.d.ts.map +1 -1
  21. package/dist/controls/icons.js +3 -6
  22. package/dist/controls/icons.js.map +1 -1
  23. package/dist/controls/menu.d.ts +14 -11
  24. package/dist/controls/menu.d.ts.map +1 -1
  25. package/dist/controls/menu.js +39 -34
  26. package/dist/controls/menu.js.map +1 -1
  27. package/dist/controls/session.d.ts +27 -0
  28. package/dist/controls/session.d.ts.map +1 -0
  29. package/dist/controls/session.js +36 -0
  30. package/dist/controls/session.js.map +1 -0
  31. package/dist/controls/slider.d.ts +6 -6
  32. package/dist/controls/slider.d.ts.map +1 -1
  33. package/dist/controls/slider.js +18 -13
  34. package/dist/controls/slider.js.map +1 -1
  35. package/dist/dom.d.ts +4 -10
  36. package/dist/dom.d.ts.map +1 -1
  37. package/dist/dom.js +4 -24
  38. package/dist/dom.js.map +1 -1
  39. package/dist/element-entry.d.ts +4 -0
  40. package/dist/element-entry.d.ts.map +1 -0
  41. package/dist/element-entry.js +9 -0
  42. package/dist/element-entry.js.map +1 -0
  43. package/dist/element.d.ts +54 -14
  44. package/dist/element.d.ts.map +1 -1
  45. package/dist/element.js +154 -73
  46. package/dist/element.js.map +1 -1
  47. package/dist/elements/audio-menu.d.ts +24 -0
  48. package/dist/elements/audio-menu.d.ts.map +1 -0
  49. package/dist/elements/audio-menu.js +70 -0
  50. package/dist/elements/audio-menu.js.map +1 -0
  51. package/dist/elements/chapters-menu.d.ts +12 -0
  52. package/dist/elements/chapters-menu.d.ts.map +1 -0
  53. package/dist/elements/chapters-menu.js +67 -0
  54. package/dist/elements/chapters-menu.js.map +1 -0
  55. package/dist/elements/component.d.ts +45 -0
  56. package/dist/elements/component.d.ts.map +1 -0
  57. package/dist/elements/component.js +90 -0
  58. package/dist/elements/component.js.map +1 -0
  59. package/dist/elements/control-bar.d.ts +75 -0
  60. package/dist/elements/control-bar.d.ts.map +1 -0
  61. package/dist/elements/control-bar.js +339 -0
  62. package/dist/elements/control-bar.js.map +1 -0
  63. package/dist/elements/current-time.d.ts +5 -0
  64. package/dist/elements/current-time.d.ts.map +1 -0
  65. package/dist/elements/current-time.js +27 -0
  66. package/dist/elements/current-time.js.map +1 -0
  67. package/dist/elements/drm-badge.d.ts +29 -0
  68. package/dist/elements/drm-badge.d.ts.map +1 -0
  69. package/dist/elements/drm-badge.js +145 -0
  70. package/dist/elements/drm-badge.js.map +1 -0
  71. package/dist/elements/duration.d.ts +6 -0
  72. package/dist/elements/duration.d.ts.map +1 -0
  73. package/dist/elements/duration.js +23 -0
  74. package/dist/elements/duration.js.map +1 -0
  75. package/dist/elements/error-screen.d.ts +17 -0
  76. package/dist/elements/error-screen.d.ts.map +1 -0
  77. package/dist/elements/error-screen.js +103 -0
  78. package/dist/elements/error-screen.js.map +1 -0
  79. package/dist/elements/fullscreen-button.d.ts +19 -0
  80. package/dist/elements/fullscreen-button.d.ts.map +1 -0
  81. package/dist/elements/fullscreen-button.js +55 -0
  82. package/dist/elements/fullscreen-button.js.map +1 -0
  83. package/dist/elements/live-button.d.ts +12 -0
  84. package/dist/elements/live-button.d.ts.map +1 -0
  85. package/dist/elements/live-button.js +96 -0
  86. package/dist/elements/live-button.js.map +1 -0
  87. package/dist/elements/menu-element.d.ts +22 -0
  88. package/dist/elements/menu-element.d.ts.map +1 -0
  89. package/dist/elements/menu-element.js +31 -0
  90. package/dist/elements/menu-element.js.map +1 -0
  91. package/dist/elements/mute-button.d.ts +12 -0
  92. package/dist/elements/mute-button.d.ts.map +1 -0
  93. package/dist/elements/mute-button.js +61 -0
  94. package/dist/elements/mute-button.js.map +1 -0
  95. package/dist/elements/panels.d.ts +15 -0
  96. package/dist/elements/panels.d.ts.map +1 -0
  97. package/dist/elements/panels.js +55 -0
  98. package/dist/elements/panels.js.map +1 -0
  99. package/dist/elements/pip-button.d.ts +13 -0
  100. package/dist/elements/pip-button.d.ts.map +1 -0
  101. package/dist/elements/pip-button.js +56 -0
  102. package/dist/elements/pip-button.js.map +1 -0
  103. package/dist/elements/play-button.d.ts +12 -0
  104. package/dist/elements/play-button.d.ts.map +1 -0
  105. package/dist/elements/play-button.js +60 -0
  106. package/dist/elements/play-button.js.map +1 -0
  107. package/dist/elements/quality-menu.d.ts +11 -0
  108. package/dist/elements/quality-menu.d.ts.map +1 -0
  109. package/dist/elements/quality-menu.js +72 -0
  110. package/dist/elements/quality-menu.js.map +1 -0
  111. package/dist/elements/remaining-time.d.ts +6 -0
  112. package/dist/elements/remaining-time.d.ts.map +1 -0
  113. package/dist/elements/remaining-time.js +26 -0
  114. package/dist/elements/remaining-time.js.map +1 -0
  115. package/dist/elements/seek-bar.d.ts +83 -0
  116. package/dist/elements/seek-bar.d.ts.map +1 -0
  117. package/dist/elements/seek-bar.js +352 -0
  118. package/dist/elements/seek-bar.js.map +1 -0
  119. package/dist/elements/shared.d.ts +27 -0
  120. package/dist/elements/shared.d.ts.map +1 -0
  121. package/dist/elements/shared.js +155 -0
  122. package/dist/elements/shared.js.map +1 -0
  123. package/dist/elements/skip-button.d.ts +14 -0
  124. package/dist/elements/skip-button.d.ts.map +1 -0
  125. package/dist/elements/skip-button.js +60 -0
  126. package/dist/elements/skip-button.js.map +1 -0
  127. package/dist/elements/spacer.d.ts +4 -0
  128. package/dist/elements/spacer.d.ts.map +1 -0
  129. package/dist/elements/spacer.js +9 -0
  130. package/dist/elements/spacer.js.map +1 -0
  131. package/dist/elements/speed-menu.d.ts +18 -0
  132. package/dist/elements/speed-menu.d.ts.map +1 -0
  133. package/dist/elements/speed-menu.js +56 -0
  134. package/dist/elements/speed-menu.js.map +1 -0
  135. package/dist/elements/start-button.d.ts +23 -0
  136. package/dist/elements/start-button.d.ts.map +1 -0
  137. package/dist/elements/start-button.js +120 -0
  138. package/dist/elements/start-button.js.map +1 -0
  139. package/dist/elements/subtitles-menu.d.ts +17 -0
  140. package/dist/elements/subtitles-menu.d.ts.map +1 -0
  141. package/dist/elements/subtitles-menu.js +108 -0
  142. package/dist/elements/subtitles-menu.js.map +1 -0
  143. package/dist/elements/time-element.d.ts +14 -0
  144. package/dist/elements/time-element.d.ts.map +1 -0
  145. package/dist/elements/time-element.js +29 -0
  146. package/dist/elements/time-element.js.map +1 -0
  147. package/dist/elements/volume-slider.d.ts +10 -0
  148. package/dist/elements/volume-slider.d.ts.map +1 -0
  149. package/dist/elements/volume-slider.js +46 -0
  150. package/dist/elements/volume-slider.js.map +1 -0
  151. package/dist/elements/volume.d.ts +9 -0
  152. package/dist/elements/volume.d.ts.map +1 -0
  153. package/dist/elements/volume.js +52 -0
  154. package/dist/elements/volume.js.map +1 -0
  155. package/dist/entries/audio-menu.d.ts +5 -0
  156. package/dist/entries/audio-menu.d.ts.map +1 -0
  157. package/dist/entries/audio-menu.js +8 -0
  158. package/dist/entries/audio-menu.js.map +1 -0
  159. package/dist/entries/chapters-menu.d.ts +5 -0
  160. package/dist/entries/chapters-menu.d.ts.map +1 -0
  161. package/dist/entries/chapters-menu.js +9 -0
  162. package/dist/entries/chapters-menu.js.map +1 -0
  163. package/dist/entries/control-bar.d.ts +5 -0
  164. package/dist/entries/control-bar.d.ts.map +1 -0
  165. package/dist/entries/control-bar.js +8 -0
  166. package/dist/entries/control-bar.js.map +1 -0
  167. package/dist/entries/current-time.d.ts +5 -0
  168. package/dist/entries/current-time.d.ts.map +1 -0
  169. package/dist/entries/current-time.js +8 -0
  170. package/dist/entries/current-time.js.map +1 -0
  171. package/dist/entries/drm-badge.d.ts +5 -0
  172. package/dist/entries/drm-badge.d.ts.map +1 -0
  173. package/dist/entries/drm-badge.js +8 -0
  174. package/dist/entries/drm-badge.js.map +1 -0
  175. package/dist/entries/duration.d.ts +5 -0
  176. package/dist/entries/duration.d.ts.map +1 -0
  177. package/dist/entries/duration.js +8 -0
  178. package/dist/entries/duration.js.map +1 -0
  179. package/dist/entries/error-screen.d.ts +5 -0
  180. package/dist/entries/error-screen.d.ts.map +1 -0
  181. package/dist/entries/error-screen.js +8 -0
  182. package/dist/entries/error-screen.js.map +1 -0
  183. package/dist/entries/fullscreen-button.d.ts +5 -0
  184. package/dist/entries/fullscreen-button.d.ts.map +1 -0
  185. package/dist/entries/fullscreen-button.js +8 -0
  186. package/dist/entries/fullscreen-button.js.map +1 -0
  187. package/dist/entries/live-button.d.ts +5 -0
  188. package/dist/entries/live-button.d.ts.map +1 -0
  189. package/dist/entries/live-button.js +8 -0
  190. package/dist/entries/live-button.js.map +1 -0
  191. package/dist/entries/mute-button.d.ts +5 -0
  192. package/dist/entries/mute-button.d.ts.map +1 -0
  193. package/dist/entries/mute-button.js +8 -0
  194. package/dist/entries/mute-button.js.map +1 -0
  195. package/dist/entries/panels.d.ts +5 -0
  196. package/dist/entries/panels.d.ts.map +1 -0
  197. package/dist/entries/panels.js +8 -0
  198. package/dist/entries/panels.js.map +1 -0
  199. package/dist/entries/pip-button.d.ts +5 -0
  200. package/dist/entries/pip-button.d.ts.map +1 -0
  201. package/dist/entries/pip-button.js +8 -0
  202. package/dist/entries/pip-button.js.map +1 -0
  203. package/dist/entries/play-button.d.ts +5 -0
  204. package/dist/entries/play-button.d.ts.map +1 -0
  205. package/dist/entries/play-button.js +8 -0
  206. package/dist/entries/play-button.js.map +1 -0
  207. package/dist/entries/quality-menu.d.ts +5 -0
  208. package/dist/entries/quality-menu.d.ts.map +1 -0
  209. package/dist/entries/quality-menu.js +8 -0
  210. package/dist/entries/quality-menu.js.map +1 -0
  211. package/dist/entries/remaining-time.d.ts +5 -0
  212. package/dist/entries/remaining-time.d.ts.map +1 -0
  213. package/dist/entries/remaining-time.js +9 -0
  214. package/dist/entries/remaining-time.js.map +1 -0
  215. package/dist/entries/seek-bar.d.ts +5 -0
  216. package/dist/entries/seek-bar.d.ts.map +1 -0
  217. package/dist/entries/seek-bar.js +8 -0
  218. package/dist/entries/seek-bar.js.map +1 -0
  219. package/dist/entries/skip-button.d.ts +5 -0
  220. package/dist/entries/skip-button.d.ts.map +1 -0
  221. package/dist/entries/skip-button.js +8 -0
  222. package/dist/entries/skip-button.js.map +1 -0
  223. package/dist/entries/spacer.d.ts +5 -0
  224. package/dist/entries/spacer.d.ts.map +1 -0
  225. package/dist/entries/spacer.js +8 -0
  226. package/dist/entries/spacer.js.map +1 -0
  227. package/dist/entries/speed-menu.d.ts +5 -0
  228. package/dist/entries/speed-menu.d.ts.map +1 -0
  229. package/dist/entries/speed-menu.js +8 -0
  230. package/dist/entries/speed-menu.js.map +1 -0
  231. package/dist/entries/start-button.d.ts +5 -0
  232. package/dist/entries/start-button.d.ts.map +1 -0
  233. package/dist/entries/start-button.js +8 -0
  234. package/dist/entries/start-button.js.map +1 -0
  235. package/dist/entries/subtitles-menu.d.ts +5 -0
  236. package/dist/entries/subtitles-menu.d.ts.map +1 -0
  237. package/dist/entries/subtitles-menu.js +8 -0
  238. package/dist/entries/subtitles-menu.js.map +1 -0
  239. package/dist/entries/volume-slider.d.ts +5 -0
  240. package/dist/entries/volume-slider.d.ts.map +1 -0
  241. package/dist/entries/volume-slider.js +8 -0
  242. package/dist/entries/volume-slider.js.map +1 -0
  243. package/dist/entries/volume.d.ts +7 -0
  244. package/dist/entries/volume.d.ts.map +1 -0
  245. package/dist/entries/volume.js +10 -0
  246. package/dist/entries/volume.js.map +1 -0
  247. package/dist/es2015/compose.js +33 -0
  248. package/dist/es2015/controls/chapters.js +61 -0
  249. package/dist/es2015/controls/cues.js +39 -11
  250. package/dist/es2015/controls/fullscreen.js +25 -23
  251. package/dist/es2015/controls/icons.js +5 -9
  252. package/dist/es2015/controls/menu.js +39 -35
  253. package/dist/es2015/controls/session.js +40 -0
  254. package/dist/es2015/controls/slider.js +18 -13
  255. package/dist/es2015/controls/time.js +1 -5
  256. package/dist/es2015/dom.js +5 -25
  257. package/dist/es2015/element-entry.js +10 -0
  258. package/dist/es2015/element.js +118 -65
  259. package/dist/es2015/elements/audio-menu.js +68 -0
  260. package/dist/es2015/elements/chapters-menu.js +68 -0
  261. package/dist/es2015/elements/component.js +85 -0
  262. package/dist/es2015/elements/control-bar.js +299 -0
  263. package/dist/es2015/elements/current-time.js +27 -0
  264. package/dist/es2015/elements/drm-badge.js +138 -0
  265. package/dist/es2015/elements/duration.js +23 -0
  266. package/dist/es2015/elements/error-screen.js +97 -0
  267. package/dist/es2015/elements/fullscreen-button.js +49 -0
  268. package/dist/es2015/elements/live-button.js +97 -0
  269. package/dist/es2015/elements/menu-element.js +39 -0
  270. package/dist/es2015/elements/mute-button.js +60 -0
  271. package/dist/es2015/elements/panels.js +52 -0
  272. package/dist/es2015/elements/pip-button.js +56 -0
  273. package/dist/es2015/elements/play-button.js +68 -0
  274. package/dist/es2015/elements/quality-menu.js +68 -0
  275. package/dist/es2015/elements/remaining-time.js +26 -0
  276. package/dist/es2015/elements/seek-bar.js +314 -0
  277. package/dist/es2015/elements/shared.js +155 -0
  278. package/dist/es2015/elements/skip-button.js +59 -0
  279. package/dist/es2015/elements/spacer.js +11 -0
  280. package/dist/es2015/elements/speed-menu.js +60 -0
  281. package/dist/es2015/elements/start-button.js +124 -0
  282. package/dist/es2015/elements/subtitles-menu.js +103 -0
  283. package/dist/es2015/elements/time-element.js +38 -0
  284. package/dist/es2015/elements/volume-slider.js +47 -0
  285. package/dist/es2015/elements/volume.js +52 -0
  286. package/dist/es2015/entries/audio-menu.js +7 -0
  287. package/dist/es2015/entries/chapters-menu.js +7 -0
  288. package/dist/es2015/entries/control-bar.js +7 -0
  289. package/dist/es2015/entries/current-time.js +7 -0
  290. package/dist/es2015/entries/drm-badge.js +7 -0
  291. package/dist/es2015/entries/duration.js +7 -0
  292. package/dist/es2015/entries/error-screen.js +7 -0
  293. package/dist/es2015/entries/fullscreen-button.js +7 -0
  294. package/dist/es2015/entries/live-button.js +7 -0
  295. package/dist/es2015/entries/mute-button.js +7 -0
  296. package/dist/es2015/entries/panels.js +7 -0
  297. package/dist/es2015/entries/pip-button.js +7 -0
  298. package/dist/es2015/entries/play-button.js +7 -0
  299. package/dist/es2015/entries/quality-menu.js +7 -0
  300. package/dist/es2015/entries/remaining-time.js +7 -0
  301. package/dist/es2015/entries/seek-bar.js +7 -0
  302. package/dist/es2015/entries/skip-button.js +7 -0
  303. package/dist/es2015/entries/spacer.js +7 -0
  304. package/dist/es2015/entries/speed-menu.js +7 -0
  305. package/dist/es2015/entries/start-button.js +7 -0
  306. package/dist/es2015/entries/subtitles-menu.js +7 -0
  307. package/dist/es2015/entries/volume-slider.js +7 -0
  308. package/dist/es2015/entries/volume.js +9 -0
  309. package/dist/es2015/host.js +23 -0
  310. package/dist/es2015/index.js +48 -9
  311. package/dist/es2015/labels.js +14 -0
  312. package/dist/es2015/style.js +40 -292
  313. package/dist/es2015/{panels/error.js → surface.js} +3 -3
  314. package/dist/es2015/tags.js +28 -0
  315. package/dist/host.d.ts +26 -0
  316. package/dist/host.d.ts.map +1 -0
  317. package/dist/host.js +23 -0
  318. package/dist/host.js.map +1 -0
  319. package/dist/index.d.ts +84 -3
  320. package/dist/index.d.ts.map +1 -1
  321. package/dist/index.js +24 -8
  322. package/dist/index.js.map +1 -1
  323. package/dist/labels.d.ts +7 -0
  324. package/dist/labels.d.ts.map +1 -0
  325. package/dist/labels.js +12 -0
  326. package/dist/labels.js.map +1 -0
  327. package/dist/style.d.ts +10 -2
  328. package/dist/style.d.ts.map +1 -1
  329. package/dist/style.js +40 -292
  330. package/dist/style.js.map +1 -1
  331. package/dist/surface.d.ts +15 -0
  332. package/dist/surface.d.ts.map +1 -0
  333. package/dist/{panels/error.js → surface.js} +3 -3
  334. package/dist/surface.js.map +1 -0
  335. package/dist/tags.d.ts +26 -0
  336. package/dist/tags.d.ts.map +1 -0
  337. package/dist/tags.js +26 -0
  338. package/dist/tags.js.map +1 -0
  339. package/package.json +22 -2
  340. package/dist/controls/bar.d.ts +0 -56
  341. package/dist/controls/bar.d.ts.map +0 -1
  342. package/dist/controls/bar.js +0 -245
  343. package/dist/controls/bar.js.map +0 -1
  344. package/dist/controls/buttons.d.ts +0 -13
  345. package/dist/controls/buttons.d.ts.map +0 -1
  346. package/dist/controls/buttons.js +0 -157
  347. package/dist/controls/buttons.js.map +0 -1
  348. package/dist/controls/control.d.ts +0 -12
  349. package/dist/controls/control.d.ts.map +0 -1
  350. package/dist/controls/control.js +0 -2
  351. package/dist/controls/control.js.map +0 -1
  352. package/dist/controls/keys.d.ts +0 -26
  353. package/dist/controls/keys.d.ts.map +0 -1
  354. package/dist/controls/keys.js +0 -66
  355. package/dist/controls/keys.js.map +0 -1
  356. package/dist/controls/live.d.ts +0 -10
  357. package/dist/controls/live.d.ts.map +0 -1
  358. package/dist/controls/live.js +0 -59
  359. package/dist/controls/live.js.map +0 -1
  360. package/dist/controls/menus.d.ts +0 -43
  361. package/dist/controls/menus.d.ts.map +0 -1
  362. package/dist/controls/menus.js +0 -262
  363. package/dist/controls/menus.js.map +0 -1
  364. package/dist/controls/options.d.ts +0 -44
  365. package/dist/controls/options.d.ts.map +0 -1
  366. package/dist/controls/options.js +0 -54
  367. package/dist/controls/options.js.map +0 -1
  368. package/dist/controls/screens.d.ts +0 -22
  369. package/dist/controls/screens.d.ts.map +0 -1
  370. package/dist/controls/screens.js +0 -69
  371. package/dist/controls/screens.js.map +0 -1
  372. package/dist/controls/seek.d.ts +0 -52
  373. package/dist/controls/seek.d.ts.map +0 -1
  374. package/dist/controls/seek.js +0 -215
  375. package/dist/controls/seek.js.map +0 -1
  376. package/dist/controls/speed.d.ts +0 -8
  377. package/dist/controls/speed.d.ts.map +0 -1
  378. package/dist/controls/speed.js +0 -34
  379. package/dist/controls/speed.js.map +0 -1
  380. package/dist/controls/volume.d.ts +0 -8
  381. package/dist/controls/volume.d.ts.map +0 -1
  382. package/dist/controls/volume.js +0 -29
  383. package/dist/controls/volume.js.map +0 -1
  384. package/dist/es2015/controls/bar.js +0 -227
  385. package/dist/es2015/controls/buttons.js +0 -146
  386. package/dist/es2015/controls/keys.js +0 -60
  387. package/dist/es2015/controls/live.js +0 -60
  388. package/dist/es2015/controls/menus.js +0 -258
  389. package/dist/es2015/controls/options.js +0 -46
  390. package/dist/es2015/controls/screens.js +0 -74
  391. package/dist/es2015/controls/seek.js +0 -203
  392. package/dist/es2015/controls/speed.js +0 -41
  393. package/dist/es2015/controls/volume.js +0 -30
  394. package/dist/es2015/panels/drm.js +0 -29
  395. package/dist/es2015/panels/live.js +0 -48
  396. package/dist/es2015/panels/quality.js +0 -52
  397. package/dist/es2015/panels/tracks.js +0 -47
  398. package/dist/panels/drm.d.ts +0 -8
  399. package/dist/panels/drm.d.ts.map +0 -1
  400. package/dist/panels/drm.js +0 -36
  401. package/dist/panels/drm.js.map +0 -1
  402. package/dist/panels/error.d.ts +0 -13
  403. package/dist/panels/error.d.ts.map +0 -1
  404. package/dist/panels/error.js.map +0 -1
  405. package/dist/panels/live.d.ts +0 -3
  406. package/dist/panels/live.d.ts.map +0 -1
  407. package/dist/panels/live.js +0 -56
  408. package/dist/panels/live.js.map +0 -1
  409. package/dist/panels/panel.d.ts +0 -13
  410. package/dist/panels/panel.d.ts.map +0 -1
  411. package/dist/panels/panel.js +0 -2
  412. package/dist/panels/panel.js.map +0 -1
  413. package/dist/panels/quality.d.ts +0 -3
  414. package/dist/panels/quality.d.ts.map +0 -1
  415. package/dist/panels/quality.js +0 -59
  416. package/dist/panels/quality.js.map +0 -1
  417. package/dist/panels/tracks.d.ts +0 -3
  418. package/dist/panels/tracks.d.ts.map +0 -1
  419. package/dist/panels/tracks.js +0 -49
  420. package/dist/panels/tracks.js.map +0 -1
@@ -0,0 +1,14 @@
1
+ //#region src/labels.ts
2
+ /**
3
+ * Label templates: `{name}` in an attribute's text is replaced from the
4
+ * values the element has, and a name it does not have stays as written.
5
+ * Pure, node-tested.
6
+ */
7
+ function fill(template, values) {
8
+ return template.replace(/\{(\w+)\}/g, (match, name) => {
9
+ const value = values[name];
10
+ return value === void 0 ? match : String(value);
11
+ });
12
+ }
13
+ //#endregion
14
+ export { fill };
@@ -1,6 +1,14 @@
1
1
  //#region src/style.ts
2
2
  /**
3
- * The default styles. Two rules govern them.
3
+ * The default styles of the element itself: the stage, fullscreen, and the
4
+ * error surface under native controls. Every control carries its own sheet.
5
+ * Two rules govern them.
6
+ *
7
+ * The box is black and the picture is centred in it, letterboxed or
8
+ * pillarboxed by `object-fit: contain`, whatever height or ratio the page
9
+ * gives the element: what fullscreen always did, now the default. With no
10
+ * height from the page the stage is as tall as the picture and none of it
11
+ * shows.
4
12
  *
5
13
  * Nothing carries `!important`. For normal declarations the outer tree wins
6
14
  * over the shadow tree, so any `::part()` rule the page writes beats these
@@ -15,6 +23,7 @@ const STYLE = `
15
23
  display: block;
16
24
  position: relative;
17
25
  outline: none;
26
+ background: #000;
18
27
  --mbx-surface: #101114;
19
28
  --mbx-text: #f2f3f5;
20
29
  --mbx-muted: #9aa0a6;
@@ -26,312 +35,53 @@ const STYLE = `
26
35
  --mbx-pad: 8px;
27
36
  --mbx-font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
28
37
  }
29
- [part~="stage"] { position: relative; }
30
- /* 16:9 until the media says otherwise: a bare video measures 300 by 150 and
31
- would jump to its size on metadata. Auto first, so the natural ratio wins
32
- once it is known. */
33
- ::slotted(video) { display: block; width: 100%; aspect-ratio: auto 16 / 9; }
34
- [part~="controls"] {
35
- position: absolute;
36
- inset: auto 0 0 0;
37
- display: flex;
38
- flex-direction: column;
39
- gap: 4px;
40
- padding: 40px 16px 12px;
41
- color: var(--mbx-text);
42
- background: linear-gradient(transparent, rgba(0, 0, 0, 0.6));
43
- font: 500 16px/1.2 var(--mbx-font);
44
- transition: opacity 0.2s;
45
- }
46
- [part~="idle"] { opacity: 0; pointer-events: none; }
47
- [part~="error-screen"] {
48
- position: absolute;
49
- inset: 0;
50
- display: flex;
51
- align-items: center;
52
- justify-content: center;
53
- padding: 16px;
54
- background: rgba(0, 0, 0, 0.75);
55
- color: var(--mbx-text);
56
- font: 400 15px/1.4 var(--mbx-font);
57
- text-align: center;
58
- }
59
- [part~="error-box"] { display: flex; flex-direction: column; align-items: center; gap: 8px; }
60
- [part~="error-title"] { font-size: 18px; font-weight: 600; }
61
- [part~="error-detail"] { font-family: monospace; font-size: 13px; color: var(--mbx-error); }
62
- [part~="error-retry"] { width: auto; height: 36px; padding: 0 16px; border: 1px solid currentColor; font-weight: 600; }
63
- [part~="row"] { display: flex; align-items: center; gap: 8px; }
64
- [part~="seek-row"] { gap: 16px; }
65
- [part~="current-time"], [part~="duration"] { min-width: 3ch; font-variant-numeric: tabular-nums; white-space: nowrap; }
66
- [part~="duration"] { text-align: right; }
67
- [part~="control"] {
68
- display: inline-flex;
69
- align-items: center;
70
- justify-content: center;
71
- flex: none;
72
- width: 40px;
73
- height: 40px;
74
- padding: 0;
75
- font: inherit;
76
- color: inherit;
77
- background: transparent;
78
- border: 0;
79
- border-radius: var(--mbx-radius);
80
- cursor: pointer;
81
- opacity: 0.9;
82
- }
83
- [part~="control"]:hover { opacity: 1; }
84
- [part~="start-button"] {
85
- position: absolute;
86
- top: 50%;
87
- left: 50%;
88
- width: 96px;
89
- height: 96px;
90
- margin: -48px 0 0 -48px;
91
- color: var(--mbx-text);
92
- opacity: 0.92;
93
- filter: drop-shadow(0 2px 10px rgba(0, 0, 0, 0.6));
94
- transition: opacity 0.15s;
95
- }
96
- [part~="start-button"]:hover { opacity: 1; }
97
- [part~="start-button"] [part~="icon"] { width: 72px; height: 72px; }
98
- [part~="error-screen"] {
99
- position: absolute;
100
- inset: 0;
101
- display: flex;
102
- align-items: center;
103
- justify-content: center;
104
- padding: 16px;
105
- background: rgba(0, 0, 0, 0.75);
106
- color: var(--mbx-text);
107
- font: 400 15px/1.4 var(--mbx-font);
108
- text-align: center;
109
- }
110
- [part~="error-box"] { display: flex; flex-direction: column; align-items: center; gap: 8px; }
111
- [part~="error-title"] { font-size: 18px; font-weight: 600; }
112
- [part~="error-detail"] { font-family: monospace; font-size: 13px; color: var(--mbx-error); }
113
- [part~="error-retry"] { width: auto; height: 36px; padding: 0 16px; border: 1px solid currentColor; font-weight: 600; }
114
- [part~="row"] { display: flex; align-items: center; gap: 8px; }
115
- [part~="seek-row"] { gap: 16px; }
116
- [part~="current-time"], [part~="duration"] { min-width: 3ch; font-variant-numeric: tabular-nums; white-space: nowrap; }
117
- [part~="duration"] { text-align: right; }
118
- [part~="control"] {
119
- display: inline-flex;
120
- align-items: center;
121
- justify-content: center;
122
- flex: none;
123
- width: 40px;
124
- height: 40px;
125
- padding: 0;
126
- font: inherit;
127
- color: inherit;
128
- background: transparent;
129
- border: 0;
130
- border-radius: var(--mbx-radius);
131
- cursor: pointer;
132
- opacity: 0.9;
133
- }
134
- [part~="control"]:hover { opacity: 1; }
135
- [part~="start-button"] {
136
- position: absolute;
137
- top: 50%;
138
- left: 50%;
139
- width: 104px;
140
- height: 64px;
141
- margin: -32px 0 0 -52px;
142
- border: 1px solid rgba(255, 255, 255, 0.18);
143
- border-radius: var(--mbx-radius);
144
- background: rgba(0, 0, 0, 0.45);
145
- color: var(--mbx-text);
146
- opacity: 0.9;
147
- transition: opacity 0.15s, background 0.15s;
148
- }
149
- [part~="start-button"]:hover { opacity: 1; background: rgba(0, 0, 0, 0.6); }
150
- [part~="start-button"] [part~="icon"] { width: 40px; height: 40px; margin-left: 2px; }
151
- [part~="icon"] { width: 1.75em; height: 1.75em; fill: currentColor; }
152
- [part~="slider"] {
38
+ /* The stage is a column as tall as the host, so the picture is centred
39
+ in whatever height the page gives, and the panels row under native
40
+ controls keeps its place below the picture. The height comes from the
41
+ page, or from the browser in fullscreen, and not from a display on the
42
+ host: a page's own "mattebox-player { display: block }" beats a :host()
43
+ rule, so nothing here may depend on one. */
44
+ [part~="stage"] {
153
45
  position: relative;
154
- flex: none;
155
- height: 40px;
156
- border-radius: var(--mbx-radius);
157
- cursor: pointer;
158
- touch-action: none;
159
- }
160
- [part~="rail"] { position: absolute; top: 0; bottom: 0; left: 8px; right: 8px; }
161
- [part~="seek"] { flex: 1; }
162
- [part~="track"] {
163
- position: absolute;
164
- top: 50%;
165
- left: 0;
166
- right: 0;
167
- height: 4px;
168
- transform: translateY(-50%);
169
- background: rgba(255, 255, 255, 0.35);
170
- border-radius: 2px;
171
- overflow: hidden;
172
- }
173
- [part~="fill"] { position: absolute; top: 0; bottom: 0; left: 0; background: var(--mbx-accent); }
174
- [part~="thumb"] {
175
- position: absolute;
176
- top: 50%;
177
- width: 16px;
178
- height: 16px;
179
- margin: -8px 0 0 -8px;
180
- border-radius: 50%;
181
- background: var(--mbx-text);
182
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
183
- pointer-events: none;
184
- }
185
- [part~="buffered"] { position: absolute; top: 0; right: 0; bottom: 0; left: 0; }
186
- [part~="buffered-range"] { position: absolute; top: 0; bottom: 0; background: rgba(255, 255, 255, 0.3); }
187
- [part~="hover"] { position: absolute; top: 0; bottom: 0; width: 2px; margin-left: -1px; background: var(--mbx-text); }
188
- [part~="edge"] { position: absolute; top: 0; bottom: 0; width: 2px; margin-left: -1px; background: var(--mbx-live); }
189
- [part~="preview"] {
190
- position: absolute;
191
- bottom: 100%;
192
- margin-bottom: 4px;
193
- transform: translateX(-50%);
194
- display: flex;
195
- flex-direction: column;
196
- align-items: center;
197
- gap: 2px;
198
- padding: 2px;
199
- background: var(--mbx-surface);
200
- border-radius: var(--mbx-radius);
201
- font-size: 13px;
202
- font-variant-numeric: tabular-nums;
203
- white-space: nowrap;
204
- pointer-events: none;
205
- }
206
- [part~="preview-image"] { position: relative; overflow: hidden; border-radius: 2px; }
207
- [part~="preview-tile"] { position: absolute; top: 0; left: 0; transform-origin: top left; background-repeat: no-repeat; }
208
- [part~="preview-time"] { padding: 0 4px; }
209
- [part~="volume-group"] { display: flex; align-items: center; }
210
- [part~="volume"] { width: 0; opacity: 0; transition: width 0.2s ease, opacity 0.2s ease; }
211
- /* Two attributes in one selector, the one place: the slider unfolds from
212
- its group under the pointer or focus, and a page reaches it through
213
- ::part(volume) all the same. */
214
- [part~="volume-group"]:hover [part~="volume"] { width: 80px; opacity: 1; }
215
- [part~="volume-group"]:focus-within [part~="volume"] { width: 80px; opacity: 1; }
216
- [part~="cluster"] { display: flex; align-items: center; gap: 4px; margin-left: auto; }
217
- [part~="live-button"] { width: auto; gap: 6px; padding: 0 8px; font-size: 12px; font-weight: 700; letter-spacing: 0.06em; }
218
- [part~="live-button"]:disabled { cursor: default; opacity: 1; }
219
- [part~="live-dot"] { width: 10px; height: 10px; border-radius: 50%; background: var(--mbx-muted); transition: background 0.2s; }
220
- /* Two attributes, as with the volume: the dot reads the button's state. */
221
- [part~="live-dot"][part~="at-edge"] { background: var(--mbx-live); box-shadow: 0 0 6px var(--mbx-live); }
222
- [part~="slot"] { display: contents; }
223
- [part~="menu"] { position: relative; }
224
- [part~="popup"] {
225
- position: absolute;
226
- right: 0;
227
- bottom: 100%;
228
- margin-bottom: 8px;
229
- min-width: 160px;
230
- padding: 6px;
231
46
  display: flex;
232
47
  flex-direction: column;
233
- overflow-y: auto;
234
- overscroll-behavior: contain;
235
- background: rgba(16, 17, 20, 0.95);
236
- border-radius: var(--mbx-radius);
237
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
238
- font-size: 14px;
48
+ justify-content: center;
49
+ height: 100%;
239
50
  }
240
- [part~="section"] { display: flex; flex-direction: column; }
241
- [part~="section"] + [part~="section"] { margin-top: 6px; padding-top: 6px; border-top: 1px solid rgba(255, 255, 255, 0.12); }
242
- [part~="section-label"] { padding: 4px 12px 2px; font-size: 11px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--mbx-muted); }
243
- [part~="item"] {
51
+ /* 16:9 until the media says otherwise: a bare video measures 300 by 150 and
52
+ would jump to its size on metadata. Auto first, so the natural ratio wins
53
+ once it is known. Capped at the stage, and contained, so a box shorter
54
+ than the picture letterboxes it and a narrower one pillarboxes it. */
55
+ ::slotted(video) {
244
56
  display: block;
245
57
  width: 100%;
246
- padding: 8px 12px 8px 28px;
247
- font: inherit;
248
- color: inherit;
249
- text-align: left;
250
- white-space: nowrap;
251
- background: transparent;
252
- border: 0;
253
- border-radius: var(--mbx-radius);
254
- cursor: pointer;
255
- }
256
- [part~="item"]:hover { background: rgba(255, 255, 255, 0.12); }
257
- [part~="item"]:focus-visible { outline: 2px solid var(--mbx-accent); outline-offset: -2px; }
258
- [part~="page-item"] { position: relative; padding-right: 28px; }
259
- [part~="page-item"]::after { content: ""; position: absolute; right: 12px; top: 50%; width: 7px; height: 7px; margin-top: -4px; border: solid currentColor; border-width: 1.5px 1.5px 0 0; transform: rotate(45deg); opacity: 0.7; }
260
- [part~="back-item"] { position: relative; font-weight: 600; border-bottom: 1px solid rgba(255, 255, 255, 0.12); border-radius: 0; margin-bottom: 6px; }
261
- [part~="back-item"]::before { content: ""; position: absolute; left: 12px; top: 50%; width: 7px; height: 7px; margin-top: -4px; border: solid currentColor; border-width: 1.5px 0 0 1.5px; transform: rotate(-45deg); opacity: 0.7; }
262
- [part~="checked"] { position: relative; }
263
- [part~="checked"]::before { content: ""; position: absolute; left: 12px; top: 50%; width: 6px; height: 6px; margin-top: -3px; border-radius: 50%; background: var(--mbx-accent); }
264
- [part~="drm-badge"] { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; color: var(--mbx-muted); border-radius: var(--mbx-radius); cursor: default; }
265
- [part~="drm-badge"]:focus-visible { outline: 2px solid var(--mbx-accent); outline-offset: -2px; }
266
- [part~="tooltip"] {
267
- position: absolute;
268
- right: 0;
269
- bottom: 100%;
270
- margin-bottom: 8px;
271
- padding: 8px 10px;
272
- background: rgba(16, 17, 20, 0.95);
273
- border-radius: var(--mbx-radius);
274
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
275
- color: var(--mbx-text);
276
- font-size: 13px;
277
- line-height: 1.4;
278
- text-align: left;
279
- white-space: nowrap;
280
- pointer-events: none;
281
- }
282
- [part~="tooltip-title"] { font-weight: 600; }
283
- [part~="tooltip-text"] { color: var(--mbx-muted); }
284
- [part~="track"] {
285
- position: absolute;
286
- top: 50%;
287
- left: 0;
288
- right: 0;
289
- height: 4px;
290
- transform: translateY(-50%);
291
- background: rgba(255, 255, 255, 0.3);
292
- border-radius: 2px;
293
- overflow: hidden;
294
- }
295
- [part~="fill"] { position: absolute; top: 0; bottom: 0; left: 0; background: var(--mbx-accent); }
296
- [part~="thumb"] {
297
- position: absolute;
298
- top: 50%;
299
- width: 12px;
300
- height: 12px;
301
- margin: -6px 0 0 -6px;
302
- border-radius: 50%;
303
- background: var(--mbx-text);
304
- pointer-events: none;
58
+ min-height: 0;
59
+ max-height: 100%;
60
+ object-fit: contain;
61
+ aspect-ratio: auto 16 / 9;
305
62
  }
306
63
  :host(:focus-visible) [part~="stage"] { outline: 2px solid var(--mbx-accent); outline-offset: -2px; }
307
- [part~="control"]:focus-visible { outline: 2px solid var(--mbx-accent); outline-offset: -2px; }
308
- [part~="slider"]:focus-visible { outline: 2px solid var(--mbx-accent); outline-offset: -2px; }
309
- [part~="stage"]:fullscreen { display: flex; background: #000; }
310
- [part~="stage"]:fullscreen ::slotted(video) { height: 100%; object-fit: contain; }
311
- [part~="stage"]:-webkit-full-screen { display: flex; background: #000; }
312
- [part~="stage"]:-webkit-full-screen ::slotted(video) { height: 100%; object-fit: contain; }
313
- @media (prefers-reduced-motion: reduce) {
314
- [part~="controls"] { transition: none; }
315
- [part~="volume"] { transition: none; }
316
- [part~="live-dot"] { transition: none; }
317
- [part~="start-button"] { transition: none; }
318
- }
319
- [part~="panels"], [part~="error"] {
64
+ /* Fullscreen goes on the host, so every control the page placed inside
65
+ comes along. The browser gives the host the whole screen with
66
+ !important; the picture takes what the panels row leaves. The error
67
+ surface, which sits under the stage in the page, goes over its foot
68
+ instead. */
69
+ :host(:fullscreen) ::slotted(video) { flex: 1; }
70
+ :host(:fullscreen) [part~="error"] { position: absolute; left: 0; right: 0; bottom: 0; }
71
+ :host(:-webkit-full-screen) ::slotted(video) { flex: 1; }
72
+ :host(:-webkit-full-screen) [part~="error"] { position: absolute; left: 0; right: 0; bottom: 0; }
73
+ [part~="error"] {
320
74
  display: flex;
321
75
  flex-wrap: wrap;
322
76
  align-items: center;
323
77
  gap: var(--mbx-gap);
324
78
  padding: var(--mbx-pad);
325
79
  background: var(--mbx-surface);
326
- color: var(--mbx-text);
80
+ color: var(--mbx-error);
327
81
  font: 400 13px/1.4 var(--mbx-font);
328
82
  }
329
- [part~="panels"]:empty { display: none; }
330
- [part~="panel"] { display: flex; align-items: center; gap: 6px; }
331
- [part~="label"] { display: flex; align-items: center; gap: 6px; }
332
- [part~="text"] { color: var(--mbx-muted); }
333
83
  [part~="value"] { color: var(--mbx-accent); }
334
- [part~="select"], [part~="button"] {
84
+ [part~="button"] {
335
85
  font: inherit;
336
86
  color: inherit;
337
87
  background: transparent;
@@ -339,8 +89,6 @@ const STYLE = `
339
89
  border-radius: var(--mbx-radius);
340
90
  padding: 2px 6px;
341
91
  }
342
- [part~="button"][disabled] { opacity: 0.5; }
343
- [part~="error"] { color: var(--mbx-error); }
344
92
  [hidden] { display: none; }
345
93
  `;
346
94
  //#endregion
@@ -1,7 +1,7 @@
1
- import { el } from "../dom.js";
2
- //#region src/panels/error.ts
1
+ import { el } from "./dom.js";
2
+ //#region src/surface.ts
3
3
  function errorSurface(retry) {
4
- const root = el("div", "panel error");
4
+ const root = el("div", "error");
5
5
  const category = el("span", "value error-category");
6
6
  const code = el("span", "value error-code");
7
7
  const button = el("button", "button error-retry", "Retry");
@@ -0,0 +1,28 @@
1
+ //#region src/tags.ts
2
+ /** The tag names, in one place, so the composition and the lookup agree with the registration. */
3
+ const PLAYER = "mattebox-player";
4
+ const CONTROL_BAR = "mbx-control-bar";
5
+ const SPACER = "mbx-spacer";
6
+ const PLAY_BUTTON = "mbx-play-button";
7
+ const MUTE_BUTTON = "mbx-mute-button";
8
+ const VOLUME_SLIDER = "mbx-volume-slider";
9
+ const SKIP_BUTTON = "mbx-skip-button";
10
+ const PIP_BUTTON = "mbx-pip-button";
11
+ const FULLSCREEN_BUTTON = "mbx-fullscreen-button";
12
+ const START_BUTTON = "mbx-start-button";
13
+ const ERROR_SCREEN = "mbx-error-screen";
14
+ const CURRENT_TIME = "mbx-current-time";
15
+ const DURATION = "mbx-duration";
16
+ const REMAINING_TIME = "mbx-remaining-time";
17
+ const SEEK_BAR = "mbx-seek-bar";
18
+ const LIVE_BUTTON = "mbx-live-button";
19
+ const SPEED_MENU = "mbx-speed-menu";
20
+ const QUALITY_MENU = "mbx-quality-menu";
21
+ const AUDIO_MENU = "mbx-audio-menu";
22
+ const SUBTITLES_MENU = "mbx-subtitles-menu";
23
+ const DRM_BADGE = "mbx-drm-badge";
24
+ const PANELS = "mbx-panels";
25
+ const VOLUME = "mbx-volume";
26
+ const CHAPTERS_MENU = "mbx-chapters-menu";
27
+ //#endregion
28
+ export { AUDIO_MENU, CHAPTERS_MENU, CONTROL_BAR, CURRENT_TIME, DRM_BADGE, DURATION, ERROR_SCREEN, FULLSCREEN_BUTTON, LIVE_BUTTON, MUTE_BUTTON, PANELS, PIP_BUTTON, PLAYER, PLAY_BUTTON, QUALITY_MENU, REMAINING_TIME, SEEK_BAR, SKIP_BUTTON, SPACER, SPEED_MENU, START_BUTTON, SUBTITLES_MENU, VOLUME, VOLUME_SLIDER };
package/dist/host.d.ts ADDED
@@ -0,0 +1,26 @@
1
+ /**
2
+ * What a control sees of the player it sits in: the video, the engine, the
3
+ * core, and the element itself for its events and attributes. Declared
4
+ * here and not imported from the element, because the element registers
5
+ * the controls and a control that imported the element would close a cycle.
6
+ * `MatteboxPlayerElement` implements it.
7
+ *
8
+ * This is the whole surface a control gets. A control that needs more
9
+ * has found a gap in the player's public API, and the gap is the bug.
10
+ */
11
+ import type { Player, PlayerError } from '@mattebox/player-core';
12
+ import type { Mattebox } from 'mattebox';
13
+ export interface PlayerHost extends HTMLElement {
14
+ readonly video: HTMLVideoElement;
15
+ readonly engine: Mattebox | null;
16
+ readonly player: Player | null;
17
+ /** The fatal error of the current load, or null: a control attached after the event still sees it. */
18
+ readonly error: PlayerError | null;
19
+ }
20
+ /**
21
+ * The nearest player above `node`, through shadow hosts, or null outside
22
+ * one. The element found may not be upgraded yet; the caller waits for the
23
+ * definition before reading it.
24
+ */
25
+ export declare function findPlayer(node: Node): HTMLElement | null;
26
+ //# sourceMappingURL=host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGzC,MAAM,WAAW,UAAW,SAAQ,WAAW;IAC7C,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,sGAAsG;IACtG,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;CACpC;AASD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,GAAG,IAAI,CAOzD"}
package/dist/host.js ADDED
@@ -0,0 +1,23 @@
1
+ import { PLAYER } from './tags.js';
2
+ /** The parent, or the host of the shadow root `node` sits in, or null at the document. */
3
+ function above(node) {
4
+ const parent = node.parentNode;
5
+ if (parent !== null)
6
+ return parent;
7
+ return node instanceof ShadowRoot ? node.host : null;
8
+ }
9
+ /**
10
+ * The nearest player above `node`, through shadow hosts, or null outside
11
+ * one. The element found may not be upgraded yet; the caller waits for the
12
+ * definition before reading it.
13
+ */
14
+ export function findPlayer(node) {
15
+ let current = node;
16
+ while (current !== null) {
17
+ if (current instanceof HTMLElement && current.localName === PLAYER)
18
+ return current;
19
+ current = above(current);
20
+ }
21
+ return null;
22
+ }
23
+ //# sourceMappingURL=host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.js","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAUnC,0FAA0F;AAC1F,SAAS,KAAK,CAAC,IAAU;IACvB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;IAC/B,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACnC,OAAO,IAAI,YAAY,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAU;IACnC,IAAI,OAAO,GAAgB,IAAI,CAAC;IAChC,OAAO,OAAO,KAAK,IAAI,EAAE,CAAC;QACxB,IAAI,OAAO,YAAY,WAAW,IAAI,OAAO,CAAC,SAAS,KAAK,MAAM;YAAE,OAAO,OAAO,CAAC;QACnF,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,85 @@
1
- export type { ControlsOptions } from './controls/options.js';
2
- export { LAYOUT } from './controls/options.js';
3
- export { MatteboxPlayerElement } from './element.js';
1
+ /**
2
+ * @mattebox/player: the <mattebox-player> custom element and every control
3
+ * that goes inside it. Importing this module registers them all; that is
4
+ * the package's one side effect. A page that wants only some takes
5
+ * `@mattebox/player/element` and the `@mattebox/player/elements/*` entries.
6
+ */
7
+ import type { MatteboxPlayerElement } from './element-entry.js';
8
+ import type { MbxAudioMenu } from './entries/audio-menu.js';
9
+ import type { MbxChaptersMenu } from './entries/chapters-menu.js';
10
+ import type { MbxControlBar } from './entries/control-bar.js';
11
+ import type { MbxCurrentTime } from './entries/current-time.js';
12
+ import type { MbxDrmBadge } from './entries/drm-badge.js';
13
+ import type { MbxDuration } from './entries/duration.js';
14
+ import type { MbxErrorScreen } from './entries/error-screen.js';
15
+ import type { MbxFullscreenButton } from './entries/fullscreen-button.js';
16
+ import type { MbxLiveButton } from './entries/live-button.js';
17
+ import type { MbxMuteButton } from './entries/mute-button.js';
18
+ import type { MbxPanels } from './entries/panels.js';
19
+ import type { MbxPipButton } from './entries/pip-button.js';
20
+ import type { MbxPlayButton } from './entries/play-button.js';
21
+ import type { MbxQualityMenu } from './entries/quality-menu.js';
22
+ import type { MbxRemainingTime } from './entries/remaining-time.js';
23
+ import type { MbxSeekBar } from './entries/seek-bar.js';
24
+ import type { MbxSkipButton } from './entries/skip-button.js';
25
+ import type { MbxSpacer } from './entries/spacer.js';
26
+ import type { MbxSpeedMenu } from './entries/speed-menu.js';
27
+ import type { MbxStartButton } from './entries/start-button.js';
28
+ import type { MbxSubtitlesMenu } from './entries/subtitles-menu.js';
29
+ import type { MbxVolume } from './entries/volume.js';
30
+ import type { MbxVolumeSlider } from './entries/volume-slider.js';
31
+ export type { MatteboxPlayerOptions } from './element-entry.js';
32
+ export { MatteboxPlayerElement } from './element-entry.js';
33
+ export { MbxAudioMenu } from './entries/audio-menu.js';
34
+ export { MbxChaptersMenu } from './entries/chapters-menu.js';
35
+ export { MbxControlBar } from './entries/control-bar.js';
36
+ export { MbxCurrentTime } from './entries/current-time.js';
37
+ export { MbxDrmBadge } from './entries/drm-badge.js';
38
+ export { MbxDuration } from './entries/duration.js';
39
+ export { MbxErrorScreen } from './entries/error-screen.js';
40
+ export { MbxFullscreenButton } from './entries/fullscreen-button.js';
41
+ export { MbxLiveButton } from './entries/live-button.js';
42
+ export { MbxMuteButton } from './entries/mute-button.js';
43
+ export { MbxPanels } from './entries/panels.js';
44
+ export { MbxPipButton } from './entries/pip-button.js';
45
+ export { MbxPlayButton } from './entries/play-button.js';
46
+ export { MbxQualityMenu } from './entries/quality-menu.js';
47
+ export { MbxRemainingTime } from './entries/remaining-time.js';
48
+ export { MbxSeekBar } from './entries/seek-bar.js';
49
+ export { MbxSkipButton } from './entries/skip-button.js';
50
+ export { MbxSpacer } from './entries/spacer.js';
51
+ export { MbxSpeedMenu } from './entries/speed-menu.js';
52
+ export { MbxStartButton } from './entries/start-button.js';
53
+ export { MbxSubtitlesMenu } from './entries/subtitles-menu.js';
54
+ export { MbxVolume } from './entries/volume.js';
55
+ export { MbxVolumeSlider } from './entries/volume-slider.js';
56
+ export type { PlayerHost } from './host.js';
57
+ declare global {
58
+ interface HTMLElementTagNameMap {
59
+ 'mattebox-player': MatteboxPlayerElement;
60
+ 'mbx-control-bar': MbxControlBar;
61
+ 'mbx-spacer': MbxSpacer;
62
+ 'mbx-play-button': MbxPlayButton;
63
+ 'mbx-mute-button': MbxMuteButton;
64
+ 'mbx-volume-slider': MbxVolumeSlider;
65
+ 'mbx-volume': MbxVolume;
66
+ 'mbx-skip-button': MbxSkipButton;
67
+ 'mbx-pip-button': MbxPipButton;
68
+ 'mbx-fullscreen-button': MbxFullscreenButton;
69
+ 'mbx-start-button': MbxStartButton;
70
+ 'mbx-error-screen': MbxErrorScreen;
71
+ 'mbx-current-time': MbxCurrentTime;
72
+ 'mbx-duration': MbxDuration;
73
+ 'mbx-remaining-time': MbxRemainingTime;
74
+ 'mbx-seek-bar': MbxSeekBar;
75
+ 'mbx-live-button': MbxLiveButton;
76
+ 'mbx-speed-menu': MbxSpeedMenu;
77
+ 'mbx-quality-menu': MbxQualityMenu;
78
+ 'mbx-audio-menu': MbxAudioMenu;
79
+ 'mbx-subtitles-menu': MbxSubtitlesMenu;
80
+ 'mbx-drm-badge': MbxDrmBadge;
81
+ 'mbx-chapters-menu': MbxChaptersMenu;
82
+ 'mbx-panels': MbxPanels;
83
+ }
84
+ }
4
85
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,9 +1,25 @@
1
- /**
2
- * @mattebox/player: the <mattebox-player> custom element. Importing this
3
- * module registers the element; that is the package's one side effect.
4
- */
5
- import { MatteboxPlayerElement } from './element.js';
6
- export { LAYOUT } from './controls/options.js';
7
- export { MatteboxPlayerElement } from './element.js';
8
- MatteboxPlayerElement.define();
1
+ export { MatteboxPlayerElement } from './element-entry.js';
2
+ export { MbxAudioMenu } from './entries/audio-menu.js';
3
+ export { MbxChaptersMenu } from './entries/chapters-menu.js';
4
+ export { MbxControlBar } from './entries/control-bar.js';
5
+ export { MbxCurrentTime } from './entries/current-time.js';
6
+ export { MbxDrmBadge } from './entries/drm-badge.js';
7
+ export { MbxDuration } from './entries/duration.js';
8
+ export { MbxErrorScreen } from './entries/error-screen.js';
9
+ export { MbxFullscreenButton } from './entries/fullscreen-button.js';
10
+ export { MbxLiveButton } from './entries/live-button.js';
11
+ export { MbxMuteButton } from './entries/mute-button.js';
12
+ export { MbxPanels } from './entries/panels.js';
13
+ export { MbxPipButton } from './entries/pip-button.js';
14
+ export { MbxPlayButton } from './entries/play-button.js';
15
+ export { MbxQualityMenu } from './entries/quality-menu.js';
16
+ export { MbxRemainingTime } from './entries/remaining-time.js';
17
+ export { MbxSeekBar } from './entries/seek-bar.js';
18
+ export { MbxSkipButton } from './entries/skip-button.js';
19
+ export { MbxSpacer } from './entries/spacer.js';
20
+ export { MbxSpeedMenu } from './entries/speed-menu.js';
21
+ export { MbxStartButton } from './entries/start-button.js';
22
+ export { MbxSubtitlesMenu } from './entries/subtitles-menu.js';
23
+ export { MbxVolume } from './entries/volume.js';
24
+ export { MbxVolumeSlider } from './entries/volume-slider.js';
9
25
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAGrD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,qBAAqB,CAAC,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Label templates: `{name}` in an attribute's text is replaced from the
3
+ * values the element has, and a name it does not have stays as written.
4
+ * Pure, node-tested.
5
+ */
6
+ export declare function fill(template: string, values: Readonly<Record<string, string | number>>): string;
7
+ //# sourceMappingURL=labels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../src/labels.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAKhG"}