@mattebox/player 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -3
- package/dist/cdn/mattebox-player.min.js +200 -196
- package/dist/compose.d.ts +5 -0
- package/dist/compose.d.ts.map +1 -0
- package/dist/compose.js +31 -0
- package/dist/compose.js.map +1 -0
- package/dist/controls/chapters.d.ts +29 -0
- package/dist/controls/chapters.d.ts.map +1 -0
- package/dist/controls/chapters.js +81 -0
- package/dist/controls/chapters.js.map +1 -0
- package/dist/controls/cues.d.ts +8 -3
- package/dist/controls/cues.d.ts.map +1 -1
- package/dist/controls/cues.js +44 -10
- package/dist/controls/cues.js.map +1 -1
- package/dist/controls/fullscreen.d.ts +9 -9
- package/dist/controls/fullscreen.d.ts.map +1 -1
- package/dist/controls/fullscreen.js +17 -21
- package/dist/controls/fullscreen.js.map +1 -1
- package/dist/controls/icons.d.ts +1 -3
- package/dist/controls/icons.d.ts.map +1 -1
- package/dist/controls/icons.js +3 -6
- package/dist/controls/icons.js.map +1 -1
- package/dist/controls/menu.d.ts +14 -11
- package/dist/controls/menu.d.ts.map +1 -1
- package/dist/controls/menu.js +39 -34
- package/dist/controls/menu.js.map +1 -1
- package/dist/controls/session.d.ts +27 -0
- package/dist/controls/session.d.ts.map +1 -0
- package/dist/controls/session.js +36 -0
- package/dist/controls/session.js.map +1 -0
- package/dist/controls/slider.d.ts +6 -6
- package/dist/controls/slider.d.ts.map +1 -1
- package/dist/controls/slider.js +18 -13
- package/dist/controls/slider.js.map +1 -1
- package/dist/dom.d.ts +4 -10
- package/dist/dom.d.ts.map +1 -1
- package/dist/dom.js +4 -24
- package/dist/dom.js.map +1 -1
- package/dist/element-entry.d.ts +4 -0
- package/dist/element-entry.d.ts.map +1 -0
- package/dist/element-entry.js +9 -0
- package/dist/element-entry.js.map +1 -0
- package/dist/element.d.ts +54 -14
- package/dist/element.d.ts.map +1 -1
- package/dist/element.js +154 -73
- package/dist/element.js.map +1 -1
- package/dist/elements/audio-menu.d.ts +24 -0
- package/dist/elements/audio-menu.d.ts.map +1 -0
- package/dist/elements/audio-menu.js +70 -0
- package/dist/elements/audio-menu.js.map +1 -0
- package/dist/elements/chapters-menu.d.ts +12 -0
- package/dist/elements/chapters-menu.d.ts.map +1 -0
- package/dist/elements/chapters-menu.js +67 -0
- package/dist/elements/chapters-menu.js.map +1 -0
- package/dist/elements/component.d.ts +45 -0
- package/dist/elements/component.d.ts.map +1 -0
- package/dist/elements/component.js +90 -0
- package/dist/elements/component.js.map +1 -0
- package/dist/elements/control-bar.d.ts +46 -0
- package/dist/elements/control-bar.d.ts.map +1 -0
- package/dist/elements/control-bar.js +207 -0
- package/dist/elements/control-bar.js.map +1 -0
- package/dist/elements/current-time.d.ts +5 -0
- package/dist/elements/current-time.d.ts.map +1 -0
- package/dist/elements/current-time.js +27 -0
- package/dist/elements/current-time.js.map +1 -0
- package/dist/elements/drm-badge.d.ts +29 -0
- package/dist/elements/drm-badge.d.ts.map +1 -0
- package/dist/elements/drm-badge.js +145 -0
- package/dist/elements/drm-badge.js.map +1 -0
- package/dist/elements/duration.d.ts +6 -0
- package/dist/elements/duration.d.ts.map +1 -0
- package/dist/elements/duration.js +23 -0
- package/dist/elements/duration.js.map +1 -0
- package/dist/elements/error-screen.d.ts +17 -0
- package/dist/elements/error-screen.d.ts.map +1 -0
- package/dist/elements/error-screen.js +103 -0
- package/dist/elements/error-screen.js.map +1 -0
- package/dist/elements/fullscreen-button.d.ts +19 -0
- package/dist/elements/fullscreen-button.d.ts.map +1 -0
- package/dist/elements/fullscreen-button.js +55 -0
- package/dist/elements/fullscreen-button.js.map +1 -0
- package/dist/elements/live-button.d.ts +12 -0
- package/dist/elements/live-button.d.ts.map +1 -0
- package/dist/elements/live-button.js +96 -0
- package/dist/elements/live-button.js.map +1 -0
- package/dist/elements/menu-element.d.ts +22 -0
- package/dist/elements/menu-element.d.ts.map +1 -0
- package/dist/elements/menu-element.js +31 -0
- package/dist/elements/menu-element.js.map +1 -0
- package/dist/elements/mute-button.d.ts +12 -0
- package/dist/elements/mute-button.d.ts.map +1 -0
- package/dist/elements/mute-button.js +61 -0
- package/dist/elements/mute-button.js.map +1 -0
- package/dist/elements/panels.d.ts +15 -0
- package/dist/elements/panels.d.ts.map +1 -0
- package/dist/elements/panels.js +55 -0
- package/dist/elements/panels.js.map +1 -0
- package/dist/elements/pip-button.d.ts +13 -0
- package/dist/elements/pip-button.d.ts.map +1 -0
- package/dist/elements/pip-button.js +56 -0
- package/dist/elements/pip-button.js.map +1 -0
- package/dist/elements/play-button.d.ts +12 -0
- package/dist/elements/play-button.d.ts.map +1 -0
- package/dist/elements/play-button.js +60 -0
- package/dist/elements/play-button.js.map +1 -0
- package/dist/elements/quality-menu.d.ts +11 -0
- package/dist/elements/quality-menu.d.ts.map +1 -0
- package/dist/elements/quality-menu.js +72 -0
- package/dist/elements/quality-menu.js.map +1 -0
- package/dist/elements/seek-bar.d.ts +83 -0
- package/dist/elements/seek-bar.d.ts.map +1 -0
- package/dist/elements/seek-bar.js +352 -0
- package/dist/elements/seek-bar.js.map +1 -0
- package/dist/elements/shared.d.ts +27 -0
- package/dist/elements/shared.d.ts.map +1 -0
- package/dist/elements/shared.js +155 -0
- package/dist/elements/shared.js.map +1 -0
- package/dist/elements/skip-button.d.ts +14 -0
- package/dist/elements/skip-button.d.ts.map +1 -0
- package/dist/elements/skip-button.js +60 -0
- package/dist/elements/skip-button.js.map +1 -0
- package/dist/elements/spacer.d.ts +4 -0
- package/dist/elements/spacer.d.ts.map +1 -0
- package/dist/elements/spacer.js +9 -0
- package/dist/elements/spacer.js.map +1 -0
- package/dist/elements/speed-menu.d.ts +18 -0
- package/dist/elements/speed-menu.d.ts.map +1 -0
- package/dist/elements/speed-menu.js +56 -0
- package/dist/elements/speed-menu.js.map +1 -0
- package/dist/elements/start-button.d.ts +13 -0
- package/dist/elements/start-button.d.ts.map +1 -0
- package/dist/elements/start-button.js +83 -0
- package/dist/elements/start-button.js.map +1 -0
- package/dist/elements/subtitles-menu.d.ts +17 -0
- package/dist/elements/subtitles-menu.d.ts.map +1 -0
- package/dist/elements/subtitles-menu.js +108 -0
- package/dist/elements/subtitles-menu.js.map +1 -0
- package/dist/elements/time-element.d.ts +14 -0
- package/dist/elements/time-element.d.ts.map +1 -0
- package/dist/elements/time-element.js +29 -0
- package/dist/elements/time-element.js.map +1 -0
- package/dist/elements/volume-slider.d.ts +10 -0
- package/dist/elements/volume-slider.d.ts.map +1 -0
- package/dist/elements/volume-slider.js +46 -0
- package/dist/elements/volume-slider.js.map +1 -0
- package/dist/elements/volume.d.ts +9 -0
- package/dist/elements/volume.d.ts.map +1 -0
- package/dist/elements/volume.js +50 -0
- package/dist/elements/volume.js.map +1 -0
- package/dist/entries/audio-menu.d.ts +5 -0
- package/dist/entries/audio-menu.d.ts.map +1 -0
- package/dist/entries/audio-menu.js +8 -0
- package/dist/entries/audio-menu.js.map +1 -0
- package/dist/entries/chapters-menu.d.ts +5 -0
- package/dist/entries/chapters-menu.d.ts.map +1 -0
- package/dist/entries/chapters-menu.js +9 -0
- package/dist/entries/chapters-menu.js.map +1 -0
- package/dist/entries/control-bar.d.ts +5 -0
- package/dist/entries/control-bar.d.ts.map +1 -0
- package/dist/entries/control-bar.js +8 -0
- package/dist/entries/control-bar.js.map +1 -0
- package/dist/entries/current-time.d.ts +5 -0
- package/dist/entries/current-time.d.ts.map +1 -0
- package/dist/entries/current-time.js +8 -0
- package/dist/entries/current-time.js.map +1 -0
- package/dist/entries/drm-badge.d.ts +5 -0
- package/dist/entries/drm-badge.d.ts.map +1 -0
- package/dist/entries/drm-badge.js +8 -0
- package/dist/entries/drm-badge.js.map +1 -0
- package/dist/entries/duration.d.ts +5 -0
- package/dist/entries/duration.d.ts.map +1 -0
- package/dist/entries/duration.js +8 -0
- package/dist/entries/duration.js.map +1 -0
- package/dist/entries/error-screen.d.ts +5 -0
- package/dist/entries/error-screen.d.ts.map +1 -0
- package/dist/entries/error-screen.js +8 -0
- package/dist/entries/error-screen.js.map +1 -0
- package/dist/entries/fullscreen-button.d.ts +5 -0
- package/dist/entries/fullscreen-button.d.ts.map +1 -0
- package/dist/entries/fullscreen-button.js +8 -0
- package/dist/entries/fullscreen-button.js.map +1 -0
- package/dist/entries/live-button.d.ts +5 -0
- package/dist/entries/live-button.d.ts.map +1 -0
- package/dist/entries/live-button.js +8 -0
- package/dist/entries/live-button.js.map +1 -0
- package/dist/entries/mute-button.d.ts +5 -0
- package/dist/entries/mute-button.d.ts.map +1 -0
- package/dist/entries/mute-button.js +8 -0
- package/dist/entries/mute-button.js.map +1 -0
- package/dist/entries/panels.d.ts +5 -0
- package/dist/entries/panels.d.ts.map +1 -0
- package/dist/entries/panels.js +8 -0
- package/dist/entries/panels.js.map +1 -0
- package/dist/entries/pip-button.d.ts +5 -0
- package/dist/entries/pip-button.d.ts.map +1 -0
- package/dist/entries/pip-button.js +8 -0
- package/dist/entries/pip-button.js.map +1 -0
- package/dist/entries/play-button.d.ts +5 -0
- package/dist/entries/play-button.d.ts.map +1 -0
- package/dist/entries/play-button.js +8 -0
- package/dist/entries/play-button.js.map +1 -0
- package/dist/entries/quality-menu.d.ts +5 -0
- package/dist/entries/quality-menu.d.ts.map +1 -0
- package/dist/entries/quality-menu.js +8 -0
- package/dist/entries/quality-menu.js.map +1 -0
- package/dist/entries/seek-bar.d.ts +5 -0
- package/dist/entries/seek-bar.d.ts.map +1 -0
- package/dist/entries/seek-bar.js +8 -0
- package/dist/entries/seek-bar.js.map +1 -0
- package/dist/entries/skip-button.d.ts +5 -0
- package/dist/entries/skip-button.d.ts.map +1 -0
- package/dist/entries/skip-button.js +8 -0
- package/dist/entries/skip-button.js.map +1 -0
- package/dist/entries/spacer.d.ts +5 -0
- package/dist/entries/spacer.d.ts.map +1 -0
- package/dist/entries/spacer.js +8 -0
- package/dist/entries/spacer.js.map +1 -0
- package/dist/entries/speed-menu.d.ts +5 -0
- package/dist/entries/speed-menu.d.ts.map +1 -0
- package/dist/entries/speed-menu.js +8 -0
- package/dist/entries/speed-menu.js.map +1 -0
- package/dist/entries/start-button.d.ts +5 -0
- package/dist/entries/start-button.d.ts.map +1 -0
- package/dist/entries/start-button.js +8 -0
- package/dist/entries/start-button.js.map +1 -0
- package/dist/entries/subtitles-menu.d.ts +5 -0
- package/dist/entries/subtitles-menu.d.ts.map +1 -0
- package/dist/entries/subtitles-menu.js +8 -0
- package/dist/entries/subtitles-menu.js.map +1 -0
- package/dist/entries/volume-slider.d.ts +5 -0
- package/dist/entries/volume-slider.d.ts.map +1 -0
- package/dist/entries/volume-slider.js +8 -0
- package/dist/entries/volume-slider.js.map +1 -0
- package/dist/entries/volume.d.ts +7 -0
- package/dist/entries/volume.d.ts.map +1 -0
- package/dist/entries/volume.js +10 -0
- package/dist/entries/volume.js.map +1 -0
- package/dist/es2015/compose.js +33 -0
- package/dist/es2015/controls/chapters.js +61 -0
- package/dist/es2015/controls/cues.js +39 -11
- package/dist/es2015/controls/fullscreen.js +25 -23
- package/dist/es2015/controls/icons.js +5 -9
- package/dist/es2015/controls/menu.js +39 -35
- package/dist/es2015/controls/session.js +40 -0
- package/dist/es2015/controls/slider.js +18 -13
- package/dist/es2015/controls/time.js +1 -5
- package/dist/es2015/dom.js +5 -25
- package/dist/es2015/element-entry.js +10 -0
- package/dist/es2015/element.js +118 -65
- package/dist/es2015/elements/audio-menu.js +68 -0
- package/dist/es2015/elements/chapters-menu.js +68 -0
- package/dist/es2015/elements/component.js +84 -0
- package/dist/es2015/elements/control-bar.js +178 -0
- package/dist/es2015/elements/current-time.js +27 -0
- package/dist/es2015/elements/drm-badge.js +138 -0
- package/dist/es2015/elements/duration.js +23 -0
- package/dist/es2015/elements/error-screen.js +97 -0
- package/dist/es2015/elements/fullscreen-button.js +49 -0
- package/dist/es2015/elements/live-button.js +97 -0
- package/dist/es2015/elements/menu-element.js +39 -0
- package/dist/es2015/elements/mute-button.js +60 -0
- package/dist/es2015/elements/panels.js +52 -0
- package/dist/es2015/elements/pip-button.js +56 -0
- package/dist/es2015/elements/play-button.js +68 -0
- package/dist/es2015/elements/quality-menu.js +68 -0
- package/dist/es2015/elements/seek-bar.js +314 -0
- package/dist/es2015/elements/shared.js +155 -0
- package/dist/es2015/elements/skip-button.js +59 -0
- package/dist/es2015/elements/spacer.js +11 -0
- package/dist/es2015/elements/speed-menu.js +60 -0
- package/dist/es2015/elements/start-button.js +87 -0
- package/dist/es2015/elements/subtitles-menu.js +103 -0
- package/dist/es2015/elements/time-element.js +38 -0
- package/dist/es2015/elements/volume-slider.js +47 -0
- package/dist/es2015/elements/volume.js +50 -0
- package/dist/es2015/entries/audio-menu.js +7 -0
- package/dist/es2015/entries/chapters-menu.js +7 -0
- package/dist/es2015/entries/control-bar.js +7 -0
- package/dist/es2015/entries/current-time.js +7 -0
- package/dist/es2015/entries/drm-badge.js +7 -0
- package/dist/es2015/entries/duration.js +7 -0
- package/dist/es2015/entries/error-screen.js +7 -0
- package/dist/es2015/entries/fullscreen-button.js +7 -0
- package/dist/es2015/entries/live-button.js +7 -0
- package/dist/es2015/entries/mute-button.js +7 -0
- package/dist/es2015/entries/panels.js +7 -0
- package/dist/es2015/entries/pip-button.js +7 -0
- package/dist/es2015/entries/play-button.js +7 -0
- package/dist/es2015/entries/quality-menu.js +7 -0
- package/dist/es2015/entries/seek-bar.js +7 -0
- package/dist/es2015/entries/skip-button.js +7 -0
- package/dist/es2015/entries/spacer.js +7 -0
- package/dist/es2015/entries/speed-menu.js +7 -0
- package/dist/es2015/entries/start-button.js +7 -0
- package/dist/es2015/entries/subtitles-menu.js +7 -0
- package/dist/es2015/entries/volume-slider.js +7 -0
- package/dist/es2015/entries/volume.js +9 -0
- package/dist/es2015/host.js +23 -0
- package/dist/es2015/index.js +46 -9
- package/dist/es2015/labels.js +14 -0
- package/dist/es2015/style.js +21 -294
- package/dist/es2015/{panels/error.js → surface.js} +3 -3
- package/dist/es2015/tags.js +27 -0
- package/dist/host.d.ts +26 -0
- package/dist/host.d.ts.map +1 -0
- package/dist/host.js +23 -0
- package/dist/host.js.map +1 -0
- package/dist/index.d.ts +81 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -8
- package/dist/index.js.map +1 -1
- package/dist/labels.d.ts +7 -0
- package/dist/labels.d.ts.map +1 -0
- package/dist/labels.js +12 -0
- package/dist/labels.js.map +1 -0
- package/dist/style.d.ts +4 -2
- package/dist/style.d.ts.map +1 -1
- package/dist/style.js +21 -294
- package/dist/style.js.map +1 -1
- package/dist/surface.d.ts +15 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/{panels/error.js → surface.js} +3 -3
- package/dist/surface.js.map +1 -0
- package/dist/tags.d.ts +25 -0
- package/dist/tags.d.ts.map +1 -0
- package/dist/tags.js +25 -0
- package/dist/tags.js.map +1 -0
- package/package.json +22 -2
- package/dist/controls/bar.d.ts +0 -56
- package/dist/controls/bar.d.ts.map +0 -1
- package/dist/controls/bar.js +0 -245
- package/dist/controls/bar.js.map +0 -1
- package/dist/controls/buttons.d.ts +0 -13
- package/dist/controls/buttons.d.ts.map +0 -1
- package/dist/controls/buttons.js +0 -157
- package/dist/controls/buttons.js.map +0 -1
- package/dist/controls/control.d.ts +0 -12
- package/dist/controls/control.d.ts.map +0 -1
- package/dist/controls/control.js +0 -2
- package/dist/controls/control.js.map +0 -1
- package/dist/controls/keys.d.ts +0 -26
- package/dist/controls/keys.d.ts.map +0 -1
- package/dist/controls/keys.js +0 -66
- package/dist/controls/keys.js.map +0 -1
- package/dist/controls/live.d.ts +0 -10
- package/dist/controls/live.d.ts.map +0 -1
- package/dist/controls/live.js +0 -59
- package/dist/controls/live.js.map +0 -1
- package/dist/controls/menus.d.ts +0 -43
- package/dist/controls/menus.d.ts.map +0 -1
- package/dist/controls/menus.js +0 -262
- package/dist/controls/menus.js.map +0 -1
- package/dist/controls/options.d.ts +0 -44
- package/dist/controls/options.d.ts.map +0 -1
- package/dist/controls/options.js +0 -54
- package/dist/controls/options.js.map +0 -1
- package/dist/controls/screens.d.ts +0 -22
- package/dist/controls/screens.d.ts.map +0 -1
- package/dist/controls/screens.js +0 -69
- package/dist/controls/screens.js.map +0 -1
- package/dist/controls/seek.d.ts +0 -52
- package/dist/controls/seek.d.ts.map +0 -1
- package/dist/controls/seek.js +0 -215
- package/dist/controls/seek.js.map +0 -1
- package/dist/controls/speed.d.ts +0 -8
- package/dist/controls/speed.d.ts.map +0 -1
- package/dist/controls/speed.js +0 -34
- package/dist/controls/speed.js.map +0 -1
- package/dist/controls/volume.d.ts +0 -8
- package/dist/controls/volume.d.ts.map +0 -1
- package/dist/controls/volume.js +0 -29
- package/dist/controls/volume.js.map +0 -1
- package/dist/es2015/controls/bar.js +0 -227
- package/dist/es2015/controls/buttons.js +0 -146
- package/dist/es2015/controls/keys.js +0 -60
- package/dist/es2015/controls/live.js +0 -60
- package/dist/es2015/controls/menus.js +0 -258
- package/dist/es2015/controls/options.js +0 -46
- package/dist/es2015/controls/screens.js +0 -74
- package/dist/es2015/controls/seek.js +0 -203
- package/dist/es2015/controls/speed.js +0 -41
- package/dist/es2015/controls/volume.js +0 -30
- package/dist/es2015/panels/drm.js +0 -29
- package/dist/es2015/panels/live.js +0 -48
- package/dist/es2015/panels/quality.js +0 -52
- package/dist/es2015/panels/tracks.js +0 -47
- package/dist/panels/drm.d.ts +0 -8
- package/dist/panels/drm.d.ts.map +0 -1
- package/dist/panels/drm.js +0 -36
- package/dist/panels/drm.js.map +0 -1
- package/dist/panels/error.d.ts +0 -13
- package/dist/panels/error.d.ts.map +0 -1
- package/dist/panels/error.js.map +0 -1
- package/dist/panels/live.d.ts +0 -3
- package/dist/panels/live.d.ts.map +0 -1
- package/dist/panels/live.js +0 -56
- package/dist/panels/live.js.map +0 -1
- package/dist/panels/panel.d.ts +0 -13
- package/dist/panels/panel.d.ts.map +0 -1
- package/dist/panels/panel.js +0 -2
- package/dist/panels/panel.js.map +0 -1
- package/dist/panels/quality.d.ts +0 -3
- package/dist/panels/quality.d.ts.map +0 -1
- package/dist/panels/quality.js +0 -59
- package/dist/panels/quality.js.map +0 -1
- package/dist/panels/tracks.d.ts +0 -3
- package/dist/panels/tracks.d.ts.map +0 -1
- package/dist/panels/tracks.js +0 -49
- package/dist/panels/tracks.js.map +0 -1
package/dist/controls/menu.js
CHANGED
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
* with a heading each, and pages behind entries that open them. The button
|
|
5
5
|
* carries the name and `aria-expanded`; the popup is `role="menu"`, every
|
|
6
6
|
* choice a `menuitemradio` with `aria-checked`, the checked one also
|
|
7
|
-
* carrying `checked` on its part name
|
|
8
|
-
*
|
|
7
|
+
* carrying `checked` on its part name, because an item inside a shadow
|
|
8
|
+
* root has no other seam a page can style; an entry that opens a page is
|
|
9
|
+
* a `menuitem` with `aria-haspopup`, and the page starts with a Back.
|
|
9
10
|
*
|
|
10
11
|
* Open on click. Inside, the arrows move focus across every item, Home and
|
|
11
12
|
* End jump, Enter and Space choose, Escape goes back a page or closes and
|
|
@@ -13,31 +14,27 @@
|
|
|
13
14
|
* anywhere else closes it too.
|
|
14
15
|
*
|
|
15
16
|
* The popup never leaves the picture: on opening it takes the room above
|
|
16
|
-
* the button
|
|
17
|
+
* the button down to `ceiling()` as its height and scrolls past that. The
|
|
18
|
+
* element that owns the menu carries `open` while the popup shows, which
|
|
19
|
+
* the bar reads to hold its fade.
|
|
17
20
|
*/
|
|
18
21
|
import { el, state } from '../dom.js';
|
|
19
|
-
|
|
20
|
-
/** Air between the popup's top and the stage's. */
|
|
22
|
+
/** Air between the popup's top and the picture's. */
|
|
21
23
|
const AIR = 8;
|
|
22
24
|
function isPage(entry) {
|
|
23
25
|
return 'entries' in entry;
|
|
24
26
|
}
|
|
25
27
|
export function menu(options) {
|
|
26
|
-
const {
|
|
27
|
-
const
|
|
28
|
-
const button = el('button', `control ${name}-button`);
|
|
28
|
+
const { host } = options;
|
|
29
|
+
const button = el('button', 'button');
|
|
29
30
|
button.type = 'button';
|
|
30
|
-
button.setAttribute('aria-label', options.label);
|
|
31
31
|
button.setAttribute('aria-haspopup', 'menu');
|
|
32
32
|
button.setAttribute('aria-expanded', 'false');
|
|
33
|
-
const
|
|
34
|
-
button.append(svg);
|
|
35
|
-
const popup = el('div', `popup ${name}-popup`);
|
|
33
|
+
const popup = el('div', 'popup');
|
|
36
34
|
popup.setAttribute('role', 'menu');
|
|
37
|
-
popup.setAttribute('aria-label', options.label);
|
|
38
35
|
popup.hidden = true;
|
|
39
|
-
root.append(button, popup);
|
|
40
36
|
let open = false;
|
|
37
|
+
let name = '';
|
|
41
38
|
let first = [];
|
|
42
39
|
/** The pages opened, the first being the menu itself. */
|
|
43
40
|
let stack = [];
|
|
@@ -53,15 +50,15 @@ export function menu(options) {
|
|
|
53
50
|
return popup.getRootNode().activeElement;
|
|
54
51
|
}
|
|
55
52
|
function outside(event) {
|
|
56
|
-
if (!event.composedPath().includes(
|
|
53
|
+
if (!event.composedPath().includes(host))
|
|
57
54
|
close();
|
|
58
55
|
}
|
|
59
|
-
/** Whatever room there is above the button
|
|
56
|
+
/** Whatever room there is above the button down to the ceiling, so the popup never leaves the picture. */
|
|
60
57
|
function fit() {
|
|
61
|
-
const
|
|
62
|
-
if (
|
|
58
|
+
const top = options.ceiling();
|
|
59
|
+
if (top === null)
|
|
63
60
|
return;
|
|
64
|
-
const room = button.getBoundingClientRect().top -
|
|
61
|
+
const room = button.getBoundingClientRect().top - top - AIR;
|
|
65
62
|
popup.style.maxHeight = `${Math.max(0, Math.floor(room))}px`;
|
|
66
63
|
}
|
|
67
64
|
function clear() {
|
|
@@ -88,18 +85,18 @@ export function menu(options) {
|
|
|
88
85
|
return;
|
|
89
86
|
let tab = true;
|
|
90
87
|
if (stack.length > 1) {
|
|
91
|
-
const back = item(
|
|
88
|
+
const back = item('item back-item', page.label, () => {
|
|
92
89
|
stack.pop();
|
|
93
90
|
render();
|
|
94
91
|
items()[0]?.focus();
|
|
95
92
|
});
|
|
96
93
|
back.setAttribute('role', 'menuitem');
|
|
97
|
-
back.setAttribute('aria-label',
|
|
94
|
+
back.setAttribute('aria-label', options.back(page.label));
|
|
98
95
|
popup.append(back);
|
|
99
96
|
}
|
|
100
97
|
for (const entry of page.entries) {
|
|
101
98
|
if (isPage(entry)) {
|
|
102
|
-
const link = item(`item page-item ${
|
|
99
|
+
const link = item(`item page-item ${entry.name}-item`, entry.label, () => {
|
|
103
100
|
stack.push(entry);
|
|
104
101
|
render();
|
|
105
102
|
items()[0]?.focus();
|
|
@@ -109,23 +106,25 @@ export function menu(options) {
|
|
|
109
106
|
popup.append(link);
|
|
110
107
|
continue;
|
|
111
108
|
}
|
|
112
|
-
const section = el('div', `section ${
|
|
109
|
+
const section = el('div', `section ${entry.name}-section`);
|
|
113
110
|
section.setAttribute('role', 'group');
|
|
114
111
|
if (entry.label !== undefined) {
|
|
115
112
|
section.setAttribute('aria-label', entry.label);
|
|
116
|
-
section.append(el('div', `section-label ${
|
|
113
|
+
section.append(el('div', `section-label ${entry.name}-label`, entry.label));
|
|
117
114
|
}
|
|
118
|
-
for (const [id, text] of entry.items) {
|
|
119
|
-
const choice = item(`item ${
|
|
115
|
+
for (const [id, text, detail] of entry.items) {
|
|
116
|
+
const choice = item(`item ${entry.name}-item`, text, () => {
|
|
120
117
|
close();
|
|
121
118
|
button.focus();
|
|
122
119
|
entry.onSelect(id);
|
|
123
120
|
});
|
|
121
|
+
if (detail !== undefined)
|
|
122
|
+
choice.append(el('span', 'item-detail', detail));
|
|
124
123
|
choice.value = id;
|
|
125
124
|
choice.setAttribute('role', 'menuitemradio');
|
|
126
125
|
const on = id === entry.value;
|
|
127
126
|
choice.setAttribute('aria-checked', String(on));
|
|
128
|
-
state(choice, `item ${
|
|
127
|
+
state(choice, `item ${entry.name}-item`, { checked: on });
|
|
129
128
|
// One tab stop: the first checked item.
|
|
130
129
|
if (on && tab) {
|
|
131
130
|
choice.tabIndex = 0;
|
|
@@ -143,7 +142,7 @@ export function menu(options) {
|
|
|
143
142
|
open = false;
|
|
144
143
|
popup.hidden = true;
|
|
145
144
|
button.setAttribute('aria-expanded', 'false');
|
|
146
|
-
|
|
145
|
+
host.removeAttribute('open');
|
|
147
146
|
document.removeEventListener('pointerdown', outside, true);
|
|
148
147
|
if (stack.length > 1) {
|
|
149
148
|
stack = stack.slice(0, 1);
|
|
@@ -156,7 +155,7 @@ export function menu(options) {
|
|
|
156
155
|
open = true;
|
|
157
156
|
popup.hidden = false;
|
|
158
157
|
button.setAttribute('aria-expanded', 'true');
|
|
159
|
-
|
|
158
|
+
host.setAttribute('open', '');
|
|
160
159
|
document.addEventListener('pointerdown', outside, true);
|
|
161
160
|
fit();
|
|
162
161
|
(checked() ?? items()[0])?.focus();
|
|
@@ -204,15 +203,21 @@ export function menu(options) {
|
|
|
204
203
|
button.addEventListener('click', toggle);
|
|
205
204
|
popup.addEventListener('keydown', key);
|
|
206
205
|
return {
|
|
207
|
-
|
|
206
|
+
button,
|
|
207
|
+
popup,
|
|
208
|
+
label(text) {
|
|
209
|
+
name = text;
|
|
210
|
+
button.setAttribute('aria-label', text);
|
|
211
|
+
popup.setAttribute('aria-label', text);
|
|
212
|
+
const root = stack[0];
|
|
213
|
+
if (root !== undefined)
|
|
214
|
+
stack[0] = { ...root, label: text };
|
|
215
|
+
},
|
|
208
216
|
fill(entries) {
|
|
209
217
|
first = entries;
|
|
210
|
-
stack = [{ name, label:
|
|
218
|
+
stack = [{ name: 'menu', label: name, entries: first }];
|
|
211
219
|
render();
|
|
212
220
|
},
|
|
213
|
-
show(glyphName) {
|
|
214
|
-
glyph(svg, glyphName);
|
|
215
|
-
},
|
|
216
221
|
close,
|
|
217
222
|
dispose() {
|
|
218
223
|
close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/controls/menu.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/controls/menu.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the seek row reads of a session, in one place, so the time, the
|
|
3
|
+
* seek bar and the live button agree: whether the stream is live, the span
|
|
4
|
+
* the bar maps, and the wall clock at a presentation time. Every read is
|
|
5
|
+
* feature-tested through `namespaces()`, and a native session answers as
|
|
6
|
+
* VOD with no window and no clock.
|
|
7
|
+
*/
|
|
8
|
+
import type { Mattebox } from 'mattebox';
|
|
9
|
+
import type { LiveApi, Namespaces } from '../namespaces.js';
|
|
10
|
+
import type { Span } from './ranges.js';
|
|
11
|
+
/** The optional namespaces of an engine, or none for a native session. */
|
|
12
|
+
export declare function optional(engine: Mattebox | null): Namespaces;
|
|
13
|
+
/** The live namespace once the stream has an availability window, which is what makes it live. */
|
|
14
|
+
export declare function live(engine: Mattebox | null): LiveApi | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* The span the bar maps: the engine's own availability window for live,
|
|
17
|
+
* where the session offers it, because the browser's seekable range on a
|
|
18
|
+
* live MediaSource is the union of that window and whatever is buffered
|
|
19
|
+
* and grows behind a paused playhead; the seekable range otherwise; zero
|
|
20
|
+
* to the duration for VOD.
|
|
21
|
+
*/
|
|
22
|
+
export declare function span(video: HTMLVideoElement, engine: Mattebox | null): Span;
|
|
23
|
+
/** The engine's forward buffer goal in seconds, which lives on the diagnostics snapshot and nowhere else. */
|
|
24
|
+
export declare function bufferGoal(engine: Mattebox | null): number | null;
|
|
25
|
+
/** The wall clock at a presentation time, when the session can say it. */
|
|
26
|
+
export declare function wall(engine: Mattebox | null, time: number): string | null;
|
|
27
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/controls/session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAIxC,0EAA0E;AAC1E,wBAAgB,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,CAE5D;AAED,kGAAkG;AAClG,wBAAgB,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,CAGjE;AAED;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAK3E;AAED,6GAA6G;AAC7G,wBAAgB,UAAU,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAEjE;AAED,0EAA0E;AAC1E,wBAAgB,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGzE"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { namespaces } from '../namespaces.js';
|
|
2
|
+
import { spans, window } from './ranges.js';
|
|
3
|
+
import { clock } from './time.js';
|
|
4
|
+
/** The optional namespaces of an engine, or none for a native session. */
|
|
5
|
+
export function optional(engine) {
|
|
6
|
+
return engine === null ? {} : namespaces(engine);
|
|
7
|
+
}
|
|
8
|
+
/** The live namespace once the stream has an availability window, which is what makes it live. */
|
|
9
|
+
export function live(engine) {
|
|
10
|
+
const api = optional(engine).live;
|
|
11
|
+
return api !== undefined && api.edge !== null ? api : undefined;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* The span the bar maps: the engine's own availability window for live,
|
|
15
|
+
* where the session offers it, because the browser's seekable range on a
|
|
16
|
+
* live MediaSource is the union of that window and whatever is buffered
|
|
17
|
+
* and grows behind a paused playhead; the seekable range otherwise; zero
|
|
18
|
+
* to the duration for VOD.
|
|
19
|
+
*/
|
|
20
|
+
export function span(video, engine) {
|
|
21
|
+
const on = live(engine) !== undefined;
|
|
22
|
+
const own = on ? (engine?.stats.snapshot().live?.span ?? null) : null;
|
|
23
|
+
if (own !== null && own.end > own.start)
|
|
24
|
+
return own;
|
|
25
|
+
return window(video.duration, spans(video.seekable), on);
|
|
26
|
+
}
|
|
27
|
+
/** The engine's forward buffer goal in seconds, which lives on the diagnostics snapshot and nowhere else. */
|
|
28
|
+
export function bufferGoal(engine) {
|
|
29
|
+
return engine?.stats.snapshot().scheduling.bufferGoal ?? null;
|
|
30
|
+
}
|
|
31
|
+
/** The wall clock at a presentation time, when the session can say it. */
|
|
32
|
+
export function wall(engine, time) {
|
|
33
|
+
const epoch = optional(engine).pdt?.toWallClock(time) ?? null;
|
|
34
|
+
return epoch === null ? null : clock(epoch);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/controls/session.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC,0EAA0E;AAC1E,MAAM,UAAU,QAAQ,CAAC,MAAuB;IAC9C,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACnD,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,IAAI,CAAC,MAAuB;IAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;IAClC,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,IAAI,CAAC,KAAuB,EAAE,MAAuB;IACnE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;IACtC,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtE,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK;QAAE,OAAO,GAAG,CAAC;IACpD,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,6GAA6G;AAC7G,MAAM,UAAU,UAAU,CAAC,MAAuB;IAChD,OAAO,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,UAAU,IAAI,IAAI,CAAC;AAChE,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,IAAI,CAAC,MAAuB,EAAE,IAAY;IACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC9D,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
export interface SliderOptions {
|
|
2
|
-
/** The part prefix: `seek`, `volume`. */
|
|
3
|
-
readonly name: string;
|
|
4
|
-
/** The accessible name. */
|
|
5
|
-
readonly label: string;
|
|
6
2
|
/** What an arrow key moves the value by. */
|
|
7
|
-
readonly step: number;
|
|
3
|
+
readonly step: () => number;
|
|
8
4
|
/** What Page Up and Page Down move it by. */
|
|
9
|
-
readonly page: number;
|
|
5
|
+
readonly page: () => number;
|
|
10
6
|
/** The value the pointer or a key asked for, clamped to the range. */
|
|
11
7
|
readonly onInput: (value: number) => void;
|
|
8
|
+
/** A pointer took the thumb, or let it go. The element carries it as `dragging`. */
|
|
9
|
+
readonly onDrag: (on: boolean) => void;
|
|
12
10
|
}
|
|
13
11
|
export interface Slider {
|
|
14
12
|
readonly root: HTMLElement;
|
|
13
|
+
/** The accessible name. */
|
|
14
|
+
label(text: string): void;
|
|
15
15
|
/** The bar the fill sits on. A caller lays extra layers on it. */
|
|
16
16
|
readonly track: HTMLElement;
|
|
17
17
|
/** What fractions are measured against: the track's extent, inset from the root. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../src/controls/slider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../src/controls/slider.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,MAAM,CAAC;IAC5B,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,MAAM,CAAC;IAC5B,sEAAsE;IACtE,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,oFAAoF;IACpF,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,2BAA2B;IAC3B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,oFAAoF;IACpF,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,+FAA+F;IAC/F,QAAQ,IAAI,OAAO,CAAC;IACpB,qCAAqC;IACrC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,4DAA4D;IAC5D,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,OAAO,IAAI,IAAI,CAAC;CACjB;AAMD,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAmIrD"}
|
package/dist/controls/slider.js
CHANGED
|
@@ -12,21 +12,23 @@
|
|
|
12
12
|
* The track and the thumb sit on a rail inset from the root's edges by half
|
|
13
13
|
* a thumb, so the thumb at either end is whole and not clipped, and every
|
|
14
14
|
* fraction is measured against the rail.
|
|
15
|
+
*
|
|
16
|
+
* The steps are read on every key, so an element can take them from its
|
|
17
|
+
* attributes as they change.
|
|
15
18
|
*/
|
|
16
|
-
import { el
|
|
19
|
+
import { el } from '../dom.js';
|
|
17
20
|
function clamp(value, min, max) {
|
|
18
21
|
return Math.min(max, Math.max(min, value));
|
|
19
22
|
}
|
|
20
23
|
export function slider(options) {
|
|
21
|
-
const {
|
|
22
|
-
const root = el('div',
|
|
24
|
+
const { onInput } = options;
|
|
25
|
+
const root = el('div', 'slider');
|
|
23
26
|
root.setAttribute('role', 'slider');
|
|
24
|
-
root.setAttribute('aria-label', options.label);
|
|
25
27
|
root.tabIndex = 0;
|
|
26
|
-
const rail = el('div',
|
|
27
|
-
const track = el('div',
|
|
28
|
-
const fill = el('div',
|
|
29
|
-
const thumb = el('div',
|
|
28
|
+
const rail = el('div', 'rail');
|
|
29
|
+
const track = el('div', 'track');
|
|
30
|
+
const fill = el('div', 'fill');
|
|
31
|
+
const thumb = el('div', 'thumb');
|
|
30
32
|
track.append(fill);
|
|
31
33
|
rail.append(track, thumb);
|
|
32
34
|
root.append(rail);
|
|
@@ -49,7 +51,7 @@ export function slider(options) {
|
|
|
49
51
|
}
|
|
50
52
|
function hold(on) {
|
|
51
53
|
held = on;
|
|
52
|
-
|
|
54
|
+
options.onDrag(on);
|
|
53
55
|
}
|
|
54
56
|
function down(event) {
|
|
55
57
|
if (event.button !== 0)
|
|
@@ -84,17 +86,17 @@ export function slider(options) {
|
|
|
84
86
|
switch (event.key) {
|
|
85
87
|
case 'ArrowRight':
|
|
86
88
|
case 'ArrowUp':
|
|
87
|
-
next = value + options.step;
|
|
89
|
+
next = value + options.step();
|
|
88
90
|
break;
|
|
89
91
|
case 'ArrowLeft':
|
|
90
92
|
case 'ArrowDown':
|
|
91
|
-
next = value - options.step;
|
|
93
|
+
next = value - options.step();
|
|
92
94
|
break;
|
|
93
95
|
case 'PageUp':
|
|
94
|
-
next = value + options.page;
|
|
96
|
+
next = value + options.page();
|
|
95
97
|
break;
|
|
96
98
|
case 'PageDown':
|
|
97
|
-
next = value - options.page;
|
|
99
|
+
next = value - options.page();
|
|
98
100
|
break;
|
|
99
101
|
case 'Home':
|
|
100
102
|
next = min;
|
|
@@ -117,6 +119,9 @@ export function slider(options) {
|
|
|
117
119
|
root,
|
|
118
120
|
track,
|
|
119
121
|
rail,
|
|
122
|
+
label(text) {
|
|
123
|
+
root.setAttribute('aria-label', text);
|
|
124
|
+
},
|
|
120
125
|
dragging() {
|
|
121
126
|
return held;
|
|
122
127
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slider.js","sourceRoot":"","sources":["../../src/controls/slider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"slider.js","sourceRoot":"","sources":["../../src/controls/slider.ts"],"names":[],"mappings":"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"}
|
package/dist/dom.d.ts
CHANGED
|
@@ -1,18 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The DOM helpers the
|
|
2
|
+
* The DOM helpers the controls share.
|
|
3
3
|
*
|
|
4
|
-
* Every element a
|
|
5
|
-
* descend:
|
|
6
|
-
*
|
|
7
|
-
* API from the first release. Each element also carries a generic name before
|
|
8
|
-
* its specific one, so `::part(select)` reaches every menu at once.
|
|
4
|
+
* Every element a control creates carries a `part`, because `::part()`
|
|
5
|
+
* cannot descend: an element without a name of its own is unreachable from
|
|
6
|
+
* the page's stylesheet. Names are public API.
|
|
9
7
|
*/
|
|
10
8
|
/** An element with its part names, and its text when it has any. */
|
|
11
9
|
export declare function el<K extends keyof HTMLElementTagNameMap>(tag: K, part: string, text?: string): HTMLElementTagNameMap[K];
|
|
12
|
-
/** A `<select>` inside its `<label>`, so neither needs an id to be associated. */
|
|
13
|
-
export declare function menu(name: string, text: string): [HTMLLabelElement, HTMLSelectElement];
|
|
14
|
-
/** Replaces a menu's options and selects `value`. */
|
|
15
|
-
export declare function fill(select: HTMLSelectElement, items: ReadonlyArray<readonly [string, string]>, value: string): void;
|
|
16
10
|
/** Sets `part` to a base plus the state names that are on. State rides the part name because `::part()` takes no attribute selector. */
|
|
17
11
|
export declare function state(node: HTMLElement, base: string, on: Readonly<Record<string, boolean>>): void;
|
|
18
12
|
//# sourceMappingURL=dom.d.ts.map
|
package/dist/dom.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,oEAAoE;AACpE,wBAAgB,EAAE,CAAC,CAAC,SAAS,MAAM,qBAAqB,EACtD,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,GACZ,qBAAqB,CAAC,CAAC,CAAC,CAK1B;AAED,wIAAwI;AACxI,wBAAgB,KAAK,CACnB,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACpC,IAAI,CAMN"}
|
package/dist/dom.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The DOM helpers the
|
|
2
|
+
* The DOM helpers the controls share.
|
|
3
3
|
*
|
|
4
|
-
* Every element a
|
|
5
|
-
* descend:
|
|
6
|
-
*
|
|
7
|
-
* API from the first release. Each element also carries a generic name before
|
|
8
|
-
* its specific one, so `::part(select)` reaches every menu at once.
|
|
4
|
+
* Every element a control creates carries a `part`, because `::part()`
|
|
5
|
+
* cannot descend: an element without a name of its own is unreachable from
|
|
6
|
+
* the page's stylesheet. Names are public API.
|
|
9
7
|
*/
|
|
10
8
|
/** An element with its part names, and its text when it has any. */
|
|
11
9
|
export function el(tag, part, text) {
|
|
@@ -15,24 +13,6 @@ export function el(tag, part, text) {
|
|
|
15
13
|
node.textContent = text;
|
|
16
14
|
return node;
|
|
17
15
|
}
|
|
18
|
-
/** A `<select>` inside its `<label>`, so neither needs an id to be associated. */
|
|
19
|
-
export function menu(name, text) {
|
|
20
|
-
const label = el('label', `label ${name}-label`);
|
|
21
|
-
label.append(el('span', `text ${name}-text`, text));
|
|
22
|
-
const select = el('select', `select ${name}-select`);
|
|
23
|
-
label.append(select);
|
|
24
|
-
return [label, select];
|
|
25
|
-
}
|
|
26
|
-
/** Replaces a menu's options and selects `value`. */
|
|
27
|
-
export function fill(select, items, value) {
|
|
28
|
-
select.replaceChildren();
|
|
29
|
-
for (const [id, text] of items) {
|
|
30
|
-
const option = el('option', 'option', text);
|
|
31
|
-
option.value = id;
|
|
32
|
-
select.append(option);
|
|
33
|
-
}
|
|
34
|
-
select.value = value;
|
|
35
|
-
}
|
|
36
16
|
/** Sets `part` to a base plus the state names that are on. State rides the part name because `::part()` takes no attribute selector. */
|
|
37
17
|
export function state(node, base, on) {
|
|
38
18
|
const names = [base];
|
package/dist/dom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,oEAAoE;AACpE,MAAM,UAAU,EAAE,CAChB,GAAM,EACN,IAAY,EACZ,IAAa;IAEb,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChC,IAAI,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAChD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wIAAwI;AACxI,MAAM,UAAU,KAAK,CACnB,IAAiB,EACjB,IAAY,EACZ,EAAqC;IAErC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;IACrB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAClC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element-entry.d.ts","sourceRoot":"","sources":["../src/element-entry.ts"],"names":[],"mappings":"AAOA,YAAY,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@mattebox/player/element`: registers <mattebox-player> and nothing else.
|
|
3
|
+
* A page that takes this entry writes its own composition from the
|
|
4
|
+
* `@mattebox/player/elements/*` entries it imports, and carries only those.
|
|
5
|
+
*/
|
|
6
|
+
import { MatteboxPlayerElement } from './element.js';
|
|
7
|
+
export { MatteboxPlayerElement } from './element.js';
|
|
8
|
+
MatteboxPlayerElement.define();
|
|
9
|
+
//# sourceMappingURL=element-entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element-entry.js","sourceRoot":"","sources":["../src/element-entry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAGrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAGrD,qBAAqB,CAAC,MAAM,EAAE,CAAC"}
|