@codercms/web-player 0.0.37 → 0.0.41

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.
Files changed (75) hide show
  1. package/dist/core/AudioCtx/AudioContext.d.ts +2 -0
  2. package/dist/core/AudioCtx/AudioContext.js +92 -0
  3. package/dist/core/AudioCtx/AudioContext.js.map +1 -0
  4. package/dist/core/Loaders/BaseLoader.d.ts +17 -0
  5. package/dist/core/Loaders/BaseLoader.js +50 -0
  6. package/dist/core/Loaders/BaseLoader.js.map +1 -0
  7. package/dist/core/Loaders/HLSLoader.d.ts +17 -0
  8. package/dist/core/Loaders/HLSLoader.js +313 -0
  9. package/dist/core/Loaders/HLSLoader.js.map +1 -0
  10. package/dist/core/{LoaderInterface.d.ts → Loaders/LoaderInterface.d.ts} +11 -3
  11. package/dist/core/{LoaderInterface.js → Loaders/LoaderInterface.js} +6 -0
  12. package/dist/core/{LoaderInterface.js.map → Loaders/LoaderInterface.js.map} +1 -1
  13. package/dist/core/Loaders/NativeAudioTrackList.d.ts +39 -0
  14. package/dist/core/Loaders/NativeAudioTrackList.js.map +1 -0
  15. package/dist/core/Loaders/NativeLoader.d.ts +16 -0
  16. package/dist/core/Loaders/NativeLoader.js +114 -0
  17. package/dist/core/Loaders/NativeLoader.js.map +1 -0
  18. package/dist/core/Playlist.d.ts +4 -3
  19. package/dist/core/Playlist.js.map +1 -1
  20. package/dist/core/PlaylistPlayer.d.ts +3 -2
  21. package/dist/core/PlaylistPlayer.js +5 -3
  22. package/dist/core/PlaylistPlayer.js.map +1 -1
  23. package/dist/core/VideoPlayer.d.ts +19 -191
  24. package/dist/core/VideoPlayer.js +92 -594
  25. package/dist/core/VideoPlayer.js.map +1 -1
  26. package/dist/core/VideoPlayerEvents.d.ts +74 -0
  27. package/dist/core/VideoPlayerEvents.js +40 -0
  28. package/dist/core/VideoPlayerEvents.js.map +1 -0
  29. package/dist/core/VideoPlayerMediaLoadManager.d.ts +50 -0
  30. package/dist/core/VideoPlayerMediaLoadManager.js +269 -0
  31. package/dist/core/VideoPlayerMediaLoadManager.js.map +1 -0
  32. package/dist/core/VideoPlayerMediaState.d.ts +39 -0
  33. package/dist/core/VideoPlayerMediaState.js +161 -0
  34. package/dist/core/VideoPlayerMediaState.js.map +1 -0
  35. package/dist/core/VideoPlayerMediaStateProxy.d.ts +17 -0
  36. package/dist/core/VideoPlayerMediaStateProxy.js +42 -0
  37. package/dist/core/VideoPlayerMediaStateProxy.js.map +1 -0
  38. package/dist/core/svelte/VideoPlayerMediaStateSvelteStore.d.ts +58 -0
  39. package/dist/core/svelte/VideoPlayerMediaStateSvelteStore.js +146 -0
  40. package/dist/core/svelte/VideoPlayerMediaStateSvelteStore.js.map +1 -0
  41. package/dist/core/types/BufferedPart.d.ts +4 -0
  42. package/dist/core/types/BufferedPart.js +1 -0
  43. package/dist/core/types/BufferedPart.js.map +1 -0
  44. package/dist/core/types/PlayerLoadParams.d.ts +11 -0
  45. package/dist/core/types/PlayerLoadParams.js +1 -0
  46. package/dist/core/types/PlayerLoadParams.js.map +1 -0
  47. package/dist/core/types/QualityLevel.js +1 -0
  48. package/dist/core/types/index.d.ts +4 -0
  49. package/dist/core/types/index.js +1 -0
  50. package/dist/core/types/index.js.map +1 -0
  51. package/dist/index.d.ts +9 -4
  52. package/dist/index.js +9 -4
  53. package/dist/ui/LoadingIndicator.svelte +35 -16
  54. package/dist/ui/LoadingIndicator.svelte.d.ts +1 -1
  55. package/dist/ui/ProgressBar.svelte +7 -8
  56. package/dist/ui/ProgressBar.svelte.d.ts +1 -1
  57. package/package.json +1 -1
  58. package/dist/HybridDoublyLinkedList.d.ts +0 -20
  59. package/dist/HybridDoublyLinkedList.js +0 -90
  60. package/dist/HybridDoublyLinkedList.js.map +0 -1
  61. package/dist/HybridLinkedList.d.ts +0 -18
  62. package/dist/HybridLinkedList.js +0 -90
  63. package/dist/HybridLinkedList.js.map +0 -1
  64. package/dist/core/HLSLoader.d.ts +0 -19
  65. package/dist/core/HLSLoader.js +0 -196
  66. package/dist/core/HLSLoader.js.map +0 -1
  67. package/dist/core/NativeLoader.d.ts +0 -14
  68. package/dist/core/NativeLoader.js +0 -66
  69. package/dist/core/NativeLoader.js.map +0 -1
  70. /package/dist/core/{AudioTrack.js → Loaders/NativeAudioTrackList.js} +0 -0
  71. /package/dist/core/{AudioTrack.d.ts → types/AudioTrack.d.ts} +0 -0
  72. /package/dist/core/{QualityLevel.js → types/AudioTrack.js} +0 -0
  73. /package/dist/core/{AudioTrack.js.map → types/AudioTrack.js.map} +0 -0
  74. /package/dist/core/{QualityLevel.d.ts → types/QualityLevel.d.ts} +0 -0
  75. /package/dist/core/{QualityLevel.js.map → types/QualityLevel.js.map} +0 -0
@@ -1,13 +1,12 @@
1
- <script>import { PlayerEvents } from "../core/VideoPlayer";
2
- import { LoaderEvents } from "../core/LoaderInterface";
1
+ <script>import { PlayerEvents } from "../core/VideoPlayerEvents.js";
3
2
  import { onMount } from "svelte";
4
3
  import {
5
4
  getValueByMousePos,
6
5
  getValueForDragEvent,
7
6
  normalizePointerPos,
8
7
  draggableAction
9
- } from "./utils/slider";
10
- import { toDuration } from "./utils/duration";
8
+ } from "./utils/slider.js";
9
+ import { toDuration } from "./utils/duration.js";
11
10
  export let player;
12
11
  let selfEl;
13
12
  let currentTime = 0;
@@ -38,16 +37,16 @@ onMount(() => {
38
37
  currentTime = player.currentTime;
39
38
  duration = player.duration;
40
39
  buffered = player.buffered;
41
- player.subscribe(PlayerEvents.PlaybackDurationChange, (newDuration) => {
40
+ player.subscribe(PlayerEvents.DurationChange, (newDuration) => {
42
41
  duration = newDuration;
43
42
  });
44
- player.subscribe(PlayerEvents.PlaybackTimeUpdate, (newCurrentTime) => {
43
+ player.subscribe(PlayerEvents.CurrentTimeUpdate, (newCurrentTime) => {
45
44
  currentTime = newCurrentTime;
46
45
  });
47
- player.subscribe(PlayerEvents.PlaybackBufferingProgress, (newBuffered) => {
46
+ player.subscribe(PlayerEvents.BufferingProgress, (newBuffered) => {
48
47
  buffered = newBuffered;
49
48
  });
50
- player.subscribe(LoaderEvents.Loading, () => {
49
+ player.subscribe(PlayerEvents.BeforeLoading, () => {
51
50
  currentTime = 0;
52
51
  duration = 0;
53
52
  currentTImeOffset = 0;
@@ -1,5 +1,5 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import type { VideoPlayer } from '../core/VideoPlayer';
2
+ import type { VideoPlayer } from '../core/VideoPlayer.js';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  player: VideoPlayer;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codercms/web-player",
3
- "version": "0.0.37",
3
+ "version": "0.0.41",
4
4
  "scripts": {
5
5
  "dev": "vite dev --host=0.0.0.0 --port=5174",
6
6
  "build": "vite build && npm run package",
@@ -1,20 +0,0 @@
1
- export declare class DoublyListNode<T> {
2
- data: T;
3
- next: DoublyListNode<T> | null;
4
- prev: DoublyListNode<T> | null;
5
- constructor(data: T);
6
- }
7
- export declare class HybridDoublyLinkedList<T> {
8
- private _head;
9
- private _tail;
10
- private _size;
11
- private _flatList;
12
- head(): DoublyListNode<T> | null;
13
- tail(): DoublyListNode<T> | null;
14
- append(data: T): void;
15
- remove(data: T): void;
16
- find(item: T): DoublyListNode<T> | null;
17
- toArray(): T[];
18
- getSize(): number;
19
- [Symbol.iterator](): Iterator<T>;
20
- }
@@ -1,90 +0,0 @@
1
- export class DoublyListNode {
2
- data;
3
- next;
4
- prev;
5
- constructor(data) {
6
- this.data = data;
7
- this.next = null;
8
- this.prev = null;
9
- }
10
- }
11
- export class HybridDoublyLinkedList {
12
- _head = null;
13
- _tail = null;
14
- _size = 0;
15
- _flatList = [];
16
- head() {
17
- return this._head;
18
- }
19
- tail() {
20
- return this._tail;
21
- }
22
- // Add a new node to the end of the linked list.
23
- append(data) {
24
- const newNode = new DoublyListNode(data);
25
- if (!this._head) {
26
- this._head = newNode;
27
- this._tail = newNode;
28
- }
29
- else {
30
- newNode.prev = this._tail;
31
- this._tail.next = newNode;
32
- this._tail = newNode;
33
- }
34
- this._size++;
35
- this._flatList.push(data);
36
- }
37
- // Remove the first occurrence of a node with the given data.
38
- remove(data) {
39
- let current = this._head;
40
- while (current) {
41
- if (current.data === data) {
42
- if (current.prev) {
43
- current.prev.next = current.next;
44
- }
45
- else {
46
- this._head = current.next;
47
- }
48
- if (current.next) {
49
- current.next.prev = current.prev;
50
- }
51
- else {
52
- this._tail = current.prev;
53
- }
54
- this._size--;
55
- const indexToRemove = this._flatList.indexOf(data);
56
- if (indexToRemove !== -1) {
57
- this._flatList.splice(indexToRemove, 1);
58
- }
59
- return;
60
- }
61
- current = current.next;
62
- }
63
- }
64
- find(item) {
65
- let current = this._head;
66
- while (current) {
67
- if (current.data === item) {
68
- return current;
69
- }
70
- current = current.next;
71
- }
72
- return null;
73
- }
74
- // Convert the linked list to an array for easier access and iteration.
75
- toArray() {
76
- return this._flatList;
77
- }
78
- // Get the size (number of nodes) of the linked list.
79
- getSize() {
80
- return this._size;
81
- }
82
- // Implement the Symbol.iterator method for iteration.
83
- *[Symbol.iterator]() {
84
- let current = this._head;
85
- while (current) {
86
- yield current.data;
87
- current = current.next;
88
- }
89
- }
90
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"HybridDoublyLinkedList.js","sourceRoot":"","sources":["HybridDoublyLinkedList.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- export declare class ListNode<T> {
2
- data: T;
3
- next: ListNode<T> | null;
4
- constructor(data: T);
5
- }
6
- export declare class HybridLinkedList<T> {
7
- private head;
8
- private tail;
9
- private size;
10
- private flatList;
11
- constructor();
12
- getHead(): ListNode<T> | null;
13
- append(data: T): void;
14
- remove(data: T): void;
15
- toArray(): T[];
16
- getSize(): number;
17
- [Symbol.iterator](): Iterator<T>;
18
- }
@@ -1,90 +0,0 @@
1
- export class ListNode {
2
- data;
3
- next;
4
- constructor(data) {
5
- this.data = data;
6
- this.next = null;
7
- }
8
- }
9
- export class HybridLinkedList {
10
- head;
11
- tail;
12
- size;
13
- flatList;
14
- constructor() {
15
- this.head = null;
16
- this.tail = null;
17
- this.size = 0;
18
- this.flatList = [];
19
- }
20
- getHead() {
21
- return this.head ?? null;
22
- }
23
- // Add a new node to the end of the linked list.
24
- append(data) {
25
- const newNode = new ListNode(data);
26
- if (!this.head) {
27
- this.head = newNode;
28
- this.tail = newNode;
29
- }
30
- else {
31
- this.tail.next = newNode;
32
- this.tail = newNode;
33
- }
34
- this.size++;
35
- this.flatList.push(data);
36
- }
37
- // Remove the first occurrence of a node with the given data.
38
- remove(data) {
39
- if (!this.head)
40
- return;
41
- if (this.head.data === data) {
42
- this.head = this.head.next;
43
- if (!this.head)
44
- this.tail = null;
45
- this.size--;
46
- this.flatList.shift();
47
- return;
48
- }
49
- let current = this.head;
50
- while (current.next) {
51
- if (current.next.data === data) {
52
- current.next = current.next.next;
53
- if (!current.next)
54
- this.tail = current;
55
- this.size--;
56
- const indexToRemove = this.flatList.indexOf(data);
57
- if (indexToRemove !== -1)
58
- this.flatList.splice(indexToRemove, 1);
59
- return;
60
- }
61
- current = current.next;
62
- }
63
- }
64
- // Convert the linked list to an array for easier access and iteration.
65
- toArray() {
66
- return this.flatList;
67
- }
68
- // Get the size (number of nodes) of the linked list.
69
- getSize() {
70
- return this.size;
71
- }
72
- // Define the Symbol.iterator method to make the list iterable.
73
- [Symbol.iterator]() {
74
- let current = this.head;
75
- let index = 0;
76
- return {
77
- next: () => {
78
- if (current) {
79
- const value = current.data;
80
- current = current.next;
81
- index++;
82
- return { value, done: false };
83
- }
84
- else {
85
- return { value: undefined, done: true };
86
- }
87
- }
88
- };
89
- }
90
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"HybridLinkedList.js","sourceRoot":"","sources":["HybridLinkedList.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import { type LoaderEventsMap, type LoaderInterface, type LoadParams } from './LoaderInterface.js';
2
- import Hls, { type HlsConfig } from 'hls.js';
3
- import type { EventEmitter } from 'eventemitter3';
4
- export type HLSLoaderConfig = Partial<HlsConfig>;
5
- export declare class HLSLoader implements LoaderInterface {
6
- private emitter;
7
- private el;
8
- protected hls: Hls | null;
9
- protected hlsConfig: HLSLoaderConfig;
10
- constructor(emitter: EventEmitter<LoaderEventsMap>, el: HTMLVideoElement, hlsConfig?: HLSLoaderConfig);
11
- load(params: LoadParams): Promise<void>;
12
- private _onLevelsUpdated;
13
- switchAudioTrack(id: number, graceful: boolean): void;
14
- switchQualityLevel(id: number, graceful: boolean): void;
15
- getAutoQualityLevelId(): number;
16
- stop(): void;
17
- isSupported(): boolean;
18
- }
19
- export declare function isHlsJsSupported(): boolean;
@@ -1,196 +0,0 @@
1
- import { LoaderEvents } from './LoaderInterface.js';
2
- import Hls, {} from 'hls.js';
3
- const autoQualityLevelId = -1;
4
- export class HLSLoader {
5
- emitter;
6
- el;
7
- hls = null;
8
- hlsConfig;
9
- constructor(emitter, el, hlsConfig) {
10
- this.emitter = emitter;
11
- this.el = el;
12
- if (!this.isSupported()) {
13
- throw Error('HLS.js is not supported');
14
- }
15
- if (hlsConfig) {
16
- this.hlsConfig = { ...hlsConfig };
17
- }
18
- else {
19
- this.hlsConfig = {};
20
- }
21
- }
22
- async load(params) {
23
- if (params.abortSignal.aborted) {
24
- return Promise.reject(new DOMException('Operation aborted', 'AbortError'));
25
- }
26
- this.emitter.emit(LoaderEvents.Loading, params);
27
- // Cancel any ongoing loading
28
- if (this.hls) {
29
- this.stop();
30
- }
31
- const cfg = { ...this.hlsConfig };
32
- if ((params.startPosition ?? 0) > 0) {
33
- cfg.startPosition = params.startPosition;
34
- }
35
- if ((params.startLevel ?? 0) > 0) {
36
- cfg.startLevel = params.startLevel;
37
- }
38
- const hls = new Hls(cfg);
39
- this.hls = hls;
40
- hls.attachMedia(this.el);
41
- return new Promise((resolve, reject) => {
42
- // Handle abort signal
43
- const onAbort = () => {
44
- this.stop();
45
- reject(new DOMException('Loading aborted', 'AbortError'));
46
- };
47
- params.abortSignal.addEventListener('abort', onAbort);
48
- const onError = (event, data) => {
49
- params.abortSignal.removeEventListener('abort', onAbort);
50
- hls.off(Hls.Events.MANIFEST_PARSED, onManifestParsed);
51
- this.emitter.emit(LoaderEvents.Error, {
52
- message: `HLS loading error: ${data.error.message}`,
53
- data
54
- });
55
- reject(new Error(`HLS loading error: ${data.error.message}`));
56
- };
57
- const onManifestParsed = (event, data) => {
58
- params.abortSignal.removeEventListener('abort', onAbort);
59
- hls.off(Hls.Events.ERROR, onError);
60
- this.emitter.emit(LoaderEvents.Loaded, params);
61
- this._onLevelsUpdated(data.levels);
62
- // Add errors recovering listener
63
- hls.on(Hls.Events.ERROR, (event, data) => {
64
- if (data.fatal) {
65
- switch (data.type) {
66
- case Hls.ErrorTypes.MEDIA_ERROR:
67
- console.log('fatal media error encountered, try to recover');
68
- hls.recoverMediaError();
69
- break;
70
- case Hls.ErrorTypes.NETWORK_ERROR:
71
- console.error('fatal network error encountered', data);
72
- this.emitter.emit(LoaderEvents.Error, {
73
- message: `fatal network error: ${data.error.message}`,
74
- data
75
- });
76
- // All retries and media options have been exhausted.
77
- // Immediately trying to restart loading could cause loop loading.
78
- // Consider modifying loading policies to best fit your asset and network
79
- // conditions (manifestLoadPolicy, playlistLoadPolicy, fragLoadPolicy).
80
- break;
81
- default:
82
- console.error('unknown fatal error encountered', data);
83
- this.emitter.emit(LoaderEvents.Error, {
84
- message: `unknown fatal error: ${data.error.message}`,
85
- data
86
- });
87
- // cannot recover
88
- hls.destroy();
89
- break;
90
- }
91
- }
92
- });
93
- resolve();
94
- };
95
- hls.once(Hls.Events.ERROR, onError);
96
- hls.once(Hls.Events.MANIFEST_PARSED, onManifestParsed);
97
- hls.on(Hls.Events.LEVEL_SWITCHING, (event, data) => {
98
- this.emitter.emit(LoaderEvents.QualityLevelSwitching, data.level, hls.autoLevelEnabled);
99
- });
100
- hls.on(Hls.Events.LEVEL_SWITCHED, (event, data) => {
101
- this.emitter.emit(LoaderEvents.QualityLevelSwitched, data.level, hls.autoLevelEnabled);
102
- });
103
- hls.on(Hls.Events.LEVELS_UPDATED, (event, data) => {
104
- this._onLevelsUpdated(data.levels);
105
- });
106
- hls.on(Hls.Events.AUDIO_TRACK_SWITCHING, (event, data) => {
107
- this.emitter.emit(LoaderEvents.AudioTrackSwitching, data.id);
108
- });
109
- hls.on(Hls.Events.AUDIO_TRACK_SWITCHED, (event, data) => {
110
- this.emitter.emit(LoaderEvents.AudioTrackSwitching, data.id);
111
- });
112
- hls.on(Hls.Events.AUDIO_TRACKS_UPDATED, (event, data) => {
113
- const tracks = [];
114
- for (const track of data.audioTracks) {
115
- tracks.push({
116
- id: track.id,
117
- name: track.name,
118
- bitrate: track.bitrate,
119
- loaderData: track
120
- });
121
- }
122
- this.emitter.emit(LoaderEvents.AudioTracksUpdated, tracks);
123
- });
124
- hls.loadSource(params.url);
125
- });
126
- }
127
- _onLevelsUpdated(levels) {
128
- const newLevels = [];
129
- let idx = 0;
130
- for (const level of levels) {
131
- const newLvl = {
132
- id: idx,
133
- width: level.width,
134
- height: level.height,
135
- bitrate: level.bitrate,
136
- loaderData: level
137
- };
138
- idx++;
139
- newLevels.push(newLvl);
140
- }
141
- this.emitter.emit(LoaderEvents.QualityLevelsUpdated, newLevels);
142
- }
143
- switchAudioTrack(id, graceful) {
144
- if (!this.hls) {
145
- return;
146
- }
147
- // TODO: Support graceful = false
148
- this.hls.audioTrack = id;
149
- if (!graceful) {
150
- // eslint-disable-next-line no-self-assign
151
- this.el.currentTime = this.el.currentTime;
152
- // this.el.currentTime -= 1;
153
- // this.el.currentTime += 1;
154
- }
155
- }
156
- switchQualityLevel(id, graceful) {
157
- if (!this.hls) {
158
- return;
159
- }
160
- if (graceful) {
161
- this.hls.nextLevel = id;
162
- return;
163
- }
164
- // Bypass HLS.js behavior that doesn't trigger event if level is selected by Auto switched to Manual
165
- if (this.hls.currentLevel === id) {
166
- this.hls.currentLevel = id;
167
- this.emitter.emit(LoaderEvents.QualityLevelSwitching, id, this.hls.autoLevelEnabled);
168
- this.emitter.emit(LoaderEvents.QualityLevelSwitched, id, this.hls.autoLevelEnabled);
169
- return;
170
- }
171
- this.hls.currentLevel = id;
172
- }
173
- getAutoQualityLevelId() {
174
- return autoQualityLevelId;
175
- }
176
- stop() {
177
- if (this.hls) {
178
- try {
179
- this.hls.stopLoad();
180
- }
181
- catch (e) { }
182
- try {
183
- this.hls.destroy();
184
- }
185
- catch (e) { }
186
- // Reset current time to ensure video playback will start from needed position
187
- this.hls = null;
188
- }
189
- }
190
- isSupported() {
191
- return isHlsJsSupported();
192
- }
193
- }
194
- export function isHlsJsSupported() {
195
- return Hls.isSupported();
196
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"HLSLoader.js","sourceRoot":"","sources":["HLSLoader.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import { type LoaderEventsMap, type LoaderInterface, type LoadParams } from './LoaderInterface.js';
2
- import type { EventEmitter } from 'eventemitter3';
3
- export declare class NativeLoader implements LoaderInterface {
4
- private emitter;
5
- private el;
6
- constructor(emitter: EventEmitter<LoaderEventsMap>, el: HTMLVideoElement);
7
- getAutoQualityLevelId(): number;
8
- isSupported(): boolean;
9
- load(params: LoadParams): Promise<void>;
10
- stop(): void;
11
- switchAudioTrack(id: number, graceful: boolean): void;
12
- switchQualityLevel(id: number, graceful: boolean): void;
13
- canPlayType(mimeType: string): boolean;
14
- }
@@ -1,66 +0,0 @@
1
- import { LoaderEvents } from './LoaderInterface.js';
2
- export class NativeLoader {
3
- emitter;
4
- el;
5
- constructor(emitter, el) {
6
- this.emitter = emitter;
7
- this.el = el;
8
- if (!this.isSupported()) {
9
- throw Error('HLS.js is not supported');
10
- }
11
- }
12
- getAutoQualityLevelId() {
13
- return 0;
14
- }
15
- isSupported() {
16
- return true;
17
- }
18
- async load(params) {
19
- if (params.abortSignal.aborted) {
20
- return Promise.reject(new DOMException('Operation aborted', 'AbortError'));
21
- }
22
- this.emitter.emit(LoaderEvents.Loading, params);
23
- return new Promise((resolve, reject) => {
24
- // Handle abort signal
25
- const onAbort = () => {
26
- this.stop();
27
- reject(new DOMException('Loading aborted', 'AbortError'));
28
- };
29
- params.abortSignal.addEventListener('abort', onAbort);
30
- const onReadyToPlay = () => {
31
- params.abortSignal.removeEventListener('abort', onAbort);
32
- this.el.removeEventListener('error', onError);
33
- this.emitter.emit(LoaderEvents.Loaded, params);
34
- resolve();
35
- };
36
- const onError = (ev) => {
37
- params.abortSignal.removeEventListener('abort', onAbort);
38
- this.el.removeEventListener('canplay', onReadyToPlay);
39
- this.emitter.emit(LoaderEvents.Error, ev.error);
40
- reject(ev.error);
41
- };
42
- const paused = this.el.paused;
43
- this.el.src = params.url;
44
- // Respect playback state
45
- this.el.autoplay = !paused;
46
- this.el.addEventListener('canplay', onReadyToPlay, { once: true });
47
- this.el.addEventListener('error', onError, { once: true });
48
- this.el.load();
49
- });
50
- }
51
- stop() {
52
- this.el.pause();
53
- this.el.src = '';
54
- }
55
- switchAudioTrack(id, graceful) {
56
- console.error('native loader does not support audio track switch');
57
- return;
58
- }
59
- switchQualityLevel(id, graceful) {
60
- console.error('native loader does not support quality level switch');
61
- return;
62
- }
63
- canPlayType(mimeType) {
64
- return this.el.canPlayType(mimeType) !== '';
65
- }
66
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"NativeLoader.js","sourceRoot":"","sources":["NativeLoader.ts"],"names":[],"mappings":"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"}