@micromag/viewer 0.3.206 → 0.3.211
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/assets/css/styles.css +1 -1
- package/es/index.js +85 -54
- package/lib/index.js +85 -54
- package/package.json +11 -10
package/es/index.js
CHANGED
|
@@ -14,6 +14,7 @@ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
|
14
14
|
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
15
15
|
import classNames from 'classnames';
|
|
16
16
|
import { Helmet } from 'react-helmet';
|
|
17
|
+
import { animated } from '@react-spring/web';
|
|
17
18
|
import EventEmitter from 'wolfy87-eventemitter';
|
|
18
19
|
import { Label, ScreenPreview, Screen, Button as Button$1, Meta, FontFaces } from '@micromag/core/components';
|
|
19
20
|
import { useDimensionObserver, useTrackEvent, useDragProgress, useMediaProgress, useParsedStory, useLoadedFonts, useTrackScreenView, useScreenSizeFromElement, useFullscreen } from '@micromag/core/hooks';
|
|
@@ -22,7 +23,6 @@ import { useIntl, FormattedMessage } from 'react-intl';
|
|
|
22
23
|
import { faTimes } from '@fortawesome/free-solid-svg-icons/faTimes';
|
|
23
24
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
24
25
|
import { useSpring } from '@react-spring/core';
|
|
25
|
-
import { animated } from '@react-spring/web';
|
|
26
26
|
import Scroll from '@micromag/element-scroll';
|
|
27
27
|
import ShareOptions from '@micromag/element-share-options';
|
|
28
28
|
import { useGesture } from '@use-gesture/react';
|
|
@@ -511,14 +511,14 @@ var styles$e = {"container":"micromag-viewer-buttons-toggle-button-container","n
|
|
|
511
511
|
|
|
512
512
|
var propTypes$i = {
|
|
513
513
|
className: PropTypes.string,
|
|
514
|
-
|
|
514
|
+
progressSpring: PropTypes.number,
|
|
515
515
|
button: PropTypes.node,
|
|
516
516
|
toggledButton: PropTypes.node,
|
|
517
517
|
toggledButtonClassName: PropTypes.string
|
|
518
518
|
};
|
|
519
519
|
var defaultProps$i = {
|
|
520
520
|
className: null,
|
|
521
|
-
|
|
521
|
+
progressSpring: 0,
|
|
522
522
|
button: null,
|
|
523
523
|
toggledButton: null,
|
|
524
524
|
toggledButtonClassName: null
|
|
@@ -526,26 +526,27 @@ var defaultProps$i = {
|
|
|
526
526
|
|
|
527
527
|
var ToggleButton = function ToggleButton(_ref) {
|
|
528
528
|
var className = _ref.className,
|
|
529
|
-
|
|
529
|
+
progressSpring = _ref.progressSpring,
|
|
530
530
|
button = _ref.button,
|
|
531
531
|
toggledButton = _ref.toggledButton,
|
|
532
532
|
toggledButtonClassName = _ref.toggledButtonClassName;
|
|
533
533
|
if (button === null) return false;
|
|
534
|
-
|
|
535
|
-
var getToggleButtonStyles = function getToggleButtonStyles(t) {
|
|
536
|
-
return {
|
|
537
|
-
transform: "translateY(".concat(t * -100, "%)")
|
|
538
|
-
};
|
|
539
|
-
};
|
|
540
|
-
|
|
541
534
|
return /*#__PURE__*/React.createElement("div", {
|
|
542
535
|
className: classNames([styles$e.container, _defineProperty({}, className, className !== null)])
|
|
543
|
-
}, /*#__PURE__*/React.createElement(
|
|
536
|
+
}, /*#__PURE__*/React.createElement(animated.div, {
|
|
544
537
|
className: styles$e.normal,
|
|
545
|
-
style:
|
|
546
|
-
|
|
538
|
+
style: {
|
|
539
|
+
transform: progressSpring.to(function (p) {
|
|
540
|
+
return "translateY(".concat(p * -100, "%)");
|
|
541
|
+
})
|
|
542
|
+
}
|
|
543
|
+
}, button), /*#__PURE__*/React.createElement(animated.div, {
|
|
547
544
|
className: classNames([styles$e.toggled, _defineProperty({}, toggledButtonClassName, toggledButtonClassName !== null)]),
|
|
548
|
-
style:
|
|
545
|
+
style: {
|
|
546
|
+
transform: progressSpring.to(function (p) {
|
|
547
|
+
return "translateY(".concat((p - 1) * -100, "%)");
|
|
548
|
+
})
|
|
549
|
+
}
|
|
549
550
|
}, toggledButton));
|
|
550
551
|
};
|
|
551
552
|
|
|
@@ -556,20 +557,20 @@ var styles$d = {"backdrop":"micromag-viewer-menus-menu-container-backdrop","heig
|
|
|
556
557
|
|
|
557
558
|
var propTypes$h = {
|
|
558
559
|
className: PropTypes.string,
|
|
559
|
-
|
|
560
|
+
progressSpring: PropTypes.number,
|
|
560
561
|
theme: PropTypes$1.viewerTheme,
|
|
561
562
|
children: PropTypes.node
|
|
562
563
|
};
|
|
563
564
|
var defaultProps$h = {
|
|
564
565
|
className: null,
|
|
565
|
-
|
|
566
|
+
progressSpring: 0,
|
|
566
567
|
theme: null,
|
|
567
568
|
children: null
|
|
568
569
|
};
|
|
569
570
|
|
|
570
571
|
var ViewerMenuContainer = function ViewerMenuContainer(_ref) {
|
|
571
572
|
var className = _ref.className,
|
|
572
|
-
|
|
573
|
+
progressSpring = _ref.progressSpring,
|
|
573
574
|
viewerTheme = _ref.theme,
|
|
574
575
|
children = _ref.children;
|
|
575
576
|
|
|
@@ -587,17 +588,25 @@ var ViewerMenuContainer = function ViewerMenuContainer(_ref) {
|
|
|
587
588
|
style: {
|
|
588
589
|
pointerEvents: 'none'
|
|
589
590
|
}
|
|
590
|
-
}, /*#__PURE__*/React.createElement(
|
|
591
|
+
}, /*#__PURE__*/React.createElement(animated.div, {
|
|
591
592
|
className: styles$d.heightContainer,
|
|
592
593
|
style: _objectSpread({
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
594
|
+
opacity: progressSpring,
|
|
595
|
+
// transform: progressSpring.to((p) => `translateY(${(1 - p) * -100}%)`),
|
|
596
|
+
// height: progressSpring.to((p) => `${p * 100}%`),
|
|
597
|
+
pointerEvents: progressSpring.to(function (p) {
|
|
598
|
+
return p < 0.25 ? 'none' : 'auto';
|
|
599
|
+
}),
|
|
600
|
+
zIndex: progressSpring.to(function (p) {
|
|
601
|
+
return Math.round(2 + p);
|
|
602
|
+
})
|
|
596
603
|
}, backgroundColorStyle)
|
|
597
|
-
}, children), /*#__PURE__*/React.createElement(
|
|
604
|
+
}, children), /*#__PURE__*/React.createElement(animated.div, {
|
|
598
605
|
className: styles$d.backdrop,
|
|
599
606
|
style: {
|
|
600
|
-
opacity:
|
|
607
|
+
opacity: progressSpring.to(function (p) {
|
|
608
|
+
return easings.easeOutQuint(p);
|
|
609
|
+
})
|
|
601
610
|
}
|
|
602
611
|
}));
|
|
603
612
|
};
|
|
@@ -968,6 +977,7 @@ var propTypes$c = {
|
|
|
968
977
|
onClickScreen: PropTypes.func,
|
|
969
978
|
maxThumbsWidth: PropTypes.number,
|
|
970
979
|
paddingTop: PropTypes.number,
|
|
980
|
+
scrollDisabled: PropTypes.bool,
|
|
971
981
|
// @todo to reimplement:
|
|
972
982
|
// shouldLoad: PropTypes.bool,
|
|
973
983
|
// toggleFullscreen: PropTypes.func,
|
|
@@ -985,6 +995,7 @@ var defaultProps$c = {
|
|
|
985
995
|
onClickScreen: null,
|
|
986
996
|
maxThumbsWidth: 140,
|
|
987
997
|
paddingTop: null,
|
|
998
|
+
scrollDisabled: false,
|
|
988
999
|
// toggleFullscreen: null,
|
|
989
1000
|
// fullscreenActive: false,
|
|
990
1001
|
// fullscreenEnabled: false,
|
|
@@ -1000,6 +1011,7 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
|
|
|
1000
1011
|
onClickScreen = _ref.onClickScreen,
|
|
1001
1012
|
maxThumbsWidth = _ref.maxThumbsWidth,
|
|
1002
1013
|
paddingTop = _ref.paddingTop,
|
|
1014
|
+
scrollDisabled = _ref.scrollDisabled,
|
|
1003
1015
|
className = _ref.className;
|
|
1004
1016
|
|
|
1005
1017
|
var _useDimensionObserver = useDimensionObserver(),
|
|
@@ -1042,7 +1054,8 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
|
|
|
1042
1054
|
className: styles$9.content,
|
|
1043
1055
|
ref: containerRef
|
|
1044
1056
|
}, /*#__PURE__*/React.createElement(Scroll, {
|
|
1045
|
-
className: styles$9.scroll
|
|
1057
|
+
className: styles$9.scroll,
|
|
1058
|
+
disabled: scrollDisabled
|
|
1046
1059
|
}, /*#__PURE__*/React.createElement("nav", {
|
|
1047
1060
|
className: styles$9.nav,
|
|
1048
1061
|
style: {
|
|
@@ -1533,6 +1546,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
|
|
|
1533
1546
|
springParams: springParams
|
|
1534
1547
|
}),
|
|
1535
1548
|
bindShareDrag = _useDragProgress.bind,
|
|
1549
|
+
draggingShare = _useDragProgress.dragging,
|
|
1536
1550
|
shareOpenedProgress = _useDragProgress.progress;
|
|
1537
1551
|
|
|
1538
1552
|
var computeMenuProgress = useCallback(function (_ref9) {
|
|
@@ -1580,6 +1594,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
|
|
|
1580
1594
|
springParams: springParams
|
|
1581
1595
|
}),
|
|
1582
1596
|
bindMenuDrag = _useDragProgress2.bind,
|
|
1597
|
+
draggingMenu = _useDragProgress2.dragging,
|
|
1583
1598
|
menuOpenedProgress = _useDragProgress2.progress;
|
|
1584
1599
|
|
|
1585
1600
|
var keyboardShortcuts = useMemo(function () {
|
|
@@ -1620,7 +1635,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
|
|
|
1620
1635
|
theme: menuTheme,
|
|
1621
1636
|
iconPosition: "left"
|
|
1622
1637
|
}),
|
|
1623
|
-
|
|
1638
|
+
progressSpring: shareOpenedProgress
|
|
1624
1639
|
})) : null, !withoutScreensMenu ? /*#__PURE__*/React.createElement("div", Object.assign({
|
|
1625
1640
|
className: classNames([styles$6.menuItem, styles$6.menuItemScreens])
|
|
1626
1641
|
}, bindMenuDrag()), /*#__PURE__*/React.createElement(ToggleButton, {
|
|
@@ -1636,7 +1651,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
|
|
|
1636
1651
|
theme: menuTheme,
|
|
1637
1652
|
iconPosition: "right"
|
|
1638
1653
|
}),
|
|
1639
|
-
|
|
1654
|
+
progressSpring: menuOpenedProgress,
|
|
1640
1655
|
toggledButtonClassName: styles$6.screensMenuButtonToggled
|
|
1641
1656
|
})) : null), /*#__PURE__*/React.createElement(ViewerMenuDots, Object.assign({}, menuTheme, {
|
|
1642
1657
|
direction: "horizontal",
|
|
@@ -1656,9 +1671,9 @@ var ViewerMenu = function ViewerMenu(_ref) {
|
|
|
1656
1671
|
}
|
|
1657
1672
|
}))), /*#__PURE__*/React.createElement(ViewerMenuContainer, {
|
|
1658
1673
|
className: styles$6.menuContainer,
|
|
1659
|
-
|
|
1674
|
+
progressSpring: shareOpenedProgress,
|
|
1660
1675
|
theme: viewerTheme
|
|
1661
|
-
},
|
|
1676
|
+
}, draggingShare || shareOpened ? /*#__PURE__*/React.createElement(ViewerMenuShare, {
|
|
1662
1677
|
viewerTheme: viewerTheme,
|
|
1663
1678
|
className: styles$6.menuShare,
|
|
1664
1679
|
title: title,
|
|
@@ -1673,9 +1688,9 @@ var ViewerMenu = function ViewerMenu(_ref) {
|
|
|
1673
1688
|
onClose: onCloseShare
|
|
1674
1689
|
}) : null), /*#__PURE__*/React.createElement(ViewerMenuContainer, {
|
|
1675
1690
|
className: styles$6.menuContainer,
|
|
1676
|
-
|
|
1691
|
+
progressSpring: menuOpenedProgress,
|
|
1677
1692
|
theme: viewerTheme
|
|
1678
|
-
},
|
|
1693
|
+
}, draggingMenu || menuOpened ? /*#__PURE__*/React.createElement(ViewerMenuPreview, {
|
|
1679
1694
|
viewerTheme: viewerTheme,
|
|
1680
1695
|
className: styles$6.menuPreview,
|
|
1681
1696
|
screenSize: screenSize,
|
|
@@ -1687,6 +1702,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
|
|
|
1687
1702
|
onShare: onShare,
|
|
1688
1703
|
onClickScreen: onClickScreen,
|
|
1689
1704
|
onClose: onCloseMenu,
|
|
1705
|
+
scrollDisabled: draggingMenu,
|
|
1690
1706
|
toggleFullscreen: toggleFullscreen,
|
|
1691
1707
|
fullscreenActive: fullscreenActive,
|
|
1692
1708
|
fullscreenEnabled: fullscreenEnabled
|
|
@@ -1695,6 +1711,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
|
|
|
1695
1711
|
|
|
1696
1712
|
ViewerMenu.propTypes = propTypes$9;
|
|
1697
1713
|
ViewerMenu.defaultProps = defaultProps$9;
|
|
1714
|
+
var ViewerMenu$1 = /*#__PURE__*/React.memo(ViewerMenu);
|
|
1698
1715
|
|
|
1699
1716
|
var styles$5 = {"container":"micromag-viewer-screen-container","navigationHint":"micromag-viewer-screen-navigationHint"};
|
|
1700
1717
|
|
|
@@ -2769,34 +2786,48 @@ var Viewer = function Viewer(_ref) {
|
|
|
2769
2786
|
springParams: springParams
|
|
2770
2787
|
}),
|
|
2771
2788
|
isDragging = _useDragProgress.dragging,
|
|
2772
|
-
|
|
2789
|
+
progressSpring = _useDragProgress.progress,
|
|
2773
2790
|
dragContentBind = _useDragProgress.bind;
|
|
2774
2791
|
|
|
2775
|
-
var getScreenStylesByIndex = function getScreenStylesByIndex(index,
|
|
2792
|
+
var getScreenStylesByIndex = function getScreenStylesByIndex(index, spring) {
|
|
2776
2793
|
if (transitionType === 'stack') {
|
|
2777
|
-
var _t = index - progress;
|
|
2778
|
-
|
|
2779
|
-
var _clamped = Math.min(1, Math.max(0, _t));
|
|
2780
|
-
|
|
2781
|
-
var invert = Math.min(1, Math.max(0, -_t));
|
|
2782
|
-
var opacity = Math.max(0, 1 - 0.75 * invert + (_t + 1)); // just hide other screens
|
|
2783
|
-
|
|
2784
|
-
if (Math.abs(_t) > neighborScreensActive) return {
|
|
2785
|
-
opacity: 0
|
|
2786
|
-
};
|
|
2787
2794
|
return {
|
|
2788
|
-
|
|
2789
|
-
|
|
2790
|
-
|
|
2791
|
-
|
|
2795
|
+
zIndex: index,
|
|
2796
|
+
opacity: spring.to(function (progress) {
|
|
2797
|
+
var t = index - progress;
|
|
2798
|
+
var invert = Math.min(1, Math.max(0, -t));
|
|
2799
|
+
if (Math.abs(t) > neighborScreensActive) return 0;
|
|
2800
|
+
return Math.max(0, 1 - 0.75 * invert + (t + 1));
|
|
2801
|
+
}),
|
|
2802
|
+
transform: spring.to(function (progress) {
|
|
2803
|
+
var t = index - progress;
|
|
2804
|
+
var clamped = Math.min(1, Math.max(0, t));
|
|
2805
|
+
var invert = Math.min(1, Math.max(0, -t));
|
|
2806
|
+
if (Math.abs(t) > neighborScreensActive) return 'translateX(100%)';
|
|
2807
|
+
return "translateX(".concat(clamped * 100, "%) scale(").concat(1 - 0.2 * invert, ")");
|
|
2808
|
+
}),
|
|
2809
|
+
boxShadow: spring.to(function (progress) {
|
|
2810
|
+
var t = index - progress;
|
|
2811
|
+
if (Math.abs(t) > neighborScreensActive) return null;
|
|
2812
|
+
var clamped = Math.min(1, Math.max(0, t));
|
|
2813
|
+
return "0 0 ".concat(4 * (1 - clamped), "rem ").concat(-0.5 * (1 - clamped), "rem black");
|
|
2814
|
+
})
|
|
2792
2815
|
};
|
|
2793
2816
|
}
|
|
2794
2817
|
|
|
2795
|
-
var t = index - progress;
|
|
2796
|
-
var clamped = Math.min(1, Math.max(0, Math.abs(t)));
|
|
2797
2818
|
return {
|
|
2798
|
-
opacity:
|
|
2799
|
-
|
|
2819
|
+
opacity: spring.to(function (progress) {
|
|
2820
|
+
var t = index - progress;
|
|
2821
|
+
if (Math.abs(t) > neighborScreensActive) return 0;
|
|
2822
|
+
var clamped = Math.min(1, Math.max(0, Math.abs(t)));
|
|
2823
|
+
return 1 - 0.75 * clamped;
|
|
2824
|
+
}),
|
|
2825
|
+
transform: spring.to(function (progress) {
|
|
2826
|
+
var t = index - progress;
|
|
2827
|
+
if (Math.abs(t) > neighborScreensActive) return "translate(100%)";
|
|
2828
|
+
var clamped = Math.min(1, Math.max(0, Math.abs(t)));
|
|
2829
|
+
return "translateX(".concat(t * neighborScreenOffset, "%) scale(").concat(1 - (1 - neighborScreenScale) * clamped, ")");
|
|
2830
|
+
}),
|
|
2800
2831
|
zIndex: screensCount - index
|
|
2801
2832
|
};
|
|
2802
2833
|
};
|
|
@@ -2882,7 +2913,7 @@ var Viewer = function Viewer(_ref) {
|
|
|
2882
2913
|
}), (_ref15 = {}, _defineProperty(_ref15, styles$6.landscape, landscape), _defineProperty(_ref15, styles$6.withoutGestures, withoutGestures), _defineProperty(_ref15, styles$6.hideMenu, !menuVisible), _defineProperty(_ref15, styles$6.fadeMenu, playing && playbackControls && !playbackcontrolsVisible), _defineProperty(_ref15, styles$6.ready, ready || withoutScreensTransforms), _defineProperty(_ref15, styles$6.hasInteracted, hasInteracted), _defineProperty(_ref15, styles$6.isDragging, isDragging), _defineProperty(_ref15, className, className), _ref15)]),
|
|
2883
2914
|
ref: containerRef,
|
|
2884
2915
|
onContextMenu: onContextMenu
|
|
2885
|
-
}, !withoutMenu ? /*#__PURE__*/React.createElement(ViewerMenu, {
|
|
2916
|
+
}, !withoutMenu ? /*#__PURE__*/React.createElement(ViewerMenu$1, {
|
|
2886
2917
|
story: parsedStory,
|
|
2887
2918
|
currentScreenIndex: screenIndex,
|
|
2888
2919
|
withShadow: menuOverScreen && !withoutMenuShadow,
|
|
@@ -2917,8 +2948,8 @@ var Viewer = function Viewer(_ref) {
|
|
|
2917
2948
|
}, screens.map(function (screen, i) {
|
|
2918
2949
|
var current = screenIndex === i;
|
|
2919
2950
|
var active = i >= screenIndex - neighborScreensActive && i <= screenIndex + neighborScreensActive;
|
|
2920
|
-
var screenStyles = getScreenStylesByIndex(i,
|
|
2921
|
-
return /*#__PURE__*/React.createElement(
|
|
2951
|
+
var screenStyles = getScreenStylesByIndex(i, progressSpring);
|
|
2952
|
+
return /*#__PURE__*/React.createElement(animated.div, {
|
|
2922
2953
|
key: "screen-viewer-".concat(screen.id || '', "-").concat(i + 1),
|
|
2923
2954
|
style: screenStyles,
|
|
2924
2955
|
className: classNames([styles$6.screenContainer, _defineProperty({}, styles$6.current, current)])
|
package/lib/index.js
CHANGED
|
@@ -18,6 +18,7 @@ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
|
18
18
|
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
|
19
19
|
var classNames = require('classnames');
|
|
20
20
|
var reactHelmet = require('react-helmet');
|
|
21
|
+
var web = require('@react-spring/web');
|
|
21
22
|
var EventEmitter = require('wolfy87-eventemitter');
|
|
22
23
|
var components = require('@micromag/core/components');
|
|
23
24
|
var hooks = require('@micromag/core/hooks');
|
|
@@ -26,7 +27,6 @@ var reactIntl = require('react-intl');
|
|
|
26
27
|
var faTimes = require('@fortawesome/free-solid-svg-icons/faTimes');
|
|
27
28
|
var reactFontawesome = require('@fortawesome/react-fontawesome');
|
|
28
29
|
var core$1 = require('@react-spring/core');
|
|
29
|
-
var web = require('@react-spring/web');
|
|
30
30
|
var Scroll = require('@micromag/element-scroll');
|
|
31
31
|
var ShareOptions = require('@micromag/element-share-options');
|
|
32
32
|
var react = require('@use-gesture/react');
|
|
@@ -531,14 +531,14 @@ var styles$e = {"container":"micromag-viewer-buttons-toggle-button-container","n
|
|
|
531
531
|
|
|
532
532
|
var propTypes$i = {
|
|
533
533
|
className: PropTypes__default["default"].string,
|
|
534
|
-
|
|
534
|
+
progressSpring: PropTypes__default["default"].number,
|
|
535
535
|
button: PropTypes__default["default"].node,
|
|
536
536
|
toggledButton: PropTypes__default["default"].node,
|
|
537
537
|
toggledButtonClassName: PropTypes__default["default"].string
|
|
538
538
|
};
|
|
539
539
|
var defaultProps$i = {
|
|
540
540
|
className: null,
|
|
541
|
-
|
|
541
|
+
progressSpring: 0,
|
|
542
542
|
button: null,
|
|
543
543
|
toggledButton: null,
|
|
544
544
|
toggledButtonClassName: null
|
|
@@ -546,26 +546,27 @@ var defaultProps$i = {
|
|
|
546
546
|
|
|
547
547
|
var ToggleButton = function ToggleButton(_ref) {
|
|
548
548
|
var className = _ref.className,
|
|
549
|
-
|
|
549
|
+
progressSpring = _ref.progressSpring,
|
|
550
550
|
button = _ref.button,
|
|
551
551
|
toggledButton = _ref.toggledButton,
|
|
552
552
|
toggledButtonClassName = _ref.toggledButtonClassName;
|
|
553
553
|
if (button === null) return false;
|
|
554
|
-
|
|
555
|
-
var getToggleButtonStyles = function getToggleButtonStyles(t) {
|
|
556
|
-
return {
|
|
557
|
-
transform: "translateY(".concat(t * -100, "%)")
|
|
558
|
-
};
|
|
559
|
-
};
|
|
560
|
-
|
|
561
554
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
562
555
|
className: classNames__default["default"]([styles$e.container, _defineProperty__default["default"]({}, className, className !== null)])
|
|
563
|
-
}, /*#__PURE__*/React__default["default"].createElement(
|
|
556
|
+
}, /*#__PURE__*/React__default["default"].createElement(web.animated.div, {
|
|
564
557
|
className: styles$e.normal,
|
|
565
|
-
style:
|
|
566
|
-
|
|
558
|
+
style: {
|
|
559
|
+
transform: progressSpring.to(function (p) {
|
|
560
|
+
return "translateY(".concat(p * -100, "%)");
|
|
561
|
+
})
|
|
562
|
+
}
|
|
563
|
+
}, button), /*#__PURE__*/React__default["default"].createElement(web.animated.div, {
|
|
567
564
|
className: classNames__default["default"]([styles$e.toggled, _defineProperty__default["default"]({}, toggledButtonClassName, toggledButtonClassName !== null)]),
|
|
568
|
-
style:
|
|
565
|
+
style: {
|
|
566
|
+
transform: progressSpring.to(function (p) {
|
|
567
|
+
return "translateY(".concat((p - 1) * -100, "%)");
|
|
568
|
+
})
|
|
569
|
+
}
|
|
569
570
|
}, toggledButton));
|
|
570
571
|
};
|
|
571
572
|
|
|
@@ -576,20 +577,20 @@ var styles$d = {"backdrop":"micromag-viewer-menus-menu-container-backdrop","heig
|
|
|
576
577
|
|
|
577
578
|
var propTypes$h = {
|
|
578
579
|
className: PropTypes__default["default"].string,
|
|
579
|
-
|
|
580
|
+
progressSpring: PropTypes__default["default"].number,
|
|
580
581
|
theme: core.PropTypes.viewerTheme,
|
|
581
582
|
children: PropTypes__default["default"].node
|
|
582
583
|
};
|
|
583
584
|
var defaultProps$h = {
|
|
584
585
|
className: null,
|
|
585
|
-
|
|
586
|
+
progressSpring: 0,
|
|
586
587
|
theme: null,
|
|
587
588
|
children: null
|
|
588
589
|
};
|
|
589
590
|
|
|
590
591
|
var ViewerMenuContainer = function ViewerMenuContainer(_ref) {
|
|
591
592
|
var className = _ref.className,
|
|
592
|
-
|
|
593
|
+
progressSpring = _ref.progressSpring,
|
|
593
594
|
viewerTheme = _ref.theme,
|
|
594
595
|
children = _ref.children;
|
|
595
596
|
|
|
@@ -607,17 +608,25 @@ var ViewerMenuContainer = function ViewerMenuContainer(_ref) {
|
|
|
607
608
|
style: {
|
|
608
609
|
pointerEvents: 'none'
|
|
609
610
|
}
|
|
610
|
-
}, /*#__PURE__*/React__default["default"].createElement(
|
|
611
|
+
}, /*#__PURE__*/React__default["default"].createElement(web.animated.div, {
|
|
611
612
|
className: styles$d.heightContainer,
|
|
612
613
|
style: _objectSpread__default["default"]({
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
614
|
+
opacity: progressSpring,
|
|
615
|
+
// transform: progressSpring.to((p) => `translateY(${(1 - p) * -100}%)`),
|
|
616
|
+
// height: progressSpring.to((p) => `${p * 100}%`),
|
|
617
|
+
pointerEvents: progressSpring.to(function (p) {
|
|
618
|
+
return p < 0.25 ? 'none' : 'auto';
|
|
619
|
+
}),
|
|
620
|
+
zIndex: progressSpring.to(function (p) {
|
|
621
|
+
return Math.round(2 + p);
|
|
622
|
+
})
|
|
616
623
|
}, backgroundColorStyle)
|
|
617
|
-
}, children), /*#__PURE__*/React__default["default"].createElement(
|
|
624
|
+
}, children), /*#__PURE__*/React__default["default"].createElement(web.animated.div, {
|
|
618
625
|
className: styles$d.backdrop,
|
|
619
626
|
style: {
|
|
620
|
-
opacity:
|
|
627
|
+
opacity: progressSpring.to(function (p) {
|
|
628
|
+
return utils.easings.easeOutQuint(p);
|
|
629
|
+
})
|
|
621
630
|
}
|
|
622
631
|
}));
|
|
623
632
|
};
|
|
@@ -988,6 +997,7 @@ var propTypes$c = {
|
|
|
988
997
|
onClickScreen: PropTypes__default["default"].func,
|
|
989
998
|
maxThumbsWidth: PropTypes__default["default"].number,
|
|
990
999
|
paddingTop: PropTypes__default["default"].number,
|
|
1000
|
+
scrollDisabled: PropTypes__default["default"].bool,
|
|
991
1001
|
// @todo to reimplement:
|
|
992
1002
|
// shouldLoad: PropTypes.bool,
|
|
993
1003
|
// toggleFullscreen: PropTypes.func,
|
|
@@ -1005,6 +1015,7 @@ var defaultProps$c = {
|
|
|
1005
1015
|
onClickScreen: null,
|
|
1006
1016
|
maxThumbsWidth: 140,
|
|
1007
1017
|
paddingTop: null,
|
|
1018
|
+
scrollDisabled: false,
|
|
1008
1019
|
// toggleFullscreen: null,
|
|
1009
1020
|
// fullscreenActive: false,
|
|
1010
1021
|
// fullscreenEnabled: false,
|
|
@@ -1020,6 +1031,7 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
|
|
|
1020
1031
|
onClickScreen = _ref.onClickScreen,
|
|
1021
1032
|
maxThumbsWidth = _ref.maxThumbsWidth,
|
|
1022
1033
|
paddingTop = _ref.paddingTop,
|
|
1034
|
+
scrollDisabled = _ref.scrollDisabled,
|
|
1023
1035
|
className = _ref.className;
|
|
1024
1036
|
|
|
1025
1037
|
var _useDimensionObserver = hooks.useDimensionObserver(),
|
|
@@ -1062,7 +1074,8 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
|
|
|
1062
1074
|
className: styles$9.content,
|
|
1063
1075
|
ref: containerRef
|
|
1064
1076
|
}, /*#__PURE__*/React__default["default"].createElement(Scroll__default["default"], {
|
|
1065
|
-
className: styles$9.scroll
|
|
1077
|
+
className: styles$9.scroll,
|
|
1078
|
+
disabled: scrollDisabled
|
|
1066
1079
|
}, /*#__PURE__*/React__default["default"].createElement("nav", {
|
|
1067
1080
|
className: styles$9.nav,
|
|
1068
1081
|
style: {
|
|
@@ -1553,6 +1566,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
|
|
|
1553
1566
|
springParams: springParams
|
|
1554
1567
|
}),
|
|
1555
1568
|
bindShareDrag = _useDragProgress.bind,
|
|
1569
|
+
draggingShare = _useDragProgress.dragging,
|
|
1556
1570
|
shareOpenedProgress = _useDragProgress.progress;
|
|
1557
1571
|
|
|
1558
1572
|
var computeMenuProgress = React.useCallback(function (_ref9) {
|
|
@@ -1600,6 +1614,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
|
|
|
1600
1614
|
springParams: springParams
|
|
1601
1615
|
}),
|
|
1602
1616
|
bindMenuDrag = _useDragProgress2.bind,
|
|
1617
|
+
draggingMenu = _useDragProgress2.dragging,
|
|
1603
1618
|
menuOpenedProgress = _useDragProgress2.progress;
|
|
1604
1619
|
|
|
1605
1620
|
var keyboardShortcuts = React.useMemo(function () {
|
|
@@ -1640,7 +1655,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
|
|
|
1640
1655
|
theme: menuTheme,
|
|
1641
1656
|
iconPosition: "left"
|
|
1642
1657
|
}),
|
|
1643
|
-
|
|
1658
|
+
progressSpring: shareOpenedProgress
|
|
1644
1659
|
})) : null, !withoutScreensMenu ? /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
|
|
1645
1660
|
className: classNames__default["default"]([styles$6.menuItem, styles$6.menuItemScreens])
|
|
1646
1661
|
}, bindMenuDrag()), /*#__PURE__*/React__default["default"].createElement(ToggleButton, {
|
|
@@ -1656,7 +1671,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
|
|
|
1656
1671
|
theme: menuTheme,
|
|
1657
1672
|
iconPosition: "right"
|
|
1658
1673
|
}),
|
|
1659
|
-
|
|
1674
|
+
progressSpring: menuOpenedProgress,
|
|
1660
1675
|
toggledButtonClassName: styles$6.screensMenuButtonToggled
|
|
1661
1676
|
})) : null), /*#__PURE__*/React__default["default"].createElement(ViewerMenuDots, Object.assign({}, menuTheme, {
|
|
1662
1677
|
direction: "horizontal",
|
|
@@ -1676,9 +1691,9 @@ var ViewerMenu = function ViewerMenu(_ref) {
|
|
|
1676
1691
|
}
|
|
1677
1692
|
}))), /*#__PURE__*/React__default["default"].createElement(ViewerMenuContainer, {
|
|
1678
1693
|
className: styles$6.menuContainer,
|
|
1679
|
-
|
|
1694
|
+
progressSpring: shareOpenedProgress,
|
|
1680
1695
|
theme: viewerTheme
|
|
1681
|
-
},
|
|
1696
|
+
}, draggingShare || shareOpened ? /*#__PURE__*/React__default["default"].createElement(ViewerMenuShare, {
|
|
1682
1697
|
viewerTheme: viewerTheme,
|
|
1683
1698
|
className: styles$6.menuShare,
|
|
1684
1699
|
title: title,
|
|
@@ -1693,9 +1708,9 @@ var ViewerMenu = function ViewerMenu(_ref) {
|
|
|
1693
1708
|
onClose: onCloseShare
|
|
1694
1709
|
}) : null), /*#__PURE__*/React__default["default"].createElement(ViewerMenuContainer, {
|
|
1695
1710
|
className: styles$6.menuContainer,
|
|
1696
|
-
|
|
1711
|
+
progressSpring: menuOpenedProgress,
|
|
1697
1712
|
theme: viewerTheme
|
|
1698
|
-
},
|
|
1713
|
+
}, draggingMenu || menuOpened ? /*#__PURE__*/React__default["default"].createElement(ViewerMenuPreview, {
|
|
1699
1714
|
viewerTheme: viewerTheme,
|
|
1700
1715
|
className: styles$6.menuPreview,
|
|
1701
1716
|
screenSize: screenSize,
|
|
@@ -1707,6 +1722,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
|
|
|
1707
1722
|
onShare: onShare,
|
|
1708
1723
|
onClickScreen: onClickScreen,
|
|
1709
1724
|
onClose: onCloseMenu,
|
|
1725
|
+
scrollDisabled: draggingMenu,
|
|
1710
1726
|
toggleFullscreen: toggleFullscreen,
|
|
1711
1727
|
fullscreenActive: fullscreenActive,
|
|
1712
1728
|
fullscreenEnabled: fullscreenEnabled
|
|
@@ -1715,6 +1731,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
|
|
|
1715
1731
|
|
|
1716
1732
|
ViewerMenu.propTypes = propTypes$9;
|
|
1717
1733
|
ViewerMenu.defaultProps = defaultProps$9;
|
|
1734
|
+
var ViewerMenu$1 = /*#__PURE__*/React__default["default"].memo(ViewerMenu);
|
|
1718
1735
|
|
|
1719
1736
|
var styles$5 = {"container":"micromag-viewer-screen-container","navigationHint":"micromag-viewer-screen-navigationHint"};
|
|
1720
1737
|
|
|
@@ -2789,34 +2806,48 @@ var Viewer = function Viewer(_ref) {
|
|
|
2789
2806
|
springParams: springParams
|
|
2790
2807
|
}),
|
|
2791
2808
|
isDragging = _useDragProgress.dragging,
|
|
2792
|
-
|
|
2809
|
+
progressSpring = _useDragProgress.progress,
|
|
2793
2810
|
dragContentBind = _useDragProgress.bind;
|
|
2794
2811
|
|
|
2795
|
-
var getScreenStylesByIndex = function getScreenStylesByIndex(index,
|
|
2812
|
+
var getScreenStylesByIndex = function getScreenStylesByIndex(index, spring) {
|
|
2796
2813
|
if (transitionType === 'stack') {
|
|
2797
|
-
var _t = index - progress;
|
|
2798
|
-
|
|
2799
|
-
var _clamped = Math.min(1, Math.max(0, _t));
|
|
2800
|
-
|
|
2801
|
-
var invert = Math.min(1, Math.max(0, -_t));
|
|
2802
|
-
var opacity = Math.max(0, 1 - 0.75 * invert + (_t + 1)); // just hide other screens
|
|
2803
|
-
|
|
2804
|
-
if (Math.abs(_t) > neighborScreensActive) return {
|
|
2805
|
-
opacity: 0
|
|
2806
|
-
};
|
|
2807
2814
|
return {
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
|
|
2811
|
-
|
|
2815
|
+
zIndex: index,
|
|
2816
|
+
opacity: spring.to(function (progress) {
|
|
2817
|
+
var t = index - progress;
|
|
2818
|
+
var invert = Math.min(1, Math.max(0, -t));
|
|
2819
|
+
if (Math.abs(t) > neighborScreensActive) return 0;
|
|
2820
|
+
return Math.max(0, 1 - 0.75 * invert + (t + 1));
|
|
2821
|
+
}),
|
|
2822
|
+
transform: spring.to(function (progress) {
|
|
2823
|
+
var t = index - progress;
|
|
2824
|
+
var clamped = Math.min(1, Math.max(0, t));
|
|
2825
|
+
var invert = Math.min(1, Math.max(0, -t));
|
|
2826
|
+
if (Math.abs(t) > neighborScreensActive) return 'translateX(100%)';
|
|
2827
|
+
return "translateX(".concat(clamped * 100, "%) scale(").concat(1 - 0.2 * invert, ")");
|
|
2828
|
+
}),
|
|
2829
|
+
boxShadow: spring.to(function (progress) {
|
|
2830
|
+
var t = index - progress;
|
|
2831
|
+
if (Math.abs(t) > neighborScreensActive) return null;
|
|
2832
|
+
var clamped = Math.min(1, Math.max(0, t));
|
|
2833
|
+
return "0 0 ".concat(4 * (1 - clamped), "rem ").concat(-0.5 * (1 - clamped), "rem black");
|
|
2834
|
+
})
|
|
2812
2835
|
};
|
|
2813
2836
|
}
|
|
2814
2837
|
|
|
2815
|
-
var t = index - progress;
|
|
2816
|
-
var clamped = Math.min(1, Math.max(0, Math.abs(t)));
|
|
2817
2838
|
return {
|
|
2818
|
-
opacity:
|
|
2819
|
-
|
|
2839
|
+
opacity: spring.to(function (progress) {
|
|
2840
|
+
var t = index - progress;
|
|
2841
|
+
if (Math.abs(t) > neighborScreensActive) return 0;
|
|
2842
|
+
var clamped = Math.min(1, Math.max(0, Math.abs(t)));
|
|
2843
|
+
return 1 - 0.75 * clamped;
|
|
2844
|
+
}),
|
|
2845
|
+
transform: spring.to(function (progress) {
|
|
2846
|
+
var t = index - progress;
|
|
2847
|
+
if (Math.abs(t) > neighborScreensActive) return "translate(100%)";
|
|
2848
|
+
var clamped = Math.min(1, Math.max(0, Math.abs(t)));
|
|
2849
|
+
return "translateX(".concat(t * neighborScreenOffset, "%) scale(").concat(1 - (1 - neighborScreenScale) * clamped, ")");
|
|
2850
|
+
}),
|
|
2820
2851
|
zIndex: screensCount - index
|
|
2821
2852
|
};
|
|
2822
2853
|
};
|
|
@@ -2902,7 +2933,7 @@ var Viewer = function Viewer(_ref) {
|
|
|
2902
2933
|
}), (_ref15 = {}, _defineProperty__default["default"](_ref15, styles$6.landscape, landscape), _defineProperty__default["default"](_ref15, styles$6.withoutGestures, withoutGestures), _defineProperty__default["default"](_ref15, styles$6.hideMenu, !menuVisible), _defineProperty__default["default"](_ref15, styles$6.fadeMenu, playing && playbackControls && !playbackcontrolsVisible), _defineProperty__default["default"](_ref15, styles$6.ready, ready || withoutScreensTransforms), _defineProperty__default["default"](_ref15, styles$6.hasInteracted, hasInteracted), _defineProperty__default["default"](_ref15, styles$6.isDragging, isDragging), _defineProperty__default["default"](_ref15, className, className), _ref15)]),
|
|
2903
2934
|
ref: containerRef,
|
|
2904
2935
|
onContextMenu: onContextMenu
|
|
2905
|
-
}, !withoutMenu ? /*#__PURE__*/React__default["default"].createElement(ViewerMenu, {
|
|
2936
|
+
}, !withoutMenu ? /*#__PURE__*/React__default["default"].createElement(ViewerMenu$1, {
|
|
2906
2937
|
story: parsedStory,
|
|
2907
2938
|
currentScreenIndex: screenIndex,
|
|
2908
2939
|
withShadow: menuOverScreen && !withoutMenuShadow,
|
|
@@ -2937,8 +2968,8 @@ var Viewer = function Viewer(_ref) {
|
|
|
2937
2968
|
}, screens.map(function (screen, i) {
|
|
2938
2969
|
var current = screenIndex === i;
|
|
2939
2970
|
var active = i >= screenIndex - neighborScreensActive && i <= screenIndex + neighborScreensActive;
|
|
2940
|
-
var screenStyles = getScreenStylesByIndex(i,
|
|
2941
|
-
return /*#__PURE__*/React__default["default"].createElement(
|
|
2971
|
+
var screenStyles = getScreenStylesByIndex(i, progressSpring);
|
|
2972
|
+
return /*#__PURE__*/React__default["default"].createElement(web.animated.div, {
|
|
2942
2973
|
key: "screen-viewer-".concat(screen.id || '', "-").concat(i + 1),
|
|
2943
2974
|
style: screenStyles,
|
|
2944
2975
|
className: classNames__default["default"]([styles$6.screenContainer, _defineProperty__default["default"]({}, styles$6.current, current)])
|