@instructure/studio-player 1.2.0 → 1.2.2
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/dist/StudioPlayer/StudioPlayer.d.ts +1 -1
- package/dist/StudioPlayer/StudioPlayer.types.d.ts +1 -0
- package/dist/index-Bc3X9mWo.css +1 -0
- package/dist/studio-player.es.js +2445 -2444
- package/dist/{vidstack-CjqtyAQk.js → vidstack-DPuv2JRL.js} +96 -93
- package/dist/{vidstack-audio-CkMeA4-b.js → vidstack-audio-o6qtD3rg.js} +2 -2
- package/dist/{vidstack-dash-CMEjAqOU.js → vidstack-dash-BREZS9yq.js} +2 -2
- package/dist/{vidstack-google-cast-BMQWFfhs.js → vidstack-google-cast-D_aHtaU6.js} +1 -1
- package/dist/{vidstack-hls-D1a98pZ4.js → vidstack-hls-BitBIC4G.js} +2 -2
- package/dist/{vidstack-html-CPvoK3qB.js → vidstack-html-PIku4DdT.js} +1 -1
- package/dist/{vidstack-video-C_npz5Cj.js → vidstack-video-CFc1rkyw.js} +2 -2
- package/dist/{vidstack-vimeo-j7LNW6Re.js → vidstack-vimeo-Cc7TgCsS.js} +1 -1
- package/dist/vidstack-youtube-NipQnFnY.js +298 -0
- package/package.json +1 -1
- package/dist/index-COMpNSdw.css +0 -1
- package/dist/vidstack-youtube-C_ammZWO.js +0 -264
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
var G = Object.defineProperty;
|
|
2
|
+
var z = (a) => {
|
|
3
|
+
throw TypeError(a);
|
|
4
|
+
};
|
|
5
|
+
var H = (a, o, e) => o in a ? G(a, o, { enumerable: !0, configurable: !0, writable: !0, value: e }) : a[o] = e;
|
|
6
|
+
var b = (a, o, e) => H(a, typeof o != "symbol" ? o + "" : o, e), E = (a, o, e) => o.has(a) || z("Cannot " + e);
|
|
7
|
+
var s = (a, o, e) => (E(a, o, "read from private field"), e ? e.call(a) : o.get(a)), p = (a, o, e) => o.has(a) ? z("Cannot add the same private member more than once") : o instanceof WeakSet ? o.add(a) : o.set(a, e), l = (a, o, e, t) => (E(a, o, "write to private field"), t ? t.call(a, e) : o.set(a, e), e), r = (a, o, e) => (E(a, o, "access private method"), e);
|
|
8
|
+
import { E as Q, d as W, x as X, p as Z, y as ee, a as te, J as se, z as ie, Y as w, K as ae, M as _, T as j, O as ne } from "./vidstack-DPuv2JRL.js";
|
|
9
|
+
const oe = /(?:youtu\.be|youtube|youtube\.com|youtube-nocookie\.com)(?:\/shorts)?\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=|)((?:\w|-){11})/, C = /* @__PURE__ */ new Map(), R = /* @__PURE__ */ new Map();
|
|
10
|
+
function B(a) {
|
|
11
|
+
var o;
|
|
12
|
+
return (o = a.match(oe)) == null ? void 0 : o[1];
|
|
13
|
+
}
|
|
14
|
+
async function re(a, o) {
|
|
15
|
+
if (C.has(a)) return C.get(a);
|
|
16
|
+
if (R.has(a)) return R.get(a);
|
|
17
|
+
const e = new Promise(async (t) => {
|
|
18
|
+
const u = ["maxresdefault", "sddefault", "hqdefault"];
|
|
19
|
+
for (const h of u)
|
|
20
|
+
for (const d of [!0, !1]) {
|
|
21
|
+
const c = ue(a, h, d);
|
|
22
|
+
if ((await fetch(c, {
|
|
23
|
+
mode: "no-cors",
|
|
24
|
+
signal: o.signal
|
|
25
|
+
})).status < 400) {
|
|
26
|
+
C.set(a, c), t(c);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}).catch(() => "").finally(() => R.delete(a));
|
|
31
|
+
return R.set(a, e), e;
|
|
32
|
+
}
|
|
33
|
+
function ue(a, o, e) {
|
|
34
|
+
return `https://i.ytimg.com/${e ? "vi_webp" : "vi"}/${a}/${o}.${e ? "webp" : "jpg"}`;
|
|
35
|
+
}
|
|
36
|
+
const ye = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
37
|
+
__proto__: null,
|
|
38
|
+
findYouTubePoster: re,
|
|
39
|
+
resolveYouTubeVideoId: B
|
|
40
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
41
|
+
var n, k, P, S, T, g, y, M, i, he, ce, F, U, m, K, L, I, Y, V, J, N, D, $, q;
|
|
42
|
+
class de extends Q {
|
|
43
|
+
constructor(e, t) {
|
|
44
|
+
super(e);
|
|
45
|
+
p(this, i);
|
|
46
|
+
b(this, "$$PROVIDER_TYPE", "YOUTUBE");
|
|
47
|
+
b(this, "scope", W());
|
|
48
|
+
p(this, n);
|
|
49
|
+
p(this, k, X(""));
|
|
50
|
+
p(this, P, -1);
|
|
51
|
+
p(this, S, null);
|
|
52
|
+
p(this, T, -1);
|
|
53
|
+
p(this, g, !1);
|
|
54
|
+
p(this, y, /* @__PURE__ */ new Map());
|
|
55
|
+
/**
|
|
56
|
+
* Sets the player's interface language. The parameter value is an ISO 639-1 two-letter
|
|
57
|
+
* language code or a fully specified locale. For example, fr and fr-ca are both valid values.
|
|
58
|
+
* Other language input codes, such as IETF language tags (BCP 47) might also be handled properly.
|
|
59
|
+
*
|
|
60
|
+
* The interface language is used for tooltips in the player and also affects the default caption
|
|
61
|
+
* track. Note that YouTube might select a different caption track language for a particular
|
|
62
|
+
* user based on the user's individual language preferences and the availability of caption tracks.
|
|
63
|
+
*
|
|
64
|
+
* @defaultValue 'en'
|
|
65
|
+
*/
|
|
66
|
+
b(this, "language", "en");
|
|
67
|
+
b(this, "color", "red");
|
|
68
|
+
/**
|
|
69
|
+
* Whether cookies should be enabled on the embed. This is turned off by default to be
|
|
70
|
+
* GDPR-compliant.
|
|
71
|
+
*
|
|
72
|
+
* @defaultValue `false`
|
|
73
|
+
*/
|
|
74
|
+
b(this, "cookies", !1);
|
|
75
|
+
/**
|
|
76
|
+
* Whether the embed should use YouTube Education. This is turned off by default.
|
|
77
|
+
*
|
|
78
|
+
* @defaultValue `false`
|
|
79
|
+
*/
|
|
80
|
+
b(this, "education", !1);
|
|
81
|
+
/**
|
|
82
|
+
* An API key to use for the embed. This is mandatory for YouTube Education
|
|
83
|
+
* to work as expected.
|
|
84
|
+
*
|
|
85
|
+
* @defaultValue `undefined`
|
|
86
|
+
*/
|
|
87
|
+
p(this, M);
|
|
88
|
+
l(this, n, t);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Set an API key to use for the embed. This is mandatory for YouTube Education
|
|
92
|
+
* to work as expected.
|
|
93
|
+
*
|
|
94
|
+
* @defaultValue `undefined`
|
|
95
|
+
*/
|
|
96
|
+
set apiKey(e) {
|
|
97
|
+
l(this, M, e);
|
|
98
|
+
}
|
|
99
|
+
get currentSrc() {
|
|
100
|
+
return s(this, S);
|
|
101
|
+
}
|
|
102
|
+
get type() {
|
|
103
|
+
return "youtube";
|
|
104
|
+
}
|
|
105
|
+
get videoId() {
|
|
106
|
+
return s(this, k).call(this);
|
|
107
|
+
}
|
|
108
|
+
preconnect() {
|
|
109
|
+
Z(this.getOrigin());
|
|
110
|
+
}
|
|
111
|
+
setup() {
|
|
112
|
+
super.setup(), ee(r(this, i, F).bind(this)), s(this, n).notify("provider-setup", this);
|
|
113
|
+
}
|
|
114
|
+
destroy() {
|
|
115
|
+
r(this, i, D).call(this);
|
|
116
|
+
const e = "provider destroyed";
|
|
117
|
+
for (const t of s(this, y).values())
|
|
118
|
+
for (const { reject: u } of t) u(e);
|
|
119
|
+
s(this, y).clear();
|
|
120
|
+
}
|
|
121
|
+
async play() {
|
|
122
|
+
return r(this, i, m).call(this, "playVideo");
|
|
123
|
+
}
|
|
124
|
+
async pause() {
|
|
125
|
+
return r(this, i, m).call(this, "pauseVideo");
|
|
126
|
+
}
|
|
127
|
+
setMuted(e) {
|
|
128
|
+
e ? r(this, i, m).call(this, "mute") : r(this, i, m).call(this, "unMute");
|
|
129
|
+
}
|
|
130
|
+
setCurrentTime(e) {
|
|
131
|
+
r(this, i, m).call(this, "seekTo", e), s(this, n).notify("seeking", e);
|
|
132
|
+
}
|
|
133
|
+
setVolume(e) {
|
|
134
|
+
r(this, i, m).call(this, "setVolume", e * 100);
|
|
135
|
+
}
|
|
136
|
+
setPlaybackRate(e) {
|
|
137
|
+
r(this, i, m).call(this, "setPlaybackRate", e);
|
|
138
|
+
}
|
|
139
|
+
async loadSource(e) {
|
|
140
|
+
if (!te(e.src)) {
|
|
141
|
+
l(this, S, null), s(this, k).set("");
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const t = B(e.src);
|
|
145
|
+
s(this, k).set(t ?? ""), l(this, S, e);
|
|
146
|
+
}
|
|
147
|
+
getOrigin() {
|
|
148
|
+
switch (!0) {
|
|
149
|
+
case this.education:
|
|
150
|
+
return "https://www.youtubeeducation.com";
|
|
151
|
+
case this.cookies:
|
|
152
|
+
return "https://www.youtube.com";
|
|
153
|
+
default:
|
|
154
|
+
return "https://www.youtube-nocookie.com";
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
buildParams() {
|
|
158
|
+
const { keyDisabled: e } = s(this, n).$props, { muted: t, playsInline: u, nativeControls: h } = s(this, n).$state, d = h();
|
|
159
|
+
return {
|
|
160
|
+
rel: 0,
|
|
161
|
+
autoplay: 0,
|
|
162
|
+
cc_lang_pref: this.language,
|
|
163
|
+
cc_load_policy: d ? 1 : void 0,
|
|
164
|
+
color: this.color,
|
|
165
|
+
controls: d ? 1 : 0,
|
|
166
|
+
disablekb: !d || e() ? 1 : 0,
|
|
167
|
+
enablejsapi: 1,
|
|
168
|
+
fs: 1,
|
|
169
|
+
hl: this.language,
|
|
170
|
+
iv_load_policy: d ? 1 : 3,
|
|
171
|
+
mute: t() ? 1 : 0,
|
|
172
|
+
playsinline: u() ? 1 : 0,
|
|
173
|
+
embed_config: r(this, i, U).call(this)
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
onLoad() {
|
|
177
|
+
window.setTimeout(() => this.postMessage({ event: "listening" }), 100);
|
|
178
|
+
}
|
|
179
|
+
onMessage({ info: e }, t) {
|
|
180
|
+
var c;
|
|
181
|
+
if (!e) return;
|
|
182
|
+
const { title: u, intrinsicDuration: h, playbackRate: d } = s(this, n).$state;
|
|
183
|
+
if (ae(e.videoData) && e.videoData.title !== u() && s(this, n).notify("title-change", e.videoData.title, t), _(e.duration) && e.duration !== h()) {
|
|
184
|
+
if (_(e.videoLoadedFraction)) {
|
|
185
|
+
const f = ((c = e.progressState) == null ? void 0 : c.loaded) ?? e.videoLoadedFraction * e.duration, v = new j(0, e.duration);
|
|
186
|
+
r(this, i, Y).call(this, f, v, t);
|
|
187
|
+
}
|
|
188
|
+
s(this, n).notify("duration-change", e.duration, t);
|
|
189
|
+
}
|
|
190
|
+
if (_(e.playbackRate) && e.playbackRate !== d() && s(this, n).notify("rate-change", e.playbackRate, t), e.progressState) {
|
|
191
|
+
const { current: f, seekableStart: v, seekableEnd: O, loaded: A, duration: x } = e.progressState;
|
|
192
|
+
r(this, i, I).call(this, f, t), r(this, i, Y).call(this, A, new j(v, O), t), x !== h() && s(this, n).notify("duration-change", x, t);
|
|
193
|
+
}
|
|
194
|
+
if (_(e.volume) && ne(e.muted) && !s(this, g)) {
|
|
195
|
+
const f = {
|
|
196
|
+
muted: e.muted,
|
|
197
|
+
volume: e.volume / 100
|
|
198
|
+
};
|
|
199
|
+
s(this, n).notify("volume-change", f, t);
|
|
200
|
+
}
|
|
201
|
+
_(e.playerState) && e.playerState !== s(this, P) && r(this, i, N).call(this, e.playerState, t);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
n = new WeakMap(), k = new WeakMap(), P = new WeakMap(), S = new WeakMap(), T = new WeakMap(), g = new WeakMap(), y = new WeakMap(), M = new WeakMap(), i = new WeakSet(), he = function(e) {
|
|
205
|
+
var t;
|
|
206
|
+
(t = r(this, i, $).call(this, "playVideo")) == null || t.reject(e);
|
|
207
|
+
}, ce = function(e) {
|
|
208
|
+
var t;
|
|
209
|
+
(t = r(this, i, $).call(this, "pauseVideo")) == null || t.reject(e);
|
|
210
|
+
}, F = function() {
|
|
211
|
+
r(this, i, D).call(this);
|
|
212
|
+
const e = s(this, k).call(this);
|
|
213
|
+
if (!e) {
|
|
214
|
+
this.src.set("");
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
this.src.set(`${this.getOrigin()}/embed/${e}`), s(this, n).notify("load-start");
|
|
218
|
+
}, U = function() {
|
|
219
|
+
const e = s(this, M);
|
|
220
|
+
if (!se(e))
|
|
221
|
+
return JSON.stringify({ apiKey: e });
|
|
222
|
+
}, m = function(e, t) {
|
|
223
|
+
let u = ie(), h = s(this, y).get(e);
|
|
224
|
+
return h || s(this, y).set(e, h = []), h.push(u), this.postMessage({
|
|
225
|
+
event: "command",
|
|
226
|
+
func: e,
|
|
227
|
+
args: t ? [t] : void 0
|
|
228
|
+
}), u.promise;
|
|
229
|
+
}, K = function(e) {
|
|
230
|
+
s(this, n).notify("loaded-metadata"), s(this, n).notify("loaded-data"), s(this, n).delegate.ready(void 0, e);
|
|
231
|
+
}, L = function(e) {
|
|
232
|
+
var t;
|
|
233
|
+
(t = r(this, i, $).call(this, "pauseVideo")) == null || t.resolve(), s(this, n).notify("pause", void 0, e);
|
|
234
|
+
}, I = function(e, t) {
|
|
235
|
+
const { duration: u, realCurrentTime: h } = s(this, n).$state, d = s(this, P) === w.Ended, c = d ? u() : e;
|
|
236
|
+
s(this, n).notify("time-change", c, t), !d && Math.abs(c - h()) > 1 && s(this, n).notify("seeking", c, t);
|
|
237
|
+
}, Y = function(e, t, u) {
|
|
238
|
+
const h = {
|
|
239
|
+
buffered: new j(0, e),
|
|
240
|
+
seekable: t
|
|
241
|
+
};
|
|
242
|
+
s(this, n).notify("progress", h, u);
|
|
243
|
+
const { seeking: d, realCurrentTime: c } = s(this, n).$state;
|
|
244
|
+
d() && e > c() && r(this, i, V).call(this, u);
|
|
245
|
+
}, V = function(e) {
|
|
246
|
+
const { paused: t, realCurrentTime: u } = s(this, n).$state;
|
|
247
|
+
window.clearTimeout(s(this, T)), l(this, T, window.setTimeout(
|
|
248
|
+
() => {
|
|
249
|
+
s(this, n).notify("seeked", u(), e), l(this, T, -1);
|
|
250
|
+
},
|
|
251
|
+
t() ? 100 : 0
|
|
252
|
+
));
|
|
253
|
+
}, J = function(e) {
|
|
254
|
+
const { seeking: t } = s(this, n).$state;
|
|
255
|
+
t() && r(this, i, V).call(this, e), s(this, n).notify("pause", void 0, e), s(this, n).notify("end", void 0, e);
|
|
256
|
+
}, N = function(e, t) {
|
|
257
|
+
var O;
|
|
258
|
+
const { paused: u, seeking: h } = s(this, n).$state, d = e === w.Playing, c = e === w.Buffering, f = r(this, i, q).call(this, "playVideo"), v = u() && (c || d);
|
|
259
|
+
if (c && s(this, n).notify("waiting", void 0, t), h() && d && r(this, i, V).call(this, t), s(this, g) && d) {
|
|
260
|
+
this.pause(), l(this, g, !1), this.setMuted(s(this, n).$state.muted());
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
if (!f && v) {
|
|
264
|
+
l(this, g, !0), this.setMuted(!0);
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
switch (v && ((O = r(this, i, $).call(this, "playVideo")) == null || O.resolve(), s(this, n).notify("play", void 0, t)), e) {
|
|
268
|
+
case w.Cued:
|
|
269
|
+
r(this, i, K).call(this, t);
|
|
270
|
+
break;
|
|
271
|
+
case w.Playing:
|
|
272
|
+
s(this, n).notify("playing", void 0, t);
|
|
273
|
+
break;
|
|
274
|
+
case w.Paused:
|
|
275
|
+
r(this, i, L).call(this, t);
|
|
276
|
+
break;
|
|
277
|
+
case w.Ended:
|
|
278
|
+
r(this, i, J).call(this, t);
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
281
|
+
l(this, P, e);
|
|
282
|
+
}, D = function() {
|
|
283
|
+
l(this, P, -1), l(this, T, -1), l(this, g, !1);
|
|
284
|
+
}, $ = function(e) {
|
|
285
|
+
var t;
|
|
286
|
+
return (t = s(this, y).get(e)) == null ? void 0 : t.shift();
|
|
287
|
+
}, q = function(e) {
|
|
288
|
+
var t;
|
|
289
|
+
return !!((t = s(this, y).get(e)) != null && t.length);
|
|
290
|
+
};
|
|
291
|
+
const fe = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
292
|
+
__proto__: null,
|
|
293
|
+
YouTubeProvider: de
|
|
294
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
295
|
+
export {
|
|
296
|
+
fe as p,
|
|
297
|
+
ye as u
|
|
298
|
+
};
|
package/package.json
CHANGED
package/dist/index-COMpNSdw.css
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
._annotation-overlay_1kxzn_1{position:absolute;top:0;right:0;bottom:0;left:0;-webkit-user-select:none;user-select:none;z-index:1;background-color:#000c;display:flex;flex-direction:column;justify-content:center;align-items:center}._media-buffering-indicator_1fwjr_1{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;pointer-events:none;opacity:0;z-index:1;background-color:#00000080;transition:opacity .2s ease}[data-media-player][data-buffering] ._media-buffering-spinner_1fwjr_17{pointer-events:none;animation:_media-buffering-spin_1fwjr_17 1s linear infinite}._media-buffering-track_1fwjr_22{color:#f5f5f5;opacity:.25}._media-buffering-track-fill_1fwjr_27{color:var(--media-brand, #f5f5f5);opacity:.75}[data-media-player][data-buffering] ._media-buffering-indicator_1fwjr_1{opacity:1}@keyframes _media-buffering-spin_1fwjr_17{to{transform:rotate(360deg)}}._controls-overlay_1hs9n_1{display:flex;position:absolute;gap:.5rem;padding:1rem;top:0;right:0;bottom:0;left:0;justify-content:end;pointer-events:none}._keyboard-shortcuts-overlay_1hs9n_11{position:absolute;top:0;right:0;bottom:0;left:0;background-color:#000000b3;color:#fff;padding:1.5rem;-webkit-user-select:none;user-select:none;overflow-y:auto;display:flex;flex-direction:column;align-items:center;z-index:1}._keyboard-shortcuts-overlay_1hs9n_11 header{width:100%;display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}:is(._keyboard-shortcuts-overlay_1hs9n_11 header) h2{font-size:1rem;font-weight:500;margin:0}@container player (width > 400px) and (height > 300px){:is(._keyboard-shortcuts-overlay_1hs9n_11 header) h2{font-size:1.5rem}}._keyboard-shortcuts-overlay_1hs9n_11 table{width:100%;max-width:54rem;padding:0;border-collapse:collapse}@container player (width > 400px) and (height > 300px){._keyboard-shortcuts-overlay_1hs9n_11 table{padding:2rem}}:is(._keyboard-shortcuts-overlay_1hs9n_11 table) tr{border-bottom:1px solid rgba(232 234 236 / .2)}:is(._keyboard-shortcuts-overlay_1hs9n_11 table) tbody tr:last-child{border-bottom:none}:is(._keyboard-shortcuts-overlay_1hs9n_11 table) th,:is(._keyboard-shortcuts-overlay_1hs9n_11 table) td{text-align:left;font-size:.75rem;line-height:1.5}@container player (width > 400px) and (height > 300px){:is(._keyboard-shortcuts-overlay_1hs9n_11 table) th,:is(._keyboard-shortcuts-overlay_1hs9n_11 table) td{font-size:.875rem}}@container player (width >= 720px) and (height > 300px){:is(._keyboard-shortcuts-overlay_1hs9n_11 table) th,:is(._keyboard-shortcuts-overlay_1hs9n_11 table) td{font-size:1rem}}._keyboard-shortcuts-overlay_1hs9n_11 ._screen-reader-content_1hs9n_76{width:.0625rem;height:.0625rem;margin:-.0625rem;padding:0;position:absolute;top:0;inset-inline-start:0;overflow:hidden;clip:rect(0 0 0 0);border:0}._controls-button_1hs9n_90{width:2.25rem;height:2.25rem;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-2);border:1px solid #d7dade;background:var(--controls-layout-bg-color)}._controls-button_1hs9n_90:focus-visible{outline:var(--focus-ring)}._keyboard-shortcuts-button_1hs9n_106{opacity:0;margin-right:auto}._keyboard-shortcuts-button_1hs9n_106:focus-visible{opacity:1;pointer-events:auto}._kebab-menu-button_1hs9n_116{opacity:1;pointer-events:auto;transition:opacity;transition-duration:0s;transition-timing-function:linear;transition-delay:0s;cursor:pointer;color:inherit}._kebab-menu-button_1hs9n_116 svg{flex-shrink:0}._kebab-menu-button_1hs9n_116:hover{background-color:var(--media-button-icon-hover-color, #e0e0e0)}._kebab-menu_1hs9n_116{display:flex;flex-direction:column;min-width:200px;pointer-events:auto;background-color:var(--settings-menu-bg-color, white);border-radius:var(--radius-2);padding-top:.25rem;padding-bottom:.25rem;z-index:1000;filter:drop-shadow(0 .125rem .1875rem rgba(0 0 0 / .5))}._kebab-menu-item_1hs9n_150{font-family:inherit;font-size:1rem;height:36px;text-rendering:geometricprecision;display:flex;align-items:center;gap:.5rem;padding:0 11px;border:none;outline:none;background-color:transparent;cursor:pointer;color:inherit;touch-action:manipulation;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}._kebab-menu-item_1hs9n_150:hover,._kebab-menu-item_1hs9n_150:focus{color:var(--settings-media-hover-color, white);background-color:var(--settings-media-hover-bg-color, rgb(43 122 188))}[data-media-player][data-playing]:not([data-hover]) ._kebab-menu-button_1hs9n_116:not(:focus-visible,[aria-expanded=true]),[data-media-player][data-fullscreen][data-playing]:not([data-controls]) ._kebab-menu-button_1hs9n_116:not(:focus-visible,[aria-expanded=true]){opacity:0;transition-duration:.2s}._close-button_1hs9n_189{background-color:transparent;border:none;cursor:pointer;color:#fff;display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:0;width:2.25rem;height:2.25rem}._arrow_1hs9n_203{fill:#fff}._captions_1adqy_1{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:var(--captions-flex-direction, column);align-items:center;padding:var(--spacing-3);transition:padding-bottom .1s ease-in-out;transition-delay:.3s}[data-fullscreen][data-controls]:not(:has([data-pins])) ._captions_1adqy_1{transition-delay:0s;padding-bottom:calc(var(--spacing-3) + var(--captions-fullscreen-offset))}._captions_1adqy_1[aria-hidden=true]{display:none}._captions_1adqy_1 [data-part=cue]{color:var(--captions-color, white);text-align:center;max-width:50ch;line-height:1.5;font-size:calc(var(--captions-base-font-size-small) * var(--captions-font-size-multiplier, 1));padding:var(--spacing-2);background-color:var(--captions-background-color, rgba(22 22 22 / .75));border-radius:var(--radius-2);white-space:pre-wrap}@container player (width > 425px){._captions_1adqy_1 [data-part=cue]{font-size:calc(var(--captions-base-font-size-normal) * var(--captions-font-size-multiplier, 1))}}._comments-overlay_z1669_1{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--spacing-3);display:flex;align-items:end;pointer-events:none;transition:padding .1s ease-in-out;transition-delay:0s}._comments-container_z1669_12{display:flex;flex-direction:column;gap:.25rem;width:15rem;margin-right:3.4375rem}@container player (width >= 460px){._comments-container_z1669_12{width:23.4375rem}}@media (hover: none) and (orientation: portrait) and (max-width: 720px){[data-fullscreen] ._comments-overlay_z1669_1{justify-content:end}}[data-fullscreen][data-controls]:not(:has([data-pins])) ._comments-overlay_z1669_1{padding-bottom:calc(var(--spacing-3) + var(--comments-fullscreen-offset));transition-delay:.3s}._comment_z1669_1{display:grid;grid-template-areas:"avatar text";grid-template-columns:auto 1fr;align-items:center;padding:var(--spacing-1);gap:var(--spacing-1);border-radius:var(--radius-2);background-color:var(--comments-background-color);cursor:pointer;border:1px solid #666;pointer-events:auto}@container player (height > 540px){._comment_z1669_1{grid-template-areas:"text text" "avatar name"}}._comment-text_z1669_55{grid-area:text;color:var(--comments-color);font-size:var(--comments-font-size-small);line-height:1.5;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;line-clamp:1;-webkit-user-select:none;user-select:none}@container player (height >= 400px){._comment-text_z1669_55{-webkit-line-clamp:2;line-clamp:2;font-size:var(--comments-font-size-large)}}._comment-author-avatar_z1669_75{grid-area:avatar;box-sizing:border-box;display:inline-block;object-fit:cover;width:var(--comments-avatar-size-xss);height:var(--comments-avatar-size-xss);border-radius:50%;-webkit-user-select:none;user-select:none;pointer-events:none;background-color:#fff;contain:paint}@container player (height >= 400px){._comment-author-avatar_z1669_75{width:var(--comments-avatar-size-s);height:var(--comments-avatar-size-s)}}@container player (height > 540px){._comment-author-avatar_z1669_75{width:var(--comments-avatar-size-xs);height:var(--comments-avatar-size-xs)}}._comment-author-name_z1669_99{grid-area:name;color:var(--comments-author-color);font-size:var(--comments-font-size-large);font-weight:700;line-height:1.5;display:none}@container player (height > 540px){._comment-author-name_z1669_99{display:inline}}._settings-menu_1awmq_1{display:flex;flex-direction:column;font-size:.875rem;line-height:1.25rem;background-color:var(--settings-menu-bg-color, white);padding-top:.25rem;padding-bottom:.25rem;border-radius:var(--radius-2);width:294px;z-index:1000;overflow:auto;filter:drop-shadow(0 .125rem .1875rem rgba(0 0 0 / .5))}._settings-menu_1awmq_1:focus-visible{outline:2px solid var(--settings-menu-focus-color, #0078d4)}@container player (width > 400px) and (height > 300px){._settings-menu_1awmq_1{font-size:1rem;line-height:1.5rem}}@container player (height <= 300px){._settings-menu_1awmq_1{max-height:calc(100% - 56px)}}@container player (width < 300px){._settings-menu_1awmq_1{max-width:calc(100% - 8px)}}._menu-heading_1awmq_36{display:block;margin:0 var(--spacing-2);padding-top:var(--spacing-2);padding-bottom:.5625rem;border-bottom:.0625rem solid #c7cdd1;font-weight:700}._check-icon_1awmq_47,._trash-icon_1awmq_48{width:1.25rem;height:1.25rem}._check-icon_1awmq_47{visibility:hidden}._trash-icon_1awmq_48{color:var(--warning-color)}._menu-item-label_1awmq_61{display:block}._menu-item_1awmq_61{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;outline:none;touch-action:manipulation;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;display:flex;align-items:center;padding:6px 11px;gap:var(--spacing-2);cursor:pointer;font-size:inherit;line-height:inherit;font-family:inherit;color:inherit}._menu-item_1awmq_61:hover,._menu-item_1awmq_61:focus-visible{color:var(--settings-media-hover-color, white);background-color:var(--settings-media-hover-bg-color, rgb(43 122 188))}:is(._menu-item_1awmq_61:hover,._menu-item_1awmq_61:focus-visible) ._trash-icon_1awmq_48{color:var(--settings-media-hover-color)}._menu-item_1awmq_61[aria-checked=true] ._check-icon_1awmq_47{visibility:visible}._menu-back-button_1awmq_98{display:flex;align-items:center;gap:var(--spacing-1);padding:6px 11px;color:var(--settings-submenu-color, #2d3b45);font-size:inherit;line-height:inherit;font-family:inherit;cursor:pointer;user-select:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;outline:none;border:none;touch-action:manipulation;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}._menu-back-button_1awmq_98:hover,._menu-back-button_1awmq_98:focus{color:var(--settings-media-hover-color, white);background-color:var(--settings-media-hover-bg-color, rgb(43 122 188))}._arrow_1awmq_124{fill:#fff}._menu-hint_1wiu5_1{color:var(--settings-media-submenu-hint-color, #9ea6ad)}._menu-button_1wiu5_5{position:relative;display:flex;align-items:center;width:100%;gap:var(--spacing-1);padding:.375rem .6875rem;color:var(--settings-submenu-color, #2d3b45);font-size:inherit;line-height:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;outline:none;border:none;touch-action:manipulation;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;font-family:inherit}._menu-button_1wiu5_5:hover,._menu-button_1wiu5_5:focus{color:var(--settings-media-hover-color, white);background-color:var(--settings-media-hover-bg-color, rgb(43 122 188))}._menu-button_1wiu5_5:hover ._menu-hint_1wiu5_1,._menu-button_1wiu5_5:focus ._menu-hint_1wiu5_1{color:var(--settings-media-hover-color, white)}._menu-label_1wiu5_37{flex-grow:1;text-align:left}._menu-icon_1wiu5_42{width:1.125rem;height:1.125rem}._switch-track_7nhpo_1{position:relative;background-color:#e8e8e8;width:2.625rem;height:1.75rem;border-radius:.875rem;will-change:background-color;transition:background-color .2s;box-shadow:#d7dade 0 0 0 .0625rem inset;margin:-.25rem 0}@container player (width > 400px) and (height > 300px){._switch-track_7nhpo_1{margin:-.125rem 0}}._switch-thumb_7nhpo_17{background-color:#fff;width:1.5rem;height:1.5rem;border-radius:.75rem;transform:translate(.125rem,.125rem);box-shadow:#e8eaec 0 0 0 .0625rem inset;will-change:transform;transition:transform .2s;display:flex;align-items:center;justify-content:center}._switch-icon_7nhpo_31{width:.875rem;height:.875rem;color:var(--settings-submenu-color)}._switch-body_7nhpo_37{display:flex;align-items:center;border:none;background-color:transparent;text-align:left;font-family:inherit;gap:var(--spacing-1);padding:.375rem .6875rem;color:var(--settings-submenu-color);font-size:inherit;line-height:inherit;cursor:pointer;outline:none;touch-action:manipulation;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}._switch-body_7nhpo_37[aria-checked=true] ._switch-track_7nhpo_1{background-color:#03893d}._switch-body_7nhpo_37[aria-checked=true] ._switch-icon_7nhpo_31{color:#03893d}._switch-body_7nhpo_37[aria-checked=true] ._switch-thumb_7nhpo_17{transform:translate(1rem,.125rem)}._switch-body_7nhpo_37:hover,._switch-body_7nhpo_37:focus-visible{color:var(--settings-media-hover-color);background-color:var(--settings-media-hover-bg-color)}[aria-checked=true]:is(._switch-body_7nhpo_37:hover,._switch-body_7nhpo_37:focus-visible) ._switch-track_7nhpo_1{background-color:#e8e8e8}._switch-label_7nhpo_78{flex-grow:1}._menu-icon_7nhpo_82{width:1.125rem;height:1.125rem}._feedback-overlay_14jdq_1{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;padding:var(--spacing-4);flex-direction:column;justify-content:center;align-items:center;-webkit-user-select:none;user-select:none;pointer-events:none}._feedback-message_14jdq_14{font-weight:300;position:absolute;top:10%;display:flex;justify-content:center;align-items:center;padding:var(--spacing-2);background-color:var(--feedback-message-bg-color, black);color:var(--feedback-message-color, white);border-radius:var(--radius-2);font-size:1rem;line-height:1.5;opacity:.75}._feedback-icon_14jdq_30{box-sizing:border-box;display:inline-flex;color:var(--feedback-icon-color, white);padding:var(--spacing-3);width:4.5rem;height:4.5rem;background-color:var(--feedback-icon-bg-color, black);border-radius:var(--radius-rounded);animation:_feedback-icon-animation_14jdq_1 .2s linear;animation-fill-mode:forwards;will-change:transform,opacity}._feedback-icon_14jdq_30:has(.right){align-self:end}._feedback-icon_14jdq_30:has(.left){align-self:start}._feedback-icon_14jdq_30>svg{width:100%;height:100%}@keyframes _feedback-icon-animation_14jdq_1{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:.5}}@media (max-width: 425px){[data-fullscreen] ._full-screen-button_1xm32_2{display:none}}[data-media-player][data-view-type=audio] ._full-screen-button_1xm32_2{display:none}._gestures-container_1fn3b_1{display:contents}._gesture_1fn3b_1{position:absolute;top:0;right:0;bottom:0;left:0}[data-fullscreen] ._gesture_1fn3b_1{top:3.625rem}button._play-pause-button_vj8da_1{border:none;background:none}._small-layout-overlay_cmaq3_1{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;visibility:hidden;align-items:center;justify-content:center}@container player (max-width: 425px){._small-layout-overlay_cmaq3_1{visibility:visible}}._small-layout-button_cmaq3_14{width:5rem;height:5rem;background-color:#1616164d;display:flex;align-items:center;justify-content:center;border-radius:50%}._small-layout-icon-play_cmaq3_24,._small-layout-icon-pause_cmaq3_30{width:3rem;height:3rem;color:#fff}._small-layout-timestamp_cmaq3_36{position:absolute;left:0;bottom:0;margin:.5rem;display:flex;background:#000c;color:#fff;padding:.375rem .75rem;border-radius:var(--radius-2)}._full-screen-close-icon_cmaq3_49{display:none}[data-fullscreen] ._full-screen-close-icon_cmaq3_49{background-color:transparent;border:none;display:flex;align-items:center;justify-content:center;position:absolute;top:0;left:0;padding:1.25rem;color:#fff;cursor:pointer;-webkit-user-select:none;user-select:none}[data-fullscreen][data-playing] ._full-screen-close-icon_cmaq3_49,[data-media-player][data-playing] ._small-layout-button_cmaq3_14,[data-media-player][data-playing] ._small-layout-timestamp_cmaq3_36{animation:_fade-out_cmaq3_1 1s;animation-delay:.5s;animation-fill-mode:forwards}@keyframes _fade-out_cmaq3_1{0%{opacity:1}to{opacity:0}}._time-indicator_1uygf_1{display:flex;color:#586874;-webkit-user-select:none;user-select:none}[data-fullscreen] ._time-indicator_1uygf_1,[data-darkmode=true] ._time-indicator_1uygf_1{color:#fff}._comment-markers_g0hly_1{display:flex;position:relative;width:100%;height:.375rem;-webkit-user-select:none;user-select:none;pointer-events:none;margin-top:.375rem}._comment-marker_g0hly_1{position:absolute;height:100%;width:.375rem;background-color:var(--comments-indicator-color);border-radius:50%}[data-darkmode=true] ._comment-marker_g0hly_1,[data-fullscreen] ._comment-marker_g0hly_1{background-color:var(--comments-indicator-color-darkmode)}._timeline-wrapper_g0hly_24,._timeline-wrapper-compact_g0hly_25{position:relative;display:flex;flex-direction:column;align-items:center;grid-area:slider}._timeline-wrapper_g0hly_24,._timeline-wrapper-compact_g0hly_25{padding:0 var(--spacing-1)}._timeline-wrapper-compact_g0hly_25:has(._comment-markers_g0hly_1){margin-top:-.375rem}._timeline-wrapper-compact_g0hly_25 ._comment-markers_g0hly_1{margin-top:0}@container player (width > 400px) and (height > 300px){._timeline-wrapper-compact_g0hly_25{padding:0 var(--spacing-3)}}._track_g0hly_53{width:100%;height:.25rem;will-change:height;position:relative;background-color:var(--timeline-track-bg-color, #ccd0d2);border-radius:var(--radius-1);contain:strict;transition:height .15s,border-radius .15s}._thumb_g0hly_66{position:absolute;width:1.125rem;height:1.125rem;background-color:var(--timeline-thumb-color, #2b7abc);border-radius:var(--radius-rounded);cursor:pointer;opacity:0;transform:translate(-50%) translateZ(0);transition:opacity .15s ease-in;left:var(--slider-fill);will-change:left}._root_g0hly_80{display:inline-flex;width:100%;height:1.25rem;position:relative;align-items:center;contain:layout style;outline:none;cursor:pointer;user-select:none;touch-action:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}._root_g0hly_80[data-active] ._track_g0hly_53{border-radius:var(--radius-2);height:.625rem}._root_g0hly_80[data-focus] ._track_g0hly_53{outline:var(--focus-ring);outline-offset:1px;border-radius:2px}._root_g0hly_80[data-active] ._thumb_g0hly_66{opacity:1}._track-inner_g0hly_110{position:absolute;will-change:width;height:100%}._progress_g0hly_116{z-index:0;width:var(--slider-progress, 0%);background-color:var(--timeline-track-progress-bg-color, #adb2b6)}._track-fill_g0hly_122{z-index:1;width:var(--slider-fill, 0%);background-color:var(--timeline-track-fill-bg-color, #2b7abc)}:is([data-fullscreen] ._root_g0hly_80,[data-darkmode=true] ._root_g0hly_80) ._track_g0hly_53{background-color:#333}:is([data-fullscreen] ._root_g0hly_80,[data-darkmode=true] ._root_g0hly_80) ._progress_g0hly_116{background-color:#666}._pins_g0hly_139{display:flex;position:relative;height:2rem;width:100%;-webkit-user-select:none;user-select:none;margin-top:.25rem}._pin-button_g0hly_148{display:flex;background-color:transparent;border:none;padding:0;position:absolute;transform:translate(-50%);cursor:pointer;transition:transform .2s ease-out;touch-action:manipulation;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}._pin-button_g0hly_148:hover,._pin-button_g0hly_148:focus-visible{transform:translate(-50%) scale(1.25);z-index:1}._pin-button_g0hly_148:focus-visible{outline:var(--focus-ring);border-radius:var(--radius-2)}._annotation-pin_g0hly_174{fill:var(--pin-color-1);stroke:var(--pin-color-2)}._annotation-pin_g0hly_174:focus-visible{outline:var(--focus-ring)}._quiz-pin_g0hly_183{fill:var(--pin-color-2);stroke:var(--controls-layout-bg-color)}._quiz-pin_g0hly_183:focus-visible{outline:var(--focus-ring)}._annotation-pin-child_g0hly_192{fill:var(--pin-color-3)}._quiz-pin-child_g0hly_196{fill:#fff;font-size:.875rem}._interactive-pin-container_g0hly_201{position:absolute;top:0;right:0;bottom:0;left:0;padding:0 var(--spacing-2);pointer-events:none}._interactive-pin-wrapper_g0hly_208{position:relative;width:100%;height:100%}._interactive-pin-icon_g0hly_214{transform-box:fill-box;transform-origin:center;transition:transform .2s ease-out}._interactive-pin-icon_g0hly_214[data-open=true]{transform:rotate(45deg)}._interactive-pin_g0hly_201{filter:drop-shadow(0 3px 6px rgba(0 0 0 / .16)) drop-shadow(0 3px 6px rgba(0 0 0 / .1))}._interactive-pin_g0hly_201>._bg_g0hly_228{fill:var(--timeline-thumb-color)}._interactive-pin_g0hly_201>._symbol_g0hly_232{stroke:var(--controls-layout-bg-color)}._interactive-pin-button_g0hly_237{position:absolute;cursor:pointer;transform:translate(-50%);background-color:transparent;border:none;padding:0;display:flex;touch-action:manipulation;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;pointer-events:auto;top:-8px}:is(._interactive-pin-button_g0hly_237:hover,._interactive-pin-button_g0hly_237:focus-visible) ._interactive-pin_g0hly_201>._bg_g0hly_228{fill:#225f92}._interactive-pin-button_g0hly_237:focus-visible{outline:var(--focus-ring);border-radius:var(--radius-2)}._interactive-pin-menu_g0hly_266{box-sizing:border-box;display:flex;flex-direction:column;gap:.25rem;background-color:var(--settings-menu-bg-color, white);padding:.75rem .5rem;border-radius:var(--radius-2);width:200px;z-index:1000;pointer-events:auto;filter:drop-shadow(0 .125rem .1875rem rgba(0 0 0 / .5))}._interactive-pin-menu_g0hly_266:focus-visible{outline:var(--focus-ring)}._interactive-pin-menu-item_g0hly_287{-webkit-user-select:none;user-select:none;font-family:inherit;font-size:1rem;text-rendering:geometricprecision;display:flex;align-items:center;gap:.25rem;color:var(--pin-color-3);padding:.375rem .625rem;border-radius:var(--radius-2);border:1px solid #d7dade;background-color:var(--pin-color-1);cursor:pointer}._interactive-pin-menu-item_g0hly_287:hover{background-color:#e8eaec}._interactive-pin-menu-item_g0hly_287:focus-visible{outline:var(--focus-ring)}._arrow_g0hly_313{fill:#fff}._tooltip_g0hly_317{background-color:var(--tooltip-bg-color);color:#fff;padding:.375rem .75rem;border-radius:var(--radius-2);font-size:.875rem;pointer-events:none}._tooltip-arrow_g0hly_326{fill:var(--tooltip-bg-color)}._wrapper_trdhg_1{display:flex;align-items:center}._track_trdhg_6{width:100%;height:.25rem;will-change:height;background-color:var(--volume-track-bg-color, #ccd0d2);border-radius:var(--radius-1);contain:strict;transition:height .15s,border-radius .15s}._thumb_trdhg_18{position:absolute;width:.875rem;height:.875rem;background-color:var(--volume-thumb-bg-color, #2d3b45);border-radius:var(--radius-rounded);cursor:pointer;opacity:0;transform:translate(-50%) translateZ(0);transition:opacity .15s ease-in;left:var(--slider-fill);will-change:left}._track-fill_trdhg_32{width:var(--slider-fill, 0%);will-change:width;height:100%;background-color:var(--volume-track-fill-bg-color, #2d3b45)}:is([data-fullscreen],[data-darkmode=true]) ._track_trdhg_6{background-color:#666}:is([data-fullscreen],[data-darkmode=true]) ._track-fill_trdhg_32,:is([data-fullscreen],[data-darkmode=true]) ._thumb_trdhg_18{background-color:#f5f5f5}._root_trdhg_51{display:inline-flex;height:1.25rem;align-items:center;contain:layout style;cursor:pointer;user-select:none;touch-action:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;width:0;will-change:width,margin;transition:all .15s;box-sizing:border-box}@media (max-width: 425px) and (hover: none){._root_trdhg_51{display:none}}._root_trdhg_51[data-active] ._track_trdhg_6{border-radius:.125rem;height:.3125rem}._root_trdhg_51[data-focus]{outline:none}._root_trdhg_51[data-focus] ._track_trdhg_6{outline:var(--focus-ring);outline-offset:1px;border-radius:2px}._root_trdhg_51[data-active] ._thumb_trdhg_18{opacity:1}._wrapper_trdhg_1:hover [data-media-volume-slider],[data-media-volume-slider][data-active]{margin-left:.5rem;width:4rem}._root_oemub_1{background-color:var(--controls-layout-bg-color, #f5f5f5);padding:var(--controls-layout-padding-small);box-sizing:border-box;display:grid;align-items:center;border-bottom-left-radius:var(--radius-3);border-bottom-right-radius:var(--radius-3)}@container player (width > 400px) and (height > 300px){._root_oemub_1{padding:var(--controls-layout-padding-medium)}}._normal_oemub_17{grid-template-columns:auto 1fr auto;grid-template-areas:"slider slider slider" "left-controls indicators right-controls"}@container player (width > 400px) and (height > 300px){._normal_oemub_17{padding-top:0}}._compact_oemub_28{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"left-controls slider right-controls"}@container player (width > 425px){._compact_oemub_28{grid-template-columns:auto auto minmax(0,1fr) auto;grid-template-areas:"left-controls indicators slider right-controls"}}[data-fullscreen] ._root_oemub_1,[data-darkmode=true]._root_oemub_1{background-color:#000;padding:var(--controls-layout-padding-large);padding-top:0}[data-fullscreen] ._root_oemub_1:not(:has([data-pins])){position:fixed;bottom:0;width:100%;opacity:0;transition:opacity .3s ease-in-out}[data-fullscreen][data-controls] ._root_oemub_1,[data-fullscreen]:has([role=dialog]) ._root_oemub_1{opacity:1}._left-controls_oemub_58{display:flex;grid-area:left-controls}@container player (width > 400px) and (height > 300px){._left-controls_oemub_58{gap:.5rem}}._right-controls_oemub_67{display:flex;grid-area:right-controls}@container player (width > 400px) and (height > 300px){._right-controls_oemub_67{gap:.5rem}}._indicators_oemub_76{grid-area:indicators;font-size:1rem;overflow:hidden;display:none;margin-left:.25rem}@container player (width > 425px){._indicators_oemub_76{display:block}}@container (height > 300px){._indicators_oemub_76{margin-left:1rem}}[data-media-player]{--volume-track-bg-color: #ccd0d2;--volume-track-fill-bg-color: #2d3b45;--volume-thumb-bg-color: #2d3b45;--feedback-message-bg-color: black;--feedback-message-color: white;--feedback-icon-color: white;--feedback-icon-bg-color: black;--timeline-track-bg-color: #ccd0d2;--timeline-track-progress-bg-color: #adb2b6;--timeline-track-fill-bg-color: #2b7abc;--timeline-progress-bg-color: #adb2b6;--timeline-thumb-color: #2b7abc;--settings-menu-bg-color: white;--settings-submenu-color: #2d3b45;--settings-media-hover-color: white;--settings-media-hover-bg-color: rgb(43 122 188);--settings-media-submenu-hint-color: var(--settings-submenu-color);--captions-background-color: rgba(22 22 22 / .75);--captions-color: white;--captions-base-font-size-small: .75rem;--captions-base-font-size-normal: 1rem;--comments-background-color: rgba(0 0 0 / .8);--comments-color: white;--comments-font-size-small: .75rem;--comments-font-size-normal: .875rem;--comments-font-size-large: 1rem;--comments-author-color: white;--comments-indicator-color: #64707a;--comments-indicator-color-darkmode: #868686;--comments-avatar-size-xss: 1.25rem;--comments-avatar-size-xs: 1.875rem;--comments-avatar-size-s: 2.5rem;--controls-layout-bg-color: #f5f5f5;--controls-layout-padding-small: .25rem;--controls-layout-padding-medium: .5rem;--controls-layout-padding-large: .75rem;--media-button-icon-color: #2d3b45;--media-button-icon-hover-color: #e0e0e0;--focus-outline-color: #2b7abc;--spacing-1: .5rem;--spacing-2: .625rem;--spacing-3: 1rem;--spacing-4: 2rem;--radius-1: .0625rem;--radius-2: .25rem;--radius-3: .625rem;--radius-rounded: 50%;--media-button-area-size-small: 2rem;--media-button-area-size-medium: 2.5rem;--media-button-icon-size-small: 1rem;--media-button-icon-size-medium: 1.25rem;--action-buttons-color: #0374b5;--action-buttons-hover-color: #235f93;--action-buttons-border-color: #025483;--warning-color: #e62429;--pin-color-1: #f2f4f4;--pin-color-2: #586874;--pin-color-3: #273540;--pin-light-color: #9ea6ad;--tooltip-bg-color: #334451;--focus-ring: 2px solid var(--focus-outline-color);outline:none;position:relative;font-family:Lato,sans-serif;display:grid;container:player / size;width:100%;height:100%;grid-template-rows:1fr auto;overflow:hidden}[data-media-player]:focus-visible{outline:var(--focus-ring)}[data-media-provider]{display:flex;position:relative;background-color:#000;contain:paint;border-top-left-radius:var(--radius-3);border-top-right-radius:var(--radius-3)}[data-media-provider] video,[data-media-provider] iframe{width:100%;height:100%;object-fit:contain;position:absolute}.audio-layout-wrapper{display:flex;align-items:center;justify-content:center;position:relative;background-color:var(--controls-layout-bg-color);width:100%;border-top-left-radius:var(--radius-3);border-top-right-radius:var(--radius-3)}.controls-button{background-color:transparent;border:none;border-radius:var(--radius-2);cursor:pointer;margin:0;display:flex;align-items:center;justify-content:center;transition:background-color .2s;width:var(--media-button-area-size-small);height:var(--media-button-area-size-small)}.controls-button[data-hover],.controls-button:hover{background-color:var(--media-button-icon-hover-color, #e0e0e0)}.controls-button:focus-visible,.controls-button[data-focus]{outline:var(--focus-ring)}.controls-button-icon{color:var(--media-button-icon-color);width:var(--media-button-icon-size-small);height:var(--media-button-icon-size-small)}@container player (width > 400px) and (height > 300px){.controls-button-icon{width:var(--media-button-icon-size-medium);height:var(--media-button-icon-size-medium)}}[data-fullscreen] .controls-button{width:var(--media-button-area-size-medium);height:var(--media-button-area-size-medium)}[data-fullscreen]:not([data-controls]){cursor:none}:is([data-fullscreen],[data-darkmode=true]) .controls-button-icon{color:#fff}:is([data-fullscreen],[data-darkmode=true]) .controls-button[data-hover],:is([data-fullscreen],[data-darkmode=true]) .controls-button:hover{background-color:#ffffff26}.icon-rotate{transition:transform .2s ease-out}.controls-button[aria-expanded=true] .icon-rotate{transform:rotate(60deg);transition:transform .1s ease-in}.vds-blocker{top:0;right:0;bottom:0;left:0;position:absolute;pointer-events:none}
|
|
@@ -1,264 +0,0 @@
|
|
|
1
|
-
var N = Object.defineProperty;
|
|
2
|
-
var x = (a) => {
|
|
3
|
-
throw TypeError(a);
|
|
4
|
-
};
|
|
5
|
-
var A = (a, n, e) => n in a ? N(a, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : a[n] = e;
|
|
6
|
-
var v = (a, n, e) => A(a, typeof n != "symbol" ? n + "" : n, e), E = (a, n, e) => n.has(a) || x("Cannot " + e);
|
|
7
|
-
var s = (a, n, e) => (E(a, n, "read from private field"), e ? e.call(a) : n.get(a)), p = (a, n, e) => n.has(a) ? x("Cannot add the same private member more than once") : n instanceof WeakSet ? n.add(a) : n.set(a, e), c = (a, n, e, t) => (E(a, n, "write to private field"), t ? t.call(a, e) : n.set(a, e), e), r = (a, n, e) => (E(a, n, "access private method"), e);
|
|
8
|
-
import { E as G, d as H, x as Q, p as W, y as X, a as Z, z as ee, Y as b, J as te, K as $, T as j, M as se } from "./vidstack-CjqtyAQk.js";
|
|
9
|
-
const ie = /(?:youtu\.be|youtube|youtube\.com|youtube-nocookie\.com)(?:\/shorts)?\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=|)((?:\w|-){11})/, O = /* @__PURE__ */ new Map(), R = /* @__PURE__ */ new Map();
|
|
10
|
-
function z(a) {
|
|
11
|
-
var n;
|
|
12
|
-
return (n = a.match(ie)) == null ? void 0 : n[1];
|
|
13
|
-
}
|
|
14
|
-
async function ae(a, n) {
|
|
15
|
-
if (O.has(a)) return O.get(a);
|
|
16
|
-
if (R.has(a)) return R.get(a);
|
|
17
|
-
const e = new Promise(async (t) => {
|
|
18
|
-
const u = ["maxresdefault", "sddefault", "hqdefault"];
|
|
19
|
-
for (const h of u)
|
|
20
|
-
for (const d of [!0, !1]) {
|
|
21
|
-
const l = oe(a, h, d);
|
|
22
|
-
if ((await fetch(l, {
|
|
23
|
-
mode: "no-cors",
|
|
24
|
-
signal: n.signal
|
|
25
|
-
})).status < 400) {
|
|
26
|
-
O.set(a, l), t(l);
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}).catch(() => "").finally(() => R.delete(a));
|
|
31
|
-
return R.set(a, e), e;
|
|
32
|
-
}
|
|
33
|
-
function oe(a, n, e) {
|
|
34
|
-
return `https://i.ytimg.com/${e ? "vi_webp" : "vi"}/${a}/${n}.${e ? "webp" : "jpg"}`;
|
|
35
|
-
}
|
|
36
|
-
const le = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
37
|
-
__proto__: null,
|
|
38
|
-
findYouTubePoster: ae,
|
|
39
|
-
resolveYouTubeVideoId: z
|
|
40
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
41
|
-
var o, w, k, S, P, g, y, i, re, ue, B, m, F, L, U, C, V, I, q, Y, _, J;
|
|
42
|
-
class ne extends G {
|
|
43
|
-
constructor(e, t) {
|
|
44
|
-
super(e);
|
|
45
|
-
p(this, i);
|
|
46
|
-
v(this, "$$PROVIDER_TYPE", "YOUTUBE");
|
|
47
|
-
v(this, "scope", H());
|
|
48
|
-
p(this, o);
|
|
49
|
-
p(this, w, Q(""));
|
|
50
|
-
p(this, k, -1);
|
|
51
|
-
p(this, S, null);
|
|
52
|
-
p(this, P, -1);
|
|
53
|
-
p(this, g, !1);
|
|
54
|
-
p(this, y, /* @__PURE__ */ new Map());
|
|
55
|
-
/**
|
|
56
|
-
* Sets the player's interface language. The parameter value is an ISO 639-1 two-letter
|
|
57
|
-
* language code or a fully specified locale. For example, fr and fr-ca are both valid values.
|
|
58
|
-
* Other language input codes, such as IETF language tags (BCP 47) might also be handled properly.
|
|
59
|
-
*
|
|
60
|
-
* The interface language is used for tooltips in the player and also affects the default caption
|
|
61
|
-
* track. Note that YouTube might select a different caption track language for a particular
|
|
62
|
-
* user based on the user's individual language preferences and the availability of caption tracks.
|
|
63
|
-
*
|
|
64
|
-
* @defaultValue 'en'
|
|
65
|
-
*/
|
|
66
|
-
v(this, "language", "en");
|
|
67
|
-
v(this, "color", "red");
|
|
68
|
-
/**
|
|
69
|
-
* Whether cookies should be enabled on the embed. This is turned off by default to be
|
|
70
|
-
* GDPR-compliant.
|
|
71
|
-
*
|
|
72
|
-
* @defaultValue `false`
|
|
73
|
-
*/
|
|
74
|
-
v(this, "cookies", !1);
|
|
75
|
-
c(this, o, t);
|
|
76
|
-
}
|
|
77
|
-
get currentSrc() {
|
|
78
|
-
return s(this, S);
|
|
79
|
-
}
|
|
80
|
-
get type() {
|
|
81
|
-
return "youtube";
|
|
82
|
-
}
|
|
83
|
-
get videoId() {
|
|
84
|
-
return s(this, w).call(this);
|
|
85
|
-
}
|
|
86
|
-
preconnect() {
|
|
87
|
-
W(this.getOrigin());
|
|
88
|
-
}
|
|
89
|
-
setup() {
|
|
90
|
-
super.setup(), X(r(this, i, B).bind(this)), s(this, o).notify("provider-setup", this);
|
|
91
|
-
}
|
|
92
|
-
destroy() {
|
|
93
|
-
r(this, i, Y).call(this);
|
|
94
|
-
const e = "provider destroyed";
|
|
95
|
-
for (const t of s(this, y).values())
|
|
96
|
-
for (const { reject: u } of t) u(e);
|
|
97
|
-
s(this, y).clear();
|
|
98
|
-
}
|
|
99
|
-
async play() {
|
|
100
|
-
return r(this, i, m).call(this, "playVideo");
|
|
101
|
-
}
|
|
102
|
-
async pause() {
|
|
103
|
-
return r(this, i, m).call(this, "pauseVideo");
|
|
104
|
-
}
|
|
105
|
-
setMuted(e) {
|
|
106
|
-
e ? r(this, i, m).call(this, "mute") : r(this, i, m).call(this, "unMute");
|
|
107
|
-
}
|
|
108
|
-
setCurrentTime(e) {
|
|
109
|
-
r(this, i, m).call(this, "seekTo", e), s(this, o).notify("seeking", e);
|
|
110
|
-
}
|
|
111
|
-
setVolume(e) {
|
|
112
|
-
r(this, i, m).call(this, "setVolume", e * 100);
|
|
113
|
-
}
|
|
114
|
-
setPlaybackRate(e) {
|
|
115
|
-
r(this, i, m).call(this, "setPlaybackRate", e);
|
|
116
|
-
}
|
|
117
|
-
async loadSource(e) {
|
|
118
|
-
if (!Z(e.src)) {
|
|
119
|
-
c(this, S, null), s(this, w).set("");
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
const t = z(e.src);
|
|
123
|
-
s(this, w).set(t ?? ""), c(this, S, e);
|
|
124
|
-
}
|
|
125
|
-
getOrigin() {
|
|
126
|
-
return this.cookies ? "https://www.youtube.com" : "https://www.youtube-nocookie.com";
|
|
127
|
-
}
|
|
128
|
-
buildParams() {
|
|
129
|
-
const { keyDisabled: e } = s(this, o).$props, { muted: t, playsInline: u, nativeControls: h } = s(this, o).$state, d = h();
|
|
130
|
-
return {
|
|
131
|
-
rel: 0,
|
|
132
|
-
autoplay: 0,
|
|
133
|
-
cc_lang_pref: this.language,
|
|
134
|
-
cc_load_policy: d ? 1 : void 0,
|
|
135
|
-
color: this.color,
|
|
136
|
-
controls: d ? 1 : 0,
|
|
137
|
-
disablekb: !d || e() ? 1 : 0,
|
|
138
|
-
enablejsapi: 1,
|
|
139
|
-
fs: 1,
|
|
140
|
-
hl: this.language,
|
|
141
|
-
iv_load_policy: d ? 1 : 3,
|
|
142
|
-
mute: t() ? 1 : 0,
|
|
143
|
-
playsinline: u() ? 1 : 0
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
onLoad() {
|
|
147
|
-
window.setTimeout(() => this.postMessage({ event: "listening" }), 100);
|
|
148
|
-
}
|
|
149
|
-
onMessage({ info: e }, t) {
|
|
150
|
-
var l;
|
|
151
|
-
if (!e) return;
|
|
152
|
-
const { title: u, intrinsicDuration: h, playbackRate: d } = s(this, o).$state;
|
|
153
|
-
if (te(e.videoData) && e.videoData.title !== u() && s(this, o).notify("title-change", e.videoData.title, t), $(e.duration) && e.duration !== h()) {
|
|
154
|
-
if ($(e.videoLoadedFraction)) {
|
|
155
|
-
const f = ((l = e.progressState) == null ? void 0 : l.loaded) ?? e.videoLoadedFraction * e.duration, T = new j(0, e.duration);
|
|
156
|
-
r(this, i, C).call(this, f, T, t);
|
|
157
|
-
}
|
|
158
|
-
s(this, o).notify("duration-change", e.duration, t);
|
|
159
|
-
}
|
|
160
|
-
if ($(e.playbackRate) && e.playbackRate !== d() && s(this, o).notify("rate-change", e.playbackRate, t), e.progressState) {
|
|
161
|
-
const { current: f, seekableStart: T, seekableEnd: M, loaded: K, duration: D } = e.progressState;
|
|
162
|
-
r(this, i, U).call(this, f, t), r(this, i, C).call(this, K, new j(T, M), t), D !== h() && s(this, o).notify("duration-change", D, t);
|
|
163
|
-
}
|
|
164
|
-
if ($(e.volume) && se(e.muted) && !s(this, g)) {
|
|
165
|
-
const f = {
|
|
166
|
-
muted: e.muted,
|
|
167
|
-
volume: e.volume / 100
|
|
168
|
-
};
|
|
169
|
-
s(this, o).notify("volume-change", f, t);
|
|
170
|
-
}
|
|
171
|
-
$(e.playerState) && e.playerState !== s(this, k) && r(this, i, q).call(this, e.playerState, t);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
o = new WeakMap(), w = new WeakMap(), k = new WeakMap(), S = new WeakMap(), P = new WeakMap(), g = new WeakMap(), y = new WeakMap(), i = new WeakSet(), re = function(e) {
|
|
175
|
-
var t;
|
|
176
|
-
(t = r(this, i, _).call(this, "playVideo")) == null || t.reject(e);
|
|
177
|
-
}, ue = function(e) {
|
|
178
|
-
var t;
|
|
179
|
-
(t = r(this, i, _).call(this, "pauseVideo")) == null || t.reject(e);
|
|
180
|
-
}, B = function() {
|
|
181
|
-
r(this, i, Y).call(this);
|
|
182
|
-
const e = s(this, w).call(this);
|
|
183
|
-
if (!e) {
|
|
184
|
-
this.src.set("");
|
|
185
|
-
return;
|
|
186
|
-
}
|
|
187
|
-
this.src.set(`${this.getOrigin()}/embed/${e}`), s(this, o).notify("load-start");
|
|
188
|
-
}, m = function(e, t) {
|
|
189
|
-
let u = ee(), h = s(this, y).get(e);
|
|
190
|
-
return h || s(this, y).set(e, h = []), h.push(u), this.postMessage({
|
|
191
|
-
event: "command",
|
|
192
|
-
func: e,
|
|
193
|
-
args: t ? [t] : void 0
|
|
194
|
-
}), u.promise;
|
|
195
|
-
}, F = function(e) {
|
|
196
|
-
s(this, o).notify("loaded-metadata"), s(this, o).notify("loaded-data"), s(this, o).delegate.ready(void 0, e);
|
|
197
|
-
}, L = function(e) {
|
|
198
|
-
var t;
|
|
199
|
-
(t = r(this, i, _).call(this, "pauseVideo")) == null || t.resolve(), s(this, o).notify("pause", void 0, e);
|
|
200
|
-
}, U = function(e, t) {
|
|
201
|
-
const { duration: u, realCurrentTime: h } = s(this, o).$state, d = s(this, k) === b.Ended, l = d ? u() : e;
|
|
202
|
-
s(this, o).notify("time-change", l, t), !d && Math.abs(l - h()) > 1 && s(this, o).notify("seeking", l, t);
|
|
203
|
-
}, C = function(e, t, u) {
|
|
204
|
-
const h = {
|
|
205
|
-
buffered: new j(0, e),
|
|
206
|
-
seekable: t
|
|
207
|
-
};
|
|
208
|
-
s(this, o).notify("progress", h, u);
|
|
209
|
-
const { seeking: d, realCurrentTime: l } = s(this, o).$state;
|
|
210
|
-
d() && e > l() && r(this, i, V).call(this, u);
|
|
211
|
-
}, V = function(e) {
|
|
212
|
-
const { paused: t, realCurrentTime: u } = s(this, o).$state;
|
|
213
|
-
window.clearTimeout(s(this, P)), c(this, P, window.setTimeout(
|
|
214
|
-
() => {
|
|
215
|
-
s(this, o).notify("seeked", u(), e), c(this, P, -1);
|
|
216
|
-
},
|
|
217
|
-
t() ? 100 : 0
|
|
218
|
-
));
|
|
219
|
-
}, I = function(e) {
|
|
220
|
-
const { seeking: t } = s(this, o).$state;
|
|
221
|
-
t() && r(this, i, V).call(this, e), s(this, o).notify("pause", void 0, e), s(this, o).notify("end", void 0, e);
|
|
222
|
-
}, q = function(e, t) {
|
|
223
|
-
var M;
|
|
224
|
-
const { paused: u, seeking: h } = s(this, o).$state, d = e === b.Playing, l = e === b.Buffering, f = r(this, i, J).call(this, "playVideo"), T = u() && (l || d);
|
|
225
|
-
if (l && s(this, o).notify("waiting", void 0, t), h() && d && r(this, i, V).call(this, t), s(this, g) && d) {
|
|
226
|
-
this.pause(), c(this, g, !1), this.setMuted(s(this, o).$state.muted());
|
|
227
|
-
return;
|
|
228
|
-
}
|
|
229
|
-
if (!f && T) {
|
|
230
|
-
c(this, g, !0), this.setMuted(!0);
|
|
231
|
-
return;
|
|
232
|
-
}
|
|
233
|
-
switch (T && ((M = r(this, i, _).call(this, "playVideo")) == null || M.resolve(), s(this, o).notify("play", void 0, t)), e) {
|
|
234
|
-
case b.Cued:
|
|
235
|
-
r(this, i, F).call(this, t);
|
|
236
|
-
break;
|
|
237
|
-
case b.Playing:
|
|
238
|
-
s(this, o).notify("playing", void 0, t);
|
|
239
|
-
break;
|
|
240
|
-
case b.Paused:
|
|
241
|
-
r(this, i, L).call(this, t);
|
|
242
|
-
break;
|
|
243
|
-
case b.Ended:
|
|
244
|
-
r(this, i, I).call(this, t);
|
|
245
|
-
break;
|
|
246
|
-
}
|
|
247
|
-
c(this, k, e);
|
|
248
|
-
}, Y = function() {
|
|
249
|
-
c(this, k, -1), c(this, P, -1), c(this, g, !1);
|
|
250
|
-
}, _ = function(e) {
|
|
251
|
-
var t;
|
|
252
|
-
return (t = s(this, y).get(e)) == null ? void 0 : t.shift();
|
|
253
|
-
}, J = function(e) {
|
|
254
|
-
var t;
|
|
255
|
-
return !!((t = s(this, y).get(e)) != null && t.length);
|
|
256
|
-
};
|
|
257
|
-
const ce = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
258
|
-
__proto__: null,
|
|
259
|
-
YouTubeProvider: ne
|
|
260
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
261
|
-
export {
|
|
262
|
-
ce as p,
|
|
263
|
-
le as u
|
|
264
|
-
};
|