@micromag/element-video 0.3.311 → 0.3.322
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 +83 -86
- package/lib/index.js +83 -86
- package/package.json +6 -6
package/assets/css/styles.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.micromag-element-video-container.micromag-element-video-withSize .micromag-element-video-video{position:absolute;top:0;
|
|
1
|
+
.micromag-element-video-container .micromag-element-video-spinner,.micromag-element-video-container.micromag-element-video-withSize .micromag-element-video-video{height:100%;left:0;position:absolute;top:0;width:100%}.micromag-element-video-container{position:relative}.micromag-element-video-container .micromag-element-video-video{display:block;width:100%}.micromag-element-video-container .micromag-element-video-spinner{height:32px;left:50%;margin-left:-16px;margin-top:-16px;top:50%;width:32px}
|
package/es/index.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
2
1
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
3
2
|
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
3
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
4
4
|
import classNames from 'classnames';
|
|
5
5
|
import isFunction from 'lodash/isFunction';
|
|
6
6
|
import PropTypes$1 from 'prop-types';
|
|
7
|
-
import React, { useMemo, useRef, useEffect, useCallback
|
|
7
|
+
import React, { useMemo, useRef, useState, useEffect, useCallback } from 'react';
|
|
8
8
|
import { PropTypes } from '@micromag/core';
|
|
9
|
+
import { Spinner } from '@micromag/core/components';
|
|
9
10
|
import { useMediaThumbnail, useMediaCurrentTime, useMediaDuration, useMediaReady, useProgressSteps } from '@micromag/core/hooks';
|
|
10
11
|
import { getMediaFilesAsArray, getVideoSupportedMimes } from '@micromag/core/utils';
|
|
11
12
|
|
|
12
|
-
var styles = {"container":"micromag-element-video-container","withSize":"micromag-element-video-withSize","video":"micromag-element-video-video"};
|
|
13
|
+
var styles = {"container":"micromag-element-video-container","withSize":"micromag-element-video-withSize","video":"micromag-element-video-video","spinner":"micromag-element-video-spinner"};
|
|
13
14
|
|
|
14
15
|
var propTypes = {
|
|
15
16
|
media: PropTypes.videoMedia,
|
|
@@ -71,61 +72,54 @@ var defaultProps = {
|
|
|
71
72
|
focusable: true,
|
|
72
73
|
withPoster: false
|
|
73
74
|
};
|
|
74
|
-
|
|
75
75
|
var Video = function Video(_ref) {
|
|
76
76
|
var _ref7;
|
|
77
|
-
|
|
78
77
|
var media = _ref.media,
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
78
|
+
thumbnail = _ref.thumbnail,
|
|
79
|
+
width = _ref.width,
|
|
80
|
+
height = _ref.height,
|
|
81
|
+
mediaRef = _ref.mediaRef,
|
|
82
|
+
muted = _ref.muted,
|
|
83
|
+
autoPlay = _ref.autoPlay,
|
|
84
|
+
paused = _ref.paused,
|
|
85
|
+
loop = _ref.loop,
|
|
86
|
+
playsInline = _ref.playsInline,
|
|
87
|
+
preload = _ref.preload,
|
|
88
|
+
shouldLoad = _ref.shouldLoad,
|
|
89
|
+
withoutCors = _ref.withoutCors,
|
|
90
|
+
className = _ref.className,
|
|
91
|
+
onReady = _ref.onReady,
|
|
92
|
+
customOnPlay = _ref.onPlay,
|
|
93
|
+
onPause = _ref.onPause,
|
|
94
|
+
onEnded = _ref.onEnded,
|
|
95
|
+
onSeeked = _ref.onSeeked,
|
|
96
|
+
onTimeUpdate = _ref.onTimeUpdate,
|
|
97
|
+
onProgressStep = _ref.onProgressStep,
|
|
98
|
+
customOnDurationChange = _ref.onDurationChange,
|
|
99
|
+
customOnVolumeChange = _ref.onVolumeChange,
|
|
100
|
+
customOnSuspend = _ref.onSuspend,
|
|
101
|
+
onSuspended = _ref.onSuspended,
|
|
102
|
+
focusable = _ref.focusable,
|
|
103
|
+
withPoster = _ref.withPoster;
|
|
106
104
|
var _ref2 = media || {},
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
105
|
+
_ref2$url = _ref2.url,
|
|
106
|
+
mediaUrl = _ref2$url === void 0 ? null : _ref2$url,
|
|
107
|
+
_ref2$files = _ref2.files,
|
|
108
|
+
files = _ref2$files === void 0 ? null : _ref2$files,
|
|
109
|
+
_ref2$metadata = _ref2.metadata,
|
|
110
|
+
metadata = _ref2$metadata === void 0 ? null : _ref2$metadata;
|
|
114
111
|
var _ref3 = metadata || {},
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
112
|
+
_ref3$description = _ref3.description,
|
|
113
|
+
description = _ref3$description === void 0 ? null : _ref3$description,
|
|
114
|
+
_ref3$mime = _ref3.mime,
|
|
115
|
+
mediaMime = _ref3$mime === void 0 ? null : _ref3$mime,
|
|
116
|
+
_ref3$has_audio = _ref3.has_audio,
|
|
117
|
+
hasAudio = _ref3$has_audio === void 0 ? null : _ref3$has_audio;
|
|
122
118
|
var filesArray = useMemo(function () {
|
|
123
119
|
return getMediaFilesAsArray(files);
|
|
124
120
|
}, [files]);
|
|
125
121
|
var finalThumbnail = useMediaThumbnail(media, thumbnail);
|
|
126
|
-
|
|
127
122
|
var _ref9 = useRef(null);
|
|
128
|
-
|
|
129
123
|
var currentTime = useMediaCurrentTime(_ref9.current, {
|
|
130
124
|
id: mediaUrl,
|
|
131
125
|
disabled: paused || onProgressStep === null
|
|
@@ -133,49 +127,60 @@ var Video = function Video(_ref) {
|
|
|
133
127
|
var duration = useMediaDuration(_ref9.current, {
|
|
134
128
|
id: mediaUrl
|
|
135
129
|
});
|
|
130
|
+
var _useState = useState(false),
|
|
131
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
132
|
+
showLoading = _useState2[0],
|
|
133
|
+
setShowLoading = _useState2[1];
|
|
136
134
|
var ready = useMediaReady(_ref9.current, {
|
|
137
135
|
id: mediaUrl
|
|
138
136
|
});
|
|
137
|
+
useEffect(function () {
|
|
138
|
+
var id = null;
|
|
139
|
+
setShowLoading(false);
|
|
140
|
+
if (mediaUrl) {
|
|
141
|
+
id = setTimeout(function () {
|
|
142
|
+
setShowLoading(true);
|
|
143
|
+
}, 1000);
|
|
144
|
+
}
|
|
145
|
+
return function () {
|
|
146
|
+
clearTimeout(id);
|
|
147
|
+
};
|
|
148
|
+
}, [mediaUrl]);
|
|
139
149
|
var sourceFiles = useMemo(function () {
|
|
140
150
|
if (filesArray.length === 0) {
|
|
141
151
|
return null;
|
|
142
152
|
}
|
|
143
|
-
|
|
144
153
|
var supportedMimes = getVideoSupportedMimes();
|
|
145
|
-
|
|
146
154
|
if (supportedMimes.length === 0) {
|
|
147
155
|
return null;
|
|
148
156
|
}
|
|
149
|
-
|
|
150
157
|
var sourceFilesMap = filesArray.filter(function (file) {
|
|
151
158
|
var _file$mime = file.mime,
|
|
152
|
-
|
|
159
|
+
mime = _file$mime === void 0 ? "video/".concat(file.id === 'h264' ? 'mp4' : file.id) : _file$mime;
|
|
153
160
|
return supportedMimes.indexOf(mime) !== -1;
|
|
154
161
|
}).reduce(function (filesMap, file) {
|
|
155
162
|
var _file$mime2 = file.mime,
|
|
156
|
-
|
|
163
|
+
mime = _file$mime2 === void 0 ? "video/".concat(file.id === 'h264' ? 'mp4' : file.id) : _file$mime2;
|
|
157
164
|
var currentMimeFile = filesMap[mime] || null;
|
|
158
|
-
|
|
159
165
|
var _ref4 = currentMimeFile || {},
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
166
|
+
_ref4$id = _ref4.id,
|
|
167
|
+
currentMimeId = _ref4$id === void 0 ? null : _ref4$id;
|
|
163
168
|
return currentMimeFile === null || currentMimeId !== 'original' ? _objectSpread(_objectSpread({}, filesMap), {}, _defineProperty({}, mime, file)) : filesMap;
|
|
164
169
|
}, {});
|
|
165
170
|
return Object.keys(sourceFilesMap).map(function (mime) {
|
|
166
171
|
return sourceFilesMap[mime];
|
|
167
172
|
});
|
|
168
|
-
}, [filesArray]);
|
|
173
|
+
}, [filesArray]);
|
|
169
174
|
|
|
175
|
+
// @NOTE: Media is an animated image and doesn't have source files in video formats
|
|
170
176
|
var _ref5 = filesArray.find(function (_ref6) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
177
|
+
var handle = _ref6.handle;
|
|
178
|
+
return handle === 'original';
|
|
179
|
+
}) || {},
|
|
180
|
+
_ref5$type = _ref5.type,
|
|
181
|
+
originalType = _ref5$type === void 0 ? null : _ref5$type,
|
|
182
|
+
_ref5$mime = _ref5.mime,
|
|
183
|
+
originalMime = _ref5$mime === void 0 ? mediaMime : _ref5$mime;
|
|
179
184
|
var originalFileIsImage = originalType === 'image' || originalMime !== null && originalMime.indexOf('image/') === 0;
|
|
180
185
|
var isImageWithoutSourceFile = originalFileIsImage && (sourceFiles === null || sourceFiles.length === 0);
|
|
181
186
|
var withSize = width !== null && height !== null;
|
|
@@ -186,27 +191,24 @@ var Video = function Video(_ref) {
|
|
|
186
191
|
}, [duration, customOnDurationChange]);
|
|
187
192
|
var onVolumeChange = useCallback(function () {
|
|
188
193
|
var _ref$current = _ref9.current,
|
|
189
|
-
|
|
190
|
-
|
|
194
|
+
element = _ref$current === void 0 ? null : _ref$current;
|
|
191
195
|
if (element === null) {
|
|
192
196
|
return;
|
|
193
197
|
}
|
|
194
|
-
|
|
195
198
|
if (customOnVolumeChange !== null) {
|
|
196
199
|
customOnVolumeChange(element.volume);
|
|
197
200
|
}
|
|
198
|
-
}, [customOnVolumeChange]);
|
|
199
|
-
|
|
200
|
-
var _useState = useState(false),
|
|
201
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
202
|
-
isSuspended = _useState2[0],
|
|
203
|
-
setIsSuspended = _useState2[1];
|
|
201
|
+
}, [customOnVolumeChange]);
|
|
204
202
|
|
|
203
|
+
// Manage suspend
|
|
204
|
+
var _useState3 = useState(false),
|
|
205
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
206
|
+
isSuspended = _useState4[0],
|
|
207
|
+
setIsSuspended = _useState4[1];
|
|
205
208
|
var onPlay = useCallback(function (e) {
|
|
206
209
|
if (isSuspended) {
|
|
207
210
|
setIsSuspended(false);
|
|
208
211
|
}
|
|
209
|
-
|
|
210
212
|
if (customOnPlay !== null) {
|
|
211
213
|
customOnPlay(e);
|
|
212
214
|
}
|
|
@@ -219,12 +221,10 @@ var Video = function Video(_ref) {
|
|
|
219
221
|
var onSuspend = useCallback(function (e) {
|
|
220
222
|
if (e.currentTarget.paused && !paused && !isSuspended) {
|
|
221
223
|
setIsSuspended(true);
|
|
222
|
-
|
|
223
224
|
if (onSuspended !== null) {
|
|
224
225
|
onSuspended();
|
|
225
226
|
}
|
|
226
227
|
}
|
|
227
|
-
|
|
228
228
|
if (customOnSuspend !== null) {
|
|
229
229
|
customOnSuspend(e);
|
|
230
230
|
}
|
|
@@ -236,14 +236,11 @@ var Video = function Video(_ref) {
|
|
|
236
236
|
}, [ready, onReady]);
|
|
237
237
|
useEffect(function () {
|
|
238
238
|
var _ref$current2 = _ref9.current,
|
|
239
|
-
|
|
240
|
-
|
|
239
|
+
element = _ref$current2 === void 0 ? null : _ref$current2;
|
|
241
240
|
if (element === null) {
|
|
242
241
|
return;
|
|
243
242
|
}
|
|
244
|
-
|
|
245
243
|
var isPaused = element.paused;
|
|
246
|
-
|
|
247
244
|
if (paused && !isPaused) {
|
|
248
245
|
element.pause();
|
|
249
246
|
} else if (!paused && isPaused) {
|
|
@@ -270,7 +267,6 @@ var Video = function Video(_ref) {
|
|
|
270
267
|
key: mediaUrl,
|
|
271
268
|
ref: function ref(newRef) {
|
|
272
269
|
_ref9.current = newRef;
|
|
273
|
-
|
|
274
270
|
if (mediaRef !== null && isFunction(mediaRef)) {
|
|
275
271
|
mediaRef(newRef);
|
|
276
272
|
} else if (mediaRef !== null) {
|
|
@@ -299,15 +295,16 @@ var Video = function Video(_ref) {
|
|
|
299
295
|
"data-is-suspended": isSuspended
|
|
300
296
|
}, (sourceFiles || []).map(function (_ref8) {
|
|
301
297
|
var sourceUrl = _ref8.url,
|
|
302
|
-
|
|
298
|
+
sourceMime = _ref8.mime;
|
|
303
299
|
return /*#__PURE__*/React.createElement("source", {
|
|
304
300
|
key: "".concat(sourceUrl, "-").concat(sourceMime),
|
|
305
301
|
src: sourceUrl !== null ? "".concat(sourceUrl, "#t=0.1") : null,
|
|
306
302
|
type: sourceMime
|
|
307
303
|
});
|
|
308
|
-
})) : null
|
|
304
|
+
})) : null, !isImageWithoutSourceFile && !ready && showLoading ? /*#__PURE__*/React.createElement(Spinner, {
|
|
305
|
+
className: styles.spinner
|
|
306
|
+
}) : null);
|
|
309
307
|
};
|
|
310
|
-
|
|
311
308
|
Video.propTypes = propTypes;
|
|
312
309
|
Video.defaultProps = defaultProps;
|
|
313
310
|
var Video$1 = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
package/lib/index.js
CHANGED
|
@@ -1,27 +1,28 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
4
3
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
5
4
|
var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
|
|
5
|
+
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
6
6
|
var classNames = require('classnames');
|
|
7
7
|
var isFunction = require('lodash/isFunction');
|
|
8
8
|
var PropTypes = require('prop-types');
|
|
9
9
|
var React = require('react');
|
|
10
10
|
var core = require('@micromag/core');
|
|
11
|
+
var components = require('@micromag/core/components');
|
|
11
12
|
var hooks = require('@micromag/core/hooks');
|
|
12
13
|
var utils = require('@micromag/core/utils');
|
|
13
14
|
|
|
14
15
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
15
16
|
|
|
16
|
-
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
|
|
17
17
|
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
18
18
|
var _objectSpread__default = /*#__PURE__*/_interopDefaultLegacy(_objectSpread);
|
|
19
|
+
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
|
|
19
20
|
var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
|
|
20
21
|
var isFunction__default = /*#__PURE__*/_interopDefaultLegacy(isFunction);
|
|
21
22
|
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
22
23
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
23
24
|
|
|
24
|
-
var styles = {"container":"micromag-element-video-container","withSize":"micromag-element-video-withSize","video":"micromag-element-video-video"};
|
|
25
|
+
var styles = {"container":"micromag-element-video-container","withSize":"micromag-element-video-withSize","video":"micromag-element-video-video","spinner":"micromag-element-video-spinner"};
|
|
25
26
|
|
|
26
27
|
var propTypes = {
|
|
27
28
|
media: core.PropTypes.videoMedia,
|
|
@@ -83,61 +84,54 @@ var defaultProps = {
|
|
|
83
84
|
focusable: true,
|
|
84
85
|
withPoster: false
|
|
85
86
|
};
|
|
86
|
-
|
|
87
87
|
var Video = function Video(_ref) {
|
|
88
88
|
var _ref7;
|
|
89
|
-
|
|
90
89
|
var media = _ref.media,
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
90
|
+
thumbnail = _ref.thumbnail,
|
|
91
|
+
width = _ref.width,
|
|
92
|
+
height = _ref.height,
|
|
93
|
+
mediaRef = _ref.mediaRef,
|
|
94
|
+
muted = _ref.muted,
|
|
95
|
+
autoPlay = _ref.autoPlay,
|
|
96
|
+
paused = _ref.paused,
|
|
97
|
+
loop = _ref.loop,
|
|
98
|
+
playsInline = _ref.playsInline,
|
|
99
|
+
preload = _ref.preload,
|
|
100
|
+
shouldLoad = _ref.shouldLoad,
|
|
101
|
+
withoutCors = _ref.withoutCors,
|
|
102
|
+
className = _ref.className,
|
|
103
|
+
onReady = _ref.onReady,
|
|
104
|
+
customOnPlay = _ref.onPlay,
|
|
105
|
+
onPause = _ref.onPause,
|
|
106
|
+
onEnded = _ref.onEnded,
|
|
107
|
+
onSeeked = _ref.onSeeked,
|
|
108
|
+
onTimeUpdate = _ref.onTimeUpdate,
|
|
109
|
+
onProgressStep = _ref.onProgressStep,
|
|
110
|
+
customOnDurationChange = _ref.onDurationChange,
|
|
111
|
+
customOnVolumeChange = _ref.onVolumeChange,
|
|
112
|
+
customOnSuspend = _ref.onSuspend,
|
|
113
|
+
onSuspended = _ref.onSuspended,
|
|
114
|
+
focusable = _ref.focusable,
|
|
115
|
+
withPoster = _ref.withPoster;
|
|
118
116
|
var _ref2 = media || {},
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
117
|
+
_ref2$url = _ref2.url,
|
|
118
|
+
mediaUrl = _ref2$url === void 0 ? null : _ref2$url,
|
|
119
|
+
_ref2$files = _ref2.files,
|
|
120
|
+
files = _ref2$files === void 0 ? null : _ref2$files,
|
|
121
|
+
_ref2$metadata = _ref2.metadata,
|
|
122
|
+
metadata = _ref2$metadata === void 0 ? null : _ref2$metadata;
|
|
126
123
|
var _ref3 = metadata || {},
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
124
|
+
_ref3$description = _ref3.description,
|
|
125
|
+
description = _ref3$description === void 0 ? null : _ref3$description,
|
|
126
|
+
_ref3$mime = _ref3.mime,
|
|
127
|
+
mediaMime = _ref3$mime === void 0 ? null : _ref3$mime,
|
|
128
|
+
_ref3$has_audio = _ref3.has_audio,
|
|
129
|
+
hasAudio = _ref3$has_audio === void 0 ? null : _ref3$has_audio;
|
|
134
130
|
var filesArray = React.useMemo(function () {
|
|
135
131
|
return utils.getMediaFilesAsArray(files);
|
|
136
132
|
}, [files]);
|
|
137
133
|
var finalThumbnail = hooks.useMediaThumbnail(media, thumbnail);
|
|
138
|
-
|
|
139
134
|
var _ref9 = React.useRef(null);
|
|
140
|
-
|
|
141
135
|
var currentTime = hooks.useMediaCurrentTime(_ref9.current, {
|
|
142
136
|
id: mediaUrl,
|
|
143
137
|
disabled: paused || onProgressStep === null
|
|
@@ -145,49 +139,60 @@ var Video = function Video(_ref) {
|
|
|
145
139
|
var duration = hooks.useMediaDuration(_ref9.current, {
|
|
146
140
|
id: mediaUrl
|
|
147
141
|
});
|
|
142
|
+
var _useState = React.useState(false),
|
|
143
|
+
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
144
|
+
showLoading = _useState2[0],
|
|
145
|
+
setShowLoading = _useState2[1];
|
|
148
146
|
var ready = hooks.useMediaReady(_ref9.current, {
|
|
149
147
|
id: mediaUrl
|
|
150
148
|
});
|
|
149
|
+
React.useEffect(function () {
|
|
150
|
+
var id = null;
|
|
151
|
+
setShowLoading(false);
|
|
152
|
+
if (mediaUrl) {
|
|
153
|
+
id = setTimeout(function () {
|
|
154
|
+
setShowLoading(true);
|
|
155
|
+
}, 1000);
|
|
156
|
+
}
|
|
157
|
+
return function () {
|
|
158
|
+
clearTimeout(id);
|
|
159
|
+
};
|
|
160
|
+
}, [mediaUrl]);
|
|
151
161
|
var sourceFiles = React.useMemo(function () {
|
|
152
162
|
if (filesArray.length === 0) {
|
|
153
163
|
return null;
|
|
154
164
|
}
|
|
155
|
-
|
|
156
165
|
var supportedMimes = utils.getVideoSupportedMimes();
|
|
157
|
-
|
|
158
166
|
if (supportedMimes.length === 0) {
|
|
159
167
|
return null;
|
|
160
168
|
}
|
|
161
|
-
|
|
162
169
|
var sourceFilesMap = filesArray.filter(function (file) {
|
|
163
170
|
var _file$mime = file.mime,
|
|
164
|
-
|
|
171
|
+
mime = _file$mime === void 0 ? "video/".concat(file.id === 'h264' ? 'mp4' : file.id) : _file$mime;
|
|
165
172
|
return supportedMimes.indexOf(mime) !== -1;
|
|
166
173
|
}).reduce(function (filesMap, file) {
|
|
167
174
|
var _file$mime2 = file.mime,
|
|
168
|
-
|
|
175
|
+
mime = _file$mime2 === void 0 ? "video/".concat(file.id === 'h264' ? 'mp4' : file.id) : _file$mime2;
|
|
169
176
|
var currentMimeFile = filesMap[mime] || null;
|
|
170
|
-
|
|
171
177
|
var _ref4 = currentMimeFile || {},
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
178
|
+
_ref4$id = _ref4.id,
|
|
179
|
+
currentMimeId = _ref4$id === void 0 ? null : _ref4$id;
|
|
175
180
|
return currentMimeFile === null || currentMimeId !== 'original' ? _objectSpread__default["default"](_objectSpread__default["default"]({}, filesMap), {}, _defineProperty__default["default"]({}, mime, file)) : filesMap;
|
|
176
181
|
}, {});
|
|
177
182
|
return Object.keys(sourceFilesMap).map(function (mime) {
|
|
178
183
|
return sourceFilesMap[mime];
|
|
179
184
|
});
|
|
180
|
-
}, [filesArray]);
|
|
185
|
+
}, [filesArray]);
|
|
181
186
|
|
|
187
|
+
// @NOTE: Media is an animated image and doesn't have source files in video formats
|
|
182
188
|
var _ref5 = filesArray.find(function (_ref6) {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
189
|
+
var handle = _ref6.handle;
|
|
190
|
+
return handle === 'original';
|
|
191
|
+
}) || {},
|
|
192
|
+
_ref5$type = _ref5.type,
|
|
193
|
+
originalType = _ref5$type === void 0 ? null : _ref5$type,
|
|
194
|
+
_ref5$mime = _ref5.mime,
|
|
195
|
+
originalMime = _ref5$mime === void 0 ? mediaMime : _ref5$mime;
|
|
191
196
|
var originalFileIsImage = originalType === 'image' || originalMime !== null && originalMime.indexOf('image/') === 0;
|
|
192
197
|
var isImageWithoutSourceFile = originalFileIsImage && (sourceFiles === null || sourceFiles.length === 0);
|
|
193
198
|
var withSize = width !== null && height !== null;
|
|
@@ -198,27 +203,24 @@ var Video = function Video(_ref) {
|
|
|
198
203
|
}, [duration, customOnDurationChange]);
|
|
199
204
|
var onVolumeChange = React.useCallback(function () {
|
|
200
205
|
var _ref$current = _ref9.current,
|
|
201
|
-
|
|
202
|
-
|
|
206
|
+
element = _ref$current === void 0 ? null : _ref$current;
|
|
203
207
|
if (element === null) {
|
|
204
208
|
return;
|
|
205
209
|
}
|
|
206
|
-
|
|
207
210
|
if (customOnVolumeChange !== null) {
|
|
208
211
|
customOnVolumeChange(element.volume);
|
|
209
212
|
}
|
|
210
|
-
}, [customOnVolumeChange]);
|
|
211
|
-
|
|
212
|
-
var _useState = React.useState(false),
|
|
213
|
-
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
214
|
-
isSuspended = _useState2[0],
|
|
215
|
-
setIsSuspended = _useState2[1];
|
|
213
|
+
}, [customOnVolumeChange]);
|
|
216
214
|
|
|
215
|
+
// Manage suspend
|
|
216
|
+
var _useState3 = React.useState(false),
|
|
217
|
+
_useState4 = _slicedToArray__default["default"](_useState3, 2),
|
|
218
|
+
isSuspended = _useState4[0],
|
|
219
|
+
setIsSuspended = _useState4[1];
|
|
217
220
|
var onPlay = React.useCallback(function (e) {
|
|
218
221
|
if (isSuspended) {
|
|
219
222
|
setIsSuspended(false);
|
|
220
223
|
}
|
|
221
|
-
|
|
222
224
|
if (customOnPlay !== null) {
|
|
223
225
|
customOnPlay(e);
|
|
224
226
|
}
|
|
@@ -231,12 +233,10 @@ var Video = function Video(_ref) {
|
|
|
231
233
|
var onSuspend = React.useCallback(function (e) {
|
|
232
234
|
if (e.currentTarget.paused && !paused && !isSuspended) {
|
|
233
235
|
setIsSuspended(true);
|
|
234
|
-
|
|
235
236
|
if (onSuspended !== null) {
|
|
236
237
|
onSuspended();
|
|
237
238
|
}
|
|
238
239
|
}
|
|
239
|
-
|
|
240
240
|
if (customOnSuspend !== null) {
|
|
241
241
|
customOnSuspend(e);
|
|
242
242
|
}
|
|
@@ -248,14 +248,11 @@ var Video = function Video(_ref) {
|
|
|
248
248
|
}, [ready, onReady]);
|
|
249
249
|
React.useEffect(function () {
|
|
250
250
|
var _ref$current2 = _ref9.current,
|
|
251
|
-
|
|
252
|
-
|
|
251
|
+
element = _ref$current2 === void 0 ? null : _ref$current2;
|
|
253
252
|
if (element === null) {
|
|
254
253
|
return;
|
|
255
254
|
}
|
|
256
|
-
|
|
257
255
|
var isPaused = element.paused;
|
|
258
|
-
|
|
259
256
|
if (paused && !isPaused) {
|
|
260
257
|
element.pause();
|
|
261
258
|
} else if (!paused && isPaused) {
|
|
@@ -282,7 +279,6 @@ var Video = function Video(_ref) {
|
|
|
282
279
|
key: mediaUrl,
|
|
283
280
|
ref: function ref(newRef) {
|
|
284
281
|
_ref9.current = newRef;
|
|
285
|
-
|
|
286
282
|
if (mediaRef !== null && isFunction__default["default"](mediaRef)) {
|
|
287
283
|
mediaRef(newRef);
|
|
288
284
|
} else if (mediaRef !== null) {
|
|
@@ -311,15 +307,16 @@ var Video = function Video(_ref) {
|
|
|
311
307
|
"data-is-suspended": isSuspended
|
|
312
308
|
}, (sourceFiles || []).map(function (_ref8) {
|
|
313
309
|
var sourceUrl = _ref8.url,
|
|
314
|
-
|
|
310
|
+
sourceMime = _ref8.mime;
|
|
315
311
|
return /*#__PURE__*/React__default["default"].createElement("source", {
|
|
316
312
|
key: "".concat(sourceUrl, "-").concat(sourceMime),
|
|
317
313
|
src: sourceUrl !== null ? "".concat(sourceUrl, "#t=0.1") : null,
|
|
318
314
|
type: sourceMime
|
|
319
315
|
});
|
|
320
|
-
})) : null
|
|
316
|
+
})) : null, !isImageWithoutSourceFile && !ready && showLoading ? /*#__PURE__*/React__default["default"].createElement(components.Spinner, {
|
|
317
|
+
className: styles.spinner
|
|
318
|
+
}) : null);
|
|
321
319
|
};
|
|
322
|
-
|
|
323
320
|
Video.propTypes = propTypes;
|
|
324
321
|
Video.defaultProps = defaultProps;
|
|
325
322
|
var Video$1 = /*#__PURE__*/React__default["default"].forwardRef(function (props, ref) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@micromag/element-video",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.322",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"javascript"
|
|
@@ -52,17 +52,17 @@
|
|
|
52
52
|
"@fortawesome/fontawesome-svg-core": "^1.2.32",
|
|
53
53
|
"@fortawesome/free-solid-svg-icons": "^5.15.1",
|
|
54
54
|
"@fortawesome/react-fontawesome": "^0.1.13",
|
|
55
|
-
"@micromag/core": "^0.3.
|
|
56
|
-
"@micromag/element-closed-captions": "^0.3.
|
|
57
|
-
"@micromag/element-media-controls": "^0.3.
|
|
55
|
+
"@micromag/core": "^0.3.322",
|
|
56
|
+
"@micromag/element-closed-captions": "^0.3.322",
|
|
57
|
+
"@micromag/element-media-controls": "^0.3.322",
|
|
58
58
|
"classnames": "^2.2.6",
|
|
59
59
|
"lodash": "^4.17.21",
|
|
60
60
|
"prop-types": "^15.7.2",
|
|
61
61
|
"react-intl": "^5.12.1",
|
|
62
|
-
"uuid": "^
|
|
62
|
+
"uuid": "^9.0.0"
|
|
63
63
|
},
|
|
64
64
|
"publishConfig": {
|
|
65
65
|
"access": "public"
|
|
66
66
|
},
|
|
67
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "2dfe09ad5a9ac720e4bfbffcb6371fc31c24fa9f"
|
|
68
68
|
}
|