@micromag/screen-audio 0.2.286

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.
@@ -0,0 +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-mediaControls{padding:10px 20px 0}.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-bottomContent{position:relative}.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 ADDED
@@ -0,0 +1,360 @@
1
+ import { FormattedMessage, defineMessage } from 'react-intl';
2
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
3
+ import _objectSpread from '@babel/runtime/helpers/objectSpread2';
4
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
5
+ import React, { useState, useCallback, useRef, useMemo, useEffect } from 'react';
6
+ import PropTypes from 'prop-types';
7
+ import classNames from 'classnames';
8
+ import { PropTypes as PropTypes$1 } from '@micromag/core';
9
+ import { isIos } from '@micromag/core/utils';
10
+ import { useScreenSize, useScreenRenderContext, useViewer } from '@micromag/core/contexts';
11
+ import { useTrackScreenMedia, useLongPress } from '@micromag/core/hooks';
12
+ import { ScreenElement, Transitions } from '@micromag/core/components';
13
+ import Audio from '@micromag/element-audio';
14
+ import ClosedCaptions from '@micromag/element-closed-captions';
15
+ import MediaControls from '@micromag/element-media-controls';
16
+ import Background from '@micromag/element-background';
17
+ import Container from '@micromag/element-container';
18
+ import Layout, { Spacer } from '@micromag/element-layout';
19
+ import CallToAction from '@micromag/element-call-to-action';
20
+ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
21
+ import { Audio as Audio$1, Container as Container$1 } from '@micromag/transforms/apple-news';
22
+
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","mediaControls":"micromag-screen-audio-mediaControls","audio":"micromag-screen-audio-audio","bottomContent":"micromag-screen-audio-bottomContent","isPreview":"micromag-screen-audio-isPreview"};
24
+
25
+ var propTypes = {
26
+ layout: PropTypes.oneOf(['middle']),
27
+ audio: PropTypes$1.audioElement,
28
+ spacing: PropTypes.number,
29
+ background: PropTypes$1.backgroundElement,
30
+ callToAction: PropTypes$1.callToAction,
31
+ current: PropTypes.bool,
32
+ transitions: PropTypes$1.transitions,
33
+ className: PropTypes.string
34
+ };
35
+ var defaultProps = {
36
+ layout: 'middle',
37
+ audio: null,
38
+ spacing: 20,
39
+ background: null,
40
+ callToAction: null,
41
+ current: true,
42
+ transitions: null,
43
+ className: null
44
+ };
45
+
46
+ var AudioScreen = function AudioScreen(_ref) {
47
+ var _ref7;
48
+
49
+ _ref.layout;
50
+ var audio = _ref.audio,
51
+ spacing = _ref.spacing,
52
+ background = _ref.background,
53
+ callToAction = _ref.callToAction,
54
+ current = _ref.current,
55
+ transitions = _ref.transitions,
56
+ className = _ref.className;
57
+ var trackScreenMedia = useTrackScreenMedia('audio');
58
+
59
+ var _useScreenSize = useScreenSize(),
60
+ width = _useScreenSize.width,
61
+ height = _useScreenSize.height,
62
+ menuOverScreen = _useScreenSize.menuOverScreen;
63
+
64
+ var _useScreenRenderConte = useScreenRenderContext(),
65
+ isPlaceholder = _useScreenRenderConte.isPlaceholder,
66
+ isPreview = _useScreenRenderConte.isPreview,
67
+ isView = _useScreenRenderConte.isView,
68
+ isEdit = _useScreenRenderConte.isEdit,
69
+ isStatic = _useScreenRenderConte.isStatic,
70
+ isCapture = _useScreenRenderConte.isCapture;
71
+
72
+ var _useViewer = useViewer(),
73
+ menuSize = _useViewer.menuSize;
74
+
75
+ var hasCallToAction = callToAction !== null && callToAction.active === true;
76
+
77
+ var _useState = useState(isStatic || isPlaceholder),
78
+ _useState2 = _slicedToArray(_useState, 2),
79
+ ready = _useState2[0],
80
+ setReady = _useState2[1];
81
+
82
+ var backgroundPlaying = current && (isView || isEdit);
83
+ var transitionPlaying = current && ready;
84
+ var transitionDisabled = isStatic || isCapture || isPlaceholder || isPreview || isEdit;
85
+ var hasAudio = audio !== null;
86
+
87
+ var _ref2 = audio || {},
88
+ _ref2$media = _ref2.media,
89
+ audioMedia = _ref2$media === void 0 ? null : _ref2$media,
90
+ _ref2$autoPlay = _ref2.autoPlay,
91
+ autoPlay = _ref2$autoPlay === void 0 ? true : _ref2$autoPlay,
92
+ _ref2$closedCaptions = _ref2.closedCaptions,
93
+ closedCaptions = _ref2$closedCaptions === void 0 ? null : _ref2$closedCaptions,
94
+ _ref2$withPlayPause = _ref2.withPlayPause,
95
+ withPlayPause = _ref2$withPlayPause === void 0 ? false : _ref2$withPlayPause;
96
+
97
+ var _ref3 = audioMedia || {},
98
+ _ref3$url = _ref3.url,
99
+ audioUrl = _ref3$url === void 0 ? null : _ref3$url;
100
+
101
+ var hasAudioUrl = audioUrl !== null;
102
+ var finalAudio = hasAudio ? _objectSpread(_objectSpread({}, audio), {}, {
103
+ autoPlay: !isPreview && !isStatic && !isCapture && autoPlay && current
104
+ }) : null;
105
+ var hasClosedCaptions = closedCaptions !== null;
106
+ var onAudioReady = useCallback(function () {
107
+ setReady(true);
108
+ }, [setReady]);
109
+ var apiRef = useRef();
110
+
111
+ var _ref4 = apiRef.current || {},
112
+ togglePlay = _ref4.togglePlay,
113
+ toggleMute = _ref4.toggleMute,
114
+ play = _ref4.play,
115
+ pause = _ref4.pause;
116
+
117
+ var _useState3 = useState(null),
118
+ _useState4 = _slicedToArray(_useState3, 2),
119
+ currentTime = _useState4[0],
120
+ setCurrentTime = _useState4[1];
121
+
122
+ var _useState5 = useState(null),
123
+ _useState6 = _slicedToArray(_useState5, 2),
124
+ duration = _useState6[0],
125
+ setDuration = _useState6[1];
126
+
127
+ var _useState7 = useState(false),
128
+ _useState8 = _slicedToArray(_useState7, 2),
129
+ playing = _useState8[0],
130
+ setPlaying = _useState8[1];
131
+
132
+ var _useState9 = useState(false),
133
+ _useState10 = _slicedToArray(_useState9, 2),
134
+ muted = _useState10[0],
135
+ setMuted = _useState10[1];
136
+
137
+ var isIOS = useMemo(function () {
138
+ return isIos();
139
+ }, [isIos]);
140
+ var onTimeUpdate = useCallback(function (time) {
141
+ setCurrentTime(time);
142
+ }, [setDuration, duration]);
143
+ var onProgressStep = useCallback(function (step) {
144
+ trackScreenMedia(audio, "progress_".concat(Math.round(step * 100, 10), "%"));
145
+ }, [trackScreenMedia, audio]);
146
+ var onDurationChanged = useCallback(function (dur) {
147
+ setDuration(dur);
148
+ }, [setDuration]);
149
+ var onPlay = useCallback(function (_ref5) {
150
+ var initial = _ref5.initial;
151
+ setPlaying(true);
152
+ trackScreenMedia(audio, initial ? 'play' : 'resume');
153
+ }, [trackScreenMedia, audio]);
154
+ var onPause = useCallback(function (_ref6) {
155
+ var midway = _ref6.midway;
156
+ setPlaying(false);
157
+ trackScreenMedia(audio, midway ? 'pause' : 'ended');
158
+ }, [trackScreenMedia, audio]);
159
+ var onVolumeChanged = useCallback(function (isMuted) {
160
+ setMuted(isMuted);
161
+ trackScreenMedia(audio, isMuted ? 'mute' : 'unmute');
162
+ }, [trackScreenMedia, audio]);
163
+ var onSeeked = useCallback(function (time) {
164
+ if (time > 0) {
165
+ trackScreenMedia(audio, 'seek');
166
+ }
167
+ }, [trackScreenMedia, audio]);
168
+ var onToggleMute = useCallback(function () {
169
+ if (muted && !playing) {
170
+ play();
171
+ }
172
+
173
+ toggleMute();
174
+ }, [muted, toggleMute]);
175
+ useEffect(function () {
176
+ if (!current && playing) {
177
+ pause();
178
+ }
179
+ }, [playing, current]); // ------------------------------------
180
+
181
+ var longPressBind = useLongPress({
182
+ onLongPress: togglePlay
183
+ });
184
+ var elements = [/*#__PURE__*/React.createElement(Spacer, {
185
+ key: "spacer-top"
186
+ }), /*#__PURE__*/React.createElement(ScreenElement, {
187
+ key: "audio",
188
+ placeholder: "audio",
189
+ emptyLabel: /*#__PURE__*/React.createElement(FormattedMessage, {
190
+ id: "MYZwSA",
191
+ defaultMessage: [{
192
+ "type": 0,
193
+ "value": "Audio"
194
+ }]
195
+ }),
196
+ emptyClassName: styles.empty,
197
+ isEmpty: !hasAudioUrl
198
+ }, /*#__PURE__*/React.createElement(Transitions, {
199
+ transitions: transitions,
200
+ playing: transitionPlaying,
201
+ disabled: transitionDisabled
202
+ }, /*#__PURE__*/React.createElement(Audio, Object.assign({}, finalAudio, {
203
+ ref: apiRef,
204
+ waveFake: isIOS || isPreview,
205
+ waveProps: isPreview ? {
206
+ sampleWidth: 10,
207
+ sampleMargin: 5,
208
+ minSampleHeight: 5
209
+ } : null,
210
+ className: styles.audio,
211
+ onReady: onAudioReady,
212
+ onPlay: onPlay,
213
+ onPause: onPause,
214
+ onTimeUpdate: onTimeUpdate,
215
+ onProgressStep: onProgressStep,
216
+ onDurationChanged: onDurationChanged,
217
+ onSeeked: onSeeked,
218
+ onVolumeChanged: onVolumeChanged
219
+ })))), /*#__PURE__*/React.createElement(Spacer, {
220
+ key: "spacer-middle"
221
+ }), !isPlaceholder ? /*#__PURE__*/React.createElement("div", {
222
+ key: "controls",
223
+ className: styles.bottomContent
224
+ }, hasClosedCaptions && !isPreview && !isCapture && !isStatic ? /*#__PURE__*/React.createElement(ClosedCaptions, {
225
+ className: styles.closedCaptions,
226
+ media: closedCaptions,
227
+ currentTime: currentTime
228
+ }) : null, hasAudioUrl ? /*#__PURE__*/React.createElement(MediaControls, {
229
+ className: styles.mediaControls,
230
+ withPlayPause: withPlayPause,
231
+ playing: playing,
232
+ muted: muted,
233
+ onTogglePlay: togglePlay,
234
+ onToggleMute: onToggleMute
235
+ }) : null) : null, !isPlaceholder && hasCallToAction ? /*#__PURE__*/React.createElement("div", {
236
+ style: {
237
+ margin: -spacing,
238
+ marginTop: 0
239
+ },
240
+ key: "call-to-action"
241
+ }, /*#__PURE__*/React.createElement(CallToAction, {
242
+ callToAction: callToAction,
243
+ animationDisabled: isPreview
244
+ })) : null].filter(function (el) {
245
+ return el !== null;
246
+ });
247
+ return /*#__PURE__*/React.createElement("div", Object.assign({
248
+ className: classNames([styles.container, (_ref7 = {}, _defineProperty(_ref7, className, className !== null), _defineProperty(_ref7, styles.placeholder, isPlaceholder), _defineProperty(_ref7, styles.isPreview, isPreview), _ref7)]),
249
+ "data-screen-ready": ready
250
+ }, longPressBind), !isPlaceholder ? /*#__PURE__*/React.createElement(Background, Object.assign({}, background, {
251
+ width: width,
252
+ height: height,
253
+ playing: backgroundPlaying
254
+ })) : null, /*#__PURE__*/React.createElement(Container, {
255
+ width: width,
256
+ height: height
257
+ }, /*#__PURE__*/React.createElement(Layout, {
258
+ fullscreen: true,
259
+ style: !isPlaceholder ? {
260
+ padding: spacing,
261
+ paddingTop: (menuOverScreen && !isPreview ? menuSize : 0) + spacing
262
+ } : null
263
+ }, elements)));
264
+ };
265
+
266
+ AudioScreen.propTypes = propTypes;
267
+ AudioScreen.defaultProps = defaultProps;
268
+ var AudioScreen$1 = /*#__PURE__*/React.memo(AudioScreen);
269
+
270
+ var transform = function transform(newStory, _ref) {
271
+ var audio = _ref.audio;
272
+
273
+ var _ref2 = audio || {},
274
+ _ref2$media = _ref2.media,
275
+ media = _ref2$media === void 0 ? null : _ref2$media;
276
+
277
+ var _Audio = Audio$1(newStory, media),
278
+ titleStory = _Audio.story,
279
+ titleComponent = _Audio.component;
280
+
281
+ console.log(media);
282
+
283
+ var _Container = Container$1(titleStory, _toConsumableArray(titleComponent ? [titleComponent] : [])),
284
+ containerStory = _Container.story,
285
+ containerComponent = _Container.component;
286
+
287
+ return _objectSpread(_objectSpread({}, containerStory), {}, {
288
+ components: [].concat(_toConsumableArray(newStory.components || []), _toConsumableArray(containerComponent ? [containerComponent] : []))
289
+ });
290
+ };
291
+
292
+ // eslint-disable-next-line
293
+
294
+ var transforms = /*#__PURE__*/Object.freeze({
295
+ __proto__: null,
296
+ appleNews: transform
297
+ });
298
+
299
+ var definition = {
300
+ id: 'audio',
301
+ type: 'screen',
302
+ group: {
303
+ label: defineMessage({
304
+ "id": "+9akmg",
305
+ "defaultMessage": [{
306
+ "type": 0,
307
+ "value": "Audio and Video"
308
+ }]
309
+ }),
310
+ order: 5
311
+ },
312
+ title: defineMessage({
313
+ "id": "bhEaUt",
314
+ "defaultMessage": [{
315
+ "type": 0,
316
+ "value": "Audio"
317
+ }]
318
+ }),
319
+ component: AudioScreen$1,
320
+ layouts: ['middle'],
321
+ transforms: transforms,
322
+ fields: [{
323
+ name: 'audio',
324
+ type: 'audio-element',
325
+ theme: {
326
+ color: 'primary'
327
+ },
328
+ defaultValue: {
329
+ autoPlay: true
330
+ },
331
+ label: defineMessage({
332
+ "id": "169xnt",
333
+ "defaultMessage": [{
334
+ "type": 0,
335
+ "value": "Audio"
336
+ }]
337
+ })
338
+ }, {
339
+ name: 'background',
340
+ type: 'background',
341
+ label: defineMessage({
342
+ "id": "+MPZRu",
343
+ "defaultMessage": [{
344
+ "type": 0,
345
+ "value": "Background"
346
+ }]
347
+ })
348
+ }, {
349
+ name: 'callToAction',
350
+ type: 'call-to-action',
351
+ theme: {
352
+ label: {
353
+ textStyle: 'heading2'
354
+ }
355
+ }
356
+ }]
357
+ };
358
+
359
+ export default definition;
360
+ export { AudioScreen$1 as AudioScreen };
package/lib/index.js ADDED
@@ -0,0 +1,381 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var reactIntl = require('react-intl');
6
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
+ var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
8
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
9
+ var React = require('react');
10
+ var PropTypes = require('prop-types');
11
+ var classNames = require('classnames');
12
+ var core = require('@micromag/core');
13
+ var utils = require('@micromag/core/utils');
14
+ var contexts = require('@micromag/core/contexts');
15
+ var hooks = require('@micromag/core/hooks');
16
+ var components = require('@micromag/core/components');
17
+ var Audio = require('@micromag/element-audio');
18
+ var ClosedCaptions = require('@micromag/element-closed-captions');
19
+ var MediaControls = require('@micromag/element-media-controls');
20
+ var Background = require('@micromag/element-background');
21
+ var Container = require('@micromag/element-container');
22
+ var Layout = require('@micromag/element-layout');
23
+ var CallToAction = require('@micromag/element-call-to-action');
24
+ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
25
+ var appleNews = require('@micromag/transforms/apple-news');
26
+
27
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
28
+
29
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
30
+ var _objectSpread__default = /*#__PURE__*/_interopDefaultLegacy(_objectSpread);
31
+ var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
32
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
33
+ var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
34
+ var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
35
+ var Audio__default = /*#__PURE__*/_interopDefaultLegacy(Audio);
36
+ var ClosedCaptions__default = /*#__PURE__*/_interopDefaultLegacy(ClosedCaptions);
37
+ var MediaControls__default = /*#__PURE__*/_interopDefaultLegacy(MediaControls);
38
+ var Background__default = /*#__PURE__*/_interopDefaultLegacy(Background);
39
+ var Container__default = /*#__PURE__*/_interopDefaultLegacy(Container);
40
+ var Layout__default = /*#__PURE__*/_interopDefaultLegacy(Layout);
41
+ var CallToAction__default = /*#__PURE__*/_interopDefaultLegacy(CallToAction);
42
+ var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
43
+
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","mediaControls":"micromag-screen-audio-mediaControls","audio":"micromag-screen-audio-audio","bottomContent":"micromag-screen-audio-bottomContent","isPreview":"micromag-screen-audio-isPreview"};
45
+
46
+ var propTypes = {
47
+ layout: PropTypes__default['default'].oneOf(['middle']),
48
+ audio: core.PropTypes.audioElement,
49
+ spacing: PropTypes__default['default'].number,
50
+ background: core.PropTypes.backgroundElement,
51
+ callToAction: core.PropTypes.callToAction,
52
+ current: PropTypes__default['default'].bool,
53
+ transitions: core.PropTypes.transitions,
54
+ className: PropTypes__default['default'].string
55
+ };
56
+ var defaultProps = {
57
+ layout: 'middle',
58
+ audio: null,
59
+ spacing: 20,
60
+ background: null,
61
+ callToAction: null,
62
+ current: true,
63
+ transitions: null,
64
+ className: null
65
+ };
66
+
67
+ var AudioScreen = function AudioScreen(_ref) {
68
+ var _ref7;
69
+
70
+ _ref.layout;
71
+ var audio = _ref.audio,
72
+ spacing = _ref.spacing,
73
+ background = _ref.background,
74
+ callToAction = _ref.callToAction,
75
+ current = _ref.current,
76
+ transitions = _ref.transitions,
77
+ className = _ref.className;
78
+ var trackScreenMedia = hooks.useTrackScreenMedia('audio');
79
+
80
+ var _useScreenSize = contexts.useScreenSize(),
81
+ width = _useScreenSize.width,
82
+ height = _useScreenSize.height,
83
+ menuOverScreen = _useScreenSize.menuOverScreen;
84
+
85
+ var _useScreenRenderConte = contexts.useScreenRenderContext(),
86
+ isPlaceholder = _useScreenRenderConte.isPlaceholder,
87
+ isPreview = _useScreenRenderConte.isPreview,
88
+ isView = _useScreenRenderConte.isView,
89
+ isEdit = _useScreenRenderConte.isEdit,
90
+ isStatic = _useScreenRenderConte.isStatic,
91
+ isCapture = _useScreenRenderConte.isCapture;
92
+
93
+ var _useViewer = contexts.useViewer(),
94
+ menuSize = _useViewer.menuSize;
95
+
96
+ var hasCallToAction = callToAction !== null && callToAction.active === true;
97
+
98
+ var _useState = React.useState(isStatic || isPlaceholder),
99
+ _useState2 = _slicedToArray__default['default'](_useState, 2),
100
+ ready = _useState2[0],
101
+ setReady = _useState2[1];
102
+
103
+ var backgroundPlaying = current && (isView || isEdit);
104
+ var transitionPlaying = current && ready;
105
+ var transitionDisabled = isStatic || isCapture || isPlaceholder || isPreview || isEdit;
106
+ var hasAudio = audio !== null;
107
+
108
+ var _ref2 = audio || {},
109
+ _ref2$media = _ref2.media,
110
+ audioMedia = _ref2$media === void 0 ? null : _ref2$media,
111
+ _ref2$autoPlay = _ref2.autoPlay,
112
+ autoPlay = _ref2$autoPlay === void 0 ? true : _ref2$autoPlay,
113
+ _ref2$closedCaptions = _ref2.closedCaptions,
114
+ closedCaptions = _ref2$closedCaptions === void 0 ? null : _ref2$closedCaptions,
115
+ _ref2$withPlayPause = _ref2.withPlayPause,
116
+ withPlayPause = _ref2$withPlayPause === void 0 ? false : _ref2$withPlayPause;
117
+
118
+ var _ref3 = audioMedia || {},
119
+ _ref3$url = _ref3.url,
120
+ audioUrl = _ref3$url === void 0 ? null : _ref3$url;
121
+
122
+ var hasAudioUrl = audioUrl !== null;
123
+ var finalAudio = hasAudio ? _objectSpread__default['default'](_objectSpread__default['default']({}, audio), {}, {
124
+ autoPlay: !isPreview && !isStatic && !isCapture && autoPlay && current
125
+ }) : null;
126
+ var hasClosedCaptions = closedCaptions !== null;
127
+ var onAudioReady = React.useCallback(function () {
128
+ setReady(true);
129
+ }, [setReady]);
130
+ var apiRef = React.useRef();
131
+
132
+ var _ref4 = apiRef.current || {},
133
+ togglePlay = _ref4.togglePlay,
134
+ toggleMute = _ref4.toggleMute,
135
+ play = _ref4.play,
136
+ pause = _ref4.pause;
137
+
138
+ var _useState3 = React.useState(null),
139
+ _useState4 = _slicedToArray__default['default'](_useState3, 2),
140
+ currentTime = _useState4[0],
141
+ setCurrentTime = _useState4[1];
142
+
143
+ var _useState5 = React.useState(null),
144
+ _useState6 = _slicedToArray__default['default'](_useState5, 2),
145
+ duration = _useState6[0],
146
+ setDuration = _useState6[1];
147
+
148
+ var _useState7 = React.useState(false),
149
+ _useState8 = _slicedToArray__default['default'](_useState7, 2),
150
+ playing = _useState8[0],
151
+ setPlaying = _useState8[1];
152
+
153
+ var _useState9 = React.useState(false),
154
+ _useState10 = _slicedToArray__default['default'](_useState9, 2),
155
+ muted = _useState10[0],
156
+ setMuted = _useState10[1];
157
+
158
+ var isIOS = React.useMemo(function () {
159
+ return utils.isIos();
160
+ }, [utils.isIos]);
161
+ var onTimeUpdate = React.useCallback(function (time) {
162
+ setCurrentTime(time);
163
+ }, [setDuration, duration]);
164
+ var onProgressStep = React.useCallback(function (step) {
165
+ trackScreenMedia(audio, "progress_".concat(Math.round(step * 100, 10), "%"));
166
+ }, [trackScreenMedia, audio]);
167
+ var onDurationChanged = React.useCallback(function (dur) {
168
+ setDuration(dur);
169
+ }, [setDuration]);
170
+ var onPlay = React.useCallback(function (_ref5) {
171
+ var initial = _ref5.initial;
172
+ setPlaying(true);
173
+ trackScreenMedia(audio, initial ? 'play' : 'resume');
174
+ }, [trackScreenMedia, audio]);
175
+ var onPause = React.useCallback(function (_ref6) {
176
+ var midway = _ref6.midway;
177
+ setPlaying(false);
178
+ trackScreenMedia(audio, midway ? 'pause' : 'ended');
179
+ }, [trackScreenMedia, audio]);
180
+ var onVolumeChanged = React.useCallback(function (isMuted) {
181
+ setMuted(isMuted);
182
+ trackScreenMedia(audio, isMuted ? 'mute' : 'unmute');
183
+ }, [trackScreenMedia, audio]);
184
+ var onSeeked = React.useCallback(function (time) {
185
+ if (time > 0) {
186
+ trackScreenMedia(audio, 'seek');
187
+ }
188
+ }, [trackScreenMedia, audio]);
189
+ var onToggleMute = React.useCallback(function () {
190
+ if (muted && !playing) {
191
+ play();
192
+ }
193
+
194
+ toggleMute();
195
+ }, [muted, toggleMute]);
196
+ React.useEffect(function () {
197
+ if (!current && playing) {
198
+ pause();
199
+ }
200
+ }, [playing, current]); // ------------------------------------
201
+
202
+ var longPressBind = hooks.useLongPress({
203
+ onLongPress: togglePlay
204
+ });
205
+ var elements = [/*#__PURE__*/React__default['default'].createElement(Layout.Spacer, {
206
+ key: "spacer-top"
207
+ }), /*#__PURE__*/React__default['default'].createElement(components.ScreenElement, {
208
+ key: "audio",
209
+ placeholder: "audio",
210
+ emptyLabel: /*#__PURE__*/React__default['default'].createElement(reactIntl.FormattedMessage, {
211
+ id: "MYZwSA",
212
+ defaultMessage: [{
213
+ "type": 0,
214
+ "value": "Audio"
215
+ }]
216
+ }),
217
+ emptyClassName: styles.empty,
218
+ isEmpty: !hasAudioUrl
219
+ }, /*#__PURE__*/React__default['default'].createElement(components.Transitions, {
220
+ transitions: transitions,
221
+ playing: transitionPlaying,
222
+ disabled: transitionDisabled
223
+ }, /*#__PURE__*/React__default['default'].createElement(Audio__default['default'], Object.assign({}, finalAudio, {
224
+ ref: apiRef,
225
+ waveFake: isIOS || isPreview,
226
+ waveProps: isPreview ? {
227
+ sampleWidth: 10,
228
+ sampleMargin: 5,
229
+ minSampleHeight: 5
230
+ } : null,
231
+ className: styles.audio,
232
+ onReady: onAudioReady,
233
+ onPlay: onPlay,
234
+ onPause: onPause,
235
+ onTimeUpdate: onTimeUpdate,
236
+ onProgressStep: onProgressStep,
237
+ onDurationChanged: onDurationChanged,
238
+ onSeeked: onSeeked,
239
+ onVolumeChanged: onVolumeChanged
240
+ })))), /*#__PURE__*/React__default['default'].createElement(Layout.Spacer, {
241
+ key: "spacer-middle"
242
+ }), !isPlaceholder ? /*#__PURE__*/React__default['default'].createElement("div", {
243
+ key: "controls",
244
+ className: styles.bottomContent
245
+ }, hasClosedCaptions && !isPreview && !isCapture && !isStatic ? /*#__PURE__*/React__default['default'].createElement(ClosedCaptions__default['default'], {
246
+ className: styles.closedCaptions,
247
+ media: closedCaptions,
248
+ currentTime: currentTime
249
+ }) : null, hasAudioUrl ? /*#__PURE__*/React__default['default'].createElement(MediaControls__default['default'], {
250
+ className: styles.mediaControls,
251
+ withPlayPause: withPlayPause,
252
+ playing: playing,
253
+ muted: muted,
254
+ onTogglePlay: togglePlay,
255
+ onToggleMute: onToggleMute
256
+ }) : null) : null, !isPlaceholder && hasCallToAction ? /*#__PURE__*/React__default['default'].createElement("div", {
257
+ style: {
258
+ margin: -spacing,
259
+ marginTop: 0
260
+ },
261
+ key: "call-to-action"
262
+ }, /*#__PURE__*/React__default['default'].createElement(CallToAction__default['default'], {
263
+ callToAction: callToAction,
264
+ animationDisabled: isPreview
265
+ })) : null].filter(function (el) {
266
+ return el !== null;
267
+ });
268
+ return /*#__PURE__*/React__default['default'].createElement("div", Object.assign({
269
+ 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)]),
270
+ "data-screen-ready": ready
271
+ }, longPressBind), !isPlaceholder ? /*#__PURE__*/React__default['default'].createElement(Background__default['default'], Object.assign({}, background, {
272
+ width: width,
273
+ height: height,
274
+ playing: backgroundPlaying
275
+ })) : null, /*#__PURE__*/React__default['default'].createElement(Container__default['default'], {
276
+ width: width,
277
+ height: height
278
+ }, /*#__PURE__*/React__default['default'].createElement(Layout__default['default'], {
279
+ fullscreen: true,
280
+ style: !isPlaceholder ? {
281
+ padding: spacing,
282
+ paddingTop: (menuOverScreen && !isPreview ? menuSize : 0) + spacing
283
+ } : null
284
+ }, elements)));
285
+ };
286
+
287
+ AudioScreen.propTypes = propTypes;
288
+ AudioScreen.defaultProps = defaultProps;
289
+ var AudioScreen$1 = /*#__PURE__*/React__default['default'].memo(AudioScreen);
290
+
291
+ var transform = function transform(newStory, _ref) {
292
+ var audio = _ref.audio;
293
+
294
+ var _ref2 = audio || {},
295
+ _ref2$media = _ref2.media,
296
+ media = _ref2$media === void 0 ? null : _ref2$media;
297
+
298
+ var _Audio = appleNews.Audio(newStory, media),
299
+ titleStory = _Audio.story,
300
+ titleComponent = _Audio.component;
301
+
302
+ console.log(media);
303
+
304
+ var _Container = appleNews.Container(titleStory, _toConsumableArray__default['default'](titleComponent ? [titleComponent] : [])),
305
+ containerStory = _Container.story,
306
+ containerComponent = _Container.component;
307
+
308
+ return _objectSpread__default['default'](_objectSpread__default['default']({}, containerStory), {}, {
309
+ components: [].concat(_toConsumableArray__default['default'](newStory.components || []), _toConsumableArray__default['default'](containerComponent ? [containerComponent] : []))
310
+ });
311
+ };
312
+
313
+ // eslint-disable-next-line
314
+
315
+ var transforms = /*#__PURE__*/Object.freeze({
316
+ __proto__: null,
317
+ appleNews: transform
318
+ });
319
+
320
+ var definition = {
321
+ id: 'audio',
322
+ type: 'screen',
323
+ group: {
324
+ label: reactIntl.defineMessage({
325
+ "id": "+9akmg",
326
+ "defaultMessage": [{
327
+ "type": 0,
328
+ "value": "Audio and Video"
329
+ }]
330
+ }),
331
+ order: 5
332
+ },
333
+ title: reactIntl.defineMessage({
334
+ "id": "bhEaUt",
335
+ "defaultMessage": [{
336
+ "type": 0,
337
+ "value": "Audio"
338
+ }]
339
+ }),
340
+ component: AudioScreen$1,
341
+ layouts: ['middle'],
342
+ transforms: transforms,
343
+ fields: [{
344
+ name: 'audio',
345
+ type: 'audio-element',
346
+ theme: {
347
+ color: 'primary'
348
+ },
349
+ defaultValue: {
350
+ autoPlay: true
351
+ },
352
+ label: reactIntl.defineMessage({
353
+ "id": "169xnt",
354
+ "defaultMessage": [{
355
+ "type": 0,
356
+ "value": "Audio"
357
+ }]
358
+ })
359
+ }, {
360
+ name: 'background',
361
+ type: 'background',
362
+ label: reactIntl.defineMessage({
363
+ "id": "+MPZRu",
364
+ "defaultMessage": [{
365
+ "type": 0,
366
+ "value": "Background"
367
+ }]
368
+ })
369
+ }, {
370
+ name: 'callToAction',
371
+ type: 'call-to-action',
372
+ theme: {
373
+ label: {
374
+ textStyle: 'heading2'
375
+ }
376
+ }
377
+ }]
378
+ };
379
+
380
+ exports.AudioScreen = AudioScreen$1;
381
+ exports.default = definition;
package/package.json ADDED
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "@micromag/screen-audio",
3
+ "version": "0.2.286",
4
+ "description": "",
5
+ "keywords": [
6
+ "javascript"
7
+ ],
8
+ "homepage": "https://github.com/urbania-media/micromag-js",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/urbania-media/micromag-js.git"
12
+ },
13
+ "author": {
14
+ "name": "Folklore",
15
+ "email": "info@folklore.email"
16
+ },
17
+ "contributors": [
18
+ {
19
+ "name": "David Mongeau-Petitpas",
20
+ "email": "dmp@folklore.email"
21
+ },
22
+ {
23
+ "name": "Nicolas Roy-Bourdages",
24
+ "email": "nrb@folklore.email"
25
+ },
26
+ {
27
+ "name": "Julien Carignan",
28
+ "email": "jc@folklore.email"
29
+ }
30
+ ],
31
+ "license": "ISC",
32
+ "main": "lib/index.js",
33
+ "module": "es/index.js",
34
+ "files": [
35
+ "lib",
36
+ "es",
37
+ "assets"
38
+ ],
39
+ "scripts": {
40
+ "prepare": "../../scripts/prepare-package.sh"
41
+ },
42
+ "devDependencies": {
43
+ "react": "^16.8.0",
44
+ "react-dom": "^16.8.0"
45
+ },
46
+ "peerDependencies": {
47
+ "react": "^16.8.0",
48
+ "react-dom": "^16.8.0"
49
+ },
50
+ "dependencies": {
51
+ "@babel/runtime": "^7.13.10",
52
+ "@micromag/core": "^0.2.286",
53
+ "@micromag/element-audio": "^0.2.286",
54
+ "@micromag/element-background": "^0.2.286",
55
+ "@micromag/element-call-to-action": "^0.2.286",
56
+ "@micromag/element-closed-captions": "^0.2.286",
57
+ "@micromag/element-container": "^0.2.286",
58
+ "@micromag/element-layout": "^0.2.286",
59
+ "@micromag/element-media-controls": "^0.2.286",
60
+ "@micromag/transforms": "^0.2.286",
61
+ "classnames": "^2.2.6",
62
+ "lodash": "^4.17.20",
63
+ "prop-types": "^15.7.2",
64
+ "react-intl": "^5.12.1",
65
+ "uuid": "^8.3.2"
66
+ },
67
+ "publishConfig": {
68
+ "access": "public"
69
+ },
70
+ "gitHead": "380a52b4b3f57dc2535014af6241032f09055d40"
71
+ }