@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
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { el, state } from "../dom.js";
|
|
2
|
-
import { namespaces } from "../namespaces.js";
|
|
3
|
-
//#region src/panels/live.ts
|
|
4
|
-
/**
|
|
5
|
-
* The live badge over `engine.live`. Present only when a live stage is
|
|
6
|
-
* composed, so the factory answers null for VOD-only engines and for native.
|
|
7
|
-
*
|
|
8
|
-
* Latency has no event; it moves with the playhead. The video's `timeupdate`
|
|
9
|
-
* is the clock the browser already runs, so the badge reads on that.
|
|
10
|
-
*/
|
|
11
|
-
const livePanel = (session, video) => {
|
|
12
|
-
const engine = session.engine;
|
|
13
|
-
if (engine === null) return null;
|
|
14
|
-
const found = namespaces(engine).live;
|
|
15
|
-
if (found === void 0) return null;
|
|
16
|
-
const live = found;
|
|
17
|
-
const root = el("div", "panel live");
|
|
18
|
-
const badge = el("span", "badge live-badge", "Live");
|
|
19
|
-
const latency = el("span", "value live-latency");
|
|
20
|
-
const button = el("button", "button live-edge-button", "Go to live");
|
|
21
|
-
button.type = "button";
|
|
22
|
-
root.append(badge, latency, button);
|
|
23
|
-
let shown = "";
|
|
24
|
-
function tick() {
|
|
25
|
-
root.hidden = live.edge === null;
|
|
26
|
-
const atEdge = live.atEdge;
|
|
27
|
-
state(root, "panel live", { "at-edge": atEdge });
|
|
28
|
-
button.disabled = atEdge;
|
|
29
|
-
const seconds = live.latency;
|
|
30
|
-
const text = seconds === null ? "" : `${seconds.toFixed(1)}s behind`;
|
|
31
|
-
if (text === shown) return;
|
|
32
|
-
shown = text;
|
|
33
|
-
latency.textContent = text;
|
|
34
|
-
}
|
|
35
|
-
button.addEventListener("click", () => {
|
|
36
|
-
live.seekToEdge();
|
|
37
|
-
});
|
|
38
|
-
video.addEventListener("timeupdate", tick);
|
|
39
|
-
tick();
|
|
40
|
-
return {
|
|
41
|
-
root,
|
|
42
|
-
dispose() {
|
|
43
|
-
video.removeEventListener("timeupdate", tick);
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
};
|
|
47
|
-
//#endregion
|
|
48
|
-
export { livePanel };
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { el, fill, menu } from "../dom.js";
|
|
2
|
-
//#region src/panels/quality.ts
|
|
3
|
-
const AUTO = "auto";
|
|
4
|
-
/** A rendition's height when the manifest declared one, its bitrate otherwise. */
|
|
5
|
-
function label(rendition) {
|
|
6
|
-
if (rendition.height !== void 0) return `${rendition.height}p`;
|
|
7
|
-
return `${Math.round(rendition.bitrate / 1e3)} kbps`;
|
|
8
|
-
}
|
|
9
|
-
const qualityPanel = (session, video) => {
|
|
10
|
-
const engine = session.engine;
|
|
11
|
-
if (engine === null) return null;
|
|
12
|
-
const quality = engine.quality;
|
|
13
|
-
const root = el("div", "panel quality");
|
|
14
|
-
const [wrapper, select] = menu("quality", "Quality");
|
|
15
|
-
const playing = el("span", "value quality-playing");
|
|
16
|
-
root.append(wrapper, playing);
|
|
17
|
-
let shown = "";
|
|
18
|
-
function render() {
|
|
19
|
-
var _quality$pinned;
|
|
20
|
-
const items = [[AUTO, "Auto"]];
|
|
21
|
-
for (const rendition of quality.renditions) items.push([rendition.id, label(rendition)]);
|
|
22
|
-
fill(select, items, (_quality$pinned = quality.pinned) !== null && _quality$pinned !== void 0 ? _quality$pinned : AUTO);
|
|
23
|
-
root.hidden = quality.renditions.length === 0;
|
|
24
|
-
}
|
|
25
|
-
function tick() {
|
|
26
|
-
const current = quality.playing === null ? "" : label(quality.playing);
|
|
27
|
-
if (current === shown) return;
|
|
28
|
-
shown = current;
|
|
29
|
-
playing.textContent = current;
|
|
30
|
-
}
|
|
31
|
-
select.addEventListener("change", () => {
|
|
32
|
-
if (select.value === AUTO) quality.auto();
|
|
33
|
-
else quality.pin(select.value);
|
|
34
|
-
});
|
|
35
|
-
const offs = [
|
|
36
|
-
engine.on("tracks:changed", render),
|
|
37
|
-
engine.on("quality:constraints-unsatisfiable", render),
|
|
38
|
-
engine.on("quality:pin-unsatisfiable", render)
|
|
39
|
-
];
|
|
40
|
-
video.addEventListener("timeupdate", tick);
|
|
41
|
-
render();
|
|
42
|
-
tick();
|
|
43
|
-
return {
|
|
44
|
-
root,
|
|
45
|
-
dispose() {
|
|
46
|
-
for (const off of offs) off();
|
|
47
|
-
video.removeEventListener("timeupdate", tick);
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
};
|
|
51
|
-
//#endregion
|
|
52
|
-
export { qualityPanel };
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { el, fill, menu } from "../dom.js";
|
|
2
|
-
//#region src/panels/tracks.ts
|
|
3
|
-
const OFF = "off";
|
|
4
|
-
/** The language, then the role, then the id: whichever the manifest gave. */
|
|
5
|
-
function label(track) {
|
|
6
|
-
const parts = [track.lang, track.role].filter((part) => part !== void 0);
|
|
7
|
-
return parts.length === 0 ? track.id : parts.join(" · ");
|
|
8
|
-
}
|
|
9
|
-
const tracksPanel = (session) => {
|
|
10
|
-
const engine = session.engine;
|
|
11
|
-
if (engine === null) return null;
|
|
12
|
-
const tracks = engine.tracks;
|
|
13
|
-
const root = el("div", "panel tracks");
|
|
14
|
-
const [audioLabel, audio] = menu("audio", "Audio");
|
|
15
|
-
const [textLabel, text] = menu("text", "Subtitles");
|
|
16
|
-
root.append(audioLabel, textLabel);
|
|
17
|
-
function renderOne(select, wrapper, contentType, off) {
|
|
18
|
-
var _tracks$active$id, _tracks$active;
|
|
19
|
-
const available = tracks.available.filter((track) => track.contentType === contentType);
|
|
20
|
-
const items = off ? [[OFF, "Off"]] : [];
|
|
21
|
-
for (const track of available) items.push([track.id, label(track)]);
|
|
22
|
-
fill(select, items, (_tracks$active$id = (_tracks$active = tracks.active(contentType)) === null || _tracks$active === void 0 ? void 0 : _tracks$active.id) !== null && _tracks$active$id !== void 0 ? _tracks$active$id : OFF);
|
|
23
|
-
wrapper.hidden = available.length === 0;
|
|
24
|
-
return available.length;
|
|
25
|
-
}
|
|
26
|
-
function render() {
|
|
27
|
-
const count = renderOne(audio, audioLabel, "audio", false) + renderOne(text, textLabel, "text", true);
|
|
28
|
-
root.hidden = count === 0;
|
|
29
|
-
}
|
|
30
|
-
audio.addEventListener("change", () => {
|
|
31
|
-
tracks.select(audio.value);
|
|
32
|
-
});
|
|
33
|
-
text.addEventListener("change", () => {
|
|
34
|
-
if (text.value === OFF) tracks.deselect("text");
|
|
35
|
-
else tracks.select(text.value);
|
|
36
|
-
});
|
|
37
|
-
const offs = [engine.on("tracks:changed", render), engine.on("tracks:selected", render)];
|
|
38
|
-
render();
|
|
39
|
-
return {
|
|
40
|
-
root,
|
|
41
|
-
dispose() {
|
|
42
|
-
for (const off of offs) off();
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
};
|
|
46
|
-
//#endregion
|
|
47
|
-
export { tracksPanel };
|
package/dist/panels/drm.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The DRM indicator over `engine.drm`. Present only when the EME stages are
|
|
3
|
-
* composed. It shows the key system in use and nothing else: sessions and key
|
|
4
|
-
* statuses are diagnostics, and the element is not a diagnostics surface.
|
|
5
|
-
*/
|
|
6
|
-
import type { PanelFactory } from './panel.js';
|
|
7
|
-
export declare const drmPanel: PanelFactory;
|
|
8
|
-
//# sourceMappingURL=drm.d.ts.map
|
package/dist/panels/drm.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"drm.d.ts","sourceRoot":"","sources":["../../src/panels/drm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAS,YAAY,EAAE,MAAM,YAAY,CAAC;AAEtD,eAAO,MAAM,QAAQ,EAAE,YA6BtB,CAAC"}
|
package/dist/panels/drm.js
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The DRM indicator over `engine.drm`. Present only when the EME stages are
|
|
3
|
-
* composed. It shows the key system in use and nothing else: sessions and key
|
|
4
|
-
* statuses are diagnostics, and the element is not a diagnostics surface.
|
|
5
|
-
*/
|
|
6
|
-
import { el } from '../dom.js';
|
|
7
|
-
import { namespaces } from '../namespaces.js';
|
|
8
|
-
export const drmPanel = (session) => {
|
|
9
|
-
const engine = session.engine;
|
|
10
|
-
if (engine === null)
|
|
11
|
-
return null;
|
|
12
|
-
const found = namespaces(engine).drm;
|
|
13
|
-
if (found === undefined)
|
|
14
|
-
return null;
|
|
15
|
-
const drm = found;
|
|
16
|
-
const root = el('div', 'panel drm');
|
|
17
|
-
root.append(el('span', 'text drm-text', 'DRM'));
|
|
18
|
-
const keySystem = el('span', 'value drm-key-system');
|
|
19
|
-
root.append(keySystem);
|
|
20
|
-
function render() {
|
|
21
|
-
const name = drm.keySystem;
|
|
22
|
-
keySystem.textContent = name ?? '';
|
|
23
|
-
// Nothing to show until a key session opens, and an empty indicator is
|
|
24
|
-
// worse than none.
|
|
25
|
-
root.hidden = name === null;
|
|
26
|
-
}
|
|
27
|
-
const off = engine.on('drm:keysystem', render);
|
|
28
|
-
render();
|
|
29
|
-
return {
|
|
30
|
-
root,
|
|
31
|
-
dispose() {
|
|
32
|
-
off();
|
|
33
|
-
},
|
|
34
|
-
};
|
|
35
|
-
};
|
|
36
|
-
//# sourceMappingURL=drm.js.map
|
package/dist/panels/drm.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"drm.js","sourceRoot":"","sources":["../../src/panels/drm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,MAAM,CAAC,MAAM,QAAQ,GAAiB,CAAC,OAAO,EAAgB,EAAE;IAC9D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;IACrC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,GAAG,GAAW,KAAK,CAAC;IAE1B,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,EAAE,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEvB,SAAS,MAAM;QACb,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC;QAC3B,SAAS,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QACnC,uEAAuE;QACvE,mBAAmB;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9B,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,EAAE,CAAC;IAET,OAAO;QACL,IAAI;QACJ,OAAO;YACL,GAAG,EAAE,CAAC;QACR,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/panels/error.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The error surface. It is not a panel: it outlives a session, because the
|
|
3
|
-
* core reports "no handler claimed this source" when there is no session to
|
|
4
|
-
* hang it on. It stays hidden until a fatal error arrives.
|
|
5
|
-
*/
|
|
6
|
-
import type { PlayerError } from '@mattebox/player-core';
|
|
7
|
-
export interface ErrorSurface {
|
|
8
|
-
readonly root: HTMLElement;
|
|
9
|
-
show(error: PlayerError): void;
|
|
10
|
-
clear(): void;
|
|
11
|
-
}
|
|
12
|
-
export declare function errorSurface(retry: () => void): ErrorSurface;
|
|
13
|
-
//# sourceMappingURL=error.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/panels/error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;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"}
|
package/dist/panels/error.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/panels/error.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAQ/B,MAAM,UAAU,YAAY,CAAC,KAAiB;IAC5C,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACtC,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/panels/live.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../src/panels/live.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAS,YAAY,EAAE,MAAM,YAAY,CAAC;AAEtD,eAAO,MAAM,SAAS,EAAE,YA8CvB,CAAC"}
|
package/dist/panels/live.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The live badge over `engine.live`. Present only when a live stage is
|
|
3
|
-
* composed, so the factory answers null for VOD-only engines and for native.
|
|
4
|
-
*
|
|
5
|
-
* Latency has no event; it moves with the playhead. The video's `timeupdate`
|
|
6
|
-
* is the clock the browser already runs, so the badge reads on that.
|
|
7
|
-
*/
|
|
8
|
-
import { el, state } from '../dom.js';
|
|
9
|
-
import { namespaces } from '../namespaces.js';
|
|
10
|
-
export const livePanel = (session, video) => {
|
|
11
|
-
const engine = session.engine;
|
|
12
|
-
if (engine === null)
|
|
13
|
-
return null;
|
|
14
|
-
const found = namespaces(engine).live;
|
|
15
|
-
if (found === undefined)
|
|
16
|
-
return null;
|
|
17
|
-
// Annotated, not narrowed: a hoisted function declaration below reads it.
|
|
18
|
-
const live = found;
|
|
19
|
-
const root = el('div', 'panel live');
|
|
20
|
-
const badge = el('span', 'badge live-badge', 'Live');
|
|
21
|
-
const latency = el('span', 'value live-latency');
|
|
22
|
-
const button = el('button', 'button live-edge-button', 'Go to live');
|
|
23
|
-
button.type = 'button';
|
|
24
|
-
root.append(badge, latency, button);
|
|
25
|
-
let shown = '';
|
|
26
|
-
function tick() {
|
|
27
|
-
// The namespace is present whenever a live stage was composed, which says
|
|
28
|
-
// nothing about the stream: `full` carries both live adapters, so a VOD
|
|
29
|
-
// presentation has `engine.live` too. A window that never opened leaves
|
|
30
|
-
// `edge` null, and that is what makes a stream live.
|
|
31
|
-
root.hidden = live.edge === null;
|
|
32
|
-
const atEdge = live.atEdge;
|
|
33
|
-
// State rides the part name: `::part()` takes no attribute selector, so
|
|
34
|
-
// `::part(at-edge)` is the only way a page can style the edge state.
|
|
35
|
-
state(root, 'panel live', { 'at-edge': atEdge });
|
|
36
|
-
button.disabled = atEdge;
|
|
37
|
-
const seconds = live.latency;
|
|
38
|
-
const text = seconds === null ? '' : `${seconds.toFixed(1)}s behind`;
|
|
39
|
-
if (text === shown)
|
|
40
|
-
return;
|
|
41
|
-
shown = text;
|
|
42
|
-
latency.textContent = text;
|
|
43
|
-
}
|
|
44
|
-
button.addEventListener('click', () => {
|
|
45
|
-
live.seekToEdge();
|
|
46
|
-
});
|
|
47
|
-
video.addEventListener('timeupdate', tick);
|
|
48
|
-
tick();
|
|
49
|
-
return {
|
|
50
|
-
root,
|
|
51
|
-
dispose() {
|
|
52
|
-
video.removeEventListener('timeupdate', tick);
|
|
53
|
-
},
|
|
54
|
-
};
|
|
55
|
-
};
|
|
56
|
-
//# sourceMappingURL=live.js.map
|
package/dist/panels/live.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"live.js","sourceRoot":"","sources":["../../src/panels/live.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,MAAM,CAAC,MAAM,SAAS,GAAiB,CAAC,OAAO,EAAE,KAAK,EAAgB,EAAE;IACtE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;IACtC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,0EAA0E;IAC1E,MAAM,IAAI,GAAY,KAAK,CAAC;IAE5B,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,EAAE,yBAAyB,EAAE,YAAY,CAAC,CAAC;IACrE,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;IACvB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAEpC,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,SAAS,IAAI;QACX,0EAA0E;QAC1E,wEAAwE;QACxE,wEAAwE;QACxE,qDAAqD;QACrD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,wEAAwE;QACxE,qEAAqE;QACrE,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,IAAI,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;QACrE,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO;QAC3B,KAAK,GAAG,IAAI,CAAC;QACb,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC3C,IAAI,EAAE,CAAC;IAEP,OAAO;QACL,IAAI;QACJ,OAAO;YACL,KAAK,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/panels/panel.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* What a panel is. A panel reads one engine namespace, subscribes to what it
|
|
3
|
-
* needs, and hands back a root and a teardown. It renders nothing for a
|
|
4
|
-
* native session, and nothing for an engine whose stage was not composed:
|
|
5
|
-
* the factory answers null and the element never inserts it.
|
|
6
|
-
*/
|
|
7
|
-
import type { Session } from '@mattebox/player-core';
|
|
8
|
-
export interface Panel {
|
|
9
|
-
readonly root: HTMLElement;
|
|
10
|
-
dispose(): void;
|
|
11
|
-
}
|
|
12
|
-
export type PanelFactory = (session: Session, video: HTMLVideoElement) => Panel | null;
|
|
13
|
-
//# sourceMappingURL=panel.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/panels/panel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,KAAK,KAAK,GAAG,IAAI,CAAC"}
|
package/dist/panels/panel.js
DELETED
package/dist/panels/panel.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"panel.js","sourceRoot":"","sources":["../../src/panels/panel.ts"],"names":[],"mappings":""}
|
package/dist/panels/quality.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"quality.d.ts","sourceRoot":"","sources":["../../src/panels/quality.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAS,YAAY,EAAE,MAAM,YAAY,CAAC;AAUtD,eAAO,MAAM,YAAY,EAAE,YAiD1B,CAAC"}
|
package/dist/panels/quality.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { el, fill, menu } from '../dom.js';
|
|
2
|
-
const AUTO = 'auto';
|
|
3
|
-
/** A rendition's height when the manifest declared one, its bitrate otherwise. */
|
|
4
|
-
function label(rendition) {
|
|
5
|
-
if (rendition.height !== undefined)
|
|
6
|
-
return `${rendition.height}p`;
|
|
7
|
-
return `${Math.round(rendition.bitrate / 1000)} kbps`;
|
|
8
|
-
}
|
|
9
|
-
export const qualityPanel = (session, video) => {
|
|
10
|
-
const engine = session.engine;
|
|
11
|
-
if (engine === null)
|
|
12
|
-
return null;
|
|
13
|
-
const quality = engine.quality;
|
|
14
|
-
const root = el('div', 'panel quality');
|
|
15
|
-
const [wrapper, select] = menu('quality', 'Quality');
|
|
16
|
-
const playing = el('span', 'value quality-playing');
|
|
17
|
-
root.append(wrapper, playing);
|
|
18
|
-
let shown = '';
|
|
19
|
-
function render() {
|
|
20
|
-
const items = [[AUTO, 'Auto']];
|
|
21
|
-
for (const rendition of quality.renditions)
|
|
22
|
-
items.push([rendition.id, label(rendition)]);
|
|
23
|
-
fill(select, items, quality.pinned ?? AUTO);
|
|
24
|
-
root.hidden = quality.renditions.length === 0;
|
|
25
|
-
}
|
|
26
|
-
function tick() {
|
|
27
|
-
const current = quality.playing === null ? '' : label(quality.playing);
|
|
28
|
-
if (current === shown)
|
|
29
|
-
return;
|
|
30
|
-
shown = current;
|
|
31
|
-
playing.textContent = current;
|
|
32
|
-
}
|
|
33
|
-
select.addEventListener('change', () => {
|
|
34
|
-
if (select.value === AUTO)
|
|
35
|
-
quality.auto();
|
|
36
|
-
else
|
|
37
|
-
quality.pin(select.value);
|
|
38
|
-
});
|
|
39
|
-
const offs = [
|
|
40
|
-
engine.on('tracks:changed', render),
|
|
41
|
-
engine.on('quality:constraints-unsatisfiable', render),
|
|
42
|
-
engine.on('quality:pin-unsatisfiable', render),
|
|
43
|
-
];
|
|
44
|
-
// No event reports the playing rendition: it is derived from currentTime
|
|
45
|
-
// against the append log, so the element reads it on the clock the video
|
|
46
|
-
// already ticks.
|
|
47
|
-
video.addEventListener('timeupdate', tick);
|
|
48
|
-
render();
|
|
49
|
-
tick();
|
|
50
|
-
return {
|
|
51
|
-
root,
|
|
52
|
-
dispose() {
|
|
53
|
-
for (const off of offs)
|
|
54
|
-
off();
|
|
55
|
-
video.removeEventListener('timeupdate', tick);
|
|
56
|
-
},
|
|
57
|
-
};
|
|
58
|
-
};
|
|
59
|
-
//# sourceMappingURL=quality.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"quality.js","sourceRoot":"","sources":["../../src/panels/quality.ts"],"names":[],"mappings":"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"}
|
package/dist/panels/tracks.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tracks.d.ts","sourceRoot":"","sources":["../../src/panels/tracks.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAS,YAAY,EAAE,MAAM,YAAY,CAAC;AAUtD,eAAO,MAAM,WAAW,EAAE,YA+CzB,CAAC"}
|
package/dist/panels/tracks.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { el, fill, menu } from '../dom.js';
|
|
2
|
-
const OFF = 'off';
|
|
3
|
-
/** The language, then the role, then the id: whichever the manifest gave. */
|
|
4
|
-
function label(track) {
|
|
5
|
-
const parts = [track.lang, track.role].filter((part) => part !== undefined);
|
|
6
|
-
return parts.length === 0 ? track.id : parts.join(' · ');
|
|
7
|
-
}
|
|
8
|
-
export const tracksPanel = (session) => {
|
|
9
|
-
const engine = session.engine;
|
|
10
|
-
if (engine === null)
|
|
11
|
-
return null;
|
|
12
|
-
const tracks = engine.tracks;
|
|
13
|
-
const root = el('div', 'panel tracks');
|
|
14
|
-
const [audioLabel, audio] = menu('audio', 'Audio');
|
|
15
|
-
const [textLabel, text] = menu('text', 'Subtitles');
|
|
16
|
-
root.append(audioLabel, textLabel);
|
|
17
|
-
function renderOne(select, wrapper, contentType, off) {
|
|
18
|
-
const available = tracks.available.filter((track) => track.contentType === contentType);
|
|
19
|
-
const items = off ? [[OFF, 'Off']] : [];
|
|
20
|
-
for (const track of available)
|
|
21
|
-
items.push([track.id, label(track)]);
|
|
22
|
-
fill(select, items, tracks.active(contentType)?.id ?? OFF);
|
|
23
|
-
wrapper.hidden = available.length === 0;
|
|
24
|
-
return available.length;
|
|
25
|
-
}
|
|
26
|
-
function render() {
|
|
27
|
-
const count = renderOne(audio, audioLabel, 'audio', false) + renderOne(text, textLabel, 'text', true);
|
|
28
|
-
root.hidden = count === 0;
|
|
29
|
-
}
|
|
30
|
-
audio.addEventListener('change', () => {
|
|
31
|
-
tracks.select(audio.value);
|
|
32
|
-
});
|
|
33
|
-
text.addEventListener('change', () => {
|
|
34
|
-
if (text.value === OFF)
|
|
35
|
-
tracks.deselect('text');
|
|
36
|
-
else
|
|
37
|
-
tracks.select(text.value);
|
|
38
|
-
});
|
|
39
|
-
const offs = [engine.on('tracks:changed', render), engine.on('tracks:selected', render)];
|
|
40
|
-
render();
|
|
41
|
-
return {
|
|
42
|
-
root,
|
|
43
|
-
dispose() {
|
|
44
|
-
for (const off of offs)
|
|
45
|
-
off();
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
};
|
|
49
|
-
//# sourceMappingURL=tracks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tracks.js","sourceRoot":"","sources":["../../src/panels/tracks.ts"],"names":[],"mappings":"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"}
|