@micromag/viewer 0.3.114 → 0.3.117

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
@@ -16,9 +16,9 @@ import classNames from 'classnames';
16
16
  import { Helmet } from 'react-helmet';
17
17
  import { useIntl, FormattedMessage } from 'react-intl';
18
18
  import EventEmitter from 'wolfy87-eventemitter';
19
- import { Button, ScreenPreview, Screen, Meta, FontFaces } from '@micromag/core/components';
19
+ import { Button, Close, ScreenPreview, Screen, Meta, FontFaces } from '@micromag/core/components';
20
20
  import { useDocumentEvent, useResizeObserver, useTrackEvent, useParsedStory, useLoadedFonts, useTrackScreenView, useScreenSizeFromElement, useFullscreen } from '@micromag/core/hooks';
21
- import { getStyleFromColor, getStyleFromText, getDeviceScreens } from '@micromag/core/utils';
21
+ import { copyToClipboard, getStyleFromColor, getStyleFromText, getDeviceScreens } from '@micromag/core/utils';
22
22
  import { useSpring, config } from '@react-spring/core';
23
23
  import { animated } from '@react-spring/web';
24
24
  import { useDrag } from '@use-gesture/react';
@@ -28,7 +28,7 @@ import { faCompress } from '@fortawesome/free-solid-svg-icons/faCompress';
28
28
  import { faExpand } from '@fortawesome/free-solid-svg-icons/faExpand';
29
29
  import { faShare } from '@fortawesome/free-solid-svg-icons/faShare';
30
30
  import Scroll from '@micromag/element-scroll';
31
- import { FacebookShareButton, FacebookIcon, TwitterShareButton, TwitterIcon, EmailShareButton, EmailIcon } from 'react-share';
31
+ import { EmailShareButton, EmailIcon, FacebookShareButton, FacebookIcon, TwitterShareButton, TwitterIcon, LinkedinShareButton, LinkedinIcon } from 'react-share';
32
32
 
33
33
  var home = "/";
34
34
  var screen = "/:screen";
@@ -228,7 +228,7 @@ var styles$7 = {"container":"micromag-viewer-menus-menu-dots-container","closeBu
228
228
 
229
229
  var styles$6 = {"container":"micromag-viewer-menus-menu-dot-container","button":"micromag-viewer-menus-menu-dot-button","dot":"micromag-viewer-menus-menu-dot-dot","subDot":"micromag-viewer-menus-menu-dot-subDot","dots":"micromag-viewer-menus-menu-dot-dots","vertical":"micromag-viewer-menus-menu-dot-vertical"};
230
230
 
231
- var propTypes$c = {
231
+ var propTypes$e = {
232
232
  current: PropTypes.bool,
233
233
  active: PropTypes.bool,
234
234
  colors: PropTypes.shape({
@@ -241,7 +241,7 @@ var propTypes$c = {
241
241
  onClick: PropTypes.func,
242
242
  className: PropTypes.string
243
243
  };
244
- var defaultProps$c = {
244
+ var defaultProps$e = {
245
245
  current: false,
246
246
  active: false,
247
247
  colors: null,
@@ -330,18 +330,18 @@ var ViewerMenuDot = function ViewerMenuDot(_ref) {
330
330
  }, inner));
331
331
  };
332
332
 
333
- ViewerMenuDot.propTypes = propTypes$c;
334
- ViewerMenuDot.defaultProps = defaultProps$c;
333
+ ViewerMenuDot.propTypes = propTypes$e;
334
+ ViewerMenuDot.defaultProps = defaultProps$e;
335
335
 
336
336
  var styles$5 = {};
337
337
 
338
- var propTypes$b = {
338
+ var propTypes$d = {
339
339
  size: PropTypes.number,
340
340
  spacing: PropTypes.number,
341
341
  color: PropTypes.string,
342
342
  className: PropTypes.string
343
343
  };
344
- var defaultProps$b = {
344
+ var defaultProps$d = {
345
345
  size: 100,
346
346
  spacing: 8,
347
347
  color: 'white',
@@ -373,10 +373,10 @@ var MenuIcon = function MenuIcon(_ref) {
373
373
  }));
374
374
  };
375
375
 
376
- MenuIcon.propTypes = propTypes$b;
377
- MenuIcon.defaultProps = defaultProps$b;
376
+ MenuIcon.propTypes = propTypes$d;
377
+ MenuIcon.defaultProps = defaultProps$d;
378
378
 
379
- var propTypes$a = {
379
+ var propTypes$c = {
380
380
  direction: PropTypes.oneOf(['horizontal', 'vertical']),
381
381
  withShadow: PropTypes.bool,
382
382
  items: PropTypes$1.menuItems,
@@ -392,7 +392,7 @@ var propTypes$a = {
392
392
  onClose: PropTypes.func,
393
393
  className: PropTypes.string
394
394
  };
395
- var defaultProps$a = {
395
+ var defaultProps$c = {
396
396
  direction: 'horizontal',
397
397
  withShadow: false,
398
398
  items: [],
@@ -533,12 +533,66 @@ var ViewerMenuDots = function ViewerMenuDots(_ref) {
533
533
  }))) : null));
534
534
  };
535
535
 
536
- ViewerMenuDots.propTypes = propTypes$a;
537
- ViewerMenuDots.defaultProps = defaultProps$a;
536
+ ViewerMenuDots.propTypes = propTypes$c;
537
+ ViewerMenuDots.defaultProps = defaultProps$c;
538
+
539
+ var styles$4 = {"container":"micromag-viewer-menus-menu-preview-container","screenButton":"micromag-viewer-menus-menu-preview-screenButton","activeScreenBorder":"micromag-viewer-menus-menu-preview-activeScreenBorder","scroll":"micromag-viewer-menus-menu-preview-scroll","header":"micromag-viewer-menus-menu-preview-header","button":"micromag-viewer-menus-menu-preview-button","shareButton":"micromag-viewer-menus-menu-preview-shareButton","disabled":"micromag-viewer-menus-menu-preview-disabled","icon":"micromag-viewer-menus-menu-preview-icon","buttons":"micromag-viewer-menus-menu-preview-buttons","organisation":"micromag-viewer-menus-menu-preview-organisation","title":"micromag-viewer-menus-menu-preview-title","content":"micromag-viewer-menus-menu-preview-content","nav":"micromag-viewer-menus-menu-preview-nav","item":"micromag-viewer-menus-menu-preview-item","items":"micromag-viewer-menus-menu-preview-items","active":"micromag-viewer-menus-menu-preview-active","itemContent":"micromag-viewer-menus-menu-preview-itemContent","screenContainer":"micromag-viewer-menus-menu-preview-screenContainer","subScreenBadge":"micromag-viewer-menus-menu-preview-subScreenBadge","subScreenCount":"micromag-viewer-menus-menu-preview-subScreenCount","subScreenIcon":"micromag-viewer-menus-menu-preview-subScreenIcon","screenContent":"micromag-viewer-menus-menu-preview-screenContent"};
540
+
541
+ var propTypes$b = {
542
+ className: PropTypes.string
543
+ };
544
+ var defaultProps$b = {
545
+ className: null
546
+ };
547
+
548
+ var StackIcon = function StackIcon(_ref) {
549
+ var className = _ref.className;
550
+ return /*#__PURE__*/React.createElement("svg", {
551
+ xmlns: "http://www.w3.org/2000/svg",
552
+ width: "32",
553
+ height: "32",
554
+ viewBox: "0 0 32 32",
555
+ className: classNames([_defineProperty({}, className, className !== null)])
556
+ }, /*#__PURE__*/React.createElement("path", {
557
+ d: "M22.33.15H5A2.9,2.9,0,0,0,2.12,3V23.25H5V3H22.33Zm4.33,5.78H10.78A2.9,2.9,0,0,0,7.89,8.81V29a2.9,2.9,0,0,0,2.89,2.89H26.66A2.89,2.89,0,0,0,29.55,29V8.81A2.88,2.88,0,0,0,26.66,5.93Zm0,23.09Z"
558
+ }));
559
+ };
538
560
 
539
- var styles$4 = {"container":"micromag-viewer-menus-menu-preview-container","screenButton":"micromag-viewer-menus-menu-preview-screenButton","activeScreenBorder":"micromag-viewer-menus-menu-preview-activeScreenBorder","scroll":"micromag-viewer-menus-menu-preview-scroll","header":"micromag-viewer-menus-menu-preview-header","button":"micromag-viewer-menus-menu-preview-button","shareButton":"micromag-viewer-menus-menu-preview-shareButton","disabled":"micromag-viewer-menus-menu-preview-disabled","icon":"micromag-viewer-menus-menu-preview-icon","buttons":"micromag-viewer-menus-menu-preview-buttons","organisation":"micromag-viewer-menus-menu-preview-organisation","title":"micromag-viewer-menus-menu-preview-title","content":"micromag-viewer-menus-menu-preview-content","nav":"micromag-viewer-menus-menu-preview-nav","item":"micromag-viewer-menus-menu-preview-item","items":"micromag-viewer-menus-menu-preview-items","active":"micromag-viewer-menus-menu-preview-active","itemContent":"micromag-viewer-menus-menu-preview-itemContent","screenContainer":"micromag-viewer-menus-menu-preview-screenContainer","screenContent":"micromag-viewer-menus-menu-preview-screenContent"};
561
+ StackIcon.propTypes = propTypes$b;
562
+ StackIcon.defaultProps = defaultProps$b;
540
563
 
541
- var styles$3 = {"container":"micromag-viewer-partials-share-modal-container","content":"micromag-viewer-partials-share-modal-content","opened":"micromag-viewer-partials-share-modal-opened"};
564
+ var propTypes$a = {
565
+ className: PropTypes.string
566
+ };
567
+ var defaultProps$a = {
568
+ className: null
569
+ };
570
+
571
+ var LinkIcon = function LinkIcon(_ref) {
572
+ var className = _ref.className;
573
+ return /*#__PURE__*/React.createElement("svg", {
574
+ xmlns: "http://www.w3.org/2000/svg",
575
+ width: "32",
576
+ height: "32",
577
+ viewBox: "0 0 32 32",
578
+ className: classNames([_defineProperty({}, className, className !== null)])
579
+ }, /*#__PURE__*/React.createElement("path", {
580
+ d: "M18.6,15.34a5.72,5.72,0,0,0-.59-.73L17.36,14a4.93,4.93,0,0,0-7,0L4.55,19.81a4.94,4.94,0,0,0,0,7l.65.64a4.91,4.91,0,0,0,7,0L16.61,23",
581
+ fill: "none",
582
+ stroke: "currentColor",
583
+ strokeWidth: "3"
584
+ }), /*#__PURE__*/React.createElement("path", {
585
+ d: "M13.4,16.66a5.72,5.72,0,0,0,.59.73l.65.64a4.93,4.93,0,0,0,7,0l5.85-5.84a4.94,4.94,0,0,0,0-7l-.65-.64a4.91,4.91,0,0,0-7,0L15.39,9",
586
+ fill: "none",
587
+ stroke: "currentColor",
588
+ strokeWidth: "3"
589
+ }));
590
+ };
591
+
592
+ LinkIcon.propTypes = propTypes$a;
593
+ LinkIcon.defaultProps = defaultProps$a;
594
+
595
+ var styles$3 = {"close":"micromag-viewer-partials-share-modal-close","container":"micromag-viewer-partials-share-modal-container","opened":"micromag-viewer-partials-share-modal-opened","modal":"micromag-viewer-partials-share-modal-modal","header":"micromag-viewer-partials-share-modal-header","heading":"micromag-viewer-partials-share-modal-heading","closeIcon":"micromag-viewer-partials-share-modal-closeIcon","content":"micromag-viewer-partials-share-modal-content","buttons":"micromag-viewer-partials-share-modal-buttons","shareOption":"micromag-viewer-partials-share-modal-shareOption","shareLabel":"micromag-viewer-partials-share-modal-shareLabel","otherOptions":"micromag-viewer-partials-share-modal-otherOptions","copyLink":"micromag-viewer-partials-share-modal-copyLink","screenUrlInput":"micromag-viewer-partials-share-modal-screenUrlInput","copyUrlButton":"micromag-viewer-partials-share-modal-copyUrlButton","linkIcon":"micromag-viewer-partials-share-modal-linkIcon","successfulCopyMessage":"micromag-viewer-partials-share-modal-successfulCopyMessage","isLinkCopied":"micromag-viewer-partials-share-modal-isLinkCopied"};
542
596
 
543
597
  var propTypes$9 = {
544
598
  url: PropTypes.string,
@@ -558,7 +612,7 @@ var defaultProps$9 = {
558
612
  };
559
613
 
560
614
  var ShareModal = function ShareModal(_ref) {
561
- var _ref2;
615
+ var _ref3;
562
616
 
563
617
  var url = _ref.url,
564
618
  title = _ref.title,
@@ -566,7 +620,13 @@ var ShareModal = function ShareModal(_ref) {
566
620
  className = _ref.className,
567
621
  onShare = _ref.onShare,
568
622
  onCancel = _ref.onCancel;
569
- var containerRef = useRef(null);
623
+ var modalRef = useRef();
624
+
625
+ var _useState = useState(false),
626
+ _useState2 = _slicedToArray(_useState, 2),
627
+ linkCopied = _useState2[0],
628
+ setLinkCopied = _useState2[1];
629
+
570
630
  var onShareButtonClick = useCallback(function (type) {
571
631
  if (onShare !== null) {
572
632
  onShare(type);
@@ -584,58 +644,152 @@ var ShareModal = function ShareModal(_ref) {
584
644
  }, [url, onCancel]);
585
645
  var shareIconProps = useMemo(function () {
586
646
  return {
587
- size: 32,
647
+ size: 64,
588
648
  round: true
589
649
  };
590
650
  }, []);
651
+ var onClickCopy = useCallback(function () {
652
+ copyToClipboard(url).then(function () {
653
+ setLinkCopied(true);
654
+ setTimeout(function () {
655
+ setLinkCopied(false);
656
+ }, 2000);
657
+ });
658
+ }, [setLinkCopied]);
659
+ var onClickLinkInput = useCallback(function (e) {
660
+ var target = e.target;
661
+ target.setSelectionRange(0, target.value.length);
662
+ }, []);
591
663
  var onDocumentClick = useCallback(function (e) {
592
- var target = e.currentTarget;
664
+ var _ref2 = e || {},
665
+ target = _ref2.target;
593
666
 
594
- if (!containerRef.current || containerRef.current.contains(target)) {
667
+ if (!modalRef.current || modalRef.current.contains(target)) {
595
668
  return;
596
669
  }
597
670
 
598
- if (onCancel !== null) {
599
- onCancel();
600
- }
671
+ onCancel();
601
672
  }, [opened, onCancel]);
602
673
  useDocumentEvent('click', onDocumentClick, opened);
674
+ var shareOptions = [{
675
+ id: 'email',
676
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
677
+ id: "Lrwi2G",
678
+ defaultMessage: [{
679
+ "type": 0,
680
+ "value": "Email"
681
+ }]
682
+ }),
683
+ icon: /*#__PURE__*/React.createElement(EmailShareButton, Object.assign({}, shareButtonProps, {
684
+ subject: title,
685
+ beforeOnClick: function beforeOnClick() {
686
+ onShareButtonClick('Email');
687
+ return Promise.resolve();
688
+ },
689
+ tabIndex: opened ? null : '-1'
690
+ }), /*#__PURE__*/React.createElement(EmailIcon, shareIconProps))
691
+ }, {
692
+ id: 'facebook',
693
+ label: 'Facebook',
694
+ icon: /*#__PURE__*/React.createElement(FacebookShareButton, Object.assign({}, shareButtonProps, {
695
+ quote: title,
696
+ beforeOnClick: function beforeOnClick() {
697
+ onShareButtonClick('Facebook');
698
+ return Promise.resolve();
699
+ },
700
+ tabIndex: opened ? null : '-1'
701
+ }), /*#__PURE__*/React.createElement(FacebookIcon, shareIconProps))
702
+ }, {
703
+ id: 'twitter',
704
+ label: 'Twitter',
705
+ icon: /*#__PURE__*/React.createElement(TwitterShareButton, Object.assign({}, shareButtonProps, {
706
+ title: title,
707
+ beforeOnClick: function beforeOnClick() {
708
+ onShareButtonClick('Twitter');
709
+ return Promise.resolve();
710
+ },
711
+ tabIndex: opened ? null : '-1'
712
+ }), /*#__PURE__*/React.createElement(TwitterIcon, shareIconProps))
713
+ }, {
714
+ id: 'linkedin',
715
+ label: 'LinkedIn',
716
+ icon: /*#__PURE__*/React.createElement(LinkedinShareButton, Object.assign({}, shareButtonProps, {
717
+ title: title,
718
+ beforeOnClick: function beforeOnClick() {
719
+ onShareButtonClick('LinkedIns');
720
+ return Promise.resolve();
721
+ },
722
+ tabIndex: opened ? null : '-1'
723
+ }), /*#__PURE__*/React.createElement(LinkedinIcon, shareIconProps))
724
+ }];
603
725
  return /*#__PURE__*/React.createElement("div", {
604
- className: classNames([styles$3.container, (_ref2 = {}, _defineProperty(_ref2, className, className), _defineProperty(_ref2, styles$3.opened, opened), _ref2)]),
605
- ref: containerRef,
726
+ className: classNames([styles$3.container, (_ref3 = {}, _defineProperty(_ref3, className, className), _defineProperty(_ref3, styles$3.opened, opened), _ref3)]),
606
727
  "aria-hidden": opened ? null : '-1'
607
728
  }, /*#__PURE__*/React.createElement("div", {
729
+ className: styles$3.modal,
730
+ ref: modalRef
731
+ }, /*#__PURE__*/React.createElement("div", {
732
+ className: styles$3.header
733
+ }, /*#__PURE__*/React.createElement("h2", {
734
+ className: styles$3.heading
735
+ }, /*#__PURE__*/React.createElement(FormattedMessage, {
736
+ id: "oL4ueH",
737
+ defaultMessage: [{
738
+ "type": 0,
739
+ "value": "Share"
740
+ }]
741
+ })), /*#__PURE__*/React.createElement(Button, {
742
+ className: styles$3.close,
743
+ onClick: onCancel,
744
+ focusable: opened
745
+ }, /*#__PURE__*/React.createElement(Close, {
746
+ className: styles$3.closeIcon,
747
+ border: false
748
+ }))), /*#__PURE__*/React.createElement("div", {
608
749
  className: styles$3.content
609
750
  }, /*#__PURE__*/React.createElement("div", {
610
751
  className: styles$3.buttons
611
- }, /*#__PURE__*/React.createElement(FacebookShareButton, Object.assign({}, shareButtonProps, {
612
- quote: title,
613
- beforeOnClick: function beforeOnClick() {
614
- onShareButtonClick('Facebook');
615
- return Promise.resolve();
616
- },
617
- tabIndex: opened ? null : '-1'
618
- }), /*#__PURE__*/React.createElement(FacebookIcon, shareIconProps)), /*#__PURE__*/React.createElement(TwitterShareButton, Object.assign({}, shareButtonProps, {
619
- title: title,
620
- beforeOnClick: function beforeOnClick() {
621
- onShareButtonClick('Twitter');
622
- return Promise.resolve();
623
- },
624
- tabIndex: opened ? null : '-1'
625
- }), /*#__PURE__*/React.createElement(TwitterIcon, shareIconProps)), /*#__PURE__*/React.createElement(EmailShareButton, Object.assign({}, shareButtonProps, {
626
- subject: title,
627
- beforeOnClick: function beforeOnClick() {
628
- onShareButtonClick('Email');
629
- return Promise.resolve();
630
- },
631
- tabIndex: opened ? null : '-1'
632
- }), /*#__PURE__*/React.createElement(EmailIcon, shareIconProps)))));
752
+ }, shareOptions.map(function (_ref4) {
753
+ var id = _ref4.id,
754
+ label = _ref4.label,
755
+ icon = _ref4.icon;
756
+ return /*#__PURE__*/React.createElement("div", {
757
+ key: id,
758
+ className: styles$3.shareOption
759
+ }, icon, /*#__PURE__*/React.createElement("div", {
760
+ className: styles$3.shareLabel
761
+ }, label));
762
+ })), /*#__PURE__*/React.createElement("div", {
763
+ className: styles$3.otherOptions
764
+ }, /*#__PURE__*/React.createElement("div", {
765
+ className: classNames([styles$3.copyLink, _defineProperty({}, styles$3.isLinkCopied, linkCopied)])
766
+ }, /*#__PURE__*/React.createElement("input", {
767
+ className: styles$3.screenUrlInput,
768
+ type: "text",
769
+ value: url,
770
+ onClick: onClickLinkInput,
771
+ readOnly: true
772
+ }), /*#__PURE__*/React.createElement(Button, {
773
+ className: styles$3.copyUrlButton,
774
+ onClick: onClickCopy,
775
+ focusable: opened
776
+ }, /*#__PURE__*/React.createElement(LinkIcon, {
777
+ className: styles$3.linkIcon
778
+ })), /*#__PURE__*/React.createElement("div", {
779
+ className: styles$3.successfulCopyMessage
780
+ }, /*#__PURE__*/React.createElement(FormattedMessage, {
781
+ id: "XRmkEh",
782
+ defaultMessage: [{
783
+ "type": 0,
784
+ "value": "Link copied to clipboard!"
785
+ }]
786
+ })))))));
633
787
  };
634
788
 
635
789
  ShareModal.propTypes = propTypes$9;
636
790
  ShareModal.defaultProps = defaultProps$9;
637
791
 
638
- var styles$2 = {"container":"micromag-viewer-partials-share-button-container","shareModal":"micromag-viewer-partials-share-button-shareModal"};
792
+ var styles$2 = {"container":"micromag-viewer-partials-share-button-container"};
639
793
 
640
794
  var propTypes$8 = {
641
795
  title: PropTypes.string,
@@ -954,8 +1108,9 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
954
1108
  var screenId = item.screenId,
955
1109
  _item$current = item.current,
956
1110
  current = _item$current === void 0 ? false : _item$current,
957
- screen = item.screen;
958
- item.count;
1111
+ screen = item.screen,
1112
+ _item$count = item.count,
1113
+ count = _item$count === void 0 ? 1 : _item$count;
959
1114
  var screenAriaLabel = "".concat(intl.formatMessage({
960
1115
  id: "LkVfwW",
961
1116
  defaultMessage: [{
@@ -985,16 +1140,20 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
985
1140
  }, /*#__PURE__*/React.createElement("div", {
986
1141
  className: styles$4.screenContainer,
987
1142
  ref: index === 0 ? firstScreenContainerRef : null
988
- }, screenWidth > 0 && screenHeight > 0 ? /*#__PURE__*/React.createElement(ScreenPreview, {
1143
+ }, count > 1 ? /*#__PURE__*/React.createElement("div", {
1144
+ className: styles$4.subScreenBadge
1145
+ }, /*#__PURE__*/React.createElement("span", {
1146
+ className: styles$4.subScreenCount
1147
+ }, count), /*#__PURE__*/React.createElement(StackIcon, {
1148
+ className: styles$4.subScreenIcon
1149
+ })) : null, screenWidth > 0 && screenHeight > 0 ? /*#__PURE__*/React.createElement(ScreenPreview, {
989
1150
  screenWidth: screenWidth,
990
1151
  screenHeight: screenHeight,
991
1152
  width: thumbWidth,
992
1153
  screen: screen,
993
1154
  focusable: focusable,
994
1155
  active: focusable,
995
- withSize: true // withStack
996
- // stackCount={count}
997
-
1156
+ withSize: true
998
1157
  }) : null, current ? /*#__PURE__*/React.createElement("div", {
999
1158
  className: styles$4.activeScreenBorder,
1000
1159
  style: borderPrimaryColorStyle
@@ -1809,7 +1968,7 @@ var Viewer = function Viewer(_ref) {
1809
1968
  var _useMemo = useMemo(function () {
1810
1969
  return neighborScreensMounted !== null ? {
1811
1970
  startIndex: Math.max(screenIndex - (neighborScreensActive + neighborScreensMounted), 0),
1812
- endIndex: Math.min(screenIndex + (neighborScreensActive + neighborScreensMounted), screensCount - 1)
1971
+ endIndex: Math.min(screenIndex + (neighborScreensActive + neighborScreensMounted), screensCount)
1813
1972
  } : {
1814
1973
  startIndex: 0,
1815
1974
  endIndex: screensCount - 1