@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.
@@ -1 +1 @@
1
- .micromag-element-video-container.micromag-element-video-withSize .micromag-element-video-video{position:absolute;top:0;left:0;width:100%;height:100%}.micromag-element-video-container{position:relative}.micromag-element-video-container .micromag-element-video-video{display:block;width:100%}
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, useState } from 'react';
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
- thumbnail = _ref.thumbnail,
80
- width = _ref.width,
81
- height = _ref.height,
82
- mediaRef = _ref.mediaRef,
83
- muted = _ref.muted,
84
- autoPlay = _ref.autoPlay,
85
- paused = _ref.paused,
86
- loop = _ref.loop,
87
- playsInline = _ref.playsInline,
88
- preload = _ref.preload,
89
- shouldLoad = _ref.shouldLoad,
90
- withoutCors = _ref.withoutCors,
91
- className = _ref.className,
92
- onReady = _ref.onReady,
93
- customOnPlay = _ref.onPlay,
94
- onPause = _ref.onPause,
95
- onEnded = _ref.onEnded,
96
- onSeeked = _ref.onSeeked,
97
- onTimeUpdate = _ref.onTimeUpdate,
98
- onProgressStep = _ref.onProgressStep,
99
- customOnDurationChange = _ref.onDurationChange,
100
- customOnVolumeChange = _ref.onVolumeChange,
101
- customOnSuspend = _ref.onSuspend,
102
- onSuspended = _ref.onSuspended,
103
- focusable = _ref.focusable,
104
- withPoster = _ref.withPoster;
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
- _ref2$url = _ref2.url,
108
- mediaUrl = _ref2$url === void 0 ? null : _ref2$url,
109
- _ref2$files = _ref2.files,
110
- files = _ref2$files === void 0 ? null : _ref2$files,
111
- _ref2$metadata = _ref2.metadata,
112
- metadata = _ref2$metadata === void 0 ? null : _ref2$metadata;
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
- _ref3$description = _ref3.description,
116
- description = _ref3$description === void 0 ? null : _ref3$description,
117
- _ref3$mime = _ref3.mime,
118
- mediaMime = _ref3$mime === void 0 ? null : _ref3$mime,
119
- _ref3$has_audio = _ref3.has_audio,
120
- hasAudio = _ref3$has_audio === void 0 ? null : _ref3$has_audio;
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
- mime = _file$mime === void 0 ? "video/".concat(file.id === 'h264' ? 'mp4' : file.id) : _file$mime;
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
- mime = _file$mime2 === void 0 ? "video/".concat(file.id === 'h264' ? 'mp4' : file.id) : _file$mime2;
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
- _ref4$id = _ref4.id,
161
- currentMimeId = _ref4$id === void 0 ? null : _ref4$id;
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]); // @NOTE: Media is an animated image and doesn't have source files in video formats
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
- var handle = _ref6.handle;
172
- return handle === 'original';
173
- }) || {},
174
- _ref5$type = _ref5.type,
175
- originalType = _ref5$type === void 0 ? null : _ref5$type,
176
- _ref5$mime = _ref5.mime,
177
- originalMime = _ref5$mime === void 0 ? mediaMime : _ref5$mime;
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
- element = _ref$current === void 0 ? null : _ref$current;
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]); // Manage suspend
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
- element = _ref$current2 === void 0 ? null : _ref$current2;
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
- sourceMime = _ref8.mime;
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
- thumbnail = _ref.thumbnail,
92
- width = _ref.width,
93
- height = _ref.height,
94
- mediaRef = _ref.mediaRef,
95
- muted = _ref.muted,
96
- autoPlay = _ref.autoPlay,
97
- paused = _ref.paused,
98
- loop = _ref.loop,
99
- playsInline = _ref.playsInline,
100
- preload = _ref.preload,
101
- shouldLoad = _ref.shouldLoad,
102
- withoutCors = _ref.withoutCors,
103
- className = _ref.className,
104
- onReady = _ref.onReady,
105
- customOnPlay = _ref.onPlay,
106
- onPause = _ref.onPause,
107
- onEnded = _ref.onEnded,
108
- onSeeked = _ref.onSeeked,
109
- onTimeUpdate = _ref.onTimeUpdate,
110
- onProgressStep = _ref.onProgressStep,
111
- customOnDurationChange = _ref.onDurationChange,
112
- customOnVolumeChange = _ref.onVolumeChange,
113
- customOnSuspend = _ref.onSuspend,
114
- onSuspended = _ref.onSuspended,
115
- focusable = _ref.focusable,
116
- withPoster = _ref.withPoster;
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
- _ref2$url = _ref2.url,
120
- mediaUrl = _ref2$url === void 0 ? null : _ref2$url,
121
- _ref2$files = _ref2.files,
122
- files = _ref2$files === void 0 ? null : _ref2$files,
123
- _ref2$metadata = _ref2.metadata,
124
- metadata = _ref2$metadata === void 0 ? null : _ref2$metadata;
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
- _ref3$description = _ref3.description,
128
- description = _ref3$description === void 0 ? null : _ref3$description,
129
- _ref3$mime = _ref3.mime,
130
- mediaMime = _ref3$mime === void 0 ? null : _ref3$mime,
131
- _ref3$has_audio = _ref3.has_audio,
132
- hasAudio = _ref3$has_audio === void 0 ? null : _ref3$has_audio;
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
- mime = _file$mime === void 0 ? "video/".concat(file.id === 'h264' ? 'mp4' : file.id) : _file$mime;
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
- mime = _file$mime2 === void 0 ? "video/".concat(file.id === 'h264' ? 'mp4' : file.id) : _file$mime2;
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
- _ref4$id = _ref4.id,
173
- currentMimeId = _ref4$id === void 0 ? null : _ref4$id;
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]); // @NOTE: Media is an animated image and doesn't have source files in video formats
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
- var handle = _ref6.handle;
184
- return handle === 'original';
185
- }) || {},
186
- _ref5$type = _ref5.type,
187
- originalType = _ref5$type === void 0 ? null : _ref5$type,
188
- _ref5$mime = _ref5.mime,
189
- originalMime = _ref5$mime === void 0 ? mediaMime : _ref5$mime;
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
- element = _ref$current === void 0 ? null : _ref$current;
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]); // Manage suspend
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
- element = _ref$current2 === void 0 ? null : _ref$current2;
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
- sourceMime = _ref8.mime;
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.311",
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.311",
56
- "@micromag/element-closed-captions": "^0.3.311",
57
- "@micromag/element-media-controls": "^0.3.311",
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": "^8.3.2"
62
+ "uuid": "^9.0.0"
63
63
  },
64
64
  "publishConfig": {
65
65
  "access": "public"
66
66
  },
67
- "gitHead": "fab297a7ad204611597c749b969f14d992d35d47"
67
+ "gitHead": "2dfe09ad5a9ac720e4bfbffcb6371fc31c24fa9f"
68
68
  }