@micromag/screen-video 0.3.190 → 0.3.194

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.
Files changed (3) hide show
  1. package/es/index.js +25 -13
  2. package/lib/index.js +24 -12
  3. package/package.json +11 -11
package/es/index.js CHANGED
@@ -5,7 +5,7 @@ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
5
5
  import { getSizeWithinBounds } from '@folklore/size';
6
6
  import classNames from 'classnames';
7
7
  import PropTypes from 'prop-types';
8
- import React, { useEffect, useState, useCallback, useMemo } from 'react';
8
+ import React, { useState, useEffect, useCallback, useMemo } from 'react';
9
9
  import { PropTypes as PropTypes$1 } from '@micromag/core';
10
10
  import { ScreenElement, PlaceholderVideo, Empty, Transitions } from '@micromag/core/components';
11
11
  import { useScreenSize, useScreenRenderContext, useViewerNavigation, useViewerContext, useViewerWebView, usePlaybackContext, usePlaybackMediaRef, useViewerContainer } from '@micromag/core/contexts';
@@ -118,8 +118,15 @@ var VideoScreen = function VideoScreen(_ref) {
118
118
  hideControls = _usePlaybackContext.hideControls;
119
119
 
120
120
  var mediaRef = usePlaybackMediaRef(current);
121
+
122
+ var _useState = useState(false),
123
+ _useState2 = _slicedToArray(_useState, 2),
124
+ hasPlayed = _useState2[0],
125
+ setHasPlayed = _useState2[1];
126
+
121
127
  var backgroundPlaying = current && (isView || isEdit);
122
128
  var videoPlaying = current && (isView || isEdit) && playing;
129
+ var shouldDisplayPoster = isPreview || isCapture || isView && active && !current && !hasPlayed;
123
130
  useEffect(function () {
124
131
  if (!current) {
125
132
  return function () {};
@@ -174,15 +181,15 @@ var VideoScreen = function VideoScreen(_ref) {
174
181
  }
175
182
  }, [activityDetected, showControls, hideControls]); // Get api state updates from callback
176
183
 
177
- var _useState = useState(null),
178
- _useState2 = _slicedToArray(_useState, 2),
179
- currentTime = _useState2[0],
180
- setCurrentTime = _useState2[1];
181
-
182
184
  var _useState3 = useState(null),
183
185
  _useState4 = _slicedToArray(_useState3, 2),
184
- duration = _useState4[0],
185
- setDuration = _useState4[1];
186
+ currentTime = _useState4[0],
187
+ setCurrentTime = _useState4[1];
188
+
189
+ var _useState5 = useState(null),
190
+ _useState6 = _slicedToArray(_useState5, 2),
191
+ duration = _useState6[0],
192
+ setDuration = _useState6[1];
186
193
 
187
194
  var onTimeUpdate = useCallback(function (time) {
188
195
  setCurrentTime(time);
@@ -195,6 +202,11 @@ var VideoScreen = function VideoScreen(_ref) {
195
202
  }, [setDuration]);
196
203
  var onPlay = useCallback(function (_ref3) {
197
204
  var initial = _ref3.initial;
205
+
206
+ if (!hasPlayed) {
207
+ setHasPlayed(true);
208
+ }
209
+
198
210
  trackScreenMedia(video, initial ? 'play' : 'resume');
199
211
  }, [trackScreenMedia, video]);
200
212
  var onPause = useCallback(function (_ref4) {
@@ -217,10 +229,10 @@ var VideoScreen = function VideoScreen(_ref) {
217
229
  var hasCallToAction = callToAction !== null && callToAction.active === true;
218
230
  var hasVideo = video !== null;
219
231
 
220
- var _useState5 = useState(hasVideo),
221
- _useState6 = _slicedToArray(_useState5, 2),
222
- ready = _useState6[0],
223
- setReady = _useState6[1]; // useState(!hasVideo);
232
+ var _useState7 = useState(hasVideo),
233
+ _useState8 = _slicedToArray(_useState7, 2),
234
+ ready = _useState8[0],
235
+ setReady = _useState8[1]; // useState(!hasVideo);
224
236
 
225
237
 
226
238
  var transitionPlaying = current && ready;
@@ -296,7 +308,7 @@ var VideoScreen = function VideoScreen(_ref) {
296
308
  left: resizedVideoLeft,
297
309
  top: resizedVideoTop
298
310
  }
299
- }, isPreview || isCapture ? /*#__PURE__*/React.createElement(Image, {
311
+ }, shouldDisplayPoster ? /*#__PURE__*/React.createElement(Image, {
300
312
  className: styles.image,
301
313
  media: finalThumbnail,
302
314
  width: resizedVideoWidth,
package/lib/index.js CHANGED
@@ -138,8 +138,15 @@ var VideoScreen = function VideoScreen(_ref) {
138
138
  hideControls = _usePlaybackContext.hideControls;
139
139
 
140
140
  var mediaRef = contexts.usePlaybackMediaRef(current);
141
+
142
+ var _useState = React.useState(false),
143
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
144
+ hasPlayed = _useState2[0],
145
+ setHasPlayed = _useState2[1];
146
+
141
147
  var backgroundPlaying = current && (isView || isEdit);
142
148
  var videoPlaying = current && (isView || isEdit) && playing;
149
+ var shouldDisplayPoster = isPreview || isCapture || isView && active && !current && !hasPlayed;
143
150
  React.useEffect(function () {
144
151
  if (!current) {
145
152
  return function () {};
@@ -194,15 +201,15 @@ var VideoScreen = function VideoScreen(_ref) {
194
201
  }
195
202
  }, [activityDetected, showControls, hideControls]); // Get api state updates from callback
196
203
 
197
- var _useState = React.useState(null),
198
- _useState2 = _slicedToArray__default["default"](_useState, 2),
199
- currentTime = _useState2[0],
200
- setCurrentTime = _useState2[1];
201
-
202
204
  var _useState3 = React.useState(null),
203
205
  _useState4 = _slicedToArray__default["default"](_useState3, 2),
204
- duration = _useState4[0],
205
- setDuration = _useState4[1];
206
+ currentTime = _useState4[0],
207
+ setCurrentTime = _useState4[1];
208
+
209
+ var _useState5 = React.useState(null),
210
+ _useState6 = _slicedToArray__default["default"](_useState5, 2),
211
+ duration = _useState6[0],
212
+ setDuration = _useState6[1];
206
213
 
207
214
  var onTimeUpdate = React.useCallback(function (time) {
208
215
  setCurrentTime(time);
@@ -215,6 +222,11 @@ var VideoScreen = function VideoScreen(_ref) {
215
222
  }, [setDuration]);
216
223
  var onPlay = React.useCallback(function (_ref3) {
217
224
  var initial = _ref3.initial;
225
+
226
+ if (!hasPlayed) {
227
+ setHasPlayed(true);
228
+ }
229
+
218
230
  trackScreenMedia(video, initial ? 'play' : 'resume');
219
231
  }, [trackScreenMedia, video]);
220
232
  var onPause = React.useCallback(function (_ref4) {
@@ -237,10 +249,10 @@ var VideoScreen = function VideoScreen(_ref) {
237
249
  var hasCallToAction = callToAction !== null && callToAction.active === true;
238
250
  var hasVideo = video !== null;
239
251
 
240
- var _useState5 = React.useState(hasVideo),
241
- _useState6 = _slicedToArray__default["default"](_useState5, 2),
242
- ready = _useState6[0],
243
- setReady = _useState6[1]; // useState(!hasVideo);
252
+ var _useState7 = React.useState(hasVideo),
253
+ _useState8 = _slicedToArray__default["default"](_useState7, 2),
254
+ ready = _useState8[0],
255
+ setReady = _useState8[1]; // useState(!hasVideo);
244
256
 
245
257
 
246
258
  var transitionPlaying = current && ready;
@@ -316,7 +328,7 @@ var VideoScreen = function VideoScreen(_ref) {
316
328
  left: resizedVideoLeft,
317
329
  top: resizedVideoTop
318
330
  }
319
- }, isPreview || isCapture ? /*#__PURE__*/React__default["default"].createElement(Image__default["default"], {
331
+ }, shouldDisplayPoster ? /*#__PURE__*/React__default["default"].createElement(Image__default["default"], {
320
332
  className: styles.image,
321
333
  media: finalThumbnail,
322
334
  width: resizedVideoWidth,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@micromag/screen-video",
3
- "version": "0.3.190",
3
+ "version": "0.3.194",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "javascript"
@@ -50,15 +50,15 @@
50
50
  "dependencies": {
51
51
  "@babel/runtime": "^7.13.10",
52
52
  "@folklore/size": "^0.1.20",
53
- "@micromag/core": "^0.3.190",
54
- "@micromag/element-background": "^0.3.190",
55
- "@micromag/element-call-to-action": "^0.3.190",
56
- "@micromag/element-closed-captions": "^0.3.190",
57
- "@micromag/element-container": "^0.3.190",
58
- "@micromag/element-image": "^0.3.190",
59
- "@micromag/element-media-controls": "^0.3.190",
60
- "@micromag/element-video": "^0.3.190",
61
- "@micromag/transforms": "^0.3.190",
53
+ "@micromag/core": "^0.3.194",
54
+ "@micromag/element-background": "^0.3.194",
55
+ "@micromag/element-call-to-action": "^0.3.194",
56
+ "@micromag/element-closed-captions": "^0.3.194",
57
+ "@micromag/element-container": "^0.3.194",
58
+ "@micromag/element-image": "^0.3.194",
59
+ "@micromag/element-media-controls": "^0.3.194",
60
+ "@micromag/element-video": "^0.3.194",
61
+ "@micromag/transforms": "^0.3.194",
62
62
  "classnames": "^2.2.6",
63
63
  "lodash": "^4.17.21",
64
64
  "prop-types": "^15.7.2",
@@ -68,5 +68,5 @@
68
68
  "publishConfig": {
69
69
  "access": "public"
70
70
  },
71
- "gitHead": "36be7dcf459e109654b406147cc723a52cb784cd"
71
+ "gitHead": "b873f7d8957f26dcfbe27d1ad78f2102810e8c4d"
72
72
  }