@micromag/screen-video 0.3.143 → 0.3.146

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-screen-video-container .micromag-screen-video-showControlsButton,.micromag-screen-video-unmuteAndPlayButton{display:inline-block;position:relative;padding:0;border:0;background:rgba(0,0,0,0);color:inherit;font-family:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.micromag-screen-video-container .micromag-screen-video-content,.micromag-screen-video-container .micromag-screen-video-empty,.micromag-screen-video-container .micromag-screen-video-emptyContainer,.micromag-screen-video-container.micromag-screen-video-fullscreen .micromag-screen-video-image,.micromag-screen-video-container.micromag-screen-video-fullscreen .micromag-screen-video-placeholder,.micromag-screen-video-container.micromag-screen-video-fullscreen .micromag-screen-video-video{position:absolute;top:0;left:0;width:100%;height:100%}.micromag-screen-video-container{position:relative;width:100%;height:100%;overflow:hidden}.micromag-screen-video-disabled.micromag-screen-video-container{overflow:hidden;pointer-events:none}.micromag-screen-video-hidden.micromag-screen-video-container{display:none;visibility:hidden}.micromag-screen-video-placeholder.micromag-screen-video-container .micromag-screen-video-content{position:relative;padding:6px}.micromag-screen-video-container .micromag-screen-video-empty{margin:5px auto;border:2px dashed #343434;color:#343434}.micromag-screen-video-container .micromag-screen-video-emptyContainer{top:50%;height:0;padding-bottom:56.25%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.micromag-screen-video-container .micromag-screen-video-empty{margin:0}.micromag-screen-video-container .micromag-screen-video-content{overflow:hidden}.micromag-screen-video-container .micromag-screen-video-callToAction{padding-bottom:5px}.micromag-screen-video-container .micromag-screen-video-bottom{-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.micromag-screen-video-container .micromag-screen-video-bottom.micromag-screen-video-withGradient{background:-webkit-gradient(linear,left top, left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.4)));background:-o-linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.4));background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.4))}.micromag-screen-video-container .micromag-screen-video-controls{position:relative}.micromag-screen-video-container .micromag-screen-video-mediaControls{position:relative;z-index:1;padding:10px 20px 20px;-webkit-transition:z-index .15s linear,opacity .15s linear;-o-transition:z-index .15s linear,opacity .15s linear;transition:z-index .15s linear,opacity .15s linear;opacity:0}.micromag-screen-video-container .micromag-screen-video-mediaControls.micromag-screen-video-visible{z-index:3;opacity:1}.micromag-screen-video-container .micromag-screen-video-showControlsButton{display:block;position:absolute;z-index:2;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0;opacity:0;background-color:rgba(0,0,0,0)}.micromag-screen-video-container .micromag-screen-video-placeholder{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;height:100%}.micromag-screen-video-container .micromag-screen-video-videoContainer{position:absolute}.micromag-screen-video-container .micromag-screen-video-bottomContent{position:absolute;right:0;bottom:0;left:0;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0)}.micromag-screen-video-container.micromag-screen-video-fullscreen .micromag-screen-video-emptyContainer{top:0;height:100%;padding-bottom:0;-webkit-transform:none;-ms-transform:none;transform:none}.micromag-screen-video-unmuteAndPlayButton{display:block;position:absolute;z-index:2;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0;opacity:0;background-color:rgba(0,0,0,0)}.micromag-screen-video-bottomSeekBar{-webkit-transition:-webkit-transform .5s ease-out .5s;transition:-webkit-transform .5s ease-out .5s;-o-transition:transform .5s ease-out .5s;transition:transform .5s ease-out .5s;transition:transform .5s ease-out .5s, -webkit-transform .5s ease-out .5s}.micromag-screen-video-bottomSeekBar.micromag-screen-video-isHidden{-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform .2s ease-out;transition:-webkit-transform .2s ease-out;-o-transition:transform .2s ease-out;transition:transform .2s ease-out;transition:transform .2s ease-out, -webkit-transform .2s ease-out}
1
+ .micromag-screen-video-container .micromag-screen-video-showControlsButton,.micromag-screen-video-unmuteAndPlayButton{display:inline-block;position:relative;padding:0;border:0;background:rgba(0,0,0,0);color:inherit;font-family:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.micromag-screen-video-container .micromag-screen-video-content,.micromag-screen-video-container .micromag-screen-video-empty,.micromag-screen-video-container .micromag-screen-video-emptyContainer,.micromag-screen-video-container.micromag-screen-video-fullscreen .micromag-screen-video-image,.micromag-screen-video-container.micromag-screen-video-fullscreen .micromag-screen-video-placeholder,.micromag-screen-video-container.micromag-screen-video-fullscreen .micromag-screen-video-video{position:absolute;top:0;left:0;width:100%;height:100%}.micromag-screen-video-container{position:relative;width:100%;height:100%;overflow:hidden}.micromag-screen-video-disabled.micromag-screen-video-container{overflow:hidden;pointer-events:none}.micromag-screen-video-hidden.micromag-screen-video-container{display:none;visibility:hidden}.micromag-screen-video-placeholder.micromag-screen-video-container .micromag-screen-video-content{position:relative;padding:6px}.micromag-screen-video-container .micromag-screen-video-empty{margin:5px auto;border:2px dashed #343434;color:#343434}.micromag-screen-video-container .micromag-screen-video-emptyContainer{top:50%;height:0;padding-bottom:56.25%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.micromag-screen-video-container .micromag-screen-video-empty{margin:0}.micromag-screen-video-container .micromag-screen-video-content{overflow:hidden}.micromag-screen-video-container .micromag-screen-video-callToAction{padding-bottom:5px}.micromag-screen-video-container .micromag-screen-video-bottom{-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.micromag-screen-video-container .micromag-screen-video-bottom.micromag-screen-video-withGradient{background:-webkit-gradient(linear,left top, left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.4)));background:-o-linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.4));background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.4))}.micromag-screen-video-container .micromag-screen-video-controls{position:relative}.micromag-screen-video-container .micromag-screen-video-mediaControls{position:relative;z-index:1;padding:10px 20px 20px;-webkit-transition:z-index .15s linear,opacity .15s linear;-o-transition:z-index .15s linear,opacity .15s linear;transition:z-index .15s linear,opacity .15s linear;opacity:0}.micromag-screen-video-container .micromag-screen-video-mediaControls.micromag-screen-video-visible{z-index:3;opacity:1}.micromag-screen-video-container .micromag-screen-video-showControlsButton{display:block;position:absolute;z-index:2;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0;opacity:0;background-color:rgba(0,0,0,0)}.micromag-screen-video-container .micromag-screen-video-placeholder{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;height:100%}.micromag-screen-video-container .micromag-screen-video-videoContainer{position:absolute}.micromag-screen-video-container .micromag-screen-video-bottomContent{position:absolute;right:0;bottom:0;left:0;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0)}.micromag-screen-video-container.micromag-screen-video-fullscreen .micromag-screen-video-emptyContainer{top:0;height:100%;padding-bottom:0;-webkit-transform:none;-ms-transform:none;transform:none}.micromag-screen-video-unmuteAndPlayButton{display:block;position:absolute;z-index:3;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0;opacity:0;background-color:rgba(0,0,0,0)}.micromag-screen-video-bottomSeekBar{-webkit-transition:-webkit-transform .5s ease-out .5s;transition:-webkit-transform .5s ease-out .5s;-o-transition:transform .5s ease-out .5s;transition:transform .5s ease-out .5s;transition:transform .5s ease-out .5s, -webkit-transform .5s ease-out .5s}.micromag-screen-video-bottomSeekBar.micromag-screen-video-isHidden{-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform .2s ease-out;transition:-webkit-transform .2s ease-out;-o-transition:transform .2s ease-out;transition:transform .2s ease-out;transition:transform .2s ease-out, -webkit-transform .2s ease-out}
package/es/index.js CHANGED
@@ -117,7 +117,6 @@ var VideoScreen = function VideoScreen(_ref) {
117
117
  seek = _ref3.seek,
118
118
  play = _ref3.play,
119
119
  pause = _ref3.pause,
120
- suspended = _ref3.suspended,
121
120
  _ref3$mediaRef = _ref3.mediaRef,
122
121
  apiMediaRef = _ref3$mediaRef === void 0 ? null : _ref3$mediaRef;
123
122
 
@@ -154,6 +153,11 @@ var VideoScreen = function VideoScreen(_ref) {
154
153
  muted = _useState10[0],
155
154
  setMuted = _useState10[1];
156
155
 
156
+ var _useState11 = useState(false),
157
+ _useState12 = _slicedToArray(_useState11, 2),
158
+ allowManualPlayOnTap = _useState12[0],
159
+ setAllowManualPlayOnTap = _useState12[1];
160
+
157
161
  var onTimeUpdate = useCallback(function (time) {
158
162
  setCurrentTime(time);
159
163
  }, [duration, setCurrentTime]);
@@ -236,10 +240,10 @@ var VideoScreen = function VideoScreen(_ref) {
236
240
  var hasCallToAction = callToAction !== null && callToAction.active === true;
237
241
  var hasVideo = video !== null;
238
242
 
239
- var _useState11 = useState(hasVideo),
240
- _useState12 = _slicedToArray(_useState11, 2),
241
- ready = _useState12[0],
242
- setReady = _useState12[1]; // useState(!hasVideo);
243
+ var _useState13 = useState(hasVideo),
244
+ _useState14 = _slicedToArray(_useState13, 2),
245
+ ready = _useState14[0],
246
+ setReady = _useState14[1]; // useState(!hasVideo);
243
247
 
244
248
 
245
249
  var transitionPlaying = current && ready;
@@ -285,11 +289,30 @@ var VideoScreen = function VideoScreen(_ref) {
285
289
  var onVideoReady = useCallback(function () {
286
290
  setReady(true);
287
291
  }, [setReady]);
292
+ /**
293
+ * if video can play, but:
294
+ * - it's the current screen
295
+ * - the video doesn't provide visual controls
296
+ * - the video is set to play automatically
297
+ * - and it's **not** playing
298
+ * -> then set up a button that catches a click and plays the video
299
+ */
300
+
301
+ var onCanPlay = useCallback(function () {
302
+ if (current && !withControls && autoPlay && !playing) {
303
+ setAllowManualPlayOnTap(true);
304
+ }
305
+ }, [current, withControls, autoPlay, playing, play, allowManualPlayOnTap, setAllowManualPlayOnTap]);
306
+ var onForcePlay = useCallback(function (e) {
307
+ e.stopPropagation();
308
+ setAllowManualPlayOnTap(false);
309
+ play();
310
+ }, [setAllowManualPlayOnTap, play]);
288
311
  var visibleControls = !autoPlay && !playing || muted || showMediaControls;
289
- var items = [autoPlay && suspended && !playing && !withControls ? /*#__PURE__*/React.createElement("button", {
312
+ var items = [allowManualPlayOnTap ? /*#__PURE__*/React.createElement("button", {
290
313
  key: "tap-catcher-button",
291
314
  type: "button",
292
- onTouchStart: play,
315
+ onClick: onForcePlay,
293
316
  className: styles.unmuteAndPlayButton
294
317
  }) : null, /*#__PURE__*/React.createElement(ScreenElement, {
295
318
  key: "video",
@@ -334,6 +357,7 @@ var VideoScreen = function VideoScreen(_ref) {
334
357
  className: styles.video,
335
358
  onReady: onVideoReady,
336
359
  onPlay: onPlay,
360
+ onCanPlay: onCanPlay,
337
361
  onPause: onPause,
338
362
  onTimeUpdate: onTimeUpdate,
339
363
  onProgressStep: onProgressStep,
package/lib/index.js CHANGED
@@ -138,7 +138,6 @@ var VideoScreen = function VideoScreen(_ref) {
138
138
  seek = _ref3.seek,
139
139
  play = _ref3.play,
140
140
  pause = _ref3.pause,
141
- suspended = _ref3.suspended,
142
141
  _ref3$mediaRef = _ref3.mediaRef,
143
142
  apiMediaRef = _ref3$mediaRef === void 0 ? null : _ref3$mediaRef;
144
143
 
@@ -175,6 +174,11 @@ var VideoScreen = function VideoScreen(_ref) {
175
174
  muted = _useState10[0],
176
175
  setMuted = _useState10[1];
177
176
 
177
+ var _useState11 = React.useState(false),
178
+ _useState12 = _slicedToArray__default["default"](_useState11, 2),
179
+ allowManualPlayOnTap = _useState12[0],
180
+ setAllowManualPlayOnTap = _useState12[1];
181
+
178
182
  var onTimeUpdate = React.useCallback(function (time) {
179
183
  setCurrentTime(time);
180
184
  }, [duration, setCurrentTime]);
@@ -257,10 +261,10 @@ var VideoScreen = function VideoScreen(_ref) {
257
261
  var hasCallToAction = callToAction !== null && callToAction.active === true;
258
262
  var hasVideo = video !== null;
259
263
 
260
- var _useState11 = React.useState(hasVideo),
261
- _useState12 = _slicedToArray__default["default"](_useState11, 2),
262
- ready = _useState12[0],
263
- setReady = _useState12[1]; // useState(!hasVideo);
264
+ var _useState13 = React.useState(hasVideo),
265
+ _useState14 = _slicedToArray__default["default"](_useState13, 2),
266
+ ready = _useState14[0],
267
+ setReady = _useState14[1]; // useState(!hasVideo);
264
268
 
265
269
 
266
270
  var transitionPlaying = current && ready;
@@ -306,11 +310,30 @@ var VideoScreen = function VideoScreen(_ref) {
306
310
  var onVideoReady = React.useCallback(function () {
307
311
  setReady(true);
308
312
  }, [setReady]);
313
+ /**
314
+ * if video can play, but:
315
+ * - it's the current screen
316
+ * - the video doesn't provide visual controls
317
+ * - the video is set to play automatically
318
+ * - and it's **not** playing
319
+ * -> then set up a button that catches a click and plays the video
320
+ */
321
+
322
+ var onCanPlay = React.useCallback(function () {
323
+ if (current && !withControls && autoPlay && !playing) {
324
+ setAllowManualPlayOnTap(true);
325
+ }
326
+ }, [current, withControls, autoPlay, playing, play, allowManualPlayOnTap, setAllowManualPlayOnTap]);
327
+ var onForcePlay = React.useCallback(function (e) {
328
+ e.stopPropagation();
329
+ setAllowManualPlayOnTap(false);
330
+ play();
331
+ }, [setAllowManualPlayOnTap, play]);
309
332
  var visibleControls = !autoPlay && !playing || muted || showMediaControls;
310
- var items = [autoPlay && suspended && !playing && !withControls ? /*#__PURE__*/React__default["default"].createElement("button", {
333
+ var items = [allowManualPlayOnTap ? /*#__PURE__*/React__default["default"].createElement("button", {
311
334
  key: "tap-catcher-button",
312
335
  type: "button",
313
- onTouchStart: play,
336
+ onClick: onForcePlay,
314
337
  className: styles.unmuteAndPlayButton
315
338
  }) : null, /*#__PURE__*/React__default["default"].createElement(components.ScreenElement, {
316
339
  key: "video",
@@ -355,6 +378,7 @@ var VideoScreen = function VideoScreen(_ref) {
355
378
  className: styles.video,
356
379
  onReady: onVideoReady,
357
380
  onPlay: onPlay,
381
+ onCanPlay: onCanPlay,
358
382
  onPause: onPause,
359
383
  onTimeUpdate: onTimeUpdate,
360
384
  onProgressStep: onProgressStep,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@micromag/screen-video",
3
- "version": "0.3.143",
3
+ "version": "0.3.146",
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.143",
54
- "@micromag/element-background": "^0.3.143",
55
- "@micromag/element-call-to-action": "^0.3.143",
56
- "@micromag/element-closed-captions": "^0.3.143",
57
- "@micromag/element-container": "^0.3.143",
58
- "@micromag/element-image": "^0.3.143",
59
- "@micromag/element-media-controls": "^0.3.143",
60
- "@micromag/element-video": "^0.3.143",
61
- "@micromag/transforms": "^0.3.143",
53
+ "@micromag/core": "^0.3.144",
54
+ "@micromag/element-background": "^0.3.144",
55
+ "@micromag/element-call-to-action": "^0.3.144",
56
+ "@micromag/element-closed-captions": "^0.3.144",
57
+ "@micromag/element-container": "^0.3.144",
58
+ "@micromag/element-image": "^0.3.144",
59
+ "@micromag/element-media-controls": "^0.3.144",
60
+ "@micromag/element-video": "^0.3.144",
61
+ "@micromag/transforms": "^0.3.144",
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": "7a57394e3bda6a87466f32f6eb45df34486a98ad"
71
+ "gitHead": "161a49be3e6b699576c4e95d5f0b6c7eb276582a"
72
72
  }