@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.
- package/README.md +4 -3
- package/dist/cdn/mattebox-player.min.js +222 -198
- 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 +75 -0
- package/dist/elements/control-bar.d.ts.map +1 -0
- package/dist/elements/control-bar.js +339 -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/remaining-time.d.ts +6 -0
- package/dist/elements/remaining-time.d.ts.map +1 -0
- package/dist/elements/remaining-time.js +26 -0
- package/dist/elements/remaining-time.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 +23 -0
- package/dist/elements/start-button.d.ts.map +1 -0
- package/dist/elements/start-button.js +120 -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 +52 -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/remaining-time.d.ts +5 -0
- package/dist/entries/remaining-time.d.ts.map +1 -0
- package/dist/entries/remaining-time.js +9 -0
- package/dist/entries/remaining-time.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 +85 -0
- package/dist/es2015/elements/control-bar.js +299 -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/remaining-time.js +26 -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 +124 -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 +52 -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/remaining-time.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 +48 -9
- package/dist/es2015/labels.js +14 -0
- package/dist/es2015/style.js +40 -292
- package/dist/es2015/{panels/error.js → surface.js} +3 -3
- package/dist/es2015/tags.js +28 -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 +84 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -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 +10 -2
- package/dist/style.d.ts.map +1 -1
- package/dist/style.js +40 -292
- 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 +26 -0
- package/dist/tags.d.ts.map +1 -0
- package/dist/tags.js +26 -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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { el, state } from "../dom.js";
|
|
2
|
-
import
|
|
2
|
+
import _objectSpread2 from "../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/objectSpread2.js";
|
|
3
3
|
//#region src/controls/menu.ts
|
|
4
4
|
/**
|
|
5
5
|
* The menu primitive the quality, audio, subtitles and speed menus share: a
|
|
@@ -7,8 +7,9 @@ import { glyph, icon } from "./icons.js";
|
|
|
7
7
|
* with a heading each, and pages behind entries that open them. The button
|
|
8
8
|
* carries the name and `aria-expanded`; the popup is `role="menu"`, every
|
|
9
9
|
* choice a `menuitemradio` with `aria-checked`, the checked one also
|
|
10
|
-
* carrying `checked` on its part name
|
|
11
|
-
*
|
|
10
|
+
* carrying `checked` on its part name, because an item inside a shadow
|
|
11
|
+
* root has no other seam a page can style; an entry that opens a page is
|
|
12
|
+
* a `menuitem` with `aria-haspopup`, and the page starts with a Back.
|
|
12
13
|
*
|
|
13
14
|
* Open on click. Inside, the arrows move focus across every item, Home and
|
|
14
15
|
* End jump, Enter and Space choose, Escape goes back a page or closes and
|
|
@@ -16,29 +17,26 @@ import { glyph, icon } from "./icons.js";
|
|
|
16
17
|
* anywhere else closes it too.
|
|
17
18
|
*
|
|
18
19
|
* The popup never leaves the picture: on opening it takes the room above
|
|
19
|
-
* the button
|
|
20
|
+
* the button down to `ceiling()` as its height and scrolls past that. The
|
|
21
|
+
* element that owns the menu carries `open` while the popup shows, which
|
|
22
|
+
* the bar reads to hold its fade.
|
|
20
23
|
*/
|
|
21
|
-
/** Air between the popup's top and the
|
|
24
|
+
/** Air between the popup's top and the picture's. */
|
|
22
25
|
const AIR = 8;
|
|
23
26
|
function isPage(entry) {
|
|
24
27
|
return "entries" in entry;
|
|
25
28
|
}
|
|
26
29
|
function menu(options) {
|
|
27
|
-
const {
|
|
28
|
-
const
|
|
29
|
-
const button = el("button", `control ${name}-button`);
|
|
30
|
+
const { host } = options;
|
|
31
|
+
const button = el("button", "button");
|
|
30
32
|
button.type = "button";
|
|
31
|
-
button.setAttribute("aria-label", options.label);
|
|
32
33
|
button.setAttribute("aria-haspopup", "menu");
|
|
33
34
|
button.setAttribute("aria-expanded", "false");
|
|
34
|
-
const
|
|
35
|
-
button.append(svg);
|
|
36
|
-
const popup = el("div", `popup ${name}-popup`);
|
|
35
|
+
const popup = el("div", "popup");
|
|
37
36
|
popup.setAttribute("role", "menu");
|
|
38
|
-
popup.setAttribute("aria-label", options.label);
|
|
39
37
|
popup.hidden = true;
|
|
40
|
-
root.append(button, popup);
|
|
41
38
|
let open = false;
|
|
39
|
+
let name = "";
|
|
42
40
|
let first = [];
|
|
43
41
|
/** The pages opened, the first being the menu itself. */
|
|
44
42
|
let stack = [];
|
|
@@ -54,13 +52,13 @@ function menu(options) {
|
|
|
54
52
|
return popup.getRootNode().activeElement;
|
|
55
53
|
}
|
|
56
54
|
function outside(event) {
|
|
57
|
-
if (!event.composedPath().includes(
|
|
55
|
+
if (!event.composedPath().includes(host)) close();
|
|
58
56
|
}
|
|
59
|
-
/** Whatever room there is above the button
|
|
57
|
+
/** Whatever room there is above the button down to the ceiling, so the popup never leaves the picture. */
|
|
60
58
|
function fit() {
|
|
61
|
-
const
|
|
62
|
-
if (
|
|
63
|
-
const room = button.getBoundingClientRect().top -
|
|
59
|
+
const top = options.ceiling();
|
|
60
|
+
if (top === null) return;
|
|
61
|
+
const room = button.getBoundingClientRect().top - top - AIR;
|
|
64
62
|
popup.style.maxHeight = `${Math.max(0, Math.floor(room))}px`;
|
|
65
63
|
}
|
|
66
64
|
function clear() {
|
|
@@ -85,19 +83,19 @@ function menu(options) {
|
|
|
85
83
|
if (page === void 0) return;
|
|
86
84
|
let tab = true;
|
|
87
85
|
if (stack.length > 1) {
|
|
88
|
-
const back = item(
|
|
86
|
+
const back = item("item back-item", page.label, () => {
|
|
89
87
|
var _items$;
|
|
90
88
|
stack.pop();
|
|
91
89
|
render();
|
|
92
90
|
(_items$ = items()[0]) === null || _items$ === void 0 || _items$.focus();
|
|
93
91
|
});
|
|
94
92
|
back.setAttribute("role", "menuitem");
|
|
95
|
-
back.setAttribute("aria-label",
|
|
93
|
+
back.setAttribute("aria-label", options.back(page.label));
|
|
96
94
|
popup.append(back);
|
|
97
95
|
}
|
|
98
96
|
for (const entry of page.entries) {
|
|
99
97
|
if (isPage(entry)) {
|
|
100
|
-
const link = item(`item page-item ${
|
|
98
|
+
const link = item(`item page-item ${entry.name}-item`, entry.label, () => {
|
|
101
99
|
var _items$2;
|
|
102
100
|
stack.push(entry);
|
|
103
101
|
render();
|
|
@@ -108,23 +106,24 @@ function menu(options) {
|
|
|
108
106
|
popup.append(link);
|
|
109
107
|
continue;
|
|
110
108
|
}
|
|
111
|
-
const section = el("div", `section ${
|
|
109
|
+
const section = el("div", `section ${entry.name}-section`);
|
|
112
110
|
section.setAttribute("role", "group");
|
|
113
111
|
if (entry.label !== void 0) {
|
|
114
112
|
section.setAttribute("aria-label", entry.label);
|
|
115
|
-
section.append(el("div", `section-label ${
|
|
113
|
+
section.append(el("div", `section-label ${entry.name}-label`, entry.label));
|
|
116
114
|
}
|
|
117
|
-
for (const [id, text] of entry.items) {
|
|
118
|
-
const choice = item(`item ${
|
|
115
|
+
for (const [id, text, detail] of entry.items) {
|
|
116
|
+
const choice = item(`item ${entry.name}-item`, text, () => {
|
|
119
117
|
close();
|
|
120
118
|
button.focus();
|
|
121
119
|
entry.onSelect(id);
|
|
122
120
|
});
|
|
121
|
+
if (detail !== void 0) choice.append(el("span", "item-detail", detail));
|
|
123
122
|
choice.value = id;
|
|
124
123
|
choice.setAttribute("role", "menuitemradio");
|
|
125
124
|
const on = id === entry.value;
|
|
126
125
|
choice.setAttribute("aria-checked", String(on));
|
|
127
|
-
state(choice, `item ${
|
|
126
|
+
state(choice, `item ${entry.name}-item`, { checked: on });
|
|
128
127
|
if (on && tab) {
|
|
129
128
|
choice.tabIndex = 0;
|
|
130
129
|
tab = false;
|
|
@@ -140,7 +139,7 @@ function menu(options) {
|
|
|
140
139
|
open = false;
|
|
141
140
|
popup.hidden = true;
|
|
142
141
|
button.setAttribute("aria-expanded", "false");
|
|
143
|
-
|
|
142
|
+
host.removeAttribute("open");
|
|
144
143
|
document.removeEventListener("pointerdown", outside, true);
|
|
145
144
|
if (stack.length > 1) {
|
|
146
145
|
stack = stack.slice(0, 1);
|
|
@@ -153,7 +152,7 @@ function menu(options) {
|
|
|
153
152
|
open = true;
|
|
154
153
|
popup.hidden = false;
|
|
155
154
|
button.setAttribute("aria-expanded", "true");
|
|
156
|
-
|
|
155
|
+
host.setAttribute("open", "");
|
|
157
156
|
document.addEventListener("pointerdown", outside, true);
|
|
158
157
|
fit();
|
|
159
158
|
(_ref = (_checked = checked()) !== null && _checked !== void 0 ? _checked : items()[0]) === null || _ref === void 0 || _ref.focus();
|
|
@@ -200,19 +199,24 @@ function menu(options) {
|
|
|
200
199
|
button.addEventListener("click", toggle);
|
|
201
200
|
popup.addEventListener("keydown", key);
|
|
202
201
|
return {
|
|
203
|
-
|
|
202
|
+
button,
|
|
203
|
+
popup,
|
|
204
|
+
label(text) {
|
|
205
|
+
name = text;
|
|
206
|
+
button.setAttribute("aria-label", text);
|
|
207
|
+
popup.setAttribute("aria-label", text);
|
|
208
|
+
const root = stack[0];
|
|
209
|
+
if (root !== void 0) stack[0] = _objectSpread2(_objectSpread2({}, root), {}, { label: text });
|
|
210
|
+
},
|
|
204
211
|
fill(entries) {
|
|
205
212
|
first = entries;
|
|
206
213
|
stack = [{
|
|
207
|
-
name,
|
|
208
|
-
label:
|
|
214
|
+
name: "menu",
|
|
215
|
+
label: name,
|
|
209
216
|
entries: first
|
|
210
217
|
}];
|
|
211
218
|
render();
|
|
212
219
|
},
|
|
213
|
-
show(glyphName) {
|
|
214
|
-
glyph(svg, glyphName);
|
|
215
|
-
},
|
|
216
220
|
close,
|
|
217
221
|
dispose() {
|
|
218
222
|
close();
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { namespaces } from "../namespaces.js";
|
|
2
|
+
import { clock } from "./time.js";
|
|
3
|
+
import { spans, window } from "./ranges.js";
|
|
4
|
+
//#region src/controls/session.ts
|
|
5
|
+
/** The optional namespaces of an engine, or none for a native session. */
|
|
6
|
+
function optional(engine) {
|
|
7
|
+
return engine === null ? {} : namespaces(engine);
|
|
8
|
+
}
|
|
9
|
+
/** The live namespace once the stream has an availability window, which is what makes it live. */
|
|
10
|
+
function live(engine) {
|
|
11
|
+
const api = optional(engine).live;
|
|
12
|
+
return api !== void 0 && api.edge !== null ? api : void 0;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The span the bar maps: the engine's own availability window for live,
|
|
16
|
+
* where the session offers it, because the browser's seekable range on a
|
|
17
|
+
* live MediaSource is the union of that window and whatever is buffered
|
|
18
|
+
* and grows behind a paused playhead; the seekable range otherwise; zero
|
|
19
|
+
* to the duration for VOD.
|
|
20
|
+
*/
|
|
21
|
+
function span(video, engine) {
|
|
22
|
+
var _engine$stats$snapsho, _engine$stats$snapsho2;
|
|
23
|
+
const on = live(engine) !== void 0;
|
|
24
|
+
const own = on ? (_engine$stats$snapsho = engine === null || engine === void 0 || (_engine$stats$snapsho2 = engine.stats.snapshot().live) === null || _engine$stats$snapsho2 === void 0 ? void 0 : _engine$stats$snapsho2.span) !== null && _engine$stats$snapsho !== void 0 ? _engine$stats$snapsho : null : null;
|
|
25
|
+
if (own !== null && own.end > own.start) return own;
|
|
26
|
+
return window(video.duration, spans(video.seekable), on);
|
|
27
|
+
}
|
|
28
|
+
/** The engine's forward buffer goal in seconds, which lives on the diagnostics snapshot and nowhere else. */
|
|
29
|
+
function bufferGoal(engine) {
|
|
30
|
+
var _engine$stats$snapsho3;
|
|
31
|
+
return (_engine$stats$snapsho3 = engine === null || engine === void 0 ? void 0 : engine.stats.snapshot().scheduling.bufferGoal) !== null && _engine$stats$snapsho3 !== void 0 ? _engine$stats$snapsho3 : null;
|
|
32
|
+
}
|
|
33
|
+
/** The wall clock at a presentation time, when the session can say it. */
|
|
34
|
+
function wall(engine, time) {
|
|
35
|
+
var _optional$pdt$toWallC, _optional$pdt;
|
|
36
|
+
const epoch = (_optional$pdt$toWallC = (_optional$pdt = optional(engine).pdt) === null || _optional$pdt === void 0 ? void 0 : _optional$pdt.toWallClock(time)) !== null && _optional$pdt$toWallC !== void 0 ? _optional$pdt$toWallC : null;
|
|
37
|
+
return epoch === null ? null : clock(epoch);
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
export { bufferGoal, live, optional, span, wall };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { el
|
|
1
|
+
import { el } from "../dom.js";
|
|
2
2
|
//#region src/controls/slider.ts
|
|
3
3
|
/**
|
|
4
4
|
* The slider primitive the seek bar and the volume share: a `div` with
|
|
@@ -14,20 +14,22 @@ import { el, state } from "../dom.js";
|
|
|
14
14
|
* The track and the thumb sit on a rail inset from the root's edges by half
|
|
15
15
|
* a thumb, so the thumb at either end is whole and not clipped, and every
|
|
16
16
|
* fraction is measured against the rail.
|
|
17
|
+
*
|
|
18
|
+
* The steps are read on every key, so an element can take them from its
|
|
19
|
+
* attributes as they change.
|
|
17
20
|
*/
|
|
18
21
|
function clamp(value, min, max) {
|
|
19
22
|
return Math.min(max, Math.max(min, value));
|
|
20
23
|
}
|
|
21
24
|
function slider(options) {
|
|
22
|
-
const {
|
|
23
|
-
const root = el("div",
|
|
25
|
+
const { onInput } = options;
|
|
26
|
+
const root = el("div", "slider");
|
|
24
27
|
root.setAttribute("role", "slider");
|
|
25
|
-
root.setAttribute("aria-label", options.label);
|
|
26
28
|
root.tabIndex = 0;
|
|
27
|
-
const rail = el("div",
|
|
28
|
-
const track = el("div",
|
|
29
|
-
const fill = el("div",
|
|
30
|
-
const thumb = el("div",
|
|
29
|
+
const rail = el("div", "rail");
|
|
30
|
+
const track = el("div", "track");
|
|
31
|
+
const fill = el("div", "fill");
|
|
32
|
+
const thumb = el("div", "thumb");
|
|
31
33
|
track.append(fill);
|
|
32
34
|
rail.append(track, thumb);
|
|
33
35
|
root.append(rail);
|
|
@@ -48,7 +50,7 @@ function slider(options) {
|
|
|
48
50
|
}
|
|
49
51
|
function hold(on) {
|
|
50
52
|
held = on;
|
|
51
|
-
|
|
53
|
+
options.onDrag(on);
|
|
52
54
|
}
|
|
53
55
|
function down(event) {
|
|
54
56
|
if (event.button !== 0) return;
|
|
@@ -75,17 +77,17 @@ function slider(options) {
|
|
|
75
77
|
switch (event.key) {
|
|
76
78
|
case "ArrowRight":
|
|
77
79
|
case "ArrowUp":
|
|
78
|
-
next = value + options.step;
|
|
80
|
+
next = value + options.step();
|
|
79
81
|
break;
|
|
80
82
|
case "ArrowLeft":
|
|
81
83
|
case "ArrowDown":
|
|
82
|
-
next = value - options.step;
|
|
84
|
+
next = value - options.step();
|
|
83
85
|
break;
|
|
84
86
|
case "PageUp":
|
|
85
|
-
next = value + options.page;
|
|
87
|
+
next = value + options.page();
|
|
86
88
|
break;
|
|
87
89
|
case "PageDown":
|
|
88
|
-
next = value - options.page;
|
|
90
|
+
next = value - options.page();
|
|
89
91
|
break;
|
|
90
92
|
case "Home":
|
|
91
93
|
next = min;
|
|
@@ -107,6 +109,9 @@ function slider(options) {
|
|
|
107
109
|
root,
|
|
108
110
|
track,
|
|
109
111
|
rail,
|
|
112
|
+
label(text) {
|
|
113
|
+
root.setAttribute("aria-label", text);
|
|
114
|
+
},
|
|
110
115
|
dragging() {
|
|
111
116
|
return held;
|
|
112
117
|
},
|
|
@@ -19,9 +19,5 @@ function clock(epochSeconds) {
|
|
|
19
19
|
second: "2-digit"
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
|
-
/** What a screen reader hears for a position: "1:23 of 4:56", or the position alone when the duration is unknown or infinite. */
|
|
23
|
-
function describe(current, duration) {
|
|
24
|
-
return Number.isFinite(duration) ? `${format(current)} of ${format(duration)}` : format(current);
|
|
25
|
-
}
|
|
26
22
|
//#endregion
|
|
27
|
-
export { clock,
|
|
23
|
+
export { clock, format };
|
package/dist/es2015/dom.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
//#region src/dom.ts
|
|
2
2
|
/**
|
|
3
|
-
* The DOM helpers the
|
|
3
|
+
* The DOM helpers the controls share.
|
|
4
4
|
*
|
|
5
|
-
* Every element a
|
|
6
|
-
* descend:
|
|
7
|
-
*
|
|
8
|
-
* API from the first release. Each element also carries a generic name before
|
|
9
|
-
* its specific one, so `::part(select)` reaches every menu at once.
|
|
5
|
+
* Every element a control creates carries a `part`, because `::part()`
|
|
6
|
+
* cannot descend: an element without a name of its own is unreachable from
|
|
7
|
+
* the page's stylesheet. Names are public API.
|
|
10
8
|
*/
|
|
11
9
|
/** An element with its part names, and its text when it has any. */
|
|
12
10
|
function el(tag, part, text) {
|
|
@@ -15,24 +13,6 @@ function el(tag, part, text) {
|
|
|
15
13
|
if (text !== void 0) node.textContent = text;
|
|
16
14
|
return node;
|
|
17
15
|
}
|
|
18
|
-
/** A `<select>` inside its `<label>`, so neither needs an id to be associated. */
|
|
19
|
-
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
|
-
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
|
function state(node, base, on) {
|
|
38
18
|
const names = [base];
|
|
@@ -40,4 +20,4 @@ function state(node, base, on) {
|
|
|
40
20
|
node.setAttribute("part", names.join(" "));
|
|
41
21
|
}
|
|
42
22
|
//#endregion
|
|
43
|
-
export { el,
|
|
23
|
+
export { el, state };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { MatteboxPlayerElement } from "./element.js";
|
|
2
|
+
//#region src/element-entry.ts
|
|
3
|
+
/**
|
|
4
|
+
* `@mattebox/player/element`: registers <mattebox-player> and nothing else.
|
|
5
|
+
* A page that takes this entry writes its own composition from the
|
|
6
|
+
* `@mattebox/player/elements/*` entries it imports, and carries only those.
|
|
7
|
+
*/
|
|
8
|
+
MatteboxPlayerElement.define();
|
|
9
|
+
//#endregion
|
|
10
|
+
export { MatteboxPlayerElement };
|