@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.
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instructure/studio-player",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "private": false,
5
5
  "description": "Next generation media player for Instructure",
6
6
  "module": "./dist/studio-player.es.js",
@@ -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
- };