@vindral/web-sdk 4.6.0 → 4.7.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/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.6.0",
2
+ "version": "4.7.0",
3
3
  "name": "@vindral/web-sdk",
4
4
  "main": "./legacy.umd.js",
5
5
  "module": "./legacy.es.js",
package/player.d.ts CHANGED
@@ -35,6 +35,15 @@ interface MinMaxAverage {
35
35
  */
36
36
  min: number;
37
37
  }
38
+ type NavigatorEffectiveType = "2g" | "3g" | "4g" | "slow-2g";
39
+ type NavigatorConnectionType = "bluetooth" | "cellular" | "ethernet" | "mixed" | "none" | "other" | "unknown" | "wifi" | "wimax";
40
+ interface NavigatorConnectionStatistics {
41
+ navigatorRtt?: number;
42
+ navigatorEffectiveType?: NavigatorEffectiveType;
43
+ navigatorConnectionType?: NavigatorConnectionType;
44
+ navigatorSaveData?: boolean;
45
+ navigatorDownlink?: number;
46
+ }
38
47
  type MatchingKeys<TRecord, TMatch, K extends keyof TRecord = keyof TRecord> = K extends (TRecord[K] extends TMatch ? K : never) ? K : never;
39
48
  type VoidKeys<Record> = MatchingKeys<Record, void>;
40
49
  type EventListenerReturnType = (() => void) | void;
@@ -246,7 +255,12 @@ interface Options {
246
255
  * Enable bursting for initial connection and channel switches. This makes time to first frame faster at the
247
256
  * cost of stability (more demanding due to the sudden burst of live content)
248
257
  *
249
- * Is disabled by default.
258
+ * With bursting and adaptive bit rate on, playback starts at a rendition whose bit rate is at most half the
259
+ * estimated bandwidth, so the link can catch up with the burst, and adaptive bit rate then steps up. It never
260
+ * starts below the lowest rendition. If the rendition it starts at still needs more than half the estimated
261
+ * bandwidth (the lowest one on a slow link, or the fixed one with adaptive bit rate off), the burst is skipped.
262
+ *
263
+ * Is enabled by default.
250
264
  *
251
265
  */
252
266
  burstEnabled?: boolean;
@@ -823,18 +837,13 @@ interface DecoderStatistics {
823
837
  audioRenderer?: "AudioContext" | "MSE";
824
838
  audioDecoder?: "WebCodecs" | "WASM" | "MSE";
825
839
  }
826
- interface DocumentStateModulesStatistics {
840
+ interface DocumentStateModulesStatistics extends NavigatorConnectionStatistics {
827
841
  isVisible: boolean;
828
842
  isOnline: boolean;
829
843
  isVisibleCount: number;
830
844
  isHiddenCount: number;
831
845
  isOnlineCount: number;
832
846
  isOfflineCount: number;
833
- navigatorRtt?: number;
834
- navigatorEffectiveType?: EffectiveConnectionType;
835
- navigatorConnectionType?: ConnectionType;
836
- navigatorSaveData?: boolean;
837
- navigatorDownlink?: number;
838
847
  }
839
848
  interface IncomingDataModuleStatistics {
840
849
  /**
@@ -1249,6 +1258,11 @@ declare class Vindral extends Emitter<PublicVindralEvents> {
1249
1258
  * setting targetBufferTime within that range for consistancy if using both min/max.
1250
1259
  */
1251
1260
  set targetBufferTime(bufferTimeMs: number);
1261
+ /**
1262
+ * Set the burst for joins and channel switches from `burstEnabled` as resolved for the channel, so a channel
1263
+ * override can turn it off as well as on
1264
+ */
1265
+ private applyBurstEnabled;
1252
1266
  /**
1253
1267
  * Update the dynamic buffer time configuration at runtime.
1254
1268
  * Allows adjusting min and max buffer time without recreating the Vindral instance.
@@ -1422,6 +1436,8 @@ declare class Vindral extends Emitter<PublicVindralEvents> {
1422
1436
  private updateTextTracks;
1423
1437
  private cleanupTextTracks;
1424
1438
  private filterRenditions;
1439
+ /** Whether the bandwidth leaves room for a join burst of the video and audio the player starts at. */
1440
+ private burstFits;
1425
1441
  /**
1426
1442
  * Patch the subscription with properties from the channel that isn't known until connection
1427
1443
  * @param channel Channel with the renditions to patch the subscription based on
@@ -1577,6 +1593,10 @@ interface ConnectionStatistics {
1577
1593
  * A very rough initial estimation of minimum available bandwidth.
1578
1594
  */
1579
1595
  estimatedBandwidth: number;
1596
+ /**
1597
+ * Origin of the edge the client is connected to, or is trying while it reconnects. Once disconnected, the last
1598
+ * edge it was connected to.
1599
+ */
1580
1600
  edgeUrl?: string;
1581
1601
  /**
1582
1602
  * Total number of connections that have been established since instantiation.
@@ -1597,6 +1617,7 @@ interface ConnectionStatistics {
1597
1617
  * Does not wait for player bootstrap or media to start.
1598
1618
  */
1599
1619
  timeToConnected?: number;
1620
+ /** Protocol of the current connection. Unset while reconnecting; once disconnected, the last connection's. */
1600
1621
  connectionProtocol: "vindral_ws" | "moq" | "moq_ws" | undefined;
1601
1622
  /**
1602
1623
  * When connectionProtocol is "moq_ws", indicates why WebSocket was used instead of WebTransport.
@@ -1604,6 +1625,7 @@ interface ConnectionStatistics {
1604
1625
  * - "disabled": webtransportEnabled option is false
1605
1626
  * - "unavailable": edge did not offer a WebTransport endpoint
1606
1627
  * - "fallback": WebTransport was attempted but failed or timed out
1628
+ * Unset while reconnecting; once disconnected, the last connection's.
1607
1629
  */
1608
1630
  transportSelectionReason: TransportSelectionReason | undefined;
1609
1631
  }
@@ -1759,14 +1781,13 @@ declare abstract class VindralButton extends HTMLElement {
1759
1781
  enable(): void;
1760
1782
  disable(): void;
1761
1783
  disconnectedCallback(): void;
1762
- attributeChangedCallback(name: string, _old: string, value: string): void;
1784
+ attributeChangedCallback(name: string, _old: string | null, value: string | null): void;
1763
1785
  protected abstract handleClick(e: Event): void;
1764
1786
  }
1765
1787
  declare class VindralMenuButton extends VindralButton {
1766
1788
  #private;
1767
1789
  constructor();
1768
1790
  connectedCallback(): void;
1769
- set button(button: HTMLElement);
1770
1791
  set listbox(listbox: HTMLElement);
1771
1792
  set listboxSlot(listboxSlot: HTMLElement);
1772
1793
  enable(): void;
@@ -2125,6 +2146,7 @@ export declare class PlayButton extends VindralButton {
2125
2146
  }
2126
2147
  /**
2127
2148
  * Full-featured Vindral player web component with built-in controls.
2149
+ * [Player API reference](https://docs.vindral.com/web-sdk/api/player/interfaces/Player/)
2128
2150
  *
2129
2151
  * {@include ../../docs/player.md}
2130
2152
  *
package/player.js CHANGED
@@ -1,4 +1,4 @@
1
- import { t as e } from "./DbdwBdhd.js";
2
- import "./CN8w7_en.js";
3
- import { t } from "./BV8nX-0b.js";
1
+ import { t as e } from "./Bo-fEHbb.js";
2
+ import "./5u5UZABw.js";
3
+ import { t } from "./DYgG1Gmb.js";
4
4
  export { t as registerComponents, e as registerDebugComponents };
package/react.d.ts CHANGED
@@ -37,6 +37,15 @@ interface MinMaxAverage {
37
37
  */
38
38
  min: number;
39
39
  }
40
+ type NavigatorEffectiveType = "2g" | "3g" | "4g" | "slow-2g";
41
+ type NavigatorConnectionType = "bluetooth" | "cellular" | "ethernet" | "mixed" | "none" | "other" | "unknown" | "wifi" | "wimax";
42
+ interface NavigatorConnectionStatistics {
43
+ navigatorRtt?: number;
44
+ navigatorEffectiveType?: NavigatorEffectiveType;
45
+ navigatorConnectionType?: NavigatorConnectionType;
46
+ navigatorSaveData?: boolean;
47
+ navigatorDownlink?: number;
48
+ }
40
49
  type MatchingKeys<TRecord, TMatch, K extends keyof TRecord = keyof TRecord> = K extends (TRecord[K] extends TMatch ? K : never) ? K : never;
41
50
  type VoidKeys<Record> = MatchingKeys<Record, void>;
42
51
  type EventListenerReturnType = (() => void) | void;
@@ -248,7 +257,12 @@ interface Options {
248
257
  * Enable bursting for initial connection and channel switches. This makes time to first frame faster at the
249
258
  * cost of stability (more demanding due to the sudden burst of live content)
250
259
  *
251
- * Is disabled by default.
260
+ * With bursting and adaptive bit rate on, playback starts at a rendition whose bit rate is at most half the
261
+ * estimated bandwidth, so the link can catch up with the burst, and adaptive bit rate then steps up. It never
262
+ * starts below the lowest rendition. If the rendition it starts at still needs more than half the estimated
263
+ * bandwidth (the lowest one on a slow link, or the fixed one with adaptive bit rate off), the burst is skipped.
264
+ *
265
+ * Is enabled by default.
252
266
  *
253
267
  */
254
268
  burstEnabled?: boolean;
@@ -825,18 +839,13 @@ interface DecoderStatistics {
825
839
  audioRenderer?: "AudioContext" | "MSE";
826
840
  audioDecoder?: "WebCodecs" | "WASM" | "MSE";
827
841
  }
828
- interface DocumentStateModulesStatistics {
842
+ interface DocumentStateModulesStatistics extends NavigatorConnectionStatistics {
829
843
  isVisible: boolean;
830
844
  isOnline: boolean;
831
845
  isVisibleCount: number;
832
846
  isHiddenCount: number;
833
847
  isOnlineCount: number;
834
848
  isOfflineCount: number;
835
- navigatorRtt?: number;
836
- navigatorEffectiveType?: EffectiveConnectionType;
837
- navigatorConnectionType?: ConnectionType;
838
- navigatorSaveData?: boolean;
839
- navigatorDownlink?: number;
840
849
  }
841
850
  interface IncomingDataModuleStatistics {
842
851
  /**
@@ -1251,6 +1260,11 @@ declare class Vindral extends Emitter<PublicVindralEvents> {
1251
1260
  * setting targetBufferTime within that range for consistancy if using both min/max.
1252
1261
  */
1253
1262
  set targetBufferTime(bufferTimeMs: number);
1263
+ /**
1264
+ * Set the burst for joins and channel switches from `burstEnabled` as resolved for the channel, so a channel
1265
+ * override can turn it off as well as on
1266
+ */
1267
+ private applyBurstEnabled;
1254
1268
  /**
1255
1269
  * Update the dynamic buffer time configuration at runtime.
1256
1270
  * Allows adjusting min and max buffer time without recreating the Vindral instance.
@@ -1424,6 +1438,8 @@ declare class Vindral extends Emitter<PublicVindralEvents> {
1424
1438
  private updateTextTracks;
1425
1439
  private cleanupTextTracks;
1426
1440
  private filterRenditions;
1441
+ /** Whether the bandwidth leaves room for a join burst of the video and audio the player starts at. */
1442
+ private burstFits;
1427
1443
  /**
1428
1444
  * Patch the subscription with properties from the channel that isn't known until connection
1429
1445
  * @param channel Channel with the renditions to patch the subscription based on
@@ -1579,6 +1595,10 @@ interface ConnectionStatistics {
1579
1595
  * A very rough initial estimation of minimum available bandwidth.
1580
1596
  */
1581
1597
  estimatedBandwidth: number;
1598
+ /**
1599
+ * Origin of the edge the client is connected to, or is trying while it reconnects. Once disconnected, the last
1600
+ * edge it was connected to.
1601
+ */
1582
1602
  edgeUrl?: string;
1583
1603
  /**
1584
1604
  * Total number of connections that have been established since instantiation.
@@ -1599,6 +1619,7 @@ interface ConnectionStatistics {
1599
1619
  * Does not wait for player bootstrap or media to start.
1600
1620
  */
1601
1621
  timeToConnected?: number;
1622
+ /** Protocol of the current connection. Unset while reconnecting; once disconnected, the last connection's. */
1602
1623
  connectionProtocol: "vindral_ws" | "moq" | "moq_ws" | undefined;
1603
1624
  /**
1604
1625
  * When connectionProtocol is "moq_ws", indicates why WebSocket was used instead of WebTransport.
@@ -1606,6 +1627,7 @@ interface ConnectionStatistics {
1606
1627
  * - "disabled": webtransportEnabled option is false
1607
1628
  * - "unavailable": edge did not offer a WebTransport endpoint
1608
1629
  * - "fallback": WebTransport was attempted but failed or timed out
1630
+ * Unset while reconnecting; once disconnected, the last connection's.
1609
1631
  */
1610
1632
  transportSelectionReason: TransportSelectionReason | undefined;
1611
1633
  }
@@ -1761,14 +1783,13 @@ declare abstract class VindralButton extends HTMLElement {
1761
1783
  enable(): void;
1762
1784
  disable(): void;
1763
1785
  disconnectedCallback(): void;
1764
- attributeChangedCallback(name: string, _old: string, value: string): void;
1786
+ attributeChangedCallback(name: string, _old: string | null, value: string | null): void;
1765
1787
  protected abstract handleClick(e: Event): void;
1766
1788
  }
1767
1789
  declare class VindralMenuButton extends VindralButton {
1768
1790
  #private;
1769
1791
  constructor();
1770
1792
  connectedCallback(): void;
1771
- set button(button: HTMLElement);
1772
1793
  set listbox(listbox: HTMLElement);
1773
1794
  set listboxSlot(listboxSlot: HTMLElement);
1774
1795
  enable(): void;
@@ -1,5 +1,5 @@
1
- import "./CN8w7_en.js";
2
- import { t as e } from "./BV8nX-0b.js";
1
+ import "./5u5UZABw.js";
2
+ import { t as e } from "./DYgG1Gmb.js";
3
3
  //#region src/vindral-player-component.ts
4
4
  e();
5
5
  //#endregion
package/BBVSf5AB.js DELETED
@@ -1,123 +0,0 @@
1
- import { n as e } from "./BsfwXDui.js";
2
- import { t } from "./BKeRxR4O.js";
3
- //#region ../../libs/utils/src/noop.ts
4
- var n = () => {}, r = "connection_failed", i = "connection_failed_will_not_attempt_again", a = "authentication_error", o = "authentication_expired", s = "channel_not_found", c = "channel_not_live", l = "no_incoming_data_error", u = "connection_inactivity", d = "missing_init_segment", f = "no_track_context", p = "invalid_track_context_state", m = "disconnected_by_edge", h = "decoder_error", g = "audio_player_error", _ = "unsupported_audio_codec", v = "media_source_error", y = "webgl_context_lost_error", b = "access_forbidden", x = "channel_switch_failed", S = "drm_error", C = class extends Error {
5
- constructor(n, r, i = {}) {
6
- super(n), e(this, "props", void 0), e(this, "extra", {}), e(this, "code", () => this.props.code), e(this, "isFatal", () => this.props.isFatal), e(this, "source", () => this.props.source), e(this, "type", () => {
7
- var e;
8
- return (e = this.props.type) == null ? "external" : e;
9
- }), e(this, "toStringifiable", () => {
10
- var e;
11
- let n = this.source(), r = n instanceof Error ? n.stack : this.stack;
12
- return t(t({}, this.extra), {}, {
13
- code: this.props.code,
14
- isFatal: this.props.isFatal,
15
- type: this.props.type,
16
- message: this.message,
17
- sourceMessage: (e = this.source()) == null ? void 0 : e.message,
18
- stack: r
19
- });
20
- }), this.props = r, this.extra = i, Object.setPrototypeOf(this, new.target.prototype);
21
- }
22
- }, w = (e, t) => new C("MediaElement Error", {
23
- isFatal: e,
24
- code: "media_element_error",
25
- source: t
26
- }, { mediaErrorCode: t.code }), T = (e, t) => new C("Decoder Error", {
27
- isFatal: e,
28
- code: h,
29
- source: t,
30
- type: "internal"
31
- }), E = (e, t, n) => new C(`No decoder available for audio codec "${e}" in non-MSE playback. ${t}`, {
32
- isFatal: !0,
33
- code: _,
34
- source: n,
35
- type: "external"
36
- }, {
37
- codec: e,
38
- reason: t
39
- }), D = (e, t) => new C("Audio Player Error", {
40
- isFatal: e,
41
- code: g,
42
- source: t,
43
- type: "internal"
44
- }), O = (e, t) => new C(`No init segment for rendition id ${e} for channel ${t}`, {
45
- isFatal: !1,
46
- code: d,
47
- type: "internal"
48
- }), k = (e, t, n, r) => new C("MediaSource Error", {
49
- isFatal: e,
50
- code: v,
51
- source: t,
52
- type: "internal"
53
- }, {
54
- mediaType: r,
55
- consecutiveErrorsCount: n
56
- }), A = (e, t) => new C(`No track context for ${e}${t ? `, rendition id ${t}` : ""}`, {
57
- isFatal: !1,
58
- code: f,
59
- type: "internal"
60
- }), j = (e, t) => new C(`Track context is in an invalid state for ${e}${t ? `, rendition id ${t}` : ""}`, {
61
- isFatal: !1,
62
- code: p,
63
- type: "internal"
64
- }), M = () => new C("Web Audio Context resume timeout", {
65
- isFatal: !1,
66
- code: "web_audio_context_resume_timeout"
67
- }), N = (e) => new C("Disconnected From Edge Server", {
68
- type: "external",
69
- source: e,
70
- isFatal: !1,
71
- code: m
72
- }), P = (e) => new C("Authentication Failed", {
73
- isFatal: !0,
74
- code: a,
75
- source: e
76
- }), F = (e) => new C("Authentication Expired", {
77
- isFatal: !0,
78
- code: o,
79
- source: e
80
- }), I = (e, t) => new C("Connection closed due to inactivity", {
81
- isFatal: !1,
82
- code: u,
83
- source: t,
84
- type: e
85
- }), L = (e, t) => new C("Channel not found", {
86
- isFatal: !1,
87
- code: s,
88
- source: t,
89
- type: e
90
- }), R = (e) => new C("Waiting for channel to go live", {
91
- isFatal: !1,
92
- code: c,
93
- source: e,
94
- type: "external"
95
- }), z = (e) => new C("No Incoming Data", {
96
- isFatal: !1,
97
- code: l,
98
- source: e
99
- }), B = (e) => new C("Connection attempt failed", {
100
- isFatal: !1,
101
- code: r,
102
- source: e
103
- }), V = () => new C("Connection failed - no more reconnect attempts", {
104
- isFatal: !0,
105
- code: i
106
- }), H = (e) => new C("WebGL Context Lost", {
107
- isFatal: !1,
108
- code: y,
109
- source: e,
110
- type: "internal"
111
- }), U = (e) => new C(e, {
112
- isFatal: !0,
113
- code: b
114
- }), W = (e) => new C(`Channel switch to '${e}' failed`, {
115
- isFatal: !1,
116
- code: x
117
- }), G = (e, t = !1, n) => new C(e, {
118
- isFatal: t,
119
- code: S,
120
- source: n
121
- });
122
- //#endregion
123
- export { A, G as C, k as D, w as E, n as F, B as M, E as N, O, H as P, N as S, j as T, F as _, c as a, W as b, m as c, l as d, C as f, P as g, D as h, s as i, V as j, z as k, u as l, M as m, o as n, i as o, U as p, a as r, r as s, b as t, v as u, L as v, I as w, T as x, R as y };
package/CbyVl6wP.js DELETED
@@ -1,59 +0,0 @@
1
- //#region ../../libs/media/src/aac.ts
2
- var e = [
3
- 96e3,
4
- 88200,
5
- 64e3,
6
- 48e3,
7
- 44100,
8
- 32e3,
9
- 24e3,
10
- 22050,
11
- 16e3,
12
- 12e3,
13
- 11025,
14
- 8e3,
15
- 7350
16
- ], t = (t, n) => {
17
- let r = e.indexOf(n);
18
- if (r === -1 || t < 1 || t > 8 || t === 7) return;
19
- let i = /* @__PURE__ */ new ArrayBuffer(2), a = new Uint8Array(i), o = t === 8 ? 7 : t;
20
- return a[0] = 16 | r >> 1, a[1] = (r & 1) << 7 | o << 3, i;
21
- }, n = (e) => {
22
- if (!e) return;
23
- let t = e.channelMappingTable, n = new Uint8Array(19 + t.byteLength), r = new DataView(n.buffer, n.byteOffset, n.byteLength);
24
- return n.set([
25
- 79,
26
- 112,
27
- 117,
28
- 115,
29
- 72,
30
- 101,
31
- 97,
32
- 100
33
- ], 0), r.setUint8(8, 1), r.setUint8(9, e.channelCount), r.setUint16(10, e.preSkip, !0), r.setUint32(12, e.inputSampleRate, !0), r.setInt16(16, e.outputGain, !0), r.setUint8(18, e.channelMappingFamily), t.byteLength > 0 && n.set(t, 19), n;
34
- }, r = (e, t) => {
35
- if (e < 1 || e > 2) return;
36
- let n = new Uint8Array(19), r = new DataView(n.buffer, n.byteOffset, n.byteLength);
37
- return n.set([
38
- 79,
39
- 112,
40
- 117,
41
- 115,
42
- 72,
43
- 101,
44
- 97,
45
- 100
46
- ]), r.setUint8(8, 1), r.setUint8(9, e), r.setUint16(10, 3840, !0), r.setUint32(12, t, !0), r.setInt16(16, 0, !0), r.setUint8(18, 0), n;
47
- }, i = (e) => {
48
- switch (e) {
49
- case "opus": return "opus";
50
- case "aac": return "mp4a.40.2";
51
- case "mp3": return "mp3";
52
- default: {
53
- let t = e;
54
- throw Error(`Unsupported audio codec: ${t}`);
55
- }
56
- }
57
- };
58
- //#endregion
59
- export { t as i, r as n, n as r, i as t };
package/DTs-C-0Z.js DELETED
@@ -1,225 +0,0 @@
1
- import { n as e } from "./BsfwXDui.js";
2
- import { i as t, n, t as r } from "./DSw1XhvD.js";
3
- //#region ../../libs/utils/src/formatting.ts
4
- var i = 1e3, a = i * 1e3, o = a * 1e3, s = (e, t, n) => e % t === 0 ? e / t : (e / t).toFixed(n), c = (e, t = 1) => e >= o ? `${s(e, o, t)} Gbit/s` : e >= a ? `${s(e, a, t)} Mbit/s` : e >= i ? `${s(e, i, t)} Kbit/s` : `${e} bit/s`, l = ({ width: e, height: t }) => `${e}x${t}`, u = {
5
- PAUSED: "paused",
6
- MUTED: "muted",
7
- USER_INTERACTING: "user-interacting",
8
- IS_CASTING: "is-casting",
9
- CAST_AVAILABLE: "cast-available",
10
- CAST_RECEIVER_NAME: "cast-receiver-name",
11
- BUFFERING: "buffering",
12
- UI_LOCKED: "ui-locked",
13
- HIDE_UI_ON_PAUSE: "hide-ui-on-pause",
14
- FULLSCREEN: "is-fullscreen",
15
- FULLSCREEN_FALLBACK: "is-fullscreen-fallback",
16
- RENDITION_LEVELS: "rendition-levels",
17
- RENDITION_LEVEL: "rendition-level",
18
- MAX_VIDEO_BITRATE: "max-video-bit-rate",
19
- MAX_INITIAL_BITRATE: "max-initial-bit-rate",
20
- ABR_ENABLED: "abr-enabled",
21
- SIZE_BASED_RESOLUTION_CAP_ENABLED: "size-based-resolution-cap-enabled",
22
- CHANNELS: "channels",
23
- CHANNEL_ID: "channel-id",
24
- CHANNEL_GROUP_ID: "channel-group-id",
25
- PIP_AVAILABLE: "pip-available",
26
- IS_PIP: "is-pip",
27
- AIRPLAY_AVAILABLE: "airplay-available",
28
- IS_AIRPLAYING: "is-airplaying",
29
- MEDIA: "media",
30
- LANGUAGES: "languages",
31
- LANGUAGE: "language",
32
- TEXT_TRACKS: "text-tracks",
33
- TEXT_TRACK: "text-track",
34
- NEEDS_USER_INPUT_VIDEO: "needs-user-input-video",
35
- NEEDS_USER_INPUT_AUDIO: "needs-user-input-audio",
36
- AUTHENTICATION_TOKEN: "authentication-token",
37
- VOLUME: "volume",
38
- VOLUME_LEVEL: "volume-level",
39
- CAST_ENABLED: "cast",
40
- AIRPLAY_ENABLED: "airplay",
41
- PIP_ENABLED: "pip",
42
- FULLSCREEN_ENABLED: "fullscreen",
43
- DOUBLE_CLICK_FULLSCREEN_ENABLED: "double-click-fullscreen",
44
- VU_METER_ENABLED: "vu-meter",
45
- TIMESHIFT_ENABLED: "timeshift",
46
- TIMESHIFT_POSITION: "timeshift-position",
47
- TIMELINE_MARKERS: "timeline-markers",
48
- POSTER_SRC: "poster-src",
49
- DURATION: "duration",
50
- DEBUG_PANEL_OPEN: "debug-panel-open",
51
- TARGET_BUFFER_TIME: "target-buffer-time",
52
- DRIFT: "drift",
53
- PLAYBACK_LATENCY: "playback-latency",
54
- CONNECTION_STATE: "connection-state"
55
- }, d = Object.values(u), f = {
56
- PLAY: "play",
57
- PAUSE: "pause",
58
- MUTE: "mute",
59
- UNMUTE: "unmute",
60
- LOCK_UI: "lock-ui",
61
- UNLOCK_UI: "unlock-ui",
62
- ENTER_FULLSCREEN: "enter-fullscreen",
63
- EXIT_FULLSCREEN: "exit-fullscreen",
64
- SET_RENDITION: "set-rendition",
65
- SET_ABR_MODE: "set-abr-mode",
66
- SET_SIZE_BASED_RESOLUTION_CAP_MODE: "set-size-based-resolution-cap-mode",
67
- CHANNEL_GRID_OPENED: "channel-grid-opened",
68
- CHANNEL_GRID_CLOSED: "channel-grid-closed",
69
- ENTER_PIP: "enter-pip",
70
- EXIT_PIP: "exit-pip",
71
- REQUEST_AIRPLAY: "request-airplay",
72
- SET_LANGUAGE: "set-language",
73
- SET_TEXT_TRACK: "set-text-track",
74
- REQUEST_USER_INPUT: "request-user-input",
75
- SET_VOLUME: "set-volume",
76
- SEEK: "seek",
77
- GO_LIVE: "go-live",
78
- TOGGLE_DEBUG_PANEL: "toggle-debug-panel",
79
- SET_TARGET_BUFFER_TIME: "set-target-buffer-time"
80
- };
81
- //#endregion
82
- //#region ../../libs/player-next/src/utils/vindralAttributesUtils.ts
83
- function p(e) {
84
- return e === "audio" || e === "video" || e === "audio+video" ? e : "audio+video";
85
- }
86
- function m(e) {
87
- return e === "trace" || e === "debug" || e === "info" || e === "warn" || e === "error" || e === "off" ? e : "off";
88
- }
89
- function h(e) {
90
- if (e === null) return;
91
- let t = e.split(",").map((e) => e.trim()).filter((e) => e === "h264" || e === "h265" || e === "av1");
92
- if (t.length !== 0) return t;
93
- }
94
- function g(e) {
95
- if (e !== null) try {
96
- let t = JSON.parse(e);
97
- if (typeof t == "object" && t) {
98
- let e = t;
99
- if (typeof e.width == "number" && typeof e.height == "number") return e;
100
- }
101
- } catch (e) {
102
- return;
103
- }
104
- }
105
- function _(e) {
106
- if (e !== null) try {
107
- let t = JSON.parse(e);
108
- if (typeof t == "object" && t) return t;
109
- } catch (e) {
110
- return;
111
- }
112
- }
113
- function v(e) {
114
- if (e === null) return;
115
- let t = parseFloat(e);
116
- return Number.isNaN(t) ? void 0 : t;
117
- }
118
- function y(e) {
119
- return typeof e == "string";
120
- }
121
- function b(e, t) {
122
- if (e === null) return t == null ? void 0 : t;
123
- let n = e.toLowerCase();
124
- return n === "false" ? !1 : n === "true" || n === "" || t == null ? !0 : t;
125
- }
126
- function x(e, t) {
127
- return e === null ? t == null ? void 0 : t : e === "" || e.toLowerCase() === "true" ? !0 : e.toLowerCase() === "false" ? !1 : e;
128
- }
129
- function S(e) {
130
- if (e === null) return;
131
- let t = {}, n = e.split(",");
132
- for (let e of n) {
133
- let [n, r] = e.split(":");
134
- n && r && (t[n.trim()] = r.trim());
135
- }
136
- return Object.keys(t).length > 0 ? t : void 0;
137
- }
138
- function C(e) {
139
- if (e === null) return;
140
- let t = e.split(",").map((e) => e.trim()).filter((e) => e.length > 0);
141
- return t.length > 0 ? t : void 0;
142
- }
143
- //#endregion
144
- //#region ../../libs/player-next/src/components/VindralButton.ts
145
- var w = document.createElement("template");
146
- w.innerHTML = "\n <style>\n :host {\n cursor: pointer;\n color: var(--fg-strong);\n padding: var(--button-padding) !important;\n background: transparent;\n transition: background 0.2s linear;\n -webkit-tap-highlight-color: transparent;\n }\n\n :host(:focus-visible) {\n box-shadow: inset 0 0 0 2px var(--fg-strong);\n outline: 0;\n }\n\n :host(:where(:focus)) {\n box-shadow: none;\n outline: 0;\n }\n\n @media (hover: hover) and (pointer: fine) {\n :host(:hover) {\n background: rgba(255, 255, 255, 0.15);\n }\n }\n\n :host(:active) {\n background: rgba(255, 255, 255, 0.25);\n }\n\n :host(:active) svg {\n scale: 0.9;\n }\n\n :host([disabled]) {\n opacity: 0.5;\n background: transparent;\n }\n\n slot > svg {\n display: block;\n width: var(--button-icon-size);\n height: var(--button-icon-size);\n }\n </style>\n";
147
- var T = /* @__PURE__ */ new WeakMap(), E = /* @__PURE__ */ new WeakMap(), D = /* @__PURE__ */ new WeakMap(), O = /* @__PURE__ */ new WeakMap(), k = class extends HTMLElement {
148
- constructor() {
149
- super(), t(this, T, null), t(this, E, (e) => {
150
- this.handleClick(e);
151
- }), t(this, D, (e) => {
152
- let { key: t } = e;
153
- if (!this.keysUsed.includes(t)) {
154
- this.removeEventListener("keyup", r(D, this));
155
- return;
156
- }
157
- this.handleClick(e);
158
- }), t(this, O, (e) => {
159
- let { metaKey: t, altKey: n, key: i } = e;
160
- if (t || n || !this.keysUsed.includes(i)) {
161
- this.removeEventListener("keyup", r(D, this));
162
- return;
163
- }
164
- this.addEventListener("keyup", r(D, this), { once: !0 });
165
- }), this.attachShadow({ mode: "open" }).appendChild(w.content.cloneNode(!0));
166
- }
167
- get keysUsed() {
168
- return ["Enter", " "];
169
- }
170
- connectedCallback() {
171
- var e;
172
- n(T, this, this.closest("vindral-controller")), (e = r(T, this)) == null || e.connectListener(this), this.hasAttribute("disabled") || this.enable(), this.setAttribute("role", "button");
173
- }
174
- enable() {
175
- this.addEventListener("click", r(E, this)), this.addEventListener("keydown", r(O, this)), this.tabIndex = 0;
176
- }
177
- disable() {
178
- this.removeEventListener("click", r(E, this)), this.removeEventListener("keydown", r(O, this)), this.removeEventListener("keyup", r(D, this)), this.tabIndex = -1;
179
- }
180
- disconnectedCallback() {
181
- var e;
182
- (e = r(T, this)) == null || e.disconnectListener(this);
183
- }
184
- attributeChangedCallback(e, t, n) {
185
- e === "disabled" && (y(n) ? this.disable() : this.enable());
186
- }
187
- };
188
- e(k, "observedAttributes", ["disabled"]);
189
- //#endregion
190
- //#region \0@oxc-project+runtime@0.115.0/helpers/getPrototypeOf.js
191
- function A(e) {
192
- return A = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {
193
- return e.__proto__ || Object.getPrototypeOf(e);
194
- }, A(e);
195
- }
196
- //#endregion
197
- //#region \0@oxc-project+runtime@0.115.0/helpers/superPropBase.js
198
- function j(e, t) {
199
- for (; !{}.hasOwnProperty.call(e, t) && (e = A(e)) !== null;);
200
- return e;
201
- }
202
- //#endregion
203
- //#region \0@oxc-project+runtime@0.115.0/helpers/get.js
204
- function M() {
205
- return M = typeof Reflect < "u" && Reflect.get ? Reflect.get.bind() : function(e, t, n) {
206
- var r = j(e, t);
207
- if (r) {
208
- var i = Object.getOwnPropertyDescriptor(r, t);
209
- return i.get ? i.get.call(arguments.length < 3 ? e : n) : i.value;
210
- }
211
- }, M.apply(null, arguments);
212
- }
213
- //#endregion
214
- //#region \0@oxc-project+runtime@0.115.0/helpers/superPropGet.js
215
- function N(e, t, n, r) {
216
- var i = M(A(1 & r ? e.prototype : e), t, n);
217
- return 2 & r && typeof i == "function" ? function(e) {
218
- return i.apply(n, e);
219
- } : i;
220
- }
221
- //#endregion
222
- //#region ../../libs/player-next/src/constants.ts
223
- var P = 5e3, F = "https://lb.cdn.vindral.com";
224
- //#endregion
225
- export { u as _, y as a, l as b, x as c, g as d, p as f, f as g, h, k as i, m as l, C as m, F as n, _ as o, v as p, N as r, b as s, P as t, S as u, d as v, c as y };
File without changes
File without changes
File without changes