@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: "metadata" }),
183
- react_1.default.createElement("button", { className: b('play-btn', { loading: isLoading }), onClick: togglePlay, "aria-label": isPlaying ? 'Pause' : 'Play', type: "button" },
184
- isLoading && react_1.default.createElement("span", { className: b('spinner') }),
185
- !isLoading &&
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: "metadata" }),
180
- React.createElement("button", { className: b('play-btn', { loading: isLoading }), onClick: togglePlay, "aria-label": isPlaying ? 'Pause' : 'Play', type: "button" },
181
- isLoading && React.createElement("span", { className: b('spinner') }),
182
- !isLoading &&
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 уже обрабатывает клик без дублирования
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@doyourjob/gravity-ui-page-constructor",
3
- "version": "5.31.177",
3
+ "version": "5.31.179",
4
4
  "description": "Gravity UI Page Constructor",
5
5
  "license": "MIT",
6
6
  "repository": {