@micromag/viewer 0.3.181 → 0.3.184

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
@@ -3,7 +3,7 @@ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProper
3
3
  import PropTypes from 'prop-types';
4
4
  import React, { useEffect, useState, useCallback, useMemo, useRef } from 'react';
5
5
  import { Switch, Route, MemoryRouter } from 'react-router';
6
- import { BrowserRouter } from 'react-router-dom';
6
+ import { Link, BrowserRouter } from 'react-router-dom';
7
7
  import { PropTypes as PropTypes$1 } from '@micromag/core';
8
8
  import { usePlaybackContext, useViewerWebView, useViewerInteraction, VisitorProvider, ScreenSizeProvider, ViewerProvider, useRoutes, useRoutePush, GoogleKeysProvider, GoogleMapsClientProvider, FieldsProvider, ComponentsProvider, SCREENS_NAMESPACE, UserInteractionProvider, PlaybackProvider, TrackingProvider, RoutesProvider } from '@micromag/core/contexts';
9
9
  import fieldsManager from '@micromag/fields/manager';
@@ -15,9 +15,9 @@ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
15
15
  import classNames from 'classnames';
16
16
  import { Helmet } from 'react-helmet';
17
17
  import EventEmitter from 'wolfy87-eventemitter';
18
- import { IconButton, ScreenPreview, SlidingButtons, CloseButton, Screen, Button, Meta, FontFaces } from '@micromag/core/components';
18
+ import { Label, ScreenPreview, Screen, Button as Button$1, Meta, FontFaces } from '@micromag/core/components';
19
19
  import { useDimensionObserver, useTrackEvent, useDragProgress, useMediaProgress, useParsedStory, useLoadedFonts, useTrackScreenView, useScreenSizeFromElement, useFullscreen } from '@micromag/core/hooks';
20
- import { getStyleFromColor, getColorAsString, getDeviceScreens } from '@micromag/core/utils';
20
+ import { getStyleFromColor, easings, getColorAsString, getDeviceScreens } from '@micromag/core/utils';
21
21
  import { useIntl, FormattedMessage } from 'react-intl';
22
22
  import { faTimes } from '@fortawesome/free-solid-svg-icons/faTimes';
23
23
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
@@ -214,22 +214,230 @@ function useScreenInteraction() {
214
214
  };
215
215
  }
216
216
 
217
- var _excluded$5 = ["className", "onClick", "theme"];
218
- var propTypes$k = {
217
+ var styles$g = {"container":"micromag-viewer-buttons-button-container","asLink":"micromag-viewer-buttons-button-asLink","icon":"micromag-viewer-buttons-button-icon","label":"micromag-viewer-buttons-button-label","withIcon":"micromag-viewer-buttons-button-withIcon","right":"micromag-viewer-buttons-button-right","icon-right":"micromag-viewer-buttons-button-icon-right","withIconColumns":"micromag-viewer-buttons-button-withIconColumns","linkDisabled":"micromag-viewer-buttons-button-linkDisabled"};
218
+
219
+ var _excluded$8 = ["type", "theme", "size", "href", "external", "direct", "target", "label", "children", "focusable", "active", "icon", "iconPosition", "disabled", "loading", "disableOnLoading", "withoutTheme", "asLink", "onClick", "className", "iconClassName", "labelClassName", "refButton"];
220
+ var propTypes$n = {
221
+ type: PropTypes.string,
222
+ theme: PropTypes$1.buttonTheme,
223
+ size: PropTypes$1.buttonSize,
224
+ href: PropTypes.string,
225
+ external: PropTypes.bool,
226
+ direct: PropTypes.bool,
227
+ target: PropTypes.string,
228
+ label: PropTypes$1.label,
229
+ children: PropTypes$1.label,
230
+ focusable: PropTypes.bool,
231
+ active: PropTypes.bool,
232
+ icon: PropTypes.node,
233
+ iconPosition: PropTypes.oneOf(['left', 'right', 'inline']),
234
+ disabled: PropTypes.bool,
235
+ loading: PropTypes.bool,
236
+ disableOnLoading: PropTypes.bool,
237
+ withoutTheme: PropTypes.bool,
238
+ asLink: PropTypes.bool,
219
239
  className: PropTypes.string,
240
+ iconClassName: PropTypes.string,
241
+ labelClassName: PropTypes.string,
220
242
  onClick: PropTypes.func,
221
- theme: PropTypes$1.viewerTheme
243
+ refButton: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
244
+ current: PropTypes.any // eslint-disable-line
245
+
246
+ })])
222
247
  };
223
- var defaultProps$k = {
248
+ var defaultProps$n = {
249
+ type: 'button',
250
+ theme: null,
251
+ size: null,
252
+ href: null,
253
+ external: false,
254
+ direct: false,
255
+ target: '_blank',
256
+ label: null,
257
+ children: null,
258
+ focusable: true,
259
+ active: false,
260
+ icon: null,
261
+ iconPosition: 'inline',
262
+ disabled: false,
263
+ loading: false,
264
+ disableOnLoading: true,
265
+ withoutTheme: false,
266
+ asLink: false,
224
267
  className: null,
268
+ iconClassName: null,
269
+ labelClassName: null,
225
270
  onClick: null,
226
- theme: null
271
+ refButton: null
272
+ };
273
+
274
+ var Button = function Button(_ref) {
275
+ var _ref2;
276
+
277
+ var type = _ref.type,
278
+ theme = _ref.theme;
279
+ _ref.size;
280
+ var href = _ref.href,
281
+ external = _ref.external,
282
+ direct = _ref.direct,
283
+ target = _ref.target,
284
+ label = _ref.label,
285
+ children = _ref.children,
286
+ focusable = _ref.focusable;
287
+ _ref.active;
288
+ var icon = _ref.icon,
289
+ iconPosition = _ref.iconPosition,
290
+ disabled = _ref.disabled,
291
+ loading = _ref.loading,
292
+ disableOnLoading = _ref.disableOnLoading;
293
+ _ref.withoutTheme;
294
+ var asLink = _ref.asLink,
295
+ onClick = _ref.onClick,
296
+ className = _ref.className,
297
+ iconClassName = _ref.iconClassName,
298
+ labelClassName = _ref.labelClassName,
299
+ refButton = _ref.refButton,
300
+ props = _objectWithoutProperties(_ref, _excluded$8);
301
+
302
+ var finalLabel = label || children;
303
+ var text = finalLabel !== null ? /*#__PURE__*/React.createElement(Label, null, finalLabel) : null;
304
+ var hasChildren = label !== null && children !== null;
305
+ var hasIcon = icon !== null;
306
+ var hasInlineIcon = hasIcon && (iconPosition === 'inline' || text === null);
307
+ var hasIconColumns = hasIcon && !hasInlineIcon;
308
+ var buttonClassNames = classNames([styles$g.container, styles$g["icon-".concat(iconPosition)], (_ref2 = {}, _defineProperty(_ref2, styles$g.withIcon, hasIcon), _defineProperty(_ref2, styles$g.withIconColumns, hasIconColumns), _defineProperty(_ref2, styles$g.withText, text !== null), _defineProperty(_ref2, styles$g.isLink, href !== null), _defineProperty(_ref2, styles$g.asLink, asLink), _defineProperty(_ref2, styles$g.isDisabled, disabled), _defineProperty(_ref2, styles$g.isLoading, loading), _defineProperty(_ref2, className, className !== null), _ref2)]);
309
+
310
+ var _ref3 = theme || {},
311
+ _ref3$colors = _ref3.colors,
312
+ colors = _ref3$colors === void 0 ? null : _ref3$colors;
313
+
314
+ var _ref4 = colors || {},
315
+ _ref4$primary = _ref4.primary,
316
+ brandPrimaryColor = _ref4$primary === void 0 ? null : _ref4$primary;
317
+
318
+ var primaryColor = getStyleFromColor(brandPrimaryColor, 'color');
319
+
320
+ var buttonStyles = _objectSpread({}, primaryColor);
321
+
322
+ var content = /*#__PURE__*/React.createElement(React.Fragment, null, hasInlineIcon ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
323
+ className: classNames([styles$g.icon, _defineProperty({}, iconClassName, iconClassName !== null)])
324
+ }, icon), text !== null ? /*#__PURE__*/React.createElement("span", {
325
+ className: classNames([styles$g.label, _defineProperty({}, labelClassName, labelClassName !== null)])
326
+ }, text) : null) : null, hasIconColumns ? /*#__PURE__*/React.createElement(React.Fragment, null, iconPosition === 'left' ? /*#__PURE__*/React.createElement("span", {
327
+ className: classNames([styles$g.icon, styles$g.left, _defineProperty({}, iconClassName, iconClassName !== null && iconPosition === 'left')])
328
+ }, icon) : null, /*#__PURE__*/React.createElement("span", {
329
+ className: classNames([styles$g.center, styles$g.label, _defineProperty({}, labelClassName, labelClassName !== null)])
330
+ }, text), iconPosition === 'right' ? /*#__PURE__*/React.createElement("span", {
331
+ className: classNames([styles$g.icon, styles$g.right, _defineProperty({}, iconClassName, iconClassName !== null && iconPosition === 'right')])
332
+ }, icon) : null, hasChildren ? children : null) : null, !hasIcon ? text : null, hasChildren ? children : null);
333
+
334
+ if (href !== null) {
335
+ var linkClassNames = classNames([buttonClassNames, _defineProperty({
336
+ disabled: disabled
337
+ }, styles$g.linkDisabled, disabled)]);
338
+ return external || direct ? /*#__PURE__*/React.createElement("a", Object.assign({}, props, {
339
+ href: disabled ? null : href,
340
+ className: linkClassNames,
341
+ style: buttonStyles,
342
+ onClick: onClick,
343
+ target: external ? target : null,
344
+ ref: refButton,
345
+ tabIndex: focusable ? '' : '-1'
346
+ }), content) : /*#__PURE__*/React.createElement(Link, Object.assign({}, props, {
347
+ to: href,
348
+ className: linkClassNames,
349
+ style: buttonStyles,
350
+ onClick: onClick,
351
+ ref: refButton,
352
+ tabIndex: focusable ? '' : '-1'
353
+ }), content);
354
+ }
355
+
356
+ return /*#__PURE__*/React.createElement("button", Object.assign({}, props, {
357
+ type: type,
358
+ className: buttonClassNames,
359
+ style: buttonStyles,
360
+ onClick: onClick,
361
+ disabled: disabled || disableOnLoading && loading,
362
+ ref: refButton,
363
+ tabIndex: focusable ? '0' : '-1'
364
+ }), content);
365
+ };
366
+
367
+ Button.propTypes = propTypes$n;
368
+ Button.defaultProps = defaultProps$n;
369
+
370
+ var styles$f = {"container":"micromag-viewer-buttons-icon-button-container","icon":"micromag-viewer-buttons-icon-button-icon","label":"micromag-viewer-buttons-icon-button-label"};
371
+
372
+ var _excluded$7 = ["className"];
373
+ var propTypes$m = {
374
+ className: PropTypes.string
375
+ };
376
+ var defaultProps$m = {
377
+ className: null
378
+ };
379
+
380
+ var IconButton = function IconButton(_ref) {
381
+ var className = _ref.className,
382
+ props = _objectWithoutProperties(_ref, _excluded$7);
383
+
384
+ return /*#__PURE__*/React.createElement(Button, Object.assign({
385
+ className: classNames([styles$f.container, _defineProperty({}, className, className !== null)]),
386
+ labelClassName: styles$f.label,
387
+ iconClassName: styles$f.icon
388
+ }, props));
389
+ };
390
+
391
+ IconButton.propTypes = propTypes$m;
392
+ IconButton.defaultProps = defaultProps$m;
393
+
394
+ var _excluded$6 = ["className"];
395
+ var propTypes$l = {
396
+ className: PropTypes.string
397
+ };
398
+ var defaultProps$l = {
399
+ className: null
400
+ };
401
+
402
+ var CloseButton = function CloseButton(_ref) {
403
+ var className = _ref.className,
404
+ props = _objectWithoutProperties(_ref, _excluded$6);
405
+
406
+ var intl = useIntl();
407
+ return /*#__PURE__*/React.createElement(IconButton, Object.assign({
408
+ className: classNames([_defineProperty({}, className, className !== null)]),
409
+ label: intl.formatMessage({
410
+ id: "dj/p/q",
411
+ defaultMessage: [{
412
+ "type": 0,
413
+ "value": "Close"
414
+ }]
415
+ }),
416
+ icon: /*#__PURE__*/React.createElement("svg", {
417
+ xmlns: "http://www.w3.org/2000/svg",
418
+ width: "10",
419
+ height: "16",
420
+ viewBox: "0 0 10 16",
421
+ fill: "currentColor"
422
+ }, /*#__PURE__*/React.createElement("polygon", {
423
+ points: "9.95 4.11 8.89 3.05 5 6.94 1.11 3.05 0.05 4.11 3.94 8 0.05 11.89 1.11 12.95 5 9.06 8.89 12.95 9.95 11.89 6.06 8 9.95 4.11"
424
+ }))
425
+ }, props));
426
+ };
427
+
428
+ CloseButton.propTypes = propTypes$l;
429
+ CloseButton.defaultProps = defaultProps$l;
430
+
431
+ var _excluded$5 = ["className"];
432
+ var propTypes$k = {
433
+ className: PropTypes.string
434
+ };
435
+ var defaultProps$k = {
436
+ className: null
227
437
  };
228
438
 
229
439
  var MenuButton = function MenuButton(_ref) {
230
440
  var className = _ref.className,
231
- onClick = _ref.onClick,
232
- theme = _ref.theme,
233
441
  props = _objectWithoutProperties(_ref, _excluded$5);
234
442
 
235
443
  var intl = useIntl();
@@ -243,39 +451,32 @@ var MenuButton = function MenuButton(_ref) {
243
451
  }]
244
452
  }),
245
453
  iconPosition: "right",
246
- icon: /*#__PURE__*/React.createElement("svg", Object.assign({
454
+ icon: /*#__PURE__*/React.createElement("svg", {
247
455
  xmlns: "http://www.w3.org/2000/svg",
248
456
  width: "10",
249
457
  height: "16",
250
458
  viewBox: "0 0 10 16",
251
459
  fill: "currentColor"
252
- }, theme), /*#__PURE__*/React.createElement("rect", {
460
+ }, /*#__PURE__*/React.createElement("rect", {
253
461
  width: "10",
254
462
  height: "16"
255
- })),
256
- onClick: onClick
463
+ }))
257
464
  }, props));
258
465
  };
259
466
 
260
467
  MenuButton.propTypes = propTypes$k;
261
468
  MenuButton.defaultProps = defaultProps$k;
262
469
 
263
- var _excluded$4 = ["className", "onClick", "theme"];
470
+ var _excluded$4 = ["className"];
264
471
  var propTypes$j = {
265
- className: PropTypes.string,
266
- onClick: PropTypes.func,
267
- theme: PropTypes$1.viewerTheme
472
+ className: PropTypes.string
268
473
  };
269
474
  var defaultProps$j = {
270
- className: null,
271
- onClick: null,
272
- theme: null
475
+ className: null
273
476
  };
274
477
 
275
478
  var ShareButton = function ShareButton(_ref) {
276
479
  var className = _ref.className,
277
- onClick = _ref.onClick,
278
- theme = _ref.theme,
279
480
  props = _objectWithoutProperties(_ref, _excluded$4);
280
481
 
281
482
  var intl = useIntl();
@@ -289,41 +490,99 @@ var ShareButton = function ShareButton(_ref) {
289
490
  }]
290
491
  }),
291
492
  iconPosition: "left",
292
- icon: /*#__PURE__*/React.createElement("svg", Object.assign({
493
+ icon: /*#__PURE__*/React.createElement("svg", {
293
494
  xmlns: "http://www.w3.org/2000/svg",
294
495
  width: "10",
295
496
  height: "16",
296
497
  viewBox: "0 0 10 16",
297
498
  fill: "currentColor"
298
- }, theme), /*#__PURE__*/React.createElement("polygon", {
499
+ }, /*#__PURE__*/React.createElement("polygon", {
299
500
  points: "8.5 14.5 1.5 14.5 1.5 8 0 8 0 16 10 16 10 8 8.5 8 8.5 14.5"
300
501
  }), /*#__PURE__*/React.createElement("polygon", {
301
502
  points: "9.62 4.62 5 0 0.38 4.62 1.44 5.68 4.25 2.87 4.25 11.26 5.75 11.26 5.75 2.87 8.56 5.68 9.62 4.62"
302
- })),
303
- onClick: onClick
503
+ }))
304
504
  }, props));
305
505
  };
306
506
 
307
507
  ShareButton.propTypes = propTypes$j;
308
508
  ShareButton.defaultProps = defaultProps$j;
309
509
 
310
- var styles$d = {"container":"micromag-viewer-menus-menu-container-container","heightContainer":"micromag-viewer-menus-menu-container-heightContainer","inner":"micromag-viewer-menus-menu-container-inner"};
510
+ var styles$e = {"container":"micromag-viewer-buttons-toggle-button-container","normal":"micromag-viewer-buttons-toggle-button-normal","toggled":"micromag-viewer-buttons-toggle-button-toggled"};
311
511
 
312
512
  var propTypes$i = {
513
+ className: PropTypes.string,
514
+ toggled: PropTypes.number,
515
+ button: PropTypes.node,
516
+ toggledButton: PropTypes.node,
517
+ toggledButtonClassName: PropTypes.string
518
+ };
519
+ var defaultProps$i = {
520
+ className: null,
521
+ toggled: 0,
522
+ button: null,
523
+ toggledButton: null,
524
+ toggledButtonClassName: null
525
+ };
526
+
527
+ var ToggleButton = function ToggleButton(_ref) {
528
+ var className = _ref.className,
529
+ toggled = _ref.toggled,
530
+ button = _ref.button,
531
+ toggledButton = _ref.toggledButton,
532
+ toggledButtonClassName = _ref.toggledButtonClassName;
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
+ return /*#__PURE__*/React.createElement("div", {
542
+ className: classNames([styles$e.container, _defineProperty({}, className, className !== null)])
543
+ }, /*#__PURE__*/React.createElement("div", {
544
+ className: styles$e.normal,
545
+ style: getToggleButtonStyles(toggled)
546
+ }, button), /*#__PURE__*/React.createElement("div", {
547
+ className: classNames([styles$e.toggled, _defineProperty({}, toggledButtonClassName, toggledButtonClassName !== null)]),
548
+ style: getToggleButtonStyles(toggled - 1)
549
+ }, toggledButton));
550
+ };
551
+
552
+ ToggleButton.propTypes = propTypes$i;
553
+ ToggleButton.defaultProps = defaultProps$i;
554
+
555
+ var styles$d = {"backdrop":"micromag-viewer-menus-menu-container-backdrop","container":"micromag-viewer-menus-menu-container-container","heightContainer":"micromag-viewer-menus-menu-container-heightContainer","inner":"micromag-viewer-menus-menu-container-inner"};
556
+
557
+ var propTypes$h = {
313
558
  className: PropTypes.string,
314
559
  transitionProgress: PropTypes.number,
560
+ theme: PropTypes$1.viewerTheme,
315
561
  children: PropTypes.node
316
562
  };
317
- var defaultProps$i = {
563
+ var defaultProps$h = {
318
564
  className: null,
319
565
  transitionProgress: 0,
566
+ theme: null,
320
567
  children: null
321
568
  };
322
569
 
323
570
  var ViewerMenuContainer = function ViewerMenuContainer(_ref) {
324
571
  var className = _ref.className,
325
572
  transitionProgress = _ref.transitionProgress,
573
+ viewerTheme = _ref.theme,
326
574
  children = _ref.children;
575
+
576
+ var _ref2 = viewerTheme || {},
577
+ _ref2$background = _ref2.background,
578
+ background = _ref2$background === void 0 ? null : _ref2$background;
579
+
580
+ var _ref3 = background || {},
581
+ _ref3$color = _ref3.color,
582
+ brandBackgroundColor = _ref3$color === void 0 ? null : _ref3$color;
583
+ _ref3.image;
584
+
585
+ var backgroundColorStyle = getStyleFromColor(brandBackgroundColor, 'backgroundColor');
327
586
  return /*#__PURE__*/React.createElement("div", {
328
587
  className: classNames([styles$d.container, _defineProperty({}, className, className !== null)]),
329
588
  style: {
@@ -334,19 +593,28 @@ var ViewerMenuContainer = function ViewerMenuContainer(_ref) {
334
593
  style: {
335
594
  height: "".concat(transitionProgress * 100, "%"),
336
595
  pointerEvents: transitionProgress < 0.25 ? 'none' : 'auto',
337
- zIndex: Math.round(2 - transitionProgress)
596
+ zIndex: Math.round(1 + transitionProgress)
338
597
  }
339
598
  }, /*#__PURE__*/React.createElement("div", {
340
- className: styles$d.inner
341
- }, children)));
599
+ className: styles$d.inner,
600
+ style: _objectSpread(_objectSpread({}, backgroundColorStyle), {}, {
601
+ paddingTop: "".concat(3 * transitionProgress, "rem"),
602
+ paddingBottom: "".concat(0.5 * transitionProgress, "rem")
603
+ })
604
+ }, children)), /*#__PURE__*/React.createElement("div", {
605
+ className: styles$d.backdrop,
606
+ style: {
607
+ opacity: easings.easeOutQuint(transitionProgress)
608
+ }
609
+ }));
342
610
  };
343
611
 
344
- ViewerMenuContainer.propTypes = propTypes$i;
345
- ViewerMenuContainer.defaultProps = defaultProps$i;
612
+ ViewerMenuContainer.propTypes = propTypes$h;
613
+ ViewerMenuContainer.defaultProps = defaultProps$h;
346
614
 
347
- var styles$c = {"button":"micromag-viewer-menus-menu-dot-button","progress":"micromag-viewer-menus-menu-dot-progress","dot":"micromag-viewer-menus-menu-dot-dot","container":"micromag-viewer-menus-menu-dot-container","vertical":"micromag-viewer-menus-menu-dot-vertical","subDot":"micromag-viewer-menus-menu-dot-subDot","dots":"micromag-viewer-menus-menu-dot-dots","outlineBounce":"micromag-viewer-menus-menu-dot-outlineBounce"};
615
+ var styles$c = {"button":"micromag-viewer-menus-menu-dot-button","progress":"micromag-viewer-menus-menu-dot-progress","container":"micromag-viewer-menus-menu-dot-container","vertical":"micromag-viewer-menus-menu-dot-vertical","dot":"micromag-viewer-menus-menu-dot-dot","subDot":"micromag-viewer-menus-menu-dot-subDot","dots":"micromag-viewer-menus-menu-dot-dots","outlineBounce":"micromag-viewer-menus-menu-dot-outlineBounce"};
348
616
 
349
- var propTypes$h = {
617
+ var propTypes$g = {
350
618
  current: PropTypes.bool,
351
619
  active: PropTypes.bool,
352
620
  colors: PropTypes.shape({
@@ -359,7 +627,7 @@ var propTypes$h = {
359
627
  onClick: PropTypes.func,
360
628
  className: PropTypes.string
361
629
  };
362
- var defaultProps$h = {
630
+ var defaultProps$g = {
363
631
  current: false,
364
632
  active: false,
365
633
  colors: null,
@@ -431,13 +699,13 @@ var ViewerMenuDot = function ViewerMenuDot(_ref) {
431
699
  }))));
432
700
  };
433
701
 
434
- ViewerMenuDot.propTypes = propTypes$h;
435
- ViewerMenuDot.defaultProps = defaultProps$h;
702
+ ViewerMenuDot.propTypes = propTypes$g;
703
+ ViewerMenuDot.defaultProps = defaultProps$g;
436
704
 
437
705
  var styles$b = {"container":"micromag-viewer-menus-menu-dots-container","closeButton":"micromag-viewer-menus-menu-dots-closeButton","item":"micromag-viewer-menus-menu-dots-item","items":"micromag-viewer-menus-menu-dots-items","vertical":"micromag-viewer-menus-menu-dots-vertical"};
438
706
 
439
707
  var _excluded$3 = ["direction", "items", "onClickDot", "onClickScreensMenu", "colors", "closeable", "withItemClick", "withoutScreensMenu", "onClose", "className"];
440
- var propTypes$g = {
708
+ var propTypes$f = {
441
709
  direction: PropTypes.oneOf(['horizontal', 'vertical']),
442
710
  items: PropTypes$1.menuItems,
443
711
  onClickDot: PropTypes.func,
@@ -452,7 +720,7 @@ var propTypes$g = {
452
720
  onClose: PropTypes.func,
453
721
  className: PropTypes.string
454
722
  };
455
- var defaultProps$g = {
723
+ var defaultProps$f = {
456
724
  direction: 'horizontal',
457
725
  items: [],
458
726
  onClickDot: null,
@@ -574,23 +842,20 @@ var ViewerMenuDots = function ViewerMenuDots(_ref) {
574
842
  }))) : null));
575
843
  };
576
844
 
577
- ViewerMenuDots.propTypes = propTypes$g;
578
- ViewerMenuDots.defaultProps = defaultProps$g;
845
+ ViewerMenuDots.propTypes = propTypes$f;
846
+ ViewerMenuDots.defaultProps = defaultProps$f;
579
847
 
580
- var propTypes$f = {
848
+ var propTypes$e = {
581
849
  className: PropTypes.string
582
850
  };
583
- var defaultProps$f = {
851
+ var defaultProps$e = {
584
852
  className: null
585
853
  };
586
854
 
587
855
  var StackIcon = function StackIcon(_ref) {
588
856
  var className = _ref.className;
589
857
  return /*#__PURE__*/React.createElement("svg", {
590
- xmlns: "http://www.w3.org/2000/svg" // width="32"
591
- // height="32"
592
- // viewBox="0 0 32 32"
593
- ,
858
+ xmlns: "http://www.w3.org/2000/svg",
594
859
  width: "11.5",
595
860
  height: "17.5",
596
861
  viewBox: "0 0 11.5 17.5",
@@ -603,12 +868,12 @@ var StackIcon = function StackIcon(_ref) {
603
868
  }));
604
869
  };
605
870
 
606
- StackIcon.propTypes = propTypes$f;
607
- StackIcon.defaultProps = defaultProps$f;
871
+ StackIcon.propTypes = propTypes$e;
872
+ StackIcon.defaultProps = defaultProps$e;
608
873
 
609
874
  var styles$a = {"button":"micromag-viewer-menus-menu-screen-button","container":"micromag-viewer-menus-menu-screen-container","isCurrent":"micromag-viewer-menus-menu-screen-isCurrent","pulse":"micromag-viewer-menus-menu-screen-pulse","inner":"micromag-viewer-menus-menu-screen-inner","subScreenBadge":"micromag-viewer-menus-menu-screen-subScreenBadge","subScreenCount":"micromag-viewer-menus-menu-screen-subScreenCount","subScreenIcon":"micromag-viewer-menus-menu-screen-subScreenIcon"};
610
875
 
611
- var propTypes$e = {
876
+ var propTypes$d = {
612
877
  className: PropTypes.string,
613
878
  item: PropTypes$1.menuItem,
614
879
  index: PropTypes.number,
@@ -616,7 +881,7 @@ var propTypes$e = {
616
881
  screenSize: PropTypes$1.screenSize,
617
882
  focusable: PropTypes.bool
618
883
  };
619
- var defaultProps$e = {
884
+ var defaultProps$d = {
620
885
  className: null,
621
886
  item: PropTypes$1.menuItem,
622
887
  index: 0,
@@ -696,12 +961,12 @@ var ViewerMenuScreen = function ViewerMenuScreen(_ref) {
696
961
  }) : null));
697
962
  };
698
963
 
699
- ViewerMenuScreen.propTypes = propTypes$e;
700
- ViewerMenuScreen.defaultProps = defaultProps$e;
964
+ ViewerMenuScreen.propTypes = propTypes$d;
965
+ ViewerMenuScreen.defaultProps = defaultProps$d;
701
966
 
702
- var styles$9 = {"scroll":"micromag-viewer-menus-menu-preview-scroll","container":"micromag-viewer-menus-menu-preview-container","disabled":"micromag-viewer-menus-menu-preview-disabled","screenButton":"micromag-viewer-menus-menu-preview-screenButton","buttons":"micromag-viewer-menus-menu-preview-buttons","organisation":"micromag-viewer-menus-menu-preview-organisation","icon":"micromag-viewer-menus-menu-preview-icon","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"};
967
+ var styles$9 = {"scroll":"micromag-viewer-menus-menu-preview-scroll","container":"micromag-viewer-menus-menu-preview-container","disabled":"micromag-viewer-menus-menu-preview-disabled","screenButton":"micromag-viewer-menus-menu-preview-screenButton","buttons":"micromag-viewer-menus-menu-preview-buttons","organisation":"micromag-viewer-menus-menu-preview-organisation","icon":"micromag-viewer-menus-menu-preview-icon","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","screen":"micromag-viewer-menus-menu-preview-screen","loading":"micromag-viewer-menus-menu-preview-loading","fillPulse":"micromag-viewer-menus-menu-preview-fillPulse"};
703
968
 
704
- var propTypes$d = {
969
+ var propTypes$c = {
705
970
  viewerTheme: PropTypes$1.viewerTheme,
706
971
  screenSize: PropTypes$1.screenSize,
707
972
  menuWidth: PropTypes.number,
@@ -709,13 +974,14 @@ var propTypes$d = {
709
974
  focusable: PropTypes.bool,
710
975
  onClickScreen: PropTypes.func,
711
976
  maxThumbsWidth: PropTypes.number,
712
- // shouldLoad: PropTypes.bool, // @todo still needed? to re-implement?
977
+ // @todo to reimplement:
978
+ // shouldLoad: PropTypes.bool,
713
979
  // toggleFullscreen: PropTypes.func,
714
980
  // fullscreenActive: PropTypes.bool,
715
981
  // fullscreenEnabled: PropTypes.bool,
716
982
  className: PropTypes.string
717
983
  };
718
- var defaultProps$d = {
984
+ var defaultProps$c = {
719
985
  viewerTheme: null,
720
986
  screenSize: null,
721
987
  menuWidth: null,
@@ -745,55 +1011,34 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
745
1011
  _useDimensionObserver2 = _useDimensionObserver.width,
746
1012
  contentWidth = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2;
747
1013
 
748
- var thumbsPerLine = Math.max(Math.floor(contentWidth / maxThumbsWidth), 3); // Viewer theme
749
- // @todo room for improvement here probably
750
- // @todo also re-implement!!
1014
+ var thumbsPerLine = Math.max(Math.floor(contentWidth / maxThumbsWidth), 3); // @note cool, should be in recipes
751
1015
 
752
1016
  var _ref2 = viewerTheme || {},
753
- _ref2$colors = _ref2.colors,
754
- colors = _ref2$colors === void 0 ? null : _ref2$colors,
755
1017
  _ref2$background = _ref2.background,
756
1018
  background = _ref2$background === void 0 ? null : _ref2$background;
757
1019
  _ref2.logo;
758
1020
 
759
- var _ref3 = colors || {};
760
- _ref3.primary;
761
- _ref3.secondary;
762
-
763
- var _ref4 = background || {},
764
- _ref4$color = _ref4.color,
765
- brandBackgroundColor = _ref4$color === void 0 ? null : _ref4$color,
766
- _ref4$image = _ref4.image,
767
- image = _ref4$image === void 0 ? null : _ref4$image;
768
-
769
- var _ref5 = image || {},
770
- _ref5$url = _ref5.url,
771
- brandImageUrl = _ref5$url === void 0 ? null : _ref5$url; // const borderPrimaryColorStyle = getStyleFromColor(brandPrimaryColor, 'borderColor');
772
- // const colorSecondaryColorStyle = getStyleFromColor(brandSecondaryColor, 'color');
1021
+ var _ref3 = background || {},
1022
+ _ref3$image = _ref3.image,
1023
+ image = _ref3$image === void 0 ? null : _ref3$image;
773
1024
 
774
-
775
- var backgroundColorStyle = getStyleFromColor(brandBackgroundColor, 'backgroundColor'); // const { url: brandLogoUrl = null } = brandLogo || {};
1025
+ var _ref4 = image || {},
1026
+ _ref4$url = _ref4.url,
1027
+ brandImageUrl = _ref4$url === void 0 ? null : _ref4$url;
776
1028
 
777
1029
  var brandImageStyle = brandImageUrl !== null ? {
778
1030
  backgroundImage: "url(".concat(brandImageUrl, ")")
779
- } : null; // @todo could probably use some work to avoid the visual jump from 3 screens to all of them
780
-
781
- var finalItems = useMemo(function () {
782
- return !focusable ? items.map(function (s, i) {
783
- return i > 3 ? {
784
- screenId: s.screenId
785
- } : s;
786
- }) : items;
787
- }, [items, focusable]); // @todo bookmarks
788
- // const bookmarks = finalItems.reduce((acc, it) => {
789
- // const { screen = null } = it || {};
790
- // const { bookmark = null } = screen || {};
791
- // return bookmark !== null ? [...acc, bookmark] : acc; // merge with array or return original array
792
- // }, []);
1031
+ } : null; // @todo reimplement the brand logo
1032
+ // const { url: brandLogoUrl = null } = brandLogo || {};
1033
+ // @todo optimize all of this the proper way
1034
+ // const finalItems = useMemo(
1035
+ // () => (!focusable ? items.map((s, i) => (i > 6 ? { screenId: s.screenId } : s)) : items),
1036
+ // [items, focusable],
1037
+ // );
793
1038
 
794
1039
  return /*#__PURE__*/React.createElement("div", {
795
1040
  className: classNames([styles$9.container, _defineProperty({}, className, className !== null)]),
796
- style: _objectSpread(_objectSpread(_objectSpread({}, backgroundColorStyle), brandImageStyle), {}, {
1041
+ style: _objectSpread(_objectSpread({}, brandImageStyle), {}, {
797
1042
  width: menuWidth
798
1043
  }),
799
1044
  "aria-hidden": focusable ? null : 'true'
@@ -806,9 +1051,11 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
806
1051
  className: styles$9.nav
807
1052
  }, /*#__PURE__*/React.createElement("ul", {
808
1053
  className: styles$9.items
809
- }, finalItems.map(function (item, index) {
810
- var _ref7 = item || {},
811
- screenId = _ref7.screenId;
1054
+ }, items.map(function (item, index) {
1055
+ var _ref6 = item || {},
1056
+ screenId = _ref6.screenId,
1057
+ _ref6$screen = _ref6.screen,
1058
+ screen = _ref6$screen === void 0 ? null : _ref6$screen;
812
1059
 
813
1060
  var itemStyles = {
814
1061
  width: "".concat(100 / thumbsPerLine, "%")
@@ -817,30 +1064,43 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
817
1064
  key: "item-".concat(screenId),
818
1065
  className: styles$9.item,
819
1066
  style: itemStyles
820
- }, item === null ? 'loading' : /*#__PURE__*/React.createElement(ViewerMenuScreen, {
821
- className: styles$9.screenPreview,
1067
+ }, /*#__PURE__*/React.createElement("div", {
1068
+ className: styles$9.screen
1069
+ }, screen === null ? /*#__PURE__*/React.createElement("svg", {
1070
+ className: styles$9.loading,
1071
+ xmlns: "http://www.w3.org/2000/svg",
1072
+ width: "10",
1073
+ height: "16",
1074
+ viewBox: "0 0 10 16",
1075
+ style: {
1076
+ animationDelay: "".concat(index * -50, "ms")
1077
+ }
1078
+ }, /*#__PURE__*/React.createElement("rect", {
1079
+ width: "10",
1080
+ height: "16"
1081
+ })) : /*#__PURE__*/React.createElement(ViewerMenuScreen, {
822
1082
  item: item,
823
1083
  index: index,
824
1084
  screenSize: screenSize,
825
1085
  onClick: onClickScreen,
826
1086
  focusable: focusable
827
- }));
1087
+ })));
828
1088
  }))))));
829
1089
  };
830
1090
 
831
- ViewerMenuPreview.propTypes = propTypes$d;
832
- ViewerMenuPreview.defaultProps = defaultProps$d;
1091
+ ViewerMenuPreview.propTypes = propTypes$c;
1092
+ ViewerMenuPreview.defaultProps = defaultProps$c;
833
1093
 
834
1094
  var styles$8 = {"container":"micromag-viewer-partials-micromag-preview-container","cover":"micromag-viewer-partials-micromag-preview-cover","info":"micromag-viewer-partials-micromag-preview-info","url":"micromag-viewer-partials-micromag-preview-url","title":"micromag-viewer-partials-micromag-preview-title"};
835
1095
 
836
- var propTypes$c = {
1096
+ var propTypes$b = {
837
1097
  screen: PropTypes$1.item,
838
1098
  title: PropTypes.string,
839
1099
  url: PropTypes.string,
840
1100
  description: PropTypes.string,
841
1101
  className: PropTypes.string
842
1102
  };
843
- var defaultProps$c = {
1103
+ var defaultProps$b = {
844
1104
  screen: null,
845
1105
  title: null,
846
1106
  url: null,
@@ -872,12 +1132,12 @@ var MicromagPreview = function MicromagPreview(_ref) {
872
1132
  }, url) : null, /*#__PURE__*/React.createElement("p", null, description)));
873
1133
  };
874
1134
 
875
- MicromagPreview.propTypes = propTypes$c;
876
- MicromagPreview.defaultProps = defaultProps$c;
1135
+ MicromagPreview.propTypes = propTypes$b;
1136
+ MicromagPreview.defaultProps = defaultProps$b;
877
1137
 
878
- var styles$7 = {"scroll":"micromag-viewer-menus-menu-share-scroll","container":"micromag-viewer-menus-menu-share-container","disabled":"micromag-viewer-menus-menu-share-disabled","screenButton":"micromag-viewer-menus-menu-share-screenButton","organisation":"micromag-viewer-menus-menu-share-organisation","icon":"micromag-viewer-menus-menu-share-icon","header":"micromag-viewer-menus-menu-share-header","mode":"micromag-viewer-menus-menu-share-mode","bump":"micromag-viewer-menus-menu-share-bump","options":"micromag-viewer-menus-menu-share-options","optionButton":"micromag-viewer-menus-menu-share-optionButton","content":"micromag-viewer-menus-menu-share-content"};
1138
+ var styles$7 = {"scroll":"micromag-viewer-menus-menu-share-scroll","container":"micromag-viewer-menus-menu-share-container","disabled":"micromag-viewer-menus-menu-share-disabled","button":"micromag-viewer-menus-menu-share-button","organisation":"micromag-viewer-menus-menu-share-organisation","icon":"micromag-viewer-menus-menu-share-icon","header":"micromag-viewer-menus-menu-share-header","mode":"micromag-viewer-menus-menu-share-mode","bump":"micromag-viewer-menus-menu-share-bump","options":"micromag-viewer-menus-menu-share-options","content":"micromag-viewer-menus-menu-share-content"};
879
1139
 
880
- var propTypes$b = {
1140
+ var propTypes$a = {
881
1141
  viewerTheme: PropTypes$1.viewerTheme,
882
1142
  menuWidth: PropTypes.number,
883
1143
  title: PropTypes.string,
@@ -890,7 +1150,7 @@ var propTypes$b = {
890
1150
  onShare: PropTypes.func,
891
1151
  className: PropTypes.string
892
1152
  };
893
- var defaultProps$b = {
1153
+ var defaultProps$a = {
894
1154
  viewerTheme: null,
895
1155
  menuWidth: null,
896
1156
  title: null,
@@ -916,56 +1176,40 @@ var ViewerMenuShare = function ViewerMenuShare(_ref) {
916
1176
  className = _ref.className;
917
1177
 
918
1178
  // Viewer theme
919
- // @todo room for improvement here probably
920
1179
  var _ref2 = viewerTheme || {},
921
- _ref2$colors = _ref2.colors,
922
- colors = _ref2$colors === void 0 ? null : _ref2$colors,
923
1180
  _ref2$background = _ref2.background,
924
1181
  background = _ref2$background === void 0 ? null : _ref2$background;
925
- _ref2.logo;
926
- // @todo could get from theme provider? need to re-implement
927
-
928
-
929
- var _ref3 = colors || {};
930
- _ref3.primary;
931
- _ref3.secondary;
932
-
933
- var _ref4 = background || {},
934
- _ref4$color = _ref4.color,
935
- brandBackgroundColor = _ref4$color === void 0 ? null : _ref4$color,
936
- _ref4$image = _ref4.image,
937
- image = _ref4$image === void 0 ? null : _ref4$image;
938
-
939
- var _ref5 = image || {},
940
- _ref5$url = _ref5.url,
941
- brandImageUrl = _ref5$url === void 0 ? null : _ref5$url; // const borderPrimaryColorStyle = getStyleFromColor(brandPrimaryColor, 'borderColor');
942
- // const colorSecondaryColorStyle = getStyleFromColor(brandSecondaryColor, 'color');
943
1182
 
1183
+ var _ref3 = background || {},
1184
+ _ref3$image = _ref3.image,
1185
+ image = _ref3$image === void 0 ? null : _ref3$image;
944
1186
 
945
- var backgroundColorStyle = getStyleFromColor(brandBackgroundColor, 'backgroundColor'); // const { url: brandLogoUrl = null } = brandLogo || {};
1187
+ var _ref4 = image || {},
1188
+ _ref4$url = _ref4.url,
1189
+ brandImageUrl = _ref4$url === void 0 ? null : _ref4$url;
946
1190
 
947
1191
  var brandImageStyle = brandImageUrl !== null ? {
948
1192
  backgroundImage: "url(".concat(brandImageUrl, ")")
949
1193
  } : null;
950
1194
  var coverScreen = useMemo(function () {
951
- var _ref6 = items[0] || {},
952
- _ref6$screen = _ref6.screen,
953
- screen = _ref6$screen === void 0 ? null : _ref6$screen;
1195
+ var _ref5 = items[0] || {},
1196
+ _ref5$screen = _ref5.screen,
1197
+ screen = _ref5$screen === void 0 ? null : _ref5$screen;
954
1198
 
955
1199
  return screen;
956
1200
  }, [items]);
957
1201
  var currentScreen = useMemo(function () {
958
1202
  var found = items.find(function (item) {
959
- var _ref7 = item || {},
960
- _ref7$current = _ref7.current,
961
- current = _ref7$current === void 0 ? false : _ref7$current;
1203
+ var _ref6 = item || {},
1204
+ _ref6$current = _ref6.current,
1205
+ current = _ref6$current === void 0 ? false : _ref6$current;
962
1206
 
963
1207
  return current;
964
1208
  });
965
1209
 
966
- var _ref8 = found || {},
967
- _ref8$screen = _ref8.screen,
968
- screen = _ref8$screen === void 0 ? null : _ref8$screen;
1210
+ var _ref7 = found || {},
1211
+ _ref7$screen = _ref7.screen,
1212
+ screen = _ref7$screen === void 0 ? null : _ref7$screen;
969
1213
 
970
1214
  return screen;
971
1215
  }, [items, currentScreenIndex, focusable]);
@@ -991,7 +1235,7 @@ var ViewerMenuShare = function ViewerMenuShare(_ref) {
991
1235
  }, [shareCurrentScreen, currentScreenIndex, setFinalShareUrl]);
992
1236
  return /*#__PURE__*/React.createElement("div", {
993
1237
  className: classNames([styles$7.container, _defineProperty({}, className, className !== null)]),
994
- style: _objectSpread(_objectSpread(_objectSpread({}, backgroundColorStyle), brandImageStyle), {}, {
1238
+ style: _objectSpread(_objectSpread({}, brandImageStyle), {}, {
995
1239
  width: menuWidth
996
1240
  }),
997
1241
  "aria-hidden": focusable ? null : 'true'
@@ -1029,16 +1273,17 @@ var ViewerMenuShare = function ViewerMenuShare(_ref) {
1029
1273
  url: finalShareUrl,
1030
1274
  focusable: focusable,
1031
1275
  onShare: onShare,
1276
+ theme: viewerTheme,
1032
1277
  shareCurrentScreen: shareCurrentScreen
1033
1278
  }))));
1034
1279
  };
1035
1280
 
1036
- ViewerMenuShare.propTypes = propTypes$b;
1037
- ViewerMenuShare.defaultProps = defaultProps$b;
1281
+ ViewerMenuShare.propTypes = propTypes$a;
1282
+ ViewerMenuShare.defaultProps = defaultProps$a;
1038
1283
 
1039
- var styles$6 = {"container":"micromag-viewer-container","screenContainer":"micromag-viewer-screenContainer","screensFrame":"micromag-viewer-screensFrame","landscape":"micromag-viewer-landscape","hideMenu":"micromag-viewer-hideMenu","menuNavContainer":"micromag-viewer-menuNavContainer","dots":"micromag-viewer-dots","menuTopContainer":"micromag-viewer-menuTopContainer","content":"micromag-viewer-content","fadeMenu":"micromag-viewer-fadeMenu","withShadow":"micromag-viewer-withShadow","isOpened":"micromag-viewer-isOpened","menuItem":"micromag-viewer-menuItem","menuScreens":"micromag-viewer-menuScreens","slidingButton":"micromag-viewer-slidingButton","menuButton":"micromag-viewer-menuButton","isHidden":"micromag-viewer-isHidden","navButton":"micromag-viewer-navButton","previous":"micromag-viewer-previous","next":"micromag-viewer-next","isDragging":"micromag-viewer-isDragging","withoutGestures":"micromag-viewer-withoutGestures","screen":"micromag-viewer-screen","current":"micromag-viewer-current","playbackControls":"micromag-viewer-playbackControls","webView":"micromag-viewer-webView"};
1284
+ var styles$6 = {"container":"micromag-viewer-container","screenContainer":"micromag-viewer-screenContainer","screensFrame":"micromag-viewer-screensFrame","landscape":"micromag-viewer-landscape","hideMenu":"micromag-viewer-hideMenu","menuNavContainer":"micromag-viewer-menuNavContainer","dots":"micromag-viewer-dots","menuTopContainer":"micromag-viewer-menuTopContainer","content":"micromag-viewer-content","withoutGestures":"micromag-viewer-withoutGestures","fadeMenu":"micromag-viewer-fadeMenu","withShadow":"micromag-viewer-withShadow","isOpened":"micromag-viewer-isOpened","menuItem":"micromag-viewer-menuItem","menuItemScreens":"micromag-viewer-menuItemScreens","menuButton":"micromag-viewer-menuButton","slidingButton":"micromag-viewer-slidingButton","screensMenuButtonToggled":"micromag-viewer-screensMenuButtonToggled","isHidden":"micromag-viewer-isHidden","navButton":"micromag-viewer-navButton","previous":"micromag-viewer-previous","next":"micromag-viewer-next","screen":"micromag-viewer-screen","current":"micromag-viewer-current","playbackControls":"micromag-viewer-playbackControls","arrowHint":"micromag-viewer-arrowHint","webView":"micromag-viewer-webView"};
1040
1285
 
1041
- var propTypes$a = {
1286
+ var propTypes$9 = {
1042
1287
  story: PropTypes$1.story.isRequired,
1043
1288
  currentScreenIndex: PropTypes.number,
1044
1289
  toggleFullscreen: PropTypes.func,
@@ -1062,7 +1307,7 @@ var propTypes$a = {
1062
1307
 
1063
1308
  })
1064
1309
  };
1065
- var defaultProps$a = {
1310
+ var defaultProps$9 = {
1066
1311
  currentScreenIndex: 0,
1067
1312
  toggleFullscreen: null,
1068
1313
  fullscreenActive: false,
@@ -1084,7 +1329,7 @@ var defaultProps$a = {
1084
1329
  };
1085
1330
 
1086
1331
  var ViewerMenu = function ViewerMenu(_ref) {
1087
- var _ref9;
1332
+ var _ref11;
1088
1333
 
1089
1334
  var story = _ref.story,
1090
1335
  currentScreenIndex = _ref.currentScreenIndex,
@@ -1181,7 +1426,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
1181
1426
  var base = typeof window !== 'undefined' ? window.location.host : '';
1182
1427
  var path = shareBasePath !== null ? "".concat(base).concat(shareBasePath) : base;
1183
1428
  return path;
1184
- }, [shareBasePath]); // @todo sorta not super good here
1429
+ }, [shareBasePath]); // @note possible to extract some of that logic
1185
1430
 
1186
1431
  var onOpenMenu = useCallback(function () {
1187
1432
  setMenuOpened(true);
@@ -1238,11 +1483,30 @@ var ViewerMenu = function ViewerMenu(_ref) {
1238
1483
  }
1239
1484
 
1240
1485
  return progress;
1241
- }, [menuOpened, onOpenShare]);
1486
+ }, [onOpenShare]);
1487
+ var computeShareProgressClose = useCallback(function (_ref8) {
1488
+ var active = _ref8.active,
1489
+ _ref8$direction = _slicedToArray(_ref8.direction, 2),
1490
+ dy = _ref8$direction[1],
1491
+ _ref8$movement = _slicedToArray(_ref8.movement, 2),
1492
+ my = _ref8$movement[1],
1493
+ _ref8$velocity = _slicedToArray(_ref8.velocity, 2),
1494
+ vy = _ref8$velocity[1];
1495
+
1496
+ var progress = Math.max(0, my) / (window.innerHeight * 0.8);
1497
+ var reachedThreshold = (vy > 0.3 || Math.abs(progress) > 0.3) && dy !== -1;
1498
+
1499
+ if (!active) {
1500
+ if (reachedThreshold) onCloseShare();
1501
+ return reachedThreshold ? 0 : 1;
1502
+ }
1503
+
1504
+ return 1 - progress;
1505
+ }, [onCloseShare]);
1242
1506
 
1243
1507
  var _useDragProgress = useDragProgress({
1244
1508
  progress: shareOpened ? 1 : 0,
1245
- computeProgress: computeShareProgress,
1509
+ computeProgress: shareOpened ? computeShareProgressClose : computeShareProgress,
1246
1510
  springParams: {
1247
1511
  config: {
1248
1512
  tension: 300,
@@ -1251,17 +1515,16 @@ var ViewerMenu = function ViewerMenu(_ref) {
1251
1515
  }
1252
1516
  }),
1253
1517
  bindShareDrag = _useDragProgress.bind,
1254
- isDraggingShare = _useDragProgress.dragging,
1255
1518
  shareOpenedProgress = _useDragProgress.progress;
1256
1519
 
1257
- var computeMenuProgress = useCallback(function (_ref8) {
1258
- var active = _ref8.active,
1259
- _ref8$direction = _slicedToArray(_ref8.direction, 2),
1260
- dy = _ref8$direction[1],
1261
- _ref8$movement = _slicedToArray(_ref8.movement, 2),
1262
- my = _ref8$movement[1],
1263
- _ref8$velocity = _slicedToArray(_ref8.velocity, 2),
1264
- vy = _ref8$velocity[1];
1520
+ var computeMenuProgress = useCallback(function (_ref9) {
1521
+ var active = _ref9.active,
1522
+ _ref9$direction = _slicedToArray(_ref9.direction, 2),
1523
+ dy = _ref9$direction[1],
1524
+ _ref9$movement = _slicedToArray(_ref9.movement, 2),
1525
+ my = _ref9$movement[1],
1526
+ _ref9$velocity = _slicedToArray(_ref9.velocity, 2),
1527
+ vy = _ref9$velocity[1];
1265
1528
 
1266
1529
  var progress = Math.max(0, my) / (window.innerHeight * 0.8);
1267
1530
  var reachedThreshold = (vy > 0.3 || Math.abs(progress) > 0.3) && dy !== -1;
@@ -1272,11 +1535,30 @@ var ViewerMenu = function ViewerMenu(_ref) {
1272
1535
  }
1273
1536
 
1274
1537
  return progress;
1275
- }, [menuOpened, onOpenMenu]);
1538
+ }, [onOpenMenu]);
1539
+ var computeMenuProgressClose = useCallback(function (_ref10) {
1540
+ var active = _ref10.active,
1541
+ _ref10$direction = _slicedToArray(_ref10.direction, 2),
1542
+ dy = _ref10$direction[1],
1543
+ _ref10$movement = _slicedToArray(_ref10.movement, 2),
1544
+ my = _ref10$movement[1],
1545
+ _ref10$velocity = _slicedToArray(_ref10.velocity, 2),
1546
+ vy = _ref10$velocity[1];
1547
+
1548
+ var progress = Math.max(0, my) / (window.innerHeight * 0.8);
1549
+ var reachedThreshold = (vy > 0.3 || Math.abs(progress) > 0.3) && dy !== -1;
1550
+
1551
+ if (!active) {
1552
+ if (reachedThreshold) onCloseMenu();
1553
+ return reachedThreshold ? 0 : 1;
1554
+ }
1555
+
1556
+ return 1 - progress;
1557
+ }, [onCloseMenu]);
1276
1558
 
1277
1559
  var _useDragProgress2 = useDragProgress({
1278
1560
  progress: menuOpened ? 1 : 0,
1279
- computeProgress: computeMenuProgress,
1561
+ computeProgress: menuOpened ? computeMenuProgressClose : computeMenuProgress,
1280
1562
  springParams: {
1281
1563
  config: {
1282
1564
  tension: 300,
@@ -1285,7 +1567,6 @@ var ViewerMenu = function ViewerMenu(_ref) {
1285
1567
  }
1286
1568
  }),
1287
1569
  bindMenuDrag = _useDragProgress2.bind,
1288
- isDraggingMenu = _useDragProgress2.dragging,
1289
1570
  menuOpenedProgress = _useDragProgress2.progress;
1290
1571
 
1291
1572
  var keyboardShortcuts = useMemo(function () {
@@ -1302,7 +1583,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
1302
1583
 
1303
1584
  var dotsOpacity = Math.min(1, Math.max(0, 1 - (menuOpenedProgress + shareOpenedProgress)));
1304
1585
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
1305
- className: classNames([styles$6.menuNavContainer, (_ref9 = {}, _defineProperty(_ref9, styles$6.withShadow, withShadow), _defineProperty(_ref9, styles$6.isOpened, menuOpened || shareOpened), _ref9)]),
1586
+ className: classNames([styles$6.menuNavContainer, (_ref11 = {}, _defineProperty(_ref11, styles$6.withShadow, withShadow), _defineProperty(_ref11, styles$6.isOpened, menuOpened || shareOpened), _ref11)]),
1306
1587
  ref: refDots,
1307
1588
  style: {
1308
1589
  width: menuWidth
@@ -1311,47 +1592,43 @@ var ViewerMenu = function ViewerMenu(_ref) {
1311
1592
  className: styles$6.menuTopContainer
1312
1593
  }, !withoutShareMenu ? /*#__PURE__*/React.createElement("div", Object.assign({
1313
1594
  className: classNames([styles$6.menuItem, styles$6.menuShare])
1314
- }, bindShareDrag()), /*#__PURE__*/React.createElement(SlidingButtons, {
1595
+ }, bindShareDrag()), /*#__PURE__*/React.createElement(ToggleButton, {
1315
1596
  className: styles$6.slidingButton,
1316
- current: shareOpenedProgress,
1317
- immediate: isDraggingShare,
1318
- buttons: [ShareButton, CloseButton],
1319
- buttonsProps: [{
1320
- key: 'share',
1597
+ button: /*#__PURE__*/React.createElement(ShareButton, {
1321
1598
  className: styles$6.menuButton,
1322
1599
  onClick: onOpenShare,
1323
- theme: menuTheme
1324
- }, {
1325
- key: 'close-share',
1600
+ theme: menuTheme,
1601
+ iconPosition: "left"
1602
+ }),
1603
+ toggledButton: /*#__PURE__*/React.createElement(CloseButton, {
1326
1604
  className: styles$6.menuButton,
1327
1605
  onClick: onCloseShare,
1328
1606
  theme: menuTheme,
1329
- iconPosition: 'left'
1330
- }]
1607
+ iconPosition: "left"
1608
+ }),
1609
+ toggled: shareOpenedProgress
1331
1610
  })) : null, !withoutScreensMenu ? /*#__PURE__*/React.createElement("div", Object.assign({
1332
- className: classNames([styles$6.menuItem, styles$6.menuScreens])
1333
- }, bindMenuDrag()), /*#__PURE__*/React.createElement(SlidingButtons, {
1611
+ className: classNames([styles$6.menuItem, styles$6.menuItemScreens])
1612
+ }, bindMenuDrag()), /*#__PURE__*/React.createElement(ToggleButton, {
1334
1613
  className: styles$6.slidingButton,
1335
- current: menuOpenedProgress,
1336
- immediate: isDraggingMenu,
1337
- buttons: [MenuButton, CloseButton],
1338
- buttonsProps: [{
1339
- key: 'menu',
1614
+ button: /*#__PURE__*/React.createElement(MenuButton, {
1340
1615
  className: styles$6.menuButton,
1341
1616
  onClick: onOpenMenu,
1342
1617
  theme: menuTheme
1343
- }, {
1344
- key: 'close-menu',
1618
+ }),
1619
+ toggledButton: /*#__PURE__*/React.createElement(CloseButton, {
1345
1620
  className: styles$6.menuButton,
1346
1621
  onClick: onCloseMenu,
1347
1622
  theme: menuTheme,
1348
- iconPosition: 'right'
1349
- }]
1623
+ iconPosition: "right"
1624
+ }),
1625
+ toggled: menuOpenedProgress,
1626
+ toggledButtonClassName: styles$6.screensMenuButtonToggled
1350
1627
  })) : null), /*#__PURE__*/React.createElement(ViewerMenuDots, Object.assign({}, menuTheme, {
1351
1628
  direction: "horizontal",
1352
1629
  items: items,
1353
1630
  onClickDot: onClickScreen,
1354
- onClickMenu: onOpenMenu,
1631
+ onClickScreensMenu: onOpenMenu,
1355
1632
  closeable: closeable,
1356
1633
  withItemClick: withDotItemClick,
1357
1634
  withoutScreensMenu: withoutScreensMenu,
@@ -1359,12 +1636,15 @@ var ViewerMenu = function ViewerMenu(_ref) {
1359
1636
  onClose: onClickCloseViewer,
1360
1637
  className: styles$6.dots,
1361
1638
  style: {
1362
- opacity: dotsOpacity
1639
+ opacity: Math.pow(dotsOpacity, 5),
1640
+ // @note this is like a "quint" easing, meaning it'll go towards 1 slowly first and then fast as it approaches 1
1641
+ pointerEvents: dotsOpacity < 1 ? 'none' : 'auto'
1363
1642
  }
1364
1643
  }))), /*#__PURE__*/React.createElement(ViewerMenuContainer, {
1365
1644
  className: styles$6.menuContainerShare,
1366
- transitionProgress: shareOpenedProgress
1367
- }, /*#__PURE__*/React.createElement(ViewerMenuShare, {
1645
+ transitionProgress: shareOpenedProgress,
1646
+ theme: viewerTheme
1647
+ }, shareOpenedProgress > 0 ? /*#__PURE__*/React.createElement(ViewerMenuShare, {
1368
1648
  viewerTheme: viewerTheme,
1369
1649
  className: styles$6.menuShare,
1370
1650
  title: title,
@@ -1376,15 +1656,15 @@ var ViewerMenu = function ViewerMenu(_ref) {
1376
1656
  shareUrl: shareUrl,
1377
1657
  onShare: onShare,
1378
1658
  onClose: onCloseShare
1379
- })), /*#__PURE__*/React.createElement(ViewerMenuContainer, {
1659
+ }) : null), /*#__PURE__*/React.createElement(ViewerMenuContainer, {
1380
1660
  className: styles$6.menuContainerScreens,
1381
- transitionProgress: menuOpenedProgress
1382
- }, /*#__PURE__*/React.createElement(ViewerMenuPreview, {
1661
+ transitionProgress: menuOpenedProgress,
1662
+ theme: viewerTheme
1663
+ }, menuOpenedProgress > 0 ? /*#__PURE__*/React.createElement(ViewerMenuPreview, {
1383
1664
  viewerTheme: viewerTheme,
1384
1665
  className: styles$6.menuPreview,
1385
1666
  screenSize: screenSize,
1386
1667
  menuWidth: menuWidth,
1387
- focusable: menuOpened,
1388
1668
  items: items,
1389
1669
  currentScreenIndex: currentScreenIndex,
1390
1670
  shareUrl: shareUrl,
@@ -1394,67 +1674,15 @@ var ViewerMenu = function ViewerMenu(_ref) {
1394
1674
  toggleFullscreen: toggleFullscreen,
1395
1675
  fullscreenActive: fullscreenActive,
1396
1676
  fullscreenEnabled: fullscreenEnabled
1397
- })));
1398
- };
1399
-
1400
- ViewerMenu.propTypes = propTypes$a;
1401
- ViewerMenu.defaultProps = defaultProps$a;
1402
-
1403
- var styles$5 = {"container":"micromag-viewer-partials-hand-tap-container","circle":"micromag-viewer-partials-hand-tap-circle","pulse":"micromag-viewer-partials-hand-tap-pulse","hand":"micromag-viewer-partials-hand-tap-hand","panY":"micromag-viewer-partials-hand-tap-panY","inner":"micromag-viewer-partials-hand-tap-inner","shadowFade":"micromag-viewer-partials-hand-tap-shadowFade"};
1404
-
1405
- var propTypes$9 = {
1406
- color: PropTypes.string,
1407
- className: PropTypes.string
1408
- };
1409
- var defaultProps$9 = {
1410
- color: 'currentColor',
1411
- className: null
1677
+ }) : null));
1412
1678
  };
1413
1679
 
1414
- var HandIcon = function HandIcon(_ref) {
1415
- var color = _ref.color,
1416
- className = _ref.className;
1417
- return /*#__PURE__*/React.createElement("svg", {
1418
- className: className,
1419
- xmlns: "http://www.w3.org/2000/svg",
1420
- viewBox: "0 0 367.24 482.87"
1421
- }, /*#__PURE__*/React.createElement("path", {
1422
- d: "M488.84,255.91a44.68,44.68,0,0,0-19.15,4.3A44.77,44.77,0,0,0,406,226.49a44.75,44.75,0,0,0-62.67-32.66V105.4a44.81,44.81,0,1,0-89.61,0V265.17l-1.15-2.7a44.78,44.78,0,1,0-82.84,34.06l64.87,157.76.34.73a156.29,156.29,0,0,0,141.42,88.44c86.7,0,157.24-70.53,157.24-157.26V300.7a44.82,44.82,0,0,0-44.78-44.79ZM507.46,386.2c0,72.3-58.78,131.1-131.07,131.1a130.29,130.29,0,0,1-117.73-73.36L193.93,286.61a18.64,18.64,0,1,1,34.53-14.07L279.91,394V105.4a18.64,18.64,0,1,1,37.28,0v196a13.08,13.08,0,0,0,26.16,0V234.56a18.64,18.64,0,0,1,37.27,0v89.95a13.07,13.07,0,1,0,26.13,0V266.86a18.64,18.64,0,1,1,37.28,0v80.71h0s0,.08,0,.11a13.08,13.08,0,0,0,26.15,0v-47a18.63,18.63,0,1,1,37.26,0v85.5Z",
1423
- transform: "translate(-166.38 -60.59)",
1424
- fill: color,
1425
- fillRule: "evenodd"
1426
- }));
1427
- };
1680
+ ViewerMenu.propTypes = propTypes$9;
1681
+ ViewerMenu.defaultProps = defaultProps$9;
1428
1682
 
1429
- HandIcon.propTypes = propTypes$9;
1430
- HandIcon.defaultProps = defaultProps$9;
1683
+ var styles$5 = {"container":"micromag-viewer-screen-container","navigationHint":"micromag-viewer-screen-navigationHint"};
1431
1684
 
1432
1685
  var propTypes$8 = {
1433
- className: PropTypes.string
1434
- };
1435
- var defaultProps$8 = {
1436
- className: null
1437
- };
1438
-
1439
- var HandTap = function HandTap(_ref) {
1440
- var className = _ref.className;
1441
- return /*#__PURE__*/React.createElement("div", {
1442
- className: classNames([styles$5.container, _defineProperty({}, className, className !== null)])
1443
- }, /*#__PURE__*/React.createElement("div", {
1444
- className: styles$5.inner
1445
- }, /*#__PURE__*/React.createElement("div", {
1446
- className: styles$5.circle
1447
- }), /*#__PURE__*/React.createElement(HandIcon, {
1448
- className: styles$5.hand
1449
- })));
1450
- };
1451
-
1452
- HandTap.propTypes = propTypes$8;
1453
- HandTap.defaultProps = defaultProps$8;
1454
-
1455
- var styles$4 = {"container":"micromag-viewer-screen-container","handTap":"micromag-viewer-screen-handTap"};
1456
-
1457
- var propTypes$7 = {
1458
1686
  screen: PropTypes$1.screenComponent,
1459
1687
  renderContext: PropTypes$1.renderContext,
1460
1688
  screenState: PropTypes.string,
@@ -1464,10 +1692,10 @@ var propTypes$7 = {
1464
1692
  width: PropTypes.number,
1465
1693
  height: PropTypes.number,
1466
1694
  scale: PropTypes.number,
1467
- withNavigationHint: PropTypes.bool,
1695
+ // withNavigationHint: PropTypes.bool, // @todo
1468
1696
  className: PropTypes.string
1469
1697
  };
1470
- var defaultProps$7 = {
1698
+ var defaultProps$8 = {
1471
1699
  screen: null,
1472
1700
  renderContext: null,
1473
1701
  screenState: null,
@@ -1477,7 +1705,7 @@ var defaultProps$7 = {
1477
1705
  width: null,
1478
1706
  height: null,
1479
1707
  scale: null,
1480
- withNavigationHint: false,
1708
+ // withNavigationHint: false,
1481
1709
  className: null
1482
1710
  };
1483
1711
 
@@ -1491,10 +1719,9 @@ function ViewerScreen(_ref) {
1491
1719
  width = _ref.width,
1492
1720
  height = _ref.height,
1493
1721
  scale = _ref.scale,
1494
- withNavigationHint = _ref.withNavigationHint,
1495
1722
  className = _ref.className;
1496
1723
  return /*#__PURE__*/React.createElement("div", {
1497
- className: classNames([styles$4.container, _defineProperty({}, className, className !== null)])
1724
+ className: classNames([styles$5.container, _defineProperty({}, className, className !== null)])
1498
1725
  }, /*#__PURE__*/React.createElement("div", {
1499
1726
  style: {
1500
1727
  width: width,
@@ -1509,22 +1736,20 @@ function ViewerScreen(_ref) {
1509
1736
  active: active,
1510
1737
  current: current,
1511
1738
  mediaRef: mediaRef
1512
- })), withNavigationHint ? /*#__PURE__*/React.createElement(HandTap, {
1513
- className: styles$4.handTap
1514
- }) : null);
1739
+ })));
1515
1740
  }
1516
1741
 
1517
- ViewerScreen.propTypes = propTypes$7;
1518
- ViewerScreen.defaultProps = defaultProps$7;
1742
+ ViewerScreen.propTypes = propTypes$8;
1743
+ ViewerScreen.defaultProps = defaultProps$8;
1519
1744
 
1520
- var styles$3 = {"arrow":"micromag-viewer-buttons-navigation-button-arrow","next":"micromag-viewer-buttons-navigation-button-next","previous":"micromag-viewer-buttons-navigation-button-previous"};
1745
+ var styles$4 = {"arrow":"micromag-viewer-buttons-navigation-button-arrow","next":"micromag-viewer-buttons-navigation-button-next","previous":"micromag-viewer-buttons-navigation-button-previous"};
1521
1746
 
1522
- var propTypes$6 = {
1747
+ var propTypes$7 = {
1523
1748
  direction: PropTypes.oneOf(['previous', 'next']),
1524
1749
  onClick: PropTypes.func,
1525
1750
  className: PropTypes.string
1526
1751
  };
1527
- var defaultProps$6 = {
1752
+ var defaultProps$7 = {
1528
1753
  direction: 'next',
1529
1754
  onClick: null,
1530
1755
  className: null
@@ -1534,12 +1759,12 @@ var NavigationButton = function NavigationButton(_ref) {
1534
1759
  var direction = _ref.direction,
1535
1760
  onClick = _ref.onClick,
1536
1761
  className = _ref.className;
1537
- return /*#__PURE__*/React.createElement(Button, {
1538
- className: classNames([styles$3.container, styles$3[direction], _defineProperty({}, className, className !== null)]),
1762
+ return /*#__PURE__*/React.createElement(IconButton, {
1763
+ className: classNames([styles$4.container, styles$4[direction], _defineProperty({}, className, className !== null)]),
1539
1764
  onClick: onClick,
1540
1765
  iconPosition: direction === 'next' ? 'right' : 'left',
1541
1766
  icon: /*#__PURE__*/React.createElement("svg", {
1542
- className: styles$3.arrow,
1767
+ className: styles$4.arrow,
1543
1768
  xmlns: "http://www.w3.org/2000/svg",
1544
1769
  width: "10",
1545
1770
  height: "16",
@@ -1566,11 +1791,62 @@ var NavigationButton = function NavigationButton(_ref) {
1566
1791
  });
1567
1792
  };
1568
1793
 
1569
- NavigationButton.propTypes = propTypes$6;
1570
- NavigationButton.defaultProps = defaultProps$6;
1794
+ NavigationButton.propTypes = propTypes$7;
1795
+ NavigationButton.defaultProps = defaultProps$7;
1796
+
1797
+ var styles$3 = {"container":"micromag-viewer-partials-arrow-hint-container","inner":"micromag-viewer-partials-arrow-hint-inner","shadowFade":"micromag-viewer-partials-arrow-hint-shadowFade","arrow":"micromag-viewer-partials-arrow-hint-arrow","panX":"micromag-viewer-partials-arrow-hint-panX"};
1798
+
1799
+ var propTypes$6 = {
1800
+ className: PropTypes.string
1801
+ };
1802
+ var defaultProps$6 = {
1803
+ className: null
1804
+ };
1805
+
1806
+ var ArrowHint = function ArrowHint(_ref) {
1807
+ var className = _ref.className;
1808
+ return /*#__PURE__*/React.createElement("div", {
1809
+ className: classNames([styles$3.container, _defineProperty({}, className, className !== null)])
1810
+ }, /*#__PURE__*/React.createElement("div", {
1811
+ className: styles$3.inner
1812
+ }, /*#__PURE__*/React.createElement("svg", {
1813
+ className: styles$3.arrow,
1814
+ xmlns: "http://www.w3.org/2000/svg",
1815
+ width: "10",
1816
+ height: "16",
1817
+ viewBox: "0 0 10 16",
1818
+ fill: "currentColor"
1819
+ }, /*#__PURE__*/React.createElement("polygon", {
1820
+ points: "9.62 4.62 5 0 0.38 4.62 1.44 5.68 4.25 2.87 4.25 14.39 5.75 14.39 5.75 2.87 8.56 5.68 9.62 4.62"
1821
+ }))));
1822
+ };
1823
+
1824
+ ArrowHint.propTypes = propTypes$6;
1825
+ ArrowHint.defaultProps = defaultProps$6;
1571
1826
 
1572
1827
  var styles$2 = {"track":"micromag-viewer-partials-seek-bar-track","progress":"micromag-viewer-partials-seek-bar-progress","inner":"micromag-viewer-partials-seek-bar-inner","progressBar":"micromag-viewer-partials-seek-bar-progressBar","playHead":"micromag-viewer-partials-seek-bar-playHead","withSeekHead":"micromag-viewer-partials-seek-bar-withSeekHead","scrubbedTime":"micromag-viewer-partials-seek-bar-scrubbedTime","showTimestamp":"micromag-viewer-partials-seek-bar-showTimestamp"};
1573
1828
 
1829
+ var stopDragEventsPropagation = {
1830
+ onTouchMove: function onTouchMove(e) {
1831
+ return e.stopPropagation();
1832
+ },
1833
+ onTouchStart: function onTouchStart(e) {
1834
+ return e.stopPropagation();
1835
+ },
1836
+ onTouchEnd: function onTouchEnd(e) {
1837
+ return e.stopPropagation();
1838
+ },
1839
+ onPointerMove: function onPointerMove(e) {
1840
+ return e.stopPropagation();
1841
+ },
1842
+ onPointerUp: function onPointerUp(e) {
1843
+ return e.stopPropagation();
1844
+ },
1845
+ onPointerDown: function onPointerDown(e) {
1846
+ return e.stopPropagation();
1847
+ }
1848
+ };
1849
+
1574
1850
  function getFormattedTimestamp(s) {
1575
1851
  var withMilliseconds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1576
1852
  var sparts = withMilliseconds ? "".concat(s).split('.') : [];
@@ -1638,16 +1914,14 @@ var SeekBar = function SeekBar(_ref) {
1638
1914
  setShowTimestamp = _useState2[1];
1639
1915
 
1640
1916
  var onDrag = useCallback(function (_ref3) {
1641
- var event = _ref3.event,
1642
- _ref3$xy = _slicedToArray(_ref3.xy, 1),
1917
+ _ref3.event;
1918
+ var _ref3$xy = _slicedToArray(_ref3.xy, 1),
1643
1919
  x = _ref3$xy[0],
1644
1920
  elapsedTime = _ref3.elapsedTime,
1645
1921
  active = _ref3.active,
1646
1922
  tap = _ref3.tap,
1647
1923
  currentTarget = _ref3.currentTarget;
1648
1924
 
1649
- event.stopPropagation();
1650
-
1651
1925
  if (!active && elapsedTime > 300) {
1652
1926
  return;
1653
1927
  }
@@ -1662,14 +1936,12 @@ var SeekBar = function SeekBar(_ref) {
1662
1936
  onSeek(newProgress, tap);
1663
1937
  }
1664
1938
  }, [onSeek]);
1665
- var onDragStart = useCallback(function (event) {
1939
+ var onDragStart = useCallback(function () {
1666
1940
  setShowTimestamp(true);
1667
1941
 
1668
1942
  if (onSeekStart !== null) {
1669
1943
  onSeekStart();
1670
1944
  }
1671
-
1672
- event.stopPropagation();
1673
1945
  }, [onSeekStart, setShowTimestamp]);
1674
1946
  var onDragEnd = useCallback(function () {
1675
1947
  if (onSeekEnd !== null) {
@@ -1687,9 +1959,9 @@ var SeekBar = function SeekBar(_ref) {
1687
1959
  filterTaps: true
1688
1960
  }
1689
1961
  });
1690
- return /*#__PURE__*/React.createElement("div", {
1962
+ return /*#__PURE__*/React.createElement("div", Object.assign({
1691
1963
  className: classNames([styles$2.container, (_ref4 = {}, _defineProperty(_ref4, className, className !== null), _defineProperty(_ref4, styles$2.withSeekHead, withSeekHead), _defineProperty(_ref4, styles$2.showTimestamp, showTimestamp), _ref4)])
1692
- }, /*#__PURE__*/React.createElement("div", {
1964
+ }, stopDragEventsPropagation), /*#__PURE__*/React.createElement("div", {
1693
1965
  className: styles$2.inner
1694
1966
  }, /*#__PURE__*/React.createElement("div", {
1695
1967
  className: styles$2.progressBar,
@@ -1853,7 +2125,7 @@ function PlaybackControls(_ref) {
1853
2125
  var isCollapsed = controls && !controlsVisible && playing || !controls && mediaHasAudio;
1854
2126
  return /*#__PURE__*/React.createElement("div", {
1855
2127
  className: classNames([styles$1.container, (_ref4 = {}, _defineProperty(_ref4, className, className !== null), _defineProperty(_ref4, styles$1.withPlayPause, controls && !seekBarOnly), _defineProperty(_ref4, styles$1.withMute, hasMedia || controls), _defineProperty(_ref4, styles$1.withSeekBar, controls), _defineProperty(_ref4, styles$1.withSeekBarOnly, seekBarOnly), _defineProperty(_ref4, styles$1.isCollapsed, isCollapsed), _defineProperty(_ref4, styles$1.isMuted, muted), _defineProperty(_ref4, collapsedClassName, collapsedClassName !== null && isCollapsed), _ref4)])
1856
- }, /*#__PURE__*/React.createElement(Button, {
2128
+ }, /*#__PURE__*/React.createElement(Button$1, {
1857
2129
  className: styles$1.playPauseButton,
1858
2130
  style: {
1859
2131
  color: color
@@ -1911,7 +2183,7 @@ function PlaybackControls(_ref) {
1911
2183
  withSeekHead: !isCollapsed && !seekBarOnly,
1912
2184
  backgroundColor: color,
1913
2185
  progressColor: progressColor
1914
- }), /*#__PURE__*/React.createElement(Button, {
2186
+ }), /*#__PURE__*/React.createElement(Button$1, {
1915
2187
  className: styles$1.muteButton,
1916
2188
  style: {
1917
2189
  color: color
@@ -2074,10 +2346,10 @@ var propTypes$2 = {
2074
2346
  visitor: PropTypes$1.visitor,
2075
2347
  onScreenChange: PropTypes.func,
2076
2348
  tapNextScreenWidthPercent: PropTypes.number,
2077
- neighborScreensActive: PropTypes.number,
2078
2349
  storyIsParsed: PropTypes.bool,
2079
- // landscapeScreenMargin: PropTypes.number,
2080
- // landscapeSmallScreenScale: PropTypes.number,
2350
+ neighborScreensActive: PropTypes.number,
2351
+ neighborScreenOffset: PropTypes.number,
2352
+ neighborScreenScale: PropTypes.number,
2081
2353
  withMetadata: PropTypes.bool,
2082
2354
  withoutGestures: PropTypes.bool,
2083
2355
  withoutMenu: PropTypes.bool,
@@ -2118,10 +2390,10 @@ var defaultProps$2 = {
2118
2390
  visitor: null,
2119
2391
  onScreenChange: null,
2120
2392
  tapNextScreenWidthPercent: 0.8,
2121
- neighborScreensActive: 1,
2122
2393
  storyIsParsed: false,
2123
- // landscapeScreenMargin: 20,
2124
- // landscapeSmallScreenScale: 0.9,
2394
+ neighborScreensActive: 2,
2395
+ neighborScreenOffset: 105,
2396
+ neighborScreenScale: 0.8,
2125
2397
  withMetadata: false,
2126
2398
  withNeighborScreens: false,
2127
2399
  withNavigationHint: false,
@@ -2160,8 +2432,10 @@ var Viewer = function Viewer(_ref) {
2160
2432
  renderContext = _ref.renderContext,
2161
2433
  visitor = _ref.visitor,
2162
2434
  tapNextScreenWidthPercent = _ref.tapNextScreenWidthPercent,
2163
- neighborScreensActive = _ref.neighborScreensActive,
2164
2435
  storyIsParsed = _ref.storyIsParsed,
2436
+ neighborScreensActive = _ref.neighborScreensActive,
2437
+ neighborScreenOffset = _ref.neighborScreenOffset,
2438
+ neighborScreenScale = _ref.neighborScreenScale,
2165
2439
  withMetadata = _ref.withMetadata,
2166
2440
  withoutGestures = _ref.withoutGestures,
2167
2441
  withoutMenu = _ref.withoutMenu,
@@ -2169,9 +2443,9 @@ var Viewer = function Viewer(_ref) {
2169
2443
  withoutShareMenu = _ref.withoutShareMenu,
2170
2444
  withoutMenuShadow = _ref.withoutMenuShadow;
2171
2445
  _ref.withoutFullscreen;
2172
- var withoutNavigationArrow = _ref.withoutNavigationArrow;
2173
- _ref.withoutTransitions;
2174
- var withNeighborScreens = _ref.withNeighborScreens,
2446
+ var withoutNavigationArrow = _ref.withoutNavigationArrow,
2447
+ withoutTransitions = _ref.withoutTransitions,
2448
+ withNeighborScreens = _ref.withNeighborScreens,
2175
2449
  withNavigationHint = _ref.withNavigationHint,
2176
2450
  withoutPlaybackControls = _ref.withoutPlaybackControls,
2177
2451
  menuIsScreenWidth = _ref.menuIsScreenWidth,
@@ -2467,7 +2741,7 @@ var Viewer = function Viewer(_ref) {
2467
2741
 
2468
2742
  var _useDragProgress = useDragProgress({
2469
2743
  progress: screenIndex,
2470
- disabled: !isView,
2744
+ disabled: !isView || withoutTransitions,
2471
2745
  dragDisabled: withoutGestures,
2472
2746
  computeProgress: computeScreenProgress,
2473
2747
  onProgress: onScreenProgress,
@@ -2498,7 +2772,7 @@ var Viewer = function Viewer(_ref) {
2498
2772
  var clamped = Math.min(1, Math.max(0, Math.abs(t)));
2499
2773
  return {
2500
2774
  opacity: 1 - 0.75 * clamped,
2501
- transform: "translateX(".concat(t * 105, "%) scale(").concat(1 - 0.2 * clamped, ")"),
2775
+ transform: "translateX(".concat(t * neighborScreenOffset, "%) scale(").concat(1 - (1 - neighborScreenScale) * clamped, ")"),
2502
2776
  zIndex: screensCount - index
2503
2777
  };
2504
2778
  };
@@ -2593,6 +2867,7 @@ var Viewer = function Viewer(_ref) {
2593
2867
  shareBasePath: basePath,
2594
2868
  screenSize: screenSize,
2595
2869
  menuWidth: menuIsScreenWidth ? screenContainerWidth : null,
2870
+ theme: viewerTheme,
2596
2871
  trackingEnabled: trackingEnabled,
2597
2872
  onClickScreen: onClickScreen,
2598
2873
  onClickCloseViewer: onCloseViewer,
@@ -2614,7 +2889,6 @@ var Viewer = function Viewer(_ref) {
2614
2889
  overflow: !withNeighborScreens ? 'hidden' : null
2615
2890
  }
2616
2891
  }, screens.map(function (screen, i) {
2617
- // const current = i === parseInt(screenIndex, 10);
2618
2892
  var current = i === Math.round(screenIndexProgress); // base current on transition
2619
2893
 
2620
2894
  var active = i >= screenIndex - neighborScreensActive && i <= screenIndex + neighborScreensActive;
@@ -2639,8 +2913,7 @@ var Viewer = function Viewer(_ref) {
2639
2913
  renderContext: renderContext,
2640
2914
  width: screenWidth,
2641
2915
  height: screenHeight,
2642
- scale: screenScale,
2643
- withNavigationHint: withNavigationHint && !withNeighborScreens && current && screenIndex === 0 && !hasInteracted
2916
+ scale: screenScale
2644
2917
  }) : null);
2645
2918
  })), !withoutNavigationArrow && !withNeighborScreens && screenIndex < screens.length - 1 ? /*#__PURE__*/React.createElement(NavigationButton, {
2646
2919
  direction: "next",
@@ -2651,7 +2924,9 @@ var Viewer = function Viewer(_ref) {
2651
2924
  ref: playbackControlsContainerRef
2652
2925
  }, /*#__PURE__*/React.createElement(PlaybackControls, {
2653
2926
  className: styles$6.controls
2654
- })) : null) : null, /*#__PURE__*/React.createElement(WebViewContainer, {
2927
+ })) : null, withNavigationHint && !withNeighborScreens && screenIndex === 0 && !hasInteracted ? /*#__PURE__*/React.createElement(ArrowHint, {
2928
+ className: styles$6.arrowHint
2929
+ }) : null) : null, /*#__PURE__*/React.createElement(WebViewContainer, {
2655
2930
  className: styles$6.webView,
2656
2931
  style: {
2657
2932
  maxWidth: Math.max(screenContainerWidth, 600)