@instructure/studio-player 1.3.7 → 1.3.9

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/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ReactSVGElement } from 'react';
1
+ import { ReactNode, ReactSVGElement } from 'react';
2
2
  export type { VideoMimeType, MediaRemoteControl, MediaPlayerInstance, MediaCrossOrigin, } from '@vidstack/react';
3
3
  export type CaptionSourceType = 'youtube' | 'standard';
4
4
  export type CaptionMetaData = {
@@ -39,13 +39,22 @@ export type InteractiveMenuElement = {
39
39
  text: string;
40
40
  onClick: (id: string, timestamp: number) => void;
41
41
  };
42
- export type KebabMenuElementIcon = 'share' | 'transcript' | 'media' | 'delete' | 'shortcuts';
42
+ export type KebabMenuElementIcon = 'share' | 'transcript' | 'media' | 'delete' | 'shortcuts' | 'expand';
43
43
  export type KebabMenuElement = {
44
44
  id: string;
45
45
  text: string;
46
46
  icon: KebabMenuElementIcon | ReactSVGElement;
47
47
  onClick: (id: string) => void;
48
48
  order?: number;
49
+ showInOverlay?: boolean;
50
+ overlayText?: string;
51
+ };
52
+ export type TabSlot = {
53
+ id: string;
54
+ label: string;
55
+ Component: ReactNode;
56
+ order?: number;
57
+ default?: boolean;
49
58
  };
50
59
  export type FeedbackAction = 'togglePaused' | 'seekForward' | 'seekForward10' | 'seekBackward' | 'seekBackward10' | 'volumeChange' | 'captionsChange' | 'playbackRateChange';
51
60
  export { type StudioPlayerContextType } from './StudioPlayer/context';
@@ -1,8 +1,8 @@
1
1
  var o = Object.defineProperty;
2
2
  var a = (i, e, t) => e in i ? o(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t;
3
3
  var r = (i, e, t) => a(i, typeof e != "symbol" ? e + "" : e, t);
4
- import { s as p, H as d } from "./vidstack-C21JrmAf.js";
5
- import { H as u } from "./vidstack-html-Dz_pUri3.js";
4
+ import { s as p, H as d } from "./vidstack-vhfcP18r.js";
5
+ import { H as u } from "./vidstack-html-dNU_ECVa.js";
6
6
  class n extends u {
7
7
  constructor(t, s) {
8
8
  super(t, s);
@@ -5,8 +5,8 @@ var u = (e) => {
5
5
  var g = (e, s, t) => s in e ? S(e, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[s] = t;
6
6
  var h = (e, s, t) => g(e, typeof s != "symbol" ? s + "" : s, t), d = (e, s, t) => s.has(e) || u("Cannot " + t);
7
7
  var i = (e, s, t) => (d(e, s, "read from private field"), t ? t.call(e) : s.get(e)), a = (e, s, t) => s.has(e) ? u("Cannot add the same private member more than once") : s instanceof WeakSet ? s.add(e) : s.set(e, t), p = (e, s, t, n) => (d(e, s, "write to private field"), n ? n.call(e, t) : s.set(e, t), t);
8
- import { D as f, i as m, a as l, p as y, b as D, c as x } from "./vidstack-C21JrmAf.js";
9
- import { VideoProvider as v } from "./vidstack-video-CsAf3dvY.js";
8
+ import { D as f, i as m, a as l, p as y, b as D, c as x } from "./vidstack-vhfcP18r.js";
9
+ import { VideoProvider as v } from "./vidstack-video-t2h5KmBc.js";
10
10
  const $ = "https://cdn.jsdelivr.net";
11
11
  var c, r, o;
12
12
  class b extends v {
@@ -5,7 +5,7 @@ var U = (r) => {
5
5
  var ct = (r, t, s) => t in r ? ht(r, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : r[t] = s;
6
6
  var _ = (r, t, s) => ct(r, typeof t != "symbol" ? t + "" : t, s), D = (r, t, s) => t.has(r) || U("Cannot " + s);
7
7
  var e = (r, t, s) => (D(r, t, "read from private field"), s ? s.call(r) : t.get(r)), d = (r, t, s) => t.has(r) ? U("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(r) : t.set(r, s), u = (r, t, s, n) => (D(r, t, "write to private field"), n ? n.call(r, s) : t.set(r, s), s), a = (r, t, s) => (D(r, t, "access private method"), s);
8
- import { l as ut, d as dt, T as E, R as lt, G as ft, k as F, o as mt, e as x, c as I, f as gt } from "./vidstack-C21JrmAf.js";
8
+ import { l as ut, d as dt, T as E, R as lt, G as ft, k as F, o as mt, e as x, c as I, f as gt } from "./vidstack-vhfcP18r.js";
9
9
  function Tt() {
10
10
  return "https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1";
11
11
  }
@@ -5,8 +5,8 @@ var u = (e) => {
5
5
  var g = (e, s, t) => s in e ? S(e, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[s] = t;
6
6
  var a = (e, s, t) => g(e, typeof s != "symbol" ? s + "" : s, t), d = (e, s, t) => s.has(e) || u("Cannot " + t);
7
7
  var i = (e, s, t) => (d(e, s, "read from private field"), t ? t.call(e) : s.get(e)), h = (e, s, t) => s.has(e) ? u("Cannot add the same private member more than once") : s instanceof WeakSet ? s.add(e) : s.set(e, t), p = (e, s, t, n) => (d(e, s, "write to private field"), n ? n.call(e, t) : s.set(e, t), t);
8
- import { g as f, h as m, a as l, p as y, j as L, c as x } from "./vidstack-C21JrmAf.js";
9
- import { VideoProvider as v } from "./vidstack-video-CsAf3dvY.js";
8
+ import { g as f, h as m, a as l, p as y, j as L, c as x } from "./vidstack-vhfcP18r.js";
9
+ import { VideoProvider as v } from "./vidstack-video-t2h5KmBc.js";
10
10
  const $ = "https://cdn.jsdelivr.net";
11
11
  var c, r, o;
12
12
  class j extends v {
@@ -6,7 +6,7 @@ var p = (i, e, t) => e in i ? l(i, e, { enumerable: !0, configurable: !0, writab
6
6
  var d = (i, e, t) => p(i, typeof e != "symbol" ? e + "" : e, t), S = (i, e, t) => e.has(i) || m("Cannot " + t);
7
7
  var h = (i, e, t) => e.has(i) ? m("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(i) : e.set(i, t);
8
8
  var n = (i, e, t) => (S(i, e, "access private method"), t);
9
- import { A as y, d as v, m as f, N as T, o as b, n as c, q as $, a as M } from "./vidstack-C21JrmAf.js";
9
+ import { A as y, d as v, m as f, N as T, o as b, n as c, q as $, a as M } from "./vidstack-vhfcP18r.js";
10
10
  var r, u;
11
11
  class g {
12
12
  constructor(e, t) {
@@ -7,7 +7,7 @@ var y = (n, e, t) => Qw(n, typeof e != "symbol" ? e + "" : e, t), cl = (n, e, t)
7
7
  var s = (n, e, t) => (cl(n, e, "read from private field"), t ? t.call(n) : e.get(n)), c = (n, e, t) => e.has(n) ? Qu("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(n) : e.set(n, t), u = (n, e, t, i) => (cl(n, e, "write to private field"), i ? i.call(n, t) : e.set(n, t), t), a = (n, e, t) => (cl(n, e, "access private method"), t);
8
8
  import { jsx as N, Fragment as zw, jsxs as Jr } from "react/jsx-runtime";
9
9
  import * as $ from "react";
10
- import { g as Yw, a as Xw, i as zu, h as Jw, b as Zw, c as tT, d as eT, e as iT, f as sT } from "./vidstack-google-cast-B4Vl3EJ9.js";
10
+ import { g as Yw, a as Xw, i as zu, h as Jw, b as Zw, c as tT, d as eT, e as iT, f as sT } from "./vidstack-google-cast-vz-QWdn1.js";
11
11
  const li = Symbol(0);
12
12
  let mh = !1, $l = !1, Qe = null, Kn = null, Ae = null, be = 0, Bn = [], Tu = {};
13
13
  const nT = () => {
@@ -2995,7 +2995,7 @@ class G$ {
2995
2995
  return "audio";
2996
2996
  }
2997
2997
  async load(e) {
2998
- return new (await import("./vidstack-audio-BBGk19Gk.js")).AudioProvider(this.target, e);
2998
+ return new (await import("./vidstack-audio-DpC7qtiU.js")).AudioProvider(this.target, e);
2999
2999
  }
3000
3000
  }
3001
3001
  class Ou {
@@ -3010,7 +3010,7 @@ class Ou {
3010
3010
  return "video";
3011
3011
  }
3012
3012
  async load(e) {
3013
- return new (await import("./vidstack-video-CsAf3dvY.js")).VideoProvider(this.target, e);
3013
+ return new (await import("./vidstack-video-t2h5KmBc.js")).VideoProvider(this.target, e);
3014
3014
  }
3015
3015
  }
3016
3016
  const Mh = class Mh extends Ou {
@@ -3022,7 +3022,7 @@ const Mh = class Mh extends Ou {
3022
3022
  return Mh.supported && ca(t);
3023
3023
  }
3024
3024
  async load(t) {
3025
- return new (await import("./vidstack-hls-CJjsZ6ts.js")).HLSProvider(this.target, t);
3025
+ return new (await import("./vidstack-hls-dUGvLSPa.js")).HLSProvider(this.target, t);
3026
3026
  }
3027
3027
  };
3028
3028
  y(Mh, "supported", Au());
@@ -3846,7 +3846,7 @@ const qh = class qh extends Ou {
3846
3846
  return qh.supported && Mu(t);
3847
3847
  }
3848
3848
  async load(t) {
3849
- return new (await import("./vidstack-dash-DGxcLdqt.js")).DASHProvider(this.target, t);
3849
+ return new (await import("./vidstack-dash-B6EhwfI1.js")).DASHProvider(this.target, t);
3850
3850
  }
3851
3851
  };
3852
3852
  y(qh, "supported", FT());
@@ -3872,10 +3872,10 @@ class av {
3872
3872
  return "video";
3873
3873
  }
3874
3874
  async load(e) {
3875
- return new (await import("./vidstack-vimeo-Ca0VhtFD.js").then((t) => t.p)).VimeoProvider(this.target, e);
3875
+ return new (await import("./vidstack-vimeo-DrrDsSEI.js").then((t) => t.p)).VimeoProvider(this.target, e);
3876
3876
  }
3877
3877
  async loadPoster(e, t, i) {
3878
- const { resolveVimeoVideoId: r, getVimeoVideoInfo: o } = await import("./vidstack-vimeo-Ca0VhtFD.js").then((d) => d.u);
3878
+ const { resolveVimeoVideoId: r, getVimeoVideoInfo: o } = await import("./vidstack-vimeo-DrrDsSEI.js").then((d) => d.u);
3879
3879
  if (!R(e.src)) return null;
3880
3880
  const { videoId: h, hash: l } = r(e.src);
3881
3881
  return h ? o(h, i, l).then((d) => d ? d.poster : null) : null;
@@ -3906,10 +3906,10 @@ class ov {
3906
3906
  return "video";
3907
3907
  }
3908
3908
  async load(e) {
3909
- return new (await import("./vidstack-youtube-rG35f6dD.js").then((t) => t.p)).YouTubeProvider(this.target, e);
3909
+ return new (await import("./vidstack-youtube-BC-ol6Of.js").then((t) => t.p)).YouTubeProvider(this.target, e);
3910
3910
  }
3911
3911
  async loadPoster(e, t, i) {
3912
- const { findYouTubePoster: r, resolveYouTubeVideoId: o } = await import("./vidstack-youtube-rG35f6dD.js").then((l) => l.u), h = R(e.src) && o(e.src);
3912
+ const { findYouTubePoster: r, resolveYouTubeVideoId: o } = await import("./vidstack-youtube-BC-ol6Of.js").then((l) => l.u), h = R(e.src) && o(e.src);
3913
3913
  return h ? r(h, i) : null;
3914
3914
  }
3915
3915
  }
@@ -9544,7 +9544,7 @@ class Mk {
9544
9544
  async load(e) {
9545
9545
  if (!s(this, Rs))
9546
9546
  throw Error("[vidstack] google cast player was not initialized");
9547
- return new (await import("./vidstack-google-cast-B4Vl3EJ9.js").then((t) => t.p)).GoogleCastProvider(s(this, Rs), e);
9547
+ return new (await import("./vidstack-google-cast-vz-QWdn1.js").then((t) => t.p)).GoogleCastProvider(s(this, Rs), e);
9548
9548
  }
9549
9549
  }
9550
9550
  Rs = new WeakMap(), Yt = new WeakSet(), _w = async function(e) {
@@ -9722,17 +9722,17 @@ export {
9722
9722
  aP as W,
9723
9723
  oP as X,
9724
9724
  yP as Y,
9725
- lP as Z,
9726
- sP as _,
9725
+ sP as Z,
9726
+ lP as _,
9727
9727
  R as a,
9728
9728
  YS as a0,
9729
9729
  kk as a1,
9730
9730
  dP as a2,
9731
9731
  cP as a3,
9732
9732
  uP as a4,
9733
- JS as a5,
9734
- Ek as a6,
9735
- Nu as a7,
9733
+ Nu as a5,
9734
+ JS as a6,
9735
+ Ek as a7,
9736
9736
  pk as a8,
9737
9737
  nk as a9,
9738
9738
  bk as aa,
@@ -1,8 +1,8 @@
1
1
  var n = Object.defineProperty;
2
2
  var o = (s, t, e) => t in s ? n(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e;
3
3
  var i = (s, t, e) => o(s, typeof t != "symbol" ? t + "" : t, e);
4
- import { s as c, H as u, r as P, V as p, F as d, P as h, t as l, u as f, v as V, w as y, o as I } from "./vidstack-C21JrmAf.js";
5
- import { H as v } from "./vidstack-html-Dz_pUri3.js";
4
+ import { s as c, H as u, r as P, V as p, F as d, P as h, t as l, u as f, v as V, w as y, o as I } from "./vidstack-vhfcP18r.js";
5
+ import { H as v } from "./vidstack-html-dNU_ECVa.js";
6
6
  class m extends v {
7
7
  constructor(e, r) {
8
8
  super(e, r);
@@ -5,7 +5,7 @@ var W = (a) => {
5
5
  var ke = (a, c, e) => c in a ? me(a, c, { enumerable: !0, configurable: !0, writable: !0, value: e }) : a[c] = e;
6
6
  var b = (a, c, e) => ke(a, typeof c != "symbol" ? c + "" : c, e), j = (a, c, e) => c.has(a) || W("Cannot " + e);
7
7
  var s = (a, c, e) => (j(a, c, "read from private field"), e ? e.call(a) : c.get(a)), d = (a, c, e) => c.has(a) ? W("Cannot add the same private member more than once") : c instanceof WeakSet ? c.add(a) : c.set(a, e), f = (a, c, e, t) => (j(a, c, "write to private field"), t ? t.call(a, e) : c.set(a, e), e), h = (a, c, e) => (j(a, c, "access private method"), e);
8
- import { E as ve, d as we, x as Y, T as g, R as Te, p as Pe, y as x, c as A, a as Ce, z as G, L as M, l as $e, B as ge, C as Ee, I as Re, Q as J } from "./vidstack-C21JrmAf.js";
8
+ import { E as ve, d as we, x as Y, T as g, R as Te, p as Pe, y as x, c as A, a as Ce, z as G, L as M, l as $e, B as ge, C as Ee, I as Re, Q as J } from "./vidstack-vhfcP18r.js";
9
9
  const Ve = /(?:https:\/\/)?(?:player\.)?vimeo(?:\.com)?\/(?:video\/)?(\d+)(?:(?:\?hash=|\?h=|\/)(.*))?/, O = /* @__PURE__ */ new Map(), _ = /* @__PURE__ */ new Map();
10
10
  function K(a) {
11
11
  const c = a.match(Ve);
@@ -4,8 +4,8 @@ var z = (a) => {
4
4
  };
5
5
  var W = (a, n, e) => n in a ? Q(a, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : a[n] = e;
6
6
  var m = (a, n, e) => W(a, typeof n != "symbol" ? n + "" : n, e), E = (a, n, e) => n.has(a) || z("Cannot " + e);
7
- var s = (a, n, e) => (E(a, n, "read from private field"), e ? e.call(a) : n.get(a)), p = (a, n, e) => n.has(a) ? z("Cannot add the same private member more than once") : n instanceof WeakSet ? n.add(a) : n.set(a, e), c = (a, n, e, t) => (E(a, n, "write to private field"), t ? t.call(a, e) : n.set(a, e), e), r = (a, n, e) => (E(a, n, "access private method"), e);
8
- import { E as X, d as Z, x as ee, p as te, y as se, a as ie, J as ae, z as oe, Y as k, K as ne, M as _, T as j, O as re } from "./vidstack-C21JrmAf.js";
7
+ var s = (a, n, e) => (E(a, n, "read from private field"), e ? e.call(a) : n.get(a)), p = (a, n, e) => n.has(a) ? z("Cannot add the same private member more than once") : n instanceof WeakSet ? n.add(a) : n.set(a, e), l = (a, n, e, t) => (E(a, n, "write to private field"), t ? t.call(a, e) : n.set(a, e), e), r = (a, n, e) => (E(a, n, "access private method"), e);
8
+ import { E as X, d as Z, x as ee, p as te, y as se, a as ie, J as ae, z as oe, Y as k, K as ne, M as C, T as j, O as re } from "./vidstack-vhfcP18r.js";
9
9
  const ue = /(?:youtu\.be|youtube|youtube\.com|youtube-nocookie\.com)(?:\/shorts)?\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=|)((?:\w|-){11})/, Y = /* @__PURE__ */ new Map(), R = /* @__PURE__ */ new Map();
10
10
  function B(a) {
11
11
  var n;
@@ -18,12 +18,12 @@ async function de(a, n) {
18
18
  const u = ["maxresdefault", "sddefault", "hqdefault"];
19
19
  for (const d of u)
20
20
  for (const h of [!0, !1]) {
21
- const l = he(a, d, h);
22
- if ((await fetch(l, {
21
+ const c = he(a, d, h);
22
+ if ((await fetch(c, {
23
23
  mode: "no-cors",
24
24
  signal: n.signal
25
25
  })).status < 400) {
26
- Y.set(a, l), t(l);
26
+ Y.set(a, c), t(c);
27
27
  return;
28
28
  }
29
29
  }
@@ -38,8 +38,8 @@ const me = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
38
38
  findYouTubePoster: de,
39
39
  resolveYouTubeVideoId: B
40
40
  }, Symbol.toStringTag, { value: "Module" }));
41
- var o, g, P, S, C, T, w, y, O, i, ce, pe, F, U, b, I, J, N, D, V, q, K, L, M, A;
42
- class le extends X {
41
+ var o, g, P, S, $, T, w, y, O, i, le, pe, F, U, b, I, J, N, D, V, q, K, L, M, A;
42
+ class ce extends X {
43
43
  constructor(e, t) {
44
44
  super(e);
45
45
  p(this, i);
@@ -49,7 +49,7 @@ class le extends X {
49
49
  p(this, g, ee(""));
50
50
  p(this, P, -1);
51
51
  p(this, S, null);
52
- p(this, C, null);
52
+ p(this, $, null);
53
53
  p(this, T, -1);
54
54
  p(this, w, !1);
55
55
  p(this, y, /* @__PURE__ */ new Map());
@@ -90,7 +90,7 @@ class le extends X {
90
90
  * @defaultValue `undefined`
91
91
  */
92
92
  p(this, O);
93
- c(this, o, t);
93
+ l(this, o, t);
94
94
  }
95
95
  /**
96
96
  * Set the encrypted payload to use for the embed. It must be encrypted according to YouTube dev guide.
@@ -99,7 +99,7 @@ class le extends X {
99
99
  * @defaultValue `undefined`
100
100
  */
101
101
  set encryptedPayload(e) {
102
- c(this, O, e);
102
+ l(this, O, e);
103
103
  }
104
104
  get currentSrc() {
105
105
  return s(this, S);
@@ -143,11 +143,11 @@ class le extends X {
143
143
  }
144
144
  async loadSource(e) {
145
145
  if (!ie(e.src)) {
146
- c(this, S, null), s(this, g).set("");
146
+ l(this, S, null), s(this, g).set("");
147
147
  return;
148
148
  }
149
149
  const t = B(e.src);
150
- s(this, g).set(t ?? ""), c(this, S, e);
150
+ s(this, g).set(t ?? ""), l(this, S, e);
151
151
  }
152
152
  getOrigin() {
153
153
  switch (!0) {
@@ -182,31 +182,33 @@ class le extends X {
182
182
  window.setTimeout(() => this.postMessage({ event: "listening" }), 100);
183
183
  }
184
184
  onMessage({ info: e }, t) {
185
- var l, $;
185
+ var c, _;
186
186
  if (!e) return;
187
187
  const { title: u, intrinsicDuration: d, playbackRate: h } = s(this, o).$state;
188
- if (ne(e.videoData) && e.videoData.title !== u() && s(this, o).notify("title-change", e.videoData.title, t), (l = e.namespaces) != null && l.includes("captions") && e.captions && s(this, C) === null && (c(this, C, e.captions.tracklist), s(this, o).notify("loaded-metadata")), _(e.duration) && e.duration !== d()) {
189
- if (_(e.videoLoadedFraction)) {
190
- const f = (($ = e.progressState) == null ? void 0 : $.loaded) ?? e.videoLoadedFraction * e.duration, v = new j(0, e.duration);
188
+ if (ne(e.videoData) && e.videoData.title !== u() && s(this, o).notify("title-change", e.videoData.title, t), (c = e.namespaces) != null && c.includes("captions") && e.captions && s(this, $) === null && (l(this, $, [...e.captions.tracklist, e.captions.track]), s(this, o).notify("loaded-metadata", {
189
+ youtubeCaptions: s(this, $)
190
+ })), C(e.duration) && e.duration !== d()) {
191
+ if (C(e.videoLoadedFraction)) {
192
+ const f = ((_ = e.progressState) == null ? void 0 : _.loaded) ?? e.videoLoadedFraction * e.duration, v = new j(0, e.duration);
191
193
  r(this, i, D).call(this, f, v, t);
192
194
  }
193
195
  s(this, o).notify("duration-change", e.duration, t);
194
196
  }
195
- if (_(e.playbackRate) && e.playbackRate !== h() && s(this, o).notify("rate-change", e.playbackRate, t), e.progressState) {
197
+ if (C(e.playbackRate) && e.playbackRate !== h() && s(this, o).notify("rate-change", e.playbackRate, t), e.progressState) {
196
198
  const { current: f, seekableStart: v, seekableEnd: G, loaded: H, duration: x } = e.progressState;
197
199
  r(this, i, N).call(this, f, t), r(this, i, D).call(this, H, new j(v, G), t), x !== d() && s(this, o).notify("duration-change", x, t);
198
200
  }
199
- if (_(e.volume) && re(e.muted) && !s(this, w)) {
201
+ if (C(e.volume) && re(e.muted) && !s(this, w)) {
200
202
  const f = {
201
203
  muted: e.muted,
202
204
  volume: e.volume / 100
203
205
  };
204
206
  s(this, o).notify("volume-change", f, t);
205
207
  }
206
- _(e.playerState) && e.playerState !== s(this, P) && r(this, i, K).call(this, e.playerState, t);
208
+ C(e.playerState) && e.playerState !== s(this, P) && r(this, i, K).call(this, e.playerState, t);
207
209
  }
208
210
  }
209
- o = new WeakMap(), g = new WeakMap(), P = new WeakMap(), S = new WeakMap(), C = new WeakMap(), T = new WeakMap(), w = new WeakMap(), y = new WeakMap(), O = new WeakMap(), i = new WeakSet(), ce = function(e) {
211
+ o = new WeakMap(), g = new WeakMap(), P = new WeakMap(), S = new WeakMap(), $ = new WeakMap(), T = new WeakMap(), w = new WeakMap(), y = new WeakMap(), O = new WeakMap(), i = new WeakSet(), le = function(e) {
210
212
  var t;
211
213
  (t = r(this, i, M).call(this, "playVideo")) == null || t.reject(e);
212
214
  }, pe = function(e) {
@@ -237,21 +239,21 @@ o = new WeakMap(), g = new WeakMap(), P = new WeakMap(), S = new WeakMap(), C =
237
239
  var t;
238
240
  (t = r(this, i, M).call(this, "pauseVideo")) == null || t.resolve(), s(this, o).notify("pause", void 0, e);
239
241
  }, N = function(e, t) {
240
- const { duration: u, realCurrentTime: d } = s(this, o).$state, h = s(this, P) === k.Ended, l = h ? u() : e;
241
- s(this, o).notify("time-change", l, t), !h && Math.abs(l - d()) > 1 && s(this, o).notify("seeking", l, t);
242
+ const { duration: u, realCurrentTime: d } = s(this, o).$state, h = s(this, P) === k.Ended, c = h ? u() : e;
243
+ s(this, o).notify("time-change", c, t), !h && Math.abs(c - d()) > 1 && s(this, o).notify("seeking", c, t);
242
244
  }, D = function(e, t, u) {
243
245
  const d = {
244
246
  buffered: new j(0, e),
245
247
  seekable: t
246
248
  };
247
249
  s(this, o).notify("progress", d, u);
248
- const { seeking: h, realCurrentTime: l } = s(this, o).$state;
249
- h() && e > l() && r(this, i, V).call(this, u);
250
+ const { seeking: h, realCurrentTime: c } = s(this, o).$state;
251
+ h() && e > c() && r(this, i, V).call(this, u);
250
252
  }, V = function(e) {
251
253
  const { paused: t, realCurrentTime: u } = s(this, o).$state;
252
- window.clearTimeout(s(this, T)), c(this, T, window.setTimeout(
254
+ window.clearTimeout(s(this, T)), l(this, T, window.setTimeout(
253
255
  () => {
254
- s(this, o).notify("seeked", u(), e), c(this, T, -1);
256
+ s(this, o).notify("seeked", u(), e), l(this, T, -1);
255
257
  },
256
258
  t() ? 100 : 0
257
259
  ));
@@ -260,13 +262,13 @@ o = new WeakMap(), g = new WeakMap(), P = new WeakMap(), S = new WeakMap(), C =
260
262
  t() && r(this, i, V).call(this, e), s(this, o).notify("pause", void 0, e), s(this, o).notify("end", void 0, e);
261
263
  }, K = function(e, t) {
262
264
  var v;
263
- const { paused: u, seeking: d } = s(this, o).$state, h = e === k.Playing, l = e === k.Buffering, $ = r(this, i, A).call(this, "playVideo"), f = u() && (l || h);
264
- if (l && s(this, o).notify("waiting", void 0, t), d() && h && r(this, i, V).call(this, t), s(this, w) && h) {
265
- this.pause(), c(this, w, !1), this.setMuted(s(this, o).$state.muted());
265
+ const { paused: u, seeking: d } = s(this, o).$state, h = e === k.Playing, c = e === k.Buffering, _ = r(this, i, A).call(this, "playVideo"), f = u() && (c || h);
266
+ if (c && s(this, o).notify("waiting", void 0, t), d() && h && r(this, i, V).call(this, t), s(this, w) && h) {
267
+ this.pause(), l(this, w, !1), this.setMuted(s(this, o).$state.muted());
266
268
  return;
267
269
  }
268
- if (!$ && f) {
269
- c(this, w, !0), this.setMuted(!0);
270
+ if (!_ && f) {
271
+ l(this, w, !0), this.setMuted(!0);
270
272
  return;
271
273
  }
272
274
  switch (f && ((v = r(this, i, M).call(this, "playVideo")) == null || v.resolve(), s(this, o).notify("play", void 0, t)), e) {
@@ -283,9 +285,9 @@ o = new WeakMap(), g = new WeakMap(), P = new WeakMap(), S = new WeakMap(), C =
283
285
  r(this, i, q).call(this, t);
284
286
  break;
285
287
  }
286
- c(this, P, e);
288
+ l(this, P, e);
287
289
  }, L = function() {
288
- c(this, P, -1), c(this, T, -1), c(this, w, !1);
290
+ l(this, P, -1), l(this, T, -1), l(this, w, !1);
289
291
  }, M = function(e) {
290
292
  var t;
291
293
  return (t = s(this, y).get(e)) == null ? void 0 : t.shift();
@@ -295,7 +297,7 @@ o = new WeakMap(), g = new WeakMap(), P = new WeakMap(), S = new WeakMap(), C =
295
297
  };
296
298
  const be = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
297
299
  __proto__: null,
298
- YouTubeProvider: le
300
+ YouTubeProvider: ce
299
301
  }, Symbol.toStringTag, { value: "Module" }));
300
302
  export {
301
303
  be as p,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instructure/studio-player",
3
- "version": "1.3.7",
3
+ "version": "1.3.9",
4
4
  "private": false,
5
5
  "description": "Next generation media player for Instructure",
6
6
  "module": "./dist/studio-player.es.js",
@@ -21,7 +21,7 @@
21
21
  "license": "MIT",
22
22
  "devDependencies": {
23
23
  "@eslint/js": "^9.18.0",
24
- "@playwright/test": "^1.51.1",
24
+ "@playwright/test": "^1.55.0",
25
25
  "@storybook/addon-actions": "^8.6.11",
26
26
  "@storybook/addon-essentials": "^8.6.11",
27
27
  "@storybook/addon-interactions": "^8.6.11",
@@ -44,6 +44,7 @@
44
44
  "dotenv": "^16.4.7",
45
45
  "eslint": "^9.18.0",
46
46
  "eslint-plugin-import": "^2.31.0",
47
+ "eslint-plugin-playwright": "^2.2.2",
47
48
  "eslint-plugin-react": "^7.37.4",
48
49
  "globals": "^15.14.0",
49
50
  "happy-dom": "^16.6.0",
@@ -1,2 +0,0 @@
1
- import { PropsWithChildren } from 'react';
2
- export declare function MainLayout({ children }: PropsWithChildren<unknown>): import("react/jsx-runtime").JSX.Element;
@@ -1,137 +0,0 @@
1
- const t = "Action", n = "Add annotation at {{time}}", o = "Add question at {{time}}", e = "Annotations", s = "Auto", c = "Auto ({{quality}})", E = "Back", A = "Captions", a = "Disable Captions", T = "Enable Captions", O = "Caption Language", _ = "Manage Captions", S = "Delete {{language}}", N = "Font Size", P = "Caption Language: {{language}}", C = "Close", L = "Comments", i = "Continue", I = "Decrease Playback Speed", u = "Decrease Volume by {{percent}}%", U = "Down Arrow", l = "Enter Fullscreen", R = "Exit Fullscreen", p = "Increase Playback Speed", r = "Increase Volume by {{percent}}%", D = "Invert Colors", M = "Jump to specific percentage (1-10%, 2-20%, etc)", d = "Jump to Start", g = "Actions for {{title}}", G = "Keyboard Shortcuts", m = "Language", y = "Left Arrow", B = "Main Menu", b = "Mute", V = "Muted", K = "Next Caption Language", Y = "Off", k = "On Top", F = "Open annotation at {{time}}", Q = "Open completed quiz at {{time}}", f = "Open quiz at {{time}}", w = "Pause", W = "Play", q = "Playback Speed", x = "Playback Speed: {{speed}}x", J = "Previous Caption Language", h = "Quality", v = "Quality Menu", z = "Replay", H = "Reset Playback Speed", Z = "Right Arrow", X = "Seek backward: {{seconds}} seconds", j = "Seek forward: {{seconds}} seconds", $ = "Settings", tt = "Shortcut", nt = "Close Sidebar", ot = "Open Sidebar", et = "Space", st = "Playback speed menu", ct = "Toggle Captions", Et = "Toggle Muted", At = "Toggle Play/Pause", at = "Up Arrow", Tt = "Video Settings", Ot = "Volume", _t = "Volume: {{volume}}%", St = {
2
- ACTION: t,
3
- ADD_ANNOTATION_AT: n,
4
- ADD_QUESTION_AT: o,
5
- ANNOTATIONS: e,
6
- AUTO: s,
7
- AUTO_QUALITY: c,
8
- BACK: E,
9
- CAPTIONS: A,
10
- CAPTIONS_DISABLE: a,
11
- CAPTIONS_ENABLE: T,
12
- CAPTIONS_LANGUAGE: O,
13
- CAPTIONS_MANAGE: _,
14
- CAPTION_DELETE: S,
15
- CAPTION_FONT_SIZE: N,
16
- CAPTION_LANGUAGE: P,
17
- CLOSE: C,
18
- COMMENTS: L,
19
- CONTINUE: i,
20
- DECREASE_PLAYBACK_SPEED: I,
21
- DECREASE_VOLUME: u,
22
- DOWN_ARROW: U,
23
- ENTER_FULLSCREEN: l,
24
- EXIT_FULLSCREEN: R,
25
- INCREASE_PLAYBACK_SPEED: p,
26
- INCREASE_VOLUME: r,
27
- INVERT_COLORS: D,
28
- JUMP_TO_PERCENTAGE: M,
29
- JUMP_TO_START: d,
30
- KEBAB_MENU: g,
31
- KEYBOARD_SHORTCUTS: G,
32
- LANGUAGE: m,
33
- LEFT_ARROW: y,
34
- MAIN_MENU: B,
35
- MUTE: b,
36
- MUTED: V,
37
- NEXT_CAPTION_LANGUAGE: K,
38
- OFF: Y,
39
- ON_TOP: k,
40
- OPEN_ANNOTATION_AT: F,
41
- OPEN_COMPLETED_QUIZ_AT: Q,
42
- OPEN_QUIZ_AT: f,
43
- PAUSE: w,
44
- PLAY: W,
45
- PLAYBACK_SPEED: q,
46
- PLAYBACK_SPEED_MESSAGE: x,
47
- PREVIOUS_CAPTION_LANGUAGE: J,
48
- QUALITY: h,
49
- QUALITY_MENU: v,
50
- REPLAY: z,
51
- RESET_PLAYBACK_SPEED: H,
52
- RIGHT_ARROW: Z,
53
- SEEK_BACKWARD: X,
54
- SEEK_FORWARD: j,
55
- SETTINGS: $,
56
- SHORTCUT: tt,
57
- SIDEBAR_CLOSE: nt,
58
- SIDEBAR_OPEN: ot,
59
- SPACE: et,
60
- SPEED_MENU: st,
61
- TOGGLE_CAPTIONS: ct,
62
- TOGGLE_MUTED: Et,
63
- TOGGLE_PLAY_PAUSE: At,
64
- UP_ARROW: at,
65
- VIDEO_SETTINGS: Tt,
66
- VOLUME: Ot,
67
- VOLUME_VALUE: _t
68
- };
69
- export {
70
- t as ACTION,
71
- n as ADD_ANNOTATION_AT,
72
- o as ADD_QUESTION_AT,
73
- e as ANNOTATIONS,
74
- s as AUTO,
75
- c as AUTO_QUALITY,
76
- E as BACK,
77
- A as CAPTIONS,
78
- a as CAPTIONS_DISABLE,
79
- T as CAPTIONS_ENABLE,
80
- O as CAPTIONS_LANGUAGE,
81
- _ as CAPTIONS_MANAGE,
82
- S as CAPTION_DELETE,
83
- N as CAPTION_FONT_SIZE,
84
- P as CAPTION_LANGUAGE,
85
- C as CLOSE,
86
- L as COMMENTS,
87
- i as CONTINUE,
88
- I as DECREASE_PLAYBACK_SPEED,
89
- u as DECREASE_VOLUME,
90
- U as DOWN_ARROW,
91
- l as ENTER_FULLSCREEN,
92
- R as EXIT_FULLSCREEN,
93
- p as INCREASE_PLAYBACK_SPEED,
94
- r as INCREASE_VOLUME,
95
- D as INVERT_COLORS,
96
- M as JUMP_TO_PERCENTAGE,
97
- d as JUMP_TO_START,
98
- g as KEBAB_MENU,
99
- G as KEYBOARD_SHORTCUTS,
100
- m as LANGUAGE,
101
- y as LEFT_ARROW,
102
- B as MAIN_MENU,
103
- b as MUTE,
104
- V as MUTED,
105
- K as NEXT_CAPTION_LANGUAGE,
106
- Y as OFF,
107
- k as ON_TOP,
108
- F as OPEN_ANNOTATION_AT,
109
- Q as OPEN_COMPLETED_QUIZ_AT,
110
- f as OPEN_QUIZ_AT,
111
- w as PAUSE,
112
- W as PLAY,
113
- q as PLAYBACK_SPEED,
114
- x as PLAYBACK_SPEED_MESSAGE,
115
- J as PREVIOUS_CAPTION_LANGUAGE,
116
- h as QUALITY,
117
- v as QUALITY_MENU,
118
- z as REPLAY,
119
- H as RESET_PLAYBACK_SPEED,
120
- Z as RIGHT_ARROW,
121
- X as SEEK_BACKWARD,
122
- j as SEEK_FORWARD,
123
- $ as SETTINGS,
124
- tt as SHORTCUT,
125
- nt as SIDEBAR_CLOSE,
126
- ot as SIDEBAR_OPEN,
127
- et as SPACE,
128
- st as SPEED_MENU,
129
- ct as TOGGLE_CAPTIONS,
130
- Et as TOGGLE_MUTED,
131
- At as TOGGLE_PLAY_PAUSE,
132
- at as UP_ARROW,
133
- Tt as VIDEO_SETTINGS,
134
- Ot as VOLUME,
135
- _t as VOLUME_VALUE,
136
- St as default
137
- };
@@ -1 +0,0 @@
1
- ._annotation-overlay_1kxzn_1{position:absolute;top:0;right:0;bottom:0;left:0;-webkit-user-select:none;user-select:none;z-index:1;background-color:#000c;display:flex;flex-direction:column;justify-content:center;align-items:center}._media-buffering-indicator_1fwjr_1{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;pointer-events:none;opacity:0;z-index:1;background-color:#00000080;transition:opacity .2s ease}[data-media-player][data-buffering] ._media-buffering-spinner_1fwjr_17{pointer-events:none;animation:_media-buffering-spin_1fwjr_17 1s linear infinite}._media-buffering-track_1fwjr_22{color:#f5f5f5;opacity:.25}._media-buffering-track-fill_1fwjr_27{color:var(--media-brand, #f5f5f5);opacity:.75}[data-media-player][data-buffering] ._media-buffering-indicator_1fwjr_1{opacity:1}@keyframes _media-buffering-spin_1fwjr_17{to{transform:rotate(360deg)}}._controls-overlay_1hs9n_1{display:flex;position:absolute;gap:.5rem;padding:1rem;top:0;right:0;bottom:0;left:0;justify-content:end;pointer-events:none}._keyboard-shortcuts-overlay_1hs9n_11{position:absolute;top:0;right:0;bottom:0;left:0;background-color:#000000b3;color:#fff;padding:1.5rem;-webkit-user-select:none;user-select:none;overflow-y:auto;display:flex;flex-direction:column;align-items:center;z-index:1}._keyboard-shortcuts-overlay_1hs9n_11 header{width:100%;display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}:is(._keyboard-shortcuts-overlay_1hs9n_11 header) h2{font-size:1rem;font-weight:500;margin:0}@container player (width > 400px) and (height > 300px){:is(._keyboard-shortcuts-overlay_1hs9n_11 header) h2{font-size:1.5rem}}._keyboard-shortcuts-overlay_1hs9n_11 table{width:100%;max-width:54rem;padding:0;border-collapse:collapse}@container player (width > 400px) and (height > 300px){._keyboard-shortcuts-overlay_1hs9n_11 table{padding:2rem}}:is(._keyboard-shortcuts-overlay_1hs9n_11 table) tr{border-bottom:1px solid rgba(232 234 236 / .2)}:is(._keyboard-shortcuts-overlay_1hs9n_11 table) tbody tr:last-child{border-bottom:none}:is(._keyboard-shortcuts-overlay_1hs9n_11 table) th,:is(._keyboard-shortcuts-overlay_1hs9n_11 table) td{text-align:left;font-size:.75rem;line-height:1.5}@container player (width > 400px) and (height > 300px){:is(._keyboard-shortcuts-overlay_1hs9n_11 table) th,:is(._keyboard-shortcuts-overlay_1hs9n_11 table) td{font-size:.875rem}}@container player (width >= 720px) and (height > 300px){:is(._keyboard-shortcuts-overlay_1hs9n_11 table) th,:is(._keyboard-shortcuts-overlay_1hs9n_11 table) td{font-size:1rem}}._keyboard-shortcuts-overlay_1hs9n_11 ._screen-reader-content_1hs9n_76{width:.0625rem;height:.0625rem;margin:-.0625rem;padding:0;position:absolute;top:0;inset-inline-start:0;overflow:hidden;clip:rect(0 0 0 0);border:0}._controls-button_1hs9n_90{width:2.25rem;height:2.25rem;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-2);border:1px solid #d7dade;background:var(--controls-layout-bg-color)}._controls-button_1hs9n_90:focus-visible{outline:var(--focus-ring)}._keyboard-shortcuts-button_1hs9n_106{opacity:0;margin-right:auto}._keyboard-shortcuts-button_1hs9n_106:focus-visible{opacity:1;pointer-events:auto}._kebab-menu-button_1hs9n_116{opacity:1;pointer-events:auto;transition:opacity;transition-duration:0s;transition-timing-function:linear;transition-delay:0s;cursor:pointer;color:inherit}._kebab-menu-button_1hs9n_116 svg{flex-shrink:0}._kebab-menu-button_1hs9n_116:hover{background-color:var(--media-button-icon-hover-color, #e0e0e0)}._kebab-menu_1hs9n_116{display:flex;flex-direction:column;min-width:200px;pointer-events:auto;background-color:var(--settings-menu-bg-color, white);border-radius:var(--radius-2);padding-top:.25rem;padding-bottom:.25rem;z-index:1000;filter:drop-shadow(0 .125rem .1875rem rgba(0 0 0 / .5))}._kebab-menu-item_1hs9n_150{font-family:inherit;font-size:1rem;height:36px;text-rendering:geometricprecision;display:flex;align-items:center;gap:.5rem;padding:0 11px;border:none;outline:none;background-color:transparent;cursor:pointer;color:inherit;touch-action:manipulation;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}._kebab-menu-item_1hs9n_150:hover,._kebab-menu-item_1hs9n_150:focus{color:var(--settings-media-hover-color, white);background-color:var(--settings-media-hover-bg-color, rgb(43 122 188))}[data-media-player][data-playing]:not([data-hover]) ._kebab-menu-button_1hs9n_116:not(:focus-visible,[aria-expanded=true]),[data-media-player][data-fullscreen][data-playing]:not([data-controls]) ._kebab-menu-button_1hs9n_116:not(:focus-visible,[aria-expanded=true]){opacity:0;transition-duration:.2s}._close-button_1hs9n_189{background-color:transparent;border:none;cursor:pointer;color:#fff;display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:0;width:2.25rem;height:2.25rem}._arrow_1hs9n_203{fill:#fff}._captions_guhpx_1{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:var(--captions-flex-direction, column);align-items:center;padding:var(--spacing-3);transition:padding-bottom .1s ease-in-out;transition-delay:.3s}[data-fullscreen][data-controls]:not(:has([data-pins])) ._captions_guhpx_1{transition-delay:0s;padding-bottom:calc(var(--spacing-3) + var(--captions-fullscreen-offset))}._captions_guhpx_1[aria-hidden=true]{display:none}._captions_guhpx_1 [data-part=cue]{color:var(--captions-color, white);text-align:center;max-width:50ch;line-height:1.5;font-size:calc(clamp(.875rem,4cqh,2rem) * var(--captions-font-size-multiplier, 1));padding:0 var(--spacing-2);background-color:var(--captions-background-color, rgba(22 22 22 / .75));border-radius:var(--radius-2);white-space:pre-wrap}._comments-overlay_z1669_1{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--spacing-3);display:flex;align-items:end;pointer-events:none;transition:padding .1s ease-in-out;transition-delay:0s}._comments-container_z1669_12{display:flex;flex-direction:column;gap:.25rem;width:15rem;margin-right:3.4375rem}@container player (width >= 460px){._comments-container_z1669_12{width:23.4375rem}}@media (hover: none) and (orientation: portrait) and (max-width: 720px){[data-fullscreen] ._comments-overlay_z1669_1{justify-content:end}}[data-fullscreen][data-controls]:not(:has([data-pins])) ._comments-overlay_z1669_1{padding-bottom:calc(var(--spacing-3) + var(--comments-fullscreen-offset));transition-delay:.3s}._comment_z1669_1{display:grid;grid-template-areas:"avatar text";grid-template-columns:auto 1fr;align-items:center;padding:var(--spacing-1);gap:var(--spacing-1);border-radius:var(--radius-2);background-color:var(--comments-background-color);cursor:pointer;border:1px solid #666;pointer-events:auto}@container player (height > 540px){._comment_z1669_1{grid-template-areas:"text text" "avatar name"}}._comment-text_z1669_55{grid-area:text;color:var(--comments-color);font-size:var(--comments-font-size-small);line-height:1.5;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;line-clamp:1;-webkit-user-select:none;user-select:none}@container player (height >= 400px){._comment-text_z1669_55{-webkit-line-clamp:2;line-clamp:2;font-size:var(--comments-font-size-large)}}._comment-author-avatar_z1669_75{grid-area:avatar;box-sizing:border-box;display:inline-block;object-fit:cover;width:var(--comments-avatar-size-xss);height:var(--comments-avatar-size-xss);border-radius:50%;-webkit-user-select:none;user-select:none;pointer-events:none;background-color:#fff;contain:paint}@container player (height >= 400px){._comment-author-avatar_z1669_75{width:var(--comments-avatar-size-s);height:var(--comments-avatar-size-s)}}@container player (height > 540px){._comment-author-avatar_z1669_75{width:var(--comments-avatar-size-xs);height:var(--comments-avatar-size-xs)}}._comment-author-name_z1669_99{grid-area:name;color:var(--comments-author-color);font-size:var(--comments-font-size-large);font-weight:700;line-height:1.5;display:none}@container player (height > 540px){._comment-author-name_z1669_99{display:inline}}._settings-menu_mr1tt_1{display:flex;flex-direction:column;font-size:.875rem;line-height:1.25rem;background-color:var(--settings-menu-bg-color, white);padding-top:.25rem;padding-bottom:.25rem;border-radius:var(--radius-2);width:294px;z-index:1000;overflow:auto;max-height:80cqh;filter:drop-shadow(0 .125rem .1875rem rgba(0 0 0 / .5))}._settings-menu_mr1tt_1:focus-visible{outline:2px solid var(--settings-menu-focus-color, #0078d4)}@container player (width > 400px) and (height > 300px){._settings-menu_mr1tt_1{font-size:1rem;line-height:1.5rem}}@container player (height <= 300px){._settings-menu_mr1tt_1{max-height:calc(100% - 56px)}}@container player (width < 300px){._settings-menu_mr1tt_1{max-width:calc(100% - 8px)}}._menu-heading_mr1tt_37{display:block;margin:0 var(--spacing-2);padding-top:var(--spacing-2);padding-bottom:.5625rem;border-bottom:.0625rem solid #c7cdd1;font-weight:700}._check-icon_mr1tt_48,._trash-icon_mr1tt_49{width:1.25rem;height:1.25rem}._check-icon_mr1tt_48{visibility:hidden}._trash-icon_mr1tt_49{color:var(--warning-color)}._menu-item-multiline-label-wrapper_mr1tt_62{display:flex;flex-direction:column;text-align:start}._menu-item-secondary-label_mr1tt_68{display:block;color:var(--secondary-text-color);font-size:.875rem}._menu-item-label_mr1tt_74{display:block}._menu-item_mr1tt_62{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;outline:none;touch-action:manipulation;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;display:flex;align-items:center;padding:6px 11px;gap:var(--spacing-2);cursor:pointer;font-size:inherit;line-height:inherit;font-family:inherit;color:inherit}._menu-item_mr1tt_62:hover,._menu-item_mr1tt_62:focus-visible{color:var(--settings-media-hover-color, white);background-color:var(--settings-media-hover-bg-color, rgb(43 122 188))}:is(._menu-item_mr1tt_62:hover,._menu-item_mr1tt_62:focus-visible) ._trash-icon_mr1tt_49{color:var(--settings-media-hover-color)}._menu-item_mr1tt_62[aria-checked=true] ._check-icon_mr1tt_48{visibility:visible}._menu-item_mr1tt_62:hover ._menu-item-secondary-label_mr1tt_68{color:var(--secondary-text-hover-color)}._menu-back-button_mr1tt_115{display:flex;align-items:center;gap:var(--spacing-1);padding:6px 11px;color:var(--settings-submenu-color, #2d3b45);font-size:inherit;line-height:inherit;font-family:inherit;cursor:pointer;user-select:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;outline:none;border:none;touch-action:manipulation;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}._menu-back-button_mr1tt_115:hover,._menu-back-button_mr1tt_115:focus{color:var(--settings-media-hover-color, white);background-color:var(--settings-media-hover-bg-color, rgb(43 122 188))}._arrow_mr1tt_141{fill:#fff}._menu-hint_t7ne3_1{color:var(--settings-media-submenu-hint-color, #9ea6ad)}._menu-button_t7ne3_5{position:relative;display:flex;align-items:center;width:100%;gap:var(--spacing-1);padding:.375rem .6875rem;color:var(--settings-submenu-color, #2d3b45);font-size:inherit;line-height:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;outline:none;border:none;touch-action:manipulation;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;font-family:inherit}._menu-button_t7ne3_5:disabled{cursor:not-allowed}._menu-button_t7ne3_5:hover:not(:disabled),._menu-button_t7ne3_5:focus:not(:disabled){color:var(--settings-media-hover-color, white);background-color:var(--settings-media-hover-bg-color, rgb(43 122 188))}._menu-button_t7ne3_5:hover:not(:disabled) ._menu-hint_t7ne3_1,._menu-button_t7ne3_5:focus:not(:disabled) ._menu-hint_t7ne3_1{color:var(--settings-media-hover-color, white)}._menu-label_t7ne3_41{flex-grow:1;text-align:left}._menu-icon_t7ne3_46{width:1.125rem;height:1.125rem}._switch-track_7nhpo_1{position:relative;background-color:#e8e8e8;width:2.625rem;height:1.75rem;border-radius:.875rem;will-change:background-color;transition:background-color .2s;box-shadow:#d7dade 0 0 0 .0625rem inset;margin:-.25rem 0}@container player (width > 400px) and (height > 300px){._switch-track_7nhpo_1{margin:-.125rem 0}}._switch-thumb_7nhpo_17{background-color:#fff;width:1.5rem;height:1.5rem;border-radius:.75rem;transform:translate(.125rem,.125rem);box-shadow:#e8eaec 0 0 0 .0625rem inset;will-change:transform;transition:transform .2s;display:flex;align-items:center;justify-content:center}._switch-icon_7nhpo_31{width:.875rem;height:.875rem;color:var(--settings-submenu-color)}._switch-body_7nhpo_37{display:flex;align-items:center;border:none;background-color:transparent;text-align:left;font-family:inherit;gap:var(--spacing-1);padding:.375rem .6875rem;color:var(--settings-submenu-color);font-size:inherit;line-height:inherit;cursor:pointer;outline:none;touch-action:manipulation;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}._switch-body_7nhpo_37[aria-checked=true] ._switch-track_7nhpo_1{background-color:#03893d}._switch-body_7nhpo_37[aria-checked=true] ._switch-icon_7nhpo_31{color:#03893d}._switch-body_7nhpo_37[aria-checked=true] ._switch-thumb_7nhpo_17{transform:translate(1rem,.125rem)}._switch-body_7nhpo_37:hover,._switch-body_7nhpo_37:focus-visible{color:var(--settings-media-hover-color);background-color:var(--settings-media-hover-bg-color)}[aria-checked=true]:is(._switch-body_7nhpo_37:hover,._switch-body_7nhpo_37:focus-visible) ._switch-track_7nhpo_1{background-color:#e8e8e8}._switch-label_7nhpo_78{flex-grow:1}._menu-icon_7nhpo_82{width:1.125rem;height:1.125rem}._feedback-overlay_14jdq_1{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;padding:var(--spacing-4);flex-direction:column;justify-content:center;align-items:center;-webkit-user-select:none;user-select:none;pointer-events:none}._feedback-message_14jdq_14{font-weight:300;position:absolute;top:10%;display:flex;justify-content:center;align-items:center;padding:var(--spacing-2);background-color:var(--feedback-message-bg-color, black);color:var(--feedback-message-color, white);border-radius:var(--radius-2);font-size:1rem;line-height:1.5;opacity:.75}._feedback-icon_14jdq_30{box-sizing:border-box;display:inline-flex;color:var(--feedback-icon-color, white);padding:var(--spacing-3);width:4.5rem;height:4.5rem;background-color:var(--feedback-icon-bg-color, black);border-radius:var(--radius-rounded);animation:_feedback-icon-animation_14jdq_1 .2s linear;animation-fill-mode:forwards;will-change:transform,opacity}._feedback-icon_14jdq_30:has(.right){align-self:end}._feedback-icon_14jdq_30:has(.left){align-self:start}._feedback-icon_14jdq_30>svg{width:100%;height:100%}@keyframes _feedback-icon-animation_14jdq_1{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:.5}}@media (max-width: 425px){[data-fullscreen] ._full-screen-button_1xm32_2{display:none}}[data-media-player][data-view-type=audio] ._full-screen-button_1xm32_2{display:none}._gestures-container_1fn3b_1{display:contents}._gesture_1fn3b_1{position:absolute;top:0;right:0;bottom:0;left:0}[data-fullscreen] ._gesture_1fn3b_1{top:3.625rem}button._play-pause-button_vj8da_1{border:none;background:none}@keyframes _appear_xamuy_1{0%{width:0;margin-left:0}to{width:400px;margin-left:1.5rem}}._studio-player-sidebar_xamuy_13{width:400px;overflow-x:hidden;margin-left:1.5rem;display:flex;padding:var(--spacing-1);overflow-y:auto;border-radius:var(--radius-3);border:1px solid var(--sidebar-border-color);background:var(--settings-menu-bg-color);animation:_appear_xamuy_1 .3s ease-out;transition:width .3s ease-out,margin-left .3s ease-out}._studio-player-sidebar_xamuy_13[data-open=false]{width:0;margin-left:0}._small-layout-overlay_cmaq3_1{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;visibility:hidden;align-items:center;justify-content:center}@container player (max-width: 425px){._small-layout-overlay_cmaq3_1{visibility:visible}}._small-layout-button_cmaq3_14{width:5rem;height:5rem;background-color:#1616164d;display:flex;align-items:center;justify-content:center;border-radius:50%}._small-layout-icon-play_cmaq3_24,._small-layout-icon-pause_cmaq3_30{width:3rem;height:3rem;color:#fff}._small-layout-timestamp_cmaq3_36{position:absolute;left:0;bottom:0;margin:.5rem;display:flex;background:#000c;color:#fff;padding:.375rem .75rem;border-radius:var(--radius-2)}._full-screen-close-icon_cmaq3_49{display:none}[data-fullscreen] ._full-screen-close-icon_cmaq3_49{background-color:transparent;border:none;display:flex;align-items:center;justify-content:center;position:absolute;top:0;left:0;padding:1.25rem;color:#fff;cursor:pointer;-webkit-user-select:none;user-select:none}[data-fullscreen][data-playing] ._full-screen-close-icon_cmaq3_49,[data-media-player][data-playing] ._small-layout-button_cmaq3_14,[data-media-player][data-playing] ._small-layout-timestamp_cmaq3_36{animation:_fade-out_cmaq3_1 1s;animation-delay:.5s;animation-fill-mode:forwards}@keyframes _fade-out_cmaq3_1{0%{opacity:1}to{opacity:0}}@keyframes _fade-in_c4bw5_1{0%{opacity:0}to{opacity:1}}@keyframes _appear_c4bw5_1{to{transform:scaleX(1)}}._tabs_c4bw5_17{flex:1}._tabs-list_c4bw5_21{display:flex;list-style:none;padding:0;margin:0;border-bottom:1px solid #8d959f}._tabs-tab_c4bw5_29{padding:1rem 1.25rem;cursor:pointer;background-color:transparent;border:none;font-family:inherit;font-size:1rem;line-height:1;position:relative}._tabs-tab_c4bw5_29:before{pointer-events:none;content:"";position:absolute;border:.125rem solid var(--focus-outline-color, #2b7abc);border-radius:.25rem;top:.5rem;right:.5rem;bottom:.5rem;left:.5rem;transition:all .2s;transform:scale(.8);opacity:0}._tabs-tab_c4bw5_29:focus-visible{outline:none}._tabs-tab_c4bw5_29:focus-visible:before{opacity:1;transform:scale(1)}._tabs-tab_c4bw5_29[aria-selected=true]:after{content:"";position:absolute;bottom:0;left:0;display:block;height:.25rem;width:100%;background-color:var(--focus-outline-color, #2b7abc);transform:scaleX(0);animation:_appear_c4bw5_1 .2s ease-out forwards}._tabs-panel_c4bw5_77{padding-top:var(--spacing-1, .75rem)}._tabs-panel_c4bw5_77:not([hidden]){animation:_fade-in_c4bw5_1 .3s ease-in}._time-indicator_1uygf_1{display:flex;color:#586874;-webkit-user-select:none;user-select:none}[data-fullscreen] ._time-indicator_1uygf_1,[data-darkmode=true] ._time-indicator_1uygf_1{color:#fff}._comment-markers_2yz4f_1{display:flex;position:relative;width:100%;height:.375rem;-webkit-user-select:none;user-select:none;pointer-events:none;margin-top:.375rem}._comment-marker_2yz4f_1{position:absolute;height:100%;width:.375rem;background-color:var(--comments-indicator-color);border-radius:50%}[data-darkmode=true] ._comment-marker_2yz4f_1,[data-fullscreen] ._comment-marker_2yz4f_1{background-color:var(--comments-indicator-color-darkmode)}._timeline-wrapper_2yz4f_24,._timeline-wrapper-compact_2yz4f_25{position:relative;display:flex;flex-direction:column;align-items:center;grid-area:slider}._timeline-wrapper_2yz4f_24{padding:0 var(--spacing-1)}._timeline-wrapper-compact_2yz4f_25{padding:0 var(--spacing-3)}._timeline-wrapper-compact_2yz4f_25:has(._comment-markers_2yz4f_1){margin-top:-.375rem}._timeline-wrapper-compact_2yz4f_25 ._comment-markers_2yz4f_1{margin-top:0}@container player (width > 400px) and (height > 300px){._timeline-wrapper-compact_2yz4f_25{padding:0 var(--spacing-3)}}._track_2yz4f_53{width:100%;height:.25rem;will-change:height;position:relative;background-color:var(--timeline-track-bg-color, #ccd0d2);border-radius:var(--radius-1);contain:strict;transition:height .15s,border-radius .15s}._thumb_2yz4f_66{position:absolute;width:1.125rem;height:1.125rem;background-color:var(--timeline-thumb-color, #2b7abc);border-radius:var(--radius-rounded);cursor:pointer;opacity:0;transform:translate(-50%) translateZ(0);transition:opacity .15s ease-in;left:var(--slider-fill);will-change:left}._root_2yz4f_80{display:inline-flex;width:100%;height:1.25rem;position:relative;align-items:center;contain:layout style;outline:none;cursor:pointer;user-select:none;touch-action:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}._root_2yz4f_80[data-active] ._track_2yz4f_53{border-radius:var(--radius-2);height:.625rem}._root_2yz4f_80[data-focus] ._track_2yz4f_53{outline:var(--focus-ring);outline-offset:1px;border-radius:2px}._root_2yz4f_80[data-active] ._thumb_2yz4f_66{opacity:1}._track-inner_2yz4f_110{position:absolute;will-change:width;height:100%}._progress_2yz4f_116{z-index:0;width:var(--slider-progress, 0%);background-color:var(--timeline-track-progress-bg-color, #adb2b6)}._track-fill_2yz4f_122{z-index:1;width:var(--slider-fill, 0%);background-color:var(--timeline-track-fill-bg-color, #2b7abc)}:is([data-fullscreen] ._root_2yz4f_80,[data-darkmode=true] ._root_2yz4f_80) ._track_2yz4f_53{background-color:#333}:is([data-fullscreen] ._root_2yz4f_80,[data-darkmode=true] ._root_2yz4f_80) ._progress_2yz4f_116{background-color:#666}._pins_2yz4f_139{display:flex;position:relative;height:2rem;width:100%;-webkit-user-select:none;user-select:none;margin-top:.25rem}._pin-button_2yz4f_148{display:flex;background-color:transparent;border:none;padding:0;position:absolute;transform:translate(-50%);cursor:pointer;transition:transform .2s ease-out;touch-action:manipulation;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}._pin-button_2yz4f_148:hover,._pin-button_2yz4f_148:focus-visible{transform:translate(-50%) scale(1.25);z-index:1}._pin-button_2yz4f_148:focus-visible{outline:var(--focus-ring);border-radius:var(--radius-2)}._annotation-pin_2yz4f_174{fill:var(--pin-color-1);stroke:var(--pin-color-2)}._annotation-pin_2yz4f_174:focus-visible{outline:var(--focus-ring)}._quiz-pin_2yz4f_183{fill:var(--pin-color-2);stroke:var(--controls-layout-bg-color)}._quiz-pin_2yz4f_183:focus-visible{outline:var(--focus-ring)}._annotation-pin-child_2yz4f_192{fill:var(--pin-color-3)}._quiz-pin-child_2yz4f_196{fill:#fff;font-size:.875rem}._interactive-pin-container_2yz4f_201{position:absolute;top:0;right:0;bottom:0;left:0;padding:0 var(--spacing-2);pointer-events:none}._interactive-pin-wrapper_2yz4f_208{position:relative;width:100%;height:100%}._interactive-pin-icon_2yz4f_214{transform-box:fill-box;transform-origin:center;transition:transform .2s ease-out}._interactive-pin-icon_2yz4f_214[data-open=true]{transform:rotate(45deg)}._interactive-pin_2yz4f_201{filter:drop-shadow(0 3px 6px rgba(0 0 0 / .16)) drop-shadow(0 3px 6px rgba(0 0 0 / .1))}._interactive-pin_2yz4f_201>._bg_2yz4f_228{fill:var(--timeline-thumb-color)}._interactive-pin_2yz4f_201>._symbol_2yz4f_232{stroke:var(--controls-layout-bg-color)}._interactive-pin-button_2yz4f_237{position:absolute;cursor:pointer;transform:translate(-50%);background-color:transparent;border:none;padding:0;display:flex;touch-action:manipulation;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;pointer-events:auto;top:-8px}:is(._interactive-pin-button_2yz4f_237:hover,._interactive-pin-button_2yz4f_237:focus-visible) ._interactive-pin_2yz4f_201>._bg_2yz4f_228{fill:#225f92}._interactive-pin-button_2yz4f_237:focus-visible{outline:var(--focus-ring);border-radius:var(--radius-2)}._interactive-pin-menu_2yz4f_266{box-sizing:border-box;display:flex;flex-direction:column;gap:.25rem;background-color:var(--settings-menu-bg-color, white);padding:.75rem .5rem;border-radius:var(--radius-2);width:200px;z-index:1000;pointer-events:auto;filter:drop-shadow(0 .125rem .1875rem rgba(0 0 0 / .5))}._interactive-pin-menu_2yz4f_266:focus-visible{outline:var(--focus-ring)}._interactive-pin-menu-item_2yz4f_287{-webkit-user-select:none;user-select:none;font-family:inherit;font-size:1rem;text-rendering:geometricprecision;display:flex;align-items:center;gap:.25rem;color:var(--pin-color-3);padding:.375rem .625rem;border-radius:var(--radius-2);border:1px solid #d7dade;background-color:var(--pin-color-1);cursor:pointer}._interactive-pin-menu-item_2yz4f_287:hover{background-color:#e8eaec}._interactive-pin-menu-item_2yz4f_287:focus-visible{outline:var(--focus-ring)}._arrow_2yz4f_313{fill:#fff}._tooltip_2yz4f_317{background-color:var(--tooltip-bg-color);color:#fff;padding:.375rem .75rem;border-radius:var(--radius-2);font-size:.875rem;pointer-events:none}._tooltip-arrow_2yz4f_326{fill:var(--tooltip-bg-color)}._wrapper_trdhg_1{display:flex;align-items:center}._track_trdhg_6{width:100%;height:.25rem;will-change:height;background-color:var(--volume-track-bg-color, #ccd0d2);border-radius:var(--radius-1);contain:strict;transition:height .15s,border-radius .15s}._thumb_trdhg_18{position:absolute;width:.875rem;height:.875rem;background-color:var(--volume-thumb-bg-color, #2d3b45);border-radius:var(--radius-rounded);cursor:pointer;opacity:0;transform:translate(-50%) translateZ(0);transition:opacity .15s ease-in;left:var(--slider-fill);will-change:left}._track-fill_trdhg_32{width:var(--slider-fill, 0%);will-change:width;height:100%;background-color:var(--volume-track-fill-bg-color, #2d3b45)}:is([data-fullscreen],[data-darkmode=true]) ._track_trdhg_6{background-color:#666}:is([data-fullscreen],[data-darkmode=true]) ._track-fill_trdhg_32,:is([data-fullscreen],[data-darkmode=true]) ._thumb_trdhg_18{background-color:#f5f5f5}._root_trdhg_51{display:inline-flex;height:1.25rem;align-items:center;contain:layout style;cursor:pointer;user-select:none;touch-action:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;width:0;will-change:width,margin;transition:all .15s;box-sizing:border-box}@media (max-width: 425px) and (hover: none){._root_trdhg_51{display:none}}._root_trdhg_51[data-active] ._track_trdhg_6{border-radius:.125rem;height:.3125rem}._root_trdhg_51[data-focus]{outline:none}._root_trdhg_51[data-focus] ._track_trdhg_6{outline:var(--focus-ring);outline-offset:1px;border-radius:2px}._root_trdhg_51[data-active] ._thumb_trdhg_18{opacity:1}._wrapper_trdhg_1:hover [data-media-volume-slider],[data-media-volume-slider][data-active]{margin-left:.5rem;width:4rem}._root_1y8fp_1{background-color:var(--controls-layout-bg-color, #f5f5f5);padding:var(--controls-layout-padding-small);box-sizing:border-box;display:grid;align-items:center;border-bottom-left-radius:var(--radius-3);border-bottom-right-radius:var(--radius-3)}@container player (width > 400px) and (height > 300px){._root_1y8fp_1{padding:var(--controls-layout-padding-medium)}}[data-fullscreen] ._root_1y8fp_1{border-bottom-left-radius:0;border-bottom-right-radius:0}._normal_1y8fp_22{grid-template-columns:auto 1fr auto;grid-template-areas:"slider slider slider" "left-controls indicators right-controls"}@container player (width > 400px) and (height > 300px){._normal_1y8fp_22{padding-top:0}}._compact_1y8fp_33{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"left-controls slider right-controls"}@container player (width > 425px){._compact_1y8fp_33{grid-template-columns:auto auto minmax(0,1fr) auto;grid-template-areas:"left-controls indicators slider right-controls"}}[data-fullscreen] ._root_1y8fp_1,._root_1y8fp_1[data-darkmode=true]{background-color:#000;padding:var(--controls-layout-padding-large)}[data-fullscreen] ._root_1y8fp_1[data-controls-layout=normal]{padding-top:var(--controls-layout-padding-small)}[data-fullscreen] ._root_1y8fp_1:not(:has([data-pins])){position:fixed;bottom:0;width:100%;opacity:0;transition:opacity .3s ease-in-out}[data-fullscreen][data-controls] ._root_1y8fp_1,[data-fullscreen]:has([role=dialog]) ._root_1y8fp_1{opacity:1}._left-controls_1y8fp_66{display:flex;grid-area:left-controls}@container player (width > 400px) and (height > 300px){._left-controls_1y8fp_66{gap:.5rem}}._right-controls_1y8fp_75{display:flex;grid-area:right-controls}@container player (width > 400px) and (height > 300px){._right-controls_1y8fp_75{gap:.5rem}}._indicators_1y8fp_84{grid-area:indicators;font-size:1rem;overflow:hidden;display:none;margin-left:.75rem}@container player (width > 425px){._indicators_1y8fp_84{display:block}}@container (height > 300px){._indicators_1y8fp_84{margin-left:1rem}}.studio-player-main-layout{--volume-track-bg-color: #ccd0d2;--volume-track-fill-bg-color: #2d3b45;--volume-thumb-bg-color: #2d3b45;--feedback-message-bg-color: black;--feedback-message-color: white;--feedback-icon-color: white;--feedback-icon-bg-color: black;--timeline-track-bg-color: #ccd0d2;--timeline-track-progress-bg-color: #adb2b6;--timeline-track-fill-bg-color: #2b7abc;--timeline-progress-bg-color: #adb2b6;--timeline-thumb-color: #2b7abc;--settings-menu-bg-color: white;--settings-submenu-color: #2d3b45;--settings-media-hover-color: white;--settings-media-hover-bg-color: rgb(43 122 188);--settings-media-submenu-hint-color: var(--settings-submenu-color);--captions-background-color: rgba(22 22 22 / .75);--captions-color: white;--comments-background-color: rgba(0 0 0 / .8);--comments-color: white;--comments-font-size-small: .75rem;--comments-font-size-normal: .875rem;--comments-font-size-large: 1rem;--comments-author-color: white;--comments-indicator-color: #64707a;--comments-indicator-color-darkmode: #868686;--comments-avatar-size-xss: 1.25rem;--comments-avatar-size-xs: 1.875rem;--comments-avatar-size-s: 2.5rem;--controls-layout-bg-color: #f5f5f5;--controls-layout-padding-small: .25rem;--controls-layout-padding-medium: .5rem;--controls-layout-padding-large: .75rem;--sidebar-border-color: #d7dade;--media-button-icon-color: #2d3b45;--media-button-icon-hover-color: #e0e0e0;--focus-outline-color: #2b7abc;--spacing-1: .5rem;--spacing-2: .625rem;--spacing-3: 1rem;--spacing-4: 2rem;--radius-1: .0625rem;--radius-2: .25rem;--radius-3: .625rem;--radius-rounded: 50%;--media-button-area-size-small: 2rem;--media-button-area-size-medium: 2.5rem;--media-button-icon-size-small: 1rem;--media-button-icon-size-medium: 1.25rem;--action-buttons-color: #0374b5;--action-buttons-hover-color: #235f93;--action-buttons-border-color: #025483;--warning-color: #e62429;--pin-color-1: #f2f4f4;--pin-color-2: #586874;--pin-color-3: #273540;--pin-light-color: #9ea6ad;--tooltip-bg-color: #334451;--focus-ring: 2px solid var(--focus-outline-color);--secondary-text-color: #586874;--secondary-text-hover-color: #f2f4f4;display:flex;height:100%;font-family:Lato,sans-serif}[data-media-player]{outline:none;position:relative;display:grid;container:player / size;width:100%;height:100%;grid-template-rows:1fr auto;overflow:hidden}[data-media-player]:focus-visible{outline:var(--focus-ring)}[data-media-provider]{display:flex;position:relative;background-color:#000;contain:paint;border-top-left-radius:var(--radius-3);border-top-right-radius:var(--radius-3)}[data-media-provider] video,[data-media-provider] iframe{width:100%;height:100%;object-fit:contain;position:absolute}[data-fullscreen] [data-media-provider]{border-top-left-radius:0;border-top-right-radius:0}.audio-layout-wrapper{display:flex;align-items:center;justify-content:center;position:relative;background-color:var(--controls-layout-bg-color);width:100%;border-top-left-radius:var(--radius-3);border-top-right-radius:var(--radius-3)}.controls-button{background-color:transparent;border:none;border-radius:var(--radius-2);cursor:pointer;margin:0;display:flex;align-items:center;justify-content:center;transition:background-color .2s;width:var(--media-button-area-size-small);height:var(--media-button-area-size-small)}.controls-button[data-hover],.controls-button:hover{background-color:var(--media-button-icon-hover-color, #e0e0e0)}.controls-button:focus-visible,.controls-button[data-focus]{outline:var(--focus-ring)}.controls-button-icon{color:var(--media-button-icon-color);min-width:var(--media-button-icon-size-small);min-height:var(--media-button-icon-size-small)}@container player (width > 400px) and (height > 300px){.controls-button-icon{min-width:var(--media-button-icon-size-medium);min-height:var(--media-button-icon-size-medium)}}[data-fullscreen] .controls-button{width:var(--media-button-area-size-medium);height:var(--media-button-area-size-medium)}[data-fullscreen]:not([data-controls]){cursor:none}:is([data-fullscreen],[data-darkmode=true]) .controls-button-icon{color:#fff}:is([data-fullscreen],[data-darkmode=true]) .controls-button[data-hover],:is([data-fullscreen],[data-darkmode=true]) .controls-button:hover{background-color:#ffffff26}.icon-rotate{transition:transform .2s ease-out}.controls-button[aria-expanded=true] .icon-rotate{transform:rotate(60deg);transition:transform .1s ease-in}.vds-blocker{top:0;right:0;bottom:0;left:0;position:absolute;pointer-events:none}