@micromag/viewer 0.3.176 → 0.3.181
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/assets/css/styles.css +12 -11
- package/es/index.js +1269 -1098
- package/lib/index.js +1283 -1112
- package/package.json +10 -10
package/lib/index.js
CHANGED
|
@@ -8,7 +8,7 @@ var PropTypes = require('prop-types');
|
|
|
8
8
|
var React = require('react');
|
|
9
9
|
var reactRouter = require('react-router');
|
|
10
10
|
var reactRouterDom = require('react-router-dom');
|
|
11
|
-
var core
|
|
11
|
+
var core = require('@micromag/core');
|
|
12
12
|
var contexts = require('@micromag/core/contexts');
|
|
13
13
|
var fieldsManager = require('@micromag/fields/manager');
|
|
14
14
|
var intl = require('@micromag/intl');
|
|
@@ -16,28 +16,20 @@ var screens = require('@micromag/screens');
|
|
|
16
16
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
17
17
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
18
18
|
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
|
19
|
-
var react = require('@use-gesture/react');
|
|
20
19
|
var classNames = require('classnames');
|
|
21
20
|
var reactHelmet = require('react-helmet');
|
|
22
|
-
var reactIntl = require('react-intl');
|
|
23
21
|
var EventEmitter = require('wolfy87-eventemitter');
|
|
24
22
|
var components = require('@micromag/core/components');
|
|
25
23
|
var hooks = require('@micromag/core/hooks');
|
|
26
24
|
var utils = require('@micromag/core/utils');
|
|
27
|
-
var
|
|
28
|
-
var web = require('@react-spring/web');
|
|
25
|
+
var reactIntl = require('react-intl');
|
|
29
26
|
var faTimes = require('@fortawesome/free-solid-svg-icons/faTimes');
|
|
30
|
-
var faShare = require('@fortawesome/free-solid-svg-icons/faShare');
|
|
31
27
|
var reactFontawesome = require('@fortawesome/react-fontawesome');
|
|
32
|
-
var
|
|
33
|
-
var
|
|
34
|
-
var faExpand = require('@fortawesome/free-solid-svg-icons/faExpand');
|
|
28
|
+
var core$1 = require('@react-spring/core');
|
|
29
|
+
var web = require('@react-spring/web');
|
|
35
30
|
var Scroll = require('@micromag/element-scroll');
|
|
36
|
-
var
|
|
37
|
-
var
|
|
38
|
-
var faPause = require('@fortawesome/free-solid-svg-icons/faPause');
|
|
39
|
-
var faPlay = require('@fortawesome/free-solid-svg-icons/faPlay');
|
|
40
|
-
var faVolumeUp = require('@fortawesome/free-solid-svg-icons/faVolumeUp');
|
|
31
|
+
var ShareOptions = require('@micromag/element-share-options');
|
|
32
|
+
var react = require('@use-gesture/react');
|
|
41
33
|
var WebView = require('@micromag/element-webview');
|
|
42
34
|
|
|
43
35
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -52,8 +44,8 @@ var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray)
|
|
|
52
44
|
var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
|
|
53
45
|
var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
|
|
54
46
|
var EventEmitter__default = /*#__PURE__*/_interopDefaultLegacy(EventEmitter);
|
|
55
|
-
var ShareOptions__default = /*#__PURE__*/_interopDefaultLegacy(ShareOptions);
|
|
56
47
|
var Scroll__default = /*#__PURE__*/_interopDefaultLegacy(Scroll);
|
|
48
|
+
var ShareOptions__default = /*#__PURE__*/_interopDefaultLegacy(ShareOptions);
|
|
57
49
|
var WebView__default = /*#__PURE__*/_interopDefaultLegacy(WebView);
|
|
58
50
|
|
|
59
51
|
var routes = PropTypes__default["default"].shape({
|
|
@@ -217,7 +209,7 @@ function useScreenInteraction() {
|
|
|
217
209
|
var relativeX = x - left;
|
|
218
210
|
var direction = relativeX < width * (1 - nextScreenWidthPercent) ? 'previous' : 'next';
|
|
219
211
|
var lastIndex = screensCount - 1;
|
|
220
|
-
var nextIndex = index;
|
|
212
|
+
var nextIndex = index; // @todo investigate what clickOnSiblings is doing
|
|
221
213
|
|
|
222
214
|
if (direction === 'previous' && !clickOnSiblings) {
|
|
223
215
|
nextIndex = Math.max(0, screenIndex - 1);
|
|
@@ -233,7 +225,7 @@ function useScreenInteraction() {
|
|
|
233
225
|
end: index === nextIndex && nextIndex === lastIndex
|
|
234
226
|
});
|
|
235
227
|
}
|
|
236
|
-
}, [screens, screenIndex,
|
|
228
|
+
}, [screens, screenIndex, screensInteractionEnabled, currentScreenInteractionEnabled, nextScreenWidthPercent, disableCurrentScreenNavigation, clickOnSiblings, onInteract, onNavigate]);
|
|
237
229
|
return {
|
|
238
230
|
interact: interact,
|
|
239
231
|
currentScreenInteractionEnabled: currentScreenInteractionEnabled,
|
|
@@ -242,9 +234,137 @@ function useScreenInteraction() {
|
|
|
242
234
|
};
|
|
243
235
|
}
|
|
244
236
|
|
|
245
|
-
var
|
|
237
|
+
var _excluded$5 = ["className", "onClick", "theme"];
|
|
238
|
+
var propTypes$k = {
|
|
239
|
+
className: PropTypes__default["default"].string,
|
|
240
|
+
onClick: PropTypes__default["default"].func,
|
|
241
|
+
theme: core.PropTypes.viewerTheme
|
|
242
|
+
};
|
|
243
|
+
var defaultProps$k = {
|
|
244
|
+
className: null,
|
|
245
|
+
onClick: null,
|
|
246
|
+
theme: null
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
var MenuButton = function MenuButton(_ref) {
|
|
250
|
+
var className = _ref.className,
|
|
251
|
+
onClick = _ref.onClick,
|
|
252
|
+
theme = _ref.theme,
|
|
253
|
+
props = _objectWithoutProperties__default["default"](_ref, _excluded$5);
|
|
254
|
+
|
|
255
|
+
var intl = reactIntl.useIntl();
|
|
256
|
+
return /*#__PURE__*/React__default["default"].createElement(components.IconButton, Object.assign({
|
|
257
|
+
className: classNames__default["default"]([_defineProperty__default["default"]({}, className, className !== null)]),
|
|
258
|
+
label: intl.formatMessage({
|
|
259
|
+
id: "F/gl4b",
|
|
260
|
+
defaultMessage: [{
|
|
261
|
+
"type": 0,
|
|
262
|
+
"value": "Menu"
|
|
263
|
+
}]
|
|
264
|
+
}),
|
|
265
|
+
iconPosition: "right",
|
|
266
|
+
icon: /*#__PURE__*/React__default["default"].createElement("svg", Object.assign({
|
|
267
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
268
|
+
width: "10",
|
|
269
|
+
height: "16",
|
|
270
|
+
viewBox: "0 0 10 16",
|
|
271
|
+
fill: "currentColor"
|
|
272
|
+
}, theme), /*#__PURE__*/React__default["default"].createElement("rect", {
|
|
273
|
+
width: "10",
|
|
274
|
+
height: "16"
|
|
275
|
+
})),
|
|
276
|
+
onClick: onClick
|
|
277
|
+
}, props));
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
MenuButton.propTypes = propTypes$k;
|
|
281
|
+
MenuButton.defaultProps = defaultProps$k;
|
|
282
|
+
|
|
283
|
+
var _excluded$4 = ["className", "onClick", "theme"];
|
|
284
|
+
var propTypes$j = {
|
|
285
|
+
className: PropTypes__default["default"].string,
|
|
286
|
+
onClick: PropTypes__default["default"].func,
|
|
287
|
+
theme: core.PropTypes.viewerTheme
|
|
288
|
+
};
|
|
289
|
+
var defaultProps$j = {
|
|
290
|
+
className: null,
|
|
291
|
+
onClick: null,
|
|
292
|
+
theme: null
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
var ShareButton = function ShareButton(_ref) {
|
|
296
|
+
var className = _ref.className,
|
|
297
|
+
onClick = _ref.onClick,
|
|
298
|
+
theme = _ref.theme,
|
|
299
|
+
props = _objectWithoutProperties__default["default"](_ref, _excluded$4);
|
|
300
|
+
|
|
301
|
+
var intl = reactIntl.useIntl();
|
|
302
|
+
return /*#__PURE__*/React__default["default"].createElement(components.IconButton, Object.assign({
|
|
303
|
+
className: classNames__default["default"]([_defineProperty__default["default"]({}, className, className !== null)]),
|
|
304
|
+
label: intl.formatMessage({
|
|
305
|
+
id: "7tw6U2",
|
|
306
|
+
defaultMessage: [{
|
|
307
|
+
"type": 0,
|
|
308
|
+
"value": "Share"
|
|
309
|
+
}]
|
|
310
|
+
}),
|
|
311
|
+
iconPosition: "left",
|
|
312
|
+
icon: /*#__PURE__*/React__default["default"].createElement("svg", Object.assign({
|
|
313
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
314
|
+
width: "10",
|
|
315
|
+
height: "16",
|
|
316
|
+
viewBox: "0 0 10 16",
|
|
317
|
+
fill: "currentColor"
|
|
318
|
+
}, theme), /*#__PURE__*/React__default["default"].createElement("polygon", {
|
|
319
|
+
points: "8.5 14.5 1.5 14.5 1.5 8 0 8 0 16 10 16 10 8 8.5 8 8.5 14.5"
|
|
320
|
+
}), /*#__PURE__*/React__default["default"].createElement("polygon", {
|
|
321
|
+
points: "9.62 4.62 5 0 0.38 4.62 1.44 5.68 4.25 2.87 4.25 11.26 5.75 11.26 5.75 2.87 8.56 5.68 9.62 4.62"
|
|
322
|
+
})),
|
|
323
|
+
onClick: onClick
|
|
324
|
+
}, props));
|
|
325
|
+
};
|
|
326
|
+
|
|
327
|
+
ShareButton.propTypes = propTypes$j;
|
|
328
|
+
ShareButton.defaultProps = defaultProps$j;
|
|
329
|
+
|
|
330
|
+
var styles$d = {"container":"micromag-viewer-menus-menu-container-container","heightContainer":"micromag-viewer-menus-menu-container-heightContainer","inner":"micromag-viewer-menus-menu-container-inner"};
|
|
331
|
+
|
|
332
|
+
var propTypes$i = {
|
|
333
|
+
className: PropTypes__default["default"].string,
|
|
334
|
+
transitionProgress: PropTypes__default["default"].number,
|
|
335
|
+
children: PropTypes__default["default"].node
|
|
336
|
+
};
|
|
337
|
+
var defaultProps$i = {
|
|
338
|
+
className: null,
|
|
339
|
+
transitionProgress: 0,
|
|
340
|
+
children: null
|
|
341
|
+
};
|
|
342
|
+
|
|
343
|
+
var ViewerMenuContainer = function ViewerMenuContainer(_ref) {
|
|
344
|
+
var className = _ref.className,
|
|
345
|
+
transitionProgress = _ref.transitionProgress,
|
|
346
|
+
children = _ref.children;
|
|
347
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
348
|
+
className: classNames__default["default"]([styles$d.container, _defineProperty__default["default"]({}, className, className !== null)]),
|
|
349
|
+
style: {
|
|
350
|
+
pointerEvents: 'none'
|
|
351
|
+
}
|
|
352
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
353
|
+
className: styles$d.heightContainer,
|
|
354
|
+
style: {
|
|
355
|
+
height: "".concat(transitionProgress * 100, "%"),
|
|
356
|
+
pointerEvents: transitionProgress < 0.25 ? 'none' : 'auto',
|
|
357
|
+
zIndex: Math.round(2 - transitionProgress)
|
|
358
|
+
}
|
|
359
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
360
|
+
className: styles$d.inner
|
|
361
|
+
}, children)));
|
|
362
|
+
};
|
|
363
|
+
|
|
364
|
+
ViewerMenuContainer.propTypes = propTypes$i;
|
|
365
|
+
ViewerMenuContainer.defaultProps = defaultProps$i;
|
|
246
366
|
|
|
247
|
-
var styles$
|
|
367
|
+
var styles$c = {"button":"micromag-viewer-menus-menu-dot-button","progress":"micromag-viewer-menus-menu-dot-progress","dot":"micromag-viewer-menus-menu-dot-dot","container":"micromag-viewer-menus-menu-dot-container","vertical":"micromag-viewer-menus-menu-dot-vertical","subDot":"micromag-viewer-menus-menu-dot-subDot","dots":"micromag-viewer-menus-menu-dot-dots","outlineBounce":"micromag-viewer-menus-menu-dot-outlineBounce"};
|
|
248
368
|
|
|
249
369
|
var propTypes$h = {
|
|
250
370
|
current: PropTypes__default["default"].bool,
|
|
@@ -281,290 +401,67 @@ var ViewerMenuDot = function ViewerMenuDot(_ref) {
|
|
|
281
401
|
vertical = _ref.vertical,
|
|
282
402
|
onClick = _ref.onClick,
|
|
283
403
|
className = _ref.className;
|
|
284
|
-
var currentTime = 0;
|
|
285
|
-
var duration = 1;
|
|
286
|
-
var playing = true;
|
|
287
404
|
|
|
288
405
|
var _ref2 = colors || {},
|
|
289
406
|
_ref2$primary = _ref2.primary,
|
|
290
407
|
primary = _ref2$primary === void 0 ? 'rgba(255, 255, 255, 1)' : _ref2$primary,
|
|
291
408
|
_ref2$secondary = _ref2.secondary,
|
|
292
|
-
secondary = _ref2$secondary === void 0 ? 'rgba(
|
|
409
|
+
secondary = _ref2$secondary === void 0 ? 'rgba(255, 255, 255, 0.25)' : _ref2$secondary;
|
|
293
410
|
|
|
294
|
-
|
|
295
|
-
var _useSpring = core.useSpring(function () {
|
|
411
|
+
var _useSpring = core$1.useSpring(function () {
|
|
296
412
|
return {
|
|
297
|
-
|
|
413
|
+
scaleX: 0,
|
|
298
414
|
config: {
|
|
299
|
-
|
|
415
|
+
tension: 200,
|
|
416
|
+
friction: 30
|
|
300
417
|
}
|
|
301
418
|
};
|
|
302
419
|
}),
|
|
303
|
-
_useSpring2 = _slicedToArray__default["default"](_useSpring, 2)
|
|
304
|
-
_useSpring2[0]
|
|
305
|
-
|
|
420
|
+
_useSpring2 = _slicedToArray__default["default"](_useSpring, 2),
|
|
421
|
+
dotSpringStyles = _useSpring2[0],
|
|
422
|
+
setDotSpringProps = _useSpring2[1];
|
|
306
423
|
|
|
307
424
|
React.useEffect(function () {
|
|
308
|
-
|
|
309
|
-
var
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
x: progress
|
|
315
|
-
},
|
|
316
|
-
to: {
|
|
317
|
-
x: 1
|
|
318
|
-
},
|
|
319
|
-
config: {
|
|
320
|
-
duration: (duration - currentTime) * 1000
|
|
321
|
-
}
|
|
322
|
-
});
|
|
323
|
-
}, [playing, duration, currentTime, setSpringProps]);
|
|
324
|
-
var inner = current && count > 1 ? /*#__PURE__*/React__default["default"].createElement("span", {
|
|
325
|
-
className: styles$b.dots
|
|
326
|
-
}, _toConsumableArray__default["default"](Array(count).keys()).map(function (i) {
|
|
327
|
-
return /*#__PURE__*/React__default["default"].createElement("span", {
|
|
328
|
-
className: classNames__default["default"]([styles$b.dot, styles$b.subDot]),
|
|
329
|
-
style: {
|
|
330
|
-
width: "".concat(parseFloat(1 / count * 100).toFixed(2), "%"),
|
|
331
|
-
backgroundColor: active && i <= subIndex ? primary : secondary
|
|
332
|
-
}
|
|
425
|
+
var activeRatio = active ? 1 : 0;
|
|
426
|
+
var ratio = count > 1 && current ? (subIndex + 1) / count : activeRatio;
|
|
427
|
+
var scaleX = ratio;
|
|
428
|
+
setDotSpringProps.start({
|
|
429
|
+
scaleX: scaleX,
|
|
430
|
+
immediate: !current
|
|
333
431
|
});
|
|
334
|
-
}
|
|
335
|
-
className: styles$b.dot,
|
|
336
|
-
style: {
|
|
337
|
-
backgroundColor: active ? primary : secondary
|
|
338
|
-
}
|
|
339
|
-
});
|
|
432
|
+
}, [active, current, subIndex, count, setDotSpringProps]);
|
|
340
433
|
return /*#__PURE__*/React__default["default"].createElement("li", {
|
|
341
|
-
className: classNames__default["default"]([styles$
|
|
434
|
+
className: classNames__default["default"]([styles$c.container, (_ref3 = {}, _defineProperty__default["default"](_ref3, styles$c.active, current), _defineProperty__default["default"](_ref3, styles$c.vertical, vertical), _defineProperty__default["default"](_ref3, className, className !== null), _ref3)]),
|
|
342
435
|
"aria-hidden": "true"
|
|
343
436
|
}, /*#__PURE__*/React__default["default"].createElement("button", {
|
|
344
437
|
type: "button",
|
|
345
|
-
className: styles$
|
|
438
|
+
className: styles$c.button,
|
|
346
439
|
onClick: onClick,
|
|
347
440
|
tabIndex: "-1"
|
|
348
|
-
},
|
|
441
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
442
|
+
className: styles$c.dot,
|
|
443
|
+
style: {
|
|
444
|
+
backgroundColor: secondary
|
|
445
|
+
}
|
|
446
|
+
}, /*#__PURE__*/React__default["default"].createElement(web.animated.div, {
|
|
447
|
+
className: styles$c.progress,
|
|
448
|
+
style: _objectSpread__default["default"](_objectSpread__default["default"]({}, dotSpringStyles), {}, {
|
|
449
|
+
backgroundColor: primary
|
|
450
|
+
})
|
|
451
|
+
}))));
|
|
349
452
|
};
|
|
350
453
|
|
|
351
454
|
ViewerMenuDot.propTypes = propTypes$h;
|
|
352
455
|
ViewerMenuDot.defaultProps = defaultProps$h;
|
|
353
456
|
|
|
354
|
-
var styles$
|
|
457
|
+
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"};
|
|
355
458
|
|
|
459
|
+
var _excluded$3 = ["direction", "items", "onClickDot", "onClickScreensMenu", "colors", "closeable", "withItemClick", "withoutScreensMenu", "onClose", "className"];
|
|
356
460
|
var propTypes$g = {
|
|
357
|
-
size: PropTypes__default["default"].number,
|
|
358
|
-
spacing: PropTypes__default["default"].number,
|
|
359
|
-
color: PropTypes__default["default"].string,
|
|
360
|
-
className: PropTypes__default["default"].string
|
|
361
|
-
};
|
|
362
|
-
var defaultProps$g = {
|
|
363
|
-
size: 100,
|
|
364
|
-
spacing: 8,
|
|
365
|
-
color: 'white',
|
|
366
|
-
className: null
|
|
367
|
-
};
|
|
368
|
-
|
|
369
|
-
var MenuIcon = function MenuIcon(_ref) {
|
|
370
|
-
var size = _ref.size,
|
|
371
|
-
spacing = _ref.spacing,
|
|
372
|
-
color = _ref.color,
|
|
373
|
-
className = _ref.className;
|
|
374
|
-
var squareSize = (size - 2 * spacing) / 3;
|
|
375
|
-
return /*#__PURE__*/React__default["default"].createElement("svg", {
|
|
376
|
-
className: classNames__default["default"]([styles$a.container, _defineProperty__default["default"]({}, className, className !== null)]),
|
|
377
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
378
|
-
viewBox: "0 0 ".concat(size, " ").concat(size),
|
|
379
|
-
"aria-hidden": "true"
|
|
380
|
-
}, _toConsumableArray__default["default"](new Array(9)).map(function (square, squareI) {
|
|
381
|
-
var x = squareI % 3 * (squareSize + spacing);
|
|
382
|
-
var y = Math.floor(squareI / 3) * (squareSize + spacing);
|
|
383
|
-
return /*#__PURE__*/React__default["default"].createElement("rect", {
|
|
384
|
-
key: "square-".concat(squareI),
|
|
385
|
-
fill: color,
|
|
386
|
-
x: x,
|
|
387
|
-
y: y,
|
|
388
|
-
width: squareSize,
|
|
389
|
-
height: squareSize
|
|
390
|
-
});
|
|
391
|
-
}));
|
|
392
|
-
};
|
|
393
|
-
|
|
394
|
-
MenuIcon.propTypes = propTypes$g;
|
|
395
|
-
MenuIcon.defaultProps = defaultProps$g;
|
|
396
|
-
|
|
397
|
-
var styles$9 = {"close":"micromag-viewer-partials-share-modal-close","container":"micromag-viewer-partials-share-modal-container","opened":"micromag-viewer-partials-share-modal-opened","modal":"micromag-viewer-partials-share-modal-modal","header":"micromag-viewer-partials-share-modal-header","heading":"micromag-viewer-partials-share-modal-heading","closeIcon":"micromag-viewer-partials-share-modal-closeIcon","shareOptions":"micromag-viewer-partials-share-modal-shareOptions"};
|
|
398
|
-
|
|
399
|
-
var propTypes$f = {
|
|
400
|
-
url: PropTypes__default["default"].string,
|
|
401
|
-
title: PropTypes__default["default"].string,
|
|
402
|
-
opened: PropTypes__default["default"].bool,
|
|
403
|
-
className: PropTypes__default["default"].string,
|
|
404
|
-
onShare: PropTypes__default["default"].func,
|
|
405
|
-
onCancel: PropTypes__default["default"].func
|
|
406
|
-
};
|
|
407
|
-
var defaultProps$f = {
|
|
408
|
-
url: null,
|
|
409
|
-
title: null,
|
|
410
|
-
opened: false,
|
|
411
|
-
className: null,
|
|
412
|
-
onShare: null,
|
|
413
|
-
onCancel: null
|
|
414
|
-
};
|
|
415
|
-
|
|
416
|
-
var ShareModal = function ShareModal(_ref) {
|
|
417
|
-
var _ref3;
|
|
418
|
-
|
|
419
|
-
var url = _ref.url,
|
|
420
|
-
title = _ref.title,
|
|
421
|
-
opened = _ref.opened,
|
|
422
|
-
className = _ref.className,
|
|
423
|
-
onShare = _ref.onShare,
|
|
424
|
-
onCancel = _ref.onCancel;
|
|
425
|
-
var modalRef = React.useRef();
|
|
426
|
-
var onDocumentClick = React.useCallback(function (e) {
|
|
427
|
-
var _ref2 = e || {},
|
|
428
|
-
target = _ref2.target;
|
|
429
|
-
|
|
430
|
-
if (!modalRef.current || modalRef.current.contains(target)) {
|
|
431
|
-
return;
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
onCancel();
|
|
435
|
-
}, [opened, onCancel]);
|
|
436
|
-
hooks.useDocumentEvent('click', onDocumentClick, opened);
|
|
437
|
-
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
438
|
-
className: classNames__default["default"]([styles$9.container, (_ref3 = {}, _defineProperty__default["default"](_ref3, className, className), _defineProperty__default["default"](_ref3, styles$9.opened, opened), _ref3)]),
|
|
439
|
-
"aria-hidden": opened ? null : '-1'
|
|
440
|
-
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
441
|
-
className: styles$9.modal,
|
|
442
|
-
ref: modalRef
|
|
443
|
-
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
444
|
-
className: styles$9.header
|
|
445
|
-
}, /*#__PURE__*/React__default["default"].createElement("h2", {
|
|
446
|
-
className: styles$9.heading
|
|
447
|
-
}, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
|
|
448
|
-
id: "oL4ueH",
|
|
449
|
-
defaultMessage: [{
|
|
450
|
-
"type": 0,
|
|
451
|
-
"value": "Share"
|
|
452
|
-
}]
|
|
453
|
-
})), /*#__PURE__*/React__default["default"].createElement(components.Button, {
|
|
454
|
-
className: styles$9.close,
|
|
455
|
-
onClick: onCancel,
|
|
456
|
-
focusable: opened
|
|
457
|
-
}, /*#__PURE__*/React__default["default"].createElement(components.Close, {
|
|
458
|
-
className: styles$9.closeIcon,
|
|
459
|
-
border: "none"
|
|
460
|
-
}))), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
461
|
-
className: styles$9.content
|
|
462
|
-
}, /*#__PURE__*/React__default["default"].createElement(ShareOptions__default["default"], {
|
|
463
|
-
className: styles$9.shareOptions,
|
|
464
|
-
title: title,
|
|
465
|
-
url: url,
|
|
466
|
-
focusable: opened,
|
|
467
|
-
onShare: onShare,
|
|
468
|
-
onClose: onCancel
|
|
469
|
-
}))));
|
|
470
|
-
};
|
|
471
|
-
|
|
472
|
-
ShareModal.propTypes = propTypes$f;
|
|
473
|
-
ShareModal.defaultProps = defaultProps$f;
|
|
474
|
-
|
|
475
|
-
var styles$8 = {"container":"micromag-viewer-partials-share-button-container"};
|
|
476
|
-
|
|
477
|
-
var propTypes$e = {
|
|
478
|
-
title: PropTypes__default["default"].string,
|
|
479
|
-
url: PropTypes__default["default"].string,
|
|
480
|
-
className: PropTypes__default["default"].string,
|
|
481
|
-
buttonClassName: PropTypes__default["default"].string,
|
|
482
|
-
onShare: PropTypes__default["default"].func,
|
|
483
|
-
children: PropTypes__default["default"].node,
|
|
484
|
-
focusable: PropTypes__default["default"].bool
|
|
485
|
-
};
|
|
486
|
-
var defaultProps$e = {
|
|
487
|
-
title: null,
|
|
488
|
-
url: null,
|
|
489
|
-
className: null,
|
|
490
|
-
buttonClassName: null,
|
|
491
|
-
onShare: null,
|
|
492
|
-
children: null,
|
|
493
|
-
focusable: false
|
|
494
|
-
};
|
|
495
|
-
|
|
496
|
-
var ShareButton = function ShareButton(_ref) {
|
|
497
|
-
var title = _ref.title,
|
|
498
|
-
url = _ref.url,
|
|
499
|
-
className = _ref.className,
|
|
500
|
-
buttonClassName = _ref.buttonClassName,
|
|
501
|
-
onShare = _ref.onShare,
|
|
502
|
-
children = _ref.children,
|
|
503
|
-
focusable = _ref.focusable;
|
|
504
|
-
var intl = reactIntl.useIntl();
|
|
505
|
-
|
|
506
|
-
var _useState = React.useState(false),
|
|
507
|
-
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
508
|
-
storyShareModalOpened = _useState2[0],
|
|
509
|
-
setStoryShareModalOpened = _useState2[1];
|
|
510
|
-
|
|
511
|
-
var onShareIconClick = React.useCallback(function () {
|
|
512
|
-
setStoryShareModalOpened(function (opened) {
|
|
513
|
-
return !opened;
|
|
514
|
-
});
|
|
515
|
-
}, [setStoryShareModalOpened, storyShareModalOpened]);
|
|
516
|
-
var onStoryShared = React.useCallback(function (type) {
|
|
517
|
-
setStoryShareModalOpened(false);
|
|
518
|
-
|
|
519
|
-
if (onShare !== null) {
|
|
520
|
-
onShare(type);
|
|
521
|
-
}
|
|
522
|
-
}, [setStoryShareModalOpened, onShare]);
|
|
523
|
-
var onStoryShareCanceled = React.useCallback(function () {
|
|
524
|
-
setStoryShareModalOpened(false);
|
|
525
|
-
}, [setStoryShareModalOpened]);
|
|
526
|
-
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
527
|
-
className: classNames__default["default"]([styles$8.container, _defineProperty__default["default"]({}, className, className !== null)])
|
|
528
|
-
}, /*#__PURE__*/React__default["default"].createElement(components.Button, {
|
|
529
|
-
className: classNames__default["default"]([_defineProperty__default["default"]({}, buttonClassName, buttonClassName !== null)]),
|
|
530
|
-
onClick: onShareIconClick,
|
|
531
|
-
title: intl.formatMessage({
|
|
532
|
-
id: "7tw6U2",
|
|
533
|
-
defaultMessage: [{
|
|
534
|
-
"type": 0,
|
|
535
|
-
"value": "Share"
|
|
536
|
-
}]
|
|
537
|
-
}),
|
|
538
|
-
"aria-label": intl.formatMessage({
|
|
539
|
-
id: "7tw6U2",
|
|
540
|
-
defaultMessage: [{
|
|
541
|
-
"type": 0,
|
|
542
|
-
"value": "Share"
|
|
543
|
-
}]
|
|
544
|
-
}),
|
|
545
|
-
focusable: focusable
|
|
546
|
-
}, children), /*#__PURE__*/React__default["default"].createElement(ShareModal, {
|
|
547
|
-
className: styles$8.shareModal,
|
|
548
|
-
opened: storyShareModalOpened,
|
|
549
|
-
title: title,
|
|
550
|
-
url: url,
|
|
551
|
-
onShare: onStoryShared,
|
|
552
|
-
onCancel: onStoryShareCanceled
|
|
553
|
-
}));
|
|
554
|
-
};
|
|
555
|
-
|
|
556
|
-
ShareButton.propTypes = propTypes$e;
|
|
557
|
-
ShareButton.defaultProps = defaultProps$e;
|
|
558
|
-
|
|
559
|
-
var propTypes$d = {
|
|
560
461
|
direction: PropTypes__default["default"].oneOf(['horizontal', 'vertical']),
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
shareUrl: PropTypes__default["default"].string,
|
|
565
|
-
onShare: PropTypes__default["default"].func,
|
|
566
|
-
onClickItem: PropTypes__default["default"].func,
|
|
567
|
-
onClickMenu: PropTypes__default["default"].func,
|
|
462
|
+
items: core.PropTypes.menuItems,
|
|
463
|
+
onClickDot: PropTypes__default["default"].func,
|
|
464
|
+
onClickScreensMenu: PropTypes__default["default"].func,
|
|
568
465
|
colors: PropTypes__default["default"].shape({
|
|
569
466
|
primary: PropTypes__default["default"].string,
|
|
570
467
|
secondary: PropTypes__default["default"].string
|
|
@@ -575,15 +472,11 @@ var propTypes$d = {
|
|
|
575
472
|
onClose: PropTypes__default["default"].func,
|
|
576
473
|
className: PropTypes__default["default"].string
|
|
577
474
|
};
|
|
578
|
-
var defaultProps$
|
|
475
|
+
var defaultProps$g = {
|
|
579
476
|
direction: 'horizontal',
|
|
580
|
-
withShadow: false,
|
|
581
|
-
title: null,
|
|
582
477
|
items: [],
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
onClickItem: null,
|
|
586
|
-
onClickMenu: null,
|
|
478
|
+
onClickDot: null,
|
|
479
|
+
onClickScreensMenu: null,
|
|
587
480
|
colors: null,
|
|
588
481
|
closeable: false,
|
|
589
482
|
withItemClick: false,
|
|
@@ -593,22 +486,19 @@ var defaultProps$d = {
|
|
|
593
486
|
};
|
|
594
487
|
|
|
595
488
|
var ViewerMenuDots = function ViewerMenuDots(_ref) {
|
|
596
|
-
var
|
|
489
|
+
var _ref5;
|
|
597
490
|
|
|
598
491
|
var direction = _ref.direction,
|
|
599
|
-
withShadow = _ref.withShadow,
|
|
600
|
-
title = _ref.title,
|
|
601
492
|
items = _ref.items,
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
onClickItem = _ref.onClickItem,
|
|
605
|
-
onClickMenu = _ref.onClickMenu,
|
|
493
|
+
onClickDot = _ref.onClickDot,
|
|
494
|
+
onClickScreensMenu = _ref.onClickScreensMenu,
|
|
606
495
|
colors = _ref.colors,
|
|
607
496
|
closeable = _ref.closeable,
|
|
608
497
|
withItemClick = _ref.withItemClick,
|
|
609
498
|
withoutScreensMenu = _ref.withoutScreensMenu,
|
|
610
499
|
onClose = _ref.onClose,
|
|
611
|
-
className = _ref.className
|
|
500
|
+
className = _ref.className,
|
|
501
|
+
props = _objectWithoutProperties__default["default"](_ref, _excluded$3);
|
|
612
502
|
|
|
613
503
|
var _ref2 = colors || {},
|
|
614
504
|
_ref2$primary = _ref2.primary,
|
|
@@ -620,8 +510,12 @@ var ViewerMenuDots = function ViewerMenuDots(_ref) {
|
|
|
620
510
|
current = _ref3$current === void 0 ? false : _ref3$current;
|
|
621
511
|
return current;
|
|
622
512
|
});
|
|
513
|
+
|
|
514
|
+
var _ref4 = props || {},
|
|
515
|
+
style = _ref4.style;
|
|
516
|
+
|
|
623
517
|
return /*#__PURE__*/React__default["default"].createElement("nav", {
|
|
624
|
-
className: classNames__default["default"]([styles$
|
|
518
|
+
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)]),
|
|
625
519
|
"aria-label": intl.formatMessage({
|
|
626
520
|
id: "bLYuuN",
|
|
627
521
|
defaultMessage: [{
|
|
@@ -643,17 +537,18 @@ var ViewerMenuDots = function ViewerMenuDots(_ref) {
|
|
|
643
537
|
}, {
|
|
644
538
|
current: currentIndex + 1,
|
|
645
539
|
total: items.length
|
|
646
|
-
})
|
|
540
|
+
}),
|
|
541
|
+
style: style
|
|
647
542
|
}, /*#__PURE__*/React__default["default"].createElement("ul", {
|
|
648
|
-
className: styles$
|
|
543
|
+
className: styles$b.items
|
|
649
544
|
}, items.map(function (item, index) {
|
|
650
|
-
var
|
|
651
|
-
|
|
652
|
-
current =
|
|
653
|
-
|
|
654
|
-
count =
|
|
655
|
-
|
|
656
|
-
subIndex =
|
|
545
|
+
var _ref6 = item || {},
|
|
546
|
+
_ref6$current = _ref6.current,
|
|
547
|
+
current = _ref6$current === void 0 ? false : _ref6$current,
|
|
548
|
+
_ref6$count = _ref6.count,
|
|
549
|
+
count = _ref6$count === void 0 ? 1 : _ref6$count,
|
|
550
|
+
_ref6$subIndex = _ref6.subIndex,
|
|
551
|
+
subIndex = _ref6$subIndex === void 0 ? 0 : _ref6$subIndex;
|
|
657
552
|
|
|
658
553
|
return /*#__PURE__*/React__default["default"].createElement(ViewerMenuDot, {
|
|
659
554
|
key: "item-".concat(index + 1),
|
|
@@ -663,56 +558,22 @@ var ViewerMenuDots = function ViewerMenuDots(_ref) {
|
|
|
663
558
|
count: count,
|
|
664
559
|
subIndex: subIndex,
|
|
665
560
|
onClick: function onClick() {
|
|
666
|
-
if ((withItemClick || withoutScreensMenu) &&
|
|
667
|
-
|
|
668
|
-
} else if (!withItemClick &&
|
|
669
|
-
|
|
561
|
+
if ((withItemClick || withoutScreensMenu) && onClickDot !== null) {
|
|
562
|
+
onClickDot(item);
|
|
563
|
+
} else if (!withItemClick && onClickScreensMenu !== null) {
|
|
564
|
+
onClickScreensMenu();
|
|
670
565
|
}
|
|
671
566
|
},
|
|
672
567
|
vertical: direction === 'vertical'
|
|
673
568
|
});
|
|
674
|
-
}), /*#__PURE__*/React__default["default"].createElement("li", {
|
|
675
|
-
className: styles$
|
|
676
|
-
}, /*#__PURE__*/React__default["default"].createElement(ShareButton, {
|
|
677
|
-
className: styles$c.shareButton,
|
|
678
|
-
buttonClassName: styles$c.menuButton,
|
|
679
|
-
onShare: onShare,
|
|
680
|
-
url: shareUrl,
|
|
681
|
-
title: title
|
|
682
|
-
}, /*#__PURE__*/React__default["default"].createElement(reactFontawesome.FontAwesomeIcon, {
|
|
683
|
-
className: styles$c.icon,
|
|
684
|
-
icon: faShare.faShare
|
|
685
|
-
}))), !withoutScreensMenu ? /*#__PURE__*/React__default["default"].createElement("li", {
|
|
686
|
-
className: styles$c.menu
|
|
687
|
-
}, /*#__PURE__*/React__default["default"].createElement(MenuIcon, {
|
|
688
|
-
className: styles$c.menuIcon,
|
|
689
|
-
color: primary
|
|
690
|
-
}), /*#__PURE__*/React__default["default"].createElement("button", {
|
|
691
|
-
type: "button",
|
|
692
|
-
title: intl.formatMessage({
|
|
693
|
-
id: "F/gl4b",
|
|
694
|
-
defaultMessage: [{
|
|
695
|
-
"type": 0,
|
|
696
|
-
"value": "Menu"
|
|
697
|
-
}]
|
|
698
|
-
}),
|
|
699
|
-
"aria-label": intl.formatMessage({
|
|
700
|
-
id: "F/gl4b",
|
|
701
|
-
defaultMessage: [{
|
|
702
|
-
"type": 0,
|
|
703
|
-
"value": "Menu"
|
|
704
|
-
}]
|
|
705
|
-
}),
|
|
706
|
-
className: styles$c.menuButton,
|
|
707
|
-
onClick: onClickMenu
|
|
708
|
-
})) : null, closeable ? /*#__PURE__*/React__default["default"].createElement("li", {
|
|
709
|
-
className: styles$c.closeButton,
|
|
569
|
+
}), closeable ? /*#__PURE__*/React__default["default"].createElement("li", {
|
|
570
|
+
className: styles$b.closeButton,
|
|
710
571
|
style: {
|
|
711
572
|
color: primary
|
|
712
573
|
}
|
|
713
574
|
}, /*#__PURE__*/React__default["default"].createElement("button", {
|
|
714
575
|
type: "button",
|
|
715
|
-
className: styles$
|
|
576
|
+
className: styles$b.closeButton,
|
|
716
577
|
onClick: onClose,
|
|
717
578
|
title: intl.formatMessage({
|
|
718
579
|
id: "dj/p/q",
|
|
@@ -733,64 +594,159 @@ var ViewerMenuDots = function ViewerMenuDots(_ref) {
|
|
|
733
594
|
}))) : null));
|
|
734
595
|
};
|
|
735
596
|
|
|
736
|
-
ViewerMenuDots.propTypes = propTypes$
|
|
737
|
-
ViewerMenuDots.defaultProps = defaultProps$
|
|
597
|
+
ViewerMenuDots.propTypes = propTypes$g;
|
|
598
|
+
ViewerMenuDots.defaultProps = defaultProps$g;
|
|
738
599
|
|
|
739
|
-
var propTypes$
|
|
600
|
+
var propTypes$f = {
|
|
740
601
|
className: PropTypes__default["default"].string
|
|
741
602
|
};
|
|
742
|
-
var defaultProps$
|
|
603
|
+
var defaultProps$f = {
|
|
743
604
|
className: null
|
|
744
605
|
};
|
|
745
606
|
|
|
746
607
|
var StackIcon = function StackIcon(_ref) {
|
|
747
608
|
var className = _ref.className;
|
|
748
609
|
return /*#__PURE__*/React__default["default"].createElement("svg", {
|
|
749
|
-
xmlns: "http://www.w3.org/2000/svg"
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
610
|
+
xmlns: "http://www.w3.org/2000/svg" // width="32"
|
|
611
|
+
// height="32"
|
|
612
|
+
// viewBox="0 0 32 32"
|
|
613
|
+
,
|
|
614
|
+
width: "11.5",
|
|
615
|
+
height: "17.5",
|
|
616
|
+
viewBox: "0 0 11.5 17.5",
|
|
753
617
|
className: classNames__default["default"]([_defineProperty__default["default"]({}, className, className !== null)])
|
|
754
|
-
}, /*#__PURE__*/React__default["default"].createElement("
|
|
755
|
-
|
|
618
|
+
}, /*#__PURE__*/React__default["default"].createElement("rect", {
|
|
619
|
+
width: "10",
|
|
620
|
+
height: "16"
|
|
621
|
+
}), /*#__PURE__*/React__default["default"].createElement("polygon", {
|
|
622
|
+
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"
|
|
756
623
|
}));
|
|
757
624
|
};
|
|
758
625
|
|
|
759
|
-
StackIcon.propTypes = propTypes$
|
|
760
|
-
StackIcon.defaultProps = defaultProps$
|
|
626
|
+
StackIcon.propTypes = propTypes$f;
|
|
627
|
+
StackIcon.defaultProps = defaultProps$f;
|
|
761
628
|
|
|
762
|
-
var styles$
|
|
629
|
+
var styles$a = {"button":"micromag-viewer-menus-menu-screen-button","container":"micromag-viewer-menus-menu-screen-container","isCurrent":"micromag-viewer-menus-menu-screen-isCurrent","pulse":"micromag-viewer-menus-menu-screen-pulse","inner":"micromag-viewer-menus-menu-screen-inner","subScreenBadge":"micromag-viewer-menus-menu-screen-subScreenBadge","subScreenCount":"micromag-viewer-menus-menu-screen-subScreenCount","subScreenIcon":"micromag-viewer-menus-menu-screen-subScreenIcon"};
|
|
763
630
|
|
|
764
|
-
var propTypes$
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
focusable: PropTypes__default["default"].bool
|
|
771
|
-
shouldLoad: PropTypes__default["default"].bool,
|
|
772
|
-
onClickItem: PropTypes__default["default"].func,
|
|
773
|
-
onClose: PropTypes__default["default"].func,
|
|
774
|
-
maxThumbsWidth: PropTypes__default["default"].number,
|
|
775
|
-
toggleFullscreen: PropTypes__default["default"].func,
|
|
776
|
-
fullscreenActive: PropTypes__default["default"].bool,
|
|
777
|
-
fullscreenEnabled: PropTypes__default["default"].bool,
|
|
778
|
-
className: PropTypes__default["default"].string
|
|
631
|
+
var propTypes$e = {
|
|
632
|
+
className: PropTypes__default["default"].string,
|
|
633
|
+
item: core.PropTypes.menuItem,
|
|
634
|
+
index: PropTypes__default["default"].number,
|
|
635
|
+
onClick: PropTypes__default["default"].func,
|
|
636
|
+
screenSize: core.PropTypes.screenSize,
|
|
637
|
+
focusable: PropTypes__default["default"].bool
|
|
779
638
|
};
|
|
780
|
-
var defaultProps$
|
|
781
|
-
|
|
639
|
+
var defaultProps$e = {
|
|
640
|
+
className: null,
|
|
641
|
+
item: core.PropTypes.menuItem,
|
|
642
|
+
index: 0,
|
|
643
|
+
onClick: null,
|
|
782
644
|
screenSize: null,
|
|
783
|
-
|
|
784
|
-
|
|
645
|
+
focusable: true
|
|
646
|
+
};
|
|
647
|
+
|
|
648
|
+
var ViewerMenuScreen = function ViewerMenuScreen(_ref) {
|
|
649
|
+
var _ref4;
|
|
650
|
+
|
|
651
|
+
var className = _ref.className,
|
|
652
|
+
item = _ref.item,
|
|
653
|
+
index = _ref.index,
|
|
654
|
+
_onClick = _ref.onClick,
|
|
655
|
+
screenSize = _ref.screenSize,
|
|
656
|
+
focusable = _ref.focusable;
|
|
657
|
+
var intl = reactIntl.useIntl();
|
|
658
|
+
|
|
659
|
+
var _ref2 = item || {},
|
|
660
|
+
_ref2$current = _ref2.current,
|
|
661
|
+
current = _ref2$current === void 0 ? false : _ref2$current,
|
|
662
|
+
screen = _ref2.screen,
|
|
663
|
+
_ref2$count = _ref2.count,
|
|
664
|
+
count = _ref2$count === void 0 ? 1 : _ref2$count;
|
|
665
|
+
|
|
666
|
+
var _ref3 = screenSize || {},
|
|
667
|
+
screenWidth = _ref3.width,
|
|
668
|
+
screenHeight = _ref3.height;
|
|
669
|
+
|
|
670
|
+
var screenAriaLabel = "".concat(intl.formatMessage({
|
|
671
|
+
id: "LkVfwW",
|
|
672
|
+
defaultMessage: [{
|
|
673
|
+
"type": 0,
|
|
674
|
+
"value": "Screen "
|
|
675
|
+
}, {
|
|
676
|
+
"type": 1,
|
|
677
|
+
"value": "index"
|
|
678
|
+
}]
|
|
679
|
+
}, {
|
|
680
|
+
index: index + 1
|
|
681
|
+
})).concat(current ? " ".concat(intl.formatMessage({
|
|
682
|
+
id: "vmrJ8U",
|
|
683
|
+
defaultMessage: [{
|
|
684
|
+
"type": 0,
|
|
685
|
+
"value": "(current screen)"
|
|
686
|
+
}]
|
|
687
|
+
})) : '');
|
|
688
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
689
|
+
className: classNames__default["default"]([styles$a.container, (_ref4 = {}, _defineProperty__default["default"](_ref4, className, className !== null), _defineProperty__default["default"](_ref4, styles$a.isCurrent, current), _ref4)])
|
|
690
|
+
}, /*#__PURE__*/React__default["default"].createElement("button", {
|
|
691
|
+
type: "button",
|
|
692
|
+
className: styles$a.button,
|
|
693
|
+
onClick: function onClick() {
|
|
694
|
+
if (_onClick !== null) {
|
|
695
|
+
_onClick(item);
|
|
696
|
+
}
|
|
697
|
+
},
|
|
698
|
+
"aria-label": screenAriaLabel,
|
|
699
|
+
tabIndex: focusable ? '0' : '-1'
|
|
700
|
+
}), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
701
|
+
className: styles$a.inner
|
|
702
|
+
}, count > 1 ? /*#__PURE__*/React__default["default"].createElement("div", {
|
|
703
|
+
className: styles$a.subScreenBadge
|
|
704
|
+
}, /*#__PURE__*/React__default["default"].createElement("span", {
|
|
705
|
+
className: styles$a.subScreenCount
|
|
706
|
+
}, count), /*#__PURE__*/React__default["default"].createElement(StackIcon, {
|
|
707
|
+
className: styles$a.subScreenIcon
|
|
708
|
+
})) : null, screenWidth > 0 && screenHeight > 0 ? /*#__PURE__*/React__default["default"].createElement(components.ScreenPreview, {
|
|
709
|
+
className: styles$a.screen,
|
|
710
|
+
screenWidth: screenWidth,
|
|
711
|
+
screenHeight: screenHeight,
|
|
712
|
+
screen: screen,
|
|
713
|
+
focusable: focusable,
|
|
714
|
+
active: focusable,
|
|
715
|
+
withSize: true
|
|
716
|
+
}) : null));
|
|
717
|
+
};
|
|
718
|
+
|
|
719
|
+
ViewerMenuScreen.propTypes = propTypes$e;
|
|
720
|
+
ViewerMenuScreen.defaultProps = defaultProps$e;
|
|
721
|
+
|
|
722
|
+
var styles$9 = {"scroll":"micromag-viewer-menus-menu-preview-scroll","container":"micromag-viewer-menus-menu-preview-container","disabled":"micromag-viewer-menus-menu-preview-disabled","screenButton":"micromag-viewer-menus-menu-preview-screenButton","buttons":"micromag-viewer-menus-menu-preview-buttons","organisation":"micromag-viewer-menus-menu-preview-organisation","icon":"micromag-viewer-menus-menu-preview-icon","title":"micromag-viewer-menus-menu-preview-title","content":"micromag-viewer-menus-menu-preview-content","nav":"micromag-viewer-menus-menu-preview-nav","item":"micromag-viewer-menus-menu-preview-item","items":"micromag-viewer-menus-menu-preview-items"};
|
|
723
|
+
|
|
724
|
+
var propTypes$d = {
|
|
725
|
+
viewerTheme: core.PropTypes.viewerTheme,
|
|
726
|
+
screenSize: core.PropTypes.screenSize,
|
|
727
|
+
menuWidth: PropTypes__default["default"].number,
|
|
728
|
+
items: core.PropTypes.menuItems,
|
|
729
|
+
focusable: PropTypes__default["default"].bool,
|
|
730
|
+
onClickScreen: PropTypes__default["default"].func,
|
|
731
|
+
maxThumbsWidth: PropTypes__default["default"].number,
|
|
732
|
+
// shouldLoad: PropTypes.bool, // @todo still needed? to re-implement?
|
|
733
|
+
// toggleFullscreen: PropTypes.func,
|
|
734
|
+
// fullscreenActive: PropTypes.bool,
|
|
735
|
+
// fullscreenEnabled: PropTypes.bool,
|
|
736
|
+
className: PropTypes__default["default"].string
|
|
737
|
+
};
|
|
738
|
+
var defaultProps$d = {
|
|
739
|
+
viewerTheme: null,
|
|
740
|
+
screenSize: null,
|
|
741
|
+
menuWidth: null,
|
|
785
742
|
items: [],
|
|
786
743
|
focusable: true,
|
|
787
|
-
shouldLoad: true,
|
|
788
|
-
|
|
789
|
-
onClose: null,
|
|
744
|
+
// shouldLoad: true,
|
|
745
|
+
onClickScreen: null,
|
|
790
746
|
maxThumbsWidth: 140,
|
|
791
|
-
toggleFullscreen: null,
|
|
792
|
-
fullscreenActive: false,
|
|
793
|
-
fullscreenEnabled: false,
|
|
747
|
+
// toggleFullscreen: null,
|
|
748
|
+
// fullscreenActive: false,
|
|
749
|
+
// fullscreenEnabled: false,
|
|
794
750
|
className: null
|
|
795
751
|
};
|
|
796
752
|
|
|
@@ -798,259 +754,313 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
|
|
|
798
754
|
var viewerTheme = _ref.viewerTheme,
|
|
799
755
|
screenSize = _ref.screenSize,
|
|
800
756
|
menuWidth = _ref.menuWidth,
|
|
801
|
-
title = _ref.title,
|
|
802
757
|
items = _ref.items,
|
|
803
758
|
focusable = _ref.focusable,
|
|
804
|
-
|
|
805
|
-
onClose = _ref.onClose,
|
|
759
|
+
onClickScreen = _ref.onClickScreen,
|
|
806
760
|
maxThumbsWidth = _ref.maxThumbsWidth,
|
|
807
|
-
toggleFullscreen = _ref.toggleFullscreen,
|
|
808
|
-
fullscreenActive = _ref.fullscreenActive,
|
|
809
|
-
fullscreenEnabled = _ref.fullscreenEnabled,
|
|
810
761
|
className = _ref.className;
|
|
811
|
-
var intl = reactIntl.useIntl();
|
|
812
|
-
|
|
813
|
-
var _ref2 = screenSize || {},
|
|
814
|
-
screenWidth = _ref2.width,
|
|
815
|
-
screenHeight = _ref2.height;
|
|
816
762
|
|
|
817
763
|
var _useDimensionObserver = hooks.useDimensionObserver(),
|
|
818
|
-
|
|
764
|
+
containerRef = _useDimensionObserver.ref,
|
|
819
765
|
_useDimensionObserver2 = _useDimensionObserver.width,
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
var _useDimensionObserver3 = hooks.useDimensionObserver(),
|
|
823
|
-
containerRef = _useDimensionObserver3.ref,
|
|
824
|
-
_useDimensionObserver4 = _useDimensionObserver3.width,
|
|
825
|
-
contentWidth = _useDimensionObserver4 === void 0 ? 0 : _useDimensionObserver4;
|
|
766
|
+
contentWidth = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2;
|
|
826
767
|
|
|
827
768
|
var thumbsPerLine = Math.max(Math.floor(contentWidth / maxThumbsWidth), 3); // Viewer theme
|
|
769
|
+
// @todo room for improvement here probably
|
|
770
|
+
// @todo also re-implement!!
|
|
828
771
|
|
|
829
|
-
var
|
|
830
|
-
|
|
831
|
-
colors =
|
|
832
|
-
|
|
833
|
-
background =
|
|
834
|
-
|
|
835
|
-
textStyles = _ref3$textStyles === void 0 ? null : _ref3$textStyles,
|
|
836
|
-
_ref3$logo = _ref3.logo,
|
|
837
|
-
brandLogo = _ref3$logo === void 0 ? null : _ref3$logo;
|
|
838
|
-
|
|
839
|
-
var _ref4 = textStyles || {},
|
|
840
|
-
_ref4$title = _ref4.title,
|
|
841
|
-
brandTextStyle = _ref4$title === void 0 ? null : _ref4$title;
|
|
772
|
+
var _ref2 = viewerTheme || {},
|
|
773
|
+
_ref2$colors = _ref2.colors,
|
|
774
|
+
colors = _ref2$colors === void 0 ? null : _ref2$colors,
|
|
775
|
+
_ref2$background = _ref2.background,
|
|
776
|
+
background = _ref2$background === void 0 ? null : _ref2$background;
|
|
777
|
+
_ref2.logo;
|
|
842
778
|
|
|
843
|
-
var
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
_ref5$secondary = _ref5.secondary,
|
|
847
|
-
brandSecondaryColor = _ref5$secondary === void 0 ? null : _ref5$secondary;
|
|
779
|
+
var _ref3 = colors || {};
|
|
780
|
+
_ref3.primary;
|
|
781
|
+
_ref3.secondary;
|
|
848
782
|
|
|
849
|
-
var
|
|
850
|
-
|
|
851
|
-
brandBackgroundColor =
|
|
852
|
-
|
|
853
|
-
image =
|
|
783
|
+
var _ref4 = background || {},
|
|
784
|
+
_ref4$color = _ref4.color,
|
|
785
|
+
brandBackgroundColor = _ref4$color === void 0 ? null : _ref4$color,
|
|
786
|
+
_ref4$image = _ref4.image,
|
|
787
|
+
image = _ref4$image === void 0 ? null : _ref4$image;
|
|
854
788
|
|
|
855
|
-
var
|
|
856
|
-
|
|
857
|
-
brandImageUrl =
|
|
789
|
+
var _ref5 = image || {},
|
|
790
|
+
_ref5$url = _ref5.url,
|
|
791
|
+
brandImageUrl = _ref5$url === void 0 ? null : _ref5$url; // const borderPrimaryColorStyle = getStyleFromColor(brandPrimaryColor, 'borderColor');
|
|
792
|
+
// const colorSecondaryColorStyle = getStyleFromColor(brandSecondaryColor, 'color');
|
|
858
793
|
|
|
859
|
-
var borderPrimaryColorStyle = utils.getStyleFromColor(brandPrimaryColor, 'borderColor');
|
|
860
|
-
var colorSecondaryColorStyle = utils.getStyleFromColor(brandSecondaryColor, 'color');
|
|
861
|
-
var backgroundColorStyle = utils.getStyleFromColor(brandBackgroundColor, 'backgroundColor');
|
|
862
794
|
|
|
863
|
-
var
|
|
864
|
-
_ref8$url = _ref8.url,
|
|
865
|
-
brandLogoUrl = _ref8$url === void 0 ? null : _ref8$url;
|
|
795
|
+
var backgroundColorStyle = utils.getStyleFromColor(brandBackgroundColor, 'backgroundColor'); // const { url: brandLogoUrl = null } = brandLogo || {};
|
|
866
796
|
|
|
867
797
|
var brandImageStyle = brandImageUrl !== null ? {
|
|
868
798
|
backgroundImage: "url(".concat(brandImageUrl, ")")
|
|
869
|
-
} : null;
|
|
870
|
-
var titleStyle = brandTextStyle !== null ? utils.getStyleFromText(brandTextStyle) : null;
|
|
799
|
+
} : null; // @todo could probably use some work to avoid the visual jump from 3 screens to all of them
|
|
871
800
|
|
|
872
|
-
var _useState = React.useState(false),
|
|
873
|
-
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
874
|
-
scrolledBottom = _useState2[0],
|
|
875
|
-
setScrolledBottom = _useState2[1];
|
|
876
|
-
|
|
877
|
-
var dragBind = react.useDrag(function (_ref9) {
|
|
878
|
-
var _ref9$direction = _slicedToArray__default["default"](_ref9.direction, 2),
|
|
879
|
-
dy = _ref9$direction[1],
|
|
880
|
-
last = _ref9.last,
|
|
881
|
-
tap = _ref9.tap;
|
|
882
|
-
|
|
883
|
-
if (!tap && last && scrolledBottom && dy < 0 && onClose !== null) {
|
|
884
|
-
onClose();
|
|
885
|
-
}
|
|
886
|
-
}, {
|
|
887
|
-
filterTaps: true,
|
|
888
|
-
eventOptions: {
|
|
889
|
-
capture: true
|
|
890
|
-
}
|
|
891
|
-
});
|
|
892
|
-
var onScrolledBottom = React.useCallback(function () {
|
|
893
|
-
setScrolledBottom(true);
|
|
894
|
-
}, [setScrolledBottom]);
|
|
895
|
-
var onScrolledNotBottom = React.useCallback(function () {
|
|
896
|
-
setScrolledBottom(false);
|
|
897
|
-
}, [setScrolledBottom]);
|
|
898
801
|
var finalItems = React.useMemo(function () {
|
|
899
|
-
return !focusable ? items.
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
802
|
+
return !focusable ? items.map(function (s, i) {
|
|
803
|
+
return i > 3 ? {
|
|
804
|
+
screenId: s.screenId
|
|
805
|
+
} : s;
|
|
806
|
+
}) : items;
|
|
807
|
+
}, [items, focusable]); // @todo bookmarks
|
|
808
|
+
// const bookmarks = finalItems.reduce((acc, it) => {
|
|
809
|
+
// const { screen = null } = it || {};
|
|
810
|
+
// const { bookmark = null } = screen || {};
|
|
811
|
+
// return bookmark !== null ? [...acc, bookmark] : acc; // merge with array or return original array
|
|
812
|
+
// }, []);
|
|
813
|
+
|
|
814
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
815
|
+
className: classNames__default["default"]([styles$9.container, _defineProperty__default["default"]({}, className, className !== null)]),
|
|
903
816
|
style: _objectSpread__default["default"](_objectSpread__default["default"](_objectSpread__default["default"]({}, backgroundColorStyle), brandImageStyle), {}, {
|
|
904
817
|
width: menuWidth
|
|
905
818
|
}),
|
|
906
819
|
"aria-hidden": focusable ? null : 'true'
|
|
907
|
-
},
|
|
908
|
-
className: styles$
|
|
909
|
-
}, brandLogoUrl !== null ? /*#__PURE__*/React__default["default"].createElement("div", {
|
|
910
|
-
className: styles$7.organisation,
|
|
911
|
-
style: {
|
|
912
|
-
backgroundImage: "url(".concat(brandLogoUrl, ")")
|
|
913
|
-
}
|
|
914
|
-
}) : null, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
915
|
-
className: styles$7.title,
|
|
916
|
-
style: titleStyle
|
|
917
|
-
}, title), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
918
|
-
className: styles$7.buttons,
|
|
919
|
-
style: colorSecondaryColorStyle
|
|
920
|
-
}, fullscreenEnabled ? /*#__PURE__*/React__default["default"].createElement(components.Button, {
|
|
921
|
-
className: styles$7.button,
|
|
922
|
-
onClick: toggleFullscreen,
|
|
923
|
-
title: intl.formatMessage({
|
|
924
|
-
id: "AuxqcG",
|
|
925
|
-
defaultMessage: [{
|
|
926
|
-
"type": 0,
|
|
927
|
-
"value": "Fullscreen"
|
|
928
|
-
}]
|
|
929
|
-
}),
|
|
930
|
-
"aria-label": intl.formatMessage({
|
|
931
|
-
id: "AuxqcG",
|
|
932
|
-
defaultMessage: [{
|
|
933
|
-
"type": 0,
|
|
934
|
-
"value": "Fullscreen"
|
|
935
|
-
}]
|
|
936
|
-
}),
|
|
937
|
-
focusable: focusable
|
|
938
|
-
}, /*#__PURE__*/React__default["default"].createElement(reactFontawesome.FontAwesomeIcon, {
|
|
939
|
-
className: styles$7.icon,
|
|
940
|
-
icon: fullscreenActive ? faCompress.faCompress : faExpand.faExpand
|
|
941
|
-
})) : null, /*#__PURE__*/React__default["default"].createElement(components.Button, {
|
|
942
|
-
className: styles$7.button,
|
|
943
|
-
onClick: onClose,
|
|
944
|
-
title: intl.formatMessage({
|
|
945
|
-
id: "dj/p/q",
|
|
946
|
-
defaultMessage: [{
|
|
947
|
-
"type": 0,
|
|
948
|
-
"value": "Close"
|
|
949
|
-
}]
|
|
950
|
-
}),
|
|
951
|
-
"aria-label": intl.formatMessage({
|
|
952
|
-
id: "dj/p/q",
|
|
953
|
-
defaultMessage: [{
|
|
954
|
-
"type": 0,
|
|
955
|
-
"value": "Close"
|
|
956
|
-
}]
|
|
957
|
-
}),
|
|
958
|
-
focusable: focusable
|
|
959
|
-
}, /*#__PURE__*/React__default["default"].createElement(reactFontawesome.FontAwesomeIcon, {
|
|
960
|
-
className: styles$7.icon,
|
|
961
|
-
icon: faTimes.faTimes
|
|
962
|
-
})))), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
963
|
-
className: styles$7.content,
|
|
820
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
821
|
+
className: styles$9.content,
|
|
964
822
|
ref: containerRef
|
|
965
823
|
}, /*#__PURE__*/React__default["default"].createElement(Scroll__default["default"], {
|
|
966
|
-
className: styles$
|
|
967
|
-
onScrolledBottom: onScrolledBottom,
|
|
968
|
-
onScrolledNotBottom: onScrolledNotBottom
|
|
824
|
+
className: styles$9.scroll
|
|
969
825
|
}, /*#__PURE__*/React__default["default"].createElement("nav", {
|
|
970
|
-
className: styles$
|
|
826
|
+
className: styles$9.nav
|
|
971
827
|
}, /*#__PURE__*/React__default["default"].createElement("ul", {
|
|
972
|
-
className: styles$
|
|
828
|
+
className: styles$9.items
|
|
973
829
|
}, finalItems.map(function (item, index) {
|
|
974
|
-
var
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
var screenAriaLabel = "".concat(intl.formatMessage({
|
|
981
|
-
id: "LkVfwW",
|
|
982
|
-
defaultMessage: [{
|
|
983
|
-
"type": 0,
|
|
984
|
-
"value": "Screen "
|
|
985
|
-
}, {
|
|
986
|
-
"type": 1,
|
|
987
|
-
"value": "index"
|
|
988
|
-
}]
|
|
989
|
-
}, {
|
|
990
|
-
index: index + 1
|
|
991
|
-
})).concat(current ? " ".concat(intl.formatMessage({
|
|
992
|
-
id: "vmrJ8U",
|
|
993
|
-
defaultMessage: [{
|
|
994
|
-
"type": 0,
|
|
995
|
-
"value": "(current screen)"
|
|
996
|
-
}]
|
|
997
|
-
})) : '');
|
|
830
|
+
var _ref7 = item || {},
|
|
831
|
+
screenId = _ref7.screenId;
|
|
832
|
+
|
|
833
|
+
var itemStyles = {
|
|
834
|
+
width: "".concat(100 / thumbsPerLine, "%")
|
|
835
|
+
};
|
|
998
836
|
return /*#__PURE__*/React__default["default"].createElement("li", {
|
|
999
|
-
className: classNames__default["default"]([styles$7.item, _defineProperty__default["default"]({}, styles$7.active, current)]),
|
|
1000
837
|
key: "item-".concat(screenId),
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
className: styles$7.subScreenBadge
|
|
1011
|
-
}, /*#__PURE__*/React__default["default"].createElement("span", {
|
|
1012
|
-
className: styles$7.subScreenCount
|
|
1013
|
-
}, count), /*#__PURE__*/React__default["default"].createElement(StackIcon, {
|
|
1014
|
-
className: styles$7.subScreenIcon
|
|
1015
|
-
})) : null, screenWidth > 0 && screenHeight > 0 ? /*#__PURE__*/React__default["default"].createElement(components.ScreenPreview, {
|
|
1016
|
-
screenWidth: screenWidth,
|
|
1017
|
-
screenHeight: screenHeight,
|
|
1018
|
-
width: thumbWidth,
|
|
1019
|
-
screen: screen,
|
|
1020
|
-
focusable: focusable,
|
|
1021
|
-
active: focusable,
|
|
1022
|
-
withSize: true
|
|
1023
|
-
}) : null, current ? /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1024
|
-
className: styles$7.activeScreenBorder,
|
|
1025
|
-
style: borderPrimaryColorStyle
|
|
1026
|
-
}) : null)), /*#__PURE__*/React__default["default"].createElement("button", {
|
|
1027
|
-
type: "button",
|
|
1028
|
-
className: styles$7.screenButton,
|
|
1029
|
-
onClick: function onClick() {
|
|
1030
|
-
if (onClickItem !== null) {
|
|
1031
|
-
onClickItem(item);
|
|
1032
|
-
}
|
|
1033
|
-
},
|
|
1034
|
-
"aria-label": screenAriaLabel,
|
|
1035
|
-
onKeyUp: function onKeyUp(e) {
|
|
1036
|
-
if (e.key === 'Enter' && onClickItem !== null) {
|
|
1037
|
-
onClickItem(item);
|
|
1038
|
-
}
|
|
1039
|
-
},
|
|
1040
|
-
tabIndex: focusable ? '0' : '-1'
|
|
838
|
+
className: styles$9.item,
|
|
839
|
+
style: itemStyles
|
|
840
|
+
}, item === null ? 'loading' : /*#__PURE__*/React__default["default"].createElement(ViewerMenuScreen, {
|
|
841
|
+
className: styles$9.screenPreview,
|
|
842
|
+
item: item,
|
|
843
|
+
index: index,
|
|
844
|
+
screenSize: screenSize,
|
|
845
|
+
onClick: onClickScreen,
|
|
846
|
+
focusable: focusable
|
|
1041
847
|
}));
|
|
1042
848
|
}))))));
|
|
1043
849
|
};
|
|
1044
850
|
|
|
1045
|
-
ViewerMenuPreview.propTypes = propTypes$
|
|
1046
|
-
ViewerMenuPreview.defaultProps = defaultProps$
|
|
851
|
+
ViewerMenuPreview.propTypes = propTypes$d;
|
|
852
|
+
ViewerMenuPreview.defaultProps = defaultProps$d;
|
|
853
|
+
|
|
854
|
+
var styles$8 = {"container":"micromag-viewer-partials-micromag-preview-container","cover":"micromag-viewer-partials-micromag-preview-cover","info":"micromag-viewer-partials-micromag-preview-info","url":"micromag-viewer-partials-micromag-preview-url","title":"micromag-viewer-partials-micromag-preview-title"};
|
|
855
|
+
|
|
856
|
+
var propTypes$c = {
|
|
857
|
+
screen: core.PropTypes.item,
|
|
858
|
+
title: PropTypes__default["default"].string,
|
|
859
|
+
url: PropTypes__default["default"].string,
|
|
860
|
+
description: PropTypes__default["default"].string,
|
|
861
|
+
className: PropTypes__default["default"].string
|
|
862
|
+
};
|
|
863
|
+
var defaultProps$c = {
|
|
864
|
+
screen: null,
|
|
865
|
+
title: null,
|
|
866
|
+
url: null,
|
|
867
|
+
description: null,
|
|
868
|
+
className: null
|
|
869
|
+
};
|
|
870
|
+
|
|
871
|
+
var MicromagPreview = function MicromagPreview(_ref) {
|
|
872
|
+
var screen = _ref.screen,
|
|
873
|
+
title = _ref.title,
|
|
874
|
+
url = _ref.url,
|
|
875
|
+
description = _ref.description,
|
|
876
|
+
className = _ref.className;
|
|
877
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
878
|
+
className: classNames__default["default"]([styles$8.container, _defineProperty__default["default"]({}, className, className)])
|
|
879
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
880
|
+
className: styles$8.cover
|
|
881
|
+
}, /*#__PURE__*/React__default["default"].createElement(components.ScreenPreview, {
|
|
882
|
+
screen: screen,
|
|
883
|
+
width: 100,
|
|
884
|
+
height: 150,
|
|
885
|
+
withSize: true
|
|
886
|
+
})), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
887
|
+
className: styles$8.info
|
|
888
|
+
}, /*#__PURE__*/React__default["default"].createElement("h3", {
|
|
889
|
+
className: styles$8.title
|
|
890
|
+
}, title), url ? /*#__PURE__*/React__default["default"].createElement("div", {
|
|
891
|
+
className: styles$8.url
|
|
892
|
+
}, url) : null, /*#__PURE__*/React__default["default"].createElement("p", null, description)));
|
|
893
|
+
};
|
|
1047
894
|
|
|
1048
|
-
|
|
895
|
+
MicromagPreview.propTypes = propTypes$c;
|
|
896
|
+
MicromagPreview.defaultProps = defaultProps$c;
|
|
897
|
+
|
|
898
|
+
var styles$7 = {"scroll":"micromag-viewer-menus-menu-share-scroll","container":"micromag-viewer-menus-menu-share-container","disabled":"micromag-viewer-menus-menu-share-disabled","screenButton":"micromag-viewer-menus-menu-share-screenButton","organisation":"micromag-viewer-menus-menu-share-organisation","icon":"micromag-viewer-menus-menu-share-icon","header":"micromag-viewer-menus-menu-share-header","mode":"micromag-viewer-menus-menu-share-mode","bump":"micromag-viewer-menus-menu-share-bump","options":"micromag-viewer-menus-menu-share-options","optionButton":"micromag-viewer-menus-menu-share-optionButton","content":"micromag-viewer-menus-menu-share-content"};
|
|
899
|
+
|
|
900
|
+
var propTypes$b = {
|
|
901
|
+
viewerTheme: core.PropTypes.viewerTheme,
|
|
902
|
+
menuWidth: PropTypes__default["default"].number,
|
|
903
|
+
title: PropTypes__default["default"].string,
|
|
904
|
+
description: PropTypes__default["default"].string,
|
|
905
|
+
items: core.PropTypes.menuItems,
|
|
906
|
+
focusable: PropTypes__default["default"].bool,
|
|
907
|
+
// shouldLoad: PropTypes.bool, // @todo still needed? to re-implement?
|
|
908
|
+
currentScreenIndex: PropTypes__default["default"].number,
|
|
909
|
+
shareUrl: PropTypes__default["default"].string,
|
|
910
|
+
onShare: PropTypes__default["default"].func,
|
|
911
|
+
className: PropTypes__default["default"].string
|
|
912
|
+
};
|
|
913
|
+
var defaultProps$b = {
|
|
914
|
+
viewerTheme: null,
|
|
915
|
+
menuWidth: null,
|
|
916
|
+
title: null,
|
|
917
|
+
description: null,
|
|
918
|
+
items: [],
|
|
919
|
+
focusable: true,
|
|
920
|
+
currentScreenIndex: 0,
|
|
921
|
+
shareUrl: null,
|
|
922
|
+
onShare: null,
|
|
923
|
+
className: null
|
|
924
|
+
};
|
|
925
|
+
|
|
926
|
+
var ViewerMenuShare = function ViewerMenuShare(_ref) {
|
|
927
|
+
var viewerTheme = _ref.viewerTheme,
|
|
928
|
+
menuWidth = _ref.menuWidth,
|
|
929
|
+
title = _ref.title,
|
|
930
|
+
description = _ref.description,
|
|
931
|
+
items = _ref.items,
|
|
932
|
+
focusable = _ref.focusable,
|
|
933
|
+
currentScreenIndex = _ref.currentScreenIndex,
|
|
934
|
+
shareUrl = _ref.shareUrl,
|
|
935
|
+
onShare = _ref.onShare,
|
|
936
|
+
className = _ref.className;
|
|
937
|
+
|
|
938
|
+
// Viewer theme
|
|
939
|
+
// @todo room for improvement here probably
|
|
940
|
+
var _ref2 = viewerTheme || {},
|
|
941
|
+
_ref2$colors = _ref2.colors,
|
|
942
|
+
colors = _ref2$colors === void 0 ? null : _ref2$colors,
|
|
943
|
+
_ref2$background = _ref2.background,
|
|
944
|
+
background = _ref2$background === void 0 ? null : _ref2$background;
|
|
945
|
+
_ref2.logo;
|
|
946
|
+
// @todo could get from theme provider? need to re-implement
|
|
947
|
+
|
|
948
|
+
|
|
949
|
+
var _ref3 = colors || {};
|
|
950
|
+
_ref3.primary;
|
|
951
|
+
_ref3.secondary;
|
|
952
|
+
|
|
953
|
+
var _ref4 = background || {},
|
|
954
|
+
_ref4$color = _ref4.color,
|
|
955
|
+
brandBackgroundColor = _ref4$color === void 0 ? null : _ref4$color,
|
|
956
|
+
_ref4$image = _ref4.image,
|
|
957
|
+
image = _ref4$image === void 0 ? null : _ref4$image;
|
|
958
|
+
|
|
959
|
+
var _ref5 = image || {},
|
|
960
|
+
_ref5$url = _ref5.url,
|
|
961
|
+
brandImageUrl = _ref5$url === void 0 ? null : _ref5$url; // const borderPrimaryColorStyle = getStyleFromColor(brandPrimaryColor, 'borderColor');
|
|
962
|
+
// const colorSecondaryColorStyle = getStyleFromColor(brandSecondaryColor, 'color');
|
|
963
|
+
|
|
964
|
+
|
|
965
|
+
var backgroundColorStyle = utils.getStyleFromColor(brandBackgroundColor, 'backgroundColor'); // const { url: brandLogoUrl = null } = brandLogo || {};
|
|
966
|
+
|
|
967
|
+
var brandImageStyle = brandImageUrl !== null ? {
|
|
968
|
+
backgroundImage: "url(".concat(brandImageUrl, ")")
|
|
969
|
+
} : null;
|
|
970
|
+
var coverScreen = React.useMemo(function () {
|
|
971
|
+
var _ref6 = items[0] || {},
|
|
972
|
+
_ref6$screen = _ref6.screen,
|
|
973
|
+
screen = _ref6$screen === void 0 ? null : _ref6$screen;
|
|
974
|
+
|
|
975
|
+
return screen;
|
|
976
|
+
}, [items]);
|
|
977
|
+
var currentScreen = React.useMemo(function () {
|
|
978
|
+
var found = items.find(function (item) {
|
|
979
|
+
var _ref7 = item || {},
|
|
980
|
+
_ref7$current = _ref7.current,
|
|
981
|
+
current = _ref7$current === void 0 ? false : _ref7$current;
|
|
982
|
+
|
|
983
|
+
return current;
|
|
984
|
+
});
|
|
985
|
+
|
|
986
|
+
var _ref8 = found || {},
|
|
987
|
+
_ref8$screen = _ref8.screen,
|
|
988
|
+
screen = _ref8$screen === void 0 ? null : _ref8$screen;
|
|
989
|
+
|
|
990
|
+
return screen;
|
|
991
|
+
}, [items, currentScreenIndex, focusable]);
|
|
992
|
+
|
|
993
|
+
var _useState = React.useState(false),
|
|
994
|
+
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
995
|
+
shareCurrentScreen = _useState2[0],
|
|
996
|
+
setShareCurrentScreen = _useState2[1];
|
|
997
|
+
|
|
998
|
+
var onShareModeChange = React.useCallback(function () {
|
|
999
|
+
setShareCurrentScreen(function (value) {
|
|
1000
|
+
return !value;
|
|
1001
|
+
});
|
|
1002
|
+
}, [setShareCurrentScreen]);
|
|
1003
|
+
|
|
1004
|
+
var _useState3 = React.useState(shareUrl),
|
|
1005
|
+
_useState4 = _slicedToArray__default["default"](_useState3, 2),
|
|
1006
|
+
finalShareUrl = _useState4[0],
|
|
1007
|
+
setFinalShareUrl = _useState4[1];
|
|
1008
|
+
|
|
1009
|
+
React.useEffect(function () {
|
|
1010
|
+
setFinalShareUrl(shareCurrentScreen && currentScreenIndex !== 0 ? "".concat(shareUrl, "/").concat(currentScreenIndex) : shareUrl);
|
|
1011
|
+
}, [shareCurrentScreen, currentScreenIndex, setFinalShareUrl]);
|
|
1012
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1013
|
+
className: classNames__default["default"]([styles$7.container, _defineProperty__default["default"]({}, className, className !== null)]),
|
|
1014
|
+
style: _objectSpread__default["default"](_objectSpread__default["default"](_objectSpread__default["default"]({}, backgroundColorStyle), brandImageStyle), {}, {
|
|
1015
|
+
width: menuWidth
|
|
1016
|
+
}),
|
|
1017
|
+
"aria-hidden": focusable ? null : 'true'
|
|
1018
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1019
|
+
className: styles$7.content
|
|
1020
|
+
}, /*#__PURE__*/React__default["default"].createElement(Scroll__default["default"], {
|
|
1021
|
+
className: styles$7.scroll
|
|
1022
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1023
|
+
className: styles$7.header
|
|
1024
|
+
}, /*#__PURE__*/React__default["default"].createElement(MicromagPreview, {
|
|
1025
|
+
className: styles$7.preview,
|
|
1026
|
+
screen: shareCurrentScreen ? currentScreen : coverScreen,
|
|
1027
|
+
title: title,
|
|
1028
|
+
url: finalShareUrl,
|
|
1029
|
+
description: description
|
|
1030
|
+
}), currentScreenIndex !== 0 ? /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1031
|
+
className: styles$7.mode
|
|
1032
|
+
}, /*#__PURE__*/React__default["default"].createElement("label", null, /*#__PURE__*/React__default["default"].createElement("input", {
|
|
1033
|
+
type: "checkbox",
|
|
1034
|
+
name: "currentScreen",
|
|
1035
|
+
value: "currentScreen",
|
|
1036
|
+
onChange: onShareModeChange,
|
|
1037
|
+
checked: shareCurrentScreen
|
|
1038
|
+
}), /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
|
|
1039
|
+
id: "xuPbeq",
|
|
1040
|
+
defaultMessage: [{
|
|
1041
|
+
"type": 0,
|
|
1042
|
+
"value": "Start from the current screen"
|
|
1043
|
+
}]
|
|
1044
|
+
}))) : null), /*#__PURE__*/React__default["default"].createElement(ShareOptions__default["default"], {
|
|
1045
|
+
className: styles$7.options,
|
|
1046
|
+
itemClassName: styles$7.optionItem,
|
|
1047
|
+
buttonClassName: styles$7.optionButton,
|
|
1048
|
+
title: title,
|
|
1049
|
+
url: finalShareUrl,
|
|
1050
|
+
focusable: focusable,
|
|
1051
|
+
onShare: onShare,
|
|
1052
|
+
shareCurrentScreen: shareCurrentScreen
|
|
1053
|
+
}))));
|
|
1054
|
+
};
|
|
1055
|
+
|
|
1056
|
+
ViewerMenuShare.propTypes = propTypes$b;
|
|
1057
|
+
ViewerMenuShare.defaultProps = defaultProps$b;
|
|
1058
|
+
|
|
1059
|
+
var styles$6 = {"container":"micromag-viewer-container","screenContainer":"micromag-viewer-screenContainer","screensFrame":"micromag-viewer-screensFrame","landscape":"micromag-viewer-landscape","hideMenu":"micromag-viewer-hideMenu","menuNavContainer":"micromag-viewer-menuNavContainer","dots":"micromag-viewer-dots","menuTopContainer":"micromag-viewer-menuTopContainer","content":"micromag-viewer-content","fadeMenu":"micromag-viewer-fadeMenu","withShadow":"micromag-viewer-withShadow","isOpened":"micromag-viewer-isOpened","menuItem":"micromag-viewer-menuItem","menuScreens":"micromag-viewer-menuScreens","slidingButton":"micromag-viewer-slidingButton","menuButton":"micromag-viewer-menuButton","isHidden":"micromag-viewer-isHidden","navButton":"micromag-viewer-navButton","previous":"micromag-viewer-previous","next":"micromag-viewer-next","isDragging":"micromag-viewer-isDragging","withoutGestures":"micromag-viewer-withoutGestures","screen":"micromag-viewer-screen","current":"micromag-viewer-current","playbackControls":"micromag-viewer-playbackControls","webView":"micromag-viewer-webView"};
|
|
1049
1060
|
|
|
1050
1061
|
var propTypes$a = {
|
|
1051
|
-
story: core
|
|
1062
|
+
story: core.PropTypes.story.isRequired,
|
|
1052
1063
|
currentScreenIndex: PropTypes__default["default"].number,
|
|
1053
|
-
opened: PropTypes__default["default"].bool,
|
|
1054
1064
|
toggleFullscreen: PropTypes__default["default"].func,
|
|
1055
1065
|
fullscreenActive: PropTypes__default["default"].bool,
|
|
1056
1066
|
fullscreenEnabled: PropTypes__default["default"].bool,
|
|
@@ -1058,14 +1068,13 @@ var propTypes$a = {
|
|
|
1058
1068
|
withShadow: PropTypes__default["default"].bool,
|
|
1059
1069
|
trackingEnabled: PropTypes__default["default"].bool,
|
|
1060
1070
|
shareBasePath: PropTypes__default["default"].string,
|
|
1061
|
-
theme: core
|
|
1062
|
-
screenSize: core
|
|
1071
|
+
theme: core.PropTypes.viewerTheme,
|
|
1072
|
+
screenSize: core.PropTypes.screenSize,
|
|
1063
1073
|
menuWidth: PropTypes__default["default"].number,
|
|
1064
1074
|
withDotItemClick: PropTypes__default["default"].bool,
|
|
1065
1075
|
withoutScreensMenu: PropTypes__default["default"].bool,
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
onClickItem: PropTypes__default["default"].func,
|
|
1076
|
+
withoutShareMenu: PropTypes__default["default"].bool,
|
|
1077
|
+
onClickScreen: PropTypes__default["default"].func,
|
|
1069
1078
|
onClickMenu: PropTypes__default["default"].func,
|
|
1070
1079
|
onClickCloseViewer: PropTypes__default["default"].func,
|
|
1071
1080
|
refDots: PropTypes__default["default"].shape({
|
|
@@ -1075,7 +1084,6 @@ var propTypes$a = {
|
|
|
1075
1084
|
};
|
|
1076
1085
|
var defaultProps$a = {
|
|
1077
1086
|
currentScreenIndex: 0,
|
|
1078
|
-
opened: false,
|
|
1079
1087
|
toggleFullscreen: null,
|
|
1080
1088
|
fullscreenActive: false,
|
|
1081
1089
|
fullscreenEnabled: false,
|
|
@@ -1088,18 +1096,18 @@ var defaultProps$a = {
|
|
|
1088
1096
|
menuWidth: null,
|
|
1089
1097
|
withDotItemClick: false,
|
|
1090
1098
|
withoutScreensMenu: false,
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
onClickItem: null,
|
|
1099
|
+
withoutShareMenu: false,
|
|
1100
|
+
onClickScreen: null,
|
|
1094
1101
|
onClickMenu: null,
|
|
1095
1102
|
onClickCloseViewer: null,
|
|
1096
1103
|
refDots: null
|
|
1097
1104
|
};
|
|
1098
1105
|
|
|
1099
1106
|
var ViewerMenu = function ViewerMenu(_ref) {
|
|
1107
|
+
var _ref9;
|
|
1108
|
+
|
|
1100
1109
|
var story = _ref.story,
|
|
1101
1110
|
currentScreenIndex = _ref.currentScreenIndex,
|
|
1102
|
-
opened = _ref.opened,
|
|
1103
1111
|
toggleFullscreen = _ref.toggleFullscreen,
|
|
1104
1112
|
fullscreenActive = _ref.fullscreenActive,
|
|
1105
1113
|
fullscreenEnabled = _ref.fullscreenEnabled,
|
|
@@ -1112,23 +1120,43 @@ var ViewerMenu = function ViewerMenu(_ref) {
|
|
|
1112
1120
|
menuWidth = _ref.menuWidth,
|
|
1113
1121
|
withDotItemClick = _ref.withDotItemClick,
|
|
1114
1122
|
withoutScreensMenu = _ref.withoutScreensMenu,
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
onClickCloseViewer = _ref.onClickCloseViewer,
|
|
1123
|
+
withoutShareMenu = _ref.withoutShareMenu,
|
|
1124
|
+
customOnClickScreen = _ref.onClickScreen;
|
|
1125
|
+
_ref.onClickMenu;
|
|
1126
|
+
var onClickCloseViewer = _ref.onClickCloseViewer,
|
|
1120
1127
|
refDots = _ref.refDots;
|
|
1121
1128
|
var _story$components = story.components,
|
|
1122
1129
|
screens = _story$components === void 0 ? [] : _story$components,
|
|
1123
1130
|
_story$title = story.title,
|
|
1124
|
-
title = _story$title === void 0 ? null : _story$title
|
|
1131
|
+
title = _story$title === void 0 ? null : _story$title,
|
|
1132
|
+
_story$metadata = story.metadata,
|
|
1133
|
+
metadata = _story$metadata === void 0 ? null : _story$metadata;
|
|
1134
|
+
|
|
1135
|
+
var _ref2 = metadata || {},
|
|
1136
|
+
_ref2$description = _ref2.description,
|
|
1137
|
+
description = _ref2$description === void 0 ? null : _ref2$description;
|
|
1138
|
+
|
|
1125
1139
|
var currentScreen = screens !== null ? screens[currentScreenIndex] || null : null;
|
|
1126
1140
|
|
|
1127
|
-
var
|
|
1128
|
-
|
|
1129
|
-
screenId =
|
|
1130
|
-
|
|
1131
|
-
screenType =
|
|
1141
|
+
var _ref3 = currentScreen || {},
|
|
1142
|
+
_ref3$id = _ref3.id,
|
|
1143
|
+
screenId = _ref3$id === void 0 ? null : _ref3$id,
|
|
1144
|
+
_ref3$type = _ref3.type,
|
|
1145
|
+
screenType = _ref3$type === void 0 ? null : _ref3$type;
|
|
1146
|
+
|
|
1147
|
+
var _ref4 = viewerTheme || {},
|
|
1148
|
+
_ref4$menuTheme = _ref4.menuTheme,
|
|
1149
|
+
menuTheme = _ref4$menuTheme === void 0 ? null : _ref4$menuTheme;
|
|
1150
|
+
|
|
1151
|
+
var _useState = React.useState(false),
|
|
1152
|
+
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
1153
|
+
menuOpened = _useState2[0],
|
|
1154
|
+
setMenuOpened = _useState2[1];
|
|
1155
|
+
|
|
1156
|
+
var _useState3 = React.useState(false),
|
|
1157
|
+
_useState4 = _slicedToArray__default["default"](_useState3, 2),
|
|
1158
|
+
shareOpened = _useState4[0],
|
|
1159
|
+
setShareOpened = _useState4[1];
|
|
1132
1160
|
|
|
1133
1161
|
var items = React.useMemo(function () {
|
|
1134
1162
|
return screens.map(function (it) {
|
|
@@ -1149,9 +1177,9 @@ var ViewerMenu = function ViewerMenu(_ref) {
|
|
|
1149
1177
|
count: children.length + 1 || 1,
|
|
1150
1178
|
subIndex: subIndex || 0
|
|
1151
1179
|
};
|
|
1152
|
-
}).filter(function (
|
|
1153
|
-
var
|
|
1154
|
-
visible =
|
|
1180
|
+
}).filter(function (_ref5) {
|
|
1181
|
+
var _ref5$visible = _ref5.visible,
|
|
1182
|
+
visible = _ref5$visible === void 0 ? true : _ref5$visible;
|
|
1155
1183
|
return visible;
|
|
1156
1184
|
});
|
|
1157
1185
|
}, [screens, screenId]);
|
|
@@ -1166,160 +1194,223 @@ var ViewerMenu = function ViewerMenu(_ref) {
|
|
|
1166
1194
|
}
|
|
1167
1195
|
}, [trackEvent, screenId, currentScreenIndex, screenType]);
|
|
1168
1196
|
var shareUrl = React.useMemo(function () {
|
|
1169
|
-
|
|
1170
|
-
|
|
1197
|
+
// @todo validate this
|
|
1198
|
+
// const base =
|
|
1199
|
+
// typeof window !== 'undefined' ? window.location.origin.replace(/\/+$/, '') : '';
|
|
1200
|
+
// const path = shareBasePath !== null ? `${base}${shareBasePath}` : base;
|
|
1201
|
+
var base = typeof window !== 'undefined' ? window.location.host : '';
|
|
1202
|
+
var path = shareBasePath !== null ? "".concat(base).concat(shareBasePath) : base;
|
|
1171
1203
|
return path;
|
|
1172
|
-
}, [shareBasePath]);
|
|
1173
|
-
|
|
1174
|
-
var _useSpring = core.useSpring(function () {
|
|
1175
|
-
return {
|
|
1176
|
-
y: 0,
|
|
1177
|
-
config: _objectSpread__default["default"](_objectSpread__default["default"]({}, core.config.stiff), {}, {
|
|
1178
|
-
clamp: true
|
|
1179
|
-
})
|
|
1180
|
-
};
|
|
1181
|
-
}),
|
|
1182
|
-
_useSpring2 = _slicedToArray__default["default"](_useSpring, 2),
|
|
1183
|
-
menuY = _useSpring2[0].y,
|
|
1184
|
-
setMenuSpring = _useSpring2[1];
|
|
1185
|
-
|
|
1186
|
-
var refOpened = React.useRef(opened);
|
|
1187
|
-
|
|
1188
|
-
if (refOpened.current !== opened) {
|
|
1189
|
-
refOpened.current = opened;
|
|
1190
|
-
}
|
|
1191
|
-
|
|
1192
|
-
React.useEffect(function () {
|
|
1193
|
-
setMenuSpring.start({
|
|
1194
|
-
y: opened ? 1 : 0
|
|
1195
|
-
});
|
|
1196
|
-
}, [opened]);
|
|
1197
|
-
|
|
1198
|
-
var _useDimensionObserver = hooks.useDimensionObserver(),
|
|
1199
|
-
menuPreviewContainerRef = _useDimensionObserver.ref,
|
|
1200
|
-
_useDimensionObserver2 = _useDimensionObserver.height,
|
|
1201
|
-
menuPreviewContainerHeight = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2;
|
|
1204
|
+
}, [shareBasePath]); // @todo sorta not super good here
|
|
1202
1205
|
|
|
1203
|
-
var
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
};
|
|
1208
|
-
var
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1206
|
+
var onOpenMenu = React.useCallback(function () {
|
|
1207
|
+
setMenuOpened(true);
|
|
1208
|
+
setShareOpened(false);
|
|
1209
|
+
trackScreenEvent('viewer_menu', 'open_screens_menu');
|
|
1210
|
+
}, [setMenuOpened, setShareOpened, trackScreenEvent]);
|
|
1211
|
+
var onCloseMenu = React.useCallback(function () {
|
|
1212
|
+
setMenuOpened(false);
|
|
1213
|
+
setShareOpened(false);
|
|
1214
|
+
trackScreenEvent('viewer_menu', 'close_screens_menu');
|
|
1215
|
+
}, [setMenuOpened, setShareOpened, trackScreenEvent]);
|
|
1216
|
+
var onOpenShare = React.useCallback(function () {
|
|
1217
|
+
setShareOpened(true);
|
|
1218
|
+
setMenuOpened(false);
|
|
1219
|
+
trackScreenEvent('viewer_menu', 'open_share_menu');
|
|
1220
|
+
}, [setShareOpened, setMenuOpened, trackScreenEvent]);
|
|
1221
|
+
var onCloseShare = React.useCallback(function () {
|
|
1222
|
+
setShareOpened(false);
|
|
1223
|
+
setMenuOpened(false);
|
|
1224
|
+
trackScreenEvent('viewer_menu', 'close_share_menu');
|
|
1225
|
+
}, [setShareOpened, setMenuOpened, trackScreenEvent]);
|
|
1226
|
+
var onClickScreen = React.useCallback(function (screen) {
|
|
1227
|
+
setMenuOpened(false);
|
|
1228
|
+
|
|
1229
|
+
if (customOnClickScreen !== null) {
|
|
1230
|
+
customOnClickScreen(screen);
|
|
1221
1231
|
}
|
|
1222
1232
|
|
|
1223
|
-
var
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1233
|
+
var index = items.findIndex(function (_ref6) {
|
|
1234
|
+
var id = _ref6.id;
|
|
1235
|
+
return id === screenId;
|
|
1236
|
+
});
|
|
1237
|
+
trackScreenEvent('viewer_menu', 'click_screen_change', "Screen ".concat(index + 1));
|
|
1238
|
+
}, [customOnClickScreen, setMenuOpened, items, screenId, trackScreenEvent]);
|
|
1239
|
+
var onShare = React.useCallback(function (type) {
|
|
1240
|
+
// @todo display something to say thanks for sharing?
|
|
1241
|
+
trackScreenEvent('viewer_menu', 'shared_story', type);
|
|
1242
|
+
}, [trackScreenEvent]);
|
|
1243
|
+
var computeShareProgress = React.useCallback(function (_ref7) {
|
|
1244
|
+
var active = _ref7.active,
|
|
1245
|
+
_ref7$direction = _slicedToArray__default["default"](_ref7.direction, 2),
|
|
1246
|
+
dy = _ref7$direction[1],
|
|
1247
|
+
_ref7$movement = _slicedToArray__default["default"](_ref7.movement, 2),
|
|
1248
|
+
my = _ref7$movement[1],
|
|
1249
|
+
_ref7$velocity = _slicedToArray__default["default"](_ref7.velocity, 2),
|
|
1250
|
+
vy = _ref7$velocity[1];
|
|
1251
|
+
|
|
1252
|
+
var progress = Math.max(0, my) / (window.innerHeight * 0.8);
|
|
1253
|
+
var reachedThreshold = (vy > 0.3 || Math.abs(progress) > 0.3) && dy !== -1;
|
|
1254
|
+
|
|
1255
|
+
if (!active) {
|
|
1256
|
+
if (reachedThreshold) onOpenShare();
|
|
1257
|
+
return reachedThreshold ? 1 : 0;
|
|
1230
1258
|
}
|
|
1231
1259
|
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
if (last) {
|
|
1235
|
-
var menuNowOpened = dy > 0 && yProgress > 0.1;
|
|
1236
|
-
refOpened.current = menuNowOpened;
|
|
1237
|
-
setMenuSpring.start({
|
|
1238
|
-
y: menuNowOpened ? 1 : 0
|
|
1239
|
-
});
|
|
1260
|
+
return progress;
|
|
1261
|
+
}, [menuOpened, onOpenShare]);
|
|
1240
1262
|
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1263
|
+
var _useDragProgress = hooks.useDragProgress({
|
|
1264
|
+
progress: shareOpened ? 1 : 0,
|
|
1265
|
+
computeProgress: computeShareProgress,
|
|
1266
|
+
springParams: {
|
|
1267
|
+
config: {
|
|
1268
|
+
tension: 300,
|
|
1269
|
+
friction: 30
|
|
1245
1270
|
}
|
|
1246
|
-
} else {
|
|
1247
|
-
setMenuSpring.start({
|
|
1248
|
-
y: yProgress
|
|
1249
|
-
});
|
|
1250
1271
|
}
|
|
1251
|
-
},
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
var
|
|
1257
|
-
|
|
1258
|
-
|
|
1272
|
+
}),
|
|
1273
|
+
bindShareDrag = _useDragProgress.bind,
|
|
1274
|
+
isDraggingShare = _useDragProgress.dragging,
|
|
1275
|
+
shareOpenedProgress = _useDragProgress.progress;
|
|
1276
|
+
|
|
1277
|
+
var computeMenuProgress = React.useCallback(function (_ref8) {
|
|
1278
|
+
var active = _ref8.active,
|
|
1279
|
+
_ref8$direction = _slicedToArray__default["default"](_ref8.direction, 2),
|
|
1280
|
+
dy = _ref8$direction[1],
|
|
1281
|
+
_ref8$movement = _slicedToArray__default["default"](_ref8.movement, 2),
|
|
1282
|
+
my = _ref8$movement[1],
|
|
1283
|
+
_ref8$velocity = _slicedToArray__default["default"](_ref8.velocity, 2),
|
|
1284
|
+
vy = _ref8$velocity[1];
|
|
1285
|
+
|
|
1286
|
+
var progress = Math.max(0, my) / (window.innerHeight * 0.8);
|
|
1287
|
+
var reachedThreshold = (vy > 0.3 || Math.abs(progress) > 0.3) && dy !== -1;
|
|
1288
|
+
|
|
1289
|
+
if (!active) {
|
|
1290
|
+
if (reachedThreshold) onOpenMenu();
|
|
1291
|
+
return reachedThreshold ? 1 : 0;
|
|
1259
1292
|
}
|
|
1260
1293
|
|
|
1261
|
-
|
|
1262
|
-
}, [
|
|
1263
|
-
var onClickItem = React.useCallback(function (item) {
|
|
1264
|
-
if (customOnClickItem !== null) {
|
|
1265
|
-
customOnClickItem(item);
|
|
1266
|
-
}
|
|
1294
|
+
return progress;
|
|
1295
|
+
}, [menuOpened, onOpenMenu]);
|
|
1267
1296
|
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
onRequestClose();
|
|
1297
|
+
var _useDragProgress2 = hooks.useDragProgress({
|
|
1298
|
+
progress: menuOpened ? 1 : 0,
|
|
1299
|
+
computeProgress: computeMenuProgress,
|
|
1300
|
+
springParams: {
|
|
1301
|
+
config: {
|
|
1302
|
+
tension: 300,
|
|
1303
|
+
friction: 30
|
|
1304
|
+
}
|
|
1277
1305
|
}
|
|
1306
|
+
}),
|
|
1307
|
+
bindMenuDrag = _useDragProgress2.bind,
|
|
1308
|
+
isDraggingMenu = _useDragProgress2.dragging,
|
|
1309
|
+
menuOpenedProgress = _useDragProgress2.progress;
|
|
1278
1310
|
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1311
|
+
var keyboardShortcuts = React.useMemo(function () {
|
|
1312
|
+
return {
|
|
1313
|
+
m: function m() {
|
|
1314
|
+
return !menuOpened ? onOpenMenu() : onCloseMenu();
|
|
1315
|
+
},
|
|
1316
|
+
escape: function escape() {
|
|
1317
|
+
return onCloseMenu();
|
|
1318
|
+
}
|
|
1319
|
+
};
|
|
1320
|
+
}, [menuOpened, onOpenMenu, onCloseMenu]);
|
|
1321
|
+
useKeyboardShortcuts(keyboardShortcuts); // should be zero if either screens menu or share menu is opened
|
|
1289
1322
|
|
|
1290
|
-
|
|
1291
|
-
|
|
1323
|
+
var dotsOpacity = Math.min(1, Math.max(0, 1 - (menuOpenedProgress + shareOpenedProgress)));
|
|
1324
|
+
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1325
|
+
className: classNames__default["default"]([styles$6.menuNavContainer, (_ref9 = {}, _defineProperty__default["default"](_ref9, styles$6.withShadow, withShadow), _defineProperty__default["default"](_ref9, styles$6.isOpened, menuOpened || shareOpened), _ref9)]),
|
|
1292
1326
|
ref: refDots,
|
|
1293
1327
|
style: {
|
|
1294
1328
|
width: menuWidth
|
|
1295
1329
|
}
|
|
1296
|
-
},
|
|
1330
|
+
}, /*#__PURE__*/React__default["default"].createElement("nav", {
|
|
1331
|
+
className: styles$6.menuTopContainer
|
|
1332
|
+
}, !withoutShareMenu ? /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
|
|
1333
|
+
className: classNames__default["default"]([styles$6.menuItem, styles$6.menuShare])
|
|
1334
|
+
}, bindShareDrag()), /*#__PURE__*/React__default["default"].createElement(components.SlidingButtons, {
|
|
1335
|
+
className: styles$6.slidingButton,
|
|
1336
|
+
current: shareOpenedProgress,
|
|
1337
|
+
immediate: isDraggingShare,
|
|
1338
|
+
buttons: [ShareButton, components.CloseButton],
|
|
1339
|
+
buttonsProps: [{
|
|
1340
|
+
key: 'share',
|
|
1341
|
+
className: styles$6.menuButton,
|
|
1342
|
+
onClick: onOpenShare,
|
|
1343
|
+
theme: menuTheme
|
|
1344
|
+
}, {
|
|
1345
|
+
key: 'close-share',
|
|
1346
|
+
className: styles$6.menuButton,
|
|
1347
|
+
onClick: onCloseShare,
|
|
1348
|
+
theme: menuTheme,
|
|
1349
|
+
iconPosition: 'left'
|
|
1350
|
+
}]
|
|
1351
|
+
})) : null, !withoutScreensMenu ? /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
|
|
1352
|
+
className: classNames__default["default"]([styles$6.menuItem, styles$6.menuScreens])
|
|
1353
|
+
}, bindMenuDrag()), /*#__PURE__*/React__default["default"].createElement(components.SlidingButtons, {
|
|
1354
|
+
className: styles$6.slidingButton,
|
|
1355
|
+
current: menuOpenedProgress,
|
|
1356
|
+
immediate: isDraggingMenu,
|
|
1357
|
+
buttons: [MenuButton, components.CloseButton],
|
|
1358
|
+
buttonsProps: [{
|
|
1359
|
+
key: 'menu',
|
|
1360
|
+
className: styles$6.menuButton,
|
|
1361
|
+
onClick: onOpenMenu,
|
|
1362
|
+
theme: menuTheme
|
|
1363
|
+
}, {
|
|
1364
|
+
key: 'close-menu',
|
|
1365
|
+
className: styles$6.menuButton,
|
|
1366
|
+
onClick: onCloseMenu,
|
|
1367
|
+
theme: menuTheme,
|
|
1368
|
+
iconPosition: 'right'
|
|
1369
|
+
}]
|
|
1370
|
+
})) : null), /*#__PURE__*/React__default["default"].createElement(ViewerMenuDots, Object.assign({}, menuTheme, {
|
|
1297
1371
|
direction: "horizontal",
|
|
1298
|
-
withShadow: withShadow,
|
|
1299
1372
|
items: items,
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
onShare: onClickShare,
|
|
1303
|
-
onClickItem: onClickItem,
|
|
1304
|
-
onClickMenu: onClickMenu,
|
|
1373
|
+
onClickDot: onClickScreen,
|
|
1374
|
+
onClickMenu: onOpenMenu,
|
|
1305
1375
|
closeable: closeable,
|
|
1306
1376
|
withItemClick: withDotItemClick,
|
|
1307
1377
|
withoutScreensMenu: withoutScreensMenu,
|
|
1378
|
+
withoutShareMenu: withoutShareMenu,
|
|
1308
1379
|
onClose: onClickCloseViewer,
|
|
1309
|
-
className: styles$6.
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1380
|
+
className: styles$6.dots,
|
|
1381
|
+
style: {
|
|
1382
|
+
opacity: dotsOpacity
|
|
1383
|
+
}
|
|
1384
|
+
}))), /*#__PURE__*/React__default["default"].createElement(ViewerMenuContainer, {
|
|
1385
|
+
className: styles$6.menuContainerShare,
|
|
1386
|
+
transitionProgress: shareOpenedProgress
|
|
1387
|
+
}, /*#__PURE__*/React__default["default"].createElement(ViewerMenuShare, {
|
|
1388
|
+
viewerTheme: viewerTheme,
|
|
1389
|
+
className: styles$6.menuShare,
|
|
1390
|
+
title: title,
|
|
1391
|
+
description: description,
|
|
1392
|
+
menuWidth: menuWidth,
|
|
1393
|
+
focusable: shareOpened,
|
|
1394
|
+
items: items,
|
|
1395
|
+
currentScreenIndex: currentScreenIndex,
|
|
1396
|
+
shareUrl: shareUrl,
|
|
1397
|
+
onShare: onShare,
|
|
1398
|
+
onClose: onCloseShare
|
|
1399
|
+
})), /*#__PURE__*/React__default["default"].createElement(ViewerMenuContainer, {
|
|
1400
|
+
className: styles$6.menuContainerScreens,
|
|
1401
|
+
transitionProgress: menuOpenedProgress
|
|
1314
1402
|
}, /*#__PURE__*/React__default["default"].createElement(ViewerMenuPreview, {
|
|
1315
1403
|
viewerTheme: viewerTheme,
|
|
1316
1404
|
className: styles$6.menuPreview,
|
|
1317
1405
|
screenSize: screenSize,
|
|
1318
1406
|
menuWidth: menuWidth,
|
|
1319
|
-
focusable:
|
|
1407
|
+
focusable: menuOpened,
|
|
1320
1408
|
items: items,
|
|
1321
|
-
|
|
1322
|
-
|
|
1409
|
+
currentScreenIndex: currentScreenIndex,
|
|
1410
|
+
shareUrl: shareUrl,
|
|
1411
|
+
onShare: onShare,
|
|
1412
|
+
onClickScreen: onClickScreen,
|
|
1413
|
+
onClose: onCloseMenu,
|
|
1323
1414
|
toggleFullscreen: toggleFullscreen,
|
|
1324
1415
|
fullscreenActive: fullscreenActive,
|
|
1325
1416
|
fullscreenEnabled: fullscreenEnabled
|
|
@@ -1384,8 +1475,8 @@ HandTap.defaultProps = defaultProps$8;
|
|
|
1384
1475
|
var styles$4 = {"container":"micromag-viewer-screen-container","handTap":"micromag-viewer-screen-handTap"};
|
|
1385
1476
|
|
|
1386
1477
|
var propTypes$7 = {
|
|
1387
|
-
screen: core
|
|
1388
|
-
renderContext: core
|
|
1478
|
+
screen: core.PropTypes.screenComponent,
|
|
1479
|
+
renderContext: core.PropTypes.renderContext,
|
|
1389
1480
|
screenState: PropTypes__default["default"].string,
|
|
1390
1481
|
current: PropTypes__default["default"].bool,
|
|
1391
1482
|
active: PropTypes__default["default"].bool,
|
|
@@ -1393,7 +1484,7 @@ var propTypes$7 = {
|
|
|
1393
1484
|
width: PropTypes__default["default"].number,
|
|
1394
1485
|
height: PropTypes__default["default"].number,
|
|
1395
1486
|
scale: PropTypes__default["default"].number,
|
|
1396
|
-
withNavigationHint: PropTypes__default["default"].
|
|
1487
|
+
withNavigationHint: PropTypes__default["default"].bool,
|
|
1397
1488
|
className: PropTypes__default["default"].string
|
|
1398
1489
|
};
|
|
1399
1490
|
var defaultProps$7 = {
|
|
@@ -1446,11 +1537,11 @@ function ViewerScreen(_ref) {
|
|
|
1446
1537
|
ViewerScreen.propTypes = propTypes$7;
|
|
1447
1538
|
ViewerScreen.defaultProps = defaultProps$7;
|
|
1448
1539
|
|
|
1449
|
-
var styles$3 = {"
|
|
1540
|
+
var styles$3 = {"arrow":"micromag-viewer-buttons-navigation-button-arrow","next":"micromag-viewer-buttons-navigation-button-next","previous":"micromag-viewer-buttons-navigation-button-previous"};
|
|
1450
1541
|
|
|
1451
1542
|
var propTypes$6 = {
|
|
1452
1543
|
direction: PropTypes__default["default"].oneOf(['previous', 'next']),
|
|
1453
|
-
onClick:
|
|
1544
|
+
onClick: PropTypes__default["default"].func,
|
|
1454
1545
|
className: PropTypes__default["default"].string
|
|
1455
1546
|
};
|
|
1456
1547
|
var defaultProps$6 = {
|
|
@@ -1463,37 +1554,57 @@ var NavigationButton = function NavigationButton(_ref) {
|
|
|
1463
1554
|
var direction = _ref.direction,
|
|
1464
1555
|
onClick = _ref.onClick,
|
|
1465
1556
|
className = _ref.className;
|
|
1466
|
-
return /*#__PURE__*/React__default["default"].createElement(
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1557
|
+
return /*#__PURE__*/React__default["default"].createElement(components.Button, {
|
|
1558
|
+
className: classNames__default["default"]([styles$3.container, styles$3[direction], _defineProperty__default["default"]({}, className, className !== null)]),
|
|
1559
|
+
onClick: onClick,
|
|
1560
|
+
iconPosition: direction === 'next' ? 'right' : 'left',
|
|
1561
|
+
icon: /*#__PURE__*/React__default["default"].createElement("svg", {
|
|
1562
|
+
className: styles$3.arrow,
|
|
1563
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1564
|
+
width: "10",
|
|
1565
|
+
height: "16",
|
|
1566
|
+
viewBox: "0 0 10 16",
|
|
1567
|
+
fill: "currentColor"
|
|
1568
|
+
}, /*#__PURE__*/React__default["default"].createElement("polygon", {
|
|
1569
|
+
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"
|
|
1570
|
+
})),
|
|
1571
|
+
label: /*#__PURE__*/React__default["default"].createElement("span", {
|
|
1572
|
+
className: "sr-only"
|
|
1573
|
+
}, direction === 'previous' ? /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
|
|
1574
|
+
id: "zYH/31",
|
|
1575
|
+
defaultMessage: [{
|
|
1576
|
+
"type": 0,
|
|
1577
|
+
"value": "Go to previous screen"
|
|
1578
|
+
}]
|
|
1579
|
+
}) : /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
|
|
1580
|
+
id: "v9bqYj",
|
|
1581
|
+
defaultMessage: [{
|
|
1582
|
+
"type": 0,
|
|
1583
|
+
"value": "Go to next screen"
|
|
1584
|
+
}]
|
|
1585
|
+
}))
|
|
1586
|
+
});
|
|
1488
1587
|
};
|
|
1489
1588
|
|
|
1490
1589
|
NavigationButton.propTypes = propTypes$6;
|
|
1491
1590
|
NavigationButton.defaultProps = defaultProps$6;
|
|
1492
1591
|
|
|
1493
|
-
var styles$2 = {"track":"micromag-viewer-partials-seek-bar-track","progress":"micromag-viewer-partials-seek-bar-progress","inner":"micromag-viewer-partials-seek-bar-inner","progressBar":"micromag-viewer-partials-seek-bar-progressBar","playHead":"micromag-viewer-partials-seek-bar-playHead","withSeekHead":"micromag-viewer-partials-seek-bar-withSeekHead","
|
|
1592
|
+
var styles$2 = {"track":"micromag-viewer-partials-seek-bar-track","progress":"micromag-viewer-partials-seek-bar-progress","inner":"micromag-viewer-partials-seek-bar-inner","progressBar":"micromag-viewer-partials-seek-bar-progressBar","playHead":"micromag-viewer-partials-seek-bar-playHead","withSeekHead":"micromag-viewer-partials-seek-bar-withSeekHead","scrubbedTime":"micromag-viewer-partials-seek-bar-scrubbedTime","showTimestamp":"micromag-viewer-partials-seek-bar-showTimestamp"};
|
|
1593
|
+
|
|
1594
|
+
function getFormattedTimestamp(s) {
|
|
1595
|
+
var withMilliseconds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
1596
|
+
var sparts = withMilliseconds ? "".concat(s).split('.') : [];
|
|
1597
|
+
var ms = sparts.length > 1 ? ":".concat(sparts[1].substring(0, 3)) : '';
|
|
1598
|
+
return (s - (s %= 60)) / 60 + (9 < s ? ':' : ':0') + ~~s + ms; // eslint-disable-line
|
|
1599
|
+
}
|
|
1600
|
+
|
|
1601
|
+
var SHOW_MILLISECONDS_THRESHOLD = 5; // show milliseconds when scrubbing if length of video is shorter than 5 seconds
|
|
1494
1602
|
|
|
1495
1603
|
var propTypes$5 = {
|
|
1496
|
-
media: PropTypes__default["default"].
|
|
1604
|
+
media: PropTypes__default["default"].oneOfType([PropTypes__default["default"].func, PropTypes__default["default"].shape({
|
|
1605
|
+
current: PropTypes__default["default"].any
|
|
1606
|
+
}) // eslint-disable-line
|
|
1607
|
+
]),
|
|
1497
1608
|
playing: PropTypes__default["default"].bool,
|
|
1498
1609
|
backgroundColor: PropTypes__default["default"].string,
|
|
1499
1610
|
progressColor: PropTypes__default["default"].string,
|
|
@@ -1518,7 +1629,7 @@ var defaultProps$5 = {
|
|
|
1518
1629
|
};
|
|
1519
1630
|
|
|
1520
1631
|
var SeekBar = function SeekBar(_ref) {
|
|
1521
|
-
var
|
|
1632
|
+
var _ref4;
|
|
1522
1633
|
|
|
1523
1634
|
var media = _ref.media,
|
|
1524
1635
|
playing = _ref.playing,
|
|
@@ -1534,13 +1645,28 @@ var SeekBar = function SeekBar(_ref) {
|
|
|
1534
1645
|
var progress = hooks.useMediaProgress(media, {
|
|
1535
1646
|
disabled: !playing
|
|
1536
1647
|
});
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1648
|
+
|
|
1649
|
+
var _ref2 = media || {},
|
|
1650
|
+
_ref2$currentTime = _ref2.currentTime,
|
|
1651
|
+
currentTime = _ref2$currentTime === void 0 ? null : _ref2$currentTime,
|
|
1652
|
+
_ref2$duration = _ref2.duration,
|
|
1653
|
+
duration = _ref2$duration === void 0 ? null : _ref2$duration;
|
|
1654
|
+
|
|
1655
|
+
var _useState = React.useState(false),
|
|
1656
|
+
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
1657
|
+
showTimestamp = _useState2[0],
|
|
1658
|
+
setShowTimestamp = _useState2[1];
|
|
1659
|
+
|
|
1660
|
+
var onDrag = React.useCallback(function (_ref3) {
|
|
1661
|
+
var event = _ref3.event,
|
|
1662
|
+
_ref3$xy = _slicedToArray__default["default"](_ref3.xy, 1),
|
|
1663
|
+
x = _ref3$xy[0],
|
|
1664
|
+
elapsedTime = _ref3.elapsedTime,
|
|
1665
|
+
active = _ref3.active,
|
|
1666
|
+
tap = _ref3.tap,
|
|
1667
|
+
currentTarget = _ref3.currentTarget;
|
|
1668
|
+
|
|
1669
|
+
event.stopPropagation();
|
|
1544
1670
|
|
|
1545
1671
|
if (!active && elapsedTime > 300) {
|
|
1546
1672
|
return;
|
|
@@ -1556,16 +1682,21 @@ var SeekBar = function SeekBar(_ref) {
|
|
|
1556
1682
|
onSeek(newProgress, tap);
|
|
1557
1683
|
}
|
|
1558
1684
|
}, [onSeek]);
|
|
1559
|
-
var onDragStart = React.useCallback(function () {
|
|
1685
|
+
var onDragStart = React.useCallback(function (event) {
|
|
1686
|
+
setShowTimestamp(true);
|
|
1687
|
+
|
|
1560
1688
|
if (onSeekStart !== null) {
|
|
1561
1689
|
onSeekStart();
|
|
1562
1690
|
}
|
|
1563
|
-
|
|
1691
|
+
|
|
1692
|
+
event.stopPropagation();
|
|
1693
|
+
}, [onSeekStart, setShowTimestamp]);
|
|
1564
1694
|
var onDragEnd = React.useCallback(function () {
|
|
1565
1695
|
if (onSeekEnd !== null) {
|
|
1696
|
+
setShowTimestamp(false);
|
|
1566
1697
|
onSeekEnd();
|
|
1567
1698
|
}
|
|
1568
|
-
}, [onSeekEnd]);
|
|
1699
|
+
}, [onSeekEnd, setShowTimestamp]);
|
|
1569
1700
|
var bind = react.useGesture({
|
|
1570
1701
|
onDrag: onDrag,
|
|
1571
1702
|
onDragStart: onDragStart,
|
|
@@ -1577,7 +1708,7 @@ var SeekBar = function SeekBar(_ref) {
|
|
|
1577
1708
|
}
|
|
1578
1709
|
});
|
|
1579
1710
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1580
|
-
className: classNames__default["default"]([styles$2.container, (
|
|
1711
|
+
className: classNames__default["default"]([styles$2.container, (_ref4 = {}, _defineProperty__default["default"](_ref4, className, className !== null), _defineProperty__default["default"](_ref4, styles$2.withSeekHead, withSeekHead), _defineProperty__default["default"](_ref4, styles$2.showTimestamp, showTimestamp), _ref4)])
|
|
1581
1712
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1582
1713
|
className: styles$2.inner
|
|
1583
1714
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
@@ -1591,7 +1722,12 @@ var SeekBar = function SeekBar(_ref) {
|
|
|
1591
1722
|
left: "".concat(progress * 100, "%"),
|
|
1592
1723
|
backgroundColor: progressColor
|
|
1593
1724
|
}
|
|
1594
|
-
}
|
|
1725
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1726
|
+
className: styles$2.scrubbedTime,
|
|
1727
|
+
style: {
|
|
1728
|
+
borderColor: progressColor
|
|
1729
|
+
}
|
|
1730
|
+
}, getFormattedTimestamp(currentTime, duration < SHOW_MILLISECONDS_THRESHOLD))), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1595
1731
|
className: styles$2.progress,
|
|
1596
1732
|
style: {
|
|
1597
1733
|
transform: "scaleX(".concat(progress, ")"),
|
|
@@ -1621,7 +1757,7 @@ var SeekBar = function SeekBar(_ref) {
|
|
|
1621
1757
|
SeekBar.propTypes = propTypes$5;
|
|
1622
1758
|
SeekBar.defaultProps = defaultProps$5;
|
|
1623
1759
|
|
|
1624
|
-
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","
|
|
1760
|
+
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"};
|
|
1625
1761
|
|
|
1626
1762
|
var propTypes$4 = {
|
|
1627
1763
|
className: PropTypes__default["default"].string,
|
|
@@ -1726,7 +1862,8 @@ function PlaybackControls(_ref) {
|
|
|
1726
1862
|
setPlaying(true);
|
|
1727
1863
|
}
|
|
1728
1864
|
}, [setPlaying, wasPlaying]);
|
|
1729
|
-
var
|
|
1865
|
+
var hasMedia = mediaElement !== null;
|
|
1866
|
+
var mediaHasAudio = hasMedia && (hasAudio === null || hasAudio === true);
|
|
1730
1867
|
|
|
1731
1868
|
var _ref3 = customControlsTheme || {},
|
|
1732
1869
|
color = _ref3.color,
|
|
@@ -1735,33 +1872,55 @@ function PlaybackControls(_ref) {
|
|
|
1735
1872
|
|
|
1736
1873
|
var isCollapsed = controls && !controlsVisible && playing || !controls && mediaHasAudio;
|
|
1737
1874
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1738
|
-
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,
|
|
1739
|
-
}, /*#__PURE__*/React__default["default"].createElement(
|
|
1740
|
-
type: "button",
|
|
1875
|
+
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)])
|
|
1876
|
+
}, /*#__PURE__*/React__default["default"].createElement(components.Button, {
|
|
1741
1877
|
className: styles$1.playPauseButton,
|
|
1742
1878
|
style: {
|
|
1743
1879
|
color: color
|
|
1744
1880
|
},
|
|
1745
1881
|
onClick: playing ? onPause : onPlay,
|
|
1746
|
-
|
|
1747
|
-
|
|
1882
|
+
focusable: controlsVisible,
|
|
1883
|
+
icon: playing ? /*#__PURE__*/React__default["default"].createElement("svg", {
|
|
1884
|
+
className: styles$1.icon,
|
|
1885
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1886
|
+
width: "10",
|
|
1887
|
+
height: "16",
|
|
1888
|
+
viewBox: "0 0 10 16",
|
|
1889
|
+
fill: "currentColor"
|
|
1890
|
+
}, /*#__PURE__*/React__default["default"].createElement("rect", {
|
|
1891
|
+
x: "1",
|
|
1892
|
+
y: "3.27",
|
|
1893
|
+
width: "3",
|
|
1894
|
+
height: "9.69"
|
|
1895
|
+
}), /*#__PURE__*/React__default["default"].createElement("rect", {
|
|
1896
|
+
x: "6",
|
|
1897
|
+
y: "3.27",
|
|
1898
|
+
width: "3",
|
|
1899
|
+
height: "9.69"
|
|
1900
|
+
})) : /*#__PURE__*/React__default["default"].createElement("svg", {
|
|
1901
|
+
className: styles$1.icon,
|
|
1902
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1903
|
+
width: "10",
|
|
1904
|
+
height: "16",
|
|
1905
|
+
viewBox: "0 0 10 16",
|
|
1906
|
+
fill: "currentColor"
|
|
1907
|
+
}, /*#__PURE__*/React__default["default"].createElement("path", {
|
|
1908
|
+
d: "M1,3.16V12.84l8-4.84L1,3.16"
|
|
1909
|
+
})),
|
|
1910
|
+
"aria-label": playing ? intl.formatMessage({
|
|
1911
|
+
id: "mTqcmA",
|
|
1748
1912
|
defaultMessage: [{
|
|
1749
1913
|
"type": 0,
|
|
1750
|
-
"value": "
|
|
1914
|
+
"value": "Pause"
|
|
1751
1915
|
}]
|
|
1752
|
-
})
|
|
1753
|
-
"aria-label": intl.formatMessage({
|
|
1916
|
+
}) : intl.formatMessage({
|
|
1754
1917
|
id: "ahSpiH",
|
|
1755
1918
|
defaultMessage: [{
|
|
1756
1919
|
"type": 0,
|
|
1757
1920
|
"value": "Play"
|
|
1758
1921
|
}]
|
|
1759
|
-
})
|
|
1760
|
-
|
|
1761
|
-
}, /*#__PURE__*/React__default["default"].createElement(reactFontawesome.FontAwesomeIcon, {
|
|
1762
|
-
className: styles$1.icon,
|
|
1763
|
-
icon: playing ? faPause.faPause : faPlay.faPlay
|
|
1764
|
-
})), /*#__PURE__*/React__default["default"].createElement(SeekBar, {
|
|
1922
|
+
})
|
|
1923
|
+
}), /*#__PURE__*/React__default["default"].createElement(SeekBar, {
|
|
1765
1924
|
className: styles$1.seekBar,
|
|
1766
1925
|
media: mediaElement,
|
|
1767
1926
|
playing: playing,
|
|
@@ -1772,32 +1931,54 @@ function PlaybackControls(_ref) {
|
|
|
1772
1931
|
withSeekHead: !isCollapsed && !seekBarOnly,
|
|
1773
1932
|
backgroundColor: color,
|
|
1774
1933
|
progressColor: progressColor
|
|
1775
|
-
}), /*#__PURE__*/React__default["default"].createElement(
|
|
1776
|
-
|
|
1777
|
-
className: classNames__default["default"]([styles$1.muteButton, _defineProperty__default["default"]({}, styles$1.isMuted, muted)]),
|
|
1934
|
+
}), /*#__PURE__*/React__default["default"].createElement(components.Button, {
|
|
1935
|
+
className: styles$1.muteButton,
|
|
1778
1936
|
style: {
|
|
1779
1937
|
color: color
|
|
1780
1938
|
},
|
|
1781
1939
|
onClick: muted ? onUnmute : onMute,
|
|
1782
|
-
|
|
1783
|
-
|
|
1940
|
+
focusable: controlsVisible || mediaHasAudio,
|
|
1941
|
+
icon: muted ? /*#__PURE__*/React__default["default"].createElement("svg", {
|
|
1942
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1943
|
+
width: "10",
|
|
1944
|
+
height: "16",
|
|
1945
|
+
viewBox: "0 0 10 16",
|
|
1946
|
+
className: styles$1.icon,
|
|
1947
|
+
fill: "currentColor"
|
|
1948
|
+
}, /*#__PURE__*/React__default["default"].createElement("polygon", {
|
|
1949
|
+
points: "2.75 4.63 1.24 6 0 6 0 10 1.24 10 4.54 13 4.54 3 2.75 4.63"
|
|
1950
|
+
}), /*#__PURE__*/React__default["default"].createElement("polygon", {
|
|
1951
|
+
points: "10 6.63 8.94 5.57 7.58 6.93 6.21 5.57 5.15 6.63 6.52 7.99 5.15 9.35 6.21 10.43 7.58 9.06 8.94 10.43 10 9.35 8.64 7.99 10 6.63"
|
|
1952
|
+
})) : /*#__PURE__*/React__default["default"].createElement("svg", {
|
|
1953
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1954
|
+
width: "10",
|
|
1955
|
+
height: "16",
|
|
1956
|
+
viewBox: "0 0 10 16",
|
|
1957
|
+
className: styles$1.icon,
|
|
1958
|
+
fill: "currentColor"
|
|
1959
|
+
}, /*#__PURE__*/React__default["default"].createElement("polygon", {
|
|
1960
|
+
points: "2.75 4.63 1.24 6 0 6 0 10 1.24 10 4.54 13 4.54 3 2.75 4.63"
|
|
1961
|
+
}), /*#__PURE__*/React__default["default"].createElement("circle", {
|
|
1962
|
+
cx: "6.14",
|
|
1963
|
+
cy: "8",
|
|
1964
|
+
r: ".99"
|
|
1965
|
+
}), /*#__PURE__*/React__default["default"].createElement("path", {
|
|
1966
|
+
d: "M6.14,11.88v-1.5c1.31,0,2.38-1.07,2.38-2.38s-1.07-2.38-2.38-2.38v-1.5c2.14,0,3.88,1.74,3.88,3.88s-1.74,3.88-3.88,3.88Z"
|
|
1967
|
+
})),
|
|
1968
|
+
"aria-label": muted ? intl.formatMessage({
|
|
1969
|
+
id: "RK/QEY",
|
|
1784
1970
|
defaultMessage: [{
|
|
1785
1971
|
"type": 0,
|
|
1786
|
-
"value": "
|
|
1972
|
+
"value": "Unmute"
|
|
1787
1973
|
}]
|
|
1788
|
-
})
|
|
1789
|
-
"aria-label": intl.formatMessage({
|
|
1974
|
+
}) : intl.formatMessage({
|
|
1790
1975
|
id: "vzg8Es",
|
|
1791
1976
|
defaultMessage: [{
|
|
1792
1977
|
"type": 0,
|
|
1793
1978
|
"value": "Mute"
|
|
1794
1979
|
}]
|
|
1795
|
-
})
|
|
1796
|
-
|
|
1797
|
-
}, /*#__PURE__*/React__default["default"].createElement(reactFontawesome.FontAwesomeIcon, {
|
|
1798
|
-
className: styles$1.icon,
|
|
1799
|
-
icon: faVolumeUp.faVolumeUp
|
|
1800
|
-
})));
|
|
1980
|
+
})
|
|
1981
|
+
}));
|
|
1801
1982
|
}
|
|
1802
1983
|
|
|
1803
1984
|
PlaybackControls.propTypes = propTypes$4;
|
|
@@ -1890,30 +2071,43 @@ function WebViewContainer(_ref) {
|
|
|
1890
2071
|
WebViewContainer.propTypes = propTypes$3;
|
|
1891
2072
|
WebViewContainer.defaultProps = defaultProps$3;
|
|
1892
2073
|
|
|
2074
|
+
var SPRING_CONFIG_TIGHT = {
|
|
2075
|
+
tension: 300,
|
|
2076
|
+
friction: 35
|
|
2077
|
+
}; // tight
|
|
2078
|
+
|
|
2079
|
+
var DRAG_PROGRESS_ACTIVATION_THRESHOLD = 0.3;
|
|
2080
|
+
var DRAG_VELOCITY_ACTIVATION_THRESHOLD = 0.3;
|
|
2081
|
+
var DEFAULT_TRANSITION_TYPE_LANDSCAPE = 'carousel';
|
|
2082
|
+
var DEFAULT_TRANSITION_TYPE_PORTRAIT = 'stack';
|
|
1893
2083
|
var propTypes$2 = {
|
|
1894
|
-
story: core
|
|
2084
|
+
story: core.PropTypes.story,
|
|
1895
2085
|
// .isRequired,
|
|
1896
2086
|
basePath: PropTypes__default["default"].string,
|
|
1897
|
-
theme: core
|
|
2087
|
+
theme: core.PropTypes.viewerTheme,
|
|
1898
2088
|
width: PropTypes__default["default"].number,
|
|
1899
2089
|
height: PropTypes__default["default"].number,
|
|
1900
2090
|
screen: PropTypes__default["default"].string,
|
|
1901
2091
|
screenState: PropTypes__default["default"].string,
|
|
1902
|
-
deviceScreens: core
|
|
1903
|
-
renderContext: core
|
|
1904
|
-
visitor: core
|
|
2092
|
+
deviceScreens: core.PropTypes.deviceScreens,
|
|
2093
|
+
renderContext: core.PropTypes.renderContext,
|
|
2094
|
+
visitor: core.PropTypes.visitor,
|
|
1905
2095
|
onScreenChange: PropTypes__default["default"].func,
|
|
1906
2096
|
tapNextScreenWidthPercent: PropTypes__default["default"].number,
|
|
1907
2097
|
neighborScreensActive: PropTypes__default["default"].number,
|
|
1908
|
-
neighborScreensMounted: PropTypes__default["default"].number,
|
|
1909
2098
|
storyIsParsed: PropTypes__default["default"].bool,
|
|
1910
|
-
landscapeScreenMargin:
|
|
2099
|
+
// landscapeScreenMargin: PropTypes.number,
|
|
2100
|
+
// landscapeSmallScreenScale: PropTypes.number,
|
|
1911
2101
|
withMetadata: PropTypes__default["default"].bool,
|
|
2102
|
+
withoutGestures: PropTypes__default["default"].bool,
|
|
1912
2103
|
withoutMenu: PropTypes__default["default"].bool,
|
|
1913
2104
|
withoutScreensMenu: PropTypes__default["default"].bool,
|
|
2105
|
+
withoutShareMenu: PropTypes__default["default"].bool,
|
|
1914
2106
|
withoutMenuShadow: PropTypes__default["default"].bool,
|
|
1915
2107
|
withoutFullscreen: PropTypes__default["default"].bool,
|
|
1916
|
-
|
|
2108
|
+
withoutNavigationArrow: PropTypes__default["default"].bool,
|
|
2109
|
+
withoutTransitions: PropTypes__default["default"].bool,
|
|
2110
|
+
withNeighborScreens: PropTypes__default["default"].bool,
|
|
1917
2111
|
withNavigationHint: PropTypes__default["default"].bool,
|
|
1918
2112
|
withoutPlaybackControls: PropTypes__default["default"].bool,
|
|
1919
2113
|
closeable: PropTypes__default["default"].bool,
|
|
@@ -1921,9 +2115,9 @@ var propTypes$2 = {
|
|
|
1921
2115
|
onInteraction: PropTypes__default["default"].func,
|
|
1922
2116
|
onEnd: PropTypes__default["default"].func,
|
|
1923
2117
|
onViewModeChange: PropTypes__default["default"].func,
|
|
1924
|
-
currentScreenMedia: core
|
|
2118
|
+
currentScreenMedia: core.PropTypes.ref,
|
|
1925
2119
|
menuIsScreenWidth: PropTypes__default["default"].bool,
|
|
1926
|
-
screensMedias: core
|
|
2120
|
+
screensMedias: core.PropTypes.ref,
|
|
1927
2121
|
screenSizeOptions: PropTypes__default["default"].shape({
|
|
1928
2122
|
withoutMaxSize: PropTypes__default["default"].bool,
|
|
1929
2123
|
desktopHeightRatio: PropTypes__default["default"].number,
|
|
@@ -1945,16 +2139,20 @@ var defaultProps$2 = {
|
|
|
1945
2139
|
onScreenChange: null,
|
|
1946
2140
|
tapNextScreenWidthPercent: 0.8,
|
|
1947
2141
|
neighborScreensActive: 1,
|
|
1948
|
-
neighborScreensMounted: 1,
|
|
1949
2142
|
storyIsParsed: false,
|
|
1950
|
-
landscapeScreenMargin: 20,
|
|
2143
|
+
// landscapeScreenMargin: 20,
|
|
2144
|
+
// landscapeSmallScreenScale: 0.9,
|
|
1951
2145
|
withMetadata: false,
|
|
2146
|
+
withNeighborScreens: false,
|
|
2147
|
+
withNavigationHint: false,
|
|
2148
|
+
withoutGestures: false,
|
|
1952
2149
|
withoutMenu: false,
|
|
1953
2150
|
withoutScreensMenu: false,
|
|
2151
|
+
withoutShareMenu: false,
|
|
1954
2152
|
withoutMenuShadow: false,
|
|
1955
2153
|
withoutFullscreen: false,
|
|
1956
|
-
|
|
1957
|
-
|
|
2154
|
+
withoutTransitions: false,
|
|
2155
|
+
withoutNavigationArrow: false,
|
|
1958
2156
|
withoutPlaybackControls: false,
|
|
1959
2157
|
menuIsScreenWidth: false,
|
|
1960
2158
|
closeable: false,
|
|
@@ -1983,15 +2181,17 @@ var Viewer = function Viewer(_ref) {
|
|
|
1983
2181
|
visitor = _ref.visitor,
|
|
1984
2182
|
tapNextScreenWidthPercent = _ref.tapNextScreenWidthPercent,
|
|
1985
2183
|
neighborScreensActive = _ref.neighborScreensActive,
|
|
1986
|
-
neighborScreensMounted = _ref.neighborScreensMounted,
|
|
1987
2184
|
storyIsParsed = _ref.storyIsParsed,
|
|
1988
|
-
landscapeScreenMargin = _ref.landscapeScreenMargin,
|
|
1989
2185
|
withMetadata = _ref.withMetadata,
|
|
2186
|
+
withoutGestures = _ref.withoutGestures,
|
|
1990
2187
|
withoutMenu = _ref.withoutMenu,
|
|
1991
2188
|
withoutScreensMenu = _ref.withoutScreensMenu,
|
|
2189
|
+
withoutShareMenu = _ref.withoutShareMenu,
|
|
1992
2190
|
withoutMenuShadow = _ref.withoutMenuShadow;
|
|
1993
2191
|
_ref.withoutFullscreen;
|
|
1994
|
-
var
|
|
2192
|
+
var withoutNavigationArrow = _ref.withoutNavigationArrow;
|
|
2193
|
+
_ref.withoutTransitions;
|
|
2194
|
+
var withNeighborScreens = _ref.withNeighborScreens,
|
|
1995
2195
|
withNavigationHint = _ref.withNavigationHint,
|
|
1996
2196
|
withoutPlaybackControls = _ref.withoutPlaybackControls,
|
|
1997
2197
|
menuIsScreenWidth = _ref.menuIsScreenWidth,
|
|
@@ -2005,7 +2205,10 @@ var Viewer = function Viewer(_ref) {
|
|
|
2005
2205
|
screensMedias = _ref.screensMedias,
|
|
2006
2206
|
screenSizeOptions = _ref.screenSizeOptions,
|
|
2007
2207
|
className = _ref.className;
|
|
2008
|
-
|
|
2208
|
+
|
|
2209
|
+
/**
|
|
2210
|
+
* Screen Data + Processing
|
|
2211
|
+
*/
|
|
2009
2212
|
var parsedStory = hooks.useParsedStory(story, {
|
|
2010
2213
|
disabled: storyIsParsed
|
|
2011
2214
|
}) || {};
|
|
@@ -2017,20 +2220,59 @@ var Viewer = function Viewer(_ref) {
|
|
|
2017
2220
|
metadata = _parsedStory$metadata === void 0 ? null : _parsedStory$metadata,
|
|
2018
2221
|
_parsedStory$fonts = parsedStory.fonts,
|
|
2019
2222
|
fonts = _parsedStory$fonts === void 0 ? null : _parsedStory$fonts;
|
|
2223
|
+
var screensCount = screens.length;
|
|
2020
2224
|
var eventsManager = React.useMemo(function () {
|
|
2021
2225
|
return new EventEmitter__default["default"]();
|
|
2022
|
-
}, [parsedStory]);
|
|
2226
|
+
}, [parsedStory]);
|
|
2227
|
+
var screenIndex = React.useMemo(function () {
|
|
2228
|
+
return Math.max(0, screens.findIndex(function (it) {
|
|
2229
|
+
return "".concat(it.id) === "".concat(screenId);
|
|
2230
|
+
}));
|
|
2231
|
+
}, [screenId, screens]);
|
|
2232
|
+
var currentScreen = screens[screenIndex] || null;
|
|
2233
|
+
|
|
2234
|
+
var _ref2 = currentScreen || {},
|
|
2235
|
+
screenParameters = _ref2.parameters;
|
|
2236
|
+
|
|
2237
|
+
var _ref3 = screenParameters || {},
|
|
2238
|
+
screenMetadata = _ref3.metadata;
|
|
2239
|
+
|
|
2240
|
+
var _ref4 = screenMetadata || {},
|
|
2241
|
+
_ref4$title = _ref4.title,
|
|
2242
|
+
screenTitle = _ref4$title === void 0 ? null : _ref4$title,
|
|
2243
|
+
_ref4$description = _ref4.description,
|
|
2244
|
+
screenDescription = _ref4$description === void 0 ? null : _ref4$description;
|
|
2245
|
+
|
|
2246
|
+
var finalTitle = screenTitle !== null ? screenTitle : title;
|
|
2247
|
+
var finalMetadata = React.useMemo(function () {
|
|
2248
|
+
return screenDescription !== null ? _objectSpread__default["default"](_objectSpread__default["default"]({}, metadata), {}, {
|
|
2249
|
+
description: screenDescription
|
|
2250
|
+
}) : metadata;
|
|
2251
|
+
}, [metadata, screenDescription]);
|
|
2252
|
+
var screensMediasRef = React.useRef([]);
|
|
2253
|
+
|
|
2254
|
+
if (currentScreenMedia !== null) {
|
|
2255
|
+
currentScreenMedia.current = screensMediasRef.current[screenIndex] || null;
|
|
2256
|
+
}
|
|
2257
|
+
|
|
2258
|
+
if (screensMedias !== null) {
|
|
2259
|
+
screensMedias.current = screensMediasRef.current;
|
|
2260
|
+
}
|
|
2261
|
+
/**
|
|
2262
|
+
* Screen Layout
|
|
2263
|
+
*/
|
|
2023
2264
|
|
|
2024
|
-
var _ref2 = viewerTheme || {},
|
|
2025
|
-
textStyles = _ref2.textStyles;
|
|
2026
2265
|
|
|
2027
|
-
var
|
|
2028
|
-
|
|
2029
|
-
themeTextStyle = _ref3$title === void 0 ? null : _ref3$title;
|
|
2266
|
+
var _ref5 = viewerTheme || {},
|
|
2267
|
+
textStyles = _ref5.textStyles;
|
|
2030
2268
|
|
|
2031
|
-
var
|
|
2032
|
-
|
|
2033
|
-
|
|
2269
|
+
var _ref6 = textStyles || {},
|
|
2270
|
+
_ref6$title = _ref6.title,
|
|
2271
|
+
themeTextStyle = _ref6$title === void 0 ? null : _ref6$title;
|
|
2272
|
+
|
|
2273
|
+
var _ref7 = themeTextStyle || {},
|
|
2274
|
+
_ref7$fontFamily = _ref7.fontFamily,
|
|
2275
|
+
themeFont = _ref7$fontFamily === void 0 ? null : _ref7$fontFamily; // Fonts
|
|
2034
2276
|
|
|
2035
2277
|
|
|
2036
2278
|
var finalFonts = React.useMemo(function () {
|
|
@@ -2057,8 +2299,12 @@ var Viewer = function Viewer(_ref) {
|
|
|
2057
2299
|
_usePlaybackContext$m = _usePlaybackContext.media,
|
|
2058
2300
|
playbackMedia = _usePlaybackContext$m === void 0 ? null : _usePlaybackContext$m;
|
|
2059
2301
|
|
|
2060
|
-
var
|
|
2061
|
-
|
|
2302
|
+
var _useDimensionObserver = hooks.useDimensionObserver(),
|
|
2303
|
+
playbackControlsContainerRef = _useDimensionObserver.ref,
|
|
2304
|
+
_useDimensionObserver2 = _useDimensionObserver.height,
|
|
2305
|
+
playbackControlsContainerHeight = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2;
|
|
2306
|
+
|
|
2307
|
+
var trackScreenView = hooks.useTrackScreenView(); // Get screen size
|
|
2062
2308
|
|
|
2063
2309
|
var _useScreenSizeFromEle = hooks.useScreenSizeFromElement(_objectSpread__default["default"]({
|
|
2064
2310
|
width: width,
|
|
@@ -2069,21 +2315,26 @@ var Viewer = function Viewer(_ref) {
|
|
|
2069
2315
|
screenSize = _useScreenSizeFromEle.screenSize,
|
|
2070
2316
|
screenScale = _useScreenSizeFromEle.scale;
|
|
2071
2317
|
|
|
2072
|
-
var
|
|
2073
|
-
|
|
2074
|
-
screenWidth =
|
|
2075
|
-
|
|
2076
|
-
screenHeight =
|
|
2077
|
-
|
|
2078
|
-
landscape =
|
|
2079
|
-
|
|
2080
|
-
menuOverScreen =
|
|
2318
|
+
var _ref8 = screenSize || {},
|
|
2319
|
+
_ref8$width = _ref8.width,
|
|
2320
|
+
screenWidth = _ref8$width === void 0 ? null : _ref8$width,
|
|
2321
|
+
_ref8$height = _ref8.height,
|
|
2322
|
+
screenHeight = _ref8$height === void 0 ? null : _ref8$height,
|
|
2323
|
+
_ref8$landscape = _ref8.landscape,
|
|
2324
|
+
landscape = _ref8$landscape === void 0 ? false : _ref8$landscape,
|
|
2325
|
+
_ref8$menuOverScreen = _ref8.menuOverScreen,
|
|
2326
|
+
menuOverScreen = _ref8$menuOverScreen === void 0 ? false : _ref8$menuOverScreen;
|
|
2081
2327
|
|
|
2082
2328
|
var screenContainerWidth = screenScale !== null ? screenWidth * screenScale : screenWidth;
|
|
2083
2329
|
var screenContainerHeight = screenScale !== null ? screenHeight * screenScale : screenHeight;
|
|
2084
2330
|
var hasSize = screenWidth > 0 && screenHeight > 0;
|
|
2085
|
-
var ready = hasSize;
|
|
2086
|
-
|
|
2331
|
+
var ready = hasSize;
|
|
2332
|
+
var trackingEnabled = isView;
|
|
2333
|
+
React.useEffect(function () {
|
|
2334
|
+
if (trackingEnabled && currentScreen !== null) {
|
|
2335
|
+
trackScreenView(currentScreen, screenIndex);
|
|
2336
|
+
}
|
|
2337
|
+
}, [currentScreen, trackScreenView, trackingEnabled]);
|
|
2087
2338
|
React.useEffect(function () {
|
|
2088
2339
|
if (ready && onViewModeChange !== null) {
|
|
2089
2340
|
onViewModeChange({
|
|
@@ -2092,21 +2343,14 @@ var Viewer = function Viewer(_ref) {
|
|
|
2092
2343
|
});
|
|
2093
2344
|
}
|
|
2094
2345
|
}, [ready, landscape, menuOverScreen, onViewModeChange]);
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
return Math.max(0, screens.findIndex(function (it) {
|
|
2099
|
-
return "".concat(it.id) === "".concat(screenId);
|
|
2100
|
-
}));
|
|
2101
|
-
}, [screenId, screens]);
|
|
2102
|
-
|
|
2103
|
-
if (currentScreenMedia !== null) {
|
|
2104
|
-
currentScreenMedia.current = screensMediasRef.current[screenIndex] || null;
|
|
2105
|
-
}
|
|
2346
|
+
/**
|
|
2347
|
+
* Screen Transitions
|
|
2348
|
+
*/
|
|
2106
2349
|
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2350
|
+
var transitionType = landscape && withNeighborScreens ? DEFAULT_TRANSITION_TYPE_LANDSCAPE : DEFAULT_TRANSITION_TYPE_PORTRAIT;
|
|
2351
|
+
/**
|
|
2352
|
+
* Screen Navigation
|
|
2353
|
+
*/
|
|
2110
2354
|
|
|
2111
2355
|
var changeIndex = React.useCallback(function (index) {
|
|
2112
2356
|
if (index === screenIndex) {
|
|
@@ -2120,23 +2364,37 @@ var Viewer = function Viewer(_ref) {
|
|
|
2120
2364
|
if (onScreenChange !== null) {
|
|
2121
2365
|
onScreenChange(screens[index], index);
|
|
2122
2366
|
}
|
|
2123
|
-
}, [screenIndex, screens, onScreenChange]);
|
|
2367
|
+
}, [screenIndex, screens, onScreenChange]);
|
|
2368
|
+
var onScreenNavigate = React.useCallback(function (_ref9) {
|
|
2369
|
+
var index = _ref9.index,
|
|
2370
|
+
newIndex = _ref9.newIndex,
|
|
2371
|
+
end = _ref9.end,
|
|
2372
|
+
direction = _ref9.direction;
|
|
2124
2373
|
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
React.useEffect(function () {
|
|
2128
|
-
if (trackingEnabled && currentScreen !== null) {
|
|
2129
|
-
trackScreenView(currentScreen, screenIndex);
|
|
2374
|
+
if (end && onEnd !== null) {
|
|
2375
|
+
onEnd();
|
|
2130
2376
|
}
|
|
2131
|
-
}, [currentScreen, trackScreenView, trackingEnabled]); // Handle interaction enable
|
|
2132
2377
|
|
|
2378
|
+
changeIndex(newIndex);
|
|
2379
|
+
eventsManager.emit('navigate', {
|
|
2380
|
+
index: index,
|
|
2381
|
+
newIndex: newIndex,
|
|
2382
|
+
direction: direction,
|
|
2383
|
+
end: end
|
|
2384
|
+
});
|
|
2385
|
+
|
|
2386
|
+
if (end) {
|
|
2387
|
+
eventsManager.emit('navigate_end');
|
|
2388
|
+
} else {
|
|
2389
|
+
eventsManager.emit("navigate_".concat(direction), newIndex);
|
|
2390
|
+
}
|
|
2391
|
+
}, [onEnd, changeIndex]);
|
|
2133
2392
|
var gotoPreviousScreen = React.useCallback(function () {
|
|
2134
2393
|
changeIndex(Math.max(0, screenIndex - 1));
|
|
2135
|
-
}, [changeIndex]);
|
|
2394
|
+
}, [changeIndex, screenIndex]);
|
|
2136
2395
|
var gotoNextScreen = React.useCallback(function () {
|
|
2137
2396
|
changeIndex(Math.min(screens.length - 1, screenIndex + 1));
|
|
2138
|
-
}, [changeIndex]);
|
|
2139
|
-
var screensCount = screens.length;
|
|
2397
|
+
}, [changeIndex, screenIndex]);
|
|
2140
2398
|
|
|
2141
2399
|
var _useState = React.useState(false),
|
|
2142
2400
|
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
@@ -2152,37 +2410,12 @@ var Viewer = function Viewer(_ref) {
|
|
|
2152
2410
|
setHasInteracted(true);
|
|
2153
2411
|
}
|
|
2154
2412
|
}, [onInteraction, hasInteracted, setHasInteracted]);
|
|
2155
|
-
var onScreenNavigate = React.useCallback(function (_ref6) {
|
|
2156
|
-
var index = _ref6.index,
|
|
2157
|
-
newIndex = _ref6.newIndex,
|
|
2158
|
-
end = _ref6.end,
|
|
2159
|
-
direction = _ref6.direction;
|
|
2160
|
-
|
|
2161
|
-
if (end && onEnd !== null) {
|
|
2162
|
-
onEnd();
|
|
2163
|
-
}
|
|
2164
|
-
|
|
2165
|
-
changeIndex(newIndex);
|
|
2166
|
-
eventsManager.emit('navigate', {
|
|
2167
|
-
newIndex: newIndex,
|
|
2168
|
-
index: index,
|
|
2169
|
-
direction: direction,
|
|
2170
|
-
end: end
|
|
2171
|
-
});
|
|
2172
|
-
|
|
2173
|
-
if (end) {
|
|
2174
|
-
eventsManager.emit('navigate_end');
|
|
2175
|
-
} else {
|
|
2176
|
-
eventsManager.emit("navigate_".concat(direction), newIndex);
|
|
2177
|
-
}
|
|
2178
|
-
}, [onEnd, changeIndex]);
|
|
2179
2413
|
|
|
2180
2414
|
var _useScreenInteraction = useScreenInteraction({
|
|
2181
2415
|
screens: screens,
|
|
2182
2416
|
screenIndex: screenIndex,
|
|
2183
2417
|
screenWidth: screenContainerWidth,
|
|
2184
2418
|
disableCurrentScreenNavigation: !isView,
|
|
2185
|
-
clickOnSiblings: landscape && withLandscapeSiblingsScreens,
|
|
2186
2419
|
nextScreenWidthPercent: tapNextScreenWidthPercent,
|
|
2187
2420
|
onInteract: onInteractionPrivate,
|
|
2188
2421
|
onNavigate: onScreenNavigate
|
|
@@ -2190,102 +2423,127 @@ var Viewer = function Viewer(_ref) {
|
|
|
2190
2423
|
interactWithScreen = _useScreenInteraction.interact,
|
|
2191
2424
|
currentScreenInteractionEnabled = _useScreenInteraction.currentScreenInteractionEnabled,
|
|
2192
2425
|
enableInteraction = _useScreenInteraction.enableInteraction,
|
|
2193
|
-
disableInteraction = _useScreenInteraction.disableInteraction;
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
var
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
|
|
2228
|
-
|
|
2229
|
-
|
|
2230
|
-
|
|
2426
|
+
disableInteraction = _useScreenInteraction.disableInteraction;
|
|
2427
|
+
|
|
2428
|
+
var onTap = React.useCallback(function (_ref10) {
|
|
2429
|
+
var currentTarget = _ref10.currentTarget,
|
|
2430
|
+
event = _ref10.event,
|
|
2431
|
+
target = _ref10.target,
|
|
2432
|
+
_ref10$xy = _slicedToArray__default["default"](_ref10.xy, 2),
|
|
2433
|
+
x = _ref10$xy[0],
|
|
2434
|
+
y = _ref10$xy[1];
|
|
2435
|
+
|
|
2436
|
+
interactWithScreen({
|
|
2437
|
+
event: event,
|
|
2438
|
+
target: target,
|
|
2439
|
+
currentTarget: currentTarget,
|
|
2440
|
+
index: screenIndex,
|
|
2441
|
+
x: x,
|
|
2442
|
+
y: y
|
|
2443
|
+
});
|
|
2444
|
+
}, [interactWithScreen, screenIndex]);
|
|
2445
|
+
var computeScreenProgress = React.useCallback(function (_ref11) {
|
|
2446
|
+
var active = _ref11.active,
|
|
2447
|
+
_ref11$movement = _slicedToArray__default["default"](_ref11.movement, 1),
|
|
2448
|
+
mx = _ref11$movement[0],
|
|
2449
|
+
_ref11$velocity = _slicedToArray__default["default"](_ref11.velocity, 1),
|
|
2450
|
+
vx = _ref11$velocity[0];
|
|
2451
|
+
|
|
2452
|
+
var p = mx / screenContainerWidth; // drag "ratio": how much of the screen width has been swiped?
|
|
2453
|
+
|
|
2454
|
+
var forwards = mx < 0; // true if swiping to left (to navigate forwards)
|
|
2455
|
+
|
|
2456
|
+
var newIndex = !forwards ? screenIndex - 1 : screenIndex + 1; // which item index are we moving towards?
|
|
2457
|
+
|
|
2458
|
+
var reachedThreshold = vx > DRAG_VELOCITY_ACTIVATION_THRESHOLD || Math.abs(p) > DRAG_PROGRESS_ACTIVATION_THRESHOLD;
|
|
2459
|
+
var reachedBounds = newIndex < 0 || newIndex >= screensCount; // have we reached the end of the stack?
|
|
2460
|
+
|
|
2461
|
+
var damper = reachedBounds ? 0.1 : 1;
|
|
2462
|
+
var progress = Math.max(-1, Math.min(1, p * damper));
|
|
2463
|
+
|
|
2464
|
+
if (!active) {
|
|
2465
|
+
return reachedThreshold && !reachedBounds ? newIndex : screenIndex;
|
|
2231
2466
|
}
|
|
2232
2467
|
|
|
2233
|
-
|
|
2234
|
-
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
2238
|
-
|
|
2468
|
+
return screenIndex - progress;
|
|
2469
|
+
}, [screenContainerWidth, screenIndex]);
|
|
2470
|
+
var onScreenProgress = React.useCallback(function (progress, _ref12) {
|
|
2471
|
+
var active = _ref12.active;
|
|
2472
|
+
var delta = Math.abs(progress - screenIndex);
|
|
2473
|
+
var reachedBounds = progress < 0 || progress >= screensCount; // have we reached the end of the stack?
|
|
2239
2474
|
|
|
2240
|
-
|
|
2241
|
-
var nextIndex = hasTappedLeft ? Math.max(0, screenIndex - 1) : Math.min(screensCount - 1, screenIndex + 1);
|
|
2475
|
+
if (!active && delta === 1 && !reachedBounds) {
|
|
2242
2476
|
onScreenNavigate({
|
|
2243
2477
|
index: screenIndex,
|
|
2244
|
-
newIndex:
|
|
2478
|
+
newIndex: progress
|
|
2245
2479
|
});
|
|
2246
2480
|
}
|
|
2247
|
-
}, [
|
|
2248
|
-
var
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
|
|
2481
|
+
}, [onScreenNavigate, screenIndex]);
|
|
2482
|
+
var springParams = React.useMemo(function () {
|
|
2483
|
+
return {
|
|
2484
|
+
config: SPRING_CONFIG_TIGHT
|
|
2485
|
+
};
|
|
2486
|
+
}, []);
|
|
2487
|
+
|
|
2488
|
+
var _useDragProgress = hooks.useDragProgress({
|
|
2489
|
+
progress: screenIndex,
|
|
2490
|
+
disabled: !isView,
|
|
2491
|
+
dragDisabled: withoutGestures,
|
|
2492
|
+
computeProgress: computeScreenProgress,
|
|
2493
|
+
onProgress: onScreenProgress,
|
|
2494
|
+
onTap: onTap,
|
|
2495
|
+
springParams: springParams
|
|
2496
|
+
}),
|
|
2497
|
+
isDragging = _useDragProgress.dragging,
|
|
2498
|
+
screenIndexProgress = _useDragProgress.progress,
|
|
2499
|
+
dragContentBind = _useDragProgress.bind;
|
|
2500
|
+
|
|
2501
|
+
var getScreenStylesByIndex = function getScreenStylesByIndex(index, progress) {
|
|
2502
|
+
if (transitionType === 'stack') {
|
|
2503
|
+
var _t = index - progress;
|
|
2504
|
+
|
|
2505
|
+
var _clamped = Math.min(1, Math.max(0, _t));
|
|
2253
2506
|
|
|
2254
|
-
|
|
2255
|
-
|
|
2507
|
+
var invert = Math.min(1, Math.max(0, -_t));
|
|
2508
|
+
var opacity = Math.max(0, 1 - 0.75 * invert + (_t + 1));
|
|
2509
|
+
return {
|
|
2510
|
+
opacity: opacity,
|
|
2511
|
+
transform: "translateX(".concat(_clamped * 100, "%) scale(").concat(1 - 0.2 * invert, ")"),
|
|
2512
|
+
boxShadow: "0 0 ".concat(4 * (1 - _clamped), "rem ").concat(-0.5 * (1 - _clamped), "rem black"),
|
|
2513
|
+
zIndex: index
|
|
2514
|
+
};
|
|
2256
2515
|
}
|
|
2257
|
-
}, [withLandscapeSiblingsScreens, changeIndex, landscape, screenIndex]); // swipe menu open
|
|
2258
2516
|
|
|
2259
|
-
|
|
2517
|
+
var t = index - progress;
|
|
2518
|
+
var clamped = Math.min(1, Math.max(0, Math.abs(t)));
|
|
2519
|
+
return {
|
|
2520
|
+
opacity: 1 - 0.75 * clamped,
|
|
2521
|
+
transform: "translateX(".concat(t * 105, "%) scale(").concat(1 - 0.2 * clamped, ")"),
|
|
2522
|
+
zIndex: screensCount - index
|
|
2523
|
+
};
|
|
2524
|
+
};
|
|
2260
2525
|
|
|
2261
|
-
var
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
var
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
}, [changeIndex, onInteractionPrivate, setMenuOpened]);
|
|
2276
|
-
var onClickMenuItem = React.useCallback(function (_ref10) {
|
|
2277
|
-
var itemScreenId = _ref10.screenId;
|
|
2526
|
+
var _useFullscreen = hooks.useFullscreen(containerRef.current || null),
|
|
2527
|
+
toggleFullscreen = _useFullscreen.toggle,
|
|
2528
|
+
fullscreenActive = _useFullscreen.active,
|
|
2529
|
+
fullscreenEnabled = _useFullscreen.enabled;
|
|
2530
|
+
|
|
2531
|
+
var menuVisible = screensCount === 0 || currentScreenInteractionEnabled; // Get element height
|
|
2532
|
+
|
|
2533
|
+
var _useDimensionObserver3 = hooks.useDimensionObserver(),
|
|
2534
|
+
menuDotsContainerRef = _useDimensionObserver3.ref,
|
|
2535
|
+
_useDimensionObserver4 = _useDimensionObserver3.height,
|
|
2536
|
+
menuDotsContainerHeight = _useDimensionObserver4 === void 0 ? 0 : _useDimensionObserver4;
|
|
2537
|
+
|
|
2538
|
+
var onClickScreen = React.useCallback(function (_ref13) {
|
|
2539
|
+
var itemScreenId = _ref13.screenId;
|
|
2278
2540
|
onInteractionPrivate();
|
|
2279
|
-
var index = screens.findIndex(function (
|
|
2280
|
-
var id =
|
|
2541
|
+
var index = screens.findIndex(function (_ref14) {
|
|
2542
|
+
var id = _ref14.id;
|
|
2281
2543
|
return id === itemScreenId;
|
|
2282
2544
|
});
|
|
2283
2545
|
changeIndex(index);
|
|
2284
|
-
|
|
2285
|
-
if (menuOpened) {
|
|
2286
|
-
setMenuOpened(false);
|
|
2287
|
-
}
|
|
2288
|
-
}, [onInteractionPrivate, changeIndex, menuOpened, setMenuOpened]);
|
|
2546
|
+
}, [onInteractionPrivate, changeIndex]);
|
|
2289
2547
|
var onContextMenu = React.useCallback(function (e) {
|
|
2290
2548
|
if (!landscape) {
|
|
2291
2549
|
e.preventDefault();
|
|
@@ -2293,28 +2551,16 @@ var Viewer = function Viewer(_ref) {
|
|
|
2293
2551
|
}
|
|
2294
2552
|
|
|
2295
2553
|
return true;
|
|
2296
|
-
}, [landscape]);
|
|
2554
|
+
}, [landscape]); // hmm?
|
|
2555
|
+
|
|
2297
2556
|
var overscrollStyle = /*#__PURE__*/React__default["default"].createElement("style", {
|
|
2298
2557
|
type: "text/css"
|
|
2299
|
-
}, "body { overscroll-behavior: contain; }");
|
|
2300
|
-
|
|
2301
|
-
var _useFullscreen = hooks.useFullscreen(containerRef.current || null),
|
|
2302
|
-
toggleFullscreen = _useFullscreen.toggle,
|
|
2303
|
-
fullscreenActive = _useFullscreen.active,
|
|
2304
|
-
fullscreenEnabled = _useFullscreen.enabled; // Keyboard Events
|
|
2305
|
-
|
|
2306
|
-
|
|
2558
|
+
}, "body { overscroll-behavior: contain; }");
|
|
2307
2559
|
var keyboardShortcuts = React.useMemo(function () {
|
|
2308
2560
|
return {
|
|
2309
2561
|
f: function f() {
|
|
2310
2562
|
return toggleFullscreen();
|
|
2311
2563
|
},
|
|
2312
|
-
m: function m() {
|
|
2313
|
-
return setMenuOpened(!menuOpened);
|
|
2314
|
-
},
|
|
2315
|
-
escape: function escape() {
|
|
2316
|
-
return setMenuOpened(false);
|
|
2317
|
-
},
|
|
2318
2564
|
arrowleft: function arrowleft() {
|
|
2319
2565
|
return gotoPreviousScreen();
|
|
2320
2566
|
},
|
|
@@ -2325,55 +2571,10 @@ var Viewer = function Viewer(_ref) {
|
|
|
2325
2571
|
return gotoNextScreen();
|
|
2326
2572
|
}
|
|
2327
2573
|
};
|
|
2328
|
-
}, [
|
|
2574
|
+
}, [gotoPreviousScreen, gotoNextScreen]);
|
|
2329
2575
|
useKeyboardShortcuts(keyboardShortcuts, {
|
|
2330
2576
|
disabled: renderContext !== 'view'
|
|
2331
2577
|
});
|
|
2332
|
-
|
|
2333
|
-
var _ref12 = currentScreen || {},
|
|
2334
|
-
screenParameters = _ref12.parameters;
|
|
2335
|
-
|
|
2336
|
-
var _ref13 = screenParameters || {},
|
|
2337
|
-
screenMetadata = _ref13.metadata;
|
|
2338
|
-
|
|
2339
|
-
var _ref14 = screenMetadata || {},
|
|
2340
|
-
_ref14$title = _ref14.title,
|
|
2341
|
-
screenTitle = _ref14$title === void 0 ? null : _ref14$title,
|
|
2342
|
-
_ref14$description = _ref14.description,
|
|
2343
|
-
screenDescription = _ref14$description === void 0 ? null : _ref14$description;
|
|
2344
|
-
|
|
2345
|
-
var finalTitle = screenTitle !== null ? screenTitle : title;
|
|
2346
|
-
var finalMetadata = React.useMemo(function () {
|
|
2347
|
-
return screenDescription !== null ? _objectSpread__default["default"](_objectSpread__default["default"]({}, metadata), {}, {
|
|
2348
|
-
description: screenDescription
|
|
2349
|
-
}) : metadata;
|
|
2350
|
-
}, [metadata, screenDescription]); // Get element height
|
|
2351
|
-
|
|
2352
|
-
var _useDimensionObserver = hooks.useDimensionObserver(),
|
|
2353
|
-
menuDotsContainerRef = _useDimensionObserver.ref,
|
|
2354
|
-
_useDimensionObserver2 = _useDimensionObserver.height,
|
|
2355
|
-
menuDotsContainerHeight = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2;
|
|
2356
|
-
|
|
2357
|
-
var _useDimensionObserver3 = hooks.useDimensionObserver(),
|
|
2358
|
-
playbackControlsContainerRef = _useDimensionObserver3.ref,
|
|
2359
|
-
_useDimensionObserver4 = _useDimensionObserver3.height,
|
|
2360
|
-
playbackControlsContainerHeight = _useDimensionObserver4 === void 0 ? 0 : _useDimensionObserver4;
|
|
2361
|
-
|
|
2362
|
-
var _useMemo = React.useMemo(function () {
|
|
2363
|
-
return neighborScreensMounted !== null ? {
|
|
2364
|
-
startIndex: Math.max(screenIndex - (neighborScreensActive + neighborScreensMounted), 0),
|
|
2365
|
-
endIndex: Math.min(screenIndex + (neighborScreensActive + neighborScreensMounted), screensCount)
|
|
2366
|
-
} : {
|
|
2367
|
-
startIndex: 0,
|
|
2368
|
-
endIndex: screensCount - 1
|
|
2369
|
-
};
|
|
2370
|
-
}, [screenIndex, neighborScreensActive, neighborScreensMounted, screensCount]),
|
|
2371
|
-
mountedScreenStartIndex = _useMemo.startIndex,
|
|
2372
|
-
mountedScreenEndIndex = _useMemo.endIndex;
|
|
2373
|
-
|
|
2374
|
-
var mountedScreens = React.useMemo(function () {
|
|
2375
|
-
return neighborScreensMounted != null ? screens.slice(mountedScreenStartIndex, mountedScreenEndIndex) : screens;
|
|
2376
|
-
}, [screens, mountedScreenStartIndex, mountedScreenEndIndex, neighborScreensActive, neighborScreensMounted]);
|
|
2377
2578
|
return /*#__PURE__*/React__default["default"].createElement(contexts.VisitorProvider, {
|
|
2378
2579
|
visitor: visitor
|
|
2379
2580
|
}, /*#__PURE__*/React__default["default"].createElement(contexts.ScreenSizeProvider, {
|
|
@@ -2398,13 +2599,12 @@ var Viewer = function Viewer(_ref) {
|
|
|
2398
2599
|
}), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2399
2600
|
className: classNames__default["default"]([styles$6.container, screenSize.screens.map(function (screenName) {
|
|
2400
2601
|
return "story-screen-".concat(screenName);
|
|
2401
|
-
}), (_ref15 = {}, _defineProperty__default["default"](_ref15, styles$6.landscape, landscape), _defineProperty__default["default"](_ref15, styles$6.
|
|
2602
|
+
}), (_ref15 = {}, _defineProperty__default["default"](_ref15, styles$6.landscape, landscape), _defineProperty__default["default"](_ref15, styles$6.withoutGestures, withoutGestures), _defineProperty__default["default"](_ref15, styles$6.hideMenu, !menuVisible), _defineProperty__default["default"](_ref15, styles$6.fadeMenu, playing && playbackControls && !playbackcontrolsVisible), _defineProperty__default["default"](_ref15, styles$6.ready, ready || withoutScreensTransforms), _defineProperty__default["default"](_ref15, styles$6.hasInteracted, hasInteracted), _defineProperty__default["default"](_ref15, styles$6.isDragging, isDragging), _defineProperty__default["default"](_ref15, className, className), _ref15)]),
|
|
2402
2603
|
ref: containerRef,
|
|
2403
2604
|
onContextMenu: onContextMenu
|
|
2404
2605
|
}, !withoutMenu ? /*#__PURE__*/React__default["default"].createElement(ViewerMenu, {
|
|
2405
2606
|
story: parsedStory,
|
|
2406
2607
|
currentScreenIndex: screenIndex,
|
|
2407
|
-
opened: menuOpened,
|
|
2408
2608
|
withShadow: menuOverScreen && !withoutMenuShadow,
|
|
2409
2609
|
toggleFullscreen: toggleFullscreen,
|
|
2410
2610
|
fullscreenActive: fullscreenActive,
|
|
@@ -2414,93 +2614,64 @@ var Viewer = function Viewer(_ref) {
|
|
|
2414
2614
|
screenSize: screenSize,
|
|
2415
2615
|
menuWidth: menuIsScreenWidth ? screenContainerWidth : null,
|
|
2416
2616
|
trackingEnabled: trackingEnabled,
|
|
2417
|
-
|
|
2418
|
-
onClickMenu: onClickMenu,
|
|
2617
|
+
onClickScreen: onClickScreen,
|
|
2419
2618
|
onClickCloseViewer: onCloseViewer,
|
|
2420
|
-
onRequestOpen: onMenuRequestOpen,
|
|
2421
|
-
onRequestClose: onMenuRequestClose,
|
|
2422
2619
|
withDotItemClick: screenContainerWidth > 400,
|
|
2423
2620
|
withoutScreensMenu: withoutScreensMenu,
|
|
2621
|
+
withoutShareMenu: withoutShareMenu,
|
|
2424
2622
|
refDots: menuDotsContainerRef
|
|
2425
2623
|
}) : null, ready || withoutScreensTransforms ? /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
|
|
2426
|
-
ref: contentRef,
|
|
2427
2624
|
className: styles$6.content
|
|
2428
|
-
}, dragContentBind()),
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
} else {
|
|
2439
|
-
screenTransform = "translateX(".concat(current ? 0 : '100%', ")");
|
|
2625
|
+
}, dragContentBind()), !withoutNavigationArrow && !withNeighborScreens && screenIndex > 0 && screens.length > 1 ? /*#__PURE__*/React__default["default"].createElement(NavigationButton, {
|
|
2626
|
+
direction: "previous",
|
|
2627
|
+
className: classNames__default["default"]([styles$6.navButton, styles$6.previous]),
|
|
2628
|
+
onClick: gotoPreviousScreen
|
|
2629
|
+
}) : null, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2630
|
+
className: styles$6.screensFrame,
|
|
2631
|
+
style: {
|
|
2632
|
+
width: screenContainerWidth,
|
|
2633
|
+
height: screenContainerHeight,
|
|
2634
|
+
overflow: !withNeighborScreens ? 'hidden' : null
|
|
2440
2635
|
}
|
|
2636
|
+
}, screens.map(function (screen, i) {
|
|
2637
|
+
// const current = i === parseInt(screenIndex, 10);
|
|
2638
|
+
var current = i === Math.round(screenIndexProgress); // base current on transition
|
|
2441
2639
|
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
className: classNames__default["default"]([styles$6.screenContainer,
|
|
2451
|
-
|
|
2452
|
-
tabIndex: !active ? -1 : null,
|
|
2453
|
-
"aria-hidden": !current,
|
|
2454
|
-
"aria-label": intl.formatMessage({
|
|
2455
|
-
id: "LkVfwW",
|
|
2456
|
-
defaultMessage: [{
|
|
2457
|
-
"type": 0,
|
|
2458
|
-
"value": "Screen "
|
|
2459
|
-
}, {
|
|
2460
|
-
"type": 1,
|
|
2461
|
-
"value": "index"
|
|
2462
|
-
}]
|
|
2463
|
-
}, {
|
|
2464
|
-
index: i + 1
|
|
2465
|
-
}),
|
|
2466
|
-
onKeyUp: function onKeyUp(e) {
|
|
2467
|
-
return onScreenKeyUp(e, i);
|
|
2468
|
-
}
|
|
2469
|
-
}, dragScreenBind(i)), current && screenIndex > 0 ? /*#__PURE__*/React__default["default"].createElement(NavigationButton, {
|
|
2470
|
-
direction: "previous",
|
|
2471
|
-
className: classNames__default["default"]([styles$6.navButton, styles$6.previous]),
|
|
2472
|
-
onClick: gotoPreviousScreen
|
|
2473
|
-
}) : null, mountedScreen !== null ? /*#__PURE__*/React__default["default"].createElement(ViewerScreen, {
|
|
2640
|
+
var active = i >= screenIndex - neighborScreensActive && i <= screenIndex + neighborScreensActive;
|
|
2641
|
+
var defaultStyles = {
|
|
2642
|
+
opacity: current ? 1 : 0
|
|
2643
|
+
};
|
|
2644
|
+
var screenStyles = active ? getScreenStylesByIndex(i, screenIndexProgress) : defaultStyles;
|
|
2645
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2646
|
+
key: "screen-viewer-".concat(screen.id || '', "-").concat(i + 1),
|
|
2647
|
+
style: screenStyles,
|
|
2648
|
+
className: classNames__default["default"]([styles$6.screenContainer, _defineProperty__default["default"]({}, styles$6.current, current)])
|
|
2649
|
+
}, screen !== null && active ? /*#__PURE__*/React__default["default"].createElement(ViewerScreen, {
|
|
2474
2650
|
className: styles$6.screen,
|
|
2475
|
-
screen:
|
|
2651
|
+
screen: screen,
|
|
2476
2652
|
screenState: current ? screenState : null,
|
|
2477
|
-
renderContext: renderContext,
|
|
2478
2653
|
index: i,
|
|
2479
2654
|
current: current,
|
|
2480
2655
|
active: active,
|
|
2481
2656
|
mediaRef: function mediaRef(ref) {
|
|
2482
2657
|
screensMediasRef.current[i] = ref;
|
|
2483
2658
|
},
|
|
2659
|
+
renderContext: renderContext,
|
|
2484
2660
|
width: screenWidth,
|
|
2485
2661
|
height: screenHeight,
|
|
2486
2662
|
scale: screenScale,
|
|
2487
|
-
withNavigationHint: withNavigationHint && !
|
|
2488
|
-
}) : null
|
|
2489
|
-
|
|
2490
|
-
|
|
2491
|
-
|
|
2492
|
-
|
|
2493
|
-
}), !withoutPlaybackControls ? /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2663
|
+
withNavigationHint: withNavigationHint && !withNeighborScreens && current && screenIndex === 0 && !hasInteracted
|
|
2664
|
+
}) : null);
|
|
2665
|
+
})), !withoutNavigationArrow && !withNeighborScreens && screenIndex < screens.length - 1 ? /*#__PURE__*/React__default["default"].createElement(NavigationButton, {
|
|
2666
|
+
direction: "next",
|
|
2667
|
+
className: classNames__default["default"]([styles$6.navButton, styles$6.next]),
|
|
2668
|
+
onClick: gotoNextScreen
|
|
2669
|
+
}) : null, !withoutPlaybackControls ? /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2494
2670
|
className: styles$6.playbackControls,
|
|
2495
2671
|
ref: playbackControlsContainerRef
|
|
2496
|
-
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2497
|
-
className: styles$6.playbackControlsContainer,
|
|
2498
|
-
style: {
|
|
2499
|
-
width: screenContainerWidth
|
|
2500
|
-
}
|
|
2501
2672
|
}, /*#__PURE__*/React__default["default"].createElement(PlaybackControls, {
|
|
2502
2673
|
className: styles$6.controls
|
|
2503
|
-
}))
|
|
2674
|
+
})) : null) : null, /*#__PURE__*/React__default["default"].createElement(WebViewContainer, {
|
|
2504
2675
|
className: styles$6.webView,
|
|
2505
2676
|
style: {
|
|
2506
2677
|
maxWidth: Math.max(screenContainerWidth, 600)
|
|
@@ -2513,7 +2684,7 @@ Viewer.defaultProps = defaultProps$2;
|
|
|
2513
2684
|
|
|
2514
2685
|
var _excluded$1 = ["story", "pathWithIndex", "children", "onScreenChange"];
|
|
2515
2686
|
var propTypes$1 = {
|
|
2516
|
-
story: core
|
|
2687
|
+
story: core.PropTypes.story,
|
|
2517
2688
|
// .isRequired,
|
|
2518
2689
|
pathWithIndex: PropTypes__default["default"].bool,
|
|
2519
2690
|
children: PropTypes__default["default"].func,
|
|
@@ -2590,7 +2761,7 @@ var defaultRoutes = {
|
|
|
2590
2761
|
|
|
2591
2762
|
var _excluded = ["story", "screenComponents", "memoryRouter", "basePath", "routes", "withoutRouter", "googleApiKey", "trackingVariables", "locale", "locales", "translations", "pathWithIndex"];
|
|
2592
2763
|
var propTypes = {
|
|
2593
|
-
story: core
|
|
2764
|
+
story: core.PropTypes.story,
|
|
2594
2765
|
screen: PropTypes__default["default"].string,
|
|
2595
2766
|
screenComponents: PropTypes__default["default"].objectOf(PropTypes__default["default"].elementType),
|
|
2596
2767
|
memoryRouter: PropTypes__default["default"].bool,
|
|
@@ -2598,7 +2769,7 @@ var propTypes = {
|
|
|
2598
2769
|
routes: routes,
|
|
2599
2770
|
withoutRouter: PropTypes__default["default"].bool,
|
|
2600
2771
|
googleApiKey: PropTypes__default["default"].string,
|
|
2601
|
-
trackingVariables: core
|
|
2772
|
+
trackingVariables: core.PropTypes.trackingVariables,
|
|
2602
2773
|
locale: PropTypes__default["default"].string,
|
|
2603
2774
|
locales: PropTypes__default["default"].arrayOf(PropTypes__default["default"].string),
|
|
2604
2775
|
translations: PropTypes__default["default"].objectOf(PropTypes__default["default"].string),
|