@vindral/web-sdk 4.3.3-13-g98296cbe4 → 4.3.3-14-g20c10535d

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.
@@ -3459,9 +3459,7 @@ var ds = (e) => {
3459
3459
  }), e(this, "attach", (e) => {
3460
3460
  this.element.remove(), e.appendChild(this.element);
3461
3461
  }), e(this, "load", () => {
3462
- this.timers.setInterval(this.onPlayPause, 500), this.timers.setTimeout(() => {
3463
- this.timers.setInterval(this.onBufferStateChange, 500);
3464
- }, 1e4);
3462
+ this.timers.setInterval(this.onPlayPause, 500), this.onBufferStateChange(), this.timers.setInterval(this.onBufferStateChange, 500);
3465
3463
  }), e(this, "unload", () => {
3466
3464
  this.timers.unload(), this.removeEventListeners();
3467
3465
  }), e(this, "getPlaybackRate", () => this.element.playbackRate), e(this, "getPlaybackState", () => this.element.readyState >= this.element.HAVE_FUTURE_DATA ? "playing" : "buffering"), e(this, "getMediaElementState", () => this.element.paused ? "paused" : "playing"), e(this, "setPlaybackRate", (e) => void (this.element.playbackRate = e)), e(this, "getBuffer", () => {
@@ -9839,12 +9837,12 @@ var vv, yv = () => ({
9839
9837
  general: yv()
9840
9838
  }), xv = class {
9841
9839
  constructor(t, n, r) {
9842
- e(this, "minBufferFullnessLengthForRegression", 6), e(this, "logger", void 0), e(this, "emitter", void 0), e(this, "timers", j.create()), e(this, "metrics", bv()), e(this, "bufferFullness", new v(30)), e(this, "bufferFullnessRegression", void 0), e(this, "currentLevel", void 0), e(this, "isSuspended", !1), e(this, "_fatalQosCount", 0), e(this, "targetBufferTime", 0), e(this, "renditionLevelSource", void 0), e(this, "qualityIndexOrder", []), e(this, "hasAsserted", !1), e(this, "load", () => {
9843
- this.emitter.on("playback state", this.onPlaybackState), this.emitter.on("buffer fullness", this.onBufferFullness), this.emitter.on("rendition level changed", this.onRenditionLevelChanged), this.emitter.on("video decode rate", this.onVideoDecodeRate), this.emitter.on("target buffer time", this.onTargetBufferTime);
9840
+ e(this, "minBufferFullnessLengthForRegression", 6), e(this, "logger", void 0), e(this, "emitter", void 0), e(this, "timers", j.create()), e(this, "metrics", bv()), e(this, "bufferFullness", new v(30)), e(this, "bufferFullnessRegression", void 0), e(this, "currentLevel", void 0), e(this, "isSuspended", !1), e(this, "_fatalQosCount", 0), e(this, "targetBufferTime", 0), e(this, "renditionLevelSource", void 0), e(this, "qualityIndexOrder", []), e(this, "hasPlayedInSession", !1), e(this, "hasAsserted", !1), e(this, "load", () => {
9841
+ this.emitter.on("playback state", this.onPlaybackState), this.emitter.on("buffer fullness", this.onBufferFullness), this.emitter.on("rendition level changed", this.onRenditionLevelChanged), this.emitter.on("video decode rate", this.onVideoDecodeRate), this.emitter.on("target buffer time", this.onTargetBufferTime), this.emitter.on("connection state", this.onConnectionState);
9844
9842
  }), e(this, "unload", () => {
9845
- this.emitter.off("playback state", this.onPlaybackState), this.emitter.off("buffer fullness", this.onBufferFullness), this.emitter.off("rendition level changed", this.onRenditionLevelChanged), this.emitter.off("video decode rate", this.onVideoDecodeRate), this.emitter.off("target buffer time", this.onTargetBufferTime), this.suspend();
9843
+ this.emitter.off("playback state", this.onPlaybackState), this.emitter.off("buffer fullness", this.onBufferFullness), this.emitter.off("rendition level changed", this.onRenditionLevelChanged), this.emitter.off("video decode rate", this.onVideoDecodeRate), this.emitter.off("target buffer time", this.onTargetBufferTime), this.emitter.off("connection state", this.onConnectionState), this.suspend();
9846
9844
  }), e(this, "suspend", () => {
9847
- this.isSuspended = !0, this.timers.unload(), this.stopBuffering(), this.unsetActive();
9845
+ this.isSuspended = !0, this.timers.unload(), this.stopBuffering(), this.unsetActive(), this.hasPlayedInSession = !1;
9848
9846
  }), e(this, "unsuspend", () => {
9849
9847
  this.isSuspended = !1, this.currentLevel && this.setActive();
9850
9848
  }), e(this, "fatalQosGraceTime", () => 1e4 * (this.fatalQosCount + 1)), e(this, "incrementFatalQosCount", () => {
@@ -9925,12 +9923,14 @@ var vv, yv = () => ({
9925
9923
  currentLevel: this.currentLevel
9926
9924
  }), e) {
9927
9925
  case "playing":
9928
- this.stopBuffering();
9926
+ this.hasPlayedInSession = !0, this.stopBuffering();
9929
9927
  break;
9930
9928
  case "buffering":
9931
- this.isSuspended || this.startBuffering();
9929
+ !this.isSuspended && this.hasPlayedInSession && this.startBuffering();
9932
9930
  break;
9933
9931
  }
9932
+ }), e(this, "onConnectionState", (e) => {
9933
+ e !== "connected" && this.isSuspended && (this.hasPlayedInSession = !1);
9934
9934
  }), e(this, "onVideoDecodeRate", (e) => {
9935
9935
  var t;
9936
9936
  if (this.metrics.general.decodeRate = e, !this.currentLevel) return;
@@ -10820,10 +10820,10 @@ var Uv = class {
10820
10820
  return this.inFlight.set(e, o), o;
10821
10821
  }), this.logger = n;
10822
10822
  }
10823
- }, sy = /* @__PURE__ */ new WeakMap(), cy = /* @__PURE__ */ new WeakMap(), ly = /* @__PURE__ */ new WeakMap(), uy = class n extends ge {
10823
+ }, sy = 1e4, cy = /* @__PURE__ */ new WeakMap(), ly = /* @__PURE__ */ new WeakMap(), uy = /* @__PURE__ */ new WeakMap(), dy = class n extends ge {
10824
10824
  constructor(r) {
10825
10825
  var i, a;
10826
- super(), i = this, e(this, "pictureInPicture", void 0), e(this, "drm", void 0), e(this, "browser", rt()), e(this, "options", void 0), e(this, "element", void 0), e(this, "playbackSource", void 0), e(this, "emitter", new ge()), e(this, "logger", void 0), e(this, "modules", void 0), e(this, "clientIp", void 0), e(this, "sessionId", void 0), e(this, "clientId", mn()), e(this, "_channels", []), e(this, "createdAt", performance.now()), e(this, "offscreenCanvasElement", void 0), e(this, "webCodecsRenditionSupport", void 0), e(this, "hasCalledConnect", !1), e(this, "latestEmittedLanguages", []), e(this, "wakeLock", void 0), e(this, "pool", new xe(n.MAX_POOL_SIZE)), e(this, "userAgentInformation", new pn()), e(this, "encryptedMediaExtensions", void 0), y(this, sy, 0), y(this, cy, []), e(this, "sampleProcessingSesssions", /* @__PURE__ */ new Map()), e(this, "sizes", /* @__PURE__ */ new Map()), e(this, "isSuspended", !0), e(this, "disconnectTimeout", void 0), e(this, "offscreenSubtitleInterval", void 0), y(this, ly, void 0), e(this, "attach", (e) => {
10826
+ super(), i = this, e(this, "pictureInPicture", void 0), e(this, "drm", void 0), e(this, "browser", rt()), e(this, "options", void 0), e(this, "element", void 0), e(this, "playbackSource", void 0), e(this, "emitter", new ge()), e(this, "logger", void 0), e(this, "modules", void 0), e(this, "clientIp", void 0), e(this, "sessionId", void 0), e(this, "clientId", mn()), e(this, "_channels", []), e(this, "createdAt", performance.now()), e(this, "offscreenCanvasElement", void 0), e(this, "webCodecsRenditionSupport", void 0), e(this, "hasCalledConnect", !1), e(this, "latestEmittedLanguages", []), e(this, "wakeLock", void 0), e(this, "pool", new xe(n.MAX_POOL_SIZE)), e(this, "userAgentInformation", new pn()), e(this, "encryptedMediaExtensions", void 0), y(this, cy, 0), y(this, ly, []), e(this, "sampleProcessingSesssions", /* @__PURE__ */ new Map()), e(this, "sizes", /* @__PURE__ */ new Map()), e(this, "isSuspended", !0), e(this, "disconnectTimeout", void 0), e(this, "offscreenSubtitleInterval", void 0), y(this, uy, void 0), e(this, "attach", (e) => {
10827
10827
  var t;
10828
10828
  (t = this.wakeLock) == null || t.attach(e), e.appendChild(this.element);
10829
10829
  }), e(this, "setElement", (e) => {
@@ -10906,20 +10906,20 @@ var Uv = class {
10906
10906
  }), e(this, "updateTextTracks", (e) => {
10907
10907
  let t = e.filter((e) => e.codec === "webvtt");
10908
10908
  t.forEach((e) => {
10909
- if (!x(cy, this).find((t) => t.language === e.language)) {
10909
+ if (!x(ly, this).find((t) => t.language === e.language)) {
10910
10910
  if (this.modules.canvasModule) {
10911
10911
  let t = this.modules.canvasModule.textTracks.addTextTrack(e.kind, e.label || e.language || "", e.language || "");
10912
- x(cy, this).push(t);
10912
+ x(ly, this).push(t);
10913
10913
  } else if (this.mediaElement instanceof HTMLVideoElement) {
10914
10914
  let t = this.mediaElement.addTextTrack(e.kind, e.label || e.language, e.language);
10915
- x(cy, this).push(t);
10915
+ x(ly, this).push(t);
10916
10916
  }
10917
10917
  }
10918
10918
  });
10919
- for (let e of x(cy, this)) t.find((t) => t.language === e.language) ? e.mode === "disabled" && (e.mode = "hidden") : e.mode = "disabled";
10919
+ for (let e of x(ly, this)) t.find((t) => t.language === e.language) ? e.mode === "disabled" && (e.mode = "hidden") : e.mode = "disabled";
10920
10920
  this.emit("text tracks", this.textTracks);
10921
10921
  }), e(this, "cleanupTextTracks", (e = this.currentTime - 2e4) => {
10922
- x(cy, this).forEach((t) => {
10922
+ x(ly, this).forEach((t) => {
10923
10923
  if (t.cues) for (let n of t.cues) n.endTime * 1e3 < e - 2e3 && t.removeCue(n);
10924
10924
  });
10925
10925
  }), e(this, "filterRenditions", function() {
@@ -11098,7 +11098,7 @@ var Uv = class {
11098
11098
  ds(this);
11099
11099
  }), e(this, "play", () => {
11100
11100
  var e;
11101
- this.hasCalledConnect ? this.unsuspend() : this.playbackState !== "playing" && (this._connect(), self.addEventListener("__vindral_register_debug__", this.registerDebugInstance), this.modules.timer.setInterval(() => this.cleanupTextTracks(), n.REMOVE_CUE_THRESHOLD)), (e = this.wakeLock) == null || e.enable(), this.playbackState === "paused" && (this.resetModules(), this.emitter.emit("flush buffers"), this.cleanupTextTracks(2 ** 53 - 1)), this.playbackSource.play();
11101
+ this.hasCalledConnect ? this.unsuspend() : this.playbackState !== "playing" && (this._connect(), self.addEventListener("__vindral_register_debug__", this.registerDebugInstance), this.modules.timer.setInterval(() => this.cleanupTextTracks(), n.REMOVE_CUE_THRESHOLD)), (e = this.wakeLock) == null || e.enable(), this.playbackState === "paused" && this.playbackSource.isActivated && (this.resetModules(), this.emitter.emit("flush buffers"), this.cleanupTextTracks(2 ** 53 - 1)), this.playbackSource.play();
11102
11102
  }), e(this, "getStatistics", () => {
11103
11103
  let e = Object.values(this.modules).reduce((e, t) => t && "getStatistics" in t ? w(w({}, e), t.getStatistics()) : e, this.getRuntimeInfo()), t = Math.round(this.timeActive > 0 ? (e.bytesReceived || 0) * 8 / (this.timeActive / 1e3) : 0), n = this.uptime / 36e5, r = Math.max(0, (e.connectCount || 0) - 1), i = n > 0 ? r / n : 0, a = this.timeActive / 6e4, o = Math.max(a, 1), s = a > 0 ? (e.seekAdjustmentCount || 0) / o : 0, c = a > 0 ? (e.timeshiftAdjustmentCount || 0) / o : 0;
11104
11104
  return ty(w(w({}, e), {}, {
@@ -11110,12 +11110,12 @@ var Uv = class {
11110
11110
  }), e(this, "resetModules", () => {
11111
11111
  Object.values(this.modules).forEach((e) => {
11112
11112
  e && "reset" in e && e.reset();
11113
- }), this.sampleProcessingSesssions.clear(), this.playbackSource.currentTime = 0, this.playbackSource.isActivated = !1;
11113
+ }), this.playbackSource instanceof fs && this.modules.adaptivity.reset(sy), this.sampleProcessingSesssions.clear(), this.playbackSource.currentTime = 0, this.playbackSource.isActivated = !1;
11114
11114
  }), e(this, "getRuntimeInfo", () => {
11115
11115
  let e = this.modules.canvasModule instanceof J_ ? !0 : void 0;
11116
11116
  return w({
11117
11117
  uptime: this.uptime,
11118
- version: "4.3.3-13-g98296cbe4",
11118
+ version: "4.3.3-14-g20c10535d",
11119
11119
  clientId: this.clientId,
11120
11120
  sessionId: this.sessionId,
11121
11121
  channelId: this.channelId,
@@ -11322,8 +11322,8 @@ var Uv = class {
11322
11322
  audio: w(w({}, this.targetSubscription.audio), d == null ? void 0 : d.audio)
11323
11323
  })), this.emitter.emit("adapted level");
11324
11324
  }), this.emitter.on("text track data", (e) => {
11325
- let t = x(cy, this).find((t) => t.language === e.language), n = this.modules.sync.getTimeshiftOffset() / 1e3, r = n - x(sy, this);
11326
- if (S(sy, this, n), t) {
11325
+ let t = x(ly, this).find((t) => t.language === e.language), n = this.modules.sync.getTimeshiftOffset() / 1e3, r = n - x(cy, this);
11326
+ if (S(cy, this, n), t) {
11327
11327
  if (t.cues) for (let e of t.cues) e.startTime -= r, e.endTime -= r;
11328
11328
  for (let r of e.cues) {
11329
11329
  let e = new VTTCue(r.startTime - n, r.endTime - n, r.text);
@@ -11339,13 +11339,13 @@ var Uv = class {
11339
11339
  this.clientIp = t.ip;
11340
11340
  break;
11341
11341
  case "renditions":
11342
- this.updateTextTracks(t.renditions), S(ly, this, this.filterRenditions(t.renditions).then((e) => {
11342
+ this.updateTextTracks(t.renditions), S(uy, this, this.filterRenditions(t.renditions).then((e) => {
11343
11343
  this.emitter.emit("renditions", {
11344
11344
  renditions: e,
11345
11345
  channelId: this.currentSubscription.channelId
11346
11346
  }), this.emit("rendition levels", this.modules.renditions.getRenditionLevels()), this.emitLanguagesIfChanged();
11347
11347
  }).finally(() => {
11348
- S(ly, this, void 0);
11348
+ S(uy, this, void 0);
11349
11349
  }));
11350
11350
  break;
11351
11351
  case "subscription changed":
@@ -11466,7 +11466,7 @@ var Uv = class {
11466
11466
  let be = function() {
11467
11467
  var e = t(function* (e) {
11468
11468
  let t = e.channelId;
11469
- x(ly, i) && (yield x(ly, i));
11469
+ x(uy, i) && (yield x(uy, i));
11470
11470
  let n = i.modules.renditions.getRendition(e.renditionId, t);
11471
11471
  if (!Xo(e.flags)) {
11472
11472
  if (Zo(e.flags)) {
@@ -11474,8 +11474,8 @@ var Uv = class {
11474
11474
  if (e.renditionId !== 0) {
11475
11475
  let e = ce(t);
11476
11476
  if (e && e.language !== void 0) {
11477
- let t = new cs().parse(e.content || ""), r = n / 1e3, a = x(cy, i).find((t) => t.language === e.language), o = r - x(sy, i);
11478
- if (S(sy, i, r), a) {
11477
+ let t = new cs().parse(e.content || ""), r = n / 1e3, a = x(ly, i).find((t) => t.language === e.language), o = r - x(cy, i);
11478
+ if (S(cy, i, r), a) {
11479
11479
  if (a.cues) for (let e of a.cues) e.startTime -= o, e.endTime -= o;
11480
11480
  for (let e of t) {
11481
11481
  let t = new VTTCue(e.startTime - r, e.endTime - r, e.text);
@@ -11618,7 +11618,7 @@ var Uv = class {
11618
11618
  this.modules.subscription.setLanguage(e), this.alignSizeAndBitRate(this.targetSubscription);
11619
11619
  }
11620
11620
  set textTrack(e) {
11621
- e !== this.textTrack && (x(cy, this).forEach((t) => {
11621
+ e !== this.textTrack && (x(ly, this).forEach((t) => {
11622
11622
  if (t.label === e) t.mode = "showing";
11623
11623
  else {
11624
11624
  if (t.mode === "showing" && t.cues) for (let e of [...t.cues]) t.removeCue(e);
@@ -11627,11 +11627,11 @@ var Uv = class {
11627
11627
  }), this.emitter.emit("text track", e));
11628
11628
  }
11629
11629
  get textTracks() {
11630
- return x(cy, this).filter((e) => e.mode !== "disabled").map((e) => e.label);
11630
+ return x(ly, this).filter((e) => e.mode !== "disabled").map((e) => e.label);
11631
11631
  }
11632
11632
  get textTrack() {
11633
11633
  var e;
11634
- return (e = x(cy, this).find((e) => e.mode === "showing")) == null ? void 0 : e.label;
11634
+ return (e = x(ly, this).find((e) => e.mode === "showing")) == null ? void 0 : e.label;
11635
11635
  }
11636
11636
  get channelId() {
11637
11637
  var e, t;
@@ -11784,6 +11784,6 @@ var Uv = class {
11784
11784
  return t === void 0 ? this.shouldUseWebCodecs(e) : t;
11785
11785
  }
11786
11786
  };
11787
- e(uy, "MAX_POOL_SIZE", 10), e(uy, "DISCONNECT_TIMEOUT", 15 * 1e3), e(uy, "REMOVE_CUE_THRESHOLD", 1e3 * 10);
11787
+ e(dy, "MAX_POOL_SIZE", 10), e(dy, "DISCONNECT_TIMEOUT", 15 * 1e3), e(dy, "REMOVE_CUE_THRESHOLD", 1e3 * 10);
11788
11788
  //#endregion
11789
- export { $e as _, ut as a, lt as c, wt as d, St as f, Tt as g, xt as h, mt as i, ft as l, _t as m, O as n, pt as o, bt as p, dt as r, yt as s, uy as t, gt as u, Qe as v };
11789
+ export { $e as _, ut as a, lt as c, wt as d, St as f, Tt as g, xt as h, mt as i, ft as l, _t as m, O as n, pt as o, bt as p, dt as r, yt as s, dy as t, gt as u, Qe as v };
@@ -1,5 +1,5 @@
1
1
  import { n as e, t } from "./BsfwXDui.js";
2
- import { _ as n, a as r, c as i, d as a, f as o, g as s, h as c, i as ee, l, m as te, n as u, o as ne, p as re, r as ie, s as ae, t as oe, u as se, v as ce } from "./Dw3E8a-t.js";
2
+ import { _ as n, a as r, c as i, d as a, f as o, g as s, h as c, i as ee, l, m as te, n as u, o as ne, p as re, r as ie, s as ae, t as oe, u as se, v as ce } from "./DcUVXbwc.js";
3
3
  import { M as le } from "./C01DcfYu.js";
4
4
  import { a as d, i as f, n as p, r as m, t as h } from "./B7hT-BKr.js";
5
5
  import { c as ue, n as de, t as fe } from "./DeYmk5AL.js";
package/core.d.ts CHANGED
@@ -1078,42 +1078,6 @@ export type Statistics = ModuleStatistics & ReturnType<UserAgentInformation["get
1078
1078
  */
1079
1079
  timeshiftAdjustmentsPerMinute: number;
1080
1080
  };
1081
- /**
1082
- * Represents a Vindral client instance
1083
- *
1084
- * The most most essential methods when using the Vindral class are:
1085
- *
1086
- * - connect() - this has to be called to actually start connecting
1087
- * - attach() - to attach the Vindral video view to the DOM so that users can see it
1088
- * - userInput() - to activate audio on browsers that require a user gesture to play audio
1089
- * - unload() - unloads the instance, its very important that this is called when cleaning up the Vindral instance, otherwise background timers may leak.
1090
- *
1091
- * The Vindral instance will emit a variety of events during its lifetime. Use .on("event-name", callback) to listen to these events.
1092
- * See [[PublicVindralEvents]] for the events types that can be emitted.
1093
- *
1094
- * ```typescript
1095
- * // minimal configuration of a Vindral client instance
1096
- * const instance = new Vindral({
1097
- * url: "https://lb.cdn.vindral.com",
1098
- * channelId: "vindral_demo1_ci_099ee1fa-80f3-455e-aa23-3d184e93e04f",
1099
- * })
1100
- *
1101
- * // Will be called when timed metadata is received
1102
- * instance.on("metadata", console.log)
1103
- *
1104
- * // Will be called when a user interaction is needed to activate audio
1105
- * instance.on("needs user input", console.log)
1106
- *
1107
- * // Start connecting to the cdn
1108
- * instance.connect()
1109
- *
1110
- * // Attach the video view to the DOM
1111
- * instance.attach(document.getElementById("root"))
1112
- *
1113
- * // When done with the instance
1114
- * instance.unload()
1115
- * ```
1116
- */
1117
1081
  export declare class Vindral extends Emitter<PublicVindralEvents> {
1118
1082
  #private;
1119
1083
  private static MAX_POOL_SIZE;
package/core.js CHANGED
@@ -1,3 +1,3 @@
1
- import { t as e } from "./Dw3E8a-t.js";
1
+ import { t as e } from "./DcUVXbwc.js";
2
2
  import { a as t, c as n, i as r, l as i, n as a, o, r as s, s as c, u as l } from "./C01DcfYu.js";
3
3
  export { a as AUTHENTICATION_EXPIRED_CODE, s as AUTHENTICATION_FAILED_CODE, r as CHANNEL_NOT_FOUND_CODE, t as CONNECTION_FAILED_AFTER_RETRIES_CODE, o as CONNECTION_FAILED_CODE, c as DISCONNECTED_BY_EDGE, n as INACTIVITY_CODE, i as NO_INCOMING_DATA, e as Vindral, l as VindralError };
package/legacy.d.ts CHANGED
@@ -1093,42 +1093,6 @@ export type Statistics = ModuleStatistics & ReturnType<UserAgentInformation["get
1093
1093
  */
1094
1094
  timeshiftAdjustmentsPerMinute: number;
1095
1095
  };
1096
- /**
1097
- * Represents a Vindral client instance
1098
- *
1099
- * The most most essential methods when using the Vindral class are:
1100
- *
1101
- * - connect() - this has to be called to actually start connecting
1102
- * - attach() - to attach the Vindral video view to the DOM so that users can see it
1103
- * - userInput() - to activate audio on browsers that require a user gesture to play audio
1104
- * - unload() - unloads the instance, its very important that this is called when cleaning up the Vindral instance, otherwise background timers may leak.
1105
- *
1106
- * The Vindral instance will emit a variety of events during its lifetime. Use .on("event-name", callback) to listen to these events.
1107
- * See [[PublicVindralEvents]] for the events types that can be emitted.
1108
- *
1109
- * ```typescript
1110
- * // minimal configuration of a Vindral client instance
1111
- * const instance = new Vindral({
1112
- * url: "https://lb.cdn.vindral.com",
1113
- * channelId: "vindral_demo1_ci_099ee1fa-80f3-455e-aa23-3d184e93e04f",
1114
- * })
1115
- *
1116
- * // Will be called when timed metadata is received
1117
- * instance.on("metadata", console.log)
1118
- *
1119
- * // Will be called when a user interaction is needed to activate audio
1120
- * instance.on("needs user input", console.log)
1121
- *
1122
- * // Start connecting to the cdn
1123
- * instance.connect()
1124
- *
1125
- * // Attach the video view to the DOM
1126
- * instance.attach(document.getElementById("root"))
1127
- *
1128
- * // When done with the instance
1129
- * instance.unload()
1130
- * ```
1131
- */
1132
1096
  export declare class Vindral extends Emitter<PublicVindralEvents> {
1133
1097
  #private;
1134
1098
  private static MAX_POOL_SIZE;