var $ = Object.defineProperty;
var b = (i) => {
  throw TypeError(i);
};
var N = (i, t, e) => t in i ? $(i, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : i[t] = e;
var m = (i, t, e) => N(i, typeof t != "symbol" ? t + "" : t, e), E = (i, t, e) => t.has(i) || b("Cannot " + e);
var s = (i, t, e) => (E(i, t, "read from private field"), e ? e.call(i) : t.get(i)), r = (i, t, e) => t.has(i) ? b("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(i) : t.set(i, e), c = (i, t, e, n) => (E(i, t, "write to private field"), n ? n.call(i, e) : t.set(i, e), e), p = (i, t, e) => (E(i, t, "access private method"), e);
import { s as U, u as V, v as A, w as q, x as C, l as F, D as Y, E as _, T as j, g as v } from "./install-CGlpWYKn.js";
import { H as z, a as B } from "./vidstack-Bq6c3Bam-ChR_jRff.js";
var P, f, k, D, H;
class G {
  constructor(t, e) {
    r(this, k);
    r(this, P);
    r(this, f);
    c(this, P, t), c(this, f, e), t.textTracks.onaddtrack = p(this, k, D).bind(this), C(p(this, k, H).bind(this));
  }
}
P = new WeakMap(), f = new WeakMap(), k = new WeakSet(), D = function(t) {
  const e = t.track;
  if (!e || J(s(this, P), e)) return;
  const n = new j({
    id: e.id,
    kind: e.kind,
    label: e.label ?? "",
    language: e.language,
    type: "vtt"
  });
  n[v.native] = { track: e }, n[v.readyState] = 2, n[v.nativeHLS] = !0;
  let a = 0;
  const I = (O) => {
    if (e.cues)
      for (let w = a; w < e.cues.length; w++)
        n.addCue(e.cues[w], O), a++;
  };
  I(t), e.oncuechange = I, s(this, f).textTracks.add(n, t), n.setMode(e.mode, t);
}, H = function() {
  var t;
  s(this, P).textTracks.onaddtrack = null;
  for (const e of s(this, f).textTracks) {
    const n = (t = e[v.native]) == null ? void 0 : t.track;
    n != null && n.oncuechange && (n.oncuechange = null);
  }
};
function J(i, t) {
  return Array.from(i.children).find((e) => e.track === t);
}
var d, y, x, S, L, T;
class K {
  constructor(t, e) {
    r(this, x);
    r(this, d);
    r(this, y);
    r(this, T, (t, e) => {
      s(this, y).notify("picture-in-picture-change", t, e);
    });
    c(this, d, t), c(this, y, e), new _(t).add("enterpictureinpicture", p(this, x, S).bind(this)).add("leavepictureinpicture", p(this, x, L).bind(this));
  }
  get active() {
    return document.pictureInPictureElement === s(this, d);
  }
  get supported() {
    return A(s(this, d));
  }
  async enter() {
    return s(this, d).requestPictureInPicture();
  }
  exit() {
    return document.exitPictureInPicture();
  }
}
d = new WeakMap(), y = new WeakMap(), x = new WeakSet(), S = function(t) {
  s(this, T).call(this, !0, t);
}, L = function(t) {
  s(this, T).call(this, !1, t);
}, T = new WeakMap();
var l, g, o, M, R;
class Q {
  constructor(t, e) {
    r(this, M);
    r(this, l);
    r(this, g);
    r(this, o, "inline");
    c(this, l, t), c(this, g, e), F(t, "webkitpresentationmodechanged", p(this, M, R).bind(this));
  }
  get mode() {
    return s(this, o);
  }
  get supported() {
    return V(s(this, l));
  }
  async setPresentationMode(t) {
    s(this, o) !== t && s(this, l).webkitSetPresentationMode(t);
  }
}
l = new WeakMap(), g = new WeakMap(), o = new WeakMap(), M = new WeakSet(), R = function(t) {
  var n;
  const e = s(this, o);
  c(this, o, s(this, l).webkitPresentationMode), (n = s(this, g).player) == null || n.dispatch(
    new Y("video-presentation-change", {
      detail: s(this, o),
      trigger: t
    })
  ), ["fullscreen", "picture-in-picture"].forEach((a) => {
    (s(this, o) === a || e === a) && s(this, g).notify(`${a}-change`, s(this, o) === a, t);
  });
};
var u;
class W {
  constructor(t) {
    r(this, u);
    c(this, u, t);
  }
  get active() {
    return s(this, u).mode === "fullscreen";
  }
  get supported() {
    return s(this, u).supported;
  }
  async enter() {
    s(this, u).setPresentationMode("fullscreen");
  }
  async exit() {
    s(this, u).setPresentationMode("inline");
  }
}
u = new WeakMap();
var h;
class X {
  constructor(t) {
    r(this, h);
    c(this, h, t);
  }
  get active() {
    return s(this, h).mode === "picture-in-picture";
  }
  get supported() {
    return s(this, h).supported;
  }
  async enter() {
    s(this, h).setPresentationMode("picture-in-picture");
  }
  async exit() {
    s(this, h).setPresentationMode("inline");
  }
}
h = new WeakMap();
class it extends z {
  constructor(e, n) {
    super(e, n);
    m(this, "$$PROVIDER_TYPE", "VIDEO");
    m(this, "airPlay");
    m(this, "fullscreen");
    m(this, "pictureInPicture");
    U(() => {
      if (this.airPlay = new B(e, n), V(e)) {
        const a = new Q(e, n);
        this.fullscreen = new W(a), this.pictureInPicture = new X(a);
      } else A(e) && (this.pictureInPicture = new K(e, n));
    }, this.scope);
  }
  get type() {
    return "video";
  }
  setup() {
    super.setup(), q(this.video) && new G(this.video, this.ctx), this.ctx.textRenderers.attachVideo(this.video), C(() => {
      this.ctx.textRenderers.attachVideo(null);
    }), this.type === "video" && this.ctx.notify("provider-setup", this);
  }
  /**
   * The native HTML `<video>` element.
   *
   * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement}
   */
  get video() {
    return this.media;
  }
}
export {
  it as VideoProvider
};
