@micromag/screen-audio 0.3.150 → 0.3.152
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/assets/css/styles.css +1 -1
- package/es/index.js +104 -124
- package/lib/index.js +101 -122
- package/package.json +11 -11
package/assets/css/styles.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.micromag-screen-audio-container{position:relative;width:100%;height:100%;overflow:hidden}.micromag-screen-audio-disabled.micromag-screen-audio-container{overflow:hidden;pointer-events:none}.micromag-screen-audio-hidden.micromag-screen-audio-container{display:none;visibility:hidden}.micromag-screen-audio-placeholder.micromag-screen-audio-container .micromag-screen-audio-content{position:relative;padding:6px}.micromag-screen-audio-container .micromag-screen-audio-empty{margin:5px auto;border:2px dashed #343434;color:#343434}.micromag-screen-audio-container .micromag-screen-audio-
|
|
1
|
+
.micromag-screen-audio-container{position:relative;width:100%;height:100%;overflow:hidden}.micromag-screen-audio-disabled.micromag-screen-audio-container{overflow:hidden;pointer-events:none}.micromag-screen-audio-hidden.micromag-screen-audio-container{display:none;visibility:hidden}.micromag-screen-audio-placeholder.micromag-screen-audio-container .micromag-screen-audio-content{position:relative;padding:6px}.micromag-screen-audio-container .micromag-screen-audio-empty{margin:5px auto;border:2px dashed #343434;color:#343434}.micromag-screen-audio-container .micromag-screen-audio-audio{position:absolute;bottom:50%;left:0;width:100%;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%)}.micromag-screen-audio-container .micromag-screen-audio-bottom{position:absolute;bottom:0;left:0;width:100%;-webkit-transition:padding .2s ease-out,-webkit-transform .2s ease-out;transition:padding .2s ease-out,-webkit-transform .2s ease-out;-o-transition:transform .2s ease-out,padding .2s ease-out;transition:transform .2s ease-out,padding .2s ease-out;transition:transform .2s ease-out,padding .2s ease-out,-webkit-transform .2s ease-out}.micromag-screen-audio-container .micromag-screen-audio-bottom>*{margin-bottom:10px}.micromag-screen-audio-container .micromag-screen-audio-bottom>:last-child{margin-bottom:0}.micromag-screen-audio-container .micromag-screen-audio-empty{width:100%;height:100px;margin:0 auto}.micromag-screen-audio-container.micromag-screen-audio-isPreview{pointer-events:none}
|
package/es/index.js
CHANGED
|
@@ -4,11 +4,11 @@ import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
|
4
4
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
5
5
|
import classNames from 'classnames';
|
|
6
6
|
import PropTypes from 'prop-types';
|
|
7
|
-
import React, { useState,
|
|
7
|
+
import React, { useState, useEffect, useCallback, useMemo } from 'react';
|
|
8
8
|
import { PropTypes as PropTypes$1 } from '@micromag/core';
|
|
9
9
|
import { ScreenElement, Transitions } from '@micromag/core/components';
|
|
10
|
-
import { useScreenSize, useScreenRenderContext,
|
|
11
|
-
import { useTrackScreenMedia
|
|
10
|
+
import { useScreenSize, useScreenRenderContext, useViewerContext, useViewerWebView, usePlaybackContext, usePlaybackMediaRef } from '@micromag/core/contexts';
|
|
11
|
+
import { useTrackScreenMedia } from '@micromag/core/hooks';
|
|
12
12
|
import { isIos } from '@micromag/core/utils';
|
|
13
13
|
import Audio from '@micromag/element-audio';
|
|
14
14
|
import Background from '@micromag/element-background';
|
|
@@ -16,11 +16,10 @@ import CallToAction from '@micromag/element-call-to-action';
|
|
|
16
16
|
import ClosedCaptions from '@micromag/element-closed-captions';
|
|
17
17
|
import Container from '@micromag/element-container';
|
|
18
18
|
import Layout, { Spacer } from '@micromag/element-layout';
|
|
19
|
-
import MediaControls from '@micromag/element-media-controls';
|
|
20
19
|
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
21
20
|
import { Audio as Audio$1, Container as Container$1 } from '@micromag/transforms/apple-news';
|
|
22
21
|
|
|
23
|
-
var styles = {"container":"micromag-screen-audio-container","disabled":"micromag-screen-audio-disabled","hidden":"micromag-screen-audio-hidden","placeholder":"micromag-screen-audio-placeholder","content":"micromag-screen-audio-content","empty":"micromag-screen-audio-empty","
|
|
22
|
+
var styles = {"container":"micromag-screen-audio-container","disabled":"micromag-screen-audio-disabled","hidden":"micromag-screen-audio-hidden","placeholder":"micromag-screen-audio-placeholder","content":"micromag-screen-audio-content","empty":"micromag-screen-audio-empty","audio":"micromag-screen-audio-audio","bottom":"micromag-screen-audio-bottom","isPreview":"micromag-screen-audio-isPreview"};
|
|
24
23
|
|
|
25
24
|
var propTypes = {
|
|
26
25
|
layout: PropTypes.oneOf(['middle']),
|
|
@@ -31,10 +30,8 @@ var propTypes = {
|
|
|
31
30
|
current: PropTypes.bool,
|
|
32
31
|
active: PropTypes.bool,
|
|
33
32
|
transitions: PropTypes$1.transitions,
|
|
34
|
-
|
|
33
|
+
mediaRef: PropTypes.func,
|
|
35
34
|
showWave: PropTypes.bool,
|
|
36
|
-
enableInteraction: PropTypes.func,
|
|
37
|
-
disableInteraction: PropTypes.func,
|
|
38
35
|
className: PropTypes.string
|
|
39
36
|
};
|
|
40
37
|
var defaultProps = {
|
|
@@ -46,10 +43,8 @@ var defaultProps = {
|
|
|
46
43
|
current: true,
|
|
47
44
|
active: true,
|
|
48
45
|
transitions: null,
|
|
49
|
-
|
|
46
|
+
mediaRef: null,
|
|
50
47
|
showWave: false,
|
|
51
|
-
enableInteraction: null,
|
|
52
|
-
disableInteraction: null,
|
|
53
48
|
className: null
|
|
54
49
|
};
|
|
55
50
|
|
|
@@ -64,17 +59,13 @@ var AudioScreen = function AudioScreen(_ref) {
|
|
|
64
59
|
current = _ref.current,
|
|
65
60
|
active = _ref.active,
|
|
66
61
|
transitions = _ref.transitions,
|
|
67
|
-
|
|
62
|
+
customMediaRef = _ref.mediaRef,
|
|
68
63
|
showWave = _ref.showWave,
|
|
69
|
-
enableInteraction = _ref.enableInteraction,
|
|
70
|
-
disableInteraction = _ref.disableInteraction,
|
|
71
64
|
className = _ref.className;
|
|
72
|
-
var trackScreenMedia = useTrackScreenMedia('audio');
|
|
73
65
|
|
|
74
66
|
var _useScreenSize = useScreenSize(),
|
|
75
67
|
width = _useScreenSize.width,
|
|
76
68
|
height = _useScreenSize.height,
|
|
77
|
-
menuOverScreen = _useScreenSize.menuOverScreen,
|
|
78
69
|
resolution = _useScreenSize.resolution;
|
|
79
70
|
|
|
80
71
|
var _useScreenRenderConte = useScreenRenderContext(),
|
|
@@ -85,10 +76,15 @@ var AudioScreen = function AudioScreen(_ref) {
|
|
|
85
76
|
isStatic = _useScreenRenderConte.isStatic,
|
|
86
77
|
isCapture = _useScreenRenderConte.isCapture;
|
|
87
78
|
|
|
88
|
-
var
|
|
89
|
-
|
|
79
|
+
var _useViewerContext = useViewerContext(),
|
|
80
|
+
viewerTopHeight = _useViewerContext.topHeight,
|
|
81
|
+
viewerBottomHeight = _useViewerContext.bottomHeight,
|
|
82
|
+
viewerBottomSidesWidth = _useViewerContext.bottomSidesWidth;
|
|
83
|
+
|
|
84
|
+
var _useViewerWebView = useViewerWebView(),
|
|
85
|
+
openWebView = _useViewerWebView.open;
|
|
90
86
|
|
|
91
|
-
var
|
|
87
|
+
var trackScreenMedia = useTrackScreenMedia('audio');
|
|
92
88
|
|
|
93
89
|
var _useState = useState(isStatic || isPlaceholder),
|
|
94
90
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -99,50 +95,75 @@ var AudioScreen = function AudioScreen(_ref) {
|
|
|
99
95
|
var mediaShouldLoad = current || active;
|
|
100
96
|
var transitionPlaying = current && ready;
|
|
101
97
|
var transitionDisabled = isStatic || isCapture || isPlaceholder || isPreview || isEdit;
|
|
98
|
+
|
|
99
|
+
var _ref2 = callToAction || {},
|
|
100
|
+
_ref2$active = _ref2.active,
|
|
101
|
+
hasCallToAction = _ref2$active === void 0 ? false : _ref2$active;
|
|
102
|
+
|
|
102
103
|
var hasAudio = audio !== null;
|
|
103
104
|
|
|
104
|
-
var
|
|
105
|
-
|
|
106
|
-
audioMedia =
|
|
107
|
-
|
|
108
|
-
autoPlay =
|
|
109
|
-
|
|
110
|
-
closedCaptions =
|
|
111
|
-
|
|
112
|
-
withPlayPause =
|
|
113
|
-
|
|
114
|
-
color =
|
|
115
|
-
|
|
116
|
-
progressColor =
|
|
117
|
-
|
|
118
|
-
var
|
|
119
|
-
|
|
120
|
-
audioUrl =
|
|
105
|
+
var _ref3 = audio || {},
|
|
106
|
+
_ref3$media = _ref3.media,
|
|
107
|
+
audioMedia = _ref3$media === void 0 ? null : _ref3$media,
|
|
108
|
+
_ref3$autoPlay = _ref3.autoPlay,
|
|
109
|
+
autoPlay = _ref3$autoPlay === void 0 ? true : _ref3$autoPlay,
|
|
110
|
+
_ref3$closedCaptions = _ref3.closedCaptions,
|
|
111
|
+
closedCaptions = _ref3$closedCaptions === void 0 ? null : _ref3$closedCaptions,
|
|
112
|
+
_ref3$withPlayPause = _ref3.withPlayPause,
|
|
113
|
+
withPlayPause = _ref3$withPlayPause === void 0 ? false : _ref3$withPlayPause,
|
|
114
|
+
_ref3$color = _ref3.color,
|
|
115
|
+
color = _ref3$color === void 0 ? null : _ref3$color,
|
|
116
|
+
_ref3$progressColor = _ref3.progressColor,
|
|
117
|
+
progressColor = _ref3$progressColor === void 0 ? null : _ref3$progressColor;
|
|
118
|
+
|
|
119
|
+
var _ref4 = audioMedia || {},
|
|
120
|
+
_ref4$url = _ref4.url,
|
|
121
|
+
audioUrl = _ref4$url === void 0 ? null : _ref4$url;
|
|
121
122
|
|
|
122
123
|
var hasAudioUrl = audioUrl !== null;
|
|
123
124
|
var finalAudio = hasAudio ? _objectSpread(_objectSpread({}, audio), {}, {
|
|
124
125
|
autoPlay: !isPreview && !isStatic && !isCapture && autoPlay && current
|
|
125
126
|
}) : null;
|
|
126
127
|
var hasClosedCaptions = closedCaptions !== null;
|
|
127
|
-
var onAudioReady = useCallback(function () {
|
|
128
|
-
setReady(true);
|
|
129
|
-
}, [setReady]);
|
|
130
|
-
var apiRef = useRef();
|
|
131
128
|
|
|
132
|
-
var
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
apiMediaRef = _ref4$mediaRef === void 0 ? null : _ref4$mediaRef;
|
|
129
|
+
var _usePlaybackContext = usePlaybackContext(),
|
|
130
|
+
playing = _usePlaybackContext.playing,
|
|
131
|
+
muted = _usePlaybackContext.muted,
|
|
132
|
+
setControls = _usePlaybackContext.setControls,
|
|
133
|
+
setControlsTheme = _usePlaybackContext.setControlsTheme;
|
|
134
|
+
_usePlaybackContext.setMedia;
|
|
135
|
+
var setPlaying = _usePlaybackContext.setPlaying;
|
|
140
136
|
|
|
137
|
+
var mediaRef = usePlaybackMediaRef(current);
|
|
141
138
|
useEffect(function () {
|
|
142
|
-
if (
|
|
143
|
-
|
|
139
|
+
if (!current) {
|
|
140
|
+
return function () {};
|
|
144
141
|
}
|
|
145
|
-
|
|
142
|
+
|
|
143
|
+
if (withPlayPause) {
|
|
144
|
+
setControls(true);
|
|
145
|
+
setControlsTheme({
|
|
146
|
+
color: color,
|
|
147
|
+
progressColor: progressColor
|
|
148
|
+
});
|
|
149
|
+
} else {
|
|
150
|
+
setControls(false);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
return function () {
|
|
154
|
+
if (withPlayPause) {
|
|
155
|
+
setControls(false);
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
}, [current, withPlayPause, setControls, color, progressColor]);
|
|
159
|
+
useEffect(function () {
|
|
160
|
+
if (customMediaRef !== null) {
|
|
161
|
+
customMediaRef(mediaRef.current);
|
|
162
|
+
}
|
|
163
|
+
}, [mediaRef.current]);
|
|
164
|
+
var onAudioReady = useCallback(function () {
|
|
165
|
+
setReady(true);
|
|
166
|
+
}, [setReady]);
|
|
146
167
|
|
|
147
168
|
var _useState3 = useState(null),
|
|
148
169
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
@@ -154,82 +175,39 @@ var AudioScreen = function AudioScreen(_ref) {
|
|
|
154
175
|
duration = _useState6[0],
|
|
155
176
|
setDuration = _useState6[1];
|
|
156
177
|
|
|
157
|
-
var _useState7 = useState(false),
|
|
158
|
-
_useState8 = _slicedToArray(_useState7, 2),
|
|
159
|
-
playing = _useState8[0],
|
|
160
|
-
setPlaying = _useState8[1];
|
|
161
|
-
|
|
162
|
-
var _useState9 = useState(false),
|
|
163
|
-
_useState10 = _slicedToArray(_useState9, 2),
|
|
164
|
-
muted = _useState10[0],
|
|
165
|
-
setMuted = _useState10[1];
|
|
166
|
-
|
|
167
178
|
var isIOS = useMemo(function () {
|
|
168
179
|
return isIos();
|
|
169
180
|
}, [isIos]);
|
|
181
|
+
useEffect(function () {
|
|
182
|
+
if (current && autoPlay && !playing) {
|
|
183
|
+
setPlaying(true);
|
|
184
|
+
}
|
|
185
|
+
}, [current, autoPlay]);
|
|
170
186
|
var onTimeUpdate = useCallback(function (time) {
|
|
171
187
|
setCurrentTime(time);
|
|
172
188
|
}, [setDuration, duration]);
|
|
173
189
|
var onProgressStep = useCallback(function (step) {
|
|
174
190
|
trackScreenMedia(audio, "progress_".concat(Math.round(step * 100, 10), "%"));
|
|
175
191
|
}, [trackScreenMedia, audio]);
|
|
176
|
-
var
|
|
192
|
+
var onDurationChange = useCallback(function (dur) {
|
|
177
193
|
setDuration(dur);
|
|
178
194
|
}, [setDuration]);
|
|
179
195
|
var onPlay = useCallback(function (_ref5) {
|
|
180
196
|
var initial = _ref5.initial;
|
|
181
|
-
setPlaying(true);
|
|
182
197
|
trackScreenMedia(audio, initial ? 'play' : 'resume');
|
|
183
198
|
}, [trackScreenMedia, audio]);
|
|
184
199
|
var onPause = useCallback(function (_ref6) {
|
|
185
200
|
var midway = _ref6.midway;
|
|
186
|
-
setPlaying(false);
|
|
187
201
|
trackScreenMedia(audio, midway ? 'pause' : 'ended');
|
|
188
202
|
}, [trackScreenMedia, audio]);
|
|
189
|
-
var
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
}, [seek, play]);
|
|
193
|
-
var onVolumeChanged = useCallback(function (isMuted) {
|
|
194
|
-
setMuted(isMuted);
|
|
195
|
-
trackScreenMedia(audio, isMuted ? 'mute' : 'unmute');
|
|
196
|
-
}, [trackScreenMedia, audio]);
|
|
203
|
+
var onEnded = useCallback(function () {
|
|
204
|
+
setPlaying(false);
|
|
205
|
+
}, [setPlaying]);
|
|
197
206
|
var onSeeked = useCallback(function (time) {
|
|
198
207
|
if (time > 0) {
|
|
199
208
|
trackScreenMedia(audio, 'seek');
|
|
200
209
|
}
|
|
201
210
|
}, [trackScreenMedia, audio]);
|
|
202
|
-
var onToggleMute = useCallback(function () {
|
|
203
|
-
if (muted && !playing) {
|
|
204
|
-
play();
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
toggleMute();
|
|
208
|
-
}, [muted, toggleMute]);
|
|
209
|
-
useEffect(function () {
|
|
210
|
-
if (!current && playing) {
|
|
211
|
-
pause();
|
|
212
|
-
}
|
|
213
|
-
}, [playing, current]);
|
|
214
|
-
var longPressBind = useLongPress({
|
|
215
|
-
onLongPress: togglePlay
|
|
216
|
-
});
|
|
217
|
-
var cta = !isPlaceholder && hasCallToAction ? /*#__PURE__*/React.createElement("div", {
|
|
218
|
-
style: {
|
|
219
|
-
marginTop: -spacing / 2
|
|
220
|
-
},
|
|
221
|
-
key: "call-to-action"
|
|
222
|
-
}, /*#__PURE__*/React.createElement(CallToAction, {
|
|
223
|
-
callToAction: callToAction,
|
|
224
|
-
animationDisabled: isPreview,
|
|
225
|
-
focusable: current && isView,
|
|
226
|
-
screenSize: {
|
|
227
|
-
width: width,
|
|
228
|
-
height: height
|
|
229
|
-
},
|
|
230
|
-
enableInteraction: enableInteraction,
|
|
231
|
-
disableInteraction: disableInteraction
|
|
232
|
-
})) : null;
|
|
233
211
|
var elements = [/*#__PURE__*/React.createElement(Spacer, {
|
|
234
212
|
key: "spacer-top"
|
|
235
213
|
}), /*#__PURE__*/React.createElement(ScreenElement, {
|
|
@@ -249,7 +227,7 @@ var AudioScreen = function AudioScreen(_ref) {
|
|
|
249
227
|
playing: transitionPlaying,
|
|
250
228
|
disabled: transitionDisabled
|
|
251
229
|
}, /*#__PURE__*/React.createElement(Audio, Object.assign({}, finalAudio, {
|
|
252
|
-
|
|
230
|
+
mediaRef: mediaRef,
|
|
253
231
|
waveFake: isIOS || isPreview,
|
|
254
232
|
waveProps: isPreview ? {
|
|
255
233
|
sampleWidth: 10,
|
|
@@ -261,44 +239,46 @@ var AudioScreen = function AudioScreen(_ref) {
|
|
|
261
239
|
backgroundColor: color,
|
|
262
240
|
progressColor: progressColor
|
|
263
241
|
},
|
|
242
|
+
paused: !current || !playing,
|
|
243
|
+
muted: muted,
|
|
264
244
|
className: styles.audio,
|
|
265
245
|
onReady: onAudioReady,
|
|
266
246
|
onPlay: onPlay,
|
|
267
247
|
onPause: onPause,
|
|
268
248
|
onTimeUpdate: onTimeUpdate,
|
|
269
249
|
onProgressStep: onProgressStep,
|
|
270
|
-
|
|
250
|
+
onDurationChange: onDurationChange,
|
|
271
251
|
onSeeked: onSeeked,
|
|
272
|
-
|
|
273
|
-
|
|
252
|
+
onEnded: onEnded,
|
|
253
|
+
withWave: showWave
|
|
274
254
|
})))), /*#__PURE__*/React.createElement(Spacer, {
|
|
275
255
|
key: "spacer-middle"
|
|
276
256
|
}), !isPlaceholder ? /*#__PURE__*/React.createElement("div", {
|
|
277
|
-
key: "
|
|
278
|
-
className: styles.
|
|
257
|
+
key: "bottom",
|
|
258
|
+
className: styles.bottom,
|
|
259
|
+
style: {
|
|
260
|
+
transform: !isPreview ? "translate(0, -".concat(viewerBottomHeight, "px)") : null,
|
|
261
|
+
paddingLeft: Math.max(spacing / 2, viewerBottomSidesWidth),
|
|
262
|
+
paddingRight: Math.max(spacing / 2, viewerBottomSidesWidth),
|
|
263
|
+
paddingBottom: spacing / 2,
|
|
264
|
+
paddingTop: 0
|
|
265
|
+
}
|
|
279
266
|
}, hasClosedCaptions && !isPreview && !isCapture && !isStatic ? /*#__PURE__*/React.createElement(ClosedCaptions, {
|
|
280
267
|
className: styles.closedCaptions,
|
|
281
268
|
media: closedCaptions,
|
|
282
269
|
currentTime: currentTime
|
|
283
|
-
}) : null,
|
|
284
|
-
className: styles.
|
|
285
|
-
|
|
286
|
-
playing: playing,
|
|
287
|
-
muted: muted,
|
|
288
|
-
onTogglePlay: togglePlay,
|
|
289
|
-
onToggleMute: onToggleMute,
|
|
270
|
+
}) : null, hasCallToAction ? /*#__PURE__*/React.createElement(CallToAction, Object.assign({}, callToAction, {
|
|
271
|
+
className: styles.callToAction,
|
|
272
|
+
animationDisabled: isPreview,
|
|
290
273
|
focusable: current && isView,
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
currentTime: currentTime,
|
|
294
|
-
onSeek: onSeek
|
|
295
|
-
}) : null, cta) : null].filter(function (el) {
|
|
274
|
+
openWebView: openWebView
|
|
275
|
+
})) : null) : null].filter(function (el) {
|
|
296
276
|
return el !== null;
|
|
297
277
|
});
|
|
298
|
-
return /*#__PURE__*/React.createElement("div",
|
|
278
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
299
279
|
className: classNames([styles.container, (_ref7 = {}, _defineProperty(_ref7, className, className !== null), _defineProperty(_ref7, styles.placeholder, isPlaceholder), _defineProperty(_ref7, styles.isPreview, isPreview), _ref7)]),
|
|
300
280
|
"data-screen-ready": ready
|
|
301
|
-
},
|
|
281
|
+
}, !isPlaceholder ? /*#__PURE__*/React.createElement(Background, {
|
|
302
282
|
background: background,
|
|
303
283
|
width: width,
|
|
304
284
|
height: height,
|
|
@@ -312,7 +292,7 @@ var AudioScreen = function AudioScreen(_ref) {
|
|
|
312
292
|
fullscreen: true,
|
|
313
293
|
style: !isPlaceholder ? {
|
|
314
294
|
padding: spacing,
|
|
315
|
-
paddingTop: (
|
|
295
|
+
paddingTop: (!isPreview ? viewerTopHeight : 0) + spacing
|
|
316
296
|
} : null
|
|
317
297
|
}, elements)));
|
|
318
298
|
};
|
package/lib/index.js
CHANGED
|
@@ -20,7 +20,6 @@ var CallToAction = require('@micromag/element-call-to-action');
|
|
|
20
20
|
var ClosedCaptions = require('@micromag/element-closed-captions');
|
|
21
21
|
var Container = require('@micromag/element-container');
|
|
22
22
|
var Layout = require('@micromag/element-layout');
|
|
23
|
-
var MediaControls = require('@micromag/element-media-controls');
|
|
24
23
|
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
|
25
24
|
var appleNews = require('@micromag/transforms/apple-news');
|
|
26
25
|
|
|
@@ -38,10 +37,9 @@ var CallToAction__default = /*#__PURE__*/_interopDefaultLegacy(CallToAction);
|
|
|
38
37
|
var ClosedCaptions__default = /*#__PURE__*/_interopDefaultLegacy(ClosedCaptions);
|
|
39
38
|
var Container__default = /*#__PURE__*/_interopDefaultLegacy(Container);
|
|
40
39
|
var Layout__default = /*#__PURE__*/_interopDefaultLegacy(Layout);
|
|
41
|
-
var MediaControls__default = /*#__PURE__*/_interopDefaultLegacy(MediaControls);
|
|
42
40
|
var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
|
|
43
41
|
|
|
44
|
-
var styles = {"container":"micromag-screen-audio-container","disabled":"micromag-screen-audio-disabled","hidden":"micromag-screen-audio-hidden","placeholder":"micromag-screen-audio-placeholder","content":"micromag-screen-audio-content","empty":"micromag-screen-audio-empty","
|
|
42
|
+
var styles = {"container":"micromag-screen-audio-container","disabled":"micromag-screen-audio-disabled","hidden":"micromag-screen-audio-hidden","placeholder":"micromag-screen-audio-placeholder","content":"micromag-screen-audio-content","empty":"micromag-screen-audio-empty","audio":"micromag-screen-audio-audio","bottom":"micromag-screen-audio-bottom","isPreview":"micromag-screen-audio-isPreview"};
|
|
45
43
|
|
|
46
44
|
var propTypes = {
|
|
47
45
|
layout: PropTypes__default["default"].oneOf(['middle']),
|
|
@@ -52,10 +50,8 @@ var propTypes = {
|
|
|
52
50
|
current: PropTypes__default["default"].bool,
|
|
53
51
|
active: PropTypes__default["default"].bool,
|
|
54
52
|
transitions: core.PropTypes.transitions,
|
|
55
|
-
|
|
53
|
+
mediaRef: PropTypes__default["default"].func,
|
|
56
54
|
showWave: PropTypes__default["default"].bool,
|
|
57
|
-
enableInteraction: PropTypes__default["default"].func,
|
|
58
|
-
disableInteraction: PropTypes__default["default"].func,
|
|
59
55
|
className: PropTypes__default["default"].string
|
|
60
56
|
};
|
|
61
57
|
var defaultProps = {
|
|
@@ -67,10 +63,8 @@ var defaultProps = {
|
|
|
67
63
|
current: true,
|
|
68
64
|
active: true,
|
|
69
65
|
transitions: null,
|
|
70
|
-
|
|
66
|
+
mediaRef: null,
|
|
71
67
|
showWave: false,
|
|
72
|
-
enableInteraction: null,
|
|
73
|
-
disableInteraction: null,
|
|
74
68
|
className: null
|
|
75
69
|
};
|
|
76
70
|
|
|
@@ -85,17 +79,13 @@ var AudioScreen = function AudioScreen(_ref) {
|
|
|
85
79
|
current = _ref.current,
|
|
86
80
|
active = _ref.active,
|
|
87
81
|
transitions = _ref.transitions,
|
|
88
|
-
|
|
82
|
+
customMediaRef = _ref.mediaRef,
|
|
89
83
|
showWave = _ref.showWave,
|
|
90
|
-
enableInteraction = _ref.enableInteraction,
|
|
91
|
-
disableInteraction = _ref.disableInteraction,
|
|
92
84
|
className = _ref.className;
|
|
93
|
-
var trackScreenMedia = hooks.useTrackScreenMedia('audio');
|
|
94
85
|
|
|
95
86
|
var _useScreenSize = contexts.useScreenSize(),
|
|
96
87
|
width = _useScreenSize.width,
|
|
97
88
|
height = _useScreenSize.height,
|
|
98
|
-
menuOverScreen = _useScreenSize.menuOverScreen,
|
|
99
89
|
resolution = _useScreenSize.resolution;
|
|
100
90
|
|
|
101
91
|
var _useScreenRenderConte = contexts.useScreenRenderContext(),
|
|
@@ -106,10 +96,15 @@ var AudioScreen = function AudioScreen(_ref) {
|
|
|
106
96
|
isStatic = _useScreenRenderConte.isStatic,
|
|
107
97
|
isCapture = _useScreenRenderConte.isCapture;
|
|
108
98
|
|
|
109
|
-
var
|
|
110
|
-
|
|
99
|
+
var _useViewerContext = contexts.useViewerContext(),
|
|
100
|
+
viewerTopHeight = _useViewerContext.topHeight,
|
|
101
|
+
viewerBottomHeight = _useViewerContext.bottomHeight,
|
|
102
|
+
viewerBottomSidesWidth = _useViewerContext.bottomSidesWidth;
|
|
103
|
+
|
|
104
|
+
var _useViewerWebView = contexts.useViewerWebView(),
|
|
105
|
+
openWebView = _useViewerWebView.open;
|
|
111
106
|
|
|
112
|
-
var
|
|
107
|
+
var trackScreenMedia = hooks.useTrackScreenMedia('audio');
|
|
113
108
|
|
|
114
109
|
var _useState = React.useState(isStatic || isPlaceholder),
|
|
115
110
|
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
@@ -120,50 +115,75 @@ var AudioScreen = function AudioScreen(_ref) {
|
|
|
120
115
|
var mediaShouldLoad = current || active;
|
|
121
116
|
var transitionPlaying = current && ready;
|
|
122
117
|
var transitionDisabled = isStatic || isCapture || isPlaceholder || isPreview || isEdit;
|
|
118
|
+
|
|
119
|
+
var _ref2 = callToAction || {},
|
|
120
|
+
_ref2$active = _ref2.active,
|
|
121
|
+
hasCallToAction = _ref2$active === void 0 ? false : _ref2$active;
|
|
122
|
+
|
|
123
123
|
var hasAudio = audio !== null;
|
|
124
124
|
|
|
125
|
-
var
|
|
126
|
-
|
|
127
|
-
audioMedia =
|
|
128
|
-
|
|
129
|
-
autoPlay =
|
|
130
|
-
|
|
131
|
-
closedCaptions =
|
|
132
|
-
|
|
133
|
-
withPlayPause =
|
|
134
|
-
|
|
135
|
-
color =
|
|
136
|
-
|
|
137
|
-
progressColor =
|
|
138
|
-
|
|
139
|
-
var
|
|
140
|
-
|
|
141
|
-
audioUrl =
|
|
125
|
+
var _ref3 = audio || {},
|
|
126
|
+
_ref3$media = _ref3.media,
|
|
127
|
+
audioMedia = _ref3$media === void 0 ? null : _ref3$media,
|
|
128
|
+
_ref3$autoPlay = _ref3.autoPlay,
|
|
129
|
+
autoPlay = _ref3$autoPlay === void 0 ? true : _ref3$autoPlay,
|
|
130
|
+
_ref3$closedCaptions = _ref3.closedCaptions,
|
|
131
|
+
closedCaptions = _ref3$closedCaptions === void 0 ? null : _ref3$closedCaptions,
|
|
132
|
+
_ref3$withPlayPause = _ref3.withPlayPause,
|
|
133
|
+
withPlayPause = _ref3$withPlayPause === void 0 ? false : _ref3$withPlayPause,
|
|
134
|
+
_ref3$color = _ref3.color,
|
|
135
|
+
color = _ref3$color === void 0 ? null : _ref3$color,
|
|
136
|
+
_ref3$progressColor = _ref3.progressColor,
|
|
137
|
+
progressColor = _ref3$progressColor === void 0 ? null : _ref3$progressColor;
|
|
138
|
+
|
|
139
|
+
var _ref4 = audioMedia || {},
|
|
140
|
+
_ref4$url = _ref4.url,
|
|
141
|
+
audioUrl = _ref4$url === void 0 ? null : _ref4$url;
|
|
142
142
|
|
|
143
143
|
var hasAudioUrl = audioUrl !== null;
|
|
144
144
|
var finalAudio = hasAudio ? _objectSpread__default["default"](_objectSpread__default["default"]({}, audio), {}, {
|
|
145
145
|
autoPlay: !isPreview && !isStatic && !isCapture && autoPlay && current
|
|
146
146
|
}) : null;
|
|
147
147
|
var hasClosedCaptions = closedCaptions !== null;
|
|
148
|
-
var onAudioReady = React.useCallback(function () {
|
|
149
|
-
setReady(true);
|
|
150
|
-
}, [setReady]);
|
|
151
|
-
var apiRef = React.useRef();
|
|
152
148
|
|
|
153
|
-
var
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
apiMediaRef = _ref4$mediaRef === void 0 ? null : _ref4$mediaRef;
|
|
149
|
+
var _usePlaybackContext = contexts.usePlaybackContext(),
|
|
150
|
+
playing = _usePlaybackContext.playing,
|
|
151
|
+
muted = _usePlaybackContext.muted,
|
|
152
|
+
setControls = _usePlaybackContext.setControls,
|
|
153
|
+
setControlsTheme = _usePlaybackContext.setControlsTheme;
|
|
154
|
+
_usePlaybackContext.setMedia;
|
|
155
|
+
var setPlaying = _usePlaybackContext.setPlaying;
|
|
161
156
|
|
|
157
|
+
var mediaRef = contexts.usePlaybackMediaRef(current);
|
|
162
158
|
React.useEffect(function () {
|
|
163
|
-
if (
|
|
164
|
-
|
|
159
|
+
if (!current) {
|
|
160
|
+
return function () {};
|
|
165
161
|
}
|
|
166
|
-
|
|
162
|
+
|
|
163
|
+
if (withPlayPause) {
|
|
164
|
+
setControls(true);
|
|
165
|
+
setControlsTheme({
|
|
166
|
+
color: color,
|
|
167
|
+
progressColor: progressColor
|
|
168
|
+
});
|
|
169
|
+
} else {
|
|
170
|
+
setControls(false);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
return function () {
|
|
174
|
+
if (withPlayPause) {
|
|
175
|
+
setControls(false);
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
}, [current, withPlayPause, setControls, color, progressColor]);
|
|
179
|
+
React.useEffect(function () {
|
|
180
|
+
if (customMediaRef !== null) {
|
|
181
|
+
customMediaRef(mediaRef.current);
|
|
182
|
+
}
|
|
183
|
+
}, [mediaRef.current]);
|
|
184
|
+
var onAudioReady = React.useCallback(function () {
|
|
185
|
+
setReady(true);
|
|
186
|
+
}, [setReady]);
|
|
167
187
|
|
|
168
188
|
var _useState3 = React.useState(null),
|
|
169
189
|
_useState4 = _slicedToArray__default["default"](_useState3, 2),
|
|
@@ -175,82 +195,39 @@ var AudioScreen = function AudioScreen(_ref) {
|
|
|
175
195
|
duration = _useState6[0],
|
|
176
196
|
setDuration = _useState6[1];
|
|
177
197
|
|
|
178
|
-
var _useState7 = React.useState(false),
|
|
179
|
-
_useState8 = _slicedToArray__default["default"](_useState7, 2),
|
|
180
|
-
playing = _useState8[0],
|
|
181
|
-
setPlaying = _useState8[1];
|
|
182
|
-
|
|
183
|
-
var _useState9 = React.useState(false),
|
|
184
|
-
_useState10 = _slicedToArray__default["default"](_useState9, 2),
|
|
185
|
-
muted = _useState10[0],
|
|
186
|
-
setMuted = _useState10[1];
|
|
187
|
-
|
|
188
198
|
var isIOS = React.useMemo(function () {
|
|
189
199
|
return utils.isIos();
|
|
190
200
|
}, [utils.isIos]);
|
|
201
|
+
React.useEffect(function () {
|
|
202
|
+
if (current && autoPlay && !playing) {
|
|
203
|
+
setPlaying(true);
|
|
204
|
+
}
|
|
205
|
+
}, [current, autoPlay]);
|
|
191
206
|
var onTimeUpdate = React.useCallback(function (time) {
|
|
192
207
|
setCurrentTime(time);
|
|
193
208
|
}, [setDuration, duration]);
|
|
194
209
|
var onProgressStep = React.useCallback(function (step) {
|
|
195
210
|
trackScreenMedia(audio, "progress_".concat(Math.round(step * 100, 10), "%"));
|
|
196
211
|
}, [trackScreenMedia, audio]);
|
|
197
|
-
var
|
|
212
|
+
var onDurationChange = React.useCallback(function (dur) {
|
|
198
213
|
setDuration(dur);
|
|
199
214
|
}, [setDuration]);
|
|
200
215
|
var onPlay = React.useCallback(function (_ref5) {
|
|
201
216
|
var initial = _ref5.initial;
|
|
202
|
-
setPlaying(true);
|
|
203
217
|
trackScreenMedia(audio, initial ? 'play' : 'resume');
|
|
204
218
|
}, [trackScreenMedia, audio]);
|
|
205
219
|
var onPause = React.useCallback(function (_ref6) {
|
|
206
220
|
var midway = _ref6.midway;
|
|
207
|
-
setPlaying(false);
|
|
208
221
|
trackScreenMedia(audio, midway ? 'pause' : 'ended');
|
|
209
222
|
}, [trackScreenMedia, audio]);
|
|
210
|
-
var
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
}, [seek, play]);
|
|
214
|
-
var onVolumeChanged = React.useCallback(function (isMuted) {
|
|
215
|
-
setMuted(isMuted);
|
|
216
|
-
trackScreenMedia(audio, isMuted ? 'mute' : 'unmute');
|
|
217
|
-
}, [trackScreenMedia, audio]);
|
|
223
|
+
var onEnded = React.useCallback(function () {
|
|
224
|
+
setPlaying(false);
|
|
225
|
+
}, [setPlaying]);
|
|
218
226
|
var onSeeked = React.useCallback(function (time) {
|
|
219
227
|
if (time > 0) {
|
|
220
228
|
trackScreenMedia(audio, 'seek');
|
|
221
229
|
}
|
|
222
230
|
}, [trackScreenMedia, audio]);
|
|
223
|
-
var onToggleMute = React.useCallback(function () {
|
|
224
|
-
if (muted && !playing) {
|
|
225
|
-
play();
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
toggleMute();
|
|
229
|
-
}, [muted, toggleMute]);
|
|
230
|
-
React.useEffect(function () {
|
|
231
|
-
if (!current && playing) {
|
|
232
|
-
pause();
|
|
233
|
-
}
|
|
234
|
-
}, [playing, current]);
|
|
235
|
-
var longPressBind = hooks.useLongPress({
|
|
236
|
-
onLongPress: togglePlay
|
|
237
|
-
});
|
|
238
|
-
var cta = !isPlaceholder && hasCallToAction ? /*#__PURE__*/React__default["default"].createElement("div", {
|
|
239
|
-
style: {
|
|
240
|
-
marginTop: -spacing / 2
|
|
241
|
-
},
|
|
242
|
-
key: "call-to-action"
|
|
243
|
-
}, /*#__PURE__*/React__default["default"].createElement(CallToAction__default["default"], {
|
|
244
|
-
callToAction: callToAction,
|
|
245
|
-
animationDisabled: isPreview,
|
|
246
|
-
focusable: current && isView,
|
|
247
|
-
screenSize: {
|
|
248
|
-
width: width,
|
|
249
|
-
height: height
|
|
250
|
-
},
|
|
251
|
-
enableInteraction: enableInteraction,
|
|
252
|
-
disableInteraction: disableInteraction
|
|
253
|
-
})) : null;
|
|
254
231
|
var elements = [/*#__PURE__*/React__default["default"].createElement(Layout.Spacer, {
|
|
255
232
|
key: "spacer-top"
|
|
256
233
|
}), /*#__PURE__*/React__default["default"].createElement(components.ScreenElement, {
|
|
@@ -270,7 +247,7 @@ var AudioScreen = function AudioScreen(_ref) {
|
|
|
270
247
|
playing: transitionPlaying,
|
|
271
248
|
disabled: transitionDisabled
|
|
272
249
|
}, /*#__PURE__*/React__default["default"].createElement(Audio__default["default"], Object.assign({}, finalAudio, {
|
|
273
|
-
|
|
250
|
+
mediaRef: mediaRef,
|
|
274
251
|
waveFake: isIOS || isPreview,
|
|
275
252
|
waveProps: isPreview ? {
|
|
276
253
|
sampleWidth: 10,
|
|
@@ -282,44 +259,46 @@ var AudioScreen = function AudioScreen(_ref) {
|
|
|
282
259
|
backgroundColor: color,
|
|
283
260
|
progressColor: progressColor
|
|
284
261
|
},
|
|
262
|
+
paused: !current || !playing,
|
|
263
|
+
muted: muted,
|
|
285
264
|
className: styles.audio,
|
|
286
265
|
onReady: onAudioReady,
|
|
287
266
|
onPlay: onPlay,
|
|
288
267
|
onPause: onPause,
|
|
289
268
|
onTimeUpdate: onTimeUpdate,
|
|
290
269
|
onProgressStep: onProgressStep,
|
|
291
|
-
|
|
270
|
+
onDurationChange: onDurationChange,
|
|
292
271
|
onSeeked: onSeeked,
|
|
293
|
-
|
|
294
|
-
|
|
272
|
+
onEnded: onEnded,
|
|
273
|
+
withWave: showWave
|
|
295
274
|
})))), /*#__PURE__*/React__default["default"].createElement(Layout.Spacer, {
|
|
296
275
|
key: "spacer-middle"
|
|
297
276
|
}), !isPlaceholder ? /*#__PURE__*/React__default["default"].createElement("div", {
|
|
298
|
-
key: "
|
|
299
|
-
className: styles.
|
|
277
|
+
key: "bottom",
|
|
278
|
+
className: styles.bottom,
|
|
279
|
+
style: {
|
|
280
|
+
transform: !isPreview ? "translate(0, -".concat(viewerBottomHeight, "px)") : null,
|
|
281
|
+
paddingLeft: Math.max(spacing / 2, viewerBottomSidesWidth),
|
|
282
|
+
paddingRight: Math.max(spacing / 2, viewerBottomSidesWidth),
|
|
283
|
+
paddingBottom: spacing / 2,
|
|
284
|
+
paddingTop: 0
|
|
285
|
+
}
|
|
300
286
|
}, hasClosedCaptions && !isPreview && !isCapture && !isStatic ? /*#__PURE__*/React__default["default"].createElement(ClosedCaptions__default["default"], {
|
|
301
287
|
className: styles.closedCaptions,
|
|
302
288
|
media: closedCaptions,
|
|
303
289
|
currentTime: currentTime
|
|
304
|
-
}) : null,
|
|
305
|
-
className: styles.
|
|
306
|
-
|
|
307
|
-
playing: playing,
|
|
308
|
-
muted: muted,
|
|
309
|
-
onTogglePlay: togglePlay,
|
|
310
|
-
onToggleMute: onToggleMute,
|
|
290
|
+
}) : null, hasCallToAction ? /*#__PURE__*/React__default["default"].createElement(CallToAction__default["default"], Object.assign({}, callToAction, {
|
|
291
|
+
className: styles.callToAction,
|
|
292
|
+
animationDisabled: isPreview,
|
|
311
293
|
focusable: current && isView,
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
currentTime: currentTime,
|
|
315
|
-
onSeek: onSeek
|
|
316
|
-
}) : null, cta) : null].filter(function (el) {
|
|
294
|
+
openWebView: openWebView
|
|
295
|
+
})) : null) : null].filter(function (el) {
|
|
317
296
|
return el !== null;
|
|
318
297
|
});
|
|
319
|
-
return /*#__PURE__*/React__default["default"].createElement("div",
|
|
298
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
320
299
|
className: classNames__default["default"]([styles.container, (_ref7 = {}, _defineProperty__default["default"](_ref7, className, className !== null), _defineProperty__default["default"](_ref7, styles.placeholder, isPlaceholder), _defineProperty__default["default"](_ref7, styles.isPreview, isPreview), _ref7)]),
|
|
321
300
|
"data-screen-ready": ready
|
|
322
|
-
},
|
|
301
|
+
}, !isPlaceholder ? /*#__PURE__*/React__default["default"].createElement(Background__default["default"], {
|
|
323
302
|
background: background,
|
|
324
303
|
width: width,
|
|
325
304
|
height: height,
|
|
@@ -333,7 +312,7 @@ var AudioScreen = function AudioScreen(_ref) {
|
|
|
333
312
|
fullscreen: true,
|
|
334
313
|
style: !isPlaceholder ? {
|
|
335
314
|
padding: spacing,
|
|
336
|
-
paddingTop: (
|
|
315
|
+
paddingTop: (!isPreview ? viewerTopHeight : 0) + spacing
|
|
337
316
|
} : null
|
|
338
317
|
}, elements)));
|
|
339
318
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@micromag/screen-audio",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.152",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"javascript"
|
|
@@ -49,15 +49,15 @@
|
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"@babel/runtime": "^7.13.10",
|
|
52
|
-
"@micromag/core": "^0.3.
|
|
53
|
-
"@micromag/element-audio": "^0.3.
|
|
54
|
-
"@micromag/element-background": "^0.3.
|
|
55
|
-
"@micromag/element-call-to-action": "^0.3.
|
|
56
|
-
"@micromag/element-closed-captions": "^0.3.
|
|
57
|
-
"@micromag/element-container": "^0.3.
|
|
58
|
-
"@micromag/element-layout": "^0.3.
|
|
59
|
-
"@micromag/element-media-controls": "^0.3.
|
|
60
|
-
"@micromag/transforms": "^0.3.
|
|
52
|
+
"@micromag/core": "^0.3.152",
|
|
53
|
+
"@micromag/element-audio": "^0.3.152",
|
|
54
|
+
"@micromag/element-background": "^0.3.152",
|
|
55
|
+
"@micromag/element-call-to-action": "^0.3.152",
|
|
56
|
+
"@micromag/element-closed-captions": "^0.3.152",
|
|
57
|
+
"@micromag/element-container": "^0.3.152",
|
|
58
|
+
"@micromag/element-layout": "^0.3.152",
|
|
59
|
+
"@micromag/element-media-controls": "^0.3.152",
|
|
60
|
+
"@micromag/transforms": "^0.3.152",
|
|
61
61
|
"classnames": "^2.2.6",
|
|
62
62
|
"lodash": "^4.17.21",
|
|
63
63
|
"prop-types": "^15.7.2",
|
|
@@ -67,5 +67,5 @@
|
|
|
67
67
|
"publishConfig": {
|
|
68
68
|
"access": "public"
|
|
69
69
|
},
|
|
70
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "23db6c104c10cc70a73366c8b04576a312a36206"
|
|
71
71
|
}
|