@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
package/dist/labels.js ADDED
@@ -0,0 +1,12 @@
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 function fill(template, values) {
7
+ return template.replace(/\{(\w+)\}/g, (match, name) => {
8
+ const value = values[name];
9
+ return value === undefined ? match : String(value);
10
+ });
11
+ }
12
+ //# sourceMappingURL=labels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labels.js","sourceRoot":"","sources":["../src/labels.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAC,QAAgB,EAAE,MAAiD;IACtF,OAAO,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,KAAa,EAAE,IAAY,EAAE,EAAE;QACpE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC"}
package/dist/style.d.ts CHANGED
@@ -1,5 +1,13 @@
1
1
  /**
2
- * The default styles. Two rules govern them.
2
+ * The default styles of the element itself: the stage, fullscreen, and the
3
+ * error surface under native controls. Every control carries its own sheet.
4
+ * Two rules govern them.
5
+ *
6
+ * The box is black and the picture is centred in it, letterboxed or
7
+ * pillarboxed by `object-fit: contain`, whatever height or ratio the page
8
+ * gives the element: what fullscreen always did, now the default. With no
9
+ * height from the page the stage is as tall as the picture and none of it
10
+ * shows.
3
11
  *
4
12
  * Nothing carries `!important`. For normal declarations the outer tree wins
5
13
  * over the shadow tree, so any `::part()` rule the page writes beats these
@@ -9,5 +17,5 @@
9
17
  * Selectors stay at one attribute, and every element is reached through its
10
18
  * `part`, so the names in the stylesheet are the names the page uses.
11
19
  */
12
- export declare const STYLE = "\n:host {\n display: block;\n position: relative;\n outline: none;\n --mbx-surface: #101114;\n --mbx-text: #f2f3f5;\n --mbx-muted: #9aa0a6;\n --mbx-accent: #5b8cff;\n --mbx-error: #ffb4ab;\n --mbx-live: #ff4d4d;\n --mbx-radius: 4px;\n --mbx-gap: 10px;\n --mbx-pad: 8px;\n --mbx-font: system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif;\n}\n[part~=\"stage\"] { position: relative; }\n/* 16:9 until the media says otherwise: a bare video measures 300 by 150 and\n would jump to its size on metadata. Auto first, so the natural ratio wins\n once it is known. */\n::slotted(video) { display: block; width: 100%; aspect-ratio: auto 16 / 9; }\n[part~=\"controls\"] {\n position: absolute;\n inset: auto 0 0 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 40px 16px 12px;\n color: var(--mbx-text);\n background: linear-gradient(transparent, rgba(0, 0, 0, 0.6));\n font: 500 16px/1.2 var(--mbx-font);\n transition: opacity 0.2s;\n}\n[part~=\"idle\"] { opacity: 0; pointer-events: none; }\n[part~=\"error-screen\"] {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px;\n background: rgba(0, 0, 0, 0.75);\n color: var(--mbx-text);\n font: 400 15px/1.4 var(--mbx-font);\n text-align: center;\n}\n[part~=\"error-box\"] { display: flex; flex-direction: column; align-items: center; gap: 8px; }\n[part~=\"error-title\"] { font-size: 18px; font-weight: 600; }\n[part~=\"error-detail\"] { font-family: monospace; font-size: 13px; color: var(--mbx-error); }\n[part~=\"error-retry\"] { width: auto; height: 36px; padding: 0 16px; border: 1px solid currentColor; font-weight: 600; }\n[part~=\"row\"] { display: flex; align-items: center; gap: 8px; }\n[part~=\"seek-row\"] { gap: 16px; }\n[part~=\"current-time\"], [part~=\"duration\"] { min-width: 3ch; font-variant-numeric: tabular-nums; white-space: nowrap; }\n[part~=\"duration\"] { text-align: right; }\n[part~=\"control\"] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: none;\n width: 40px;\n height: 40px;\n padding: 0;\n font: inherit;\n color: inherit;\n background: transparent;\n border: 0;\n border-radius: var(--mbx-radius);\n cursor: pointer;\n opacity: 0.9;\n}\n[part~=\"control\"]:hover { opacity: 1; }\n[part~=\"start-button\"] {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 96px;\n height: 96px;\n margin: -48px 0 0 -48px;\n color: var(--mbx-text);\n opacity: 0.92;\n filter: drop-shadow(0 2px 10px rgba(0, 0, 0, 0.6));\n transition: opacity 0.15s;\n}\n[part~=\"start-button\"]:hover { opacity: 1; }\n[part~=\"start-button\"] [part~=\"icon\"] { width: 72px; height: 72px; }\n[part~=\"error-screen\"] {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px;\n background: rgba(0, 0, 0, 0.75);\n color: var(--mbx-text);\n font: 400 15px/1.4 var(--mbx-font);\n text-align: center;\n}\n[part~=\"error-box\"] { display: flex; flex-direction: column; align-items: center; gap: 8px; }\n[part~=\"error-title\"] { font-size: 18px; font-weight: 600; }\n[part~=\"error-detail\"] { font-family: monospace; font-size: 13px; color: var(--mbx-error); }\n[part~=\"error-retry\"] { width: auto; height: 36px; padding: 0 16px; border: 1px solid currentColor; font-weight: 600; }\n[part~=\"row\"] { display: flex; align-items: center; gap: 8px; }\n[part~=\"seek-row\"] { gap: 16px; }\n[part~=\"current-time\"], [part~=\"duration\"] { min-width: 3ch; font-variant-numeric: tabular-nums; white-space: nowrap; }\n[part~=\"duration\"] { text-align: right; }\n[part~=\"control\"] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: none;\n width: 40px;\n height: 40px;\n padding: 0;\n font: inherit;\n color: inherit;\n background: transparent;\n border: 0;\n border-radius: var(--mbx-radius);\n cursor: pointer;\n opacity: 0.9;\n}\n[part~=\"control\"]:hover { opacity: 1; }\n[part~=\"start-button\"] {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 104px;\n height: 64px;\n margin: -32px 0 0 -52px;\n border: 1px solid rgba(255, 255, 255, 0.18);\n border-radius: var(--mbx-radius);\n background: rgba(0, 0, 0, 0.45);\n color: var(--mbx-text);\n opacity: 0.9;\n transition: opacity 0.15s, background 0.15s;\n}\n[part~=\"start-button\"]:hover { opacity: 1; background: rgba(0, 0, 0, 0.6); }\n[part~=\"start-button\"] [part~=\"icon\"] { width: 40px; height: 40px; margin-left: 2px; }\n[part~=\"icon\"] { width: 1.75em; height: 1.75em; fill: currentColor; }\n[part~=\"slider\"] {\n position: relative;\n flex: none;\n height: 40px;\n border-radius: var(--mbx-radius);\n cursor: pointer;\n touch-action: none;\n}\n[part~=\"rail\"] { position: absolute; top: 0; bottom: 0; left: 8px; right: 8px; }\n[part~=\"seek\"] { flex: 1; }\n[part~=\"track\"] {\n position: absolute;\n top: 50%;\n left: 0;\n right: 0;\n height: 4px;\n transform: translateY(-50%);\n background: rgba(255, 255, 255, 0.35);\n border-radius: 2px;\n overflow: hidden;\n}\n[part~=\"fill\"] { position: absolute; top: 0; bottom: 0; left: 0; background: var(--mbx-accent); }\n[part~=\"thumb\"] {\n position: absolute;\n top: 50%;\n width: 16px;\n height: 16px;\n margin: -8px 0 0 -8px;\n border-radius: 50%;\n background: var(--mbx-text);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);\n pointer-events: none;\n}\n[part~=\"buffered\"] { position: absolute; top: 0; right: 0; bottom: 0; left: 0; }\n[part~=\"buffered-range\"] { position: absolute; top: 0; bottom: 0; background: rgba(255, 255, 255, 0.3); }\n[part~=\"hover\"] { position: absolute; top: 0; bottom: 0; width: 2px; margin-left: -1px; background: var(--mbx-text); }\n[part~=\"edge\"] { position: absolute; top: 0; bottom: 0; width: 2px; margin-left: -1px; background: var(--mbx-live); }\n[part~=\"preview\"] {\n position: absolute;\n bottom: 100%;\n margin-bottom: 4px;\n transform: translateX(-50%);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n padding: 2px;\n background: var(--mbx-surface);\n border-radius: var(--mbx-radius);\n font-size: 13px;\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n pointer-events: none;\n}\n[part~=\"preview-image\"] { position: relative; overflow: hidden; border-radius: 2px; }\n[part~=\"preview-tile\"] { position: absolute; top: 0; left: 0; transform-origin: top left; background-repeat: no-repeat; }\n[part~=\"preview-time\"] { padding: 0 4px; }\n[part~=\"volume-group\"] { display: flex; align-items: center; }\n[part~=\"volume\"] { width: 0; opacity: 0; transition: width 0.2s ease, opacity 0.2s ease; }\n/* Two attributes in one selector, the one place: the slider unfolds from\n its group under the pointer or focus, and a page reaches it through\n ::part(volume) all the same. */\n[part~=\"volume-group\"]:hover [part~=\"volume\"] { width: 80px; opacity: 1; }\n[part~=\"volume-group\"]:focus-within [part~=\"volume\"] { width: 80px; opacity: 1; }\n[part~=\"cluster\"] { display: flex; align-items: center; gap: 4px; margin-left: auto; }\n[part~=\"live-button\"] { width: auto; gap: 6px; padding: 0 8px; font-size: 12px; font-weight: 700; letter-spacing: 0.06em; }\n[part~=\"live-button\"]:disabled { cursor: default; opacity: 1; }\n[part~=\"live-dot\"] { width: 10px; height: 10px; border-radius: 50%; background: var(--mbx-muted); transition: background 0.2s; }\n/* Two attributes, as with the volume: the dot reads the button's state. */\n[part~=\"live-dot\"][part~=\"at-edge\"] { background: var(--mbx-live); box-shadow: 0 0 6px var(--mbx-live); }\n[part~=\"slot\"] { display: contents; }\n[part~=\"menu\"] { position: relative; }\n[part~=\"popup\"] {\n position: absolute;\n right: 0;\n bottom: 100%;\n margin-bottom: 8px;\n min-width: 160px;\n padding: 6px;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overscroll-behavior: contain;\n background: rgba(16, 17, 20, 0.95);\n border-radius: var(--mbx-radius);\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);\n font-size: 14px;\n}\n[part~=\"section\"] { display: flex; flex-direction: column; }\n[part~=\"section\"] + [part~=\"section\"] { margin-top: 6px; padding-top: 6px; border-top: 1px solid rgba(255, 255, 255, 0.12); }\n[part~=\"section-label\"] { padding: 4px 12px 2px; font-size: 11px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--mbx-muted); }\n[part~=\"item\"] {\n display: block;\n width: 100%;\n padding: 8px 12px 8px 28px;\n font: inherit;\n color: inherit;\n text-align: left;\n white-space: nowrap;\n background: transparent;\n border: 0;\n border-radius: var(--mbx-radius);\n cursor: pointer;\n}\n[part~=\"item\"]:hover { background: rgba(255, 255, 255, 0.12); }\n[part~=\"item\"]:focus-visible { outline: 2px solid var(--mbx-accent); outline-offset: -2px; }\n[part~=\"page-item\"] { position: relative; padding-right: 28px; }\n[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; }\n[part~=\"back-item\"] { position: relative; font-weight: 600; border-bottom: 1px solid rgba(255, 255, 255, 0.12); border-radius: 0; margin-bottom: 6px; }\n[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; }\n[part~=\"checked\"] { position: relative; }\n[part~=\"checked\"]::before { content: \"\"; position: absolute; left: 12px; top: 50%; width: 6px; height: 6px; margin-top: -3px; border-radius: 50%; background: var(--mbx-accent); }\n[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; }\n[part~=\"drm-badge\"]:focus-visible { outline: 2px solid var(--mbx-accent); outline-offset: -2px; }\n[part~=\"tooltip\"] {\n position: absolute;\n right: 0;\n bottom: 100%;\n margin-bottom: 8px;\n padding: 8px 10px;\n background: rgba(16, 17, 20, 0.95);\n border-radius: var(--mbx-radius);\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);\n color: var(--mbx-text);\n font-size: 13px;\n line-height: 1.4;\n text-align: left;\n white-space: nowrap;\n pointer-events: none;\n}\n[part~=\"tooltip-title\"] { font-weight: 600; }\n[part~=\"tooltip-text\"] { color: var(--mbx-muted); }\n[part~=\"track\"] {\n position: absolute;\n top: 50%;\n left: 0;\n right: 0;\n height: 4px;\n transform: translateY(-50%);\n background: rgba(255, 255, 255, 0.3);\n border-radius: 2px;\n overflow: hidden;\n}\n[part~=\"fill\"] { position: absolute; top: 0; bottom: 0; left: 0; background: var(--mbx-accent); }\n[part~=\"thumb\"] {\n position: absolute;\n top: 50%;\n width: 12px;\n height: 12px;\n margin: -6px 0 0 -6px;\n border-radius: 50%;\n background: var(--mbx-text);\n pointer-events: none;\n}\n:host(:focus-visible) [part~=\"stage\"] { outline: 2px solid var(--mbx-accent); outline-offset: -2px; }\n[part~=\"control\"]:focus-visible { outline: 2px solid var(--mbx-accent); outline-offset: -2px; }\n[part~=\"slider\"]:focus-visible { outline: 2px solid var(--mbx-accent); outline-offset: -2px; }\n[part~=\"stage\"]:fullscreen { display: flex; background: #000; }\n[part~=\"stage\"]:fullscreen ::slotted(video) { height: 100%; object-fit: contain; }\n[part~=\"stage\"]:-webkit-full-screen { display: flex; background: #000; }\n[part~=\"stage\"]:-webkit-full-screen ::slotted(video) { height: 100%; object-fit: contain; }\n@media (prefers-reduced-motion: reduce) {\n [part~=\"controls\"] { transition: none; }\n [part~=\"volume\"] { transition: none; }\n [part~=\"live-dot\"] { transition: none; }\n [part~=\"start-button\"] { transition: none; }\n}\n[part~=\"panels\"], [part~=\"error\"] {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--mbx-gap);\n padding: var(--mbx-pad);\n background: var(--mbx-surface);\n color: var(--mbx-text);\n font: 400 13px/1.4 var(--mbx-font);\n}\n[part~=\"panels\"]:empty { display: none; }\n[part~=\"panel\"] { display: flex; align-items: center; gap: 6px; }\n[part~=\"label\"] { display: flex; align-items: center; gap: 6px; }\n[part~=\"text\"] { color: var(--mbx-muted); }\n[part~=\"value\"] { color: var(--mbx-accent); }\n[part~=\"select\"], [part~=\"button\"] {\n font: inherit;\n color: inherit;\n background: transparent;\n border: 1px solid currentColor;\n border-radius: var(--mbx-radius);\n padding: 2px 6px;\n}\n[part~=\"button\"][disabled] { opacity: 0.5; }\n[part~=\"error\"] { color: var(--mbx-error); }\n[hidden] { display: none; }\n";
20
+ export declare const STYLE = "\n:host {\n display: block;\n position: relative;\n outline: none;\n background: #000;\n --mbx-surface: #101114;\n --mbx-text: #f2f3f5;\n --mbx-muted: #9aa0a6;\n --mbx-accent: #5b8cff;\n --mbx-error: #ffb4ab;\n --mbx-live: #ff4d4d;\n --mbx-radius: 4px;\n --mbx-gap: 10px;\n --mbx-pad: 8px;\n --mbx-font: system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif;\n}\n/* The stage is a column as tall as the host, so the picture is centred\n in whatever height the page gives, and the panels row under native\n controls keeps its place below the picture. The height comes from the\n page, or from the browser in fullscreen, and not from a display on the\n host: a page's own \"mattebox-player { display: block }\" beats a :host()\n rule, so nothing here may depend on one. */\n[part~=\"stage\"] {\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: center;\n height: 100%;\n}\n/* 16:9 until the media says otherwise: a bare video measures 300 by 150 and\n would jump to its size on metadata. Auto first, so the natural ratio wins\n once it is known. Capped at the stage, and contained, so a box shorter\n than the picture letterboxes it and a narrower one pillarboxes it. */\n::slotted(video) {\n display: block;\n width: 100%;\n min-height: 0;\n max-height: 100%;\n object-fit: contain;\n aspect-ratio: auto 16 / 9;\n}\n:host(:focus-visible) [part~=\"stage\"] { outline: 2px solid var(--mbx-accent); outline-offset: -2px; }\n/* Fullscreen goes on the host, so every control the page placed inside\n comes along. The browser gives the host the whole screen with\n !important; the picture takes what the panels row leaves. The error\n surface, which sits under the stage in the page, goes over its foot\n instead. */\n:host(:fullscreen) ::slotted(video) { flex: 1; }\n:host(:fullscreen) [part~=\"error\"] { position: absolute; left: 0; right: 0; bottom: 0; }\n:host(:-webkit-full-screen) ::slotted(video) { flex: 1; }\n:host(:-webkit-full-screen) [part~=\"error\"] { position: absolute; left: 0; right: 0; bottom: 0; }\n[part~=\"error\"] {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--mbx-gap);\n padding: var(--mbx-pad);\n background: var(--mbx-surface);\n color: var(--mbx-error);\n font: 400 13px/1.4 var(--mbx-font);\n}\n[part~=\"value\"] { color: var(--mbx-accent); }\n[part~=\"button\"] {\n font: inherit;\n color: inherit;\n background: transparent;\n border: 1px solid currentColor;\n border-radius: var(--mbx-radius);\n padding: 2px 6px;\n}\n[hidden] { display: none; }\n";
13
21
  //# sourceMappingURL=style.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,KAAK,umZA4UjB,CAAC"}
1
+ {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,KAAK,8iFAwEjB,CAAC"}
package/dist/style.js CHANGED
@@ -1,5 +1,13 @@
1
1
  /**
2
- * The default styles. Two rules govern them.
2
+ * The default styles of the element itself: the stage, fullscreen, and the
3
+ * error surface under native controls. Every control carries its own sheet.
4
+ * Two rules govern them.
5
+ *
6
+ * The box is black and the picture is centred in it, letterboxed or
7
+ * pillarboxed by `object-fit: contain`, whatever height or ratio the page
8
+ * gives the element: what fullscreen always did, now the default. With no
9
+ * height from the page the stage is as tall as the picture and none of it
10
+ * shows.
3
11
  *
4
12
  * Nothing carries `!important`. For normal declarations the outer tree wins
5
13
  * over the shadow tree, so any `::part()` rule the page writes beats these
@@ -14,6 +22,7 @@ export const STYLE = `
14
22
  display: block;
15
23
  position: relative;
16
24
  outline: none;
25
+ background: #000;
17
26
  --mbx-surface: #101114;
18
27
  --mbx-text: #f2f3f5;
19
28
  --mbx-muted: #9aa0a6;
@@ -25,312 +34,53 @@ export const STYLE = `
25
34
  --mbx-pad: 8px;
26
35
  --mbx-font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
27
36
  }
28
- [part~="stage"] { position: relative; }
29
- /* 16:9 until the media says otherwise: a bare video measures 300 by 150 and
30
- would jump to its size on metadata. Auto first, so the natural ratio wins
31
- once it is known. */
32
- ::slotted(video) { display: block; width: 100%; aspect-ratio: auto 16 / 9; }
33
- [part~="controls"] {
34
- position: absolute;
35
- inset: auto 0 0 0;
36
- display: flex;
37
- flex-direction: column;
38
- gap: 4px;
39
- padding: 40px 16px 12px;
40
- color: var(--mbx-text);
41
- background: linear-gradient(transparent, rgba(0, 0, 0, 0.6));
42
- font: 500 16px/1.2 var(--mbx-font);
43
- transition: opacity 0.2s;
44
- }
45
- [part~="idle"] { opacity: 0; pointer-events: none; }
46
- [part~="error-screen"] {
47
- position: absolute;
48
- inset: 0;
49
- display: flex;
50
- align-items: center;
51
- justify-content: center;
52
- padding: 16px;
53
- background: rgba(0, 0, 0, 0.75);
54
- color: var(--mbx-text);
55
- font: 400 15px/1.4 var(--mbx-font);
56
- text-align: center;
57
- }
58
- [part~="error-box"] { display: flex; flex-direction: column; align-items: center; gap: 8px; }
59
- [part~="error-title"] { font-size: 18px; font-weight: 600; }
60
- [part~="error-detail"] { font-family: monospace; font-size: 13px; color: var(--mbx-error); }
61
- [part~="error-retry"] { width: auto; height: 36px; padding: 0 16px; border: 1px solid currentColor; font-weight: 600; }
62
- [part~="row"] { display: flex; align-items: center; gap: 8px; }
63
- [part~="seek-row"] { gap: 16px; }
64
- [part~="current-time"], [part~="duration"] { min-width: 3ch; font-variant-numeric: tabular-nums; white-space: nowrap; }
65
- [part~="duration"] { text-align: right; }
66
- [part~="control"] {
67
- display: inline-flex;
68
- align-items: center;
69
- justify-content: center;
70
- flex: none;
71
- width: 40px;
72
- height: 40px;
73
- padding: 0;
74
- font: inherit;
75
- color: inherit;
76
- background: transparent;
77
- border: 0;
78
- border-radius: var(--mbx-radius);
79
- cursor: pointer;
80
- opacity: 0.9;
81
- }
82
- [part~="control"]:hover { opacity: 1; }
83
- [part~="start-button"] {
84
- position: absolute;
85
- top: 50%;
86
- left: 50%;
87
- width: 96px;
88
- height: 96px;
89
- margin: -48px 0 0 -48px;
90
- color: var(--mbx-text);
91
- opacity: 0.92;
92
- filter: drop-shadow(0 2px 10px rgba(0, 0, 0, 0.6));
93
- transition: opacity 0.15s;
94
- }
95
- [part~="start-button"]:hover { opacity: 1; }
96
- [part~="start-button"] [part~="icon"] { width: 72px; height: 72px; }
97
- [part~="error-screen"] {
98
- position: absolute;
99
- inset: 0;
100
- display: flex;
101
- align-items: center;
102
- justify-content: center;
103
- padding: 16px;
104
- background: rgba(0, 0, 0, 0.75);
105
- color: var(--mbx-text);
106
- font: 400 15px/1.4 var(--mbx-font);
107
- text-align: center;
108
- }
109
- [part~="error-box"] { display: flex; flex-direction: column; align-items: center; gap: 8px; }
110
- [part~="error-title"] { font-size: 18px; font-weight: 600; }
111
- [part~="error-detail"] { font-family: monospace; font-size: 13px; color: var(--mbx-error); }
112
- [part~="error-retry"] { width: auto; height: 36px; padding: 0 16px; border: 1px solid currentColor; font-weight: 600; }
113
- [part~="row"] { display: flex; align-items: center; gap: 8px; }
114
- [part~="seek-row"] { gap: 16px; }
115
- [part~="current-time"], [part~="duration"] { min-width: 3ch; font-variant-numeric: tabular-nums; white-space: nowrap; }
116
- [part~="duration"] { text-align: right; }
117
- [part~="control"] {
118
- display: inline-flex;
119
- align-items: center;
120
- justify-content: center;
121
- flex: none;
122
- width: 40px;
123
- height: 40px;
124
- padding: 0;
125
- font: inherit;
126
- color: inherit;
127
- background: transparent;
128
- border: 0;
129
- border-radius: var(--mbx-radius);
130
- cursor: pointer;
131
- opacity: 0.9;
132
- }
133
- [part~="control"]:hover { opacity: 1; }
134
- [part~="start-button"] {
135
- position: absolute;
136
- top: 50%;
137
- left: 50%;
138
- width: 104px;
139
- height: 64px;
140
- margin: -32px 0 0 -52px;
141
- border: 1px solid rgba(255, 255, 255, 0.18);
142
- border-radius: var(--mbx-radius);
143
- background: rgba(0, 0, 0, 0.45);
144
- color: var(--mbx-text);
145
- opacity: 0.9;
146
- transition: opacity 0.15s, background 0.15s;
147
- }
148
- [part~="start-button"]:hover { opacity: 1; background: rgba(0, 0, 0, 0.6); }
149
- [part~="start-button"] [part~="icon"] { width: 40px; height: 40px; margin-left: 2px; }
150
- [part~="icon"] { width: 1.75em; height: 1.75em; fill: currentColor; }
151
- [part~="slider"] {
37
+ /* The stage is a column as tall as the host, so the picture is centred
38
+ in whatever height the page gives, and the panels row under native
39
+ controls keeps its place below the picture. The height comes from the
40
+ page, or from the browser in fullscreen, and not from a display on the
41
+ host: a page's own "mattebox-player { display: block }" beats a :host()
42
+ rule, so nothing here may depend on one. */
43
+ [part~="stage"] {
152
44
  position: relative;
153
- flex: none;
154
- height: 40px;
155
- border-radius: var(--mbx-radius);
156
- cursor: pointer;
157
- touch-action: none;
158
- }
159
- [part~="rail"] { position: absolute; top: 0; bottom: 0; left: 8px; right: 8px; }
160
- [part~="seek"] { flex: 1; }
161
- [part~="track"] {
162
- position: absolute;
163
- top: 50%;
164
- left: 0;
165
- right: 0;
166
- height: 4px;
167
- transform: translateY(-50%);
168
- background: rgba(255, 255, 255, 0.35);
169
- border-radius: 2px;
170
- overflow: hidden;
171
- }
172
- [part~="fill"] { position: absolute; top: 0; bottom: 0; left: 0; background: var(--mbx-accent); }
173
- [part~="thumb"] {
174
- position: absolute;
175
- top: 50%;
176
- width: 16px;
177
- height: 16px;
178
- margin: -8px 0 0 -8px;
179
- border-radius: 50%;
180
- background: var(--mbx-text);
181
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
182
- pointer-events: none;
183
- }
184
- [part~="buffered"] { position: absolute; top: 0; right: 0; bottom: 0; left: 0; }
185
- [part~="buffered-range"] { position: absolute; top: 0; bottom: 0; background: rgba(255, 255, 255, 0.3); }
186
- [part~="hover"] { position: absolute; top: 0; bottom: 0; width: 2px; margin-left: -1px; background: var(--mbx-text); }
187
- [part~="edge"] { position: absolute; top: 0; bottom: 0; width: 2px; margin-left: -1px; background: var(--mbx-live); }
188
- [part~="preview"] {
189
- position: absolute;
190
- bottom: 100%;
191
- margin-bottom: 4px;
192
- transform: translateX(-50%);
193
- display: flex;
194
- flex-direction: column;
195
- align-items: center;
196
- gap: 2px;
197
- padding: 2px;
198
- background: var(--mbx-surface);
199
- border-radius: var(--mbx-radius);
200
- font-size: 13px;
201
- font-variant-numeric: tabular-nums;
202
- white-space: nowrap;
203
- pointer-events: none;
204
- }
205
- [part~="preview-image"] { position: relative; overflow: hidden; border-radius: 2px; }
206
- [part~="preview-tile"] { position: absolute; top: 0; left: 0; transform-origin: top left; background-repeat: no-repeat; }
207
- [part~="preview-time"] { padding: 0 4px; }
208
- [part~="volume-group"] { display: flex; align-items: center; }
209
- [part~="volume"] { width: 0; opacity: 0; transition: width 0.2s ease, opacity 0.2s ease; }
210
- /* Two attributes in one selector, the one place: the slider unfolds from
211
- its group under the pointer or focus, and a page reaches it through
212
- ::part(volume) all the same. */
213
- [part~="volume-group"]:hover [part~="volume"] { width: 80px; opacity: 1; }
214
- [part~="volume-group"]:focus-within [part~="volume"] { width: 80px; opacity: 1; }
215
- [part~="cluster"] { display: flex; align-items: center; gap: 4px; margin-left: auto; }
216
- [part~="live-button"] { width: auto; gap: 6px; padding: 0 8px; font-size: 12px; font-weight: 700; letter-spacing: 0.06em; }
217
- [part~="live-button"]:disabled { cursor: default; opacity: 1; }
218
- [part~="live-dot"] { width: 10px; height: 10px; border-radius: 50%; background: var(--mbx-muted); transition: background 0.2s; }
219
- /* Two attributes, as with the volume: the dot reads the button's state. */
220
- [part~="live-dot"][part~="at-edge"] { background: var(--mbx-live); box-shadow: 0 0 6px var(--mbx-live); }
221
- [part~="slot"] { display: contents; }
222
- [part~="menu"] { position: relative; }
223
- [part~="popup"] {
224
- position: absolute;
225
- right: 0;
226
- bottom: 100%;
227
- margin-bottom: 8px;
228
- min-width: 160px;
229
- padding: 6px;
230
45
  display: flex;
231
46
  flex-direction: column;
232
- overflow-y: auto;
233
- overscroll-behavior: contain;
234
- background: rgba(16, 17, 20, 0.95);
235
- border-radius: var(--mbx-radius);
236
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
237
- font-size: 14px;
47
+ justify-content: center;
48
+ height: 100%;
238
49
  }
239
- [part~="section"] { display: flex; flex-direction: column; }
240
- [part~="section"] + [part~="section"] { margin-top: 6px; padding-top: 6px; border-top: 1px solid rgba(255, 255, 255, 0.12); }
241
- [part~="section-label"] { padding: 4px 12px 2px; font-size: 11px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--mbx-muted); }
242
- [part~="item"] {
50
+ /* 16:9 until the media says otherwise: a bare video measures 300 by 150 and
51
+ would jump to its size on metadata. Auto first, so the natural ratio wins
52
+ once it is known. Capped at the stage, and contained, so a box shorter
53
+ than the picture letterboxes it and a narrower one pillarboxes it. */
54
+ ::slotted(video) {
243
55
  display: block;
244
56
  width: 100%;
245
- padding: 8px 12px 8px 28px;
246
- font: inherit;
247
- color: inherit;
248
- text-align: left;
249
- white-space: nowrap;
250
- background: transparent;
251
- border: 0;
252
- border-radius: var(--mbx-radius);
253
- cursor: pointer;
254
- }
255
- [part~="item"]:hover { background: rgba(255, 255, 255, 0.12); }
256
- [part~="item"]:focus-visible { outline: 2px solid var(--mbx-accent); outline-offset: -2px; }
257
- [part~="page-item"] { position: relative; padding-right: 28px; }
258
- [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; }
259
- [part~="back-item"] { position: relative; font-weight: 600; border-bottom: 1px solid rgba(255, 255, 255, 0.12); border-radius: 0; margin-bottom: 6px; }
260
- [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; }
261
- [part~="checked"] { position: relative; }
262
- [part~="checked"]::before { content: ""; position: absolute; left: 12px; top: 50%; width: 6px; height: 6px; margin-top: -3px; border-radius: 50%; background: var(--mbx-accent); }
263
- [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; }
264
- [part~="drm-badge"]:focus-visible { outline: 2px solid var(--mbx-accent); outline-offset: -2px; }
265
- [part~="tooltip"] {
266
- position: absolute;
267
- right: 0;
268
- bottom: 100%;
269
- margin-bottom: 8px;
270
- padding: 8px 10px;
271
- background: rgba(16, 17, 20, 0.95);
272
- border-radius: var(--mbx-radius);
273
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
274
- color: var(--mbx-text);
275
- font-size: 13px;
276
- line-height: 1.4;
277
- text-align: left;
278
- white-space: nowrap;
279
- pointer-events: none;
280
- }
281
- [part~="tooltip-title"] { font-weight: 600; }
282
- [part~="tooltip-text"] { color: var(--mbx-muted); }
283
- [part~="track"] {
284
- position: absolute;
285
- top: 50%;
286
- left: 0;
287
- right: 0;
288
- height: 4px;
289
- transform: translateY(-50%);
290
- background: rgba(255, 255, 255, 0.3);
291
- border-radius: 2px;
292
- overflow: hidden;
293
- }
294
- [part~="fill"] { position: absolute; top: 0; bottom: 0; left: 0; background: var(--mbx-accent); }
295
- [part~="thumb"] {
296
- position: absolute;
297
- top: 50%;
298
- width: 12px;
299
- height: 12px;
300
- margin: -6px 0 0 -6px;
301
- border-radius: 50%;
302
- background: var(--mbx-text);
303
- pointer-events: none;
57
+ min-height: 0;
58
+ max-height: 100%;
59
+ object-fit: contain;
60
+ aspect-ratio: auto 16 / 9;
304
61
  }
305
62
  :host(:focus-visible) [part~="stage"] { outline: 2px solid var(--mbx-accent); outline-offset: -2px; }
306
- [part~="control"]:focus-visible { outline: 2px solid var(--mbx-accent); outline-offset: -2px; }
307
- [part~="slider"]:focus-visible { outline: 2px solid var(--mbx-accent); outline-offset: -2px; }
308
- [part~="stage"]:fullscreen { display: flex; background: #000; }
309
- [part~="stage"]:fullscreen ::slotted(video) { height: 100%; object-fit: contain; }
310
- [part~="stage"]:-webkit-full-screen { display: flex; background: #000; }
311
- [part~="stage"]:-webkit-full-screen ::slotted(video) { height: 100%; object-fit: contain; }
312
- @media (prefers-reduced-motion: reduce) {
313
- [part~="controls"] { transition: none; }
314
- [part~="volume"] { transition: none; }
315
- [part~="live-dot"] { transition: none; }
316
- [part~="start-button"] { transition: none; }
317
- }
318
- [part~="panels"], [part~="error"] {
63
+ /* Fullscreen goes on the host, so every control the page placed inside
64
+ comes along. The browser gives the host the whole screen with
65
+ !important; the picture takes what the panels row leaves. The error
66
+ surface, which sits under the stage in the page, goes over its foot
67
+ instead. */
68
+ :host(:fullscreen) ::slotted(video) { flex: 1; }
69
+ :host(:fullscreen) [part~="error"] { position: absolute; left: 0; right: 0; bottom: 0; }
70
+ :host(:-webkit-full-screen) ::slotted(video) { flex: 1; }
71
+ :host(:-webkit-full-screen) [part~="error"] { position: absolute; left: 0; right: 0; bottom: 0; }
72
+ [part~="error"] {
319
73
  display: flex;
320
74
  flex-wrap: wrap;
321
75
  align-items: center;
322
76
  gap: var(--mbx-gap);
323
77
  padding: var(--mbx-pad);
324
78
  background: var(--mbx-surface);
325
- color: var(--mbx-text);
79
+ color: var(--mbx-error);
326
80
  font: 400 13px/1.4 var(--mbx-font);
327
81
  }
328
- [part~="panels"]:empty { display: none; }
329
- [part~="panel"] { display: flex; align-items: center; gap: 6px; }
330
- [part~="label"] { display: flex; align-items: center; gap: 6px; }
331
- [part~="text"] { color: var(--mbx-muted); }
332
82
  [part~="value"] { color: var(--mbx-accent); }
333
- [part~="select"], [part~="button"] {
83
+ [part~="button"] {
334
84
  font: inherit;
335
85
  color: inherit;
336
86
  background: transparent;
@@ -338,8 +88,6 @@ export const STYLE = `
338
88
  border-radius: var(--mbx-radius);
339
89
  padding: 2px 6px;
340
90
  }
341
- [part~="button"][disabled] { opacity: 0.5; }
342
- [part~="error"] { color: var(--mbx-error); }
343
91
  [hidden] { display: none; }
344
92
  `;
345
93
  //# sourceMappingURL=style.js.map
package/dist/style.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"style.js","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4UpB,CAAC"}
1
+ {"version":3,"file":"style.js","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwEpB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The error surface under native controls: a row under the video with the
3
+ * category, the code and a retry. It outlives a session, because the core
4
+ * reports "no handler claimed this source" when there is no session to
5
+ * hang it on. It stays hidden until a fatal error arrives, and under
6
+ * custom controls the error screen element carries the error instead.
7
+ */
8
+ import type { PlayerError } from '@mattebox/player-core';
9
+ export interface ErrorSurface {
10
+ readonly root: HTMLElement;
11
+ show(error: PlayerError): void;
12
+ clear(): void;
13
+ }
14
+ export declare function errorSurface(retry: () => void): ErrorSurface;
15
+ //# sourceMappingURL=surface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC/B,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,IAAI,GAAG,YAAY,CAqB5D"}
@@ -1,6 +1,6 @@
1
- import { el } from '../dom.js';
1
+ import { el } from './dom.js';
2
2
  export function errorSurface(retry) {
3
- const root = el('div', 'panel error');
3
+ const root = el('div', 'error');
4
4
  const category = el('span', 'value error-category');
5
5
  const code = el('span', 'value error-code');
6
6
  const button = el('button', 'button error-retry', 'Retry');
@@ -20,4 +20,4 @@ export function errorSurface(retry) {
20
20
  },
21
21
  };
22
22
  }
23
- //# sourceMappingURL=error.js.map
23
+ //# sourceMappingURL=surface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAQ9B,MAAM,UAAU,YAAY,CAAC,KAAiB;IAC5C,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;IAC3D,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;IACvB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IAEnB,OAAO;QACL,IAAI;QACJ,IAAI,CAAC,KAAkB;YACrB,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC;YACtC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB,CAAC;QACD,KAAK;YACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC"}
package/dist/tags.d.ts ADDED
@@ -0,0 +1,26 @@
1
+ /** The tag names, in one place, so the composition and the lookup agree with the registration. */
2
+ export declare const PLAYER = "mattebox-player";
3
+ export declare const CONTROL_BAR = "mbx-control-bar";
4
+ export declare const SPACER = "mbx-spacer";
5
+ export declare const PLAY_BUTTON = "mbx-play-button";
6
+ export declare const MUTE_BUTTON = "mbx-mute-button";
7
+ export declare const VOLUME_SLIDER = "mbx-volume-slider";
8
+ export declare const SKIP_BUTTON = "mbx-skip-button";
9
+ export declare const PIP_BUTTON = "mbx-pip-button";
10
+ export declare const FULLSCREEN_BUTTON = "mbx-fullscreen-button";
11
+ export declare const START_BUTTON = "mbx-start-button";
12
+ export declare const ERROR_SCREEN = "mbx-error-screen";
13
+ export declare const CURRENT_TIME = "mbx-current-time";
14
+ export declare const DURATION = "mbx-duration";
15
+ export declare const REMAINING_TIME = "mbx-remaining-time";
16
+ export declare const SEEK_BAR = "mbx-seek-bar";
17
+ export declare const LIVE_BUTTON = "mbx-live-button";
18
+ export declare const SPEED_MENU = "mbx-speed-menu";
19
+ export declare const QUALITY_MENU = "mbx-quality-menu";
20
+ export declare const AUDIO_MENU = "mbx-audio-menu";
21
+ export declare const SUBTITLES_MENU = "mbx-subtitles-menu";
22
+ export declare const DRM_BADGE = "mbx-drm-badge";
23
+ export declare const PANELS = "mbx-panels";
24
+ export declare const VOLUME = "mbx-volume";
25
+ export declare const CHAPTERS_MENU = "mbx-chapters-menu";
26
+ //# sourceMappingURL=tags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../src/tags.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,eAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,eAAO,MAAM,WAAW,oBAAoB,CAAC;AAC7C,eAAO,MAAM,MAAM,eAAe,CAAC;AACnC,eAAO,MAAM,WAAW,oBAAoB,CAAC;AAC7C,eAAO,MAAM,WAAW,oBAAoB,CAAC;AAC7C,eAAO,MAAM,aAAa,sBAAsB,CAAC;AACjD,eAAO,MAAM,WAAW,oBAAoB,CAAC;AAC7C,eAAO,MAAM,UAAU,mBAAmB,CAAC;AAC3C,eAAO,MAAM,iBAAiB,0BAA0B,CAAC;AACzD,eAAO,MAAM,YAAY,qBAAqB,CAAC;AAC/C,eAAO,MAAM,YAAY,qBAAqB,CAAC;AAC/C,eAAO,MAAM,YAAY,qBAAqB,CAAC;AAC/C,eAAO,MAAM,QAAQ,iBAAiB,CAAC;AACvC,eAAO,MAAM,cAAc,uBAAuB,CAAC;AACnD,eAAO,MAAM,QAAQ,iBAAiB,CAAC;AACvC,eAAO,MAAM,WAAW,oBAAoB,CAAC;AAC7C,eAAO,MAAM,UAAU,mBAAmB,CAAC;AAC3C,eAAO,MAAM,YAAY,qBAAqB,CAAC;AAC/C,eAAO,MAAM,UAAU,mBAAmB,CAAC;AAC3C,eAAO,MAAM,cAAc,uBAAuB,CAAC;AACnD,eAAO,MAAM,SAAS,kBAAkB,CAAC;AACzC,eAAO,MAAM,MAAM,eAAe,CAAC;AACnC,eAAO,MAAM,MAAM,eAAe,CAAC;AACnC,eAAO,MAAM,aAAa,sBAAsB,CAAC"}
package/dist/tags.js ADDED
@@ -0,0 +1,26 @@
1
+ /** The tag names, in one place, so the composition and the lookup agree with the registration. */
2
+ export const PLAYER = 'mattebox-player';
3
+ export const CONTROL_BAR = 'mbx-control-bar';
4
+ export const SPACER = 'mbx-spacer';
5
+ export const PLAY_BUTTON = 'mbx-play-button';
6
+ export const MUTE_BUTTON = 'mbx-mute-button';
7
+ export const VOLUME_SLIDER = 'mbx-volume-slider';
8
+ export const SKIP_BUTTON = 'mbx-skip-button';
9
+ export const PIP_BUTTON = 'mbx-pip-button';
10
+ export const FULLSCREEN_BUTTON = 'mbx-fullscreen-button';
11
+ export const START_BUTTON = 'mbx-start-button';
12
+ export const ERROR_SCREEN = 'mbx-error-screen';
13
+ export const CURRENT_TIME = 'mbx-current-time';
14
+ export const DURATION = 'mbx-duration';
15
+ export const REMAINING_TIME = 'mbx-remaining-time';
16
+ export const SEEK_BAR = 'mbx-seek-bar';
17
+ export const LIVE_BUTTON = 'mbx-live-button';
18
+ export const SPEED_MENU = 'mbx-speed-menu';
19
+ export const QUALITY_MENU = 'mbx-quality-menu';
20
+ export const AUDIO_MENU = 'mbx-audio-menu';
21
+ export const SUBTITLES_MENU = 'mbx-subtitles-menu';
22
+ export const DRM_BADGE = 'mbx-drm-badge';
23
+ export const PANELS = 'mbx-panels';
24
+ export const VOLUME = 'mbx-volume';
25
+ export const CHAPTERS_MENU = 'mbx-chapters-menu';
26
+ //# sourceMappingURL=tags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags.js","sourceRoot":"","sources":["../src/tags.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,MAAM,CAAC,MAAM,MAAM,GAAG,iBAAiB,CAAC;AACxC,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAC7C,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC;AACnC,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAC7C,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAC7C,MAAM,CAAC,MAAM,aAAa,GAAG,mBAAmB,CAAC;AACjD,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAC7C,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,CAAC;AAC3C,MAAM,CAAC,MAAM,iBAAiB,GAAG,uBAAuB,CAAC;AACzD,MAAM,CAAC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAC/C,MAAM,CAAC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAC/C,MAAM,CAAC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAC/C,MAAM,CAAC,MAAM,QAAQ,GAAG,cAAc,CAAC;AACvC,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,CAAC;AACnD,MAAM,CAAC,MAAM,QAAQ,GAAG,cAAc,CAAC;AACvC,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAC7C,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,CAAC;AAC3C,MAAM,CAAC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAC/C,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,CAAC;AAC3C,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,CAAC;AACnD,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC;AACzC,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC;AACnC,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC;AACnC,MAAM,CAAC,MAAM,aAAa,GAAG,mBAAmB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mattebox/player",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "A <mattebox-player> custom element over @mattebox/player-core.",
5
5
  "author": "Josep Boix Requesens",
6
6
  "repository": {
@@ -34,8 +34,28 @@
34
34
  "modern": "./dist/index.js",
35
35
  "default": "./dist/es2015/index.js"
36
36
  },
37
+ "./element": {
38
+ "types": "./dist/element-entry.d.ts",
39
+ "modern": "./dist/element-entry.js",
40
+ "default": "./dist/es2015/element-entry.js"
41
+ },
42
+ "./elements/*": {
43
+ "types": "./dist/entries/*.d.ts",
44
+ "modern": "./dist/entries/*.js",
45
+ "default": "./dist/es2015/entries/*.js"
46
+ },
37
47
  "./package.json": "./package.json"
38
48
  },
49
+ "typesVersions": {
50
+ "*": {
51
+ "element": [
52
+ "./dist/element-entry.d.ts"
53
+ ],
54
+ "elements/*": [
55
+ "./dist/entries/*.d.ts"
56
+ ]
57
+ }
58
+ },
39
59
  "files": [
40
60
  "dist",
41
61
  "NOTICE"
@@ -53,6 +73,6 @@
53
73
  "@mattebox/player-core": "^0.1.0"
54
74
  },
55
75
  "peerDependencies": {
56
- "mattebox": "^0.2.1"
76
+ "mattebox": "^0.3.0"
57
77
  }
58
78
  }