apm-react-audio-player 1.0.2 → 1.0.4
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/dist/index.js +126 -22
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -7,6 +7,35 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
|
|
|
7
7
|
var React = require('react');
|
|
8
8
|
var React__default = _interopDefault(React);
|
|
9
9
|
|
|
10
|
+
var Play = function Play() {
|
|
11
|
+
return /*#__PURE__*/React__default.createElement("svg", {
|
|
12
|
+
stroke: "currentColor",
|
|
13
|
+
fill: "currentColor",
|
|
14
|
+
strokeWidth: "0",
|
|
15
|
+
viewBox: "0 0 448 512",
|
|
16
|
+
className: "play",
|
|
17
|
+
height: "1em",
|
|
18
|
+
width: "1em",
|
|
19
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
20
|
+
}, /*#__PURE__*/React__default.createElement("path", {
|
|
21
|
+
d: "M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z"
|
|
22
|
+
}));
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
var Pause = function Pause() {
|
|
26
|
+
return /*#__PURE__*/React__default.createElement("svg", {
|
|
27
|
+
stroke: "currentColor",
|
|
28
|
+
fill: "currentColor",
|
|
29
|
+
strokeWidth: "0",
|
|
30
|
+
viewBox: "0 0 448 512",
|
|
31
|
+
height: "1em",
|
|
32
|
+
width: "1em",
|
|
33
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
34
|
+
}, /*#__PURE__*/React__default.createElement("path", {
|
|
35
|
+
d: "M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z"
|
|
36
|
+
}));
|
|
37
|
+
};
|
|
38
|
+
|
|
10
39
|
function _iterableToArrayLimit(arr, i) {
|
|
11
40
|
var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
|
|
12
41
|
if (null != _i) {
|
|
@@ -57,7 +86,7 @@ function _nonIterableRest() {
|
|
|
57
86
|
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
58
87
|
}
|
|
59
88
|
|
|
60
|
-
var useAudioPlayer = function useAudioPlayer(audioRef, progressBarRef) {
|
|
89
|
+
var useAudioPlayer = function useAudioPlayer(audioRef, progressBarRef, volumeCtrl) {
|
|
61
90
|
var _useState = React.useState(false),
|
|
62
91
|
_useState2 = _slicedToArray(_useState, 2),
|
|
63
92
|
isPlaying = _useState2[0],
|
|
@@ -70,12 +99,18 @@ var useAudioPlayer = function useAudioPlayer(audioRef, progressBarRef) {
|
|
|
70
99
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
71
100
|
currentTime = _useState6[0],
|
|
72
101
|
setCurrentTime = _useState6[1];
|
|
102
|
+
var _useState7 = React.useState(false),
|
|
103
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
104
|
+
isFinishedPlaying = _useState8[0],
|
|
105
|
+
setIsFinishedPlaying = _useState8[1];
|
|
73
106
|
var animationRef = React.useRef(); // reference the animation
|
|
74
107
|
|
|
75
108
|
var onLoadedMetadata = function onLoadedMetadata() {
|
|
76
109
|
var seconds = Math.floor(audioRef.current.duration);
|
|
77
110
|
setDuration(seconds);
|
|
78
|
-
|
|
111
|
+
if (!audioRef.current.currentSrc.includes('stream')) {
|
|
112
|
+
progressBarRef.current.max = seconds;
|
|
113
|
+
}
|
|
79
114
|
};
|
|
80
115
|
var updateCurrentTime = function updateCurrentTime() {
|
|
81
116
|
setCurrentTime(progressBarRef.current.value);
|
|
@@ -88,11 +123,13 @@ var useAudioPlayer = function useAudioPlayer(audioRef, progressBarRef) {
|
|
|
88
123
|
// when you reach the end of the song
|
|
89
124
|
if (progressBarRef.current.value === duration) {
|
|
90
125
|
restart();
|
|
126
|
+
setIsFinishedPlaying(true);
|
|
91
127
|
return;
|
|
92
128
|
}
|
|
93
129
|
animationRef.current = window.requestAnimationFrame(whilePlaying);
|
|
94
130
|
};
|
|
95
131
|
var pause = function pause() {
|
|
132
|
+
setIsPlaying(false);
|
|
96
133
|
audioRef.current.pause();
|
|
97
134
|
window.cancelAnimationFrame(animationRef.current);
|
|
98
135
|
};
|
|
@@ -102,6 +139,7 @@ var useAudioPlayer = function useAudioPlayer(audioRef, progressBarRef) {
|
|
|
102
139
|
pause();
|
|
103
140
|
};
|
|
104
141
|
var play = function play() {
|
|
142
|
+
setIsPlaying(true);
|
|
105
143
|
audioRef.current.play();
|
|
106
144
|
animationRef.current = window.requestAnimationFrame(whilePlaying);
|
|
107
145
|
};
|
|
@@ -113,9 +151,7 @@ var useAudioPlayer = function useAudioPlayer(audioRef, progressBarRef) {
|
|
|
113
151
|
return "".concat(returnedMinutes, ":").concat(returnedSeconds);
|
|
114
152
|
};
|
|
115
153
|
var togglePlaying = function togglePlaying() {
|
|
116
|
-
|
|
117
|
-
setIsPlaying(!prevState);
|
|
118
|
-
if (!prevState) {
|
|
154
|
+
if (!isPlaying) {
|
|
119
155
|
play();
|
|
120
156
|
} else {
|
|
121
157
|
pause();
|
|
@@ -137,6 +173,11 @@ var useAudioPlayer = function useAudioPlayer(audioRef, progressBarRef) {
|
|
|
137
173
|
var forwardThirty = function forwardThirty() {
|
|
138
174
|
timeTravel(Number(progressBarRef.current.value) + 30);
|
|
139
175
|
};
|
|
176
|
+
var volumeControl = function volumeControl(e) {
|
|
177
|
+
var value = e.target.value;
|
|
178
|
+
var volume = value / 100;
|
|
179
|
+
audioRef.current.volume = volume;
|
|
180
|
+
};
|
|
140
181
|
return {
|
|
141
182
|
onLoadedMetadata: onLoadedMetadata,
|
|
142
183
|
calculateTime: calculateTime,
|
|
@@ -145,50 +186,113 @@ var useAudioPlayer = function useAudioPlayer(audioRef, progressBarRef) {
|
|
|
145
186
|
backThirty: backThirty,
|
|
146
187
|
forwardThirty: forwardThirty,
|
|
147
188
|
isPlaying: isPlaying,
|
|
189
|
+
isFinished: isFinishedPlaying,
|
|
148
190
|
currentTime: currentTime,
|
|
149
|
-
duration: duration
|
|
191
|
+
duration: duration,
|
|
192
|
+
volumeCtrl: volumeCtrl,
|
|
193
|
+
volumeControl: volumeControl
|
|
150
194
|
};
|
|
151
195
|
};
|
|
152
196
|
|
|
153
197
|
var ReactAudioPlayer = function ReactAudioPlayer(props) {
|
|
198
|
+
var _props$audioPlayerRef, _props$progressBarRef;
|
|
154
199
|
// references
|
|
155
|
-
var
|
|
156
|
-
var
|
|
200
|
+
var audioPlayerRef = (_props$audioPlayerRef = props.audioPlayerRef) !== null && _props$audioPlayerRef !== void 0 ? _props$audioPlayerRef : React.useRef(); // reference our audio component
|
|
201
|
+
var progressBarRef = (_props$progressBarRef = props.progressBarRef) !== null && _props$progressBarRef !== void 0 ? _props$progressBarRef : React.useRef(); // reference our progress bar
|
|
157
202
|
|
|
158
203
|
var customStyles = props ? props.style : '';
|
|
159
204
|
var title = props.title,
|
|
160
205
|
description = props.description,
|
|
161
|
-
audioSrc = props.audioSrc
|
|
206
|
+
audioSrc = props.audioSrc,
|
|
207
|
+
volumeCtrl = props.volumeCtrl,
|
|
208
|
+
playBtnClass = props.playBtnClass,
|
|
209
|
+
customHtml = props.customHtml,
|
|
210
|
+
customProps = props.customProps,
|
|
211
|
+
isLive = props.isLive;
|
|
162
212
|
|
|
163
213
|
// hooks
|
|
164
|
-
var _useAudioPlayer = useAudioPlayer(
|
|
214
|
+
var _useAudioPlayer = useAudioPlayer(audioPlayerRef, progressBarRef),
|
|
215
|
+
onLoadedMetadata = _useAudioPlayer.onLoadedMetadata,
|
|
165
216
|
calculateTime = _useAudioPlayer.calculateTime,
|
|
217
|
+
togglePlaying = _useAudioPlayer.togglePlaying,
|
|
166
218
|
changePlayerCurrentTime = _useAudioPlayer.changePlayerCurrentTime,
|
|
219
|
+
isPlaying = _useAudioPlayer.isPlaying,
|
|
167
220
|
currentTime = _useAudioPlayer.currentTime,
|
|
168
|
-
duration = _useAudioPlayer.duration
|
|
221
|
+
duration = _useAudioPlayer.duration,
|
|
222
|
+
volumeControl = _useAudioPlayer.volumeControl;
|
|
169
223
|
return audioSrc && /*#__PURE__*/React__default.createElement("div", {
|
|
170
224
|
className: "audioPlayer",
|
|
171
225
|
style: customStyles && customStyles.audioPlayer
|
|
172
|
-
},
|
|
173
|
-
|
|
226
|
+
}, /*#__PURE__*/React__default.createElement("audio", {
|
|
227
|
+
ref: audioPlayerRef,
|
|
228
|
+
src: audioSrc,
|
|
229
|
+
preload: "metadata",
|
|
230
|
+
onLoadedMetadata: onLoadedMetadata
|
|
231
|
+
}), /*#__PURE__*/React__default.createElement("div", {
|
|
232
|
+
className: "player-layout"
|
|
233
|
+
}, volumeCtrl && /*#__PURE__*/React__default.createElement("div", {
|
|
234
|
+
className: "player-controls-secondary-outer"
|
|
235
|
+
}, /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement("span", {
|
|
236
|
+
className: "player-volume-text"
|
|
237
|
+
}, /*#__PURE__*/React__default.createElement("img", {
|
|
238
|
+
src: "/img/icon-volume-low.svg",
|
|
239
|
+
alt: ""
|
|
240
|
+
}), "Volume"), /*#__PURE__*/React__default.createElement("div", {
|
|
241
|
+
className: "player-controls player-controls-secondary"
|
|
242
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
243
|
+
className: "player-volume"
|
|
244
|
+
}, /*#__PURE__*/React__default.createElement("input", {
|
|
245
|
+
id: "player-volume",
|
|
246
|
+
type: "range",
|
|
247
|
+
className: "player-timeline-progress js-player-volume-current",
|
|
248
|
+
min: 0,
|
|
249
|
+
max: 100,
|
|
250
|
+
"aria-hidden": "true",
|
|
251
|
+
onChange: function onChange(e) {
|
|
252
|
+
return volumeControl(e);
|
|
253
|
+
}
|
|
254
|
+
}))))), /*#__PURE__*/React__default.createElement("div", {
|
|
255
|
+
className: "player-controls"
|
|
256
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
257
|
+
className: "player-btn-play-pause-outer"
|
|
258
|
+
}, /*#__PURE__*/React__default.createElement("button", {
|
|
259
|
+
onClick: togglePlaying,
|
|
260
|
+
className: playBtnClass,
|
|
261
|
+
style: customStyles && customStyles.playPause
|
|
262
|
+
}, isPlaying ? /*#__PURE__*/React__default.createElement(Pause, null) : /*#__PURE__*/React__default.createElement(Play, null)))), customHtml && customHtml, customProps.audioThumbnailSrc && /*#__PURE__*/React__default.createElement("div", {
|
|
263
|
+
className: "player-thumb-and-text"
|
|
264
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
265
|
+
className: "player-thumbnail"
|
|
266
|
+
}, /*#__PURE__*/React__default.createElement("img", {
|
|
267
|
+
className: "player-thumbnail",
|
|
268
|
+
src: customProps.audioThumbnailSrc,
|
|
269
|
+
alt: customProps.audioThumbnailAlt
|
|
270
|
+
}))), !isLive && /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
|
|
271
|
+
className: "player-currentTime"
|
|
174
272
|
}, calculateTime(currentTime)), /*#__PURE__*/React__default.createElement("div", {
|
|
175
|
-
className: "
|
|
273
|
+
className: "player-timeline"
|
|
176
274
|
}, /*#__PURE__*/React__default.createElement("input", {
|
|
177
275
|
type: "range",
|
|
178
|
-
className: "
|
|
276
|
+
className: "player-timeline-progress",
|
|
179
277
|
defaultValue: "0",
|
|
180
|
-
|
|
278
|
+
"aria-hidden": "true",
|
|
279
|
+
ref: progressBarRef,
|
|
181
280
|
onChange: changePlayerCurrentTime
|
|
182
281
|
})), /*#__PURE__*/React__default.createElement("div", {
|
|
183
|
-
className: "duration",
|
|
282
|
+
className: "player-duration",
|
|
184
283
|
style: customStyles && customStyles.duration
|
|
185
|
-
}, duration && !isNaN(duration) && calculateTime(duration)), /*#__PURE__*/React__default.createElement("div", {
|
|
186
|
-
className: "
|
|
284
|
+
}, duration && !isNaN(duration) && calculateTime(duration))), /*#__PURE__*/React__default.createElement("div", {
|
|
285
|
+
className: "player-content"
|
|
187
286
|
}, /*#__PURE__*/React__default.createElement("div", {
|
|
188
|
-
className: "
|
|
287
|
+
className: "player-audio-type type-sm"
|
|
288
|
+
}, isLive ? /*#__PURE__*/React__default.createElement("div", {
|
|
289
|
+
className: "player-live-label"
|
|
290
|
+
}, "On Air") : /*#__PURE__*/React__default.createElement("div", {
|
|
291
|
+
className: "player-title"
|
|
189
292
|
}, " ", title || '', " "), /*#__PURE__*/React__default.createElement("div", {
|
|
190
|
-
className: "
|
|
191
|
-
},
|
|
293
|
+
className: "player-description"
|
|
294
|
+
}, description || '', " ")))));
|
|
192
295
|
};
|
|
193
296
|
|
|
194
297
|
exports.ReactAudioPlayer = ReactAudioPlayer;
|
|
298
|
+
exports.useAudioPlayer = useAudioPlayer;
|