@glitchlab/vue-video-player 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,19 +1,27 @@
1
- import { defineComponent as T, ref as w, onMounted as fe, watch as F, onBeforeUnmount as X, openBlock as i, createElementBlock as v, normalizeClass as C, renderSlot as ke, createElementVNode as s, computed as Z, createVNode as j, toDisplayString as q, Fragment as oe, renderList as ae, createCommentVNode as M, createBlock as U, normalizeStyle as ce, unref as J, withCtx as xe } from "vue";
2
- import ee from "hls.js";
3
- function he(t, a, l) {
1
+ import { defineComponent as S, ref as k, onMounted as be, watch as R, onBeforeUnmount as ne, openBlock as i, createElementBlock as v, normalizeClass as y, renderSlot as Ee, createElementVNode as l, computed as N, createVNode as U, toDisplayString as O, Fragment as oe, renderList as ae, createCommentVNode as T, createBlock as j, normalizeStyle as ge, unref as ee, withCtx as Se } from "vue";
2
+ import J from "hls.js";
3
+ function xe(t, o, s) {
4
4
  const e = t == null ? void 0 : t.trim();
5
5
  if (e) return e;
6
- if (a) {
6
+ if (o) {
7
7
  try {
8
- const m = new Intl.DisplayNames(void 0, { type: "language" }).of(a);
9
- if (m && m !== a) return m;
8
+ const a = new Intl.DisplayNames(void 0, { type: "language" }).of(o);
9
+ if (a && a !== o) return a;
10
10
  } catch {
11
11
  }
12
- return a;
12
+ return o;
13
13
  }
14
- return `Audio ${l + 1}`;
14
+ return `Audio ${s + 1}`;
15
15
  }
16
- const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "poster"], Ee = /* @__PURE__ */ T({
16
+ const He = {
17
+ index: -1,
18
+ height: 0,
19
+ label: "Auto"
20
+ };
21
+ function Ae(t, o) {
22
+ return t > 0 ? `${t}p` : `Level ${o + 1}`;
23
+ }
24
+ const Be = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "poster"], Ve = /* @__PURE__ */ S({
17
25
  __name: "HLSPlayer",
18
26
  props: {
19
27
  src: {},
@@ -27,95 +35,113 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
27
35
  preload: { default: "metadata" },
28
36
  poster: {},
29
37
  class: {},
30
- audioTrackIndex: { default: -1 }
38
+ audioTrackIndex: { default: -1 },
39
+ qualityLevelIndex: { default: -1 }
31
40
  },
32
- emits: ["play", "pause", "audio-tracks"],
33
- setup(t, { expose: a, emit: l }) {
34
- const e = t, o = l, m = w(null), g = w(null);
35
- let p, L;
36
- const P = globalThis.window !== void 0 && ee.isSupported(), x = (r) => !!e.isHls || P && r.endsWith(".m3u8");
37
- function _() {
38
- L == null || L(), L = void 0, p == null || p(), p = void 0, g.value && (g.value.destroy(), g.value = null);
39
- const r = m.value;
40
- if (r) {
41
- for (r.pause(), r.removeAttribute("src"); r.firstChild; ) r.firstChild.remove();
42
- r.load(), o("audio-tracks", []);
41
+ emits: ["play", "pause", "audio-tracks", "quality-levels", "current-level"],
42
+ setup(t, { expose: o, emit: s }) {
43
+ const e = t, f = s, a = k(null), w = k(null);
44
+ let m, $;
45
+ const E = globalThis.window !== void 0 && J.isSupported(), _ = (u) => !!e.isHls || E && u.endsWith(".m3u8");
46
+ function A() {
47
+ $ == null || $(), $ = void 0, m == null || m(), m = void 0, w.value && (w.value.destroy(), w.value = null);
48
+ const u = a.value;
49
+ if (u) {
50
+ for (u.pause(), u.removeAttribute("src"); u.firstChild; ) u.firstChild.remove();
51
+ u.load(), f("audio-tracks", []), f("quality-levels", []), f("current-level", -1);
43
52
  }
44
53
  }
45
- function k(r) {
46
- var R, H, A;
47
- const b = m.value;
48
- if (!b || !r) return;
49
- _();
50
- const E = () => {
51
- e.autoPlay && b.play().catch(() => {
54
+ function b(u) {
55
+ var W, M, Z;
56
+ const C = a.value;
57
+ if (!C || !u) return;
58
+ A();
59
+ const B = () => {
60
+ e.autoPlay && C.play().catch(() => {
52
61
  });
53
62
  };
54
- if (x(r)) {
55
- const y = new ee(e.hlsConfig);
56
- g.value = y;
57
- const I = () => {
58
- const D = y.audioTracks.map((B, N) => ({
59
- index: N,
60
- label: he(B.name, B.lang, N),
61
- lang: B.lang || void 0
63
+ if (_(u)) {
64
+ const g = new J(e.hlsConfig);
65
+ w.value = g;
66
+ const P = () => {
67
+ const I = g.audioTracks.map((H, z) => ({
68
+ index: z,
69
+ label: xe(H.name, H.lang, z),
70
+ lang: H.lang || void 0
71
+ }));
72
+ f("audio-tracks", I);
73
+ }, V = () => {
74
+ const I = g.levels.map((H, z) => ({
75
+ index: z,
76
+ height: H.height || 0,
77
+ label: Ae(H.height || 0, z)
62
78
  }));
63
- o("audio-tracks", D);
79
+ f("quality-levels", I);
64
80
  };
65
- y.on(ee.Events.MANIFEST_PARSED, E), y.on(ee.Events.AUDIO_TRACKS_UPDATED, I), y.on(ee.Events.AUDIO_TRACK_SWITCHED, I), y.on(ee.Events.ERROR, (D, B) => {
66
- B.fatal && (y.destroy(), g.value = null);
67
- }), y.attachMedia(b), y.loadSource(r);
81
+ g.on(J.Events.MANIFEST_PARSED, B), g.on(J.Events.MANIFEST_PARSED, V), g.on(J.Events.LEVELS_UPDATED, V), g.on(J.Events.LEVEL_SWITCHED, (I, H) => {
82
+ f("current-level", H.level);
83
+ }), g.on(J.Events.AUDIO_TRACKS_UPDATED, P), g.on(J.Events.AUDIO_TRACK_SWITCHED, P), g.on(J.Events.ERROR, (I, H) => {
84
+ H.fatal && (g.destroy(), w.value = null);
85
+ }), g.attachMedia(C), g.loadSource(u);
68
86
  } else {
69
- b.src = r, b.load(), b.addEventListener("loadedmetadata", E, { once: !0 }), L = () => {
70
- b.removeEventListener("loadedmetadata", E);
87
+ C.src = u, C.load(), C.addEventListener("loadedmetadata", B, { once: !0 }), $ = () => {
88
+ C.removeEventListener("loadedmetadata", B);
71
89
  };
72
- const y = b.audioTracks;
73
- if (y) {
74
- const I = () => {
75
- const D = [];
76
- for (let B = 0; B < y.length; B++) {
77
- const N = y[B];
78
- D.push({
79
- index: B,
80
- label: he(N.label, N.language, B),
81
- lang: N.language || void 0
90
+ const g = C.audioTracks;
91
+ if (g) {
92
+ const P = () => {
93
+ const V = [];
94
+ for (let I = 0; I < g.length; I++) {
95
+ const H = g[I];
96
+ V.push({
97
+ index: I,
98
+ label: xe(H.label, H.language, I),
99
+ lang: H.language || void 0
82
100
  });
83
101
  }
84
- o("audio-tracks", D);
102
+ f("audio-tracks", V);
85
103
  };
86
- (R = y.addEventListener) == null || R.call(y, "addtrack", I), (H = y.addEventListener) == null || H.call(y, "removetrack", I), (A = y.addEventListener) == null || A.call(y, "change", I), y.length > 0 && I(), p = () => {
87
- var D, B, N;
88
- (D = y.removeEventListener) == null || D.call(y, "addtrack", I), (B = y.removeEventListener) == null || B.call(y, "removetrack", I), (N = y.removeEventListener) == null || N.call(y, "change", I);
104
+ (W = g.addEventListener) == null || W.call(g, "addtrack", P), (M = g.addEventListener) == null || M.call(g, "removetrack", P), (Z = g.addEventListener) == null || Z.call(g, "change", P), g.length > 0 && P(), m = () => {
105
+ var V, I, H;
106
+ (V = g.removeEventListener) == null || V.call(g, "addtrack", P), (I = g.removeEventListener) == null || I.call(g, "removetrack", P), (H = g.removeEventListener) == null || H.call(g, "change", P);
89
107
  };
90
108
  }
91
109
  }
92
110
  }
93
- function h(r) {
94
- var R;
95
- if (r == null || r < 0) return;
96
- const b = g.value;
97
- if (b) {
98
- b.audioTrack !== r && (b.audioTrack = r);
111
+ function h(u) {
112
+ var W;
113
+ if (u == null || u < 0) return;
114
+ const C = w.value;
115
+ if (C) {
116
+ C.audioTrack !== u && (C.audioTrack = u);
99
117
  return;
100
118
  }
101
- const E = (R = m.value) == null ? void 0 : R.audioTracks;
102
- if (E)
103
- for (let H = 0; H < E.length; H++)
104
- E[H].enabled = H === r;
119
+ const B = (W = a.value) == null ? void 0 : W.audioTracks;
120
+ if (B)
121
+ for (let M = 0; M < B.length; M++)
122
+ B[M].enabled = M === u;
105
123
  }
106
- return fe(() => {
107
- e.src && k(e.src);
108
- }), F(
124
+ function x(u) {
125
+ if (u == null) return;
126
+ const C = w.value;
127
+ C && C.currentLevel !== u && (C.currentLevel = u);
128
+ }
129
+ return be(() => {
130
+ e.src && b(e.src);
131
+ }), R(
109
132
  () => e.src,
110
- (r) => {
111
- r && k(r);
133
+ (u) => {
134
+ u && b(u);
112
135
  }
113
- ), F(
136
+ ), R(
114
137
  () => e.audioTrackIndex,
115
- (r) => h(r)
116
- ), X(_), a({ videoEl: m }), (r, b) => (i(), v("video", {
138
+ (u) => h(u)
139
+ ), R(
140
+ () => e.qualityLevelIndex,
141
+ (u) => x(u)
142
+ ), ne(A), o({ videoEl: a }), (u, C) => (i(), v("video", {
117
143
  ref_key: "videoEl",
118
- ref: m,
144
+ ref: a,
119
145
  muted: t.muted,
120
146
  loop: t.loop,
121
147
  controls: t.controls,
@@ -123,22 +149,22 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
123
149
  playsinline: t.playsInline,
124
150
  preload: t.preload,
125
151
  poster: t.poster,
126
- class: C(e.class),
127
- onPlay: b[0] || (b[0] = (E) => o("play")),
128
- onPause: b[1] || (b[1] = (E) => o("pause"))
152
+ class: y(e.class),
153
+ onPlay: C[0] || (C[0] = (B) => f("play")),
154
+ onPause: C[1] || (C[1] = (B) => f("pause"))
129
155
  }, [
130
- ke(r.$slots, "default")
131
- ], 42, _e));
156
+ Ee(u.$slots, "default")
157
+ ], 42, Be));
132
158
  }
133
- }), $e = { name: "IconAudio" }, Le = /* @__PURE__ */ T({
134
- ...$e,
159
+ }), qe = { name: "IconAudio" }, De = /* @__PURE__ */ S({
160
+ ...qe,
135
161
  props: {
136
162
  class: {}
137
163
  },
138
164
  setup(t) {
139
- const a = t;
140
- return (l, e) => (i(), v("svg", {
141
- class: C(["gvp-icon", a.class]),
165
+ const o = t;
166
+ return (s, e) => (i(), v("svg", {
167
+ class: y(["gvp-icon", o.class]),
142
168
  width: "16",
143
169
  height: "16",
144
170
  viewBox: "0 0 24 24",
@@ -146,13 +172,13 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
146
172
  xmlns: "http://www.w3.org/2000/svg",
147
173
  "aria-hidden": "true"
148
174
  }, [...e[0] || (e[0] = [
149
- s("path", {
175
+ l("path", {
150
176
  d: "M3 14V10C3 9.44772 3.44772 9 4 9H6.58579C6.851 9 7.10536 8.89464 7.29289 8.70711L11.2929 4.70711C11.9229 4.07714 13 4.52331 13 5.41421V18.5858C13 19.4767 11.9229 19.9229 11.2929 19.2929L7.29289 15.2929C7.10536 15.1054 6.851 15 6.58579 15H4C3.44772 15 3 14.5523 3 14Z",
151
177
  stroke: "currentColor",
152
178
  "stroke-width": "1.5",
153
179
  "stroke-linejoin": "round"
154
180
  }, null, -1),
155
- s("path", {
181
+ l("path", {
156
182
  d: "M16.5 8C17.5 9 18 10.5 18 12C18 13.5 17.5 15 16.5 16M19 5.5C20.5 7 21.5 9.5 21.5 12C21.5 14.5 20.5 17 19 18.5",
157
183
  stroke: "currentColor",
158
184
  "stroke-width": "1.5",
@@ -160,15 +186,15 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
160
186
  }, null, -1)
161
187
  ])], 2));
162
188
  }
163
- }), Pe = { name: "IconChevron" }, ye = /* @__PURE__ */ T({
164
- ...Pe,
189
+ }), Re = { name: "IconChevron" }, Le = /* @__PURE__ */ S({
190
+ ...Re,
165
191
  props: {
166
192
  class: {}
167
193
  },
168
194
  setup(t) {
169
- const a = t;
170
- return (l, e) => (i(), v("svg", {
171
- class: C(["gvp-icon", a.class]),
195
+ const o = t;
196
+ return (s, e) => (i(), v("svg", {
197
+ class: y(["gvp-icon", o.class]),
172
198
  width: "12",
173
199
  height: "12",
174
200
  viewBox: "0 0 24 24",
@@ -176,7 +202,7 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
176
202
  xmlns: "http://www.w3.org/2000/svg",
177
203
  "aria-hidden": "true"
178
204
  }, [...e[0] || (e[0] = [
179
- s("path", {
205
+ l("path", {
180
206
  d: "M6 9L12 15L18 9",
181
207
  stroke: "currentColor",
182
208
  "stroke-width": "2",
@@ -185,80 +211,80 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
185
211
  }, null, -1)
186
212
  ])], 2));
187
213
  }
188
- }), Me = ["aria-expanded"], Te = { class: "gvp-audio-label" }, Ie = {
214
+ }), Fe = ["aria-expanded"], Ne = { class: "gvp-audio-label" }, Oe = {
189
215
  key: 0,
190
216
  class: "gvp-audio-menu",
191
217
  role: "listbox",
192
218
  "aria-label": "Audio tracks"
193
- }, Se = ["aria-selected", "onClick"], He = /* @__PURE__ */ T({
219
+ }, Ue = ["aria-selected", "onClick"], Ze = /* @__PURE__ */ S({
194
220
  __name: "AudioTrackSwitcher",
195
221
  props: {
196
222
  tracks: {},
197
223
  activeIndex: {}
198
224
  },
199
225
  emits: ["select"],
200
- setup(t, { emit: a }) {
201
- const l = t, e = a, o = w(!1), m = w(null), g = Z(
202
- () => l.tracks.find((x) => x.index === l.activeIndex) ?? l.tracks[0]
226
+ setup(t, { emit: o }) {
227
+ const s = t, e = o, f = k(!1), a = k(null), w = N(
228
+ () => s.tracks.find((_) => _.index === s.activeIndex) ?? s.tracks[0]
203
229
  );
204
- function p(x) {
205
- m.value && !m.value.contains(x.target) && (o.value = !1);
230
+ function m(_) {
231
+ a.value && !a.value.contains(_.target) && (f.value = !1);
206
232
  }
207
- function L(x) {
208
- x.key === "Escape" && (o.value = !1);
233
+ function $(_) {
234
+ _.key === "Escape" && (f.value = !1);
209
235
  }
210
- F(o, (x) => {
211
- x ? (document.addEventListener("mousedown", p), document.addEventListener("keydown", L)) : (document.removeEventListener("mousedown", p), document.removeEventListener("keydown", L));
212
- }), X(() => {
213
- document.removeEventListener("mousedown", p), document.removeEventListener("keydown", L);
236
+ R(f, (_) => {
237
+ _ ? (document.addEventListener("mousedown", m), document.addEventListener("keydown", $)) : (document.removeEventListener("mousedown", m), document.removeEventListener("keydown", $));
238
+ }), ne(() => {
239
+ document.removeEventListener("mousedown", m), document.removeEventListener("keydown", $);
214
240
  });
215
- function P(x) {
216
- e("select", x), o.value = !1;
241
+ function E(_) {
242
+ e("select", _), f.value = !1;
217
243
  }
218
- return (x, _) => {
219
- var k;
244
+ return (_, A) => {
245
+ var b;
220
246
  return i(), v("div", {
221
247
  ref_key: "rootEl",
222
- ref: m,
248
+ ref: a,
223
249
  class: "gvp-audio"
224
250
  }, [
225
- s("button", {
251
+ l("button", {
226
252
  type: "button",
227
253
  class: "gvp-audio-btn",
228
254
  "aria-haspopup": "listbox",
229
- "aria-expanded": o.value,
255
+ "aria-expanded": f.value,
230
256
  "aria-label": "Audio track",
231
- onClick: _[0] || (_[0] = (h) => o.value = !o.value)
257
+ onClick: A[0] || (A[0] = (h) => f.value = !f.value)
232
258
  }, [
233
- j(Le),
234
- s("span", Te, q((k = g.value) == null ? void 0 : k.label), 1),
235
- j(ye)
236
- ], 8, Me),
237
- o.value ? (i(), v("ul", Ie, [
259
+ U(De),
260
+ l("span", Ne, O((b = w.value) == null ? void 0 : b.label), 1),
261
+ U(Le)
262
+ ], 8, Fe),
263
+ f.value ? (i(), v("ul", Oe, [
238
264
  (i(!0), v(oe, null, ae(t.tracks, (h) => (i(), v("li", {
239
265
  key: h.index
240
266
  }, [
241
- s("button", {
267
+ l("button", {
242
268
  type: "button",
243
269
  role: "option",
244
270
  "aria-selected": h.index === t.activeIndex,
245
- class: C(["gvp-audio-menu-item", { "is-active": h.index === t.activeIndex }]),
246
- onClick: (r) => P(h.index)
247
- }, q(h.label), 11, Se)
271
+ class: y(["gvp-audio-menu-item", { "is-active": h.index === t.activeIndex }]),
272
+ onClick: (x) => E(h.index)
273
+ }, O(h.label), 11, Ue)
248
274
  ]))), 128))
249
- ])) : M("", !0)
275
+ ])) : T("", !0)
250
276
  ], 512);
251
277
  };
252
278
  }
253
- }), Be = { name: "IconSpeed" }, we = /* @__PURE__ */ T({
254
- ...Be,
279
+ }), je = { name: "IconSpeed" }, $e = /* @__PURE__ */ S({
280
+ ...je,
255
281
  props: {
256
282
  class: {}
257
283
  },
258
284
  setup(t) {
259
- const a = t;
260
- return (l, e) => (i(), v("svg", {
261
- class: C(["gvp-icon", a.class]),
285
+ const o = t;
286
+ return (s, e) => (i(), v("svg", {
287
+ class: y(["gvp-icon", o.class]),
262
288
  width: "16",
263
289
  height: "16",
264
290
  viewBox: "0 0 24 24",
@@ -266,12 +292,12 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
266
292
  xmlns: "http://www.w3.org/2000/svg",
267
293
  "aria-hidden": "true"
268
294
  }, [...e[0] || (e[0] = [
269
- s("path", {
295
+ l("path", {
270
296
  d: "M12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2Z",
271
297
  stroke: "currentColor",
272
298
  "stroke-width": "1.5"
273
299
  }, null, -1),
274
- s("path", {
300
+ l("path", {
275
301
  d: "M12 8V12L14.5 14.5",
276
302
  stroke: "currentColor",
277
303
  "stroke-width": "1.5",
@@ -280,72 +306,72 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
280
306
  }, null, -1)
281
307
  ])], 2));
282
308
  }
283
- }), Ve = ["aria-expanded"], Ae = { class: "gvp-speed-label" }, De = {
309
+ }), Qe = ["aria-expanded"], We = { class: "gvp-speed-label" }, ze = {
284
310
  key: 0,
285
311
  class: "gvp-speed-menu",
286
312
  role: "listbox",
287
313
  "aria-label": "Playback speed"
288
- }, Re = ["aria-selected", "onClick"], Fe = /* @__PURE__ */ T({
314
+ }, Ye = ["aria-selected", "onClick"], Ke = /* @__PURE__ */ S({
289
315
  __name: "SpeedSwitcher",
290
316
  props: {
291
317
  speed: {}
292
318
  },
293
319
  emits: ["select"],
294
- setup(t, { emit: a }) {
295
- const l = [0.5, 0.75, 1, 1.25, 1.5, 2], e = a, o = w(!1), m = w(null);
296
- function g(P) {
297
- m.value && !m.value.contains(P.target) && (o.value = !1);
320
+ setup(t, { emit: o }) {
321
+ const s = [0.5, 0.75, 1, 1.25, 1.5, 2], e = o, f = k(!1), a = k(null);
322
+ function w(E) {
323
+ a.value && !a.value.contains(E.target) && (f.value = !1);
298
324
  }
299
- function p(P) {
300
- P.key === "Escape" && (o.value = !1);
325
+ function m(E) {
326
+ E.key === "Escape" && (f.value = !1);
301
327
  }
302
- F(o, (P) => {
303
- P ? (document.addEventListener("mousedown", g), document.addEventListener("keydown", p)) : (document.removeEventListener("mousedown", g), document.removeEventListener("keydown", p));
304
- }), X(() => {
305
- document.removeEventListener("mousedown", g), document.removeEventListener("keydown", p);
328
+ R(f, (E) => {
329
+ E ? (document.addEventListener("mousedown", w), document.addEventListener("keydown", m)) : (document.removeEventListener("mousedown", w), document.removeEventListener("keydown", m));
330
+ }), ne(() => {
331
+ document.removeEventListener("mousedown", w), document.removeEventListener("keydown", m);
306
332
  });
307
- function L(P) {
308
- e("select", P), o.value = !1;
333
+ function $(E) {
334
+ e("select", E), f.value = !1;
309
335
  }
310
- return (P, x) => (i(), v("div", {
336
+ return (E, _) => (i(), v("div", {
311
337
  ref_key: "rootEl",
312
- ref: m,
338
+ ref: a,
313
339
  class: "gvp-speed"
314
340
  }, [
315
- s("button", {
341
+ l("button", {
316
342
  type: "button",
317
343
  class: "gvp-speed-btn",
318
344
  "aria-haspopup": "listbox",
319
- "aria-expanded": o.value,
345
+ "aria-expanded": f.value,
320
346
  "aria-label": "`Playback speed: ${speed === 1 ? '1×' : speed + '×'}`",
321
- onClick: x[0] || (x[0] = (_) => o.value = !o.value)
347
+ onClick: _[0] || (_[0] = (A) => f.value = !f.value)
322
348
  }, [
323
- j(we),
324
- s("span", Ae, q(t.speed === 1 ? "1×" : `${t.speed}×`), 1),
325
- j(ye)
326
- ], 8, Ve),
327
- o.value ? (i(), v("ul", De, [
328
- (i(), v(oe, null, ae(l, (_) => s("li", { key: _ }, [
329
- s("button", {
349
+ U($e),
350
+ l("span", We, O(t.speed === 1 ? "1×" : `${t.speed}×`), 1),
351
+ U(Le)
352
+ ], 8, Qe),
353
+ f.value ? (i(), v("ul", ze, [
354
+ (i(), v(oe, null, ae(s, (A) => l("li", { key: A }, [
355
+ l("button", {
330
356
  type: "button",
331
357
  role: "option",
332
- "aria-selected": _ === t.speed,
333
- class: C(["gvp-speed-menu-item", { "is-active": _ === t.speed }]),
334
- onClick: (k) => L(_)
335
- }, q(_ === 1 ? "Normal" : `${_}×`), 11, Re)
358
+ "aria-selected": A === t.speed,
359
+ class: y(["gvp-speed-menu-item", { "is-active": A === t.speed }]),
360
+ onClick: (b) => $(A)
361
+ }, O(A === 1 ? "Normal" : `${A}×`), 11, Ye)
336
362
  ])), 64))
337
- ])) : M("", !0)
363
+ ])) : T("", !0)
338
364
  ], 512));
339
365
  }
340
- }), Ne = { name: "IconCaptions" }, be = /* @__PURE__ */ T({
341
- ...Ne,
366
+ }), Je = { name: "IconCaptions" }, Pe = /* @__PURE__ */ S({
367
+ ...Je,
342
368
  props: {
343
369
  class: {}
344
370
  },
345
371
  setup(t) {
346
- const a = t;
347
- return (l, e) => (i(), v("svg", {
348
- class: C(["gvp-icon", a.class]),
372
+ const o = t;
373
+ return (s, e) => (i(), v("svg", {
374
+ class: y(["gvp-icon", o.class]),
349
375
  width: "18",
350
376
  height: "18",
351
377
  viewBox: "0 0 24 24",
@@ -353,7 +379,7 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
353
379
  xmlns: "http://www.w3.org/2000/svg",
354
380
  "aria-hidden": "true"
355
381
  }, [...e[0] || (e[0] = [
356
- s("rect", {
382
+ l("rect", {
357
383
  x: "2",
358
384
  y: "5",
359
385
  width: "20",
@@ -362,7 +388,7 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
362
388
  stroke: "currentColor",
363
389
  "stroke-width": "1.5"
364
390
  }, null, -1),
365
- s("path", {
391
+ l("path", {
366
392
  d: "M7 12H11M13 12H17M7 15H9M11 15H13M15 15H17",
367
393
  stroke: "currentColor",
368
394
  "stroke-width": "1.5",
@@ -370,120 +396,120 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
370
396
  }, null, -1)
371
397
  ])], 2));
372
398
  }
373
- }), Oe = ["aria-expanded", "aria-pressed"], je = {
399
+ }), Xe = ["aria-expanded", "aria-pressed"], Ge = {
374
400
  key: 0,
375
401
  class: "gvp-captions-menu",
376
402
  role: "listbox",
377
403
  "aria-label": "Captions"
378
- }, Ue = ["aria-selected"], Ze = ["aria-selected", "onClick"], qe = /* @__PURE__ */ T({
404
+ }, et = ["aria-selected"], tt = ["aria-selected", "onClick"], nt = /* @__PURE__ */ S({
379
405
  __name: "CaptionsSwitcher",
380
406
  props: {
381
407
  video: {}
382
408
  },
383
409
  setup(t) {
384
- const a = t, l = w([]), e = w(-1), o = w(!1), m = w(null);
385
- function g(k) {
410
+ const o = t, s = k([]), e = k(-1), f = k(!1), a = k(null);
411
+ function w(b) {
386
412
  const h = [];
387
- for (let b = 0; b < k.length; b++) {
388
- const E = k[b];
389
- (E.kind === "subtitles" || E.kind === "captions") && h.push({ index: b, label: E.label || E.language || `Track ${b + 1}` });
413
+ for (let u = 0; u < b.length; u++) {
414
+ const C = b[u];
415
+ (C.kind === "subtitles" || C.kind === "captions") && h.push({ index: u, label: C.label || C.language || `Track ${u + 1}` });
390
416
  }
391
- l.value = h;
392
- let r = -1;
393
- for (let b = 0; b < k.length; b++)
394
- if (k[b].mode === "showing") {
395
- r = b;
417
+ s.value = h;
418
+ let x = -1;
419
+ for (let u = 0; u < b.length; u++)
420
+ if (b[u].mode === "showing") {
421
+ x = u;
396
422
  break;
397
423
  }
398
- e.value = r;
424
+ e.value = x;
399
425
  }
400
- let p = null;
401
- F(() => a.video, (k) => {
402
- if (p == null || p(), p = null, !k) {
403
- l.value = [], e.value = -1;
426
+ let m = null;
427
+ R(() => o.video, (b) => {
428
+ if (m == null || m(), m = null, !b) {
429
+ s.value = [], e.value = -1;
404
430
  return;
405
431
  }
406
- const h = k.textTracks;
407
- g(h);
408
- const r = () => g(h);
409
- typeof h.addEventListener == "function" && (h.addEventListener("addtrack", r), h.addEventListener("removetrack", r), h.addEventListener("change", r), p = () => {
410
- h.removeEventListener("addtrack", r), h.removeEventListener("removetrack", r), h.removeEventListener("change", r);
432
+ const h = b.textTracks;
433
+ w(h);
434
+ const x = () => w(h);
435
+ typeof h.addEventListener == "function" && (h.addEventListener("addtrack", x), h.addEventListener("removetrack", x), h.addEventListener("change", x), m = () => {
436
+ h.removeEventListener("addtrack", x), h.removeEventListener("removetrack", x), h.removeEventListener("change", x);
411
437
  });
412
- }, { immediate: !0 }), X(() => {
413
- p == null || p(), document.removeEventListener("mousedown", L), document.removeEventListener("keydown", P);
438
+ }, { immediate: !0 }), ne(() => {
439
+ m == null || m(), document.removeEventListener("mousedown", $), document.removeEventListener("keydown", E);
414
440
  });
415
- function L(k) {
416
- m.value && !m.value.contains(k.target) && (o.value = !1);
441
+ function $(b) {
442
+ a.value && !a.value.contains(b.target) && (f.value = !1);
417
443
  }
418
- function P(k) {
419
- k.key === "Escape" && (o.value = !1);
444
+ function E(b) {
445
+ b.key === "Escape" && (f.value = !1);
420
446
  }
421
- F(o, (k) => {
422
- k ? (document.addEventListener("mousedown", L), document.addEventListener("keydown", P)) : (document.removeEventListener("mousedown", L), document.removeEventListener("keydown", P));
447
+ R(f, (b) => {
448
+ b ? (document.addEventListener("mousedown", $), document.addEventListener("keydown", E)) : (document.removeEventListener("mousedown", $), document.removeEventListener("keydown", E));
423
449
  });
424
- function x() {
425
- if (!a.video) return;
426
- const k = a.video.textTracks;
427
- for (let h = 0; h < k.length; h++) k[h].mode = "hidden";
428
- e.value = -1, o.value = !1;
450
+ function _() {
451
+ if (!o.video) return;
452
+ const b = o.video.textTracks;
453
+ for (let h = 0; h < b.length; h++) b[h].mode = "hidden";
454
+ e.value = -1, f.value = !1;
429
455
  }
430
- function _(k) {
431
- if (!a.video) return;
432
- const h = a.video.textTracks;
433
- for (let r = 0; r < h.length; r++)
434
- h[r].mode = r === k ? "showing" : "hidden";
435
- e.value = k, o.value = !1;
456
+ function A(b) {
457
+ if (!o.video) return;
458
+ const h = o.video.textTracks;
459
+ for (let x = 0; x < h.length; x++)
460
+ h[x].mode = x === b ? "showing" : "hidden";
461
+ e.value = b, f.value = !1;
436
462
  }
437
- return (k, h) => l.value.length > 0 ? (i(), v("div", {
463
+ return (b, h) => s.value.length > 0 ? (i(), v("div", {
438
464
  key: 0,
439
465
  ref_key: "rootEl",
440
- ref: m,
466
+ ref: a,
441
467
  class: "gvp-captions"
442
468
  }, [
443
- s("button", {
469
+ l("button", {
444
470
  type: "button",
445
- class: C(["gvp-captions-btn", { "is-active": e.value >= 0 }]),
471
+ class: y(["gvp-captions-btn", { "is-active": e.value >= 0 }]),
446
472
  "aria-haspopup": "listbox",
447
- "aria-expanded": o.value,
473
+ "aria-expanded": f.value,
448
474
  "aria-pressed": e.value >= 0,
449
475
  "aria-label": "Captions",
450
- onClick: h[0] || (h[0] = (r) => o.value = !o.value)
476
+ onClick: h[0] || (h[0] = (x) => f.value = !f.value)
451
477
  }, [
452
- j(be)
453
- ], 10, Oe),
454
- o.value ? (i(), v("ul", je, [
455
- s("li", null, [
456
- s("button", {
478
+ U(Pe)
479
+ ], 10, Xe),
480
+ f.value ? (i(), v("ul", Ge, [
481
+ l("li", null, [
482
+ l("button", {
457
483
  type: "button",
458
484
  role: "option",
459
485
  "aria-selected": e.value === -1,
460
- class: C(["gvp-captions-menu-item", { "is-active": e.value === -1 }]),
461
- onClick: x
462
- }, " Off ", 10, Ue)
486
+ class: y(["gvp-captions-menu-item", { "is-active": e.value === -1 }]),
487
+ onClick: _
488
+ }, " Off ", 10, et)
463
489
  ]),
464
- (i(!0), v(oe, null, ae(l.value, (r) => (i(), v("li", {
465
- key: r.index
490
+ (i(!0), v(oe, null, ae(s.value, (x) => (i(), v("li", {
491
+ key: x.index
466
492
  }, [
467
- s("button", {
493
+ l("button", {
468
494
  type: "button",
469
495
  role: "option",
470
- "aria-selected": r.index === e.value,
471
- class: C(["gvp-captions-menu-item", { "is-active": r.index === e.value }]),
472
- onClick: (b) => _(r.index)
473
- }, q(r.label), 11, Ze)
496
+ "aria-selected": x.index === e.value,
497
+ class: y(["gvp-captions-menu-item", { "is-active": x.index === e.value }]),
498
+ onClick: (u) => A(x.index)
499
+ }, O(x.label), 11, tt)
474
500
  ]))), 128))
475
- ])) : M("", !0)
476
- ], 512)) : M("", !0);
501
+ ])) : T("", !0)
502
+ ], 512)) : T("", !0);
477
503
  }
478
- }), ze = { name: "IconPause" }, We = /* @__PURE__ */ T({
479
- ...ze,
504
+ }), lt = { name: "IconPause" }, ot = /* @__PURE__ */ S({
505
+ ...lt,
480
506
  props: {
481
507
  class: {}
482
508
  },
483
509
  setup(t) {
484
- const a = t;
485
- return (l, e) => (i(), v("svg", {
486
- class: C(["gvp-icon", a.class]),
510
+ const o = t;
511
+ return (s, e) => (i(), v("svg", {
512
+ class: y(["gvp-icon", o.class]),
487
513
  width: "16",
488
514
  height: "16",
489
515
  viewBox: "0 0 24 24",
@@ -491,7 +517,7 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
491
517
  xmlns: "http://www.w3.org/2000/svg",
492
518
  "aria-hidden": "true"
493
519
  }, [...e[0] || (e[0] = [
494
- s("rect", {
520
+ l("rect", {
495
521
  x: "6",
496
522
  y: "5",
497
523
  width: "4",
@@ -499,7 +525,7 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
499
525
  rx: "1",
500
526
  fill: "currentColor"
501
527
  }, null, -1),
502
- s("rect", {
528
+ l("rect", {
503
529
  x: "14",
504
530
  y: "5",
505
531
  width: "4",
@@ -509,15 +535,15 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
509
535
  }, null, -1)
510
536
  ])], 2));
511
537
  }
512
- }), Ye = { name: "IconPlaySolid" }, Ke = /* @__PURE__ */ T({
513
- ...Ye,
538
+ }), at = { name: "IconPlaySolid" }, st = /* @__PURE__ */ S({
539
+ ...at,
514
540
  props: {
515
541
  class: {}
516
542
  },
517
543
  setup(t) {
518
- const a = t;
519
- return (l, e) => (i(), v("svg", {
520
- class: C(["gvp-icon", a.class]),
544
+ const o = t;
545
+ return (s, e) => (i(), v("svg", {
546
+ class: y(["gvp-icon", o.class]),
521
547
  width: "16",
522
548
  height: "16",
523
549
  viewBox: "0 0 24 24",
@@ -525,21 +551,21 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
525
551
  xmlns: "http://www.w3.org/2000/svg",
526
552
  "aria-hidden": "true"
527
553
  }, [...e[0] || (e[0] = [
528
- s("path", {
554
+ l("path", {
529
555
  d: "M7 5.5V18.5C7 19.2659 7.84856 19.7261 8.4899 19.3071L19.0801 12.4014C19.6644 12.0204 19.6644 11.9796 19.0801 11.5986L8.4899 4.69288C7.84856 4.27388 7 4.73408 7 5.5Z",
530
556
  fill: "currentColor"
531
557
  }, null, -1)
532
558
  ])], 2));
533
559
  }
534
- }), Je = { name: "IconVolumeHigh" }, Xe = /* @__PURE__ */ T({
535
- ...Je,
560
+ }), it = { name: "IconVolumeHigh" }, rt = /* @__PURE__ */ S({
561
+ ...it,
536
562
  props: {
537
563
  class: {}
538
564
  },
539
565
  setup(t) {
540
- const a = t;
541
- return (l, e) => (i(), v("svg", {
542
- class: C(["gvp-icon", a.class]),
566
+ const o = t;
567
+ return (s, e) => (i(), v("svg", {
568
+ class: y(["gvp-icon", o.class]),
543
569
  width: "18",
544
570
  height: "18",
545
571
  viewBox: "0 0 24 24",
@@ -547,13 +573,13 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
547
573
  xmlns: "http://www.w3.org/2000/svg",
548
574
  "aria-hidden": "true"
549
575
  }, [...e[0] || (e[0] = [
550
- s("path", {
576
+ l("path", {
551
577
  d: "M3 14V10C3 9.44772 3.44772 9 4 9H6.58579C6.851 9 7.10536 8.89464 7.29289 8.70711L11.2929 4.70711C11.9229 4.07714 13 4.52331 13 5.41421V18.5858C13 19.4767 11.9229 19.9229 11.2929 19.2929L7.29289 15.2929C7.10536 15.1054 6.851 15 6.58579 15H4C3.44772 15 3 14.5523 3 14Z",
552
578
  stroke: "currentColor",
553
579
  "stroke-width": "1.5",
554
580
  "stroke-linejoin": "round"
555
581
  }, null, -1),
556
- s("path", {
582
+ l("path", {
557
583
  d: "M16.5 8C17.5 9 18 10.5 18 12C18 13.5 17.5 15 16.5 16M19 5.5C20.5 7 21.5 9.5 21.5 12C21.5 14.5 20.5 17 19 18.5",
558
584
  stroke: "currentColor",
559
585
  "stroke-width": "1.5",
@@ -561,15 +587,15 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
561
587
  }, null, -1)
562
588
  ])], 2));
563
589
  }
564
- }), Ge = { name: "IconVolumeLow" }, Qe = /* @__PURE__ */ T({
565
- ...Ge,
590
+ }), ut = { name: "IconVolumeLow" }, ct = /* @__PURE__ */ S({
591
+ ...ut,
566
592
  props: {
567
593
  class: {}
568
594
  },
569
595
  setup(t) {
570
- const a = t;
571
- return (l, e) => (i(), v("svg", {
572
- class: C(["gvp-icon", a.class]),
596
+ const o = t;
597
+ return (s, e) => (i(), v("svg", {
598
+ class: y(["gvp-icon", o.class]),
573
599
  width: "18",
574
600
  height: "18",
575
601
  viewBox: "0 0 24 24",
@@ -577,13 +603,13 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
577
603
  xmlns: "http://www.w3.org/2000/svg",
578
604
  "aria-hidden": "true"
579
605
  }, [...e[0] || (e[0] = [
580
- s("path", {
606
+ l("path", {
581
607
  d: "M3 14V10C3 9.44772 3.44772 9 4 9H6.58579C6.851 9 7.10536 8.89464 7.29289 8.70711L11.2929 4.70711C11.9229 4.07714 13 4.52331 13 5.41421V18.5858C13 19.4767 11.9229 19.9229 11.2929 19.2929L7.29289 15.2929C7.10536 15.1054 6.851 15 6.58579 15H4C3.44772 15 3 14.5523 3 14Z",
582
608
  stroke: "currentColor",
583
609
  "stroke-width": "1.5",
584
610
  "stroke-linejoin": "round"
585
611
  }, null, -1),
586
- s("path", {
612
+ l("path", {
587
613
  d: "M16.5 8C17.5 9 18 10.5 18 12C18 13.5 17.5 15 16.5 16",
588
614
  stroke: "currentColor",
589
615
  "stroke-width": "1.5",
@@ -591,15 +617,15 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
591
617
  }, null, -1)
592
618
  ])], 2));
593
619
  }
594
- }), et = { name: "IconVolumeMuted" }, tt = /* @__PURE__ */ T({
595
- ...et,
620
+ }), dt = { name: "IconVolumeMuted" }, vt = /* @__PURE__ */ S({
621
+ ...dt,
596
622
  props: {
597
623
  class: {}
598
624
  },
599
625
  setup(t) {
600
- const a = t;
601
- return (l, e) => (i(), v("svg", {
602
- class: C(["gvp-icon", a.class]),
626
+ const o = t;
627
+ return (s, e) => (i(), v("svg", {
628
+ class: y(["gvp-icon", o.class]),
603
629
  width: "18",
604
630
  height: "18",
605
631
  viewBox: "0 0 24 24",
@@ -607,13 +633,13 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
607
633
  xmlns: "http://www.w3.org/2000/svg",
608
634
  "aria-hidden": "true"
609
635
  }, [...e[0] || (e[0] = [
610
- s("path", {
636
+ l("path", {
611
637
  d: "M3 14V10C3 9.44772 3.44772 9 4 9H6.58579C6.851 9 7.10536 8.89464 7.29289 8.70711L11.2929 4.70711C11.9229 4.07714 13 4.52331 13 5.41421V18.5858C13 19.4767 11.9229 19.9229 11.2929 19.2929L7.29289 15.2929C7.10536 15.1054 6.851 15 6.58579 15H4C3.44772 15 3 14.5523 3 14Z",
612
638
  stroke: "currentColor",
613
639
  "stroke-width": "1.5",
614
640
  "stroke-linejoin": "round"
615
641
  }, null, -1),
616
- s("path", {
642
+ l("path", {
617
643
  d: "M16 9L22 15M22 9L16 15",
618
644
  stroke: "currentColor",
619
645
  "stroke-width": "1.5",
@@ -621,15 +647,44 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
621
647
  }, null, -1)
622
648
  ])], 2));
623
649
  }
624
- }), nt = { name: "IconPiP" }, Ce = /* @__PURE__ */ T({
625
- ...nt,
650
+ }), pt = { name: "IconQuality" }, ft = /* @__PURE__ */ S({
651
+ ...pt,
652
+ props: {
653
+ class: {}
654
+ },
655
+ setup(t) {
656
+ const o = t;
657
+ return (s, e) => (i(), v("svg", {
658
+ class: y(["gvp-icon", o.class]),
659
+ width: "16",
660
+ height: "16",
661
+ viewBox: "0 0 24 24",
662
+ fill: "none",
663
+ xmlns: "http://www.w3.org/2000/svg",
664
+ "aria-hidden": "true"
665
+ }, [...e[0] || (e[0] = [
666
+ l("path", {
667
+ d: "M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z",
668
+ stroke: "currentColor",
669
+ "stroke-width": "1.5"
670
+ }, null, -1),
671
+ l("path", {
672
+ d: "M3 12C3 12.6 3.08 13.18 3.23 13.73L4.6 14.5C4.86 14.65 5.02 14.94 5 15.24C4.98 15.58 4.96 15.92 5.07 16.24C5.18 16.56 5.39 16.83 5.62 17.08C5.83 17.3 6.13 17.4 6.42 17.36L7.99 17.13C8.28 17.09 8.57 17.21 8.74 17.45C9.07 17.93 9.49 18.34 9.97 18.66C10.21 18.83 10.34 19.11 10.31 19.4L10.13 20.97C10.1 21.26 10.21 21.55 10.43 21.74C10.91 22.16 11.45 22 12 22C12.55 22 13.09 22.16 13.57 21.74C13.79 21.55 13.9 21.26 13.87 20.97L13.69 19.4C13.66 19.11 13.79 18.83 14.03 18.66",
673
+ stroke: "currentColor",
674
+ "stroke-width": "1.5",
675
+ "stroke-linecap": "round"
676
+ }, null, -1)
677
+ ])], 2));
678
+ }
679
+ }), mt = { name: "IconPiP" }, Me = /* @__PURE__ */ S({
680
+ ...mt,
626
681
  props: {
627
682
  class: {}
628
683
  },
629
684
  setup(t) {
630
- const a = t;
631
- return (l, e) => (i(), v("svg", {
632
- class: C(["gvp-icon", a.class]),
685
+ const o = t;
686
+ return (s, e) => (i(), v("svg", {
687
+ class: y(["gvp-icon", o.class]),
633
688
  width: "18",
634
689
  height: "18",
635
690
  viewBox: "0 0 24 24",
@@ -637,7 +692,7 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
637
692
  xmlns: "http://www.w3.org/2000/svg",
638
693
  "aria-hidden": "true"
639
694
  }, [...e[0] || (e[0] = [
640
- s("rect", {
695
+ l("rect", {
641
696
  x: "2",
642
697
  y: "4",
643
698
  width: "20",
@@ -646,7 +701,7 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
646
701
  stroke: "currentColor",
647
702
  "stroke-width": "1.5"
648
703
  }, null, -1),
649
- s("rect", {
704
+ l("rect", {
650
705
  x: "12",
651
706
  y: "12",
652
707
  width: "8",
@@ -656,15 +711,15 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
656
711
  }, null, -1)
657
712
  ])], 2));
658
713
  }
659
- }), ot = { name: "IconFullscreen" }, at = /* @__PURE__ */ T({
660
- ...ot,
714
+ }), ht = { name: "IconFullscreen" }, gt = /* @__PURE__ */ S({
715
+ ...ht,
661
716
  props: {
662
717
  class: {}
663
718
  },
664
719
  setup(t) {
665
- const a = t;
666
- return (l, e) => (i(), v("svg", {
667
- class: C(["gvp-icon", a.class]),
720
+ const o = t;
721
+ return (s, e) => (i(), v("svg", {
722
+ class: y(["gvp-icon", o.class]),
668
723
  width: "18",
669
724
  height: "18",
670
725
  viewBox: "0 0 24 24",
@@ -672,7 +727,7 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
672
727
  xmlns: "http://www.w3.org/2000/svg",
673
728
  "aria-hidden": "true"
674
729
  }, [...e[0] || (e[0] = [
675
- s("path", {
730
+ l("path", {
676
731
  d: "M4 9V4H9M15 4H20V9M20 15V20H15M9 20H4V15",
677
732
  stroke: "currentColor",
678
733
  "stroke-width": "1.75",
@@ -681,15 +736,15 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
681
736
  }, null, -1)
682
737
  ])], 2));
683
738
  }
684
- }), st = { name: "IconFullscreenExit" }, lt = /* @__PURE__ */ T({
685
- ...st,
739
+ }), kt = { name: "IconFullscreenExit" }, yt = /* @__PURE__ */ S({
740
+ ...kt,
686
741
  props: {
687
742
  class: {}
688
743
  },
689
744
  setup(t) {
690
- const a = t;
691
- return (l, e) => (i(), v("svg", {
692
- class: C(["gvp-icon", a.class]),
745
+ const o = t;
746
+ return (s, e) => (i(), v("svg", {
747
+ class: y(["gvp-icon", o.class]),
693
748
  width: "18",
694
749
  height: "18",
695
750
  viewBox: "0 0 24 24",
@@ -697,7 +752,7 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
697
752
  xmlns: "http://www.w3.org/2000/svg",
698
753
  "aria-hidden": "true"
699
754
  }, [...e[0] || (e[0] = [
700
- s("path", {
755
+ l("path", {
701
756
  d: "M9 4V9H4M15 9V4H20M15 20V15H20M9 15H4V20",
702
757
  stroke: "currentColor",
703
758
  "stroke-width": "1.75",
@@ -707,400 +762,462 @@ const _e = ["muted", "loop", "controls", "autoplay", "playsinline", "preload", "
707
762
  ])], 2));
708
763
  }
709
764
  });
710
- function ge(t) {
765
+ function _e(t) {
711
766
  if (!Number.isFinite(t) || t < 0) return "--:--";
712
- const a = Math.floor(t), l = Math.floor(a / 3600), e = Math.floor(a % 3600 / 60), m = (a % 60).toString().padStart(2, "0");
713
- if (l > 0) {
714
- const g = e.toString().padStart(2, "0");
715
- return `${l}:${g}:${m}`;
767
+ const o = Math.floor(t), s = Math.floor(o / 3600), e = Math.floor(o % 3600 / 60), a = (o % 60).toString().padStart(2, "0");
768
+ if (s > 0) {
769
+ const w = e.toString().padStart(2, "0");
770
+ return `${s}:${w}:${a}`;
716
771
  }
717
- return `${e}:${m}`;
772
+ return `${e}:${a}`;
718
773
  }
719
- const rt = { class: "gvp-controls-row" }, it = ["aria-label", "aria-pressed"], ut = { class: "gvp-seek" }, ct = { class: "gvp-seek-track" }, dt = ["value", "disabled", "aria-valuemax", "aria-valuenow"], vt = {
774
+ const wt = { class: "gvp-controls-row" }, bt = ["aria-label", "aria-pressed"], Ct = { class: "gvp-seek" }, xt = { class: "gvp-seek-track" }, _t = ["value", "disabled", "aria-valuemax", "aria-valuenow"], Et = {
720
775
  class: "gvp-time",
721
776
  "aria-live": "off"
722
- }, pt = ["aria-expanded", "aria-label"], ft = { class: "gvp-speed-label" }, mt = {
777
+ }, Lt = ["aria-expanded", "aria-label"], $t = { class: "gvp-speed-label" }, Pt = {
723
778
  key: 0,
724
779
  class: "gvp-speed-menu",
725
780
  role: "listbox",
726
781
  "aria-label": "Playback speed"
727
- }, ht = ["aria-selected", "onClick"], gt = ["aria-expanded", "aria-pressed"], kt = {
782
+ }, Mt = ["aria-selected", "onClick"], Tt = ["aria-expanded", "aria-label"], It = { class: "gvp-quality-label" }, St = {
783
+ key: 0,
784
+ class: "gvp-quality-menu",
785
+ role: "listbox",
786
+ "aria-label": "Quality"
787
+ }, Ht = ["aria-selected"], At = ["aria-selected", "onClick"], Bt = ["aria-expanded", "aria-pressed"], Vt = {
728
788
  key: 0,
729
789
  class: "gvp-captions-menu",
730
790
  role: "listbox",
731
791
  "aria-label": "Captions"
732
- }, yt = ["aria-selected"], wt = ["aria-selected", "onClick"], bt = ["aria-label", "aria-pressed"], Ct = {
792
+ }, qt = ["aria-selected"], Dt = ["aria-selected", "onClick"], Rt = ["aria-label", "aria-pressed"], Ft = {
733
793
  key: 0,
734
794
  class: "gvp-volume-slider-wrap"
735
- }, xt = { class: "gvp-volume-track" }, _t = ["value", "aria-valuenow"], Et = ["aria-label", "aria-pressed"], $t = ["aria-label", "aria-pressed"], Lt = 3e3, Pt = /* @__PURE__ */ T({
795
+ }, Nt = { class: "gvp-volume-track" }, Ot = ["value", "aria-valuenow"], Ut = ["aria-label", "aria-pressed"], Zt = ["aria-label", "aria-pressed"], jt = 3e3, Qt = /* @__PURE__ */ S({
736
796
  __name: "ControlBar",
737
797
  props: {
738
798
  video: {},
739
799
  isPlaying: { type: Boolean },
740
800
  container: {},
741
- onTogglePlay: { type: Function }
801
+ onTogglePlay: {},
802
+ qualityLevels: { default: () => [] },
803
+ currentLevel: { default: -1 },
804
+ selectedLevel: { default: -1 }
742
805
  },
743
- setup(t) {
744
- const a = (() => {
806
+ emits: ["select-level"],
807
+ setup(t, { emit: o }) {
808
+ const s = (() => {
745
809
  if (typeof navigator > "u") return !1;
746
810
  const n = navigator.userAgent;
747
811
  return /iPad|iPhone|iPod/.test(n) || n.includes("Mac") && navigator.maxTouchPoints > 1;
748
- })(), l = typeof navigator > "u" ? !1 : /iPhone|iPod/.test(navigator.userAgent), e = [0.5, 0.75, 1, 1.25, 1.5, 2], o = t, m = w(!0);
749
- let g = null;
750
- function p() {
751
- g !== null && (clearTimeout(g), g = null);
812
+ })(), e = typeof navigator > "u" ? !1 : /iPhone|iPod/.test(navigator.userAgent), f = [0.5, 0.75, 1, 1.25, 1.5, 2], a = t, w = o, m = k(!0);
813
+ let $ = null;
814
+ function E() {
815
+ $ !== null && (clearTimeout($), $ = null);
752
816
  }
753
- function L() {
754
- p(), o.isPlaying && (g = setTimeout(() => {
817
+ function _() {
818
+ E(), a.isPlaying && ($ = setTimeout(() => {
755
819
  m.value = !1;
756
- }, Lt));
820
+ }, jt));
757
821
  }
758
- function P() {
759
- m.value = !0, L();
822
+ function A() {
823
+ m.value = !0, _();
760
824
  }
761
- F(() => o.isPlaying, (n) => {
762
- n ? L() : (p(), m.value = !0);
763
- }, { immediate: !0 }), F(() => o.container, (n) => {
825
+ R(() => a.isPlaying, (n) => {
826
+ n ? _() : (E(), m.value = !0);
827
+ }, { immediate: !0 }), R(() => a.container, (n) => {
764
828
  if (!n) return;
765
- const u = () => P();
766
- n.addEventListener("mousemove", u), n.addEventListener("touchstart", u), n.addEventListener("focusin", u);
829
+ const r = () => A();
830
+ n.addEventListener("mousemove", r), n.addEventListener("touchstart", r), n.addEventListener("focusin", r);
767
831
  }, { immediate: !0 });
768
- const x = w(0), _ = w(0), k = w(0);
769
- F(() => o.video, (n) => {
832
+ const b = k(0), h = k(0), x = k(0);
833
+ R(() => a.video, (n) => {
770
834
  if (!n) return;
771
- const u = () => {
772
- x.value = n.currentTime;
773
- }, f = () => {
774
- _.value = Number.isFinite(n.duration) ? n.duration : 0;
775
- }, $ = () => {
776
- const V = n.buffered;
777
- if (!V || V.length === 0) {
778
- k.value = 0;
835
+ const r = () => {
836
+ b.value = n.currentTime;
837
+ }, p = () => {
838
+ h.value = Number.isFinite(n.duration) ? n.duration : 0;
839
+ }, L = () => {
840
+ const q = n.buffered;
841
+ if (!q || q.length === 0) {
842
+ x.value = 0;
779
843
  return;
780
844
  }
781
- let me = V.end(V.length - 1);
782
- for (let ne = 0; ne < V.length; ne++)
783
- if (V.start(ne) <= n.currentTime && n.currentTime <= V.end(ne)) {
784
- me = V.end(ne);
845
+ let Ce = q.end(q.length - 1);
846
+ for (let ie = 0; ie < q.length; ie++)
847
+ if (q.start(ie) <= n.currentTime && n.currentTime <= q.end(ie)) {
848
+ Ce = q.end(ie);
785
849
  break;
786
850
  }
787
- k.value = me;
851
+ x.value = Ce;
788
852
  };
789
- u(), f(), $(), n.addEventListener("timeupdate", u), n.addEventListener("durationchange", f), n.addEventListener("loadedmetadata", f), n.addEventListener("progress", $), n.addEventListener("timeupdate", $);
853
+ r(), p(), L(), n.addEventListener("timeupdate", r), n.addEventListener("durationchange", p), n.addEventListener("loadedmetadata", p), n.addEventListener("progress", L), n.addEventListener("timeupdate", L);
790
854
  }, { immediate: !0 });
791
- const h = () => _.value > 0, r = () => h() ? x.value / _.value * 100 : 0, b = () => h() ? k.value / _.value * 100 : 0;
792
- function E(n) {
793
- const u = o.video;
794
- if (!u || !h()) return;
795
- const f = Number(n.target.value) / 100 * _.value;
796
- u.currentTime = f, x.value = f;
855
+ const u = () => h.value > 0, C = () => u() ? b.value / h.value * 100 : 0, B = () => u() ? x.value / h.value * 100 : 0;
856
+ function W(n) {
857
+ const r = a.video;
858
+ if (!r || !u()) return;
859
+ const p = Number(n.target.value) / 100 * h.value;
860
+ r.currentTime = p, b.value = p;
797
861
  }
798
- const R = w(1), H = w(!1);
799
- F(() => o.video, (n) => {
862
+ const M = k(1), Z = k(!1);
863
+ R(() => a.video, (n) => {
800
864
  if (!n) return;
801
- const u = () => {
802
- R.value = n.volume, H.value = n.muted;
865
+ const r = () => {
866
+ M.value = n.volume, Z.value = n.muted;
803
867
  };
804
- u(), n.addEventListener("volumechange", u);
868
+ r(), n.addEventListener("volumechange", r);
805
869
  }, { immediate: !0 });
806
- function A() {
807
- o.video && (o.video.muted = !o.video.muted);
870
+ function g() {
871
+ a.video && (a.video.muted = !a.video.muted);
808
872
  }
809
- function y(n) {
810
- const u = o.video;
811
- if (!u) return;
812
- const f = Number(n.target.value) / 100;
813
- u.volume = f, f > 0 && u.muted && (u.muted = !1);
873
+ function P(n) {
874
+ const r = a.video;
875
+ if (!r) return;
876
+ const p = Number(n.target.value) / 100;
877
+ r.volume = p, p > 0 && r.muted && (r.muted = !1);
814
878
  }
815
- const I = w(1), D = w(!1), B = w(null);
816
- F(() => o.video, (n) => {
879
+ const V = k(1), I = k(!1), H = k(null);
880
+ R(() => a.video, (n) => {
817
881
  if (!n) return;
818
- const u = () => {
819
- I.value = n.playbackRate;
882
+ const r = () => {
883
+ V.value = n.playbackRate;
820
884
  };
821
- u(), n.addEventListener("ratechange", u);
885
+ r(), n.addEventListener("ratechange", r);
822
886
  }, { immediate: !0 });
823
- function N(n) {
824
- o.video && (o.video.playbackRate = n), I.value = n, D.value = !1;
887
+ function z(n) {
888
+ a.video && (a.video.playbackRate = n), V.value = n, I.value = !1;
889
+ }
890
+ const X = k(!1), re = k(null), ke = N(() => a.qualityLevels.length >= 2), Q = N(
891
+ () => [...a.qualityLevels].sort((n, r) => r.height - n.height)
892
+ ), te = N(
893
+ () => a.qualityLevels.find((n) => n.index === a.currentLevel)
894
+ ), se = N(() => {
895
+ if (a.selectedLevel < 0)
896
+ return te.value ? `Auto (${te.value.label})` : "Auto";
897
+ const n = a.qualityLevels.find((r) => r.index === a.selectedLevel);
898
+ return (n == null ? void 0 : n.label) ?? "Auto";
899
+ });
900
+ function ue(n) {
901
+ w("select-level", n), X.value = !1;
825
902
  }
826
- const G = w([]), S = w(-1), z = w(!1), te = w(null);
827
- function se(n) {
828
- const u = [];
829
- for (let $ = 0; $ < n.length; $++) {
830
- const V = n[$];
831
- (V.kind === "subtitles" || V.kind === "captions") && u.push({ index: $, label: V.label || V.language || `Track ${$ + 1}` });
903
+ const le = k([]), F = k(-1), Y = k(!1), ce = k(null);
904
+ function de(n) {
905
+ const r = [];
906
+ for (let L = 0; L < n.length; L++) {
907
+ const q = n[L];
908
+ (q.kind === "subtitles" || q.kind === "captions") && r.push({ index: L, label: q.label || q.language || `Track ${L + 1}` });
832
909
  }
833
- G.value = u;
834
- let f = -1;
835
- for (let $ = 0; $ < n.length; $++)
836
- if (n[$].mode === "showing") {
837
- f = $;
910
+ le.value = r;
911
+ let p = -1;
912
+ for (let L = 0; L < n.length; L++)
913
+ if (n[L].mode === "showing") {
914
+ p = L;
838
915
  break;
839
916
  }
840
- S.value = f;
917
+ F.value = p;
841
918
  }
842
- F(() => o.video, (n) => {
919
+ R(() => a.video, (n) => {
843
920
  if (!n) {
844
- G.value = [], S.value = -1;
921
+ le.value = [], F.value = -1;
845
922
  return;
846
923
  }
847
- const u = n.textTracks;
848
- se(u);
849
- const f = () => se(u);
850
- typeof u.addEventListener == "function" && (u.addEventListener("addtrack", f), u.addEventListener("removetrack", f), u.addEventListener("change", f));
924
+ const r = n.textTracks;
925
+ de(r);
926
+ const p = () => de(r);
927
+ typeof r.addEventListener == "function" && (r.addEventListener("addtrack", p), r.addEventListener("removetrack", p), r.addEventListener("change", p));
851
928
  }, { immediate: !0 });
852
- function de(n) {
853
- var f;
854
- const u = (f = o.video) == null ? void 0 : f.textTracks;
855
- if (u) {
856
- for (let $ = 0; $ < u.length; $++) u[$].mode = $ === n ? "showing" : "hidden";
857
- S.value = n, z.value = !1;
929
+ function ve(n) {
930
+ var p;
931
+ const r = (p = a.video) == null ? void 0 : p.textTracks;
932
+ if (r) {
933
+ for (let L = 0; L < r.length; L++) r[L].mode = L === n ? "showing" : "hidden";
934
+ F.value = n, Y.value = !1;
858
935
  }
859
936
  }
860
- function Q() {
861
- var u;
862
- const n = (u = o.video) == null ? void 0 : u.textTracks;
937
+ function pe() {
938
+ var r;
939
+ const n = (r = a.video) == null ? void 0 : r.textTracks;
863
940
  if (n) {
864
- for (let f = 0; f < n.length; f++) n[f].mode = "hidden";
865
- S.value = -1, z.value = !1;
941
+ for (let p = 0; p < n.length; p++) n[p].mode = "hidden";
942
+ F.value = -1, Y.value = !1;
866
943
  }
867
944
  }
868
- const Y = w(!1), ve = typeof document < "u" && !!document.pictureInPictureEnabled;
869
- F(() => o.video, (n) => {
945
+ const c = k(!1), d = typeof document < "u" && !!document.pictureInPictureEnabled;
946
+ R(() => a.video, (n) => {
870
947
  n && (n.addEventListener("enterpictureinpicture", () => {
871
- Y.value = !0;
948
+ c.value = !0;
872
949
  }), n.addEventListener("leavepictureinpicture", () => {
873
- Y.value = !1;
950
+ c.value = !1;
874
951
  }));
875
952
  }, { immediate: !0 });
876
- function pe() {
877
- o.video && (document.pictureInPictureElement ? document.exitPictureInPicture().catch(() => {
878
- }) : o.video.requestPictureInPicture().catch(() => {
953
+ function D() {
954
+ a.video && (document.pictureInPictureElement ? document.exitPictureInPicture().catch(() => {
955
+ }) : a.video.requestPictureInPicture().catch(() => {
879
956
  }));
880
957
  }
881
- const W = w(!1), le = typeof document > "u" ? !1 : !!(document.fullscreenEnabled || document.webkitFullscreenEnabled);
882
- function d() {
958
+ const K = k(!1), fe = typeof document > "u" ? !1 : !!(document.fullscreenEnabled || document.webkitFullscreenEnabled);
959
+ function me() {
883
960
  return document.fullscreenElement ?? document.webkitFullscreenElement ?? null;
884
961
  }
885
- function c(n) {
886
- const u = n.requestFullscreen ?? n.webkitRequestFullscreen;
887
- return u ? u.call(n) : Promise.reject(new Error("unsupported"));
962
+ function ye(n) {
963
+ const r = n.requestFullscreen ?? n.webkitRequestFullscreen;
964
+ return r ? r.call(n) : Promise.reject(new Error("unsupported"));
888
965
  }
889
- function O() {
966
+ function he() {
890
967
  const n = document.exitFullscreen ?? document.webkitExitFullscreen;
891
968
  return n ? n.call(document) : Promise.reject(new Error("unsupported"));
892
969
  }
893
- function K() {
894
- W.value = d() === o.container;
970
+ function G() {
971
+ K.value = me() === a.container;
895
972
  }
896
- fe(() => {
897
- document.addEventListener("fullscreenchange", K), document.addEventListener("webkitfullscreenchange", K);
898
- }), X(() => {
899
- p(), document.removeEventListener("fullscreenchange", K), document.removeEventListener("webkitfullscreenchange", K);
973
+ be(() => {
974
+ document.addEventListener("fullscreenchange", G), document.addEventListener("webkitfullscreenchange", G);
975
+ }), ne(() => {
976
+ E(), document.removeEventListener("fullscreenchange", G), document.removeEventListener("webkitfullscreenchange", G);
900
977
  });
901
- function re() {
902
- var n, u;
903
- if (l) {
904
- (u = (n = o.video) == null ? void 0 : n.webkitEnterFullscreen) == null || u.call(n);
978
+ function Te() {
979
+ var n, r;
980
+ if (e) {
981
+ (r = (n = a.video) == null ? void 0 : n.webkitEnterFullscreen) == null || r.call(n);
905
982
  return;
906
983
  }
907
- W.value ? O().catch(() => {
908
- }) : o.container && c(o.container).catch(() => {
984
+ K.value ? he().catch(() => {
985
+ }) : a.container && ye(a.container).catch(() => {
909
986
  });
910
987
  }
911
- const ie = le || l && o.video !== null && typeof o.video.webkitEnterFullscreen == "function";
912
- function ue(n, u) {
913
- function f(V) {
914
- u.value && !u.value.contains(V.target) && (n.value = !1);
988
+ const Ie = fe || e && a.video !== null && typeof a.video.webkitEnterFullscreen == "function";
989
+ function we(n, r) {
990
+ function p(q) {
991
+ r.value && !r.value.contains(q.target) && (n.value = !1);
915
992
  }
916
- function $(V) {
917
- V.key === "Escape" && (n.value = !1);
993
+ function L(q) {
994
+ q.key === "Escape" && (n.value = !1);
918
995
  }
919
- F(n, (V) => {
920
- V ? (document.addEventListener("mousedown", f), document.addEventListener("keydown", $)) : (document.removeEventListener("mousedown", f), document.removeEventListener("keydown", $));
921
- }), X(() => {
922
- document.removeEventListener("mousedown", f), document.removeEventListener("keydown", $);
996
+ R(n, (q) => {
997
+ q ? (document.addEventListener("mousedown", p), document.addEventListener("keydown", L)) : (document.removeEventListener("mousedown", p), document.removeEventListener("keydown", L));
998
+ }), ne(() => {
999
+ document.removeEventListener("mousedown", p), document.removeEventListener("keydown", L);
923
1000
  });
924
1001
  }
925
- return ue(D, B), ue(z, te), (n, u) => (i(), v("div", {
1002
+ return we(I, H), we(Y, ce), we(X, re), (n, r) => (i(), v("div", {
926
1003
  role: "toolbar",
927
1004
  "aria-label": "Video controls",
928
- class: C(["gvp-controls", !m.value && "is-hidden"]),
929
- onMouseenter: p,
930
- onMouseleave: L
1005
+ class: y(["gvp-controls", !m.value && "is-hidden"]),
1006
+ onMouseenter: E,
1007
+ onMouseleave: _
931
1008
  }, [
932
- s("div", rt, [
933
- s("button", {
1009
+ l("div", wt, [
1010
+ l("button", {
934
1011
  type: "button",
935
1012
  class: "gvp-ctrl-btn",
936
1013
  "aria-label": t.isPlaying ? "Pause" : "Play",
937
1014
  "aria-pressed": t.isPlaying,
938
- onClick: u[0] || (u[0] = //@ts-ignore
939
- (...f) => t.onTogglePlay && t.onTogglePlay(...f))
1015
+ onClick: r[0] || (r[0] = //@ts-ignore
1016
+ (...p) => t.onTogglePlay && t.onTogglePlay(...p))
940
1017
  }, [
941
- t.isPlaying ? (i(), U(We, { key: 0 })) : (i(), U(Ke, { key: 1 }))
942
- ], 8, it),
943
- s("div", ut, [
944
- s("div", ct, [
945
- s("div", {
1018
+ t.isPlaying ? (i(), j(ot, { key: 0 })) : (i(), j(st, { key: 1 }))
1019
+ ], 8, bt),
1020
+ l("div", Ct, [
1021
+ l("div", xt, [
1022
+ l("div", {
946
1023
  class: "gvp-seek-buffered",
947
- style: ce({ width: `${b()}%` })
1024
+ style: ge({ width: `${B()}%` })
948
1025
  }, null, 4),
949
- s("div", {
1026
+ l("div", {
950
1027
  class: "gvp-seek-progress",
951
- style: ce({ width: `${r()}%` })
1028
+ style: ge({ width: `${C()}%` })
952
1029
  }, null, 4)
953
1030
  ]),
954
- s("input", {
1031
+ l("input", {
955
1032
  type: "range",
956
1033
  class: "gvp-seek-input",
957
1034
  min: 0,
958
1035
  max: 100,
959
1036
  step: 0.1,
960
- value: r(),
961
- disabled: !h(),
1037
+ value: C(),
1038
+ disabled: !u(),
962
1039
  "aria-label": "Seek",
963
1040
  "aria-valuemin": 0,
964
- "aria-valuemax": Math.floor(_.value),
965
- "aria-valuenow": Math.floor(x.value),
966
- onInput: E
967
- }, null, 40, dt)
1041
+ "aria-valuemax": Math.floor(h.value),
1042
+ "aria-valuenow": Math.floor(b.value),
1043
+ onInput: W
1044
+ }, null, 40, _t)
968
1045
  ]),
969
- s("span", vt, q(J(ge)(x.value)) + " / " + q(J(ge)(_.value)), 1),
970
- s("div", {
1046
+ l("span", Et, O(ee(_e)(b.value)) + " / " + O(ee(_e)(h.value)), 1),
1047
+ l("div", {
971
1048
  ref_key: "speedRootEl",
972
- ref: B,
1049
+ ref: H,
973
1050
  class: "gvp-speed"
974
1051
  }, [
975
- s("button", {
1052
+ l("button", {
976
1053
  type: "button",
977
1054
  class: "gvp-ctrl-btn gvp-speed-btn",
978
1055
  "aria-haspopup": "listbox",
979
- "aria-expanded": D.value,
980
- "aria-label": `Playback speed: ${I.value === 1 ? "1×" : I.value + "×"}`,
981
- onClick: u[1] || (u[1] = (f) => D.value = !D.value)
1056
+ "aria-expanded": I.value,
1057
+ "aria-label": `Playback speed: ${V.value === 1 ? "1×" : V.value + "×"}`,
1058
+ onClick: r[1] || (r[1] = (p) => I.value = !I.value)
982
1059
  }, [
983
- j(we),
984
- s("span", ft, q(I.value === 1 ? "1×" : `${I.value}×`), 1)
985
- ], 8, pt),
986
- D.value ? (i(), v("ul", mt, [
987
- (i(), v(oe, null, ae(e, (f) => s("li", { key: f }, [
988
- s("button", {
1060
+ U($e),
1061
+ l("span", $t, O(V.value === 1 ? "1×" : `${V.value}×`), 1)
1062
+ ], 8, Lt),
1063
+ I.value ? (i(), v("ul", Pt, [
1064
+ (i(), v(oe, null, ae(f, (p) => l("li", { key: p }, [
1065
+ l("button", {
989
1066
  type: "button",
990
1067
  role: "option",
991
- "aria-selected": f === I.value,
992
- class: C(["gvp-speed-menu-item", { "is-active": f === I.value }]),
993
- onClick: ($) => N(f)
994
- }, q(f === 1 ? "Normal" : `${f}×`), 11, ht)
1068
+ "aria-selected": p === V.value,
1069
+ class: y(["gvp-speed-menu-item", { "is-active": p === V.value }]),
1070
+ onClick: (L) => z(p)
1071
+ }, O(p === 1 ? "Normal" : `${p}×`), 11, Mt)
995
1072
  ])), 64))
996
- ])) : M("", !0)
1073
+ ])) : T("", !0)
997
1074
  ], 512),
998
- G.value.length > 0 ? (i(), v("div", {
1075
+ ke.value ? (i(), v("div", {
999
1076
  key: 0,
1077
+ ref_key: "qualityRootEl",
1078
+ ref: re,
1079
+ class: "gvp-quality"
1080
+ }, [
1081
+ l("button", {
1082
+ type: "button",
1083
+ class: "gvp-ctrl-btn gvp-quality-btn",
1084
+ "aria-haspopup": "listbox",
1085
+ "aria-expanded": X.value,
1086
+ "aria-label": `Quality: ${se.value}`,
1087
+ onClick: r[2] || (r[2] = (p) => X.value = !X.value)
1088
+ }, [
1089
+ U(ft),
1090
+ l("span", It, O(se.value), 1)
1091
+ ], 8, Tt),
1092
+ X.value ? (i(), v("ul", St, [
1093
+ l("li", null, [
1094
+ l("button", {
1095
+ type: "button",
1096
+ role: "option",
1097
+ "aria-selected": t.selectedLevel < 0,
1098
+ class: y(["gvp-quality-menu-item", { "is-active": t.selectedLevel < 0 }]),
1099
+ onClick: r[3] || (r[3] = (p) => ue(ee(He).index))
1100
+ }, O(te.value ? `Auto (${te.value.label})` : "Auto"), 11, Ht)
1101
+ ]),
1102
+ (i(!0), v(oe, null, ae(Q.value, (p) => (i(), v("li", {
1103
+ key: p.index
1104
+ }, [
1105
+ l("button", {
1106
+ type: "button",
1107
+ role: "option",
1108
+ "aria-selected": p.index === t.selectedLevel,
1109
+ class: y(["gvp-quality-menu-item", { "is-active": p.index === t.selectedLevel }]),
1110
+ onClick: (L) => ue(p.index)
1111
+ }, O(p.label), 11, At)
1112
+ ]))), 128))
1113
+ ])) : T("", !0)
1114
+ ], 512)) : T("", !0),
1115
+ le.value.length > 0 ? (i(), v("div", {
1116
+ key: 1,
1000
1117
  ref_key: "captionsRootEl",
1001
- ref: te,
1118
+ ref: ce,
1002
1119
  class: "gvp-captions"
1003
1120
  }, [
1004
- s("button", {
1121
+ l("button", {
1005
1122
  type: "button",
1006
- class: C(["gvp-ctrl-btn", S.value >= 0 && "is-active"]),
1123
+ class: y(["gvp-ctrl-btn", F.value >= 0 && "is-active"]),
1007
1124
  "aria-haspopup": "listbox",
1008
- "aria-expanded": z.value,
1125
+ "aria-expanded": Y.value,
1009
1126
  "aria-label": "Captions",
1010
- "aria-pressed": S.value >= 0,
1011
- onClick: u[2] || (u[2] = (f) => z.value = !z.value)
1127
+ "aria-pressed": F.value >= 0,
1128
+ onClick: r[4] || (r[4] = (p) => Y.value = !Y.value)
1012
1129
  }, [
1013
- j(be)
1014
- ], 10, gt),
1015
- z.value ? (i(), v("ul", kt, [
1016
- s("li", null, [
1017
- s("button", {
1130
+ U(Pe)
1131
+ ], 10, Bt),
1132
+ Y.value ? (i(), v("ul", Vt, [
1133
+ l("li", null, [
1134
+ l("button", {
1018
1135
  type: "button",
1019
1136
  role: "option",
1020
- "aria-selected": S.value === -1,
1021
- class: C(["gvp-captions-menu-item", { "is-active": S.value === -1 }]),
1022
- onClick: Q
1023
- }, "Off", 10, yt)
1137
+ "aria-selected": F.value === -1,
1138
+ class: y(["gvp-captions-menu-item", { "is-active": F.value === -1 }]),
1139
+ onClick: pe
1140
+ }, "Off", 10, qt)
1024
1141
  ]),
1025
- (i(!0), v(oe, null, ae(G.value, (f) => (i(), v("li", {
1026
- key: f.index
1142
+ (i(!0), v(oe, null, ae(le.value, (p) => (i(), v("li", {
1143
+ key: p.index
1027
1144
  }, [
1028
- s("button", {
1145
+ l("button", {
1029
1146
  type: "button",
1030
1147
  role: "option",
1031
- "aria-selected": f.index === S.value,
1032
- class: C(["gvp-captions-menu-item", { "is-active": f.index === S.value }]),
1033
- onClick: ($) => de(f.index)
1034
- }, q(f.label), 11, wt)
1148
+ "aria-selected": p.index === F.value,
1149
+ class: y(["gvp-captions-menu-item", { "is-active": p.index === F.value }]),
1150
+ onClick: (L) => ve(p.index)
1151
+ }, O(p.label), 11, Dt)
1035
1152
  ]))), 128))
1036
- ])) : M("", !0)
1037
- ], 512)) : M("", !0),
1038
- s("div", {
1039
- class: C(["gvp-volume", !J(a) && "is-expandable"])
1153
+ ])) : T("", !0)
1154
+ ], 512)) : T("", !0),
1155
+ l("div", {
1156
+ class: y(["gvp-volume", !ee(s) && "is-expandable"])
1040
1157
  }, [
1041
- s("button", {
1158
+ l("button", {
1042
1159
  type: "button",
1043
1160
  class: "gvp-ctrl-btn",
1044
- "aria-label": H.value ? "Unmute" : "Mute",
1045
- "aria-pressed": H.value,
1046
- onClick: A
1161
+ "aria-label": Z.value ? "Unmute" : "Mute",
1162
+ "aria-pressed": Z.value,
1163
+ onClick: g
1047
1164
  }, [
1048
- H.value || R.value === 0 ? (i(), U(tt, { key: 0 })) : R.value < 0.5 ? (i(), U(Qe, { key: 1 })) : (i(), U(Xe, { key: 2 }))
1049
- ], 8, bt),
1050
- J(a) ? M("", !0) : (i(), v("div", Ct, [
1051
- s("div", xt, [
1052
- s("div", {
1165
+ Z.value || M.value === 0 ? (i(), j(vt, { key: 0 })) : M.value < 0.5 ? (i(), j(ct, { key: 1 })) : (i(), j(rt, { key: 2 }))
1166
+ ], 8, Rt),
1167
+ ee(s) ? T("", !0) : (i(), v("div", Ft, [
1168
+ l("div", Nt, [
1169
+ l("div", {
1053
1170
  class: "gvp-volume-fill",
1054
- style: ce({ width: `${H.value ? 0 : Math.round(R.value * 100)}%` })
1171
+ style: ge({ width: `${Z.value ? 0 : Math.round(M.value * 100)}%` })
1055
1172
  }, null, 4)
1056
1173
  ]),
1057
- s("input", {
1174
+ l("input", {
1058
1175
  type: "range",
1059
1176
  class: "gvp-volume-input",
1060
1177
  min: 0,
1061
1178
  max: 100,
1062
1179
  step: 1,
1063
- value: H.value ? 0 : Math.round(R.value * 100),
1180
+ value: Z.value ? 0 : Math.round(M.value * 100),
1064
1181
  "aria-label": "Volume",
1065
1182
  "aria-valuemin": 0,
1066
1183
  "aria-valuemax": 100,
1067
- "aria-valuenow": H.value ? 0 : Math.round(R.value * 100),
1068
- onInput: y
1069
- }, null, 40, _t)
1184
+ "aria-valuenow": Z.value ? 0 : Math.round(M.value * 100),
1185
+ onInput: P
1186
+ }, null, 40, Ot)
1070
1187
  ]))
1071
1188
  ], 2),
1072
- J(ve) ? (i(), v("button", {
1073
- key: 1,
1189
+ ee(d) ? (i(), v("button", {
1190
+ key: 2,
1074
1191
  type: "button",
1075
- class: C(["gvp-ctrl-btn", Y.value && "is-active"]),
1076
- "aria-label": Y.value ? "Exit picture-in-picture" : "Picture-in-picture",
1077
- "aria-pressed": Y.value,
1078
- onClick: pe
1192
+ class: y(["gvp-ctrl-btn", c.value && "is-active"]),
1193
+ "aria-label": c.value ? "Exit picture-in-picture" : "Picture-in-picture",
1194
+ "aria-pressed": c.value,
1195
+ onClick: D
1079
1196
  }, [
1080
- j(Ce)
1081
- ], 10, Et)) : M("", !0),
1082
- J(ie) ? (i(), v("button", {
1083
- key: 2,
1197
+ U(Me)
1198
+ ], 10, Ut)) : T("", !0),
1199
+ ee(Ie) ? (i(), v("button", {
1200
+ key: 3,
1084
1201
  type: "button",
1085
- class: C(["gvp-ctrl-btn", W.value && "is-active"]),
1086
- "aria-label": W.value ? "Exit fullscreen" : "Enter fullscreen",
1087
- "aria-pressed": W.value,
1088
- onClick: re
1202
+ class: y(["gvp-ctrl-btn", K.value && "is-active"]),
1203
+ "aria-label": K.value ? "Exit fullscreen" : "Enter fullscreen",
1204
+ "aria-pressed": K.value,
1205
+ onClick: Te
1089
1206
  }, [
1090
- W.value ? (i(), U(lt, { key: 0 })) : (i(), U(at, { key: 1 }))
1091
- ], 10, $t)) : M("", !0)
1207
+ K.value ? (i(), j(yt, { key: 0 })) : (i(), j(gt, { key: 1 }))
1208
+ ], 10, Zt)) : T("", !0)
1092
1209
  ])
1093
1210
  ], 34));
1094
1211
  }
1095
- }), Mt = { name: "IconDesktop" }, Tt = /* @__PURE__ */ T({
1096
- ...Mt,
1212
+ }), Wt = { name: "IconDesktop" }, zt = /* @__PURE__ */ S({
1213
+ ...Wt,
1097
1214
  props: {
1098
1215
  class: {}
1099
1216
  },
1100
1217
  setup(t) {
1101
- const a = t;
1102
- return (l, e) => (i(), v("svg", {
1103
- class: C(["gvp-icon", a.class]),
1218
+ const o = t;
1219
+ return (s, e) => (i(), v("svg", {
1220
+ class: y(["gvp-icon", o.class]),
1104
1221
  width: "20",
1105
1222
  height: "20",
1106
1223
  viewBox: "0 0 24 24",
@@ -1108,26 +1225,26 @@ const rt = { class: "gvp-controls-row" }, it = ["aria-label", "aria-pressed"], u
1108
1225
  xmlns: "http://www.w3.org/2000/svg",
1109
1226
  "aria-hidden": "true"
1110
1227
  }, [...e[0] || (e[0] = [
1111
- s("path", {
1228
+ l("path", {
1112
1229
  d: "M14 2H10C6.72077 2 5.08116 2 3.91891 2.81382C3.48891 3.1149 3.1149 3.48891 2.81382 3.91891C2 5.08116 2 6.72077 2 10C2 13.2792 2 14.9188 2.81382 16.0811C3.1149 16.5111 3.48891 16.8851 3.91891 17.1862C5.08116 18 6.72077 18 10 18H14C17.2792 18 18.9188 18 20.0811 17.1862C20.5111 16.8851 20.8851 16.5111 21.1862 16.0811C22 14.9188 22 13.2792 22 10C22 6.72077 22 5.08116 21.1862 3.91891C20.8851 3.48891 20.5111 3.1149 20.0811 2.81382C18.9188 2 17.2792 2 14 2Z",
1113
1230
  stroke: "currentColor",
1114
1231
  "stroke-width": "1.5",
1115
1232
  "stroke-linecap": "round"
1116
1233
  }, null, -1),
1117
- s("path", {
1234
+ l("path", {
1118
1235
  d: "M11 15H13",
1119
1236
  stroke: "currentColor",
1120
1237
  "stroke-width": "1.5",
1121
1238
  "stroke-linecap": "round",
1122
1239
  "stroke-linejoin": "round"
1123
1240
  }, null, -1),
1124
- s("path", {
1241
+ l("path", {
1125
1242
  d: "M14.5 22L14.1845 21.5811C13.4733 20.6369 13.2969 19.1944 13.7468 18M9.5 22L9.8155 21.5811C10.5267 20.6369 10.7031 19.1944 10.2532 18",
1126
1243
  stroke: "currentColor",
1127
1244
  "stroke-width": "1.5",
1128
1245
  "stroke-linecap": "round"
1129
1246
  }, null, -1),
1130
- s("path", {
1247
+ l("path", {
1131
1248
  d: "M7 22H17",
1132
1249
  stroke: "currentColor",
1133
1250
  "stroke-width": "1.5",
@@ -1135,15 +1252,15 @@ const rt = { class: "gvp-controls-row" }, it = ["aria-label", "aria-pressed"], u
1135
1252
  }, null, -1)
1136
1253
  ])], 2));
1137
1254
  }
1138
- }), It = { name: "IconMobile" }, St = /* @__PURE__ */ T({
1139
- ...It,
1255
+ }), Yt = { name: "IconMobile" }, Kt = /* @__PURE__ */ S({
1256
+ ...Yt,
1140
1257
  props: {
1141
1258
  class: {}
1142
1259
  },
1143
1260
  setup(t) {
1144
- const a = t;
1145
- return (l, e) => (i(), v("svg", {
1146
- class: C(["gvp-icon", a.class]),
1261
+ const o = t;
1262
+ return (s, e) => (i(), v("svg", {
1263
+ class: y(["gvp-icon", o.class]),
1147
1264
  width: "20",
1148
1265
  height: "20",
1149
1266
  viewBox: "0 0 24 24",
@@ -1151,20 +1268,20 @@ const rt = { class: "gvp-controls-row" }, it = ["aria-label", "aria-pressed"], u
1151
1268
  xmlns: "http://www.w3.org/2000/svg",
1152
1269
  "aria-hidden": "true"
1153
1270
  }, [...e[0] || (e[0] = [
1154
- s("path", {
1271
+ l("path", {
1155
1272
  d: "M5 9C5 5.70017 5 4.05025 6.02513 3.02513C7.05025 2 8.70017 2 12 2C15.2998 2 16.9497 2 17.9749 3.02513C19 4.05025 19 5.70017 19 9V15C19 18.2998 19 19.9497 17.9749 20.9749C16.9497 22 15.2998 22 12 22C8.70017 22 7.05025 22 6.02513 20.9749C5 19.9497 5 18.2998 5 15V9Z",
1156
1273
  stroke: "currentColor",
1157
1274
  "stroke-width": "2",
1158
1275
  "stroke-linecap": "round"
1159
1276
  }, null, -1),
1160
- s("path", {
1277
+ l("path", {
1161
1278
  d: "M11 19H13",
1162
1279
  stroke: "currentColor",
1163
1280
  "stroke-width": "2",
1164
1281
  "stroke-linecap": "round",
1165
1282
  "stroke-linejoin": "round"
1166
1283
  }, null, -1),
1167
- s("path", {
1284
+ l("path", {
1168
1285
  d: "M9 2L9.089 2.53402C9.28188 3.69129 9.37832 4.26993 9.77519 4.62204C10.1892 4.98934 10.7761 5 12 5C13.2239 5 13.8108 4.98934 14.2248 4.62204C14.6217 4.26993 14.7181 3.69129 14.911 2.53402L15 2",
1169
1286
  stroke: "currentColor",
1170
1287
  "stroke-width": "2",
@@ -1172,15 +1289,15 @@ const rt = { class: "gvp-controls-row" }, it = ["aria-label", "aria-pressed"], u
1172
1289
  }, null, -1)
1173
1290
  ])], 2));
1174
1291
  }
1175
- }), Ht = { name: "IconPlay" }, Bt = /* @__PURE__ */ T({
1176
- ...Ht,
1292
+ }), Jt = { name: "IconPlay" }, Xt = /* @__PURE__ */ S({
1293
+ ...Jt,
1177
1294
  props: {
1178
1295
  class: {}
1179
1296
  },
1180
1297
  setup(t) {
1181
- const a = t;
1182
- return (l, e) => (i(), v("svg", {
1183
- class: C(["gvp-icon", a.class]),
1298
+ const o = t;
1299
+ return (s, e) => (i(), v("svg", {
1300
+ class: y(["gvp-icon", o.class]),
1184
1301
  width: "22",
1185
1302
  height: "22",
1186
1303
  viewBox: "0 0 16 16",
@@ -1188,21 +1305,21 @@ const rt = { class: "gvp-controls-row" }, it = ["aria-label", "aria-pressed"], u
1188
1305
  xmlns: "http://www.w3.org/2000/svg",
1189
1306
  "aria-hidden": "true"
1190
1307
  }, [...e[0] || (e[0] = [
1191
- s("path", {
1308
+ l("path", {
1192
1309
  d: "M5.3335 11.45V4.54997C5.3335 4.36108 5.40016 4.20275 5.5335 4.07497C5.66683 3.94719 5.82238 3.8833 6.00016 3.8833C6.05572 3.8833 6.11405 3.89163 6.17516 3.9083C6.23627 3.92497 6.29461 3.94997 6.35016 3.9833L11.7835 7.4333C11.8835 7.49997 11.9585 7.5833 12.0085 7.6833C12.0585 7.7833 12.0835 7.88886 12.0835 7.99997C12.0835 8.11108 12.0585 8.21663 12.0085 8.31663C11.9585 8.41663 11.8835 8.49997 11.7835 8.56663L6.35016 12.0166C6.29461 12.05 6.23627 12.075 6.17516 12.0916C6.11405 12.1083 6.05572 12.1166 6.00016 12.1166C5.82238 12.1166 5.66683 12.0527 5.5335 11.925C5.40016 11.7972 5.3335 11.6389 5.3335 11.45Z",
1193
1310
  fill: "currentColor"
1194
1311
  }, null, -1)
1195
1312
  ])], 2));
1196
1313
  }
1197
- }), Vt = { name: "IconX" }, At = /* @__PURE__ */ T({
1198
- ...Vt,
1314
+ }), Gt = { name: "IconX" }, en = /* @__PURE__ */ S({
1315
+ ...Gt,
1199
1316
  props: {
1200
1317
  class: {}
1201
1318
  },
1202
1319
  setup(t) {
1203
- const a = t;
1204
- return (l, e) => (i(), v("svg", {
1205
- class: C(["gvp-icon", a.class]),
1320
+ const o = t;
1321
+ return (s, e) => (i(), v("svg", {
1322
+ class: y(["gvp-icon", o.class]),
1206
1323
  width: "14",
1207
1324
  height: "14",
1208
1325
  viewBox: "0 0 14 14",
@@ -1210,83 +1327,83 @@ const rt = { class: "gvp-controls-row" }, it = ["aria-label", "aria-pressed"], u
1210
1327
  xmlns: "http://www.w3.org/2000/svg",
1211
1328
  "aria-hidden": "true"
1212
1329
  }, [...e[0] || (e[0] = [
1213
- s("path", {
1330
+ l("path", {
1214
1331
  d: "M6.94994 5.53594L12.1929 0.292938C12.5834 -0.0975275 13.2165 -0.0975279 13.6069 0.292938C13.9974 0.683403 13.9974 1.31647 13.6069 1.70694L8.36394 6.94994L13.6069 12.1929C13.9974 12.5834 13.9974 13.2165 13.6069 13.6069C13.2165 13.9974 12.5834 13.9974 12.1929 13.6069L6.94994 8.36394L1.70694 13.6069C1.31647 13.9974 0.683403 13.9974 0.292938 13.6069C-0.0975279 13.2165 -0.0975277 12.5834 0.292938 12.1929L5.53594 6.94994L0.292938 1.70694C-0.0975279 1.31647 -0.0975279 0.683403 0.292938 0.292938C0.683403 -0.0975279 1.31647 -0.0975277 1.70694 0.292938L6.94994 5.53594Z",
1215
1332
  fill: "currentColor"
1216
1333
  }, null, -1)
1217
1334
  ])], 2));
1218
1335
  }
1219
1336
  });
1220
- function Dt(t) {
1337
+ function tn(t) {
1221
1338
  if (!t) return null;
1222
1339
  if (/^[A-Za-z0-9_-]{11}$/.test(t)) return t;
1223
- let a;
1340
+ let o;
1224
1341
  try {
1225
- a = new URL(t);
1342
+ o = new URL(t);
1226
1343
  } catch {
1227
1344
  return null;
1228
1345
  }
1229
- const l = a.hostname.replace(/^www\./, "");
1230
- if (l === "youtu.be") {
1231
- const e = a.pathname.slice(1).split("/")[0];
1346
+ const s = o.hostname.replace(/^www\./, "");
1347
+ if (s === "youtu.be") {
1348
+ const e = o.pathname.slice(1).split("/")[0];
1232
1349
  return /^[A-Za-z0-9_-]{11}$/.test(e) ? e : null;
1233
1350
  }
1234
- if (l === "youtube.com" || l === "m.youtube.com" || l === "music.youtube.com" || l === "youtube-nocookie.com") {
1235
- const e = a.searchParams.get("v");
1351
+ if (s === "youtube.com" || s === "m.youtube.com" || s === "music.youtube.com" || s === "youtube-nocookie.com") {
1352
+ const e = o.searchParams.get("v");
1236
1353
  if (e && /^[A-Za-z0-9_-]{11}$/.test(e)) return e;
1237
- const o = /^\/(?:embed|shorts|v|live)\/([A-Za-z0-9_-]{11})/.exec(
1238
- a.pathname
1354
+ const f = /^\/(?:embed|shorts|v|live)\/([A-Za-z0-9_-]{11})/.exec(
1355
+ o.pathname
1239
1356
  );
1240
- if (o) return o[1];
1357
+ if (f) return f[1];
1241
1358
  }
1242
1359
  return null;
1243
1360
  }
1244
- function Rt(t) {
1361
+ function nn(t) {
1245
1362
  try {
1246
- const a = new URL(t), l = a.searchParams.get("t") ?? a.searchParams.get("start");
1247
- if (!l) return null;
1248
- if (/^\d+s?$/.test(l)) return Number.parseInt(l, 10);
1249
- const e = /^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/.exec(l);
1363
+ const o = new URL(t), s = o.searchParams.get("t") ?? o.searchParams.get("start");
1364
+ if (!s) return null;
1365
+ if (/^\d+s?$/.test(s)) return Number.parseInt(s, 10);
1366
+ const e = /^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/.exec(s);
1250
1367
  if (e) {
1251
- const o = Number.parseInt(e[1] ?? "0", 10), m = Number.parseInt(e[2] ?? "0", 10), g = Number.parseInt(e[3] ?? "0", 10), p = o * 3600 + m * 60 + g;
1252
- return p > 0 ? p : null;
1368
+ const f = Number.parseInt(e[1] ?? "0", 10), a = Number.parseInt(e[2] ?? "0", 10), w = Number.parseInt(e[3] ?? "0", 10), m = f * 3600 + a * 60 + w;
1369
+ return m > 0 ? m : null;
1253
1370
  }
1254
1371
  } catch {
1255
1372
  }
1256
1373
  return null;
1257
1374
  }
1258
- function Ft(t, a = {}) {
1375
+ function ln(t, o = {}) {
1259
1376
  const {
1260
- autoPlay: l = !1,
1377
+ autoPlay: s = !1,
1261
1378
  muted: e = !0,
1262
- loop: o = !1,
1263
- controls: m = !0,
1264
- startSeconds: g
1265
- } = a, p = new URLSearchParams({
1379
+ loop: f = !1,
1380
+ controls: a = !0,
1381
+ startSeconds: w
1382
+ } = o, m = new URLSearchParams({
1266
1383
  rel: "0",
1267
1384
  modestbranding: "1",
1268
1385
  playsinline: "1",
1269
- controls: m ? "1" : "0"
1386
+ controls: a ? "1" : "0"
1270
1387
  });
1271
- return l ? (p.set("autoplay", "1"), p.set("mute", "1")) : e && p.set("mute", "1"), o && (p.set("loop", "1"), p.set("playlist", t)), g && g > 0 && p.set("start", String(g)), `https://www.youtube-nocookie.com/embed/${t}?${p.toString()}`;
1388
+ return s ? (m.set("autoplay", "1"), m.set("mute", "1")) : e && m.set("mute", "1"), f && (m.set("loop", "1"), m.set("playlist", t)), w && w > 0 && m.set("start", String(w)), `https://www.youtube-nocookie.com/embed/${t}?${m.toString()}`;
1272
1389
  }
1273
- const Nt = ["src"], Ot = {
1390
+ const on = ["src"], an = {
1274
1391
  key: 2,
1275
1392
  class: "gvp-vignette"
1276
- }, jt = {
1393
+ }, sn = {
1277
1394
  key: 3,
1278
1395
  class: "gvp-toggle"
1279
- }, Ut = { class: "gvp-toggle-pill" }, Zt = ["aria-pressed"], qt = ["aria-pressed"], zt = ["aria-label", "aria-pressed"], Wt = ["aria-label"], Yt = {
1396
+ }, rn = { class: "gvp-toggle-pill" }, un = ["aria-pressed"], cn = ["aria-pressed"], dn = ["aria-label", "aria-pressed"], vn = ["aria-label"], pn = {
1280
1397
  key: 10,
1281
1398
  class: "gvp-play-wrap"
1282
- }, Kt = {
1399
+ }, fn = {
1283
1400
  key: 0,
1284
1401
  class: "gvp-tooltip",
1285
1402
  role: "tooltip"
1286
- }, Jt = {
1403
+ }, mn = {
1287
1404
  key: 12,
1288
1405
  class: "gvp-bottom-fade"
1289
- }, Qt = /* @__PURE__ */ T({
1406
+ }, kn = /* @__PURE__ */ S({
1290
1407
  __name: "VideoPlayer",
1291
1408
  props: {
1292
1409
  src: {},
@@ -1307,285 +1424,295 @@ const Nt = ["src"], Ot = {
1307
1424
  closable: { type: Boolean, default: !1 }
1308
1425
  },
1309
1426
  emits: ["close", "play", "pause"],
1310
- setup(t, { emit: a }) {
1311
- const l = t, e = a, o = w(null), m = w(l.defaultDevice), g = w(!1), p = w(!1), L = w(null), P = w([]), x = w(-1), _ = w(1), k = w(!1), h = w(!1), r = w(null), b = typeof document < "u" && !!document.pictureInPictureEnabled, E = Z(
1312
- () => l.controls === !0 || l.controls === "custom"
1313
- ), R = Z(() => l.controls === "native"), H = Z(() => Dt(l.src)), A = Z(() => H.value !== null), y = Z(
1314
- () => H.value ? Ft(H.value, {
1315
- autoPlay: l.autoPlay,
1316
- muted: l.muted,
1317
- loop: l.loop,
1318
- controls: E.value ? !0 : R.value,
1319
- startSeconds: Rt(l.src)
1427
+ setup(t, { emit: o }) {
1428
+ const s = t, e = o, f = k(null), a = k(s.defaultDevice), w = k(!1), m = k(!1), $ = k(null), E = k([]), _ = k(-1), A = k([]), b = k(-1), h = k(-1), x = k(1), u = k(!1), C = k(!1), B = k(null), W = typeof document < "u" && !!document.pictureInPictureEnabled, M = N(
1429
+ () => s.controls === !0 || s.controls === "custom"
1430
+ ), Z = N(() => s.controls === "native"), g = N(() => tn(s.src)), P = N(() => g.value !== null), V = N(
1431
+ () => g.value ? ln(g.value, {
1432
+ autoPlay: s.autoPlay,
1433
+ muted: s.muted,
1434
+ loop: s.loop,
1435
+ controls: M.value ? !0 : Z.value,
1436
+ startSeconds: nn(s.src)
1320
1437
  }) : null
1321
1438
  );
1322
- function I(d) {
1323
- P.value = d, x.value = -1;
1439
+ function I(c) {
1440
+ E.value = c, _.value = -1;
1441
+ }
1442
+ function H(c) {
1443
+ A.value = c, h.value = -1;
1324
1444
  }
1325
- const D = Z(
1326
- () => !A.value && P.value.length > 1
1327
- ), B = Z(
1445
+ const z = N(
1446
+ () => !P.value && E.value.length > 1
1447
+ ), X = N(
1328
1448
  () => {
1329
- var d;
1330
- return x.value >= 0 ? x.value : ((d = P.value[0]) == null ? void 0 : d.index) ?? -1;
1449
+ var c;
1450
+ return _.value >= 0 ? _.value : ((c = E.value[0]) == null ? void 0 : c.index) ?? -1;
1331
1451
  }
1332
- ), N = Z(
1452
+ ), re = N(
1333
1453
  () => {
1334
- var d, c;
1335
- return m.value === "mobile" ? ((d = l.aspectRatio) == null ? void 0 : d.mobile) ?? "9/16" : ((c = l.aspectRatio) == null ? void 0 : c.desktop) ?? "16/9";
1454
+ var c, d;
1455
+ return a.value === "mobile" ? ((c = s.aspectRatio) == null ? void 0 : c.mobile) ?? "9/16" : ((d = s.aspectRatio) == null ? void 0 : d.desktop) ?? "16/9";
1336
1456
  }
1337
- ), G = Z(
1457
+ ), ke = N(
1338
1458
  () => {
1339
- var d, c;
1340
- return m.value === "mobile" ? ((d = l.frameMaxWidth) == null ? void 0 : d.mobile) ?? "420px" : ((c = l.frameMaxWidth) == null ? void 0 : c.desktop) ?? "960px";
1459
+ var c, d;
1460
+ return a.value === "mobile" ? ((c = s.frameMaxWidth) == null ? void 0 : c.mobile) ?? "420px" : ((d = s.frameMaxWidth) == null ? void 0 : d.desktop) ?? "960px";
1341
1461
  }
1342
- ), S = Z(() => {
1343
- var d;
1344
- return ((d = o.value) == null ? void 0 : d.videoEl) ?? null;
1462
+ ), Q = N(() => {
1463
+ var c;
1464
+ return ((c = f.value) == null ? void 0 : c.videoEl) ?? null;
1345
1465
  });
1346
- async function z() {
1347
- const d = S.value;
1348
- if (d)
1466
+ async function te() {
1467
+ const c = Q.value;
1468
+ if (c)
1349
1469
  try {
1350
- d.readyState < 2 && d.load();
1351
- const c = d.play();
1352
- L.value = c, await c, g.value = !0;
1470
+ c.readyState < 2 && c.load();
1471
+ const d = c.play();
1472
+ $.value = d, await d, w.value = !0;
1353
1473
  } catch {
1354
- g.value = !1;
1474
+ w.value = !1;
1355
1475
  } finally {
1356
- L.value = null;
1476
+ $.value = null;
1357
1477
  }
1358
1478
  }
1359
- async function te() {
1360
- const d = S.value;
1361
- if (d) {
1362
- if (L.value)
1479
+ async function se() {
1480
+ const c = Q.value;
1481
+ if (c) {
1482
+ if ($.value)
1363
1483
  try {
1364
- await L.value;
1484
+ await $.value;
1365
1485
  } catch {
1366
1486
  }
1367
- d.pause();
1487
+ c.pause();
1368
1488
  }
1369
1489
  }
1370
- async function se() {
1371
- !l.hoverPlay || A.value || await z();
1490
+ async function ue() {
1491
+ !s.hoverPlay || P.value || await te();
1372
1492
  }
1373
- async function de() {
1374
- !l.hoverPlay || A.value || (await te(), g.value = !1);
1493
+ async function le() {
1494
+ !s.hoverPlay || P.value || (await se(), w.value = !1);
1375
1495
  }
1376
- async function Q() {
1377
- const d = S.value;
1378
- d && (d.paused ? await z() : (await te(), g.value = !1));
1496
+ async function F() {
1497
+ const c = Q.value;
1498
+ c && (c.paused ? await te() : (await se(), w.value = !1));
1379
1499
  }
1380
1500
  function Y() {
1381
- p.value = !0, se();
1501
+ m.value = !0, ue();
1382
1502
  }
1383
- function ve() {
1384
- p.value = !1, de();
1503
+ function ce() {
1504
+ m.value = !1, le();
1385
1505
  }
1386
- function pe(d) {
1387
- _.value = d;
1388
- const c = S.value;
1389
- c && (c.playbackRate = d);
1506
+ function de(c) {
1507
+ x.value = c;
1508
+ const d = Q.value;
1509
+ d && (d.playbackRate = c);
1390
1510
  }
1391
- F(S, (d) => {
1392
- d && (d.addEventListener("ratechange", () => {
1393
- _.value = d.playbackRate;
1394
- }), d.addEventListener("enterpictureinpicture", () => {
1395
- k.value = !0;
1396
- }), d.addEventListener("leavepictureinpicture", () => {
1397
- k.value = !1;
1511
+ R(Q, (c) => {
1512
+ c && (c.addEventListener("ratechange", () => {
1513
+ x.value = c.playbackRate;
1514
+ }), c.addEventListener("enterpictureinpicture", () => {
1515
+ u.value = !0;
1516
+ }), c.addEventListener("leavepictureinpicture", () => {
1517
+ u.value = !1;
1398
1518
  }));
1399
1519
  });
1400
- function W() {
1401
- const d = S.value;
1402
- d && (document.pictureInPictureElement ? document.exitPictureInPicture().catch(() => {
1403
- }) : d.requestPictureInPicture().catch(() => {
1520
+ function ve() {
1521
+ const c = Q.value;
1522
+ c && (document.pictureInPictureElement ? document.exitPictureInPicture().catch(() => {
1523
+ }) : c.requestPictureInPicture().catch(() => {
1404
1524
  }));
1405
1525
  }
1406
- function le(d) {
1407
- var K, re, ie;
1408
- const c = S.value;
1409
- if (!(!c || !h.value && !((K = r.value) != null && K.contains(document.activeElement)) || d.target.tagName === "INPUT" && d.key !== " "))
1410
- switch (d.key) {
1526
+ function pe(c) {
1527
+ var K, fe, me;
1528
+ const d = Q.value;
1529
+ if (!(!d || !C.value && !((K = B.value) != null && K.contains(document.activeElement)) || c.target.tagName === "INPUT" && c.key !== " "))
1530
+ switch (c.key) {
1411
1531
  case " ":
1412
1532
  case "k":
1413
- d.preventDefault(), Q();
1533
+ c.preventDefault(), F();
1414
1534
  break;
1415
1535
  case "ArrowLeft":
1416
- d.preventDefault(), c.currentTime = Math.max(0, c.currentTime - 5);
1536
+ c.preventDefault(), d.currentTime = Math.max(0, d.currentTime - 5);
1417
1537
  break;
1418
1538
  case "ArrowRight":
1419
- d.preventDefault(), c.currentTime = Math.min(c.duration || 0, c.currentTime + 5);
1539
+ c.preventDefault(), d.currentTime = Math.min(d.duration || 0, d.currentTime + 5);
1420
1540
  break;
1421
1541
  case "ArrowUp":
1422
- d.preventDefault(), c.volume = Math.min(1, c.volume + 0.1), c.muted && (c.muted = !1);
1542
+ c.preventDefault(), d.volume = Math.min(1, d.volume + 0.1), d.muted && (d.muted = !1);
1423
1543
  break;
1424
1544
  case "ArrowDown":
1425
- d.preventDefault(), c.volume = Math.max(0, c.volume - 0.1);
1545
+ c.preventDefault(), d.volume = Math.max(0, d.volume - 0.1);
1426
1546
  break;
1427
1547
  case "m":
1428
- c.muted = !c.muted;
1548
+ d.muted = !d.muted;
1429
1549
  break;
1430
1550
  case "f": {
1431
- const ue = document.fullscreenElement ?? document.webkitFullscreenElement ?? null, n = ((re = r.value) == null ? void 0 : re.requestFullscreen) ?? ((ie = r.value) == null ? void 0 : ie.webkitRequestFullscreen), u = document.exitFullscreen ?? document.webkitExitFullscreen;
1432
- ue === r.value ? u == null || u.call(document).catch(() => {
1433
- }) : n && r.value && n.call(r.value).catch(() => {
1551
+ const ye = document.fullscreenElement ?? document.webkitFullscreenElement ?? null, he = ((fe = B.value) == null ? void 0 : fe.requestFullscreen) ?? ((me = B.value) == null ? void 0 : me.webkitRequestFullscreen), G = document.exitFullscreen ?? document.webkitExitFullscreen;
1552
+ ye === B.value ? G == null || G.call(document).catch(() => {
1553
+ }) : he && B.value && he.call(B.value).catch(() => {
1434
1554
  });
1435
1555
  break;
1436
1556
  }
1437
1557
  case "p":
1438
- b && W();
1558
+ W && ve();
1439
1559
  break;
1440
1560
  }
1441
1561
  }
1442
- return fe(() => {
1443
- document.addEventListener("keydown", le);
1444
- }), X(() => {
1445
- document.removeEventListener("keydown", le);
1446
- }), (d, c) => (i(), v("div", {
1562
+ return be(() => {
1563
+ document.addEventListener("keydown", pe);
1564
+ }), ne(() => {
1565
+ document.removeEventListener("keydown", pe);
1566
+ }), (c, d) => (i(), v("div", {
1447
1567
  ref_key: "rootEl",
1448
- ref: r,
1449
- class: C(["gvp-root", l.class]),
1450
- style: ce({ width: G.value, aspectRatio: N.value }),
1451
- onMouseenter: c[8] || (c[8] = (O) => {
1452
- h.value = !0, Y();
1568
+ ref: B,
1569
+ class: y(["gvp-root", s.class]),
1570
+ style: ge({ width: ke.value, aspectRatio: re.value }),
1571
+ onMouseenter: d[10] || (d[10] = (D) => {
1572
+ C.value = !0, Y();
1453
1573
  }),
1454
- onMouseleave: c[9] || (c[9] = (O) => {
1455
- h.value = !1, ve();
1574
+ onMouseleave: d[11] || (d[11] = (D) => {
1575
+ C.value = !1, ce();
1456
1576
  })
1457
1577
  }, [
1458
- A.value ? (i(), v("iframe", {
1578
+ P.value ? (i(), v("iframe", {
1459
1579
  key: 0,
1460
1580
  class: "gvp-video gvp-youtube",
1461
- src: y.value ?? void 0,
1581
+ src: V.value ?? void 0,
1462
1582
  title: "YouTube video player",
1463
1583
  allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
1464
1584
  allowfullscreen: "",
1465
1585
  referrerpolicy: "strict-origin-when-cross-origin"
1466
- }, null, 8, Nt)) : (i(), U(Ee, {
1586
+ }, null, 8, on)) : (i(), j(Ve, {
1467
1587
  key: 1,
1468
1588
  ref_key: "hlsPlayerRef",
1469
- ref: o,
1470
- controls: R.value,
1589
+ ref: f,
1590
+ controls: Z.value,
1471
1591
  "hls-config": t.hlsConfig,
1472
1592
  "is-hls": t.isHls,
1473
1593
  loop: t.loop,
1474
1594
  muted: t.muted,
1475
1595
  "auto-play": t.autoPlay,
1476
- "audio-track-index": x.value,
1596
+ "audio-track-index": _.value,
1597
+ "quality-level-index": h.value,
1477
1598
  "plays-inline": !0,
1478
1599
  poster: t.poster,
1479
1600
  src: t.src,
1480
1601
  class: "gvp-video",
1481
1602
  preload: "metadata",
1482
1603
  onAudioTracks: I,
1483
- onPause: c[0] || (c[0] = (O) => {
1484
- g.value = !1, e("pause");
1604
+ onQualityLevels: H,
1605
+ onCurrentLevel: d[0] || (d[0] = (D) => b.value = D),
1606
+ onPause: d[1] || (d[1] = (D) => {
1607
+ w.value = !1, e("pause");
1485
1608
  }),
1486
- onPlay: c[1] || (c[1] = (O) => {
1487
- g.value = !0, e("play");
1609
+ onPlay: d[2] || (d[2] = (D) => {
1610
+ w.value = !0, e("play");
1488
1611
  })
1489
1612
  }, {
1490
- default: xe(() => [
1491
- ke(d.$slots, "default")
1613
+ default: Se(() => [
1614
+ Ee(c.$slots, "default")
1492
1615
  ]),
1493
1616
  _: 3
1494
- }, 8, ["controls", "hls-config", "is-hls", "loop", "muted", "auto-play", "audio-track-index", "poster", "src"])),
1495
- A.value ? M("", !0) : (i(), v("div", Ot)),
1496
- t.showDeviceToggle ? (i(), v("div", jt, [
1497
- s("div", Ut, [
1498
- s("button", {
1499
- "aria-pressed": m.value === "desktop",
1500
- class: C(["gvp-toggle-btn", { "is-active": m.value === "desktop" }]),
1617
+ }, 8, ["controls", "hls-config", "is-hls", "loop", "muted", "auto-play", "audio-track-index", "quality-level-index", "poster", "src"])),
1618
+ P.value ? T("", !0) : (i(), v("div", an)),
1619
+ t.showDeviceToggle ? (i(), v("div", sn, [
1620
+ l("div", rn, [
1621
+ l("button", {
1622
+ "aria-pressed": a.value === "desktop",
1623
+ class: y(["gvp-toggle-btn", { "is-active": a.value === "desktop" }]),
1501
1624
  "aria-label": "Desktop view",
1502
1625
  type: "button",
1503
- onClick: c[2] || (c[2] = (O) => m.value = "desktop")
1626
+ onClick: d[3] || (d[3] = (D) => a.value = "desktop")
1504
1627
  }, [
1505
- j(Tt)
1506
- ], 10, Zt),
1507
- c[10] || (c[10] = s("div", { class: "gvp-toggle-divider" }, null, -1)),
1508
- s("button", {
1509
- "aria-pressed": m.value === "mobile",
1510
- class: C(["gvp-toggle-btn", { "is-active": m.value === "mobile" }]),
1628
+ U(zt)
1629
+ ], 10, un),
1630
+ d[12] || (d[12] = l("div", { class: "gvp-toggle-divider" }, null, -1)),
1631
+ l("button", {
1632
+ "aria-pressed": a.value === "mobile",
1633
+ class: y(["gvp-toggle-btn", { "is-active": a.value === "mobile" }]),
1511
1634
  "aria-label": "Mobile view",
1512
1635
  type: "button",
1513
- onClick: c[3] || (c[3] = (O) => m.value = "mobile")
1636
+ onClick: d[4] || (d[4] = (D) => a.value = "mobile")
1514
1637
  }, [
1515
- j(St)
1516
- ], 10, qt)
1638
+ U(Kt)
1639
+ ], 10, cn)
1517
1640
  ])
1518
- ])) : M("", !0),
1641
+ ])) : T("", !0),
1519
1642
  t.closable ? (i(), v("button", {
1520
1643
  key: 4,
1521
1644
  "aria-label": "Close",
1522
1645
  class: "gvp-close",
1523
1646
  type: "button",
1524
- onClick: c[4] || (c[4] = (O) => e("close"))
1647
+ onClick: d[5] || (d[5] = (D) => e("close"))
1525
1648
  }, [
1526
- j(At)
1527
- ])) : M("", !0),
1528
- D.value && !E.value ? (i(), U(He, {
1649
+ U(en)
1650
+ ])) : T("", !0),
1651
+ z.value && !M.value ? (i(), j(Ze, {
1529
1652
  key: 5,
1530
- tracks: P.value,
1531
- "active-index": B.value,
1532
- onSelect: c[5] || (c[5] = (O) => x.value = O)
1533
- }, null, 8, ["tracks", "active-index"])) : M("", !0),
1534
- !A.value && !E.value ? (i(), U(Fe, {
1653
+ tracks: E.value,
1654
+ "active-index": X.value,
1655
+ onSelect: d[6] || (d[6] = (D) => _.value = D)
1656
+ }, null, 8, ["tracks", "active-index"])) : T("", !0),
1657
+ !P.value && !M.value ? (i(), j(Ke, {
1535
1658
  key: 6,
1536
- speed: _.value,
1537
- onSelect: pe
1538
- }, null, 8, ["speed"])) : M("", !0),
1539
- !A.value && !E.value ? (i(), U(qe, {
1659
+ speed: x.value,
1660
+ onSelect: de
1661
+ }, null, 8, ["speed"])) : T("", !0),
1662
+ !P.value && !M.value ? (i(), j(nt, {
1540
1663
  key: 7,
1541
- video: S.value
1542
- }, null, 8, ["video"])) : M("", !0),
1543
- !A.value && J(b) && !E.value ? (i(), v("button", {
1664
+ video: Q.value
1665
+ }, null, 8, ["video"])) : T("", !0),
1666
+ !P.value && ee(W) && !M.value ? (i(), v("button", {
1544
1667
  key: 8,
1545
1668
  type: "button",
1546
- class: C(["gvp-pip-btn", { "is-active": k.value }]),
1547
- "aria-label": k.value ? "Exit picture-in-picture" : "Picture-in-picture",
1548
- "aria-pressed": k.value,
1549
- onClick: W
1669
+ class: y(["gvp-pip-btn", { "is-active": u.value }]),
1670
+ "aria-label": u.value ? "Exit picture-in-picture" : "Picture-in-picture",
1671
+ "aria-pressed": u.value,
1672
+ onClick: ve
1550
1673
  }, [
1551
- j(Ce)
1552
- ], 10, zt)) : M("", !0),
1553
- !A.value && E.value ? (i(), v("button", {
1674
+ U(Me)
1675
+ ], 10, dn)) : T("", !0),
1676
+ !P.value && M.value ? (i(), v("button", {
1554
1677
  key: 9,
1555
1678
  type: "button",
1556
1679
  class: "gvp-click-layer",
1557
- "aria-label": g.value ? "Pause" : "Play",
1558
- onClick: Q
1559
- }, null, 8, Wt)) : M("", !0),
1560
- !A.value && !E.value && !g.value ? (i(), v("div", Yt, [
1561
- s("button", {
1680
+ "aria-label": w.value ? "Pause" : "Play",
1681
+ onClick: F
1682
+ }, null, 8, vn)) : T("", !0),
1683
+ !P.value && !M.value && !w.value ? (i(), v("div", pn, [
1684
+ l("button", {
1562
1685
  "aria-label": "Play",
1563
1686
  class: "gvp-play",
1564
1687
  type: "button",
1565
- onClick: Q,
1566
- onMouseenter: c[6] || (c[6] = (O) => p.value = !0),
1567
- onMouseleave: c[7] || (c[7] = (O) => p.value = !1)
1688
+ onClick: F,
1689
+ onMouseenter: d[7] || (d[7] = (D) => m.value = !0),
1690
+ onMouseleave: d[8] || (d[8] = (D) => m.value = !1)
1568
1691
  }, [
1569
- j(Bt),
1570
- t.tooltipText && p.value ? (i(), v("span", Kt, q(t.tooltipText), 1)) : M("", !0)
1692
+ U(Xt),
1693
+ t.tooltipText && m.value ? (i(), v("span", fn, O(t.tooltipText), 1)) : T("", !0)
1571
1694
  ], 32)
1572
- ])) : M("", !0),
1573
- !A.value && E.value ? (i(), U(Pt, {
1695
+ ])) : T("", !0),
1696
+ !P.value && M.value ? (i(), j(Qt, {
1574
1697
  key: 11,
1575
- video: S.value,
1576
- "is-playing": g.value,
1577
- container: r.value,
1578
- "on-toggle-play": Q
1579
- }, null, 8, ["video", "is-playing", "container"])) : M("", !0),
1580
- !A.value && !E.value ? (i(), v("div", Jt)) : M("", !0)
1698
+ video: Q.value,
1699
+ "is-playing": w.value,
1700
+ container: B.value,
1701
+ "on-toggle-play": F,
1702
+ "quality-levels": A.value,
1703
+ "current-level": b.value,
1704
+ "selected-level": h.value,
1705
+ onSelectLevel: d[9] || (d[9] = (D) => h.value = D)
1706
+ }, null, 8, ["video", "is-playing", "container", "quality-levels", "current-level", "selected-level"])) : T("", !0),
1707
+ !P.value && !M.value ? (i(), v("div", mn)) : T("", !0)
1581
1708
  ], 38));
1582
1709
  }
1583
1710
  });
1584
1711
  export {
1585
- Ee as HLSPlayer,
1586
- Qt as VueVideoPlayer,
1587
- Dt as parseYouTubeId,
1588
- Rt as parseYouTubeStart,
1589
- Ft as youTubeEmbedUrl
1712
+ Ve as HLSPlayer,
1713
+ kn as VueVideoPlayer,
1714
+ tn as parseYouTubeId,
1715
+ nn as parseYouTubeStart,
1716
+ ln as youTubeEmbedUrl
1590
1717
  };
1591
1718
  //# sourceMappingURL=index.mjs.map