@micromag/editor 0.3.479 → 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.
Files changed (3) hide show
  1. package/es/index.js +169 -99
  2. package/lib/index.js +700 -106
  3. package/package.json +11 -10
package/es/index.js CHANGED
@@ -6,28 +6,26 @@ import PropTypes from 'prop-types';
6
6
  import React, { useMemo, useRef, useCallback, useState, forwardRef, useEffect } from 'react';
7
7
  import { useIntl, FormattedMessage } from 'react-intl';
8
8
  import { PropTypes as PropTypes$1 } from '@micromag/core';
9
- import { Button, FieldForm, BackButton, Breadcrumb as Breadcrumb$1, Modal, ModalDialog, Label, Navbar, DropdownMenu, Empty, Tabs, ScreenPlaceholder, ScreenPreview, Modals } from '@micromag/core/components';
9
+ import { Button, FieldForm, BackButton, Breadcrumb as Breadcrumb$2, Modal, ModalDialog, Label, Navbar, DropdownMenu, Empty, Tabs, ScreenPlaceholder, ScreenPreview, Modals } from '@micromag/core/components';
10
10
  import { useRoutes, useScreenDefinition, useFormsComponents, useScreensManager, useFieldsManager, useFieldsComponentsManager, useUrlGenerator, useRoutePush, ScreenProvider, useScreenSize, PlaybackProvider, ModalsProvider, PanelsProvider, ScreenSizeProvider, useFieldComponent, ComponentsProvider, FORMS_NAMESPACE, UppyProvider, StoryProvider, GoogleKeysProvider, GoogleMapsClientProvider, FontsProvider, EditorProvider, VisitorProvider, ComponentsContext, RoutesProvider } from '@micromag/core/contexts';
11
11
  import { useIsVisible, useParsedStory, useDimensionObserver, useScreenSizeFromElement, useMediasParser } from '@micromag/core/hooks';
12
12
  import { getScreenExtraField, isMessage, slug, getComponentFromName, getDeviceScreens } from '@micromag/core/utils';
13
- import { useRouteMatch, useHistory, Route, MemoryRouter } from 'react-router';
13
+ import { useRouteMatcher, createPathToRegexpParser, useMemoryRouter } from '@folklore/routes';
14
+ import { useLocation, Switch, Route, Router } from 'wouter';
14
15
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
15
16
  import { TransitionGroup, CSSTransition } from 'react-transition-group';
16
- import { v1 } from 'uuid';
17
- import isString from 'lodash/isString';
18
17
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
19
- import 'lodash/isArray';
20
- import 'lodash/get';
21
- import 'lodash/set';
22
18
  import { faCogs } from '@fortawesome/free-solid-svg-icons/faCogs';
23
19
  import { faEllipsisV } from '@fortawesome/free-solid-svg-icons/faEllipsisV';
24
20
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
25
21
  import { Fields, FieldsProvider } from '@micromag/fields';
22
+ import { v1 } from 'uuid';
26
23
  import { getSizeWithinBounds } from '@folklore/size';
27
24
  import { Viewer } from '@micromag/viewer';
28
25
  import _toArray from '@babel/runtime/helpers/toArray';
29
26
  import { faPlus } from '@fortawesome/free-solid-svg-icons/faPlus';
30
27
  import { faTimesCircle } from '@fortawesome/free-solid-svg-icons/faTimesCircle';
28
+ import isString from 'lodash/isString';
31
29
  import isFunction from 'lodash/isFunction';
32
30
  import { ReactSortable } from 'react-sortablejs';
33
31
  import { KeyboardCode, closestCorners, getFirstCollision, getClientRect, MeasuringStrategy, defaultDropAnimation, useSensors, useSensor, PointerSensor, KeyboardSensor, DndContext, closestCenter, DragOverlay } from '@dnd-kit/core';
@@ -39,7 +37,6 @@ import { faAngleDown } from '@fortawesome/free-solid-svg-icons/faAngleDown';
39
37
  import { faGripLines } from '@fortawesome/free-solid-svg-icons/faGripLines';
40
38
  import { faTimes } from '@fortawesome/free-solid-svg-icons/faTimes';
41
39
  import orderBy from 'lodash/orderBy';
42
- import { BrowserRouter } from 'react-router-dom';
43
40
  import { ScreensProvider } from '@micromag/screens';
44
41
 
45
42
  var useRouteParams = function useRouteParams() {
@@ -47,31 +44,41 @@ var useRouteParams = function useRouteParams() {
47
44
  _ref$screenOnly = _ref.screenOnly,
48
45
  screenOnly = _ref$screenOnly === void 0 ? false : _ref$screenOnly;
49
46
  var routes = useRoutes();
50
- var path = useMemo(function () {
51
- return screenOnly ? [routes.screen, '*'] : [routes['screen.field.form'], routes['screen.field'], routes.screen, '*'];
52
- }, [routes, screenOnly]);
53
- var _useRouteMatch = useRouteMatch({
54
- path: path
55
- }),
56
- url = _useRouteMatch.url,
57
- _useRouteMatch$params = _useRouteMatch.params,
58
- _useRouteMatch$params2 = _useRouteMatch$params.screen,
59
- screen = _useRouteMatch$params2 === void 0 ? null : _useRouteMatch$params2,
60
- _useRouteMatch$params3 = _useRouteMatch$params.field,
61
- field = _useRouteMatch$params3 === void 0 ? null : _useRouteMatch$params3,
62
- _useRouteMatch$params4 = _useRouteMatch$params.form,
63
- form = _useRouteMatch$params4 === void 0 ? null : _useRouteMatch$params4;
47
+ var _useLocation = useLocation(),
48
+ _useLocation2 = _slicedToArray(_useLocation, 1),
49
+ location = _useLocation2[0];
50
+ var matcher = useRouteMatcher();
51
+ var _useMemo = useMemo(function () {
52
+ var paths = screenOnly ? [routes.screen] : [routes['screen.field.form'], routes['screen.field'], routes.screen, '*'];
53
+ return paths.reduce(function (currentParams, path) {
54
+ if (currentParams !== null) {
55
+ return currentParams;
56
+ }
57
+ var _matcher = matcher(path),
58
+ _matcher2 = _slicedToArray(_matcher, 2),
59
+ _matcher2$ = _matcher2[0],
60
+ match = _matcher2$ === void 0 ? false : _matcher2$,
61
+ params = _matcher2[1];
62
+ return match ? params : currentParams;
63
+ }, null) || {};
64
+ }, [routes, screenOnly, location, matcher]),
65
+ _useMemo$screen = _useMemo.screen,
66
+ screen = _useMemo$screen === void 0 ? null : _useMemo$screen,
67
+ _useMemo$field = _useMemo.field,
68
+ field = _useMemo$field === void 0 ? null : _useMemo$field,
69
+ _useMemo$form = _useMemo.form,
70
+ form = _useMemo$form === void 0 ? null : _useMemo$form;
64
71
  var routeParams = useMemo(function () {
65
72
  return screenOnly ? {
66
- url: url,
73
+ url: location,
67
74
  screen: screen
68
75
  } : {
69
- url: url,
76
+ url: location,
70
77
  screen: screen,
71
78
  field: field,
72
79
  form: form
73
80
  };
74
- }, [screenOnly, url, screen, field, form]);
81
+ }, [screenOnly, location, screen, field, form]);
75
82
  return routeParams;
76
83
  };
77
84
 
@@ -186,6 +193,7 @@ var createScreen = function createScreen(definition) {
186
193
  id: v1()
187
194
  });
188
195
  };
196
+ var createScreen$1 = createScreen;
189
197
 
190
198
  var _excluded$c = ["components"];
191
199
  var deleteScreen = function deleteScreen(story, screenId) {
@@ -275,6 +283,7 @@ var SettingsButton = function SettingsButton(_ref) {
275
283
  };
276
284
  SettingsButton.propTypes = propTypes$o;
277
285
  SettingsButton.defaultProps = defaultProps$o;
286
+ var SettingsButton$1 = SettingsButton;
278
287
 
279
288
  var _excluded$8 = ["name", "form"];
280
289
  var propTypes$n = {
@@ -335,6 +344,7 @@ var FieldWithContexts = function FieldWithContexts(_ref) {
335
344
  };
336
345
  FieldWithContexts.propTypes = propTypes$n;
337
346
  FieldWithContexts.defaultProps = defaultProps$n;
347
+ var FieldWithContexts$1 = FieldWithContexts;
338
348
 
339
349
  var styles$i = {"container":"micromag-editor-forms-screen-container","inner":"micromag-editor-forms-screen-inner"};
340
350
 
@@ -389,6 +399,7 @@ var ScreenForm = function ScreenForm(_ref) {
389
399
  };
390
400
  ScreenForm.propTypes = propTypes$m;
391
401
  ScreenForm.defaultProps = defaultProps$m;
402
+ var ScreenForm$1 = ScreenForm;
392
403
 
393
404
  var styles$h = {"container":"micromag-editor-menus-breadcrumb-container"};
394
405
 
@@ -418,7 +429,9 @@ var Breadcrumb = function Breadcrumb(_ref) {
418
429
  var _ref2 = story || {},
419
430
  _ref2$components = _ref2.components,
420
431
  screens = _ref2$components === void 0 ? [] : _ref2$components;
421
- var history = useHistory();
432
+ var _useLocation = useLocation(),
433
+ _useLocation2 = _slicedToArray(_useLocation, 2),
434
+ setLocation = _useLocation2[1];
422
435
  var screensManager = useScreensManager();
423
436
  var fieldsManager = useFieldsManager();
424
437
  var fieldsComponentManager = useFieldsComponentsManager();
@@ -603,13 +616,13 @@ var Breadcrumb = function Breadcrumb(_ref) {
603
616
  }, [intl, route, screenId, field, form, url, screenFields, screenStates, screenTitle, fieldsManager]);
604
617
  var itemsLength = items.length;
605
618
  var onClickBack = useCallback(function () {
606
- history.push(items[itemsLength - 2].url);
607
- }, [items]);
619
+ setLocation(items[itemsLength - 2].url);
620
+ }, [items, setLocation]);
608
621
  var withBack = itemsLength > 1;
609
622
  return /*#__PURE__*/React.createElement(React.Fragment, null, withBack ? /*#__PURE__*/React.createElement(BackButton, {
610
623
  onClick: onClickBack,
611
624
  className: "me-2 py-0"
612
- }) : null, /*#__PURE__*/React.createElement(Breadcrumb$1, {
625
+ }) : null, /*#__PURE__*/React.createElement(Breadcrumb$2, {
613
626
  items: items,
614
627
  theme: "secondary",
615
628
  withoutBar: true,
@@ -619,6 +632,7 @@ var Breadcrumb = function Breadcrumb(_ref) {
619
632
  };
620
633
  Breadcrumb.propTypes = propTypes$l;
621
634
  Breadcrumb.defaultProps = defaultProps$l;
635
+ var Breadcrumb$1 = Breadcrumb;
622
636
 
623
637
  var styles$g = {"container":"micromag-editor-modals-delete-screen-container","description":"micromag-editor-modals-delete-screen-description","actions":"micromag-editor-modals-delete-screen-actions"};
624
638
 
@@ -679,6 +693,7 @@ var DeleteScreenModal = function DeleteScreenModal(_ref) {
679
693
  };
680
694
  DeleteScreenModal.propTypes = propTypes$k;
681
695
  DeleteScreenModal.defaultProps = defaultProps$k;
696
+ var DeleteScreenModal$1 = DeleteScreenModal;
682
697
 
683
698
  var styles$f = {"panel":"micromag-editor-form-panel","exit":"micromag-editor-form-exit","content":"micromag-editor-form-content","navbar":"micromag-editor-form-navbar","enterRight":"micromag-editor-form-enterRight","enterLeft":"micromag-editor-form-enterLeft","enterTop":"micromag-editor-form-enterTop","enterBottom":"micromag-editor-form-enterBottom","enterActiveHorizontal":"micromag-editor-form-enterActiveHorizontal","enterActiveVertical":"micromag-editor-form-enterActiveVertical","exitActiveRight":"micromag-editor-form-exitActiveRight","exitActiveLeft":"micromag-editor-form-exitActiveLeft","exitActiveTop":"micromag-editor-form-exitActiveTop","exitActiveBottom":"micromag-editor-form-exitActiveBottom"};
684
699
 
@@ -700,7 +715,9 @@ var EditForm = function EditForm(_ref) {
700
715
  className = _ref.className,
701
716
  onChange = _ref.onChange;
702
717
  // Match routes
703
- var history = useHistory();
718
+ var _useLocation = useLocation(),
719
+ _useLocation2 = _slicedToArray(_useLocation, 2),
720
+ setLocation = _useLocation2[1];
704
721
  var routePush = useRoutePush();
705
722
  var _useRouteParams = useRouteParams(),
706
723
  url = _useRouteParams.url,
@@ -785,12 +802,12 @@ var EditForm = function EditForm(_ref) {
785
802
  var fieldKey = "".concat(field).concat(formName !== null ? ":".concat(formName) : '');
786
803
  var pastUrl = fieldForms[fieldKey] || null;
787
804
  if (pastUrl !== null) {
788
- history.push(pastUrl);
805
+ setLocation(pastUrl);
789
806
  }
790
807
  setFieldForms(Object.keys(fieldForms).reduce(function (map, key) {
791
808
  return key !== fieldKey ? _objectSpread(_objectSpread({}, map), {}, _defineProperty({}, key, fieldForms[key])) : map;
792
809
  }, {}));
793
- }, [history, screenId, fieldForms, setFieldForms]);
810
+ }, [setLocation, screenId, fieldForms, setFieldForms]);
794
811
  var triggerOnChange = useCallback(function (newValue) {
795
812
  if (onChange !== null) {
796
813
  onChange(newValue);
@@ -870,7 +887,7 @@ var EditForm = function EditForm(_ref) {
870
887
  noWrap: true,
871
888
  withoutCollapse: true,
872
889
  className: classNames(['sticky-top', 'border-bottom', 'border-dark', styles$f.navbar])
873
- }, /*#__PURE__*/React.createElement(Breadcrumb, {
890
+ }, /*#__PURE__*/React.createElement(Breadcrumb$1, {
874
891
  story: value,
875
892
  url: url,
876
893
  screenId: screenId,
@@ -879,7 +896,7 @@ var EditForm = function EditForm(_ref) {
879
896
  className: "me-auto"
880
897
  }), fieldParams === null ? /*#__PURE__*/React.createElement("div", {
881
898
  className: "dropdown"
882
- }, /*#__PURE__*/React.createElement(SettingsButton, {
899
+ }, /*#__PURE__*/React.createElement(SettingsButton$1, {
883
900
  onClick: onSettingsClick,
884
901
  dots: true,
885
902
  className: "py-0",
@@ -905,7 +922,7 @@ var EditForm = function EditForm(_ref) {
905
922
  className: classNames(['w-100', styles$f.panel])
906
923
  }, /*#__PURE__*/React.createElement(ScreenProvider, {
907
924
  data: screen
908
- }, /*#__PURE__*/React.createElement(FieldWithContexts, {
925
+ }, /*#__PURE__*/React.createElement(FieldWithContexts$1, {
909
926
  name: fieldParams.replace(/\//g, '.'),
910
927
  value: screen,
911
928
  form: formParams,
@@ -923,7 +940,7 @@ var EditForm = function EditForm(_ref) {
923
940
  key: "screen-".concat(screen.id)
924
941
  }, /*#__PURE__*/React.createElement(ScreenProvider, {
925
942
  data: screen
926
- }, /*#__PURE__*/React.createElement(ScreenForm, {
943
+ }, /*#__PURE__*/React.createElement(ScreenForm$1, {
927
944
  value: screen,
928
945
  className: styles$f.form,
929
946
  onChange: onScreenFormChange,
@@ -938,13 +955,14 @@ var EditForm = function EditForm(_ref) {
938
955
  "value": "Select a screen..."
939
956
  }],
940
957
  decription: "Indication to select a screen to view the form"
941
- }))), deleteScreenModalOpened ? /*#__PURE__*/React.createElement(DeleteScreenModal, {
958
+ }))), deleteScreenModalOpened ? /*#__PURE__*/React.createElement(DeleteScreenModal$1, {
942
959
  onConfirm: onDeleteScreenConfirm,
943
960
  onCancel: onDeleteScreenCancel
944
961
  }) : null);
945
962
  };
946
963
  EditForm.propTypes = propTypes$j;
947
964
  EditForm.defaultProps = defaultProps$j;
965
+ var EditorForm = EditForm;
948
966
 
949
967
  function useScreenStates(screen) {
950
968
  var _ref = screen || {},
@@ -1009,6 +1027,7 @@ var DesktopIcon = function DesktopIcon(_ref) {
1009
1027
  };
1010
1028
  DesktopIcon.propTypes = propTypes$i;
1011
1029
  DesktopIcon.defaultProps = defaultProps$i;
1030
+ var DesktopIcon$1 = DesktopIcon;
1012
1031
 
1013
1032
  /* eslint-disable react/button-has-type, react/jsx-props-no-spreading */
1014
1033
  var propTypes$h = {
@@ -1040,11 +1059,12 @@ var MobileIcon = function MobileIcon(_ref) {
1040
1059
  };
1041
1060
  MobileIcon.propTypes = propTypes$h;
1042
1061
  MobileIcon.defaultProps = defaultProps$h;
1062
+ var MobileIcon$1 = MobileIcon;
1043
1063
 
1044
1064
  var DeviceIcons = /*#__PURE__*/Object.freeze({
1045
1065
  __proto__: null,
1046
- Desktop: DesktopIcon,
1047
- Mobile: MobileIcon
1066
+ Desktop: DesktopIcon$1,
1067
+ Mobile: MobileIcon$1
1048
1068
  });
1049
1069
 
1050
1070
  var styles$d = {"container":"micromag-editor-buttons-device-container","icon":"micromag-editor-buttons-device-icon"};
@@ -1064,7 +1084,7 @@ var DeviceButton = function DeviceButton(_ref) {
1064
1084
  className = _ref.className,
1065
1085
  iconComponents = _ref.iconComponents,
1066
1086
  props = _objectWithoutProperties(_ref, _excluded$6);
1067
- var DeviceIcon = getComponentFromName(device, iconComponents, DesktopIcon);
1087
+ var DeviceIcon = getComponentFromName(device, iconComponents, DesktopIcon$1);
1068
1088
  return /*#__PURE__*/React.createElement(Button, Object.assign({
1069
1089
  className: classNames([styles$d.container, _defineProperty({}, className, className !== null)])
1070
1090
  }, props), /*#__PURE__*/React.createElement(DeviceIcon, {
@@ -1073,6 +1093,7 @@ var DeviceButton = function DeviceButton(_ref) {
1073
1093
  };
1074
1094
  DeviceButton.propTypes = propTypes$g;
1075
1095
  DeviceButton.defaultProps = defaultProps$g;
1096
+ var DeviceButton$1 = DeviceButton;
1076
1097
 
1077
1098
  var _excluded$5 = ["id"];
1078
1099
  var propTypes$f = {
@@ -1096,7 +1117,7 @@ var DevicesMenu = function DevicesMenu(_ref) {
1096
1117
  renderItemButton: function renderItemButton(item, index, props) {
1097
1118
  var id = item.id,
1098
1119
  itemProps = _objectWithoutProperties(item, _excluded$5);
1099
- return /*#__PURE__*/React.createElement(DeviceButton, Object.assign({
1120
+ return /*#__PURE__*/React.createElement(DeviceButton$1, Object.assign({
1100
1121
  device: id
1101
1122
  }, props, itemProps, {
1102
1123
  className: styles$e.button,
@@ -1109,6 +1130,7 @@ var DevicesMenu = function DevicesMenu(_ref) {
1109
1130
  };
1110
1131
  DevicesMenu.propTypes = propTypes$f;
1111
1132
  DevicesMenu.defaultProps = defaultProps$f;
1133
+ var DevicesMenu$1 = DevicesMenu;
1112
1134
 
1113
1135
  var styles$c = {"container":"micromag-editor-buttons-screen-container","button":"micromag-editor-buttons-screen-button","screen":"micromag-editor-buttons-screen-screen","inner":"micromag-editor-buttons-screen-inner","border":"micromag-editor-buttons-screen-border","icon":"micromag-editor-buttons-screen-icon","label":"micromag-editor-buttons-screen-label","active":"micromag-editor-buttons-screen-active"};
1114
1136
 
@@ -1269,6 +1291,7 @@ var ScreenWithPreview = function ScreenWithPreview(_ref) {
1269
1291
  };
1270
1292
  ScreenWithPreview.propTypes = propTypes$d;
1271
1293
  ScreenWithPreview.defaultProps = defaultProps$d;
1294
+ var ScreenWithPreview$1 = ScreenWithPreview;
1272
1295
 
1273
1296
  var styles$a = {"container":"micromag-editor-partials-screen-states-container","button":"micromag-editor-partials-screen-states-button","addButton":"micromag-editor-partials-screen-states-addButton","title":"micromag-editor-partials-screen-states-title"};
1274
1297
 
@@ -1391,7 +1414,7 @@ function ScreenStates(_ref) {
1391
1414
  }, repeatableItems.map(function (item, index) {
1392
1415
  return /*#__PURE__*/React.createElement("li", {
1393
1416
  className: "p-1"
1394
- }, /*#__PURE__*/React.createElement(ScreenWithPreview, {
1417
+ }, /*#__PURE__*/React.createElement(ScreenWithPreview$1, {
1395
1418
  index: index,
1396
1419
  withIndexIndicator: true,
1397
1420
  withDeleteButtonOnRepeatables: true,
@@ -1418,7 +1441,7 @@ function ScreenStates(_ref) {
1418
1441
  icon: faPlus
1419
1442
  }),
1420
1443
  onClick: onClickAdd
1421
- })) : null) : /*#__PURE__*/React.createElement(ScreenWithPreview, {
1444
+ })) : null) : /*#__PURE__*/React.createElement(ScreenWithPreview$1, {
1422
1445
  screen: screen,
1423
1446
  screenState: id,
1424
1447
  className: styles$a.button,
@@ -1599,7 +1622,7 @@ var EditorPreview = function EditorPreview(_ref) {
1599
1622
  withoutMenu: true
1600
1623
  })))))), !withoutDevicesSizes ? /*#__PURE__*/React.createElement("div", {
1601
1624
  className: styles$9.deviceMenu
1602
- }, /*#__PURE__*/React.createElement(DevicesMenu, {
1625
+ }, /*#__PURE__*/React.createElement(DevicesMenu$1, {
1603
1626
  items: devices.map(function (it) {
1604
1627
  return _objectSpread(_objectSpread({}, it), {}, {
1605
1628
  active: it.id === deviceId
@@ -1611,6 +1634,7 @@ var EditorPreview = function EditorPreview(_ref) {
1611
1634
  };
1612
1635
  EditorPreview.propTypes = propTypes$b;
1613
1636
  EditorPreview.defaultProps = defaultProps$b;
1637
+ var EditorPreview$1 = EditorPreview;
1614
1638
 
1615
1639
  var iOS = /iPad|iPhone|iPod/.test(navigator.platform);
1616
1640
  function getDragDepth(offset, indentationWidth) {
@@ -2067,6 +2091,7 @@ var SortableTreeItemActions = /*#__PURE__*/forwardRef(function (_ref, ref) {
2067
2091
  });
2068
2092
  SortableTreeItemActions.propTypes = propTypes$a;
2069
2093
  SortableTreeItemActions.defaultProps = defaultProps$a;
2094
+ var SortableTreeItemActions$1 = SortableTreeItemActions;
2070
2095
 
2071
2096
  var styles$7 = {"container":"micromag-editor-sortable-sortable-tree-item-container","parent":"micromag-editor-sortable-sortable-tree-item-parent","child":"micromag-editor-sortable-sortable-tree-item-child"};
2072
2097
 
@@ -2170,7 +2195,7 @@ var SortableTreeItem = function SortableTreeItem(_ref2) {
2170
2195
  }, [onPointerUp]);
2171
2196
  return /*#__PURE__*/React.createElement("div", {
2172
2197
  className: classNames([styles$7.container])
2173
- }, /*#__PURE__*/React.createElement(SortableTreeItemActions, Object.assign({
2198
+ }, /*#__PURE__*/React.createElement(SortableTreeItemActions$1, Object.assign({
2174
2199
  ref: setDraggableNodeRef,
2175
2200
  wrapperRef: setDroppableNodeRef,
2176
2201
  style: actionsStyle,
@@ -2192,6 +2217,7 @@ var SortableTreeItem = function SortableTreeItem(_ref2) {
2192
2217
  };
2193
2218
  SortableTreeItem.propTypes = propTypes$9;
2194
2219
  SortableTreeItem.defaultProps = defaultProps$9;
2220
+ var SortableTreeItem$1 = SortableTreeItem;
2195
2221
 
2196
2222
  var styles$6 = {"item":"micromag-editor-sortable-sortable-tree-item","parent":"micromag-editor-sortable-sortable-tree-parent","group":"micromag-editor-sortable-sortable-tree-group","isLastChild":"micromag-editor-sortable-sortable-tree-isLastChild"};
2197
2223
 
@@ -2571,7 +2597,7 @@ var SortableTree = function SortableTree(_ref2) {
2571
2597
  return /*#__PURE__*/React.createElement("div", {
2572
2598
  className: classNames([styles$6.item, _defineProperty(_defineProperty(_defineProperty({}, styles$6.parent, onCollapse !== null && !collapsed), styles$6.group, depth === 1), styles$6.isLastChild, next === null)]),
2573
2599
  key: id
2574
- }, /*#__PURE__*/React.createElement(SortableTreeItem, {
2600
+ }, /*#__PURE__*/React.createElement(SortableTreeItem$1, {
2575
2601
  key: id,
2576
2602
  id: id,
2577
2603
  depth: currentDepth,
@@ -2595,7 +2621,7 @@ var SortableTree = function SortableTree(_ref2) {
2595
2621
  }, activeId && activeItem ? /*#__PURE__*/React.createElement("div", {
2596
2622
  className: styles$6.item,
2597
2623
  key: activeId
2598
- }, /*#__PURE__*/React.createElement(SortableTreeItem, {
2624
+ }, /*#__PURE__*/React.createElement(SortableTreeItem$1, {
2599
2625
  id: activeId,
2600
2626
  depth: activeItem.depth,
2601
2627
  clone: true,
@@ -2612,6 +2638,7 @@ var SortableTree = function SortableTree(_ref2) {
2612
2638
  };
2613
2639
  SortableTree.propTypes = propTypes$8;
2614
2640
  SortableTree.defaultProps = defaultProps$8;
2641
+ var SortableTree$1 = SortableTree;
2615
2642
 
2616
2643
  var styles$5 = {"container":"micromag-editor-menus-screens-container","screen":"micromag-editor-menus-screens-screen","preview":"micromag-editor-menus-screens-preview","placeholder":"micromag-editor-menus-screens-placeholder","items":"micromag-editor-menus-screens-items","item":"micromag-editor-menus-screens-item","button":"micromag-editor-menus-screens-button","settings":"micromag-editor-menus-screens-settings","noWrap":"micromag-editor-menus-screens-noWrap","isVertical":"micromag-editor-menus-screens-isVertical","withPlaceholder":"micromag-editor-menus-screens-withPlaceholder"};
2617
2644
 
@@ -2682,7 +2709,7 @@ var ScreensMenu = function ScreensMenu(_ref) {
2682
2709
  key: item.id,
2683
2710
  className: classNames([styles$5.item, _defineProperty(_defineProperty({}, itemClassName, itemClassName !== null), itemCustomClassName, itemCustomClassName !== null)]),
2684
2711
  "data-screen-id": item.id
2685
- }, /*#__PURE__*/React.createElement(ScreenWithPreview, {
2712
+ }, /*#__PURE__*/React.createElement(ScreenWithPreview$1, {
2686
2713
  index: index,
2687
2714
  screen: withPlaceholder ? _objectSpread(_objectSpread({}, screen), {}, {
2688
2715
  type: type
@@ -2733,9 +2760,9 @@ var ScreensMenu = function ScreensMenu(_ref) {
2733
2760
  }, [items, isTree, items.length]);
2734
2761
  return /*#__PURE__*/React.createElement("div", {
2735
2762
  className: classNames([styles$5.container, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, styles$5.noWrap, noWrap), styles$5.isVertical, isVertical), styles$5.isTree, isTree), styles$5.withPlaceholder, withPlaceholder), className, className)])
2736
- }, isTree && !sortable ? /*#__PURE__*/React.createElement(SortableTree, {
2763
+ }, isTree && !sortable ? /*#__PURE__*/React.createElement(SortableTree$1, {
2737
2764
  items: sortableItems,
2738
- component: ScreenWithPreview,
2765
+ component: ScreenWithPreview$1,
2739
2766
  onClickItem: onClickItem,
2740
2767
  onChange: onOrderChange
2741
2768
  }) : null, !isTree && sortable && items.length > 1 ? /*#__PURE__*/React.createElement(ReactSortable, {
@@ -2752,6 +2779,7 @@ var ScreensMenu = function ScreensMenu(_ref) {
2752
2779
  };
2753
2780
  ScreensMenu.propTypes = propTypes$7;
2754
2781
  ScreensMenu.defaultProps = defaultProps$7;
2782
+ var ScreensMenu$1 = ScreensMenu;
2755
2783
 
2756
2784
  var styles$4 = {"container":"micromag-editor-menus-screen-types-container","row":"micromag-editor-menus-screen-types-row","title":"micromag-editor-menus-screen-types-title","screen":"micromag-editor-menus-screen-types-screen","button":"micromag-editor-menus-screen-types-button"};
2757
2785
 
@@ -2844,7 +2872,7 @@ var ScreenTypes = function ScreenTypes(_ref) {
2844
2872
  className: styles$4.row
2845
2873
  }, /*#__PURE__*/React.createElement(Label, null, name), /*#__PURE__*/React.createElement("div", {
2846
2874
  className: styles$4.layouts
2847
- }, /*#__PURE__*/React.createElement(ScreensMenu, {
2875
+ }, /*#__PURE__*/React.createElement(ScreensMenu$1, {
2848
2876
  items: items,
2849
2877
  withPlaceholder: true,
2850
2878
  withName: true,
@@ -2861,6 +2889,7 @@ var ScreenTypes = function ScreenTypes(_ref) {
2861
2889
  };
2862
2890
  ScreenTypes.propTypes = propTypes$6;
2863
2891
  ScreenTypes.defaultProps = defaultProps$6;
2892
+ var ScreenTypesMenu = ScreenTypes;
2864
2893
 
2865
2894
  var styles$3 = {"container":"micromag-editor-modals-screen-types-container","selected":"micromag-editor-modals-screen-types-selected"};
2866
2895
 
@@ -2891,7 +2920,7 @@ var ScreenTypesModal = function ScreenTypesModal(_ref) {
2891
2920
  }),
2892
2921
  className: classNames([styles$3.container, _defineProperty({}, className, className)]),
2893
2922
  onClickClose: onRequestClose
2894
- }, /*#__PURE__*/React.createElement(ScreenTypes, {
2923
+ }, /*#__PURE__*/React.createElement(ScreenTypesMenu, {
2895
2924
  selectedTypes: selectedTypes,
2896
2925
  className: styles$3.menu,
2897
2926
  onClickItem: onClickScreenType
@@ -2899,6 +2928,7 @@ var ScreenTypesModal = function ScreenTypesModal(_ref) {
2899
2928
  };
2900
2929
  ScreenTypesModal.propTypes = propTypes$5;
2901
2930
  ScreenTypesModal.defaultProps = defaultProps$5;
2931
+ var ScreenTypesModal$1 = ScreenTypesModal;
2902
2932
 
2903
2933
  var styles$2 = {"container":"micromag-editor-screens-container","navbar":"micromag-editor-screens-navbar"};
2904
2934
 
@@ -2970,7 +3000,7 @@ var EditorScreens = function EditorScreens(_ref) {
2970
3000
  var themeScreen = themeComponents !== null ? themeComponents.find(function (it) {
2971
3001
  return it.type === newScreenType;
2972
3002
  }) || null : null;
2973
- var newScreen = createScreen(definition, themeScreen);
3003
+ var newScreen = createScreen$1(definition, themeScreen);
2974
3004
  var foundIndex = screens.findIndex(function (_ref6) {
2975
3005
  var id = _ref6.id;
2976
3006
  return id === currentScreenId;
@@ -3086,43 +3116,71 @@ var EditorScreens = function EditorScreens(_ref) {
3086
3116
  })
3087
3117
  })), /*#__PURE__*/React.createElement("div", {
3088
3118
  className: "flex-grow-1 d-flex w-100 p-2"
3089
- }, /*#__PURE__*/React.createElement(Route, {
3090
- path: [routes.screen, routes.home],
3091
- render: function render(_ref18) {
3092
- var _ref18$match$params$s = _ref18.match.params.screen,
3093
- screenId = _ref18$match$params$s === void 0 ? null : _ref18$match$params$s;
3094
- return screens.length > 0 ? /*#__PURE__*/React.createElement(ScreensMenu, {
3095
- items: screens.map(function (it) {
3096
- return {
3097
- id: it.id,
3098
- screen: it,
3099
- href: url('screen', {
3100
- screen: it.id
3101
- }),
3102
- active: it.id === screenId
3103
- };
3119
+ }, /*#__PURE__*/React.createElement(Switch, null, /*#__PURE__*/React.createElement(Route, {
3120
+ path: "".concat(routes.screen, "/(.*)?")
3121
+ }, function (_ref18) {
3122
+ var _ref18$screen = _ref18.screen,
3123
+ screenId = _ref18$screen === void 0 ? null : _ref18$screen;
3124
+ return screens.length > 0 ? /*#__PURE__*/React.createElement(ScreensMenu$1, {
3125
+ items: screens.map(function (it) {
3126
+ return {
3127
+ id: it.id,
3128
+ screen: it,
3129
+ href: url('screen', {
3130
+ screen: it.id
3131
+ }),
3132
+ active: it.id === screenId
3133
+ };
3134
+ }),
3135
+ isVertical: isVertical,
3136
+ withPreview: true,
3137
+ sortable: !isTree,
3138
+ className: "w-100",
3139
+ onClickItem: onClickScreen,
3140
+ onOrderChange: onOrderChange,
3141
+ isTree: isTree
3142
+ }) : /*#__PURE__*/React.createElement(Empty, {
3143
+ className: "flex-grow-1 p-2"
3144
+ }, /*#__PURE__*/React.createElement(Button, {
3145
+ theme: "primary",
3146
+ onClick: onClickAdd
3147
+ }, /*#__PURE__*/React.createElement(FormattedMessage, {
3148
+ id: "JoWKee",
3149
+ defaultMessage: [{
3150
+ "type": 0,
3151
+ "value": "Create your first screen"
3152
+ }]
3153
+ })));
3154
+ }), /*#__PURE__*/React.createElement(Route, null, screens.length > 0 ? /*#__PURE__*/React.createElement(ScreensMenu$1, {
3155
+ items: screens.map(function (it) {
3156
+ return {
3157
+ id: it.id,
3158
+ screen: it,
3159
+ href: url('screen', {
3160
+ screen: it.id
3104
3161
  }),
3105
- isVertical: isVertical,
3106
- withPreview: true,
3107
- sortable: !isTree,
3108
- className: "w-100",
3109
- onClickItem: onClickScreen,
3110
- onOrderChange: onOrderChange,
3111
- isTree: isTree
3112
- }) : /*#__PURE__*/React.createElement(Empty, {
3113
- className: "flex-grow-1 p-2"
3114
- }, /*#__PURE__*/React.createElement(Button, {
3115
- theme: "primary",
3116
- onClick: onClickAdd
3117
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
3118
- id: "JoWKee",
3119
- defaultMessage: [{
3120
- "type": 0,
3121
- "value": "Create your first screen"
3122
- }]
3123
- })));
3124
- }
3125
- })), createModalOpened ? /*#__PURE__*/React.createElement(ScreenTypesModal, {
3162
+ active: false
3163
+ };
3164
+ }),
3165
+ isVertical: isVertical,
3166
+ withPreview: true,
3167
+ sortable: !isTree,
3168
+ className: "w-100",
3169
+ onClickItem: onClickScreen,
3170
+ onOrderChange: onOrderChange,
3171
+ isTree: isTree
3172
+ }) : /*#__PURE__*/React.createElement(Empty, {
3173
+ className: "flex-grow-1 p-2"
3174
+ }, /*#__PURE__*/React.createElement(Button, {
3175
+ theme: "primary",
3176
+ onClick: onClickAdd
3177
+ }, /*#__PURE__*/React.createElement(FormattedMessage, {
3178
+ id: "JoWKee",
3179
+ defaultMessage: [{
3180
+ "type": 0,
3181
+ "value": "Create your first screen"
3182
+ }]
3183
+ })))))), createModalOpened ? /*#__PURE__*/React.createElement(ScreenTypesModal$1, {
3126
3184
  selectedTypes: isTheme ? screens.map(function (_ref19) {
3127
3185
  var type = _ref19.type;
3128
3186
  return type;
@@ -3133,6 +3191,7 @@ var EditorScreens = function EditorScreens(_ref) {
3133
3191
  };
3134
3192
  EditorScreens.propTypes = propTypes$4;
3135
3193
  EditorScreens.defaultProps = defaultProps$4;
3194
+ var Screens = EditorScreens;
3136
3195
 
3137
3196
  var styles$1 = {"container":"micromag-editor-container","left":"micromag-editor-left","right":"micromag-editor-right","fullscreen":"micromag-editor-fullscreen","preview":"micromag-editor-preview","center":"micromag-editor-center","inner":"micromag-editor-inner","visible":"micromag-editor-visible","screen-medium":"micromag-editor-screen-medium","top":"micromag-editor-top"};
3138
3197
 
@@ -3308,7 +3367,7 @@ var Editor = function Editor(_ref) {
3308
3367
  }, /*#__PURE__*/React.createElement("div", {
3309
3368
  className: classNames([styles$1.left, _defineProperty({}, styles$1.visible, !isMobile || mobileView === 'screens')]),
3310
3369
  ref: refScreensContainer
3311
- }, /*#__PURE__*/React.createElement(EditorScreens, {
3370
+ }, /*#__PURE__*/React.createElement(Screens, {
3312
3371
  value: story,
3313
3372
  isTheme: isTheme,
3314
3373
  isCreateOpened: isCreateOpened,
@@ -3320,7 +3379,7 @@ var Editor = function Editor(_ref) {
3320
3379
  isTree: true
3321
3380
  })), /*#__PURE__*/React.createElement("div", {
3322
3381
  className: classNames([styles$1.center, _defineProperty({}, styles$1.visible, !isMobile || mobileView === 'preview')])
3323
- }, /*#__PURE__*/React.createElement(EditorPreview, {
3382
+ }, /*#__PURE__*/React.createElement(EditorPreview$1, {
3324
3383
  value: story,
3325
3384
  isTheme: isTheme,
3326
3385
  viewerTheme: viewerTheme,
@@ -3329,7 +3388,7 @@ var Editor = function Editor(_ref) {
3329
3388
  onChange: onStoryChange
3330
3389
  })), /*#__PURE__*/React.createElement("div", {
3331
3390
  className: classNames([styles$1.right, _defineProperty({}, styles$1.visible, !isMobile || mobileView === 'form')])
3332
- }, /*#__PURE__*/React.createElement(EditForm, {
3391
+ }, /*#__PURE__*/React.createElement(EditorForm, {
3333
3392
  key: screenId,
3334
3393
  value: story,
3335
3394
  isTheme: isTheme,
@@ -3339,6 +3398,7 @@ var Editor = function Editor(_ref) {
3339
3398
  };
3340
3399
  Editor.propTypes = propTypes$3;
3341
3400
  Editor.defaultProps = defaultProps$3;
3401
+ var Editor$1 = Editor;
3342
3402
 
3343
3403
  // eslint-disable-next-line import/prefer-default-export
3344
3404
  var routes = PropTypes.shape({
@@ -3411,12 +3471,13 @@ var SettingsForm = function SettingsForm(_ref) {
3411
3471
  };
3412
3472
  SettingsForm.propTypes = propTypes$2;
3413
3473
  SettingsForm.defaultProps = defaultProps$2;
3474
+ var SettingsForm$1 = SettingsForm;
3414
3475
 
3415
3476
  // eslint-disable-next-line import/prefer-default-export
3416
3477
 
3417
3478
  var FormsComponents = /*#__PURE__*/Object.freeze({
3418
3479
  __proto__: null,
3419
- Settings: SettingsForm
3480
+ Settings: SettingsForm$1
3420
3481
  });
3421
3482
 
3422
3483
  /* eslint-disable react/jsx-props-no-spreading */
@@ -3434,17 +3495,21 @@ var FormsProvider = function FormsProvider(props) {
3434
3495
  };
3435
3496
  FormsProvider.propTypes = propTypes$1;
3436
3497
  FormsProvider.defaultProps = defaultProps$1;
3498
+ var FormsProvider$1 = FormsProvider;
3437
3499
 
3438
3500
  var home = "/";
3501
+ var screen_wildcard = "/:screen/(.*)?";
3439
3502
  var screen = "/:screen";
3440
3503
  var defaultRoutes = {
3441
3504
  home: home,
3505
+ screen_wildcard: screen_wildcard,
3442
3506
  screen: screen,
3443
3507
  "screen.field": "/:screen/:field+",
3444
3508
  "screen.field.form": "/:screen/:field+/:form"
3445
3509
  };
3446
3510
 
3447
3511
  var _excluded = ["value", "memoryRouter", "routes", "basePath", "uppy", "googleApiKey", "googleMapsLibraries", "screenNamespaces"];
3512
+ var pathToRegexpParser = createPathToRegexpParser();
3448
3513
  var propTypes = {
3449
3514
  value: PropTypes.oneOfType([PropTypes$1.story, PropTypes$1.theme]),
3450
3515
  routes: routes,
@@ -3477,15 +3542,19 @@ var EditorContainer = function EditorContainer(_ref) {
3477
3542
  googleMapsLibraries = _ref.googleMapsLibraries,
3478
3543
  screenNamespaces = _ref.screenNamespaces,
3479
3544
  props = _objectWithoutProperties(_ref, _excluded);
3480
- var Router = memoryRouter ? MemoryRouter : BrowserRouter;
3481
3545
  var _useIntl = useIntl(),
3482
3546
  locale = _useIntl.locale;
3483
3547
 
3484
3548
  // const { metadata } = value || {};
3485
3549
  // const { language:finalLocale = locale } = metadata || {};
3486
-
3550
+ var _useMemoryRouter = useMemoryRouter(),
3551
+ memoryLocationHook = _useMemoryRouter.hook,
3552
+ memorySearchHook = _useMemoryRouter.searchHook;
3487
3553
  return /*#__PURE__*/React.createElement(Router, {
3488
- basename: !memoryRouter ? basePath : null
3554
+ hook: memoryRouter ? memoryLocationHook : null,
3555
+ searchHook: memoryRouter ? memorySearchHook : null,
3556
+ parser: pathToRegexpParser,
3557
+ base: !memoryRouter ? basePath : null
3489
3558
  }, /*#__PURE__*/React.createElement(UppyProvider, uppy, /*#__PURE__*/React.createElement(StoryProvider, {
3490
3559
  story: value
3491
3560
  }, /*#__PURE__*/React.createElement(ScreensProvider, {
@@ -3496,7 +3565,7 @@ var EditorContainer = function EditorContainer(_ref) {
3496
3565
  }, /*#__PURE__*/React.createElement(GoogleMapsClientProvider, {
3497
3566
  locale: locale,
3498
3567
  libraries: googleMapsLibraries
3499
- }, /*#__PURE__*/React.createElement(FontsProvider, null, /*#__PURE__*/React.createElement(FieldsProvider, null, /*#__PURE__*/React.createElement(FormsProvider, null, /*#__PURE__*/React.createElement(EditorProvider, null, /*#__PURE__*/React.createElement(VisitorProvider, {
3568
+ }, /*#__PURE__*/React.createElement(FontsProvider, null, /*#__PURE__*/React.createElement(FieldsProvider, null, /*#__PURE__*/React.createElement(FormsProvider$1, null, /*#__PURE__*/React.createElement(EditorProvider, null, /*#__PURE__*/React.createElement(VisitorProvider, {
3500
3569
  visitor: "editor"
3501
3570
  }, /*#__PURE__*/React.createElement(ComponentsContext.Consumer, null, function (manager) {
3502
3571
  var formComponents = manager.getComponents(FORMS_NAMESPACE);
@@ -3507,12 +3576,13 @@ var EditorContainer = function EditorContainer(_ref) {
3507
3576
  routes: _objectSpread(_objectSpread({}, routes), {}, {
3508
3577
  'screen.field.form': routes['screen.field.form'].replace(/:form$/, ":form(".concat(formRegEx, ")"))
3509
3578
  })
3510
- }, /*#__PURE__*/React.createElement(Editor, Object.assign({
3579
+ }, /*#__PURE__*/React.createElement(Editor$1, Object.assign({
3511
3580
  value: value
3512
3581
  }, props)));
3513
3582
  }))))))))))));
3514
3583
  };
3515
3584
  EditorContainer.propTypes = propTypes;
3516
3585
  EditorContainer.defaultProps = defaultProps;
3586
+ var EditorContainer$1 = EditorContainer;
3517
3587
 
3518
- export { Editor, ScreenTypes, ScreensMenu as Screens, createScreen, EditorContainer as default };
3588
+ export { Editor$1 as Editor, ScreenTypesMenu as ScreenTypes, ScreensMenu$1 as Screens, createScreen$1 as createScreen, EditorContainer$1 as default };