@micromag/viewer 0.3.316 → 0.3.318

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
@@ -49,6 +49,7 @@ var Scroll__default = /*#__PURE__*/_interopDefaultLegacy(Scroll);
49
49
  var ShareOptions__default = /*#__PURE__*/_interopDefaultLegacy(ShareOptions);
50
50
  var WebView__default = /*#__PURE__*/_interopDefaultLegacy(WebView);
51
51
 
52
+ // eslint-disable-next-line import/prefer-default-export
52
53
  var routes = PropTypes__default["default"].shape({
53
54
  home: PropTypes__default["default"].string.isRequired,
54
55
  screen: PropTypes__default["default"].string.isRequired
@@ -56,11 +57,9 @@ var routes = PropTypes__default["default"].shape({
56
57
 
57
58
  function useKeyboardShortcuts() {
58
59
  var shortcuts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
59
-
60
60
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
61
- _ref$disabled = _ref.disabled,
62
- disabled = _ref$disabled === void 0 ? false : _ref$disabled;
63
-
61
+ _ref$disabled = _ref.disabled,
62
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled;
64
63
  React.useEffect(function () {
65
64
  var onKey = function onKey(e) {
66
65
  if (['input', 'textarea'].reduce(function (foundMatch, match) {
@@ -68,19 +67,15 @@ function useKeyboardShortcuts() {
68
67
  }, false)) {
69
68
  return;
70
69
  }
71
-
72
70
  var key = e.key;
73
71
  var lowercaseKey = key.toLowerCase();
74
-
75
72
  if (typeof shortcuts[lowercaseKey] !== 'undefined') {
76
73
  shortcuts[lowercaseKey]();
77
74
  }
78
75
  };
79
-
80
76
  if (!disabled) {
81
77
  window.addEventListener('keydown', onKey);
82
78
  }
83
-
84
79
  return function () {
85
80
  if (!disabled) {
86
81
  window.removeEventListener('keydown', onKey);
@@ -92,23 +87,22 @@ function useKeyboardShortcuts() {
92
87
  function checkClickable(el) {
93
88
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
94
89
  var parentDistance = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
95
-
96
90
  var _ref = options || {},
97
- _ref$maxParentDistanc = _ref.maxParentDistance,
98
- maxParentDistance = _ref$maxParentDistanc === void 0 ? 5 : _ref$maxParentDistanc,
99
- _ref$tags = _ref.tags,
100
- tags = _ref$tags === void 0 ? ['BUTTON', 'A', 'INPUT', 'TEXTAREA'] : _ref$tags;
101
-
91
+ _ref$maxParentDistanc = _ref.maxParentDistance,
92
+ maxParentDistance = _ref$maxParentDistanc === void 0 ? 5 : _ref$maxParentDistanc,
93
+ _ref$tags = _ref.tags,
94
+ tags = _ref$tags === void 0 ? ['BUTTON', 'A', 'INPUT', 'TEXTAREA'] : _ref$tags;
102
95
  var _ref2 = el || {},
103
- _ref2$tagName = _ref2.tagName,
104
- tagName = _ref2$tagName === void 0 ? null : _ref2$tagName,
105
- _ref2$parentNode = _ref2.parentNode,
106
- parentNode = _ref2$parentNode === void 0 ? null : _ref2$parentNode;
107
- _ref2.dataset;
108
-
96
+ _ref2$tagName = _ref2.tagName,
97
+ tagName = _ref2$tagName === void 0 ? null : _ref2$tagName,
98
+ _ref2$parentNode = _ref2.parentNode,
99
+ parentNode = _ref2$parentNode === void 0 ? null : _ref2$parentNode;
100
+ _ref2.dataset;
109
101
  if (tagName === 'BODY') {
110
102
  return false;
111
- } // Check if video is suspended
103
+ }
104
+
105
+ // Check if video is suspended
112
106
  // if (
113
107
  // tagName === 'VIDEO' &&
114
108
  // typeof dataset.isSuspended !== 'undefined' &&
@@ -117,54 +111,47 @@ function checkClickable(el) {
117
111
  // return true;
118
112
  // }
119
113
 
120
-
121
114
  if (tags.map(function (it) {
122
115
  return it.toLowerCase();
123
116
  }).indexOf(tagName.toLowerCase()) !== -1) {
124
117
  return true;
125
118
  }
126
-
127
119
  if (parentDistance < maxParentDistance) {
128
120
  return checkClickable(parentNode, options, parentDistance + 1);
129
121
  }
130
-
131
122
  return false;
132
123
  }
133
124
 
134
125
  function useScreenInteraction() {
135
126
  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
136
- screens = _ref.screens,
137
- screenIndex = _ref.screenIndex,
138
- screenWidth = _ref.screenWidth,
139
- _ref$disableCurrentSc = _ref.disableCurrentScreenNavigation,
140
- disableCurrentScreenNavigation = _ref$disableCurrentSc === void 0 ? false : _ref$disableCurrentSc,
141
- _ref$clickOnSiblings = _ref.clickOnSiblings,
142
- clickOnSiblings = _ref$clickOnSiblings === void 0 ? false : _ref$clickOnSiblings,
143
- _ref$nextScreenWidthP = _ref.nextScreenWidthPercent,
144
- nextScreenWidthPercent = _ref$nextScreenWidthP === void 0 ? 0.5 : _ref$nextScreenWidthP,
145
- _ref$onInteract = _ref.onInteract,
146
- onInteract = _ref$onInteract === void 0 ? null : _ref$onInteract,
147
- _ref$onNavigate = _ref.onNavigate,
148
- onNavigate = _ref$onNavigate === void 0 ? null : _ref$onNavigate;
149
-
127
+ screens = _ref.screens,
128
+ screenIndex = _ref.screenIndex,
129
+ screenWidth = _ref.screenWidth,
130
+ _ref$disableCurrentSc = _ref.disableCurrentScreenNavigation,
131
+ disableCurrentScreenNavigation = _ref$disableCurrentSc === void 0 ? false : _ref$disableCurrentSc,
132
+ _ref$clickOnSiblings = _ref.clickOnSiblings,
133
+ clickOnSiblings = _ref$clickOnSiblings === void 0 ? false : _ref$clickOnSiblings,
134
+ _ref$nextScreenWidthP = _ref.nextScreenWidthPercent,
135
+ nextScreenWidthPercent = _ref$nextScreenWidthP === void 0 ? 0.5 : _ref$nextScreenWidthP,
136
+ _ref$onInteract = _ref.onInteract,
137
+ onInteract = _ref$onInteract === void 0 ? null : _ref$onInteract,
138
+ _ref$onNavigate = _ref.onNavigate,
139
+ onNavigate = _ref$onNavigate === void 0 ? null : _ref$onNavigate;
150
140
  var _useState = React.useState(screens.reduce(function (map, _ref2) {
151
- var id = _ref2.id;
152
- return _objectSpread__default["default"](_objectSpread__default["default"]({}, map), {}, _defineProperty__default["default"]({}, id, true));
153
- }, {})),
154
- _useState2 = _slicedToArray__default["default"](_useState, 2),
155
- screensInteractionEnabled = _useState2[0],
156
- setScreensInteractionEnabled = _useState2[1];
157
-
141
+ var id = _ref2.id;
142
+ return _objectSpread__default["default"](_objectSpread__default["default"]({}, map), {}, _defineProperty__default["default"]({}, id, true));
143
+ }, {})),
144
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
145
+ screensInteractionEnabled = _useState2[0],
146
+ setScreensInteractionEnabled = _useState2[1];
158
147
  var _ref3 = screens[screenIndex] || {},
159
- _ref3$id = _ref3.id,
160
- screenId = _ref3$id === void 0 ? screenIndex : _ref3$id;
161
-
148
+ _ref3$id = _ref3.id,
149
+ screenId = _ref3$id === void 0 ? screenIndex : _ref3$id;
162
150
  var _screensInteractionEn = screensInteractionEnabled[screenId],
163
- currentScreenInteractionEnabled = _screensInteractionEn === void 0 ? true : _screensInteractionEn;
151
+ currentScreenInteractionEnabled = _screensInteractionEn === void 0 ? true : _screensInteractionEn;
164
152
  var updateInteraction = React.useCallback(function (newValue) {
165
153
  var _screensInteractionEn2 = screensInteractionEnabled[screenId],
166
- currentValue = _screensInteractionEn2 === void 0 ? true : _screensInteractionEn2;
167
-
154
+ currentValue = _screensInteractionEn2 === void 0 ? true : _screensInteractionEn2;
168
155
  if (currentValue !== newValue) {
169
156
  setScreensInteractionEnabled(screens.reduce(function (map, _ref4) {
170
157
  var id = _ref4.id;
@@ -180,12 +167,11 @@ function useScreenInteraction() {
180
167
  }, [updateInteraction]);
181
168
  var interact = React.useCallback(function (_ref5) {
182
169
  var event = _ref5.event,
183
- target = _ref5.target,
184
- currentTarget = _ref5.currentTarget,
185
- x = _ref5.x,
186
- y = _ref5.y,
187
- index = _ref5.index;
188
-
170
+ target = _ref5.target,
171
+ currentTarget = _ref5.currentTarget,
172
+ x = _ref5.x,
173
+ y = _ref5.y,
174
+ index = _ref5.index;
189
175
  if (onInteract !== null) {
190
176
  onInteract({
191
177
  event: event,
@@ -196,30 +182,24 @@ function useScreenInteraction() {
196
182
  y: y
197
183
  });
198
184
  }
199
-
200
185
  var screensCount = screens.length;
201
186
  var tappedCurrent = screenIndex === index;
202
-
203
187
  if (disableCurrentScreenNavigation && tappedCurrent || checkClickable(target) || tappedCurrent && !currentScreenInteractionEnabled) {
204
188
  return;
205
189
  }
206
-
207
190
  var _currentTarget$getBou = currentTarget.getBoundingClientRect(),
208
- width = _currentTarget$getBou.width;
209
-
191
+ width = _currentTarget$getBou.width;
210
192
  var margin = (width - screenWidth) / 2;
211
193
  var screenPreviousZone = screenWidth * (1 - nextScreenWidthPercent);
212
194
  var previousZone = margin + screenPreviousZone;
213
195
  var direction = x < previousZone ? 'previous' : 'next';
214
196
  var lastIndex = screensCount - 1;
215
197
  var nextIndex = index;
216
-
217
198
  if (direction === 'previous' && !clickOnSiblings) {
218
199
  nextIndex = Math.max(0, screenIndex - 1);
219
200
  } else if (direction === 'next' && !clickOnSiblings) {
220
201
  nextIndex = Math.min(lastIndex, screenIndex + 1);
221
202
  }
222
-
223
203
  if (onNavigate !== null) {
224
204
  onNavigate({
225
205
  index: index,
@@ -265,9 +245,9 @@ var propTypes$n = {
265
245
  onClick: PropTypes__default["default"].func,
266
246
  refButton: PropTypes__default["default"].oneOfType([PropTypes__default["default"].func, PropTypes__default["default"].shape({
267
247
  current: PropTypes__default["default"].any // eslint-disable-line
268
-
269
248
  })])
270
249
  };
250
+
271
251
  var defaultProps$n = {
272
252
  type: 'button',
273
253
  theme: null,
@@ -293,35 +273,32 @@ var defaultProps$n = {
293
273
  onClick: null,
294
274
  refButton: null
295
275
  };
296
-
297
276
  var Button = function Button(_ref) {
298
277
  var _ref2;
299
-
300
278
  var type = _ref.type,
301
- theme = _ref.theme;
302
- _ref.size;
303
- var href = _ref.href,
304
- external = _ref.external,
305
- direct = _ref.direct,
306
- target = _ref.target,
307
- label = _ref.label,
308
- children = _ref.children,
309
- focusable = _ref.focusable;
310
- _ref.active;
311
- var icon = _ref.icon,
312
- iconPosition = _ref.iconPosition,
313
- disabled = _ref.disabled,
314
- loading = _ref.loading,
315
- disableOnLoading = _ref.disableOnLoading;
316
- _ref.withoutTheme;
317
- var asLink = _ref.asLink,
318
- onClick = _ref.onClick,
319
- className = _ref.className,
320
- iconClassName = _ref.iconClassName,
321
- labelClassName = _ref.labelClassName,
322
- refButton = _ref.refButton,
323
- props = _objectWithoutProperties__default["default"](_ref, _excluded$8);
324
-
279
+ theme = _ref.theme;
280
+ _ref.size;
281
+ var href = _ref.href,
282
+ external = _ref.external,
283
+ direct = _ref.direct,
284
+ target = _ref.target,
285
+ label = _ref.label,
286
+ children = _ref.children,
287
+ focusable = _ref.focusable;
288
+ _ref.active;
289
+ var icon = _ref.icon,
290
+ iconPosition = _ref.iconPosition,
291
+ disabled = _ref.disabled,
292
+ loading = _ref.loading,
293
+ disableOnLoading = _ref.disableOnLoading;
294
+ _ref.withoutTheme;
295
+ var asLink = _ref.asLink,
296
+ onClick = _ref.onClick,
297
+ className = _ref.className,
298
+ iconClassName = _ref.iconClassName,
299
+ labelClassName = _ref.labelClassName,
300
+ refButton = _ref.refButton,
301
+ props = _objectWithoutProperties__default["default"](_ref, _excluded$8);
325
302
  var finalLabel = label || children;
326
303
  var text = finalLabel !== null ? /*#__PURE__*/React__default["default"].createElement(components.Label, null, finalLabel) : null;
327
304
  var hasChildren = label !== null && children !== null;
@@ -329,19 +306,14 @@ var Button = function Button(_ref) {
329
306
  var hasInlineIcon = hasIcon && (iconPosition === 'inline' || text === null);
330
307
  var hasIconColumns = hasIcon && !hasInlineIcon;
331
308
  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)]);
332
-
333
309
  var _ref3 = theme || {},
334
- _ref3$colors = _ref3.colors,
335
- colors = _ref3$colors === void 0 ? null : _ref3$colors;
336
-
310
+ _ref3$colors = _ref3.colors,
311
+ colors = _ref3$colors === void 0 ? null : _ref3$colors;
337
312
  var _ref4 = colors || {},
338
- _ref4$primary = _ref4.primary,
339
- brandPrimaryColor = _ref4$primary === void 0 ? null : _ref4$primary;
340
-
313
+ _ref4$primary = _ref4.primary,
314
+ brandPrimaryColor = _ref4$primary === void 0 ? null : _ref4$primary;
341
315
  var primaryColor = utils.getStyleFromColor(brandPrimaryColor, 'color');
342
-
343
316
  var buttonStyles = _objectSpread__default["default"]({}, primaryColor);
344
-
345
317
  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", {
346
318
  className: classNames__default["default"]([styles$g.icon, _defineProperty__default["default"]({}, iconClassName, iconClassName !== null)])
347
319
  }, icon), text !== null ? /*#__PURE__*/React__default["default"].createElement("span", {
@@ -353,7 +325,6 @@ var Button = function Button(_ref) {
353
325
  }, text), iconPosition === 'right' ? /*#__PURE__*/React__default["default"].createElement("span", {
354
326
  className: classNames__default["default"]([styles$g.icon, styles$g.right, _defineProperty__default["default"]({}, iconClassName, iconClassName !== null && iconPosition === 'right')])
355
327
  }, icon) : null, hasChildren ? children : null) : null, !hasIcon ? text : null, hasChildren ? children : null);
356
-
357
328
  if (href !== null) {
358
329
  var linkClassNames = classNames__default["default"]([buttonClassNames, _defineProperty__default["default"]({
359
330
  disabled: disabled
@@ -375,7 +346,6 @@ var Button = function Button(_ref) {
375
346
  tabIndex: focusable ? '' : '-1'
376
347
  }), content);
377
348
  }
378
-
379
349
  return /*#__PURE__*/React__default["default"].createElement("button", Object.assign({}, props, {
380
350
  type: type,
381
351
  className: buttonClassNames,
@@ -386,7 +356,6 @@ var Button = function Button(_ref) {
386
356
  tabIndex: focusable ? '0' : '-1'
387
357
  }), content);
388
358
  };
389
-
390
359
  Button.propTypes = propTypes$n;
391
360
  Button.defaultProps = defaultProps$n;
392
361
 
@@ -399,18 +368,15 @@ var propTypes$m = {
399
368
  var defaultProps$m = {
400
369
  className: null
401
370
  };
402
-
403
371
  var IconButton = function IconButton(_ref) {
404
372
  var className = _ref.className,
405
- props = _objectWithoutProperties__default["default"](_ref, _excluded$7);
406
-
373
+ props = _objectWithoutProperties__default["default"](_ref, _excluded$7);
407
374
  return /*#__PURE__*/React__default["default"].createElement(Button, Object.assign({
408
375
  className: classNames__default["default"]([styles$f.container, _defineProperty__default["default"]({}, className, className !== null)]),
409
376
  labelClassName: styles$f.label,
410
377
  iconClassName: styles$f.icon
411
378
  }, props));
412
379
  };
413
-
414
380
  IconButton.propTypes = propTypes$m;
415
381
  IconButton.defaultProps = defaultProps$m;
416
382
 
@@ -421,11 +387,9 @@ var propTypes$l = {
421
387
  var defaultProps$l = {
422
388
  className: null
423
389
  };
424
-
425
390
  var CloseButton = function CloseButton(_ref) {
426
391
  var className = _ref.className,
427
- props = _objectWithoutProperties__default["default"](_ref, _excluded$6);
428
-
392
+ props = _objectWithoutProperties__default["default"](_ref, _excluded$6);
429
393
  var intl = reactIntl.useIntl();
430
394
  return /*#__PURE__*/React__default["default"].createElement(IconButton, Object.assign({
431
395
  className: classNames__default["default"]([_defineProperty__default["default"]({}, className, className !== null)]),
@@ -447,7 +411,6 @@ var CloseButton = function CloseButton(_ref) {
447
411
  }))
448
412
  }, props));
449
413
  };
450
-
451
414
  CloseButton.propTypes = propTypes$l;
452
415
  CloseButton.defaultProps = defaultProps$l;
453
416
 
@@ -458,11 +421,9 @@ var propTypes$k = {
458
421
  var defaultProps$k = {
459
422
  className: null
460
423
  };
461
-
462
424
  var MenuButton = function MenuButton(_ref) {
463
425
  var className = _ref.className,
464
- props = _objectWithoutProperties__default["default"](_ref, _excluded$5);
465
-
426
+ props = _objectWithoutProperties__default["default"](_ref, _excluded$5);
466
427
  var intl = reactIntl.useIntl();
467
428
  return /*#__PURE__*/React__default["default"].createElement(IconButton, Object.assign({
468
429
  className: classNames__default["default"]([_defineProperty__default["default"]({}, className, className !== null)]),
@@ -486,7 +447,6 @@ var MenuButton = function MenuButton(_ref) {
486
447
  }))
487
448
  }, props));
488
449
  };
489
-
490
450
  MenuButton.propTypes = propTypes$k;
491
451
  MenuButton.defaultProps = defaultProps$k;
492
452
 
@@ -497,11 +457,9 @@ var propTypes$j = {
497
457
  var defaultProps$j = {
498
458
  className: null
499
459
  };
500
-
501
460
  var ShareButton = function ShareButton(_ref) {
502
461
  var className = _ref.className,
503
- props = _objectWithoutProperties__default["default"](_ref, _excluded$4);
504
-
462
+ props = _objectWithoutProperties__default["default"](_ref, _excluded$4);
505
463
  var intl = reactIntl.useIntl();
506
464
  return /*#__PURE__*/React__default["default"].createElement(IconButton, Object.assign({
507
465
  className: classNames__default["default"]([_defineProperty__default["default"]({}, className, className !== null)]),
@@ -526,7 +484,6 @@ var ShareButton = function ShareButton(_ref) {
526
484
  }))
527
485
  }, props));
528
486
  };
529
-
530
487
  ShareButton.propTypes = propTypes$j;
531
488
  ShareButton.defaultProps = defaultProps$j;
532
489
 
@@ -547,13 +504,12 @@ var defaultProps$i = {
547
504
  toggledButton: null,
548
505
  toggledButtonClassName: null
549
506
  };
550
-
551
507
  var ToggleButton = function ToggleButton(_ref) {
552
508
  var className = _ref.className,
553
- progressSpring = _ref.progressSpring,
554
- button = _ref.button,
555
- toggledButton = _ref.toggledButton,
556
- toggledButtonClassName = _ref.toggledButtonClassName;
509
+ progressSpring = _ref.progressSpring,
510
+ button = _ref.button,
511
+ toggledButton = _ref.toggledButton,
512
+ toggledButtonClassName = _ref.toggledButtonClassName;
557
513
  if (button === null) return false;
558
514
  return /*#__PURE__*/React__default["default"].createElement("div", {
559
515
  className: classNames__default["default"]([styles$e.container, _defineProperty__default["default"]({}, className, className !== null)])
@@ -573,7 +529,6 @@ var ToggleButton = function ToggleButton(_ref) {
573
529
  }
574
530
  }, toggledButton));
575
531
  };
576
-
577
532
  ToggleButton.propTypes = propTypes$i;
578
533
  ToggleButton.defaultProps = defaultProps$i;
579
534
 
@@ -592,21 +547,17 @@ var defaultProps$h = {
592
547
  theme: null,
593
548
  children: null
594
549
  };
595
-
596
550
  var ViewerMenuContainer = function ViewerMenuContainer(_ref) {
597
551
  var className = _ref.className,
598
- progressSpring = _ref.progressSpring,
599
- viewerTheme = _ref.theme,
600
- children = _ref.children;
601
-
552
+ progressSpring = _ref.progressSpring,
553
+ viewerTheme = _ref.theme,
554
+ children = _ref.children;
602
555
  var _ref2 = viewerTheme || {},
603
- _ref2$background = _ref2.background,
604
- background = _ref2$background === void 0 ? null : _ref2$background;
605
-
556
+ _ref2$background = _ref2.background,
557
+ background = _ref2$background === void 0 ? null : _ref2$background;
606
558
  var _ref3 = background || {},
607
- _ref3$color = _ref3.color,
608
- brandBackgroundColor = _ref3$color === void 0 ? null : _ref3$color;
609
-
559
+ _ref3$color = _ref3.color,
560
+ brandBackgroundColor = _ref3$color === void 0 ? null : _ref3$color;
610
561
  var backgroundColorStyle = utils.getStyleFromColor(brandBackgroundColor, 'backgroundColor');
611
562
  return /*#__PURE__*/React__default["default"].createElement("div", {
612
563
  className: classNames__default["default"]([styles$d.container, _defineProperty__default["default"]({}, className, className !== null)]),
@@ -636,7 +587,6 @@ var ViewerMenuContainer = function ViewerMenuContainer(_ref) {
636
587
  }
637
588
  }));
638
589
  };
639
-
640
590
  ViewerMenuContainer.propTypes = propTypes$h;
641
591
  ViewerMenuContainer.defaultProps = defaultProps$h;
642
592
 
@@ -665,38 +615,33 @@ var defaultProps$g = {
665
615
  onClick: null,
666
616
  className: null
667
617
  };
668
-
669
618
  var ViewerMenuDot = function ViewerMenuDot(_ref) {
670
619
  var _ref3;
671
-
672
620
  var current = _ref.current,
673
- active = _ref.active,
674
- colors = _ref.colors,
675
- count = _ref.count,
676
- subIndex = _ref.subIndex,
677
- vertical = _ref.vertical,
678
- onClick = _ref.onClick,
679
- className = _ref.className;
680
-
621
+ active = _ref.active,
622
+ colors = _ref.colors,
623
+ count = _ref.count,
624
+ subIndex = _ref.subIndex,
625
+ vertical = _ref.vertical,
626
+ onClick = _ref.onClick,
627
+ className = _ref.className;
681
628
  var _ref2 = colors || {},
682
- _ref2$primary = _ref2.primary,
683
- primary = _ref2$primary === void 0 ? 'rgba(255, 255, 255, 1)' : _ref2$primary,
684
- _ref2$secondary = _ref2.secondary,
685
- secondary = _ref2$secondary === void 0 ? 'rgba(255, 255, 255, 0.25)' : _ref2$secondary;
686
-
629
+ _ref2$primary = _ref2.primary,
630
+ primary = _ref2$primary === void 0 ? 'rgba(255, 255, 255, 1)' : _ref2$primary,
631
+ _ref2$secondary = _ref2.secondary,
632
+ secondary = _ref2$secondary === void 0 ? 'rgba(255, 255, 255, 0.25)' : _ref2$secondary;
687
633
  var _useSpring = core$1.useSpring(function () {
688
- return {
689
- scaleX: 0,
690
- config: {
691
- tension: 200,
692
- friction: 30
693
- }
694
- };
695
- }),
696
- _useSpring2 = _slicedToArray__default["default"](_useSpring, 2),
697
- dotSpringStyles = _useSpring2[0],
698
- setDotSpringProps = _useSpring2[1];
699
-
634
+ return {
635
+ scaleX: 0,
636
+ config: {
637
+ tension: 200,
638
+ friction: 30
639
+ }
640
+ };
641
+ }),
642
+ _useSpring2 = _slicedToArray__default["default"](_useSpring, 2),
643
+ dotSpringStyles = _useSpring2[0],
644
+ setDotSpringProps = _useSpring2[1];
700
645
  React.useEffect(function () {
701
646
  var activeRatio = active ? 1 : 0;
702
647
  var ratio = count > 1 && current ? (subIndex + 1) / count : activeRatio;
@@ -726,11 +671,10 @@ var ViewerMenuDot = function ViewerMenuDot(_ref) {
726
671
  })
727
672
  }))));
728
673
  };
729
-
730
674
  ViewerMenuDot.propTypes = propTypes$g;
731
675
  ViewerMenuDot.defaultProps = defaultProps$g;
732
676
 
733
- 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"};
677
+ var styles$b = {"container":"micromag-viewer-menus-menu-dots-container","closeButton":"micromag-viewer-menus-menu-dots-closeButton","items":"micromag-viewer-menus-menu-dots-items","item":"micromag-viewer-menus-menu-dots-item","vertical":"micromag-viewer-menus-menu-dots-vertical"};
734
678
 
735
679
  var _excluded$3 = ["direction", "items", "onClickDot", "onClickScreensMenu", "colors", "closeable", "withItemClick", "withoutScreensMenu", "onClose", "className"];
736
680
  var propTypes$f = {
@@ -760,36 +704,30 @@ var defaultProps$f = {
760
704
  onClose: null,
761
705
  className: null
762
706
  };
763
-
764
707
  var ViewerMenuDots = function ViewerMenuDots(_ref) {
765
708
  var _ref5;
766
-
767
709
  var direction = _ref.direction,
768
- items = _ref.items,
769
- onClickDot = _ref.onClickDot,
770
- onClickScreensMenu = _ref.onClickScreensMenu,
771
- colors = _ref.colors,
772
- closeable = _ref.closeable,
773
- withItemClick = _ref.withItemClick,
774
- withoutScreensMenu = _ref.withoutScreensMenu,
775
- onClose = _ref.onClose,
776
- className = _ref.className,
777
- props = _objectWithoutProperties__default["default"](_ref, _excluded$3);
778
-
710
+ items = _ref.items,
711
+ onClickDot = _ref.onClickDot,
712
+ onClickScreensMenu = _ref.onClickScreensMenu,
713
+ colors = _ref.colors,
714
+ closeable = _ref.closeable,
715
+ withItemClick = _ref.withItemClick,
716
+ withoutScreensMenu = _ref.withoutScreensMenu,
717
+ onClose = _ref.onClose,
718
+ className = _ref.className,
719
+ props = _objectWithoutProperties__default["default"](_ref, _excluded$3);
779
720
  var _ref2 = colors || {},
780
- _ref2$primary = _ref2.primary,
781
- primary = _ref2$primary === void 0 ? 'rgba(255, 255, 255, 1)' : _ref2$primary;
782
-
721
+ _ref2$primary = _ref2.primary,
722
+ primary = _ref2$primary === void 0 ? 'rgba(255, 255, 255, 1)' : _ref2$primary;
783
723
  var intl = reactIntl.useIntl();
784
724
  var currentIndex = items.findIndex(function (_ref3) {
785
725
  var _ref3$current = _ref3.current,
786
- current = _ref3$current === void 0 ? false : _ref3$current;
726
+ current = _ref3$current === void 0 ? false : _ref3$current;
787
727
  return current;
788
728
  });
789
-
790
729
  var _ref4 = props || {},
791
- style = _ref4.style;
792
-
730
+ style = _ref4.style;
793
731
  return /*#__PURE__*/React__default["default"].createElement("nav", {
794
732
  className: classNames__default["default"]([styles$b.container, (_ref5 = {}, _defineProperty__default["default"](_ref5, className, className !== null), _defineProperty__default["default"](_ref5, styles$b.vertical, direction === 'vertical'), _ref5)]),
795
733
  "aria-label": intl.formatMessage({
@@ -819,13 +757,12 @@ var ViewerMenuDots = function ViewerMenuDots(_ref) {
819
757
  className: styles$b.items
820
758
  }, items.map(function (item, index) {
821
759
  var _ref6 = item || {},
822
- _ref6$current = _ref6.current,
823
- current = _ref6$current === void 0 ? false : _ref6$current,
824
- _ref6$count = _ref6.count,
825
- count = _ref6$count === void 0 ? 1 : _ref6$count,
826
- _ref6$subIndex = _ref6.subIndex,
827
- subIndex = _ref6$subIndex === void 0 ? 0 : _ref6$subIndex;
828
-
760
+ _ref6$current = _ref6.current,
761
+ current = _ref6$current === void 0 ? false : _ref6$current,
762
+ _ref6$count = _ref6.count,
763
+ count = _ref6$count === void 0 ? 1 : _ref6$count,
764
+ _ref6$subIndex = _ref6.subIndex,
765
+ subIndex = _ref6$subIndex === void 0 ? 0 : _ref6$subIndex;
829
766
  return /*#__PURE__*/React__default["default"].createElement(ViewerMenuDot, {
830
767
  key: "item-".concat(index + 1),
831
768
  current: current,
@@ -869,7 +806,6 @@ var ViewerMenuDots = function ViewerMenuDots(_ref) {
869
806
  icon: faTimes.faTimes
870
807
  }))) : null));
871
808
  };
872
-
873
809
  ViewerMenuDots.propTypes = propTypes$f;
874
810
  ViewerMenuDots.defaultProps = defaultProps$f;
875
811
 
@@ -879,7 +815,6 @@ var propTypes$e = {
879
815
  var defaultProps$e = {
880
816
  className: null
881
817
  };
882
-
883
818
  var StackIcon = function StackIcon(_ref) {
884
819
  var className = _ref.className;
885
820
  return /*#__PURE__*/React__default["default"].createElement("svg", {
@@ -895,7 +830,6 @@ var StackIcon = function StackIcon(_ref) {
895
830
  points: "10.5 1.5 10.5 16.5 1.5 16.5 1.5 17.5 11.5 17.5 11.5 1.5 10.5 1.5"
896
831
  }));
897
832
  };
898
-
899
833
  StackIcon.propTypes = propTypes$e;
900
834
  StackIcon.defaultProps = defaultProps$e;
901
835
 
@@ -917,29 +851,24 @@ var defaultProps$d = {
917
851
  screenSize: null,
918
852
  focusable: true
919
853
  };
920
-
921
854
  var ViewerMenuScreen = function ViewerMenuScreen(_ref) {
922
855
  var _ref4;
923
-
924
856
  var className = _ref.className,
925
- item = _ref.item,
926
- index = _ref.index,
927
- _onClick = _ref.onClick,
928
- screenSize = _ref.screenSize,
929
- focusable = _ref.focusable;
857
+ item = _ref.item,
858
+ index = _ref.index,
859
+ _onClick = _ref.onClick,
860
+ screenSize = _ref.screenSize,
861
+ focusable = _ref.focusable;
930
862
  var intl = reactIntl.useIntl();
931
-
932
863
  var _ref2 = item || {},
933
- _ref2$current = _ref2.current,
934
- current = _ref2$current === void 0 ? false : _ref2$current,
935
- screen = _ref2.screen,
936
- _ref2$count = _ref2.count,
937
- count = _ref2$count === void 0 ? 1 : _ref2$count;
938
-
864
+ _ref2$current = _ref2.current,
865
+ current = _ref2$current === void 0 ? false : _ref2$current,
866
+ screen = _ref2.screen,
867
+ _ref2$count = _ref2.count,
868
+ count = _ref2$count === void 0 ? 1 : _ref2$count;
939
869
  var _ref3 = screenSize || {},
940
- screenWidth = _ref3.width,
941
- screenHeight = _ref3.height;
942
-
870
+ screenWidth = _ref3.width,
871
+ screenHeight = _ref3.height;
943
872
  var screenAriaLabel = "".concat(intl.formatMessage({
944
873
  id: "LkVfwW",
945
874
  defaultMessage: [{
@@ -991,11 +920,10 @@ var ViewerMenuScreen = function ViewerMenuScreen(_ref) {
991
920
  withSize: true
992
921
  }) : null));
993
922
  };
994
-
995
923
  ViewerMenuScreen.propTypes = propTypes$d;
996
924
  ViewerMenuScreen.defaultProps = defaultProps$d;
997
925
 
998
- 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","content":"micromag-viewer-menus-menu-preview-content","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","nav":"micromag-viewer-menus-menu-preview-nav","item":"micromag-viewer-menus-menu-preview-item","items":"micromag-viewer-menus-menu-preview-items","inner":"micromag-viewer-menus-menu-preview-inner","frame":"micromag-viewer-menus-menu-preview-frame","screen":"micromag-viewer-menus-menu-preview-screen","intro":"micromag-viewer-menus-menu-preview-intro"};
926
+ 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","content":"micromag-viewer-menus-menu-preview-content","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","nav":"micromag-viewer-menus-menu-preview-nav","items":"micromag-viewer-menus-menu-preview-items","item":"micromag-viewer-menus-menu-preview-item","inner":"micromag-viewer-menus-menu-preview-inner","frame":"micromag-viewer-menus-menu-preview-frame","screen":"micromag-viewer-menus-menu-preview-screen","intro":"micromag-viewer-menus-menu-preview-intro"};
999
927
 
1000
928
  var propTypes$c = {
1001
929
  viewerTheme: core.PropTypes.viewerTheme,
@@ -1030,59 +958,54 @@ var defaultProps$c = {
1030
958
  // fullscreenEnabled: false,
1031
959
  className: null
1032
960
  };
1033
-
1034
961
  var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
1035
962
  var viewerTheme = _ref.viewerTheme,
1036
- screenSize = _ref.screenSize,
1037
- menuWidth = _ref.menuWidth,
1038
- items = _ref.items,
1039
- focusable = _ref.focusable,
1040
- onClickScreen = _ref.onClickScreen,
1041
- maxThumbsWidth = _ref.maxThumbsWidth,
1042
- paddingTop = _ref.paddingTop,
1043
- scrollDisabled = _ref.scrollDisabled,
1044
- className = _ref.className;
1045
-
963
+ screenSize = _ref.screenSize,
964
+ menuWidth = _ref.menuWidth,
965
+ items = _ref.items,
966
+ focusable = _ref.focusable,
967
+ onClickScreen = _ref.onClickScreen,
968
+ maxThumbsWidth = _ref.maxThumbsWidth,
969
+ paddingTop = _ref.paddingTop,
970
+ scrollDisabled = _ref.scrollDisabled,
971
+ className = _ref.className;
1046
972
  var _useDimensionObserver = hooks.useDimensionObserver(),
1047
- containerRef = _useDimensionObserver.ref,
1048
- _useDimensionObserver2 = _useDimensionObserver.width,
1049
- contentWidth = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2;
1050
-
973
+ containerRef = _useDimensionObserver.ref,
974
+ _useDimensionObserver2 = _useDimensionObserver.width,
975
+ contentWidth = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2;
1051
976
  var thumbsPerLine = Math.max(Math.floor(contentWidth / maxThumbsWidth), 3); // @note cool, should be in recipes
977
+
1052
978
  // @todo reimplement the brand logo
1053
979
  // const { background = null, logo: brandLogo = null } = viewerTheme || {};
1054
-
1055
980
  var _ref2 = viewerTheme || {},
1056
- _ref2$background = _ref2.background,
1057
- background = _ref2$background === void 0 ? null : _ref2$background;
1058
-
981
+ _ref2$background = _ref2.background,
982
+ background = _ref2$background === void 0 ? null : _ref2$background;
1059
983
  var _ref3 = background || {},
1060
- _ref3$image = _ref3.image,
1061
- image = _ref3$image === void 0 ? null : _ref3$image;
1062
-
984
+ _ref3$image = _ref3.image,
985
+ image = _ref3$image === void 0 ? null : _ref3$image;
1063
986
  var _ref4 = image || {},
1064
- _ref4$url = _ref4.url,
1065
- brandImageUrl = _ref4$url === void 0 ? null : _ref4$url;
1066
-
987
+ _ref4$url = _ref4.url,
988
+ brandImageUrl = _ref4$url === void 0 ? null : _ref4$url;
1067
989
  var brandImageStyle = brandImageUrl !== null ? {
1068
990
  backgroundImage: "url(".concat(brandImageUrl, ")")
1069
- } : null; // const { url: brandLogoUrl = null } = brandLogo || {};
991
+ } : null;
1070
992
 
993
+ // const { url: brandLogoUrl = null } = brandLogo || {};
1071
994
  var _useState = React.useState([]),
1072
- _useState2 = _slicedToArray__default["default"](_useState, 2),
1073
- screensMounted = _useState2[0],
1074
- setScreensMounted = _useState2[1]; // @todo optimize all of this the proper way
995
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
996
+ screensMounted = _useState2[0],
997
+ setScreensMounted = _useState2[1];
998
+
999
+ // @todo optimize all of this the proper way
1075
1000
  // const finalItems = useMemo(
1076
1001
  // () => (!focusable ? items.map((s, i) => (i > 6 ? { screenId: s.screenId } : s)) : items),
1077
1002
  // [items, focusable],
1078
1003
  // );
1079
1004
 
1080
-
1081
1005
  React.useEffect(function () {
1082
1006
  if (items.length === screensMounted.length) {
1083
1007
  return function () {};
1084
1008
  }
1085
-
1086
1009
  var timeout = setTimeout(function () {
1087
1010
  setScreensMounted([].concat(_toConsumableArray__default["default"](screensMounted), [true]));
1088
1011
  }, 40);
@@ -1111,16 +1034,13 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
1111
1034
  className: styles$9.items
1112
1035
  }, items.map(function (item, index) {
1113
1036
  var _ref6 = item || {},
1114
- screenId = _ref6.screenId;
1115
-
1037
+ screenId = _ref6.screenId;
1116
1038
  var itemStyles = {
1117
1039
  width: "".concat(100 / thumbsPerLine, "%")
1118
1040
  };
1119
-
1120
1041
  var _ref7 = screenSize || {},
1121
- screenWidth = _ref7.width,
1122
- screenHeight = _ref7.height;
1123
-
1042
+ screenWidth = _ref7.width,
1043
+ screenHeight = _ref7.height;
1124
1044
  var screenMounted = screensMounted[index] || false;
1125
1045
  return /*#__PURE__*/React__default["default"].createElement("li", {
1126
1046
  key: "item-".concat(screenId),
@@ -1143,7 +1063,6 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
1143
1063
  }) : null)));
1144
1064
  }))))));
1145
1065
  };
1146
-
1147
1066
  ViewerMenuPreview.propTypes = propTypes$c;
1148
1067
  ViewerMenuPreview.defaultProps = defaultProps$c;
1149
1068
 
@@ -1163,13 +1082,12 @@ var defaultProps$b = {
1163
1082
  description: null,
1164
1083
  className: null
1165
1084
  };
1166
-
1167
1085
  var MicromagPreview = function MicromagPreview(_ref) {
1168
1086
  var screen = _ref.screen,
1169
- title = _ref.title,
1170
- url = _ref.url,
1171
- description = _ref.description,
1172
- className = _ref.className;
1087
+ title = _ref.title,
1088
+ url = _ref.url,
1089
+ description = _ref.description,
1090
+ className = _ref.className;
1173
1091
  return /*#__PURE__*/React__default["default"].createElement("div", {
1174
1092
  className: classNames__default["default"]([styles$8.container, _defineProperty__default["default"]({}, className, className)])
1175
1093
  }, /*#__PURE__*/React__default["default"].createElement("div", {
@@ -1187,7 +1105,6 @@ var MicromagPreview = function MicromagPreview(_ref) {
1187
1105
  className: styles$8.url
1188
1106
  }, url) : null, /*#__PURE__*/React__default["default"].createElement("p", null, description)));
1189
1107
  };
1190
-
1191
1108
  MicromagPreview.propTypes = propTypes$b;
1192
1109
  MicromagPreview.defaultProps = defaultProps$b;
1193
1110
 
@@ -1219,75 +1136,62 @@ var defaultProps$a = {
1219
1136
  onShare: null,
1220
1137
  className: null
1221
1138
  };
1222
-
1223
1139
  var ViewerMenuShare = function ViewerMenuShare(_ref) {
1224
1140
  var viewerTheme = _ref.viewerTheme,
1225
- menuWidth = _ref.menuWidth,
1226
- title = _ref.title,
1227
- description = _ref.description,
1228
- items = _ref.items,
1229
- focusable = _ref.focusable,
1230
- paddingTop = _ref.paddingTop,
1231
- currentScreenIndex = _ref.currentScreenIndex,
1232
- shareUrl = _ref.shareUrl,
1233
- onShare = _ref.onShare,
1234
- className = _ref.className;
1235
-
1141
+ menuWidth = _ref.menuWidth,
1142
+ title = _ref.title,
1143
+ description = _ref.description,
1144
+ items = _ref.items,
1145
+ focusable = _ref.focusable,
1146
+ paddingTop = _ref.paddingTop,
1147
+ currentScreenIndex = _ref.currentScreenIndex,
1148
+ shareUrl = _ref.shareUrl,
1149
+ onShare = _ref.onShare,
1150
+ className = _ref.className;
1236
1151
  // Viewer theme
1237
1152
  var _ref2 = viewerTheme || {},
1238
- _ref2$background = _ref2.background,
1239
- background = _ref2$background === void 0 ? null : _ref2$background;
1240
-
1153
+ _ref2$background = _ref2.background,
1154
+ background = _ref2$background === void 0 ? null : _ref2$background;
1241
1155
  var _ref3 = background || {},
1242
- _ref3$image = _ref3.image,
1243
- image = _ref3$image === void 0 ? null : _ref3$image;
1244
-
1156
+ _ref3$image = _ref3.image,
1157
+ image = _ref3$image === void 0 ? null : _ref3$image;
1245
1158
  var _ref4 = image || {},
1246
- _ref4$url = _ref4.url,
1247
- brandImageUrl = _ref4$url === void 0 ? null : _ref4$url;
1248
-
1159
+ _ref4$url = _ref4.url,
1160
+ brandImageUrl = _ref4$url === void 0 ? null : _ref4$url;
1249
1161
  var brandImageStyle = brandImageUrl !== null ? {
1250
1162
  backgroundImage: "url(".concat(brandImageUrl, ")")
1251
1163
  } : null;
1252
1164
  var coverScreen = React.useMemo(function () {
1253
1165
  var _ref5 = items[0] || {},
1254
- _ref5$screen = _ref5.screen,
1255
- screen = _ref5$screen === void 0 ? null : _ref5$screen;
1256
-
1166
+ _ref5$screen = _ref5.screen,
1167
+ screen = _ref5$screen === void 0 ? null : _ref5$screen;
1257
1168
  return screen;
1258
1169
  }, [items]);
1259
1170
  var currentScreen = React.useMemo(function () {
1260
1171
  var found = items.find(function (item) {
1261
1172
  var _ref6 = item || {},
1262
- _ref6$current = _ref6.current,
1263
- current = _ref6$current === void 0 ? false : _ref6$current;
1264
-
1173
+ _ref6$current = _ref6.current,
1174
+ current = _ref6$current === void 0 ? false : _ref6$current;
1265
1175
  return current;
1266
1176
  });
1267
-
1268
1177
  var _ref7 = found || {},
1269
- _ref7$screen = _ref7.screen,
1270
- screen = _ref7$screen === void 0 ? null : _ref7$screen;
1271
-
1178
+ _ref7$screen = _ref7.screen,
1179
+ screen = _ref7$screen === void 0 ? null : _ref7$screen;
1272
1180
  return screen;
1273
1181
  }, [items, currentScreenIndex, focusable]);
1274
-
1275
1182
  var _useState = React.useState(false),
1276
- _useState2 = _slicedToArray__default["default"](_useState, 2),
1277
- shareCurrentScreen = _useState2[0],
1278
- setShareCurrentScreen = _useState2[1];
1279
-
1183
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
1184
+ shareCurrentScreen = _useState2[0],
1185
+ setShareCurrentScreen = _useState2[1];
1280
1186
  var onShareModeChange = React.useCallback(function () {
1281
1187
  setShareCurrentScreen(function (value) {
1282
1188
  return !value;
1283
1189
  });
1284
1190
  }, [setShareCurrentScreen]);
1285
-
1286
1191
  var _useState3 = React.useState(shareUrl),
1287
- _useState4 = _slicedToArray__default["default"](_useState3, 2),
1288
- finalShareUrl = _useState4[0],
1289
- setFinalShareUrl = _useState4[1];
1290
-
1192
+ _useState4 = _slicedToArray__default["default"](_useState3, 2),
1193
+ finalShareUrl = _useState4[0],
1194
+ setFinalShareUrl = _useState4[1];
1291
1195
  React.useEffect(function () {
1292
1196
  setFinalShareUrl(shareCurrentScreen && currentScreenIndex !== 0 ? "".concat(shareUrl, "/").concat(currentScreenIndex + 1) : shareUrl);
1293
1197
  }, [shareCurrentScreen, currentScreenIndex, setFinalShareUrl]);
@@ -1340,11 +1244,10 @@ var ViewerMenuShare = function ViewerMenuShare(_ref) {
1340
1244
  shareCurrentScreen: shareCurrentScreen
1341
1245
  })))));
1342
1246
  };
1343
-
1344
1247
  ViewerMenuShare.propTypes = propTypes$a;
1345
1248
  ViewerMenuShare.defaultProps = defaultProps$a;
1346
1249
 
1347
- var styles$6 = {"container":"micromag-viewer-container","menuContainer":"micromag-viewer-menuContainer","menuPreview":"micromag-viewer-menuPreview","menuShare":"micromag-viewer-menuShare","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","menuButton":"micromag-viewer-menuButton","slidingButton":"micromag-viewer-slidingButton","screensMenuButtonToggled":"micromag-viewer-screensMenuButtonToggled","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","shareIncentiveContainer":"micromag-viewer-shareIncentiveContainer","shareIncentive":"micromag-viewer-shareIncentive","shareIncentiveVisible":"micromag-viewer-shareIncentiveVisible"};
1250
+ var styles$6 = {"container":"micromag-viewer-container","screenContainer":"micromag-viewer-screenContainer","screensFrame":"micromag-viewer-screensFrame","menuShare":"micromag-viewer-menuShare","menuPreview":"micromag-viewer-menuPreview","menuContainer":"micromag-viewer-menuContainer","landscape":"micromag-viewer-landscape","hideMenu":"micromag-viewer-hideMenu","menuNavContainer":"micromag-viewer-menuNavContainer","menuTopContainer":"micromag-viewer-menuTopContainer","dots":"micromag-viewer-dots","disableMenu":"micromag-viewer-disableMenu","content":"micromag-viewer-content","withoutGestures":"micromag-viewer-withoutGestures","fadeMenu":"micromag-viewer-fadeMenu","withShadow":"micromag-viewer-withShadow","isOpened":"micromag-viewer-isOpened","menuItem":"micromag-viewer-menuItem","menuButton":"micromag-viewer-menuButton","slidingButton":"micromag-viewer-slidingButton","screensMenuButtonToggled":"micromag-viewer-screensMenuButtonToggled","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","shareIncentiveContainer":"micromag-viewer-shareIncentiveContainer","shareIncentive":"micromag-viewer-shareIncentive","shareIncentiveVisible":"micromag-viewer-shareIncentiveVisible"};
1348
1251
 
1349
1252
  var propTypes$9 = {
1350
1253
  story: core.PropTypes.story.isRequired,
@@ -1367,9 +1270,9 @@ var propTypes$9 = {
1367
1270
  onClickCloseViewer: PropTypes__default["default"].func,
1368
1271
  refDots: PropTypes__default["default"].shape({
1369
1272
  current: PropTypes__default["default"].any // eslint-disable-line
1370
-
1371
1273
  })
1372
1274
  };
1275
+
1373
1276
  var defaultProps$9 = {
1374
1277
  currentScreenIndex: 0,
1375
1278
  toggleFullscreen: null,
@@ -1390,75 +1293,63 @@ var defaultProps$9 = {
1390
1293
  onClickCloseViewer: null,
1391
1294
  refDots: null
1392
1295
  };
1393
-
1394
1296
  var ViewerMenu = function ViewerMenu(_ref) {
1395
1297
  var _ref11;
1396
-
1397
1298
  var story = _ref.story,
1398
- currentScreenIndex = _ref.currentScreenIndex,
1399
- toggleFullscreen = _ref.toggleFullscreen,
1400
- fullscreenActive = _ref.fullscreenActive,
1401
- fullscreenEnabled = _ref.fullscreenEnabled,
1402
- closeable = _ref.closeable,
1403
- withShadow = _ref.withShadow,
1404
- shareBasePath = _ref.shareBasePath,
1405
- trackingEnabled = _ref.trackingEnabled,
1406
- viewerTheme = _ref.theme,
1407
- screenSize = _ref.screenSize,
1408
- menuWidth = _ref.menuWidth,
1409
- withDotItemClick = _ref.withDotItemClick,
1410
- withoutScreensMenu = _ref.withoutScreensMenu,
1411
- withoutShareMenu = _ref.withoutShareMenu,
1412
- customOnClickScreen = _ref.onClickScreen;
1413
- _ref.onClickMenu;
1414
- var onClickCloseViewer = _ref.onClickCloseViewer,
1415
- refDots = _ref.refDots;
1299
+ currentScreenIndex = _ref.currentScreenIndex,
1300
+ toggleFullscreen = _ref.toggleFullscreen,
1301
+ fullscreenActive = _ref.fullscreenActive,
1302
+ fullscreenEnabled = _ref.fullscreenEnabled,
1303
+ closeable = _ref.closeable,
1304
+ withShadow = _ref.withShadow,
1305
+ shareBasePath = _ref.shareBasePath,
1306
+ trackingEnabled = _ref.trackingEnabled,
1307
+ viewerTheme = _ref.theme,
1308
+ screenSize = _ref.screenSize,
1309
+ menuWidth = _ref.menuWidth,
1310
+ withDotItemClick = _ref.withDotItemClick,
1311
+ withoutScreensMenu = _ref.withoutScreensMenu,
1312
+ withoutShareMenu = _ref.withoutShareMenu,
1313
+ customOnClickScreen = _ref.onClickScreen;
1314
+ _ref.onClickMenu;
1315
+ var onClickCloseViewer = _ref.onClickCloseViewer,
1316
+ refDots = _ref.refDots;
1416
1317
  var _story$components = story.components,
1417
- screens = _story$components === void 0 ? [] : _story$components,
1418
- _story$title = story.title,
1419
- title = _story$title === void 0 ? null : _story$title,
1420
- _story$metadata = story.metadata,
1421
- metadata = _story$metadata === void 0 ? null : _story$metadata;
1422
-
1318
+ screens = _story$components === void 0 ? [] : _story$components,
1319
+ _story$title = story.title,
1320
+ title = _story$title === void 0 ? null : _story$title,
1321
+ _story$metadata = story.metadata,
1322
+ metadata = _story$metadata === void 0 ? null : _story$metadata;
1423
1323
  var _ref2 = metadata || {},
1424
- _ref2$description = _ref2.description,
1425
- description = _ref2$description === void 0 ? null : _ref2$description;
1426
-
1324
+ _ref2$description = _ref2.description,
1325
+ description = _ref2$description === void 0 ? null : _ref2$description;
1427
1326
  var currentScreen = screens !== null ? screens[currentScreenIndex] || null : null;
1428
-
1429
1327
  var _ref3 = currentScreen || {},
1430
- _ref3$id = _ref3.id,
1431
- screenId = _ref3$id === void 0 ? null : _ref3$id,
1432
- _ref3$type = _ref3.type,
1433
- screenType = _ref3$type === void 0 ? null : _ref3$type;
1434
-
1328
+ _ref3$id = _ref3.id,
1329
+ screenId = _ref3$id === void 0 ? null : _ref3$id,
1330
+ _ref3$type = _ref3.type,
1331
+ screenType = _ref3$type === void 0 ? null : _ref3$type;
1435
1332
  var _ref4 = viewerTheme || {},
1436
- _ref4$menuTheme = _ref4.menuTheme,
1437
- menuTheme = _ref4$menuTheme === void 0 ? null : _ref4$menuTheme;
1438
-
1333
+ _ref4$menuTheme = _ref4.menuTheme,
1334
+ menuTheme = _ref4$menuTheme === void 0 ? null : _ref4$menuTheme;
1439
1335
  var _useViewerSize = contexts.useViewerSize(),
1440
- viewerHeight = _useViewerSize.height;
1441
-
1336
+ viewerHeight = _useViewerSize.height;
1442
1337
  var _useState = React.useState(false),
1443
- _useState2 = _slicedToArray__default["default"](_useState, 2),
1444
- menuOpened = _useState2[0],
1445
- setMenuOpened = _useState2[1];
1446
-
1338
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
1339
+ menuOpened = _useState2[0],
1340
+ setMenuOpened = _useState2[1];
1447
1341
  var _useState3 = React.useState(false),
1448
- _useState4 = _slicedToArray__default["default"](_useState3, 2),
1449
- shareOpened = _useState4[0],
1450
- setShareOpened = _useState4[1];
1451
-
1342
+ _useState4 = _slicedToArray__default["default"](_useState3, 2),
1343
+ shareOpened = _useState4[0],
1344
+ setShareOpened = _useState4[1];
1452
1345
  var _useState5 = React.useState(false),
1453
- _useState6 = _slicedToArray__default["default"](_useState5, 2),
1454
- menuMounted = _useState6[0],
1455
- setMenuMounted = _useState6[1];
1456
-
1346
+ _useState6 = _slicedToArray__default["default"](_useState5, 2),
1347
+ menuMounted = _useState6[0],
1348
+ setMenuMounted = _useState6[1];
1457
1349
  var _useDimensionObserver = hooks.useDimensionObserver(),
1458
- navContainerRef = _useDimensionObserver.ref,
1459
- _useDimensionObserver2 = _useDimensionObserver.height,
1460
- navContainerHeight = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2;
1461
-
1350
+ navContainerRef = _useDimensionObserver.ref,
1351
+ _useDimensionObserver2 = _useDimensionObserver.height,
1352
+ navContainerHeight = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2;
1462
1353
  var items = React.useMemo(function () {
1463
1354
  return screens.map(function (it) {
1464
1355
  var children = screens.filter(function (s) {
@@ -1480,7 +1371,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
1480
1371
  };
1481
1372
  }).filter(function (_ref5) {
1482
1373
  var _ref5$visible = _ref5.visible,
1483
- visible = _ref5$visible === void 0 ? true : _ref5$visible;
1374
+ visible = _ref5$visible === void 0 ? true : _ref5$visible;
1484
1375
  return visible;
1485
1376
  });
1486
1377
  }, [screens, screenId]);
@@ -1525,11 +1416,9 @@ var ViewerMenu = function ViewerMenu(_ref) {
1525
1416
  }, [setShareOpened, setMenuOpened, trackScreenEvent]);
1526
1417
  var onClickScreen = React.useCallback(function (screen) {
1527
1418
  setMenuOpened(false);
1528
-
1529
1419
  if (customOnClickScreen !== null) {
1530
1420
  customOnClickScreen(screen);
1531
1421
  }
1532
-
1533
1422
  var index = items.findIndex(function (_ref6) {
1534
1423
  var id = _ref6.id;
1535
1424
  return id === screenId;
@@ -1542,40 +1431,34 @@ var ViewerMenu = function ViewerMenu(_ref) {
1542
1431
  }, [trackScreenEvent]);
1543
1432
  var computeShareProgress = React.useCallback(function (_ref7) {
1544
1433
  var active = _ref7.active,
1545
- _ref7$direction = _slicedToArray__default["default"](_ref7.direction, 2),
1546
- dy = _ref7$direction[1],
1547
- _ref7$movement = _slicedToArray__default["default"](_ref7.movement, 2),
1548
- my = _ref7$movement[1],
1549
- _ref7$velocity = _slicedToArray__default["default"](_ref7.velocity, 2),
1550
- vy = _ref7$velocity[1];
1551
-
1434
+ _ref7$direction = _slicedToArray__default["default"](_ref7.direction, 2),
1435
+ dy = _ref7$direction[1],
1436
+ _ref7$movement = _slicedToArray__default["default"](_ref7.movement, 2),
1437
+ my = _ref7$movement[1],
1438
+ _ref7$velocity = _slicedToArray__default["default"](_ref7.velocity, 2),
1439
+ vy = _ref7$velocity[1];
1552
1440
  var progress = Math.max(0, my) / (viewerHeight * 0.8);
1553
1441
  var reachedThreshold = (vy > 0.3 || Math.abs(progress) > 0.3) && dy !== -1;
1554
-
1555
1442
  if (!active) {
1556
1443
  if (reachedThreshold) onOpenShare();
1557
1444
  return reachedThreshold ? 1 : 0;
1558
1445
  }
1559
-
1560
1446
  return progress;
1561
1447
  }, [onOpenShare, viewerHeight]);
1562
1448
  var computeShareProgressClose = React.useCallback(function (_ref8) {
1563
1449
  var active = _ref8.active,
1564
- _ref8$direction = _slicedToArray__default["default"](_ref8.direction, 2),
1565
- dy = _ref8$direction[1],
1566
- _ref8$movement = _slicedToArray__default["default"](_ref8.movement, 2),
1567
- my = _ref8$movement[1],
1568
- _ref8$velocity = _slicedToArray__default["default"](_ref8.velocity, 2),
1569
- vy = _ref8$velocity[1];
1570
-
1450
+ _ref8$direction = _slicedToArray__default["default"](_ref8.direction, 2),
1451
+ dy = _ref8$direction[1],
1452
+ _ref8$movement = _slicedToArray__default["default"](_ref8.movement, 2),
1453
+ my = _ref8$movement[1],
1454
+ _ref8$velocity = _slicedToArray__default["default"](_ref8.velocity, 2),
1455
+ vy = _ref8$velocity[1];
1571
1456
  var progress = Math.max(0, my) / (viewerHeight * 0.8);
1572
1457
  var reachedThreshold = (vy > 0.3 || Math.abs(progress) > 0.3) && dy !== -1;
1573
-
1574
1458
  if (!active) {
1575
1459
  if (reachedThreshold) onCloseShare();
1576
1460
  return reachedThreshold ? 0 : 1;
1577
1461
  }
1578
-
1579
1462
  return 1 - progress;
1580
1463
  }, [onCloseShare, viewerHeight]);
1581
1464
  var springParams = React.useMemo(function () {
@@ -1586,64 +1469,54 @@ var ViewerMenu = function ViewerMenu(_ref) {
1586
1469
  }
1587
1470
  };
1588
1471
  }, []);
1589
-
1590
1472
  var _useDragProgress = hooks.useDragProgress({
1591
- progress: shareOpened ? 1 : 0,
1592
- computeProgress: shareOpened ? computeShareProgressClose : computeShareProgress,
1593
- springParams: springParams
1594
- }),
1595
- bindShareDrag = _useDragProgress.bind,
1596
- draggingShare = _useDragProgress.dragging,
1597
- shareOpenedProgress = _useDragProgress.progress;
1598
-
1473
+ progress: shareOpened ? 1 : 0,
1474
+ computeProgress: shareOpened ? computeShareProgressClose : computeShareProgress,
1475
+ springParams: springParams
1476
+ }),
1477
+ bindShareDrag = _useDragProgress.bind,
1478
+ draggingShare = _useDragProgress.dragging,
1479
+ shareOpenedProgress = _useDragProgress.progress;
1599
1480
  var computeMenuProgress = React.useCallback(function (_ref9) {
1600
1481
  var active = _ref9.active,
1601
- _ref9$direction = _slicedToArray__default["default"](_ref9.direction, 2),
1602
- dy = _ref9$direction[1],
1603
- _ref9$movement = _slicedToArray__default["default"](_ref9.movement, 2),
1604
- my = _ref9$movement[1],
1605
- _ref9$velocity = _slicedToArray__default["default"](_ref9.velocity, 2),
1606
- vy = _ref9$velocity[1];
1607
-
1482
+ _ref9$direction = _slicedToArray__default["default"](_ref9.direction, 2),
1483
+ dy = _ref9$direction[1],
1484
+ _ref9$movement = _slicedToArray__default["default"](_ref9.movement, 2),
1485
+ my = _ref9$movement[1],
1486
+ _ref9$velocity = _slicedToArray__default["default"](_ref9.velocity, 2),
1487
+ vy = _ref9$velocity[1];
1608
1488
  var progress = Math.max(0, my) / (window.innerHeight * 0.8);
1609
1489
  var reachedThreshold = (vy > 0.3 || Math.abs(progress) > 0.3) && dy !== -1;
1610
-
1611
1490
  if (!active) {
1612
1491
  if (reachedThreshold) onOpenMenu();
1613
1492
  return reachedThreshold ? 1 : 0;
1614
1493
  }
1615
-
1616
1494
  return progress;
1617
1495
  }, [onOpenMenu]);
1618
1496
  var computeMenuProgressClose = React.useCallback(function (_ref10) {
1619
1497
  var active = _ref10.active,
1620
- _ref10$direction = _slicedToArray__default["default"](_ref10.direction, 2),
1621
- dy = _ref10$direction[1],
1622
- _ref10$movement = _slicedToArray__default["default"](_ref10.movement, 2),
1623
- my = _ref10$movement[1],
1624
- _ref10$velocity = _slicedToArray__default["default"](_ref10.velocity, 2),
1625
- vy = _ref10$velocity[1];
1626
-
1498
+ _ref10$direction = _slicedToArray__default["default"](_ref10.direction, 2),
1499
+ dy = _ref10$direction[1],
1500
+ _ref10$movement = _slicedToArray__default["default"](_ref10.movement, 2),
1501
+ my = _ref10$movement[1],
1502
+ _ref10$velocity = _slicedToArray__default["default"](_ref10.velocity, 2),
1503
+ vy = _ref10$velocity[1];
1627
1504
  var progress = Math.max(0, my) / (window.innerHeight * 0.8);
1628
1505
  var reachedThreshold = (vy > 0.3 || Math.abs(progress) > 0.3) && dy !== -1;
1629
-
1630
1506
  if (!active) {
1631
1507
  if (reachedThreshold) onCloseMenu();
1632
1508
  return reachedThreshold ? 0 : 1;
1633
1509
  }
1634
-
1635
1510
  return 1 - progress;
1636
1511
  }, [onCloseMenu]);
1637
-
1638
1512
  var _useDragProgress2 = hooks.useDragProgress({
1639
- progress: menuOpened ? 1 : 0,
1640
- computeProgress: menuOpened ? computeMenuProgressClose : computeMenuProgress,
1641
- springParams: springParams
1642
- }),
1643
- bindMenuDrag = _useDragProgress2.bind,
1644
- draggingMenu = _useDragProgress2.dragging,
1645
- menuOpenedProgress = _useDragProgress2.progress;
1646
-
1513
+ progress: menuOpened ? 1 : 0,
1514
+ computeProgress: menuOpened ? computeMenuProgressClose : computeMenuProgress,
1515
+ springParams: springParams
1516
+ }),
1517
+ bindMenuDrag = _useDragProgress2.bind,
1518
+ draggingMenu = _useDragProgress2.dragging,
1519
+ menuOpenedProgress = _useDragProgress2.progress;
1647
1520
  var keyboardShortcuts = React.useMemo(function () {
1648
1521
  return {
1649
1522
  m: function m() {
@@ -1656,9 +1529,12 @@ var ViewerMenu = function ViewerMenu(_ref) {
1656
1529
  }, [menuOpened, onOpenMenu, onCloseMenu]);
1657
1530
  useKeyboardShortcuts(keyboardShortcuts);
1658
1531
  var menuOpenedProgressValue = menuOpenedProgress ? menuOpenedProgress.value || 0 : 0;
1659
- var shareOpenedProgressValue = shareOpenedProgress ? shareOpenedProgress.value || 0 : 0; // should be zero if either screens menu or share menu is opened
1532
+ var shareOpenedProgressValue = shareOpenedProgress ? shareOpenedProgress.value || 0 : 0;
1533
+
1534
+ // should be zero if either screens menu or share menu is opened
1535
+ var dotsOpacity = Math.min(1, Math.max(0, 1 - (menuOpenedProgressValue + shareOpenedProgressValue)));
1660
1536
 
1661
- var dotsOpacity = Math.min(1, Math.max(0, 1 - (menuOpenedProgressValue + shareOpenedProgressValue))); // console.log(dotsOpacity, menuProgressValue, shareProgressValue);
1537
+ // console.log(dotsOpacity, menuProgressValue, shareProgressValue);
1662
1538
 
1663
1539
  React.useEffect(function () {
1664
1540
  if ((menuOpened || draggingMenu) && !menuMounted) {
@@ -1727,7 +1603,6 @@ var ViewerMenu = function ViewerMenu(_ref) {
1727
1603
  className: styles$6.dots,
1728
1604
  style: {
1729
1605
  opacity: Math.pow(dotsOpacity, 5) // @note this is like a "quint" easing, meaning it'll go towards 1 slowly first and then fast as it approaches 1
1730
-
1731
1606
  }
1732
1607
  }))), /*#__PURE__*/React__default["default"].createElement(ViewerMenuContainer, {
1733
1608
  className: styles$6.menuContainer,
@@ -1768,7 +1643,6 @@ var ViewerMenu = function ViewerMenu(_ref) {
1768
1643
  fullscreenEnabled: fullscreenEnabled
1769
1644
  }) : null));
1770
1645
  };
1771
-
1772
1646
  ViewerMenu.propTypes = propTypes$9;
1773
1647
  ViewerMenu.defaultProps = defaultProps$9;
1774
1648
  var ViewerMenu$1 = /*#__PURE__*/React__default["default"].memo(ViewerMenu);
@@ -1803,34 +1677,29 @@ var defaultProps$8 = {
1803
1677
  // withNavigationHint: false,
1804
1678
  className: null
1805
1679
  };
1806
-
1807
1680
  function ViewerScreen(_ref) {
1808
1681
  var screen = _ref.screen,
1809
- renderContext = _ref.renderContext,
1810
- index = _ref.index,
1811
- screenState = _ref.screenState,
1812
- active = _ref.active,
1813
- current = _ref.current,
1814
- mediaRef = _ref.mediaRef,
1815
- width = _ref.width,
1816
- height = _ref.height,
1817
- scale = _ref.scale,
1818
- className = _ref.className;
1819
-
1682
+ renderContext = _ref.renderContext,
1683
+ index = _ref.index,
1684
+ screenState = _ref.screenState,
1685
+ active = _ref.active,
1686
+ current = _ref.current,
1687
+ mediaRef = _ref.mediaRef,
1688
+ width = _ref.width,
1689
+ height = _ref.height,
1690
+ scale = _ref.scale,
1691
+ className = _ref.className;
1820
1692
  var _useState = React.useState(active || current),
1821
- _useState2 = _slicedToArray__default["default"](_useState, 2),
1822
- mounted = _useState2[0],
1823
- setMounted = _useState2[1];
1824
-
1693
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
1694
+ mounted = _useState2[0],
1695
+ setMounted = _useState2[1];
1825
1696
  React.useEffect(function () {
1826
1697
  var timeout = null;
1827
-
1828
1698
  if (active !== mounted) {
1829
1699
  timeout = setTimeout(function () {
1830
1700
  setMounted(active);
1831
1701
  }, 200);
1832
1702
  }
1833
-
1834
1703
  return function () {
1835
1704
  if (timeout !== null) {
1836
1705
  clearTimeout(timeout);
@@ -1858,7 +1727,6 @@ function ViewerScreen(_ref) {
1858
1727
  mediaRef: mediaRef
1859
1728
  }) : null));
1860
1729
  }
1861
-
1862
1730
  ViewerScreen.propTypes = propTypes$8;
1863
1731
  ViewerScreen.defaultProps = defaultProps$8;
1864
1732
 
@@ -1874,11 +1742,10 @@ var defaultProps$7 = {
1874
1742
  onClick: null,
1875
1743
  className: null
1876
1744
  };
1877
-
1878
1745
  var NavigationButton = function NavigationButton(_ref) {
1879
1746
  var direction = _ref.direction,
1880
- onClick = _ref.onClick,
1881
- className = _ref.className;
1747
+ onClick = _ref.onClick,
1748
+ className = _ref.className;
1882
1749
  return /*#__PURE__*/React__default["default"].createElement(IconButton, {
1883
1750
  className: classNames__default["default"]([styles$4.container, styles$4[direction], _defineProperty__default["default"]({}, className, className !== null)]),
1884
1751
  onClick: onClick,
@@ -1910,7 +1777,6 @@ var NavigationButton = function NavigationButton(_ref) {
1910
1777
  }))
1911
1778
  });
1912
1779
  };
1913
-
1914
1780
  NavigationButton.propTypes = propTypes$7;
1915
1781
  NavigationButton.defaultProps = defaultProps$7;
1916
1782
 
@@ -1922,7 +1788,6 @@ var propTypes$6 = {
1922
1788
  var defaultProps$6 = {
1923
1789
  className: null
1924
1790
  };
1925
-
1926
1791
  var ArrowHint = function ArrowHint(_ref) {
1927
1792
  var className = _ref.className;
1928
1793
  return /*#__PURE__*/React__default["default"].createElement("div", {
@@ -1943,7 +1808,6 @@ var ArrowHint = function ArrowHint(_ref) {
1943
1808
  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"
1944
1809
  }))));
1945
1810
  };
1946
-
1947
1811
  ArrowHint.propTypes = propTypes$6;
1948
1812
  ArrowHint.defaultProps = defaultProps$6;
1949
1813
 
@@ -1969,28 +1833,22 @@ var stopDragEventsPropagation = {
1969
1833
  return e.stopPropagation();
1970
1834
  }
1971
1835
  };
1972
-
1973
1836
  function getFormattedTimestamp() {
1974
1837
  var secondsWithMs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
1975
-
1976
1838
  if (secondsWithMs === null || secondsWithMs <= 0) {
1977
1839
  return '00:00';
1978
1840
  }
1979
-
1980
1841
  var parts = "".concat(secondsWithMs).split('.');
1981
-
1982
1842
  var _ref = parts || [],
1983
- _ref2 = _slicedToArray__default["default"](_ref, 1),
1984
- _ref2$ = _ref2[0],
1985
- fullSeconds = _ref2$ === void 0 ? 0 : _ref2$;
1986
-
1843
+ _ref2 = _slicedToArray__default["default"](_ref, 1),
1844
+ _ref2$ = _ref2[0],
1845
+ fullSeconds = _ref2$ === void 0 ? 0 : _ref2$;
1987
1846
  var finalFullSeconds = Math.round(fullSeconds);
1988
1847
  var seconds = finalFullSeconds % 60;
1989
1848
  var diff = finalFullSeconds - seconds;
1990
1849
  var minutes = diff > 0 ? diff / 60 : 0;
1991
1850
  return "".concat(String(Math.round(minutes)).padStart(2, '0'), ":").concat(String(Math.round(seconds)).padStart(2, '0'));
1992
1851
  }
1993
-
1994
1852
  var SHOW_MILLISECONDS_THRESHOLD = 5; // show milliseconds when scrubbing if length of video is shorter than 5 seconds
1995
1853
 
1996
1854
  var propTypes$5 = {
@@ -1998,6 +1856,7 @@ var propTypes$5 = {
1998
1856
  current: PropTypes__default["default"].any
1999
1857
  }) // eslint-disable-line
2000
1858
  ]),
1859
+
2001
1860
  playing: PropTypes__default["default"].bool,
2002
1861
  backgroundColor: PropTypes__default["default"].string,
2003
1862
  progressColor: PropTypes__default["default"].string,
@@ -2020,63 +1879,53 @@ var defaultProps$5 = {
2020
1879
  className: null,
2021
1880
  withSeekHead: true
2022
1881
  };
2023
-
2024
1882
  var SeekBar = function SeekBar(_ref3) {
2025
1883
  var _ref6;
2026
-
2027
1884
  var media = _ref3.media,
2028
- playing = _ref3.playing,
2029
- backgroundColor = _ref3.backgroundColor,
2030
- progressColor = _ref3.progressColor,
2031
- onSeek = _ref3.onSeek,
2032
- onSeekStart = _ref3.onSeekStart,
2033
- onSeekEnd = _ref3.onSeekEnd,
2034
- focusable = _ref3.focusable,
2035
- className = _ref3.className,
2036
- withSeekHead = _ref3.withSeekHead;
1885
+ playing = _ref3.playing,
1886
+ backgroundColor = _ref3.backgroundColor,
1887
+ progressColor = _ref3.progressColor,
1888
+ onSeek = _ref3.onSeek,
1889
+ onSeekStart = _ref3.onSeekStart,
1890
+ onSeekEnd = _ref3.onSeekEnd,
1891
+ focusable = _ref3.focusable,
1892
+ className = _ref3.className,
1893
+ withSeekHead = _ref3.withSeekHead;
2037
1894
  var intl = reactIntl.useIntl();
2038
1895
  var progress = hooks.useMediaProgress(media, {
2039
1896
  disabled: !playing
2040
1897
  });
2041
-
2042
1898
  var _ref4 = media || {},
2043
- _ref4$currentTime = _ref4.currentTime,
2044
- currentTime = _ref4$currentTime === void 0 ? null : _ref4$currentTime,
2045
- _ref4$duration = _ref4.duration,
2046
- duration = _ref4$duration === void 0 ? null : _ref4$duration;
2047
-
1899
+ _ref4$currentTime = _ref4.currentTime,
1900
+ currentTime = _ref4$currentTime === void 0 ? null : _ref4$currentTime,
1901
+ _ref4$duration = _ref4.duration,
1902
+ duration = _ref4$duration === void 0 ? null : _ref4$duration;
2048
1903
  var _useState = React.useState(false),
2049
- _useState2 = _slicedToArray__default["default"](_useState, 2),
2050
- showTimestamp = _useState2[0],
2051
- setShowTimestamp = _useState2[1];
2052
-
1904
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
1905
+ showTimestamp = _useState2[0],
1906
+ setShowTimestamp = _useState2[1];
2053
1907
  var onDrag = React.useCallback(function (_ref5) {
2054
1908
  var _ref5$xy = _slicedToArray__default["default"](_ref5.xy, 1),
2055
- x = _ref5$xy[0],
2056
- elapsedTime = _ref5.elapsedTime,
2057
- active = _ref5.active,
2058
- tap = _ref5.tap,
2059
- currentTarget = _ref5.currentTarget;
2060
-
1909
+ x = _ref5$xy[0],
1910
+ elapsedTime = _ref5.elapsedTime,
1911
+ active = _ref5.active,
1912
+ tap = _ref5.tap,
1913
+ currentTarget = _ref5.currentTarget;
2061
1914
  if (!active && elapsedTime > 300) {
2062
1915
  return;
2063
1916
  }
2064
-
2065
1917
  var _currentTarget$getBou = currentTarget.getBoundingClientRect(),
2066
- _currentTarget$getBou2 = _currentTarget$getBou.left,
2067
- elX = _currentTarget$getBou2 === void 0 ? 0 : _currentTarget$getBou2,
2068
- _currentTarget$getBou3 = _currentTarget$getBou.width,
2069
- elWidth = _currentTarget$getBou3 === void 0 ? 0 : _currentTarget$getBou3;
2070
-
1918
+ _currentTarget$getBou2 = _currentTarget$getBou.left,
1919
+ elX = _currentTarget$getBou2 === void 0 ? 0 : _currentTarget$getBou2,
1920
+ _currentTarget$getBou3 = _currentTarget$getBou.width,
1921
+ elWidth = _currentTarget$getBou3 === void 0 ? 0 : _currentTarget$getBou3;
2071
1922
  var newProgress = Math.max(0, Math.min(1, (x - elX) / elWidth));
2072
-
2073
1923
  if (onSeek !== null) {
2074
1924
  onSeek(newProgress, tap);
2075
1925
  }
2076
1926
  }, [onSeek]);
2077
1927
  var onDragStart = React.useCallback(function () {
2078
1928
  setShowTimestamp(true);
2079
-
2080
1929
  if (onSeekStart !== null) {
2081
1930
  onSeekStart();
2082
1931
  }
@@ -2143,11 +1992,10 @@ var SeekBar = function SeekBar(_ref3) {
2143
1992
  tabIndex: focusable ? '0' : '-1'
2144
1993
  }))));
2145
1994
  };
2146
-
2147
1995
  SeekBar.propTypes = propTypes$5;
2148
1996
  SeekBar.defaultProps = defaultProps$5;
2149
1997
 
2150
- var styles$1 = {"muteButton":"micromag-viewer-partials-playback-controls-muteButton","playPauseButton":"micromag-viewer-partials-playback-controls-playPauseButton","container":"micromag-viewer-partials-playback-controls-container","icon":"micromag-viewer-partials-playback-controls-icon","withPlayPause":"micromag-viewer-partials-playback-controls-withPlayPause","isCollapsed":"micromag-viewer-partials-playback-controls-isCollapsed","isMuted":"micromag-viewer-partials-playback-controls-isMuted","withMute":"micromag-viewer-partials-playback-controls-withMute","withSeekBar":"micromag-viewer-partials-playback-controls-withSeekBar","seekBar":"micromag-viewer-partials-playback-controls-seekBar","withSeekBarOnly":"micromag-viewer-partials-playback-controls-withSeekBarOnly"};
1998
+ var styles$1 = {"playPauseButton":"micromag-viewer-partials-playback-controls-playPauseButton","muteButton":"micromag-viewer-partials-playback-controls-muteButton","container":"micromag-viewer-partials-playback-controls-container","icon":"micromag-viewer-partials-playback-controls-icon","withPlayPause":"micromag-viewer-partials-playback-controls-withPlayPause","isCollapsed":"micromag-viewer-partials-playback-controls-isCollapsed","isMuted":"micromag-viewer-partials-playback-controls-isMuted","withMute":"micromag-viewer-partials-playback-controls-withMute","withSeekBar":"micromag-viewer-partials-playback-controls-withSeekBar","seekBar":"micromag-viewer-partials-playback-controls-seekBar","withSeekBarOnly":"micromag-viewer-partials-playback-controls-withSeekBarOnly"};
2151
1999
 
2152
2000
  var propTypes$4 = {
2153
2001
  className: PropTypes__default["default"].string,
@@ -2157,46 +2005,39 @@ var defaultProps$4 = {
2157
2005
  className: null,
2158
2006
  collapsedClassName: null
2159
2007
  };
2160
-
2161
2008
  function PlaybackControls(_ref) {
2162
2009
  var _ref4;
2163
-
2164
2010
  var className = _ref.className,
2165
- collapsedClassName = _ref.collapsedClassName;
2011
+ collapsedClassName = _ref.collapsedClassName;
2166
2012
  var intl = reactIntl.useIntl();
2167
-
2168
2013
  var _usePlaybackContext = contexts.usePlaybackContext(),
2169
- _usePlaybackContext$m = _usePlaybackContext.media,
2170
- mediaElement = _usePlaybackContext$m === void 0 ? null : _usePlaybackContext$m,
2171
- _usePlaybackContext$h = _usePlaybackContext.hasAudio,
2172
- hasAudio = _usePlaybackContext$h === void 0 ? null : _usePlaybackContext$h,
2173
- _usePlaybackContext$p = _usePlaybackContext.playing,
2174
- playing = _usePlaybackContext$p === void 0 ? false : _usePlaybackContext$p,
2175
- _usePlaybackContext$m2 = _usePlaybackContext.muted,
2176
- muted = _usePlaybackContext$m2 === void 0 ? true : _usePlaybackContext$m2,
2177
- setPlaying = _usePlaybackContext.setPlaying,
2178
- setMuted = _usePlaybackContext.setMuted,
2179
- controls = _usePlaybackContext.controls,
2180
- controlsVisible = _usePlaybackContext.controlsVisible,
2181
- controlsTheme = _usePlaybackContext.controlsTheme,
2182
- showControls = _usePlaybackContext.showControls;
2183
-
2014
+ _usePlaybackContext$m = _usePlaybackContext.media,
2015
+ mediaElement = _usePlaybackContext$m === void 0 ? null : _usePlaybackContext$m,
2016
+ _usePlaybackContext$h = _usePlaybackContext.hasAudio,
2017
+ hasAudio = _usePlaybackContext$h === void 0 ? null : _usePlaybackContext$h,
2018
+ _usePlaybackContext$p = _usePlaybackContext.playing,
2019
+ playing = _usePlaybackContext$p === void 0 ? false : _usePlaybackContext$p,
2020
+ _usePlaybackContext$m2 = _usePlaybackContext.muted,
2021
+ muted = _usePlaybackContext$m2 === void 0 ? true : _usePlaybackContext$m2,
2022
+ setPlaying = _usePlaybackContext.setPlaying,
2023
+ setMuted = _usePlaybackContext.setMuted,
2024
+ controls = _usePlaybackContext.controls,
2025
+ controlsVisible = _usePlaybackContext.controlsVisible,
2026
+ controlsTheme = _usePlaybackContext.controlsTheme,
2027
+ showControls = _usePlaybackContext.showControls;
2184
2028
  var _useState = React.useState(null),
2185
- _useState2 = _slicedToArray__default["default"](_useState, 2),
2186
- customControlsTheme = _useState2[0],
2187
- setCustomControlsTheme = _useState2[1];
2188
-
2029
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
2030
+ customControlsTheme = _useState2[0],
2031
+ setCustomControlsTheme = _useState2[1];
2189
2032
  var _useState3 = React.useState(false),
2190
- _useState4 = _slicedToArray__default["default"](_useState3, 2),
2191
- wasPlaying = _useState4[0],
2192
- setWasPlaying = _useState4[1];
2193
-
2033
+ _useState4 = _slicedToArray__default["default"](_useState3, 2),
2034
+ wasPlaying = _useState4[0],
2035
+ setWasPlaying = _useState4[1];
2194
2036
  React.useEffect(function () {
2195
2037
  var _ref2 = controlsTheme || {},
2196
- color = _ref2.color,
2197
- progressColor = _ref2.progressColor,
2198
- seekBarOnly = _ref2.seekBarOnly;
2199
-
2038
+ color = _ref2.color,
2039
+ progressColor = _ref2.progressColor,
2040
+ seekBarOnly = _ref2.seekBarOnly;
2200
2041
  setCustomControlsTheme({
2201
2042
  color: utils.getColorAsString(color),
2202
2043
  progressColor: utils.getColorAsString(progressColor),
@@ -2205,35 +2046,30 @@ function PlaybackControls(_ref) {
2205
2046
  }, [controlsTheme, setCustomControlsTheme]);
2206
2047
  var onPlay = React.useCallback(function () {
2207
2048
  setPlaying(true);
2208
-
2209
2049
  if (!controlsVisible && controls) {
2210
2050
  showControls();
2211
2051
  }
2212
2052
  }, [setPlaying, controlsVisible, showControls]);
2213
2053
  var onPause = React.useCallback(function () {
2214
2054
  setPlaying(false);
2215
-
2216
2055
  if (!controlsVisible && controls) {
2217
2056
  showControls();
2218
2057
  }
2219
2058
  }, [setPlaying, controlsVisible, controls, showControls]);
2220
2059
  var onMute = React.useCallback(function () {
2221
2060
  setMuted(true);
2222
-
2223
2061
  if (!controlsVisible && controls) {
2224
2062
  showControls();
2225
2063
  }
2226
2064
  }, [setMuted, controlsVisible, showControls]);
2227
2065
  var onUnmute = React.useCallback(function () {
2228
2066
  setMuted(false);
2229
-
2230
2067
  if (!controlsVisible && controls) {
2231
2068
  showControls();
2232
2069
  }
2233
2070
  }, [setMuted, controlsVisible, showControls]);
2234
2071
  var onSeekStart = React.useCallback(function () {
2235
2072
  setWasPlaying(playing);
2236
-
2237
2073
  if (playing) {
2238
2074
  setPlaying(false);
2239
2075
  }
@@ -2242,7 +2078,6 @@ function PlaybackControls(_ref) {
2242
2078
  if (mediaElement !== null) {
2243
2079
  mediaElement.currentTime = progress * mediaElement.duration;
2244
2080
  }
2245
-
2246
2081
  if (!controlsVisible && controls) {
2247
2082
  showControls();
2248
2083
  }
@@ -2254,12 +2089,10 @@ function PlaybackControls(_ref) {
2254
2089
  }, [setPlaying, wasPlaying]);
2255
2090
  var hasMedia = mediaElement !== null;
2256
2091
  var mediaHasAudio = hasMedia && (hasAudio === null || hasAudio === true);
2257
-
2258
2092
  var _ref3 = customControlsTheme || {},
2259
- color = _ref3.color,
2260
- progressColor = _ref3.progressColor,
2261
- seekBarOnly = _ref3.seekBarOnly;
2262
-
2093
+ color = _ref3.color,
2094
+ progressColor = _ref3.progressColor,
2095
+ seekBarOnly = _ref3.seekBarOnly;
2263
2096
  var isCollapsed = controls && !controlsVisible && playing || !controls && mediaHasAudio;
2264
2097
  return /*#__PURE__*/React__default["default"].createElement("div", {
2265
2098
  className: classNames__default["default"]([styles$1.container, (_ref4 = {}, _defineProperty__default["default"](_ref4, className, className !== null), _defineProperty__default["default"](_ref4, styles$1.withPlayPause, controls && !seekBarOnly), _defineProperty__default["default"](_ref4, styles$1.withMute, hasMedia || controls), _defineProperty__default["default"](_ref4, styles$1.withSeekBar, controls), _defineProperty__default["default"](_ref4, styles$1.withSeekBarOnly, seekBarOnly), _defineProperty__default["default"](_ref4, styles$1.isCollapsed, isCollapsed), _defineProperty__default["default"](_ref4, styles$1.isMuted, muted), _defineProperty__default["default"](_ref4, collapsedClassName, collapsedClassName !== null && isCollapsed), _ref4)])
@@ -2388,7 +2221,6 @@ function PlaybackControls(_ref) {
2388
2221
  withoutBootstrapStyles: true
2389
2222
  }));
2390
2223
  }
2391
-
2392
2224
  PlaybackControls.propTypes = propTypes$4;
2393
2225
  PlaybackControls.defaultProps = defaultProps$4;
2394
2226
 
@@ -2403,38 +2235,31 @@ var defaultProps$3 = {
2403
2235
  className: null,
2404
2236
  style: null
2405
2237
  };
2406
-
2407
2238
  function WebViewContainer(_ref) {
2408
2239
  var _ref2;
2409
-
2410
2240
  var className = _ref.className,
2411
- style = _ref.style;
2412
-
2241
+ style = _ref.style;
2413
2242
  var _useViewerWebView = contexts.useViewerWebView(),
2414
- opened = _useViewerWebView.opened,
2415
- close = _useViewerWebView.close;
2416
- _useViewerWebView.open;
2417
- _useViewerWebView.update;
2418
- var _useViewerWebView$url = _useViewerWebView.url,
2419
- url = _useViewerWebView$url === void 0 ? null : _useViewerWebView$url,
2420
- webViewProps = _objectWithoutProperties__default["default"](_useViewerWebView, _excluded$2);
2421
-
2243
+ opened = _useViewerWebView.opened,
2244
+ close = _useViewerWebView.close;
2245
+ _useViewerWebView.open;
2246
+ _useViewerWebView.update;
2247
+ var _useViewerWebView$url = _useViewerWebView.url,
2248
+ url = _useViewerWebView$url === void 0 ? null : _useViewerWebView$url,
2249
+ webViewProps = _objectWithoutProperties__default["default"](_useViewerWebView, _excluded$2);
2422
2250
  var _useViewerInteraction = contexts.useViewerInteraction(),
2423
- disableInteraction = _useViewerInteraction.disableInteraction,
2424
- enableInteraction = _useViewerInteraction.enableInteraction;
2425
-
2251
+ disableInteraction = _useViewerInteraction.disableInteraction,
2252
+ enableInteraction = _useViewerInteraction.enableInteraction;
2426
2253
  var _usePlaybackContext = contexts.usePlaybackContext(),
2427
- playing = _usePlaybackContext.playing,
2428
- setPlaying = _usePlaybackContext.setPlaying;
2429
-
2254
+ playing = _usePlaybackContext.playing,
2255
+ setPlaying = _usePlaybackContext.setPlaying;
2430
2256
  var wasPlayingRef = React.useRef(playing);
2431
-
2432
2257
  var _useState = React.useState(url),
2433
- _useState2 = _slicedToArray__default["default"](_useState, 2),
2434
- currentUrl = _useState2[0],
2435
- setCurrentUrl = _useState2[1]; // Handle current webview url
2436
-
2258
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
2259
+ currentUrl = _useState2[0],
2260
+ setCurrentUrl = _useState2[1];
2437
2261
 
2262
+ // Handle current webview url
2438
2263
  React.useEffect(function () {
2439
2264
  if (url !== null) {
2440
2265
  setCurrentUrl(url);
@@ -2444,19 +2269,18 @@ function WebViewContainer(_ref) {
2444
2269
  if (url === null) {
2445
2270
  setCurrentUrl(null);
2446
2271
  }
2447
- }, [url]); // Disable interaction and pause playback
2272
+ }, [url]);
2448
2273
 
2274
+ // Disable interaction and pause playback
2449
2275
  React.useEffect(function () {
2450
2276
  if (opened) {
2451
2277
  disableInteraction();
2452
2278
  wasPlayingRef.current = playing;
2453
-
2454
2279
  if (playing) {
2455
2280
  setPlaying(false);
2456
2281
  }
2457
2282
  } else {
2458
2283
  enableInteraction();
2459
-
2460
2284
  if (wasPlayingRef.current && !playing) {
2461
2285
  wasPlayingRef.current = false;
2462
2286
  setPlaying(true);
@@ -2475,15 +2299,14 @@ function WebViewContainer(_ref) {
2475
2299
  onClose: close
2476
2300
  })));
2477
2301
  }
2478
-
2479
2302
  WebViewContainer.propTypes = propTypes$3;
2480
2303
  WebViewContainer.defaultProps = defaultProps$3;
2481
2304
 
2305
+ // @todo export from somewhere else; or use as props in possible component for screen transitions
2482
2306
  var SPRING_CONFIG_TIGHT = {
2483
2307
  tension: 300,
2484
2308
  friction: 35
2485
2309
  }; // tight
2486
-
2487
2310
  var DRAG_PROGRESS_ACTIVATION_THRESHOLD = 0.3;
2488
2311
  var DRAG_VELOCITY_ACTIVATION_THRESHOLD = 0.3;
2489
2312
  var DEFAULT_TRANSITION_TYPE_LANDSCAPE = 'carousel';
@@ -2572,48 +2395,45 @@ var defaultProps$2 = {
2572
2395
  screenSizeOptions: null,
2573
2396
  className: null
2574
2397
  };
2575
-
2576
2398
  var Viewer = function Viewer(_ref) {
2577
2399
  var _ref20;
2578
-
2579
2400
  var story = _ref.story,
2580
- basePath = _ref.basePath,
2581
- viewerTheme = _ref.theme,
2582
- width = _ref.width,
2583
- height = _ref.height,
2584
- screenId = _ref.screen,
2585
- screenState = _ref.screenState,
2586
- deviceScreens = _ref.deviceScreens,
2587
- renderContext = _ref.renderContext,
2588
- tapNextScreenWidthPercent = _ref.tapNextScreenWidthPercent,
2589
- storyIsParsed = _ref.storyIsParsed,
2590
- neighborScreensActive = _ref.neighborScreensActive,
2591
- neighborScreenOffset = _ref.neighborScreenOffset,
2592
- neighborScreenScale = _ref.neighborScreenScale,
2593
- withMetadata = _ref.withMetadata,
2594
- withoutGestures = _ref.withoutGestures,
2595
- withoutMenu = _ref.withoutMenu,
2596
- withoutScreensMenu = _ref.withoutScreensMenu,
2597
- withoutShareMenu = _ref.withoutShareMenu,
2598
- withoutMenuShadow = _ref.withoutMenuShadow;
2599
- _ref.withoutFullscreen;
2600
- var withoutNavigationArrow = _ref.withoutNavigationArrow,
2601
- withoutTransitions = _ref.withoutTransitions,
2602
- withNeighborScreens = _ref.withNeighborScreens,
2603
- withNavigationHint = _ref.withNavigationHint,
2604
- withoutPlaybackControls = _ref.withoutPlaybackControls,
2605
- menuIsScreenWidth = _ref.menuIsScreenWidth,
2606
- closeable = _ref.closeable,
2607
- onCloseViewer = _ref.onClose,
2608
- onInteraction = _ref.onInteraction,
2609
- onEnd = _ref.onEnd,
2610
- onScreenChange = _ref.onScreenChange,
2611
- onViewModeChange = _ref.onViewModeChange,
2612
- currentScreenMedia = _ref.currentScreenMedia,
2613
- screensMedias = _ref.screensMedias,
2614
- screenSizeOptions = _ref.screenSizeOptions,
2615
- className = _ref.className;
2616
-
2401
+ basePath = _ref.basePath,
2402
+ viewerTheme = _ref.theme,
2403
+ width = _ref.width,
2404
+ height = _ref.height,
2405
+ screenId = _ref.screen,
2406
+ screenState = _ref.screenState,
2407
+ deviceScreens = _ref.deviceScreens,
2408
+ renderContext = _ref.renderContext,
2409
+ tapNextScreenWidthPercent = _ref.tapNextScreenWidthPercent,
2410
+ storyIsParsed = _ref.storyIsParsed,
2411
+ neighborScreensActive = _ref.neighborScreensActive,
2412
+ neighborScreenOffset = _ref.neighborScreenOffset,
2413
+ neighborScreenScale = _ref.neighborScreenScale,
2414
+ withMetadata = _ref.withMetadata,
2415
+ withoutGestures = _ref.withoutGestures,
2416
+ withoutMenu = _ref.withoutMenu,
2417
+ withoutScreensMenu = _ref.withoutScreensMenu,
2418
+ withoutShareMenu = _ref.withoutShareMenu,
2419
+ withoutMenuShadow = _ref.withoutMenuShadow;
2420
+ _ref.withoutFullscreen;
2421
+ var withoutNavigationArrow = _ref.withoutNavigationArrow,
2422
+ withoutTransitions = _ref.withoutTransitions,
2423
+ withNeighborScreens = _ref.withNeighborScreens,
2424
+ withNavigationHint = _ref.withNavigationHint,
2425
+ withoutPlaybackControls = _ref.withoutPlaybackControls,
2426
+ menuIsScreenWidth = _ref.menuIsScreenWidth,
2427
+ closeable = _ref.closeable,
2428
+ onCloseViewer = _ref.onClose,
2429
+ onInteraction = _ref.onInteraction,
2430
+ onEnd = _ref.onEnd,
2431
+ onScreenChange = _ref.onScreenChange,
2432
+ onViewModeChange = _ref.onViewModeChange,
2433
+ currentScreenMedia = _ref.currentScreenMedia,
2434
+ screensMedias = _ref.screensMedias,
2435
+ screenSizeOptions = _ref.screenSizeOptions,
2436
+ className = _ref.className;
2617
2437
  /**
2618
2438
  * Screen Data + Processing
2619
2439
  */
@@ -2621,13 +2441,13 @@ var Viewer = function Viewer(_ref) {
2621
2441
  disabled: storyIsParsed
2622
2442
  }) || {};
2623
2443
  var _parsedStory$componen = parsedStory.components,
2624
- screens = _parsedStory$componen === void 0 ? [] : _parsedStory$componen,
2625
- _parsedStory$title = parsedStory.title,
2626
- title = _parsedStory$title === void 0 ? null : _parsedStory$title,
2627
- _parsedStory$metadata = parsedStory.metadata,
2628
- metadata = _parsedStory$metadata === void 0 ? null : _parsedStory$metadata,
2629
- _parsedStory$fonts = parsedStory.fonts,
2630
- fonts = _parsedStory$fonts === void 0 ? null : _parsedStory$fonts;
2444
+ screens = _parsedStory$componen === void 0 ? [] : _parsedStory$componen,
2445
+ _parsedStory$title = parsedStory.title,
2446
+ title = _parsedStory$title === void 0 ? null : _parsedStory$title,
2447
+ _parsedStory$metadata = parsedStory.metadata,
2448
+ metadata = _parsedStory$metadata === void 0 ? null : _parsedStory$metadata,
2449
+ _parsedStory$fonts = parsedStory.fonts,
2450
+ fonts = _parsedStory$fonts === void 0 ? null : _parsedStory$fonts;
2631
2451
  var screensCount = screens.length;
2632
2452
  var eventsManager = React.useMemo(function () {
2633
2453
  return new EventEmitter__default["default"]();
@@ -2638,19 +2458,15 @@ var Viewer = function Viewer(_ref) {
2638
2458
  }));
2639
2459
  }, [screenId, screens]);
2640
2460
  var currentScreen = screens[screenIndex] || null;
2641
-
2642
2461
  var _ref2 = currentScreen || {},
2643
- screenParameters = _ref2.parameters;
2644
-
2462
+ screenParameters = _ref2.parameters;
2645
2463
  var _ref3 = screenParameters || {},
2646
- screenMetadata = _ref3.metadata;
2647
-
2464
+ screenMetadata = _ref3.metadata;
2648
2465
  var _ref4 = screenMetadata || {},
2649
- _ref4$title = _ref4.title,
2650
- screenTitle = _ref4$title === void 0 ? null : _ref4$title,
2651
- _ref4$description = _ref4.description,
2652
- screenDescription = _ref4$description === void 0 ? null : _ref4$description;
2653
-
2466
+ _ref4$title = _ref4.title,
2467
+ screenTitle = _ref4$title === void 0 ? null : _ref4$title,
2468
+ _ref4$description = _ref4.description,
2469
+ screenDescription = _ref4$description === void 0 ? null : _ref4$description;
2654
2470
  var finalTitle = screenTitle !== null ? screenTitle : title;
2655
2471
  var finalMetadata = React.useMemo(function () {
2656
2472
  return screenDescription !== null ? _objectSpread__default["default"](_objectSpread__default["default"]({}, metadata), {}, {
@@ -2658,84 +2474,71 @@ var Viewer = function Viewer(_ref) {
2658
2474
  }) : metadata;
2659
2475
  }, [metadata, screenDescription]);
2660
2476
  var screensMediasRef = React.useRef([]);
2661
-
2662
2477
  if (currentScreenMedia !== null) {
2663
2478
  currentScreenMedia.current = screensMediasRef.current[screenIndex] || null;
2664
2479
  }
2665
-
2666
2480
  if (screensMedias !== null) {
2667
2481
  screensMedias.current = screensMediasRef.current;
2668
2482
  }
2483
+
2669
2484
  /**
2670
2485
  * Screen Layout
2671
2486
  */
2672
-
2673
-
2674
2487
  var _ref5 = viewerTheme || {},
2675
- textStyles = _ref5.textStyles;
2676
-
2488
+ textStyles = _ref5.textStyles;
2677
2489
  var _ref6 = textStyles || {},
2678
- _ref6$title = _ref6.title,
2679
- themeTextStyle = _ref6$title === void 0 ? null : _ref6$title;
2680
-
2490
+ _ref6$title = _ref6.title,
2491
+ themeTextStyle = _ref6$title === void 0 ? null : _ref6$title;
2681
2492
  var _ref7 = themeTextStyle || {},
2682
- _ref7$fontFamily = _ref7.fontFamily,
2683
- themeFont = _ref7$fontFamily === void 0 ? null : _ref7$fontFamily; // Fonts
2684
-
2493
+ _ref7$fontFamily = _ref7.fontFamily,
2494
+ themeFont = _ref7$fontFamily === void 0 ? null : _ref7$fontFamily;
2685
2495
 
2496
+ // Fonts
2686
2497
  var finalFonts = React.useMemo(function () {
2687
2498
  return [].concat(_toConsumableArray__default["default"](fonts || []), [themeFont]).filter(function (font) {
2688
2499
  return font !== null;
2689
2500
  });
2690
2501
  }, [fonts]);
2691
-
2692
2502
  var _useLoadedFonts = hooks.useLoadedFonts(finalFonts);
2693
- _useLoadedFonts.loaded; // eslint-disable-line
2694
-
2503
+ _useLoadedFonts.loaded; // eslint-disable-line
2695
2504
 
2696
2505
  var isView = renderContext === 'view';
2697
2506
  var isStatic = renderContext === 'static';
2698
2507
  var isCapture = renderContext === 'capture';
2699
2508
  var isEditor = renderContext === 'edit';
2700
2509
  var withoutScreensTransforms = isStatic || isCapture;
2701
-
2702
2510
  var _usePlaybackContext = contexts.usePlaybackContext(),
2703
- playing = _usePlaybackContext.playing,
2704
- _usePlaybackContext$c = _usePlaybackContext.controls,
2705
- playbackControls = _usePlaybackContext$c === void 0 ? false : _usePlaybackContext$c,
2706
- _usePlaybackContext$c2 = _usePlaybackContext.controlsVisible,
2707
- playbackcontrolsVisible = _usePlaybackContext$c2 === void 0 ? false : _usePlaybackContext$c2,
2708
- _usePlaybackContext$m = _usePlaybackContext.media,
2709
- playbackMedia = _usePlaybackContext$m === void 0 ? null : _usePlaybackContext$m;
2710
-
2511
+ playing = _usePlaybackContext.playing,
2512
+ _usePlaybackContext$c = _usePlaybackContext.controls,
2513
+ playbackControls = _usePlaybackContext$c === void 0 ? false : _usePlaybackContext$c,
2514
+ _usePlaybackContext$c2 = _usePlaybackContext.controlsVisible,
2515
+ playbackcontrolsVisible = _usePlaybackContext$c2 === void 0 ? false : _usePlaybackContext$c2,
2516
+ _usePlaybackContext$m = _usePlaybackContext.media,
2517
+ playbackMedia = _usePlaybackContext$m === void 0 ? null : _usePlaybackContext$m;
2711
2518
  var _useDimensionObserver = hooks.useDimensionObserver(),
2712
- playbackControlsContainerRef = _useDimensionObserver.ref,
2713
- _useDimensionObserver2 = _useDimensionObserver.height,
2714
- playbackControlsContainerHeight = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2;
2715
-
2519
+ playbackControlsContainerRef = _useDimensionObserver.ref,
2520
+ _useDimensionObserver2 = _useDimensionObserver.height,
2521
+ playbackControlsContainerHeight = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2;
2716
2522
  var trackScreenView = hooks.useTrackScreenView();
2717
-
2718
2523
  var _useScreenSizeFromEle = hooks.useScreenSizeFromElement(_objectSpread__default["default"]({
2719
- width: width,
2720
- height: height,
2721
- screens: deviceScreens
2722
- }, screenSizeOptions)),
2723
- containerRef = _useScreenSizeFromEle.ref,
2724
- viewerWidth = _useScreenSizeFromEle.fullWidth,
2725
- viewerHeight = _useScreenSizeFromEle.fullHeight,
2726
- screenSize = _useScreenSizeFromEle.screenSize,
2727
- screenScale = _useScreenSizeFromEle.scale;
2728
-
2524
+ width: width,
2525
+ height: height,
2526
+ screens: deviceScreens
2527
+ }, screenSizeOptions)),
2528
+ containerRef = _useScreenSizeFromEle.ref,
2529
+ viewerWidth = _useScreenSizeFromEle.fullWidth,
2530
+ viewerHeight = _useScreenSizeFromEle.fullHeight,
2531
+ screenSize = _useScreenSizeFromEle.screenSize,
2532
+ screenScale = _useScreenSizeFromEle.scale;
2729
2533
  var _ref8 = screenSize || {},
2730
- _ref8$width = _ref8.width,
2731
- screenWidth = _ref8$width === void 0 ? null : _ref8$width,
2732
- _ref8$height = _ref8.height,
2733
- screenHeight = _ref8$height === void 0 ? null : _ref8$height,
2734
- _ref8$landscape = _ref8.landscape,
2735
- landscape = _ref8$landscape === void 0 ? false : _ref8$landscape,
2736
- _ref8$menuOverScreen = _ref8.menuOverScreen,
2737
- menuOverScreen = _ref8$menuOverScreen === void 0 ? false : _ref8$menuOverScreen;
2738
-
2534
+ _ref8$width = _ref8.width,
2535
+ screenWidth = _ref8$width === void 0 ? null : _ref8$width,
2536
+ _ref8$height = _ref8.height,
2537
+ screenHeight = _ref8$height === void 0 ? null : _ref8$height,
2538
+ _ref8$landscape = _ref8.landscape,
2539
+ landscape = _ref8$landscape === void 0 ? false : _ref8$landscape,
2540
+ _ref8$menuOverScreen = _ref8.menuOverScreen,
2541
+ menuOverScreen = _ref8$menuOverScreen === void 0 ? false : _ref8$menuOverScreen;
2739
2542
  var screenContainerWidth = screenScale !== null ? screenWidth * screenScale : screenWidth;
2740
2543
  var screenContainerHeight = screenScale !== null ? screenHeight * screenScale : screenHeight;
2741
2544
  var hasSize = screenWidth > 0 && screenHeight > 0;
@@ -2754,38 +2557,34 @@ var Viewer = function Viewer(_ref) {
2754
2557
  });
2755
2558
  }
2756
2559
  }, [ready, landscape, menuOverScreen, onViewModeChange]);
2560
+
2757
2561
  /**
2758
2562
  * Screen Transitions
2759
2563
  */
2760
-
2761
2564
  var transitionType = landscape && withNeighborScreens ? DEFAULT_TRANSITION_TYPE_LANDSCAPE : DEFAULT_TRANSITION_TYPE_PORTRAIT;
2565
+
2762
2566
  /**
2763
2567
  * Screen Navigation
2764
2568
  */
2765
-
2766
2569
  var changeIndex = React.useCallback(function (index) {
2767
2570
  if (index === screenIndex) {
2768
2571
  return;
2769
2572
  }
2770
-
2771
2573
  if (currentScreenMedia !== null) {
2772
2574
  currentScreenMedia.current = screensMediasRef.current[index] || null;
2773
2575
  }
2774
-
2775
2576
  if (onScreenChange !== null) {
2776
2577
  onScreenChange(screens[index], index);
2777
2578
  }
2778
2579
  }, [screenIndex, screens, onScreenChange]);
2779
2580
  var onScreenNavigate = React.useCallback(function (_ref9) {
2780
2581
  var index = _ref9.index,
2781
- newIndex = _ref9.newIndex,
2782
- end = _ref9.end,
2783
- direction = _ref9.direction;
2784
-
2582
+ newIndex = _ref9.newIndex,
2583
+ end = _ref9.end,
2584
+ direction = _ref9.direction;
2785
2585
  if (end && onEnd !== null) {
2786
2586
  onEnd();
2787
2587
  }
2788
-
2789
2588
  changeIndex(newIndex);
2790
2589
  eventsManager.emit('navigate', {
2791
2590
  index: index,
@@ -2793,57 +2592,52 @@ var Viewer = function Viewer(_ref) {
2793
2592
  direction: direction,
2794
2593
  end: end
2795
2594
  });
2796
-
2797
2595
  if (end) {
2798
2596
  eventsManager.emit('navigate_end');
2799
2597
  } else {
2800
2598
  eventsManager.emit("navigate_".concat(direction), newIndex);
2801
2599
  }
2802
2600
  }, [onEnd, changeIndex]);
2803
- var gotoPreviousScreen = React.useCallback(function () {
2601
+ var gotoPreviousScreen = React.useCallback(function (e) {
2602
+ e.stopPropagation();
2804
2603
  changeIndex(Math.max(0, screenIndex - 1));
2805
2604
  }, [changeIndex, screenIndex]);
2806
- var gotoNextScreen = React.useCallback(function () {
2605
+ var gotoNextScreen = React.useCallback(function (e) {
2606
+ e.stopPropagation();
2807
2607
  changeIndex(Math.min(screens.length - 1, screenIndex + 1));
2808
2608
  }, [changeIndex, screenIndex]);
2809
-
2810
2609
  var _useState = React.useState(false),
2811
- _useState2 = _slicedToArray__default["default"](_useState, 2),
2812
- hasInteracted = _useState2[0],
2813
- setHasInteracted = _useState2[1];
2814
-
2610
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
2611
+ hasInteracted = _useState2[0],
2612
+ setHasInteracted = _useState2[1];
2815
2613
  var onInteractionPrivate = React.useCallback(function () {
2816
2614
  if (onInteraction !== null) {
2817
2615
  onInteraction();
2818
2616
  }
2819
-
2820
2617
  if (!hasInteracted) {
2821
2618
  setHasInteracted(true);
2822
2619
  }
2823
2620
  }, [onInteraction, hasInteracted, setHasInteracted]);
2824
-
2825
2621
  var _useScreenInteraction = useScreenInteraction({
2826
- screens: screens,
2827
- screenIndex: screenIndex,
2828
- screenWidth: screenContainerWidth,
2829
- disableCurrentScreenNavigation: !isView,
2830
- nextScreenWidthPercent: tapNextScreenWidthPercent,
2831
- onInteract: onInteractionPrivate,
2832
- onNavigate: onScreenNavigate
2833
- }),
2834
- interactWithScreen = _useScreenInteraction.interact,
2835
- currentScreenInteractionEnabled = _useScreenInteraction.currentScreenInteractionEnabled,
2836
- enableInteraction = _useScreenInteraction.enableInteraction,
2837
- disableInteraction = _useScreenInteraction.disableInteraction;
2838
-
2622
+ screens: screens,
2623
+ screenIndex: screenIndex,
2624
+ screenWidth: screenContainerWidth,
2625
+ disableCurrentScreenNavigation: !isView,
2626
+ nextScreenWidthPercent: tapNextScreenWidthPercent,
2627
+ onInteract: onInteractionPrivate,
2628
+ onNavigate: onScreenNavigate
2629
+ }),
2630
+ interactWithScreen = _useScreenInteraction.interact,
2631
+ currentScreenInteractionEnabled = _useScreenInteraction.currentScreenInteractionEnabled,
2632
+ enableInteraction = _useScreenInteraction.enableInteraction,
2633
+ disableInteraction = _useScreenInteraction.disableInteraction;
2839
2634
  var onTap = React.useCallback(function (_ref10) {
2840
2635
  var currentTarget = _ref10.currentTarget,
2841
- event = _ref10.event,
2842
- target = _ref10.target,
2843
- _ref10$xy = _slicedToArray__default["default"](_ref10.xy, 2),
2844
- x = _ref10$xy[0],
2845
- y = _ref10$xy[1];
2846
-
2636
+ event = _ref10.event,
2637
+ target = _ref10.target,
2638
+ _ref10$xy = _slicedToArray__default["default"](_ref10.xy, 2),
2639
+ x = _ref10$xy[0],
2640
+ y = _ref10$xy[1];
2847
2641
  interactWithScreen({
2848
2642
  event: event,
2849
2643
  target: target,
@@ -2855,34 +2649,26 @@ var Viewer = function Viewer(_ref) {
2855
2649
  }, [interactWithScreen, screenIndex]);
2856
2650
  var computeScreenProgress = React.useCallback(function (_ref11) {
2857
2651
  var active = _ref11.active,
2858
- _ref11$movement = _slicedToArray__default["default"](_ref11.movement, 1),
2859
- mx = _ref11$movement[0],
2860
- _ref11$velocity = _slicedToArray__default["default"](_ref11.velocity, 1),
2861
- vx = _ref11$velocity[0];
2862
-
2652
+ _ref11$movement = _slicedToArray__default["default"](_ref11.movement, 1),
2653
+ mx = _ref11$movement[0],
2654
+ _ref11$velocity = _slicedToArray__default["default"](_ref11.velocity, 1),
2655
+ vx = _ref11$velocity[0];
2863
2656
  var p = mx / screenContainerWidth; // drag "ratio": how much of the screen width has been swiped?
2864
-
2865
2657
  var forwards = mx < 0; // true if swiping to left (to navigate forwards)
2866
-
2867
2658
  var newIndex = !forwards ? screenIndex - 1 : screenIndex + 1; // which item index are we moving towards?
2868
-
2869
2659
  var reachedThreshold = vx > DRAG_VELOCITY_ACTIVATION_THRESHOLD || Math.abs(p) > DRAG_PROGRESS_ACTIVATION_THRESHOLD;
2870
2660
  var reachedBounds = newIndex < 0 || newIndex >= screensCount; // have we reached the end of the stack?
2871
-
2872
2661
  var damper = reachedBounds ? 0.1 : 1;
2873
2662
  var progress = Math.max(-1, Math.min(1, p * damper));
2874
-
2875
2663
  if (!active) {
2876
2664
  return reachedThreshold && !reachedBounds ? newIndex : screenIndex;
2877
2665
  }
2878
-
2879
2666
  return screenIndex - progress;
2880
2667
  }, [screenContainerWidth, screenIndex]);
2881
2668
  var onScreenProgress = React.useCallback(function (progress, _ref12) {
2882
2669
  var active = _ref12.active;
2883
2670
  var delta = Math.abs(progress - screenIndex);
2884
2671
  var reachedBounds = progress < 0 || progress >= screensCount; // have we reached the end of the stack?
2885
-
2886
2672
  if (!active && delta === 1 && !reachedBounds) {
2887
2673
  onScreenNavigate({
2888
2674
  index: screenIndex,
@@ -2890,25 +2676,38 @@ var Viewer = function Viewer(_ref) {
2890
2676
  });
2891
2677
  }
2892
2678
  }, [onScreenNavigate, screenIndex]);
2679
+ var _useState3 = React.useState(true),
2680
+ _useState4 = _slicedToArray__default["default"](_useState3, 2),
2681
+ transitioned = _useState4[0],
2682
+ setTransitioned = _useState4[1];
2683
+ var onTransitionStart = React.useCallback(function () {
2684
+ setTransitioned(false);
2685
+ }, [setTransitioned]);
2686
+ var onTransitionComplete = React.useCallback(function () {
2687
+ setTransitioned(true);
2688
+ }, [setTransitioned]);
2689
+
2690
+ // console.log({ transitioned });
2691
+
2893
2692
  var springParams = React.useMemo(function () {
2894
2693
  return {
2895
- config: SPRING_CONFIG_TIGHT
2694
+ config: SPRING_CONFIG_TIGHT,
2695
+ onStart: onTransitionStart,
2696
+ onRest: onTransitionComplete
2896
2697
  };
2897
- }, []);
2898
-
2698
+ }, [onTransitionStart, onTransitionComplete]);
2899
2699
  var _useDragProgress = hooks.useDragProgress({
2900
- progress: screenIndex,
2901
- disabled: !isView || withoutTransitions,
2902
- dragDisabled: withoutGestures,
2903
- computeProgress: computeScreenProgress,
2904
- onProgress: onScreenProgress,
2905
- onTap: onTap,
2906
- springParams: springParams
2907
- }),
2908
- isDragging = _useDragProgress.dragging,
2909
- progressSpring = _useDragProgress.progress,
2910
- dragContentBind = _useDragProgress.bind;
2911
-
2700
+ progress: screenIndex,
2701
+ disabled: !isView || withoutTransitions,
2702
+ dragDisabled: withoutGestures,
2703
+ computeProgress: computeScreenProgress,
2704
+ onProgress: onScreenProgress,
2705
+ onTap: onTap,
2706
+ springParams: springParams
2707
+ }),
2708
+ isDragging = _useDragProgress.dragging,
2709
+ progressSpring = _useDragProgress.progress,
2710
+ dragContentBind = _useDragProgress.bind;
2912
2711
  var getScreenStylesByIndex = function getScreenStylesByIndex(index, spring) {
2913
2712
  if (transitionType === 'stack') {
2914
2713
  return {
@@ -2934,7 +2733,6 @@ var Viewer = function Viewer(_ref) {
2934
2733
  })
2935
2734
  };
2936
2735
  }
2937
-
2938
2736
  return {
2939
2737
  opacity: spring.to(function (progress) {
2940
2738
  var t = index - progress;
@@ -2951,19 +2749,18 @@ var Viewer = function Viewer(_ref) {
2951
2749
  zIndex: screensCount - index
2952
2750
  };
2953
2751
  };
2954
-
2955
2752
  var _useFullscreen = hooks.useFullscreen(containerRef.current || null),
2956
- toggleFullscreen = _useFullscreen.toggle,
2957
- fullscreenActive = _useFullscreen.active,
2958
- fullscreenEnabled = _useFullscreen.enabled;
2959
-
2960
- var menuVisible = screensCount === 0 || currentScreenInteractionEnabled; // Get element height
2753
+ toggleFullscreen = _useFullscreen.toggle,
2754
+ fullscreenActive = _useFullscreen.active,
2755
+ fullscreenEnabled = _useFullscreen.enabled;
2756
+ var menuVisible = screensCount === 0 || currentScreenInteractionEnabled;
2757
+ var navigationDisabled = currentScreenInteractionEnabled === false;
2961
2758
 
2759
+ // Get element height
2962
2760
  var _useDimensionObserver3 = hooks.useDimensionObserver(),
2963
- menuDotsContainerRef = _useDimensionObserver3.ref,
2964
- _useDimensionObserver4 = _useDimensionObserver3.height,
2965
- menuDotsContainerHeight = _useDimensionObserver4 === void 0 ? 0 : _useDimensionObserver4;
2966
-
2761
+ menuDotsContainerRef = _useDimensionObserver3.ref,
2762
+ _useDimensionObserver4 = _useDimensionObserver3.height,
2763
+ menuDotsContainerHeight = _useDimensionObserver4 === void 0 ? 0 : _useDimensionObserver4;
2967
2764
  var onClickScreen = React.useCallback(function (_ref13) {
2968
2765
  var itemScreenId = _ref13.screenId;
2969
2766
  onInteractionPrivate();
@@ -2978,10 +2775,10 @@ var Viewer = function Viewer(_ref) {
2978
2775
  e.preventDefault();
2979
2776
  return false;
2980
2777
  }
2981
-
2982
2778
  return true;
2983
- }, [landscape]); // hmm?
2779
+ }, [landscape]);
2984
2780
 
2781
+ // hmm?
2985
2782
  var overscrollStyle = /*#__PURE__*/React__default["default"].createElement("style", {
2986
2783
  type: "text/css"
2987
2784
  }, "body { overscroll-behavior: contain; }");
@@ -3004,46 +2801,36 @@ var Viewer = function Viewer(_ref) {
3004
2801
  useKeyboardShortcuts(keyboardShortcuts, {
3005
2802
  disabled: renderContext !== 'view'
3006
2803
  });
3007
-
3008
- var _useState3 = React.useState(null),
3009
- _useState4 = _slicedToArray__default["default"](_useState3, 2),
3010
- currentShareIncentive = _useState4[0],
3011
- setCurrentShareIncentive = _useState4[1];
3012
-
3013
- var _useState5 = React.useState(false),
3014
- _useState6 = _slicedToArray__default["default"](_useState5, 2),
3015
- shareIncentiveVisible = _useState6[0],
3016
- setShareIncentiveVisible = _useState6[1];
3017
-
2804
+ var _useState5 = React.useState(null),
2805
+ _useState6 = _slicedToArray__default["default"](_useState5, 2),
2806
+ currentShareIncentive = _useState6[0],
2807
+ setCurrentShareIncentive = _useState6[1];
2808
+ var _useState7 = React.useState(false),
2809
+ _useState8 = _slicedToArray__default["default"](_useState7, 2),
2810
+ shareIncentiveVisible = _useState8[0],
2811
+ setShareIncentiveVisible = _useState8[1];
3018
2812
  var _ref15 = currentScreen || {},
3019
- _ref15$shareIncentive = _ref15.shareIncentive,
3020
- shareIncentive = _ref15$shareIncentive === void 0 ? null : _ref15$shareIncentive;
3021
-
2813
+ _ref15$shareIncentive = _ref15.shareIncentive,
2814
+ shareIncentive = _ref15$shareIncentive === void 0 ? null : _ref15$shareIncentive;
3022
2815
  var _ref16 = shareIncentive || {},
3023
- _ref16$active = _ref16.active,
3024
- hasShareIncentive = _ref16$active === void 0 ? false : _ref16$active,
3025
- _ref16$label = _ref16.label,
3026
- shareIncentiveLabel = _ref16$label === void 0 ? null : _ref16$label;
3027
-
2816
+ _ref16$active = _ref16.active,
2817
+ hasShareIncentive = _ref16$active === void 0 ? false : _ref16$active,
2818
+ _ref16$label = _ref16.label,
2819
+ shareIncentiveLabel = _ref16$label === void 0 ? null : _ref16$label;
3028
2820
  var _ref17 = currentShareIncentive || {},
3029
- _ref17$label = _ref17.label,
3030
- currentShareIncentiveLabel = _ref17$label === void 0 ? null : _ref17$label;
3031
-
2821
+ _ref17$label = _ref17.label,
2822
+ currentShareIncentiveLabel = _ref17$label === void 0 ? null : _ref17$label;
3032
2823
  var _ref18 = shareIncentiveLabel || {},
3033
- _ref18$body = _ref18.body,
3034
- incentiveLabel = _ref18$body === void 0 ? null : _ref18$body;
3035
-
2824
+ _ref18$body = _ref18.body,
2825
+ incentiveLabel = _ref18$body === void 0 ? null : _ref18$body;
3036
2826
  var _ref19 = currentShareIncentiveLabel || {},
3037
- _ref19$body = _ref19.body,
3038
- currentIncentiveLabel = _ref19$body === void 0 ? null : _ref19$body;
3039
-
2827
+ _ref19$body = _ref19.body,
2828
+ currentIncentiveLabel = _ref19$body === void 0 ? null : _ref19$body;
3040
2829
  React.useEffect(function () {
3041
2830
  setShareIncentiveVisible(true);
3042
-
3043
2831
  if (hasShareIncentive && shareIncentiveLabel !== currentShareIncentiveLabel) {
3044
2832
  setCurrentShareIncentive(shareIncentive);
3045
2833
  }
3046
-
3047
2834
  var timeout = setTimeout(function () {
3048
2835
  if (isView) {
3049
2836
  setShareIncentiveVisible(false);
@@ -3079,7 +2866,7 @@ var Viewer = function Viewer(_ref) {
3079
2866
  }), /*#__PURE__*/React__default["default"].createElement("div", {
3080
2867
  className: classNames__default["default"]([styles$6.container, screenSize.screens.map(function (screenName) {
3081
2868
  return "story-screen-".concat(screenName);
3082
- }), (_ref20 = {}, _defineProperty__default["default"](_ref20, styles$6.landscape, landscape), _defineProperty__default["default"](_ref20, styles$6.withoutGestures, withoutGestures), _defineProperty__default["default"](_ref20, styles$6.hideMenu, !menuVisible), _defineProperty__default["default"](_ref20, styles$6.fadeMenu, playing && playbackControls && !playbackcontrolsVisible), _defineProperty__default["default"](_ref20, styles$6.ready, ready || withoutScreensTransforms), _defineProperty__default["default"](_ref20, styles$6.hasInteracted, hasInteracted), _defineProperty__default["default"](_ref20, styles$6.isDragging, isDragging), _defineProperty__default["default"](_ref20, className, className), _ref20)]),
2869
+ }), (_ref20 = {}, _defineProperty__default["default"](_ref20, styles$6.landscape, landscape), _defineProperty__default["default"](_ref20, styles$6.withoutGestures, withoutGestures), _defineProperty__default["default"](_ref20, styles$6.hideMenu, !menuVisible), _defineProperty__default["default"](_ref20, styles$6.disableMenu, navigationDisabled), _defineProperty__default["default"](_ref20, styles$6.fadeMenu, playing && playbackControls && !playbackcontrolsVisible), _defineProperty__default["default"](_ref20, styles$6.ready, ready || withoutScreensTransforms), _defineProperty__default["default"](_ref20, styles$6.hasInteracted, hasInteracted), _defineProperty__default["default"](_ref20, styles$6.isDragging, isDragging), _defineProperty__default["default"](_ref20, className, className), _ref20)]),
3083
2870
  ref: containerRef,
3084
2871
  onContextMenu: onContextMenu
3085
2872
  }, !withoutMenu ? /*#__PURE__*/React__default["default"].createElement(ViewerMenu$1, {
@@ -3103,7 +2890,7 @@ var Viewer = function Viewer(_ref) {
3103
2890
  refDots: menuDotsContainerRef
3104
2891
  }) : null, ready || withoutScreensTransforms ? /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
3105
2892
  className: styles$6.content
3106
- }, dragContentBind()), !withoutNavigationArrow && !withNeighborScreens && screenIndex > 0 && screens.length > 1 ? /*#__PURE__*/React__default["default"].createElement(NavigationButton, {
2893
+ }, dragContentBind()), !withoutNavigationArrow && !withNeighborScreens && !navigationDisabled && screenIndex > 0 && screens.length > 1 ? /*#__PURE__*/React__default["default"].createElement(NavigationButton, {
3107
2894
  direction: "previous",
3108
2895
  className: classNames__default["default"]([styles$6.navButton, styles$6.previous]),
3109
2896
  onClick: gotoPreviousScreen
@@ -3129,6 +2916,7 @@ var Viewer = function Viewer(_ref) {
3129
2916
  index: i,
3130
2917
  current: current,
3131
2918
  active: active,
2919
+ ready: current && transitioned,
3132
2920
  mediaRef: function mediaRef(ref) {
3133
2921
  screensMediasRef.current[i] = ref;
3134
2922
  },
@@ -3137,7 +2925,7 @@ var Viewer = function Viewer(_ref) {
3137
2925
  height: screenHeight,
3138
2926
  scale: screenScale
3139
2927
  }) : null);
3140
- })), !withoutNavigationArrow && !withNeighborScreens && screenIndex < screens.length - 1 ? /*#__PURE__*/React__default["default"].createElement(NavigationButton, {
2928
+ })), !withoutNavigationArrow && !withNeighborScreens && !navigationDisabled && screenIndex < screens.length - 1 ? /*#__PURE__*/React__default["default"].createElement(NavigationButton, {
3141
2929
  direction: "next",
3142
2930
  className: classNames__default["default"]([styles$6.navButton, styles$6.next]),
3143
2931
  onClick: gotoNextScreen
@@ -3146,7 +2934,7 @@ var Viewer = function Viewer(_ref) {
3146
2934
  ref: playbackControlsContainerRef
3147
2935
  }, /*#__PURE__*/React__default["default"].createElement(PlaybackControls, {
3148
2936
  className: styles$6.controls
3149
- })) : null, withNavigationHint && !withNeighborScreens && screenIndex === 0 && !hasInteracted ? /*#__PURE__*/React__default["default"].createElement(ArrowHint, {
2937
+ })) : null, withNavigationHint && !withNeighborScreens && !navigationDisabled && screenIndex === 0 && !hasInteracted ? /*#__PURE__*/React__default["default"].createElement(ArrowHint, {
3150
2938
  className: styles$6.arrowHint
3151
2939
  }) : null) : null, /*#__PURE__*/React__default["default"].createElement("div", {
3152
2940
  className: classNames__default["default"]([styles$6.shareIncentiveContainer, _defineProperty__default["default"]({}, styles$6.shareIncentiveVisible, hasShareIncentive && shareIncentiveVisible)]),
@@ -3162,7 +2950,6 @@ var Viewer = function Viewer(_ref) {
3162
2950
  }
3163
2951
  })))));
3164
2952
  };
3165
-
3166
2953
  Viewer.propTypes = propTypes$2;
3167
2954
  Viewer.defaultProps = defaultProps$2;
3168
2955
 
@@ -3180,21 +2967,17 @@ var defaultProps$1 = {
3180
2967
  children: null,
3181
2968
  onScreenChange: null
3182
2969
  };
3183
-
3184
2970
  var ViewerRoutes = function ViewerRoutes(_ref) {
3185
2971
  var story = _ref.story,
3186
- pathWithIndex = _ref.pathWithIndex;
3187
- _ref.children;
3188
- var onScreenChange = _ref.onScreenChange,
3189
- otherProps = _objectWithoutProperties__default["default"](_ref, _excluded$1);
3190
-
2972
+ pathWithIndex = _ref.pathWithIndex;
2973
+ _ref.children;
2974
+ var onScreenChange = _ref.onScreenChange,
2975
+ otherProps = _objectWithoutProperties__default["default"](_ref, _excluded$1);
3191
2976
  var routes = contexts.useRoutes();
3192
2977
  var push = contexts.useRoutePush();
3193
-
3194
2978
  var _ref2 = story || {},
3195
- _ref2$components = _ref2.components,
3196
- screens = _ref2$components === void 0 ? [] : _ref2$components;
3197
-
2979
+ _ref2$components = _ref2.components,
2980
+ screens = _ref2$components === void 0 ? [] : _ref2$components;
3198
2981
  var finalOnScreenChange = React.useCallback(function (it) {
3199
2982
  var screenIndex = screens.findIndex(function (screen) {
3200
2983
  var screenId = screen.id;
@@ -3203,7 +2986,6 @@ var ViewerRoutes = function ViewerRoutes(_ref) {
3203
2986
  push('screen', {
3204
2987
  screen: pathWithIndex ? screenIndex + 1 : it.id
3205
2988
  });
3206
-
3207
2989
  if (onScreenChange !== null) {
3208
2990
  onScreenChange(it);
3209
2991
  }
@@ -3221,7 +3003,7 @@ var ViewerRoutes = function ViewerRoutes(_ref) {
3221
3003
  path: routes.screen,
3222
3004
  render: function render(_ref3) {
3223
3005
  var _ref3$match$params$sc = _ref3.match.params.screen,
3224
- screenParam = _ref3$match$params$sc === void 0 ? null : _ref3$match$params$sc;
3006
+ screenParam = _ref3$match$params$sc === void 0 ? null : _ref3$match$params$sc;
3225
3007
  var screenFromIndex = pathWithIndex && screenParam !== null ? screens[parseInt(screenParam, 10) - 1] || null : null;
3226
3008
  var screenId = pathWithIndex ? (screenFromIndex || {}).id || null : screenParam;
3227
3009
  return /*#__PURE__*/React__default["default"].createElement(Viewer, Object.assign({}, otherProps, {
@@ -3232,7 +3014,6 @@ var ViewerRoutes = function ViewerRoutes(_ref) {
3232
3014
  }
3233
3015
  }));
3234
3016
  };
3235
-
3236
3017
  ViewerRoutes.propTypes = propTypes$1;
3237
3018
  ViewerRoutes.defaultProps = defaultProps$1;
3238
3019
 
@@ -3280,38 +3061,35 @@ var defaultProps = {
3280
3061
  pathWithIndex: false,
3281
3062
  children: null
3282
3063
  };
3283
-
3284
3064
  var ViewerContainer = function ViewerContainer(_ref) {
3285
3065
  var story = _ref.story,
3286
- paused = _ref.paused,
3287
- screenComponents = _ref.screenComponents,
3288
- memoryRouter = _ref.memoryRouter,
3289
- basePath = _ref.basePath,
3290
- routes = _ref.routes,
3291
- withoutRouter = _ref.withoutRouter,
3292
- googleApiKey = _ref.googleApiKey,
3293
- visitor = _ref.visitor,
3294
- trackingVariables = _ref.trackingVariables,
3295
- locale = _ref.locale,
3296
- locales = _ref.locales,
3297
- translations = _ref.translations,
3298
- pathWithIndex = _ref.pathWithIndex,
3299
- otherProps = _objectWithoutProperties__default["default"](_ref, _excluded);
3300
-
3066
+ paused = _ref.paused,
3067
+ screenComponents = _ref.screenComponents,
3068
+ memoryRouter = _ref.memoryRouter,
3069
+ basePath = _ref.basePath,
3070
+ routes = _ref.routes,
3071
+ withoutRouter = _ref.withoutRouter,
3072
+ googleApiKey = _ref.googleApiKey,
3073
+ visitor = _ref.visitor,
3074
+ trackingVariables = _ref.trackingVariables,
3075
+ locale = _ref.locale,
3076
+ locales = _ref.locales,
3077
+ translations = _ref.translations,
3078
+ pathWithIndex = _ref.pathWithIndex,
3079
+ otherProps = _objectWithoutProperties__default["default"](_ref, _excluded);
3301
3080
  var Router = memoryRouter ? reactRouter.MemoryRouter : reactRouterDom.BrowserRouter;
3302
3081
  var finalTrackingVariables = React.useMemo(function () {
3303
3082
  if (story === null && trackingVariables === null) {
3304
3083
  return null;
3305
3084
  }
3306
-
3307
3085
  var _story$id = story.id,
3308
- id = _story$id === void 0 ? null : _story$id,
3309
- _story$slug = story.slug,
3310
- slug = _story$slug === void 0 ? null : _story$slug,
3311
- _story$title = story.title,
3312
- title = _story$title === void 0 ? null : _story$title,
3313
- _story$components = story.components,
3314
- components = _story$components === void 0 ? [] : _story$components;
3086
+ id = _story$id === void 0 ? null : _story$id,
3087
+ _story$slug = story.slug,
3088
+ slug = _story$slug === void 0 ? null : _story$slug,
3089
+ _story$title = story.title,
3090
+ title = _story$title === void 0 ? null : _story$title,
3091
+ _story$components = story.components,
3092
+ components = _story$components === void 0 ? [] : _story$components;
3315
3093
  return _objectSpread__default["default"]({
3316
3094
  storyId: id,
3317
3095
  storySlug: slug,
@@ -3319,14 +3097,11 @@ var ViewerContainer = function ViewerContainer(_ref) {
3319
3097
  screensCount: (components || []).length
3320
3098
  }, trackingVariables);
3321
3099
  }, [story, trackingVariables]);
3322
-
3323
3100
  var _ref2 = story || {},
3324
- metadata = _ref2.metadata;
3325
-
3101
+ metadata = _ref2.metadata;
3326
3102
  var _ref3 = metadata || {},
3327
- _ref3$language = _ref3.language,
3328
- finalLocale = _ref3$language === void 0 ? locale : _ref3$language;
3329
-
3103
+ _ref3$language = _ref3.language,
3104
+ finalLocale = _ref3$language === void 0 ? locale : _ref3$language;
3330
3105
  var content = /*#__PURE__*/React__default["default"].createElement(intl.IntlProvider, {
3331
3106
  locale: finalLocale,
3332
3107
  locales: locales,
@@ -3360,7 +3135,6 @@ var ViewerContainer = function ViewerContainer(_ref) {
3360
3135
  routes: routes
3361
3136
  }, content));
3362
3137
  };
3363
-
3364
3138
  ViewerContainer.propTypes = propTypes;
3365
3139
  ViewerContainer.defaultProps = defaultProps;
3366
3140