l-min-components 1.7.1323 → 1.7.1324

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,6 +1,6 @@
1
1
  {
2
2
  "name": "l-min-components",
3
- "version": "1.7.1323",
3
+ "version": "1.7.1324",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "src/assets",
@@ -37,56 +37,16 @@ const useAudioPlayer = ({ src, streamSrc }) => {
37
37
 
38
38
  useEffect(() => {
39
39
  let hls;
40
-
41
- const handleEnded = () => setIsPlaying(false);
42
- const handlePause = () => setIsPlaying(false);
43
- const handlePlay = () => setIsPlaying(true);
44
-
45
- const handleProgress = () => {
46
- if (audio) {
47
- const currentTime = audio.currentTime;
48
- const duration = audio.duration;
49
- setProgress({ currentTime, duration });
50
- }
51
- };
52
-
53
- const attachAudioEvents = () => {
54
- audio.addEventListener("ended", handleEnded);
55
- audio.addEventListener("pause", handlePause);
56
- audio.addEventListener("playing", handlePlay);
57
- audio.addEventListener("timeupdate", handleProgress);
58
- audio.addEventListener("loadedmetadata", handleProgress);
59
- audio.addEventListener("waiting", () => setIsBuffering(true));
60
- audio.addEventListener("canplay", () => setIsBuffering(false));
61
- };
62
-
63
- const cleanupAudioEvents = () => {
64
- audio.removeEventListener("ended", handleEnded);
65
- audio.removeEventListener("pause", handlePause);
66
- audio.removeEventListener("playing", handlePlay);
67
- audio.removeEventListener("timeupdate", handleProgress);
68
- audio.removeEventListener("loadedmetadata", handleProgress);
69
- audio.removeEventListener("waiting", () => setIsBuffering(true));
70
- audio.removeEventListener("canplay", () => setIsBuffering(false));
71
- };
72
-
73
- if (audio && accountId) {
74
- if (src) {
75
- // Load src directly — faster, non-stream
76
- audio.src = src;
77
- const handleMetadata = () => {
78
- setIsReady(true);
79
- handleProgress();
80
- audio.removeEventListener("loadedmetadata", handleMetadata);
81
- };
82
-
83
- audio.addEventListener("loadedmetadata", handleMetadata);
84
- attachAudioEvents();
85
- audio.load();
86
- } else if (Hls.isSupported() && streamSrc) {
87
- // HLS streaming setup
40
+ if (audio && src) {
41
+ audio.src = src;
42
+ audio.addEventListener("loadedmetadata", () => {
43
+ setIsReady(true);
44
+ });
45
+ audio.load();
46
+ } else if (audio && accountId) {
47
+ if (Hls?.isSupported() && streamSrc && !src) {
88
48
  hls = new Hls({
89
- xhrSetup: (xhr, url) => {
49
+ xhrSetup: function (xhr, url) {
90
50
  const modifiedURL = `${url}?_account=${accountId}`;
91
51
  xhr.open("GET", modifiedURL, true);
92
52
  xhr.setRequestHeader("Authorization", `Bearer ${accessToken}`);
@@ -94,7 +54,7 @@ const useAudioPlayer = ({ src, streamSrc }) => {
94
54
  lowLatencyMode: true,
95
55
  });
96
56
 
97
- hls.attachMedia(audio);
57
+ hls?.attachMedia(audio);
98
58
 
99
59
  hls.on(Hls.Events.MEDIA_ATTACHED, () => {
100
60
  hls.loadSource(url);
@@ -105,13 +65,17 @@ const useAudioPlayer = ({ src, streamSrc }) => {
105
65
  setError(null);
106
66
  });
107
67
 
108
- hls.on(Hls.Events.MANIFEST_PARSED, () => {
68
+ hls.on(Hls?.Events?.MANIFEST_PARSED, () => {
109
69
  setIsReady(true);
110
70
  setError(null);
111
71
  });
72
+ hls.on(Hls?.Events?.BUFFER_STALLED, () => {
73
+ setIsBuffering(true);
74
+ });
112
75
 
113
- hls.on(Hls.Events.BUFFER_STALLED, () => setIsBuffering(true));
114
- hls.on(Hls.Events.BUFFER_APPENDED, () => setIsBuffering(false));
76
+ hls.on(Hls?.Events?.BUFFER_APPENDED, () => {
77
+ setIsBuffering(false);
78
+ });
115
79
 
116
80
  hls.on(Hls.Events.ERROR, (event, data) => {
117
81
  console.warn("HLS error", data);
@@ -127,26 +91,38 @@ const useAudioPlayer = ({ src, streamSrc }) => {
127
91
  }
128
92
  }
129
93
  });
130
-
131
- attachAudioEvents();
132
- } else if (
133
- streamSrc &&
134
- audio.canPlayType("application/vnd.apple.mpegurl")
135
- ) {
136
- // Safari native HLS
94
+ } else if (!src && audio.canPlayType("application/vnd.apple.mpegurl")) {
137
95
  audio.src = url;
138
96
  audio.addEventListener("loadedmetadata", () => {
139
97
  setIsReady(true);
140
98
  });
141
- attachAudioEvents();
142
99
  }
143
- }
100
+ const handleEnded = () => setIsPlaying(false);
101
+ const handlePause = () => setIsPlaying(false);
102
+ const handlePlay = () => setIsPlaying(true);
103
+
104
+ const handleProgress = () => {
105
+ if (audio) {
106
+ const currentTime = audio.currentTime;
107
+ const duration = audio.duration;
144
108
 
109
+ setProgress({ currentTime, duration });
110
+ }
111
+ };
112
+
113
+ audio.addEventListener("ended", handleEnded);
114
+ audio.addEventListener("pause", handlePause);
115
+ audio.addEventListener("playing", handlePlay);
116
+ audio.addEventListener("timeupdate", handleProgress);
117
+ audio.addEventListener("loadedmetadata", handleProgress);
118
+ audio.addEventListener("waiting", () => setIsBuffering(true));
119
+ audio.addEventListener("canplay", () => setIsBuffering(false));
120
+ }
145
121
  return () => {
146
122
  if (hls) {
147
123
  hls.destroy();
148
124
  }
149
- cleanupAudioEvents();
125
+
150
126
  setIsReady(false);
151
127
  };
152
128
  }, [url, accessToken, accountId, audio, src, streamSrc]);