@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 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
- onPlay = _ref.onPlay,
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
- onSuspend = _ref.onSuspend,
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]); // Ensure load if preload value change over time
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
- onPlay = _ref.onPlay,
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
- onSuspend = _ref.onSuspend,
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]); // Ensure load if preload value change over time
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.168",
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.168",
56
- "@micromag/element-closed-captions": "^0.3.168",
57
- "@micromag/element-media-controls": "^0.3.168",
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": "b1010cb410363b9350053a07784b0255c4d09027"
67
+ "gitHead": "2756b1548b925177e47e054ef31e0968b253b095"
68
68
  }