@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
@@ -0,0 +1,161 @@
1
+ import { PlayerEvents } from './VideoPlayerEvents.js';
2
+ export class VideoPlayerMediaState {
3
+ emitter;
4
+ paused = true;
5
+ duration = 0;
6
+ currentTime = 0;
7
+ playbackRate = 0;
8
+ muted = false;
9
+ volume = 1;
10
+ // protected _volumeGain = 1;
11
+ buffered = [];
12
+ buffering = false;
13
+ isAutoQuality = true;
14
+ currentQualityLevel = null;
15
+ qualityLevels = [];
16
+ currentAudioTrack = null;
17
+ audioTracks = [];
18
+ constructor(emitter) {
19
+ this.emitter = emitter;
20
+ }
21
+ syncFromEl(el) {
22
+ this.updatePaused(el.paused);
23
+ this.updateDuration(el.duration);
24
+ this.updateCurrentTime(el.currentTime);
25
+ this.updateBufferedFromTimeRanges(el.buffered);
26
+ this.updateVolume(el.volume, el.muted);
27
+ this.updatePlaybackRate(el.playbackRate);
28
+ // 0 - HAVE NOTHING
29
+ if (el.readyState > 0) {
30
+ // 3 - HAVE_FUTURE_DATA
31
+ this.updateBuffering(el.readyState !== 3 && el.readyState !== 4);
32
+ }
33
+ }
34
+ resetForLoadingStart() {
35
+ this.updateDuration(0);
36
+ this.updateCurrentTime(0);
37
+ this.updateBuffering(false);
38
+ this.updateBuffered([]);
39
+ this.currentQualityLevel = null;
40
+ this.updateQualityLevels([]);
41
+ this.currentAudioTrack = null;
42
+ this.updateAudioTracks([]);
43
+ }
44
+ updatePaused(newPaused) {
45
+ if (newPaused !== this.paused) {
46
+ this.paused = newPaused;
47
+ if (newPaused) {
48
+ this.emitter.emit(PlayerEvents.Pause);
49
+ }
50
+ else {
51
+ this.emitter.emit(PlayerEvents.Play);
52
+ }
53
+ }
54
+ }
55
+ updateVolume(newVol, newMuted) {
56
+ newVol = this._normalizeNumber(newVol);
57
+ let isChanged = false;
58
+ if (newVol !== this.volume) {
59
+ isChanged = true;
60
+ this.volume = newVol;
61
+ this.emitter.emit(PlayerEvents.VolumeChange, newVol);
62
+ }
63
+ if (newMuted !== this.muted) {
64
+ isChanged = true;
65
+ this.muted = newMuted;
66
+ this.emitter.emit(PlayerEvents.MuteChange, newMuted);
67
+ }
68
+ if (isChanged) {
69
+ this.emitter.emit(PlayerEvents.VolumeStateChange, newVol, newMuted);
70
+ }
71
+ }
72
+ updateCurrentTime(newTime) {
73
+ newTime = this._normalizeNumber(newTime);
74
+ if (this.currentTime !== newTime) {
75
+ this.currentTime = newTime;
76
+ this.emitter.emit(PlayerEvents.CurrentTimeUpdate, newTime);
77
+ }
78
+ }
79
+ updateDuration(newDuration) {
80
+ newDuration = this._normalizeNumber(newDuration);
81
+ if (this.duration !== newDuration) {
82
+ this.duration = newDuration;
83
+ this.emitter.emit(PlayerEvents.DurationChange, newDuration);
84
+ }
85
+ }
86
+ updateBufferedFromTimeRanges(newBuffered) {
87
+ const parts = [];
88
+ for (let i = 0; i < newBuffered.length; i++) {
89
+ const start = this._normalizeNumber(newBuffered.start(i));
90
+ const end = this._normalizeNumber(newBuffered.end(i));
91
+ parts.push({ start, end });
92
+ }
93
+ this.updateBuffered(parts);
94
+ }
95
+ updateBuffered(newBuffered) {
96
+ if (this.buffered.length !== newBuffered.length) {
97
+ this.buffered = newBuffered;
98
+ this.emitter.emit(PlayerEvents.BufferingProgress, newBuffered);
99
+ return;
100
+ }
101
+ for (let i = 0; i < newBuffered.length; i++) {
102
+ if (newBuffered[i].start !== this.buffered[i].start ||
103
+ newBuffered[i].end !== this.buffered[i].end) {
104
+ this.buffered = newBuffered;
105
+ this.emitter.emit(PlayerEvents.BufferingProgress, newBuffered);
106
+ return;
107
+ }
108
+ }
109
+ }
110
+ updateBuffering(newBuffering) {
111
+ if (newBuffering !== this.buffering) {
112
+ this.buffering = newBuffering;
113
+ if (newBuffering) {
114
+ this.emitter.emit(PlayerEvents.BufferingStarted);
115
+ }
116
+ else {
117
+ this.emitter.emit(PlayerEvents.BufferingEnded);
118
+ }
119
+ }
120
+ }
121
+ updatePlaybackRate(newRate) {
122
+ newRate = this._normalizeNumber(newRate);
123
+ if (this.playbackRate !== newRate) {
124
+ this.playbackRate = newRate;
125
+ this.emitter.emit(PlayerEvents.PlaybackRateChange, newRate);
126
+ }
127
+ }
128
+ updateQualityLevels(newLevels) {
129
+ this.qualityLevels = newLevels;
130
+ this.emitter.emit(PlayerEvents.QualityLevelsUpdated, newLevels);
131
+ }
132
+ updateQualityLevel(level, isAutoQuality) {
133
+ this.currentQualityLevel = level;
134
+ // this.currentQualityLevelStore.set(level);
135
+ this.isAutoQuality = isAutoQuality;
136
+ // this.isAutoQualityStore.set(isAutoQuality);
137
+ this.emitter.emit(PlayerEvents.QualityLevelSwitched, level, isAutoQuality);
138
+ }
139
+ findQualityLevelById(lvlId) {
140
+ return this.qualityLevels.find((lvl) => lvl.id === lvlId) ?? null;
141
+ }
142
+ updateAudioTracks(audioTracks) {
143
+ this.audioTracks = audioTracks;
144
+ // this.audioTracksStore.set(audioTracks);
145
+ this.emitter.emit(PlayerEvents.AudioTracksUpdated, audioTracks);
146
+ }
147
+ updateAudioTrack(audioTrack) {
148
+ this.currentAudioTrack = audioTrack;
149
+ // this._currentAudioTrackStore.set(audioTrack);
150
+ this.emitter.emit(PlayerEvents.AudioTrackSwitched, audioTrack);
151
+ }
152
+ findAudioTrackById(trackId) {
153
+ return this.audioTracks.find((track) => track.id === trackId) ?? null;
154
+ }
155
+ _normalizeNumber(num) {
156
+ if (isNaN(num) || !isFinite(num)) {
157
+ return 0;
158
+ }
159
+ return num;
160
+ }
161
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoPlayerMediaState.js","sourceRoot":"","sources":["VideoPlayerMediaState.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { VideoPlayerMediaState } from './VideoPlayerMediaState.js';
2
+ export declare class VideoPlayerMediaStateProxy {
3
+ private readonly mediaState;
4
+ constructor(mediaState: VideoPlayerMediaState);
5
+ get paused(): boolean;
6
+ get buffering(): boolean;
7
+ get buffered(): import("./types").BufferedPart[];
8
+ get currentTime(): number;
9
+ get duration(): number;
10
+ get volume(): number;
11
+ get muted(): boolean;
12
+ get isAutoQuality(): boolean;
13
+ get currentQuality(): import("./types").QualityLevel | null;
14
+ get qualityLevels(): import("./types").QualityLevel[];
15
+ get currentAudioTrack(): import("./types").AudioTrack | null;
16
+ get audioTracks(): import("./types").AudioTrack[];
17
+ }
@@ -0,0 +1,42 @@
1
+ export class VideoPlayerMediaStateProxy {
2
+ mediaState;
3
+ constructor(mediaState) {
4
+ this.mediaState = mediaState;
5
+ }
6
+ get paused() {
7
+ return this.mediaState.paused;
8
+ }
9
+ get buffering() {
10
+ return this.mediaState.buffering;
11
+ }
12
+ get buffered() {
13
+ return this.mediaState.buffered;
14
+ }
15
+ get currentTime() {
16
+ return this.mediaState.currentTime;
17
+ }
18
+ get duration() {
19
+ return this.mediaState.duration;
20
+ }
21
+ get volume() {
22
+ return this.mediaState.volume;
23
+ }
24
+ get muted() {
25
+ return this.mediaState.muted;
26
+ }
27
+ get isAutoQuality() {
28
+ return this.mediaState.isAutoQuality;
29
+ }
30
+ get currentQuality() {
31
+ return this.mediaState.currentQualityLevel;
32
+ }
33
+ get qualityLevels() {
34
+ return this.mediaState.qualityLevels;
35
+ }
36
+ get currentAudioTrack() {
37
+ return this.mediaState.currentAudioTrack;
38
+ }
39
+ get audioTracks() {
40
+ return this.mediaState.audioTracks;
41
+ }
42
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoPlayerMediaStateProxy.js","sourceRoot":"","sources":["VideoPlayerMediaStateProxy.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,0BAA0B;IACT;IAA7B,YAA6B,UAAiC;QAAjC,eAAU,GAAV,UAAU,CAAuB;IAAG,CAAC;IAElE,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IAClC,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED,IAAI,WAAW;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;IACpC,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED,IAAI,aAAa;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;IACtC,CAAC;IAED,IAAI,cAAc;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC;IAC5C,CAAC;IAED,IAAI,aAAa;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;IACtC,CAAC;IAED,IAAI,iBAAiB;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;IAC1C,CAAC;IAED,IAAI,WAAW;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;IACpC,CAAC;CACD"}
@@ -0,0 +1,58 @@
1
+ /// <reference types="svelte" />
2
+ import type { VideoPlayer } from '../VideoPlayer.js';
3
+ import type { AudioTrack, QualityLevel, BufferedPart } from '../types/index.js';
4
+ export declare class VideoPlayerMediaStateSvelteStore {
5
+ private readonly player;
6
+ private onPlayCb;
7
+ private onPauseCb;
8
+ private onTimeUpdateCb;
9
+ private onDurationUpdateCb;
10
+ private onBufferingProgressCb;
11
+ private onVolumeStateChangeCb;
12
+ private onBufferingStartedCb;
13
+ private onBufferingEndedCb;
14
+ private onQualityLevelsUpdatedCb;
15
+ private onQualityLevelChangingCb;
16
+ private onQualityLevelChangedCb;
17
+ private onAudioTracksUpdatedCb;
18
+ private onAudioTrackChangedCb;
19
+ private _paused;
20
+ private _currTime;
21
+ private _duration;
22
+ private _buffered;
23
+ private _volume;
24
+ private _muted;
25
+ private _buffering;
26
+ private _isAutoQuality;
27
+ private _currentQuality;
28
+ private _qualityLevels;
29
+ private _currentAudioTrack;
30
+ private _audioTracks;
31
+ constructor(player: VideoPlayer);
32
+ destroy(): void;
33
+ get paused(): import("svelte/store").Readable<boolean>;
34
+ get currentTime(): import("svelte/store").Readable<number>;
35
+ get duration(): import("svelte/store").Readable<number>;
36
+ get buffered(): import("svelte/store").Readable<BufferedPart[]>;
37
+ get volume(): import("svelte/store").Readable<number>;
38
+ get muted(): import("svelte/store").Readable<boolean>;
39
+ get buffering(): import("svelte/store").Readable<boolean>;
40
+ get qualityLevels(): import("svelte/store").Readable<QualityLevel[]>;
41
+ get currentQuality(): import("svelte/store").Readable<QualityLevel | null>;
42
+ get isAutoQuality(): import("svelte/store").Readable<boolean>;
43
+ get audioTracks(): import("svelte/store").Readable<AudioTrack[]>;
44
+ get currentAudioTrack(): import("svelte/store").Readable<AudioTrack | null>;
45
+ private onPlay;
46
+ private onPause;
47
+ private onTimeUpdate;
48
+ private onDurationUpdate;
49
+ private onBufferingProgress;
50
+ private onVolumeStateChange;
51
+ private onBufferingStarted;
52
+ private onBufferingEnded;
53
+ private onQualityLevelsUpdated;
54
+ private onQualityLevelChanging;
55
+ private onQualityLevelChanged;
56
+ private onAudioTracksUpdated;
57
+ private onAudioTrackChanged;
58
+ }
@@ -0,0 +1,146 @@
1
+ import { PlayerEvents } from '../VideoPlayerEvents.js';
2
+ import { readonly, writable } from 'svelte/store';
3
+ export class VideoPlayerMediaStateSvelteStore {
4
+ player;
5
+ onPlayCb = this.onPlay.bind(this);
6
+ onPauseCb = this.onPause.bind(this);
7
+ onTimeUpdateCb = this.onTimeUpdate.bind(this);
8
+ onDurationUpdateCb = this.onTimeUpdate.bind(this);
9
+ onBufferingProgressCb = this.onBufferingProgress.bind(this);
10
+ onVolumeStateChangeCb = this.onVolumeStateChange.bind(this);
11
+ onBufferingStartedCb = this.onBufferingStarted.bind(this);
12
+ onBufferingEndedCb = this.onBufferingEnded.bind(this);
13
+ onQualityLevelsUpdatedCb = this.onQualityLevelsUpdated.bind(this);
14
+ onQualityLevelChangingCb = this.onQualityLevelChanging.bind(this);
15
+ onQualityLevelChangedCb = this.onQualityLevelChanged.bind(this);
16
+ onAudioTracksUpdatedCb = this.onAudioTracksUpdated.bind(this);
17
+ onAudioTrackChangedCb = this.onAudioTrackChanged.bind(this);
18
+ _paused = writable(true);
19
+ _currTime = writable(0);
20
+ _duration = writable(0);
21
+ _buffered = writable([]);
22
+ _volume = writable(1);
23
+ _muted = writable(false);
24
+ _buffering = writable(false);
25
+ _isAutoQuality = writable(true);
26
+ _currentQuality = writable(null);
27
+ _qualityLevels = writable([]);
28
+ _currentAudioTrack = writable(null);
29
+ _audioTracks = writable([]);
30
+ constructor(player) {
31
+ this.player = player;
32
+ this.player.subscribe(PlayerEvents.Play, this.onPlayCb);
33
+ this.player.subscribe(PlayerEvents.Pause, this.onPauseCb);
34
+ this.player.subscribe(PlayerEvents.CurrentTimeUpdate, this.onTimeUpdateCb);
35
+ this.player.subscribe(PlayerEvents.DurationChange, this.onDurationUpdateCb);
36
+ this.player.subscribe(PlayerEvents.BufferingProgress, this.onBufferingProgressCb);
37
+ this.player.subscribe(PlayerEvents.VolumeStateChange, this.onVolumeStateChangeCb);
38
+ this.player.subscribe(PlayerEvents.BufferingStarted, this.onBufferingStartedCb);
39
+ this.player.subscribe(PlayerEvents.BufferingEnded, this.onBufferingEndedCb);
40
+ this.player.subscribe(PlayerEvents.QualityLevelsUpdated, this.onQualityLevelsUpdatedCb);
41
+ this.player.subscribe(PlayerEvents.QualityLevelSwitching, this.onQualityLevelChangingCb);
42
+ this.player.subscribe(PlayerEvents.QualityLevelSwitched, this.onQualityLevelChangedCb);
43
+ this.player.subscribe(PlayerEvents.AudioTracksUpdated, this.onAudioTracksUpdatedCb);
44
+ this.player.subscribe(PlayerEvents.AudioTrackSwitched, this.onAudioTrackChangedCb);
45
+ }
46
+ destroy() {
47
+ this.player.unsubscribe(PlayerEvents.Play, this.onPlayCb);
48
+ this.player.unsubscribe(PlayerEvents.Pause, this.onPauseCb);
49
+ this.player.unsubscribe(PlayerEvents.CurrentTimeUpdate, this.onTimeUpdateCb);
50
+ this.player.unsubscribe(PlayerEvents.DurationChange, this.onDurationUpdateCb);
51
+ this.player.unsubscribe(PlayerEvents.BufferingProgress, this.onBufferingProgressCb);
52
+ this.player.unsubscribe(PlayerEvents.VolumeStateChange, this.onVolumeStateChangeCb);
53
+ this.player.unsubscribe(PlayerEvents.BufferingStarted, this.onBufferingStartedCb);
54
+ this.player.unsubscribe(PlayerEvents.BufferingEnded, this.onBufferingEndedCb);
55
+ this.player.unsubscribe(PlayerEvents.QualityLevelsUpdated, this.onQualityLevelsUpdatedCb);
56
+ this.player.unsubscribe(PlayerEvents.QualityLevelSwitching, this.onQualityLevelChangingCb);
57
+ this.player.unsubscribe(PlayerEvents.QualityLevelSwitched, this.onQualityLevelChangedCb);
58
+ this.player.unsubscribe(PlayerEvents.AudioTracksUpdated, this.onAudioTracksUpdatedCb);
59
+ this.player.unsubscribe(PlayerEvents.AudioTrackSwitched, this.onAudioTrackChangedCb);
60
+ }
61
+ get paused() {
62
+ return readonly(this._paused);
63
+ }
64
+ get currentTime() {
65
+ return readonly(this._currTime);
66
+ }
67
+ get duration() {
68
+ return readonly(this._duration);
69
+ }
70
+ get buffered() {
71
+ return readonly(this._buffered);
72
+ }
73
+ get volume() {
74
+ return readonly(this._volume);
75
+ }
76
+ get muted() {
77
+ return readonly(this._muted);
78
+ }
79
+ get buffering() {
80
+ return readonly(this._buffering);
81
+ }
82
+ get qualityLevels() {
83
+ return readonly(this._qualityLevels);
84
+ }
85
+ get currentQuality() {
86
+ return readonly(this._currentQuality);
87
+ }
88
+ get isAutoQuality() {
89
+ return readonly(this._isAutoQuality);
90
+ }
91
+ get audioTracks() {
92
+ return readonly(this._audioTracks);
93
+ }
94
+ get currentAudioTrack() {
95
+ return readonly(this._currentAudioTrack);
96
+ }
97
+ onPlay() {
98
+ this._paused.set(false);
99
+ }
100
+ onPause() {
101
+ this._paused.set(true);
102
+ }
103
+ onTimeUpdate(newTime) {
104
+ this._currTime.set(newTime);
105
+ }
106
+ onDurationUpdate(newDuration) {
107
+ this._duration.set(newDuration);
108
+ }
109
+ onBufferingProgress(newParts) {
110
+ this._buffered.set(newParts);
111
+ }
112
+ onVolumeStateChange(newVolume, newMuted) {
113
+ this._volume.set(newVolume);
114
+ this._muted.set(newMuted);
115
+ }
116
+ onBufferingStarted() {
117
+ this._buffering.set(true);
118
+ }
119
+ onBufferingEnded() {
120
+ this._buffering.set(false);
121
+ }
122
+ onQualityLevelsUpdated(newLevels) {
123
+ this._qualityLevels.set(newLevels);
124
+ if (newLevels.length === 0) {
125
+ this._currentQuality.set(null);
126
+ }
127
+ }
128
+ onQualityLevelChanging(newLevel, isAuto) {
129
+ this._isAutoQuality.set(isAuto);
130
+ }
131
+ onQualityLevelChanged(newLevel, isAuto) {
132
+ this._currentQuality.set(newLevel);
133
+ this._isAutoQuality.set(isAuto);
134
+ }
135
+ onAudioTracksUpdated(newTracks) {
136
+ this._audioTracks.set(newTracks);
137
+ if (newTracks.length === 0) {
138
+ this._currentAudioTrack.set(null);
139
+ }
140
+ }
141
+ // private onAudioTrackChanging(newLevel: QualityLevel, isAuto: boolean) {
142
+ // }
143
+ onAudioTrackChanged(newTrack) {
144
+ this._currentAudioTrack.set(newTrack);
145
+ }
146
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoPlayerMediaStateSvelteStore.js","sourceRoot":"","sources":["VideoPlayerMediaStateSvelteStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAG9D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,OAAO,gCAAgC;IA+Bf;IA9BrB,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,qBAAqB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,qBAAqB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,wBAAwB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,wBAAwB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,uBAAuB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,qBAAqB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE5D,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzB,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxB,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxB,SAAS,GAAG,QAAQ,CAAC,EAAoB,CAAC,CAAC;IAC3C,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEzB,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE7B,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChC,eAAe,GAAG,QAAQ,CAAC,IAA2B,CAAC,CAAC;IACxD,cAAc,GAAG,QAAQ,CAAC,EAAoB,CAAC,CAAC;IAEhD,kBAAkB,GAAG,QAAQ,CAAC,IAAyB,CAAC,CAAC;IACzD,YAAY,GAAG,QAAQ,CAAC,EAAkB,CAAC,CAAC;IAEpD,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;QAC/C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAE1D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3E,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC5E,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAElF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAElF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAChF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAE5E,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,oBAAoB,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACxF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,qBAAqB,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACzF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,oBAAoB,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAEvF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACpF,CAAC;IAED,OAAO;QACN,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAE5D,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7E,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAEpF,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAEpF,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAClF,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAE9E,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,oBAAoB,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC1F,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,qBAAqB,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC3F,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,oBAAoB,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAEzF,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACtF,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,MAAM;QACT,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,WAAW;QACd,OAAO,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,MAAM;QACT,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,KAAK;QACR,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,SAAS;QACZ,OAAO,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,aAAa;QAChB,OAAO,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,cAAc;QACjB,OAAO,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,aAAa;QAChB,OAAO,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,WAAW;QACd,OAAO,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,iBAAiB;QACpB,OAAO,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC1C,CAAC;IAEO,MAAM;QACb,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAEO,OAAO;QACd,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAEO,YAAY,CAAC,OAAe;QACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAEO,gBAAgB,CAAC,WAAmB;QAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAEO,mBAAmB,CAAC,QAAwB;QACnD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAEO,mBAAmB,CAAC,SAAiB,EAAE,QAAiB;QAC/D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAEO,kBAAkB;QACzB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAEO,gBAAgB;QACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAEO,sBAAsB,CAAC,SAAyB;QACvD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEnC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAC/B;IACF,CAAC;IAEO,sBAAsB,CAAC,QAAsB,EAAE,MAAe;QACrE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAEO,qBAAqB,CAAC,QAAsB,EAAE,MAAe;QACpE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAEO,oBAAoB,CAAC,SAAuB;QACnD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEjC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAClC;IACF,CAAC;IAED,0EAA0E;IAC1E,IAAI;IAEI,mBAAmB,CAAC,QAAoB;QAC/C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;CACD"}
@@ -0,0 +1,4 @@
1
+ export type BufferedPart = {
2
+ start: number;
3
+ end: number;
4
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BufferedPart.js","sourceRoot":"","sources":["BufferedPart.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import type { LoaderType } from '../Loaders/LoaderInterface.js';
2
+ export type GetUrlCb = (signal: AbortSignal) => Promise<string>;
3
+ export type LoadUrl = string | Promise<string> | GetUrlCb;
4
+ export interface PlayerLoadParams {
5
+ url: LoadUrl;
6
+ startPosition?: number;
7
+ audioTrack?: number;
8
+ startLevel?: number;
9
+ loader?: LoaderType;
10
+ playAfterLoad?: boolean;
11
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayerLoadParams.js","sourceRoot":"","sources":["PlayerLoadParams.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ export type { AudioTrack } from './AudioTrack.js';
2
+ export type { BufferedPart } from './BufferedPart.js';
3
+ export type { QualityLevel } from './QualityLevel.js';
4
+ export type { PlayerLoadParams } from './PlayerLoadParams.js';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":""}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,14 @@
1
- export * from "./core/LoaderInterface.js";
2
- export * from "./core/HLSLoader.js";
1
+ export * from "./core/Loaders/LoaderInterface.js";
2
+ export * from "./core/Loaders/BaseLoader.js";
3
+ export * from "./core/Loaders/HLSLoader.js";
4
+ export * from "./core/Loaders/NativeLoader.js";
3
5
  export * from "./core/Playlist.js";
4
6
  export * from "./core/PlaylistPlayer.js";
5
- export * from "./core/QualityLevel.js";
6
- export * from "./core/AudioTrack.js";
7
+ export * from "./core/types/QualityLevel.js";
8
+ export * from "./core/types/AudioTrack.js";
9
+ export * from "./core/types/BufferedPart.js";
10
+ export * from "./core/types/PlayerLoadParams.js";
11
+ export * from "./core/VideoPlayerEvents.js";
7
12
  export * from "./core/VideoPlayer.js";
8
13
  export * from "./ui/utils/duration.js";
9
14
  export * from "./ui/utils/slider.js";
package/dist/index.js CHANGED
@@ -1,13 +1,18 @@
1
1
  // Reexport your entry components here
2
- export * from './core/LoaderInterface.js';
3
- export * from './core/HLSLoader.js';
2
+ export * from './core/Loaders/LoaderInterface.js';
3
+ export * from './core/Loaders/BaseLoader.js';
4
+ export * from './core/Loaders/HLSLoader.js';
5
+ export * from './core/Loaders/NativeLoader.js';
4
6
 
5
7
  export * from './core/Playlist.js';
6
8
  export * from './core/PlaylistPlayer.js';
7
9
 
8
- export * from './core/QualityLevel.js';
9
- export * from './core/AudioTrack.js';
10
+ export * from './core/types/QualityLevel.js';
11
+ export * from './core/types/AudioTrack.js';
12
+ export * from './core/types/BufferedPart.js';
13
+ export * from './core/types/PlayerLoadParams.js';
10
14
 
15
+ export * from './core/VideoPlayerEvents.js';
11
16
  export * from './core/VideoPlayer.js';
12
17
 
13
18
  export * from './ui/utils/duration.js';
@@ -1,39 +1,58 @@
1
- <script>import { PlayerEvents, VideoPlayer } from "../core/VideoPlayer";
1
+ <script>import { PlayerEvents } from "../core/VideoPlayerEvents.js";
2
2
  import { onMount } from "svelte";
3
3
  export let player;
4
4
  export let loadThreshold = 200;
5
5
  let loading = false;
6
- let timeoutId = 0;
6
+ let buffering = false;
7
+ let loadingTimeoutId = 0;
8
+ let bufferingTimeoutId = 0;
7
9
  const setLoading = () => {
8
- if (timeoutId) {
10
+ if (loadingTimeoutId) {
9
11
  return;
10
12
  }
11
- timeoutId = window.setTimeout(() => {
13
+ loadingTimeoutId = window.setTimeout(() => {
12
14
  loading = true;
13
15
  }, loadThreshold);
14
16
  };
15
17
  const setLoaded = () => {
16
- if (timeoutId) {
17
- window.clearTimeout(timeoutId);
18
- timeoutId = 0;
18
+ if (loadingTimeoutId) {
19
+ window.clearTimeout(loadingTimeoutId);
20
+ loadingTimeoutId = 0;
19
21
  }
20
22
  loading = false;
21
23
  };
24
+ const setBuffering = () => {
25
+ if (bufferingTimeoutId) {
26
+ return;
27
+ }
28
+ bufferingTimeoutId = window.setTimeout(() => {
29
+ buffering = true;
30
+ }, loadThreshold);
31
+ };
32
+ const setBuffered = () => {
33
+ if (bufferingTimeoutId) {
34
+ window.clearTimeout(bufferingTimeoutId);
35
+ bufferingTimeoutId = 0;
36
+ }
37
+ buffering = false;
38
+ };
22
39
  onMount(() => {
23
- player.subscribe(PlayerEvents.LoadingStarted, setLoading);
24
- player.subscribe(PlayerEvents.BufferingStarted, setLoading);
25
- player.subscribe(PlayerEvents.LoadingEnded, setLoaded);
26
- player.subscribe(PlayerEvents.BufferingEnded, setLoaded);
40
+ player.subscribe(PlayerEvents.BeforeLoading, setLoading);
41
+ player.subscribe(PlayerEvents.LoadingDone, setLoaded);
42
+ player.subscribe(PlayerEvents.LoadingFailed, setLoaded);
43
+ player.subscribe(PlayerEvents.BufferingStarted, setBuffering);
44
+ player.subscribe(PlayerEvents.BufferingEnded, setBuffered);
27
45
  return () => {
28
- player.unsubscribe(PlayerEvents.LoadingStarted, setLoading);
29
- player.unsubscribe(PlayerEvents.BufferingStarted, setLoading);
30
- player.unsubscribe(PlayerEvents.LoadingEnded, setLoaded);
31
- player.unsubscribe(PlayerEvents.BufferingEnded, setLoaded);
46
+ player.unsubscribe(PlayerEvents.BeforeLoading, setLoading);
47
+ player.unsubscribe(PlayerEvents.LoadingDone, setLoaded);
48
+ player.unsubscribe(PlayerEvents.LoadingFailed, setLoaded);
49
+ player.unsubscribe(PlayerEvents.BufferingStarted, setBuffering);
50
+ player.unsubscribe(PlayerEvents.BufferingEnded, setBuffering);
32
51
  };
33
52
  });
34
53
  </script>
35
54
 
36
- <div class="loading-container" style:visibility={loading ? `visible` : `hidden`}>
55
+ <div class="loading-container" style:visibility={loading || buffering ? `visible` : `hidden`}>
37
56
  <div class="loader" />
38
57
  </div>
39
58
 
@@ -1,5 +1,5 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import { VideoPlayer } from '../core/VideoPlayer';
2
+ import type { VideoPlayer } from '../core/VideoPlayer.js';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  player: VideoPlayer;