@micromag/viewer 0.3.181 → 0.3.182

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/lib/index.js CHANGED
@@ -234,26 +234,234 @@ function useScreenInteraction() {
234
234
  };
235
235
  }
236
236
 
237
- var _excluded$5 = ["className", "onClick", "theme"];
238
- var propTypes$k = {
237
+ 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"};
238
+
239
+ 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"];
240
+ var propTypes$n = {
241
+ type: PropTypes__default["default"].string,
242
+ theme: core.PropTypes.buttonTheme,
243
+ size: core.PropTypes.buttonSize,
244
+ href: PropTypes__default["default"].string,
245
+ external: PropTypes__default["default"].bool,
246
+ direct: PropTypes__default["default"].bool,
247
+ target: PropTypes__default["default"].string,
248
+ label: core.PropTypes.label,
249
+ children: core.PropTypes.label,
250
+ focusable: PropTypes__default["default"].bool,
251
+ active: PropTypes__default["default"].bool,
252
+ icon: PropTypes__default["default"].node,
253
+ iconPosition: PropTypes__default["default"].oneOf(['left', 'right', 'inline']),
254
+ disabled: PropTypes__default["default"].bool,
255
+ loading: PropTypes__default["default"].bool,
256
+ disableOnLoading: PropTypes__default["default"].bool,
257
+ withoutTheme: PropTypes__default["default"].bool,
258
+ asLink: PropTypes__default["default"].bool,
239
259
  className: PropTypes__default["default"].string,
260
+ iconClassName: PropTypes__default["default"].string,
261
+ labelClassName: PropTypes__default["default"].string,
240
262
  onClick: PropTypes__default["default"].func,
241
- theme: core.PropTypes.viewerTheme
263
+ refButton: PropTypes__default["default"].oneOfType([PropTypes__default["default"].func, PropTypes__default["default"].shape({
264
+ current: PropTypes__default["default"].any // eslint-disable-line
265
+
266
+ })])
242
267
  };
243
- var defaultProps$k = {
268
+ var defaultProps$n = {
269
+ type: 'button',
270
+ theme: null,
271
+ size: null,
272
+ href: null,
273
+ external: false,
274
+ direct: false,
275
+ target: '_blank',
276
+ label: null,
277
+ children: null,
278
+ focusable: true,
279
+ active: false,
280
+ icon: null,
281
+ iconPosition: 'inline',
282
+ disabled: false,
283
+ loading: false,
284
+ disableOnLoading: true,
285
+ withoutTheme: false,
286
+ asLink: false,
244
287
  className: null,
288
+ iconClassName: null,
289
+ labelClassName: null,
245
290
  onClick: null,
246
- theme: null
291
+ refButton: null
292
+ };
293
+
294
+ var Button = function Button(_ref) {
295
+ var _ref2;
296
+
297
+ var type = _ref.type,
298
+ theme = _ref.theme;
299
+ _ref.size;
300
+ var href = _ref.href,
301
+ external = _ref.external,
302
+ direct = _ref.direct,
303
+ target = _ref.target,
304
+ label = _ref.label,
305
+ children = _ref.children,
306
+ focusable = _ref.focusable;
307
+ _ref.active;
308
+ var icon = _ref.icon,
309
+ iconPosition = _ref.iconPosition,
310
+ disabled = _ref.disabled,
311
+ loading = _ref.loading,
312
+ disableOnLoading = _ref.disableOnLoading;
313
+ _ref.withoutTheme;
314
+ var asLink = _ref.asLink,
315
+ onClick = _ref.onClick,
316
+ className = _ref.className,
317
+ iconClassName = _ref.iconClassName,
318
+ labelClassName = _ref.labelClassName,
319
+ refButton = _ref.refButton,
320
+ props = _objectWithoutProperties__default["default"](_ref, _excluded$8);
321
+
322
+ var finalLabel = label || children;
323
+ var text = finalLabel !== null ? /*#__PURE__*/React__default["default"].createElement(components.Label, null, finalLabel) : null;
324
+ var hasChildren = label !== null && children !== null;
325
+ var hasIcon = icon !== null;
326
+ var hasInlineIcon = hasIcon && (iconPosition === 'inline' || text === null);
327
+ var hasIconColumns = hasIcon && !hasInlineIcon;
328
+ var buttonClassNames = classNames__default["default"]([styles$g.container, styles$g["icon-".concat(iconPosition)], (_ref2 = {}, _defineProperty__default["default"](_ref2, styles$g.withIcon, hasIcon), _defineProperty__default["default"](_ref2, styles$g.withIconColumns, hasIconColumns), _defineProperty__default["default"](_ref2, styles$g.withText, text !== null), _defineProperty__default["default"](_ref2, styles$g.isLink, href !== null), _defineProperty__default["default"](_ref2, styles$g.asLink, asLink), _defineProperty__default["default"](_ref2, styles$g.isDisabled, disabled), _defineProperty__default["default"](_ref2, styles$g.isLoading, loading), _defineProperty__default["default"](_ref2, className, className !== null), _ref2)]);
329
+
330
+ var _ref3 = theme || {},
331
+ _ref3$colors = _ref3.colors,
332
+ colors = _ref3$colors === void 0 ? null : _ref3$colors;
333
+
334
+ var _ref4 = colors || {},
335
+ _ref4$primary = _ref4.primary,
336
+ brandPrimaryColor = _ref4$primary === void 0 ? null : _ref4$primary;
337
+
338
+ var primaryColor = utils.getStyleFromColor(brandPrimaryColor, 'color');
339
+
340
+ var buttonStyles = _objectSpread__default["default"]({}, primaryColor);
341
+
342
+ var content = /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, hasInlineIcon ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("span", {
343
+ className: classNames__default["default"]([styles$g.icon, _defineProperty__default["default"]({}, iconClassName, iconClassName !== null)])
344
+ }, icon), text !== null ? /*#__PURE__*/React__default["default"].createElement("span", {
345
+ className: classNames__default["default"]([styles$g.label, _defineProperty__default["default"]({}, labelClassName, labelClassName !== null)])
346
+ }, text) : null) : null, hasIconColumns ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, iconPosition === 'left' ? /*#__PURE__*/React__default["default"].createElement("span", {
347
+ className: classNames__default["default"]([styles$g.icon, styles$g.left, _defineProperty__default["default"]({}, iconClassName, iconClassName !== null && iconPosition === 'left')])
348
+ }, icon) : null, /*#__PURE__*/React__default["default"].createElement("span", {
349
+ className: classNames__default["default"]([styles$g.center, styles$g.label, _defineProperty__default["default"]({}, labelClassName, labelClassName !== null)])
350
+ }, text), iconPosition === 'right' ? /*#__PURE__*/React__default["default"].createElement("span", {
351
+ className: classNames__default["default"]([styles$g.icon, styles$g.right, _defineProperty__default["default"]({}, iconClassName, iconClassName !== null && iconPosition === 'right')])
352
+ }, icon) : null, hasChildren ? children : null) : null, !hasIcon ? text : null, hasChildren ? children : null);
353
+
354
+ if (href !== null) {
355
+ var linkClassNames = classNames__default["default"]([buttonClassNames, _defineProperty__default["default"]({
356
+ disabled: disabled
357
+ }, styles$g.linkDisabled, disabled)]);
358
+ return external || direct ? /*#__PURE__*/React__default["default"].createElement("a", Object.assign({}, props, {
359
+ href: disabled ? null : href,
360
+ className: linkClassNames,
361
+ style: buttonStyles,
362
+ onClick: onClick,
363
+ target: external ? target : null,
364
+ ref: refButton,
365
+ tabIndex: focusable ? '' : '-1'
366
+ }), content) : /*#__PURE__*/React__default["default"].createElement(reactRouterDom.Link, Object.assign({}, props, {
367
+ to: href,
368
+ className: linkClassNames,
369
+ style: buttonStyles,
370
+ onClick: onClick,
371
+ ref: refButton,
372
+ tabIndex: focusable ? '' : '-1'
373
+ }), content);
374
+ }
375
+
376
+ return /*#__PURE__*/React__default["default"].createElement("button", Object.assign({}, props, {
377
+ type: type,
378
+ className: buttonClassNames,
379
+ style: buttonStyles,
380
+ onClick: onClick,
381
+ disabled: disabled || disableOnLoading && loading,
382
+ ref: refButton,
383
+ tabIndex: focusable ? '0' : '-1'
384
+ }), content);
385
+ };
386
+
387
+ Button.propTypes = propTypes$n;
388
+ Button.defaultProps = defaultProps$n;
389
+
390
+ var styles$f = {"container":"micromag-viewer-buttons-icon-button-container","icon":"micromag-viewer-buttons-icon-button-icon","label":"micromag-viewer-buttons-icon-button-label"};
391
+
392
+ var _excluded$7 = ["className"];
393
+ var propTypes$m = {
394
+ className: PropTypes__default["default"].string
395
+ };
396
+ var defaultProps$m = {
397
+ className: null
398
+ };
399
+
400
+ var IconButton = function IconButton(_ref) {
401
+ var className = _ref.className,
402
+ props = _objectWithoutProperties__default["default"](_ref, _excluded$7);
403
+
404
+ return /*#__PURE__*/React__default["default"].createElement(Button, Object.assign({
405
+ className: classNames__default["default"]([styles$f.container, _defineProperty__default["default"]({}, className, className !== null)]),
406
+ labelClassName: styles$f.label,
407
+ iconClassName: styles$f.icon
408
+ }, props));
409
+ };
410
+
411
+ IconButton.propTypes = propTypes$m;
412
+ IconButton.defaultProps = defaultProps$m;
413
+
414
+ var _excluded$6 = ["className"];
415
+ var propTypes$l = {
416
+ className: PropTypes__default["default"].string
417
+ };
418
+ var defaultProps$l = {
419
+ className: null
420
+ };
421
+
422
+ var CloseButton = function CloseButton(_ref) {
423
+ var className = _ref.className,
424
+ props = _objectWithoutProperties__default["default"](_ref, _excluded$6);
425
+
426
+ var intl = reactIntl.useIntl();
427
+ return /*#__PURE__*/React__default["default"].createElement(IconButton, Object.assign({
428
+ className: classNames__default["default"]([_defineProperty__default["default"]({}, className, className !== null)]),
429
+ label: intl.formatMessage({
430
+ id: "dj/p/q",
431
+ defaultMessage: [{
432
+ "type": 0,
433
+ "value": "Close"
434
+ }]
435
+ }),
436
+ icon: /*#__PURE__*/React__default["default"].createElement("svg", {
437
+ xmlns: "http://www.w3.org/2000/svg",
438
+ width: "10",
439
+ height: "16",
440
+ viewBox: "0 0 10 16",
441
+ fill: "currentColor"
442
+ }, /*#__PURE__*/React__default["default"].createElement("polygon", {
443
+ 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"
444
+ }))
445
+ }, props));
446
+ };
447
+
448
+ CloseButton.propTypes = propTypes$l;
449
+ CloseButton.defaultProps = defaultProps$l;
450
+
451
+ var _excluded$5 = ["className"];
452
+ var propTypes$k = {
453
+ className: PropTypes__default["default"].string
454
+ };
455
+ var defaultProps$k = {
456
+ className: null
247
457
  };
248
458
 
249
459
  var MenuButton = function MenuButton(_ref) {
250
460
  var className = _ref.className,
251
- onClick = _ref.onClick,
252
- theme = _ref.theme,
253
461
  props = _objectWithoutProperties__default["default"](_ref, _excluded$5);
254
462
 
255
463
  var intl = reactIntl.useIntl();
256
- return /*#__PURE__*/React__default["default"].createElement(components.IconButton, Object.assign({
464
+ return /*#__PURE__*/React__default["default"].createElement(IconButton, Object.assign({
257
465
  className: classNames__default["default"]([_defineProperty__default["default"]({}, className, className !== null)]),
258
466
  label: intl.formatMessage({
259
467
  id: "F/gl4b",
@@ -263,43 +471,36 @@ var MenuButton = function MenuButton(_ref) {
263
471
  }]
264
472
  }),
265
473
  iconPosition: "right",
266
- icon: /*#__PURE__*/React__default["default"].createElement("svg", Object.assign({
474
+ icon: /*#__PURE__*/React__default["default"].createElement("svg", {
267
475
  xmlns: "http://www.w3.org/2000/svg",
268
476
  width: "10",
269
477
  height: "16",
270
478
  viewBox: "0 0 10 16",
271
479
  fill: "currentColor"
272
- }, theme), /*#__PURE__*/React__default["default"].createElement("rect", {
480
+ }, /*#__PURE__*/React__default["default"].createElement("rect", {
273
481
  width: "10",
274
482
  height: "16"
275
- })),
276
- onClick: onClick
483
+ }))
277
484
  }, props));
278
485
  };
279
486
 
280
487
  MenuButton.propTypes = propTypes$k;
281
488
  MenuButton.defaultProps = defaultProps$k;
282
489
 
283
- var _excluded$4 = ["className", "onClick", "theme"];
490
+ var _excluded$4 = ["className"];
284
491
  var propTypes$j = {
285
- className: PropTypes__default["default"].string,
286
- onClick: PropTypes__default["default"].func,
287
- theme: core.PropTypes.viewerTheme
492
+ className: PropTypes__default["default"].string
288
493
  };
289
494
  var defaultProps$j = {
290
- className: null,
291
- onClick: null,
292
- theme: null
495
+ className: null
293
496
  };
294
497
 
295
498
  var ShareButton = function ShareButton(_ref) {
296
499
  var className = _ref.className,
297
- onClick = _ref.onClick,
298
- theme = _ref.theme,
299
500
  props = _objectWithoutProperties__default["default"](_ref, _excluded$4);
300
501
 
301
502
  var intl = reactIntl.useIntl();
302
- return /*#__PURE__*/React__default["default"].createElement(components.IconButton, Object.assign({
503
+ return /*#__PURE__*/React__default["default"].createElement(IconButton, Object.assign({
303
504
  className: classNames__default["default"]([_defineProperty__default["default"]({}, className, className !== null)]),
304
505
  label: intl.formatMessage({
305
506
  id: "7tw6U2",
@@ -309,32 +510,76 @@ var ShareButton = function ShareButton(_ref) {
309
510
  }]
310
511
  }),
311
512
  iconPosition: "left",
312
- icon: /*#__PURE__*/React__default["default"].createElement("svg", Object.assign({
513
+ icon: /*#__PURE__*/React__default["default"].createElement("svg", {
313
514
  xmlns: "http://www.w3.org/2000/svg",
314
515
  width: "10",
315
516
  height: "16",
316
517
  viewBox: "0 0 10 16",
317
518
  fill: "currentColor"
318
- }, theme), /*#__PURE__*/React__default["default"].createElement("polygon", {
519
+ }, /*#__PURE__*/React__default["default"].createElement("polygon", {
319
520
  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"
320
521
  }), /*#__PURE__*/React__default["default"].createElement("polygon", {
321
522
  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"
322
- })),
323
- onClick: onClick
523
+ }))
324
524
  }, props));
325
525
  };
326
526
 
327
527
  ShareButton.propTypes = propTypes$j;
328
528
  ShareButton.defaultProps = defaultProps$j;
329
529
 
330
- var styles$d = {"container":"micromag-viewer-menus-menu-container-container","heightContainer":"micromag-viewer-menus-menu-container-heightContainer","inner":"micromag-viewer-menus-menu-container-inner"};
530
+ var styles$e = {"container":"micromag-viewer-buttons-toggle-button-container","normal":"micromag-viewer-buttons-toggle-button-normal","toggled":"micromag-viewer-buttons-toggle-button-toggled"};
331
531
 
332
532
  var propTypes$i = {
533
+ className: PropTypes__default["default"].string,
534
+ toggled: PropTypes__default["default"].number,
535
+ button: PropTypes__default["default"].node,
536
+ toggledButton: PropTypes__default["default"].node,
537
+ toggledButtonClassName: PropTypes__default["default"].string
538
+ };
539
+ var defaultProps$i = {
540
+ className: null,
541
+ toggled: 0,
542
+ button: null,
543
+ toggledButton: null,
544
+ toggledButtonClassName: null
545
+ };
546
+
547
+ var ToggleButton = function ToggleButton(_ref) {
548
+ var className = _ref.className,
549
+ toggled = _ref.toggled,
550
+ button = _ref.button,
551
+ toggledButton = _ref.toggledButton,
552
+ toggledButtonClassName = _ref.toggledButtonClassName;
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
+ return /*#__PURE__*/React__default["default"].createElement("div", {
562
+ className: classNames__default["default"]([styles$e.container, _defineProperty__default["default"]({}, className, className !== null)])
563
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
564
+ className: styles$e.normal,
565
+ style: getToggleButtonStyles(toggled)
566
+ }, button), /*#__PURE__*/React__default["default"].createElement("div", {
567
+ className: classNames__default["default"]([styles$e.toggled, _defineProperty__default["default"]({}, toggledButtonClassName, toggledButtonClassName !== null)]),
568
+ style: getToggleButtonStyles(toggled - 1)
569
+ }, toggledButton));
570
+ };
571
+
572
+ ToggleButton.propTypes = propTypes$i;
573
+ ToggleButton.defaultProps = defaultProps$i;
574
+
575
+ 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"};
576
+
577
+ var propTypes$h = {
333
578
  className: PropTypes__default["default"].string,
334
579
  transitionProgress: PropTypes__default["default"].number,
335
580
  children: PropTypes__default["default"].node
336
581
  };
337
- var defaultProps$i = {
582
+ var defaultProps$h = {
338
583
  className: null,
339
584
  transitionProgress: 0,
340
585
  children: null
@@ -354,19 +599,28 @@ var ViewerMenuContainer = function ViewerMenuContainer(_ref) {
354
599
  style: {
355
600
  height: "".concat(transitionProgress * 100, "%"),
356
601
  pointerEvents: transitionProgress < 0.25 ? 'none' : 'auto',
357
- zIndex: Math.round(2 - transitionProgress)
602
+ zIndex: Math.round(1 + transitionProgress)
358
603
  }
359
604
  }, /*#__PURE__*/React__default["default"].createElement("div", {
360
- className: styles$d.inner
361
- }, children)));
605
+ className: styles$d.inner,
606
+ style: {
607
+ paddingTop: "".concat(3 * transitionProgress, "rem"),
608
+ paddingBottom: "".concat(0.5 * transitionProgress, "rem")
609
+ }
610
+ }, children)), /*#__PURE__*/React__default["default"].createElement("div", {
611
+ className: styles$d.backdrop,
612
+ style: {
613
+ opacity: utils.easings.easeOutQuint(transitionProgress)
614
+ }
615
+ }));
362
616
  };
363
617
 
364
- ViewerMenuContainer.propTypes = propTypes$i;
365
- ViewerMenuContainer.defaultProps = defaultProps$i;
618
+ ViewerMenuContainer.propTypes = propTypes$h;
619
+ ViewerMenuContainer.defaultProps = defaultProps$h;
366
620
 
367
- 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"};
621
+ 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"};
368
622
 
369
- var propTypes$h = {
623
+ var propTypes$g = {
370
624
  current: PropTypes__default["default"].bool,
371
625
  active: PropTypes__default["default"].bool,
372
626
  colors: PropTypes__default["default"].shape({
@@ -379,7 +633,7 @@ var propTypes$h = {
379
633
  onClick: PropTypes__default["default"].func,
380
634
  className: PropTypes__default["default"].string
381
635
  };
382
- var defaultProps$h = {
636
+ var defaultProps$g = {
383
637
  current: false,
384
638
  active: false,
385
639
  colors: null,
@@ -451,13 +705,13 @@ var ViewerMenuDot = function ViewerMenuDot(_ref) {
451
705
  }))));
452
706
  };
453
707
 
454
- ViewerMenuDot.propTypes = propTypes$h;
455
- ViewerMenuDot.defaultProps = defaultProps$h;
708
+ ViewerMenuDot.propTypes = propTypes$g;
709
+ ViewerMenuDot.defaultProps = defaultProps$g;
456
710
 
457
711
  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"};
458
712
 
459
713
  var _excluded$3 = ["direction", "items", "onClickDot", "onClickScreensMenu", "colors", "closeable", "withItemClick", "withoutScreensMenu", "onClose", "className"];
460
- var propTypes$g = {
714
+ var propTypes$f = {
461
715
  direction: PropTypes__default["default"].oneOf(['horizontal', 'vertical']),
462
716
  items: core.PropTypes.menuItems,
463
717
  onClickDot: PropTypes__default["default"].func,
@@ -472,7 +726,7 @@ var propTypes$g = {
472
726
  onClose: PropTypes__default["default"].func,
473
727
  className: PropTypes__default["default"].string
474
728
  };
475
- var defaultProps$g = {
729
+ var defaultProps$f = {
476
730
  direction: 'horizontal',
477
731
  items: [],
478
732
  onClickDot: null,
@@ -594,23 +848,20 @@ var ViewerMenuDots = function ViewerMenuDots(_ref) {
594
848
  }))) : null));
595
849
  };
596
850
 
597
- ViewerMenuDots.propTypes = propTypes$g;
598
- ViewerMenuDots.defaultProps = defaultProps$g;
851
+ ViewerMenuDots.propTypes = propTypes$f;
852
+ ViewerMenuDots.defaultProps = defaultProps$f;
599
853
 
600
- var propTypes$f = {
854
+ var propTypes$e = {
601
855
  className: PropTypes__default["default"].string
602
856
  };
603
- var defaultProps$f = {
857
+ var defaultProps$e = {
604
858
  className: null
605
859
  };
606
860
 
607
861
  var StackIcon = function StackIcon(_ref) {
608
862
  var className = _ref.className;
609
863
  return /*#__PURE__*/React__default["default"].createElement("svg", {
610
- xmlns: "http://www.w3.org/2000/svg" // width="32"
611
- // height="32"
612
- // viewBox="0 0 32 32"
613
- ,
864
+ xmlns: "http://www.w3.org/2000/svg",
614
865
  width: "11.5",
615
866
  height: "17.5",
616
867
  viewBox: "0 0 11.5 17.5",
@@ -623,12 +874,12 @@ var StackIcon = function StackIcon(_ref) {
623
874
  }));
624
875
  };
625
876
 
626
- StackIcon.propTypes = propTypes$f;
627
- StackIcon.defaultProps = defaultProps$f;
877
+ StackIcon.propTypes = propTypes$e;
878
+ StackIcon.defaultProps = defaultProps$e;
628
879
 
629
880
  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"};
630
881
 
631
- var propTypes$e = {
882
+ var propTypes$d = {
632
883
  className: PropTypes__default["default"].string,
633
884
  item: core.PropTypes.menuItem,
634
885
  index: PropTypes__default["default"].number,
@@ -636,7 +887,7 @@ var propTypes$e = {
636
887
  screenSize: core.PropTypes.screenSize,
637
888
  focusable: PropTypes__default["default"].bool
638
889
  };
639
- var defaultProps$e = {
890
+ var defaultProps$d = {
640
891
  className: null,
641
892
  item: core.PropTypes.menuItem,
642
893
  index: 0,
@@ -716,12 +967,12 @@ var ViewerMenuScreen = function ViewerMenuScreen(_ref) {
716
967
  }) : null));
717
968
  };
718
969
 
719
- ViewerMenuScreen.propTypes = propTypes$e;
720
- ViewerMenuScreen.defaultProps = defaultProps$e;
970
+ ViewerMenuScreen.propTypes = propTypes$d;
971
+ ViewerMenuScreen.defaultProps = defaultProps$d;
721
972
 
722
- 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"};
973
+ 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"};
723
974
 
724
- var propTypes$d = {
975
+ var propTypes$c = {
725
976
  viewerTheme: core.PropTypes.viewerTheme,
726
977
  screenSize: core.PropTypes.screenSize,
727
978
  menuWidth: PropTypes__default["default"].number,
@@ -729,13 +980,14 @@ var propTypes$d = {
729
980
  focusable: PropTypes__default["default"].bool,
730
981
  onClickScreen: PropTypes__default["default"].func,
731
982
  maxThumbsWidth: PropTypes__default["default"].number,
732
- // shouldLoad: PropTypes.bool, // @todo still needed? to re-implement?
983
+ // @todo to reimplement:
984
+ // shouldLoad: PropTypes.bool,
733
985
  // toggleFullscreen: PropTypes.func,
734
986
  // fullscreenActive: PropTypes.bool,
735
987
  // fullscreenEnabled: PropTypes.bool,
736
988
  className: PropTypes__default["default"].string
737
989
  };
738
- var defaultProps$d = {
990
+ var defaultProps$c = {
739
991
  viewerTheme: null,
740
992
  screenSize: null,
741
993
  menuWidth: null,
@@ -765,51 +1017,33 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
765
1017
  _useDimensionObserver2 = _useDimensionObserver.width,
766
1018
  contentWidth = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2;
767
1019
 
768
- var thumbsPerLine = Math.max(Math.floor(contentWidth / maxThumbsWidth), 3); // Viewer theme
769
- // @todo room for improvement here probably
770
- // @todo also re-implement!!
1020
+ var thumbsPerLine = Math.max(Math.floor(contentWidth / maxThumbsWidth), 3); // @note cool, should be in recipes
771
1021
 
772
1022
  var _ref2 = viewerTheme || {},
773
- _ref2$colors = _ref2.colors,
774
- colors = _ref2$colors === void 0 ? null : _ref2$colors,
775
1023
  _ref2$background = _ref2.background,
776
1024
  background = _ref2$background === void 0 ? null : _ref2$background;
777
1025
  _ref2.logo;
778
1026
 
779
- var _ref3 = colors || {};
780
- _ref3.primary;
781
- _ref3.secondary;
782
-
783
- var _ref4 = background || {},
784
- _ref4$color = _ref4.color,
785
- brandBackgroundColor = _ref4$color === void 0 ? null : _ref4$color,
786
- _ref4$image = _ref4.image,
787
- image = _ref4$image === void 0 ? null : _ref4$image;
788
-
789
- var _ref5 = image || {},
790
- _ref5$url = _ref5.url,
791
- brandImageUrl = _ref5$url === void 0 ? null : _ref5$url; // const borderPrimaryColorStyle = getStyleFromColor(brandPrimaryColor, 'borderColor');
792
- // const colorSecondaryColorStyle = getStyleFromColor(brandSecondaryColor, 'color');
1027
+ var _ref3 = background || {},
1028
+ _ref3$color = _ref3.color,
1029
+ brandBackgroundColor = _ref3$color === void 0 ? null : _ref3$color,
1030
+ _ref3$image = _ref3.image,
1031
+ image = _ref3$image === void 0 ? null : _ref3$image;
793
1032
 
1033
+ var _ref4 = image || {},
1034
+ _ref4$url = _ref4.url,
1035
+ brandImageUrl = _ref4$url === void 0 ? null : _ref4$url;
794
1036
 
795
- var backgroundColorStyle = utils.getStyleFromColor(brandBackgroundColor, 'backgroundColor'); // const { url: brandLogoUrl = null } = brandLogo || {};
796
-
1037
+ var backgroundColorStyle = utils.getStyleFromColor(brandBackgroundColor, 'backgroundColor');
797
1038
  var brandImageStyle = brandImageUrl !== null ? {
798
1039
  backgroundImage: "url(".concat(brandImageUrl, ")")
799
- } : null; // @todo could probably use some work to avoid the visual jump from 3 screens to all of them
800
-
801
- var finalItems = React.useMemo(function () {
802
- return !focusable ? items.map(function (s, i) {
803
- return i > 3 ? {
804
- screenId: s.screenId
805
- } : s;
806
- }) : items;
807
- }, [items, focusable]); // @todo bookmarks
808
- // const bookmarks = finalItems.reduce((acc, it) => {
809
- // const { screen = null } = it || {};
810
- // const { bookmark = null } = screen || {};
811
- // return bookmark !== null ? [...acc, bookmark] : acc; // merge with array or return original array
812
- // }, []);
1040
+ } : null; // @todo reimplement the brand logo
1041
+ // const { url: brandLogoUrl = null } = brandLogo || {};
1042
+ // @todo optimize all of this the proper way
1043
+ // const finalItems = useMemo(
1044
+ // () => (!focusable ? items.map((s, i) => (i > 6 ? { screenId: s.screenId } : s)) : items),
1045
+ // [items, focusable],
1046
+ // );
813
1047
 
814
1048
  return /*#__PURE__*/React__default["default"].createElement("div", {
815
1049
  className: classNames__default["default"]([styles$9.container, _defineProperty__default["default"]({}, className, className !== null)]),
@@ -826,9 +1060,11 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
826
1060
  className: styles$9.nav
827
1061
  }, /*#__PURE__*/React__default["default"].createElement("ul", {
828
1062
  className: styles$9.items
829
- }, finalItems.map(function (item, index) {
830
- var _ref7 = item || {},
831
- screenId = _ref7.screenId;
1063
+ }, items.map(function (item, index) {
1064
+ var _ref6 = item || {},
1065
+ screenId = _ref6.screenId,
1066
+ _ref6$screen = _ref6.screen,
1067
+ screen = _ref6$screen === void 0 ? null : _ref6$screen;
832
1068
 
833
1069
  var itemStyles = {
834
1070
  width: "".concat(100 / thumbsPerLine, "%")
@@ -837,30 +1073,43 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
837
1073
  key: "item-".concat(screenId),
838
1074
  className: styles$9.item,
839
1075
  style: itemStyles
840
- }, item === null ? 'loading' : /*#__PURE__*/React__default["default"].createElement(ViewerMenuScreen, {
841
- className: styles$9.screenPreview,
1076
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
1077
+ className: styles$9.screen
1078
+ }, screen === null ? /*#__PURE__*/React__default["default"].createElement("svg", {
1079
+ className: styles$9.loading,
1080
+ xmlns: "http://www.w3.org/2000/svg",
1081
+ width: "10",
1082
+ height: "16",
1083
+ viewBox: "0 0 10 16",
1084
+ style: {
1085
+ animationDelay: "".concat(index * -50, "ms")
1086
+ }
1087
+ }, /*#__PURE__*/React__default["default"].createElement("rect", {
1088
+ width: "10",
1089
+ height: "16"
1090
+ })) : /*#__PURE__*/React__default["default"].createElement(ViewerMenuScreen, {
842
1091
  item: item,
843
1092
  index: index,
844
1093
  screenSize: screenSize,
845
1094
  onClick: onClickScreen,
846
1095
  focusable: focusable
847
- }));
1096
+ })));
848
1097
  }))))));
849
1098
  };
850
1099
 
851
- ViewerMenuPreview.propTypes = propTypes$d;
852
- ViewerMenuPreview.defaultProps = defaultProps$d;
1100
+ ViewerMenuPreview.propTypes = propTypes$c;
1101
+ ViewerMenuPreview.defaultProps = defaultProps$c;
853
1102
 
854
1103
  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"};
855
1104
 
856
- var propTypes$c = {
1105
+ var propTypes$b = {
857
1106
  screen: core.PropTypes.item,
858
1107
  title: PropTypes__default["default"].string,
859
1108
  url: PropTypes__default["default"].string,
860
1109
  description: PropTypes__default["default"].string,
861
1110
  className: PropTypes__default["default"].string
862
1111
  };
863
- var defaultProps$c = {
1112
+ var defaultProps$b = {
864
1113
  screen: null,
865
1114
  title: null,
866
1115
  url: null,
@@ -892,12 +1141,12 @@ var MicromagPreview = function MicromagPreview(_ref) {
892
1141
  }, url) : null, /*#__PURE__*/React__default["default"].createElement("p", null, description)));
893
1142
  };
894
1143
 
895
- MicromagPreview.propTypes = propTypes$c;
896
- MicromagPreview.defaultProps = defaultProps$c;
1144
+ MicromagPreview.propTypes = propTypes$b;
1145
+ MicromagPreview.defaultProps = defaultProps$b;
897
1146
 
898
- 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"};
1147
+ 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"};
899
1148
 
900
- var propTypes$b = {
1149
+ var propTypes$a = {
901
1150
  viewerTheme: core.PropTypes.viewerTheme,
902
1151
  menuWidth: PropTypes__default["default"].number,
903
1152
  title: PropTypes__default["default"].string,
@@ -910,7 +1159,7 @@ var propTypes$b = {
910
1159
  onShare: PropTypes__default["default"].func,
911
1160
  className: PropTypes__default["default"].string
912
1161
  };
913
- var defaultProps$b = {
1162
+ var defaultProps$a = {
914
1163
  viewerTheme: null,
915
1164
  menuWidth: null,
916
1165
  title: null,
@@ -936,56 +1185,43 @@ var ViewerMenuShare = function ViewerMenuShare(_ref) {
936
1185
  className = _ref.className;
937
1186
 
938
1187
  // Viewer theme
939
- // @todo room for improvement here probably
940
1188
  var _ref2 = viewerTheme || {},
941
- _ref2$colors = _ref2.colors,
942
- colors = _ref2$colors === void 0 ? null : _ref2$colors,
943
1189
  _ref2$background = _ref2.background,
944
1190
  background = _ref2$background === void 0 ? null : _ref2$background;
945
- _ref2.logo;
946
- // @todo could get from theme provider? need to re-implement
947
-
948
-
949
- var _ref3 = colors || {};
950
- _ref3.primary;
951
- _ref3.secondary;
952
-
953
- var _ref4 = background || {},
954
- _ref4$color = _ref4.color,
955
- brandBackgroundColor = _ref4$color === void 0 ? null : _ref4$color,
956
- _ref4$image = _ref4.image,
957
- image = _ref4$image === void 0 ? null : _ref4$image;
958
-
959
- var _ref5 = image || {},
960
- _ref5$url = _ref5.url,
961
- brandImageUrl = _ref5$url === void 0 ? null : _ref5$url; // const borderPrimaryColorStyle = getStyleFromColor(brandPrimaryColor, 'borderColor');
962
- // const colorSecondaryColorStyle = getStyleFromColor(brandSecondaryColor, 'color');
963
1191
 
1192
+ var _ref3 = background || {},
1193
+ _ref3$color = _ref3.color,
1194
+ brandBackgroundColor = _ref3$color === void 0 ? null : _ref3$color,
1195
+ _ref3$image = _ref3.image,
1196
+ image = _ref3$image === void 0 ? null : _ref3$image;
964
1197
 
965
- var backgroundColorStyle = utils.getStyleFromColor(brandBackgroundColor, 'backgroundColor'); // const { url: brandLogoUrl = null } = brandLogo || {};
1198
+ var _ref4 = image || {},
1199
+ _ref4$url = _ref4.url,
1200
+ brandImageUrl = _ref4$url === void 0 ? null : _ref4$url;
966
1201
 
1202
+ var backgroundColorStyle = utils.getStyleFromColor(brandBackgroundColor, 'backgroundColor');
967
1203
  var brandImageStyle = brandImageUrl !== null ? {
968
1204
  backgroundImage: "url(".concat(brandImageUrl, ")")
969
1205
  } : null;
970
1206
  var coverScreen = React.useMemo(function () {
971
- var _ref6 = items[0] || {},
972
- _ref6$screen = _ref6.screen,
973
- screen = _ref6$screen === void 0 ? null : _ref6$screen;
1207
+ var _ref5 = items[0] || {},
1208
+ _ref5$screen = _ref5.screen,
1209
+ screen = _ref5$screen === void 0 ? null : _ref5$screen;
974
1210
 
975
1211
  return screen;
976
1212
  }, [items]);
977
1213
  var currentScreen = React.useMemo(function () {
978
1214
  var found = items.find(function (item) {
979
- var _ref7 = item || {},
980
- _ref7$current = _ref7.current,
981
- current = _ref7$current === void 0 ? false : _ref7$current;
1215
+ var _ref6 = item || {},
1216
+ _ref6$current = _ref6.current,
1217
+ current = _ref6$current === void 0 ? false : _ref6$current;
982
1218
 
983
1219
  return current;
984
1220
  });
985
1221
 
986
- var _ref8 = found || {},
987
- _ref8$screen = _ref8.screen,
988
- screen = _ref8$screen === void 0 ? null : _ref8$screen;
1222
+ var _ref7 = found || {},
1223
+ _ref7$screen = _ref7.screen,
1224
+ screen = _ref7$screen === void 0 ? null : _ref7$screen;
989
1225
 
990
1226
  return screen;
991
1227
  }, [items, currentScreenIndex, focusable]);
@@ -1049,16 +1285,17 @@ var ViewerMenuShare = function ViewerMenuShare(_ref) {
1049
1285
  url: finalShareUrl,
1050
1286
  focusable: focusable,
1051
1287
  onShare: onShare,
1288
+ theme: viewerTheme,
1052
1289
  shareCurrentScreen: shareCurrentScreen
1053
1290
  }))));
1054
1291
  };
1055
1292
 
1056
- ViewerMenuShare.propTypes = propTypes$b;
1057
- ViewerMenuShare.defaultProps = defaultProps$b;
1293
+ ViewerMenuShare.propTypes = propTypes$a;
1294
+ ViewerMenuShare.defaultProps = defaultProps$a;
1058
1295
 
1059
- 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"};
1296
+ 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"};
1060
1297
 
1061
- var propTypes$a = {
1298
+ var propTypes$9 = {
1062
1299
  story: core.PropTypes.story.isRequired,
1063
1300
  currentScreenIndex: PropTypes__default["default"].number,
1064
1301
  toggleFullscreen: PropTypes__default["default"].func,
@@ -1082,7 +1319,7 @@ var propTypes$a = {
1082
1319
 
1083
1320
  })
1084
1321
  };
1085
- var defaultProps$a = {
1322
+ var defaultProps$9 = {
1086
1323
  currentScreenIndex: 0,
1087
1324
  toggleFullscreen: null,
1088
1325
  fullscreenActive: false,
@@ -1104,7 +1341,7 @@ var defaultProps$a = {
1104
1341
  };
1105
1342
 
1106
1343
  var ViewerMenu = function ViewerMenu(_ref) {
1107
- var _ref9;
1344
+ var _ref11;
1108
1345
 
1109
1346
  var story = _ref.story,
1110
1347
  currentScreenIndex = _ref.currentScreenIndex,
@@ -1201,7 +1438,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
1201
1438
  var base = typeof window !== 'undefined' ? window.location.host : '';
1202
1439
  var path = shareBasePath !== null ? "".concat(base).concat(shareBasePath) : base;
1203
1440
  return path;
1204
- }, [shareBasePath]); // @todo sorta not super good here
1441
+ }, [shareBasePath]); // @note possible to extract some of that logic
1205
1442
 
1206
1443
  var onOpenMenu = React.useCallback(function () {
1207
1444
  setMenuOpened(true);
@@ -1258,11 +1495,30 @@ var ViewerMenu = function ViewerMenu(_ref) {
1258
1495
  }
1259
1496
 
1260
1497
  return progress;
1261
- }, [menuOpened, onOpenShare]);
1498
+ }, [onOpenShare]);
1499
+ var computeShareProgressClose = React.useCallback(function (_ref8) {
1500
+ var active = _ref8.active,
1501
+ _ref8$direction = _slicedToArray__default["default"](_ref8.direction, 2),
1502
+ dy = _ref8$direction[1],
1503
+ _ref8$movement = _slicedToArray__default["default"](_ref8.movement, 2),
1504
+ my = _ref8$movement[1],
1505
+ _ref8$velocity = _slicedToArray__default["default"](_ref8.velocity, 2),
1506
+ vy = _ref8$velocity[1];
1507
+
1508
+ var progress = Math.max(0, my) / (window.innerHeight * 0.8);
1509
+ var reachedThreshold = (vy > 0.3 || Math.abs(progress) > 0.3) && dy !== -1;
1510
+
1511
+ if (!active) {
1512
+ if (reachedThreshold) onCloseShare();
1513
+ return reachedThreshold ? 0 : 1;
1514
+ }
1515
+
1516
+ return 1 - progress;
1517
+ }, [onCloseShare]);
1262
1518
 
1263
1519
  var _useDragProgress = hooks.useDragProgress({
1264
1520
  progress: shareOpened ? 1 : 0,
1265
- computeProgress: computeShareProgress,
1521
+ computeProgress: shareOpened ? computeShareProgressClose : computeShareProgress,
1266
1522
  springParams: {
1267
1523
  config: {
1268
1524
  tension: 300,
@@ -1271,17 +1527,16 @@ var ViewerMenu = function ViewerMenu(_ref) {
1271
1527
  }
1272
1528
  }),
1273
1529
  bindShareDrag = _useDragProgress.bind,
1274
- isDraggingShare = _useDragProgress.dragging,
1275
1530
  shareOpenedProgress = _useDragProgress.progress;
1276
1531
 
1277
- var computeMenuProgress = React.useCallback(function (_ref8) {
1278
- var active = _ref8.active,
1279
- _ref8$direction = _slicedToArray__default["default"](_ref8.direction, 2),
1280
- dy = _ref8$direction[1],
1281
- _ref8$movement = _slicedToArray__default["default"](_ref8.movement, 2),
1282
- my = _ref8$movement[1],
1283
- _ref8$velocity = _slicedToArray__default["default"](_ref8.velocity, 2),
1284
- vy = _ref8$velocity[1];
1532
+ var computeMenuProgress = React.useCallback(function (_ref9) {
1533
+ var active = _ref9.active,
1534
+ _ref9$direction = _slicedToArray__default["default"](_ref9.direction, 2),
1535
+ dy = _ref9$direction[1],
1536
+ _ref9$movement = _slicedToArray__default["default"](_ref9.movement, 2),
1537
+ my = _ref9$movement[1],
1538
+ _ref9$velocity = _slicedToArray__default["default"](_ref9.velocity, 2),
1539
+ vy = _ref9$velocity[1];
1285
1540
 
1286
1541
  var progress = Math.max(0, my) / (window.innerHeight * 0.8);
1287
1542
  var reachedThreshold = (vy > 0.3 || Math.abs(progress) > 0.3) && dy !== -1;
@@ -1292,11 +1547,30 @@ var ViewerMenu = function ViewerMenu(_ref) {
1292
1547
  }
1293
1548
 
1294
1549
  return progress;
1295
- }, [menuOpened, onOpenMenu]);
1550
+ }, [onOpenMenu]);
1551
+ var computeMenuProgressClose = React.useCallback(function (_ref10) {
1552
+ var active = _ref10.active,
1553
+ _ref10$direction = _slicedToArray__default["default"](_ref10.direction, 2),
1554
+ dy = _ref10$direction[1],
1555
+ _ref10$movement = _slicedToArray__default["default"](_ref10.movement, 2),
1556
+ my = _ref10$movement[1],
1557
+ _ref10$velocity = _slicedToArray__default["default"](_ref10.velocity, 2),
1558
+ vy = _ref10$velocity[1];
1559
+
1560
+ var progress = Math.max(0, my) / (window.innerHeight * 0.8);
1561
+ var reachedThreshold = (vy > 0.3 || Math.abs(progress) > 0.3) && dy !== -1;
1562
+
1563
+ if (!active) {
1564
+ if (reachedThreshold) onCloseMenu();
1565
+ return reachedThreshold ? 0 : 1;
1566
+ }
1567
+
1568
+ return 1 - progress;
1569
+ }, [onCloseMenu]);
1296
1570
 
1297
1571
  var _useDragProgress2 = hooks.useDragProgress({
1298
1572
  progress: menuOpened ? 1 : 0,
1299
- computeProgress: computeMenuProgress,
1573
+ computeProgress: menuOpened ? computeMenuProgressClose : computeMenuProgress,
1300
1574
  springParams: {
1301
1575
  config: {
1302
1576
  tension: 300,
@@ -1305,7 +1579,6 @@ var ViewerMenu = function ViewerMenu(_ref) {
1305
1579
  }
1306
1580
  }),
1307
1581
  bindMenuDrag = _useDragProgress2.bind,
1308
- isDraggingMenu = _useDragProgress2.dragging,
1309
1582
  menuOpenedProgress = _useDragProgress2.progress;
1310
1583
 
1311
1584
  var keyboardShortcuts = React.useMemo(function () {
@@ -1322,7 +1595,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
1322
1595
 
1323
1596
  var dotsOpacity = Math.min(1, Math.max(0, 1 - (menuOpenedProgress + shareOpenedProgress)));
1324
1597
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
1325
- className: classNames__default["default"]([styles$6.menuNavContainer, (_ref9 = {}, _defineProperty__default["default"](_ref9, styles$6.withShadow, withShadow), _defineProperty__default["default"](_ref9, styles$6.isOpened, menuOpened || shareOpened), _ref9)]),
1598
+ className: classNames__default["default"]([styles$6.menuNavContainer, (_ref11 = {}, _defineProperty__default["default"](_ref11, styles$6.withShadow, withShadow), _defineProperty__default["default"](_ref11, styles$6.isOpened, menuOpened || shareOpened), _ref11)]),
1326
1599
  ref: refDots,
1327
1600
  style: {
1328
1601
  width: menuWidth
@@ -1331,47 +1604,43 @@ var ViewerMenu = function ViewerMenu(_ref) {
1331
1604
  className: styles$6.menuTopContainer
1332
1605
  }, !withoutShareMenu ? /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
1333
1606
  className: classNames__default["default"]([styles$6.menuItem, styles$6.menuShare])
1334
- }, bindShareDrag()), /*#__PURE__*/React__default["default"].createElement(components.SlidingButtons, {
1607
+ }, bindShareDrag()), /*#__PURE__*/React__default["default"].createElement(ToggleButton, {
1335
1608
  className: styles$6.slidingButton,
1336
- current: shareOpenedProgress,
1337
- immediate: isDraggingShare,
1338
- buttons: [ShareButton, components.CloseButton],
1339
- buttonsProps: [{
1340
- key: 'share',
1609
+ button: /*#__PURE__*/React__default["default"].createElement(ShareButton, {
1341
1610
  className: styles$6.menuButton,
1342
1611
  onClick: onOpenShare,
1343
- theme: menuTheme
1344
- }, {
1345
- key: 'close-share',
1612
+ theme: menuTheme,
1613
+ iconPosition: "left"
1614
+ }),
1615
+ toggledButton: /*#__PURE__*/React__default["default"].createElement(CloseButton, {
1346
1616
  className: styles$6.menuButton,
1347
1617
  onClick: onCloseShare,
1348
1618
  theme: menuTheme,
1349
- iconPosition: 'left'
1350
- }]
1619
+ iconPosition: "left"
1620
+ }),
1621
+ toggled: shareOpenedProgress
1351
1622
  })) : null, !withoutScreensMenu ? /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
1352
- className: classNames__default["default"]([styles$6.menuItem, styles$6.menuScreens])
1353
- }, bindMenuDrag()), /*#__PURE__*/React__default["default"].createElement(components.SlidingButtons, {
1623
+ className: classNames__default["default"]([styles$6.menuItem, styles$6.menuItemScreens])
1624
+ }, bindMenuDrag()), /*#__PURE__*/React__default["default"].createElement(ToggleButton, {
1354
1625
  className: styles$6.slidingButton,
1355
- current: menuOpenedProgress,
1356
- immediate: isDraggingMenu,
1357
- buttons: [MenuButton, components.CloseButton],
1358
- buttonsProps: [{
1359
- key: 'menu',
1626
+ button: /*#__PURE__*/React__default["default"].createElement(MenuButton, {
1360
1627
  className: styles$6.menuButton,
1361
1628
  onClick: onOpenMenu,
1362
1629
  theme: menuTheme
1363
- }, {
1364
- key: 'close-menu',
1630
+ }),
1631
+ toggledButton: /*#__PURE__*/React__default["default"].createElement(CloseButton, {
1365
1632
  className: styles$6.menuButton,
1366
1633
  onClick: onCloseMenu,
1367
1634
  theme: menuTheme,
1368
- iconPosition: 'right'
1369
- }]
1635
+ iconPosition: "right"
1636
+ }),
1637
+ toggled: menuOpenedProgress,
1638
+ toggledButtonClassName: styles$6.screensMenuButtonToggled
1370
1639
  })) : null), /*#__PURE__*/React__default["default"].createElement(ViewerMenuDots, Object.assign({}, menuTheme, {
1371
1640
  direction: "horizontal",
1372
1641
  items: items,
1373
1642
  onClickDot: onClickScreen,
1374
- onClickMenu: onOpenMenu,
1643
+ onClickScreensMenu: onOpenMenu,
1375
1644
  closeable: closeable,
1376
1645
  withItemClick: withDotItemClick,
1377
1646
  withoutScreensMenu: withoutScreensMenu,
@@ -1379,12 +1648,14 @@ var ViewerMenu = function ViewerMenu(_ref) {
1379
1648
  onClose: onClickCloseViewer,
1380
1649
  className: styles$6.dots,
1381
1650
  style: {
1382
- opacity: dotsOpacity
1651
+ opacity: Math.pow(dotsOpacity, 5),
1652
+ // @note this is like a "quint" easing, meaning it'll go towards 1 slowly first and then fast as it approaches 1
1653
+ pointerEvents: dotsOpacity < 1 ? 'none' : 'auto'
1383
1654
  }
1384
1655
  }))), /*#__PURE__*/React__default["default"].createElement(ViewerMenuContainer, {
1385
1656
  className: styles$6.menuContainerShare,
1386
1657
  transitionProgress: shareOpenedProgress
1387
- }, /*#__PURE__*/React__default["default"].createElement(ViewerMenuShare, {
1658
+ }, shareOpenedProgress > 0 ? /*#__PURE__*/React__default["default"].createElement(ViewerMenuShare, {
1388
1659
  viewerTheme: viewerTheme,
1389
1660
  className: styles$6.menuShare,
1390
1661
  title: title,
@@ -1396,15 +1667,14 @@ var ViewerMenu = function ViewerMenu(_ref) {
1396
1667
  shareUrl: shareUrl,
1397
1668
  onShare: onShare,
1398
1669
  onClose: onCloseShare
1399
- })), /*#__PURE__*/React__default["default"].createElement(ViewerMenuContainer, {
1670
+ }) : null), /*#__PURE__*/React__default["default"].createElement(ViewerMenuContainer, {
1400
1671
  className: styles$6.menuContainerScreens,
1401
1672
  transitionProgress: menuOpenedProgress
1402
- }, /*#__PURE__*/React__default["default"].createElement(ViewerMenuPreview, {
1673
+ }, menuOpenedProgress > 0 ? /*#__PURE__*/React__default["default"].createElement(ViewerMenuPreview, {
1403
1674
  viewerTheme: viewerTheme,
1404
1675
  className: styles$6.menuPreview,
1405
1676
  screenSize: screenSize,
1406
1677
  menuWidth: menuWidth,
1407
- focusable: menuOpened,
1408
1678
  items: items,
1409
1679
  currentScreenIndex: currentScreenIndex,
1410
1680
  shareUrl: shareUrl,
@@ -1414,67 +1684,15 @@ var ViewerMenu = function ViewerMenu(_ref) {
1414
1684
  toggleFullscreen: toggleFullscreen,
1415
1685
  fullscreenActive: fullscreenActive,
1416
1686
  fullscreenEnabled: fullscreenEnabled
1417
- })));
1418
- };
1419
-
1420
- ViewerMenu.propTypes = propTypes$a;
1421
- ViewerMenu.defaultProps = defaultProps$a;
1422
-
1423
- 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"};
1424
-
1425
- var propTypes$9 = {
1426
- color: PropTypes__default["default"].string,
1427
- className: PropTypes__default["default"].string
1428
- };
1429
- var defaultProps$9 = {
1430
- color: 'currentColor',
1431
- className: null
1687
+ }) : null));
1432
1688
  };
1433
1689
 
1434
- var HandIcon = function HandIcon(_ref) {
1435
- var color = _ref.color,
1436
- className = _ref.className;
1437
- return /*#__PURE__*/React__default["default"].createElement("svg", {
1438
- className: className,
1439
- xmlns: "http://www.w3.org/2000/svg",
1440
- viewBox: "0 0 367.24 482.87"
1441
- }, /*#__PURE__*/React__default["default"].createElement("path", {
1442
- 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",
1443
- transform: "translate(-166.38 -60.59)",
1444
- fill: color,
1445
- fillRule: "evenodd"
1446
- }));
1447
- };
1690
+ ViewerMenu.propTypes = propTypes$9;
1691
+ ViewerMenu.defaultProps = defaultProps$9;
1448
1692
 
1449
- HandIcon.propTypes = propTypes$9;
1450
- HandIcon.defaultProps = defaultProps$9;
1693
+ var styles$5 = {"container":"micromag-viewer-screen-container","navigationHint":"micromag-viewer-screen-navigationHint"};
1451
1694
 
1452
1695
  var propTypes$8 = {
1453
- className: PropTypes__default["default"].string
1454
- };
1455
- var defaultProps$8 = {
1456
- className: null
1457
- };
1458
-
1459
- var HandTap = function HandTap(_ref) {
1460
- var className = _ref.className;
1461
- return /*#__PURE__*/React__default["default"].createElement("div", {
1462
- className: classNames__default["default"]([styles$5.container, _defineProperty__default["default"]({}, className, className !== null)])
1463
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1464
- className: styles$5.inner
1465
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1466
- className: styles$5.circle
1467
- }), /*#__PURE__*/React__default["default"].createElement(HandIcon, {
1468
- className: styles$5.hand
1469
- })));
1470
- };
1471
-
1472
- HandTap.propTypes = propTypes$8;
1473
- HandTap.defaultProps = defaultProps$8;
1474
-
1475
- var styles$4 = {"container":"micromag-viewer-screen-container","handTap":"micromag-viewer-screen-handTap"};
1476
-
1477
- var propTypes$7 = {
1478
1696
  screen: core.PropTypes.screenComponent,
1479
1697
  renderContext: core.PropTypes.renderContext,
1480
1698
  screenState: PropTypes__default["default"].string,
@@ -1484,10 +1702,10 @@ var propTypes$7 = {
1484
1702
  width: PropTypes__default["default"].number,
1485
1703
  height: PropTypes__default["default"].number,
1486
1704
  scale: PropTypes__default["default"].number,
1487
- withNavigationHint: PropTypes__default["default"].bool,
1705
+ // withNavigationHint: PropTypes.bool, // @todo
1488
1706
  className: PropTypes__default["default"].string
1489
1707
  };
1490
- var defaultProps$7 = {
1708
+ var defaultProps$8 = {
1491
1709
  screen: null,
1492
1710
  renderContext: null,
1493
1711
  screenState: null,
@@ -1497,7 +1715,7 @@ var defaultProps$7 = {
1497
1715
  width: null,
1498
1716
  height: null,
1499
1717
  scale: null,
1500
- withNavigationHint: false,
1718
+ // withNavigationHint: false,
1501
1719
  className: null
1502
1720
  };
1503
1721
 
@@ -1511,10 +1729,9 @@ function ViewerScreen(_ref) {
1511
1729
  width = _ref.width,
1512
1730
  height = _ref.height,
1513
1731
  scale = _ref.scale,
1514
- withNavigationHint = _ref.withNavigationHint,
1515
1732
  className = _ref.className;
1516
1733
  return /*#__PURE__*/React__default["default"].createElement("div", {
1517
- className: classNames__default["default"]([styles$4.container, _defineProperty__default["default"]({}, className, className !== null)])
1734
+ className: classNames__default["default"]([styles$5.container, _defineProperty__default["default"]({}, className, className !== null)])
1518
1735
  }, /*#__PURE__*/React__default["default"].createElement("div", {
1519
1736
  style: {
1520
1737
  width: width,
@@ -1529,22 +1746,20 @@ function ViewerScreen(_ref) {
1529
1746
  active: active,
1530
1747
  current: current,
1531
1748
  mediaRef: mediaRef
1532
- })), withNavigationHint ? /*#__PURE__*/React__default["default"].createElement(HandTap, {
1533
- className: styles$4.handTap
1534
- }) : null);
1749
+ })));
1535
1750
  }
1536
1751
 
1537
- ViewerScreen.propTypes = propTypes$7;
1538
- ViewerScreen.defaultProps = defaultProps$7;
1752
+ ViewerScreen.propTypes = propTypes$8;
1753
+ ViewerScreen.defaultProps = defaultProps$8;
1539
1754
 
1540
- var styles$3 = {"arrow":"micromag-viewer-buttons-navigation-button-arrow","next":"micromag-viewer-buttons-navigation-button-next","previous":"micromag-viewer-buttons-navigation-button-previous"};
1755
+ var styles$4 = {"arrow":"micromag-viewer-buttons-navigation-button-arrow","next":"micromag-viewer-buttons-navigation-button-next","previous":"micromag-viewer-buttons-navigation-button-previous"};
1541
1756
 
1542
- var propTypes$6 = {
1757
+ var propTypes$7 = {
1543
1758
  direction: PropTypes__default["default"].oneOf(['previous', 'next']),
1544
1759
  onClick: PropTypes__default["default"].func,
1545
1760
  className: PropTypes__default["default"].string
1546
1761
  };
1547
- var defaultProps$6 = {
1762
+ var defaultProps$7 = {
1548
1763
  direction: 'next',
1549
1764
  onClick: null,
1550
1765
  className: null
@@ -1554,12 +1769,12 @@ var NavigationButton = function NavigationButton(_ref) {
1554
1769
  var direction = _ref.direction,
1555
1770
  onClick = _ref.onClick,
1556
1771
  className = _ref.className;
1557
- return /*#__PURE__*/React__default["default"].createElement(components.Button, {
1558
- className: classNames__default["default"]([styles$3.container, styles$3[direction], _defineProperty__default["default"]({}, className, className !== null)]),
1772
+ return /*#__PURE__*/React__default["default"].createElement(IconButton, {
1773
+ className: classNames__default["default"]([styles$4.container, styles$4[direction], _defineProperty__default["default"]({}, className, className !== null)]),
1559
1774
  onClick: onClick,
1560
1775
  iconPosition: direction === 'next' ? 'right' : 'left',
1561
1776
  icon: /*#__PURE__*/React__default["default"].createElement("svg", {
1562
- className: styles$3.arrow,
1777
+ className: styles$4.arrow,
1563
1778
  xmlns: "http://www.w3.org/2000/svg",
1564
1779
  width: "10",
1565
1780
  height: "16",
@@ -1586,11 +1801,62 @@ var NavigationButton = function NavigationButton(_ref) {
1586
1801
  });
1587
1802
  };
1588
1803
 
1589
- NavigationButton.propTypes = propTypes$6;
1590
- NavigationButton.defaultProps = defaultProps$6;
1804
+ NavigationButton.propTypes = propTypes$7;
1805
+ NavigationButton.defaultProps = defaultProps$7;
1806
+
1807
+ 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"};
1808
+
1809
+ var propTypes$6 = {
1810
+ className: PropTypes__default["default"].string
1811
+ };
1812
+ var defaultProps$6 = {
1813
+ className: null
1814
+ };
1815
+
1816
+ var ArrowHint = function ArrowHint(_ref) {
1817
+ var className = _ref.className;
1818
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1819
+ className: classNames__default["default"]([styles$3.container, _defineProperty__default["default"]({}, className, className !== null)])
1820
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
1821
+ className: styles$3.inner
1822
+ }, /*#__PURE__*/React__default["default"].createElement("svg", {
1823
+ className: styles$3.arrow,
1824
+ xmlns: "http://www.w3.org/2000/svg",
1825
+ width: "10",
1826
+ height: "16",
1827
+ viewBox: "0 0 10 16",
1828
+ fill: "currentColor"
1829
+ }, /*#__PURE__*/React__default["default"].createElement("polygon", {
1830
+ 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"
1831
+ }))));
1832
+ };
1833
+
1834
+ ArrowHint.propTypes = propTypes$6;
1835
+ ArrowHint.defaultProps = defaultProps$6;
1591
1836
 
1592
1837
  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"};
1593
1838
 
1839
+ var stopDragEventsPropagation = {
1840
+ onTouchMove: function onTouchMove(e) {
1841
+ return e.stopPropagation();
1842
+ },
1843
+ onTouchStart: function onTouchStart(e) {
1844
+ return e.stopPropagation();
1845
+ },
1846
+ onTouchEnd: function onTouchEnd(e) {
1847
+ return e.stopPropagation();
1848
+ },
1849
+ onPointerMove: function onPointerMove(e) {
1850
+ return e.stopPropagation();
1851
+ },
1852
+ onPointerUp: function onPointerUp(e) {
1853
+ return e.stopPropagation();
1854
+ },
1855
+ onPointerDown: function onPointerDown(e) {
1856
+ return e.stopPropagation();
1857
+ }
1858
+ };
1859
+
1594
1860
  function getFormattedTimestamp(s) {
1595
1861
  var withMilliseconds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1596
1862
  var sparts = withMilliseconds ? "".concat(s).split('.') : [];
@@ -1658,16 +1924,14 @@ var SeekBar = function SeekBar(_ref) {
1658
1924
  setShowTimestamp = _useState2[1];
1659
1925
 
1660
1926
  var onDrag = React.useCallback(function (_ref3) {
1661
- var event = _ref3.event,
1662
- _ref3$xy = _slicedToArray__default["default"](_ref3.xy, 1),
1927
+ _ref3.event;
1928
+ var _ref3$xy = _slicedToArray__default["default"](_ref3.xy, 1),
1663
1929
  x = _ref3$xy[0],
1664
1930
  elapsedTime = _ref3.elapsedTime,
1665
1931
  active = _ref3.active,
1666
1932
  tap = _ref3.tap,
1667
1933
  currentTarget = _ref3.currentTarget;
1668
1934
 
1669
- event.stopPropagation();
1670
-
1671
1935
  if (!active && elapsedTime > 300) {
1672
1936
  return;
1673
1937
  }
@@ -1682,14 +1946,12 @@ var SeekBar = function SeekBar(_ref) {
1682
1946
  onSeek(newProgress, tap);
1683
1947
  }
1684
1948
  }, [onSeek]);
1685
- var onDragStart = React.useCallback(function (event) {
1949
+ var onDragStart = React.useCallback(function () {
1686
1950
  setShowTimestamp(true);
1687
1951
 
1688
1952
  if (onSeekStart !== null) {
1689
1953
  onSeekStart();
1690
1954
  }
1691
-
1692
- event.stopPropagation();
1693
1955
  }, [onSeekStart, setShowTimestamp]);
1694
1956
  var onDragEnd = React.useCallback(function () {
1695
1957
  if (onSeekEnd !== null) {
@@ -1707,9 +1969,9 @@ var SeekBar = function SeekBar(_ref) {
1707
1969
  filterTaps: true
1708
1970
  }
1709
1971
  });
1710
- return /*#__PURE__*/React__default["default"].createElement("div", {
1972
+ return /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
1711
1973
  className: classNames__default["default"]([styles$2.container, (_ref4 = {}, _defineProperty__default["default"](_ref4, className, className !== null), _defineProperty__default["default"](_ref4, styles$2.withSeekHead, withSeekHead), _defineProperty__default["default"](_ref4, styles$2.showTimestamp, showTimestamp), _ref4)])
1712
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1974
+ }, stopDragEventsPropagation), /*#__PURE__*/React__default["default"].createElement("div", {
1713
1975
  className: styles$2.inner
1714
1976
  }, /*#__PURE__*/React__default["default"].createElement("div", {
1715
1977
  className: styles$2.progressBar,
@@ -2094,10 +2356,10 @@ var propTypes$2 = {
2094
2356
  visitor: core.PropTypes.visitor,
2095
2357
  onScreenChange: PropTypes__default["default"].func,
2096
2358
  tapNextScreenWidthPercent: PropTypes__default["default"].number,
2097
- neighborScreensActive: PropTypes__default["default"].number,
2098
2359
  storyIsParsed: PropTypes__default["default"].bool,
2099
- // landscapeScreenMargin: PropTypes.number,
2100
- // landscapeSmallScreenScale: PropTypes.number,
2360
+ neighborScreensActive: PropTypes__default["default"].number,
2361
+ neighborScreenOffset: PropTypes__default["default"].number,
2362
+ neighborScreenScale: PropTypes__default["default"].number,
2101
2363
  withMetadata: PropTypes__default["default"].bool,
2102
2364
  withoutGestures: PropTypes__default["default"].bool,
2103
2365
  withoutMenu: PropTypes__default["default"].bool,
@@ -2138,10 +2400,10 @@ var defaultProps$2 = {
2138
2400
  visitor: null,
2139
2401
  onScreenChange: null,
2140
2402
  tapNextScreenWidthPercent: 0.8,
2141
- neighborScreensActive: 1,
2142
2403
  storyIsParsed: false,
2143
- // landscapeScreenMargin: 20,
2144
- // landscapeSmallScreenScale: 0.9,
2404
+ neighborScreensActive: 2,
2405
+ neighborScreenOffset: 105,
2406
+ neighborScreenScale: 0.8,
2145
2407
  withMetadata: false,
2146
2408
  withNeighborScreens: false,
2147
2409
  withNavigationHint: false,
@@ -2180,8 +2442,10 @@ var Viewer = function Viewer(_ref) {
2180
2442
  renderContext = _ref.renderContext,
2181
2443
  visitor = _ref.visitor,
2182
2444
  tapNextScreenWidthPercent = _ref.tapNextScreenWidthPercent,
2183
- neighborScreensActive = _ref.neighborScreensActive,
2184
2445
  storyIsParsed = _ref.storyIsParsed,
2446
+ neighborScreensActive = _ref.neighborScreensActive,
2447
+ neighborScreenOffset = _ref.neighborScreenOffset,
2448
+ neighborScreenScale = _ref.neighborScreenScale,
2185
2449
  withMetadata = _ref.withMetadata,
2186
2450
  withoutGestures = _ref.withoutGestures,
2187
2451
  withoutMenu = _ref.withoutMenu,
@@ -2189,9 +2453,9 @@ var Viewer = function Viewer(_ref) {
2189
2453
  withoutShareMenu = _ref.withoutShareMenu,
2190
2454
  withoutMenuShadow = _ref.withoutMenuShadow;
2191
2455
  _ref.withoutFullscreen;
2192
- var withoutNavigationArrow = _ref.withoutNavigationArrow;
2193
- _ref.withoutTransitions;
2194
- var withNeighborScreens = _ref.withNeighborScreens,
2456
+ var withoutNavigationArrow = _ref.withoutNavigationArrow,
2457
+ withoutTransitions = _ref.withoutTransitions,
2458
+ withNeighborScreens = _ref.withNeighborScreens,
2195
2459
  withNavigationHint = _ref.withNavigationHint,
2196
2460
  withoutPlaybackControls = _ref.withoutPlaybackControls,
2197
2461
  menuIsScreenWidth = _ref.menuIsScreenWidth,
@@ -2487,7 +2751,7 @@ var Viewer = function Viewer(_ref) {
2487
2751
 
2488
2752
  var _useDragProgress = hooks.useDragProgress({
2489
2753
  progress: screenIndex,
2490
- disabled: !isView,
2754
+ disabled: !isView || withoutTransitions,
2491
2755
  dragDisabled: withoutGestures,
2492
2756
  computeProgress: computeScreenProgress,
2493
2757
  onProgress: onScreenProgress,
@@ -2518,7 +2782,7 @@ var Viewer = function Viewer(_ref) {
2518
2782
  var clamped = Math.min(1, Math.max(0, Math.abs(t)));
2519
2783
  return {
2520
2784
  opacity: 1 - 0.75 * clamped,
2521
- transform: "translateX(".concat(t * 105, "%) scale(").concat(1 - 0.2 * clamped, ")"),
2785
+ transform: "translateX(".concat(t * neighborScreenOffset, "%) scale(").concat(1 - (1 - neighborScreenScale) * clamped, ")"),
2522
2786
  zIndex: screensCount - index
2523
2787
  };
2524
2788
  };
@@ -2613,6 +2877,7 @@ var Viewer = function Viewer(_ref) {
2613
2877
  shareBasePath: basePath,
2614
2878
  screenSize: screenSize,
2615
2879
  menuWidth: menuIsScreenWidth ? screenContainerWidth : null,
2880
+ theme: viewerTheme,
2616
2881
  trackingEnabled: trackingEnabled,
2617
2882
  onClickScreen: onClickScreen,
2618
2883
  onClickCloseViewer: onCloseViewer,
@@ -2634,7 +2899,6 @@ var Viewer = function Viewer(_ref) {
2634
2899
  overflow: !withNeighborScreens ? 'hidden' : null
2635
2900
  }
2636
2901
  }, screens.map(function (screen, i) {
2637
- // const current = i === parseInt(screenIndex, 10);
2638
2902
  var current = i === Math.round(screenIndexProgress); // base current on transition
2639
2903
 
2640
2904
  var active = i >= screenIndex - neighborScreensActive && i <= screenIndex + neighborScreensActive;
@@ -2659,8 +2923,7 @@ var Viewer = function Viewer(_ref) {
2659
2923
  renderContext: renderContext,
2660
2924
  width: screenWidth,
2661
2925
  height: screenHeight,
2662
- scale: screenScale,
2663
- withNavigationHint: withNavigationHint && !withNeighborScreens && current && screenIndex === 0 && !hasInteracted
2926
+ scale: screenScale
2664
2927
  }) : null);
2665
2928
  })), !withoutNavigationArrow && !withNeighborScreens && screenIndex < screens.length - 1 ? /*#__PURE__*/React__default["default"].createElement(NavigationButton, {
2666
2929
  direction: "next",
@@ -2671,7 +2934,9 @@ var Viewer = function Viewer(_ref) {
2671
2934
  ref: playbackControlsContainerRef
2672
2935
  }, /*#__PURE__*/React__default["default"].createElement(PlaybackControls, {
2673
2936
  className: styles$6.controls
2674
- })) : null) : null, /*#__PURE__*/React__default["default"].createElement(WebViewContainer, {
2937
+ })) : null, withNavigationHint && !withNeighborScreens && screenIndex === 0 && !hasInteracted ? /*#__PURE__*/React__default["default"].createElement(ArrowHint, {
2938
+ className: styles$6.arrowHint
2939
+ }) : null) : null, /*#__PURE__*/React__default["default"].createElement(WebViewContainer, {
2675
2940
  className: styles$6.webView,
2676
2941
  style: {
2677
2942
  maxWidth: Math.max(screenContainerWidth, 600)