@micromag/viewer 0.3.480 → 0.3.482

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -4,17 +4,22 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
6
6
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
7
- var routes$1 = require('@folklore/routes');
8
- var PropTypes = require('prop-types');
7
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
9
8
  var React = require('react');
10
- var wouter = require('wouter');
9
+ var PropTypes = require('prop-types');
10
+ var jsxRuntime = require('react/jsx-runtime');
11
+ var pathToRegexp = require('path-to-regexp');
12
+ var mitt = require('mitt');
13
+ var _createForOfIteratorHelper = require('@babel/runtime/helpers/createForOfIteratorHelper');
14
+ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
15
+ var _toArray = require('@babel/runtime/helpers/toArray');
16
+ var regexparam = require('regexparam');
17
+ var index_js = require('use-sync-external-store/shim/index.js');
11
18
  var core = require('@micromag/core');
12
19
  var contexts = require('@micromag/core/contexts');
13
20
  var intl = require('@micromag/intl');
14
21
  var screens = require('@micromag/screens');
15
22
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
16
- var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
17
- var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
18
23
  var web = require('@react-spring/web');
19
24
  var classNames = require('classnames');
20
25
  var reactHelmet = require('react-helmet');
@@ -24,13 +29,545 @@ var hooks = require('@micromag/core/hooks');
24
29
  var utils = require('@micromag/core/utils');
25
30
  var all = require('@micromag/elements/all');
26
31
  var reactIntl = require('react-intl');
27
- var reactRouterDom = require('react-router-dom');
28
32
  var core$1 = require('@react-spring/core');
29
33
  var Scroll = require('@micromag/element-scroll');
30
34
  var ShareOptions = require('@micromag/element-share-options');
31
35
  var react = require('@use-gesture/react');
32
36
  var WebView = require('@micromag/element-webview');
33
37
 
38
+ function _interopNamespaceDefault(e) {
39
+ var n = Object.create(null);
40
+ if (e) {
41
+ Object.keys(e).forEach(function (k) {
42
+ if (k !== 'default') {
43
+ var d = Object.getOwnPropertyDescriptor(e, k);
44
+ Object.defineProperty(n, k, d.get ? d : {
45
+ enumerable: true,
46
+ get: function () { return e[k]; }
47
+ });
48
+ }
49
+ });
50
+ }
51
+ n.default = e;
52
+ return Object.freeze(n);
53
+ }
54
+
55
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
56
+
57
+ // React.useInsertionEffect is not available in React <18
58
+ var useEffect = React__namespace.useEffect,
59
+ useLayoutEffect = React__namespace.useLayoutEffect,
60
+ useRef = React__namespace.useRef,
61
+ useBuiltinInsertionEffect = React__namespace.useInsertionEffect;
62
+
63
+ // Copied from:
64
+ // https://github.com/facebook/react/blob/main/packages/shared/ExecutionEnvironment.js
65
+ var canUseDOM = !!(typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined");
66
+
67
+ // Copied from:
68
+ // https://github.com/reduxjs/react-redux/blob/master/src/utils/useIsomorphicLayoutEffect.ts
69
+ // "React currently throws a warning when using useLayoutEffect on the server.
70
+ // To get around it, we can conditionally useEffect on the server (no-op) and
71
+ // useLayoutEffect in the browser."
72
+ var useIsomorphicLayoutEffect = canUseDOM ? useLayoutEffect : useEffect;
73
+
74
+ // useInsertionEffect is already a noop on the server.
75
+ // See: https://github.com/facebook/react/blob/main/packages/react-server/src/ReactFizzHooks.js
76
+ var useInsertionEffect = useBuiltinInsertionEffect || useIsomorphicLayoutEffect;
77
+
78
+ // Userland polyfill while we wait for the forthcoming
79
+ // https://github.com/reactjs/rfcs/blob/useevent/text/0000-useevent.md
80
+ // Note: "A high-fidelity polyfill for useEvent is not possible because
81
+ // there is no lifecycle or Hook in React that we can use to switch
82
+ // .current at the right timing."
83
+ // So we will have to make do with this "close enough" approach for now.
84
+ var useEvent = function useEvent(fn) {
85
+ var ref = useRef([fn, function () {
86
+ return ref[0].apply(ref, arguments);
87
+ }]).current;
88
+ // Per Dan Abramov: useInsertionEffect executes marginally closer to the
89
+ // correct timing for ref synchronization than useLayoutEffect on React 18.
90
+ // See: https://github.com/facebook/react/pull/25881#issuecomment-1356244360
91
+ useInsertionEffect(function () {
92
+ ref[0] = fn;
93
+ });
94
+ return ref[1];
95
+ };
96
+
97
+ /**
98
+ * History API docs @see https://developer.mozilla.org/en-US/docs/Web/API/History
99
+ */
100
+ var eventPopstate = "popstate";
101
+ var eventPushState = "pushState";
102
+ var eventReplaceState = "replaceState";
103
+ var eventHashchange = "hashchange";
104
+ var events = [eventPopstate, eventPushState, eventReplaceState, eventHashchange];
105
+ var subscribeToLocationUpdates = function subscribeToLocationUpdates(callback) {
106
+ for (var _i = 0, _events = events; _i < _events.length; _i++) {
107
+ var event = _events[_i];
108
+ addEventListener(event, callback);
109
+ }
110
+ return function () {
111
+ for (var _i2 = 0, _events2 = events; _i2 < _events2.length; _i2++) {
112
+ var _event = _events2[_i2];
113
+ removeEventListener(_event, callback);
114
+ }
115
+ };
116
+ };
117
+ var useLocationProperty = function useLocationProperty(fn, ssrFn) {
118
+ return index_js.useSyncExternalStore(subscribeToLocationUpdates, fn, ssrFn);
119
+ };
120
+ var currentSearch = function currentSearch() {
121
+ return location.search;
122
+ };
123
+ var useSearch = function useSearch() {
124
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
125
+ _ref$ssrSearch = _ref.ssrSearch,
126
+ ssrSearch = _ref$ssrSearch === void 0 ? "" : _ref$ssrSearch;
127
+ return useLocationProperty(currentSearch, function () {
128
+ return ssrSearch;
129
+ });
130
+ };
131
+ var currentPathname = function currentPathname() {
132
+ return location.pathname;
133
+ };
134
+ var usePathname = function usePathname() {
135
+ var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
136
+ ssrPath = _ref2.ssrPath;
137
+ return useLocationProperty(currentPathname, ssrPath ? function () {
138
+ return ssrPath;
139
+ } : currentPathname);
140
+ };
141
+ var navigate = function navigate(to) {
142
+ var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
143
+ _ref3$replace = _ref3.replace,
144
+ replace = _ref3$replace === void 0 ? false : _ref3$replace,
145
+ _ref3$state = _ref3.state,
146
+ state = _ref3$state === void 0 ? null : _ref3$state;
147
+ return history[replace ? eventReplaceState : eventPushState](state, "", to);
148
+ };
149
+
150
+ // the 2nd argument of the `useBrowserLocation` return value is a function
151
+ // that allows to perform a navigation.
152
+ var useBrowserLocation = function useBrowserLocation() {
153
+ var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
154
+ return [usePathname(opts), navigate];
155
+ };
156
+ var patchKey = Symbol["for"]("wouter_v3");
157
+
158
+ // While History API does have `popstate` event, the only
159
+ // proper way to listen to changes via `push/replaceState`
160
+ // is to monkey-patch these methods.
161
+ //
162
+ // See https://stackoverflow.com/a/4585031
163
+ if (typeof history !== "undefined" && typeof window[patchKey] === "undefined") {
164
+ var _loop = function _loop() {
165
+ var type = _arr[_i3];
166
+ var original = history[type];
167
+ // TODO: we should be using unstable_batchedUpdates to avoid multiple re-renders,
168
+ // however that will require an additional peer dependency on react-dom.
169
+ // See: https://github.com/reactwg/react-18/discussions/86#discussioncomment-1567149
170
+ history[type] = function () {
171
+ var result = original.apply(this, arguments);
172
+ var event = new Event(type);
173
+ event.arguments = arguments;
174
+ dispatchEvent(event);
175
+ return result;
176
+ };
177
+ };
178
+ for (var _i3 = 0, _arr = [eventPushState, eventReplaceState]; _i3 < _arr.length; _i3++) {
179
+ _loop();
180
+ }
181
+
182
+ // patch history object only once
183
+ // See: https://github.com/molefrog/wouter/issues/167
184
+ Object.defineProperty(window, patchKey, {
185
+ value: true
186
+ });
187
+ }
188
+
189
+ var _excluded$a = ["children"],
190
+ _excluded2 = ["path", "nest", "match"],
191
+ _excluded3 = ["to", "href", "onClick", "asChild", "children", "replace", "state"];
192
+
193
+ /*
194
+ * Transforms `path` into its relative `base` version
195
+ * If base isn't part of the path provided returns absolute path e.g. `~/app`
196
+ */
197
+ var relativePath = function relativePath() {
198
+ var base = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
199
+ var path = arguments.length > 1 ? arguments[1] : undefined;
200
+ return !path.toLowerCase().indexOf(base.toLowerCase()) ? path.slice(base.length) || "/" : "~" + path;
201
+ };
202
+ var absolutePath = function absolutePath(to) {
203
+ var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
204
+ return to[0] === "~" ? to.slice(1) : base + to;
205
+ };
206
+
207
+ /*
208
+ * decodes escape sequences such as %20
209
+ */
210
+ var unescape = function unescape(str) {
211
+ try {
212
+ return decodeURI(str);
213
+ } catch (_e) {
214
+ // fail-safe mode: if string can't be decoded do nothing
215
+ return str;
216
+ }
217
+ };
218
+
219
+ /*
220
+ * Router and router context. Router is a lightweight object that represents the current
221
+ * routing options: how location is managed, base path etc.
222
+ *
223
+ * There is a default router present for most of the use cases, however it can be overridden
224
+ * via the <Router /> component.
225
+ */
226
+
227
+ var defaultRouter = {
228
+ hook: useBrowserLocation,
229
+ searchHook: useSearch,
230
+ parser: regexparam.parse,
231
+ base: "",
232
+ // this option is used to override the current location during SSR
233
+ ssrPath: undefined,
234
+ ssrSearch: undefined
235
+ };
236
+ var RouterCtx = React.createContext(defaultRouter);
237
+
238
+ // gets the closest parent router from the context
239
+ var useRouter = function useRouter() {
240
+ return React.useContext(RouterCtx);
241
+ };
242
+
243
+ /**
244
+ * Parameters context. Used by `useParams()` to get the
245
+ * matched params from the innermost `Route` component.
246
+ */
247
+
248
+ var ParamsCtx = React.createContext({});
249
+
250
+ /*
251
+ * Part 1, Hooks API: useRoute and useLocation
252
+ */
253
+
254
+ // Internal version of useLocation to avoid redundant useRouter calls
255
+
256
+ var useLocationFromRouter = function useLocationFromRouter(router) {
257
+ var _router$hook = router.hook(router),
258
+ _router$hook2 = _slicedToArray(_router$hook, 2),
259
+ location = _router$hook2[0],
260
+ navigate = _router$hook2[1];
261
+
262
+ // the function reference should stay the same between re-renders, so that
263
+ // it can be passed down as an element prop without any performance concerns.
264
+ // (This is achieved via `useEvent`.)
265
+ return [unescape(relativePath(router.base, location)), useEvent(function (to, navOpts) {
266
+ return navigate(absolutePath(to, router.base), navOpts);
267
+ })];
268
+ };
269
+ var useLocation = function useLocation() {
270
+ return useLocationFromRouter(useRouter());
271
+ };
272
+ var matchRoute = function matchRoute(parser, route, path, loose) {
273
+ // when parser is in "loose" mode, `$base` is equal to the
274
+ // first part of the route that matches the pattern
275
+ // (e.g. for pattern `/a/:b` and path `/a/1/2/3` the `$base` is `a/1`)
276
+ // we use this for route nesting
277
+ var _parser = parser(route || "*", loose),
278
+ pattern = _parser.pattern,
279
+ keys = _parser.keys;
280
+ var _ref = pattern.exec(path) || [],
281
+ _ref2 = _toArray(_ref),
282
+ $base = _ref2[0],
283
+ matches = _ref2.slice(1);
284
+ return $base !== undefined ? [true,
285
+ // an object with parameters matched, e.g. { foo: "bar" } for "/:foo"
286
+ // we "zip" two arrays here to construct the object
287
+ // ["foo"], ["bar"] → { foo: "bar" }
288
+ Object.fromEntries(keys.map(function (key, i) {
289
+ return [key, matches[i]];
290
+ }))].concat(_toConsumableArray(loose ? [$base] : [])) : [false, null];
291
+ };
292
+
293
+ /*
294
+ * Part 2, Low Carb Router API: Router, Route, Link, Switch
295
+ */
296
+
297
+ var Router = function Router(_ref3) {
298
+ var children = _ref3.children,
299
+ props = _objectWithoutProperties(_ref3, _excluded$a);
300
+ // the router we will inherit from - it is the closest router in the tree,
301
+ // unless the custom `hook` is provided (in that case it's the default one)
302
+ var parent_ = useRouter();
303
+ var parent = props.hook ? defaultRouter : parent_;
304
+
305
+ // holds to the context value: the router object
306
+ var value = parent;
307
+
308
+ // what is happening below: to avoid unnecessary rerenders in child components,
309
+ // we ensure that the router object reference is stable, unless there are any
310
+ // changes that require reload (e.g. `base` prop changes -> all components that
311
+ // get the router from the context should rerender, even if the component is memoized).
312
+ // the expected behaviour is:
313
+ //
314
+ // 1) when the resulted router is no different from the parent, use parent
315
+ // 2) if the custom `hook` prop is provided, we always inherit from the
316
+ // default router instead. this resets all previously overridden options.
317
+ // 3) when the router is customized here, it should stay stable between renders
318
+ var ref = React.useRef({}),
319
+ prev = ref.current,
320
+ next = prev;
321
+ for (var k in parent) {
322
+ var option = k === "base" ? /* base is special case, it is appended to the parent's base */
323
+ parent[k] + (props[k] || "") : props[k] || parent[k];
324
+ if (prev === next && option !== next[k]) {
325
+ ref.current = next = _objectSpread({}, next);
326
+ }
327
+ next[k] = option;
328
+
329
+ // the new router is no different from the parent, use parent
330
+ if (option !== parent[k]) value = next;
331
+ }
332
+ return React.createElement(RouterCtx.Provider, {
333
+ value: value,
334
+ children: children
335
+ });
336
+ };
337
+ var h_route = function h_route(_ref4, params) {
338
+ var children = _ref4.children,
339
+ component = _ref4.component;
340
+ // React-Router style `component` prop
341
+ if (component) return React.createElement(component, {
342
+ params: params
343
+ });
344
+
345
+ // support render prop or plain children
346
+ return typeof children === "function" ? children(params) : children;
347
+ };
348
+ var Route = function Route(_ref5) {
349
+ var path = _ref5.path,
350
+ nest = _ref5.nest,
351
+ match = _ref5.match,
352
+ renderProps = _objectWithoutProperties(_ref5, _excluded2);
353
+ var router = useRouter();
354
+ var _useLocationFromRoute = useLocationFromRouter(router),
355
+ _useLocationFromRoute2 = _slicedToArray(_useLocationFromRoute, 1),
356
+ location = _useLocationFromRoute2[0];
357
+ var _ref6 = // `match` is a special prop to give up control to the parent,
358
+ // it is used by the `Switch` to avoid double matching
359
+ match !== null && match !== void 0 ? match : matchRoute(router.parser, path, location, nest),
360
+ _ref7 = _slicedToArray(_ref6, 3),
361
+ matches = _ref7[0],
362
+ params = _ref7[1],
363
+ base = _ref7[2];
364
+ if (!matches) return null;
365
+ var children = base ? React.createElement(Router, {
366
+ base: base
367
+ }, h_route(renderProps, params)) : h_route(renderProps, params);
368
+ return React.createElement(ParamsCtx.Provider, {
369
+ value: params,
370
+ children: children
371
+ });
372
+ };
373
+ var Link = React.forwardRef(function (props, ref) {
374
+ var router = useRouter();
375
+ var _useLocationFromRoute3 = useLocationFromRouter(router),
376
+ _useLocationFromRoute4 = _slicedToArray(_useLocationFromRoute3, 2),
377
+ navigate = _useLocationFromRoute4[1];
378
+ var to = props.to,
379
+ _props$href = props.href,
380
+ _href = _props$href === void 0 ? to : _props$href,
381
+ _onClick = props.onClick,
382
+ asChild = props.asChild,
383
+ children = props.children;
384
+ props.replace;
385
+ props.state;
386
+ var restProps = _objectWithoutProperties(props, _excluded3);
387
+ var onClick = useEvent(function (event) {
388
+ // ignores the navigation when clicked using right mouse button or
389
+ // by holding a special modifier key: ctrl, command, win, alt, shift
390
+ if (event.ctrlKey || event.metaKey || event.altKey || event.shiftKey || event.button !== 0) return;
391
+ _onClick && _onClick(event); // TODO: is it safe to use _onClick?.(event)
392
+ if (!event.defaultPrevented) {
393
+ event.preventDefault();
394
+ navigate(_href, props);
395
+ }
396
+ });
397
+
398
+ // handle nested routers and absolute paths
399
+ var href = _href[0] === "~" ? _href.slice(1) : router.base + _href;
400
+ return asChild && React.isValidElement(children) ? React.cloneElement(children, {
401
+ href: href,
402
+ onClick: onClick
403
+ }) : React.createElement("a", _objectSpread(_objectSpread({}, restProps), {}, {
404
+ href: href,
405
+ onClick: onClick,
406
+ children: children,
407
+ ref: ref
408
+ }));
409
+ });
410
+ var flattenChildren = function flattenChildren(children) {
411
+ var _ref8;
412
+ return Array.isArray(children) ? (_ref8 = []).concat.apply(_ref8, _toConsumableArray(children.map(function (c) {
413
+ return c && c.type === React.Fragment ? flattenChildren(c.props.children) : flattenChildren(c);
414
+ }))) : [children];
415
+ };
416
+ var Switch = function Switch(_ref9) {
417
+ var children = _ref9.children,
418
+ location = _ref9.location;
419
+ var router = useRouter();
420
+ var _useLocationFromRoute5 = useLocationFromRouter(router),
421
+ _useLocationFromRoute6 = _slicedToArray(_useLocationFromRoute5, 1),
422
+ originalLocation = _useLocationFromRoute6[0];
423
+ var _iterator = _createForOfIteratorHelper(flattenChildren(children)),
424
+ _step;
425
+ try {
426
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
427
+ var element = _step.value;
428
+ var match = 0;
429
+ if (React.isValidElement(element) &&
430
+ // we don't require an element to be of type Route,
431
+ // but we do require it to contain a truthy `path` prop.
432
+ // this allows to use different components that wrap Route
433
+ // inside of a switch, for example <AnimatedRoute />.
434
+ (match = matchRoute(router.parser, element.props.path, location || originalLocation, element.props.nest))[0]) return React.cloneElement(element, {
435
+ match: match
436
+ });
437
+ }
438
+ } catch (err) {
439
+ _iterator.e(err);
440
+ } finally {
441
+ _iterator.f();
442
+ }
443
+ return null;
444
+ };
445
+
446
+ /* eslint-disable react/jsx-props-no-spreading */
447
+ var RoutesContext = /*#__PURE__*/React.createContext(null);
448
+ var useRoutesContext = function useRoutesContext() {
449
+ return React.useContext(RoutesContext);
450
+ };
451
+ var propTypes$o = {
452
+ children: PropTypes.node.isRequired,
453
+ routes: PropTypes.objectOf(PropTypes.string).isRequired,
454
+ basePath: PropTypes.string
455
+ };
456
+ var defaultProps$o = {
457
+ basePath: null
458
+ };
459
+ function RoutesProvider(_ref) {
460
+ var routes = _ref.routes,
461
+ basePath = _ref.basePath,
462
+ children = _ref.children;
463
+ var value = React.useMemo(function () {
464
+ return {
465
+ routes: routes,
466
+ basePath: basePath
467
+ };
468
+ }, [routes, basePath]);
469
+ return /*#__PURE__*/jsxRuntime.jsx(RoutesContext.Provider, {
470
+ value: value,
471
+ children: children
472
+ });
473
+ }
474
+ RoutesProvider.propTypes = propTypes$o;
475
+ RoutesProvider.defaultProps = defaultProps$o;
476
+ var compilers = {};
477
+ function generatePath(path, data) {
478
+ var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
479
+ if (typeof compilers[path] === 'undefined') {
480
+ compilers[path] = pathToRegexp.compile(path, opts);
481
+ }
482
+ var compiler = compilers[path];
483
+ return compiler(data);
484
+ }
485
+ var useUrlGeneratorPathToRepexp = function useUrlGeneratorPathToRepexp() {
486
+ var _ref2 = useRoutesContext() || {},
487
+ _ref2$routes = _ref2.routes,
488
+ routes = _ref2$routes === void 0 ? null : _ref2$routes,
489
+ _ref2$basePath = _ref2.basePath,
490
+ basePath = _ref2$basePath === void 0 ? null : _ref2$basePath;
491
+ var urlGenerator = React.useCallback(function (key, data, opts) {
492
+ var path = routes !== null ? routes[key] || null : null;
493
+ if (path === null) {
494
+ return null;
495
+ }
496
+ var url = generatePath(path, data, opts);
497
+ return basePath !== null ? "".concat(basePath.replace(/\/$/, ''), "/").concat(url.replace(/^\//, '')) : url;
498
+ }, [routes, basePath]);
499
+ return urlGenerator;
500
+ };
501
+ var useUrlGeneratorPathToRegexp = useUrlGeneratorPathToRepexp;
502
+ var useRoutes = function useRoutes() {
503
+ var _useRoutesContext = useRoutesContext(),
504
+ routes = _useRoutesContext.routes;
505
+ return routes;
506
+ };
507
+ var useRoutes$1 = useRoutes;
508
+ function parseLocation(location) {
509
+ var search = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
510
+ var hash = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
511
+ var _split = (location || '').split('?', 2),
512
+ _split2 = _slicedToArray(_split, 2),
513
+ pathname = _split2[0],
514
+ _split2$ = _split2[1],
515
+ searchFromPath = _split2$ === void 0 ? null : _split2$;
516
+ var _split3 = (searchFromPath || '').split('#', 2),
517
+ _split4 = _slicedToArray(_split3, 2),
518
+ searchWithoutHash = _split4[0],
519
+ _split4$ = _split4[1],
520
+ hashFromPath = _split4$ === void 0 ? null : _split4$;
521
+ return {
522
+ pathname: pathname !== '' ? pathname : '/',
523
+ search: search || searchWithoutHash || null,
524
+ hash: hash || hashFromPath || null
525
+ };
526
+ }
527
+ function useMemoryRouter() {
528
+ var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
529
+ _ref3$path = _ref3.path,
530
+ path = _ref3$path === void 0 ? '/' : _ref3$path,
531
+ _ref3$static = _ref3["static"],
532
+ staticLocation = _ref3$static === void 0 ? false : _ref3$static;
533
+ _ref3.record;
534
+ var currentPath = parseLocation(path);
535
+ var emitter = mitt();
536
+ var navigateImplementation = function navigateImplementation(newPath) {
537
+ var newParsedPath = parseLocation(newPath);
538
+ currentPath = newParsedPath;
539
+ emitter.emit('navigate', path);
540
+ };
541
+ var navigate = !staticLocation ? navigateImplementation : function () {
542
+ return null;
543
+ };
544
+ var subscribe = function subscribe(cb) {
545
+ emitter.on('navigate', cb);
546
+ return function () {
547
+ return emitter.off('navigate', cb);
548
+ };
549
+ };
550
+ function reset() {
551
+ navigateImplementation(path);
552
+ }
553
+ var locationHook = function locationHook() {
554
+ return [React.useSyncExternalStore(subscribe, function () {
555
+ return currentPath.pathname;
556
+ }), navigate];
557
+ };
558
+ var searchHook = function searchHook() {
559
+ return React.useSyncExternalStore(subscribe, function () {
560
+ return currentPath.search || '';
561
+ });
562
+ };
563
+ return {
564
+ hook: locationHook,
565
+ searchHook: searchHook,
566
+ reset: reset,
567
+ navigate: navigate
568
+ };
569
+ }
570
+
34
571
  // eslint-disable-next-line import/prefer-default-export
35
572
  var routes = PropTypes.shape({
36
573
  home: PropTypes.string.isRequired,
@@ -317,8 +854,8 @@ var Button = function Button(_ref) {
317
854
  target: external ? target : null,
318
855
  ref: refButton,
319
856
  tabIndex: focusable ? '' : '-1'
320
- }), content) : /*#__PURE__*/React.createElement(reactRouterDom.Link, Object.assign({}, props, {
321
- to: href,
857
+ }), content) : /*#__PURE__*/React.createElement(Link, Object.assign({}, props, {
858
+ href: href,
322
859
  className: linkClassNames,
323
860
  style: buttonStyles,
324
861
  onClick: onClick,
@@ -338,6 +875,7 @@ var Button = function Button(_ref) {
338
875
  };
339
876
  Button.propTypes = propTypes$n;
340
877
  Button.defaultProps = defaultProps$n;
878
+ var Button$1 = Button;
341
879
 
342
880
  var styles$f = {"container":"micromag-viewer-buttons-icon-button-container","label":"micromag-viewer-buttons-icon-button-label","icon":"micromag-viewer-buttons-icon-button-icon"};
343
881
 
@@ -354,7 +892,7 @@ var IconButton = function IconButton(_ref) {
354
892
  var iconClassName = _ref.iconClassName,
355
893
  className = _ref.className,
356
894
  props = _objectWithoutProperties(_ref, _excluded$8);
357
- return /*#__PURE__*/React.createElement(Button, Object.assign({
895
+ return /*#__PURE__*/React.createElement(Button$1, Object.assign({
358
896
  className: classNames([styles$f.container, _defineProperty({}, className, className !== null)]),
359
897
  labelClassName: styles$f.label,
360
898
  iconClassName: classNames([styles$f.icon, _defineProperty({}, iconClassName, iconClassName !== null)])
@@ -362,6 +900,7 @@ var IconButton = function IconButton(_ref) {
362
900
  };
363
901
  IconButton.propTypes = propTypes$m;
364
902
  IconButton.defaultProps = defaultProps$m;
903
+ var IconButton$1 = IconButton;
365
904
 
366
905
  var _excluded$7 = ["single", "className"];
367
906
  var propTypes$l = {
@@ -377,7 +916,7 @@ var CloseMenuButton = function CloseMenuButton(_ref) {
377
916
  className = _ref.className,
378
917
  props = _objectWithoutProperties(_ref, _excluded$7);
379
918
  var intl = reactIntl.useIntl();
380
- return /*#__PURE__*/React.createElement(IconButton, Object.assign({
919
+ return /*#__PURE__*/React.createElement(IconButton$1, Object.assign({
381
920
  className: classNames([_defineProperty({}, className, className !== null)]),
382
921
  label: intl.formatMessage({
383
922
  id: "dIvwcD",
@@ -420,6 +959,7 @@ var CloseMenuButton = function CloseMenuButton(_ref) {
420
959
  };
421
960
  CloseMenuButton.propTypes = propTypes$l;
422
961
  CloseMenuButton.defaultProps = defaultProps$l;
962
+ var CloseMenuButton$1 = CloseMenuButton;
423
963
 
424
964
  var _excluded$6 = ["className", "iconClassName"];
425
965
  var propTypes$k = {
@@ -435,7 +975,7 @@ var MenuButton = function MenuButton(_ref) {
435
975
  _ref.iconClassName;
436
976
  var props = _objectWithoutProperties(_ref, _excluded$6);
437
977
  var intl = reactIntl.useIntl();
438
- return /*#__PURE__*/React.createElement(IconButton, Object.assign({
978
+ return /*#__PURE__*/React.createElement(IconButton$1, Object.assign({
439
979
  className: classNames([_defineProperty({}, className, className !== null)]),
440
980
  label: intl.formatMessage({
441
981
  id: "F/gl4b",
@@ -472,6 +1012,7 @@ var MenuButton = function MenuButton(_ref) {
472
1012
  };
473
1013
  MenuButton.propTypes = propTypes$k;
474
1014
  MenuButton.defaultProps = defaultProps$k;
1015
+ var MenuButton$1 = MenuButton;
475
1016
 
476
1017
  var _excluded$5 = ["className"];
477
1018
  var propTypes$j = {
@@ -484,7 +1025,7 @@ var ShareButton = function ShareButton(_ref) {
484
1025
  var className = _ref.className,
485
1026
  props = _objectWithoutProperties(_ref, _excluded$5);
486
1027
  var intl = reactIntl.useIntl();
487
- return /*#__PURE__*/React.createElement(IconButton, Object.assign({
1028
+ return /*#__PURE__*/React.createElement(IconButton$1, Object.assign({
488
1029
  className: classNames([_defineProperty({}, className, className !== null)]),
489
1030
  label: intl.formatMessage({
490
1031
  id: "7tw6U2",
@@ -515,6 +1056,7 @@ var ShareButton = function ShareButton(_ref) {
515
1056
  };
516
1057
  ShareButton.propTypes = propTypes$j;
517
1058
  ShareButton.defaultProps = defaultProps$j;
1059
+ var ShareButton$1 = ShareButton;
518
1060
 
519
1061
  var styles$e = {"container":"micromag-viewer-buttons-toggle-button-container","normal":"micromag-viewer-buttons-toggle-button-normal","toggled":"micromag-viewer-buttons-toggle-button-toggled"};
520
1062
 
@@ -560,6 +1102,7 @@ var ToggleButton = function ToggleButton(_ref) {
560
1102
  };
561
1103
  ToggleButton.propTypes = propTypes$i;
562
1104
  ToggleButton.defaultProps = defaultProps$i;
1105
+ var ToggleButton$1 = ToggleButton;
563
1106
 
564
1107
  var styles$d = {"backdrop":"micromag-viewer-menus-menu-container-backdrop","heightContainer":"micromag-viewer-menus-menu-container-heightContainer","container":"micromag-viewer-menus-menu-container-container"};
565
1108
 
@@ -618,6 +1161,7 @@ var ViewerMenuContainer = function ViewerMenuContainer(_ref) {
618
1161
  };
619
1162
  ViewerMenuContainer.propTypes = propTypes$h;
620
1163
  ViewerMenuContainer.defaultProps = defaultProps$h;
1164
+ var MenuContainer = ViewerMenuContainer;
621
1165
 
622
1166
  var styles$c = {"button":"micromag-viewer-menus-menu-dot-button","progress":"micromag-viewer-menus-menu-dot-progress","container":"micromag-viewer-menus-menu-dot-container","vertical":"micromag-viewer-menus-menu-dot-vertical","dot":"micromag-viewer-menus-menu-dot-dot","subDot":"micromag-viewer-menus-menu-dot-subDot","dots":"micromag-viewer-menus-menu-dot-dots","outlineBounce":"micromag-viewer-menus-menu-dot-outlineBounce"};
623
1167
 
@@ -709,6 +1253,7 @@ var ViewerMenuDot = function ViewerMenuDot(_ref) {
709
1253
  };
710
1254
  ViewerMenuDot.propTypes = propTypes$g;
711
1255
  ViewerMenuDot.defaultProps = defaultProps$g;
1256
+ var MenuDot = ViewerMenuDot;
712
1257
 
713
1258
  var styles$b = {"container":"micromag-viewer-menus-menu-dots-container","closeButton":"micromag-viewer-menus-menu-dots-closeButton","focus-visible":"micromag-viewer-menus-menu-dots-focus-visible","items":"micromag-viewer-menus-menu-dots-items","item":"micromag-viewer-menus-menu-dots-item","buttons":"micromag-viewer-menus-menu-dots-buttons","vertical":"micromag-viewer-menus-menu-dots-vertical"};
714
1259
 
@@ -801,7 +1346,7 @@ var ViewerMenuDots = function ViewerMenuDots(_ref) {
801
1346
  count = _ref6$count === void 0 ? 1 : _ref6$count,
802
1347
  _ref6$subIndex = _ref6.subIndex,
803
1348
  subIndex = _ref6$subIndex === void 0 ? 0 : _ref6$subIndex;
804
- return /*#__PURE__*/React.createElement(ViewerMenuDot, {
1349
+ return /*#__PURE__*/React.createElement(MenuDot, {
805
1350
  key: "item-".concat(index + 1),
806
1351
  current: current,
807
1352
  active: index <= currentIndex,
@@ -846,6 +1391,7 @@ var ViewerMenuDots = function ViewerMenuDots(_ref) {
846
1391
  };
847
1392
  ViewerMenuDots.propTypes = propTypes$f;
848
1393
  ViewerMenuDots.defaultProps = defaultProps$f;
1394
+ var MenuDots = ViewerMenuDots;
849
1395
 
850
1396
  var propTypes$e = {
851
1397
  className: PropTypes.string
@@ -870,6 +1416,7 @@ var StackIcon = function StackIcon(_ref) {
870
1416
  };
871
1417
  StackIcon.propTypes = propTypes$e;
872
1418
  StackIcon.defaultProps = defaultProps$e;
1419
+ var StackIcon$1 = StackIcon;
873
1420
 
874
1421
  var styles$a = {"button":"micromag-viewer-menus-menu-screen-button","container":"micromag-viewer-menus-menu-screen-container","focus-visible":"micromag-viewer-menus-menu-screen-focus-visible","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"};
875
1422
 
@@ -949,7 +1496,7 @@ var ViewerMenuScreen = function ViewerMenuScreen(_ref) {
949
1496
  className: styles$a.subScreenBadge
950
1497
  }, /*#__PURE__*/React.createElement("span", {
951
1498
  className: styles$a.subScreenCount
952
- }, count), /*#__PURE__*/React.createElement(StackIcon, {
1499
+ }, count), /*#__PURE__*/React.createElement(StackIcon$1, {
953
1500
  className: styles$a.subScreenIcon
954
1501
  })) : null, screenWidth > 0 && screenHeight > 0 ? /*#__PURE__*/React.createElement(components.ScreenPreview, {
955
1502
  className: styles$a.screen,
@@ -963,6 +1510,7 @@ var ViewerMenuScreen = function ViewerMenuScreen(_ref) {
963
1510
  };
964
1511
  ViewerMenuScreen.propTypes = propTypes$d;
965
1512
  ViewerMenuScreen.defaultProps = defaultProps$d;
1513
+ var MenuScreen = ViewerMenuScreen;
966
1514
 
967
1515
  var styles$9 = {"scroll":"micromag-viewer-menus-menu-preview-scroll","container":"micromag-viewer-menus-menu-preview-container","disabled":"micromag-viewer-menus-menu-preview-disabled","screenButton":"micromag-viewer-menus-menu-preview-screenButton","content":"micromag-viewer-menus-menu-preview-content","buttons":"micromag-viewer-menus-menu-preview-buttons","organisation":"micromag-viewer-menus-menu-preview-organisation","icon":"micromag-viewer-menus-menu-preview-icon","titleContainer":"micromag-viewer-menus-menu-preview-titleContainer","headerContainer":"micromag-viewer-menus-menu-preview-headerContainer","badge":"micromag-viewer-menus-menu-preview-badge","title":"micromag-viewer-menus-menu-preview-title","nav":"micromag-viewer-menus-menu-preview-nav","items":"micromag-viewer-menus-menu-preview-items","item":"micromag-viewer-menus-menu-preview-item","inner":"micromag-viewer-menus-menu-preview-inner","frame":"micromag-viewer-menus-menu-preview-frame","screen":"micromag-viewer-menus-menu-preview-screen","intro":"micromag-viewer-menus-menu-preview-intro"};
968
1516
 
@@ -1128,7 +1676,7 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
1128
1676
  style: {
1129
1677
  paddingBottom: "".concat(screenHeight / screenWidth * 100, "%")
1130
1678
  }
1131
- }, screenMounted ? /*#__PURE__*/React.createElement(ViewerMenuScreen, {
1679
+ }, screenMounted ? /*#__PURE__*/React.createElement(MenuScreen, {
1132
1680
  className: styles$9.screen,
1133
1681
  item: item,
1134
1682
  index: index,
@@ -1140,6 +1688,7 @@ var ViewerMenuPreview = function ViewerMenuPreview(_ref) {
1140
1688
  };
1141
1689
  ViewerMenuPreview.propTypes = propTypes$c;
1142
1690
  ViewerMenuPreview.defaultProps = defaultProps$c;
1691
+ var MenuPreview = ViewerMenuPreview;
1143
1692
 
1144
1693
  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"};
1145
1694
 
@@ -1182,6 +1731,7 @@ var MicromagPreview = function MicromagPreview(_ref) {
1182
1731
  };
1183
1732
  MicromagPreview.propTypes = propTypes$b;
1184
1733
  MicromagPreview.defaultProps = defaultProps$b;
1734
+ var MicromagPreview$1 = MicromagPreview;
1185
1735
 
1186
1736
  var styles$7 = {"scroll":"micromag-viewer-menus-menu-share-scroll","container":"micromag-viewer-menus-menu-share-container","disabled":"micromag-viewer-menus-menu-share-disabled","button":"micromag-viewer-menus-menu-share-button","content":"micromag-viewer-menus-menu-share-content","inner":"micromag-viewer-menus-menu-share-inner","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"};
1187
1737
 
@@ -1287,7 +1837,7 @@ var ViewerMenuShare = function ViewerMenuShare(_ref) {
1287
1837
  }
1288
1838
  }, /*#__PURE__*/React.createElement("div", {
1289
1839
  className: styles$7.header
1290
- }, /*#__PURE__*/React.createElement(MicromagPreview, {
1840
+ }, /*#__PURE__*/React.createElement(MicromagPreview$1, {
1291
1841
  className: styles$7.preview,
1292
1842
  screen: shareCurrentScreen ? currentScreen : coverScreen,
1293
1843
  title: title,
@@ -1321,6 +1871,7 @@ var ViewerMenuShare = function ViewerMenuShare(_ref) {
1321
1871
  };
1322
1872
  ViewerMenuShare.propTypes = propTypes$a;
1323
1873
  ViewerMenuShare.defaultProps = defaultProps$a;
1874
+ var MenuShare = ViewerMenuShare;
1324
1875
 
1325
1876
  var styles$6 = {"container":"micromag-viewer-container","screenContainer":"micromag-viewer-screenContainer","screensFrame":"micromag-viewer-screensFrame","menuShare":"micromag-viewer-menuShare","menuPreview":"micromag-viewer-menuPreview","menuContainer":"micromag-viewer-menuContainer","focus-visible":"micromag-viewer-focus-visible","landscape":"micromag-viewer-landscape","hideMenu":"micromag-viewer-hideMenu","menuNavContainer":"micromag-viewer-menuNavContainer","menuTopContainer":"micromag-viewer-menuTopContainer","dots":"micromag-viewer-dots","disableMenu":"micromag-viewer-disableMenu","content":"micromag-viewer-content","withoutGestures":"micromag-viewer-withoutGestures","fadeMenu":"micromag-viewer-fadeMenu","withShadow":"micromag-viewer-withShadow","isOpened":"micromag-viewer-isOpened","menuItem":"micromag-viewer-menuItem","menuButton":"micromag-viewer-menuButton","slidingButton":"micromag-viewer-slidingButton","screensMenuButtonToggled":"micromag-viewer-screensMenuButtonToggled","navButton":"micromag-viewer-navButton","previous":"micromag-viewer-previous","next":"micromag-viewer-next","screen":"micromag-viewer-screen","current":"micromag-viewer-current","playbackControls":"micromag-viewer-playbackControls","arrowHint":"micromag-viewer-arrowHint","webView":"micromag-viewer-webView","shareIncentiveContainer":"micromag-viewer-shareIncentiveContainer","shareIncentive":"micromag-viewer-shareIncentive","shareIncentiveVisible":"micromag-viewer-shareIncentiveVisible"};
1326
1877
 
@@ -1653,16 +2204,16 @@ var ViewerMenu = function ViewerMenu(_ref) {
1653
2204
  ref: navContainerRef
1654
2205
  }, !withoutShareMenu ? /*#__PURE__*/React.createElement("div", Object.assign({
1655
2206
  className: styles$6.menuItem
1656
- }, bindShareDrag()), /*#__PURE__*/React.createElement(ToggleButton, {
2207
+ }, bindShareDrag()), /*#__PURE__*/React.createElement(ToggleButton$1, {
1657
2208
  className: styles$6.slidingButton,
1658
- button: /*#__PURE__*/React.createElement(ShareButton, {
2209
+ button: /*#__PURE__*/React.createElement(ShareButton$1, {
1659
2210
  className: styles$6.menuButton,
1660
2211
  onClick: onOpenShare,
1661
2212
  theme: menuTheme,
1662
2213
  iconPosition: "left",
1663
2214
  focusable: !shareOpened
1664
2215
  }),
1665
- toggledButton: /*#__PURE__*/React.createElement(CloseMenuButton, {
2216
+ toggledButton: /*#__PURE__*/React.createElement(CloseMenuButton$1, {
1666
2217
  className: styles$6.menuButton,
1667
2218
  onClick: onCloseShare,
1668
2219
  theme: menuTheme,
@@ -1673,16 +2224,16 @@ var ViewerMenu = function ViewerMenu(_ref) {
1673
2224
  progressSpring: shareOpenedProgress
1674
2225
  })) : null, !withoutScreensMenu ? /*#__PURE__*/React.createElement("div", Object.assign({
1675
2226
  className: styles$6.menuItem
1676
- }, bindMenuDrag()), /*#__PURE__*/React.createElement(ToggleButton, {
2227
+ }, bindMenuDrag()), /*#__PURE__*/React.createElement(ToggleButton$1, {
1677
2228
  className: styles$6.slidingButton,
1678
- button: /*#__PURE__*/React.createElement(MenuButton, {
2229
+ button: /*#__PURE__*/React.createElement(MenuButton$1, {
1679
2230
  className: styles$6.menuButton,
1680
2231
  iconClassName: styles$6.menuButtonIcon,
1681
2232
  onClick: onOpenMenu,
1682
2233
  theme: menuTheme,
1683
2234
  focusable: !menuOpened
1684
2235
  }),
1685
- toggledButton: /*#__PURE__*/React.createElement(CloseMenuButton, {
2236
+ toggledButton: /*#__PURE__*/React.createElement(CloseMenuButton$1, {
1686
2237
  className: styles$6.menuButton,
1687
2238
  onClick: onCloseMenu,
1688
2239
  theme: menuTheme,
@@ -1691,7 +2242,7 @@ var ViewerMenu = function ViewerMenu(_ref) {
1691
2242
  }),
1692
2243
  progressSpring: menuOpenedProgress,
1693
2244
  toggledButtonClassName: styles$6.screensMenuButtonToggled
1694
- })) : null), /*#__PURE__*/React.createElement(ViewerMenuDots, Object.assign({}, menuTheme, {
2245
+ })) : null), /*#__PURE__*/React.createElement(MenuDots, Object.assign({}, menuTheme, {
1695
2246
  direction: "horizontal",
1696
2247
  items: items,
1697
2248
  onClickDot: onClickScreen,
@@ -1703,11 +2254,11 @@ var ViewerMenu = function ViewerMenu(_ref) {
1703
2254
  withoutShareMenu: withoutShareMenu,
1704
2255
  onClose: onClickCloseViewer,
1705
2256
  className: styles$6.dots
1706
- }))), /*#__PURE__*/React.createElement(ViewerMenuContainer, {
2257
+ }))), /*#__PURE__*/React.createElement(MenuContainer, {
1707
2258
  className: styles$6.menuContainer,
1708
2259
  progressSpring: shareOpenedProgress,
1709
2260
  theme: viewerTheme
1710
- }, draggingShare || shareOpened ? /*#__PURE__*/React.createElement(ViewerMenuShare, {
2261
+ }, draggingShare || shareOpened ? /*#__PURE__*/React.createElement(MenuShare, {
1711
2262
  viewerTheme: viewerTheme,
1712
2263
  className: styles$6.menuShare,
1713
2264
  title: title,
@@ -1720,11 +2271,11 @@ var ViewerMenu = function ViewerMenu(_ref) {
1720
2271
  shareUrl: shareUrl,
1721
2272
  onShare: onShare,
1722
2273
  onClose: onCloseShare
1723
- }) : null), /*#__PURE__*/React.createElement(ViewerMenuContainer, {
2274
+ }) : null), /*#__PURE__*/React.createElement(MenuContainer, {
1724
2275
  className: styles$6.menuContainer,
1725
2276
  progressSpring: menuOpenedProgress,
1726
2277
  theme: viewerTheme
1727
- }, menuMounted ? /*#__PURE__*/React.createElement(ViewerMenuPreview, {
2278
+ }, menuMounted ? /*#__PURE__*/React.createElement(MenuPreview, {
1728
2279
  viewerTheme: viewerTheme,
1729
2280
  header: previewHeader,
1730
2281
  footer: previewFooter,
@@ -1848,7 +2399,7 @@ var NavigationButton = function NavigationButton(_ref) {
1848
2399
  var direction = _ref.direction,
1849
2400
  _onClick = _ref.onClick,
1850
2401
  className = _ref.className;
1851
- return /*#__PURE__*/React.createElement(IconButton, {
2402
+ return /*#__PURE__*/React.createElement(IconButton$1, {
1852
2403
  className: classNames([styles$4.container, styles$4[direction], _defineProperty({}, className, className !== null)]),
1853
2404
  onClick: function onClick(e) {
1854
2405
  e.stopPropagation();
@@ -1884,6 +2435,7 @@ var NavigationButton = function NavigationButton(_ref) {
1884
2435
  };
1885
2436
  NavigationButton.propTypes = propTypes$7;
1886
2437
  NavigationButton.defaultProps = defaultProps$7;
2438
+ var NavigationButton$1 = NavigationButton;
1887
2439
 
1888
2440
  var styles$3 = {"container":"micromag-viewer-partials-arrow-hint-container","inner":"micromag-viewer-partials-arrow-hint-inner","shadowFade":"micromag-viewer-partials-arrow-hint-shadowFade","arrow":"micromag-viewer-partials-arrow-hint-arrow","panX":"micromag-viewer-partials-arrow-hint-panX"};
1889
2441
 
@@ -1905,6 +2457,7 @@ var ArrowHint = function ArrowHint(_ref) {
1905
2457
  };
1906
2458
  ArrowHint.propTypes = propTypes$6;
1907
2459
  ArrowHint.defaultProps = defaultProps$6;
2460
+ var ArrowHint$1 = ArrowHint;
1908
2461
 
1909
2462
  var styles$2 = {"track":"micromag-viewer-partials-seek-bar-track","progress":"micromag-viewer-partials-seek-bar-progress","inner":"micromag-viewer-partials-seek-bar-inner","progressBarContainer":"micromag-viewer-partials-seek-bar-progressBarContainer","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"};
1910
2463
 
@@ -2099,6 +2652,7 @@ var SeekBar = function SeekBar(_ref3) {
2099
2652
  };
2100
2653
  SeekBar.propTypes = propTypes$5;
2101
2654
  SeekBar.defaultProps = defaultProps$5;
2655
+ var SeekBar$1 = SeekBar;
2102
2656
 
2103
2657
  var styles$1 = {"suggest":"micromag-viewer-partials-playback-controls-suggest","playPauseButton":"micromag-viewer-partials-playback-controls-playPauseButton","muteButton":"micromag-viewer-partials-playback-controls-muteButton","container":"micromag-viewer-partials-playback-controls-container","icon":"micromag-viewer-partials-playback-controls-icon","offset":"micromag-viewer-partials-playback-controls-offset","spinner":"micromag-viewer-partials-playback-controls-spinner","withPlayPause":"micromag-viewer-partials-playback-controls-withPlayPause","withSuggestPlay":"micromag-viewer-partials-playback-controls-withSuggestPlay","isCollapsed":"micromag-viewer-partials-playback-controls-isCollapsed","loading":"micromag-viewer-partials-playback-controls-loading","hidden":"micromag-viewer-partials-playback-controls-hidden","notPlaying":"micromag-viewer-partials-playback-controls-notPlaying","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"};
2104
2658
 
@@ -2316,7 +2870,7 @@ function PlaybackControls(_ref) {
2316
2870
  }]
2317
2871
  }) : playLabel,
2318
2872
  withoutBootstrapStyles: true
2319
- }), /*#__PURE__*/React.createElement(SeekBar, {
2873
+ }), /*#__PURE__*/React.createElement(SeekBar$1, {
2320
2874
  className: styles$1.seekBar,
2321
2875
  media: mediaElement,
2322
2876
  playing: playing,
@@ -3076,7 +3630,7 @@ var Viewer = function Viewer(_ref) {
3076
3630
  refDots: menuDotsContainerRef
3077
3631
  }) : null, ready || withoutScreensTransforms ? /*#__PURE__*/React.createElement("div", Object.assign({
3078
3632
  className: styles$6.content
3079
- }, dragContentBind()), !withoutNavigationArrow && !withNeighborScreens && !navigationDisabled && screenIndex > 0 && screens.length > 1 ? /*#__PURE__*/React.createElement(NavigationButton, {
3633
+ }, dragContentBind()), !withoutNavigationArrow && !withNeighborScreens && !navigationDisabled && screenIndex > 0 && screens.length > 1 ? /*#__PURE__*/React.createElement(NavigationButton$1, {
3080
3634
  direction: "previous",
3081
3635
  className: classNames([styles$6.navButton, styles$6.previous]),
3082
3636
  onClick: gotoPreviousScreen
@@ -3111,7 +3665,7 @@ var Viewer = function Viewer(_ref) {
3111
3665
  height: screenHeight,
3112
3666
  scale: screenScale
3113
3667
  }) : null);
3114
- })), !withoutNavigationArrow && !withNeighborScreens && !navigationDisabled && screenIndex < screens.length - 1 ? /*#__PURE__*/React.createElement(NavigationButton, {
3668
+ })), !withoutNavigationArrow && !withNeighborScreens && !navigationDisabled && screenIndex < screens.length - 1 ? /*#__PURE__*/React.createElement(NavigationButton$1, {
3115
3669
  direction: "next",
3116
3670
  className: classNames([styles$6.navButton, styles$6.next]),
3117
3671
  onClick: gotoNextScreen
@@ -3120,7 +3674,7 @@ var Viewer = function Viewer(_ref) {
3120
3674
  ref: playbackControlsContainerRef
3121
3675
  }, /*#__PURE__*/React.createElement(PlaybackControls, {
3122
3676
  className: styles$6.controls
3123
- })) : null, withNavigationHint && !withNeighborScreens && !navigationDisabled && screenIndex === 0 && !hasInteracted ? /*#__PURE__*/React.createElement(ArrowHint, {
3677
+ })) : null, withNavigationHint && !withNeighborScreens && !navigationDisabled && screenIndex === 0 && !hasInteracted ? /*#__PURE__*/React.createElement(ArrowHint$1, {
3124
3678
  className: styles$6.arrowHint
3125
3679
  }) : null) : null, /*#__PURE__*/React.createElement("div", {
3126
3680
  className: classNames([styles$6.shareIncentiveContainer, _defineProperty({}, styles$6.shareIncentiveVisible, hasShareIncentive && shareIncentiveVisible)]),
@@ -3138,6 +3692,7 @@ var Viewer = function Viewer(_ref) {
3138
3692
  };
3139
3693
  Viewer.propTypes = propTypes$2;
3140
3694
  Viewer.defaultProps = defaultProps$2;
3695
+ var Viewer$1 = Viewer;
3141
3696
 
3142
3697
  var _excluded$1 = ["story", "pathWithIndex", "children", "onScreenChange"];
3143
3698
  var propTypes$1 = {
@@ -3159,9 +3714,9 @@ var ViewerRoutes = function ViewerRoutes(_ref) {
3159
3714
  _ref.children;
3160
3715
  var onScreenChange = _ref.onScreenChange,
3161
3716
  otherProps = _objectWithoutProperties(_ref, _excluded$1);
3162
- var routes = routes$1.useRoutes();
3163
- var url = routes$1.useUrlGenerator();
3164
- var _useLocation = wouter.useLocation(),
3717
+ var routes = useRoutes$1();
3718
+ var url = useUrlGeneratorPathToRegexp();
3719
+ var _useLocation = useLocation(),
3165
3720
  _useLocation2 = _slicedToArray(_useLocation, 2),
3166
3721
  navigate = _useLocation2[1];
3167
3722
  var _ref2 = story || {},
@@ -3179,19 +3734,19 @@ var ViewerRoutes = function ViewerRoutes(_ref) {
3179
3734
  onScreenChange(it);
3180
3735
  }
3181
3736
  }, [navigate, url, pathWithIndex, screens, onScreenChange]);
3182
- return /*#__PURE__*/React.createElement(wouter.Switch, null, /*#__PURE__*/React.createElement(wouter.Route, {
3737
+ return /*#__PURE__*/React.createElement(Switch, null, /*#__PURE__*/React.createElement(Route, {
3183
3738
  path: routes.home
3184
- }, /*#__PURE__*/React.createElement(Viewer, Object.assign({}, otherProps, {
3739
+ }, /*#__PURE__*/React.createElement(Viewer$1, Object.assign({}, otherProps, {
3185
3740
  story: story,
3186
3741
  onScreenChange: finalOnScreenChange
3187
- }))), /*#__PURE__*/React.createElement(wouter.Route, {
3742
+ }))), /*#__PURE__*/React.createElement(Route, {
3188
3743
  path: routes.screen
3189
3744
  }, function (_ref3) {
3190
3745
  var _ref3$screen = _ref3.screen,
3191
3746
  screenParam = _ref3$screen === void 0 ? null : _ref3$screen;
3192
3747
  var screenFromIndex = pathWithIndex && screenParam !== null ? screens[parseInt(screenParam, 10) - 1] || null : null;
3193
3748
  var screenId = pathWithIndex ? (screenFromIndex || {}).id || null : screenParam;
3194
- return /*#__PURE__*/React.createElement(Viewer, Object.assign({}, otherProps, {
3749
+ return /*#__PURE__*/React.createElement(Viewer$1, Object.assign({}, otherProps, {
3195
3750
  story: story,
3196
3751
  screen: screenId,
3197
3752
  onScreenChange: finalOnScreenChange
@@ -3200,6 +3755,7 @@ var ViewerRoutes = function ViewerRoutes(_ref) {
3200
3755
  };
3201
3756
  ViewerRoutes.propTypes = propTypes$1;
3202
3757
  ViewerRoutes.defaultProps = defaultProps$1;
3758
+ var ViewerRoutes$1 = ViewerRoutes;
3203
3759
 
3204
3760
  var home = "/";
3205
3761
  var screen = "/:screen";
@@ -3302,27 +3858,28 @@ var ViewerContainer = function ViewerContainer(_ref) {
3302
3858
  paused: paused
3303
3859
  }, /*#__PURE__*/React.createElement(contexts.TrackingProvider, {
3304
3860
  variables: finalTrackingVariables
3305
- }, withoutRouter ? /*#__PURE__*/React.createElement(Viewer, Object.assign({
3861
+ }, withoutRouter ? /*#__PURE__*/React.createElement(Viewer$1, Object.assign({
3306
3862
  story: story,
3307
3863
  basePath: basePath
3308
- }, otherProps)) : /*#__PURE__*/React.createElement(ViewerRoutes, Object.assign({
3864
+ }, otherProps)) : /*#__PURE__*/React.createElement(ViewerRoutes$1, Object.assign({
3309
3865
  story: story,
3310
3866
  basePath: basePath,
3311
3867
  pathWithIndex: pathWithIndex
3312
3868
  }, otherProps))))))))));
3313
- var _useMemoryRouter = routes$1.useMemoryRouter(),
3869
+ var _useMemoryRouter = useMemoryRouter(),
3314
3870
  memoryRouterHook = _useMemoryRouter.hook,
3315
3871
  memoryRouterSearchHook = _useMemoryRouter.searchHook;
3316
- return withoutRouter ? content : /*#__PURE__*/React.createElement(wouter.Router, {
3872
+ return withoutRouter ? content : /*#__PURE__*/React.createElement(Router, {
3317
3873
  base: !memoryRouter ? basePath : null,
3318
3874
  hook: !memoryRouter ? memoryRouterHook : null,
3319
3875
  searchHook: !memoryRouter ? memoryRouterSearchHook : null
3320
- }, /*#__PURE__*/React.createElement(routes$1.RoutesProvider, {
3876
+ }, /*#__PURE__*/React.createElement(RoutesProvider, {
3321
3877
  routes: routes
3322
3878
  }, content));
3323
3879
  };
3324
3880
  ViewerContainer.propTypes = propTypes;
3325
3881
  ViewerContainer.defaultProps = defaultProps;
3882
+ var ViewerContainer$1 = ViewerContainer;
3326
3883
 
3327
- exports.Viewer = Viewer;
3328
- exports.default = ViewerContainer;
3884
+ exports.Viewer = Viewer$1;
3885
+ exports.default = ViewerContainer$1;