@micromag/editor 0.3.538 → 0.3.540
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 +19 -0
- package/es/index.js +3549 -0
- package/lib/index.js +4103 -0
- package/package.json +4 -4
package/es/index.js
ADDED
|
@@ -0,0 +1,3549 @@
|
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
|
+
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
3
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
4
|
+
import { PropTypes as PropTypes$1 } from '@micromag/core';
|
|
5
|
+
import { Button, FieldForm, BackButton, Breadcrumb as Breadcrumb$2, Modal, ModalDialog, Label, Navbar, DropdownMenu, Empty, Tabs, ScreenPlaceholder, ScreenPreview, Modals } from '@micromag/core/components';
|
|
6
|
+
import { useRoutes, useScreenDefinition, useFormsComponents, useScreensManager, useFieldsManager, useFieldsComponentsManager, useUrlGenerator, useRoutePush, ScreenProvider, useScreenSize, PlaybackProvider, ModalsProvider, PanelsProvider, ScreenSizeProvider, useFieldComponent, ComponentsProvider, FORMS_NAMESPACE, StoryProvider, GoogleKeysProvider, GoogleMapsClientProvider, FontsProvider, EditorProvider, VisitorProvider, ComponentsContext, RoutesProvider } from '@micromag/core/contexts';
|
|
7
|
+
import { useIsVisible, useParsedStory, useDimensionObserver, useScreenSizeFromElement, useMediasParser } from '@micromag/core/hooks';
|
|
8
|
+
import { getScreenFieldsWithStates, getScreenExtraField, isMessage, slug, getComponentFromName, getDeviceScreens } from '@micromag/core/utils';
|
|
9
|
+
import classNames from 'classnames';
|
|
10
|
+
import PropTypes from 'prop-types';
|
|
11
|
+
import React, { useMemo, useRef, useCallback, useState, forwardRef, useEffect } from 'react';
|
|
12
|
+
import { useIntl, FormattedMessage } from 'react-intl';
|
|
13
|
+
import { useRouteMatcher, createPathToRegexpParser, useMemoryRouter } from '@folklore/routes';
|
|
14
|
+
import { useLocation, Switch, Route, Router } from 'wouter';
|
|
15
|
+
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
16
|
+
import { TransitionGroup, CSSTransition } from 'react-transition-group';
|
|
17
|
+
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
18
|
+
import { faCogs } from '@fortawesome/free-solid-svg-icons/faCogs';
|
|
19
|
+
import { faEllipsisV } from '@fortawesome/free-solid-svg-icons/faEllipsisV';
|
|
20
|
+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
21
|
+
import { Fields, FieldsProvider } from '@micromag/fields';
|
|
22
|
+
import { v1 } from 'uuid';
|
|
23
|
+
import { getSizeWithinBounds } from '@folklore/size';
|
|
24
|
+
import { Viewer } from '@micromag/viewer';
|
|
25
|
+
import _toArray from '@babel/runtime/helpers/toArray';
|
|
26
|
+
import { faPlus } from '@fortawesome/free-solid-svg-icons/faPlus';
|
|
27
|
+
import { faTimesCircle } from '@fortawesome/free-solid-svg-icons/faTimesCircle';
|
|
28
|
+
import isString from 'lodash/isString';
|
|
29
|
+
import isFunction from 'lodash/isFunction';
|
|
30
|
+
import { ReactSortable } from 'react-sortablejs';
|
|
31
|
+
import { KeyboardCode, closestCorners, getFirstCollision, getClientRect, MeasuringStrategy, defaultDropAnimation, useSensors, useSensor, PointerSensor, KeyboardSensor, DndContext, closestCenter, DragOverlay } from '@dnd-kit/core';
|
|
32
|
+
import { arrayMove, useSortable, SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';
|
|
33
|
+
import { createPortal } from 'react-dom';
|
|
34
|
+
import _createForOfIteratorHelper from '@babel/runtime/helpers/createForOfIteratorHelper';
|
|
35
|
+
import { CSS } from '@dnd-kit/utilities';
|
|
36
|
+
import { faAngleDown } from '@fortawesome/free-solid-svg-icons/faAngleDown';
|
|
37
|
+
import { faGripLines } from '@fortawesome/free-solid-svg-icons/faGripLines';
|
|
38
|
+
import { faTimes } from '@fortawesome/free-solid-svg-icons/faTimes';
|
|
39
|
+
import orderBy from 'lodash/orderBy';
|
|
40
|
+
import { UppyProvider } from '@panneau/uppy';
|
|
41
|
+
import { ScreensProvider } from '@micromag/screens';
|
|
42
|
+
|
|
43
|
+
var useRouteParams = function useRouteParams() {
|
|
44
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
45
|
+
_ref$screenOnly = _ref.screenOnly,
|
|
46
|
+
screenOnly = _ref$screenOnly === void 0 ? false : _ref$screenOnly;
|
|
47
|
+
var routes = useRoutes();
|
|
48
|
+
var _useLocation = useLocation(),
|
|
49
|
+
_useLocation2 = _slicedToArray(_useLocation, 1),
|
|
50
|
+
location = _useLocation2[0];
|
|
51
|
+
var matcher = useRouteMatcher();
|
|
52
|
+
var _useMemo = useMemo(function () {
|
|
53
|
+
var paths = screenOnly ? [routes.screen, '/:screen/*', '*'] : [routes['screen.field.form'], routes['screen.field'], routes.screen, '*'];
|
|
54
|
+
return paths.reduce(function (currentParams, path) {
|
|
55
|
+
if (currentParams !== null) {
|
|
56
|
+
return currentParams;
|
|
57
|
+
}
|
|
58
|
+
var _matcher = matcher(path),
|
|
59
|
+
_matcher2 = _slicedToArray(_matcher, 2),
|
|
60
|
+
_matcher2$ = _matcher2[0],
|
|
61
|
+
match = _matcher2$ === void 0 ? false : _matcher2$,
|
|
62
|
+
params = _matcher2[1];
|
|
63
|
+
return match ? params : currentParams;
|
|
64
|
+
}, null) || {};
|
|
65
|
+
}, [routes, screenOnly, location, matcher]),
|
|
66
|
+
_useMemo$screen = _useMemo.screen,
|
|
67
|
+
screen = _useMemo$screen === void 0 ? null : _useMemo$screen,
|
|
68
|
+
_useMemo$field = _useMemo.field,
|
|
69
|
+
field = _useMemo$field === void 0 ? null : _useMemo$field,
|
|
70
|
+
_useMemo$form = _useMemo.form,
|
|
71
|
+
form = _useMemo$form === void 0 ? null : _useMemo$form;
|
|
72
|
+
var routeParams = useMemo(function () {
|
|
73
|
+
return screenOnly ? {
|
|
74
|
+
url: location,
|
|
75
|
+
screen: screen
|
|
76
|
+
} : {
|
|
77
|
+
url: location,
|
|
78
|
+
screen: screen,
|
|
79
|
+
field: field,
|
|
80
|
+
form: form
|
|
81
|
+
};
|
|
82
|
+
}, [screenOnly, location, screen, field, form]);
|
|
83
|
+
return routeParams;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
var useFormTransition = function useFormTransition(url, screenIndex, styles) {
|
|
87
|
+
var lastPageRef = useRef({
|
|
88
|
+
url: url,
|
|
89
|
+
screenIndex: screenIndex
|
|
90
|
+
});
|
|
91
|
+
var direction = useMemo(function () {
|
|
92
|
+
var _lastPageRef$current = lastPageRef.current,
|
|
93
|
+
lastScreenIndex = _lastPageRef$current.screenIndex,
|
|
94
|
+
lastUrl = _lastPageRef$current.url;
|
|
95
|
+
lastPageRef.current.url = url;
|
|
96
|
+
lastPageRef.current.screenIndex = screenIndex;
|
|
97
|
+
if (screenIndex !== lastScreenIndex) {
|
|
98
|
+
// return screenIndex > lastScreenIndex ? 'bottom' : 'top';
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
var urlSplit = url.split('/');
|
|
102
|
+
var lastUrlSplit = lastUrl.split('/');
|
|
103
|
+
var currentPartsCount = urlSplit.length;
|
|
104
|
+
var previousPartsCount = lastUrlSplit.length;
|
|
105
|
+
var isSettings = urlSplit[currentPartsCount - 1] === 'settings';
|
|
106
|
+
var wasSettings = lastUrlSplit[previousPartsCount - 1] === 'settings';
|
|
107
|
+
currentPartsCount -= isSettings ? 1 : 0;
|
|
108
|
+
previousPartsCount -= wasSettings ? 1 : 0;
|
|
109
|
+
return currentPartsCount >= previousPartsCount ? 'right' : 'left';
|
|
110
|
+
}, [url, screenIndex]);
|
|
111
|
+
var transitionClassNames = useMemo(function () {
|
|
112
|
+
return {
|
|
113
|
+
enter: classNames(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, styles.enterRight, direction === 'right'), styles.enterLeft, direction === 'left'), styles.enterTop, direction === 'top'), styles.enterBottom, direction === 'bottom')) || 'none',
|
|
114
|
+
enterActive: classNames(_defineProperty(_defineProperty({}, styles.enterActiveHorizontal, direction === 'left' || direction === 'right'), styles.enterActiveVertical, direction === 'top' || direction === 'bottom')) || 'none',
|
|
115
|
+
exit: styles.exit || 'none',
|
|
116
|
+
exitActive: classNames(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, styles.exitActiveRight, direction === 'right'), styles.exitActiveLeft, direction === 'left'), styles.exitActiveTop, direction === 'top'), styles.exitActiveBottom, direction === 'bottom')) || 'none'
|
|
117
|
+
};
|
|
118
|
+
}, [direction, screenIndex]);
|
|
119
|
+
return {
|
|
120
|
+
direction: direction,
|
|
121
|
+
classNames: transitionClassNames,
|
|
122
|
+
timeout: direction === 'left' || direction === 'right' ? 300 : 10
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
var createScreen = function createScreen(definition) {
|
|
127
|
+
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
128
|
+
var finalDefinition = isString(definition) ? {
|
|
129
|
+
id: definition
|
|
130
|
+
} : definition;
|
|
131
|
+
var id = finalDefinition.id;
|
|
132
|
+
var screenFields = getScreenFieldsWithStates(finalDefinition);
|
|
133
|
+
var defaultValueFields = screenFields.reduce(function (all, curr) {
|
|
134
|
+
var _ref = curr || {},
|
|
135
|
+
_ref$name = _ref.name,
|
|
136
|
+
name = _ref$name === void 0 ? null : _ref$name,
|
|
137
|
+
_ref$defaultValue = _ref.defaultValue,
|
|
138
|
+
defaultValue = _ref$defaultValue === void 0 ? null : _ref$defaultValue;
|
|
139
|
+
var newAll = _objectSpread({}, all);
|
|
140
|
+
if (name !== null && defaultValue !== null) {
|
|
141
|
+
newAll[name] = defaultValue;
|
|
142
|
+
}
|
|
143
|
+
return newAll;
|
|
144
|
+
}, {});
|
|
145
|
+
return _objectSpread(_objectSpread(_objectSpread({
|
|
146
|
+
type: id
|
|
147
|
+
}, defaultValueFields), data), {}, {
|
|
148
|
+
id: v1()
|
|
149
|
+
});
|
|
150
|
+
};
|
|
151
|
+
var createScreen$1 = createScreen;
|
|
152
|
+
|
|
153
|
+
var _excluded$c = ["components"];
|
|
154
|
+
var deleteScreen = function deleteScreen(story, screenId) {
|
|
155
|
+
var _ref = story || {},
|
|
156
|
+
_ref$components = _ref.components,
|
|
157
|
+
components = _ref$components === void 0 ? [] : _ref$components,
|
|
158
|
+
currentValue = _objectWithoutProperties(_ref, _excluded$c);
|
|
159
|
+
return _objectSpread(_objectSpread({}, currentValue), {}, {
|
|
160
|
+
components: components.filter(function (_ref2) {
|
|
161
|
+
var id = _ref2.id;
|
|
162
|
+
return id !== screenId;
|
|
163
|
+
})
|
|
164
|
+
});
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
var _excluded$b = ["components"];
|
|
168
|
+
var duplicateScreen = function duplicateScreen(story, screenId) {
|
|
169
|
+
var screenIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
170
|
+
var _ref = story || {},
|
|
171
|
+
_ref$components = _ref.components,
|
|
172
|
+
components = _ref$components === void 0 ? [] : _ref$components,
|
|
173
|
+
currentValue = _objectWithoutProperties(_ref, _excluded$b);
|
|
174
|
+
var screen = components.find(function (it) {
|
|
175
|
+
return it.id === screenId;
|
|
176
|
+
}) || null;
|
|
177
|
+
return _objectSpread(_objectSpread({}, currentValue), {}, {
|
|
178
|
+
components: screen !== null ? screenIndex !== null && screenIndex > -1 ? [].concat(_toConsumableArray(components.slice(0, screenIndex + 1)), [_objectSpread(_objectSpread({}, screen), {}, {
|
|
179
|
+
id: v1()
|
|
180
|
+
})], _toConsumableArray(components.slice(screenIndex + 1))) : [].concat(_toConsumableArray(components), [_objectSpread(_objectSpread({}, screen), {}, {
|
|
181
|
+
id: v1()
|
|
182
|
+
})]) : components
|
|
183
|
+
});
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
var _excluded$a = ["components"];
|
|
187
|
+
var updateScreen = function updateScreen(story, newScreenValue) {
|
|
188
|
+
var newScreenId = newScreenValue.id;
|
|
189
|
+
var _ref = story || {},
|
|
190
|
+
_ref$components = _ref.components,
|
|
191
|
+
components = _ref$components === void 0 ? [] : _ref$components,
|
|
192
|
+
currentValue = _objectWithoutProperties(_ref, _excluded$a);
|
|
193
|
+
var index = components.findIndex(function (it) {
|
|
194
|
+
return it.id === newScreenId;
|
|
195
|
+
});
|
|
196
|
+
return _objectSpread(_objectSpread({}, currentValue), {}, {
|
|
197
|
+
components: [].concat(_toConsumableArray(components.slice(0, index)), [_objectSpread(_objectSpread({}, components[index]), newScreenValue)], _toConsumableArray(components.slice(index + 1)))
|
|
198
|
+
});
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
var getFieldByName = function getFieldByName(fields, name) {
|
|
202
|
+
return fields.reduce(function (foundField, it) {
|
|
203
|
+
if (foundField !== null) {
|
|
204
|
+
return foundField;
|
|
205
|
+
}
|
|
206
|
+
var _it$name = it.name,
|
|
207
|
+
fieldName = _it$name === void 0 ? null : _it$name,
|
|
208
|
+
_it$fields = it.fields,
|
|
209
|
+
subFields = _it$fields === void 0 ? [] : _it$fields;
|
|
210
|
+
if (name !== null && fieldName === name) {
|
|
211
|
+
return it;
|
|
212
|
+
}
|
|
213
|
+
return getFieldByName(subFields, name);
|
|
214
|
+
}, null);
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
var _excluded$9 = ["className", "dots"];
|
|
218
|
+
var propTypes$o = {
|
|
219
|
+
dots: PropTypes.bool,
|
|
220
|
+
className: PropTypes.string
|
|
221
|
+
};
|
|
222
|
+
var defaultProps$o = {
|
|
223
|
+
dots: false,
|
|
224
|
+
className: null
|
|
225
|
+
};
|
|
226
|
+
var SettingsButton = function SettingsButton(_ref) {
|
|
227
|
+
var className = _ref.className,
|
|
228
|
+
dots = _ref.dots,
|
|
229
|
+
props = _objectWithoutProperties(_ref, _excluded$9);
|
|
230
|
+
return /*#__PURE__*/React.createElement(Button, Object.assign({
|
|
231
|
+
className: className,
|
|
232
|
+
theme: "secondary",
|
|
233
|
+
size: "sm",
|
|
234
|
+
icon: /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
235
|
+
icon: dots ? faEllipsisV : faCogs
|
|
236
|
+
})
|
|
237
|
+
}, props));
|
|
238
|
+
};
|
|
239
|
+
SettingsButton.propTypes = propTypes$o;
|
|
240
|
+
SettingsButton.defaultProps = defaultProps$o;
|
|
241
|
+
var SettingsButton$1 = SettingsButton;
|
|
242
|
+
|
|
243
|
+
var _excluded$8 = ["name", "form"];
|
|
244
|
+
var propTypes$n = {
|
|
245
|
+
name: PropTypes.string,
|
|
246
|
+
form: PropTypes.string,
|
|
247
|
+
children: PropTypes.node
|
|
248
|
+
};
|
|
249
|
+
var defaultProps$n = {
|
|
250
|
+
name: null,
|
|
251
|
+
form: null,
|
|
252
|
+
children: null
|
|
253
|
+
};
|
|
254
|
+
var FieldWithContexts = function FieldWithContexts(_ref) {
|
|
255
|
+
var name = _ref.name,
|
|
256
|
+
form = _ref.form,
|
|
257
|
+
props = _objectWithoutProperties(_ref, _excluded$8);
|
|
258
|
+
var definition = useScreenDefinition() || null;
|
|
259
|
+
var _definition$states = definition.states,
|
|
260
|
+
states = _definition$states === void 0 ? null : _definition$states;
|
|
261
|
+
var screenFields = getScreenFieldsWithStates(definition);
|
|
262
|
+
var nameParts = name.split('.');
|
|
263
|
+
var _nameParts = _slicedToArray(nameParts, 1),
|
|
264
|
+
_nameParts$ = _nameParts[0],
|
|
265
|
+
stateId = _nameParts$ === void 0 ? null : _nameParts$;
|
|
266
|
+
var currentState = states !== null ? states.find(function (_ref2) {
|
|
267
|
+
var id = _ref2.id;
|
|
268
|
+
return id === stateId;
|
|
269
|
+
}) || null : null;
|
|
270
|
+
var finalNameParts = nameParts;
|
|
271
|
+
var _ref3 = currentState || {},
|
|
272
|
+
_ref3$repeatable = _ref3.repeatable,
|
|
273
|
+
repeatable = _ref3$repeatable === void 0 ? false : _ref3$repeatable,
|
|
274
|
+
_ref3$fieldName = _ref3.fieldName,
|
|
275
|
+
fieldName = _ref3$fieldName === void 0 ? null : _ref3$fieldName,
|
|
276
|
+
_ref3$fields = _ref3.fields,
|
|
277
|
+
stateFields = _ref3$fields === void 0 ? [] : _ref3$fields;
|
|
278
|
+
var finalScreenFields = fieldName !== null && stateId !== null ? screenFields.filter(function (_ref4) {
|
|
279
|
+
var itemName = _ref4.name,
|
|
280
|
+
fieldStateId = _ref4.stateId;
|
|
281
|
+
return fieldName !== itemName || stateId === fieldStateId || fieldStateId === null;
|
|
282
|
+
}) : screenFields;
|
|
283
|
+
if (currentState !== null) {
|
|
284
|
+
finalNameParts = (repeatable || fieldName !== null) && nameParts.length <= (repeatable ? 2 : 1) ? [fieldName || stateId].concat(_toConsumableArray(nameParts.slice(1))) : nameParts.slice(1);
|
|
285
|
+
}
|
|
286
|
+
var formComponents = useFormsComponents();
|
|
287
|
+
return definition !== null ? /*#__PURE__*/React.createElement("div", {
|
|
288
|
+
className: classNames({
|
|
289
|
+
'p-2': form === null
|
|
290
|
+
})
|
|
291
|
+
}, finalNameParts.length > 0 ? /*#__PURE__*/React.createElement(FieldForm, Object.assign({
|
|
292
|
+
fields: finalScreenFields,
|
|
293
|
+
formComponents: formComponents,
|
|
294
|
+
name: finalNameParts.join('.'),
|
|
295
|
+
form: form
|
|
296
|
+
}, props)) : /*#__PURE__*/React.createElement(Fields, Object.assign({
|
|
297
|
+
fields: stateFields
|
|
298
|
+
}, props))) : null;
|
|
299
|
+
};
|
|
300
|
+
FieldWithContexts.propTypes = propTypes$n;
|
|
301
|
+
FieldWithContexts.defaultProps = defaultProps$n;
|
|
302
|
+
var FieldWithContexts$1 = FieldWithContexts;
|
|
303
|
+
|
|
304
|
+
var styles$i = {"container":"micromag-editor-forms-screen-container","inner":"micromag-editor-forms-screen-inner"};
|
|
305
|
+
|
|
306
|
+
var propTypes$m = {
|
|
307
|
+
value: PropTypes$1.component,
|
|
308
|
+
className: PropTypes.string,
|
|
309
|
+
gotoFieldForm: PropTypes.func.isRequired,
|
|
310
|
+
closeFieldForm: PropTypes.func.isRequired,
|
|
311
|
+
onChange: PropTypes.func
|
|
312
|
+
// onClickDelete: PropTypes.func,
|
|
313
|
+
};
|
|
314
|
+
var defaultProps$m = {
|
|
315
|
+
value: null,
|
|
316
|
+
className: null,
|
|
317
|
+
onChange: null
|
|
318
|
+
// onClickDelete: null,
|
|
319
|
+
};
|
|
320
|
+
var ScreenForm = function ScreenForm(_ref) {
|
|
321
|
+
var value = _ref.value,
|
|
322
|
+
className = _ref.className,
|
|
323
|
+
gotoFieldForm = _ref.gotoFieldForm,
|
|
324
|
+
closeFieldForm = _ref.closeFieldForm,
|
|
325
|
+
onChange = _ref.onChange;
|
|
326
|
+
var _useScreenDefinition = useScreenDefinition(),
|
|
327
|
+
_useScreenDefinition$ = _useScreenDefinition.fields,
|
|
328
|
+
fields = _useScreenDefinition$ === void 0 ? [] : _useScreenDefinition$;
|
|
329
|
+
// const intl = useIntl();
|
|
330
|
+
// const finalOnClickDelete = useCallback(() => {
|
|
331
|
+
// if (
|
|
332
|
+
// onClickDelete !== null &&
|
|
333
|
+
// window.confirm(
|
|
334
|
+
// intl.formatMessage({
|
|
335
|
+
// defaultMessage: 'Are you sure you want to delete this screen?',
|
|
336
|
+
// description: 'Confirm message when deleting a screen',
|
|
337
|
+
// }),
|
|
338
|
+
// )
|
|
339
|
+
// ) {
|
|
340
|
+
// onClickDelete(value);
|
|
341
|
+
// }
|
|
342
|
+
// }, [intl, onClickDelete, value]);
|
|
343
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
344
|
+
className: classNames([styles$i.container, _defineProperty({}, className, className)])
|
|
345
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
346
|
+
className: styles$i.inner
|
|
347
|
+
}, fields !== null ? /*#__PURE__*/React.createElement(Fields, {
|
|
348
|
+
fields: fields,
|
|
349
|
+
value: value,
|
|
350
|
+
onChange: onChange,
|
|
351
|
+
gotoFieldForm: gotoFieldForm,
|
|
352
|
+
closeFieldForm: closeFieldForm
|
|
353
|
+
}) : null));
|
|
354
|
+
};
|
|
355
|
+
ScreenForm.propTypes = propTypes$m;
|
|
356
|
+
ScreenForm.defaultProps = defaultProps$m;
|
|
357
|
+
var ScreenForm$1 = ScreenForm;
|
|
358
|
+
|
|
359
|
+
var styles$h = {"container":"micromag-editor-menus-breadcrumb-container"};
|
|
360
|
+
|
|
361
|
+
var propTypes$l = {
|
|
362
|
+
story: PropTypes$1.story,
|
|
363
|
+
screenId: PropTypes.string,
|
|
364
|
+
field: PropTypes.string,
|
|
365
|
+
form: PropTypes.string,
|
|
366
|
+
url: PropTypes.string.isRequired,
|
|
367
|
+
className: PropTypes.string
|
|
368
|
+
};
|
|
369
|
+
var defaultProps$l = {
|
|
370
|
+
story: null,
|
|
371
|
+
screenId: null,
|
|
372
|
+
field: null,
|
|
373
|
+
form: null,
|
|
374
|
+
className: null
|
|
375
|
+
};
|
|
376
|
+
var Breadcrumb = function Breadcrumb(_ref) {
|
|
377
|
+
var story = _ref.story,
|
|
378
|
+
screenId = _ref.screenId,
|
|
379
|
+
field = _ref.field,
|
|
380
|
+
form = _ref.form,
|
|
381
|
+
url = _ref.url,
|
|
382
|
+
className = _ref.className;
|
|
383
|
+
var intl = useIntl();
|
|
384
|
+
var _ref2 = story || {},
|
|
385
|
+
_ref2$components = _ref2.components,
|
|
386
|
+
screens = _ref2$components === void 0 ? [] : _ref2$components;
|
|
387
|
+
var _useLocation = useLocation(),
|
|
388
|
+
_useLocation2 = _slicedToArray(_useLocation, 2),
|
|
389
|
+
setLocation = _useLocation2[1];
|
|
390
|
+
var screensManager = useScreensManager();
|
|
391
|
+
var fieldsManager = useFieldsManager();
|
|
392
|
+
var fieldsComponentManager = useFieldsComponentsManager();
|
|
393
|
+
var route = useUrlGenerator();
|
|
394
|
+
var _useMemo = useMemo(function () {
|
|
395
|
+
var screenIndex = screens.findIndex(function (it) {
|
|
396
|
+
return it.id === screenId;
|
|
397
|
+
});
|
|
398
|
+
if (!screens[screenIndex]) {
|
|
399
|
+
return {};
|
|
400
|
+
}
|
|
401
|
+
var _screens$screenIndex = screens[screenIndex],
|
|
402
|
+
type = _screens$screenIndex.type,
|
|
403
|
+
_screens$screenIndex$ = _screens$screenIndex.parameters,
|
|
404
|
+
parameters = _screens$screenIndex$ === void 0 ? null : _screens$screenIndex$;
|
|
405
|
+
var definition = screensManager.getDefinition(type);
|
|
406
|
+
var _ref3 = definition || {},
|
|
407
|
+
_ref3$states = _ref3.states,
|
|
408
|
+
states = _ref3$states === void 0 ? null : _ref3$states,
|
|
409
|
+
_ref3$title = _ref3.title,
|
|
410
|
+
definitionTitle = _ref3$title === void 0 ? null : _ref3$title;
|
|
411
|
+
return {
|
|
412
|
+
title: definitionTitle,
|
|
413
|
+
fields: definition !== null ? [].concat(_toConsumableArray(getScreenFieldsWithStates(definition)), [getScreenExtraField(intl)]) : null,
|
|
414
|
+
states: states,
|
|
415
|
+
parameters: parameters
|
|
416
|
+
};
|
|
417
|
+
}, [screens, screenId, screensManager, intl]),
|
|
418
|
+
_useMemo$title = _useMemo.title,
|
|
419
|
+
screenTitle = _useMemo$title === void 0 ? null : _useMemo$title,
|
|
420
|
+
_useMemo$fields = _useMemo.fields,
|
|
421
|
+
screenFields = _useMemo$fields === void 0 ? [] : _useMemo$fields,
|
|
422
|
+
_useMemo$states = _useMemo.states,
|
|
423
|
+
screenStates = _useMemo$states === void 0 ? null : _useMemo$states,
|
|
424
|
+
_useMemo$parameters = _useMemo.parameters,
|
|
425
|
+
screenParameters = _useMemo$parameters === void 0 ? null : _useMemo$parameters;
|
|
426
|
+
var items = useMemo(function () {
|
|
427
|
+
var fieldItems = [];
|
|
428
|
+
var currentState = null;
|
|
429
|
+
if (field !== null) {
|
|
430
|
+
var fieldPath = field.split('/');
|
|
431
|
+
|
|
432
|
+
// Get state and remove it from path. Replace it with field name if necessary (repeatable or fieldName present)
|
|
433
|
+
var _fieldPath = _slicedToArray(fieldPath, 1),
|
|
434
|
+
_fieldPath$ = _fieldPath[0],
|
|
435
|
+
stateId = _fieldPath$ === void 0 ? null : _fieldPath$;
|
|
436
|
+
currentState = screenStates !== null ? screenStates.find(function (_ref4) {
|
|
437
|
+
var id = _ref4.id;
|
|
438
|
+
return id === stateId;
|
|
439
|
+
}) || null : null;
|
|
440
|
+
var finalFieldPath = fieldPath;
|
|
441
|
+
if (currentState !== null) {
|
|
442
|
+
var _ref5 = currentState || {},
|
|
443
|
+
_ref5$repeatable = _ref5.repeatable,
|
|
444
|
+
repeatable = _ref5$repeatable === void 0 ? false : _ref5$repeatable,
|
|
445
|
+
_ref5$fieldName = _ref5.fieldName,
|
|
446
|
+
fieldName = _ref5$fieldName === void 0 ? null : _ref5$fieldName;
|
|
447
|
+
finalFieldPath = (repeatable || fieldName !== null) && fieldPath.length <= (repeatable ? 2 : 1) ? [fieldName || stateId].concat(_toConsumableArray(fieldPath.slice(1))) : fieldPath.slice(1);
|
|
448
|
+
}
|
|
449
|
+
var lastKeyIndex = finalFieldPath.length - 1;
|
|
450
|
+
var parentItem = null;
|
|
451
|
+
finalFieldPath.reduce(function (currentFields, key, keyIndex) {
|
|
452
|
+
var _ref6 = currentFields || {},
|
|
453
|
+
_ref6$type = _ref6.type,
|
|
454
|
+
fieldType = _ref6$type === void 0 ? null : _ref6$type,
|
|
455
|
+
_ref6$fields = _ref6.fields,
|
|
456
|
+
currentSubFields = _ref6$fields === void 0 ? null : _ref6$fields,
|
|
457
|
+
_ref6$itemsField = _ref6.itemsField,
|
|
458
|
+
currentItemsField = _ref6$itemsField === void 0 ? null : _ref6$itemsField;
|
|
459
|
+
var fieldsDef = fieldType !== null ? fieldsManager.getDefinition(fieldType) : currentFields;
|
|
460
|
+
var _ref7 = fieldsDef || {},
|
|
461
|
+
_ref7$fields = _ref7.fields,
|
|
462
|
+
defSubFields = _ref7$fields === void 0 ? null : _ref7$fields,
|
|
463
|
+
_ref7$settings = _ref7.settings,
|
|
464
|
+
settings = _ref7$settings === void 0 ? null : _ref7$settings,
|
|
465
|
+
_ref7$itemsField = _ref7.itemsField,
|
|
466
|
+
defItemsField = _ref7$itemsField === void 0 ? null : _ref7$itemsField,
|
|
467
|
+
_ref7$component = _ref7.component,
|
|
468
|
+
defComponent = _ref7$component === void 0 ? null : _ref7$component;
|
|
469
|
+
var _ref8 = fieldsComponentManager.getComponent(defComponent) || {},
|
|
470
|
+
_ref8$withForm = _ref8.withForm,
|
|
471
|
+
withForm = _ref8$withForm === void 0 ? false : _ref8$withForm;
|
|
472
|
+
var itemsField = currentItemsField || defItemsField;
|
|
473
|
+
var subFields = currentSubFields || defSubFields;
|
|
474
|
+
var finalSubField = subFields !== null ? getFieldByName(subFields, key) : null;
|
|
475
|
+
var finalSettingsField = settings !== null ? getFieldByName(settings, key) : null;
|
|
476
|
+
var isCurrentSubField = finalSubField !== null;
|
|
477
|
+
var isCurrentSettingsField = finalSettingsField !== null;
|
|
478
|
+
var isListItems = itemsField !== null && !!key.match(/^[0-9]+$/);
|
|
479
|
+
var isLastIndex = keyIndex === lastKeyIndex;
|
|
480
|
+
var pathPrefix = route('screen.field', {
|
|
481
|
+
screen: screenId,
|
|
482
|
+
field: [currentState !== null ? currentState.id : null].concat(_toConsumableArray(finalFieldPath.slice(0, keyIndex + 1))).filter(function (it) {
|
|
483
|
+
return it !== null;
|
|
484
|
+
})
|
|
485
|
+
});
|
|
486
|
+
var pathSuffix = isLastIndex && form !== null ? "/".concat(form) : '';
|
|
487
|
+
var addNewItem = isLastIndex || isListItems;
|
|
488
|
+
var itemPath = "".concat(pathPrefix).concat(pathSuffix);
|
|
489
|
+
if (parentItem !== null && (withForm || isCurrentSettingsField)) {
|
|
490
|
+
fieldItems.push(_objectSpread(_objectSpread({}, parentItem), {}, {
|
|
491
|
+
url: isCurrentSettingsField ? route('screen.field.form', {
|
|
492
|
+
screen: screenId,
|
|
493
|
+
field: [currentState !== null ? currentState.id : null].concat(_toConsumableArray(finalFieldPath.slice(0, keyIndex))).filter(function (it) {
|
|
494
|
+
return it !== null;
|
|
495
|
+
}),
|
|
496
|
+
form: 'settings'
|
|
497
|
+
}) : route('screen.field', {
|
|
498
|
+
screen: screenId,
|
|
499
|
+
field: [currentState !== null ? currentState.id : null].concat(_toConsumableArray(finalFieldPath.slice(0, keyIndex))).filter(function (it) {
|
|
500
|
+
return it !== null;
|
|
501
|
+
})
|
|
502
|
+
})
|
|
503
|
+
}));
|
|
504
|
+
}
|
|
505
|
+
var nextField = null;
|
|
506
|
+
if (isCurrentSubField) {
|
|
507
|
+
nextField = finalSubField;
|
|
508
|
+
} else if (isCurrentSettingsField) {
|
|
509
|
+
nextField = finalSettingsField;
|
|
510
|
+
} else if (isListItems) {
|
|
511
|
+
nextField = itemsField;
|
|
512
|
+
}
|
|
513
|
+
var fieldLabel = nextField ? nextField.breadcrumbLabel || nextField.label : null;
|
|
514
|
+
var itemLabel = isMessage(fieldLabel) ? intl.formatMessage(fieldLabel) : fieldLabel;
|
|
515
|
+
var _ref9 = parentItem || {},
|
|
516
|
+
_ref9$label = _ref9.label,
|
|
517
|
+
parentItemLabel = _ref9$label === void 0 ? null : _ref9$label;
|
|
518
|
+
var finalItemLabel = isListItems ? "".concat(itemLabel, " #").concat(parseInt(key, 10) + 1) : itemLabel || parentItemLabel;
|
|
519
|
+
var item = {
|
|
520
|
+
url: itemPath,
|
|
521
|
+
label: finalItemLabel || '',
|
|
522
|
+
active: false
|
|
523
|
+
};
|
|
524
|
+
if (addNewItem) {
|
|
525
|
+
fieldItems.push(item);
|
|
526
|
+
}
|
|
527
|
+
parentItem = !addNewItem ? item : null;
|
|
528
|
+
return nextField;
|
|
529
|
+
}, {
|
|
530
|
+
fields: stateId === null ? screenFields : screenFields.filter(function (_ref10) {
|
|
531
|
+
var _ref10$stateId = _ref10.stateId,
|
|
532
|
+
fieldStateId = _ref10$stateId === void 0 ? null : _ref10$stateId;
|
|
533
|
+
return fieldStateId === null || fieldStateId === stateId;
|
|
534
|
+
})
|
|
535
|
+
});
|
|
536
|
+
}
|
|
537
|
+
var _ref11 = screenParameters || {},
|
|
538
|
+
_ref11$metadata = _ref11.metadata,
|
|
539
|
+
metadata = _ref11$metadata === void 0 ? null : _ref11$metadata;
|
|
540
|
+
var _ref12 = metadata || {},
|
|
541
|
+
_ref12$title = _ref12.title,
|
|
542
|
+
title = _ref12$title === void 0 ? null : _ref12$title;
|
|
543
|
+
var typeTitle = screenTitle !== null ? /*#__PURE__*/React.createElement(FormattedMessage, screenTitle) : null;
|
|
544
|
+
var parametersMessage = intl.formatMessage({
|
|
545
|
+
id: "AHvHaY",
|
|
546
|
+
defaultMessage: [{
|
|
547
|
+
"type": 0,
|
|
548
|
+
"value": "Parameters"
|
|
549
|
+
}]
|
|
550
|
+
});
|
|
551
|
+
var defaultLabel = (fieldItems || []).length === 0 ? title || typeTitle || parametersMessage : parametersMessage;
|
|
552
|
+
var finalItems = [currentState === null || (currentState.repeatable || false) === false ? {
|
|
553
|
+
label: currentState !== null ? currentState.label : defaultLabel,
|
|
554
|
+
url: currentState !== null ? route('screen.field', {
|
|
555
|
+
screen: screenId,
|
|
556
|
+
field: currentState.id
|
|
557
|
+
}) : route('screen', {
|
|
558
|
+
screen: screenId
|
|
559
|
+
}),
|
|
560
|
+
active: false
|
|
561
|
+
} : null].concat(fieldItems).filter(function (it) {
|
|
562
|
+
return it !== null;
|
|
563
|
+
});
|
|
564
|
+
var lastItemsIndex = finalItems.length - 1;
|
|
565
|
+
return finalItems.map(function (it, index) {
|
|
566
|
+
return index === lastItemsIndex ? _objectSpread(_objectSpread({}, it), {}, {
|
|
567
|
+
url: url,
|
|
568
|
+
active: true
|
|
569
|
+
}) : it;
|
|
570
|
+
});
|
|
571
|
+
}, [intl, route, screenId, field, form, url, screenFields, screenStates, screenTitle, fieldsManager]);
|
|
572
|
+
var itemsLength = items.length;
|
|
573
|
+
var onClickBack = useCallback(function () {
|
|
574
|
+
setLocation(items[itemsLength - 2].url);
|
|
575
|
+
}, [items, setLocation, itemsLength]);
|
|
576
|
+
var withBack = itemsLength > 1;
|
|
577
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, withBack ? /*#__PURE__*/React.createElement(BackButton, {
|
|
578
|
+
onClick: onClickBack,
|
|
579
|
+
className: "me-2 py-0"
|
|
580
|
+
}) : null, /*#__PURE__*/React.createElement(Breadcrumb$2, {
|
|
581
|
+
items: items,
|
|
582
|
+
theme: "secondary",
|
|
583
|
+
withoutBar: true,
|
|
584
|
+
noWrap: true,
|
|
585
|
+
className: classNames([styles$h.container, 'text-truncate', _defineProperty({}, className, className !== null)])
|
|
586
|
+
}));
|
|
587
|
+
};
|
|
588
|
+
Breadcrumb.propTypes = propTypes$l;
|
|
589
|
+
Breadcrumb.defaultProps = defaultProps$l;
|
|
590
|
+
var Breadcrumb$1 = Breadcrumb;
|
|
591
|
+
|
|
592
|
+
var styles$g = {"container":"micromag-editor-modals-delete-screen-container","description":"micromag-editor-modals-delete-screen-description","actions":"micromag-editor-modals-delete-screen-actions"};
|
|
593
|
+
|
|
594
|
+
var propTypes$k = {
|
|
595
|
+
className: PropTypes.string,
|
|
596
|
+
onConfirm: PropTypes.func,
|
|
597
|
+
onCancel: PropTypes.func
|
|
598
|
+
};
|
|
599
|
+
var defaultProps$k = {
|
|
600
|
+
className: null,
|
|
601
|
+
onConfirm: null,
|
|
602
|
+
onCancel: null
|
|
603
|
+
};
|
|
604
|
+
var DeleteScreenModal = function DeleteScreenModal(_ref) {
|
|
605
|
+
var className = _ref.className,
|
|
606
|
+
onConfirm = _ref.onConfirm,
|
|
607
|
+
onCancel = _ref.onCancel;
|
|
608
|
+
return /*#__PURE__*/React.createElement(Modal, null, /*#__PURE__*/React.createElement(ModalDialog, {
|
|
609
|
+
title: /*#__PURE__*/React.createElement(FormattedMessage, {
|
|
610
|
+
id: "p6q/+/",
|
|
611
|
+
defaultMessage: [{
|
|
612
|
+
"type": 0,
|
|
613
|
+
"value": "Delete screen"
|
|
614
|
+
}]
|
|
615
|
+
}),
|
|
616
|
+
className: classNames([styles$g.container, _defineProperty({}, className, className)]),
|
|
617
|
+
onClose: onCancel
|
|
618
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
619
|
+
className: styles$g.description
|
|
620
|
+
}, /*#__PURE__*/React.createElement(Label, null, /*#__PURE__*/React.createElement(FormattedMessage, {
|
|
621
|
+
id: "q/tLk0",
|
|
622
|
+
defaultMessage: [{
|
|
623
|
+
"type": 0,
|
|
624
|
+
"value": "Are you sure you want to delete this screen?"
|
|
625
|
+
}]
|
|
626
|
+
}))), /*#__PURE__*/React.createElement("div", {
|
|
627
|
+
className: styles$g.actions
|
|
628
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
629
|
+
onClick: onCancel,
|
|
630
|
+
className: "btn-outline-secondary me-2"
|
|
631
|
+
}, /*#__PURE__*/React.createElement(Label, null, /*#__PURE__*/React.createElement(FormattedMessage, {
|
|
632
|
+
id: "0GT0SI",
|
|
633
|
+
defaultMessage: [{
|
|
634
|
+
"type": 0,
|
|
635
|
+
"value": "Cancel"
|
|
636
|
+
}]
|
|
637
|
+
}))), /*#__PURE__*/React.createElement(Button, {
|
|
638
|
+
onClick: onConfirm,
|
|
639
|
+
theme: "danger",
|
|
640
|
+
label: /*#__PURE__*/React.createElement(FormattedMessage, {
|
|
641
|
+
id: "gRxcTc",
|
|
642
|
+
defaultMessage: [{
|
|
643
|
+
"type": 0,
|
|
644
|
+
"value": "Delete screen"
|
|
645
|
+
}]
|
|
646
|
+
})
|
|
647
|
+
}))));
|
|
648
|
+
};
|
|
649
|
+
DeleteScreenModal.propTypes = propTypes$k;
|
|
650
|
+
DeleteScreenModal.defaultProps = defaultProps$k;
|
|
651
|
+
var DeleteScreenModal$1 = DeleteScreenModal;
|
|
652
|
+
|
|
653
|
+
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"};
|
|
654
|
+
|
|
655
|
+
var propTypes$j = {
|
|
656
|
+
value: PropTypes.oneOfType([PropTypes$1.story, PropTypes$1.theme]),
|
|
657
|
+
isTheme: PropTypes.bool,
|
|
658
|
+
className: PropTypes.string,
|
|
659
|
+
onChange: PropTypes.func
|
|
660
|
+
};
|
|
661
|
+
var defaultProps$j = {
|
|
662
|
+
value: null,
|
|
663
|
+
isTheme: false,
|
|
664
|
+
className: null,
|
|
665
|
+
onChange: null
|
|
666
|
+
};
|
|
667
|
+
var EditForm = function EditForm(_ref) {
|
|
668
|
+
var value = _ref.value,
|
|
669
|
+
isTheme = _ref.isTheme,
|
|
670
|
+
className = _ref.className,
|
|
671
|
+
onChange = _ref.onChange;
|
|
672
|
+
// Match routes
|
|
673
|
+
var _useLocation = useLocation(),
|
|
674
|
+
_useLocation2 = _slicedToArray(_useLocation, 2),
|
|
675
|
+
setLocation = _useLocation2[1];
|
|
676
|
+
var routePush = useRoutePush();
|
|
677
|
+
var _useRouteParams = useRouteParams(),
|
|
678
|
+
url = _useRouteParams.url,
|
|
679
|
+
_useRouteParams$scree = _useRouteParams.screen,
|
|
680
|
+
screenId = _useRouteParams$scree === void 0 ? null : _useRouteParams$scree,
|
|
681
|
+
_useRouteParams$field = _useRouteParams.field,
|
|
682
|
+
fieldParams = _useRouteParams$field === void 0 ? null : _useRouteParams$field,
|
|
683
|
+
_useRouteParams$form = _useRouteParams.form,
|
|
684
|
+
formParams = _useRouteParams$form === void 0 ? null : _useRouteParams$form;
|
|
685
|
+
|
|
686
|
+
// Get screen
|
|
687
|
+
var _ref2 = value || {},
|
|
688
|
+
_ref2$components = _ref2.components,
|
|
689
|
+
screens = _ref2$components === void 0 ? [] : _ref2$components;
|
|
690
|
+
var screenIndex = screens.findIndex(function (it) {
|
|
691
|
+
return it.id === screenId;
|
|
692
|
+
});
|
|
693
|
+
var screen = screenIndex !== -1 ? screens[screenIndex] : null;
|
|
694
|
+
var screensManager = useScreensManager();
|
|
695
|
+
var screenFields = useMemo(function () {
|
|
696
|
+
var _ref3 = screen || {},
|
|
697
|
+
type = _ref3.type;
|
|
698
|
+
var definition = type !== null ? screensManager.getDefinition(type) : null;
|
|
699
|
+
return definition != null ? getScreenFieldsWithStates(definition) : [];
|
|
700
|
+
}, [screensManager, screen]);
|
|
701
|
+
|
|
702
|
+
// Get transition value
|
|
703
|
+
var _useFormTransition = useFormTransition(url, screenIndex, styles$f),
|
|
704
|
+
transitionClassNames = _useFormTransition.classNames,
|
|
705
|
+
transitionTimeout = _useFormTransition.timeout;
|
|
706
|
+
var _useState = useState(false),
|
|
707
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
708
|
+
screenSettingsOpened = _useState2[0],
|
|
709
|
+
setScreenSettingsOpened = _useState2[1];
|
|
710
|
+
var _useState3 = useState(false),
|
|
711
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
712
|
+
deleteScreenModalOpened = _useState4[0],
|
|
713
|
+
setDeleteScreenModalOpened = _useState4[1];
|
|
714
|
+
var _useState5 = useState({}),
|
|
715
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
716
|
+
fieldForms = _useState6[0],
|
|
717
|
+
setFieldForms = _useState6[1];
|
|
718
|
+
var _useState7 = useState(null),
|
|
719
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
720
|
+
fieldContext = _useState8[0],
|
|
721
|
+
setFieldContext = _useState8[1];
|
|
722
|
+
|
|
723
|
+
// Callbacks
|
|
724
|
+
var gotoFieldForm = useCallback(function () {
|
|
725
|
+
var field = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
726
|
+
var formName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
727
|
+
var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
728
|
+
var hasField = field !== null;
|
|
729
|
+
var fieldRoute = formName !== null ? 'screen.field.form' : 'screen.field';
|
|
730
|
+
var _ref4 = field !== null ? field.split('.') : [],
|
|
731
|
+
_ref5 = _slicedToArray(_ref4, 1),
|
|
732
|
+
_ref5$ = _ref5[0],
|
|
733
|
+
rootFieldName = _ref5$ === void 0 ? null : _ref5$;
|
|
734
|
+
var _ref6 = fieldParams !== null ? fieldParams.split('/') : [],
|
|
735
|
+
_ref7 = _slicedToArray(_ref6, 1),
|
|
736
|
+
_ref7$ = _ref7[0],
|
|
737
|
+
currentStateId = _ref7$ === void 0 ? null : _ref7$;
|
|
738
|
+
var _ref8 = (rootFieldName !== null ? screenFields.find(function (_ref9) {
|
|
739
|
+
var name = _ref9.name,
|
|
740
|
+
fieldStateId = _ref9.stateId;
|
|
741
|
+
return name === rootFieldName && currentStateId === fieldStateId;
|
|
742
|
+
}) || null : null) || {},
|
|
743
|
+
_ref8$stateId = _ref8.stateId,
|
|
744
|
+
stateId = _ref8$stateId === void 0 ? null : _ref8$stateId;
|
|
745
|
+
routePush(hasField ? fieldRoute : 'screen', {
|
|
746
|
+
screen: screenId,
|
|
747
|
+
field: field !== null ? [stateId].concat(_toConsumableArray(field.split('.'))).filter(function (it) {
|
|
748
|
+
return it !== null;
|
|
749
|
+
}) : null,
|
|
750
|
+
form: formName !== null ? slug(formName) : null
|
|
751
|
+
});
|
|
752
|
+
var nextFieldForms = _objectSpread(_objectSpread({}, fieldForms), {}, _defineProperty({}, "".concat(field).concat(formName !== null ? ":".concat(formName) : ''), url));
|
|
753
|
+
setFieldForms(nextFieldForms);
|
|
754
|
+
setFieldContext(context);
|
|
755
|
+
}, [routePush, screenId, screenFields, fieldParams, url, fieldForms, setFieldForms, fieldContext, setFieldContext]);
|
|
756
|
+
var closeFieldForm = useCallback(function (field) {
|
|
757
|
+
var formName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
758
|
+
var fieldKey = "".concat(field).concat(formName !== null ? ":".concat(formName) : '');
|
|
759
|
+
var pastUrl = fieldForms[fieldKey] || null;
|
|
760
|
+
if (pastUrl !== null) {
|
|
761
|
+
setLocation(pastUrl);
|
|
762
|
+
}
|
|
763
|
+
setFieldForms(Object.keys(fieldForms).reduce(function (map, key) {
|
|
764
|
+
return key !== fieldKey ? _objectSpread(_objectSpread({}, map), {}, _defineProperty({}, key, fieldForms[key])) : map;
|
|
765
|
+
}, {}));
|
|
766
|
+
}, [setLocation, screenId, fieldForms, setFieldForms]);
|
|
767
|
+
var triggerOnChange = useCallback(function (newValue) {
|
|
768
|
+
if (onChange !== null) {
|
|
769
|
+
onChange(newValue);
|
|
770
|
+
}
|
|
771
|
+
}, [onChange]);
|
|
772
|
+
var onScreenFormChange = useCallback(function (newScreenValue) {
|
|
773
|
+
triggerOnChange(updateScreen(value, newScreenValue));
|
|
774
|
+
}, [value, triggerOnChange]);
|
|
775
|
+
var onClickDuplicate = useCallback(function () {
|
|
776
|
+
triggerOnChange(duplicateScreen(value, screenId, screenIndex));
|
|
777
|
+
setScreenSettingsOpened(false);
|
|
778
|
+
}, [value, screenId, screenIndex, triggerOnChange, setScreenSettingsOpened]);
|
|
779
|
+
var onClickDelete = useCallback(function () {
|
|
780
|
+
setDeleteScreenModalOpened(true);
|
|
781
|
+
setScreenSettingsOpened(false);
|
|
782
|
+
}, [setScreenSettingsOpened, setDeleteScreenModalOpened]);
|
|
783
|
+
var onSettingsClick = useCallback(function () {
|
|
784
|
+
setScreenSettingsOpened(!screenSettingsOpened);
|
|
785
|
+
}, [screenSettingsOpened, setScreenSettingsOpened]);
|
|
786
|
+
var onDropdownClickOutside = useCallback(function () {
|
|
787
|
+
setScreenSettingsOpened(false);
|
|
788
|
+
}, [setScreenSettingsOpened]);
|
|
789
|
+
var onDeleteScreenConfirm = useCallback(function () {
|
|
790
|
+
var current = screens.findIndex(function (_ref10) {
|
|
791
|
+
var _ref10$id = _ref10.id,
|
|
792
|
+
scrId = _ref10$id === void 0 ? null : _ref10$id;
|
|
793
|
+
return scrId === screenId;
|
|
794
|
+
}) || 0;
|
|
795
|
+
var previous = screens.find(function (_ref11, i) {
|
|
796
|
+
var _ref11$id = _ref11.id,
|
|
797
|
+
scrId = _ref11$id === void 0 ? null : _ref11$id;
|
|
798
|
+
return scrId !== screenId && (i === current - 1 || current === 0);
|
|
799
|
+
}) || null;
|
|
800
|
+
if (previous !== null) {
|
|
801
|
+
var _ref12 = previous || {},
|
|
802
|
+
_ref12$id = _ref12.id,
|
|
803
|
+
firstScreenId = _ref12$id === void 0 ? null : _ref12$id;
|
|
804
|
+
routePush('screen', {
|
|
805
|
+
screen: firstScreenId
|
|
806
|
+
});
|
|
807
|
+
}
|
|
808
|
+
triggerOnChange(deleteScreen(value, screenId));
|
|
809
|
+
setDeleteScreenModalOpened(false);
|
|
810
|
+
}, [value, triggerOnChange, screenId, setScreenSettingsOpened, routePush, screens]);
|
|
811
|
+
var onDeleteScreenCancel = useCallback(function () {
|
|
812
|
+
setDeleteScreenModalOpened(false);
|
|
813
|
+
}, [setDeleteScreenModalOpened]);
|
|
814
|
+
var dropdownItems = [!isTheme ? {
|
|
815
|
+
id: 'duplicate',
|
|
816
|
+
type: 'button',
|
|
817
|
+
label: /*#__PURE__*/React.createElement(FormattedMessage, {
|
|
818
|
+
id: "IBjY5r",
|
|
819
|
+
defaultMessage: [{
|
|
820
|
+
"type": 0,
|
|
821
|
+
"value": "Duplicate screen"
|
|
822
|
+
}]
|
|
823
|
+
}),
|
|
824
|
+
onClick: onClickDuplicate
|
|
825
|
+
} : null, {
|
|
826
|
+
id: 'delete',
|
|
827
|
+
type: 'button',
|
|
828
|
+
label: /*#__PURE__*/React.createElement(FormattedMessage, {
|
|
829
|
+
id: "hpiKce",
|
|
830
|
+
defaultMessage: [{
|
|
831
|
+
"type": 0,
|
|
832
|
+
"value": "Delete screen"
|
|
833
|
+
}]
|
|
834
|
+
}),
|
|
835
|
+
onClick: onClickDelete
|
|
836
|
+
}].filter(function (it) {
|
|
837
|
+
return it !== null;
|
|
838
|
+
});
|
|
839
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
840
|
+
className: classNames(['d-flex', 'flex-column', className])
|
|
841
|
+
}, screenId !== null ? /*#__PURE__*/React.createElement(Navbar, {
|
|
842
|
+
compact: true,
|
|
843
|
+
noWrap: true,
|
|
844
|
+
withoutCollapse: true,
|
|
845
|
+
className: classNames(['sticky-top', 'border-bottom', 'border-dark', styles$f.navbar])
|
|
846
|
+
}, /*#__PURE__*/React.createElement(Breadcrumb$1, {
|
|
847
|
+
story: value,
|
|
848
|
+
url: url,
|
|
849
|
+
screenId: screenId,
|
|
850
|
+
field: fieldParams,
|
|
851
|
+
form: formParams,
|
|
852
|
+
className: "me-auto"
|
|
853
|
+
}), fieldParams === null ? /*#__PURE__*/React.createElement("div", {
|
|
854
|
+
className: "dropdown"
|
|
855
|
+
}, /*#__PURE__*/React.createElement(SettingsButton$1, {
|
|
856
|
+
onClick: onSettingsClick,
|
|
857
|
+
dots: true,
|
|
858
|
+
className: "py-0",
|
|
859
|
+
theme: "default"
|
|
860
|
+
}), /*#__PURE__*/React.createElement(DropdownMenu, {
|
|
861
|
+
align: "end",
|
|
862
|
+
items: dropdownItems,
|
|
863
|
+
visible: screenSettingsOpened,
|
|
864
|
+
onClickOutside: onDropdownClickOutside
|
|
865
|
+
})) : null) : null, /*#__PURE__*/React.createElement("div", {
|
|
866
|
+
className: classNames(['flex-grow-1', 'd-flex', 'w-100', styles$f.content])
|
|
867
|
+
}, screen !== null ? /*#__PURE__*/React.createElement(TransitionGroup, {
|
|
868
|
+
className: "w-100 flex-grow-1",
|
|
869
|
+
childFactory: function childFactory(child) {
|
|
870
|
+
return /*#__PURE__*/React.cloneElement(child, {
|
|
871
|
+
classNames: transitionClassNames
|
|
872
|
+
});
|
|
873
|
+
}
|
|
874
|
+
}, fieldParams !== null ? /*#__PURE__*/React.createElement(CSSTransition, {
|
|
875
|
+
timeout: transitionTimeout,
|
|
876
|
+
key: "field-".concat(fieldParams, "-").concat(formParams)
|
|
877
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
878
|
+
className: classNames(['w-100', styles$f.panel])
|
|
879
|
+
}, /*#__PURE__*/React.createElement(ScreenProvider, {
|
|
880
|
+
data: screen
|
|
881
|
+
}, /*#__PURE__*/React.createElement(FieldWithContexts$1, {
|
|
882
|
+
name: fieldParams.replace(/\//g, '.'),
|
|
883
|
+
value: screen,
|
|
884
|
+
form: formParams,
|
|
885
|
+
className: styles$f.form,
|
|
886
|
+
gotoFieldForm: gotoFieldForm,
|
|
887
|
+
closeFieldForm: closeFieldForm,
|
|
888
|
+
fieldContext: fieldContext,
|
|
889
|
+
onChange: onScreenFormChange
|
|
890
|
+
})))) : /*#__PURE__*/React.createElement(CSSTransition, {
|
|
891
|
+
classNames: transitionClassNames,
|
|
892
|
+
timeout: transitionTimeout,
|
|
893
|
+
key: "screen-".concat(screen.id)
|
|
894
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
895
|
+
className: classNames(['w-100', styles$f.panel]),
|
|
896
|
+
key: "screen-".concat(screen.id)
|
|
897
|
+
}, /*#__PURE__*/React.createElement(ScreenProvider, {
|
|
898
|
+
data: screen
|
|
899
|
+
}, /*#__PURE__*/React.createElement(ScreenForm$1, {
|
|
900
|
+
value: screen,
|
|
901
|
+
className: styles$f.form,
|
|
902
|
+
onChange: onScreenFormChange,
|
|
903
|
+
gotoFieldForm: gotoFieldForm,
|
|
904
|
+
closeFieldForm: closeFieldForm
|
|
905
|
+
}))))) : /*#__PURE__*/React.createElement(Empty, {
|
|
906
|
+
className: "w-100 m-2"
|
|
907
|
+
}, /*#__PURE__*/React.createElement(FormattedMessage, {
|
|
908
|
+
id: "QfpTKK",
|
|
909
|
+
defaultMessage: [{
|
|
910
|
+
"type": 0,
|
|
911
|
+
"value": "Select a screen..."
|
|
912
|
+
}],
|
|
913
|
+
decription: "Indication to select a screen to view the form"
|
|
914
|
+
}))), deleteScreenModalOpened ? /*#__PURE__*/React.createElement(DeleteScreenModal$1, {
|
|
915
|
+
onConfirm: onDeleteScreenConfirm,
|
|
916
|
+
onCancel: onDeleteScreenCancel
|
|
917
|
+
}) : null);
|
|
918
|
+
};
|
|
919
|
+
EditForm.propTypes = propTypes$j;
|
|
920
|
+
EditForm.defaultProps = defaultProps$j;
|
|
921
|
+
var EditorForm = EditForm;
|
|
922
|
+
|
|
923
|
+
function useScreenStates(screen) {
|
|
924
|
+
var _ref = screen || {},
|
|
925
|
+
type = _ref.type;
|
|
926
|
+
var screensManager = useScreensManager();
|
|
927
|
+
var states = useMemo(function () {
|
|
928
|
+
var definition = screensManager.getDefinition(type) || null;
|
|
929
|
+
var _ref2 = definition || {},
|
|
930
|
+
_ref2$states = _ref2.states,
|
|
931
|
+
screenStates = _ref2$states === void 0 ? null : _ref2$states;
|
|
932
|
+
return screenStates;
|
|
933
|
+
}, [screensManager, type]);
|
|
934
|
+
return states;
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
var _excluded$7 = ["components"];
|
|
938
|
+
var useThemeValue = function useThemeValue(value) {
|
|
939
|
+
var isTheme = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
940
|
+
var valueWithTheme = useMemo(function () {
|
|
941
|
+
if (!isTheme) {
|
|
942
|
+
return value;
|
|
943
|
+
}
|
|
944
|
+
var _ref = value || {};
|
|
945
|
+
_ref.components;
|
|
946
|
+
var themeValue = _objectWithoutProperties(_ref, _excluded$7);
|
|
947
|
+
return value !== null ? _objectSpread({
|
|
948
|
+
theme: themeValue
|
|
949
|
+
}, value) : value;
|
|
950
|
+
}, [value, isTheme]);
|
|
951
|
+
return valueWithTheme;
|
|
952
|
+
};
|
|
953
|
+
|
|
954
|
+
var styles$e = {"container":"micromag-editor-menus-devices-container","button":"micromag-editor-menus-devices-button"};
|
|
955
|
+
|
|
956
|
+
/* eslint-disable react/button-has-type, react/jsx-props-no-spreading */
|
|
957
|
+
var propTypes$i = {
|
|
958
|
+
color: PropTypes.string,
|
|
959
|
+
className: PropTypes.string
|
|
960
|
+
};
|
|
961
|
+
var defaultProps$i = {
|
|
962
|
+
color: 'currentColor',
|
|
963
|
+
className: null
|
|
964
|
+
};
|
|
965
|
+
var DesktopIcon = function DesktopIcon(_ref) {
|
|
966
|
+
var color = _ref.color,
|
|
967
|
+
className = _ref.className;
|
|
968
|
+
return /*#__PURE__*/React.createElement("svg", {
|
|
969
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
970
|
+
xmlnsXlink: "http://www.w3.org/1999/xlink",
|
|
971
|
+
version: "1.1",
|
|
972
|
+
x: "0px",
|
|
973
|
+
y: "0px",
|
|
974
|
+
width: "100px",
|
|
975
|
+
height: "100px",
|
|
976
|
+
viewBox: "0 0 100 100",
|
|
977
|
+
xmlSpace: "preserve",
|
|
978
|
+
className: className
|
|
979
|
+
}, /*#__PURE__*/React.createElement("path", {
|
|
980
|
+
fill: color,
|
|
981
|
+
d: "M84 17H16c-3.3 0-6 2.7-6 6v42c0 3.3 2.7 6 6 6h22v4.2c-.1.4-.9 1.5-1.3 2-1.1 1.4-2.2 2.8-1.4 4.4.3.7 1.1 1.4 2.7 1.4h23c1 0 3.3 0 4.1-1.8.8-1.8-.6-3.2-1.8-4.5-.4-.5-1.1-1.2-1.3-1.6V71h22c3.3 0 6-2.7 6-6V23c0-3.3-2.7-6-6-6zM40.3 79c.9-1.1 1.7-2.4 1.7-3.8V71h16v4.2c0 1.4 1 2.7 2 3.8H40.3zM86 65c0 1.1-.9 2-2 2H16c-1.1 0-2-.9-2-2v-6h72v6zm0-10H14V23c0-1.1.9-2 2-2h68c1.1 0 2 .9 2 2v32z"
|
|
982
|
+
}));
|
|
983
|
+
};
|
|
984
|
+
DesktopIcon.propTypes = propTypes$i;
|
|
985
|
+
DesktopIcon.defaultProps = defaultProps$i;
|
|
986
|
+
var DesktopIcon$1 = DesktopIcon;
|
|
987
|
+
|
|
988
|
+
/* eslint-disable react/button-has-type, react/jsx-props-no-spreading */
|
|
989
|
+
var propTypes$h = {
|
|
990
|
+
color: PropTypes.string,
|
|
991
|
+
className: PropTypes.string
|
|
992
|
+
};
|
|
993
|
+
var defaultProps$h = {
|
|
994
|
+
color: 'currentColor',
|
|
995
|
+
className: null
|
|
996
|
+
};
|
|
997
|
+
var MobileIcon = function MobileIcon(_ref) {
|
|
998
|
+
var color = _ref.color,
|
|
999
|
+
className = _ref.className;
|
|
1000
|
+
return /*#__PURE__*/React.createElement("svg", {
|
|
1001
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1002
|
+
xmlnsXlink: "http://www.w3.org/1999/xlink",
|
|
1003
|
+
version: "1.1",
|
|
1004
|
+
x: "0px",
|
|
1005
|
+
y: "0px",
|
|
1006
|
+
width: "100px",
|
|
1007
|
+
height: "100px",
|
|
1008
|
+
viewBox: "0 0 100 100",
|
|
1009
|
+
xmlSpace: "preserve",
|
|
1010
|
+
className: className
|
|
1011
|
+
}, /*#__PURE__*/React.createElement("path", {
|
|
1012
|
+
fill: color,
|
|
1013
|
+
d: "M66 11H34c-3.3 0-6 2.7-6 6v66c0 3.3 2.7 6 6 6h32c3.3 0 6-2.7 6-6V17c0-3.3-2.7-6-6-6zm2 72c0 1.1-.9 2-2 2H34c-1.1 0-2-.9-2-2v-4h36v4zm0-8H32V25h36v50zm0-54H32v-4c0-1.1.9-2 2-2h32c1.1 0 2 .9 2 2v4z"
|
|
1014
|
+
}));
|
|
1015
|
+
};
|
|
1016
|
+
MobileIcon.propTypes = propTypes$h;
|
|
1017
|
+
MobileIcon.defaultProps = defaultProps$h;
|
|
1018
|
+
var MobileIcon$1 = MobileIcon;
|
|
1019
|
+
|
|
1020
|
+
var DeviceIcons = /*#__PURE__*/Object.freeze({
|
|
1021
|
+
__proto__: null,
|
|
1022
|
+
Desktop: DesktopIcon$1,
|
|
1023
|
+
Mobile: MobileIcon$1
|
|
1024
|
+
});
|
|
1025
|
+
|
|
1026
|
+
var styles$d = {"container":"micromag-editor-buttons-device-container","icon":"micromag-editor-buttons-device-icon"};
|
|
1027
|
+
|
|
1028
|
+
var _excluded$6 = ["device", "className", "iconComponents"];
|
|
1029
|
+
var propTypes$g = {
|
|
1030
|
+
device: PropTypes.string.isRequired,
|
|
1031
|
+
iconComponents: PropTypes$1.components,
|
|
1032
|
+
className: PropTypes.string
|
|
1033
|
+
};
|
|
1034
|
+
var defaultProps$g = {
|
|
1035
|
+
iconComponents: DeviceIcons,
|
|
1036
|
+
className: null
|
|
1037
|
+
};
|
|
1038
|
+
var DeviceButton = function DeviceButton(_ref) {
|
|
1039
|
+
var device = _ref.device,
|
|
1040
|
+
className = _ref.className,
|
|
1041
|
+
iconComponents = _ref.iconComponents,
|
|
1042
|
+
props = _objectWithoutProperties(_ref, _excluded$6);
|
|
1043
|
+
var DeviceIcon = getComponentFromName(device, iconComponents, DesktopIcon$1);
|
|
1044
|
+
return /*#__PURE__*/React.createElement(Button, Object.assign({
|
|
1045
|
+
className: classNames([styles$d.container, _defineProperty({}, className, className !== null)])
|
|
1046
|
+
}, props), /*#__PURE__*/React.createElement(DeviceIcon, {
|
|
1047
|
+
className: styles$d.icon
|
|
1048
|
+
}));
|
|
1049
|
+
};
|
|
1050
|
+
DeviceButton.propTypes = propTypes$g;
|
|
1051
|
+
DeviceButton.defaultProps = defaultProps$g;
|
|
1052
|
+
var DeviceButton$1 = DeviceButton;
|
|
1053
|
+
|
|
1054
|
+
var _excluded$5 = ["id"];
|
|
1055
|
+
var propTypes$f = {
|
|
1056
|
+
items: PropTypes$1.menuItems,
|
|
1057
|
+
className: PropTypes.string,
|
|
1058
|
+
onClickItem: PropTypes.func
|
|
1059
|
+
};
|
|
1060
|
+
var defaultProps$f = {
|
|
1061
|
+
items: [],
|
|
1062
|
+
className: null,
|
|
1063
|
+
onClickItem: null
|
|
1064
|
+
};
|
|
1065
|
+
var DevicesMenu = function DevicesMenu(_ref) {
|
|
1066
|
+
var items = _ref.items,
|
|
1067
|
+
className = _ref.className,
|
|
1068
|
+
onClickItem = _ref.onClickItem;
|
|
1069
|
+
return /*#__PURE__*/React.createElement(Tabs, {
|
|
1070
|
+
items: items,
|
|
1071
|
+
theme: "outline-secondary",
|
|
1072
|
+
className: classNames([styles$e.container, _defineProperty({}, className, className !== null)]),
|
|
1073
|
+
renderItemButton: function renderItemButton(item, index, props) {
|
|
1074
|
+
var id = item.id,
|
|
1075
|
+
itemProps = _objectWithoutProperties(item, _excluded$5);
|
|
1076
|
+
return /*#__PURE__*/React.createElement(DeviceButton$1, Object.assign({
|
|
1077
|
+
device: id
|
|
1078
|
+
}, props, itemProps, {
|
|
1079
|
+
className: styles$e.button,
|
|
1080
|
+
onClick: function onClick(e) {
|
|
1081
|
+
return onClickItem !== null ? onClickItem(e, item, index) : null;
|
|
1082
|
+
}
|
|
1083
|
+
}));
|
|
1084
|
+
}
|
|
1085
|
+
});
|
|
1086
|
+
};
|
|
1087
|
+
DevicesMenu.propTypes = propTypes$f;
|
|
1088
|
+
DevicesMenu.defaultProps = defaultProps$f;
|
|
1089
|
+
var DevicesMenu$1 = DevicesMenu;
|
|
1090
|
+
|
|
1091
|
+
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"};
|
|
1092
|
+
|
|
1093
|
+
var propTypes$e = {
|
|
1094
|
+
active: PropTypes.bool,
|
|
1095
|
+
id: PropTypes.string,
|
|
1096
|
+
href: PropTypes.string,
|
|
1097
|
+
label: PropTypes$1.label,
|
|
1098
|
+
icon: PropTypes.node,
|
|
1099
|
+
title: PropTypes.string,
|
|
1100
|
+
onClick: PropTypes.func,
|
|
1101
|
+
children: PropTypes.node,
|
|
1102
|
+
refButton: PropTypes.shape({
|
|
1103
|
+
current: PropTypes.any // eslint-disable-line
|
|
1104
|
+
}),
|
|
1105
|
+
className: PropTypes.string
|
|
1106
|
+
};
|
|
1107
|
+
var defaultProps$e = {
|
|
1108
|
+
active: false,
|
|
1109
|
+
id: null,
|
|
1110
|
+
href: null,
|
|
1111
|
+
label: null,
|
|
1112
|
+
icon: null,
|
|
1113
|
+
title: null,
|
|
1114
|
+
onClick: null,
|
|
1115
|
+
children: null,
|
|
1116
|
+
refButton: null,
|
|
1117
|
+
className: null
|
|
1118
|
+
};
|
|
1119
|
+
var ScreenButton = function ScreenButton(_ref) {
|
|
1120
|
+
var active = _ref.active,
|
|
1121
|
+
id = _ref.id,
|
|
1122
|
+
href = _ref.href,
|
|
1123
|
+
className = _ref.className,
|
|
1124
|
+
label = _ref.label,
|
|
1125
|
+
icon = _ref.icon,
|
|
1126
|
+
children = _ref.children,
|
|
1127
|
+
title = _ref.title,
|
|
1128
|
+
onClick = _ref.onClick,
|
|
1129
|
+
refButton = _ref.refButton;
|
|
1130
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
1131
|
+
className: classNames([styles$c.container, 'rounded', _defineProperty(_defineProperty({}, styles$c.active, active), className, className !== null)])
|
|
1132
|
+
}, children !== null ? children : /*#__PURE__*/React.createElement("div", {
|
|
1133
|
+
className: styles$c.screen
|
|
1134
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
1135
|
+
className: styles$c.inner
|
|
1136
|
+
}, icon !== null ? /*#__PURE__*/React.createElement("div", {
|
|
1137
|
+
className: styles$c.icon
|
|
1138
|
+
}, icon) : null, label !== null ? /*#__PURE__*/React.createElement("div", {
|
|
1139
|
+
className: styles$c.label
|
|
1140
|
+
}, label) : null)), /*#__PURE__*/React.createElement(Button, {
|
|
1141
|
+
className: styles$c.button,
|
|
1142
|
+
withoutStyle: true,
|
|
1143
|
+
id: id,
|
|
1144
|
+
href: href,
|
|
1145
|
+
title: title,
|
|
1146
|
+
onClick: onClick,
|
|
1147
|
+
refButton: refButton
|
|
1148
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
1149
|
+
className: classNames([styles$c.border, 'rounded'])
|
|
1150
|
+
})));
|
|
1151
|
+
};
|
|
1152
|
+
ScreenButton.propTypes = propTypes$e;
|
|
1153
|
+
ScreenButton.defaultProps = defaultProps$e;
|
|
1154
|
+
var ScreenButton$1 = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
1155
|
+
return /*#__PURE__*/React.createElement(ScreenButton, Object.assign({}, props, {
|
|
1156
|
+
refButton: ref
|
|
1157
|
+
}));
|
|
1158
|
+
});
|
|
1159
|
+
|
|
1160
|
+
var styles$b = {"button":"micromag-editor-buttons-screen-with-preview-button","name":"micromag-editor-buttons-screen-with-preview-name","index":"micromag-editor-buttons-screen-with-preview-index","deleteButton":"micromag-editor-buttons-screen-with-preview-deleteButton","withIndex":"micromag-editor-buttons-screen-with-preview-withIndex"};
|
|
1161
|
+
|
|
1162
|
+
var propTypes$d = {
|
|
1163
|
+
screen: PropTypes$1.screenComponent,
|
|
1164
|
+
screenState: PropTypes.string,
|
|
1165
|
+
index: PropTypes.number.isRequired,
|
|
1166
|
+
href: PropTypes.string,
|
|
1167
|
+
title: PropTypes.string,
|
|
1168
|
+
active: PropTypes.bool,
|
|
1169
|
+
withPlaceholder: PropTypes.bool,
|
|
1170
|
+
withIndexIndicator: PropTypes.bool,
|
|
1171
|
+
withName: PropTypes.bool,
|
|
1172
|
+
withDeleteButtonOnRepeatables: PropTypes.bool,
|
|
1173
|
+
onClick: PropTypes.func,
|
|
1174
|
+
onClickItem: PropTypes.func,
|
|
1175
|
+
onDeleteButtonClick: PropTypes.func,
|
|
1176
|
+
className: PropTypes.string
|
|
1177
|
+
};
|
|
1178
|
+
var defaultProps$d = {
|
|
1179
|
+
screen: null,
|
|
1180
|
+
screenState: null,
|
|
1181
|
+
title: null,
|
|
1182
|
+
href: null,
|
|
1183
|
+
active: false,
|
|
1184
|
+
withPlaceholder: false,
|
|
1185
|
+
withIndexIndicator: false,
|
|
1186
|
+
withName: false,
|
|
1187
|
+
withDeleteButtonOnRepeatables: false,
|
|
1188
|
+
onClick: null,
|
|
1189
|
+
onClickItem: null,
|
|
1190
|
+
onDeleteButtonClick: null,
|
|
1191
|
+
className: null
|
|
1192
|
+
};
|
|
1193
|
+
var ScreenWithPreview = function ScreenWithPreview(_ref) {
|
|
1194
|
+
var screen = _ref.screen,
|
|
1195
|
+
screenState = _ref.screenState,
|
|
1196
|
+
index = _ref.index,
|
|
1197
|
+
title = _ref.title,
|
|
1198
|
+
href = _ref.href,
|
|
1199
|
+
active = _ref.active,
|
|
1200
|
+
className = _ref.className,
|
|
1201
|
+
_onClick = _ref.onClick,
|
|
1202
|
+
onClickItem = _ref.onClickItem,
|
|
1203
|
+
withName = _ref.withName,
|
|
1204
|
+
withPlaceholder = _ref.withPlaceholder,
|
|
1205
|
+
withIndexIndicator = _ref.withIndexIndicator,
|
|
1206
|
+
withDeleteButtonOnRepeatables = _ref.withDeleteButtonOnRepeatables,
|
|
1207
|
+
onDeleteButtonClick = _ref.onDeleteButtonClick;
|
|
1208
|
+
var intl = useIntl();
|
|
1209
|
+
var _useIsVisible = useIsVisible({
|
|
1210
|
+
threshold: 0.1
|
|
1211
|
+
}),
|
|
1212
|
+
ref = _useIsVisible.ref,
|
|
1213
|
+
visible = _useIsVisible.visible;
|
|
1214
|
+
var ScreenComponent = withPlaceholder ? ScreenPlaceholder : ScreenPreview;
|
|
1215
|
+
var finalTitle = isMessage(title) ? intl.formatMessage(title) : title || null;
|
|
1216
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
1217
|
+
ref: ref
|
|
1218
|
+
}, /*#__PURE__*/React.createElement(ScreenButton$1, {
|
|
1219
|
+
href: href,
|
|
1220
|
+
active: active,
|
|
1221
|
+
className: classNames([styles$b.button, _defineProperty(_defineProperty({}, className, className !== null), styles$b.withIndex, withIndexIndicator || withName)]),
|
|
1222
|
+
title: finalTitle,
|
|
1223
|
+
onClick: function onClick() {
|
|
1224
|
+
if (_onClick !== null) {
|
|
1225
|
+
_onClick(screen, index);
|
|
1226
|
+
}
|
|
1227
|
+
if (onClickItem !== null) {
|
|
1228
|
+
onClickItem(screen, index);
|
|
1229
|
+
}
|
|
1230
|
+
}
|
|
1231
|
+
}, /*#__PURE__*/React.createElement(ScreenComponent, {
|
|
1232
|
+
screen: screen,
|
|
1233
|
+
screenState: screenState,
|
|
1234
|
+
className: styles$b.screen,
|
|
1235
|
+
hidden: !visible,
|
|
1236
|
+
withSize: true
|
|
1237
|
+
}), index !== null && withIndexIndicator ? /*#__PURE__*/React.createElement("div", {
|
|
1238
|
+
className: styles$b.index
|
|
1239
|
+
}, index + 1) : null, withName && !withIndexIndicator ? /*#__PURE__*/React.createElement("div", {
|
|
1240
|
+
className: styles$b.name
|
|
1241
|
+
}, finalTitle || null) : null, withDeleteButtonOnRepeatables ? /*#__PURE__*/React.createElement("div", {
|
|
1242
|
+
className: styles$b.deleteButton,
|
|
1243
|
+
onClick: onDeleteButtonClick
|
|
1244
|
+
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
1245
|
+
icon: faTimesCircle
|
|
1246
|
+
})) : null));
|
|
1247
|
+
};
|
|
1248
|
+
ScreenWithPreview.propTypes = propTypes$d;
|
|
1249
|
+
ScreenWithPreview.defaultProps = defaultProps$d;
|
|
1250
|
+
var ScreenWithPreview$1 = ScreenWithPreview;
|
|
1251
|
+
|
|
1252
|
+
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"};
|
|
1253
|
+
|
|
1254
|
+
var propTypes$c = {
|
|
1255
|
+
screen: PropTypes$1.screen.isRequired,
|
|
1256
|
+
screenState: PropTypes.string,
|
|
1257
|
+
value: PropTypes$1.story.isRequired,
|
|
1258
|
+
className: PropTypes.string,
|
|
1259
|
+
onChange: PropTypes.func
|
|
1260
|
+
};
|
|
1261
|
+
var defaultProps$c = {
|
|
1262
|
+
screenState: null,
|
|
1263
|
+
className: null,
|
|
1264
|
+
onChange: null
|
|
1265
|
+
};
|
|
1266
|
+
function ScreenStates(_ref) {
|
|
1267
|
+
var screen = _ref.screen,
|
|
1268
|
+
value = _ref.value,
|
|
1269
|
+
className = _ref.className,
|
|
1270
|
+
onChange = _ref.onChange;
|
|
1271
|
+
var url = useUrlGenerator();
|
|
1272
|
+
var push = useRoutePush();
|
|
1273
|
+
var _useRouteParams = useRouteParams(),
|
|
1274
|
+
_useRouteParams$scree = _useRouteParams.screen,
|
|
1275
|
+
screenParam = _useRouteParams$scree === void 0 ? null : _useRouteParams$scree,
|
|
1276
|
+
_useRouteParams$field = _useRouteParams.field,
|
|
1277
|
+
field = _useRouteParams$field === void 0 ? null : _useRouteParams$field;
|
|
1278
|
+
var states = useScreenStates(screen);
|
|
1279
|
+
var _ref2 = field !== null ? field.split('/') : [],
|
|
1280
|
+
_ref3 = _toArray(_ref2),
|
|
1281
|
+
_ref3$ = _ref3[0],
|
|
1282
|
+
stateParam = _ref3$ === void 0 ? null : _ref3$,
|
|
1283
|
+
stateIndexes = _ref3.slice(1);
|
|
1284
|
+
var stateIndex = stateIndexes.find(function (it) {
|
|
1285
|
+
return it.match(/^[0-9]+$/) !== null;
|
|
1286
|
+
}) || null;
|
|
1287
|
+
var currentState = stateParam !== null && states.findIndex(function (_ref4) {
|
|
1288
|
+
var id = _ref4.id;
|
|
1289
|
+
return id === stateParam;
|
|
1290
|
+
}) !== -1 ? stateParam : null;
|
|
1291
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
1292
|
+
className: classNames([styles$a.container, _defineProperty({}, className, className !== null)])
|
|
1293
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
1294
|
+
className: "d-flex align-items-end m-n1"
|
|
1295
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
1296
|
+
className: "p-1 align-self-stretch d-flex flex-column"
|
|
1297
|
+
}, /*#__PURE__*/React.createElement("h6", {
|
|
1298
|
+
className: classNames(['fw-normal', 'invisible', styles$a.title])
|
|
1299
|
+
}, "Settings"), /*#__PURE__*/React.createElement(Button, {
|
|
1300
|
+
className: classNames([styles$a.button, 'p-0', 'flex-grow-1', 'justify-content-center']),
|
|
1301
|
+
theme: screenParam !== null && field === null ? 'primary' : 'secondary',
|
|
1302
|
+
outline: screenParam === null || field !== null,
|
|
1303
|
+
size: "lg",
|
|
1304
|
+
icon: /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
1305
|
+
icon: faCogs
|
|
1306
|
+
}),
|
|
1307
|
+
href: url('screen', {
|
|
1308
|
+
screen: screen.id
|
|
1309
|
+
})
|
|
1310
|
+
})), states.map(function (state) {
|
|
1311
|
+
var id = state.id,
|
|
1312
|
+
_state$label = state.label,
|
|
1313
|
+
label = _state$label === void 0 ? null : _state$label,
|
|
1314
|
+
_state$repeatable = state.repeatable,
|
|
1315
|
+
repeatable = _state$repeatable === void 0 ? false : _state$repeatable,
|
|
1316
|
+
_state$withoutCreate = state.withoutCreate,
|
|
1317
|
+
withoutCreate = _state$withoutCreate === void 0 ? false : _state$withoutCreate,
|
|
1318
|
+
_state$fieldName = state.fieldName,
|
|
1319
|
+
fieldName = _state$fieldName === void 0 ? null : _state$fieldName;
|
|
1320
|
+
var repeatableItems = repeatable ? screen[fieldName || id] || [] : null;
|
|
1321
|
+
var onClickAdd = function onClickAdd() {
|
|
1322
|
+
var _ref6 = value || {},
|
|
1323
|
+
_ref6$components = _ref6.components,
|
|
1324
|
+
currentComponentsValue = _ref6$components === void 0 ? [] : _ref6$components;
|
|
1325
|
+
var currentScreenIndex = currentComponentsValue.findIndex(function (_ref7) {
|
|
1326
|
+
var screenId = _ref7.id;
|
|
1327
|
+
return screen.id === screenId;
|
|
1328
|
+
});
|
|
1329
|
+
var currentScreenValue = currentComponentsValue[currentScreenIndex] || {};
|
|
1330
|
+
var currentFieldValue = currentScreenValue[fieldName || id] || [];
|
|
1331
|
+
var newValue = _objectSpread(_objectSpread({}, value), {}, {
|
|
1332
|
+
components: [].concat(_toConsumableArray(currentComponentsValue.slice(0, currentScreenIndex)), [_objectSpread(_objectSpread({}, currentScreenValue), {}, _defineProperty({}, fieldName || id, [].concat(_toConsumableArray(currentFieldValue), [{}])))], _toConsumableArray(currentComponentsValue.slice(currentScreenIndex + 1)))
|
|
1333
|
+
});
|
|
1334
|
+
if (onChange !== null) {
|
|
1335
|
+
onChange(newValue);
|
|
1336
|
+
}
|
|
1337
|
+
push('screen.field', {
|
|
1338
|
+
screen: screen.id,
|
|
1339
|
+
field: [id, currentFieldValue.length]
|
|
1340
|
+
});
|
|
1341
|
+
};
|
|
1342
|
+
var onClickDelete = function onClickDelete(indexToDelete) {
|
|
1343
|
+
var _ref8 = value || {},
|
|
1344
|
+
_ref8$components = _ref8.components,
|
|
1345
|
+
currentComponentsValue = _ref8$components === void 0 ? [] : _ref8$components;
|
|
1346
|
+
var currentScreenIndex = currentComponentsValue.findIndex(function (_ref9) {
|
|
1347
|
+
var screenId = _ref9.id;
|
|
1348
|
+
return screen.id === screenId;
|
|
1349
|
+
});
|
|
1350
|
+
var currentScreenValue = currentComponentsValue[currentScreenIndex] || {};
|
|
1351
|
+
currentScreenValue[fieldName || id] || [];
|
|
1352
|
+
var newValue = _objectSpread(_objectSpread({}, value), {}, {
|
|
1353
|
+
components: [].concat(_toConsumableArray(currentComponentsValue.slice(0, currentScreenIndex)), [_objectSpread(_objectSpread({}, currentScreenValue), {}, _defineProperty({}, fieldName || id, (currentScreenValue[fieldName || id] || []).filter(function (_, index) {
|
|
1354
|
+
return index !== indexToDelete;
|
|
1355
|
+
})))], _toConsumableArray(currentComponentsValue.slice(currentScreenIndex + 1)))
|
|
1356
|
+
});
|
|
1357
|
+
if (onChange !== null) {
|
|
1358
|
+
onChange(newValue);
|
|
1359
|
+
}
|
|
1360
|
+
push('screen', {
|
|
1361
|
+
screen: screen.id
|
|
1362
|
+
});
|
|
1363
|
+
};
|
|
1364
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
1365
|
+
className: "p-1 align-self-stretch d-flex flex-column"
|
|
1366
|
+
}, /*#__PURE__*/React.createElement("h6", {
|
|
1367
|
+
className: classNames(['fw-normal', 'text-body-secondary', styles$a.title])
|
|
1368
|
+
}, /*#__PURE__*/React.createElement(FormattedMessage, label)), repeatable ? /*#__PURE__*/React.createElement("ul", {
|
|
1369
|
+
className: "d-flex list-unstyled m-n1 flex-grow-1"
|
|
1370
|
+
}, repeatableItems.map(function (item, index) {
|
|
1371
|
+
return /*#__PURE__*/React.createElement("li", {
|
|
1372
|
+
className: "p-1"
|
|
1373
|
+
}, /*#__PURE__*/React.createElement(ScreenWithPreview$1, {
|
|
1374
|
+
index: index,
|
|
1375
|
+
withIndexIndicator: true,
|
|
1376
|
+
withDeleteButtonOnRepeatables: true,
|
|
1377
|
+
screen: screen,
|
|
1378
|
+
screenState: "".concat(id, ".").concat(index),
|
|
1379
|
+
className: styles$a.button,
|
|
1380
|
+
active: currentState !== null && id === currentState.split('.')[0] && stateIndex !== null && parseInt(stateIndex, 10) === index,
|
|
1381
|
+
href: url('screen.field', {
|
|
1382
|
+
screen: screen.id,
|
|
1383
|
+
field: [id, index]
|
|
1384
|
+
}),
|
|
1385
|
+
onDeleteButtonClick: function onDeleteButtonClick() {
|
|
1386
|
+
return onClickDelete(index);
|
|
1387
|
+
}
|
|
1388
|
+
}));
|
|
1389
|
+
}), !withoutCreate ? /*#__PURE__*/React.createElement("li", {
|
|
1390
|
+
className: "p-1"
|
|
1391
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
1392
|
+
className: classNames([styles$a.button, styles$a.addButton, 'h-100', 'p-0', 'justify-content-center']),
|
|
1393
|
+
theme: "secondary",
|
|
1394
|
+
outline: true,
|
|
1395
|
+
size: "lg",
|
|
1396
|
+
icon: /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
1397
|
+
icon: faPlus
|
|
1398
|
+
}),
|
|
1399
|
+
onClick: onClickAdd
|
|
1400
|
+
})) : null) : /*#__PURE__*/React.createElement(ScreenWithPreview$1, {
|
|
1401
|
+
screen: screen,
|
|
1402
|
+
screenState: id,
|
|
1403
|
+
className: styles$a.button,
|
|
1404
|
+
active: id === currentState,
|
|
1405
|
+
href: url('screen.field', {
|
|
1406
|
+
screen: screen.id,
|
|
1407
|
+
field: id
|
|
1408
|
+
})
|
|
1409
|
+
// onClick={() => {
|
|
1410
|
+
// if (onStateChange !== null) {
|
|
1411
|
+
// onStateChange(id);
|
|
1412
|
+
// }
|
|
1413
|
+
// }}
|
|
1414
|
+
}));
|
|
1415
|
+
})));
|
|
1416
|
+
}
|
|
1417
|
+
ScreenStates.propTypes = propTypes$c;
|
|
1418
|
+
ScreenStates.defaultProps = defaultProps$c;
|
|
1419
|
+
|
|
1420
|
+
var styles$9 = {"container":"micromag-editor-preview-container","story":"micromag-editor-preview-story","noStory":"micromag-editor-preview-noStory","inner":"micromag-editor-preview-inner","top":"micromag-editor-preview-top","bottom":"micromag-editor-preview-bottom","preview":"micromag-editor-preview-preview","viewerContainer":"micromag-editor-preview-viewerContainer","devices":"micromag-editor-preview-devices"};
|
|
1421
|
+
|
|
1422
|
+
var propTypes$b = {
|
|
1423
|
+
value: PropTypes.oneOfType([PropTypes$1.story, PropTypes$1.theme]),
|
|
1424
|
+
devices: PropTypes$1.devices,
|
|
1425
|
+
device: PropTypes.string,
|
|
1426
|
+
viewerTheme: PropTypes$1.viewerTheme,
|
|
1427
|
+
isTheme: PropTypes.bool,
|
|
1428
|
+
className: PropTypes.string,
|
|
1429
|
+
onScreenChange: PropTypes.func,
|
|
1430
|
+
onChange: PropTypes.func,
|
|
1431
|
+
withoutDevicesSizes: PropTypes.bool
|
|
1432
|
+
};
|
|
1433
|
+
var defaultProps$b = {
|
|
1434
|
+
value: null,
|
|
1435
|
+
devices: [{
|
|
1436
|
+
id: 'mobile',
|
|
1437
|
+
width: 320,
|
|
1438
|
+
height: 480
|
|
1439
|
+
}, {
|
|
1440
|
+
id: 'desktop',
|
|
1441
|
+
width: 1200,
|
|
1442
|
+
height: 900
|
|
1443
|
+
}],
|
|
1444
|
+
device: 'mobile',
|
|
1445
|
+
viewerTheme: null,
|
|
1446
|
+
isTheme: false,
|
|
1447
|
+
className: null,
|
|
1448
|
+
onScreenChange: null,
|
|
1449
|
+
onChange: null,
|
|
1450
|
+
withoutDevicesSizes: true
|
|
1451
|
+
};
|
|
1452
|
+
var EditorPreview = function EditorPreview(_ref) {
|
|
1453
|
+
var value = _ref.value,
|
|
1454
|
+
viewerTheme = _ref.viewerTheme,
|
|
1455
|
+
isTheme = _ref.isTheme,
|
|
1456
|
+
devices = _ref.devices,
|
|
1457
|
+
initialDevice = _ref.device,
|
|
1458
|
+
className = _ref.className,
|
|
1459
|
+
onScreenChange = _ref.onScreenChange,
|
|
1460
|
+
onChange = _ref.onChange,
|
|
1461
|
+
withoutDevicesSizes = _ref.withoutDevicesSizes;
|
|
1462
|
+
var _useRouteParams = useRouteParams(),
|
|
1463
|
+
_useRouteParams$scree = _useRouteParams.screen,
|
|
1464
|
+
screenId = _useRouteParams$scree === void 0 ? null : _useRouteParams$scree,
|
|
1465
|
+
_useRouteParams$field = _useRouteParams.field,
|
|
1466
|
+
fieldParam = _useRouteParams$field === void 0 ? null : _useRouteParams$field;
|
|
1467
|
+
var _useScreenSize = useScreenSize(),
|
|
1468
|
+
_useScreenSize$screen = _useScreenSize.screen,
|
|
1469
|
+
screen = _useScreenSize$screen === void 0 ? null : _useScreenSize$screen,
|
|
1470
|
+
_useScreenSize$screen2 = _useScreenSize.screens,
|
|
1471
|
+
screens = _useScreenSize$screen2 === void 0 ? [] : _useScreenSize$screen2;
|
|
1472
|
+
var valueWithTheme = useThemeValue(value, isTheme);
|
|
1473
|
+
// const valueParsed = valueWithTheme;
|
|
1474
|
+
var valueParsed = useParsedStory(valueWithTheme, {
|
|
1475
|
+
withTheme: isTheme,
|
|
1476
|
+
withMedias: false
|
|
1477
|
+
});
|
|
1478
|
+
|
|
1479
|
+
// Get device
|
|
1480
|
+
var _useState = useState(initialDevice || devices[0].id),
|
|
1481
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
1482
|
+
deviceId = _useState2[0],
|
|
1483
|
+
setDeviceId = _useState2[1];
|
|
1484
|
+
var onClickDeviceItem = useCallback(function (e, it) {
|
|
1485
|
+
return setDeviceId(it.id);
|
|
1486
|
+
}, [setDeviceId]);
|
|
1487
|
+
var device = useMemo(function () {
|
|
1488
|
+
return devices.find(function (it) {
|
|
1489
|
+
return it.id === deviceId;
|
|
1490
|
+
});
|
|
1491
|
+
}, [devices, deviceId]);
|
|
1492
|
+
|
|
1493
|
+
// Calculate preview style
|
|
1494
|
+
var _useDimensionObserver = useDimensionObserver(),
|
|
1495
|
+
bottomRef = _useDimensionObserver.ref,
|
|
1496
|
+
_useDimensionObserver2 = _useDimensionObserver.width,
|
|
1497
|
+
bottomWidth = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2,
|
|
1498
|
+
_useDimensionObserver3 = _useDimensionObserver.height,
|
|
1499
|
+
bottomHeight = _useDimensionObserver3 === void 0 ? 0 : _useDimensionObserver3;
|
|
1500
|
+
var previewStyle = useMemo(function () {
|
|
1501
|
+
if (withoutDevicesSizes && initialDevice === null) {
|
|
1502
|
+
return {};
|
|
1503
|
+
}
|
|
1504
|
+
var deviceWidth = device.width,
|
|
1505
|
+
deviceHeight = device.height;
|
|
1506
|
+
var maxWidth = screen === 'mobile' ? bottomWidth : deviceWidth;
|
|
1507
|
+
var maxHeight = screen === 'mobile' ? bottomHeight : deviceHeight;
|
|
1508
|
+
var _getSizeWithinBounds = getSizeWithinBounds(maxWidth, maxHeight, bottomWidth, bottomHeight),
|
|
1509
|
+
previewScale = _getSizeWithinBounds.scale;
|
|
1510
|
+
return {
|
|
1511
|
+
width: maxWidth * previewScale,
|
|
1512
|
+
height: maxHeight * previewScale
|
|
1513
|
+
// transform: `scale(${previewScale}, ${previewScale})`,
|
|
1514
|
+
};
|
|
1515
|
+
}, [device, bottomWidth, bottomHeight, screen, withoutDevicesSizes, initialDevice]);
|
|
1516
|
+
var currentScreen = useMemo(function () {
|
|
1517
|
+
var _ref2 = valueParsed || {},
|
|
1518
|
+
_ref2$components = _ref2.components,
|
|
1519
|
+
components = _ref2$components === void 0 ? [] : _ref2$components;
|
|
1520
|
+
return (screenId !== null ? components.find(function (_ref3) {
|
|
1521
|
+
var id = _ref3.id;
|
|
1522
|
+
return id === screenId;
|
|
1523
|
+
}) : components[0]) || null;
|
|
1524
|
+
}, [valueParsed, screenId]);
|
|
1525
|
+
var currentScreenStates = useScreenStates(currentScreen);
|
|
1526
|
+
var _ref4 = fieldParam !== null && currentScreenStates !== null ? fieldParam.split('/') : [],
|
|
1527
|
+
_ref5 = _slicedToArray(_ref4, 1),
|
|
1528
|
+
_ref5$ = _ref5[0],
|
|
1529
|
+
screenStateParam = _ref5$ === void 0 ? null : _ref5$;
|
|
1530
|
+
var currentScreenState = screenStateParam !== null ? currentScreenStates.find(function (_ref6) {
|
|
1531
|
+
var id = _ref6.id;
|
|
1532
|
+
return id === screenStateParam;
|
|
1533
|
+
}) || null : null;
|
|
1534
|
+
var _ref7 = currentScreenState || {},
|
|
1535
|
+
_ref7$id = _ref7.id,
|
|
1536
|
+
screenStateId = _ref7$id === void 0 ? null : _ref7$id,
|
|
1537
|
+
_ref7$repeatable = _ref7.repeatable,
|
|
1538
|
+
repeatable = _ref7$repeatable === void 0 ? false : _ref7$repeatable;
|
|
1539
|
+
var currentScreenStateId = currentScreenState !== null && repeatable ? "".concat(screenStateId, ".").concat(fieldParam.split('/').find(function (it) {
|
|
1540
|
+
return it.match(/^[0-9]+$/) !== null;
|
|
1541
|
+
}) || 0) : screenStateId;
|
|
1542
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
1543
|
+
className: classNames([styles$9.container, screens.map(function (screenName) {
|
|
1544
|
+
return styles$9["screen-".concat(screenName)];
|
|
1545
|
+
}), _defineProperty(_defineProperty({}, className, className), styles$9.withoutDevicesSizes, withoutDevicesSizes)])
|
|
1546
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
1547
|
+
className: styles$9.inner
|
|
1548
|
+
}, currentScreenStates !== null && currentScreen !== null ? /*#__PURE__*/React.createElement("div", {
|
|
1549
|
+
className: classNames([styles$9.top, 'px-1'])
|
|
1550
|
+
}, /*#__PURE__*/React.createElement(ScreenStates, {
|
|
1551
|
+
screen: currentScreen,
|
|
1552
|
+
screenState: currentScreenStateId,
|
|
1553
|
+
value: value,
|
|
1554
|
+
onChange: onChange
|
|
1555
|
+
})) : null, /*#__PURE__*/React.createElement("div", {
|
|
1556
|
+
className: styles$9.bottom
|
|
1557
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
1558
|
+
className: styles$9.inner,
|
|
1559
|
+
ref: bottomRef
|
|
1560
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
1561
|
+
className: styles$9.preview,
|
|
1562
|
+
style: previewStyle
|
|
1563
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
1564
|
+
className: styles$9.viewerContainer
|
|
1565
|
+
}, /*#__PURE__*/React.createElement(PlaybackProvider, null, /*#__PURE__*/React.createElement(Viewer, {
|
|
1566
|
+
story: valueParsed,
|
|
1567
|
+
storyIsParsed: true,
|
|
1568
|
+
screen: screenId,
|
|
1569
|
+
screenState: currentScreenStateId,
|
|
1570
|
+
className: styles$9.story,
|
|
1571
|
+
theme: viewerTheme,
|
|
1572
|
+
interactions: null,
|
|
1573
|
+
renderContext: "edit",
|
|
1574
|
+
onScreenChange: onScreenChange,
|
|
1575
|
+
withoutNavigationArrow: true,
|
|
1576
|
+
withoutTransitions: true,
|
|
1577
|
+
withoutGestures: true,
|
|
1578
|
+
withoutMenu: true
|
|
1579
|
+
})))))), !withoutDevicesSizes ? /*#__PURE__*/React.createElement("div", {
|
|
1580
|
+
className: styles$9.deviceMenu
|
|
1581
|
+
}, /*#__PURE__*/React.createElement(DevicesMenu$1, {
|
|
1582
|
+
items: devices.map(function (it) {
|
|
1583
|
+
return _objectSpread(_objectSpread({}, it), {}, {
|
|
1584
|
+
active: it.id === deviceId
|
|
1585
|
+
});
|
|
1586
|
+
}),
|
|
1587
|
+
onClickItem: onClickDeviceItem,
|
|
1588
|
+
className: styles$9.devices
|
|
1589
|
+
})) : null));
|
|
1590
|
+
};
|
|
1591
|
+
EditorPreview.propTypes = propTypes$b;
|
|
1592
|
+
EditorPreview.defaultProps = defaultProps$b;
|
|
1593
|
+
var EditorPreview$1 = EditorPreview;
|
|
1594
|
+
|
|
1595
|
+
var iOS = /iPad|iPhone|iPod/.test(navigator.platform);
|
|
1596
|
+
function getDragDepth(offset, indentationWidth) {
|
|
1597
|
+
return Math.round(offset / indentationWidth);
|
|
1598
|
+
}
|
|
1599
|
+
function getMaxDepth(_ref) {
|
|
1600
|
+
var previousItem = _ref.previousItem;
|
|
1601
|
+
if (previousItem) {
|
|
1602
|
+
// return previousItem.depth + 1;
|
|
1603
|
+
return 1;
|
|
1604
|
+
}
|
|
1605
|
+
return 0;
|
|
1606
|
+
}
|
|
1607
|
+
function getMinDepth(_ref2) {
|
|
1608
|
+
var nextItem = _ref2.nextItem;
|
|
1609
|
+
if (nextItem) {
|
|
1610
|
+
// return nextItem.depth;
|
|
1611
|
+
return 0;
|
|
1612
|
+
}
|
|
1613
|
+
return 0;
|
|
1614
|
+
}
|
|
1615
|
+
function getProjection(items, activeId, overId, dragOffset, indentationWidth) {
|
|
1616
|
+
var overItemIndex = items.findIndex(function (_ref3) {
|
|
1617
|
+
var id = _ref3.id;
|
|
1618
|
+
return id === overId;
|
|
1619
|
+
});
|
|
1620
|
+
var activeItemIndex = items.findIndex(function (_ref4) {
|
|
1621
|
+
var id = _ref4.id;
|
|
1622
|
+
return id === activeId;
|
|
1623
|
+
});
|
|
1624
|
+
var activeItem = items[activeItemIndex];
|
|
1625
|
+
var newItems = arrayMove(items, activeItemIndex, overItemIndex);
|
|
1626
|
+
var previousItem = newItems[overItemIndex - 1];
|
|
1627
|
+
var nextItem = newItems[overItemIndex + 1];
|
|
1628
|
+
var dragDepth = getDragDepth(dragOffset, indentationWidth);
|
|
1629
|
+
var projectedDepth = activeItem.depth + dragDepth;
|
|
1630
|
+
var maxDepth = getMaxDepth({
|
|
1631
|
+
previousItem: previousItem
|
|
1632
|
+
});
|
|
1633
|
+
var minDepth = getMinDepth({
|
|
1634
|
+
nextItem: nextItem
|
|
1635
|
+
});
|
|
1636
|
+
var depth = projectedDepth;
|
|
1637
|
+
if (projectedDepth >= maxDepth) {
|
|
1638
|
+
depth = maxDepth;
|
|
1639
|
+
} else if (projectedDepth < minDepth) {
|
|
1640
|
+
depth = minDepth;
|
|
1641
|
+
}
|
|
1642
|
+
function getParentId() {
|
|
1643
|
+
var _newItems$slice$rever;
|
|
1644
|
+
if (depth === 0 || !previousItem) {
|
|
1645
|
+
return null;
|
|
1646
|
+
}
|
|
1647
|
+
if (depth === previousItem.depth) {
|
|
1648
|
+
return previousItem.parentId;
|
|
1649
|
+
}
|
|
1650
|
+
if (depth > previousItem.depth) {
|
|
1651
|
+
return previousItem.id;
|
|
1652
|
+
}
|
|
1653
|
+
var newParent = (_newItems$slice$rever = newItems.slice(0, overItemIndex).reverse().find(function (item) {
|
|
1654
|
+
return item.depth === depth;
|
|
1655
|
+
})) === null || _newItems$slice$rever === void 0 ? void 0 : _newItems$slice$rever.parentId;
|
|
1656
|
+
return newParent !== null && newParent !== void 0 ? newParent : null;
|
|
1657
|
+
}
|
|
1658
|
+
return {
|
|
1659
|
+
depth: depth,
|
|
1660
|
+
maxDepth: maxDepth,
|
|
1661
|
+
minDepth: minDepth,
|
|
1662
|
+
parentId: getParentId()
|
|
1663
|
+
};
|
|
1664
|
+
}
|
|
1665
|
+
function flatten(items) {
|
|
1666
|
+
var parentId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
1667
|
+
var depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
1668
|
+
return items.reduce(function (acc, item, index) {
|
|
1669
|
+
return [].concat(_toConsumableArray(acc), [_objectSpread(_objectSpread({}, item), {}, {
|
|
1670
|
+
parentId: item.parentId || parentId,
|
|
1671
|
+
depth: item.parentId ? 1 : 0,
|
|
1672
|
+
index: index // For some reason this aint enough
|
|
1673
|
+
})], _toConsumableArray(flatten(item.children || [], item.id, depth + 1)));
|
|
1674
|
+
}, []);
|
|
1675
|
+
}
|
|
1676
|
+
function flattenTree(items) {
|
|
1677
|
+
return flatten(items);
|
|
1678
|
+
}
|
|
1679
|
+
function findItem(items, itemId) {
|
|
1680
|
+
return items.find(function (_ref5) {
|
|
1681
|
+
var id = _ref5.id;
|
|
1682
|
+
return id === itemId;
|
|
1683
|
+
});
|
|
1684
|
+
}
|
|
1685
|
+
function buildTree(flattenedItems) {
|
|
1686
|
+
var root = {
|
|
1687
|
+
id: 'root',
|
|
1688
|
+
children: []
|
|
1689
|
+
};
|
|
1690
|
+
var nodes = _defineProperty({}, root.id, root);
|
|
1691
|
+
var items = flattenedItems.map(function (item) {
|
|
1692
|
+
return _objectSpread(_objectSpread({}, item), {}, {
|
|
1693
|
+
children: []
|
|
1694
|
+
});
|
|
1695
|
+
});
|
|
1696
|
+
// console.log('BUILD');
|
|
1697
|
+
var indexes = {};
|
|
1698
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
1699
|
+
var _iterator = _createForOfIteratorHelper(items),
|
|
1700
|
+
_step;
|
|
1701
|
+
try {
|
|
1702
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
1703
|
+
var _item$parentId, _nodes$parentId;
|
|
1704
|
+
var item = _step.value;
|
|
1705
|
+
var id = item.id,
|
|
1706
|
+
children = item.children;
|
|
1707
|
+
var parentId = (_item$parentId = item.parentId) !== null && _item$parentId !== void 0 ? _item$parentId : root.id;
|
|
1708
|
+
var parent = (_nodes$parentId = nodes[parentId]) !== null && _nodes$parentId !== void 0 ? _nodes$parentId : findItem(items, parentId);
|
|
1709
|
+
if (typeof indexes[parentId] !== 'undefined') {
|
|
1710
|
+
indexes[parentId] += 1;
|
|
1711
|
+
} else {
|
|
1712
|
+
indexes[parentId] = 0;
|
|
1713
|
+
}
|
|
1714
|
+
nodes[id] = {
|
|
1715
|
+
id: id,
|
|
1716
|
+
children: children,
|
|
1717
|
+
index: indexes[parentId]
|
|
1718
|
+
};
|
|
1719
|
+
parent.children.push(_objectSpread(_objectSpread({}, item), {}, {
|
|
1720
|
+
index: indexes[parentId]
|
|
1721
|
+
}));
|
|
1722
|
+
}
|
|
1723
|
+
} catch (err) {
|
|
1724
|
+
_iterator.e(err);
|
|
1725
|
+
} finally {
|
|
1726
|
+
_iterator.f();
|
|
1727
|
+
}
|
|
1728
|
+
return root.children;
|
|
1729
|
+
}
|
|
1730
|
+
function findItemDeep(items, itemId) {
|
|
1731
|
+
for (var i = 0; i < items.length; i += 1) {
|
|
1732
|
+
var item = items[i] || {};
|
|
1733
|
+
var id = item.id,
|
|
1734
|
+
_item$children = item.children,
|
|
1735
|
+
children = _item$children === void 0 ? [] : _item$children;
|
|
1736
|
+
if (id === itemId) {
|
|
1737
|
+
return item;
|
|
1738
|
+
}
|
|
1739
|
+
if (children.length > 0) {
|
|
1740
|
+
var child = findItemDeep(children, itemId);
|
|
1741
|
+
if (child) {
|
|
1742
|
+
return child;
|
|
1743
|
+
}
|
|
1744
|
+
}
|
|
1745
|
+
}
|
|
1746
|
+
return undefined;
|
|
1747
|
+
}
|
|
1748
|
+
function removeItem(items, id) {
|
|
1749
|
+
var newItems = [];
|
|
1750
|
+
|
|
1751
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
1752
|
+
var _iterator2 = _createForOfIteratorHelper(items),
|
|
1753
|
+
_step2;
|
|
1754
|
+
try {
|
|
1755
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
1756
|
+
var item = _step2.value;
|
|
1757
|
+
if (item.id === id) {
|
|
1758
|
+
// eslint-disable-next-line no-continue
|
|
1759
|
+
continue;
|
|
1760
|
+
}
|
|
1761
|
+
if (item.children.length) {
|
|
1762
|
+
item.children = removeItem(item.children, id);
|
|
1763
|
+
}
|
|
1764
|
+
newItems.push(item);
|
|
1765
|
+
}
|
|
1766
|
+
} catch (err) {
|
|
1767
|
+
_iterator2.e(err);
|
|
1768
|
+
} finally {
|
|
1769
|
+
_iterator2.f();
|
|
1770
|
+
}
|
|
1771
|
+
return newItems;
|
|
1772
|
+
}
|
|
1773
|
+
function setProperty(items, id, property, setter) {
|
|
1774
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
1775
|
+
var _iterator3 = _createForOfIteratorHelper(items),
|
|
1776
|
+
_step3;
|
|
1777
|
+
try {
|
|
1778
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
1779
|
+
var item = _step3.value;
|
|
1780
|
+
if (item.id === id) {
|
|
1781
|
+
item[property] = setter(item[property]);
|
|
1782
|
+
// eslint-disable-next-line no-continue
|
|
1783
|
+
continue;
|
|
1784
|
+
}
|
|
1785
|
+
if (item.children.length) {
|
|
1786
|
+
item.children = setProperty(item.children, id, property, setter);
|
|
1787
|
+
}
|
|
1788
|
+
}
|
|
1789
|
+
} catch (err) {
|
|
1790
|
+
_iterator3.e(err);
|
|
1791
|
+
} finally {
|
|
1792
|
+
_iterator3.f();
|
|
1793
|
+
}
|
|
1794
|
+
return _toConsumableArray(items);
|
|
1795
|
+
}
|
|
1796
|
+
function countChildren(items) {
|
|
1797
|
+
var count = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
1798
|
+
return items.reduce(function (acc, _ref6) {
|
|
1799
|
+
var _ref6$children = _ref6.children,
|
|
1800
|
+
children = _ref6$children === void 0 ? [] : _ref6$children;
|
|
1801
|
+
if (children.length) {
|
|
1802
|
+
return countChildren(children, acc + 1);
|
|
1803
|
+
}
|
|
1804
|
+
return acc + 1;
|
|
1805
|
+
}, count);
|
|
1806
|
+
}
|
|
1807
|
+
function getChildCount(items, id) {
|
|
1808
|
+
if (!id) {
|
|
1809
|
+
return 0;
|
|
1810
|
+
}
|
|
1811
|
+
var item = findItemDeep(items, id);
|
|
1812
|
+
return item ? countChildren(item.children || []) : 0;
|
|
1813
|
+
}
|
|
1814
|
+
function removeChildrenOf(items, ids) {
|
|
1815
|
+
var excludeParentIds = _toConsumableArray(ids);
|
|
1816
|
+
return items.filter(function (item) {
|
|
1817
|
+
if (item.parentId && excludeParentIds.includes(item.parentId)) {
|
|
1818
|
+
var _item$children2 = item.children,
|
|
1819
|
+
children = _item$children2 === void 0 ? [] : _item$children2;
|
|
1820
|
+
if (children.length) {
|
|
1821
|
+
excludeParentIds.push(item.id);
|
|
1822
|
+
}
|
|
1823
|
+
return false;
|
|
1824
|
+
}
|
|
1825
|
+
return true;
|
|
1826
|
+
});
|
|
1827
|
+
}
|
|
1828
|
+
|
|
1829
|
+
var directions = [KeyboardCode.Down, KeyboardCode.Right, KeyboardCode.Up, KeyboardCode.Left];
|
|
1830
|
+
var horizontal = [KeyboardCode.Left, KeyboardCode.Right];
|
|
1831
|
+
var sortableTreeKeyboardCoordinates = function sortableTreeKeyboardCoordinates(context, indentationWidth) {
|
|
1832
|
+
return function (event, _ref) {
|
|
1833
|
+
var currentCoordinates = _ref.currentCoordinates,
|
|
1834
|
+
_ref$context = _ref.context,
|
|
1835
|
+
active = _ref$context.active,
|
|
1836
|
+
over = _ref$context.over,
|
|
1837
|
+
collisionRect = _ref$context.collisionRect,
|
|
1838
|
+
droppableContainers = _ref$context.droppableContainers;
|
|
1839
|
+
if (directions.includes(event.code)) {
|
|
1840
|
+
var _droppableContainers$;
|
|
1841
|
+
if (!active || !collisionRect) {
|
|
1842
|
+
return;
|
|
1843
|
+
}
|
|
1844
|
+
event.preventDefault();
|
|
1845
|
+
var _context$current = context.current,
|
|
1846
|
+
items = _context$current.items,
|
|
1847
|
+
offset = _context$current.offset;
|
|
1848
|
+
if (horizontal.includes(event.code) && over !== null && over !== void 0 && over.id) {
|
|
1849
|
+
var _getProjection = getProjection(items, active.id, over.id, offset, indentationWidth),
|
|
1850
|
+
depth = _getProjection.depth,
|
|
1851
|
+
maxDepth = _getProjection.maxDepth,
|
|
1852
|
+
minDepth = _getProjection.minDepth;
|
|
1853
|
+
switch (event.code) {
|
|
1854
|
+
case KeyboardCode.Left:
|
|
1855
|
+
if (depth > minDepth) {
|
|
1856
|
+
return _objectSpread(_objectSpread({}, currentCoordinates), {}, {
|
|
1857
|
+
x: currentCoordinates.x - indentationWidth
|
|
1858
|
+
});
|
|
1859
|
+
}
|
|
1860
|
+
break;
|
|
1861
|
+
case KeyboardCode.Right:
|
|
1862
|
+
if (depth < maxDepth) {
|
|
1863
|
+
return _objectSpread(_objectSpread({}, currentCoordinates), {}, {
|
|
1864
|
+
x: currentCoordinates.x + indentationWidth
|
|
1865
|
+
});
|
|
1866
|
+
}
|
|
1867
|
+
break;
|
|
1868
|
+
default:
|
|
1869
|
+
return undefined;
|
|
1870
|
+
}
|
|
1871
|
+
return undefined;
|
|
1872
|
+
}
|
|
1873
|
+
var containers = [];
|
|
1874
|
+
var overRect = over !== null && over !== void 0 && over.id ? (_droppableContainers$ = droppableContainers.get(over.id)) === null || _droppableContainers$ === void 0 ? void 0 : _droppableContainers$.rect.current : undefined;
|
|
1875
|
+
if (overRect) {
|
|
1876
|
+
droppableContainers.forEach(function (container) {
|
|
1877
|
+
if (container !== null && container !== void 0 && container.disabled) {
|
|
1878
|
+
return;
|
|
1879
|
+
}
|
|
1880
|
+
var rect = container === null || container === void 0 ? void 0 : container.rect.current;
|
|
1881
|
+
if (!rect) {
|
|
1882
|
+
return;
|
|
1883
|
+
}
|
|
1884
|
+
switch (event.code) {
|
|
1885
|
+
case KeyboardCode.Down:
|
|
1886
|
+
if (overRect.top < rect.top) {
|
|
1887
|
+
containers.push(container);
|
|
1888
|
+
}
|
|
1889
|
+
break;
|
|
1890
|
+
case KeyboardCode.Up:
|
|
1891
|
+
if (overRect.top > rect.top) {
|
|
1892
|
+
containers.push(container);
|
|
1893
|
+
}
|
|
1894
|
+
break;
|
|
1895
|
+
//
|
|
1896
|
+
}
|
|
1897
|
+
});
|
|
1898
|
+
}
|
|
1899
|
+
var collisions = closestCorners({
|
|
1900
|
+
active: active,
|
|
1901
|
+
collisionRect: collisionRect,
|
|
1902
|
+
pointerCoordinates: null,
|
|
1903
|
+
droppableContainers: containers
|
|
1904
|
+
});
|
|
1905
|
+
var closestId = getFirstCollision(collisions, 'id');
|
|
1906
|
+
if (closestId && over !== null && over !== void 0 && over.id) {
|
|
1907
|
+
var _droppableContainers$2, _droppableContainers$3;
|
|
1908
|
+
var newNode = (_droppableContainers$2 = droppableContainers.get(closestId)) === null || _droppableContainers$2 === void 0 ? void 0 : _droppableContainers$2.node.current;
|
|
1909
|
+
var activeNodeRect = (_droppableContainers$3 = droppableContainers.get(active.id)) === null || _droppableContainers$3 === void 0 ? void 0 : _droppableContainers$3.rect.current;
|
|
1910
|
+
if (newNode && activeNodeRect) {
|
|
1911
|
+
var newRect = getClientRect(newNode, {
|
|
1912
|
+
ignoreTransform: true
|
|
1913
|
+
});
|
|
1914
|
+
var newItem = items.find(function (_ref2) {
|
|
1915
|
+
var id = _ref2.id;
|
|
1916
|
+
return id === closestId;
|
|
1917
|
+
});
|
|
1918
|
+
var activeItem = items.find(function (_ref3) {
|
|
1919
|
+
var id = _ref3.id;
|
|
1920
|
+
return id === active.id;
|
|
1921
|
+
});
|
|
1922
|
+
if (newItem && activeItem) {
|
|
1923
|
+
var _getProjection2 = getProjection(items, active.id, closestId, (newItem.depth - activeItem.depth) * indentationWidth, indentationWidth),
|
|
1924
|
+
_depth = _getProjection2.depth;
|
|
1925
|
+
var topOffset = newRect.top > activeNodeRect.top ? Math.abs(activeNodeRect.height - newRect.height) : 0;
|
|
1926
|
+
var newCoordinates = {
|
|
1927
|
+
x: newRect.left + _depth * indentationWidth,
|
|
1928
|
+
y: newRect.top + topOffset
|
|
1929
|
+
};
|
|
1930
|
+
return newCoordinates;
|
|
1931
|
+
}
|
|
1932
|
+
}
|
|
1933
|
+
}
|
|
1934
|
+
}
|
|
1935
|
+
return undefined;
|
|
1936
|
+
};
|
|
1937
|
+
};
|
|
1938
|
+
|
|
1939
|
+
var styles$8 = {"wrapper":"micromag-editor-sortable-sortable-tree-item-actions-wrapper","inner":"micromag-editor-sortable-sortable-tree-item-actions-inner","button":"micromag-editor-sortable-sortable-tree-item-actions-button","handle":"micromag-editor-sortable-sortable-tree-item-actions-handle","icon":"micromag-editor-sortable-sortable-tree-item-actions-icon","text":"micromag-editor-sortable-sortable-tree-item-actions-text","count":"micromag-editor-sortable-sortable-tree-item-actions-count","collapsedCount":"micromag-editor-sortable-sortable-tree-item-actions-collapsedCount","disableInteraction":"micromag-editor-sortable-sortable-tree-item-actions-disableInteraction","disableSelection":"micromag-editor-sortable-sortable-tree-item-actions-disableSelection","clone":"micromag-editor-sortable-sortable-tree-item-actions-clone","collapse":"micromag-editor-sortable-sortable-tree-item-actions-collapse","collapsed":"micromag-editor-sortable-sortable-tree-item-actions-collapsed","children":"micromag-editor-sortable-sortable-tree-item-actions-children","withChildren":"micromag-editor-sortable-sortable-tree-item-actions-withChildren","ghost":"micromag-editor-sortable-sortable-tree-item-actions-ghost","indicator":"micromag-editor-sortable-sortable-tree-item-actions-indicator"};
|
|
1940
|
+
|
|
1941
|
+
var _excluded$4 = ["childCount", "clone", "depth", "disableSelection", "disableInteraction", "ghost", "handleProps", "indentationWidth", "indicator", "collapsed", "onCollapse", "onRemove", "onClick", "style", "value", "wrapperRef", "showId", "showCount", "showCollapsedCount", "children"];
|
|
1942
|
+
var propTypes$a = {
|
|
1943
|
+
childCount: PropTypes.number,
|
|
1944
|
+
clone: PropTypes.bool,
|
|
1945
|
+
collapsed: PropTypes.bool,
|
|
1946
|
+
depth: PropTypes.number.isRequired,
|
|
1947
|
+
disableInteraction: PropTypes.bool,
|
|
1948
|
+
disableSelection: PropTypes.bool,
|
|
1949
|
+
ghost: PropTypes.bool,
|
|
1950
|
+
// eslint-disable-next-line react/forbid-prop-types
|
|
1951
|
+
handleProps: PropTypes.any,
|
|
1952
|
+
indicator: PropTypes.bool,
|
|
1953
|
+
indentationWidth: PropTypes.number.isRequired,
|
|
1954
|
+
value: PropTypes.string,
|
|
1955
|
+
onCollapse: PropTypes.func,
|
|
1956
|
+
onRemove: PropTypes.func,
|
|
1957
|
+
onClick: PropTypes.func,
|
|
1958
|
+
// eslint-disable-next-line react/forbid-prop-types
|
|
1959
|
+
wrapperRef: PropTypes.any,
|
|
1960
|
+
style: PropTypes.shape({
|
|
1961
|
+
width: PropTypes.number.isRequired,
|
|
1962
|
+
height: PropTypes.number.isRequired,
|
|
1963
|
+
transform: PropTypes.string.isRequired
|
|
1964
|
+
}),
|
|
1965
|
+
showId: PropTypes.bool,
|
|
1966
|
+
showCount: PropTypes.bool,
|
|
1967
|
+
showCollapsedCount: PropTypes.bool,
|
|
1968
|
+
children: PropTypes.node
|
|
1969
|
+
};
|
|
1970
|
+
var defaultProps$a = {
|
|
1971
|
+
childCount: null,
|
|
1972
|
+
clone: false,
|
|
1973
|
+
collapsed: false,
|
|
1974
|
+
disableInteraction: false,
|
|
1975
|
+
disableSelection: false,
|
|
1976
|
+
ghost: false,
|
|
1977
|
+
handleProps: null,
|
|
1978
|
+
indicator: false,
|
|
1979
|
+
value: null,
|
|
1980
|
+
onCollapse: null,
|
|
1981
|
+
onRemove: null,
|
|
1982
|
+
onClick: null,
|
|
1983
|
+
wrapperRef: null,
|
|
1984
|
+
style: null,
|
|
1985
|
+
showId: false,
|
|
1986
|
+
showCount: false,
|
|
1987
|
+
showCollapsedCount: false,
|
|
1988
|
+
children: null
|
|
1989
|
+
};
|
|
1990
|
+
var SortableTreeItemActions = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
1991
|
+
var childCount = _ref.childCount,
|
|
1992
|
+
clone = _ref.clone,
|
|
1993
|
+
depth = _ref.depth,
|
|
1994
|
+
disableSelection = _ref.disableSelection,
|
|
1995
|
+
disableInteraction = _ref.disableInteraction,
|
|
1996
|
+
ghost = _ref.ghost,
|
|
1997
|
+
handleProps = _ref.handleProps,
|
|
1998
|
+
indentationWidth = _ref.indentationWidth,
|
|
1999
|
+
indicator = _ref.indicator,
|
|
2000
|
+
collapsed = _ref.collapsed,
|
|
2001
|
+
onCollapse = _ref.onCollapse,
|
|
2002
|
+
onRemove = _ref.onRemove;
|
|
2003
|
+
_ref.onClick;
|
|
2004
|
+
var style = _ref.style;
|
|
2005
|
+
_ref.value;
|
|
2006
|
+
var wrapperRef = _ref.wrapperRef;
|
|
2007
|
+
_ref.showId;
|
|
2008
|
+
var showCount = _ref.showCount,
|
|
2009
|
+
showCollapsedCount = _ref.showCollapsedCount,
|
|
2010
|
+
children = _ref.children,
|
|
2011
|
+
props = _objectWithoutProperties(_ref, _excluded$4);
|
|
2012
|
+
return /*#__PURE__*/React.createElement("div", Object.assign({
|
|
2013
|
+
className: classNames([styles$8.wrapper, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, styles$8.clone, clone), styles$8.ghost, ghost), styles$8.indicator, indicator), styles$8.disableSelection, disableSelection), styles$8.disableInteraction, disableInteraction), styles$8.withChildren, onCollapse !== null)]),
|
|
2014
|
+
ref: wrapperRef,
|
|
2015
|
+
style: {
|
|
2016
|
+
marginLeft: "".concat(indentationWidth * depth, "px"),
|
|
2017
|
+
marginRight: "".concat(5 * depth, "px")
|
|
2018
|
+
}
|
|
2019
|
+
}, props), /*#__PURE__*/React.createElement("div", {
|
|
2020
|
+
className: styles$8.inner,
|
|
2021
|
+
ref: ref,
|
|
2022
|
+
style: style
|
|
2023
|
+
}, /*#__PURE__*/React.createElement("button", Object.assign({
|
|
2024
|
+
className: classNames([styles$8.button, styles$8.handle]),
|
|
2025
|
+
type: "button"
|
|
2026
|
+
}, handleProps), /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
2027
|
+
className: styles$8.icon,
|
|
2028
|
+
icon: faGripLines
|
|
2029
|
+
})), !clone && onRemove ? /*#__PURE__*/React.createElement("button", {
|
|
2030
|
+
type: "button",
|
|
2031
|
+
onClick: onRemove
|
|
2032
|
+
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
2033
|
+
icon: faTimes
|
|
2034
|
+
})) : null, clone && showCount && childCount && childCount > 1 ? /*#__PURE__*/React.createElement("span", {
|
|
2035
|
+
className: styles$8.count
|
|
2036
|
+
}, childCount) : null, showCollapsedCount && onCollapse && collapsed && childCount !== null && childCount > 0 ? /*#__PURE__*/React.createElement("span", {
|
|
2037
|
+
className: styles$8.collapsedCount
|
|
2038
|
+
}, childCount) : null, onCollapse && depth === 0 ? /*#__PURE__*/React.createElement("button", {
|
|
2039
|
+
type: "button",
|
|
2040
|
+
onClick: onCollapse,
|
|
2041
|
+
className: classNames(styles$8.button, styles$8.collapse, collapsed && styles$8.collapsed)
|
|
2042
|
+
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
2043
|
+
icon: faAngleDown
|
|
2044
|
+
})) : null, /*#__PURE__*/React.createElement("div", {
|
|
2045
|
+
className: styles$8.children
|
|
2046
|
+
}, children)));
|
|
2047
|
+
});
|
|
2048
|
+
SortableTreeItemActions.propTypes = propTypes$a;
|
|
2049
|
+
SortableTreeItemActions.defaultProps = defaultProps$a;
|
|
2050
|
+
var SortableTreeItemActions$1 = SortableTreeItemActions;
|
|
2051
|
+
|
|
2052
|
+
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"};
|
|
2053
|
+
|
|
2054
|
+
var _excluded$3 = ["id", "index", "depth", "component", "value", "style", "smallScale", "collapsed", "onCollapse", "onClickItem", "childValue", "isLastChild"];
|
|
2055
|
+
var propTypes$9 = {
|
|
2056
|
+
id: PropTypes.string.isRequired,
|
|
2057
|
+
index: PropTypes.number.isRequired,
|
|
2058
|
+
depth: PropTypes.number.isRequired,
|
|
2059
|
+
component: PropTypes.func,
|
|
2060
|
+
// eslint-disable-next-line react/forbid-prop-types
|
|
2061
|
+
value: PropTypes.object,
|
|
2062
|
+
style: PropTypes.shape({
|
|
2063
|
+
width: PropTypes.number.isRequired,
|
|
2064
|
+
height: PropTypes.number.isRequired,
|
|
2065
|
+
scaledWidth: PropTypes.number.isRequired,
|
|
2066
|
+
scaledHeight: PropTypes.number.isRequired,
|
|
2067
|
+
transform: PropTypes.string.isRequired,
|
|
2068
|
+
scale: PropTypes.number.isRequired
|
|
2069
|
+
}),
|
|
2070
|
+
smallScale: PropTypes.number,
|
|
2071
|
+
collapsed: PropTypes.bool,
|
|
2072
|
+
onCollapse: PropTypes.func,
|
|
2073
|
+
onClickItem: PropTypes.func,
|
|
2074
|
+
// eslint-disable-next-line react/forbid-prop-types
|
|
2075
|
+
childValue: PropTypes.object,
|
|
2076
|
+
isLastChild: PropTypes.bool
|
|
2077
|
+
};
|
|
2078
|
+
var defaultProps$9 = {
|
|
2079
|
+
component: null,
|
|
2080
|
+
value: null,
|
|
2081
|
+
style: null,
|
|
2082
|
+
smallScale: 0.75,
|
|
2083
|
+
collapsed: false,
|
|
2084
|
+
onCollapse: null,
|
|
2085
|
+
onClickItem: null,
|
|
2086
|
+
childValue: null,
|
|
2087
|
+
isLastChild: false
|
|
2088
|
+
};
|
|
2089
|
+
var animateLayoutChanges = function animateLayoutChanges(_ref) {
|
|
2090
|
+
var isSorting = _ref.isSorting,
|
|
2091
|
+
wasDragging = _ref.wasDragging;
|
|
2092
|
+
return !(isSorting || wasDragging);
|
|
2093
|
+
};
|
|
2094
|
+
var SortableTreeItem = function SortableTreeItem(_ref2) {
|
|
2095
|
+
var id = _ref2.id,
|
|
2096
|
+
index = _ref2.index,
|
|
2097
|
+
depth = _ref2.depth,
|
|
2098
|
+
Component = _ref2.component,
|
|
2099
|
+
value = _ref2.value;
|
|
2100
|
+
_ref2.style;
|
|
2101
|
+
_ref2.smallScale;
|
|
2102
|
+
var collapsed = _ref2.collapsed,
|
|
2103
|
+
onCollapse = _ref2.onCollapse,
|
|
2104
|
+
onClickItem = _ref2.onClickItem,
|
|
2105
|
+
childValue = _ref2.childValue;
|
|
2106
|
+
_ref2.isLastChild;
|
|
2107
|
+
var props = _objectWithoutProperties(_ref2, _excluded$3);
|
|
2108
|
+
var _useSortable = useSortable({
|
|
2109
|
+
id: id,
|
|
2110
|
+
animateLayoutChanges: animateLayoutChanges
|
|
2111
|
+
}),
|
|
2112
|
+
attributes = _useSortable.attributes,
|
|
2113
|
+
isDragging = _useSortable.isDragging,
|
|
2114
|
+
isSorting = _useSortable.isSorting,
|
|
2115
|
+
listeners = _useSortable.listeners,
|
|
2116
|
+
setDraggableNodeRef = _useSortable.setDraggableNodeRef,
|
|
2117
|
+
setDroppableNodeRef = _useSortable.setDroppableNodeRef,
|
|
2118
|
+
transform = _useSortable.transform,
|
|
2119
|
+
transition = _useSortable.transition;
|
|
2120
|
+
var timeout = useRef(null);
|
|
2121
|
+
var actionsStyle = {
|
|
2122
|
+
transform: CSS.Translate.toString(transform),
|
|
2123
|
+
transition: transition
|
|
2124
|
+
};
|
|
2125
|
+
var _ref3 = listeners || {},
|
|
2126
|
+
_ref3$onPointerDown = _ref3.onPointerDown,
|
|
2127
|
+
onPointerDown = _ref3$onPointerDown === void 0 ? null : _ref3$onPointerDown,
|
|
2128
|
+
_ref3$onPointerUp = _ref3.onPointerUp,
|
|
2129
|
+
onPointerUp = _ref3$onPointerUp === void 0 ? null : _ref3$onPointerUp;
|
|
2130
|
+
var onClickAction = useCallback(function (e) {
|
|
2131
|
+
if (onClickItem !== null) {
|
|
2132
|
+
onClickItem(value, index);
|
|
2133
|
+
}
|
|
2134
|
+
if (onPointerDown !== null) {
|
|
2135
|
+
e.persist();
|
|
2136
|
+
timeout.current = setTimeout(function () {
|
|
2137
|
+
if (onPointerDown !== null) {
|
|
2138
|
+
onPointerDown(e);
|
|
2139
|
+
}
|
|
2140
|
+
timeout.current = null;
|
|
2141
|
+
}, 200);
|
|
2142
|
+
}
|
|
2143
|
+
}, [value, index, onClickItem, onPointerDown]);
|
|
2144
|
+
var cancellingPointerUp = useCallback(function (e) {
|
|
2145
|
+
if (timeout.current !== null) {
|
|
2146
|
+
clearTimeout(timeout.current);
|
|
2147
|
+
}
|
|
2148
|
+
if (onPointerUp !== null) {
|
|
2149
|
+
onPointerUp(e);
|
|
2150
|
+
}
|
|
2151
|
+
}, [onPointerUp]);
|
|
2152
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
2153
|
+
className: classNames([styles$7.container])
|
|
2154
|
+
}, /*#__PURE__*/React.createElement(SortableTreeItemActions$1, Object.assign({
|
|
2155
|
+
ref: setDraggableNodeRef,
|
|
2156
|
+
wrapperRef: setDroppableNodeRef,
|
|
2157
|
+
style: actionsStyle,
|
|
2158
|
+
depth: depth,
|
|
2159
|
+
ghost: isDragging,
|
|
2160
|
+
disableSelection: iOS,
|
|
2161
|
+
disableInteraction: isSorting,
|
|
2162
|
+
handleProps: _objectSpread(_objectSpread(_objectSpread({}, attributes), listeners), {}, {
|
|
2163
|
+
onPointerDown: onClickAction,
|
|
2164
|
+
onPointerUp: cancellingPointerUp
|
|
2165
|
+
}),
|
|
2166
|
+
collapsed: collapsed,
|
|
2167
|
+
onCollapse: onCollapse
|
|
2168
|
+
}, props), Component !== null ? /*#__PURE__*/React.createElement("div", {
|
|
2169
|
+
className: styles$7.parent
|
|
2170
|
+
}, /*#__PURE__*/React.createElement(Component, value)) : null, childValue !== null ? /*#__PURE__*/React.createElement("div", {
|
|
2171
|
+
className: styles$7.child
|
|
2172
|
+
}, /*#__PURE__*/React.createElement(Component, childValue)) : null));
|
|
2173
|
+
};
|
|
2174
|
+
SortableTreeItem.propTypes = propTypes$9;
|
|
2175
|
+
SortableTreeItem.defaultProps = defaultProps$9;
|
|
2176
|
+
var SortableTreeItem$1 = SortableTreeItem;
|
|
2177
|
+
|
|
2178
|
+
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"};
|
|
2179
|
+
|
|
2180
|
+
var initialItems = [{
|
|
2181
|
+
id: 'Home',
|
|
2182
|
+
children: []
|
|
2183
|
+
}, {
|
|
2184
|
+
id: 'Collections',
|
|
2185
|
+
children: [{
|
|
2186
|
+
id: 'Spring',
|
|
2187
|
+
children: []
|
|
2188
|
+
}, {
|
|
2189
|
+
id: 'Summer',
|
|
2190
|
+
children: []
|
|
2191
|
+
}, {
|
|
2192
|
+
id: 'Fall',
|
|
2193
|
+
children: []
|
|
2194
|
+
}, {
|
|
2195
|
+
id: 'Winter',
|
|
2196
|
+
children: []
|
|
2197
|
+
}]
|
|
2198
|
+
}];
|
|
2199
|
+
var measuring = {
|
|
2200
|
+
droppable: {
|
|
2201
|
+
strategy: MeasuringStrategy.Always
|
|
2202
|
+
}
|
|
2203
|
+
};
|
|
2204
|
+
var dropAnimation = _objectSpread(_objectSpread({}, defaultDropAnimation), {}, {
|
|
2205
|
+
dragSourceOpacity: 0.5
|
|
2206
|
+
});
|
|
2207
|
+
var adjustTranslate = function adjustTranslate(_ref) {
|
|
2208
|
+
var transform = _ref.transform;
|
|
2209
|
+
return _objectSpread(_objectSpread({}, transform), {}, {
|
|
2210
|
+
y: transform.y - 25
|
|
2211
|
+
});
|
|
2212
|
+
};
|
|
2213
|
+
var propTypes$8 = {
|
|
2214
|
+
collapsible: PropTypes.bool,
|
|
2215
|
+
// eslint-disable-next-line react/forbid-prop-types
|
|
2216
|
+
items: PropTypes.array,
|
|
2217
|
+
indentationWidth: PropTypes.number,
|
|
2218
|
+
indicator: PropTypes.bool,
|
|
2219
|
+
removable: PropTypes.bool,
|
|
2220
|
+
component: PropTypes.func,
|
|
2221
|
+
onClickItem: PropTypes.func,
|
|
2222
|
+
onChange: PropTypes.func
|
|
2223
|
+
};
|
|
2224
|
+
var defaultProps$8 = {
|
|
2225
|
+
collapsible: true,
|
|
2226
|
+
items: initialItems,
|
|
2227
|
+
indentationWidth: 30,
|
|
2228
|
+
indicator: false,
|
|
2229
|
+
removable: false,
|
|
2230
|
+
component: null,
|
|
2231
|
+
onClickItem: null,
|
|
2232
|
+
onChange: null
|
|
2233
|
+
};
|
|
2234
|
+
var SortableTree = function SortableTree(_ref2) {
|
|
2235
|
+
var collapsible = _ref2.collapsible,
|
|
2236
|
+
defaultItems = _ref2.items,
|
|
2237
|
+
indicator = _ref2.indicator,
|
|
2238
|
+
indentationWidth = _ref2.indentationWidth,
|
|
2239
|
+
removable = _ref2.removable,
|
|
2240
|
+
component = _ref2.component,
|
|
2241
|
+
onClickItem = _ref2.onClickItem,
|
|
2242
|
+
onChange = _ref2.onChange;
|
|
2243
|
+
var _useState = useState(function () {
|
|
2244
|
+
return buildTree(defaultItems);
|
|
2245
|
+
}),
|
|
2246
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
2247
|
+
items = _useState2[0],
|
|
2248
|
+
setItems = _useState2[1];
|
|
2249
|
+
var _useState3 = useState(null),
|
|
2250
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
2251
|
+
activeId = _useState4[0],
|
|
2252
|
+
setActiveId = _useState4[1];
|
|
2253
|
+
var _useState5 = useState(null),
|
|
2254
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
2255
|
+
overId = _useState6[0],
|
|
2256
|
+
setOverId = _useState6[1];
|
|
2257
|
+
var _useState7 = useState(0),
|
|
2258
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
2259
|
+
offsetLeft = _useState8[0],
|
|
2260
|
+
setOffsetLeft = _useState8[1];
|
|
2261
|
+
var _useState9 = useState(null),
|
|
2262
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
2263
|
+
currentPosition = _useState10[0],
|
|
2264
|
+
setCurrentPosition = _useState10[1];
|
|
2265
|
+
|
|
2266
|
+
// Tree setup from list
|
|
2267
|
+
useEffect(function () {
|
|
2268
|
+
var flat = flattenTree(items);
|
|
2269
|
+
var merged = defaultItems.map(function (t1) {
|
|
2270
|
+
return _objectSpread(_objectSpread({}, flat.find(function (t2) {
|
|
2271
|
+
return t2.id === t1.id;
|
|
2272
|
+
})), t1);
|
|
2273
|
+
});
|
|
2274
|
+
setItems(buildTree(merged));
|
|
2275
|
+
}, [defaultItems.length]);
|
|
2276
|
+
var flattenedItems = useMemo(function () {
|
|
2277
|
+
var flattenedTree = flattenTree(items);
|
|
2278
|
+
var collapsedItems = flattenedTree.reduce(function (acc, _ref3) {
|
|
2279
|
+
var _ref3$children = _ref3.children,
|
|
2280
|
+
children = _ref3$children === void 0 ? [] : _ref3$children,
|
|
2281
|
+
collapsed = _ref3.collapsed,
|
|
2282
|
+
id = _ref3.id;
|
|
2283
|
+
return collapsed && children.length ? [].concat(_toConsumableArray(acc), [id]) : acc;
|
|
2284
|
+
}, []) || null;
|
|
2285
|
+
return removeChildrenOf(flattenedTree, activeId ? [activeId].concat(_toConsumableArray(collapsedItems)) : collapsedItems);
|
|
2286
|
+
}, [activeId, items, items.length]);
|
|
2287
|
+
var projected = activeId && overId ? getProjection(flattenedItems, activeId, overId, offsetLeft, indentationWidth) : null;
|
|
2288
|
+
var sensorContext = useRef({
|
|
2289
|
+
items: flattenedItems,
|
|
2290
|
+
offset: offsetLeft
|
|
2291
|
+
});
|
|
2292
|
+
var _useState11 = useState(function () {
|
|
2293
|
+
return sortableTreeKeyboardCoordinates(sensorContext, indentationWidth);
|
|
2294
|
+
}),
|
|
2295
|
+
_useState12 = _slicedToArray(_useState11, 1),
|
|
2296
|
+
coordinateGetter = _useState12[0];
|
|
2297
|
+
var sensors = useSensors(useSensor(PointerSensor), useSensor(KeyboardSensor, {
|
|
2298
|
+
coordinateGetter: coordinateGetter
|
|
2299
|
+
}));
|
|
2300
|
+
var sortedIds = useMemo(function () {
|
|
2301
|
+
return flattenedItems.map(function (_ref4) {
|
|
2302
|
+
var id = _ref4.id;
|
|
2303
|
+
return id;
|
|
2304
|
+
});
|
|
2305
|
+
}, [flattenedItems]);
|
|
2306
|
+
var activeItem = activeId ? flattenedItems.find(function (_ref5) {
|
|
2307
|
+
var id = _ref5.id;
|
|
2308
|
+
return id === activeId;
|
|
2309
|
+
}) : null;
|
|
2310
|
+
useEffect(function () {
|
|
2311
|
+
sensorContext.current = {
|
|
2312
|
+
items: flattenedItems,
|
|
2313
|
+
offset: offsetLeft
|
|
2314
|
+
};
|
|
2315
|
+
}, [flattenedItems, offsetLeft]);
|
|
2316
|
+
function getMovementAnnouncement(eventName, currentActiveId, currentOverId) {
|
|
2317
|
+
if (currentOverId && projected) {
|
|
2318
|
+
if (eventName !== 'onDragEnd') {
|
|
2319
|
+
if (currentPosition && projected.parentId === currentPosition.parentId && currentOverId === currentPosition.overId) {
|
|
2320
|
+
return;
|
|
2321
|
+
}
|
|
2322
|
+
setCurrentPosition({
|
|
2323
|
+
parentId: projected.parentId,
|
|
2324
|
+
overId: currentOverId
|
|
2325
|
+
});
|
|
2326
|
+
}
|
|
2327
|
+
var clonedItems = JSON.parse(JSON.stringify(flattenTree(items)));
|
|
2328
|
+
var overIndex = clonedItems.findIndex(function (_ref6) {
|
|
2329
|
+
var id = _ref6.id;
|
|
2330
|
+
return id === currentOverId;
|
|
2331
|
+
});
|
|
2332
|
+
var activeIndex = clonedItems.findIndex(function (_ref7) {
|
|
2333
|
+
var id = _ref7.id;
|
|
2334
|
+
return id === currentActiveId;
|
|
2335
|
+
});
|
|
2336
|
+
var sortedItems = arrayMove(clonedItems, activeIndex, overIndex);
|
|
2337
|
+
var previousItem = sortedItems[overIndex - 1];
|
|
2338
|
+
var newAnnouncement;
|
|
2339
|
+
var movedVerb = eventName === 'onDragEnd' ? 'dropped' : 'moved';
|
|
2340
|
+
var nestedVerb = eventName === 'onDragEnd' ? 'dropped' : 'nested';
|
|
2341
|
+
if (!previousItem) {
|
|
2342
|
+
var nextItem = typeof sortedItems[overIndex + 1] !== 'undefined' ? sortedItems[overIndex + 1] : null;
|
|
2343
|
+
if (nextItem !== null) {
|
|
2344
|
+
newAnnouncement = "".concat(currentActiveId, " was ").concat(movedVerb, " before ").concat(nextItem.id, ".");
|
|
2345
|
+
}
|
|
2346
|
+
} else if (projected.depth > previousItem.depth) {
|
|
2347
|
+
newAnnouncement = "".concat(currentActiveId, " was ").concat(nestedVerb, " under ").concat(previousItem.id, ".");
|
|
2348
|
+
} else {
|
|
2349
|
+
var previousSibling = previousItem;
|
|
2350
|
+
var _loop = function _loop() {
|
|
2351
|
+
var _previousSibling = previousSibling,
|
|
2352
|
+
parentId = _previousSibling.parentId;
|
|
2353
|
+
previousSibling = sortedItems.find(function (_ref8) {
|
|
2354
|
+
var id = _ref8.id;
|
|
2355
|
+
return id === parentId;
|
|
2356
|
+
});
|
|
2357
|
+
};
|
|
2358
|
+
while (previousSibling && projected.depth < previousSibling.depth) {
|
|
2359
|
+
_loop();
|
|
2360
|
+
}
|
|
2361
|
+
if (previousSibling) {
|
|
2362
|
+
newAnnouncement = "".concat(currentActiveId, " was ").concat(movedVerb, " after ").concat(previousSibling.id, ".");
|
|
2363
|
+
}
|
|
2364
|
+
}
|
|
2365
|
+
|
|
2366
|
+
// eslint-disable-next-line consistent-return
|
|
2367
|
+
return newAnnouncement;
|
|
2368
|
+
}
|
|
2369
|
+
}
|
|
2370
|
+
var announcements = useMemo(function () {
|
|
2371
|
+
return {
|
|
2372
|
+
onDragStart: function onDragStart(id) {
|
|
2373
|
+
return "Picked up ".concat(id, ".");
|
|
2374
|
+
},
|
|
2375
|
+
onDragMove: function onDragMove(id, currentOverId) {
|
|
2376
|
+
return getMovementAnnouncement('onDragMove', id, currentOverId);
|
|
2377
|
+
},
|
|
2378
|
+
onDragOver: function onDragOver(id, currentOverId) {
|
|
2379
|
+
return getMovementAnnouncement('onDragOver', id, currentOverId);
|
|
2380
|
+
},
|
|
2381
|
+
onDragEnd: function onDragEnd(id, currentOverId) {
|
|
2382
|
+
return getMovementAnnouncement('onDragEnd', id, currentOverId);
|
|
2383
|
+
},
|
|
2384
|
+
onDragCancel: function onDragCancel(id) {
|
|
2385
|
+
return "Moving was cancelled. ".concat(id, " was dropped in its original position.");
|
|
2386
|
+
}
|
|
2387
|
+
};
|
|
2388
|
+
}, [getMovementAnnouncement]);
|
|
2389
|
+
var activeValue = defaultItems.find(function (_ref9) {
|
|
2390
|
+
var _ref9$id = _ref9.id,
|
|
2391
|
+
defaultId = _ref9$id === void 0 ? null : _ref9$id;
|
|
2392
|
+
return defaultId === activeId;
|
|
2393
|
+
});
|
|
2394
|
+
var handleDragStart = useCallback(function (_ref10) {
|
|
2395
|
+
var newActiveId = _ref10.active.id;
|
|
2396
|
+
setActiveId(newActiveId);
|
|
2397
|
+
setOverId(newActiveId);
|
|
2398
|
+
var newActiveItem = flattenedItems.find(function (_ref11) {
|
|
2399
|
+
var id = _ref11.id;
|
|
2400
|
+
return id === newActiveId;
|
|
2401
|
+
});
|
|
2402
|
+
if (newActiveItem) {
|
|
2403
|
+
setCurrentPosition({
|
|
2404
|
+
parentId: newActiveItem.parentId,
|
|
2405
|
+
overId: activeId
|
|
2406
|
+
});
|
|
2407
|
+
}
|
|
2408
|
+
document.body.style.setProperty('cursor', 'grabbing');
|
|
2409
|
+
}, [flattenedItems, setActiveId, setOverId, setCurrentPosition]);
|
|
2410
|
+
var handleDragMove = useCallback(function (_ref12) {
|
|
2411
|
+
var delta = _ref12.delta;
|
|
2412
|
+
setOffsetLeft(delta.x);
|
|
2413
|
+
}, [setOffsetLeft]);
|
|
2414
|
+
var handleDragOver = useCallback(function (_ref13) {
|
|
2415
|
+
var _over$id;
|
|
2416
|
+
var over = _ref13.over;
|
|
2417
|
+
setOverId((_over$id = over === null || over === void 0 ? void 0 : over.id) !== null && _over$id !== void 0 ? _over$id : null);
|
|
2418
|
+
}, [setOverId]);
|
|
2419
|
+
var resetState = useCallback(function () {
|
|
2420
|
+
setOverId(null);
|
|
2421
|
+
setActiveId(null);
|
|
2422
|
+
setOffsetLeft(0);
|
|
2423
|
+
setCurrentPosition(null);
|
|
2424
|
+
document.body.style.setProperty('cursor', '');
|
|
2425
|
+
}, [setOverId, setActiveId, setOffsetLeft, setCurrentPosition]);
|
|
2426
|
+
var handleDragEnd = useCallback(function (_ref14) {
|
|
2427
|
+
var active = _ref14.active,
|
|
2428
|
+
over = _ref14.over;
|
|
2429
|
+
resetState();
|
|
2430
|
+
if (projected && over) {
|
|
2431
|
+
var depth = projected.depth,
|
|
2432
|
+
parentId = projected.parentId;
|
|
2433
|
+
var clonedItems = JSON.parse(JSON.stringify(flattenTree(items)));
|
|
2434
|
+
var overIndex = clonedItems.findIndex(function (_ref15) {
|
|
2435
|
+
var id = _ref15.id;
|
|
2436
|
+
return id === over.id;
|
|
2437
|
+
});
|
|
2438
|
+
var activeIndex = clonedItems.findIndex(function (_ref16) {
|
|
2439
|
+
var id = _ref16.id;
|
|
2440
|
+
return id === active.id;
|
|
2441
|
+
});
|
|
2442
|
+
var activeTreeItem = clonedItems[activeIndex];
|
|
2443
|
+
var maxDepth = getMaxDepth(activeTreeItem);
|
|
2444
|
+
// Un-merge and flatten
|
|
2445
|
+
if (depth > 0 && depth >= maxDepth && (activeTreeItem === null || activeTreeItem === void 0 ? void 0 : activeTreeItem.children) !== null && activeTreeItem.children.length > 0) {
|
|
2446
|
+
var _loop2 = function _loop2() {
|
|
2447
|
+
var childId = activeTreeItem.children[i].id;
|
|
2448
|
+
var childIndex = clonedItems.findIndex(function (_ref17) {
|
|
2449
|
+
var id = _ref17.id;
|
|
2450
|
+
return id === childId;
|
|
2451
|
+
});
|
|
2452
|
+
clonedItems[childIndex].parentId = parentId;
|
|
2453
|
+
clonedItems[childIndex].depth = depth;
|
|
2454
|
+
};
|
|
2455
|
+
for (var i = 0; i < activeTreeItem.children.length; i += 1) {
|
|
2456
|
+
_loop2();
|
|
2457
|
+
}
|
|
2458
|
+
activeTreeItem.children = [];
|
|
2459
|
+
}
|
|
2460
|
+
clonedItems[activeIndex] = _objectSpread(_objectSpread({}, activeTreeItem), {}, {
|
|
2461
|
+
depth: depth,
|
|
2462
|
+
parentId: parentId
|
|
2463
|
+
});
|
|
2464
|
+
var sortedItems = arrayMove(clonedItems, activeIndex, overIndex);
|
|
2465
|
+
var newItems = buildTree(sortedItems);
|
|
2466
|
+
setItems(newItems);
|
|
2467
|
+
if (onChange !== null) {
|
|
2468
|
+
// console.log('hell is flat', sortedItems);
|
|
2469
|
+
// console.log('hell is tree', newItems);
|
|
2470
|
+
onChange((sortedItems || []).map(function (_ref18) {
|
|
2471
|
+
var itemId = _ref18.id,
|
|
2472
|
+
_ref18$children = _ref18.children,
|
|
2473
|
+
children = _ref18$children === void 0 ? [] : _ref18$children,
|
|
2474
|
+
_ref18$parentId = _ref18.parentId,
|
|
2475
|
+
itParentId = _ref18$parentId === void 0 ? null : _ref18$parentId,
|
|
2476
|
+
_ref18$collapsed = _ref18.collapsed,
|
|
2477
|
+
collapsed = _ref18$collapsed === void 0 ? false : _ref18$collapsed;
|
|
2478
|
+
return {
|
|
2479
|
+
id: itemId,
|
|
2480
|
+
props: _objectSpread(_objectSpread({}, (children || []).length > 0 ? {
|
|
2481
|
+
group: {
|
|
2482
|
+
collapsed: collapsed,
|
|
2483
|
+
mergeNavItems: true
|
|
2484
|
+
}
|
|
2485
|
+
} : {
|
|
2486
|
+
group: null
|
|
2487
|
+
}), itParentId !== null ? {
|
|
2488
|
+
parentId: itParentId
|
|
2489
|
+
} : {
|
|
2490
|
+
parentId: null
|
|
2491
|
+
})
|
|
2492
|
+
};
|
|
2493
|
+
}));
|
|
2494
|
+
}
|
|
2495
|
+
}
|
|
2496
|
+
}, [projected, items, resetState, arrayMove, buildTree, setItems]);
|
|
2497
|
+
var handleDragCancel = useCallback(function () {
|
|
2498
|
+
resetState();
|
|
2499
|
+
}, [resetState]);
|
|
2500
|
+
var handleRemove = useCallback(function (id) {
|
|
2501
|
+
setItems(function (newItems) {
|
|
2502
|
+
return removeItem(newItems, id);
|
|
2503
|
+
});
|
|
2504
|
+
}, [setItems, removeItem]);
|
|
2505
|
+
var handleCollapse = useCallback(function (id) {
|
|
2506
|
+
setItems(function (newItems) {
|
|
2507
|
+
return setProperty(newItems, id, 'collapsed', function (value) {
|
|
2508
|
+
return !value;
|
|
2509
|
+
});
|
|
2510
|
+
});
|
|
2511
|
+
}, [setItems, setProperty]);
|
|
2512
|
+
return /*#__PURE__*/React.createElement(DndContext, {
|
|
2513
|
+
accessibility: {
|
|
2514
|
+
announcements: announcements
|
|
2515
|
+
}
|
|
2516
|
+
// announcements={announcements}
|
|
2517
|
+
,
|
|
2518
|
+
sensors: sensors,
|
|
2519
|
+
collisionDetection: closestCenter,
|
|
2520
|
+
measuring: measuring,
|
|
2521
|
+
onDragStart: handleDragStart,
|
|
2522
|
+
onDragMove: handleDragMove,
|
|
2523
|
+
onDragOver: handleDragOver,
|
|
2524
|
+
onDragEnd: handleDragEnd,
|
|
2525
|
+
onDragCancel: handleDragCancel
|
|
2526
|
+
}, /*#__PURE__*/React.createElement(SortableContext, {
|
|
2527
|
+
items: sortedIds,
|
|
2528
|
+
strategy: verticalListSortingStrategy
|
|
2529
|
+
}, flattenedItems.map(function (_ref19, idx) {
|
|
2530
|
+
var _flattenedItems;
|
|
2531
|
+
var id = _ref19.id,
|
|
2532
|
+
_ref19$children = _ref19.children,
|
|
2533
|
+
children = _ref19$children === void 0 ? [] : _ref19$children,
|
|
2534
|
+
collapsed = _ref19.collapsed,
|
|
2535
|
+
depth = _ref19.depth;
|
|
2536
|
+
var screenValue = defaultItems.find(function (_ref20) {
|
|
2537
|
+
var _ref20$id = _ref20.id,
|
|
2538
|
+
defaultId = _ref20$id === void 0 ? null : _ref20$id;
|
|
2539
|
+
return defaultId === id;
|
|
2540
|
+
});
|
|
2541
|
+
var next = ((_flattenedItems = flattenedItems[idx + 1]) === null || _flattenedItems === void 0 ? void 0 : _flattenedItems.parentId) || null;
|
|
2542
|
+
var isCollapsed = collapsed && children.length > 0;
|
|
2543
|
+
var onCollapse = collapsible && children.length ? function () {
|
|
2544
|
+
return handleCollapse(id);
|
|
2545
|
+
} : null;
|
|
2546
|
+
var currentDepth = id === activeId && projected ? projected.depth : depth;
|
|
2547
|
+
var childCount = getChildCount(items, id);
|
|
2548
|
+
var childValue = childCount > 0 && collapsed ? defaultItems.slice().reverse().find(function (_ref21) {
|
|
2549
|
+
var _ref21$parentId = _ref21.parentId,
|
|
2550
|
+
parentId = _ref21$parentId === void 0 ? null : _ref21$parentId;
|
|
2551
|
+
return parentId === id;
|
|
2552
|
+
}) : null;
|
|
2553
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
2554
|
+
className: classNames([styles$6.item, _defineProperty(_defineProperty(_defineProperty({}, styles$6.parent, onCollapse !== null && !collapsed), styles$6.group, depth === 1), styles$6.isLastChild, next === null)]),
|
|
2555
|
+
key: id
|
|
2556
|
+
}, /*#__PURE__*/React.createElement(SortableTreeItem$1, {
|
|
2557
|
+
key: id,
|
|
2558
|
+
id: id,
|
|
2559
|
+
depth: currentDepth,
|
|
2560
|
+
indentationWidth: indentationWidth,
|
|
2561
|
+
indicator: indicator,
|
|
2562
|
+
collapsed: isCollapsed,
|
|
2563
|
+
onCollapse: onCollapse,
|
|
2564
|
+
onRemove: removable ? function () {
|
|
2565
|
+
return handleRemove(id);
|
|
2566
|
+
} : undefined,
|
|
2567
|
+
childCount: childCount,
|
|
2568
|
+
component: component,
|
|
2569
|
+
value: (screenValue === null || screenValue === void 0 ? void 0 : screenValue.value) || null,
|
|
2570
|
+
onClickItem: onClickItem,
|
|
2571
|
+
index: idx,
|
|
2572
|
+
childValue: (childValue === null || childValue === void 0 ? void 0 : childValue.value) || null
|
|
2573
|
+
}));
|
|
2574
|
+
}), /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement(DragOverlay, {
|
|
2575
|
+
dropAnimation: dropAnimation,
|
|
2576
|
+
modifiers: indicator ? [adjustTranslate] : undefined
|
|
2577
|
+
}, activeId && activeItem ? /*#__PURE__*/React.createElement("div", {
|
|
2578
|
+
className: styles$6.item,
|
|
2579
|
+
key: activeId
|
|
2580
|
+
}, /*#__PURE__*/React.createElement(SortableTreeItem$1, {
|
|
2581
|
+
id: activeId,
|
|
2582
|
+
depth: activeItem.depth,
|
|
2583
|
+
clone: true,
|
|
2584
|
+
childCount: getChildCount(items, activeId) + 1,
|
|
2585
|
+
indentationWidth: indentationWidth,
|
|
2586
|
+
component: component,
|
|
2587
|
+
value: activeValue === null || activeValue === void 0 ? void 0 : activeValue.value,
|
|
2588
|
+
onClickItem: onClickItem,
|
|
2589
|
+
index: flattenedItems.findIndex(function (_ref23) {
|
|
2590
|
+
var id = _ref23.id;
|
|
2591
|
+
return activeId === id;
|
|
2592
|
+
})
|
|
2593
|
+
})) : null), document.body)));
|
|
2594
|
+
};
|
|
2595
|
+
SortableTree.propTypes = propTypes$8;
|
|
2596
|
+
SortableTree.defaultProps = defaultProps$8;
|
|
2597
|
+
var SortableTree$1 = SortableTree;
|
|
2598
|
+
|
|
2599
|
+
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"};
|
|
2600
|
+
|
|
2601
|
+
var _excluded$2 = ["className", "screen", "type", "title", "onClick", "active", "href"],
|
|
2602
|
+
_excluded2 = ["id", "screen", "href"];
|
|
2603
|
+
var propTypes$7 = {
|
|
2604
|
+
items: PropTypes$1.menuItems,
|
|
2605
|
+
withPreview: PropTypes.bool,
|
|
2606
|
+
withPlaceholder: PropTypes.bool,
|
|
2607
|
+
withName: PropTypes.bool,
|
|
2608
|
+
settings: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),
|
|
2609
|
+
sortable: PropTypes.bool,
|
|
2610
|
+
isTree: PropTypes.bool,
|
|
2611
|
+
isVertical: PropTypes.bool,
|
|
2612
|
+
noWrap: PropTypes.bool,
|
|
2613
|
+
className: PropTypes.string,
|
|
2614
|
+
itemClassName: PropTypes.string,
|
|
2615
|
+
buttonClassName: PropTypes.string,
|
|
2616
|
+
settingsClassName: PropTypes.string,
|
|
2617
|
+
onClickItem: PropTypes.func,
|
|
2618
|
+
onOrderChange: PropTypes.func
|
|
2619
|
+
};
|
|
2620
|
+
var defaultProps$7 = {
|
|
2621
|
+
items: [],
|
|
2622
|
+
withPreview: false,
|
|
2623
|
+
withPlaceholder: false,
|
|
2624
|
+
withName: false,
|
|
2625
|
+
settings: null,
|
|
2626
|
+
sortable: false,
|
|
2627
|
+
isTree: false,
|
|
2628
|
+
isVertical: false,
|
|
2629
|
+
noWrap: false,
|
|
2630
|
+
className: null,
|
|
2631
|
+
itemClassName: null,
|
|
2632
|
+
buttonClassName: null,
|
|
2633
|
+
settingsClassName: null,
|
|
2634
|
+
onClickItem: null,
|
|
2635
|
+
onOrderChange: null
|
|
2636
|
+
};
|
|
2637
|
+
var ScreensMenu = function ScreensMenu(_ref) {
|
|
2638
|
+
var items = _ref.items,
|
|
2639
|
+
withPreview = _ref.withPreview,
|
|
2640
|
+
withPlaceholder = _ref.withPlaceholder,
|
|
2641
|
+
withName = _ref.withName,
|
|
2642
|
+
settings = _ref.settings,
|
|
2643
|
+
isVertical = _ref.isVertical,
|
|
2644
|
+
noWrap = _ref.noWrap,
|
|
2645
|
+
className = _ref.className,
|
|
2646
|
+
itemClassName = _ref.itemClassName,
|
|
2647
|
+
buttonClassName = _ref.buttonClassName,
|
|
2648
|
+
settingsClassName = _ref.settingsClassName,
|
|
2649
|
+
sortable = _ref.sortable,
|
|
2650
|
+
isTree = _ref.isTree,
|
|
2651
|
+
onClickItem = _ref.onClickItem,
|
|
2652
|
+
onOrderChange = _ref.onOrderChange;
|
|
2653
|
+
var itemsElements = !isTree ? items.map(function (_ref2, index) {
|
|
2654
|
+
var _ref2$className = _ref2.className,
|
|
2655
|
+
itemCustomClassName = _ref2$className === void 0 ? null : _ref2$className,
|
|
2656
|
+
screen = _ref2.screen,
|
|
2657
|
+
type = _ref2.type,
|
|
2658
|
+
title = _ref2.title,
|
|
2659
|
+
_ref2$onClick = _ref2.onClick,
|
|
2660
|
+
onClick = _ref2$onClick === void 0 ? null : _ref2$onClick,
|
|
2661
|
+
active = _ref2.active,
|
|
2662
|
+
href = _ref2.href,
|
|
2663
|
+
item = _objectWithoutProperties(_ref2, _excluded$2);
|
|
2664
|
+
return /*#__PURE__*/React.createElement("li", {
|
|
2665
|
+
key: item.id,
|
|
2666
|
+
className: classNames([styles$5.item, _defineProperty(_defineProperty({}, itemClassName, itemClassName !== null), itemCustomClassName, itemCustomClassName !== null)]),
|
|
2667
|
+
"data-screen-id": item.id
|
|
2668
|
+
}, /*#__PURE__*/React.createElement(ScreenWithPreview$1, {
|
|
2669
|
+
index: index,
|
|
2670
|
+
screen: withPlaceholder ? _objectSpread(_objectSpread({}, screen), {}, {
|
|
2671
|
+
type: type
|
|
2672
|
+
}) : screen,
|
|
2673
|
+
href: href,
|
|
2674
|
+
className: buttonClassName,
|
|
2675
|
+
title: title,
|
|
2676
|
+
active: active,
|
|
2677
|
+
withPreview: withPreview,
|
|
2678
|
+
withPlaceholder: withPlaceholder,
|
|
2679
|
+
withName: withName,
|
|
2680
|
+
onClick: onClick,
|
|
2681
|
+
onClickItem: onClickItem
|
|
2682
|
+
}), settings !== null ? /*#__PURE__*/React.createElement("div", {
|
|
2683
|
+
className: classNames([_defineProperty({}, settingsClassName, settingsClassName !== null), styles$5.settings, 'p-2'])
|
|
2684
|
+
}, isFunction(settings) ? settings(index) : settings) : null);
|
|
2685
|
+
}) : [];
|
|
2686
|
+
var sortableItems = useMemo(function () {
|
|
2687
|
+
return isTree ? items.map(function (_ref5) {
|
|
2688
|
+
var id = _ref5.id,
|
|
2689
|
+
_ref5$screen = _ref5.screen,
|
|
2690
|
+
screen = _ref5$screen === void 0 ? {} : _ref5$screen,
|
|
2691
|
+
href = _ref5.href,
|
|
2692
|
+
props = _objectWithoutProperties(_ref5, _excluded2);
|
|
2693
|
+
var _screen$parentId = screen.parentId,
|
|
2694
|
+
parentId = _screen$parentId === void 0 ? null : _screen$parentId,
|
|
2695
|
+
_screen$group = screen.group,
|
|
2696
|
+
group = _screen$group === void 0 ? {} : _screen$group;
|
|
2697
|
+
var _ref6 = group || {},
|
|
2698
|
+
_ref6$collapsed = _ref6.collapsed,
|
|
2699
|
+
collapsed = _ref6$collapsed === void 0 ? true : _ref6$collapsed;
|
|
2700
|
+
return {
|
|
2701
|
+
id: id,
|
|
2702
|
+
parentId: parentId,
|
|
2703
|
+
collapsed: collapsed,
|
|
2704
|
+
value: _objectSpread({
|
|
2705
|
+
id: id,
|
|
2706
|
+
screen: screen,
|
|
2707
|
+
href: href
|
|
2708
|
+
}, props)
|
|
2709
|
+
};
|
|
2710
|
+
}, []) : items.map(function (_ref7) {
|
|
2711
|
+
var id = _ref7.id;
|
|
2712
|
+
return {
|
|
2713
|
+
id: id
|
|
2714
|
+
};
|
|
2715
|
+
});
|
|
2716
|
+
}, [items, isTree, items.length]);
|
|
2717
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
2718
|
+
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)])
|
|
2719
|
+
}, isTree && !sortable ? /*#__PURE__*/React.createElement(SortableTree$1, {
|
|
2720
|
+
items: sortableItems,
|
|
2721
|
+
component: ScreenWithPreview$1,
|
|
2722
|
+
onClickItem: onClickItem,
|
|
2723
|
+
onChange: onOrderChange
|
|
2724
|
+
}) : null, !isTree && sortable && items.length > 1 ? /*#__PURE__*/React.createElement(ReactSortable, {
|
|
2725
|
+
list: sortableItems,
|
|
2726
|
+
setList: onOrderChange,
|
|
2727
|
+
animation: 200,
|
|
2728
|
+
delayOnTouchStart: true,
|
|
2729
|
+
delay: 2,
|
|
2730
|
+
tag: "ul",
|
|
2731
|
+
className: styles$5.items
|
|
2732
|
+
}, itemsElements) : null, !isTree && (!sortable || items.length < 1) ? /*#__PURE__*/React.createElement("ul", {
|
|
2733
|
+
className: styles$5.items
|
|
2734
|
+
}, itemsElements) : null);
|
|
2735
|
+
};
|
|
2736
|
+
ScreensMenu.propTypes = propTypes$7;
|
|
2737
|
+
ScreensMenu.defaultProps = defaultProps$7;
|
|
2738
|
+
var ScreensMenu$1 = ScreensMenu;
|
|
2739
|
+
|
|
2740
|
+
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"};
|
|
2741
|
+
|
|
2742
|
+
var propTypes$6 = {
|
|
2743
|
+
screens: PropTypes$1.screenDefinitions,
|
|
2744
|
+
selectedTypes: PropTypes.arrayOf(PropTypes.string),
|
|
2745
|
+
className: PropTypes.string,
|
|
2746
|
+
onClickItem: PropTypes.func
|
|
2747
|
+
};
|
|
2748
|
+
var defaultProps$6 = {
|
|
2749
|
+
screens: null,
|
|
2750
|
+
selectedTypes: null,
|
|
2751
|
+
className: null,
|
|
2752
|
+
onClickItem: null
|
|
2753
|
+
};
|
|
2754
|
+
var ScreenTypes = function ScreenTypes(_ref) {
|
|
2755
|
+
var screens = _ref.screens,
|
|
2756
|
+
selectedTypes = _ref.selectedTypes,
|
|
2757
|
+
className = _ref.className,
|
|
2758
|
+
onClickItem = _ref.onClickItem;
|
|
2759
|
+
var intl = useIntl();
|
|
2760
|
+
var screensManager = useScreensManager();
|
|
2761
|
+
var screenDefinitions = screens || screensManager.getDefinitions();
|
|
2762
|
+
var finalDefinitions = (screenDefinitions || []).filter(function (s) {
|
|
2763
|
+
return s !== null;
|
|
2764
|
+
});
|
|
2765
|
+
var groups = useMemo(function () {
|
|
2766
|
+
var groupItems = finalDefinitions.reduce(function (allGroups, definition) {
|
|
2767
|
+
var id = definition.id,
|
|
2768
|
+
title = definition.title,
|
|
2769
|
+
_definition$group = definition.group,
|
|
2770
|
+
group = _definition$group === void 0 ? {} : _definition$group;
|
|
2771
|
+
var _ref2 = group || {},
|
|
2772
|
+
_ref2$order = _ref2.order,
|
|
2773
|
+
order = _ref2$order === void 0 ? 0 : _ref2$order,
|
|
2774
|
+
_ref2$label = _ref2.label,
|
|
2775
|
+
label = _ref2$label === void 0 ? {} : _ref2$label,
|
|
2776
|
+
_ref2$hidden = _ref2.hidden,
|
|
2777
|
+
hidden = _ref2$hidden === void 0 ? false : _ref2$hidden;
|
|
2778
|
+
var _ref3 = label || {},
|
|
2779
|
+
_ref3$id = _ref3.id,
|
|
2780
|
+
messageId = _ref3$id === void 0 ? null : _ref3$id;
|
|
2781
|
+
if (hidden) {
|
|
2782
|
+
return allGroups;
|
|
2783
|
+
}
|
|
2784
|
+
var _ref4 = isMessage(label) ? {
|
|
2785
|
+
id: messageId || id,
|
|
2786
|
+
name: group
|
|
2787
|
+
} : {
|
|
2788
|
+
id: messageId || id,
|
|
2789
|
+
name: title
|
|
2790
|
+
},
|
|
2791
|
+
groupId = _ref4.id,
|
|
2792
|
+
groupName = _ref4.name;
|
|
2793
|
+
var groupIndex = allGroups.findIndex(function (it) {
|
|
2794
|
+
return it.id === groupId;
|
|
2795
|
+
});
|
|
2796
|
+
var selected = selectedTypes !== null && selectedTypes.indexOf(id) !== -1;
|
|
2797
|
+
var item = {
|
|
2798
|
+
id: id,
|
|
2799
|
+
type: id,
|
|
2800
|
+
screen: definition,
|
|
2801
|
+
title: title,
|
|
2802
|
+
className: classNames(_defineProperty({
|
|
2803
|
+
'bg-secondary': !selected,
|
|
2804
|
+
'bg-primary': selected
|
|
2805
|
+
}, styles$4.selected, selected))
|
|
2806
|
+
};
|
|
2807
|
+
return groupIndex !== -1 ? [].concat(_toConsumableArray(allGroups.slice(0, groupIndex)), [_objectSpread(_objectSpread({}, allGroups[groupIndex]), {}, {
|
|
2808
|
+
items: [].concat(_toConsumableArray(allGroups[groupIndex].items), [item])
|
|
2809
|
+
})], _toConsumableArray(allGroups.slice(groupIndex + 1))) : [].concat(_toConsumableArray(allGroups), [{
|
|
2810
|
+
id: groupId,
|
|
2811
|
+
name: isMessage(label) ? intl.formatMessage(label) : groupName,
|
|
2812
|
+
order: order,
|
|
2813
|
+
items: [item]
|
|
2814
|
+
}]);
|
|
2815
|
+
}, []);
|
|
2816
|
+
return orderBy(groupItems, ['order', 'name'], ['asc', 'asc']);
|
|
2817
|
+
}, [finalDefinitions, selectedTypes]);
|
|
2818
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
2819
|
+
className: classNames([styles$4.container, _defineProperty({}, className, className)])
|
|
2820
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
2821
|
+
className: styles$4.rows
|
|
2822
|
+
}, groups.map(function (_ref6) {
|
|
2823
|
+
var id = _ref6.id,
|
|
2824
|
+
name = _ref6.name,
|
|
2825
|
+
items = _ref6.items;
|
|
2826
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
2827
|
+
key: "group-".concat(id),
|
|
2828
|
+
className: styles$4.row
|
|
2829
|
+
}, /*#__PURE__*/React.createElement(Label, null, name), /*#__PURE__*/React.createElement("div", {
|
|
2830
|
+
className: styles$4.layouts
|
|
2831
|
+
}, /*#__PURE__*/React.createElement(ScreensMenu$1, {
|
|
2832
|
+
items: items,
|
|
2833
|
+
withPlaceholder: true,
|
|
2834
|
+
withName: true,
|
|
2835
|
+
itemClassName: classNames([styles$4.screen, 'border', 'rounded', {
|
|
2836
|
+
'border-secondary': selectedTypes === null,
|
|
2837
|
+
'border-dark': selectedTypes !== null,
|
|
2838
|
+
'bg-secondary': selectedTypes === null,
|
|
2839
|
+
'text-secondary': selectedTypes !== null
|
|
2840
|
+
}]),
|
|
2841
|
+
buttonClassName: styles$4.button,
|
|
2842
|
+
onClickItem: onClickItem
|
|
2843
|
+
})));
|
|
2844
|
+
})));
|
|
2845
|
+
};
|
|
2846
|
+
ScreenTypes.propTypes = propTypes$6;
|
|
2847
|
+
ScreenTypes.defaultProps = defaultProps$6;
|
|
2848
|
+
var ScreenTypesMenu = ScreenTypes;
|
|
2849
|
+
|
|
2850
|
+
var styles$3 = {"container":"micromag-editor-modals-screen-types-container","selected":"micromag-editor-modals-screen-types-selected"};
|
|
2851
|
+
|
|
2852
|
+
var propTypes$5 = {
|
|
2853
|
+
selectedTypes: PropTypes.arrayOf(PropTypes.string),
|
|
2854
|
+
className: PropTypes.string,
|
|
2855
|
+
onRequestClose: PropTypes.func,
|
|
2856
|
+
onClickScreenType: PropTypes.func
|
|
2857
|
+
};
|
|
2858
|
+
var defaultProps$5 = {
|
|
2859
|
+
selectedTypes: null,
|
|
2860
|
+
className: null,
|
|
2861
|
+
onRequestClose: null,
|
|
2862
|
+
onClickScreenType: null
|
|
2863
|
+
};
|
|
2864
|
+
var ScreenTypesModal = function ScreenTypesModal(_ref) {
|
|
2865
|
+
var selectedTypes = _ref.selectedTypes,
|
|
2866
|
+
className = _ref.className,
|
|
2867
|
+
onRequestClose = _ref.onRequestClose,
|
|
2868
|
+
onClickScreenType = _ref.onClickScreenType;
|
|
2869
|
+
return /*#__PURE__*/React.createElement(Modal, null, /*#__PURE__*/React.createElement(ModalDialog, {
|
|
2870
|
+
title: /*#__PURE__*/React.createElement(FormattedMessage, {
|
|
2871
|
+
id: "QBaiO0",
|
|
2872
|
+
defaultMessage: [{
|
|
2873
|
+
"type": 0,
|
|
2874
|
+
"value": "Add a screen"
|
|
2875
|
+
}]
|
|
2876
|
+
}),
|
|
2877
|
+
className: classNames([styles$3.container, _defineProperty({}, className, className)]),
|
|
2878
|
+
onClose: onRequestClose
|
|
2879
|
+
}, /*#__PURE__*/React.createElement(ScreenTypesMenu, {
|
|
2880
|
+
selectedTypes: selectedTypes,
|
|
2881
|
+
className: styles$3.menu,
|
|
2882
|
+
onClickItem: onClickScreenType
|
|
2883
|
+
})));
|
|
2884
|
+
};
|
|
2885
|
+
ScreenTypesModal.propTypes = propTypes$5;
|
|
2886
|
+
ScreenTypesModal.defaultProps = defaultProps$5;
|
|
2887
|
+
var ScreenTypesModal$1 = ScreenTypesModal;
|
|
2888
|
+
|
|
2889
|
+
var styles$2 = {"container":"micromag-editor-screens-container","navbar":"micromag-editor-screens-navbar"};
|
|
2890
|
+
|
|
2891
|
+
var _excluded$1 = ["id"];
|
|
2892
|
+
var propTypes$4 = {
|
|
2893
|
+
value: PropTypes.oneOfType([PropTypes$1.story, PropTypes$1.theme]),
|
|
2894
|
+
isTheme: PropTypes.bool,
|
|
2895
|
+
isVertical: PropTypes.bool,
|
|
2896
|
+
isCreateOpened: PropTypes.bool,
|
|
2897
|
+
isParsed: PropTypes.bool,
|
|
2898
|
+
isTree: PropTypes.bool,
|
|
2899
|
+
onClickScreen: PropTypes.func,
|
|
2900
|
+
onChange: PropTypes.func,
|
|
2901
|
+
className: PropTypes.string
|
|
2902
|
+
};
|
|
2903
|
+
var defaultProps$4 = {
|
|
2904
|
+
value: null,
|
|
2905
|
+
isTheme: false,
|
|
2906
|
+
isVertical: false,
|
|
2907
|
+
isCreateOpened: false,
|
|
2908
|
+
isParsed: false,
|
|
2909
|
+
isTree: false,
|
|
2910
|
+
onClickScreen: null,
|
|
2911
|
+
onChange: null,
|
|
2912
|
+
className: null
|
|
2913
|
+
};
|
|
2914
|
+
var EditorScreens = function EditorScreens(_ref) {
|
|
2915
|
+
var unparsedValue = _ref.value,
|
|
2916
|
+
isTheme = _ref.isTheme,
|
|
2917
|
+
isVertical = _ref.isVertical,
|
|
2918
|
+
isCreateOpened = _ref.isCreateOpened,
|
|
2919
|
+
isParsed = _ref.isParsed,
|
|
2920
|
+
isTree = _ref.isTree,
|
|
2921
|
+
onClickScreen = _ref.onClickScreen,
|
|
2922
|
+
onChange = _ref.onChange,
|
|
2923
|
+
className = _ref.className;
|
|
2924
|
+
var valueWithTheme = useThemeValue(unparsedValue, isTheme);
|
|
2925
|
+
var value = isParsed ? unparsedValue : useParsedStory(valueWithTheme, {
|
|
2926
|
+
withMedias: false
|
|
2927
|
+
});
|
|
2928
|
+
var _ref2 = value || {},
|
|
2929
|
+
_ref2$components = _ref2.components,
|
|
2930
|
+
screens = _ref2$components === void 0 ? [] : _ref2$components;
|
|
2931
|
+
var _useState = useState(isCreateOpened),
|
|
2932
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
2933
|
+
createModalOpened = _useState2[0],
|
|
2934
|
+
setCreateModalOpened = _useState2[1];
|
|
2935
|
+
var routes = useRoutes();
|
|
2936
|
+
var push = useRoutePush();
|
|
2937
|
+
var url = useUrlGenerator();
|
|
2938
|
+
var _useRouteParams = useRouteParams({
|
|
2939
|
+
screenOnly: true
|
|
2940
|
+
}),
|
|
2941
|
+
_useRouteParams$scree = _useRouteParams.screen,
|
|
2942
|
+
currentScreenId = _useRouteParams$scree === void 0 ? null : _useRouteParams$scree;
|
|
2943
|
+
var createScreenFromDefinition = useCallback(function (definition) {
|
|
2944
|
+
var _ref3 = value || {},
|
|
2945
|
+
_ref3$components = _ref3.components,
|
|
2946
|
+
currentScreens = _ref3$components === void 0 ? [] : _ref3$components,
|
|
2947
|
+
_ref3$theme = _ref3.theme,
|
|
2948
|
+
theme = _ref3$theme === void 0 ? {} : _ref3$theme;
|
|
2949
|
+
var _ref4 = isString(definition) ? {
|
|
2950
|
+
id: definition
|
|
2951
|
+
} : definition,
|
|
2952
|
+
newScreenType = _ref4.id;
|
|
2953
|
+
var _ref5 = theme || {},
|
|
2954
|
+
_ref5$components = _ref5.components,
|
|
2955
|
+
themeComponents = _ref5$components === void 0 ? null : _ref5$components;
|
|
2956
|
+
var themeScreen = themeComponents !== null ? themeComponents.find(function (it) {
|
|
2957
|
+
return it.type === newScreenType;
|
|
2958
|
+
}) || null : null;
|
|
2959
|
+
var newScreen = createScreen$1(definition, themeScreen);
|
|
2960
|
+
var foundIndex = screens.findIndex(function (_ref6) {
|
|
2961
|
+
var id = _ref6.id;
|
|
2962
|
+
return id === currentScreenId;
|
|
2963
|
+
});
|
|
2964
|
+
var currentScreenIndex = !isTheme && foundIndex >= 0 ? foundIndex + 1 : null;
|
|
2965
|
+
var newValue = _objectSpread(_objectSpread({}, value), {}, {
|
|
2966
|
+
components: [].concat(_toConsumableArray(currentScreens.slice(0, currentScreenIndex)), [newScreen], _toConsumableArray(currentScreens.slice(currentScreenIndex)))
|
|
2967
|
+
});
|
|
2968
|
+
if (onChange !== null) {
|
|
2969
|
+
onChange(newValue);
|
|
2970
|
+
}
|
|
2971
|
+
return newScreen;
|
|
2972
|
+
}, [value, onChange, isTheme, screens, currentScreenId, setCreateModalOpened]);
|
|
2973
|
+
var onOrderChange = useCallback(function (listItems) {
|
|
2974
|
+
var ids = listItems.map(function (_ref7) {
|
|
2975
|
+
var id = _ref7.id;
|
|
2976
|
+
return id;
|
|
2977
|
+
});
|
|
2978
|
+
var screenProps = listItems.map(function (_ref8) {
|
|
2979
|
+
var id = _ref8.id,
|
|
2980
|
+
_ref8$props = _ref8.props,
|
|
2981
|
+
props = _ref8$props === void 0 ? null : _ref8$props;
|
|
2982
|
+
return {
|
|
2983
|
+
id: id,
|
|
2984
|
+
props: props
|
|
2985
|
+
};
|
|
2986
|
+
});
|
|
2987
|
+
var hasScreenProps = (screenProps.filter(function (_ref9) {
|
|
2988
|
+
var props = _ref9.props;
|
|
2989
|
+
return props !== null;
|
|
2990
|
+
}) || []).length > 0;
|
|
2991
|
+
var _ref10 = value || {},
|
|
2992
|
+
_ref10$components = _ref10.components,
|
|
2993
|
+
currentScreens = _ref10$components === void 0 ? [] : _ref10$components;
|
|
2994
|
+
var currentIds = currentScreens.map(function (_ref11) {
|
|
2995
|
+
var id = _ref11.id;
|
|
2996
|
+
return id;
|
|
2997
|
+
});
|
|
2998
|
+
var sameOrder = listItems.reduce(function (same, _ref12, index) {
|
|
2999
|
+
var id = _ref12.id;
|
|
3000
|
+
return same && id === currentIds[index];
|
|
3001
|
+
}, true);
|
|
3002
|
+
if (!sameOrder || hasScreenProps) {
|
|
3003
|
+
var newValue = _objectSpread(_objectSpread({}, value), {}, {
|
|
3004
|
+
components: _toConsumableArray(currentScreens).sort(function (_ref13, _ref14) {
|
|
3005
|
+
var idA = _ref13.id;
|
|
3006
|
+
var idB = _ref14.id;
|
|
3007
|
+
var indexA = ids.indexOf(idA);
|
|
3008
|
+
var indexB = ids.indexOf(idB);
|
|
3009
|
+
if (indexA === indexB) {
|
|
3010
|
+
return 0;
|
|
3011
|
+
}
|
|
3012
|
+
return indexA > indexB ? 1 : -1;
|
|
3013
|
+
}).map(function (_ref15) {
|
|
3014
|
+
var _screenProps$find;
|
|
3015
|
+
var id = _ref15.id,
|
|
3016
|
+
props = _objectWithoutProperties(_ref15, _excluded$1);
|
|
3017
|
+
return _objectSpread(_objectSpread({
|
|
3018
|
+
id: id
|
|
3019
|
+
}, props), (_screenProps$find = screenProps.find(function (_ref16) {
|
|
3020
|
+
var propsId = _ref16.id;
|
|
3021
|
+
return propsId === id;
|
|
3022
|
+
})) === null || _screenProps$find === void 0 ? void 0 : _screenProps$find.props);
|
|
3023
|
+
})
|
|
3024
|
+
});
|
|
3025
|
+
if (onChange !== null) {
|
|
3026
|
+
// console.log('og!', listItems, newValue);
|
|
3027
|
+
onChange(newValue);
|
|
3028
|
+
}
|
|
3029
|
+
}
|
|
3030
|
+
}, [value, onChange]);
|
|
3031
|
+
var onClickScreenType = useCallback(function (definition) {
|
|
3032
|
+
setCreateModalOpened(false);
|
|
3033
|
+
var currentScreen = isTheme ? screens.find(function (_ref17) {
|
|
3034
|
+
var type = _ref17.type;
|
|
3035
|
+
return type === definition.id;
|
|
3036
|
+
}) || null : null;
|
|
3037
|
+
if (!isTheme || currentScreen === null) {
|
|
3038
|
+
currentScreen = createScreenFromDefinition(definition);
|
|
3039
|
+
}
|
|
3040
|
+
push('screen', {
|
|
3041
|
+
screen: currentScreen.id
|
|
3042
|
+
});
|
|
3043
|
+
onClickScreen(currentScreen);
|
|
3044
|
+
}, [screens, isTheme, createScreenFromDefinition, push, onClickScreen]);
|
|
3045
|
+
var onClickAdd = useCallback(function () {
|
|
3046
|
+
return setCreateModalOpened(true);
|
|
3047
|
+
}, [setCreateModalOpened]);
|
|
3048
|
+
var onCreateModalRequestClose = useCallback(function () {
|
|
3049
|
+
return setCreateModalOpened(false);
|
|
3050
|
+
}, [setCreateModalOpened]);
|
|
3051
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
3052
|
+
className: classNames(['d-flex', 'flex-column', styles$2.container, className])
|
|
3053
|
+
}, /*#__PURE__*/React.createElement(Navbar, {
|
|
3054
|
+
compact: true,
|
|
3055
|
+
noWrap: true,
|
|
3056
|
+
withoutCollapse: true,
|
|
3057
|
+
className: classNames(['sticky-top', styles$2.navbar])
|
|
3058
|
+
}, /*#__PURE__*/React.createElement("strong", {
|
|
3059
|
+
className: "mb-0 me-auto"
|
|
3060
|
+
}, /*#__PURE__*/React.createElement(FormattedMessage, {
|
|
3061
|
+
id: "jf+4Hq",
|
|
3062
|
+
defaultMessage: [{
|
|
3063
|
+
"type": 0,
|
|
3064
|
+
"value": "Screens"
|
|
3065
|
+
}]
|
|
3066
|
+
})), /*#__PURE__*/React.createElement(Button, {
|
|
3067
|
+
theme: "primary",
|
|
3068
|
+
size: "sm",
|
|
3069
|
+
onClick: onClickAdd,
|
|
3070
|
+
icon: /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
3071
|
+
icon: faPlus
|
|
3072
|
+
})
|
|
3073
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
3074
|
+
className: "flex-grow-1 d-flex w-100 p-2"
|
|
3075
|
+
}, /*#__PURE__*/React.createElement(Switch, null, /*#__PURE__*/React.createElement(Route, {
|
|
3076
|
+
path: "".concat(routes.screen, "/(.*)?")
|
|
3077
|
+
}, function (_ref18) {
|
|
3078
|
+
var _ref18$screen = _ref18.screen,
|
|
3079
|
+
screenId = _ref18$screen === void 0 ? null : _ref18$screen;
|
|
3080
|
+
return screens.length > 0 ? /*#__PURE__*/React.createElement(ScreensMenu$1, {
|
|
3081
|
+
items: screens.map(function (it) {
|
|
3082
|
+
return {
|
|
3083
|
+
id: it.id,
|
|
3084
|
+
screen: it,
|
|
3085
|
+
href: url('screen', {
|
|
3086
|
+
screen: it.id
|
|
3087
|
+
}),
|
|
3088
|
+
active: it.id === screenId
|
|
3089
|
+
};
|
|
3090
|
+
}),
|
|
3091
|
+
isVertical: isVertical,
|
|
3092
|
+
withPreview: true,
|
|
3093
|
+
sortable: !isTree,
|
|
3094
|
+
className: "w-100",
|
|
3095
|
+
onClickItem: onClickScreen,
|
|
3096
|
+
onOrderChange: onOrderChange,
|
|
3097
|
+
isTree: isTree
|
|
3098
|
+
}) : /*#__PURE__*/React.createElement(Empty, {
|
|
3099
|
+
className: "flex-grow-1 p-2"
|
|
3100
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
3101
|
+
theme: "primary",
|
|
3102
|
+
onClick: onClickAdd
|
|
3103
|
+
}, /*#__PURE__*/React.createElement(FormattedMessage, {
|
|
3104
|
+
id: "JoWKee",
|
|
3105
|
+
defaultMessage: [{
|
|
3106
|
+
"type": 0,
|
|
3107
|
+
"value": "Create your first screen"
|
|
3108
|
+
}]
|
|
3109
|
+
})));
|
|
3110
|
+
}), /*#__PURE__*/React.createElement(Route, null, screens.length > 0 ? /*#__PURE__*/React.createElement(ScreensMenu$1, {
|
|
3111
|
+
items: screens.map(function (it) {
|
|
3112
|
+
return {
|
|
3113
|
+
id: it.id,
|
|
3114
|
+
screen: it,
|
|
3115
|
+
href: url('screen', {
|
|
3116
|
+
screen: it.id
|
|
3117
|
+
}),
|
|
3118
|
+
active: false
|
|
3119
|
+
};
|
|
3120
|
+
}),
|
|
3121
|
+
isVertical: isVertical,
|
|
3122
|
+
withPreview: true,
|
|
3123
|
+
sortable: !isTree,
|
|
3124
|
+
className: "w-100",
|
|
3125
|
+
onClickItem: onClickScreen,
|
|
3126
|
+
onOrderChange: onOrderChange,
|
|
3127
|
+
isTree: isTree
|
|
3128
|
+
}) : /*#__PURE__*/React.createElement(Empty, {
|
|
3129
|
+
className: "flex-grow-1 p-2"
|
|
3130
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
3131
|
+
theme: "primary",
|
|
3132
|
+
onClick: onClickAdd
|
|
3133
|
+
}, /*#__PURE__*/React.createElement(FormattedMessage, {
|
|
3134
|
+
id: "JoWKee",
|
|
3135
|
+
defaultMessage: [{
|
|
3136
|
+
"type": 0,
|
|
3137
|
+
"value": "Create your first screen"
|
|
3138
|
+
}]
|
|
3139
|
+
})))))), createModalOpened ? /*#__PURE__*/React.createElement(ScreenTypesModal$1, {
|
|
3140
|
+
selectedTypes: isTheme ? screens.map(function (_ref19) {
|
|
3141
|
+
var type = _ref19.type;
|
|
3142
|
+
return type;
|
|
3143
|
+
}) : [],
|
|
3144
|
+
onClickScreenType: onClickScreenType,
|
|
3145
|
+
onRequestClose: onCreateModalRequestClose
|
|
3146
|
+
}) : null);
|
|
3147
|
+
};
|
|
3148
|
+
EditorScreens.propTypes = propTypes$4;
|
|
3149
|
+
EditorScreens.defaultProps = defaultProps$4;
|
|
3150
|
+
var Screens = EditorScreens;
|
|
3151
|
+
|
|
3152
|
+
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","top":"micromag-editor-top"};
|
|
3153
|
+
|
|
3154
|
+
var propTypes$3 = {
|
|
3155
|
+
value: PropTypes.oneOfType([PropTypes$1.story, PropTypes$1.theme]),
|
|
3156
|
+
deviceScreens: PropTypes$1.deviceScreens,
|
|
3157
|
+
viewerTheme: PropTypes$1.viewerTheme,
|
|
3158
|
+
mobileView: PropTypes.oneOf(['screens', 'preview', 'form']),
|
|
3159
|
+
fullscreen: PropTypes.bool,
|
|
3160
|
+
isTheme: PropTypes.bool,
|
|
3161
|
+
isCreateOpened: PropTypes.bool,
|
|
3162
|
+
onChange: PropTypes.func,
|
|
3163
|
+
className: PropTypes.string
|
|
3164
|
+
};
|
|
3165
|
+
var defaultProps$3 = {
|
|
3166
|
+
value: null,
|
|
3167
|
+
deviceScreens: getDeviceScreens(),
|
|
3168
|
+
viewerTheme: null,
|
|
3169
|
+
mobileView: 'preview',
|
|
3170
|
+
fullscreen: false,
|
|
3171
|
+
isTheme: false,
|
|
3172
|
+
isCreateOpened: false,
|
|
3173
|
+
onChange: null,
|
|
3174
|
+
className: null
|
|
3175
|
+
};
|
|
3176
|
+
var Editor = function Editor(_ref) {
|
|
3177
|
+
var value = _ref.value,
|
|
3178
|
+
viewerTheme = _ref.viewerTheme,
|
|
3179
|
+
isTheme = _ref.isTheme,
|
|
3180
|
+
isCreateOpened = _ref.isCreateOpened,
|
|
3181
|
+
deviceScreens = _ref.deviceScreens,
|
|
3182
|
+
initialMobileView = _ref.mobileView,
|
|
3183
|
+
onChange = _ref.onChange,
|
|
3184
|
+
fullscreen = _ref.fullscreen,
|
|
3185
|
+
className = _ref.className;
|
|
3186
|
+
var push = useRoutePush();
|
|
3187
|
+
var refScreensContainer = useRef(null);
|
|
3188
|
+
var _useRouteParams = useRouteParams({
|
|
3189
|
+
screenOnly: true
|
|
3190
|
+
}),
|
|
3191
|
+
screenId = _useRouteParams.screen;
|
|
3192
|
+
|
|
3193
|
+
// Screen size
|
|
3194
|
+
var _useScreenSizeFromEle = useScreenSizeFromElement({
|
|
3195
|
+
screens: deviceScreens,
|
|
3196
|
+
withoutMaxSize: true,
|
|
3197
|
+
withoutScale: true
|
|
3198
|
+
}),
|
|
3199
|
+
refContainer = _useScreenSizeFromEle.ref,
|
|
3200
|
+
screenSize = _useScreenSizeFromEle.screenSize;
|
|
3201
|
+
var isMobile = screenSize !== null && screenSize.screens.indexOf('medium') === -1;
|
|
3202
|
+
|
|
3203
|
+
// Mobile view
|
|
3204
|
+
var _useState = useState(initialMobileView),
|
|
3205
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
3206
|
+
mobileView = _useState2[0],
|
|
3207
|
+
setMobileView = _useState2[1];
|
|
3208
|
+
var onClickScreens = useCallback(function () {
|
|
3209
|
+
return setMobileView('screens');
|
|
3210
|
+
}, [mobileView, setMobileView]);
|
|
3211
|
+
var onClickEdit = useCallback(function () {
|
|
3212
|
+
return setMobileView('form');
|
|
3213
|
+
}, [setMobileView]);
|
|
3214
|
+
var onClickViewScreen = useCallback(function () {
|
|
3215
|
+
return setMobileView('preview');
|
|
3216
|
+
}, [setMobileView]);
|
|
3217
|
+
|
|
3218
|
+
// console.log('mobileView', screenSize, isMobile, mobileView);
|
|
3219
|
+
|
|
3220
|
+
// Apply base theme values to it's own components
|
|
3221
|
+
var _ref2 = value || {},
|
|
3222
|
+
_ref2$background = _ref2.background,
|
|
3223
|
+
background = _ref2$background === void 0 ? null : _ref2$background,
|
|
3224
|
+
_ref2$colors = _ref2.colors,
|
|
3225
|
+
colors = _ref2$colors === void 0 ? null : _ref2$colors,
|
|
3226
|
+
_ref2$textStyles = _ref2.textStyles,
|
|
3227
|
+
textStyles = _ref2$textStyles === void 0 ? null : _ref2$textStyles,
|
|
3228
|
+
_ref2$boxStyles = _ref2.boxStyles,
|
|
3229
|
+
boxStyles = _ref2$boxStyles === void 0 ? null : _ref2$boxStyles;
|
|
3230
|
+
var baseValue = isTheme ? _objectSpread(_objectSpread({}, value), {}, {
|
|
3231
|
+
theme: {
|
|
3232
|
+
background: background,
|
|
3233
|
+
colors: colors,
|
|
3234
|
+
textStyles: textStyles,
|
|
3235
|
+
boxStyles: boxStyles
|
|
3236
|
+
}
|
|
3237
|
+
}) : value;
|
|
3238
|
+
var story = useParsedStory(baseValue);
|
|
3239
|
+
var _useMediasParser = useMediasParser(),
|
|
3240
|
+
parseMediasToPath = _useMediasParser.toPath;
|
|
3241
|
+
var onStoryChange = useCallback(function (newStory) {
|
|
3242
|
+
var storyWithMedias = parseMediasToPath(newStory);
|
|
3243
|
+
if (onChange !== null) {
|
|
3244
|
+
onChange(storyWithMedias);
|
|
3245
|
+
}
|
|
3246
|
+
}, [onChange, parseMediasToPath]);
|
|
3247
|
+
var clickedScreenId = useRef(null);
|
|
3248
|
+
var onClickScreen = useCallback(function (_ref3) {
|
|
3249
|
+
var id = _ref3.id;
|
|
3250
|
+
clickedScreenId.current = id;
|
|
3251
|
+
if (screenSize.screen) {
|
|
3252
|
+
setMobileView('preview');
|
|
3253
|
+
}
|
|
3254
|
+
push('screen', {
|
|
3255
|
+
screen: clickedScreenId.current
|
|
3256
|
+
});
|
|
3257
|
+
}, [screenSize.screen, push]);
|
|
3258
|
+
var onPreviewScreenChange = useCallback(function (_ref4) {
|
|
3259
|
+
var newScreenId = _ref4.id;
|
|
3260
|
+
push('screen', {
|
|
3261
|
+
screen: newScreenId
|
|
3262
|
+
});
|
|
3263
|
+
}, [push]);
|
|
3264
|
+
|
|
3265
|
+
// Auto-scroll to current screen except when manually clicking one
|
|
3266
|
+
useEffect(function () {
|
|
3267
|
+
if (screenId === null || clickedScreenId.current === screenId) {
|
|
3268
|
+
return;
|
|
3269
|
+
}
|
|
3270
|
+
clickedScreenId.current = null;
|
|
3271
|
+
var screens = refScreensContainer.current;
|
|
3272
|
+
var items = screens.querySelectorAll("[data-screen-id=\"".concat(screenId, "\"]"));
|
|
3273
|
+
if (items !== null && items.length > 0) {
|
|
3274
|
+
var item = items[0];
|
|
3275
|
+
var cnt = item.parentNode.parentNode.parentNode;
|
|
3276
|
+
screens.scrollTop = cnt.offsetTop + item.offsetTop + item.offsetHeight / 2 - screens.clientHeight / 2;
|
|
3277
|
+
}
|
|
3278
|
+
}, [screenId]);
|
|
3279
|
+
|
|
3280
|
+
// console.log('screenId', screenId);
|
|
3281
|
+
|
|
3282
|
+
return /*#__PURE__*/React.createElement(ModalsProvider, null, /*#__PURE__*/React.createElement(PanelsProvider, null, /*#__PURE__*/React.createElement(ScreenSizeProvider, {
|
|
3283
|
+
size: screenSize
|
|
3284
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
3285
|
+
className: classNames([styles$1.container, screenSize !== null ? screenSize.screens.map(function (screenName) {
|
|
3286
|
+
return styles$1["screen-".concat(screenName)];
|
|
3287
|
+
}) : null, _defineProperty(_defineProperty({}, styles$1.fullscreen, fullscreen), className, className)]),
|
|
3288
|
+
ref: refContainer
|
|
3289
|
+
}, /*#__PURE__*/React.createElement(Navbar, {
|
|
3290
|
+
theme: "light",
|
|
3291
|
+
compact: true,
|
|
3292
|
+
noWrap: true,
|
|
3293
|
+
withoutCollapse: true,
|
|
3294
|
+
className: styles$1.top
|
|
3295
|
+
}, mobileView !== 'screens' ? /*#__PURE__*/React.createElement(Button, {
|
|
3296
|
+
size: "sm",
|
|
3297
|
+
theme: "secondary",
|
|
3298
|
+
onClick: onClickScreens,
|
|
3299
|
+
className: "me-auto"
|
|
3300
|
+
}, /*#__PURE__*/React.createElement(FormattedMessage, {
|
|
3301
|
+
id: "wkysUu",
|
|
3302
|
+
defaultMessage: [{
|
|
3303
|
+
"type": 0,
|
|
3304
|
+
"value": "Screens"
|
|
3305
|
+
}]
|
|
3306
|
+
})) : /*#__PURE__*/React.createElement("span", null), mobileView !== 'form' ? /*#__PURE__*/React.createElement(Button, {
|
|
3307
|
+
size: "sm",
|
|
3308
|
+
theme: "primary",
|
|
3309
|
+
onClick: onClickEdit
|
|
3310
|
+
}, /*#__PURE__*/React.createElement(FormattedMessage, {
|
|
3311
|
+
id: "HseFdk",
|
|
3312
|
+
defaultMessage: [{
|
|
3313
|
+
"type": 0,
|
|
3314
|
+
"value": "Edit"
|
|
3315
|
+
}]
|
|
3316
|
+
})) : null, mobileView === 'form' ? /*#__PURE__*/React.createElement(Button, {
|
|
3317
|
+
size: "sm",
|
|
3318
|
+
theme: "primary",
|
|
3319
|
+
onClick: onClickViewScreen
|
|
3320
|
+
}, /*#__PURE__*/React.createElement(FormattedMessage, {
|
|
3321
|
+
id: "4POR3B",
|
|
3322
|
+
defaultMessage: [{
|
|
3323
|
+
"type": 0,
|
|
3324
|
+
"value": "View screen"
|
|
3325
|
+
}]
|
|
3326
|
+
})) : null), /*#__PURE__*/React.createElement("div", {
|
|
3327
|
+
className: styles$1.inner
|
|
3328
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
3329
|
+
className: classNames([styles$1.left, _defineProperty({}, styles$1.visible, !isMobile || mobileView === 'screens')]),
|
|
3330
|
+
ref: refScreensContainer
|
|
3331
|
+
}, /*#__PURE__*/React.createElement(Screens, {
|
|
3332
|
+
value: story,
|
|
3333
|
+
isTheme: isTheme,
|
|
3334
|
+
isCreateOpened: isCreateOpened,
|
|
3335
|
+
isParsed: true,
|
|
3336
|
+
onChange: onStoryChange,
|
|
3337
|
+
onClickScreen: onClickScreen,
|
|
3338
|
+
isVertical: !isMobile,
|
|
3339
|
+
className: styles$1.inner,
|
|
3340
|
+
isTree: true
|
|
3341
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
3342
|
+
className: classNames([styles$1.center, _defineProperty({}, styles$1.visible, !isMobile || mobileView === 'preview')])
|
|
3343
|
+
}, /*#__PURE__*/React.createElement(EditorPreview$1, {
|
|
3344
|
+
value: story,
|
|
3345
|
+
isTheme: isTheme,
|
|
3346
|
+
viewerTheme: viewerTheme,
|
|
3347
|
+
className: styles$1.preview,
|
|
3348
|
+
onScreenChange: onPreviewScreenChange,
|
|
3349
|
+
onChange: onStoryChange
|
|
3350
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
3351
|
+
className: classNames([styles$1.right, _defineProperty({}, styles$1.visible, !isMobile || mobileView === 'form')])
|
|
3352
|
+
}, /*#__PURE__*/React.createElement(EditorForm, {
|
|
3353
|
+
key: screenId,
|
|
3354
|
+
value: story,
|
|
3355
|
+
isTheme: isTheme,
|
|
3356
|
+
onChange: onStoryChange,
|
|
3357
|
+
className: styles$1.inner
|
|
3358
|
+
}))), /*#__PURE__*/React.createElement(Modals, null)))));
|
|
3359
|
+
};
|
|
3360
|
+
Editor.propTypes = propTypes$3;
|
|
3361
|
+
Editor.defaultProps = defaultProps$3;
|
|
3362
|
+
var Editor$1 = Editor;
|
|
3363
|
+
|
|
3364
|
+
// eslint-disable-next-line import/prefer-default-export
|
|
3365
|
+
var routes = PropTypes.shape({
|
|
3366
|
+
home: PropTypes.string.isRequired,
|
|
3367
|
+
screen: PropTypes.string.isRequired,
|
|
3368
|
+
'screen.field': PropTypes.string.isRequired,
|
|
3369
|
+
'screen.field.form': PropTypes.string.isRequired
|
|
3370
|
+
});
|
|
3371
|
+
|
|
3372
|
+
var styles = {"container":"micromag-editor-forms-settings-container","inner":"micromag-editor-forms-settings-inner"};
|
|
3373
|
+
|
|
3374
|
+
var propTypes$2 = {
|
|
3375
|
+
name: PropTypes.string,
|
|
3376
|
+
field: PropTypes$1.formField,
|
|
3377
|
+
value: PropTypes$1.component,
|
|
3378
|
+
className: PropTypes.string,
|
|
3379
|
+
gotoFieldForm: PropTypes.func.isRequired,
|
|
3380
|
+
closeFieldForm: PropTypes.func.isRequired,
|
|
3381
|
+
onChange: PropTypes.func
|
|
3382
|
+
};
|
|
3383
|
+
var defaultProps$2 = {
|
|
3384
|
+
name: null,
|
|
3385
|
+
field: null,
|
|
3386
|
+
value: null,
|
|
3387
|
+
className: null,
|
|
3388
|
+
onChange: null
|
|
3389
|
+
};
|
|
3390
|
+
var SettingsForm = function SettingsForm(_ref) {
|
|
3391
|
+
var name = _ref.name,
|
|
3392
|
+
field = _ref.field,
|
|
3393
|
+
value = _ref.value,
|
|
3394
|
+
className = _ref.className,
|
|
3395
|
+
gotoFieldForm = _ref.gotoFieldForm,
|
|
3396
|
+
closeFieldForm = _ref.closeFieldForm,
|
|
3397
|
+
onChange = _ref.onChange;
|
|
3398
|
+
if (field === null) return false;
|
|
3399
|
+
var _ref2 = field || {},
|
|
3400
|
+
_ref2$type = _ref2.type,
|
|
3401
|
+
type = _ref2$type === void 0 ? null : _ref2$type,
|
|
3402
|
+
_ref2$fieldsProps = _ref2.fieldsProps,
|
|
3403
|
+
fieldsProps = _ref2$fieldsProps === void 0 ? null : _ref2$fieldsProps;
|
|
3404
|
+
var fieldsManager = useFieldsManager();
|
|
3405
|
+
var _ref3 = type !== null ? fieldsManager.getDefinition(type) : field,
|
|
3406
|
+
_ref3$component = _ref3.component,
|
|
3407
|
+
fieldComponent = _ref3$component === void 0 ? null : _ref3$component,
|
|
3408
|
+
settings = _ref3.settings;
|
|
3409
|
+
var FieldComponent = useFieldComponent(fieldComponent);
|
|
3410
|
+
var FieldsComponent = useFieldComponent('fields');
|
|
3411
|
+
var SettingsComponent = FieldComponent !== null ? FieldComponent.settingsComponent || FieldsComponent : FieldsComponent;
|
|
3412
|
+
var onSettingsChange = useCallback(function (newSettingsValue) {
|
|
3413
|
+
var newValue = _objectSpread(_objectSpread({}, value), newSettingsValue);
|
|
3414
|
+
if (onChange !== null) {
|
|
3415
|
+
onChange(newValue);
|
|
3416
|
+
}
|
|
3417
|
+
}, [value, onChange]);
|
|
3418
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
3419
|
+
className: classNames([styles.container, _defineProperty({}, className, className)])
|
|
3420
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
3421
|
+
className: styles.inner
|
|
3422
|
+
}, /*#__PURE__*/React.createElement(SettingsComponent, {
|
|
3423
|
+
name: name,
|
|
3424
|
+
field: field,
|
|
3425
|
+
fields: settings,
|
|
3426
|
+
value: value,
|
|
3427
|
+
onChange: onSettingsChange,
|
|
3428
|
+
gotoFieldForm: gotoFieldForm,
|
|
3429
|
+
closeFieldForm: closeFieldForm,
|
|
3430
|
+
fieldsProps: fieldsProps
|
|
3431
|
+
})));
|
|
3432
|
+
};
|
|
3433
|
+
SettingsForm.propTypes = propTypes$2;
|
|
3434
|
+
SettingsForm.defaultProps = defaultProps$2;
|
|
3435
|
+
var SettingsForm$1 = SettingsForm;
|
|
3436
|
+
|
|
3437
|
+
// eslint-disable-next-line import/prefer-default-export
|
|
3438
|
+
|
|
3439
|
+
var FormsComponents = /*#__PURE__*/Object.freeze({
|
|
3440
|
+
__proto__: null,
|
|
3441
|
+
Settings: SettingsForm$1
|
|
3442
|
+
});
|
|
3443
|
+
|
|
3444
|
+
/* eslint-disable react/jsx-props-no-spreading */
|
|
3445
|
+
var propTypes$1 = {
|
|
3446
|
+
children: PropTypes.node
|
|
3447
|
+
};
|
|
3448
|
+
var defaultProps$1 = {
|
|
3449
|
+
children: null
|
|
3450
|
+
};
|
|
3451
|
+
var FormsProvider = function FormsProvider(props) {
|
|
3452
|
+
return /*#__PURE__*/React.createElement(ComponentsProvider, Object.assign({
|
|
3453
|
+
namespace: FORMS_NAMESPACE,
|
|
3454
|
+
components: FormsComponents
|
|
3455
|
+
}, props));
|
|
3456
|
+
};
|
|
3457
|
+
FormsProvider.propTypes = propTypes$1;
|
|
3458
|
+
FormsProvider.defaultProps = defaultProps$1;
|
|
3459
|
+
var FormsProvider$1 = FormsProvider;
|
|
3460
|
+
|
|
3461
|
+
var home = "/";
|
|
3462
|
+
var screen_wildcard = "/:screen/(.*)?";
|
|
3463
|
+
var screen = "/:screen";
|
|
3464
|
+
var defaultRoutes = {
|
|
3465
|
+
home: home,
|
|
3466
|
+
screen_wildcard: screen_wildcard,
|
|
3467
|
+
screen: screen,
|
|
3468
|
+
"screen.field": "/:screen/:field+",
|
|
3469
|
+
"screen.field.form": "/:screen/:field+/:form"
|
|
3470
|
+
};
|
|
3471
|
+
|
|
3472
|
+
var _excluded = ["value", "memoryRouter", "routes", "basePath", "uppy", "googleApiKey", "googleMapsLibraries", "screenNamespaces"];
|
|
3473
|
+
var pathToRegexpParser = createPathToRegexpParser();
|
|
3474
|
+
var propTypes = {
|
|
3475
|
+
value: PropTypes.oneOfType([PropTypes$1.story, PropTypes$1.theme]),
|
|
3476
|
+
routes: routes,
|
|
3477
|
+
memoryRouter: PropTypes.bool,
|
|
3478
|
+
basePath: PropTypes.string,
|
|
3479
|
+
uppy: PropTypes.shape({
|
|
3480
|
+
transport: PropTypes.string
|
|
3481
|
+
}),
|
|
3482
|
+
googleApiKey: PropTypes.string,
|
|
3483
|
+
googleMapsLibraries: PropTypes.arrayOf(PropTypes.string),
|
|
3484
|
+
screenNamespaces: PropTypes.arrayOf(PropTypes.string)
|
|
3485
|
+
};
|
|
3486
|
+
var defaultProps = {
|
|
3487
|
+
value: null,
|
|
3488
|
+
routes: defaultRoutes,
|
|
3489
|
+
memoryRouter: false,
|
|
3490
|
+
basePath: null,
|
|
3491
|
+
uppy: null,
|
|
3492
|
+
googleApiKey: null,
|
|
3493
|
+
googleMapsLibraries: ['places'],
|
|
3494
|
+
screenNamespaces: null
|
|
3495
|
+
};
|
|
3496
|
+
var EditorContainer = function EditorContainer(_ref) {
|
|
3497
|
+
var value = _ref.value,
|
|
3498
|
+
memoryRouter = _ref.memoryRouter,
|
|
3499
|
+
routes = _ref.routes,
|
|
3500
|
+
basePath = _ref.basePath,
|
|
3501
|
+
uppy = _ref.uppy,
|
|
3502
|
+
googleApiKey = _ref.googleApiKey,
|
|
3503
|
+
googleMapsLibraries = _ref.googleMapsLibraries,
|
|
3504
|
+
screenNamespaces = _ref.screenNamespaces,
|
|
3505
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
3506
|
+
var _useIntl = useIntl(),
|
|
3507
|
+
locale = _useIntl.locale;
|
|
3508
|
+
var _useMemoryRouter = useMemoryRouter(),
|
|
3509
|
+
memoryLocationHook = _useMemoryRouter.hook,
|
|
3510
|
+
memorySearchHook = _useMemoryRouter.searchHook;
|
|
3511
|
+
var routerProps = useMemo(function () {
|
|
3512
|
+
return {
|
|
3513
|
+
hook: memoryRouter ? memoryLocationHook : null,
|
|
3514
|
+
searchHook: memoryRouter ? memorySearchHook : null,
|
|
3515
|
+
parser: pathToRegexpParser,
|
|
3516
|
+
base: !memoryRouter ? basePath : null
|
|
3517
|
+
};
|
|
3518
|
+
}, [basePath, memoryRouter]);
|
|
3519
|
+
return /*#__PURE__*/React.createElement(Router, routerProps, /*#__PURE__*/React.createElement(UppyProvider, uppy, /*#__PURE__*/React.createElement(StoryProvider, {
|
|
3520
|
+
story: value
|
|
3521
|
+
}, /*#__PURE__*/React.createElement(ScreensProvider, {
|
|
3522
|
+
filterNamespaces: true,
|
|
3523
|
+
namespaces: screenNamespaces
|
|
3524
|
+
}, /*#__PURE__*/React.createElement(GoogleKeysProvider, {
|
|
3525
|
+
apiKey: googleApiKey
|
|
3526
|
+
}, /*#__PURE__*/React.createElement(GoogleMapsClientProvider, {
|
|
3527
|
+
locale: locale,
|
|
3528
|
+
libraries: googleMapsLibraries
|
|
3529
|
+
}, /*#__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, {
|
|
3530
|
+
visitor: "editor"
|
|
3531
|
+
}, /*#__PURE__*/React.createElement(ComponentsContext.Consumer, null, function (manager) {
|
|
3532
|
+
var formComponents = manager.getComponents(FORMS_NAMESPACE);
|
|
3533
|
+
var formRegEx = formComponents !== null ? Object.keys(formComponents).map(function (name) {
|
|
3534
|
+
return slug(name);
|
|
3535
|
+
}).join('|') : null;
|
|
3536
|
+
return /*#__PURE__*/React.createElement(RoutesProvider, {
|
|
3537
|
+
routes: _objectSpread(_objectSpread({}, routes), {}, {
|
|
3538
|
+
'screen.field.form': routes['screen.field.form'].replace(/:form$/, ":form(".concat(formRegEx, ")"))
|
|
3539
|
+
})
|
|
3540
|
+
}, /*#__PURE__*/React.createElement(Editor$1, Object.assign({
|
|
3541
|
+
value: value
|
|
3542
|
+
}, props)));
|
|
3543
|
+
}))))))))))));
|
|
3544
|
+
};
|
|
3545
|
+
EditorContainer.propTypes = propTypes;
|
|
3546
|
+
EditorContainer.defaultProps = defaultProps;
|
|
3547
|
+
var EditorContainer$1 = EditorContainer;
|
|
3548
|
+
|
|
3549
|
+
export { Editor$1 as Editor, ScreenTypesMenu as ScreenTypes, ScreensMenu$1 as Screens, createScreen$1 as createScreen, EditorContainer$1 as default };
|