@micromag/element-video 0.3.168 → 0.3.172
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/es/index.js +44 -5
- package/lib/index.js +44 -4
- package/package.json +5 -5
package/es/index.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
1
2
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
3
|
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
3
4
|
import classNames from 'classnames';
|
|
4
5
|
import isFunction from 'lodash/isFunction';
|
|
5
6
|
import PropTypes$1 from 'prop-types';
|
|
6
|
-
import React, { useMemo, useRef, useEffect, useCallback } from 'react';
|
|
7
|
+
import React, { useMemo, useRef, useEffect, useCallback, useState } from 'react';
|
|
7
8
|
import { PropTypes } from '@micromag/core';
|
|
8
9
|
import { useMediaThumbnail, useMediaCurrentTime, useMediaDuration, useMediaReady, useMediaLoad, useProgressSteps } from '@micromag/core/hooks';
|
|
9
10
|
import { getMediaFilesAsArray } from '@micromag/core/utils';
|
|
@@ -37,6 +38,7 @@ var propTypes = {
|
|
|
37
38
|
onDurationChange: PropTypes$1.func,
|
|
38
39
|
onVolumeChange: PropTypes$1.func,
|
|
39
40
|
onSuspend: PropTypes$1.func,
|
|
41
|
+
onSuspended: PropTypes$1.func,
|
|
40
42
|
focusable: PropTypes$1.bool,
|
|
41
43
|
supportedMimes: PropTypes$1.arrayOf(PropTypes$1.string),
|
|
42
44
|
withPoster: PropTypes$1.bool // onPosterLoaded: PropTypes.func,
|
|
@@ -67,6 +69,7 @@ var defaultProps = {
|
|
|
67
69
|
onDurationChange: null,
|
|
68
70
|
onVolumeChange: null,
|
|
69
71
|
onSuspend: null,
|
|
72
|
+
onSuspended: null,
|
|
70
73
|
focusable: true,
|
|
71
74
|
supportedMimes: ['video/mp4', 'video/webm', 'video/ogg'],
|
|
72
75
|
withPoster: false
|
|
@@ -90,7 +93,7 @@ var Video = function Video(_ref) {
|
|
|
90
93
|
withoutCors = _ref.withoutCors,
|
|
91
94
|
className = _ref.className,
|
|
92
95
|
onReady = _ref.onReady,
|
|
93
|
-
|
|
96
|
+
customOnPlay = _ref.onPlay,
|
|
94
97
|
onPause = _ref.onPause,
|
|
95
98
|
onEnded = _ref.onEnded,
|
|
96
99
|
onSeeked = _ref.onSeeked,
|
|
@@ -98,7 +101,8 @@ var Video = function Video(_ref) {
|
|
|
98
101
|
onProgressStep = _ref.onProgressStep,
|
|
99
102
|
customOnDurationChange = _ref.onDurationChange,
|
|
100
103
|
customOnVolumeChange = _ref.onVolumeChange,
|
|
101
|
-
|
|
104
|
+
customOnSuspend = _ref.onSuspend,
|
|
105
|
+
onSuspended = _ref.onSuspended,
|
|
102
106
|
focusable = _ref.focusable,
|
|
103
107
|
supportedMimes = _ref.supportedMimes,
|
|
104
108
|
withPoster = _ref.withPoster;
|
|
@@ -203,7 +207,40 @@ var Video = function Video(_ref) {
|
|
|
203
207
|
if (customOnVolumeChange !== null) {
|
|
204
208
|
customOnVolumeChange(element.volume);
|
|
205
209
|
}
|
|
206
|
-
}, [customOnVolumeChange]); //
|
|
210
|
+
}, [customOnVolumeChange]); // Manage suspend
|
|
211
|
+
|
|
212
|
+
var _useState = useState(false),
|
|
213
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
214
|
+
isSuspended = _useState2[0],
|
|
215
|
+
setIsSuspended = _useState2[1];
|
|
216
|
+
|
|
217
|
+
var onPlay = useCallback(function (e) {
|
|
218
|
+
if (isSuspended) {
|
|
219
|
+
setIsSuspended(false);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
if (customOnPlay !== null) {
|
|
223
|
+
customOnPlay(e);
|
|
224
|
+
}
|
|
225
|
+
}, [isSuspended, setIsSuspended, customOnPlay]);
|
|
226
|
+
var onPlaying = useCallback(function () {
|
|
227
|
+
if (isSuspended) {
|
|
228
|
+
setIsSuspended(false);
|
|
229
|
+
}
|
|
230
|
+
}, [isSuspended, setIsSuspended]);
|
|
231
|
+
var onSuspend = useCallback(function (e) {
|
|
232
|
+
if (e.currentTarget.paused && !paused && !isSuspended) {
|
|
233
|
+
setIsSuspended(true);
|
|
234
|
+
|
|
235
|
+
if (onSuspended !== null) {
|
|
236
|
+
onSuspended();
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
if (customOnSuspend !== null) {
|
|
241
|
+
customOnSuspend(e);
|
|
242
|
+
}
|
|
243
|
+
}, [isSuspended, paused, setIsSuspended, customOnSuspend, onSuspended]); // Ensure load if preload value change over time
|
|
207
244
|
|
|
208
245
|
var firstPreloadRef = useRef(preload);
|
|
209
246
|
var firstShouldLoadRef = useRef(shouldLoad);
|
|
@@ -280,13 +317,15 @@ var Video = function Video(_ref) {
|
|
|
280
317
|
tabIndex: focusable ? '0' : '-1',
|
|
281
318
|
className: classNames(styles.video),
|
|
282
319
|
onPlay: onPlay,
|
|
320
|
+
onPlaying: onPlaying,
|
|
283
321
|
onPause: onPause,
|
|
284
322
|
onEnded: onEnded,
|
|
285
323
|
onSeeked: onSeeked,
|
|
286
324
|
onVolumeChange: onVolumeChange,
|
|
287
325
|
onTimeUpdate: onTimeUpdate,
|
|
288
326
|
onSuspend: onSuspend,
|
|
289
|
-
"data-has-audio": hasAudio
|
|
327
|
+
"data-has-audio": hasAudio,
|
|
328
|
+
"data-is-suspended": isSuspended
|
|
290
329
|
}, (sourceFiles || []).map(function (_ref8) {
|
|
291
330
|
var sourceUrl = _ref8.url,
|
|
292
331
|
sourceMime = _ref8.mime;
|
package/lib/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
3
4
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
5
|
var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
|
|
5
6
|
var classNames = require('classnames');
|
|
@@ -12,6 +13,7 @@ var utils = require('@micromag/core/utils');
|
|
|
12
13
|
|
|
13
14
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
14
15
|
|
|
16
|
+
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
|
|
15
17
|
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
16
18
|
var _objectSpread__default = /*#__PURE__*/_interopDefaultLegacy(_objectSpread);
|
|
17
19
|
var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
|
|
@@ -48,6 +50,7 @@ var propTypes = {
|
|
|
48
50
|
onDurationChange: PropTypes__default["default"].func,
|
|
49
51
|
onVolumeChange: PropTypes__default["default"].func,
|
|
50
52
|
onSuspend: PropTypes__default["default"].func,
|
|
53
|
+
onSuspended: PropTypes__default["default"].func,
|
|
51
54
|
focusable: PropTypes__default["default"].bool,
|
|
52
55
|
supportedMimes: PropTypes__default["default"].arrayOf(PropTypes__default["default"].string),
|
|
53
56
|
withPoster: PropTypes__default["default"].bool // onPosterLoaded: PropTypes.func,
|
|
@@ -78,6 +81,7 @@ var defaultProps = {
|
|
|
78
81
|
onDurationChange: null,
|
|
79
82
|
onVolumeChange: null,
|
|
80
83
|
onSuspend: null,
|
|
84
|
+
onSuspended: null,
|
|
81
85
|
focusable: true,
|
|
82
86
|
supportedMimes: ['video/mp4', 'video/webm', 'video/ogg'],
|
|
83
87
|
withPoster: false
|
|
@@ -101,7 +105,7 @@ var Video = function Video(_ref) {
|
|
|
101
105
|
withoutCors = _ref.withoutCors,
|
|
102
106
|
className = _ref.className,
|
|
103
107
|
onReady = _ref.onReady,
|
|
104
|
-
|
|
108
|
+
customOnPlay = _ref.onPlay,
|
|
105
109
|
onPause = _ref.onPause,
|
|
106
110
|
onEnded = _ref.onEnded,
|
|
107
111
|
onSeeked = _ref.onSeeked,
|
|
@@ -109,7 +113,8 @@ var Video = function Video(_ref) {
|
|
|
109
113
|
onProgressStep = _ref.onProgressStep,
|
|
110
114
|
customOnDurationChange = _ref.onDurationChange,
|
|
111
115
|
customOnVolumeChange = _ref.onVolumeChange,
|
|
112
|
-
|
|
116
|
+
customOnSuspend = _ref.onSuspend,
|
|
117
|
+
onSuspended = _ref.onSuspended,
|
|
113
118
|
focusable = _ref.focusable,
|
|
114
119
|
supportedMimes = _ref.supportedMimes,
|
|
115
120
|
withPoster = _ref.withPoster;
|
|
@@ -214,7 +219,40 @@ var Video = function Video(_ref) {
|
|
|
214
219
|
if (customOnVolumeChange !== null) {
|
|
215
220
|
customOnVolumeChange(element.volume);
|
|
216
221
|
}
|
|
217
|
-
}, [customOnVolumeChange]); //
|
|
222
|
+
}, [customOnVolumeChange]); // Manage suspend
|
|
223
|
+
|
|
224
|
+
var _useState = React.useState(false),
|
|
225
|
+
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
226
|
+
isSuspended = _useState2[0],
|
|
227
|
+
setIsSuspended = _useState2[1];
|
|
228
|
+
|
|
229
|
+
var onPlay = React.useCallback(function (e) {
|
|
230
|
+
if (isSuspended) {
|
|
231
|
+
setIsSuspended(false);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
if (customOnPlay !== null) {
|
|
235
|
+
customOnPlay(e);
|
|
236
|
+
}
|
|
237
|
+
}, [isSuspended, setIsSuspended, customOnPlay]);
|
|
238
|
+
var onPlaying = React.useCallback(function () {
|
|
239
|
+
if (isSuspended) {
|
|
240
|
+
setIsSuspended(false);
|
|
241
|
+
}
|
|
242
|
+
}, [isSuspended, setIsSuspended]);
|
|
243
|
+
var onSuspend = React.useCallback(function (e) {
|
|
244
|
+
if (e.currentTarget.paused && !paused && !isSuspended) {
|
|
245
|
+
setIsSuspended(true);
|
|
246
|
+
|
|
247
|
+
if (onSuspended !== null) {
|
|
248
|
+
onSuspended();
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
if (customOnSuspend !== null) {
|
|
253
|
+
customOnSuspend(e);
|
|
254
|
+
}
|
|
255
|
+
}, [isSuspended, paused, setIsSuspended, customOnSuspend, onSuspended]); // Ensure load if preload value change over time
|
|
218
256
|
|
|
219
257
|
var firstPreloadRef = React.useRef(preload);
|
|
220
258
|
var firstShouldLoadRef = React.useRef(shouldLoad);
|
|
@@ -291,13 +329,15 @@ var Video = function Video(_ref) {
|
|
|
291
329
|
tabIndex: focusable ? '0' : '-1',
|
|
292
330
|
className: classNames__default["default"](styles.video),
|
|
293
331
|
onPlay: onPlay,
|
|
332
|
+
onPlaying: onPlaying,
|
|
294
333
|
onPause: onPause,
|
|
295
334
|
onEnded: onEnded,
|
|
296
335
|
onSeeked: onSeeked,
|
|
297
336
|
onVolumeChange: onVolumeChange,
|
|
298
337
|
onTimeUpdate: onTimeUpdate,
|
|
299
338
|
onSuspend: onSuspend,
|
|
300
|
-
"data-has-audio": hasAudio
|
|
339
|
+
"data-has-audio": hasAudio,
|
|
340
|
+
"data-is-suspended": isSuspended
|
|
301
341
|
}, (sourceFiles || []).map(function (_ref8) {
|
|
302
342
|
var sourceUrl = _ref8.url,
|
|
303
343
|
sourceMime = _ref8.mime;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@micromag/element-video",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.172",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"javascript"
|
|
@@ -52,9 +52,9 @@
|
|
|
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.169",
|
|
56
|
+
"@micromag/element-closed-captions": "^0.3.169",
|
|
57
|
+
"@micromag/element-media-controls": "^0.3.169",
|
|
58
58
|
"classnames": "^2.2.6",
|
|
59
59
|
"lodash": "^4.17.21",
|
|
60
60
|
"prop-types": "^15.7.2",
|
|
@@ -64,5 +64,5 @@
|
|
|
64
64
|
"publishConfig": {
|
|
65
65
|
"access": "public"
|
|
66
66
|
},
|
|
67
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "2756b1548b925177e47e054ef31e0968b253b095"
|
|
68
68
|
}
|