@micromag/viewer 0.3.461 → 0.3.463

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 +37 -19
  2. package/lib/index.js +36 -18
  3. package/package.json +11 -11
package/es/index.js CHANGED
@@ -17,7 +17,7 @@ import classNames from 'classnames';
17
17
  import { Helmet } from 'react-helmet';
18
18
  import EventEmitter from 'wolfy87-eventemitter';
19
19
  import { Label, CloseIcon, ScreenPreview, Screen, ArrowIcon, Button as Button$1, PlayIcon, Spinner, UnmuteIcon, MuteIcon, PauseIcon, Meta, FontFaces } from '@micromag/core/components';
20
- import { useDimensionObserver, useTrackEvent, useDragProgress, useMediaProgress, useMediaReady, useParsedStory, useLoadedFonts, useTrackScreenView, useScreenSizeFromElement, useFullscreen } from '@micromag/core/hooks';
20
+ import { useDimensionObserver, useTrackEvent, useDragProgress, useMediaProgress, useMediaReady, useMediaState, useParsedStory, useLoadedFonts, useTrackScreenView, useScreenSizeFromElement, useFullscreen } from '@micromag/core/hooks';
21
21
  import { getStyleFromColor, easings, getStyleFromText, getColorAsString, getDeviceScreens } from '@micromag/core/utils';
22
22
  import { ShareIncentive } from '@micromag/elements/all';
23
23
  import { useIntl, FormattedMessage } from 'react-intl';
@@ -966,6 +966,7 @@ var _excluded$3 = ["textAlign"];
966
966
  var propTypes$c = {
967
967
  viewerTheme: PropTypes$1.viewerTheme,
968
968
  header: PropTypes.node,
969
+ footer: PropTypes.node,
969
970
  screenSize: PropTypes$1.screenSize,
970
971
  title: PropTypes.string,
971
972
  menuWidth: PropTypes.number,
@@ -985,6 +986,7 @@ var propTypes$c = {
985
986
  var defaultProps$c = {
986
987
  viewerTheme: null,
987
988
  header: null,
989
+ footer: null,
988
990
  screenSize: null,
989
991
  title: null,
990
992
  menuWidth: null,
@@ -1003,6 +1005,7 @@ var defaultProps$c = {
1003
1005
  var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
1004
1006
  var viewerTheme = _ref.viewerTheme,
1005
1007
  header = _ref.header,
1008
+ footer = _ref.footer,
1006
1009
  screenSize = _ref.screenSize,
1007
1010
  title = _ref.title,
1008
1011
  menuWidth = _ref.menuWidth,
@@ -1129,7 +1132,7 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
1129
1132
  onClick: onClickScreen,
1130
1133
  focusable: focusable
1131
1134
  }) : null)));
1132
- }))))));
1135
+ }))), footer)));
1133
1136
  };
1134
1137
  ViewerMenuPreview.propTypes = propTypes$c;
1135
1138
  ViewerMenuPreview.defaultProps = defaultProps$c;
@@ -1332,6 +1335,7 @@ var propTypes$9 = {
1332
1335
  screenSize: PropTypes$1.screenSize,
1333
1336
  menuWidth: PropTypes.number,
1334
1337
  previewHeader: PropTypes.node,
1338
+ previewFooter: PropTypes.node,
1335
1339
  withDotItemClick: PropTypes.bool,
1336
1340
  withoutScreensMenu: PropTypes.bool,
1337
1341
  withoutShareMenu: PropTypes.bool,
@@ -1357,6 +1361,7 @@ var defaultProps$9 = {
1357
1361
  screenSize: null,
1358
1362
  menuWidth: null,
1359
1363
  previewHeader: null,
1364
+ previewFooter: null,
1360
1365
  withDotItemClick: false,
1361
1366
  withoutScreensMenu: false,
1362
1367
  withoutShareMenu: false,
@@ -1381,6 +1386,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
1381
1386
  screenSize = _ref.screenSize,
1382
1387
  menuWidth = _ref.menuWidth,
1383
1388
  previewHeader = _ref.previewHeader,
1389
+ previewFooter = _ref.previewFooter,
1384
1390
  withDotItemClick = _ref.withDotItemClick,
1385
1391
  withoutScreensMenu = _ref.withoutScreensMenu,
1386
1392
  withoutShareMenu = _ref.withoutShareMenu,
@@ -1713,6 +1719,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
1713
1719
  }, menuMounted ? /*#__PURE__*/React.createElement(ViewerMenuPreview, {
1714
1720
  viewerTheme: viewerTheme,
1715
1721
  header: previewHeader,
1722
+ footer: previewFooter,
1716
1723
  title: title,
1717
1724
  className: styles$6.menuPreview,
1718
1725
  screenSize: screenSize,
@@ -2126,9 +2133,9 @@ function PlaybackControls(_ref) {
2126
2133
  _usePlaybackContext$h = _usePlaybackContext.hasAudio,
2127
2134
  hasAudio = _usePlaybackContext$h === void 0 ? null : _usePlaybackContext$h,
2128
2135
  _usePlaybackContext$p = _usePlaybackContext.playing,
2129
- playing = _usePlaybackContext$p === void 0 ? false : _usePlaybackContext$p,
2136
+ wantedPlaying = _usePlaybackContext$p === void 0 ? false : _usePlaybackContext$p,
2130
2137
  _usePlaybackContext$m2 = _usePlaybackContext.muted,
2131
- muted = _usePlaybackContext$m2 === void 0 ? true : _usePlaybackContext$m2,
2138
+ wantedMuted = _usePlaybackContext$m2 === void 0 ? true : _usePlaybackContext$m2,
2132
2139
  setPlaying = _usePlaybackContext.setPlaying,
2133
2140
  setMuted = _usePlaybackContext.setMuted,
2134
2141
  controls = _usePlaybackContext.controls,
@@ -2146,19 +2153,26 @@ function PlaybackControls(_ref) {
2146
2153
  });
2147
2154
  var ready = mediaElement === null || mediaReady;
2148
2155
  var finalShowLoading = showLoading && !ready;
2156
+ var _useMediaState = useMediaState(mediaElement, {
2157
+ playing: wantedPlaying,
2158
+ muted: wantedMuted
2159
+ }),
2160
+ buffering = _useMediaState.buffering,
2161
+ playing = _useMediaState.playing,
2162
+ muted = _useMediaState.muted;
2149
2163
  useEffect(function () {
2150
2164
  var id = null;
2151
2165
  setShowLoading(false);
2152
- if (!ready && withLoading) {
2166
+ if ((!ready || buffering) && withLoading) {
2153
2167
  id = setTimeout(function () {
2154
2168
  setShowLoading(true);
2155
- }, 2000);
2169
+ }, 1000);
2156
2170
  }
2157
2171
  return function () {
2158
2172
  setShowLoading(false);
2159
2173
  clearTimeout(id);
2160
2174
  };
2161
- }, [ready, withLoading, setShowLoading]);
2175
+ }, [ready, buffering, withLoading, setShowLoading]);
2162
2176
  var _useState3 = useState({
2163
2177
  color: getColorAsString(defaultColor),
2164
2178
  progressColor: getColorAsString(defaultColor),
@@ -2444,6 +2458,11 @@ var propTypes$2 = {
2444
2458
  neighborScreenScale: PropTypes.number,
2445
2459
  topSafezoneHeight: PropTypes.number,
2446
2460
  bottomSafezoneHeight: PropTypes.number,
2461
+ menuDotsButtons: PropTypes.node,
2462
+ menuIsScreenWidth: PropTypes.bool,
2463
+ menuHeader: PropTypes.node,
2464
+ menuFooter: PropTypes.node,
2465
+ closeable: PropTypes.bool,
2447
2466
  withMetadata: PropTypes.bool,
2448
2467
  withoutGestures: PropTypes.bool,
2449
2468
  withoutMenu: PropTypes.bool,
@@ -2456,16 +2475,12 @@ var propTypes$2 = {
2456
2475
  withNeighborScreens: PropTypes.bool,
2457
2476
  withNavigationHint: PropTypes.bool,
2458
2477
  withoutPlaybackControls: PropTypes.bool,
2459
- menuDotsButtons: PropTypes.node,
2460
- closeable: PropTypes.bool,
2461
2478
  onClose: PropTypes.func,
2462
2479
  onInteraction: PropTypes.func,
2463
2480
  onEnd: PropTypes.func,
2464
2481
  onViewModeChange: PropTypes.func,
2465
2482
  onMenuChange: PropTypes.func,
2466
2483
  currentScreenMedia: PropTypes$1.ref,
2467
- menuIsScreenWidth: PropTypes.bool,
2468
- menuHeader: PropTypes.node,
2469
2484
  screensMedias: PropTypes$1.ref,
2470
2485
  screenSizeOptions: PropTypes.shape({
2471
2486
  withoutMaxSize: PropTypes.bool,
@@ -2492,6 +2507,11 @@ var defaultProps$2 = {
2492
2507
  neighborScreenScale: 0.8,
2493
2508
  topSafezoneHeight: null,
2494
2509
  bottomSafezoneHeight: null,
2510
+ menuIsScreenWidth: false,
2511
+ menuHeader: null,
2512
+ menuFooter: null,
2513
+ menuDotsButtons: null,
2514
+ closeable: false,
2495
2515
  withMetadata: false,
2496
2516
  withNeighborScreens: false,
2497
2517
  withNavigationHint: false,
@@ -2504,10 +2524,6 @@ var defaultProps$2 = {
2504
2524
  withoutTransitions: false,
2505
2525
  withoutNavigationArrow: false,
2506
2526
  withoutPlaybackControls: false,
2507
- menuIsScreenWidth: false,
2508
- menuHeader: null,
2509
- menuDotsButtons: null,
2510
- closeable: false,
2511
2527
  onClose: null,
2512
2528
  onInteraction: null,
2513
2529
  onEnd: null,
@@ -2535,6 +2551,11 @@ var Viewer = function Viewer(_ref) {
2535
2551
  neighborScreenScale = _ref.neighborScreenScale,
2536
2552
  topSafezoneHeight = _ref.topSafezoneHeight,
2537
2553
  bottomSafezoneHeight = _ref.bottomSafezoneHeight,
2554
+ menuIsScreenWidth = _ref.menuIsScreenWidth,
2555
+ menuHeader = _ref.menuHeader,
2556
+ menuDotsButtons = _ref.menuDotsButtons,
2557
+ menuFooter = _ref.menuFooter,
2558
+ closeable = _ref.closeable,
2538
2559
  withMetadata = _ref.withMetadata,
2539
2560
  withoutGestures = _ref.withoutGestures,
2540
2561
  withoutMenu = _ref.withoutMenu,
@@ -2547,10 +2568,6 @@ var Viewer = function Viewer(_ref) {
2547
2568
  withNeighborScreens = _ref.withNeighborScreens,
2548
2569
  withNavigationHint = _ref.withNavigationHint,
2549
2570
  withoutPlaybackControls = _ref.withoutPlaybackControls,
2550
- menuIsScreenWidth = _ref.menuIsScreenWidth,
2551
- menuHeader = _ref.menuHeader,
2552
- menuDotsButtons = _ref.menuDotsButtons,
2553
- closeable = _ref.closeable,
2554
2571
  onCloseViewer = _ref.onClose,
2555
2572
  onInteraction = _ref.onInteraction,
2556
2573
  onEnd = _ref.onEnd,
@@ -3036,6 +3053,7 @@ var Viewer = function Viewer(_ref) {
3036
3053
  menuWidth: menuIsScreenWidth ? screenContainerWidth : null,
3037
3054
  theme: viewerTheme,
3038
3055
  previewHeader: menuHeader,
3056
+ previewFooter: menuFooter,
3039
3057
  trackingEnabled: trackingEnabled,
3040
3058
  onClickScreen: onClickScreen,
3041
3059
  onClickCloseViewer: onCloseViewer,
package/lib/index.js CHANGED
@@ -970,6 +970,7 @@ var _excluded$3 = ["textAlign"];
970
970
  var propTypes$c = {
971
971
  viewerTheme: core.PropTypes.viewerTheme,
972
972
  header: PropTypes.node,
973
+ footer: PropTypes.node,
973
974
  screenSize: core.PropTypes.screenSize,
974
975
  title: PropTypes.string,
975
976
  menuWidth: PropTypes.number,
@@ -989,6 +990,7 @@ var propTypes$c = {
989
990
  var defaultProps$c = {
990
991
  viewerTheme: null,
991
992
  header: null,
993
+ footer: null,
992
994
  screenSize: null,
993
995
  title: null,
994
996
  menuWidth: null,
@@ -1007,6 +1009,7 @@ var defaultProps$c = {
1007
1009
  var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
1008
1010
  var viewerTheme = _ref.viewerTheme,
1009
1011
  header = _ref.header,
1012
+ footer = _ref.footer,
1010
1013
  screenSize = _ref.screenSize,
1011
1014
  title = _ref.title,
1012
1015
  menuWidth = _ref.menuWidth,
@@ -1133,7 +1136,7 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
1133
1136
  onClick: onClickScreen,
1134
1137
  focusable: focusable
1135
1138
  }) : null)));
1136
- }))))));
1139
+ }))), footer)));
1137
1140
  };
1138
1141
  ViewerMenuPreview.propTypes = propTypes$c;
1139
1142
  ViewerMenuPreview.defaultProps = defaultProps$c;
@@ -1336,6 +1339,7 @@ var propTypes$9 = {
1336
1339
  screenSize: core.PropTypes.screenSize,
1337
1340
  menuWidth: PropTypes.number,
1338
1341
  previewHeader: PropTypes.node,
1342
+ previewFooter: PropTypes.node,
1339
1343
  withDotItemClick: PropTypes.bool,
1340
1344
  withoutScreensMenu: PropTypes.bool,
1341
1345
  withoutShareMenu: PropTypes.bool,
@@ -1361,6 +1365,7 @@ var defaultProps$9 = {
1361
1365
  screenSize: null,
1362
1366
  menuWidth: null,
1363
1367
  previewHeader: null,
1368
+ previewFooter: null,
1364
1369
  withDotItemClick: false,
1365
1370
  withoutScreensMenu: false,
1366
1371
  withoutShareMenu: false,
@@ -1385,6 +1390,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
1385
1390
  screenSize = _ref.screenSize,
1386
1391
  menuWidth = _ref.menuWidth,
1387
1392
  previewHeader = _ref.previewHeader,
1393
+ previewFooter = _ref.previewFooter,
1388
1394
  withDotItemClick = _ref.withDotItemClick,
1389
1395
  withoutScreensMenu = _ref.withoutScreensMenu,
1390
1396
  withoutShareMenu = _ref.withoutShareMenu,
@@ -1717,6 +1723,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
1717
1723
  }, menuMounted ? /*#__PURE__*/React.createElement(ViewerMenuPreview, {
1718
1724
  viewerTheme: viewerTheme,
1719
1725
  header: previewHeader,
1726
+ footer: previewFooter,
1720
1727
  title: title,
1721
1728
  className: styles$6.menuPreview,
1722
1729
  screenSize: screenSize,
@@ -2130,9 +2137,9 @@ function PlaybackControls(_ref) {
2130
2137
  _usePlaybackContext$h = _usePlaybackContext.hasAudio,
2131
2138
  hasAudio = _usePlaybackContext$h === void 0 ? null : _usePlaybackContext$h,
2132
2139
  _usePlaybackContext$p = _usePlaybackContext.playing,
2133
- playing = _usePlaybackContext$p === void 0 ? false : _usePlaybackContext$p,
2140
+ wantedPlaying = _usePlaybackContext$p === void 0 ? false : _usePlaybackContext$p,
2134
2141
  _usePlaybackContext$m2 = _usePlaybackContext.muted,
2135
- muted = _usePlaybackContext$m2 === void 0 ? true : _usePlaybackContext$m2,
2142
+ wantedMuted = _usePlaybackContext$m2 === void 0 ? true : _usePlaybackContext$m2,
2136
2143
  setPlaying = _usePlaybackContext.setPlaying,
2137
2144
  setMuted = _usePlaybackContext.setMuted,
2138
2145
  controls = _usePlaybackContext.controls,
@@ -2150,19 +2157,26 @@ function PlaybackControls(_ref) {
2150
2157
  });
2151
2158
  var ready = mediaElement === null || mediaReady;
2152
2159
  var finalShowLoading = showLoading && !ready;
2160
+ var _useMediaState = hooks.useMediaState(mediaElement, {
2161
+ playing: wantedPlaying,
2162
+ muted: wantedMuted
2163
+ }),
2164
+ buffering = _useMediaState.buffering,
2165
+ playing = _useMediaState.playing,
2166
+ muted = _useMediaState.muted;
2153
2167
  React.useEffect(function () {
2154
2168
  var id = null;
2155
2169
  setShowLoading(false);
2156
- if (!ready && withLoading) {
2170
+ if ((!ready || buffering) && withLoading) {
2157
2171
  id = setTimeout(function () {
2158
2172
  setShowLoading(true);
2159
- }, 2000);
2173
+ }, 1000);
2160
2174
  }
2161
2175
  return function () {
2162
2176
  setShowLoading(false);
2163
2177
  clearTimeout(id);
2164
2178
  };
2165
- }, [ready, withLoading, setShowLoading]);
2179
+ }, [ready, buffering, withLoading, setShowLoading]);
2166
2180
  var _useState3 = React.useState({
2167
2181
  color: utils.getColorAsString(defaultColor),
2168
2182
  progressColor: utils.getColorAsString(defaultColor),
@@ -2448,6 +2462,11 @@ var propTypes$2 = {
2448
2462
  neighborScreenScale: PropTypes.number,
2449
2463
  topSafezoneHeight: PropTypes.number,
2450
2464
  bottomSafezoneHeight: PropTypes.number,
2465
+ menuDotsButtons: PropTypes.node,
2466
+ menuIsScreenWidth: PropTypes.bool,
2467
+ menuHeader: PropTypes.node,
2468
+ menuFooter: PropTypes.node,
2469
+ closeable: PropTypes.bool,
2451
2470
  withMetadata: PropTypes.bool,
2452
2471
  withoutGestures: PropTypes.bool,
2453
2472
  withoutMenu: PropTypes.bool,
@@ -2460,16 +2479,12 @@ var propTypes$2 = {
2460
2479
  withNeighborScreens: PropTypes.bool,
2461
2480
  withNavigationHint: PropTypes.bool,
2462
2481
  withoutPlaybackControls: PropTypes.bool,
2463
- menuDotsButtons: PropTypes.node,
2464
- closeable: PropTypes.bool,
2465
2482
  onClose: PropTypes.func,
2466
2483
  onInteraction: PropTypes.func,
2467
2484
  onEnd: PropTypes.func,
2468
2485
  onViewModeChange: PropTypes.func,
2469
2486
  onMenuChange: PropTypes.func,
2470
2487
  currentScreenMedia: core.PropTypes.ref,
2471
- menuIsScreenWidth: PropTypes.bool,
2472
- menuHeader: PropTypes.node,
2473
2488
  screensMedias: core.PropTypes.ref,
2474
2489
  screenSizeOptions: PropTypes.shape({
2475
2490
  withoutMaxSize: PropTypes.bool,
@@ -2496,6 +2511,11 @@ var defaultProps$2 = {
2496
2511
  neighborScreenScale: 0.8,
2497
2512
  topSafezoneHeight: null,
2498
2513
  bottomSafezoneHeight: null,
2514
+ menuIsScreenWidth: false,
2515
+ menuHeader: null,
2516
+ menuFooter: null,
2517
+ menuDotsButtons: null,
2518
+ closeable: false,
2499
2519
  withMetadata: false,
2500
2520
  withNeighborScreens: false,
2501
2521
  withNavigationHint: false,
@@ -2508,10 +2528,6 @@ var defaultProps$2 = {
2508
2528
  withoutTransitions: false,
2509
2529
  withoutNavigationArrow: false,
2510
2530
  withoutPlaybackControls: false,
2511
- menuIsScreenWidth: false,
2512
- menuHeader: null,
2513
- menuDotsButtons: null,
2514
- closeable: false,
2515
2531
  onClose: null,
2516
2532
  onInteraction: null,
2517
2533
  onEnd: null,
@@ -2539,6 +2555,11 @@ var Viewer = function Viewer(_ref) {
2539
2555
  neighborScreenScale = _ref.neighborScreenScale,
2540
2556
  topSafezoneHeight = _ref.topSafezoneHeight,
2541
2557
  bottomSafezoneHeight = _ref.bottomSafezoneHeight,
2558
+ menuIsScreenWidth = _ref.menuIsScreenWidth,
2559
+ menuHeader = _ref.menuHeader,
2560
+ menuDotsButtons = _ref.menuDotsButtons,
2561
+ menuFooter = _ref.menuFooter,
2562
+ closeable = _ref.closeable,
2542
2563
  withMetadata = _ref.withMetadata,
2543
2564
  withoutGestures = _ref.withoutGestures,
2544
2565
  withoutMenu = _ref.withoutMenu,
@@ -2551,10 +2572,6 @@ var Viewer = function Viewer(_ref) {
2551
2572
  withNeighborScreens = _ref.withNeighborScreens,
2552
2573
  withNavigationHint = _ref.withNavigationHint,
2553
2574
  withoutPlaybackControls = _ref.withoutPlaybackControls,
2554
- menuIsScreenWidth = _ref.menuIsScreenWidth,
2555
- menuHeader = _ref.menuHeader,
2556
- menuDotsButtons = _ref.menuDotsButtons,
2557
- closeable = _ref.closeable,
2558
2575
  onCloseViewer = _ref.onClose,
2559
2576
  onInteraction = _ref.onInteraction,
2560
2577
  onEnd = _ref.onEnd,
@@ -3040,6 +3057,7 @@ var Viewer = function Viewer(_ref) {
3040
3057
  menuWidth: menuIsScreenWidth ? screenContainerWidth : null,
3041
3058
  theme: viewerTheme,
3042
3059
  previewHeader: menuHeader,
3060
+ previewFooter: menuFooter,
3043
3061
  trackingEnabled: trackingEnabled,
3044
3062
  onClickScreen: onClickScreen,
3045
3063
  onClickCloseViewer: onCloseViewer,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@micromag/viewer",
3
- "version": "0.3.461",
3
+ "version": "0.3.463",
4
4
  "private": false,
5
5
  "description": "",
6
6
  "keywords": [
@@ -62,15 +62,15 @@
62
62
  },
63
63
  "dependencies": {
64
64
  "@babel/runtime": "^7.13.10",
65
- "@micromag/core": "^0.3.460",
66
- "@micromag/element-badge": "^0.3.460",
67
- "@micromag/element-scroll": "^0.3.460",
68
- "@micromag/element-share-options": "^0.3.460",
69
- "@micromag/element-webview": "^0.3.460",
70
- "@micromag/elements": "^0.3.460",
71
- "@micromag/fields": "^0.3.460",
72
- "@micromag/intl": "^0.3.460",
73
- "@micromag/screens": "^0.3.461",
65
+ "@micromag/core": "^0.3.463",
66
+ "@micromag/element-badge": "^0.3.463",
67
+ "@micromag/element-scroll": "^0.3.463",
68
+ "@micromag/element-share-options": "^0.3.463",
69
+ "@micromag/element-webview": "^0.3.463",
70
+ "@micromag/elements": "^0.3.463",
71
+ "@micromag/fields": "^0.3.463",
72
+ "@micromag/intl": "^0.3.463",
73
+ "@micromag/screens": "^0.3.463",
74
74
  "@react-spring/core": "^9.6.1",
75
75
  "@react-spring/web": "^9.6.1",
76
76
  "@use-gesture/react": "^10.3.0",
@@ -90,5 +90,5 @@
90
90
  "access": "public",
91
91
  "registry": "https://registry.npmjs.org/"
92
92
  },
93
- "gitHead": "4272b6ced198a1a689fcfcb9682a584d55d6780c"
93
+ "gitHead": "a2eb34209cb2dcbcd6a15d1325a02778543a8bca"
94
94
  }