@mattebox/player 0.1.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/LICENSE +21 -0
- package/NOTICE +24 -0
- package/README.md +22 -0
- package/dist/cdn/mattebox-player.min.js +340 -0
- package/dist/controls/bar.d.ts +56 -0
- package/dist/controls/bar.d.ts.map +1 -0
- package/dist/controls/bar.js +245 -0
- package/dist/controls/bar.js.map +1 -0
- package/dist/controls/buttons.d.ts +13 -0
- package/dist/controls/buttons.d.ts.map +1 -0
- package/dist/controls/buttons.js +157 -0
- package/dist/controls/buttons.js.map +1 -0
- package/dist/controls/control.d.ts +12 -0
- package/dist/controls/control.d.ts.map +1 -0
- package/dist/controls/control.js +2 -0
- package/dist/controls/control.js.map +1 -0
- package/dist/controls/cues.d.ts +33 -0
- package/dist/controls/cues.d.ts.map +1 -0
- package/dist/controls/cues.js +170 -0
- package/dist/controls/cues.js.map +1 -0
- package/dist/controls/fullscreen.d.ts +21 -0
- package/dist/controls/fullscreen.d.ts.map +1 -0
- package/dist/controls/fullscreen.js +78 -0
- package/dist/controls/fullscreen.js.map +1 -0
- package/dist/controls/icons.d.ts +35 -0
- package/dist/controls/icons.d.ts.map +1 -0
- package/dist/controls/icons.js +76 -0
- package/dist/controls/icons.js.map +1 -0
- package/dist/controls/keys.d.ts +26 -0
- package/dist/controls/keys.d.ts.map +1 -0
- package/dist/controls/keys.js +66 -0
- package/dist/controls/keys.js.map +1 -0
- package/dist/controls/live.d.ts +10 -0
- package/dist/controls/live.d.ts.map +1 -0
- package/dist/controls/live.js +59 -0
- package/dist/controls/live.js.map +1 -0
- package/dist/controls/menu.d.ts +34 -0
- package/dist/controls/menu.d.ts.map +1 -0
- package/dist/controls/menu.js +225 -0
- package/dist/controls/menu.js.map +1 -0
- package/dist/controls/menus.d.ts +43 -0
- package/dist/controls/menus.d.ts.map +1 -0
- package/dist/controls/menus.js +262 -0
- package/dist/controls/menus.js.map +1 -0
- package/dist/controls/options.d.ts +44 -0
- package/dist/controls/options.d.ts.map +1 -0
- package/dist/controls/options.js +54 -0
- package/dist/controls/options.js.map +1 -0
- package/dist/controls/pip.d.ts +16 -0
- package/dist/controls/pip.d.ts.map +1 -0
- package/dist/controls/pip.js +53 -0
- package/dist/controls/pip.js.map +1 -0
- package/dist/controls/ranges.d.ts +24 -0
- package/dist/controls/ranges.d.ts.map +1 -0
- package/dist/controls/ranges.js +48 -0
- package/dist/controls/ranges.js.map +1 -0
- package/dist/controls/screens.d.ts +22 -0
- package/dist/controls/screens.d.ts.map +1 -0
- package/dist/controls/screens.js +69 -0
- package/dist/controls/screens.js.map +1 -0
- package/dist/controls/seek.d.ts +52 -0
- package/dist/controls/seek.d.ts.map +1 -0
- package/dist/controls/seek.js +215 -0
- package/dist/controls/seek.js.map +1 -0
- package/dist/controls/slider.d.ts +28 -0
- package/dist/controls/slider.d.ts.map +1 -0
- package/dist/controls/slider.js +145 -0
- package/dist/controls/slider.js.map +1 -0
- package/dist/controls/speed.d.ts +8 -0
- package/dist/controls/speed.d.ts.map +1 -0
- package/dist/controls/speed.js +34 -0
- package/dist/controls/speed.js.map +1 -0
- package/dist/controls/time.d.ts +8 -0
- package/dist/controls/time.d.ts.map +1 -0
- package/dist/controls/time.js +25 -0
- package/dist/controls/time.js.map +1 -0
- package/dist/controls/volume.d.ts +8 -0
- package/dist/controls/volume.d.ts.map +1 -0
- package/dist/controls/volume.js +29 -0
- package/dist/controls/volume.js.map +1 -0
- package/dist/dom.d.ts +18 -0
- package/dist/dom.d.ts.map +1 -0
- package/dist/dom.js +45 -0
- package/dist/dom.js.map +1 -0
- package/dist/element.d.ts +101 -0
- package/dist/element.d.ts.map +1 -0
- package/dist/element.js +327 -0
- package/dist/element.js.map +1 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/asyncToGenerator.js +27 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/defineProperty.js +12 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/objectSpread2.js +25 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/toPrimitive.js +14 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/toPropertyKey.js +9 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/typeof.js +11 -0
- package/dist/es2015/controls/bar.js +227 -0
- package/dist/es2015/controls/buttons.js +146 -0
- package/dist/es2015/controls/cues.js +153 -0
- package/dist/es2015/controls/fullscreen.js +54 -0
- package/dist/es2015/controls/icons.js +50 -0
- package/dist/es2015/controls/keys.js +60 -0
- package/dist/es2015/controls/live.js +60 -0
- package/dist/es2015/controls/menu.js +226 -0
- package/dist/es2015/controls/menus.js +258 -0
- package/dist/es2015/controls/options.js +46 -0
- package/dist/es2015/controls/pip.js +39 -0
- package/dist/es2015/controls/ranges.js +51 -0
- package/dist/es2015/controls/screens.js +74 -0
- package/dist/es2015/controls/seek.js +203 -0
- package/dist/es2015/controls/slider.js +136 -0
- package/dist/es2015/controls/speed.js +41 -0
- package/dist/es2015/controls/time.js +27 -0
- package/dist/es2015/controls/volume.js +30 -0
- package/dist/es2015/dom.js +43 -0
- package/dist/es2015/element.js +311 -0
- package/dist/es2015/index.js +10 -0
- package/dist/es2015/namespaces.js +7 -0
- package/dist/es2015/panels/drm.js +29 -0
- package/dist/es2015/panels/error.js +25 -0
- package/dist/es2015/panels/live.js +48 -0
- package/dist/es2015/panels/quality.js +52 -0
- package/dist/es2015/panels/tracks.js +47 -0
- package/dist/es2015/presets.js +46 -0
- package/dist/es2015/style.js +347 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/namespaces.d.ts +45 -0
- package/dist/namespaces.d.ts.map +1 -0
- package/dist/namespaces.js +5 -0
- package/dist/namespaces.js.map +1 -0
- package/dist/panels/drm.d.ts +8 -0
- package/dist/panels/drm.d.ts.map +1 -0
- package/dist/panels/drm.js +36 -0
- package/dist/panels/drm.js.map +1 -0
- package/dist/panels/error.d.ts +13 -0
- package/dist/panels/error.d.ts.map +1 -0
- package/dist/panels/error.js +23 -0
- package/dist/panels/error.js.map +1 -0
- package/dist/panels/live.d.ts +3 -0
- package/dist/panels/live.d.ts.map +1 -0
- package/dist/panels/live.js +56 -0
- package/dist/panels/live.js.map +1 -0
- package/dist/panels/panel.d.ts +13 -0
- package/dist/panels/panel.d.ts.map +1 -0
- package/dist/panels/panel.js +2 -0
- package/dist/panels/panel.js.map +1 -0
- package/dist/panels/quality.d.ts +3 -0
- package/dist/panels/quality.d.ts.map +1 -0
- package/dist/panels/quality.js +59 -0
- package/dist/panels/quality.js.map +1 -0
- package/dist/panels/tracks.d.ts +3 -0
- package/dist/panels/tracks.d.ts.map +1 -0
- package/dist/panels/tracks.js +49 -0
- package/dist/panels/tracks.js.map +1 -0
- package/dist/presets.d.ts +23 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +36 -0
- package/dist/presets.js.map +1 -0
- package/dist/style.d.ts +13 -0
- package/dist/style.d.ts.map +1 -0
- package/dist/style.js +345 -0
- package/dist/style.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/** How the sizes scale the browser's own cue size; the lift counts lines by it. */
|
|
2
|
+
export const SCALES = {
|
|
3
|
+
small: 0.75,
|
|
4
|
+
medium: 1,
|
|
5
|
+
large: 1.5,
|
|
6
|
+
xlarge: 2,
|
|
7
|
+
};
|
|
8
|
+
const BACKDROP = 'video::-webkit-media-text-track-display-backdrop';
|
|
9
|
+
/**
|
|
10
|
+
* The sheet in the document. `mattebox-player` is the element's tag. The
|
|
11
|
+
* background goes on `::cue` and on the backdrop pseudo-element Chromium
|
|
12
|
+
* and WebKit have, both: which of the two paints it differs by browser and
|
|
13
|
+
* version, and a selector a browser does not know only voids its own rule.
|
|
14
|
+
*/
|
|
15
|
+
const CUE_RULES = `mattebox-player[subtitle-size="small"] > video::cue { font-size: 75%; }
|
|
16
|
+
mattebox-player[subtitle-size="large"] > video::cue { font-size: 150%; }
|
|
17
|
+
mattebox-player[subtitle-size="xlarge"] > video::cue { font-size: 200%; }
|
|
18
|
+
mattebox-player[subtitle-background="none"] > video::cue { background-color: transparent; }
|
|
19
|
+
mattebox-player[subtitle-background="solid"] > video::cue { background-color: #000; }
|
|
20
|
+
mattebox-player[subtitle-background="none"] > ${BACKDROP} { background-color: transparent; }
|
|
21
|
+
mattebox-player[subtitle-background="solid"] > ${BACKDROP} { background-color: #000; }`;
|
|
22
|
+
const MARK = 'data-mattebox-cue';
|
|
23
|
+
/** The browser's cue size against the video's height, per WebVTT, and its line against the size. */
|
|
24
|
+
const CUE_SIZE = 0.05;
|
|
25
|
+
const LINE_HEIGHT = 1.2;
|
|
26
|
+
/** What a cue box spans of the video's width by default, so wrapping is measured against it. */
|
|
27
|
+
const CUE_WIDTH = 0.96;
|
|
28
|
+
/** Pixels of air between the bar and the cue above it, before rounding up to a line. */
|
|
29
|
+
const AIR = 6;
|
|
30
|
+
/** Puts the cue rules in the document, once. */
|
|
31
|
+
export function cueStyle() {
|
|
32
|
+
if (document.head.querySelector(`style[${MARK}]`) !== null)
|
|
33
|
+
return;
|
|
34
|
+
const style = document.createElement('style');
|
|
35
|
+
style.setAttribute(MARK, '');
|
|
36
|
+
style.textContent = CUE_RULES;
|
|
37
|
+
document.head.append(style);
|
|
38
|
+
}
|
|
39
|
+
export function cueLift(video, bar, host) {
|
|
40
|
+
/** The cues moved, with what they were, so they and only they are put back. */
|
|
41
|
+
const lifted = new Map();
|
|
42
|
+
let on = false;
|
|
43
|
+
let canvas;
|
|
44
|
+
function showing() {
|
|
45
|
+
const out = [];
|
|
46
|
+
for (const track of video.textTracks)
|
|
47
|
+
if (track.mode === 'showing')
|
|
48
|
+
out.push(track);
|
|
49
|
+
return out;
|
|
50
|
+
}
|
|
51
|
+
/** The browser's cue font size, in pixels, from the video's height and the host's scale. */
|
|
52
|
+
function fontSize(height) {
|
|
53
|
+
const scale = SCALES[host.getAttribute('subtitle-size') ?? ''] ?? 1;
|
|
54
|
+
return height * CUE_SIZE * scale;
|
|
55
|
+
}
|
|
56
|
+
/** Measures text the way the browser draws cues, to count the lines a cue wraps into. */
|
|
57
|
+
function measure() {
|
|
58
|
+
if (canvas === undefined)
|
|
59
|
+
canvas = document.createElement('canvas').getContext('2d');
|
|
60
|
+
return canvas;
|
|
61
|
+
}
|
|
62
|
+
/** The lines a cue takes: its own, each wrapped at the cue box's width. */
|
|
63
|
+
function lines(cue, font, width) {
|
|
64
|
+
const context = measure();
|
|
65
|
+
let total = 0;
|
|
66
|
+
for (const line of cue.text.replace(/<[^>]+>/g, '').split('\n')) {
|
|
67
|
+
if (context === null) {
|
|
68
|
+
total += 1;
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
context.font = `${font}px sans-serif`;
|
|
72
|
+
total += Math.max(1, Math.ceil(context.measureText(line).width / (width * CUE_WIDTH)));
|
|
73
|
+
}
|
|
74
|
+
return total;
|
|
75
|
+
}
|
|
76
|
+
/** The bar's height from its first row, not its gradient run-in, to its bottom, which sits on the video's. */
|
|
77
|
+
function covered() {
|
|
78
|
+
const whole = bar.getBoundingClientRect();
|
|
79
|
+
const first = bar.firstElementChild?.getBoundingClientRect() ?? whole;
|
|
80
|
+
return whole.bottom - first.top;
|
|
81
|
+
}
|
|
82
|
+
function apply() {
|
|
83
|
+
const box = video.getBoundingClientRect();
|
|
84
|
+
const height = box.height;
|
|
85
|
+
const pixels = covered();
|
|
86
|
+
const lift = on && height > 0 && pixels > 0 && pixels < height;
|
|
87
|
+
const font = fontSize(height);
|
|
88
|
+
const unit = font * LINE_HEIGHT;
|
|
89
|
+
// The lines the bar covers, with a little air, rounded up to whole lines.
|
|
90
|
+
const base = Math.ceil((pixels + AIR) / unit);
|
|
91
|
+
for (const track of showing()) {
|
|
92
|
+
// Earliest first, the order the browser stacks them in, so the first
|
|
93
|
+
// sits lowest and the rest climb.
|
|
94
|
+
const active = [...(track.activeCues ?? [])]
|
|
95
|
+
.filter((cue) => cue instanceof VTTCue)
|
|
96
|
+
.sort((a, b) => a.startTime - b.startTime);
|
|
97
|
+
let previous = null;
|
|
98
|
+
let changed = false;
|
|
99
|
+
for (const cue of active) {
|
|
100
|
+
const was = lifted.get(cue);
|
|
101
|
+
if (!lift) {
|
|
102
|
+
if (was === undefined)
|
|
103
|
+
continue;
|
|
104
|
+
cue.line = was.line;
|
|
105
|
+
cue.snapToLines = was.snapToLines;
|
|
106
|
+
cue.lineAlign = was.lineAlign;
|
|
107
|
+
lifted.delete(cue);
|
|
108
|
+
changed = true;
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
// The author's own placement is the author's.
|
|
112
|
+
if (was === undefined && cue.line !== 'auto')
|
|
113
|
+
continue;
|
|
114
|
+
if (was === undefined) {
|
|
115
|
+
lifted.set(cue, {
|
|
116
|
+
line: cue.line,
|
|
117
|
+
snapToLines: cue.snapToLines,
|
|
118
|
+
lineAlign: cue.lineAlign,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
// A negative line count, which every browser wraps at the video's
|
|
122
|
+
// width, unlike a percentage. Chromium anchors the box's top on it
|
|
123
|
+
// and Gecko its bottom, so the count clears the bar and the cue
|
|
124
|
+
// below under both readings, with a little air to spare in one.
|
|
125
|
+
const own = lines(cue, font, box.width);
|
|
126
|
+
const line = previous === null ? base + own : previous.line + Math.max(own, previous.height);
|
|
127
|
+
if (cue.line !== -line || !cue.snapToLines)
|
|
128
|
+
changed = true;
|
|
129
|
+
cue.snapToLines = true;
|
|
130
|
+
cue.line = -line;
|
|
131
|
+
previous = { line, height: own };
|
|
132
|
+
}
|
|
133
|
+
// Chromium lays a changed line out again only when the track's display
|
|
134
|
+
// is rebuilt, which neither time nor a seek does for a cue already
|
|
135
|
+
// showing; the mode flipped off and on in one task rebuilds it with no
|
|
136
|
+
// paint in between. Only on a change, so the change event this fires
|
|
137
|
+
// finds nothing to do and the loop ends there.
|
|
138
|
+
if (changed) {
|
|
139
|
+
track.mode = 'hidden';
|
|
140
|
+
track.mode = 'showing';
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function watch() {
|
|
145
|
+
for (const track of video.textTracks) {
|
|
146
|
+
track.removeEventListener('cuechange', apply);
|
|
147
|
+
track.addEventListener('cuechange', apply);
|
|
148
|
+
}
|
|
149
|
+
apply();
|
|
150
|
+
}
|
|
151
|
+
video.textTracks.addEventListener('change', watch);
|
|
152
|
+
video.textTracks.addEventListener('addtrack', watch);
|
|
153
|
+
watch();
|
|
154
|
+
return {
|
|
155
|
+
root: bar,
|
|
156
|
+
lifted(next) {
|
|
157
|
+
on = next;
|
|
158
|
+
apply();
|
|
159
|
+
},
|
|
160
|
+
dispose() {
|
|
161
|
+
on = false;
|
|
162
|
+
apply();
|
|
163
|
+
video.textTracks.removeEventListener('change', watch);
|
|
164
|
+
video.textTracks.removeEventListener('addtrack', watch);
|
|
165
|
+
for (const track of video.textTracks)
|
|
166
|
+
track.removeEventListener('cuechange', apply);
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=cues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cues.js","sourceRoot":"","sources":["../../src/controls/cues.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fullscreen on the stage, which is the video and the bar and nothing
|
|
3
|
+
* else, through whichever API the browser has. Three shapes, tried in
|
|
4
|
+
* order: the standard one; the `webkit` prefix on elements, which Safari
|
|
5
|
+
* kept until 16.4; and the iPhone, which has fullscreen on the video alone.
|
|
6
|
+
* None of them means no button.
|
|
7
|
+
*
|
|
8
|
+
* The stage is in shadow DOM, so `document.fullscreenElement` reports the
|
|
9
|
+
* host, retargeted; "active" is whether the fullscreen element is the host
|
|
10
|
+
* or inside it.
|
|
11
|
+
*/
|
|
12
|
+
export interface Fullscreen {
|
|
13
|
+
/** Whether any API exists. Without one the button is hidden. */
|
|
14
|
+
readonly supported: boolean;
|
|
15
|
+
active(): boolean;
|
|
16
|
+
toggle(): void;
|
|
17
|
+
/** Runs `fn` on every change. Returns the unsubscribe. */
|
|
18
|
+
watch(fn: () => void): () => void;
|
|
19
|
+
}
|
|
20
|
+
export declare function fullscreen(host: HTMLElement, stage: HTMLElement, video: HTMLVideoElement): Fullscreen;
|
|
21
|
+
//# sourceMappingURL=fullscreen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fullscreen.d.ts","sourceRoot":"","sources":["../../src/controls/fullscreen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAiBH,MAAM,WAAW,UAAU;IACzB,gEAAgE;IAChE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,MAAM,IAAI,OAAO,CAAC;IAClB,MAAM,IAAI,IAAI,CAAC;IACf,0DAA0D;IAC1D,KAAK,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CACnC;AAWD,wBAAgB,UAAU,CACxB,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,gBAAgB,GACtB,UAAU,CAwDZ"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fullscreen on the stage, which is the video and the bar and nothing
|
|
3
|
+
* else, through whichever API the browser has. Three shapes, tried in
|
|
4
|
+
* order: the standard one; the `webkit` prefix on elements, which Safari
|
|
5
|
+
* kept until 16.4; and the iPhone, which has fullscreen on the video alone.
|
|
6
|
+
* None of them means no button.
|
|
7
|
+
*
|
|
8
|
+
* The stage is in shadow DOM, so `document.fullscreenElement` reports the
|
|
9
|
+
* host, retargeted; "active" is whether the fullscreen element is the host
|
|
10
|
+
* or inside it.
|
|
11
|
+
*/
|
|
12
|
+
function watching(target, names) {
|
|
13
|
+
return (fn) => {
|
|
14
|
+
for (const name of names)
|
|
15
|
+
target.addEventListener(name, fn);
|
|
16
|
+
return () => {
|
|
17
|
+
for (const name of names)
|
|
18
|
+
target.removeEventListener(name, fn);
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function fullscreen(host, stage, video) {
|
|
23
|
+
const doc = document;
|
|
24
|
+
const prefixed = stage;
|
|
25
|
+
const phone = video;
|
|
26
|
+
/** Whether `node` is the host or inside it, which is what a retargeted fullscreen element is. */
|
|
27
|
+
function within(node) {
|
|
28
|
+
return node !== null && node !== undefined && host.contains(node);
|
|
29
|
+
}
|
|
30
|
+
if (typeof stage.requestFullscreen === 'function') {
|
|
31
|
+
return {
|
|
32
|
+
supported: true,
|
|
33
|
+
active: () => within(document.fullscreenElement),
|
|
34
|
+
toggle() {
|
|
35
|
+
// Both return promises that reject outside a user gesture or where
|
|
36
|
+
// the page forbids it; there is nothing to do with that but drop it.
|
|
37
|
+
const request = within(document.fullscreenElement)
|
|
38
|
+
? document.exitFullscreen()
|
|
39
|
+
: stage.requestFullscreen();
|
|
40
|
+
request.catch(() => undefined);
|
|
41
|
+
},
|
|
42
|
+
watch: watching(document, ['fullscreenchange']),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
if (typeof prefixed.webkitRequestFullscreen === 'function') {
|
|
46
|
+
return {
|
|
47
|
+
supported: true,
|
|
48
|
+
active: () => within(doc.webkitFullscreenElement),
|
|
49
|
+
toggle() {
|
|
50
|
+
if (within(doc.webkitFullscreenElement))
|
|
51
|
+
doc.webkitExitFullscreen?.();
|
|
52
|
+
else
|
|
53
|
+
prefixed.webkitRequestFullscreen?.();
|
|
54
|
+
},
|
|
55
|
+
watch: watching(document, ['webkitfullscreenchange']),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
if (typeof phone.webkitEnterFullscreen === 'function') {
|
|
59
|
+
return {
|
|
60
|
+
supported: true,
|
|
61
|
+
active: () => phone.webkitDisplayingFullscreen === true,
|
|
62
|
+
toggle() {
|
|
63
|
+
if (phone.webkitDisplayingFullscreen === true)
|
|
64
|
+
phone.webkitExitFullscreen?.();
|
|
65
|
+
else
|
|
66
|
+
phone.webkitEnterFullscreen?.();
|
|
67
|
+
},
|
|
68
|
+
watch: watching(video, ['webkitbeginfullscreen', 'webkitendfullscreen']),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
supported: false,
|
|
73
|
+
active: () => false,
|
|
74
|
+
toggle() { },
|
|
75
|
+
watch: () => () => { },
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=fullscreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fullscreen.js","sourceRoot":"","sources":["../../src/controls/fullscreen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA0BH,SAAS,QAAQ,CAAC,MAAmB,EAAE,KAAwB;IAC7D,OAAO,CAAC,EAAc,EAAgB,EAAE;QACtC,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5D,OAAO,GAAG,EAAE;YACV,KAAK,MAAM,IAAI,IAAI,KAAK;gBAAE,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACjE,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,IAAiB,EACjB,KAAkB,EAClB,KAAuB;IAEvB,MAAM,GAAG,GAAG,QAAuC,CAAC;IACpD,MAAM,QAAQ,GAAG,KAAsC,CAAC;IACxD,MAAM,KAAK,GAAG,KAAyC,CAAC;IAExD,iGAAiG;IACjG,SAAS,MAAM,CAAC,IAAgC;QAC9C,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;QAClD,OAAO;YACL,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAChD,MAAM;gBACJ,mEAAmE;gBACnE,qEAAqE;gBACrE,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC;oBAChD,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE;oBAC3B,CAAC,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBAC9B,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC;YACD,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,kBAAkB,CAAC,CAAC;SAChD,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,QAAQ,CAAC,uBAAuB,KAAK,UAAU,EAAE,CAAC;QAC3D,OAAO;YACL,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC;YACjD,MAAM;gBACJ,IAAI,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC;oBAAE,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC;;oBACjE,QAAQ,CAAC,uBAAuB,EAAE,EAAE,CAAC;YAC5C,CAAC;YACD,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,wBAAwB,CAAC,CAAC;SACtD,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,qBAAqB,KAAK,UAAU,EAAE,CAAC;QACtD,OAAO;YACL,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,0BAA0B,KAAK,IAAI;YACvD,MAAM;gBACJ,IAAI,KAAK,CAAC,0BAA0B,KAAK,IAAI;oBAAE,KAAK,CAAC,oBAAoB,EAAE,EAAE,CAAC;;oBACzE,KAAK,CAAC,qBAAqB,EAAE,EAAE,CAAC;YACvC,CAAC;YACD,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,uBAAuB,EAAE,qBAAqB,CAAC,CAAC;SACzE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK;QACnB,MAAM,KAAU,CAAC;QACjB,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC;KACtB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The glyphs, copied from Vidstack's media-icons 0.10.0
|
|
3
|
+
* (https://github.com/vidstack/media-icons): filled paths on a 32-unit
|
|
4
|
+
* viewBox, drawn for a control bar, one visual weight across the set.
|
|
5
|
+
* Copied, not depended on. The notice below is the license's one condition,
|
|
6
|
+
* and packages/player/NOTICE repeats it for the published tarball.
|
|
7
|
+
*
|
|
8
|
+
* MIT License
|
|
9
|
+
*
|
|
10
|
+
* Copyright (c) 2023 Rahim Alwer
|
|
11
|
+
*
|
|
12
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
13
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
14
|
+
* in the Software without restriction, including without limitation the rights
|
|
15
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
16
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
17
|
+
* furnished to do so, subject to the following conditions:
|
|
18
|
+
*
|
|
19
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
20
|
+
* copies or substantial portions of the Software.
|
|
21
|
+
*
|
|
22
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
23
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
24
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
25
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
26
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
27
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
28
|
+
* SOFTWARE.
|
|
29
|
+
*/
|
|
30
|
+
export type IconName = 'play' | 'pause' | 'replay' | 'mute' | 'volume-low' | 'volume-high' | 'fullscreen' | 'fullscreen-exit' | 'settings' | 'music' | 'closed-captions' | 'closed-captions-on' | 'lock-closed' | 'seek-backward' | 'seek-forward' | 'seek-backward-10' | 'seek-forward-10' | 'seek-backward-30' | 'seek-forward-30' | 'playback-speed' | 'picture-in-picture' | 'picture-in-picture-exit';
|
|
31
|
+
/** A glyph, hidden from the accessibility tree: the button it sits in carries the name. */
|
|
32
|
+
export declare function icon(name: IconName): SVGSVGElement;
|
|
33
|
+
/** Swaps the glyph in place, so the part and the focus ring stay put across states. */
|
|
34
|
+
export declare function glyph(svg: SVGSVGElement, name: IconName): void;
|
|
35
|
+
//# sourceMappingURL=icons.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/controls/icons.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,MAAM,MAAM,QAAQ,GAChB,MAAM,GACN,OAAO,GACP,QAAQ,GACR,MAAM,GACN,YAAY,GACZ,aAAa,GACb,YAAY,GACZ,iBAAiB,GACjB,UAAU,GACV,OAAO,GACP,iBAAiB,GACjB,oBAAoB,GACpB,aAAa,GACb,eAAe,GACf,cAAc,GACd,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,GACjB,gBAAgB,GAChB,oBAAoB,GACpB,yBAAyB,CAAC;AAsD9B,2FAA2F;AAC3F,wBAAgB,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa,CASlD;AAED,uFAAuF;AACvF,wBAAgB,KAAK,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAG9D"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The glyphs, copied from Vidstack's media-icons 0.10.0
|
|
3
|
+
* (https://github.com/vidstack/media-icons): filled paths on a 32-unit
|
|
4
|
+
* viewBox, drawn for a control bar, one visual weight across the set.
|
|
5
|
+
* Copied, not depended on. The notice below is the license's one condition,
|
|
6
|
+
* and packages/player/NOTICE repeats it for the published tarball.
|
|
7
|
+
*
|
|
8
|
+
* MIT License
|
|
9
|
+
*
|
|
10
|
+
* Copyright (c) 2023 Rahim Alwer
|
|
11
|
+
*
|
|
12
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
13
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
14
|
+
* in the Software without restriction, including without limitation the rights
|
|
15
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
16
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
17
|
+
* furnished to do so, subject to the following conditions:
|
|
18
|
+
*
|
|
19
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
20
|
+
* copies or substantial portions of the Software.
|
|
21
|
+
*
|
|
22
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
23
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
24
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
25
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
26
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
27
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
28
|
+
* SOFTWARE.
|
|
29
|
+
*/
|
|
30
|
+
/**
|
|
31
|
+
* Each glyph's subpaths joined into one `d`. The path is drawn even-odd:
|
|
32
|
+
* the gear, the note, the captions and the lock cut holes with a nested
|
|
33
|
+
* subpath, and the rest have disjoint subpaths, where the rule is moot.
|
|
34
|
+
*/
|
|
35
|
+
const PATHS = {
|
|
36
|
+
play: 'M10.6667 6.6548C10.6667 6.10764 11.2894 5.79346 11.7295 6.11862L24.377 15.4634C24.7377 15.7298 24.7377 16.2692 24.3771 16.5357L11.7295 25.8813C11.2895 26.2065 10.6667 25.8923 10.6667 25.3451L10.6667 6.6548Z',
|
|
37
|
+
pause: 'M8.66667 6.66667C8.29848 6.66667 8 6.96514 8 7.33333V24.6667C8 25.0349 8.29848 25.3333 8.66667 25.3333H12.6667C13.0349 25.3333 13.3333 25.0349 13.3333 24.6667V7.33333C13.3333 6.96514 13.0349 6.66667 12.6667 6.66667H8.66667Z M19.3333 6.66667C18.9651 6.66667 18.6667 6.96514 18.6667 7.33333V24.6667C18.6667 25.0349 18.9651 25.3333 19.3333 25.3333H23.3333C23.7015 25.3333 24 25.0349 24 24.6667V7.33333C24 6.96514 23.7015 6.66667 23.3333 6.66667H19.3333Z',
|
|
38
|
+
replay: 'M15.6038 12.2147C16.0439 12.5399 16.6667 12.2257 16.6667 11.6786V10.1789C16.6667 10.1001 16.7351 10.0384 16.8134 10.0479C20.1116 10.4494 22.6667 13.2593 22.6667 16.6659C22.6667 20.3481 19.6817 23.3332 15.9995 23.3332C12.542 23.3332 9.69927 20.7014 9.36509 17.332C9.32875 16.9655 9.03371 16.6662 8.66548 16.6662L6.66655 16.6666C6.29841 16.6666 5.99769 16.966 6.02187 17.3334C6.36494 22.5454 10.7012 26.6667 16 26.6667C21.5228 26.6667 26 22.1895 26 16.6667C26 11.4103 21.9444 7.10112 16.7916 6.69757C16.7216 6.69209 16.6667 6.63396 16.6667 6.56372V4.98824C16.6667 4.44106 16.0439 4.12689 15.6038 4.45206L11.0765 7.79738C10.7159 8.06387 10.7159 8.60326 11.0766 8.86973L15.6038 12.2147Z',
|
|
39
|
+
mute: 'M17.5091 24.6594C17.5091 25.2066 16.8864 25.5208 16.4463 25.1956L9.44847 20.0252C9.42553 20.0083 9.39776 19.9991 9.36923 19.9991H4.66667C4.29848 19.9991 4 19.7006 4 19.3325V12.6658C4 12.2976 4.29848 11.9991 4.66667 11.9991H9.37115C9.39967 11.9991 9.42745 11.99 9.45039 11.973L16.4463 6.8036C16.8863 6.47842 17.5091 6.79259 17.5091 7.33977L17.5091 24.6594Z M28.8621 13.6422C29.1225 13.3818 29.1225 12.9597 28.8621 12.6994L27.9193 11.7566C27.659 11.4962 27.2368 11.4962 26.9765 11.7566L24.7134 14.0197C24.6613 14.0717 24.5769 14.0717 24.5248 14.0197L22.262 11.7568C22.0016 11.4964 21.5795 11.4964 21.3191 11.7568L20.3763 12.6996C20.116 12.9599 20.116 13.382 20.3763 13.6424L22.6392 15.9053C22.6913 15.9573 22.6913 16.0418 22.6392 16.0938L20.3768 18.3562C20.1165 18.6166 20.1165 19.0387 20.3768 19.299L21.3196 20.2419C21.58 20.5022 22.0021 20.5022 22.2624 20.2418L24.5248 17.9795C24.5769 17.9274 24.6613 17.9274 24.7134 17.9795L26.976 20.2421C27.2363 20.5024 27.6585 20.5024 27.9188 20.2421L28.8616 19.2992C29.122 19.0389 29.122 18.6168 28.8616 18.3564L26.599 16.0938C26.547 16.0418 26.547 15.9573 26.599 15.9053L28.8621 13.6422Z',
|
|
40
|
+
'volume-low': 'M17.5091 24.6594C17.5091 25.2066 16.8864 25.5207 16.4463 25.1956L9.44847 20.0252C9.42553 20.0083 9.39776 19.9991 9.36923 19.9991H4.66667C4.29848 19.9991 4 19.7006 4 19.3324V12.6658C4 12.2976 4.29848 11.9991 4.66667 11.9991H9.37115C9.39967 11.9991 9.42745 11.99 9.45039 11.973L16.4463 6.80358C16.8863 6.4784 17.5091 6.79258 17.5091 7.33975L17.5091 24.6594Z M22.8424 12.6667C22.8424 12.2985 22.544 12 22.1758 12H20.8424C20.4743 12 20.1758 12.2985 20.1758 12.6667V19.3333C20.1758 19.7015 20.4743 20 20.8424 20H22.1758C22.544 20 22.8424 19.7015 22.8424 19.3333V12.6667Z',
|
|
41
|
+
'volume-high': 'M17.5091 24.6595C17.5091 25.2066 16.8864 25.5208 16.4463 25.1956L9.44847 20.0252C9.42553 20.0083 9.39776 19.9992 9.36923 19.9992H4.66667C4.29848 19.9992 4 19.7007 4 19.3325V12.6658C4 12.2976 4.29848 11.9992 4.66667 11.9992H9.37115C9.39967 11.9992 9.42745 11.99 9.45039 11.9731L16.4463 6.80363C16.8863 6.47845 17.5091 6.79262 17.5091 7.3398L17.5091 24.6595Z M27.5091 9.33336C27.8773 9.33336 28.1758 9.63184 28.1758 10V22C28.1758 22.3682 27.8773 22.6667 27.5091 22.6667H26.1758C25.8076 22.6667 25.5091 22.3682 25.5091 22V10C25.5091 9.63184 25.8076 9.33336 26.1758 9.33336L27.5091 9.33336Z M22.1758 12C22.544 12 22.8424 12.2985 22.8424 12.6667V19.3334C22.8424 19.7016 22.544 20 22.1758 20H20.8424C20.4743 20 20.1758 19.7016 20.1758 19.3334V12.6667C20.1758 12.2985 20.4743 12 20.8424 12H22.1758Z',
|
|
42
|
+
fullscreen: 'M25.3299 7.26517C25.2958 6.929 25.0119 6.66666 24.6667 6.66666H19.3334C18.9652 6.66666 18.6667 6.96514 18.6667 7.33333V9.33333C18.6667 9.70152 18.9652 10 19.3334 10L21.8667 10C21.9403 10 22 10.0597 22 10.1333V12.6667C22 13.0349 22.2985 13.3333 22.6667 13.3333H24.6667C25.0349 13.3333 25.3334 13.0349 25.3334 12.6667V7.33333C25.3334 7.31032 25.3322 7.28758 25.3299 7.26517Z M22 21.8667C22 21.9403 21.9403 22 21.8667 22L19.3334 22C18.9652 22 18.6667 22.2985 18.6667 22.6667V24.6667C18.6667 25.0349 18.9652 25.3333 19.3334 25.3333L24.6667 25.3333C25.0349 25.3333 25.3334 25.0349 25.3334 24.6667V19.3333C25.3334 18.9651 25.0349 18.6667 24.6667 18.6667H22.6667C22.2985 18.6667 22 18.9651 22 19.3333V21.8667Z M12.6667 22H10.1334C10.0597 22 10 21.9403 10 21.8667V19.3333C10 18.9651 9.70154 18.6667 9.33335 18.6667H7.33335C6.96516 18.6667 6.66669 18.9651 6.66669 19.3333V24.6667C6.66669 25.0349 6.96516 25.3333 7.33335 25.3333H12.6667C13.0349 25.3333 13.3334 25.0349 13.3334 24.6667V22.6667C13.3334 22.2985 13.0349 22 12.6667 22Z M10 12.6667V10.1333C10 10.0597 10.0597 10 10.1334 10L12.6667 10C13.0349 10 13.3334 9.70152 13.3334 9.33333V7.33333C13.3334 6.96514 13.0349 6.66666 12.6667 6.66666H7.33335C6.96516 6.66666 6.66669 6.96514 6.66669 7.33333V12.6667C6.66669 13.0349 6.96516 13.3333 7.33335 13.3333H9.33335C9.70154 13.3333 10 13.0349 10 12.6667Z',
|
|
43
|
+
'fullscreen-exit': 'M19.3334 13.3333C18.9652 13.3333 18.6667 13.0349 18.6667 12.6667L18.6667 7.33333C18.6667 6.96514 18.9652 6.66666 19.3334 6.66666H21.3334C21.7015 6.66666 22 6.96514 22 7.33333V9.86666C22 9.9403 22.0597 10 22.1334 10L24.6667 10C25.0349 10 25.3334 10.2985 25.3334 10.6667V12.6667C25.3334 13.0349 25.0349 13.3333 24.6667 13.3333L19.3334 13.3333Z M13.3334 19.3333C13.3334 18.9651 13.0349 18.6667 12.6667 18.6667H7.33335C6.96516 18.6667 6.66669 18.9651 6.66669 19.3333V21.3333C6.66669 21.7015 6.96516 22 7.33335 22H9.86669C9.94032 22 10 22.0597 10 22.1333L10 24.6667C10 25.0349 10.2985 25.3333 10.6667 25.3333H12.6667C13.0349 25.3333 13.3334 25.0349 13.3334 24.6667L13.3334 19.3333Z M18.6667 24.6667C18.6667 25.0349 18.9652 25.3333 19.3334 25.3333H21.3334C21.7015 25.3333 22 25.0349 22 24.6667V22.1333C22 22.0597 22.0597 22 22.1334 22H24.6667C25.0349 22 25.3334 21.7015 25.3334 21.3333V19.3333C25.3334 18.9651 25.0349 18.6667 24.6667 18.6667L19.3334 18.6667C18.9652 18.6667 18.6667 18.9651 18.6667 19.3333L18.6667 24.6667Z M10.6667 13.3333H12.6667C13.0349 13.3333 13.3334 13.0349 13.3334 12.6667L13.3334 10.6667V7.33333C13.3334 6.96514 13.0349 6.66666 12.6667 6.66666H10.6667C10.2985 6.66666 10 6.96514 10 7.33333L10 9.86666C10 9.9403 9.94033 10 9.86669 10L7.33335 10C6.96516 10 6.66669 10.2985 6.66669 10.6667V12.6667C6.66669 13.0349 6.96516 13.3333 7.33335 13.3333L10.6667 13.3333Z',
|
|
44
|
+
settings: 'M13.5722 5.33333C13.2429 5.33333 12.9629 5.57382 12.9132 5.89938L12.4063 9.21916C12.4 9.26058 12.3746 9.29655 12.3378 9.31672C12.2387 9.37118 12.1409 9.42779 12.0444 9.48648C12.0086 9.5083 11.9646 9.51242 11.9255 9.49718L8.79572 8.27692C8.48896 8.15732 8.14083 8.27958 7.9762 8.56472L5.5491 12.7686C5.38444 13.0538 5.45271 13.4165 5.70981 13.6223L8.33308 15.7225C8.3658 15.7487 8.38422 15.7887 8.38331 15.8306C8.38209 15.8867 8.38148 15.9429 8.38148 15.9993C8.38148 16.0558 8.3821 16.1121 8.38332 16.1684C8.38423 16.2102 8.36582 16.2503 8.33313 16.2765L5.7103 18.3778C5.45334 18.5836 5.38515 18.9462 5.54978 19.2314L7.97688 23.4352C8.14155 23.7205 8.48981 23.8427 8.79661 23.723L11.926 22.5016C11.9651 22.4864 12.009 22.4905 12.0449 22.5123C12.1412 22.5709 12.2388 22.6274 12.3378 22.6818C12.3745 22.7019 12.4 22.7379 12.4063 22.7793L12.9132 26.0993C12.9629 26.4249 13.2429 26.6654 13.5722 26.6654H18.4264C18.7556 26.6654 19.0356 26.425 19.0854 26.0995L19.5933 22.7801C19.5997 22.7386 19.6252 22.7027 19.6619 22.6825C19.7614 22.6279 19.8596 22.5711 19.9564 22.5121C19.9923 22.4903 20.0362 22.4862 20.0754 22.5015L23.2035 23.7223C23.5103 23.842 23.8585 23.7198 24.0232 23.4346L26.4503 19.2307C26.6149 18.9456 26.5467 18.583 26.2898 18.3771L23.6679 16.2766C23.6352 16.2504 23.6168 16.2104 23.6177 16.1685C23.619 16.1122 23.6196 16.0558 23.6196 15.9993C23.6196 15.9429 23.619 15.8866 23.6177 15.8305C23.6168 15.7886 23.6353 15.7486 23.668 15.7224L26.2903 13.623C26.5474 13.4172 26.6156 13.0544 26.451 12.7692L24.0239 8.56537C23.8592 8.28023 23.5111 8.15797 23.2043 8.27757L20.0758 9.49734C20.0367 9.51258 19.9927 9.50846 19.9569 9.48664C19.8599 9.42762 19.7616 9.37071 19.6618 9.31596C19.6251 9.2958 19.5997 9.25984 19.5933 9.21843L19.0854 5.89915C19.0356 5.57369 18.7556 5.33333 18.4264 5.33333H13.5722ZM16.0001 20.2854C18.3672 20.2854 20.2862 18.3664 20.2862 15.9993C20.2862 13.6322 18.3672 11.7132 16.0001 11.7132C13.6329 11.7132 11.714 13.6322 11.714 15.9993C11.714 18.3664 13.6329 20.2854 16.0001 20.2854Z',
|
|
45
|
+
music: 'M26.6667 5.99998C26.6667 5.63179 26.3682 5.33331 26 5.33331H11.3333C10.9651 5.33331 10.6667 5.63179 10.6667 5.99998V17.5714C10.6667 17.6694 10.5644 17.7342 10.4741 17.6962C9.91823 17.4625 9.30754 17.3333 8.66667 17.3333C6.08934 17.3333 4 19.4226 4 22C4 24.5773 6.08934 26.6666 8.66667 26.6666C11.244 26.6666 13.3333 24.5773 13.3333 22V8.66665C13.3333 8.29846 13.6318 7.99998 14 7.99998L23.3333 7.99998C23.7015 7.99998 24 8.29846 24 8.66665V14.9048C24 15.0027 23.8978 15.0675 23.8075 15.0296C23.2516 14.7958 22.6409 14.6666 22 14.6666C19.4227 14.6666 17.3333 16.756 17.3333 19.3333C17.3333 21.9106 19.4227 24 22 24C24.5773 24 26.6667 21.9106 26.6667 19.3333V5.99998ZM22 21.3333C23.1046 21.3333 24 20.4379 24 19.3333C24 18.2287 23.1046 17.3333 22 17.3333C20.8954 17.3333 20 18.2287 20 19.3333C20 20.4379 20.8954 21.3333 22 21.3333ZM8.66667 24C9.77124 24 10.6667 23.1045 10.6667 22C10.6667 20.8954 9.77124 20 8.66667 20C7.5621 20 6.66667 20.8954 6.66667 22C6.66667 23.1045 7.5621 24 8.66667 24Z',
|
|
46
|
+
'closed-captions': 'M4.6661 6.66699C4.29791 6.66699 3.99943 6.96547 3.99943 7.33366V24.667C3.99943 25.0352 4.29791 25.3337 4.6661 25.3337H27.3328C27.701 25.3337 27.9994 25.0352 27.9994 24.667V7.33366C27.9994 6.96547 27.701 6.66699 27.3328 6.66699H4.6661ZM8.66667 21.3333C8.29848 21.3333 8 21.0349 8 20.6667V11.3333C8 10.9651 8.29848 10.6667 8.66667 10.6667H14C14.3682 10.6667 14.6667 10.9651 14.6667 11.3333V12.6667C14.6667 13.0349 14.3682 13.3333 14 13.3333H10.8C10.7264 13.3333 10.6667 13.393 10.6667 13.4667V18.5333C10.6667 18.607 10.7264 18.6667 10.8 18.6667H14C14.3682 18.6667 14.6667 18.9651 14.6667 19.3333V20.6667C14.6667 21.0349 14.3682 21.3333 14 21.3333H8.66667ZM18 21.3333C17.6318 21.3333 17.3333 21.0349 17.3333 20.6667V11.3333C17.3333 10.9651 17.6318 10.6667 18 10.6667H23.3333C23.7015 10.6667 24 10.9651 24 11.3333V12.6667C24 13.0349 23.7015 13.3333 23.3333 13.3333H20.1333C20.0597 13.3333 20 13.393 20 13.4667V18.5333C20 18.607 20.0597 18.6667 20.1333 18.6667H23.3333C23.7015 18.6667 24 18.9651 24 19.3333V20.6667C24 21.0349 23.7015 21.3333 23.3333 21.3333H18Z',
|
|
47
|
+
'closed-captions-on': 'M8 28.0003C8 27.6321 8.29848 27.3336 8.66667 27.3336H23.3333C23.7015 27.3336 24 27.6321 24 28.0003V29.3336C24 29.7018 23.7015 30.0003 23.3333 30.0003H8.66667C8.29848 30.0003 8 29.7018 8 29.3336V28.0003Z M4.66602 6.66699C4.29783 6.66699 3.99935 6.96547 3.99935 7.33366V24.667C3.99935 25.0352 4.29783 25.3337 4.66602 25.3337H27.3327C27.7009 25.3337 27.9994 25.0352 27.9994 24.667V7.33366C27.9994 6.96547 27.7009 6.66699 27.3327 6.66699H4.66602ZM8.66659 21.3333C8.2984 21.3333 7.99992 21.0349 7.99992 20.6667V11.3333C7.99992 10.9651 8.2984 10.6667 8.66659 10.6667H13.9999C14.3681 10.6667 14.6666 10.9651 14.6666 11.3333V12.6667C14.6666 13.0349 14.3681 13.3333 13.9999 13.3333H10.7999C10.7263 13.3333 10.6666 13.393 10.6666 13.4667V18.5333C10.6666 18.607 10.7263 18.6667 10.7999 18.6667H13.9999C14.3681 18.6667 14.6666 18.9651 14.6666 19.3333V20.6667C14.6666 21.0349 14.3681 21.3333 13.9999 21.3333H8.66659ZM17.9999 21.3333C17.6317 21.3333 17.3333 21.0349 17.3333 20.6667V11.3333C17.3333 10.9651 17.6317 10.6667 17.9999 10.6667H23.3333C23.7014 10.6667 23.9999 10.9651 23.9999 11.3333V12.6667C23.9999 13.0349 23.7014 13.3333 23.3333 13.3333H20.1333C20.0596 13.3333 19.9999 13.393 19.9999 13.4667V18.5333C19.9999 18.607 20.0596 18.6667 20.1333 18.6667H23.3333C23.7014 18.6667 23.9999 18.9651 23.9999 19.3333V20.6667C23.9999 21.0349 23.7014 21.3333 23.3333 21.3333H17.9999Z',
|
|
48
|
+
'lock-closed': 'M16 4C19.6372 4 22.5941 6.91273 22.6653 10.5329C22.6668 10.6065 22.7264 10.6667 22.8 10.6667H24.6667C25.0348 10.6667 25.3333 10.9651 25.3333 11.3333V26C25.3333 26.3682 25.0348 26.6667 24.6667 26.6667H7.33332C6.96513 26.6667 6.66666 26.3682 6.66666 26V11.3333C6.66666 10.9651 6.96513 10.6667 7.33332 10.6667H9.19999C9.27363 10.6667 9.33319 10.6065 9.33464 10.5329C9.40591 6.91273 12.3628 4 16 4ZM12.0022 10.5331C11.9998 10.6067 12.0597 10.6667 12.1333 10.6667H19.8667C19.9403 10.6667 20.0002 10.6067 19.9978 10.5331C19.9273 8.38578 18.1644 6.66667 16 6.66667C13.8356 6.66667 12.0726 8.38578 12.0022 10.5331ZM9.33332 14C9.33332 13.6318 9.6318 13.3333 9.99999 13.3333H22C22.3682 13.3333 22.6667 13.6318 22.6667 14V23.3333C22.6667 23.7015 22.3682 24 22 24H9.99999C9.6318 24 9.33332 23.7015 9.33332 23.3333V14Z',
|
|
49
|
+
'seek-backward': 'M15.6038 12.2148C16.0439 12.5399 16.6667 12.2257 16.6667 11.6786V10.1789C16.6667 10.1001 16.7351 10.0384 16.8134 10.0479C20.1116 10.4494 22.6667 13.2593 22.6667 16.6659C22.6667 20.3481 19.6817 23.3332 15.9995 23.3332C12.542 23.3332 9.69927 20.7015 9.36509 17.332C9.32875 16.9655 9.03371 16.6662 8.66548 16.6662L6.66655 16.6666C6.29841 16.6666 5.99769 16.966 6.02187 17.3334C6.36494 22.5454 10.7012 26.6667 16 26.6667C21.5228 26.6667 26 22.1895 26 16.6667C26 11.4103 21.9444 7.10112 16.7916 6.69758C16.7216 6.69209 16.6667 6.63396 16.6667 6.56372V4.98824C16.6667 4.44106 16.0439 4.12689 15.6038 4.45207L11.0765 7.79738C10.7159 8.06387 10.7159 8.60327 11.0766 8.86974L15.6038 12.2148Z',
|
|
50
|
+
'seek-forward': 'M16.4167 12.2148C15.9766 12.5399 15.3538 12.2257 15.3538 11.6786V10.1789C15.3538 10.1001 15.2854 10.0384 15.2072 10.0479C11.9089 10.4494 9.35384 13.2593 9.35384 16.6659C9.35384 20.3481 12.3389 23.3332 16.0211 23.3332C19.4785 23.3332 22.3212 20.7015 22.6554 17.332C22.6918 16.9655 22.9868 16.6662 23.355 16.6662L25.354 16.6666C25.7221 16.6666 26.0228 16.966 25.9986 17.3334C25.6556 22.5454 21.3193 26.6667 16.0205 26.6667C10.4977 26.6667 6.02051 22.1895 6.02051 16.6667C6.02051 11.4103 10.0761 7.10112 15.2289 6.69758C15.2989 6.69209 15.3538 6.63396 15.3538 6.56372V4.98824C15.3538 4.44106 15.9766 4.12689 16.4167 4.45207L20.944 7.79738C21.3046 8.06387 21.3046 8.60327 20.9439 8.86974L16.4167 12.2148Z',
|
|
51
|
+
'seek-backward-10': 'M16.6667 10.3452C16.6667 10.8924 16.0439 11.2066 15.6038 10.8814L11.0766 7.5364C10.7159 7.26993 10.7159 6.73054 11.0766 6.46405L15.6038 3.11873C16.0439 2.79356 16.6667 3.10773 16.6667 3.6549V5.22682C16.6667 5.29746 16.7223 5.35579 16.7927 5.36066C22.6821 5.76757 27.3333 10.674 27.3333 16.6667C27.3333 22.9259 22.2592 28 16 28C9.96483 28 5.03145 23.2827 4.68601 17.3341C4.66466 16.9665 4.96518 16.6673 5.33339 16.6673H7.3334C7.70157 16.6673 7.99714 16.9668 8.02743 17.3337C8.36638 21.4399 11.8064 24.6667 16 24.6667C20.4183 24.6667 24 21.085 24 16.6667C24 12.5225 20.8483 9.11428 16.8113 8.70739C16.7337 8.69957 16.6667 8.76096 16.6667 8.83893V10.3452Z M17.0879 19.679C17.4553 19.9195 17.8928 20.0398 18.4004 20.0398C18.9099 20.0398 19.3474 19.9205 19.7129 19.6818C20.0803 19.4413 20.3635 19.0938 20.5623 18.6392C20.7612 18.1847 20.8606 17.6373 20.8606 16.9972C20.8625 16.3608 20.764 15.8192 20.5652 15.3722C20.3663 14.9252 20.0822 14.5853 19.7129 14.3523C19.3455 14.1175 18.908 14 18.4004 14C17.8928 14 17.4553 14.1175 17.0879 14.3523C16.7224 14.5853 16.4402 14.9252 16.2413 15.3722C16.0443 15.8173 15.9449 16.3589 15.943 16.9972C15.9411 17.6354 16.0396 18.1818 16.2385 18.6364C16.4373 19.089 16.7205 19.4366 17.0879 19.679ZM19.1362 18.4262C18.9487 18.7349 18.7034 18.8892 18.4004 18.8892C18.1996 18.8892 18.0226 18.8211 17.8691 18.6847C17.7157 18.5464 17.5964 18.3372 17.5112 18.0568C17.4279 17.7765 17.3871 17.4233 17.389 16.9972C17.3909 16.3684 17.4847 15.9025 17.6703 15.5995C17.8559 15.2945 18.0993 15.1421 18.4004 15.1421C18.603 15.1421 18.7801 15.2093 18.9316 15.3438C19.0832 15.4782 19.2015 15.6828 19.2868 15.9574C19.372 16.2301 19.4146 16.5767 19.4146 16.9972C19.4165 17.6392 19.3237 18.1156 19.1362 18.4262Z M13.7746 19.8978C13.8482 19.8978 13.9079 19.8381 13.9079 19.7644V14.2129C13.9079 14.1393 13.8482 14.0796 13.7746 14.0796H12.642C12.6171 14.0796 12.5927 14.0865 12.5716 14.0997L11.2322 14.9325C11.1931 14.9568 11.1693 14.9996 11.1693 15.0457V15.9497C11.1693 16.0539 11.2833 16.1178 11.3722 16.0635L12.464 15.396C12.4682 15.3934 12.473 15.3921 12.4779 15.3921C12.4926 15.3921 12.5045 15.404 12.5045 15.4187V19.7644C12.5045 19.8381 12.5642 19.8978 12.6378 19.8978H13.7746Z',
|
|
52
|
+
'seek-forward-10': 'M15.3333 10.3452C15.3333 10.8924 15.9561 11.2066 16.3962 10.8814L20.9234 7.5364C21.2841 7.26993 21.2841 6.73054 20.9235 6.46405L16.3962 3.11873C15.9561 2.79356 15.3333 3.10773 15.3333 3.6549V5.22682C15.3333 5.29746 15.2778 5.35579 15.2073 5.36066C9.31791 5.76757 4.66667 10.674 4.66667 16.6667C4.66667 22.9259 9.74078 28 16 28C22.0352 28 26.9686 23.2827 27.314 17.3341C27.3354 16.9665 27.0348 16.6673 26.6666 16.6673H24.6666C24.2984 16.6673 24.0029 16.9668 23.9726 17.3337C23.6336 21.4399 20.1937 24.6667 16 24.6667C11.5817 24.6667 8 21.085 8 16.6667C8 12.5225 11.1517 9.11428 15.1887 8.70739C15.2663 8.69957 15.3333 8.76096 15.3333 8.83893V10.3452Z M17.0879 19.679C17.4553 19.9195 17.8928 20.0398 18.4004 20.0398C18.9099 20.0398 19.3474 19.9205 19.7129 19.6818C20.0803 19.4413 20.3635 19.0938 20.5623 18.6392C20.7612 18.1847 20.8606 17.6373 20.8606 16.9972C20.8625 16.3608 20.764 15.8192 20.5652 15.3722C20.3663 14.9252 20.0822 14.5853 19.7129 14.3523C19.3455 14.1175 18.908 14 18.4004 14C17.8928 14 17.4553 14.1175 17.0879 14.3523C16.7224 14.5853 16.4402 14.9252 16.2413 15.3722C16.0443 15.8173 15.9449 16.3589 15.943 16.9972C15.9411 17.6354 16.0396 18.1818 16.2385 18.6364C16.4373 19.089 16.7205 19.4366 17.0879 19.679ZM19.1362 18.4262C18.9487 18.7349 18.7034 18.8892 18.4004 18.8892C18.1996 18.8892 18.0225 18.8211 17.8691 18.6847C17.7157 18.5464 17.5964 18.3372 17.5112 18.0568C17.4278 17.7765 17.3871 17.4233 17.389 16.9972C17.3909 16.3684 17.4847 15.9025 17.6703 15.5995C17.8559 15.2945 18.0992 15.1421 18.4004 15.1421C18.603 15.1421 18.7801 15.2093 18.9316 15.3438C19.0831 15.4782 19.2015 15.6828 19.2867 15.9574C19.372 16.2301 19.4146 16.5767 19.4146 16.9972C19.4165 17.6392 19.3237 18.1156 19.1362 18.4262Z M13.7746 19.8978C13.8482 19.8978 13.9079 19.8381 13.9079 19.7644V14.2129C13.9079 14.1393 13.8482 14.0796 13.7746 14.0796H12.642C12.6171 14.0796 12.5927 14.0865 12.5716 14.0997L11.2322 14.9325C11.1931 14.9568 11.1693 14.9996 11.1693 15.0457V15.9497C11.1693 16.0539 11.2833 16.1178 11.3722 16.0635L12.464 15.396C12.4682 15.3934 12.473 15.3921 12.4779 15.3921C12.4926 15.3921 12.5045 15.404 12.5045 15.4187V19.7644C12.5045 19.8381 12.5642 19.8978 12.6378 19.8978H13.7746Z',
|
|
53
|
+
'seek-backward-30': 'M16.6667 10.3452C16.6667 10.8924 16.0439 11.2066 15.6038 10.8814L11.0766 7.5364C10.7159 7.26993 10.7159 6.73054 11.0766 6.46405L15.6038 3.11873C16.0439 2.79356 16.6667 3.10773 16.6667 3.6549V5.22682C16.6667 5.29746 16.7223 5.35579 16.7927 5.36066C22.6821 5.76757 27.3333 10.674 27.3333 16.6667C27.3333 22.9259 22.2592 28 16 28C9.96483 28 5.03145 23.2827 4.68601 17.3341C4.66466 16.9665 4.96518 16.6673 5.33339 16.6673H7.3334C7.70157 16.6673 7.99714 16.9668 8.02743 17.3337C8.36638 21.4399 11.8064 24.6667 16 24.6667C20.4183 24.6667 24 21.085 24 16.6667C24 12.5225 20.8483 9.11428 16.8113 8.70739C16.7337 8.69957 16.6667 8.76096 16.6667 8.83893V10.3452Z M11.5845 19.75C11.9273 19.9015 12.3203 19.9773 12.7635 19.9773C13.2181 19.9773 13.6205 19.9034 13.9709 19.7557C14.3232 19.6061 14.5978 19.4015 14.7948 19.1421C14.9936 18.8807 15.0931 18.5815 15.0931 18.2443C15.0949 17.8864 14.9804 17.5881 14.7493 17.3495C14.524 17.1149 14.1917 16.97 13.7524 16.9148C13.7393 16.9131 13.7294 16.9021 13.7294 16.8889C13.7294 16.876 13.7389 16.8651 13.7516 16.8631C14.0786 16.8115 14.3468 16.6819 14.5561 16.4745C14.772 16.2623 14.879 15.9925 14.8771 15.6648C14.8771 15.3485 14.7891 15.0654 14.6129 14.8154C14.4368 14.5635 14.1906 14.3646 13.8743 14.2188C13.558 14.0729 13.1915 14 12.7749 14C12.3563 14 11.9832 14.0748 11.6556 14.2245C11.3298 14.3741 11.0722 14.5815 10.8828 14.8466C10.7184 15.0752 10.6239 15.3353 10.5994 15.6268C10.5932 15.7007 10.6536 15.7614 10.7279 15.7614H11.8072C11.8794 15.7614 11.9367 15.7034 11.9525 15.633C11.9707 15.5522 12.0043 15.4785 12.0533 15.412C12.1271 15.3116 12.2266 15.2339 12.3516 15.179C12.4785 15.1241 12.6196 15.0966 12.7749 15.0966C12.9226 15.0966 13.0523 15.1241 13.1641 15.179C13.2777 15.2339 13.3658 15.3116 13.4283 15.412C13.4927 15.5104 13.5239 15.625 13.522 15.7557C13.5239 15.8902 13.4879 16.0095 13.4141 16.1137C13.3402 16.2159 13.237 16.2955 13.1044 16.3523C12.9737 16.4091 12.8222 16.4375 12.6499 16.4375H12.2179C12.1442 16.4375 12.0845 16.4972 12.0845 16.5709V17.3042C12.0845 17.3778 12.1442 17.4375 12.2179 17.4375H12.6499C12.8468 17.4375 13.0173 17.4669 13.1612 17.5256C13.3071 17.5843 13.4198 17.6667 13.4993 17.7728C13.5789 17.8788 13.6177 18 13.6158 18.1364C13.6177 18.2728 13.5826 18.394 13.5107 18.5C13.4387 18.6042 13.3383 18.6866 13.2095 18.7472C13.0826 18.8059 12.9359 18.8353 12.7692 18.8353C12.6025 18.8353 12.4539 18.8078 12.3232 18.7529C12.1925 18.6979 12.0893 18.6222 12.0135 18.5256C11.9638 18.461 11.9292 18.3903 11.9097 18.3135C11.8921 18.2444 11.8352 18.1875 11.7639 18.1875H10.6114C10.5372 18.1875 10.4767 18.2482 10.483 18.3221C10.5081 18.6178 10.6064 18.8825 10.7777 19.1165C10.9747 19.3854 11.2436 19.5966 11.5845 19.75Z M17.7801 19.679C18.1476 19.9195 18.5851 20.0398 19.0926 20.0398C19.6021 20.0398 20.0396 19.9205 20.4051 19.6818C20.7726 19.4413 21.0557 19.0938 21.2546 18.6392C21.4534 18.1847 21.5529 17.6373 21.5529 16.9972C21.5548 16.3608 21.4563 15.8192 21.2574 15.3722C21.0585 14.9252 20.7744 14.5853 20.4051 14.3523C20.0377 14.1175 19.6002 14 19.0926 14C18.5851 14 18.1476 14.1175 17.7801 14.3523C17.4146 14.5853 17.1324 14.9252 16.9335 15.3722C16.7366 15.8173 16.6371 16.3589 16.6352 16.9972C16.6333 17.6354 16.7318 18.1818 16.9307 18.6364C17.1296 19.089 17.4127 19.4366 17.7801 19.679ZM19.8284 18.4262C19.6409 18.7349 19.3957 18.8892 19.0926 18.8892C18.8919 18.8892 18.7148 18.8211 18.5614 18.6847C18.408 18.5464 18.2887 18.3372 18.2034 18.0568C18.1201 17.7765 18.0794 17.4233 18.0813 16.9972C18.0832 16.3684 18.1769 15.9025 18.3625 15.5995C18.5481 15.2945 18.7915 15.1421 19.0926 15.1421C19.2953 15.1421 19.4724 15.2093 19.6239 15.3438C19.7754 15.4782 19.8938 15.6828 19.979 15.9574C20.0642 16.2301 20.1068 16.5767 20.1068 16.9972C20.1087 17.6392 20.0159 18.1156 19.8284 18.4262Z',
|
|
54
|
+
'seek-forward-30': 'M15.3334 10.3452C15.3334 10.8924 15.9561 11.2066 16.3962 10.8814L20.9235 7.5364C21.2841 7.26993 21.2841 6.73054 20.9235 6.46405L16.3962 3.11873C15.9561 2.79356 15.3334 3.10773 15.3334 3.6549V5.22682C15.3334 5.29746 15.2778 5.35579 15.2073 5.36066C9.31793 5.76757 4.66669 10.674 4.66669 16.6667C4.66669 22.9259 9.74079 28 16 28C22.0352 28 26.9686 23.2827 27.314 17.3341C27.3354 16.9665 27.0349 16.6673 26.6667 16.6673H24.6666C24.2985 16.6673 24.0029 16.9668 23.9726 17.3337C23.6337 21.4399 20.1937 24.6667 16 24.6667C11.5817 24.6667 8.00002 21.085 8.00002 16.6667C8.00002 12.5225 11.1517 9.11428 15.1887 8.70739C15.2663 8.69957 15.3334 8.76096 15.3334 8.83893V10.3452Z M11.5845 19.75C11.9273 19.9015 12.3203 19.9773 12.7635 19.9773C13.2181 19.9773 13.6205 19.9034 13.9709 19.7557C14.3232 19.6061 14.5978 19.4015 14.7948 19.1421C14.9936 18.8807 15.0931 18.5815 15.0931 18.2443C15.095 17.8864 14.9804 17.5881 14.7493 17.3495C14.524 17.1149 14.1917 16.97 13.7524 16.9148C13.7393 16.9131 13.7294 16.9021 13.7294 16.8889C13.7294 16.876 13.7389 16.8651 13.7516 16.8631C14.0787 16.8115 14.3468 16.6819 14.5561 16.4745C14.772 16.2623 14.879 15.9925 14.8772 15.6648C14.8772 15.3485 14.7891 15.0654 14.6129 14.8154C14.4368 14.5635 14.1906 14.3646 13.8743 14.2188C13.558 14.0729 13.1915 14 12.7749 14C12.3563 14 11.9832 14.0748 11.6556 14.2245C11.3298 14.3741 11.0722 14.5815 10.8828 14.8466C10.7184 15.0752 10.6239 15.3353 10.5994 15.6268C10.5932 15.7007 10.6537 15.7614 10.7279 15.7614H11.8072C11.8794 15.7614 11.9367 15.7034 11.9525 15.633C11.9707 15.5522 12.0043 15.4785 12.0533 15.412C12.1272 15.3116 12.2266 15.2339 12.3516 15.179C12.4785 15.1241 12.6196 15.0966 12.7749 15.0966C12.9226 15.0966 13.0523 15.1241 13.1641 15.179C13.2777 15.2339 13.3658 15.3116 13.4283 15.412C13.4927 15.5104 13.5239 15.625 13.522 15.7557C13.5239 15.8902 13.4879 16.0095 13.4141 16.1137C13.3402 16.2159 13.237 16.2955 13.1044 16.3523C12.9737 16.4091 12.8222 16.4375 12.6499 16.4375H12.2179C12.1442 16.4375 12.0845 16.4972 12.0845 16.5709V17.3042C12.0845 17.3778 12.1442 17.4375 12.2179 17.4375H12.6499C12.8468 17.4375 13.0173 17.4669 13.1612 17.5256C13.3071 17.5843 13.4198 17.6667 13.4993 17.7728C13.5789 17.8788 13.6177 18 13.6158 18.1364C13.6177 18.2728 13.5826 18.394 13.5107 18.5C13.4387 18.6042 13.3383 18.6866 13.2095 18.7472C13.0826 18.8059 12.9359 18.8353 12.7692 18.8353C12.6025 18.8353 12.4539 18.8078 12.3232 18.7529C12.1925 18.6979 12.0893 18.6222 12.0135 18.5256C11.9638 18.461 11.9292 18.3903 11.9097 18.3135C11.8921 18.2444 11.8352 18.1875 11.7639 18.1875H10.6114C10.5372 18.1875 10.4767 18.2482 10.483 18.3221C10.5081 18.6178 10.6064 18.8825 10.7777 19.1165C10.9747 19.3854 11.2436 19.5966 11.5845 19.75Z M17.7801 19.679C18.1476 19.9195 18.5851 20.0398 19.0926 20.0398C19.6021 20.0398 20.0396 19.9205 20.4051 19.6818C20.7726 19.4413 21.0557 19.0938 21.2546 18.6392C21.4534 18.1847 21.5529 17.6373 21.5529 16.9972C21.5548 16.3608 21.4563 15.8192 21.2574 15.3722C21.0585 14.9252 20.7745 14.5853 20.4051 14.3523C20.0377 14.1175 19.6002 14 19.0926 14C18.5851 14 18.1476 14.1175 17.7801 14.3523C17.4146 14.5853 17.1324 14.9252 16.9335 15.3722C16.7366 15.8173 16.6371 16.3589 16.6352 16.9972C16.6334 17.6354 16.7318 18.1818 16.9307 18.6364C17.1296 19.089 17.4127 19.4366 17.7801 19.679ZM19.8284 18.4262C19.6409 18.7349 19.3957 18.8892 19.0926 18.8892C18.8919 18.8892 18.7148 18.8211 18.5614 18.6847C18.408 18.5464 18.2887 18.3372 18.2034 18.0568C18.1201 17.7765 18.0794 17.4233 18.0813 16.9972C18.0832 16.3684 18.1769 15.9025 18.3625 15.5995C18.5481 15.2945 18.7915 15.1421 19.0926 15.1421C19.2953 15.1421 19.4724 15.2093 19.6239 15.3438C19.7754 15.4782 19.8938 15.6828 19.979 15.9574C20.0642 16.2301 20.1068 16.5767 20.1068 16.9972C20.1087 17.6392 20.0159 18.1156 19.8284 18.4262Z',
|
|
55
|
+
'playback-speed': 'M13.9213 5.53573C14.3146 5.45804 14.6666 5.76987 14.6666 6.17079V7.57215C14.6666 7.89777 14.4305 8.17277 14.114 8.24925C12.5981 8.61559 11.2506 9.41368 10.2091 10.506C9.98474 10.7414 9.62903 10.8079 9.34742 10.6453L8.14112 9.94885C7.79394 9.7484 7.69985 9.28777 7.96359 8.98585C9.48505 7.24409 11.5636 6.00143 13.9213 5.53573Z M5.88974 12.5908C6.01805 12.2101 6.46491 12.0603 6.81279 12.2611L8.01201 12.9535C8.29379 13.1162 8.41396 13.4577 8.32238 13.7699C8.11252 14.4854 7.99998 15.2424 7.99998 16.0257C7.99998 16.809 8.11252 17.566 8.32238 18.2814C8.41396 18.5936 8.29378 18.9352 8.01201 19.0979L6.82742 19.7818C6.48051 19.9821 6.03488 19.8337 5.90521 19.4547C5.5345 18.3712 5.33331 17.2091 5.33331 16C5.33331 14.8078 5.5289 13.6613 5.88974 12.5908Z M8.17106 22.0852C7.82291 22.2862 7.72949 22.7486 7.99532 23.0502C9.51387 24.773 11.5799 26.0017 13.9213 26.4642C14.3146 26.5419 14.6666 26.2301 14.6666 25.8291V24.4792C14.6666 24.1536 14.4305 23.8786 14.114 23.8021C12.5981 23.4358 11.2506 22.6377 10.2091 21.5453C9.98474 21.31 9.62903 21.2435 9.34742 21.4061L8.17106 22.0852Z M17.3333 25.8291C17.3333 26.2301 17.6857 26.5418 18.079 26.4641C22.9748 25.4969 26.6666 21.1796 26.6666 16C26.6666 10.8204 22.9748 6.50302 18.079 5.5358C17.6857 5.4581 17.3333 5.76987 17.3333 6.17079V7.57215C17.3333 7.89777 17.5697 8.17282 17.8862 8.24932C21.3942 9.09721 24 12.2572 24 16.0257C24 19.7942 21.3942 22.9542 17.8862 23.802C17.5697 23.8785 17.3333 24.1536 17.3333 24.4792V25.8291Z M14.3961 10.4163C13.9561 10.0911 13.3333 10.4053 13.3333 10.9525L13.3333 21.0474C13.3333 21.5946 13.9561 21.9087 14.3962 21.5836L21.2273 16.5359C21.5879 16.2694 21.5879 15.73 21.2273 15.4635L14.3961 10.4163Z',
|
|
56
|
+
'picture-in-picture': 'M16 15.3333C15.6318 15.3333 15.3333 15.6318 15.3333 16V20C15.3333 20.3682 15.6318 20.6667 16 20.6667H21.3333C21.7015 20.6667 22 20.3682 22 20V16C22 15.6318 21.7015 15.3333 21.3333 15.3333H16Z M5.33333 7.33334C5.33333 6.96515 5.63181 6.66667 5.99999 6.66667H26C26.3682 6.66667 26.6667 6.96515 26.6667 7.33334V24.6667C26.6667 25.0349 26.3682 25.3333 26 25.3333H5.99999C5.63181 25.3333 5.33333 25.0349 5.33333 24.6667V7.33334ZM7.99999 10C7.99999 9.63182 8.29847 9.33334 8.66666 9.33334H23.3333C23.7015 9.33334 24 9.63182 24 10V22C24 22.3682 23.7015 22.6667 23.3333 22.6667H8.66666C8.29847 22.6667 7.99999 22.3682 7.99999 22V10Z',
|
|
57
|
+
'picture-in-picture-exit': 'M5.33334 26V19.4667C5.33334 19.393 5.39304 19.3333 5.46668 19.3333H7.86668C7.94031 19.3333 8.00001 19.393 8.00001 19.4667V23.3333C8.00001 23.7015 8.29849 24 8.66668 24H23.3333C23.7015 24 24 23.7015 24 23.3333V8.66666C24 8.29847 23.7015 7.99999 23.3333 7.99999H19.4667C19.393 7.99999 19.3333 7.9403 19.3333 7.86666V5.46666C19.3333 5.39302 19.393 5.33333 19.4667 5.33333H26C26.3682 5.33333 26.6667 5.63181 26.6667 5.99999V26C26.6667 26.3682 26.3682 26.6667 26 26.6667H6.00001C5.63182 26.6667 5.33334 26.3682 5.33334 26Z M14.0098 8.42359H10.806C10.6872 8.42359 10.6277 8.56721 10.7117 8.6512L16.5491 14.4886C16.8094 14.7489 16.8094 15.171 16.5491 15.4314L15.3234 16.657C15.0631 16.9174 14.641 16.9174 14.3806 16.657L8.63739 10.9138C8.55339 10.8298 8.40978 10.8893 8.40978 11.0081V14.0236C8.40978 14.3918 8.1113 14.6903 7.74311 14.6903H6.00978C5.64159 14.6903 5.34311 14.3918 5.34311 14.0236L5.34311 6.02359C5.34311 5.6554 5.64159 5.35692 6.00978 5.35692L14.0098 5.35692C14.378 5.35692 14.6764 5.6554 14.6764 6.02359V7.75692C14.6764 8.12511 14.378 8.42359 14.0098 8.42359Z',
|
|
58
|
+
};
|
|
59
|
+
const SVG = 'http://www.w3.org/2000/svg';
|
|
60
|
+
/** A glyph, hidden from the accessibility tree: the button it sits in carries the name. */
|
|
61
|
+
export function icon(name) {
|
|
62
|
+
const svg = document.createElementNS(SVG, 'svg');
|
|
63
|
+
svg.setAttribute('viewBox', '0 0 32 32');
|
|
64
|
+
svg.setAttribute('aria-hidden', 'true');
|
|
65
|
+
const path = document.createElementNS(SVG, 'path');
|
|
66
|
+
path.setAttribute('fill-rule', 'evenodd');
|
|
67
|
+
svg.append(path);
|
|
68
|
+
glyph(svg, name);
|
|
69
|
+
return svg;
|
|
70
|
+
}
|
|
71
|
+
/** Swaps the glyph in place, so the part and the focus ring stay put across states. */
|
|
72
|
+
export function glyph(svg, name) {
|
|
73
|
+
svg.setAttribute('part', `icon ${name}-icon`);
|
|
74
|
+
svg.firstElementChild?.setAttribute('d', PATHS[name]);
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=icons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/controls/icons.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AA0BH;;;;GAIG;AACH,MAAM,KAAK,GAAuC;IAChD,IAAI,EAAE,gNAAgN;IACtN,KAAK,EACH,ocAAoc;IACtc,MAAM,EACJ,4qBAA4qB;IAC9qB,IAAI,EAAE,wmCAAwmC;IAC9mC,YAAY,EACV,ujBAAujB;IACzjB,aAAa,EACX,yxBAAyxB;IAC3xB,UAAU,EACR,i0CAAi0C;IACn0C,iBAAiB,EACf,m2CAAm2C;IACr2C,QAAQ,EACN,y9DAAy9D;IAC39D,KAAK,EACH,i+BAAi+B;IACn+B,iBAAiB,EACf,kiCAAkiC;IACpiC,oBAAoB,EAClB,w1CAAw1C;IAC11C,aAAa,EACX,uyBAAuyB;IACzyB,eAAe,EACb,4qBAA4qB;IAC9qB,cAAc,EACZ,8rBAA8rB;IAChsB,kBAAkB,EAChB,8oEAA8oE;IAChpE,iBAAiB,EACf,2oEAA2oE;IAC7oE,kBAAkB,EAChB,0qHAA0qH;IAC5qH,iBAAiB,EACf,wrHAAwrH;IAC1rH,gBAAgB,EACd,gpDAAgpD;IAClpD,oBAAoB,EAClB,knBAAknB;IACpnB,yBAAyB,EACvB,8iCAA8iC;CACjjC,CAAC;AAEF,MAAM,GAAG,GAAG,4BAA4B,CAAC;AAEzC,2FAA2F;AAC3F,MAAM,UAAU,IAAI,CAAC,IAAc;IACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACjD,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACzC,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC1C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACjB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,KAAK,CAAC,GAAkB,EAAE,IAAc;IACtD,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,IAAI,OAAO,CAAC,CAAC;IAC9C,GAAG,CAAC,iBAAiB,EAAE,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shortcuts, live only while focus is inside the element: Space and `k`
|
|
3
|
+
* toggle play, `m` mutes, `f` toggles fullscreen, the arrows seek by the
|
|
4
|
+
* step. They listen on the host, where every key pressed inside the
|
|
5
|
+
* element arrives, and they stand aside twice. A key a control has already
|
|
6
|
+
* handled arrives with its default prevented, so the seek bar's arrows are
|
|
7
|
+
* not seeking twice. And Space on a button is the button's own activation,
|
|
8
|
+
* so it is left to the button.
|
|
9
|
+
*
|
|
10
|
+
* A click on the video toggles play, the way a viewer expects of a player,
|
|
11
|
+
* and only there: clicks on the bar, the start button and the error screen
|
|
12
|
+
* are theirs.
|
|
13
|
+
*/
|
|
14
|
+
import type { Control } from './control.js';
|
|
15
|
+
import type { Fullscreen } from './fullscreen.js';
|
|
16
|
+
export interface KeysOptions {
|
|
17
|
+
readonly host: HTMLElement;
|
|
18
|
+
readonly stage: HTMLElement;
|
|
19
|
+
/** What sits over the picture and takes its own clicks. */
|
|
20
|
+
readonly own: readonly HTMLElement[];
|
|
21
|
+
readonly video: HTMLVideoElement;
|
|
22
|
+
readonly step: number;
|
|
23
|
+
readonly fullscreen: Fullscreen;
|
|
24
|
+
}
|
|
25
|
+
export declare function keys(options: KeysOptions): Control;
|
|
26
|
+
//# sourceMappingURL=keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/controls/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,EAAE,SAAS,WAAW,EAAE,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;CACjC;AAcD,wBAAgB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAoDlD"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
function toggle(video) {
|
|
2
|
+
if (video.paused)
|
|
3
|
+
video.play().catch(() => undefined);
|
|
4
|
+
else
|
|
5
|
+
video.pause();
|
|
6
|
+
}
|
|
7
|
+
/** The end the playhead can reach: the duration, or the seekable end for live. */
|
|
8
|
+
function end(video) {
|
|
9
|
+
if (Number.isFinite(video.duration))
|
|
10
|
+
return video.duration;
|
|
11
|
+
const ranges = video.seekable;
|
|
12
|
+
return ranges.length > 0 ? ranges.end(ranges.length - 1) : video.currentTime;
|
|
13
|
+
}
|
|
14
|
+
export function keys(options) {
|
|
15
|
+
const { host, stage, own, video } = options;
|
|
16
|
+
function onKey(event) {
|
|
17
|
+
if (event.defaultPrevented || event.altKey || event.ctrlKey || event.metaKey)
|
|
18
|
+
return;
|
|
19
|
+
const target = event.composedPath()[0];
|
|
20
|
+
const onButton = target instanceof HTMLButtonElement;
|
|
21
|
+
switch (event.key) {
|
|
22
|
+
case ' ':
|
|
23
|
+
if (onButton)
|
|
24
|
+
return;
|
|
25
|
+
toggle(video);
|
|
26
|
+
break;
|
|
27
|
+
case 'k':
|
|
28
|
+
case 'K':
|
|
29
|
+
toggle(video);
|
|
30
|
+
break;
|
|
31
|
+
case 'm':
|
|
32
|
+
case 'M':
|
|
33
|
+
video.muted = !video.muted;
|
|
34
|
+
break;
|
|
35
|
+
case 'f':
|
|
36
|
+
case 'F':
|
|
37
|
+
options.fullscreen.toggle();
|
|
38
|
+
break;
|
|
39
|
+
case 'ArrowLeft':
|
|
40
|
+
video.currentTime = Math.max(0, video.currentTime - options.step);
|
|
41
|
+
break;
|
|
42
|
+
case 'ArrowRight':
|
|
43
|
+
video.currentTime = Math.min(end(video), video.currentTime + options.step);
|
|
44
|
+
break;
|
|
45
|
+
default:
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
event.preventDefault();
|
|
49
|
+
}
|
|
50
|
+
function onClick(event) {
|
|
51
|
+
const path = event.composedPath();
|
|
52
|
+
if (own.some((node) => path.includes(node)))
|
|
53
|
+
return;
|
|
54
|
+
toggle(video);
|
|
55
|
+
}
|
|
56
|
+
host.addEventListener('keydown', onKey);
|
|
57
|
+
stage.addEventListener('click', onClick);
|
|
58
|
+
return {
|
|
59
|
+
root: stage,
|
|
60
|
+
dispose() {
|
|
61
|
+
host.removeEventListener('keydown', onKey);
|
|
62
|
+
stage.removeEventListener('click', onClick);
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/controls/keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { LiveApi } from '../namespaces.js';
|
|
2
|
+
import type { Control } from './control.js';
|
|
3
|
+
export interface LiveButton extends Control {
|
|
4
|
+
attach(live: LiveApi | undefined): void;
|
|
5
|
+
detach(): void;
|
|
6
|
+
/** Whether the stream has a seek bar. Without one the button only says live. */
|
|
7
|
+
seekable(on: boolean): void;
|
|
8
|
+
}
|
|
9
|
+
export declare function liveButton(video: HTMLVideoElement): LiveButton;
|
|
10
|
+
//# sourceMappingURL=live.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../src/controls/live.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,UAAW,SAAQ,OAAO;IACzC,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IACxC,MAAM,IAAI,IAAI,CAAC;IACf,gFAAgF;IAChF,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;CAC7B;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,UAAU,CAgD9D"}
|