@vindral/web-sdk 4.1.9 → 4.1.10

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/react.d.ts CHANGED
@@ -22,17 +22,6 @@ interface Channel {
22
22
  */
23
23
  timeshiftUrls?: string[];
24
24
  }
25
- interface ClientOverrides {
26
- maxVideoBitRate?: number;
27
- minBufferTime?: number;
28
- maxBufferTime?: number;
29
- burstEnabled?: boolean;
30
- sizeBasedResolutionCapEnabled?: boolean;
31
- separateVideoSocketEnabled?: boolean;
32
- videoCodecs?: string[];
33
- }
34
- type AudioCodec = "aac" | "opus" | "mp3";
35
- type VideoCodec = "h264" | "av1";
36
25
  interface MinMaxAverage {
37
26
  last: number;
38
27
  /**
@@ -105,44 +94,48 @@ type Tagged<BaseType, Tag extends PropertyKey> = BaseType & {
105
94
  [K in Tag]: void;
106
95
  };
107
96
  };
108
- type Namespace = Tagged<Array<string>, "Namespace">;
109
- interface TrackObject {
110
- namespace?: Namespace;
111
- name: string;
112
- format: string;
113
- label?: string;
114
- renderGroup?: number;
115
- altGroup?: number;
116
- initData?: string;
117
- initTrack?: string;
118
- depends?: Array<string>;
119
- temporalId?: number;
120
- spatialId?: number;
121
- codec?: string;
122
- mimeType?: string;
123
- framerate?: [
124
- number,
125
- number
126
- ];
127
- bitrate?: number;
128
- width?: number;
129
- height?: number;
130
- samplerate?: number;
131
- channelConfig?: string;
132
- displayWidth?: number;
133
- displayHeight?: number;
134
- language?: string;
135
- ["com.vindral.variant_uid"]?: string;
136
- ["com.vindral.drm"]?: string;
137
- }
138
- interface CatalogRoot {
139
- version: number;
140
- streamingFormat?: number;
141
- streamingFormatVersion?: string;
97
+ declare class UserAgentInformation {
98
+ private highEntropyValues?;
99
+ constructor();
100
+ getUserAgentInformation(): {
101
+ locationOrigin: string;
102
+ locationPath: string;
103
+ ancestorOrigins: string[] | undefined;
104
+ hardwareConcurrency: number;
105
+ deviceMemory: number | undefined;
106
+ userAgentLegacy: string;
107
+ ua: {
108
+ browser: {
109
+ brands: string[];
110
+ fullVersionBrands: string[];
111
+ majorVersions: string[];
112
+ };
113
+ device: string;
114
+ os: {
115
+ family: string;
116
+ version: string;
117
+ major_version: number;
118
+ };
119
+ };
120
+ } | {
121
+ locationOrigin: string;
122
+ locationPath: string;
123
+ ancestorOrigins: string[] | undefined;
124
+ hardwareConcurrency: number;
125
+ deviceMemory: number | undefined;
126
+ userAgent: string;
127
+ };
142
128
  }
143
- interface TracksCatalog extends CatalogRoot {
144
- namespace: Namespace;
145
- tracks: Array<TrackObject>;
129
+ type AudioCodec = "aac" | "opus" | "mp3";
130
+ type VideoCodec = "h264" | "av1";
131
+ interface ReconnectState {
132
+ /**
133
+ * The number or retry attempts so far.
134
+ * This gets reset on every successful connect, so it will start from zero every
135
+ * time the client instance gets disconnected and will increment until the
136
+ * client instance makes a connection attempt is successful.
137
+ */
138
+ reconnectRetries: number;
146
139
  }
147
140
  interface RenditionProps {
148
141
  id: number;
@@ -185,78 +178,6 @@ type VideoRendition = VideoRenditionProps & RenditionProps;
185
178
  type AudioRendition = AudioRenditionProps & RenditionProps;
186
179
  type TextRendition = TextRenditionProps & RenditionProps;
187
180
  type Rendition = VideoRendition | AudioRendition | TextRendition;
188
- interface Telemetry {
189
- url: string;
190
- probability?: number;
191
- includeErrors?: boolean;
192
- includeEvents?: boolean;
193
- includeStats?: boolean;
194
- maxRetries?: number;
195
- maxErrorReports?: number;
196
- interval?: number;
197
- }
198
- interface ChannelWithCatalog extends Channel {
199
- catalog: TracksCatalog;
200
- renditions: Rendition[];
201
- overrides?: ClientOverrides;
202
- }
203
- interface ChannelWithRenditions extends Channel {
204
- renditions: Rendition[];
205
- overrides?: ClientOverrides;
206
- }
207
- interface ServerCertificateHash {
208
- algorithm: string;
209
- value: string;
210
- }
211
- interface Edge {
212
- moqUrl?: string;
213
- moqWsUrl: string;
214
- serverCertificateHashes?: ServerCertificateHash[];
215
- }
216
- interface MoQConnectInfo {
217
- logsUrl?: string;
218
- statsUrl?: string;
219
- telemetry?: Telemetry;
220
- channels: ChannelWithCatalog[];
221
- edges: Edge[];
222
- timeshift: {
223
- urls: string[];
224
- duration: string;
225
- };
226
- }
227
- interface VindralConnectInfo {
228
- logsUrl?: string;
229
- statsUrl?: string;
230
- telemetry?: Telemetry;
231
- channels: ChannelWithRenditions[];
232
- edges: string[];
233
- }
234
- type ConnectInfo = VindralConnectInfo | MoQConnectInfo;
235
- interface Metadata {
236
- /**
237
- * The raw string content as it was ingested (if using JSON, it needs to be parsed on your end)
238
- */
239
- content: string;
240
- /**
241
- * Timestamp in ms
242
- */
243
- timestamp: number;
244
- }
245
- interface TimeRange {
246
- /** */
247
- start: number;
248
- /** */
249
- end: number;
250
- }
251
- interface ReconnectState {
252
- /**
253
- * The number or retry attempts so far.
254
- * This gets reset on every successful connect, so it will start from zero every
255
- * time the client instance gets disconnected and will increment until the
256
- * client instance makes a connection attempt is successful.
257
- */
258
- reconnectRetries: number;
259
- }
260
181
  interface Size {
261
182
  /** */
262
183
  width: number;
@@ -308,6 +229,7 @@ interface DrmOptions {
308
229
  };
309
230
  }
310
231
  type Media = "audio" | "video" | "audio+video";
232
+ type WebCodecsHardwareAccelerationPreference = "no-preference" | "prefer-hardware" | "prefer-software";
311
233
  interface Options {
312
234
  /**
313
235
  * URL to use when connecting to the stream
@@ -508,6 +430,38 @@ interface Options {
508
430
  * Enables iOS devices to use a media element for playback. This enables fullscreen and picture in picture support on iOS.
509
431
  */
510
432
  iosMediaElementEnabled?: boolean;
433
+ /**
434
+ * Enable WebCodecs API for hardware-accelerated decoding.
435
+ *
436
+ * When enabled, the browser's native VideoDecoder and AudioDecoder APIs will be used instead
437
+ * of WASM decoding on supported browsers (Chrome 94+, Edge 94+, Safari 16.4+). This provides:
438
+ * - Hardware-accelerated decoding (uses GPU for video)
439
+ * - Better performance at higher resolutions
440
+ * - Lower CPU usage and battery consumption
441
+ *
442
+ * Disabled by default to allow gradual rollout and testing.
443
+ *
444
+ * Note: Automatically falls back to WASM decoding if:
445
+ * - The browser doesn't support WebCodecs
446
+ * - WebCodecs initialization fails
447
+ * - This option is set to false or undefined
448
+ */
449
+ webcodecsEnabled?: boolean;
450
+ /**
451
+ * Hardware acceleration preference for WebCodecs video decoding.
452
+ *
453
+ * Defaults to `"no-preference"`.
454
+ */
455
+ webcodecsHardwareAcceleration?: WebCodecsHardwareAccelerationPreference;
456
+ /**
457
+ * Enable OffscreenCanvas rendering in worker thread (requires webcodecsEnabled: true).
458
+ *
459
+ * When enabled, video rendering happens in the worker thread using OffscreenCanvas.
460
+ * Disabled by default to allow gradual rollout and testing.
461
+ *
462
+ * Note: Requires browser support for OffscreenCanvas and webcodecsEnabled must be true, and iosMediaElementEnabled must be false.
463
+ */
464
+ offscreenCanvasEnabled?: boolean;
511
465
  /**
512
466
  * Advanced options to override default behaviour.
513
467
  */
@@ -519,6 +473,120 @@ interface Options {
519
473
  */
520
474
  drm?: DrmOptions;
521
475
  }
476
+ interface ClientOverrides {
477
+ maxVideoBitRate?: number;
478
+ minBufferTime?: number;
479
+ maxBufferTime?: number;
480
+ burstEnabled?: boolean;
481
+ sizeBasedResolutionCapEnabled?: boolean;
482
+ separateVideoSocketEnabled?: boolean;
483
+ webcodecsEnabled?: boolean;
484
+ webcodecsHardwareAcceleration?: WebCodecsHardwareAccelerationPreference;
485
+ offscreenCanvasEnabled?: boolean;
486
+ videoCodecs?: string[];
487
+ }
488
+ type Namespace = Tagged<Array<string>, "Namespace">;
489
+ interface TrackObject {
490
+ namespace?: Namespace;
491
+ name: string;
492
+ format: string;
493
+ label?: string;
494
+ renderGroup?: number;
495
+ altGroup?: number;
496
+ initData?: string;
497
+ initTrack?: string;
498
+ depends?: Array<string>;
499
+ temporalId?: number;
500
+ spatialId?: number;
501
+ codec?: string;
502
+ mimeType?: string;
503
+ framerate?: [
504
+ number,
505
+ number
506
+ ];
507
+ bitrate?: number;
508
+ width?: number;
509
+ height?: number;
510
+ samplerate?: number;
511
+ channelConfig?: string;
512
+ displayWidth?: number;
513
+ displayHeight?: number;
514
+ language?: string;
515
+ ["com.vindral.variant_uid"]?: string;
516
+ ["com.vindral.drm"]?: string;
517
+ }
518
+ interface CatalogRoot {
519
+ version: number;
520
+ streamingFormat?: number;
521
+ streamingFormatVersion?: string;
522
+ }
523
+ interface TracksCatalog extends CatalogRoot {
524
+ namespace: Namespace;
525
+ tracks: Array<TrackObject>;
526
+ }
527
+ interface Telemetry {
528
+ url: string;
529
+ probability?: number;
530
+ includeErrors?: boolean;
531
+ includeEvents?: boolean;
532
+ includeStats?: boolean;
533
+ maxRetries?: number;
534
+ maxErrorReports?: number;
535
+ interval?: number;
536
+ }
537
+ interface ChannelWithCatalog extends Channel {
538
+ catalog: TracksCatalog;
539
+ renditions: Rendition[];
540
+ overrides?: ClientOverrides;
541
+ }
542
+ interface ChannelWithRenditions extends Channel {
543
+ renditions: Rendition[];
544
+ overrides?: ClientOverrides;
545
+ }
546
+ interface ServerCertificateHash {
547
+ algorithm: string;
548
+ value: string;
549
+ }
550
+ interface Edge {
551
+ moqUrl?: string;
552
+ moqWsUrl: string;
553
+ serverCertificateHashes?: ServerCertificateHash[];
554
+ }
555
+ interface MoQConnectInfo {
556
+ logsUrl?: string;
557
+ statsUrl?: string;
558
+ telemetry?: Telemetry;
559
+ channels: ChannelWithCatalog[];
560
+ edges: Edge[];
561
+ timeshift: {
562
+ urls: string[];
563
+ duration: string;
564
+ };
565
+ }
566
+ interface VindralConnectInfo {
567
+ logsUrl?: string;
568
+ statsUrl?: string;
569
+ telemetry?: Telemetry;
570
+ channels: ChannelWithRenditions[];
571
+ edges: string[];
572
+ }
573
+ type ConnectInfo = VindralConnectInfo | MoQConnectInfo;
574
+ interface Metadata {
575
+ /**
576
+ * The raw string content as it was ingested (if using JSON, it needs to be parsed on your end)
577
+ */
578
+ content: string;
579
+ /**
580
+ * Timestamp in ms
581
+ */
582
+ timestamp: number;
583
+ }
584
+ interface TimeRange {
585
+ /** */
586
+ start: number;
587
+ /** */
588
+ end: number;
589
+ }
522
590
  interface RenditionLevel {
523
591
  /** */
524
592
  audio?: AudioRendition;
@@ -851,38 +919,6 @@ interface VideoPlayerStatistics {
851
919
  contextLostCount: number;
852
920
  contextRestoredCount: number;
853
921
  }
854
- declare class UserAgentInformation {
855
- private highEntropyValues?;
856
- constructor();
857
- getUserAgentInformation(): {
858
- locationOrigin: string;
859
- locationPath: string;
860
- ancestorOrigins: string[] | undefined;
861
- hardwareConcurrency: number;
862
- deviceMemory: number | undefined;
863
- userAgentLegacy: string;
864
- ua: {
865
- browser: {
866
- brands: string[];
867
- fullVersionBrands: string[];
868
- majorVersions: string[];
869
- };
870
- device: string;
871
- os: {
872
- family: string;
873
- version: string;
874
- major_version: number;
875
- };
876
- };
877
- } | {
878
- locationOrigin: string;
879
- locationPath: string;
880
- ancestorOrigins: string[] | undefined;
881
- hardwareConcurrency: number;
882
- deviceMemory: number | undefined;
883
- userAgent: string;
884
- };
885
- }
886
922
  type ModuleStatistics = AdaptivityStatistics & BufferTimeStatistics & ConnectionStatistics & ConstraintCapStatistics & DecoderStatistics & DocumentStateModulesStatistics & IncomingDataModuleStatistics & JitterModuleStatistics & MseModuleStatistics & PlaybackModuleStatistics & QualityOfServiceModuleStatistics & RenditionsModuleStatistics & SyncModuleStatistics & TelemetryModuleStatistics & VideoPlayerStatistics;
887
923
  type Statistics = ModuleStatistics & ReturnType<UserAgentInformation["getUserAgentInformation"]> & {
888
924
  /**
@@ -1544,6 +1580,39 @@ declare class AirPlayButton extends VindralButton {
1544
1580
  get isAirPlaying(): boolean;
1545
1581
  protected handleClick(_: Event): void;
1546
1582
  }
1583
+ declare class VindralMenuButton extends VindralButton {
1584
+ #private;
1585
+ constructor();
1586
+ connectedCallback(): void;
1587
+ set button(button: HTMLElement);
1588
+ set listbox(listbox: HTMLElement);
1589
+ set listboxSlot(listboxSlot: HTMLElement);
1590
+ enable(): void;
1591
+ hide(): void;
1592
+ protected handleClick(e: Event): void;
1593
+ }
1594
+ type AdvancedRenditionMenuAttributes = (typeof AdvancedRenditionMenu.observedAttributes)[number];
1595
+ declare class AdvancedRenditionMenu extends VindralMenuButton {
1596
+ #private;
1597
+ static observedAttributes: string[];
1598
+ constructor();
1599
+ connectedCallback(): void;
1600
+ attributeChangedCallback(name: string, old: string, value: string): void;
1601
+ }
1602
+ type AdvancedRenditionMenuListAttributes = (typeof AdvancedRenditionMenuList.observedAttributes)[number];
1603
+ declare class AdvancedRenditionMenuList extends HTMLElement {
1604
+ #private;
1605
+ static observedAttributes: ("rendition-levels" | "rendition-level" | "max-video-bit-rate" | "abr-enabled" | "size-based-resolution-cap-enabled")[];
1606
+ constructor();
1607
+ connectedCallback(): void;
1608
+ disconnectedCallback(): void;
1609
+ attributeChangedCallback(name: string, old: string | null, value: string | null): void;
1610
+ private set list(value);
1611
+ private set maxVideoBitrate(value);
1612
+ get keysUsed(): string[];
1613
+ handleEvent: (event: Event) => void;
1614
+ focus(): void;
1615
+ }
1547
1616
  type BufferingIconAttributes = (typeof BufferingIcon.observedAttributes)[number];
1548
1617
  declare class BufferingIcon extends HTMLElement {
1549
1618
  #private;
@@ -1729,7 +1798,7 @@ type ControllerAttributes = (typeof Controller.observedAttributes)[number];
1729
1798
  declare class Controller extends HTMLElement {
1730
1799
  #private;
1731
1800
  static observedAttributes: readonly [
1732
- ...("language" | "channels" | "buffering" | "paused" | "volume" | "muted" | "duration" | "user-interacting" | "is-casting" | "cast-available" | "cast-receiver-name" | "ui-locked" | "hide-ui-on-pause" | "is-fullscreen" | "is-fullscreen-fallback" | "rendition-levels" | "rendition-level" | "max-video-bit-rate" | "max-initial-bit-rate" | "channel-id" | "channel-group-id" | "pip-available" | "is-pip" | "airplay-available" | "is-airplaying" | "media" | "languages" | "text-tracks" | "text-track" | "needs-user-input-video" | "needs-user-input-audio" | "authentication-token" | "volume-level" | "cast" | "airplay" | "pip" | "fullscreen" | "vu-meter" | "timeshift" | "timeshift-position" | "poster-src")[],
1801
+ ...("language" | "channels" | "buffering" | "paused" | "volume" | "muted" | "duration" | "user-interacting" | "is-casting" | "cast-available" | "cast-receiver-name" | "ui-locked" | "hide-ui-on-pause" | "is-fullscreen" | "is-fullscreen-fallback" | "rendition-levels" | "rendition-level" | "max-video-bit-rate" | "max-initial-bit-rate" | "abr-enabled" | "size-based-resolution-cap-enabled" | "channel-id" | "channel-group-id" | "pip-available" | "is-pip" | "airplay-available" | "is-airplaying" | "media" | "languages" | "text-tracks" | "text-track" | "needs-user-input-video" | "needs-user-input-audio" | "authentication-token" | "volume-level" | "cast" | "airplay" | "pip" | "fullscreen" | "vu-meter" | "timeshift" | "timeshift-position" | "poster-src")[],
1733
1802
  "url",
1734
1803
  "edge-url",
1735
1804
  "target-buffer-time",
@@ -1760,6 +1829,9 @@ declare class Controller extends HTMLElement {
1760
1829
  "drm-playready-video-robustness",
1761
1830
  "drm-playready-audio-robustness",
1762
1831
  "webtransport-enabled",
1832
+ "webcodecs-enabled",
1833
+ "webcodecs-hardware-acceleration",
1834
+ "offscreen-canvas-enabled",
1763
1835
  "reconnect-retries",
1764
1836
  "auto-instance-enabled",
1765
1837
  "language"
@@ -1788,17 +1860,6 @@ declare class FullscreenButton extends VindralButton {
1788
1860
  get isFullscreen(): boolean;
1789
1861
  protected handleClick(_: Event): void;
1790
1862
  }
1791
- declare class VindralMenuButton extends VindralButton {
1792
- #private;
1793
- constructor();
1794
- connectedCallback(): void;
1795
- set button(button: HTMLElement);
1796
- set listbox(listbox: HTMLElement);
1797
- set listboxSlot(listboxSlot: HTMLElement);
1798
- enable(): void;
1799
- hide(): void;
1800
- protected handleClick(e: Event): void;
1801
- }
1802
1863
  type LanguageMenuAttributes = (typeof LanguageMenu.observedAttributes)[number];
1803
1864
  declare class LanguageMenu extends VindralMenuButton {
1804
1865
  #private;
@@ -1859,7 +1920,7 @@ declare class PlayButton extends VindralButton {
1859
1920
  type PlayerAttributes = (typeof Player.observedAttributes)[number];
1860
1921
  declare class Player extends HTMLElement {
1861
1922
  #private;
1862
- static observedAttributes: readonly ("title" | "advanced" | "poster" | "language" | "channels" | "buffering" | "paused" | "volume" | "muted" | "duration" | "user-interacting" | "is-casting" | "cast-available" | "cast-receiver-name" | "ui-locked" | "hide-ui-on-pause" | "is-fullscreen" | "is-fullscreen-fallback" | "rendition-levels" | "rendition-level" | "max-video-bit-rate" | "max-initial-bit-rate" | "channel-id" | "channel-group-id" | "pip-available" | "is-pip" | "airplay-available" | "is-airplaying" | "media" | "languages" | "text-tracks" | "text-track" | "needs-user-input-video" | "needs-user-input-audio" | "authentication-token" | "volume-level" | "cast" | "airplay" | "pip" | "fullscreen" | "vu-meter" | "timeshift" | "timeshift-position" | "poster-src" | "url" | "offline" | "edge-url" | "target-buffer-time" | "cast-receiver-id" | "cast-background" | "log-level" | "max-size" | "min-buffer-time" | "max-buffer-time" | "max-audio-bit-rate" | "burst-enabled" | "mse-enabled" | "mse-opus-enabled" | "ios-background-play-enabled" | "ios-wake-lock-enabled" | "ios-media-element-enabled" | "abr-enabled" | "size-based-resolution-cap-enabled" | "telemetry-enabled" | "video-codecs" | "drm-headers" | "drm-queryparams" | "drm-widevine-video-robustness" | "drm-widevine-audio-robustness" | "drm-playready-video-robustness" | "drm-playready-audio-robustness" | "webtransport-enabled" | "reconnect-retries" | "auto-instance-enabled" | "refresh-poster-enabled" | "stream-poll-enabled")[];
1923
+ static observedAttributes: readonly ("title" | "offline" | "advanced" | "poster" | "language" | "channels" | "buffering" | "paused" | "volume" | "muted" | "duration" | "user-interacting" | "is-casting" | "cast-available" | "cast-receiver-name" | "ui-locked" | "hide-ui-on-pause" | "is-fullscreen" | "is-fullscreen-fallback" | "rendition-levels" | "rendition-level" | "max-video-bit-rate" | "max-initial-bit-rate" | "abr-enabled" | "size-based-resolution-cap-enabled" | "channel-id" | "channel-group-id" | "pip-available" | "is-pip" | "airplay-available" | "is-airplaying" | "media" | "languages" | "text-tracks" | "text-track" | "needs-user-input-video" | "needs-user-input-audio" | "authentication-token" | "volume-level" | "cast" | "airplay" | "pip" | "fullscreen" | "vu-meter" | "timeshift" | "timeshift-position" | "poster-src" | "url" | "edge-url" | "target-buffer-time" | "cast-receiver-id" | "cast-background" | "log-level" | "max-size" | "min-buffer-time" | "max-buffer-time" | "max-audio-bit-rate" | "burst-enabled" | "mse-enabled" | "mse-opus-enabled" | "ios-background-play-enabled" | "ios-wake-lock-enabled" | "ios-media-element-enabled" | "telemetry-enabled" | "video-codecs" | "drm-headers" | "drm-queryparams" | "drm-widevine-video-robustness" | "drm-widevine-audio-robustness" | "drm-playready-video-robustness" | "drm-playready-audio-robustness" | "webtransport-enabled" | "webcodecs-enabled" | "webcodecs-hardware-acceleration" | "offscreen-canvas-enabled" | "reconnect-retries" | "auto-instance-enabled" | "advanced-rendition-menu-enabled" | "refresh-poster-enabled" | "stream-poll-enabled")[];
1863
1924
  constructor();
1864
1925
  connectedCallback(): void;
1865
1926
  disconnectedCallback(): void;
@@ -1918,7 +1979,7 @@ declare class ScrollOverlay extends HTMLElement {
1918
1979
  constructor();
1919
1980
  connectedCallback(): void;
1920
1981
  disconnectedCallback(): void;
1921
- attributeChangedCallback(name: string, old: string, value: string): void;
1982
+ attributeChangedCallback(name: string, old: string | null, value: string | null): void;
1922
1983
  handleEvent: (event: Event) => void;
1923
1984
  set open(value: boolean);
1924
1985
  get open(): boolean;
@@ -1990,6 +2051,8 @@ type CustomElement<T, K extends string> = Partial<Omit<DetailedHTMLProps<HtmlHTM
1990
2051
  export declare interface VindralIntrinsicElements {
1991
2052
  "vindral-controller": CustomElement<Controller, ControllerAttributes>;
1992
2053
  "vindral-control-bar": CustomElement<ControlBar, never>;
2054
+ "vindral-advanced-rendition-menu": CustomElement<AdvancedRenditionMenu, AdvancedRenditionMenuAttributes>;
2055
+ "vindral-advanced-rendition-menu-list": CustomElement<AdvancedRenditionMenuList, AdvancedRenditionMenuListAttributes>;
1993
2056
  "vindral-play-button": CustomElement<PlayButton, PlayButtonAttributes>;
1994
2057
  "vindral-mute-button": CustomElement<MuteButton, MuteButtonAttributes>;
1995
2058
  "vindral-buffering-overlay": CustomElement<BufferingOverlay, BufferingOverlayAttributes>;
package/uEFjK_x4.js ADDED
@@ -0,0 +1,52 @@
1
+ var c = Object.defineProperty;
2
+ var d = (r, s, e) => s in r ? c(r, s, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[s] = e;
3
+ var o = (r, s, e) => d(r, typeof s != "symbol" ? s + "" : s, e);
4
+ class u {
5
+ constructor() {
6
+ o(this, "listeners", {});
7
+ }
8
+ emit(s, e) {
9
+ const i = this.listeners[s];
10
+ if (i) {
11
+ let l = !1;
12
+ for (let t = 0; t < i.length; t++)
13
+ if (i[t].once) {
14
+ l = !0;
15
+ break;
16
+ }
17
+ l && (this.listeners[s] = i.filter((t) => !t.once));
18
+ let n;
19
+ const h = i.length;
20
+ for (let t = 0; t < h; t++) {
21
+ const f = i[t].fn(e);
22
+ typeof f == "function" && (n || (n = []), n.push(f));
23
+ }
24
+ if (n)
25
+ for (let t = 0; t < n.length; t++)
26
+ n[t]();
27
+ }
28
+ }
29
+ off(s, e) {
30
+ const i = this.listeners[s];
31
+ i && (this.listeners[s] = i.filter((l) => l.fn !== e));
32
+ }
33
+ on(s, e) {
34
+ this.add(s, e, !1);
35
+ }
36
+ once(s, e) {
37
+ this.add(s, e, !0);
38
+ }
39
+ /**
40
+ * Reset the event emitter
41
+ */
42
+ reset() {
43
+ this.listeners = {};
44
+ }
45
+ add(s, e, i) {
46
+ const l = this.listeners[s], n = { fn: e, once: i };
47
+ l ? l.push(n) : this.listeners[s] = [n];
48
+ }
49
+ }
50
+ export {
51
+ u as E
52
+ };
package/Bx7s5QdT.js DELETED
@@ -1,35 +0,0 @@
1
- var f = Object.defineProperty;
2
- var o = (n, s, e) => s in n ? f(n, s, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[s] = e;
3
- var l = (n, s, e) => o(n, typeof s != "symbol" ? s + "" : s, e);
4
- class c {
5
- constructor() {
6
- l(this, "listeners", {});
7
- }
8
- emit(s, e) {
9
- const i = this.listeners[s];
10
- i && (this.listeners[s] = i.filter((t) => !t.once), i.map((t) => t.fn(e)).map((t) => typeof t == "function" && (t == null ? void 0 : t())));
11
- }
12
- off(s, e) {
13
- const i = this.listeners[s];
14
- i && (this.listeners[s] = i.filter((r) => r.fn !== e));
15
- }
16
- on(s, e) {
17
- this.add(s, e, !1);
18
- }
19
- once(s, e) {
20
- this.add(s, e, !0);
21
- }
22
- /**
23
- * Reset the event emitter
24
- */
25
- reset() {
26
- this.listeners = {};
27
- }
28
- add(s, e, i) {
29
- const r = this.listeners[s], t = { fn: e, once: i };
30
- r ? r.push(t) : this.listeners[s] = [t];
31
- }
32
- }
33
- export {
34
- c as E
35
- };