@popmenu/audio-player 0.59.0 → 0.60.0
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/build/index.es.js +31 -12
- package/build/index.es.js.map +1 -1
- package/build/index.js +31 -12
- package/build/index.js.map +1 -1
- package/package.json +2 -2
package/build/index.es.js
CHANGED
|
@@ -1016,7 +1016,7 @@ var getPlayback = function (_a) {
|
|
|
1016
1016
|
return playback;
|
|
1017
1017
|
};
|
|
1018
1018
|
var audioPlayerReducer = function (state, event) {
|
|
1019
|
-
var _a, _b;
|
|
1019
|
+
var _a, _b, _c;
|
|
1020
1020
|
var audioRef = state.context.audioRef;
|
|
1021
1021
|
var nextState = __assign$1({}, state);
|
|
1022
1022
|
switch (state.playback) {
|
|
@@ -1025,10 +1025,14 @@ var audioPlayerReducer = function (state, event) {
|
|
|
1025
1025
|
nextState.playback = getPlayback(audioRef);
|
|
1026
1026
|
return nextState;
|
|
1027
1027
|
}
|
|
1028
|
+
// Required for iOS users. iOS prevents media from being loaded before user interaction.
|
|
1029
|
+
if (event.type === AUDIO_PLAYER_EVENT_TYPES.TOGGLE_PLAYBACK) {
|
|
1030
|
+
(_a = audioRef.current) === null || _a === void 0 ? void 0 : _a.play();
|
|
1031
|
+
}
|
|
1028
1032
|
break;
|
|
1029
1033
|
case PLAYBACK_STATES.PAUSED:
|
|
1030
1034
|
if (event.type === AUDIO_PLAYER_EVENT_TYPES.TOGGLE_PLAYBACK) {
|
|
1031
|
-
(
|
|
1035
|
+
(_b = audioRef.current) === null || _b === void 0 ? void 0 : _b.play();
|
|
1032
1036
|
nextState.playback = getPlayback(audioRef);
|
|
1033
1037
|
nextState.context.playbackButtonLabel = CONTROL_LABELS.PAUSE;
|
|
1034
1038
|
return nextState;
|
|
@@ -1036,7 +1040,7 @@ var audioPlayerReducer = function (state, event) {
|
|
|
1036
1040
|
break;
|
|
1037
1041
|
case PLAYBACK_STATES.PLAYING:
|
|
1038
1042
|
if (event.type === AUDIO_PLAYER_EVENT_TYPES.TOGGLE_PLAYBACK) {
|
|
1039
|
-
(
|
|
1043
|
+
(_c = audioRef.current) === null || _c === void 0 ? void 0 : _c.pause();
|
|
1040
1044
|
nextState.playback = getPlayback(audioRef);
|
|
1041
1045
|
nextState.context.playbackButtonLabel = CONTROL_LABELS.PLAY;
|
|
1042
1046
|
return nextState;
|
|
@@ -1153,16 +1157,31 @@ var setupAudioRef = function (config) { return function () {
|
|
|
1153
1157
|
};
|
|
1154
1158
|
}; };
|
|
1155
1159
|
|
|
1160
|
+
var getPlaybackIcon = function (status) {
|
|
1161
|
+
var icon;
|
|
1162
|
+
switch (status) {
|
|
1163
|
+
case PLAYBACK_STATES.PAUSED:
|
|
1164
|
+
icon = SvgPlay;
|
|
1165
|
+
break;
|
|
1166
|
+
case PLAYBACK_STATES.PLAYING:
|
|
1167
|
+
icon = SvgPause;
|
|
1168
|
+
break;
|
|
1169
|
+
case PLAYBACK_STATES.NONE:
|
|
1170
|
+
icon = SvgPlay;
|
|
1171
|
+
break;
|
|
1172
|
+
}
|
|
1173
|
+
return icon;
|
|
1174
|
+
};
|
|
1156
1175
|
var AudioPlayer = function (props) {
|
|
1157
|
-
var _a, _b, _c, _d, _f;
|
|
1158
|
-
var src = props.src,
|
|
1176
|
+
var _a, _b, _c, _d, _f, _g;
|
|
1177
|
+
var src = props.src, _h = props.classes, classes = _h === void 0 ? {} : _h;
|
|
1159
1178
|
var volumeRef = useRef(null);
|
|
1160
1179
|
var audioRef = useRef(null);
|
|
1161
1180
|
var spacing = useTheme$1().spacing;
|
|
1162
|
-
var
|
|
1163
|
-
var
|
|
1181
|
+
var _j = useState(false), disableRipple = _j[0], setDisableRipple = _j[1];
|
|
1182
|
+
var _k = useReducer(audioPlayerReducer, __assign$1(__assign$1({}, initialAudioPlayerState), { context: __assign$1(__assign$1({}, initialAudioPlayerState.context), { audioRef: audioRef }) })), state = _k[0], send = _k[1];
|
|
1164
1183
|
useEffect(setupAudioRef({ audioRef: audioRef, send: send }), [audioRef]);
|
|
1165
|
-
var PlaybackIcon = state.playback
|
|
1184
|
+
var PlaybackIcon = getPlaybackIcon(state.playback);
|
|
1166
1185
|
var VolumeIcon = useMemo(function () { return useVolumeIcon(state); }, [state.context.volume, (_a = state.context.audioRef.current) === null || _a === void 0 ? void 0 : _a.muted]);
|
|
1167
1186
|
var togglePlayback = function () { return send({ type: AUDIO_PLAYER_EVENT_TYPES.TOGGLE_PLAYBACK }); };
|
|
1168
1187
|
var toggleVolumeControl = function () { return send({ type: AUDIO_PLAYER_EVENT_TYPES.TOGGLE_VOLUME_CONTROL }); };
|
|
@@ -1172,7 +1191,7 @@ var AudioPlayer = function (props) {
|
|
|
1172
1191
|
return (React__default.createElement(Box, { display: "flex", alignItems: "center", gridGap: spacing(1), className: classNames$1([classes.root]) },
|
|
1173
1192
|
React__default.createElement("audio", { ref: audioRef, src: src }),
|
|
1174
1193
|
React__default.createElement(Box, null,
|
|
1175
|
-
React__default.createElement(IconButton, __assign$1({}, (classes.playbackToggle && { classes: { root: classes.playbackToggle } }), { "aria-label": state.context.playbackButtonLabel, disabled:
|
|
1194
|
+
React__default.createElement(IconButton, __assign$1({}, (classes.playbackToggle && { classes: { root: classes.playbackToggle } }), { "aria-label": state.context.playbackButtonLabel, disabled: ((_b = audioRef.current) === null || _b === void 0 ? void 0 : _b.networkState) === 2, onClick: togglePlayback }),
|
|
1176
1195
|
React__default.createElement(Icon, { icon: PlaybackIcon })),
|
|
1177
1196
|
React__default.createElement(IconButton, __assign$1({}, (classes.volumeToggle && { classes: { root: classes.volumeToggle } }), { "aria-label": state.context.volumeButtonLabel, ref: volumeRef, onClick: toggleMute, onMouseEnter: toggleVolumeControl, onMouseLeave: toggleVolumeControl, disableRipple: disableRipple }),
|
|
1178
1197
|
React__default.createElement(Icon, { icon: VolumeIcon }),
|
|
@@ -1185,10 +1204,10 @@ var AudioPlayer = function (props) {
|
|
|
1185
1204
|
}))),
|
|
1186
1205
|
React__default.createElement(Box, { display: "flex", flexGrow: 1, alignItems: "center", gridGap: spacing(1) },
|
|
1187
1206
|
React__default.createElement(Box, { flexBasis: 60, flexShrink: 0 },
|
|
1188
|
-
React__default.createElement(Typography, __assign$1({}, (classes.playbackText && { classes: { root: classes.playbackText } })), formatTime(((
|
|
1189
|
-
React__default.createElement(Slider, __assign$1({}, (classes.playbackSlider && { classes: { root: classes.playbackSlider } }), { color: "secondary", value: ((
|
|
1207
|
+
React__default.createElement(Typography, __assign$1({}, (classes.playbackText && { classes: { root: classes.playbackText } })), formatTime(((_c = state.context.audioRef.current) === null || _c === void 0 ? void 0 : _c.currentTime) || 0))),
|
|
1208
|
+
React__default.createElement(Slider, __assign$1({}, (classes.playbackSlider && { classes: { root: classes.playbackSlider } }), { color: "secondary", value: ((_d = state.context.audioRef.current) === null || _d === void 0 ? void 0 : _d.currentTime) || 0, max: ((_f = state.context.audioRef.current) === null || _f === void 0 ? void 0 : _f.duration) || 1, onChange: setTime, disabled: state.playback === PLAYBACK_STATES.NONE })),
|
|
1190
1209
|
React__default.createElement(Box, { flexBasis: 60, flexShrink: 0, textAlign: "end" },
|
|
1191
|
-
React__default.createElement(Typography, __assign$1({}, (classes.lengthText && { classes: { root: classes.lengthText } })), formatTime(((
|
|
1210
|
+
React__default.createElement(Typography, __assign$1({}, (classes.lengthText && { classes: { root: classes.lengthText } })), formatTime(((_g = state.context.audioRef.current) === null || _g === void 0 ? void 0 : _g.duration) || 0))))));
|
|
1192
1211
|
};
|
|
1193
1212
|
|
|
1194
1213
|
export { AudioPlayer };
|