@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/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,41 +510,99 @@ 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,
580
+ theme: core.PropTypes.viewerTheme,
335
581
  children: PropTypes__default["default"].node
336
582
  };
337
- var defaultProps$i = {
583
+ var defaultProps$h = {
338
584
  className: null,
339
585
  transitionProgress: 0,
586
+ theme: null,
340
587
  children: null
341
588
  };
342
589
 
343
590
  var ViewerMenuContainer = function ViewerMenuContainer(_ref) {
344
591
  var className = _ref.className,
345
592
  transitionProgress = _ref.transitionProgress,
593
+ viewerTheme = _ref.theme,
346
594
  children = _ref.children;
595
+
596
+ var _ref2 = viewerTheme || {},
597
+ _ref2$background = _ref2.background,
598
+ background = _ref2$background === void 0 ? null : _ref2$background;
599
+
600
+ var _ref3 = background || {},
601
+ _ref3$color = _ref3.color,
602
+ brandBackgroundColor = _ref3$color === void 0 ? null : _ref3$color;
603
+ _ref3.image;
604
+
605
+ var backgroundColorStyle = utils.getStyleFromColor(brandBackgroundColor, 'backgroundColor');
347
606
  return /*#__PURE__*/React__default["default"].createElement("div", {
348
607
  className: classNames__default["default"]([styles$d.container, _defineProperty__default["default"]({}, className, className !== null)]),
349
608
  style: {
@@ -354,19 +613,28 @@ var ViewerMenuContainer = function ViewerMenuContainer(_ref) {
354
613
  style: {
355
614
  height: "".concat(transitionProgress * 100, "%"),
356
615
  pointerEvents: transitionProgress < 0.25 ? 'none' : 'auto',
357
- zIndex: Math.round(2 - transitionProgress)
616
+ zIndex: Math.round(1 + transitionProgress)
358
617
  }
359
618
  }, /*#__PURE__*/React__default["default"].createElement("div", {
360
- className: styles$d.inner
361
- }, children)));
619
+ className: styles$d.inner,
620
+ style: _objectSpread__default["default"](_objectSpread__default["default"]({}, backgroundColorStyle), {}, {
621
+ paddingTop: "".concat(3 * transitionProgress, "rem"),
622
+ paddingBottom: "".concat(0.5 * transitionProgress, "rem")
623
+ })
624
+ }, children)), /*#__PURE__*/React__default["default"].createElement("div", {
625
+ className: styles$d.backdrop,
626
+ style: {
627
+ opacity: utils.easings.easeOutQuint(transitionProgress)
628
+ }
629
+ }));
362
630
  };
363
631
 
364
- ViewerMenuContainer.propTypes = propTypes$i;
365
- ViewerMenuContainer.defaultProps = defaultProps$i;
632
+ ViewerMenuContainer.propTypes = propTypes$h;
633
+ ViewerMenuContainer.defaultProps = defaultProps$h;
366
634
 
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"};
635
+ 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
636
 
369
- var propTypes$h = {
637
+ var propTypes$g = {
370
638
  current: PropTypes__default["default"].bool,
371
639
  active: PropTypes__default["default"].bool,
372
640
  colors: PropTypes__default["default"].shape({
@@ -379,7 +647,7 @@ var propTypes$h = {
379
647
  onClick: PropTypes__default["default"].func,
380
648
  className: PropTypes__default["default"].string
381
649
  };
382
- var defaultProps$h = {
650
+ var defaultProps$g = {
383
651
  current: false,
384
652
  active: false,
385
653
  colors: null,
@@ -451,13 +719,13 @@ var ViewerMenuDot = function ViewerMenuDot(_ref) {
451
719
  }))));
452
720
  };
453
721
 
454
- ViewerMenuDot.propTypes = propTypes$h;
455
- ViewerMenuDot.defaultProps = defaultProps$h;
722
+ ViewerMenuDot.propTypes = propTypes$g;
723
+ ViewerMenuDot.defaultProps = defaultProps$g;
456
724
 
457
725
  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
726
 
459
727
  var _excluded$3 = ["direction", "items", "onClickDot", "onClickScreensMenu", "colors", "closeable", "withItemClick", "withoutScreensMenu", "onClose", "className"];
460
- var propTypes$g = {
728
+ var propTypes$f = {
461
729
  direction: PropTypes__default["default"].oneOf(['horizontal', 'vertical']),
462
730
  items: core.PropTypes.menuItems,
463
731
  onClickDot: PropTypes__default["default"].func,
@@ -472,7 +740,7 @@ var propTypes$g = {
472
740
  onClose: PropTypes__default["default"].func,
473
741
  className: PropTypes__default["default"].string
474
742
  };
475
- var defaultProps$g = {
743
+ var defaultProps$f = {
476
744
  direction: 'horizontal',
477
745
  items: [],
478
746
  onClickDot: null,
@@ -594,23 +862,20 @@ var ViewerMenuDots = function ViewerMenuDots(_ref) {
594
862
  }))) : null));
595
863
  };
596
864
 
597
- ViewerMenuDots.propTypes = propTypes$g;
598
- ViewerMenuDots.defaultProps = defaultProps$g;
865
+ ViewerMenuDots.propTypes = propTypes$f;
866
+ ViewerMenuDots.defaultProps = defaultProps$f;
599
867
 
600
- var propTypes$f = {
868
+ var propTypes$e = {
601
869
  className: PropTypes__default["default"].string
602
870
  };
603
- var defaultProps$f = {
871
+ var defaultProps$e = {
604
872
  className: null
605
873
  };
606
874
 
607
875
  var StackIcon = function StackIcon(_ref) {
608
876
  var className = _ref.className;
609
877
  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
- ,
878
+ xmlns: "http://www.w3.org/2000/svg",
614
879
  width: "11.5",
615
880
  height: "17.5",
616
881
  viewBox: "0 0 11.5 17.5",
@@ -623,12 +888,12 @@ var StackIcon = function StackIcon(_ref) {
623
888
  }));
624
889
  };
625
890
 
626
- StackIcon.propTypes = propTypes$f;
627
- StackIcon.defaultProps = defaultProps$f;
891
+ StackIcon.propTypes = propTypes$e;
892
+ StackIcon.defaultProps = defaultProps$e;
628
893
 
629
894
  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
895
 
631
- var propTypes$e = {
896
+ var propTypes$d = {
632
897
  className: PropTypes__default["default"].string,
633
898
  item: core.PropTypes.menuItem,
634
899
  index: PropTypes__default["default"].number,
@@ -636,7 +901,7 @@ var propTypes$e = {
636
901
  screenSize: core.PropTypes.screenSize,
637
902
  focusable: PropTypes__default["default"].bool
638
903
  };
639
- var defaultProps$e = {
904
+ var defaultProps$d = {
640
905
  className: null,
641
906
  item: core.PropTypes.menuItem,
642
907
  index: 0,
@@ -716,12 +981,12 @@ var ViewerMenuScreen = function ViewerMenuScreen(_ref) {
716
981
  }) : null));
717
982
  };
718
983
 
719
- ViewerMenuScreen.propTypes = propTypes$e;
720
- ViewerMenuScreen.defaultProps = defaultProps$e;
984
+ ViewerMenuScreen.propTypes = propTypes$d;
985
+ ViewerMenuScreen.defaultProps = defaultProps$d;
721
986
 
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"};
987
+ 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
988
 
724
- var propTypes$d = {
989
+ var propTypes$c = {
725
990
  viewerTheme: core.PropTypes.viewerTheme,
726
991
  screenSize: core.PropTypes.screenSize,
727
992
  menuWidth: PropTypes__default["default"].number,
@@ -729,13 +994,14 @@ var propTypes$d = {
729
994
  focusable: PropTypes__default["default"].bool,
730
995
  onClickScreen: PropTypes__default["default"].func,
731
996
  maxThumbsWidth: PropTypes__default["default"].number,
732
- // shouldLoad: PropTypes.bool, // @todo still needed? to re-implement?
997
+ // @todo to reimplement:
998
+ // shouldLoad: PropTypes.bool,
733
999
  // toggleFullscreen: PropTypes.func,
734
1000
  // fullscreenActive: PropTypes.bool,
735
1001
  // fullscreenEnabled: PropTypes.bool,
736
1002
  className: PropTypes__default["default"].string
737
1003
  };
738
- var defaultProps$d = {
1004
+ var defaultProps$c = {
739
1005
  viewerTheme: null,
740
1006
  screenSize: null,
741
1007
  menuWidth: null,
@@ -765,55 +1031,34 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
765
1031
  _useDimensionObserver2 = _useDimensionObserver.width,
766
1032
  contentWidth = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2;
767
1033
 
768
- var thumbsPerLine = Math.max(Math.floor(contentWidth / maxThumbsWidth), 3); // Viewer theme
769
- // @todo room for improvement here probably
770
- // @todo also re-implement!!
1034
+ var thumbsPerLine = Math.max(Math.floor(contentWidth / maxThumbsWidth), 3); // @note cool, should be in recipes
771
1035
 
772
1036
  var _ref2 = viewerTheme || {},
773
- _ref2$colors = _ref2.colors,
774
- colors = _ref2$colors === void 0 ? null : _ref2$colors,
775
1037
  _ref2$background = _ref2.background,
776
1038
  background = _ref2$background === void 0 ? null : _ref2$background;
777
1039
  _ref2.logo;
778
1040
 
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');
1041
+ var _ref3 = background || {},
1042
+ _ref3$image = _ref3.image,
1043
+ image = _ref3$image === void 0 ? null : _ref3$image;
793
1044
 
794
-
795
- var backgroundColorStyle = utils.getStyleFromColor(brandBackgroundColor, 'backgroundColor'); // const { url: brandLogoUrl = null } = brandLogo || {};
1045
+ var _ref4 = image || {},
1046
+ _ref4$url = _ref4.url,
1047
+ brandImageUrl = _ref4$url === void 0 ? null : _ref4$url;
796
1048
 
797
1049
  var brandImageStyle = brandImageUrl !== null ? {
798
1050
  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
- // }, []);
1051
+ } : null; // @todo reimplement the brand logo
1052
+ // const { url: brandLogoUrl = null } = brandLogo || {};
1053
+ // @todo optimize all of this the proper way
1054
+ // const finalItems = useMemo(
1055
+ // () => (!focusable ? items.map((s, i) => (i > 6 ? { screenId: s.screenId } : s)) : items),
1056
+ // [items, focusable],
1057
+ // );
813
1058
 
814
1059
  return /*#__PURE__*/React__default["default"].createElement("div", {
815
1060
  className: classNames__default["default"]([styles$9.container, _defineProperty__default["default"]({}, className, className !== null)]),
816
- style: _objectSpread__default["default"](_objectSpread__default["default"](_objectSpread__default["default"]({}, backgroundColorStyle), brandImageStyle), {}, {
1061
+ style: _objectSpread__default["default"](_objectSpread__default["default"]({}, brandImageStyle), {}, {
817
1062
  width: menuWidth
818
1063
  }),
819
1064
  "aria-hidden": focusable ? null : 'true'
@@ -826,9 +1071,11 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
826
1071
  className: styles$9.nav
827
1072
  }, /*#__PURE__*/React__default["default"].createElement("ul", {
828
1073
  className: styles$9.items
829
- }, finalItems.map(function (item, index) {
830
- var _ref7 = item || {},
831
- screenId = _ref7.screenId;
1074
+ }, items.map(function (item, index) {
1075
+ var _ref6 = item || {},
1076
+ screenId = _ref6.screenId,
1077
+ _ref6$screen = _ref6.screen,
1078
+ screen = _ref6$screen === void 0 ? null : _ref6$screen;
832
1079
 
833
1080
  var itemStyles = {
834
1081
  width: "".concat(100 / thumbsPerLine, "%")
@@ -837,30 +1084,43 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
837
1084
  key: "item-".concat(screenId),
838
1085
  className: styles$9.item,
839
1086
  style: itemStyles
840
- }, item === null ? 'loading' : /*#__PURE__*/React__default["default"].createElement(ViewerMenuScreen, {
841
- className: styles$9.screenPreview,
1087
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
1088
+ className: styles$9.screen
1089
+ }, screen === null ? /*#__PURE__*/React__default["default"].createElement("svg", {
1090
+ className: styles$9.loading,
1091
+ xmlns: "http://www.w3.org/2000/svg",
1092
+ width: "10",
1093
+ height: "16",
1094
+ viewBox: "0 0 10 16",
1095
+ style: {
1096
+ animationDelay: "".concat(index * -50, "ms")
1097
+ }
1098
+ }, /*#__PURE__*/React__default["default"].createElement("rect", {
1099
+ width: "10",
1100
+ height: "16"
1101
+ })) : /*#__PURE__*/React__default["default"].createElement(ViewerMenuScreen, {
842
1102
  item: item,
843
1103
  index: index,
844
1104
  screenSize: screenSize,
845
1105
  onClick: onClickScreen,
846
1106
  focusable: focusable
847
- }));
1107
+ })));
848
1108
  }))))));
849
1109
  };
850
1110
 
851
- ViewerMenuPreview.propTypes = propTypes$d;
852
- ViewerMenuPreview.defaultProps = defaultProps$d;
1111
+ ViewerMenuPreview.propTypes = propTypes$c;
1112
+ ViewerMenuPreview.defaultProps = defaultProps$c;
853
1113
 
854
1114
  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
1115
 
856
- var propTypes$c = {
1116
+ var propTypes$b = {
857
1117
  screen: core.PropTypes.item,
858
1118
  title: PropTypes__default["default"].string,
859
1119
  url: PropTypes__default["default"].string,
860
1120
  description: PropTypes__default["default"].string,
861
1121
  className: PropTypes__default["default"].string
862
1122
  };
863
- var defaultProps$c = {
1123
+ var defaultProps$b = {
864
1124
  screen: null,
865
1125
  title: null,
866
1126
  url: null,
@@ -892,12 +1152,12 @@ var MicromagPreview = function MicromagPreview(_ref) {
892
1152
  }, url) : null, /*#__PURE__*/React__default["default"].createElement("p", null, description)));
893
1153
  };
894
1154
 
895
- MicromagPreview.propTypes = propTypes$c;
896
- MicromagPreview.defaultProps = defaultProps$c;
1155
+ MicromagPreview.propTypes = propTypes$b;
1156
+ MicromagPreview.defaultProps = defaultProps$b;
897
1157
 
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"};
1158
+ 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
1159
 
900
- var propTypes$b = {
1160
+ var propTypes$a = {
901
1161
  viewerTheme: core.PropTypes.viewerTheme,
902
1162
  menuWidth: PropTypes__default["default"].number,
903
1163
  title: PropTypes__default["default"].string,
@@ -910,7 +1170,7 @@ var propTypes$b = {
910
1170
  onShare: PropTypes__default["default"].func,
911
1171
  className: PropTypes__default["default"].string
912
1172
  };
913
- var defaultProps$b = {
1173
+ var defaultProps$a = {
914
1174
  viewerTheme: null,
915
1175
  menuWidth: null,
916
1176
  title: null,
@@ -936,56 +1196,40 @@ var ViewerMenuShare = function ViewerMenuShare(_ref) {
936
1196
  className = _ref.className;
937
1197
 
938
1198
  // Viewer theme
939
- // @todo room for improvement here probably
940
1199
  var _ref2 = viewerTheme || {},
941
- _ref2$colors = _ref2.colors,
942
- colors = _ref2$colors === void 0 ? null : _ref2$colors,
943
1200
  _ref2$background = _ref2.background,
944
1201
  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
1202
 
1203
+ var _ref3 = background || {},
1204
+ _ref3$image = _ref3.image,
1205
+ image = _ref3$image === void 0 ? null : _ref3$image;
964
1206
 
965
- var backgroundColorStyle = utils.getStyleFromColor(brandBackgroundColor, 'backgroundColor'); // const { url: brandLogoUrl = null } = brandLogo || {};
1207
+ var _ref4 = image || {},
1208
+ _ref4$url = _ref4.url,
1209
+ brandImageUrl = _ref4$url === void 0 ? null : _ref4$url;
966
1210
 
967
1211
  var brandImageStyle = brandImageUrl !== null ? {
968
1212
  backgroundImage: "url(".concat(brandImageUrl, ")")
969
1213
  } : null;
970
1214
  var coverScreen = React.useMemo(function () {
971
- var _ref6 = items[0] || {},
972
- _ref6$screen = _ref6.screen,
973
- screen = _ref6$screen === void 0 ? null : _ref6$screen;
1215
+ var _ref5 = items[0] || {},
1216
+ _ref5$screen = _ref5.screen,
1217
+ screen = _ref5$screen === void 0 ? null : _ref5$screen;
974
1218
 
975
1219
  return screen;
976
1220
  }, [items]);
977
1221
  var currentScreen = React.useMemo(function () {
978
1222
  var found = items.find(function (item) {
979
- var _ref7 = item || {},
980
- _ref7$current = _ref7.current,
981
- current = _ref7$current === void 0 ? false : _ref7$current;
1223
+ var _ref6 = item || {},
1224
+ _ref6$current = _ref6.current,
1225
+ current = _ref6$current === void 0 ? false : _ref6$current;
982
1226
 
983
1227
  return current;
984
1228
  });
985
1229
 
986
- var _ref8 = found || {},
987
- _ref8$screen = _ref8.screen,
988
- screen = _ref8$screen === void 0 ? null : _ref8$screen;
1230
+ var _ref7 = found || {},
1231
+ _ref7$screen = _ref7.screen,
1232
+ screen = _ref7$screen === void 0 ? null : _ref7$screen;
989
1233
 
990
1234
  return screen;
991
1235
  }, [items, currentScreenIndex, focusable]);
@@ -1011,7 +1255,7 @@ var ViewerMenuShare = function ViewerMenuShare(_ref) {
1011
1255
  }, [shareCurrentScreen, currentScreenIndex, setFinalShareUrl]);
1012
1256
  return /*#__PURE__*/React__default["default"].createElement("div", {
1013
1257
  className: classNames__default["default"]([styles$7.container, _defineProperty__default["default"]({}, className, className !== null)]),
1014
- style: _objectSpread__default["default"](_objectSpread__default["default"](_objectSpread__default["default"]({}, backgroundColorStyle), brandImageStyle), {}, {
1258
+ style: _objectSpread__default["default"](_objectSpread__default["default"]({}, brandImageStyle), {}, {
1015
1259
  width: menuWidth
1016
1260
  }),
1017
1261
  "aria-hidden": focusable ? null : 'true'
@@ -1049,16 +1293,17 @@ var ViewerMenuShare = function ViewerMenuShare(_ref) {
1049
1293
  url: finalShareUrl,
1050
1294
  focusable: focusable,
1051
1295
  onShare: onShare,
1296
+ theme: viewerTheme,
1052
1297
  shareCurrentScreen: shareCurrentScreen
1053
1298
  }))));
1054
1299
  };
1055
1300
 
1056
- ViewerMenuShare.propTypes = propTypes$b;
1057
- ViewerMenuShare.defaultProps = defaultProps$b;
1301
+ ViewerMenuShare.propTypes = propTypes$a;
1302
+ ViewerMenuShare.defaultProps = defaultProps$a;
1058
1303
 
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"};
1304
+ 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
1305
 
1061
- var propTypes$a = {
1306
+ var propTypes$9 = {
1062
1307
  story: core.PropTypes.story.isRequired,
1063
1308
  currentScreenIndex: PropTypes__default["default"].number,
1064
1309
  toggleFullscreen: PropTypes__default["default"].func,
@@ -1082,7 +1327,7 @@ var propTypes$a = {
1082
1327
 
1083
1328
  })
1084
1329
  };
1085
- var defaultProps$a = {
1330
+ var defaultProps$9 = {
1086
1331
  currentScreenIndex: 0,
1087
1332
  toggleFullscreen: null,
1088
1333
  fullscreenActive: false,
@@ -1104,7 +1349,7 @@ var defaultProps$a = {
1104
1349
  };
1105
1350
 
1106
1351
  var ViewerMenu = function ViewerMenu(_ref) {
1107
- var _ref9;
1352
+ var _ref11;
1108
1353
 
1109
1354
  var story = _ref.story,
1110
1355
  currentScreenIndex = _ref.currentScreenIndex,
@@ -1201,7 +1446,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
1201
1446
  var base = typeof window !== 'undefined' ? window.location.host : '';
1202
1447
  var path = shareBasePath !== null ? "".concat(base).concat(shareBasePath) : base;
1203
1448
  return path;
1204
- }, [shareBasePath]); // @todo sorta not super good here
1449
+ }, [shareBasePath]); // @note possible to extract some of that logic
1205
1450
 
1206
1451
  var onOpenMenu = React.useCallback(function () {
1207
1452
  setMenuOpened(true);
@@ -1258,11 +1503,30 @@ var ViewerMenu = function ViewerMenu(_ref) {
1258
1503
  }
1259
1504
 
1260
1505
  return progress;
1261
- }, [menuOpened, onOpenShare]);
1506
+ }, [onOpenShare]);
1507
+ var computeShareProgressClose = React.useCallback(function (_ref8) {
1508
+ var active = _ref8.active,
1509
+ _ref8$direction = _slicedToArray__default["default"](_ref8.direction, 2),
1510
+ dy = _ref8$direction[1],
1511
+ _ref8$movement = _slicedToArray__default["default"](_ref8.movement, 2),
1512
+ my = _ref8$movement[1],
1513
+ _ref8$velocity = _slicedToArray__default["default"](_ref8.velocity, 2),
1514
+ vy = _ref8$velocity[1];
1515
+
1516
+ var progress = Math.max(0, my) / (window.innerHeight * 0.8);
1517
+ var reachedThreshold = (vy > 0.3 || Math.abs(progress) > 0.3) && dy !== -1;
1518
+
1519
+ if (!active) {
1520
+ if (reachedThreshold) onCloseShare();
1521
+ return reachedThreshold ? 0 : 1;
1522
+ }
1523
+
1524
+ return 1 - progress;
1525
+ }, [onCloseShare]);
1262
1526
 
1263
1527
  var _useDragProgress = hooks.useDragProgress({
1264
1528
  progress: shareOpened ? 1 : 0,
1265
- computeProgress: computeShareProgress,
1529
+ computeProgress: shareOpened ? computeShareProgressClose : computeShareProgress,
1266
1530
  springParams: {
1267
1531
  config: {
1268
1532
  tension: 300,
@@ -1271,17 +1535,16 @@ var ViewerMenu = function ViewerMenu(_ref) {
1271
1535
  }
1272
1536
  }),
1273
1537
  bindShareDrag = _useDragProgress.bind,
1274
- isDraggingShare = _useDragProgress.dragging,
1275
1538
  shareOpenedProgress = _useDragProgress.progress;
1276
1539
 
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];
1540
+ var computeMenuProgress = React.useCallback(function (_ref9) {
1541
+ var active = _ref9.active,
1542
+ _ref9$direction = _slicedToArray__default["default"](_ref9.direction, 2),
1543
+ dy = _ref9$direction[1],
1544
+ _ref9$movement = _slicedToArray__default["default"](_ref9.movement, 2),
1545
+ my = _ref9$movement[1],
1546
+ _ref9$velocity = _slicedToArray__default["default"](_ref9.velocity, 2),
1547
+ vy = _ref9$velocity[1];
1285
1548
 
1286
1549
  var progress = Math.max(0, my) / (window.innerHeight * 0.8);
1287
1550
  var reachedThreshold = (vy > 0.3 || Math.abs(progress) > 0.3) && dy !== -1;
@@ -1292,11 +1555,30 @@ var ViewerMenu = function ViewerMenu(_ref) {
1292
1555
  }
1293
1556
 
1294
1557
  return progress;
1295
- }, [menuOpened, onOpenMenu]);
1558
+ }, [onOpenMenu]);
1559
+ var computeMenuProgressClose = React.useCallback(function (_ref10) {
1560
+ var active = _ref10.active,
1561
+ _ref10$direction = _slicedToArray__default["default"](_ref10.direction, 2),
1562
+ dy = _ref10$direction[1],
1563
+ _ref10$movement = _slicedToArray__default["default"](_ref10.movement, 2),
1564
+ my = _ref10$movement[1],
1565
+ _ref10$velocity = _slicedToArray__default["default"](_ref10.velocity, 2),
1566
+ vy = _ref10$velocity[1];
1567
+
1568
+ var progress = Math.max(0, my) / (window.innerHeight * 0.8);
1569
+ var reachedThreshold = (vy > 0.3 || Math.abs(progress) > 0.3) && dy !== -1;
1570
+
1571
+ if (!active) {
1572
+ if (reachedThreshold) onCloseMenu();
1573
+ return reachedThreshold ? 0 : 1;
1574
+ }
1575
+
1576
+ return 1 - progress;
1577
+ }, [onCloseMenu]);
1296
1578
 
1297
1579
  var _useDragProgress2 = hooks.useDragProgress({
1298
1580
  progress: menuOpened ? 1 : 0,
1299
- computeProgress: computeMenuProgress,
1581
+ computeProgress: menuOpened ? computeMenuProgressClose : computeMenuProgress,
1300
1582
  springParams: {
1301
1583
  config: {
1302
1584
  tension: 300,
@@ -1305,7 +1587,6 @@ var ViewerMenu = function ViewerMenu(_ref) {
1305
1587
  }
1306
1588
  }),
1307
1589
  bindMenuDrag = _useDragProgress2.bind,
1308
- isDraggingMenu = _useDragProgress2.dragging,
1309
1590
  menuOpenedProgress = _useDragProgress2.progress;
1310
1591
 
1311
1592
  var keyboardShortcuts = React.useMemo(function () {
@@ -1322,7 +1603,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
1322
1603
 
1323
1604
  var dotsOpacity = Math.min(1, Math.max(0, 1 - (menuOpenedProgress + shareOpenedProgress)));
1324
1605
  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)]),
1606
+ 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
1607
  ref: refDots,
1327
1608
  style: {
1328
1609
  width: menuWidth
@@ -1331,47 +1612,43 @@ var ViewerMenu = function ViewerMenu(_ref) {
1331
1612
  className: styles$6.menuTopContainer
1332
1613
  }, !withoutShareMenu ? /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
1333
1614
  className: classNames__default["default"]([styles$6.menuItem, styles$6.menuShare])
1334
- }, bindShareDrag()), /*#__PURE__*/React__default["default"].createElement(components.SlidingButtons, {
1615
+ }, bindShareDrag()), /*#__PURE__*/React__default["default"].createElement(ToggleButton, {
1335
1616
  className: styles$6.slidingButton,
1336
- current: shareOpenedProgress,
1337
- immediate: isDraggingShare,
1338
- buttons: [ShareButton, components.CloseButton],
1339
- buttonsProps: [{
1340
- key: 'share',
1617
+ button: /*#__PURE__*/React__default["default"].createElement(ShareButton, {
1341
1618
  className: styles$6.menuButton,
1342
1619
  onClick: onOpenShare,
1343
- theme: menuTheme
1344
- }, {
1345
- key: 'close-share',
1620
+ theme: menuTheme,
1621
+ iconPosition: "left"
1622
+ }),
1623
+ toggledButton: /*#__PURE__*/React__default["default"].createElement(CloseButton, {
1346
1624
  className: styles$6.menuButton,
1347
1625
  onClick: onCloseShare,
1348
1626
  theme: menuTheme,
1349
- iconPosition: 'left'
1350
- }]
1627
+ iconPosition: "left"
1628
+ }),
1629
+ toggled: shareOpenedProgress
1351
1630
  })) : 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, {
1631
+ className: classNames__default["default"]([styles$6.menuItem, styles$6.menuItemScreens])
1632
+ }, bindMenuDrag()), /*#__PURE__*/React__default["default"].createElement(ToggleButton, {
1354
1633
  className: styles$6.slidingButton,
1355
- current: menuOpenedProgress,
1356
- immediate: isDraggingMenu,
1357
- buttons: [MenuButton, components.CloseButton],
1358
- buttonsProps: [{
1359
- key: 'menu',
1634
+ button: /*#__PURE__*/React__default["default"].createElement(MenuButton, {
1360
1635
  className: styles$6.menuButton,
1361
1636
  onClick: onOpenMenu,
1362
1637
  theme: menuTheme
1363
- }, {
1364
- key: 'close-menu',
1638
+ }),
1639
+ toggledButton: /*#__PURE__*/React__default["default"].createElement(CloseButton, {
1365
1640
  className: styles$6.menuButton,
1366
1641
  onClick: onCloseMenu,
1367
1642
  theme: menuTheme,
1368
- iconPosition: 'right'
1369
- }]
1643
+ iconPosition: "right"
1644
+ }),
1645
+ toggled: menuOpenedProgress,
1646
+ toggledButtonClassName: styles$6.screensMenuButtonToggled
1370
1647
  })) : null), /*#__PURE__*/React__default["default"].createElement(ViewerMenuDots, Object.assign({}, menuTheme, {
1371
1648
  direction: "horizontal",
1372
1649
  items: items,
1373
1650
  onClickDot: onClickScreen,
1374
- onClickMenu: onOpenMenu,
1651
+ onClickScreensMenu: onOpenMenu,
1375
1652
  closeable: closeable,
1376
1653
  withItemClick: withDotItemClick,
1377
1654
  withoutScreensMenu: withoutScreensMenu,
@@ -1379,12 +1656,15 @@ var ViewerMenu = function ViewerMenu(_ref) {
1379
1656
  onClose: onClickCloseViewer,
1380
1657
  className: styles$6.dots,
1381
1658
  style: {
1382
- opacity: dotsOpacity
1659
+ opacity: Math.pow(dotsOpacity, 5),
1660
+ // @note this is like a "quint" easing, meaning it'll go towards 1 slowly first and then fast as it approaches 1
1661
+ pointerEvents: dotsOpacity < 1 ? 'none' : 'auto'
1383
1662
  }
1384
1663
  }))), /*#__PURE__*/React__default["default"].createElement(ViewerMenuContainer, {
1385
1664
  className: styles$6.menuContainerShare,
1386
- transitionProgress: shareOpenedProgress
1387
- }, /*#__PURE__*/React__default["default"].createElement(ViewerMenuShare, {
1665
+ transitionProgress: shareOpenedProgress,
1666
+ theme: viewerTheme
1667
+ }, shareOpenedProgress > 0 ? /*#__PURE__*/React__default["default"].createElement(ViewerMenuShare, {
1388
1668
  viewerTheme: viewerTheme,
1389
1669
  className: styles$6.menuShare,
1390
1670
  title: title,
@@ -1396,15 +1676,15 @@ var ViewerMenu = function ViewerMenu(_ref) {
1396
1676
  shareUrl: shareUrl,
1397
1677
  onShare: onShare,
1398
1678
  onClose: onCloseShare
1399
- })), /*#__PURE__*/React__default["default"].createElement(ViewerMenuContainer, {
1679
+ }) : null), /*#__PURE__*/React__default["default"].createElement(ViewerMenuContainer, {
1400
1680
  className: styles$6.menuContainerScreens,
1401
- transitionProgress: menuOpenedProgress
1402
- }, /*#__PURE__*/React__default["default"].createElement(ViewerMenuPreview, {
1681
+ transitionProgress: menuOpenedProgress,
1682
+ theme: viewerTheme
1683
+ }, menuOpenedProgress > 0 ? /*#__PURE__*/React__default["default"].createElement(ViewerMenuPreview, {
1403
1684
  viewerTheme: viewerTheme,
1404
1685
  className: styles$6.menuPreview,
1405
1686
  screenSize: screenSize,
1406
1687
  menuWidth: menuWidth,
1407
- focusable: menuOpened,
1408
1688
  items: items,
1409
1689
  currentScreenIndex: currentScreenIndex,
1410
1690
  shareUrl: shareUrl,
@@ -1414,67 +1694,15 @@ var ViewerMenu = function ViewerMenu(_ref) {
1414
1694
  toggleFullscreen: toggleFullscreen,
1415
1695
  fullscreenActive: fullscreenActive,
1416
1696
  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
1697
+ }) : null));
1432
1698
  };
1433
1699
 
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
- };
1700
+ ViewerMenu.propTypes = propTypes$9;
1701
+ ViewerMenu.defaultProps = defaultProps$9;
1448
1702
 
1449
- HandIcon.propTypes = propTypes$9;
1450
- HandIcon.defaultProps = defaultProps$9;
1703
+ var styles$5 = {"container":"micromag-viewer-screen-container","navigationHint":"micromag-viewer-screen-navigationHint"};
1451
1704
 
1452
1705
  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
1706
  screen: core.PropTypes.screenComponent,
1479
1707
  renderContext: core.PropTypes.renderContext,
1480
1708
  screenState: PropTypes__default["default"].string,
@@ -1484,10 +1712,10 @@ var propTypes$7 = {
1484
1712
  width: PropTypes__default["default"].number,
1485
1713
  height: PropTypes__default["default"].number,
1486
1714
  scale: PropTypes__default["default"].number,
1487
- withNavigationHint: PropTypes__default["default"].bool,
1715
+ // withNavigationHint: PropTypes.bool, // @todo
1488
1716
  className: PropTypes__default["default"].string
1489
1717
  };
1490
- var defaultProps$7 = {
1718
+ var defaultProps$8 = {
1491
1719
  screen: null,
1492
1720
  renderContext: null,
1493
1721
  screenState: null,
@@ -1497,7 +1725,7 @@ var defaultProps$7 = {
1497
1725
  width: null,
1498
1726
  height: null,
1499
1727
  scale: null,
1500
- withNavigationHint: false,
1728
+ // withNavigationHint: false,
1501
1729
  className: null
1502
1730
  };
1503
1731
 
@@ -1511,10 +1739,9 @@ function ViewerScreen(_ref) {
1511
1739
  width = _ref.width,
1512
1740
  height = _ref.height,
1513
1741
  scale = _ref.scale,
1514
- withNavigationHint = _ref.withNavigationHint,
1515
1742
  className = _ref.className;
1516
1743
  return /*#__PURE__*/React__default["default"].createElement("div", {
1517
- className: classNames__default["default"]([styles$4.container, _defineProperty__default["default"]({}, className, className !== null)])
1744
+ className: classNames__default["default"]([styles$5.container, _defineProperty__default["default"]({}, className, className !== null)])
1518
1745
  }, /*#__PURE__*/React__default["default"].createElement("div", {
1519
1746
  style: {
1520
1747
  width: width,
@@ -1529,22 +1756,20 @@ function ViewerScreen(_ref) {
1529
1756
  active: active,
1530
1757
  current: current,
1531
1758
  mediaRef: mediaRef
1532
- })), withNavigationHint ? /*#__PURE__*/React__default["default"].createElement(HandTap, {
1533
- className: styles$4.handTap
1534
- }) : null);
1759
+ })));
1535
1760
  }
1536
1761
 
1537
- ViewerScreen.propTypes = propTypes$7;
1538
- ViewerScreen.defaultProps = defaultProps$7;
1762
+ ViewerScreen.propTypes = propTypes$8;
1763
+ ViewerScreen.defaultProps = defaultProps$8;
1539
1764
 
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"};
1765
+ 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
1766
 
1542
- var propTypes$6 = {
1767
+ var propTypes$7 = {
1543
1768
  direction: PropTypes__default["default"].oneOf(['previous', 'next']),
1544
1769
  onClick: PropTypes__default["default"].func,
1545
1770
  className: PropTypes__default["default"].string
1546
1771
  };
1547
- var defaultProps$6 = {
1772
+ var defaultProps$7 = {
1548
1773
  direction: 'next',
1549
1774
  onClick: null,
1550
1775
  className: null
@@ -1554,12 +1779,12 @@ var NavigationButton = function NavigationButton(_ref) {
1554
1779
  var direction = _ref.direction,
1555
1780
  onClick = _ref.onClick,
1556
1781
  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)]),
1782
+ return /*#__PURE__*/React__default["default"].createElement(IconButton, {
1783
+ className: classNames__default["default"]([styles$4.container, styles$4[direction], _defineProperty__default["default"]({}, className, className !== null)]),
1559
1784
  onClick: onClick,
1560
1785
  iconPosition: direction === 'next' ? 'right' : 'left',
1561
1786
  icon: /*#__PURE__*/React__default["default"].createElement("svg", {
1562
- className: styles$3.arrow,
1787
+ className: styles$4.arrow,
1563
1788
  xmlns: "http://www.w3.org/2000/svg",
1564
1789
  width: "10",
1565
1790
  height: "16",
@@ -1586,11 +1811,62 @@ var NavigationButton = function NavigationButton(_ref) {
1586
1811
  });
1587
1812
  };
1588
1813
 
1589
- NavigationButton.propTypes = propTypes$6;
1590
- NavigationButton.defaultProps = defaultProps$6;
1814
+ NavigationButton.propTypes = propTypes$7;
1815
+ NavigationButton.defaultProps = defaultProps$7;
1816
+
1817
+ 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"};
1818
+
1819
+ var propTypes$6 = {
1820
+ className: PropTypes__default["default"].string
1821
+ };
1822
+ var defaultProps$6 = {
1823
+ className: null
1824
+ };
1825
+
1826
+ var ArrowHint = function ArrowHint(_ref) {
1827
+ var className = _ref.className;
1828
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1829
+ className: classNames__default["default"]([styles$3.container, _defineProperty__default["default"]({}, className, className !== null)])
1830
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
1831
+ className: styles$3.inner
1832
+ }, /*#__PURE__*/React__default["default"].createElement("svg", {
1833
+ className: styles$3.arrow,
1834
+ xmlns: "http://www.w3.org/2000/svg",
1835
+ width: "10",
1836
+ height: "16",
1837
+ viewBox: "0 0 10 16",
1838
+ fill: "currentColor"
1839
+ }, /*#__PURE__*/React__default["default"].createElement("polygon", {
1840
+ 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"
1841
+ }))));
1842
+ };
1843
+
1844
+ ArrowHint.propTypes = propTypes$6;
1845
+ ArrowHint.defaultProps = defaultProps$6;
1591
1846
 
1592
1847
  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
1848
 
1849
+ var stopDragEventsPropagation = {
1850
+ onTouchMove: function onTouchMove(e) {
1851
+ return e.stopPropagation();
1852
+ },
1853
+ onTouchStart: function onTouchStart(e) {
1854
+ return e.stopPropagation();
1855
+ },
1856
+ onTouchEnd: function onTouchEnd(e) {
1857
+ return e.stopPropagation();
1858
+ },
1859
+ onPointerMove: function onPointerMove(e) {
1860
+ return e.stopPropagation();
1861
+ },
1862
+ onPointerUp: function onPointerUp(e) {
1863
+ return e.stopPropagation();
1864
+ },
1865
+ onPointerDown: function onPointerDown(e) {
1866
+ return e.stopPropagation();
1867
+ }
1868
+ };
1869
+
1594
1870
  function getFormattedTimestamp(s) {
1595
1871
  var withMilliseconds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1596
1872
  var sparts = withMilliseconds ? "".concat(s).split('.') : [];
@@ -1658,16 +1934,14 @@ var SeekBar = function SeekBar(_ref) {
1658
1934
  setShowTimestamp = _useState2[1];
1659
1935
 
1660
1936
  var onDrag = React.useCallback(function (_ref3) {
1661
- var event = _ref3.event,
1662
- _ref3$xy = _slicedToArray__default["default"](_ref3.xy, 1),
1937
+ _ref3.event;
1938
+ var _ref3$xy = _slicedToArray__default["default"](_ref3.xy, 1),
1663
1939
  x = _ref3$xy[0],
1664
1940
  elapsedTime = _ref3.elapsedTime,
1665
1941
  active = _ref3.active,
1666
1942
  tap = _ref3.tap,
1667
1943
  currentTarget = _ref3.currentTarget;
1668
1944
 
1669
- event.stopPropagation();
1670
-
1671
1945
  if (!active && elapsedTime > 300) {
1672
1946
  return;
1673
1947
  }
@@ -1682,14 +1956,12 @@ var SeekBar = function SeekBar(_ref) {
1682
1956
  onSeek(newProgress, tap);
1683
1957
  }
1684
1958
  }, [onSeek]);
1685
- var onDragStart = React.useCallback(function (event) {
1959
+ var onDragStart = React.useCallback(function () {
1686
1960
  setShowTimestamp(true);
1687
1961
 
1688
1962
  if (onSeekStart !== null) {
1689
1963
  onSeekStart();
1690
1964
  }
1691
-
1692
- event.stopPropagation();
1693
1965
  }, [onSeekStart, setShowTimestamp]);
1694
1966
  var onDragEnd = React.useCallback(function () {
1695
1967
  if (onSeekEnd !== null) {
@@ -1707,9 +1979,9 @@ var SeekBar = function SeekBar(_ref) {
1707
1979
  filterTaps: true
1708
1980
  }
1709
1981
  });
1710
- return /*#__PURE__*/React__default["default"].createElement("div", {
1982
+ return /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
1711
1983
  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", {
1984
+ }, stopDragEventsPropagation), /*#__PURE__*/React__default["default"].createElement("div", {
1713
1985
  className: styles$2.inner
1714
1986
  }, /*#__PURE__*/React__default["default"].createElement("div", {
1715
1987
  className: styles$2.progressBar,
@@ -2094,10 +2366,10 @@ var propTypes$2 = {
2094
2366
  visitor: core.PropTypes.visitor,
2095
2367
  onScreenChange: PropTypes__default["default"].func,
2096
2368
  tapNextScreenWidthPercent: PropTypes__default["default"].number,
2097
- neighborScreensActive: PropTypes__default["default"].number,
2098
2369
  storyIsParsed: PropTypes__default["default"].bool,
2099
- // landscapeScreenMargin: PropTypes.number,
2100
- // landscapeSmallScreenScale: PropTypes.number,
2370
+ neighborScreensActive: PropTypes__default["default"].number,
2371
+ neighborScreenOffset: PropTypes__default["default"].number,
2372
+ neighborScreenScale: PropTypes__default["default"].number,
2101
2373
  withMetadata: PropTypes__default["default"].bool,
2102
2374
  withoutGestures: PropTypes__default["default"].bool,
2103
2375
  withoutMenu: PropTypes__default["default"].bool,
@@ -2138,10 +2410,10 @@ var defaultProps$2 = {
2138
2410
  visitor: null,
2139
2411
  onScreenChange: null,
2140
2412
  tapNextScreenWidthPercent: 0.8,
2141
- neighborScreensActive: 1,
2142
2413
  storyIsParsed: false,
2143
- // landscapeScreenMargin: 20,
2144
- // landscapeSmallScreenScale: 0.9,
2414
+ neighborScreensActive: 2,
2415
+ neighborScreenOffset: 105,
2416
+ neighborScreenScale: 0.8,
2145
2417
  withMetadata: false,
2146
2418
  withNeighborScreens: false,
2147
2419
  withNavigationHint: false,
@@ -2180,8 +2452,10 @@ var Viewer = function Viewer(_ref) {
2180
2452
  renderContext = _ref.renderContext,
2181
2453
  visitor = _ref.visitor,
2182
2454
  tapNextScreenWidthPercent = _ref.tapNextScreenWidthPercent,
2183
- neighborScreensActive = _ref.neighborScreensActive,
2184
2455
  storyIsParsed = _ref.storyIsParsed,
2456
+ neighborScreensActive = _ref.neighborScreensActive,
2457
+ neighborScreenOffset = _ref.neighborScreenOffset,
2458
+ neighborScreenScale = _ref.neighborScreenScale,
2185
2459
  withMetadata = _ref.withMetadata,
2186
2460
  withoutGestures = _ref.withoutGestures,
2187
2461
  withoutMenu = _ref.withoutMenu,
@@ -2189,9 +2463,9 @@ var Viewer = function Viewer(_ref) {
2189
2463
  withoutShareMenu = _ref.withoutShareMenu,
2190
2464
  withoutMenuShadow = _ref.withoutMenuShadow;
2191
2465
  _ref.withoutFullscreen;
2192
- var withoutNavigationArrow = _ref.withoutNavigationArrow;
2193
- _ref.withoutTransitions;
2194
- var withNeighborScreens = _ref.withNeighborScreens,
2466
+ var withoutNavigationArrow = _ref.withoutNavigationArrow,
2467
+ withoutTransitions = _ref.withoutTransitions,
2468
+ withNeighborScreens = _ref.withNeighborScreens,
2195
2469
  withNavigationHint = _ref.withNavigationHint,
2196
2470
  withoutPlaybackControls = _ref.withoutPlaybackControls,
2197
2471
  menuIsScreenWidth = _ref.menuIsScreenWidth,
@@ -2487,7 +2761,7 @@ var Viewer = function Viewer(_ref) {
2487
2761
 
2488
2762
  var _useDragProgress = hooks.useDragProgress({
2489
2763
  progress: screenIndex,
2490
- disabled: !isView,
2764
+ disabled: !isView || withoutTransitions,
2491
2765
  dragDisabled: withoutGestures,
2492
2766
  computeProgress: computeScreenProgress,
2493
2767
  onProgress: onScreenProgress,
@@ -2518,7 +2792,7 @@ var Viewer = function Viewer(_ref) {
2518
2792
  var clamped = Math.min(1, Math.max(0, Math.abs(t)));
2519
2793
  return {
2520
2794
  opacity: 1 - 0.75 * clamped,
2521
- transform: "translateX(".concat(t * 105, "%) scale(").concat(1 - 0.2 * clamped, ")"),
2795
+ transform: "translateX(".concat(t * neighborScreenOffset, "%) scale(").concat(1 - (1 - neighborScreenScale) * clamped, ")"),
2522
2796
  zIndex: screensCount - index
2523
2797
  };
2524
2798
  };
@@ -2613,6 +2887,7 @@ var Viewer = function Viewer(_ref) {
2613
2887
  shareBasePath: basePath,
2614
2888
  screenSize: screenSize,
2615
2889
  menuWidth: menuIsScreenWidth ? screenContainerWidth : null,
2890
+ theme: viewerTheme,
2616
2891
  trackingEnabled: trackingEnabled,
2617
2892
  onClickScreen: onClickScreen,
2618
2893
  onClickCloseViewer: onCloseViewer,
@@ -2634,7 +2909,6 @@ var Viewer = function Viewer(_ref) {
2634
2909
  overflow: !withNeighborScreens ? 'hidden' : null
2635
2910
  }
2636
2911
  }, screens.map(function (screen, i) {
2637
- // const current = i === parseInt(screenIndex, 10);
2638
2912
  var current = i === Math.round(screenIndexProgress); // base current on transition
2639
2913
 
2640
2914
  var active = i >= screenIndex - neighborScreensActive && i <= screenIndex + neighborScreensActive;
@@ -2659,8 +2933,7 @@ var Viewer = function Viewer(_ref) {
2659
2933
  renderContext: renderContext,
2660
2934
  width: screenWidth,
2661
2935
  height: screenHeight,
2662
- scale: screenScale,
2663
- withNavigationHint: withNavigationHint && !withNeighborScreens && current && screenIndex === 0 && !hasInteracted
2936
+ scale: screenScale
2664
2937
  }) : null);
2665
2938
  })), !withoutNavigationArrow && !withNeighborScreens && screenIndex < screens.length - 1 ? /*#__PURE__*/React__default["default"].createElement(NavigationButton, {
2666
2939
  direction: "next",
@@ -2671,7 +2944,9 @@ var Viewer = function Viewer(_ref) {
2671
2944
  ref: playbackControlsContainerRef
2672
2945
  }, /*#__PURE__*/React__default["default"].createElement(PlaybackControls, {
2673
2946
  className: styles$6.controls
2674
- })) : null) : null, /*#__PURE__*/React__default["default"].createElement(WebViewContainer, {
2947
+ })) : null, withNavigationHint && !withNeighborScreens && screenIndex === 0 && !hasInteracted ? /*#__PURE__*/React__default["default"].createElement(ArrowHint, {
2948
+ className: styles$6.arrowHint
2949
+ }) : null) : null, /*#__PURE__*/React__default["default"].createElement(WebViewContainer, {
2675
2950
  className: styles$6.webView,
2676
2951
  style: {
2677
2952
  maxWidth: Math.max(screenContainerWidth, 600)