@doyourjob/gravity-ui-page-constructor 5.31.177 → 5.31.179
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.
|
@@ -23,10 +23,8 @@ const Audio = ({ url }) => {
|
|
|
23
23
|
const [duration, setDuration] = (0, react_1.useState)(0);
|
|
24
24
|
const [volume, setVolume] = (0, react_1.useState)(1);
|
|
25
25
|
const [isDragging, setIsDragging] = (0, react_1.useState)(false);
|
|
26
|
-
const [isLoading, setIsLoading] = (0, react_1.useState)(true);
|
|
27
26
|
// FIX: сброс состояния при смене url
|
|
28
27
|
(0, react_1.useEffect)(() => {
|
|
29
|
-
setIsLoading(true);
|
|
30
28
|
setCurrentTime(0);
|
|
31
29
|
setDuration(0);
|
|
32
30
|
setIsPlaying(false);
|
|
@@ -143,15 +141,11 @@ const Audio = ({ url }) => {
|
|
|
143
141
|
}
|
|
144
142
|
};
|
|
145
143
|
const onDurationChange = () => setDuration(audio.duration);
|
|
146
|
-
const onCanPlay = () => setIsLoading(false);
|
|
147
|
-
const onWaiting = () => setIsLoading(true);
|
|
148
144
|
audio.addEventListener('play', onPlay);
|
|
149
145
|
audio.addEventListener('pause', onPause);
|
|
150
146
|
audio.addEventListener('ended', onEnded);
|
|
151
147
|
audio.addEventListener('timeupdate', onTimeUpdate);
|
|
152
148
|
audio.addEventListener('durationchange', onDurationChange);
|
|
153
|
-
audio.addEventListener('canplay', onCanPlay);
|
|
154
|
-
audio.addEventListener('waiting', onWaiting);
|
|
155
149
|
// eslint-disable-next-line consistent-return
|
|
156
150
|
return () => {
|
|
157
151
|
audio.removeEventListener('play', onPlay);
|
|
@@ -159,8 +153,6 @@ const Audio = ({ url }) => {
|
|
|
159
153
|
audio.removeEventListener('ended', onEnded);
|
|
160
154
|
audio.removeEventListener('timeupdate', onTimeUpdate);
|
|
161
155
|
audio.removeEventListener('durationchange', onDurationChange);
|
|
162
|
-
audio.removeEventListener('canplay', onCanPlay);
|
|
163
|
-
audio.removeEventListener('waiting', onWaiting);
|
|
164
156
|
};
|
|
165
157
|
}, []);
|
|
166
158
|
// FIX: ref-копия isDragging для замыкания в timeupdate (без перепривязки слушателей)
|
|
@@ -179,13 +171,10 @@ const Audio = ({ url }) => {
|
|
|
179
171
|
return 'M3 9h4l5-5v16l-5-5H3V9zm13.5 3a4.5 4.5 0 0 0-2.5-4v8a4.5 4.5 0 0 0 2.5-4zm-2.5-7a7 7 0 0 1 0 14V14a5 5 0 0 0 0-10V5z';
|
|
180
172
|
}, [isMuted, volume]);
|
|
181
173
|
return (react_1.default.createElement("div", { className: b() },
|
|
182
|
-
react_1.default.createElement("audio", { ref: audioRef, src: url, preload: "
|
|
183
|
-
react_1.default.createElement("button", { className: b('play-btn'
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
(isPlaying ? (react_1.default.createElement("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "20", height: "20" },
|
|
187
|
-
react_1.default.createElement("path", { d: "M6 19h4V5H6v14zm8-14v14h4V5h-4z" }))) : (react_1.default.createElement("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "20", height: "20" },
|
|
188
|
-
react_1.default.createElement("path", { d: "M8 5v14l11-7z" }))))),
|
|
174
|
+
react_1.default.createElement("audio", { ref: audioRef, src: url, preload: "auto" }),
|
|
175
|
+
react_1.default.createElement("button", { className: b('play-btn'), onClick: togglePlay, "aria-label": isPlaying ? 'Pause' : 'Play', type: "button" }, isPlaying ? (react_1.default.createElement("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "20", height: "20" },
|
|
176
|
+
react_1.default.createElement("path", { d: "M6 19h4V5H6v14zm8-14v14h4V5h-4z" }))) : (react_1.default.createElement("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "20", height: "20" },
|
|
177
|
+
react_1.default.createElement("path", { d: "M8 5v14l11-7z" })))),
|
|
189
178
|
react_1.default.createElement("div", { className: b('timeline') },
|
|
190
179
|
react_1.default.createElement("div", { ref: progressRef, className: b('progress-bar'),
|
|
191
180
|
// FIX: убран onClick — onMouseDown уже обрабатывает клик без дублирования
|
|
@@ -20,10 +20,8 @@ export const Audio = ({ url }) => {
|
|
|
20
20
|
const [duration, setDuration] = useState(0);
|
|
21
21
|
const [volume, setVolume] = useState(1);
|
|
22
22
|
const [isDragging, setIsDragging] = useState(false);
|
|
23
|
-
const [isLoading, setIsLoading] = useState(true);
|
|
24
23
|
// FIX: сброс состояния при смене url
|
|
25
24
|
useEffect(() => {
|
|
26
|
-
setIsLoading(true);
|
|
27
25
|
setCurrentTime(0);
|
|
28
26
|
setDuration(0);
|
|
29
27
|
setIsPlaying(false);
|
|
@@ -140,15 +138,11 @@ export const Audio = ({ url }) => {
|
|
|
140
138
|
}
|
|
141
139
|
};
|
|
142
140
|
const onDurationChange = () => setDuration(audio.duration);
|
|
143
|
-
const onCanPlay = () => setIsLoading(false);
|
|
144
|
-
const onWaiting = () => setIsLoading(true);
|
|
145
141
|
audio.addEventListener('play', onPlay);
|
|
146
142
|
audio.addEventListener('pause', onPause);
|
|
147
143
|
audio.addEventListener('ended', onEnded);
|
|
148
144
|
audio.addEventListener('timeupdate', onTimeUpdate);
|
|
149
145
|
audio.addEventListener('durationchange', onDurationChange);
|
|
150
|
-
audio.addEventListener('canplay', onCanPlay);
|
|
151
|
-
audio.addEventListener('waiting', onWaiting);
|
|
152
146
|
// eslint-disable-next-line consistent-return
|
|
153
147
|
return () => {
|
|
154
148
|
audio.removeEventListener('play', onPlay);
|
|
@@ -156,8 +150,6 @@ export const Audio = ({ url }) => {
|
|
|
156
150
|
audio.removeEventListener('ended', onEnded);
|
|
157
151
|
audio.removeEventListener('timeupdate', onTimeUpdate);
|
|
158
152
|
audio.removeEventListener('durationchange', onDurationChange);
|
|
159
|
-
audio.removeEventListener('canplay', onCanPlay);
|
|
160
|
-
audio.removeEventListener('waiting', onWaiting);
|
|
161
153
|
};
|
|
162
154
|
}, []);
|
|
163
155
|
// FIX: ref-копия isDragging для замыкания в timeupdate (без перепривязки слушателей)
|
|
@@ -176,13 +168,10 @@ export const Audio = ({ url }) => {
|
|
|
176
168
|
return 'M3 9h4l5-5v16l-5-5H3V9zm13.5 3a4.5 4.5 0 0 0-2.5-4v8a4.5 4.5 0 0 0 2.5-4zm-2.5-7a7 7 0 0 1 0 14V14a5 5 0 0 0 0-10V5z';
|
|
177
169
|
}, [isMuted, volume]);
|
|
178
170
|
return (React.createElement("div", { className: b() },
|
|
179
|
-
React.createElement("audio", { ref: audioRef, src: url, preload: "
|
|
180
|
-
React.createElement("button", { className: b('play-btn'
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
(isPlaying ? (React.createElement("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "20", height: "20" },
|
|
184
|
-
React.createElement("path", { d: "M6 19h4V5H6v14zm8-14v14h4V5h-4z" }))) : (React.createElement("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "20", height: "20" },
|
|
185
|
-
React.createElement("path", { d: "M8 5v14l11-7z" }))))),
|
|
171
|
+
React.createElement("audio", { ref: audioRef, src: url, preload: "auto" }),
|
|
172
|
+
React.createElement("button", { className: b('play-btn'), onClick: togglePlay, "aria-label": isPlaying ? 'Pause' : 'Play', type: "button" }, isPlaying ? (React.createElement("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "20", height: "20" },
|
|
173
|
+
React.createElement("path", { d: "M6 19h4V5H6v14zm8-14v14h4V5h-4z" }))) : (React.createElement("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "20", height: "20" },
|
|
174
|
+
React.createElement("path", { d: "M8 5v14l11-7z" })))),
|
|
186
175
|
React.createElement("div", { className: b('timeline') },
|
|
187
176
|
React.createElement("div", { ref: progressRef, className: b('progress-bar'),
|
|
188
177
|
// FIX: убран onClick — onMouseDown уже обрабатывает клик без дублирования
|