@glitchlab/react-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,24 +1,24 @@
1
1
  "use client";
2
- import { jsxs as v, jsx as t } from "react/jsx-runtime";
3
- import he, { useState as k, useRef as V, useCallback as S, useEffect as x, useImperativeHandle as me, useMemo as U } from "react";
2
+ import { jsxs as g, jsx as t } from "react/jsx-runtime";
3
+ import we, { useState as k, useRef as H, useCallback as M, useEffect as P, useImperativeHandle as Le, useMemo as K } from "react";
4
4
  import $ from "hls.js";
5
- function Q(e) {
5
+ function ae(e) {
6
6
  var n, s, r = "";
7
7
  if (typeof e == "string" || typeof e == "number") r += e;
8
8
  else if (typeof e == "object") if (Array.isArray(e)) {
9
9
  var l = e.length;
10
- for (n = 0; n < l; n++) e[n] && (s = Q(e[n])) && (r && (r += " "), r += s);
10
+ for (n = 0; n < l; n++) e[n] && (s = ae(e[n])) && (r && (r += " "), r += s);
11
11
  } else for (s in e) e[s] && (r && (r += " "), r += s);
12
12
  return r;
13
13
  }
14
- function H() {
15
- for (var e, n, s = 0, r = "", l = arguments.length; s < l; s++) (e = arguments[s]) && (n = Q(e)) && (r && (r += " "), r += n);
14
+ function I() {
15
+ for (var e, n, s = 0, r = "", l = arguments.length; s < l; s++) (e = arguments[s]) && (n = ae(e)) && (r && (r += " "), r += n);
16
16
  return r;
17
17
  }
18
- const K = "gvp-icon", L = (e) => e ? `${K} ${e}` : K, fe = ({ className: e }) => /* @__PURE__ */ v(
18
+ const ne = "gvp-icon", x = (e) => e ? `${ne} ${e}` : ne, ye = ({ className: e }) => /* @__PURE__ */ g(
19
19
  "svg",
20
20
  {
21
- className: L(e),
21
+ className: x(e),
22
22
  width: "20",
23
23
  height: "20",
24
24
  viewBox: "0 0 24 24",
@@ -57,10 +57,10 @@ const K = "gvp-icon", L = (e) => e ? `${K} ${e}` : K, fe = ({ className: e }) =>
57
57
  /* @__PURE__ */ t("path", { d: "M7 22H17", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })
58
58
  ]
59
59
  }
60
- ), ge = ({ className: e }) => /* @__PURE__ */ v(
60
+ ), Ee = ({ className: e }) => /* @__PURE__ */ g(
61
61
  "svg",
62
62
  {
63
- className: L(e),
63
+ className: x(e),
64
64
  width: "20",
65
65
  height: "20",
66
66
  viewBox: "0 0 24 24",
@@ -98,10 +98,10 @@ const K = "gvp-icon", L = (e) => e ? `${K} ${e}` : K, fe = ({ className: e }) =>
98
98
  )
99
99
  ]
100
100
  }
101
- ), ve = ({ className: e }) => /* @__PURE__ */ t(
101
+ ), xe = ({ className: e }) => /* @__PURE__ */ t(
102
102
  "svg",
103
103
  {
104
- className: L(e),
104
+ className: x(e),
105
105
  width: "14",
106
106
  height: "14",
107
107
  viewBox: "0 0 14 14",
@@ -116,10 +116,10 @@ const K = "gvp-icon", L = (e) => e ? `${K} ${e}` : K, fe = ({ className: e }) =>
116
116
  }
117
117
  )
118
118
  }
119
- ), ke = ({ className: e }) => /* @__PURE__ */ t(
119
+ ), Ne = ({ className: e }) => /* @__PURE__ */ t(
120
120
  "svg",
121
121
  {
122
- className: L(e),
122
+ className: x(e),
123
123
  width: "22",
124
124
  height: "22",
125
125
  viewBox: "0 0 16 16",
@@ -134,10 +134,10 @@ const K = "gvp-icon", L = (e) => e ? `${K} ${e}` : K, fe = ({ className: e }) =>
134
134
  }
135
135
  )
136
136
  }
137
- ), we = ({ className: e }) => /* @__PURE__ */ v(
137
+ ), Me = ({ className: e }) => /* @__PURE__ */ g(
138
138
  "svg",
139
139
  {
140
- className: L(e),
140
+ className: x(e),
141
141
  width: "16",
142
142
  height: "16",
143
143
  viewBox: "0 0 24 24",
@@ -165,10 +165,10 @@ const K = "gvp-icon", L = (e) => e ? `${K} ${e}` : K, fe = ({ className: e }) =>
165
165
  )
166
166
  ]
167
167
  }
168
- ), be = ({ className: e }) => /* @__PURE__ */ t(
168
+ ), Pe = ({ className: e }) => /* @__PURE__ */ t(
169
169
  "svg",
170
170
  {
171
- className: L(e),
171
+ className: x(e),
172
172
  width: "16",
173
173
  height: "16",
174
174
  viewBox: "0 0 24 24",
@@ -183,10 +183,10 @@ const K = "gvp-icon", L = (e) => e ? `${K} ${e}` : K, fe = ({ className: e }) =>
183
183
  }
184
184
  )
185
185
  }
186
- ), Ce = ({ className: e }) => /* @__PURE__ */ v(
186
+ ), Te = ({ className: e }) => /* @__PURE__ */ g(
187
187
  "svg",
188
188
  {
189
- className: L(e),
189
+ className: x(e),
190
190
  width: "16",
191
191
  height: "16",
192
192
  viewBox: "0 0 24 24",
@@ -198,10 +198,10 @@ const K = "gvp-icon", L = (e) => e ? `${K} ${e}` : K, fe = ({ className: e }) =>
198
198
  /* @__PURE__ */ t("rect", { x: "14", y: "5", width: "4", height: "14", rx: "1", fill: "currentColor" })
199
199
  ]
200
200
  }
201
- ), Le = ({ className: e }) => /* @__PURE__ */ v(
201
+ ), Ie = ({ className: e }) => /* @__PURE__ */ g(
202
202
  "svg",
203
203
  {
204
- className: L(e),
204
+ className: x(e),
205
205
  width: "18",
206
206
  height: "18",
207
207
  viewBox: "0 0 24 24",
@@ -229,10 +229,10 @@ const K = "gvp-icon", L = (e) => e ? `${K} ${e}` : K, fe = ({ className: e }) =>
229
229
  )
230
230
  ]
231
231
  }
232
- ), Ee = ({ className: e }) => /* @__PURE__ */ v(
232
+ ), Se = ({ className: e }) => /* @__PURE__ */ g(
233
233
  "svg",
234
234
  {
235
- className: L(e),
235
+ className: x(e),
236
236
  width: "18",
237
237
  height: "18",
238
238
  viewBox: "0 0 24 24",
@@ -260,10 +260,10 @@ const K = "gvp-icon", L = (e) => e ? `${K} ${e}` : K, fe = ({ className: e }) =>
260
260
  )
261
261
  ]
262
262
  }
263
- ), ye = ({ className: e }) => /* @__PURE__ */ v(
263
+ ), He = ({ className: e }) => /* @__PURE__ */ g(
264
264
  "svg",
265
265
  {
266
- className: L(e),
266
+ className: x(e),
267
267
  width: "18",
268
268
  height: "18",
269
269
  viewBox: "0 0 24 24",
@@ -291,10 +291,10 @@ const K = "gvp-icon", L = (e) => e ? `${K} ${e}` : K, fe = ({ className: e }) =>
291
291
  )
292
292
  ]
293
293
  }
294
- ), xe = ({ className: e }) => /* @__PURE__ */ t(
294
+ ), Ve = ({ className: e }) => /* @__PURE__ */ t(
295
295
  "svg",
296
296
  {
297
- className: L(e),
297
+ className: x(e),
298
298
  width: "18",
299
299
  height: "18",
300
300
  viewBox: "0 0 24 24",
@@ -312,10 +312,10 @@ const K = "gvp-icon", L = (e) => e ? `${K} ${e}` : K, fe = ({ className: e }) =>
312
312
  }
313
313
  )
314
314
  }
315
- ), Ne = ({ className: e }) => /* @__PURE__ */ t(
315
+ ), Ae = ({ className: e }) => /* @__PURE__ */ t(
316
316
  "svg",
317
317
  {
318
- className: L(e),
318
+ className: x(e),
319
319
  width: "18",
320
320
  height: "18",
321
321
  viewBox: "0 0 24 24",
@@ -333,10 +333,10 @@ const K = "gvp-icon", L = (e) => e ? `${K} ${e}` : K, fe = ({ className: e }) =>
333
333
  }
334
334
  )
335
335
  }
336
- ), Me = ({ className: e }) => /* @__PURE__ */ v(
336
+ ), De = ({ className: e }) => /* @__PURE__ */ g(
337
337
  "svg",
338
338
  {
339
- className: L(e),
339
+ className: x(e),
340
340
  width: "18",
341
341
  height: "18",
342
342
  viewBox: "0 0 24 24",
@@ -348,10 +348,10 @@ const K = "gvp-icon", L = (e) => e ? `${K} ${e}` : K, fe = ({ className: e }) =>
348
348
  /* @__PURE__ */ t("rect", { x: "12", y: "12", width: "8", height: "5", rx: "1", fill: "currentColor" })
349
349
  ]
350
350
  }
351
- ), Pe = ({ className: e }) => /* @__PURE__ */ v(
351
+ ), Be = ({ className: e }) => /* @__PURE__ */ g(
352
352
  "svg",
353
353
  {
354
- className: L(e),
354
+ className: x(e),
355
355
  width: "18",
356
356
  height: "18",
357
357
  viewBox: "0 0 24 24",
@@ -363,10 +363,10 @@ const K = "gvp-icon", L = (e) => e ? `${K} ${e}` : K, fe = ({ className: e }) =>
363
363
  /* @__PURE__ */ t("path", { d: "M7 12H11M13 12H17M7 15H9M11 15H13M15 15H17", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })
364
364
  ]
365
365
  }
366
- ), Te = ({ className: e }) => /* @__PURE__ */ v(
366
+ ), $e = ({ className: e }) => /* @__PURE__ */ g(
367
367
  "svg",
368
368
  {
369
- className: L(e),
369
+ className: x(e),
370
370
  width: "16",
371
371
  height: "16",
372
372
  viewBox: "0 0 24 24",
@@ -394,10 +394,40 @@ const K = "gvp-icon", L = (e) => e ? `${K} ${e}` : K, fe = ({ className: e }) =>
394
394
  )
395
395
  ]
396
396
  }
397
- ), Ie = ({ className: e }) => /* @__PURE__ */ t(
397
+ ), We = ({ className: e }) => /* @__PURE__ */ g(
398
398
  "svg",
399
399
  {
400
- className: L(e),
400
+ className: x(e),
401
+ width: "16",
402
+ height: "16",
403
+ viewBox: "0 0 24 24",
404
+ fill: "none",
405
+ xmlns: "http://www.w3.org/2000/svg",
406
+ "aria-hidden": "true",
407
+ children: [
408
+ /* @__PURE__ */ t(
409
+ "path",
410
+ {
411
+ 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",
412
+ stroke: "currentColor",
413
+ strokeWidth: "1.5"
414
+ }
415
+ ),
416
+ /* @__PURE__ */ t(
417
+ "path",
418
+ {
419
+ 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",
420
+ stroke: "currentColor",
421
+ strokeWidth: "1.5",
422
+ strokeLinecap: "round"
423
+ }
424
+ )
425
+ ]
426
+ }
427
+ ), Re = ({ className: e }) => /* @__PURE__ */ t(
428
+ "svg",
429
+ {
430
+ className: x(e),
401
431
  width: "12",
402
432
  height: "12",
403
433
  viewBox: "0 0 24 24",
@@ -416,20 +446,26 @@ const K = "gvp-icon", L = (e) => e ? `${K} ${e}` : K, fe = ({ className: e }) =>
416
446
  )
417
447
  }
418
448
  );
419
- function J(e) {
449
+ function re(e) {
420
450
  if (!Number.isFinite(e) || e < 0) return "--:--";
421
- const n = Math.floor(e), s = Math.floor(n / 3600), r = Math.floor(n % 3600 / 60), u = (n % 60).toString().padStart(2, "0");
451
+ const n = Math.floor(e), s = Math.floor(n / 3600), r = Math.floor(n % 3600 / 60), i = (n % 60).toString().padStart(2, "0");
422
452
  if (s > 0) {
423
- const c = r.toString().padStart(2, "0");
424
- return `${s}:${c}:${u}`;
453
+ const u = r.toString().padStart(2, "0");
454
+ return `${s}:${u}:${i}`;
425
455
  }
426
- return `${r}:${u}`;
456
+ return `${r}:${i}`;
427
457
  }
428
- const X = (() => {
458
+ const _e = {
459
+ index: -1
460
+ };
461
+ function je(e, n) {
462
+ return e > 0 ? `${e}p` : `Level ${n + 1}`;
463
+ }
464
+ const se = (() => {
429
465
  if (typeof navigator > "u") return !1;
430
466
  const e = navigator.userAgent;
431
467
  return /iPad|iPhone|iPod/.test(e) || e.includes("Mac") && navigator.maxTouchPoints > 1;
432
- })(), q = typeof navigator > "u" ? !1 : /iPhone|iPod/.test(navigator.userAgent), Se = 3e3, B = {
468
+ })(), G = typeof navigator > "u" ? !1 : /iPhone|iPod/.test(navigator.userAgent), Ue = 3e3, j = {
433
469
  isSupported() {
434
470
  return typeof document > "u" ? !1 : !!(document.fullscreenEnabled || document.webkitFullscreenEnabled);
435
471
  },
@@ -449,89 +485,116 @@ const X = (() => {
449
485
  document.removeEventListener("fullscreenchange", e), document.removeEventListener("webkitfullscreenchange", e);
450
486
  };
451
487
  }
452
- }, He = ({
488
+ }, Ze = ({
453
489
  video: e,
454
490
  isPlaying: n,
455
491
  container: s,
456
- onTogglePlay: r
492
+ onTogglePlay: r,
493
+ qualityLevels: l = [],
494
+ currentLevel: i = -1,
495
+ selectedLevel: u = -1,
496
+ onSelectLevel: c
457
497
  }) => {
458
- const [l, u] = k(!0), c = V(null), a = S(() => {
459
- c.current !== null && (clearTimeout(c.current), c.current = null);
460
- }, []), i = S(() => {
461
- a(), n && (c.current = setTimeout(() => u(!1), Se));
462
- }, [a, n]), m = S(() => {
463
- u(!0), i();
464
- }, [i]);
465
- return x(() => {
498
+ const [p, d] = k(!0), C = H(null), b = M(() => {
499
+ C.current !== null && (clearTimeout(C.current), C.current = null);
500
+ }, []), o = M(() => {
501
+ b(), n && (C.current = setTimeout(() => d(!1), Ue));
502
+ }, [b, n]), a = M(() => {
503
+ d(!0), o();
504
+ }, [o]);
505
+ return P(() => {
466
506
  if (!n) {
467
- a(), u(!0);
507
+ b(), d(!0);
468
508
  return;
469
509
  }
470
- return i(), a;
471
- }, [n, i, a]), x(() => {
510
+ return o(), b;
511
+ }, [n, o, b]), P(() => {
472
512
  if (!s) return;
473
- const f = () => m();
474
- return s.addEventListener("mousemove", f), s.addEventListener("touchstart", f), s.addEventListener("focusin", f), () => {
475
- s.removeEventListener("mousemove", f), s.removeEventListener("touchstart", f), s.removeEventListener("focusin", f);
513
+ const m = () => a();
514
+ return s.addEventListener("mousemove", m), s.addEventListener("touchstart", m), s.addEventListener("focusin", m), () => {
515
+ s.removeEventListener("mousemove", m), s.removeEventListener("touchstart", m), s.removeEventListener("focusin", m);
476
516
  };
477
- }, [s, m]), x(() => {
517
+ }, [s, a]), P(() => {
478
518
  if (!s || !e) return;
479
- const f = (o) => {
480
- if (!(!s.contains(document.activeElement) || o.target.tagName === "INPUT" && o.key !== " "))
481
- switch (o.key) {
519
+ const m = (f) => {
520
+ if (!(!s.contains(document.activeElement) || f.target.tagName === "INPUT" && f.key !== " "))
521
+ switch (f.key) {
482
522
  case " ":
483
523
  case "k":
484
- o.preventDefault(), r(), m();
524
+ f.preventDefault(), r(), a();
485
525
  break;
486
526
  case "ArrowLeft":
487
- o.preventDefault(), e.currentTime = Math.max(0, e.currentTime - 5), m();
527
+ f.preventDefault(), e.currentTime = Math.max(0, e.currentTime - 5), a();
488
528
  break;
489
529
  case "ArrowRight":
490
- o.preventDefault(), e.currentTime = Math.min(e.duration || 0, e.currentTime + 5), m();
530
+ f.preventDefault(), e.currentTime = Math.min(e.duration || 0, e.currentTime + 5), a();
491
531
  break;
492
532
  case "ArrowUp":
493
- o.preventDefault(), e.volume = Math.min(1, e.volume + 0.1), e.muted && (e.muted = !1), m();
533
+ f.preventDefault(), e.volume = Math.min(1, e.volume + 0.1), e.muted && (e.muted = !1), a();
494
534
  break;
495
535
  case "ArrowDown":
496
- o.preventDefault(), e.volume = Math.max(0, e.volume - 0.1), m();
536
+ f.preventDefault(), e.volume = Math.max(0, e.volume - 0.1), a();
497
537
  break;
498
538
  case "m":
499
- e.muted = !e.muted, m();
539
+ e.muted = !e.muted, a();
500
540
  break;
501
541
  case "f":
502
- B.element() === s ? B.exit().catch(() => {
503
- }) : B.request(s).catch(() => {
504
- }), m();
542
+ j.element() === s ? j.exit().catch(() => {
543
+ }) : j.request(s).catch(() => {
544
+ }), a();
505
545
  break;
506
546
  case "p":
507
547
  document.pictureInPictureElement ? document.exitPictureInPicture().catch(() => {
508
548
  }) : document.pictureInPictureEnabled && e.requestPictureInPicture().catch(() => {
509
- }), m();
549
+ }), a();
510
550
  break;
511
551
  }
512
552
  };
513
- return document.addEventListener("keydown", f), () => document.removeEventListener("keydown", f);
514
- }, [s, e, r, m]), /* @__PURE__ */ t(
553
+ return document.addEventListener("keydown", m), () => document.removeEventListener("keydown", m);
554
+ }, [s, e, r, a]), /* @__PURE__ */ t(
515
555
  "div",
516
556
  {
517
557
  role: "toolbar",
518
558
  "aria-label": "Video controls",
519
- className: H("gvp-controls", !l && "is-hidden"),
520
- onMouseEnter: a,
521
- onMouseLeave: i,
522
- children: /* @__PURE__ */ v("div", { className: "gvp-controls-row", children: [
523
- /* @__PURE__ */ t(Ve, { isPlaying: n, onToggle: r }),
524
- /* @__PURE__ */ t(Be, { video: e }),
525
- /* @__PURE__ */ t(De, { video: e }),
526
- /* @__PURE__ */ t(Re, { video: e }),
527
- /* @__PURE__ */ t(We, { video: e }),
528
- /* @__PURE__ */ t(Ae, { video: e }),
529
- /* @__PURE__ */ t(je, { video: e }),
530
- /* @__PURE__ */ t(Ze, { container: s, video: e })
559
+ className: I("gvp-controls", !p && "is-hidden"),
560
+ onMouseEnter: b,
561
+ onMouseLeave: o,
562
+ children: /* @__PURE__ */ g("div", { className: "gvp-controls-row", children: [
563
+ /* @__PURE__ */ t(Oe, { isPlaying: n, onToggle: r }),
564
+ /* @__PURE__ */ t(qe, { video: e }),
565
+ /* @__PURE__ */ t(Fe, { video: e }),
566
+ /* @__PURE__ */ t(ze, { video: e }),
567
+ /* @__PURE__ */ t(
568
+ Ke,
569
+ {
570
+ levels: l,
571
+ currentLevel: i,
572
+ selectedLevel: u,
573
+ onSelect: c
574
+ }
575
+ ),
576
+ /* @__PURE__ */ t(Je, { video: e }),
577
+ /* @__PURE__ */ t(Qe, { video: e }),
578
+ /* @__PURE__ */ t(Xe, { video: e }),
579
+ /* @__PURE__ */ t(Ge, { container: s, video: e })
531
580
  ] })
532
581
  }
533
582
  );
534
- }, Ve = ({
583
+ };
584
+ function ee(e, n, s) {
585
+ P(() => {
586
+ if (!e) return;
587
+ const r = (i) => {
588
+ n.current && !n.current.contains(i.target) && s();
589
+ }, l = (i) => {
590
+ i.key === "Escape" && s();
591
+ };
592
+ return document.addEventListener("mousedown", r), document.addEventListener("keydown", l), () => {
593
+ document.removeEventListener("mousedown", r), document.removeEventListener("keydown", l);
594
+ };
595
+ }, [e, n, s]);
596
+ }
597
+ const Oe = ({
535
598
  isPlaying: e,
536
599
  onToggle: n
537
600
  }) => /* @__PURE__ */ t(
@@ -542,49 +605,49 @@ const X = (() => {
542
605
  "aria-label": e ? "Pause" : "Play",
543
606
  "aria-pressed": e,
544
607
  onClick: n,
545
- children: e ? /* @__PURE__ */ t(Ce, {}) : /* @__PURE__ */ t(be, {})
608
+ children: e ? /* @__PURE__ */ t(Te, {}) : /* @__PURE__ */ t(Pe, {})
546
609
  }
547
- ), Be = ({ video: e }) => {
548
- const [n, s] = k(0), [r, l] = k(0), [u, c] = k(0);
549
- x(() => {
610
+ ), qe = ({ video: e }) => {
611
+ const [n, s] = k(0), [r, l] = k(0), [i, u] = k(0);
612
+ P(() => {
550
613
  if (!e) return;
551
- const o = () => s(e.currentTime), h = () => l(Number.isFinite(e.duration) ? e.duration : 0), g = () => {
552
- const d = e.buffered;
553
- if (!d || d.length === 0) {
554
- c(0);
614
+ const b = () => s(e.currentTime), o = () => l(Number.isFinite(e.duration) ? e.duration : 0), a = () => {
615
+ const m = e.buffered;
616
+ if (!m || m.length === 0) {
617
+ u(0);
555
618
  return;
556
619
  }
557
- let w = d.end(d.length - 1);
558
- for (let C = 0; C < d.length; C++)
559
- if (d.start(C) <= e.currentTime && e.currentTime <= d.end(C)) {
560
- w = d.end(C);
620
+ let f = m.end(m.length - 1);
621
+ for (let w = 0; w < m.length; w++)
622
+ if (m.start(w) <= e.currentTime && e.currentTime <= m.end(w)) {
623
+ f = m.end(w);
561
624
  break;
562
625
  }
563
- c(w);
626
+ u(f);
564
627
  };
565
- return o(), h(), g(), e.addEventListener("timeupdate", o), e.addEventListener("durationchange", h), e.addEventListener("loadedmetadata", h), e.addEventListener("progress", g), e.addEventListener("timeupdate", g), () => {
566
- e.removeEventListener("timeupdate", o), e.removeEventListener("durationchange", h), e.removeEventListener("loadedmetadata", h), e.removeEventListener("progress", g), e.removeEventListener("timeupdate", g);
628
+ return b(), o(), a(), e.addEventListener("timeupdate", b), e.addEventListener("durationchange", o), e.addEventListener("loadedmetadata", o), e.addEventListener("progress", a), e.addEventListener("timeupdate", a), () => {
629
+ e.removeEventListener("timeupdate", b), e.removeEventListener("durationchange", o), e.removeEventListener("loadedmetadata", o), e.removeEventListener("progress", a), e.removeEventListener("timeupdate", a);
567
630
  };
568
631
  }, [e]);
569
- const a = r > 0, i = a ? n / r * 100 : 0, m = a ? u / r * 100 : 0, f = (o) => {
570
- if (!e || !a) return;
571
- const h = Number(o.target.value) / 100 * r;
572
- e.currentTime = h, s(h);
632
+ const c = r > 0, p = c ? n / r * 100 : 0, d = c ? i / r * 100 : 0, C = (b) => {
633
+ if (!e || !c) return;
634
+ const o = Number(b.target.value) / 100 * r;
635
+ e.currentTime = o, s(o);
573
636
  };
574
- return /* @__PURE__ */ v("div", { className: "gvp-seek", children: [
575
- /* @__PURE__ */ v("div", { className: "gvp-seek-track", children: [
637
+ return /* @__PURE__ */ g("div", { className: "gvp-seek", children: [
638
+ /* @__PURE__ */ g("div", { className: "gvp-seek-track", children: [
576
639
  /* @__PURE__ */ t(
577
640
  "div",
578
641
  {
579
642
  className: "gvp-seek-buffered",
580
- style: { width: `${m}%` }
643
+ style: { width: `${d}%` }
581
644
  }
582
645
  ),
583
646
  /* @__PURE__ */ t(
584
647
  "div",
585
648
  {
586
649
  className: "gvp-seek-progress",
587
- style: { width: `${i}%` }
650
+ style: { width: `${p}%` }
588
651
  }
589
652
  )
590
653
  ] }),
@@ -596,9 +659,9 @@ const X = (() => {
596
659
  min: 0,
597
660
  max: 100,
598
661
  step: 0.1,
599
- value: i,
600
- onChange: f,
601
- disabled: !a,
662
+ value: p,
663
+ onChange: C,
664
+ disabled: !c,
602
665
  "aria-label": "Seek",
603
666
  "aria-valuemin": 0,
604
667
  "aria-valuemax": Math.floor(r),
@@ -606,39 +669,39 @@ const X = (() => {
606
669
  }
607
670
  )
608
671
  ] });
609
- }, De = ({ video: e }) => {
672
+ }, Fe = ({ video: e }) => {
610
673
  const [n, s] = k(0), [r, l] = k(0);
611
- return x(() => {
674
+ return P(() => {
612
675
  if (!e) return;
613
- const u = () => s(e.currentTime), c = () => l(Number.isFinite(e.duration) ? e.duration : 0);
614
- return u(), c(), e.addEventListener("timeupdate", u), e.addEventListener("durationchange", c), e.addEventListener("loadedmetadata", c), () => {
615
- e.removeEventListener("timeupdate", u), e.removeEventListener("durationchange", c), e.removeEventListener("loadedmetadata", c);
676
+ const i = () => s(e.currentTime), u = () => l(Number.isFinite(e.duration) ? e.duration : 0);
677
+ return i(), u(), e.addEventListener("timeupdate", i), e.addEventListener("durationchange", u), e.addEventListener("loadedmetadata", u), () => {
678
+ e.removeEventListener("timeupdate", i), e.removeEventListener("durationchange", u), e.removeEventListener("loadedmetadata", u);
616
679
  };
617
- }, [e]), /* @__PURE__ */ v("span", { className: "gvp-time", "aria-live": "off", children: [
618
- J(n),
680
+ }, [e]), /* @__PURE__ */ g("span", { className: "gvp-time", "aria-live": "off", children: [
681
+ re(n),
619
682
  " / ",
620
- J(r)
683
+ re(r)
621
684
  ] });
622
- }, Ae = ({ video: e }) => {
685
+ }, Qe = ({ video: e }) => {
623
686
  const [n, s] = k(1), [r, l] = k(!1);
624
- x(() => {
687
+ P(() => {
625
688
  if (!e) return;
626
- const m = () => {
689
+ const d = () => {
627
690
  s(e.volume), l(e.muted);
628
691
  };
629
- return m(), e.addEventListener("volumechange", m), () => e.removeEventListener("volumechange", m);
692
+ return d(), e.addEventListener("volumechange", d), () => e.removeEventListener("volumechange", d);
630
693
  }, [e]);
631
- const u = () => {
694
+ const i = () => {
632
695
  e && (e.muted = !e.muted);
633
- }, c = (m) => {
696
+ }, u = (d) => {
634
697
  if (!e) return;
635
- const f = Number(m.target.value) / 100;
636
- e.volume = f, f > 0 && e.muted && (e.muted = !1);
698
+ const C = Number(d.target.value) / 100;
699
+ e.volume = C, C > 0 && e.muted && (e.muted = !1);
637
700
  };
638
- let a = Le;
639
- r || n === 0 ? a = ye : n < 0.5 && (a = Ee);
640
- const i = r ? 0 : Math.round(n * 100);
641
- return /* @__PURE__ */ v("div", { className: H("gvp-volume", !X && "is-expandable"), children: [
701
+ let c = Ie;
702
+ r || n === 0 ? c = He : n < 0.5 && (c = Se);
703
+ const p = r ? 0 : Math.round(n * 100);
704
+ return /* @__PURE__ */ g("div", { className: I("gvp-volume", !se && "is-expandable"), children: [
642
705
  /* @__PURE__ */ t(
643
706
  "button",
644
707
  {
@@ -646,16 +709,16 @@ const X = (() => {
646
709
  className: "gvp-ctrl-btn",
647
710
  "aria-label": r ? "Unmute" : "Mute",
648
711
  "aria-pressed": r,
649
- onClick: u,
650
- children: /* @__PURE__ */ t(a, {})
712
+ onClick: i,
713
+ children: /* @__PURE__ */ t(c, {})
651
714
  }
652
715
  ),
653
- !X && /* @__PURE__ */ v("div", { className: "gvp-volume-slider-wrap", children: [
716
+ !se && /* @__PURE__ */ g("div", { className: "gvp-volume-slider-wrap", children: [
654
717
  /* @__PURE__ */ t("div", { className: "gvp-volume-track", children: /* @__PURE__ */ t(
655
718
  "div",
656
719
  {
657
720
  className: "gvp-volume-fill",
658
- style: { width: `${i}%` }
721
+ style: { width: `${p}%` }
659
722
  }
660
723
  ) }),
661
724
  /* @__PURE__ */ t(
@@ -666,140 +729,185 @@ const X = (() => {
666
729
  min: 0,
667
730
  max: 100,
668
731
  step: 1,
669
- value: i,
670
- onChange: c,
732
+ value: p,
733
+ onChange: u,
671
734
  "aria-label": "Volume",
672
735
  "aria-valuemin": 0,
673
736
  "aria-valuemax": 100,
674
- "aria-valuenow": i
737
+ "aria-valuenow": p
675
738
  }
676
739
  )
677
740
  ] })
678
741
  ] });
679
- }, $e = [0.5, 0.75, 1, 1.25, 1.5, 2], Re = ({ video: e }) => {
680
- const [n, s] = k(1), [r, l] = k(!1), u = V(null);
681
- x(() => {
742
+ }, Ye = [0.5, 0.75, 1, 1.25, 1.5, 2], ze = ({ video: e }) => {
743
+ const [n, s] = k(1), [r, l] = k(!1), i = H(null);
744
+ P(() => {
682
745
  if (!e) return;
683
- const i = () => s(e.playbackRate);
684
- return i(), e.addEventListener("ratechange", i), () => e.removeEventListener("ratechange", i);
685
- }, [e]), x(() => {
686
- if (!r) return;
687
- const i = (f) => {
688
- u.current && !u.current.contains(f.target) && l(!1);
689
- }, m = (f) => {
690
- f.key === "Escape" && l(!1);
691
- };
692
- return document.addEventListener("mousedown", i), document.addEventListener("keydown", m), () => {
693
- document.removeEventListener("mousedown", i), document.removeEventListener("keydown", m);
694
- };
695
- }, [r]);
696
- const c = (i) => {
697
- e && (e.playbackRate = i), s(i), l(!1);
698
- }, a = n === 1 ? "1×" : `${n}×`;
699
- return /* @__PURE__ */ v("div", { className: "gvp-speed", ref: u, children: [
700
- /* @__PURE__ */ v(
746
+ const d = () => s(e.playbackRate);
747
+ return d(), e.addEventListener("ratechange", d), () => e.removeEventListener("ratechange", d);
748
+ }, [e]);
749
+ const u = M(() => l(!1), []);
750
+ ee(r, i, u);
751
+ const c = (d) => {
752
+ e && (e.playbackRate = d), s(d), l(!1);
753
+ }, p = n === 1 ? "" : `${n}×`;
754
+ return /* @__PURE__ */ g("div", { className: "gvp-speed", ref: i, children: [
755
+ /* @__PURE__ */ g(
701
756
  "button",
702
757
  {
703
758
  type: "button",
704
759
  className: "gvp-ctrl-btn gvp-speed-btn",
705
760
  "aria-haspopup": "listbox",
706
761
  "aria-expanded": r,
707
- "aria-label": `Playback speed: ${a}`,
708
- onClick: () => l((i) => !i),
762
+ "aria-label": `Playback speed: ${p}`,
763
+ onClick: () => l((d) => !d),
709
764
  children: [
710
- /* @__PURE__ */ t(Te, {}),
711
- /* @__PURE__ */ t("span", { className: "gvp-speed-label", children: a })
765
+ /* @__PURE__ */ t($e, {}),
766
+ /* @__PURE__ */ t("span", { className: "gvp-speed-label", children: p })
712
767
  ]
713
768
  }
714
769
  ),
715
770
  r && // NOSONAR: typescript:S6819
716
- /* @__PURE__ */ t("ul", { className: "gvp-speed-menu", role: "listbox", "aria-label": "Playback speed", children: $e.map((i) => /* @__PURE__ */ t("li", { children: /* @__PURE__ */ t(
771
+ /* @__PURE__ */ t("ul", { className: "gvp-speed-menu", role: "listbox", "aria-label": "Playback speed", children: Ye.map((d) => /* @__PURE__ */ t("li", { children: /* @__PURE__ */ t(
717
772
  "button",
718
773
  {
719
774
  type: "button",
720
775
  role: "option",
721
- "aria-selected": i === n,
722
- className: H("gvp-speed-menu-item", i === n && "is-active"),
723
- onClick: () => c(i),
724
- children: i === 1 ? "Normal" : `${i}×`
776
+ "aria-selected": d === n,
777
+ className: I("gvp-speed-menu-item", d === n && "is-active"),
778
+ onClick: () => c(d),
779
+ children: d === 1 ? "Normal" : `${d}×`
780
+ }
781
+ ) }, d)) })
782
+ ] });
783
+ }, Ke = ({ levels: e, currentLevel: n, selectedLevel: s, onSelect: r }) => {
784
+ const [l, i] = k(!1), u = H(null), c = M(() => i(!1), []);
785
+ if (ee(l, u, c), e.length < 2) return null;
786
+ const p = (o) => {
787
+ r == null || r(o), i(!1);
788
+ }, d = [...e].sort((o, a) => a.height - o.height), C = e.find((o) => o.index === n);
789
+ let b;
790
+ if (s < 0)
791
+ b = C ? `Auto (${C.label})` : "Auto";
792
+ else {
793
+ const o = e.find((a) => a.index === s);
794
+ b = (o == null ? void 0 : o.label) ?? "Auto";
795
+ }
796
+ return /* @__PURE__ */ g("div", { className: "gvp-quality", ref: u, children: [
797
+ /* @__PURE__ */ g(
798
+ "button",
799
+ {
800
+ type: "button",
801
+ className: "gvp-ctrl-btn gvp-quality-btn",
802
+ "aria-haspopup": "listbox",
803
+ "aria-expanded": l,
804
+ "aria-label": `Quality: ${b}`,
805
+ onClick: () => i((o) => !o),
806
+ children: [
807
+ /* @__PURE__ */ t(We, {}),
808
+ /* @__PURE__ */ t("span", { className: "gvp-quality-label", children: b })
809
+ ]
725
810
  }
726
- ) }, i)) })
811
+ ),
812
+ l && // NOSONAR: typescript:S6819
813
+ /* @__PURE__ */ g("ul", { className: "gvp-quality-menu", role: "listbox", "aria-label": "Quality", children: [
814
+ /* @__PURE__ */ t("li", { children: /* @__PURE__ */ t(
815
+ "button",
816
+ {
817
+ type: "button",
818
+ role: "option",
819
+ "aria-selected": s < 0,
820
+ className: I(
821
+ "gvp-quality-menu-item",
822
+ s < 0 && "is-active"
823
+ ),
824
+ onClick: () => p(_e.index),
825
+ children: C ? `Auto (${C.label})` : "Auto"
826
+ }
827
+ ) }),
828
+ d.map((o) => /* @__PURE__ */ t("li", { children: /* @__PURE__ */ t(
829
+ "button",
830
+ {
831
+ type: "button",
832
+ role: "option",
833
+ "aria-selected": o.index === s,
834
+ className: I(
835
+ "gvp-quality-menu-item",
836
+ o.index === s && "is-active"
837
+ ),
838
+ onClick: () => p(o.index),
839
+ children: o.label
840
+ }
841
+ ) }, o.index))
842
+ ] })
727
843
  ] });
728
- }, We = ({ video: e }) => {
729
- const [n, s] = k([]), [r, l] = k(-1), [u, c] = k(!1), a = V(null), i = S((o) => {
730
- const h = [];
731
- for (let d = 0; d < o.length; d++) {
732
- const w = o[d];
733
- (w.kind === "subtitles" || w.kind === "captions") && h.push({ index: d, label: w.label || w.language || `Track ${d + 1}`, language: w.language });
844
+ }, Je = ({ video: e }) => {
845
+ const [n, s] = k([]), [r, l] = k(-1), [i, u] = k(!1), c = H(null), p = M((o) => {
846
+ const a = [];
847
+ for (let f = 0; f < o.length; f++) {
848
+ const w = o[f];
849
+ (w.kind === "subtitles" || w.kind === "captions") && a.push({ index: f, label: w.label || w.language || `Track ${f + 1}`, language: w.language });
734
850
  }
735
- s(h);
736
- let g = -1;
737
- for (let d = 0; d < o.length; d++)
738
- if (o[d].mode === "showing") {
739
- g = d;
851
+ s(a);
852
+ let m = -1;
853
+ for (let f = 0; f < o.length; f++)
854
+ if (o[f].mode === "showing") {
855
+ m = f;
740
856
  break;
741
857
  }
742
- l(g);
858
+ l(m);
743
859
  }, []);
744
- x(() => {
860
+ P(() => {
745
861
  if (!e) {
746
862
  s([]), l(-1);
747
863
  return;
748
864
  }
749
865
  const o = e.textTracks;
750
- i(o);
751
- const h = () => i(o);
866
+ p(o);
867
+ const a = () => p(o);
752
868
  if (typeof o.addEventListener == "function")
753
- return o.addEventListener("addtrack", h), o.addEventListener("removetrack", h), o.addEventListener("change", h), () => {
754
- o.removeEventListener("addtrack", h), o.removeEventListener("removetrack", h), o.removeEventListener("change", h);
869
+ return o.addEventListener("addtrack", a), o.addEventListener("removetrack", a), o.addEventListener("change", a), () => {
870
+ o.removeEventListener("addtrack", a), o.removeEventListener("removetrack", a), o.removeEventListener("change", a);
755
871
  };
756
- }, [e, i]), x(() => {
757
- if (!u) return;
758
- const o = (g) => {
759
- a.current && !a.current.contains(g.target) && c(!1);
760
- }, h = (g) => {
761
- g.key === "Escape" && c(!1);
762
- };
763
- return document.addEventListener("mousedown", o), document.addEventListener("keydown", h), () => {
764
- document.removeEventListener("mousedown", o), document.removeEventListener("keydown", h);
765
- };
766
- }, [u]);
767
- const m = (o) => {
872
+ }, [e, p]);
873
+ const d = M(() => u(!1), []);
874
+ ee(i, c, d);
875
+ const C = (o) => {
768
876
  if (!e) return;
769
- const h = e.textTracks;
770
- for (let g = 0; g < h.length; g++)
771
- h[g].mode = g === o ? "showing" : "hidden";
772
- l(o), c(!1);
773
- }, f = () => {
877
+ const a = e.textTracks;
878
+ for (let m = 0; m < a.length; m++)
879
+ a[m].mode = m === o ? "showing" : "hidden";
880
+ l(o), u(!1);
881
+ }, b = () => {
774
882
  if (!e) return;
775
883
  const o = e.textTracks;
776
- for (let h = 0; h < o.length; h++) o[h].mode = "hidden";
777
- l(-1), c(!1);
884
+ for (let a = 0; a < o.length; a++) o[a].mode = "hidden";
885
+ l(-1), u(!1);
778
886
  };
779
- return n.length === 0 ? null : /* @__PURE__ */ v("div", { className: "gvp-captions", ref: a, children: [
887
+ return n.length === 0 ? null : /* @__PURE__ */ g("div", { className: "gvp-captions", ref: c, children: [
780
888
  /* @__PURE__ */ t(
781
889
  "button",
782
890
  {
783
891
  type: "button",
784
- className: H("gvp-ctrl-btn", r >= 0 && "is-active"),
892
+ className: I("gvp-ctrl-btn", r >= 0 && "is-active"),
785
893
  "aria-haspopup": "listbox",
786
- "aria-expanded": u,
894
+ "aria-expanded": i,
787
895
  "aria-label": "Captions",
788
896
  "aria-pressed": r >= 0,
789
- onClick: () => c((o) => !o),
790
- children: /* @__PURE__ */ t(Pe, {})
897
+ onClick: () => u((o) => !o),
898
+ children: /* @__PURE__ */ t(Be, {})
791
899
  }
792
900
  ),
793
- u && // NOSONAR: typescript:S6819
794
- /* @__PURE__ */ v("ul", { className: "gvp-captions-menu", role: "listbox", "aria-label": "Captions", children: [
901
+ i && // NOSONAR: typescript:S6819
902
+ /* @__PURE__ */ g("ul", { className: "gvp-captions-menu", role: "listbox", "aria-label": "Captions", children: [
795
903
  /* @__PURE__ */ t("li", { children: /* @__PURE__ */ t(
796
904
  "button",
797
905
  {
798
906
  type: "button",
799
907
  role: "option",
800
908
  "aria-selected": r === -1,
801
- className: H("gvp-captions-menu-item", r === -1 && "is-active"),
802
- onClick: f,
909
+ className: I("gvp-captions-menu-item", r === -1 && "is-active"),
910
+ onClick: b,
803
911
  children: "Off"
804
912
  }
805
913
  ) }),
@@ -809,20 +917,20 @@ const X = (() => {
809
917
  type: "button",
810
918
  role: "option",
811
919
  "aria-selected": o.index === r,
812
- className: H("gvp-captions-menu-item", o.index === r && "is-active"),
813
- onClick: () => m(o.index),
920
+ className: I("gvp-captions-menu-item", o.index === r && "is-active"),
921
+ onClick: () => C(o.index),
814
922
  children: o.label
815
923
  }
816
924
  ) }, o.index))
817
925
  ] })
818
926
  ] });
819
- }, je = ({ video: e }) => {
927
+ }, Xe = ({ video: e }) => {
820
928
  const [n, s] = k(!1);
821
- if (x(() => {
929
+ if (P(() => {
822
930
  if (!e) return;
823
- const l = () => s(!0), u = () => s(!1);
824
- return e.addEventListener("enterpictureinpicture", l), e.addEventListener("leavepictureinpicture", u), () => {
825
- e.removeEventListener("enterpictureinpicture", l), e.removeEventListener("leavepictureinpicture", u);
931
+ const l = () => s(!0), i = () => s(!1);
932
+ return e.addEventListener("enterpictureinpicture", l), e.addEventListener("leavepictureinpicture", i), () => {
933
+ e.removeEventListener("enterpictureinpicture", l), e.removeEventListener("leavepictureinpicture", i);
826
934
  };
827
935
  }, [e]), !document.pictureInPictureEnabled) return null;
828
936
  const r = () => {
@@ -834,20 +942,20 @@ const X = (() => {
834
942
  "button",
835
943
  {
836
944
  type: "button",
837
- className: H("gvp-ctrl-btn", n && "is-active"),
945
+ className: I("gvp-ctrl-btn", n && "is-active"),
838
946
  "aria-label": n ? "Exit picture-in-picture" : "Picture-in-picture",
839
947
  "aria-pressed": n,
840
948
  onClick: r,
841
- children: /* @__PURE__ */ t(Me, {})
949
+ children: /* @__PURE__ */ t(De, {})
842
950
  }
843
951
  );
844
- }, Ze = ({ container: e, video: n }) => {
952
+ }, Ge = ({ container: e, video: n }) => {
845
953
  const [s, r] = k(!1);
846
- return x(() => {
847
- if (q) return;
848
- const i = () => r(B.element() === e);
849
- return i(), B.onChange(i);
850
- }, [e]), B.isSupported() || q && n !== null && typeof n.webkitEnterFullscreen == "function" ? /* @__PURE__ */ t(
954
+ return P(() => {
955
+ if (G) return;
956
+ const p = () => r(j.element() === e);
957
+ return p(), j.onChange(p);
958
+ }, [e]), j.isSupported() || G && n !== null && typeof n.webkitEnterFullscreen == "function" ? /* @__PURE__ */ t(
851
959
  "button",
852
960
  {
853
961
  type: "button",
@@ -855,120 +963,146 @@ const X = (() => {
855
963
  "aria-label": s ? "Exit fullscreen" : "Enter fullscreen",
856
964
  "aria-pressed": s,
857
965
  onClick: () => {
858
- var i;
859
- if (q) {
860
- (i = n == null ? void 0 : n.webkitEnterFullscreen) == null || i.call(n);
966
+ var p;
967
+ if (G) {
968
+ (p = n == null ? void 0 : n.webkitEnterFullscreen) == null || p.call(n);
861
969
  return;
862
970
  }
863
- s ? B.exit().catch(() => {
864
- }) : e && B.request(e).catch(() => {
971
+ s ? j.exit().catch(() => {
972
+ }) : e && j.request(e).catch(() => {
865
973
  });
866
974
  },
867
- children: /* @__PURE__ */ t(s ? Ne : xe, {})
975
+ children: /* @__PURE__ */ t(s ? Ae : Ve, {})
868
976
  }
869
977
  ) : null;
870
978
  };
871
- function G(e, n, s) {
979
+ function oe(e, n, s) {
872
980
  const r = e == null ? void 0 : e.trim();
873
981
  if (r) return r;
874
982
  if (n) {
875
983
  try {
876
- const u = new Intl.DisplayNames(void 0, { type: "language" }).of(n);
877
- if (u && u !== n) return u;
984
+ const i = new Intl.DisplayNames(void 0, { type: "language" }).of(n);
985
+ if (i && i !== n) return i;
878
986
  } catch {
879
987
  }
880
988
  return n;
881
989
  }
882
990
  return `Audio ${s + 1}`;
883
991
  }
884
- const ee = he.forwardRef(
992
+ const le = we.forwardRef(
885
993
  ({
886
994
  src: e,
887
995
  hlsConfig: n,
888
996
  isHls: s,
889
997
  autoPlay: r,
890
998
  children: l,
891
- onAudioTracks: u,
892
- audioTrackIndex: c,
893
- ...a
894
- }, i) => {
895
- const m = V(null), f = V(null), o = V(u);
896
- o.current = u, me(i, () => m.current);
897
- const h = globalThis.window !== void 0 && $.isSupported(), g = !!s || h && typeof e == "string" && e.endsWith(".m3u8");
898
- return x(() => {
899
- var P, R, D;
999
+ onAudioTracks: i,
1000
+ audioTrackIndex: u,
1001
+ onQualityLevels: c,
1002
+ onCurrentLevel: p,
1003
+ qualityLevelIndex: d,
1004
+ ...C
1005
+ }, b) => {
1006
+ const o = H(null), a = H(null), m = H(i);
1007
+ m.current = i;
1008
+ const f = H(c);
1009
+ f.current = c;
1010
+ const w = H(p);
1011
+ w.current = p, Le(b, () => o.current);
1012
+ const U = globalThis.window !== void 0 && $.isSupported(), V = !!s || U && typeof e == "string" && e.endsWith(".m3u8");
1013
+ return P(() => {
1014
+ var F, Z, q;
900
1015
  if (!e) return;
901
- const d = m.current;
902
- if (!d) return;
903
- const w = (p) => {
904
- var E;
905
- (E = o.current) == null || E.call(o, p);
906
- }, C = () => {
907
- r && d.play().catch(() => {
1016
+ const v = o.current;
1017
+ if (!v) return;
1018
+ const S = (h) => {
1019
+ var L;
1020
+ (L = m.current) == null || L.call(m, h);
1021
+ }, T = (h) => {
1022
+ var L;
1023
+ (L = f.current) == null || L.call(f, h);
1024
+ }, D = (h) => {
1025
+ var L;
1026
+ (L = w.current) == null || L.call(w, h);
1027
+ }, W = () => {
1028
+ r && v.play().catch(() => {
908
1029
  });
909
1030
  };
910
- for (f.current && (f.current.destroy(), f.current = null), d.pause(), d.removeAttribute("src"); d.firstChild; ) d.firstChild.remove();
911
- w([]);
912
- let N;
913
- if (g) {
914
- const p = new $(n);
915
- f.current = p;
916
- const E = () => {
917
- const M = p.audioTracks.map((b, T) => ({
918
- index: T,
919
- label: G(b.name, b.lang, T),
920
- lang: b.lang || void 0
1031
+ for (a.current && (a.current.destroy(), a.current = null), v.pause(), v.removeAttribute("src"); v.firstChild; ) v.firstChild.remove();
1032
+ S([]), T([]), D(-1);
1033
+ let R;
1034
+ if (V) {
1035
+ const h = new $(n);
1036
+ a.current = h;
1037
+ const L = () => {
1038
+ const N = h.audioTracks.map((y, _) => ({
1039
+ index: _,
1040
+ label: oe(y.name, y.lang, _),
1041
+ lang: y.lang || void 0
1042
+ }));
1043
+ S(N);
1044
+ }, B = () => {
1045
+ const N = h.levels.map((y, _) => ({
1046
+ index: _,
1047
+ height: y.height || 0,
1048
+ label: je(y.height || 0, _)
921
1049
  }));
922
- w(M);
1050
+ T(N);
923
1051
  };
924
- p.on($.Events.MANIFEST_PARSED, C), p.on($.Events.AUDIO_TRACKS_UPDATED, E), p.on($.Events.AUDIO_TRACK_SWITCHED, E), p.on($.Events.ERROR, (M, b) => {
925
- b.fatal && (p.destroy(), f.current = null);
926
- }), p.attachMedia(d), p.loadSource(e);
1052
+ h.on($.Events.MANIFEST_PARSED, W), h.on($.Events.MANIFEST_PARSED, B), h.on($.Events.LEVELS_UPDATED, B), h.on($.Events.LEVEL_SWITCHED, (N, y) => {
1053
+ D(y.level);
1054
+ }), h.on($.Events.AUDIO_TRACKS_UPDATED, L), h.on($.Events.AUDIO_TRACK_SWITCHED, L), h.on($.Events.ERROR, (N, y) => {
1055
+ y.fatal && (h.destroy(), a.current = null);
1056
+ }), h.attachMedia(v), h.loadSource(e);
927
1057
  } else {
928
- d.src = e, d.load(), d.addEventListener("loadedmetadata", C, { once: !0 });
929
- const p = d.audioTracks;
930
- if (p) {
931
- const E = () => {
932
- const M = [];
933
- for (let b = 0; b < p.length; b++) {
934
- const T = p[b];
935
- M.push({
936
- index: b,
937
- label: G(T.label, T.language, b),
938
- lang: T.language || void 0
1058
+ v.src = e, v.load(), v.addEventListener("loadedmetadata", W, { once: !0 });
1059
+ const h = v.audioTracks;
1060
+ if (h) {
1061
+ const L = () => {
1062
+ const B = [];
1063
+ for (let N = 0; N < h.length; N++) {
1064
+ const y = h[N];
1065
+ B.push({
1066
+ index: N,
1067
+ label: oe(y.label, y.language, N),
1068
+ lang: y.language || void 0
939
1069
  });
940
1070
  }
941
- w(M);
1071
+ S(B);
942
1072
  };
943
- (P = p.addEventListener) == null || P.call(p, "addtrack", E), (R = p.addEventListener) == null || R.call(p, "removetrack", E), (D = p.addEventListener) == null || D.call(p, "change", E), p.length > 0 && E(), N = () => {
944
- var M, b, T;
945
- (M = p.removeEventListener) == null || M.call(p, "addtrack", E), (b = p.removeEventListener) == null || b.call(p, "removetrack", E), (T = p.removeEventListener) == null || T.call(p, "change", E);
1073
+ (F = h.addEventListener) == null || F.call(h, "addtrack", L), (Z = h.addEventListener) == null || Z.call(h, "removetrack", L), (q = h.addEventListener) == null || q.call(h, "change", L), h.length > 0 && L(), R = () => {
1074
+ var B, N, y;
1075
+ (B = h.removeEventListener) == null || B.call(h, "addtrack", L), (N = h.removeEventListener) == null || N.call(h, "removetrack", L), (y = h.removeEventListener) == null || y.call(h, "change", L);
946
1076
  };
947
1077
  }
948
1078
  }
949
1079
  return () => {
950
- for (d.removeEventListener("loadedmetadata", C), N == null || N(), f.current && (f.current.destroy(), f.current = null), d.pause(), d.removeAttribute("src"); d.firstChild; ) d.firstChild.remove();
951
- d.load(), w([]);
1080
+ for (v.removeEventListener("loadedmetadata", W), R == null || R(), a.current && (a.current.destroy(), a.current = null), v.pause(), v.removeAttribute("src"); v.firstChild; ) v.firstChild.remove();
1081
+ v.load(), S([]), T([]), D(-1);
952
1082
  };
953
- }, [e, g, n, r]), x(() => {
954
- var C;
955
- if (c == null || c < 0) return;
956
- const d = f.current;
957
- if (d) {
958
- d.audioTrack !== c && (d.audioTrack = c);
1083
+ }, [e, V, n, r]), P(() => {
1084
+ if (d == null) return;
1085
+ const v = a.current;
1086
+ v && v.currentLevel !== d && (v.currentLevel = d);
1087
+ }, [d]), P(() => {
1088
+ var T;
1089
+ if (u == null || u < 0) return;
1090
+ const v = a.current;
1091
+ if (v) {
1092
+ v.audioTrack !== u && (v.audioTrack = u);
959
1093
  return;
960
1094
  }
961
- const w = (C = m.current) == null ? void 0 : C.audioTracks;
962
- if (w)
963
- for (let N = 0; N < w.length; N++)
964
- w[N].enabled = N === c;
965
- }, [c]), // Captions are the consumer's responsibility — pass <track> elements as children.
1095
+ const S = (T = o.current) == null ? void 0 : T.audioTracks;
1096
+ if (S)
1097
+ for (let D = 0; D < S.length; D++)
1098
+ S[D].enabled = D === u;
1099
+ }, [u]), // Captions are the consumer's responsibility — pass <track> elements as children.
966
1100
  // NOSONAR: typescript:S4084
967
- /* @__PURE__ */ t("video", { ref: m, ...a, children: l });
1101
+ /* @__PURE__ */ t("video", { ref: o, ...C, children: l });
968
1102
  }
969
1103
  );
970
- ee.displayName = "HLSPlayer";
971
- function Ue(e) {
1104
+ le.displayName = "HLSPlayer";
1105
+ function et(e) {
972
1106
  if (!e) return null;
973
1107
  if (/^[A-Za-z0-9_-]{11}$/.test(e)) return e;
974
1108
  let n;
@@ -992,49 +1126,49 @@ function Ue(e) {
992
1126
  }
993
1127
  return null;
994
1128
  }
995
- function _e(e) {
1129
+ function tt(e) {
996
1130
  try {
997
1131
  const n = new URL(e), s = n.searchParams.get("t") ?? n.searchParams.get("start");
998
1132
  if (!s) return null;
999
1133
  if (/^\d+s?$/.test(s)) return Number.parseInt(s, 10);
1000
1134
  const r = /^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/.exec(s);
1001
1135
  if (r) {
1002
- const l = Number.parseInt(r[1] ?? "0", 10), u = Number.parseInt(r[2] ?? "0", 10), c = Number.parseInt(r[3] ?? "0", 10), a = l * 3600 + u * 60 + c;
1003
- return a > 0 ? a : null;
1136
+ const l = Number.parseInt(r[1] ?? "0", 10), i = Number.parseInt(r[2] ?? "0", 10), u = Number.parseInt(r[3] ?? "0", 10), c = l * 3600 + i * 60 + u;
1137
+ return c > 0 ? c : null;
1004
1138
  }
1005
1139
  } catch {
1006
1140
  }
1007
1141
  return null;
1008
1142
  }
1009
- function Oe(e, n = {}) {
1010
- const { autoPlay: s = !1, muted: r = !0, loop: l = !1, controls: u = !0, startSeconds: c } = n, a = new URLSearchParams({
1143
+ function nt(e, n = {}) {
1144
+ const { autoPlay: s = !1, muted: r = !0, loop: l = !1, controls: i = !0, startSeconds: u } = n, c = new URLSearchParams({
1011
1145
  rel: "0",
1012
1146
  modestbranding: "1",
1013
1147
  playsinline: "1",
1014
- controls: u ? "1" : "0"
1148
+ controls: i ? "1" : "0"
1015
1149
  });
1016
- return s ? (a.set("autoplay", "1"), a.set("mute", "1")) : r && a.set("mute", "1"), l && (a.set("loop", "1"), a.set("playlist", e)), c && c > 0 && a.set("start", String(c)), `https://www.youtube-nocookie.com/embed/${e}?${a.toString()}`;
1150
+ return s ? (c.set("autoplay", "1"), c.set("mute", "1")) : r && c.set("mute", "1"), l && (c.set("loop", "1"), c.set("playlist", e)), u && u > 0 && c.set("start", String(u)), `https://www.youtube-nocookie.com/embed/${e}?${c.toString()}`;
1017
1151
  }
1018
- const Fe = ({
1152
+ const rt = ({
1019
1153
  tracks: e,
1020
1154
  activeIndex: n,
1021
1155
  onSelect: s
1022
1156
  }) => {
1023
- const [r, l] = k(!1), u = V(null);
1024
- x(() => {
1157
+ const [r, l] = k(!1), i = H(null);
1158
+ P(() => {
1025
1159
  if (!r) return;
1026
- const a = (m) => {
1027
- u.current && !u.current.contains(m.target) && l(!1);
1028
- }, i = (m) => {
1029
- m.key === "Escape" && l(!1);
1160
+ const c = (d) => {
1161
+ i.current && !i.current.contains(d.target) && l(!1);
1162
+ }, p = (d) => {
1163
+ d.key === "Escape" && l(!1);
1030
1164
  };
1031
- return document.addEventListener("mousedown", a), document.addEventListener("keydown", i), () => {
1032
- document.removeEventListener("mousedown", a), document.removeEventListener("keydown", i);
1165
+ return document.addEventListener("mousedown", c), document.addEventListener("keydown", p), () => {
1166
+ document.removeEventListener("mousedown", c), document.removeEventListener("keydown", p);
1033
1167
  };
1034
1168
  }, [r]);
1035
- const c = e.find((a) => a.index === n) ?? e[0];
1036
- return /* @__PURE__ */ v("div", { className: "gvp-audio", ref: u, children: [
1037
- /* @__PURE__ */ v(
1169
+ const u = e.find((c) => c.index === n) ?? e[0];
1170
+ return /* @__PURE__ */ g("div", { className: "gvp-audio", ref: i, children: [
1171
+ /* @__PURE__ */ g(
1038
1172
  "button",
1039
1173
  {
1040
1174
  type: "button",
@@ -1042,11 +1176,11 @@ const Fe = ({
1042
1176
  "aria-haspopup": "listbox",
1043
1177
  "aria-expanded": r,
1044
1178
  "aria-label": "Audio track",
1045
- onClick: () => l((a) => !a),
1179
+ onClick: () => l((c) => !c),
1046
1180
  children: [
1047
- /* @__PURE__ */ t(we, {}),
1048
- /* @__PURE__ */ t("span", { className: "gvp-audio-label", children: c == null ? void 0 : c.label }),
1049
- /* @__PURE__ */ t(Ie, {})
1181
+ /* @__PURE__ */ t(Me, {}),
1182
+ /* @__PURE__ */ t("span", { className: "gvp-audio-label", children: u == null ? void 0 : u.label }),
1183
+ /* @__PURE__ */ t(Re, {})
1050
1184
  ]
1051
1185
  }
1052
1186
  ),
@@ -1054,149 +1188,154 @@ const Fe = ({
1054
1188
  // (it renders the OS dropdown chrome), so this is a custom listbox with
1055
1189
  // full keyboard + ARIA support.
1056
1190
  // NOSONAR: typescript:S6819
1057
- /* @__PURE__ */ t("ul", { className: "gvp-audio-menu", role: "listbox", "aria-label": "Audio tracks", children: e.map((a) => /* @__PURE__ */ t("li", { children: /* @__PURE__ */ t(
1191
+ /* @__PURE__ */ t("ul", { className: "gvp-audio-menu", role: "listbox", "aria-label": "Audio tracks", children: e.map((c) => /* @__PURE__ */ t("li", { children: /* @__PURE__ */ t(
1058
1192
  "button",
1059
1193
  {
1060
1194
  type: "button",
1061
1195
  role: "option",
1062
- "aria-selected": a.index === n,
1063
- className: H(
1196
+ "aria-selected": c.index === n,
1197
+ className: I(
1064
1198
  "gvp-audio-menu-item",
1065
- a.index === n && "is-active"
1199
+ c.index === n && "is-active"
1066
1200
  ),
1067
1201
  onClick: () => {
1068
- s(a.index), l(!1);
1202
+ s(c.index), l(!1);
1069
1203
  },
1070
- children: a.label
1204
+ children: c.label
1071
1205
  }
1072
- ) }, a.index)) })
1206
+ ) }, c.index)) })
1073
1207
  ] });
1074
- }, Ke = ({
1208
+ }, lt = ({
1075
1209
  src: e,
1076
1210
  poster: n,
1077
1211
  showDeviceToggle: s = !0,
1078
1212
  defaultDevice: r = "desktop",
1079
1213
  hoverPlay: l = !1,
1080
- tooltipText: u,
1081
- onClose: c,
1082
- className: a = "",
1083
- muted: i = !0,
1084
- loop: m = !1,
1085
- controls: f = !0,
1086
- autoPlay: o = !1,
1087
- frameMaxWidth: h,
1088
- aspectRatio: g,
1089
- hlsConfig: d,
1090
- children: w
1214
+ tooltipText: i,
1215
+ onClose: u,
1216
+ className: c = "",
1217
+ muted: p = !0,
1218
+ loop: d = !1,
1219
+ controls: C = !0,
1220
+ autoPlay: b = !1,
1221
+ frameMaxWidth: o,
1222
+ aspectRatio: a,
1223
+ hlsConfig: m,
1224
+ children: f
1091
1225
  }) => {
1092
- const C = V(null), N = V(null), [P, R] = k(r), [D, p] = k(!1), [E, M] = k(!1), [b, T] = k([]), [_, z] = k(-1), [te, ne] = k(null), [re, se] = k(null), oe = S((y) => {
1093
- C.current = y, se(y);
1094
- }, []), A = f === !0 || f === "custom", O = f === "native", W = U(() => Ue(e), [e]), I = W !== null, ae = U(() => P === "mobile" ? (g == null ? void 0 : g.mobile) ?? "9/16" : (g == null ? void 0 : g.desktop) ?? "16/9", [P, g]), ie = U(() => P === "mobile" ? (h == null ? void 0 : h.mobile) ?? "420px" : (h == null ? void 0 : h.desktop) ?? "960px", [P, h]), le = U(
1095
- () => W ? Oe(W, {
1096
- autoPlay: o,
1097
- muted: i,
1098
- loop: m,
1226
+ const w = H(null), U = H(null), [V, v] = k(r), [S, T] = k(!1), [D, W] = k(!1), [R, F] = k([]), [Z, q] = k(-1), [h, L] = k([]), [B, N] = k(-1), [y, _] = k(-1), [ie, ce] = k(null), [ue, de] = k(null), he = M((E) => {
1227
+ w.current = E, de(E);
1228
+ }, []), O = C === !0 || C === "custom", J = C === "native", Q = K(() => et(e), [e]), A = Q !== null, pe = K(() => V === "mobile" ? (a == null ? void 0 : a.mobile) ?? "9/16" : (a == null ? void 0 : a.desktop) ?? "16/9", [V, a]), me = K(() => V === "mobile" ? (o == null ? void 0 : o.mobile) ?? "420px" : (o == null ? void 0 : o.desktop) ?? "960px", [V, o]), fe = K(
1229
+ () => Q ? nt(Q, {
1230
+ autoPlay: b,
1231
+ muted: p,
1232
+ loop: d,
1099
1233
  // Custom controls can't drive an iframe, so YouTube falls
1100
1234
  // back to its own controls in that mode.
1101
- controls: A ? !0 : O,
1102
- startSeconds: _e(e)
1235
+ controls: O ? !0 : J,
1236
+ startSeconds: tt(e)
1103
1237
  }) : null,
1104
- [W, e, o, i, m, A, O]
1105
- ), ce = S((y) => {
1106
- T(y), z(-1);
1107
- }, []), j = S(async () => {
1108
- const y = C.current;
1109
- if (y) {
1110
- if (N.current)
1238
+ [Q, e, b, p, d, O, J]
1239
+ ), ge = M((E) => {
1240
+ F(E), q(-1);
1241
+ }, []), ve = M((E) => {
1242
+ L(E), _(-1);
1243
+ }, []), Y = M(async () => {
1244
+ const E = w.current;
1245
+ if (E) {
1246
+ if (U.current)
1111
1247
  try {
1112
- await N.current;
1248
+ await U.current;
1113
1249
  } catch {
1114
1250
  }
1115
- y.pause();
1251
+ E.pause();
1116
1252
  }
1117
- }, []), Z = S(async () => {
1118
- const y = C.current;
1119
- if (y)
1253
+ }, []), z = M(async () => {
1254
+ const E = w.current;
1255
+ if (E)
1120
1256
  try {
1121
- y.readyState < 2 && y.load();
1122
- const Y = y.play();
1123
- N.current = Y, await Y, p(!0);
1257
+ E.readyState < 2 && E.load();
1258
+ const te = E.play();
1259
+ U.current = te, await te, T(!0);
1124
1260
  } catch {
1125
- p(!1);
1261
+ T(!1);
1126
1262
  } finally {
1127
- N.current = null;
1263
+ U.current = null;
1128
1264
  }
1129
- }, []), ue = S(() => {
1130
- !l || I || Z();
1131
- }, [l, I, Z]), de = S(() => {
1132
- !l || I || j().then(() => p(!1));
1133
- }, [l, I, j]), F = S(async () => {
1134
- const y = C.current;
1135
- y && (y.paused ? await Z() : (await j(), p(!1)));
1136
- }, [Z, j]), pe = !I && b.length > 1;
1265
+ }, []), ke = M(() => {
1266
+ !l || A || z();
1267
+ }, [l, A, z]), be = M(() => {
1268
+ !l || A || Y().then(() => T(!1));
1269
+ }, [l, A, Y]), X = M(async () => {
1270
+ const E = w.current;
1271
+ E && (E.paused ? await z() : (await Y(), T(!1)));
1272
+ }, [z, Y]), Ce = !A && R.length > 1;
1137
1273
  return (
1138
1274
  // The mouse handlers are a progressive enhancement (hoverPlay + tooltip).
1139
1275
  // Keyboard/click users reach the same actions via the inner <button> elements,
1140
1276
  // so the outer container is intentionally non-interactive at the role level.
1141
1277
  // NOSONAR: typescript:S6848
1142
- /* @__PURE__ */ v(
1278
+ /* @__PURE__ */ g(
1143
1279
  "div",
1144
1280
  {
1145
- ref: ne,
1146
- className: H("gvp-root", a),
1147
- style: { width: ie, aspectRatio: ae },
1281
+ ref: ce,
1282
+ className: I("gvp-root", c),
1283
+ style: { width: me, aspectRatio: pe },
1148
1284
  onMouseEnter: () => {
1149
- M(!0), ue();
1285
+ W(!0), ke();
1150
1286
  },
1151
1287
  onMouseLeave: () => {
1152
- M(!1), de();
1288
+ W(!1), be();
1153
1289
  },
1154
1290
  children: [
1155
- I ? /* @__PURE__ */ t(
1291
+ A ? /* @__PURE__ */ t(
1156
1292
  "iframe",
1157
1293
  {
1158
1294
  className: "gvp-video gvp-youtube",
1159
- src: le ?? void 0,
1295
+ src: fe ?? void 0,
1160
1296
  title: "YouTube video player",
1161
1297
  allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
1162
1298
  allowFullScreen: !0,
1163
1299
  referrerPolicy: "strict-origin-when-cross-origin"
1164
1300
  }
1165
1301
  ) : /* @__PURE__ */ t(
1166
- ee,
1302
+ le,
1167
1303
  {
1168
- ref: oe,
1304
+ ref: he,
1169
1305
  src: e,
1170
1306
  poster: n,
1171
- muted: i,
1172
- loop: m,
1307
+ muted: p,
1308
+ loop: d,
1173
1309
  playsInline: !0,
1174
1310
  preload: "metadata",
1175
- controls: O,
1176
- autoPlay: o,
1177
- hlsConfig: d,
1311
+ controls: J,
1312
+ autoPlay: b,
1313
+ hlsConfig: m,
1178
1314
  className: "gvp-video",
1179
- onPlay: () => p(!0),
1180
- onPause: () => p(!1),
1181
- onAudioTracks: ce,
1182
- audioTrackIndex: _,
1183
- children: w
1315
+ onPlay: () => T(!0),
1316
+ onPause: () => T(!1),
1317
+ onAudioTracks: ge,
1318
+ audioTrackIndex: Z,
1319
+ onQualityLevels: ve,
1320
+ onCurrentLevel: N,
1321
+ qualityLevelIndex: y,
1322
+ children: f
1184
1323
  }
1185
1324
  ),
1186
- !I && /* @__PURE__ */ t("div", { className: "gvp-vignette" }),
1187
- s && /* @__PURE__ */ t("div", { className: "gvp-toggle", children: /* @__PURE__ */ v("div", { className: "gvp-toggle-pill", children: [
1325
+ !A && /* @__PURE__ */ t("div", { className: "gvp-vignette" }),
1326
+ s && /* @__PURE__ */ t("div", { className: "gvp-toggle", children: /* @__PURE__ */ g("div", { className: "gvp-toggle-pill", children: [
1188
1327
  /* @__PURE__ */ t(
1189
1328
  "button",
1190
1329
  {
1191
1330
  type: "button",
1192
- onClick: () => R("desktop"),
1193
- className: H(
1331
+ onClick: () => v("desktop"),
1332
+ className: I(
1194
1333
  "gvp-toggle-btn",
1195
- P === "desktop" && "is-active"
1334
+ V === "desktop" && "is-active"
1196
1335
  ),
1197
1336
  "aria-label": "Desktop view",
1198
- "aria-pressed": P === "desktop",
1199
- children: /* @__PURE__ */ t(fe, {})
1337
+ "aria-pressed": V === "desktop",
1338
+ children: /* @__PURE__ */ t(ye, {})
1200
1339
  }
1201
1340
  ),
1202
1341
  /* @__PURE__ */ t("div", { className: "gvp-toggle-divider" }),
@@ -1204,78 +1343,82 @@ const Fe = ({
1204
1343
  "button",
1205
1344
  {
1206
1345
  type: "button",
1207
- onClick: () => R("mobile"),
1208
- className: H(
1346
+ onClick: () => v("mobile"),
1347
+ className: I(
1209
1348
  "gvp-toggle-btn",
1210
- P === "mobile" && "is-active"
1349
+ V === "mobile" && "is-active"
1211
1350
  ),
1212
1351
  "aria-label": "Mobile view",
1213
- "aria-pressed": P === "mobile",
1214
- children: /* @__PURE__ */ t(ge, {})
1352
+ "aria-pressed": V === "mobile",
1353
+ children: /* @__PURE__ */ t(Ee, {})
1215
1354
  }
1216
1355
  )
1217
1356
  ] }) }),
1218
- c && /* @__PURE__ */ t(
1357
+ u && /* @__PURE__ */ t(
1219
1358
  "button",
1220
1359
  {
1221
1360
  type: "button",
1222
- onClick: c,
1361
+ onClick: u,
1223
1362
  className: "gvp-close",
1224
1363
  "aria-label": "Close",
1225
- children: /* @__PURE__ */ t(ve, {})
1364
+ children: /* @__PURE__ */ t(xe, {})
1226
1365
  }
1227
1366
  ),
1228
- pe && /* @__PURE__ */ t(
1229
- Fe,
1367
+ Ce && /* @__PURE__ */ t(
1368
+ rt,
1230
1369
  {
1231
- tracks: b,
1232
- activeIndex: _ >= 0 ? _ : b[0].index,
1233
- onSelect: z
1370
+ tracks: R,
1371
+ activeIndex: Z >= 0 ? Z : R[0].index,
1372
+ onSelect: q
1234
1373
  }
1235
1374
  ),
1236
- !I && A && /* @__PURE__ */ t(
1375
+ !A && O && /* @__PURE__ */ t(
1237
1376
  "button",
1238
1377
  {
1239
1378
  type: "button",
1240
1379
  className: "gvp-click-layer",
1241
- onClick: () => void F(),
1242
- "aria-label": D ? "Pause" : "Play"
1380
+ onClick: () => void X(),
1381
+ "aria-label": S ? "Pause" : "Play"
1243
1382
  }
1244
1383
  ),
1245
- !I && !A && !D && /* @__PURE__ */ t("div", { className: "gvp-play-wrap", children: /* @__PURE__ */ v(
1384
+ !A && !O && !S && /* @__PURE__ */ t("div", { className: "gvp-play-wrap", children: /* @__PURE__ */ g(
1246
1385
  "button",
1247
1386
  {
1248
1387
  type: "button",
1249
- onClick: () => void F(),
1250
- onMouseEnter: () => M(!0),
1251
- onMouseLeave: () => M(!1),
1388
+ onClick: () => void X(),
1389
+ onMouseEnter: () => W(!0),
1390
+ onMouseLeave: () => W(!1),
1252
1391
  className: "gvp-play",
1253
1392
  "aria-label": "Play",
1254
1393
  children: [
1255
- /* @__PURE__ */ t(ke, {}),
1256
- u && E && /* @__PURE__ */ t("span", { className: "gvp-tooltip", role: "tooltip", children: u })
1394
+ /* @__PURE__ */ t(Ne, {}),
1395
+ i && D && /* @__PURE__ */ t("span", { className: "gvp-tooltip", role: "tooltip", children: i })
1257
1396
  ]
1258
1397
  }
1259
1398
  ) }),
1260
- !I && A && /* @__PURE__ */ t(
1261
- He,
1399
+ !A && O && /* @__PURE__ */ t(
1400
+ Ze,
1262
1401
  {
1263
- video: re,
1264
- isPlaying: D,
1265
- container: te,
1266
- onTogglePlay: () => void F()
1402
+ video: ue,
1403
+ isPlaying: S,
1404
+ container: ie,
1405
+ onTogglePlay: () => void X(),
1406
+ qualityLevels: h,
1407
+ currentLevel: B,
1408
+ selectedLevel: y,
1409
+ onSelectLevel: _
1267
1410
  }
1268
1411
  ),
1269
- !I && !A && /* @__PURE__ */ t("div", { className: "gvp-bottom-fade" })
1412
+ !A && !O && /* @__PURE__ */ t("div", { className: "gvp-bottom-fade" })
1270
1413
  ]
1271
1414
  }
1272
1415
  )
1273
1416
  );
1274
1417
  };
1275
1418
  export {
1276
- Ke as ReactVideoPlayer,
1277
- Ue as parseYouTubeId,
1278
- _e as parseYouTubeStart,
1279
- Oe as youTubeEmbedUrl
1419
+ lt as ReactVideoPlayer,
1420
+ et as parseYouTubeId,
1421
+ tt as parseYouTubeStart,
1422
+ nt as youTubeEmbedUrl
1280
1423
  };
1281
1424
  //# sourceMappingURL=index.mjs.map