@yorab/react-paint 0.6.3 → 0.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +2 -1
  2. package/dist/components/App.js +235 -387
  3. package/dist/components/Canvas.js +104 -114
  4. package/dist/components/common/Button.js +41 -50
  5. package/dist/components/common/Loading.js +21 -33
  6. package/dist/components/common/Modal.js +18 -17
  7. package/dist/components/common/Panel.js +20 -24
  8. package/dist/components/common/Snackbar.js +27 -34
  9. package/dist/components/settings/ColorField.js +59 -68
  10. package/dist/components/settings/DeleteButton.js +10 -9
  11. package/dist/components/settings/FontFamilyField.js +25 -20
  12. package/dist/components/settings/LayoutButton.js +11 -9
  13. package/dist/components/settings/Layouts.js +93 -103
  14. package/dist/components/settings/LineArrowField.js +25 -22
  15. package/dist/components/settings/LineTypeField.js +23 -20
  16. package/dist/components/settings/PointsNumberField.js +14 -13
  17. package/dist/components/settings/RangeField.js +35 -47
  18. package/dist/components/settings/SelectField.js +34 -43
  19. package/dist/components/settings/SettingsBar.js +95 -118
  20. package/dist/components/settings/ToggleField.js +18 -25
  21. package/dist/components/toolbox/EditTextBox.js +65 -40
  22. package/dist/components/toolbox/LoadFileTool.js +19 -21
  23. package/dist/components/toolbox/MenuGroup.js +60 -96
  24. package/dist/components/toolbox/PictureUrlInput.js +33 -62
  25. package/dist/components/toolbox/Tool.js +13 -13
  26. package/dist/components/toolbox/Toolbar.js +74 -106
  27. package/dist/components/toolbox/ToolbarGroup.js +41 -57
  28. package/dist/constants/icons.js +43 -43
  29. package/dist/constants/shapes.js +6 -6
  30. package/dist/constants/snackbar.js +3 -3
  31. package/dist/constants/style.js +13 -13
  32. package/dist/constants/tools.js +80 -80
  33. package/dist/hooks/useComponent.js +12 -19
  34. package/dist/hooks/useDoubleClick.js +12 -12
  35. package/dist/hooks/useDrag.js +24 -32
  36. package/dist/hooks/useDrawableCanvas.js +86 -100
  37. package/dist/hooks/useKeyboard.js +26 -36
  38. package/dist/hooks/useResizeObserver.js +18 -16
  39. package/dist/hooks/useShapes.js +91 -143
  40. package/dist/hooks/useSnackbar.js +28 -58
  41. package/dist/styles.css +55 -55
  42. package/dist/types/Mode.js +1 -1
  43. package/dist/types/Shapes.js +1 -1
  44. package/dist/types/keyboard.js +2 -2
  45. package/dist/types/tools.js +1 -1
  46. package/dist/utils/data.js +91 -107
  47. package/dist/utils/draw.js +116 -146
  48. package/dist/utils/file.js +69 -119
  49. package/dist/utils/intersect.js +57 -97
  50. package/dist/utils/selection.js +12 -12
  51. package/dist/utils/shapeData.js +33 -51
  52. package/dist/utils/string.js +10 -16
  53. package/dist/utils/style.js +1 -1
  54. package/dist/utils/toolbar.js +26 -38
  55. package/dist/utils/transform.js +183 -239
  56. package/package.json +5 -4
@@ -2,20 +2,10 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
- exports["default"] = void 0;
11
-
12
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
-
14
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
-
16
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
-
18
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
8
+ exports.default = void 0;
19
9
 
20
10
  var _react = _interopRequireWildcard(require("react"));
21
11
 
@@ -37,13 +27,13 @@ var _file = require("../utils/file");
37
27
 
38
28
  var _Mode = require("../types/Mode");
39
29
 
40
- var _useComponent2 = _interopRequireDefault(require("../hooks/useComponent"));
30
+ var _useComponent = _interopRequireDefault(require("../hooks/useComponent"));
41
31
 
42
- var _useShapes2 = _interopRequireDefault(require("../hooks/useShapes"));
32
+ var _useShapes = _interopRequireDefault(require("../hooks/useShapes"));
43
33
 
44
34
  var _Snackbar = _interopRequireDefault(require("./common/Snackbar"));
45
35
 
46
- var _useSnackbar2 = _interopRequireDefault(require("../hooks/useSnackbar"));
36
+ var _useSnackbar = _interopRequireDefault(require("../hooks/useSnackbar"));
47
37
 
48
38
  var _snackbar = require("../constants/snackbar");
49
39
 
@@ -61,79 +51,59 @@ var _tools = require("../constants/tools");
61
51
 
62
52
  var _fp = _interopRequireDefault(require("lodash/fp"));
63
53
 
64
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
54
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
65
55
 
66
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
56
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
67
57
 
68
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
69
-
70
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
71
-
72
- var StyledApp = /*#__PURE__*/(0, _react2.styled)("div")({
58
+ const StyledApp = /*#__PURE__*/(0, _react2.styled)("div")({
73
59
  name: "StyledApp",
74
- "class": "sdhgr8u",
60
+ class: "s1v9piyg",
75
61
  vars: {
76
- "sdhgr8u-0": [function (props) {
77
- return props.toolbarBackgroundColor;
78
- }],
79
- "sdhgr8u-1": [function (props) {
80
- return props.dividerColor;
81
- }],
82
- "sdhgr8u-2": [function (props) {
83
- return props.fontRadius;
84
- }, "px"],
85
- "sdhgr8u-3": [function (props) {
86
- return props.fontDisabledColor;
87
- }],
88
- "sdhgr8u-4": [function (props) {
89
- return props.fontDisabledBackgroundColor;
90
- }],
91
- "sdhgr8u-5": [function (props) {
92
- return props.fontColor;
93
- }],
94
- "sdhgr8u-6": [function (props) {
95
- return props.fontBackgroundColor;
96
- }],
97
- "sdhgr8u-7": [function (props) {
98
- return props.fontSelectedColor;
99
- }],
100
- "sdhgr8u-8": [function (props) {
101
- return props.fontSelectedBackgroundColor;
102
- }],
103
- "sdhgr8u-9": [function (props) {
104
- return props.fontHoverColor;
105
- }],
106
- "sdhgr8u-10": [function (props) {
107
- return props.fontHoverBackgroundColor;
108
- }],
109
- "sdhgr8u-11": [function (props) {
110
- return props.canvasBackgroundColor;
111
- }],
112
- "sdhgr8u-12": [function (_ref) {
113
- var canvasWidth = _ref.canvasWidth;
62
+ "s1v9piyg-0": [props => props.toolbarBackgroundColor],
63
+ "s1v9piyg-1": [props => props.dividerColor],
64
+ "s1v9piyg-2": [props => props.fontRadius, "px"],
65
+ "s1v9piyg-3": [props => props.fontDisabledColor],
66
+ "s1v9piyg-4": [props => props.fontDisabledBackgroundColor],
67
+ "s1v9piyg-5": [props => props.fontColor],
68
+ "s1v9piyg-6": [props => props.fontBackgroundColor],
69
+ "s1v9piyg-7": [props => props.fontSelectedColor],
70
+ "s1v9piyg-8": [props => props.fontSelectedBackgroundColor],
71
+ "s1v9piyg-9": [props => props.fontHoverColor],
72
+ "s1v9piyg-10": [props => props.fontHoverBackgroundColor],
73
+ "s1v9piyg-11": [props => props.canvasBackgroundColor],
74
+ "s1v9piyg-12": [_ref => {
75
+ let {
76
+ canvasWidth
77
+ } = _ref;
114
78
  return "min(100%, ".concat(canvasWidth, "px)");
115
79
  }],
116
- "sdhgr8u-13": [function (_ref2) {
117
- var canvasWidth = _ref2.canvasWidth;
80
+ "s1v9piyg-13": [_ref2 => {
81
+ let {
82
+ canvasWidth
83
+ } = _ref2;
118
84
  return canvasWidth;
119
85
  }, "px"]
120
86
  }
121
87
  });
122
- var StyledRow = /*#__PURE__*/(0, _react2.styled)("div")({
88
+ const StyledRow = /*#__PURE__*/(0, _react2.styled)("div")({
123
89
  name: "StyledRow",
124
- "class": "sm24hcl",
90
+ class: "s6o5tmu",
125
91
  vars: {
126
- "sm24hcl-1": [function (_ref3) {
127
- var width = _ref3.width;
92
+ "s6o5tmu-1": [_ref3 => {
93
+ let {
94
+ width
95
+ } = _ref3;
128
96
  return width;
129
97
  }, "px"],
130
- "sm24hcl-2": [function (_ref4) {
131
- var aspectRatio = _ref4.aspectRatio;
98
+ "s6o5tmu-2": [_ref4 => {
99
+ let {
100
+ aspectRatio
101
+ } = _ref4;
132
102
  return aspectRatio;
133
103
  }]
134
104
  }
135
105
  });
136
- var DEFAULT_OPTIONS = {
106
+ const DEFAULT_OPTIONS = {
137
107
  layersManipulation: true,
138
108
  gridVisible: false,
139
109
  canGrow: false,
@@ -143,6 +113,7 @@ var DEFAULT_OPTIONS = {
143
113
  withUploadPicture: true,
144
114
  withUrlPicture: false,
145
115
  availableTools: _tools.DEFAULT_SHAPE_TOOLS,
116
+ clearCallback: 'empty',
146
117
  uiStyle: {
147
118
  toolbarBackgroundColor: 'white',
148
119
  dividerColor: '#36418129',
@@ -162,220 +133,160 @@ var DEFAULT_OPTIONS = {
162
133
  }
163
134
  };
164
135
 
165
- var App = function App(_ref5) {
136
+ const App = _ref5 => {
166
137
  var _options$uiStyle;
167
138
 
168
- var _ref5$width = _ref5.width,
169
- canvasWidth = _ref5$width === void 0 ? 1000 : _ref5$width,
170
- _ref5$height = _ref5.height,
171
- canvasHeight = _ref5$height === void 0 ? 600 : _ref5$height,
172
- shapesFromProps = _ref5.shapes,
173
- classNameFromProps = _ref5.className,
174
- _ref5$mode = _ref5.mode,
175
- mode = _ref5$mode === void 0 ? 'editor' : _ref5$mode,
176
- _ref5$disabled = _ref5.disabled,
177
- disabledFromProps = _ref5$disabled === void 0 ? false : _ref5$disabled,
178
- onDataChanged = _ref5.onDataChanged,
179
- apiRef = _ref5.apiRef,
180
- options = _ref5.options;
181
-
182
- var _DEFAULT_OPTIONS$opti = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options),
183
- layersManipulation = _DEFAULT_OPTIONS$opti.layersManipulation,
184
- gridVisible = _DEFAULT_OPTIONS$opti.gridVisible,
185
- canGrow = _DEFAULT_OPTIONS$opti.canGrow,
186
- canShrink = _DEFAULT_OPTIONS$opti.canShrink,
187
- withExport = _DEFAULT_OPTIONS$opti.withExport,
188
- withLoadAndSave = _DEFAULT_OPTIONS$opti.withLoadAndSave,
189
- withUploadPicture = _DEFAULT_OPTIONS$opti.withUploadPicture,
190
- withUrlPicture = _DEFAULT_OPTIONS$opti.withUrlPicture,
191
- availableToolsFromProps = _DEFAULT_OPTIONS$opti.availableTools;
192
-
193
- var _DEFAULT_OPTIONS$uiSt = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS.uiStyle), (_options$uiStyle = options === null || options === void 0 ? void 0 : options.uiStyle) !== null && _options$uiStyle !== void 0 ? _options$uiStyle : {}),
194
- toolbarBackgroundColor = _DEFAULT_OPTIONS$uiSt.toolbarBackgroundColor,
195
- dividerColor = _DEFAULT_OPTIONS$uiSt.dividerColor,
196
- fontRadius = _DEFAULT_OPTIONS$uiSt.fontRadius,
197
- fontDisabledColor = _DEFAULT_OPTIONS$uiSt.fontDisabledColor,
198
- fontDisabledBackgroundColor = _DEFAULT_OPTIONS$uiSt.fontDisabledBackgroundColor,
199
- fontColor = _DEFAULT_OPTIONS$uiSt.fontColor,
200
- fontBackgroundColor = _DEFAULT_OPTIONS$uiSt.fontBackgroundColor,
201
- fontSelectedColor = _DEFAULT_OPTIONS$uiSt.fontSelectedColor,
202
- fontSelectedBackgroundColor = _DEFAULT_OPTIONS$uiSt.fontSelectedBackgroundColor,
203
- fontHoverColor = _DEFAULT_OPTIONS$uiSt.fontHoverColor,
204
- fontHoverBackgroundColor = _DEFAULT_OPTIONS$uiSt.fontHoverBackgroundColor,
205
- canvasBackgroundColor = _DEFAULT_OPTIONS$uiSt.canvasBackgroundColor,
206
- canvasSelectionColor = _DEFAULT_OPTIONS$uiSt.canvasSelectionColor,
207
- canvasSelectionWidth = _DEFAULT_OPTIONS$uiSt.canvasSelectionWidth,
208
- canvasSelectionPadding = _DEFAULT_OPTIONS$uiSt.canvasSelectionPadding;
209
-
210
- var isEditMode = mode !== 'viewer';
211
- var disabled = disabledFromProps || !isEditMode;
212
- var componentRef = (0, _react.useRef)(null);
213
- var canvasRef = (0, _react.useRef)(null);
214
-
215
- var _useState = (0, _react.useState)({
139
+ let {
140
+ width: canvasWidth = 1000,
141
+ height: canvasHeight = 600,
142
+ shapes: shapesFromProps,
143
+ className: classNameFromProps,
144
+ mode = 'editor',
145
+ disabled: disabledFromProps = false,
146
+ onDataChanged,
147
+ apiRef,
148
+ options
149
+ } = _ref5;
150
+ const {
151
+ layersManipulation,
152
+ gridVisible,
153
+ canGrow,
154
+ canShrink,
155
+ withExport,
156
+ withLoadAndSave,
157
+ withUploadPicture,
158
+ withUrlPicture,
159
+ clearCallback,
160
+ availableTools: availableToolsFromProps
161
+ } = { ...DEFAULT_OPTIONS,
162
+ ...options
163
+ };
164
+ const {
165
+ toolbarBackgroundColor,
166
+ dividerColor,
167
+ fontRadius,
168
+ fontDisabledColor,
169
+ fontDisabledBackgroundColor,
170
+ fontColor,
171
+ fontBackgroundColor,
172
+ fontSelectedColor,
173
+ fontSelectedBackgroundColor,
174
+ fontHoverColor,
175
+ fontHoverBackgroundColor,
176
+ canvasBackgroundColor,
177
+ canvasSelectionColor,
178
+ canvasSelectionWidth,
179
+ canvasSelectionPadding
180
+ } = { ...DEFAULT_OPTIONS.uiStyle,
181
+ ...((_options$uiStyle = options === null || options === void 0 ? void 0 : options.uiStyle) !== null && _options$uiStyle !== void 0 ? _options$uiStyle : {})
182
+ };
183
+ const isEditMode = mode !== 'viewer';
184
+ const disabled = disabledFromProps || !isEditMode;
185
+ const componentRef = (0, _react.useRef)(null);
186
+ const canvasRef = (0, _react.useRef)(null);
187
+ const [canvasSize, setCanvasSize] = (0, _react.useState)({
216
188
  width: canvasWidth,
217
189
  height: canvasHeight,
218
190
  scaleRatio: 1
219
- }),
220
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
221
- canvasSize = _useState2[0],
222
- setCanvasSize = _useState2[1];
223
-
224
- var _useState3 = (0, _react.useState)((0, _toolbar.sanitizeTools)(availableToolsFromProps, withUploadPicture || withUrlPicture)),
225
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
226
- availableTools = _useState4[0],
227
- setAvailableTools = _useState4[1];
228
-
229
- (0, _react.useEffect)(function () {
191
+ });
192
+ const [availableTools, setAvailableTools] = (0, _react.useState)((0, _toolbar.sanitizeTools)(availableToolsFromProps, withUploadPicture || withUrlPicture));
193
+ (0, _react.useEffect)(() => {
230
194
  setAvailableTools((0, _toolbar.sanitizeTools)(availableToolsFromProps, withUploadPicture || withUrlPicture));
231
195
  }, [availableToolsFromProps, withUploadPicture, withUrlPicture]);
232
-
233
- var _useComponent = (0, _useComponent2["default"])({
234
- disabled: disabled,
235
- componentRef: componentRef
236
- }),
237
- isInsideComponent = _useComponent.isInsideComponent;
238
-
239
- var _useState5 = (0, _react.useState)(false),
240
- _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
241
- isLoading = _useState6[0],
242
- setIsLoading = _useState6[1];
243
-
244
- var _useState7 = (0, _react.useState)(false),
245
- _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
246
- isLayoutPanelShown = _useState8[0],
247
- setIsLayoutPanelShown = _useState8[1];
248
-
249
- var _useState9 = (0, _react.useState)([0, 0]),
250
- _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
251
- canvasOffset = _useState10[0],
252
- setCanvasOffset = _useState10[1];
253
-
254
- var _useState11 = (0, _react.useState)(undefined),
255
- _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
256
- canvasOffsetStartPosition = _useState12[0],
257
- setCanvasOffsetStartPosition = _useState12[1];
258
-
259
- var _useState13 = (0, _react.useState)(_tools.SELECTION_TOOL),
260
- _useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
261
- activeTool = _useState14[0],
262
- setActiveTool = _useState14[1];
263
-
264
- var _useState15 = (0, _react.useState)({
265
- mode: _Mode.SelectionModeLib["default"]
266
- }),
267
- _useState16 = (0, _slicedToArray2["default"])(_useState15, 2),
268
- selectionMode = _useState16[0],
269
- setSelectionMode = _useState16[1];
270
-
271
- var _useState17 = (0, _react.useState)(gridVisible),
272
- _useState18 = (0, _slicedToArray2["default"])(_useState17, 2),
273
- withGrid = _useState18[0],
274
- setWithGrid = _useState18[1];
275
-
276
- var _useShapes = (0, _useShapes2["default"])(onDataChanged),
277
- shapesRef = _useShapes.shapesRef,
278
- selectedShape = _useShapes.selectedShape,
279
- addShape = _useShapes.addShape,
280
- addPictureShape = _useShapes.addPictureShape,
281
- moveShapes = _useShapes.moveShapes,
282
- setSelectedShape = _useShapes.setSelectedShape,
283
- removeShape = _useShapes.removeShape,
284
- updateShape = _useShapes.updateShape,
285
- backwardShape = _useShapes.backwardShape,
286
- forwardShape = _useShapes.forwardShape,
287
- clearShapes = _useShapes.clearShapes,
288
- saveShapes = _useShapes.saveShapes,
289
- toggleShapeVisibility = _useShapes.toggleShapeVisibility,
290
- toggleShapeLock = _useShapes.toggleShapeLock,
291
- canGoBackward = _useShapes.canGoBackward,
292
- canGoForward = _useShapes.canGoForward,
293
- canClear = _useShapes.canClear;
294
-
295
- var _useSnackbar = (0, _useSnackbar2["default"])(),
296
- snackbarList = _useSnackbar.snackbarList,
297
- addSnackbar = _useSnackbar.addSnackbar;
298
-
299
- var selectTool = (0, _react.useCallback)(function (tool) {
196
+ const {
197
+ isInsideComponent
198
+ } = (0, _useComponent.default)({
199
+ disabled,
200
+ componentRef
201
+ });
202
+ const [isLoading, setIsLoading] = (0, _react.useState)(false);
203
+ const [isLayoutPanelShown, setIsLayoutPanelShown] = (0, _react.useState)(false);
204
+ const [canvasOffset, setCanvasOffset] = (0, _react.useState)([0, 0]);
205
+ const [canvasOffsetStartPosition, setCanvasOffsetStartPosition] = (0, _react.useState)(undefined);
206
+ const [activeTool, setActiveTool] = (0, _react.useState)(_tools.SELECTION_TOOL);
207
+ const [selectionMode, setSelectionMode] = (0, _react.useState)({
208
+ mode: _Mode.SelectionModeLib.default
209
+ });
210
+ const [withGrid, setWithGrid] = (0, _react.useState)(gridVisible);
211
+ const {
212
+ shapesRef,
213
+ selectedShape,
214
+ addShape,
215
+ addPictureShape,
216
+ moveShapes,
217
+ setSelectedShape,
218
+ removeShape,
219
+ updateShape,
220
+ backwardShape,
221
+ forwardShape,
222
+ clearShapes,
223
+ saveShapes,
224
+ toggleShapeVisibility,
225
+ toggleShapeLock,
226
+ canGoBackward,
227
+ canGoForward,
228
+ canClear
229
+ } = (0, _useShapes.default)(onDataChanged);
230
+ const {
231
+ snackbarList,
232
+ addSnackbar
233
+ } = (0, _useSnackbar.default)();
234
+ const selectTool = (0, _react.useCallback)(tool => {
300
235
  setSelectedShape(undefined);
301
236
  setActiveTool(tool);
302
237
  }, [setSelectedShape]);
303
- var updateToolSettings = (0, _react.useCallback)(function (toolId, field, value) {
304
- setAvailableTools(function (availableTools) {
305
- return availableTools.map(function (tool) {
306
- return tool.id === toolId ? _fp["default"].set(['settings', field, 'default'], value, tool) : tool;
307
- });
308
- });
309
- setActiveTool(function (activeTool) {
310
- return activeTool.id === toolId ? _fp["default"].set(['settings', field, 'default'], value, activeTool) : activeTool;
311
- });
238
+ const updateToolSettings = (0, _react.useCallback)((toolId, field, value) => {
239
+ setAvailableTools(availableTools => availableTools.map(tool => tool.id === toolId ? _fp.default.set(['settings', field, 'default'], value, tool) : tool));
240
+ setActiveTool(activeTool => activeTool.id === toolId ? _fp.default.set(['settings', field, 'default'], value, activeTool) : activeTool);
312
241
  }, []);
313
- var undoAction = (0, _react.useCallback)(function () {
242
+ const undoAction = (0, _react.useCallback)(() => {
314
243
  selectTool(_tools.SELECTION_TOOL);
315
244
  backwardShape();
316
245
  }, [selectTool, backwardShape]);
317
- var redoAction = (0, _react.useCallback)(function () {
246
+ const redoAction = (0, _react.useCallback)(() => {
318
247
  selectTool(_tools.SELECTION_TOOL);
319
248
  forwardShape();
320
249
  }, [selectTool, forwardShape]);
321
- var resetCanvas = (0, _react.useCallback)(function () {
322
- var shapesToInit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
323
- var clearHistory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
250
+ const resetCanvas = (0, _react.useCallback)(function () {
251
+ let shapesToInit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
252
+ let clearHistory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
324
253
  clearShapes(shapesToInit, clearHistory);
325
254
  selectTool(_tools.SELECTION_TOOL);
326
255
  setCanvasOffset([0, 0]);
327
256
  }, [selectTool, clearShapes]);
328
- var loadImportedData = (0, _react.useCallback)( /*#__PURE__*/function () {
329
- var _ref6 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(json) {
330
- var clearHistory,
331
- shapes,
332
- _args = arguments;
333
- return _regenerator["default"].wrap(function _callee$(_context) {
334
- while (1) {
335
- switch (_context.prev = _context.next) {
336
- case 0:
337
- clearHistory = _args.length > 1 && _args[1] !== undefined ? _args[1] : true;
338
- _context.next = 3;
339
- return (0, _file.decodeImportedData)(json);
340
-
341
- case 3:
342
- shapes = _context.sent;
343
- resetCanvas(shapes, clearHistory);
344
-
345
- case 5:
346
- case "end":
347
- return _context.stop();
348
- }
349
- }
350
- }, _callee);
351
- }));
352
-
353
- return function (_x) {
354
- return _ref6.apply(this, arguments);
355
- };
356
- }(), [resetCanvas]);
357
- var clearCanvas = (0, _react.useCallback)(function () {
358
- if (shapesFromProps !== undefined) {
257
+ const loadImportedData = (0, _react.useCallback)(async function (json) {
258
+ let clearHistory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
259
+ const shapes = await (0, _file.decodeImportedData)(json);
260
+ resetCanvas(shapes, clearHistory);
261
+ }, [resetCanvas]);
262
+ const clearCanvas = (0, _react.useCallback)(() => {
263
+ if (typeof clearCallback !== 'string') {
359
264
  void loadImportedData({
360
- shapes: shapesFromProps
265
+ shapes: clearCallback()
361
266
  }, false);
362
267
  } else {
363
- resetCanvas();
268
+ if (clearCallback === 'defaultShapes' && shapesFromProps !== undefined) {
269
+ void loadImportedData({
270
+ shapes: shapesFromProps
271
+ }, false);
272
+ } else {
273
+ resetCanvas();
274
+ }
364
275
  }
365
- }, [resetCanvas, loadImportedData, shapesFromProps]);
366
- var selectShape = (0, _react.useCallback)(function (shape) {
276
+ }, [resetCanvas, loadImportedData, shapesFromProps, clearCallback]);
277
+ const selectShape = (0, _react.useCallback)(shape => {
367
278
  setActiveTool(_tools.SELECTION_TOOL);
368
279
  setSelectedShape(shape);
369
280
  }, [setSelectedShape]);
370
- var pasteShape = (0, _react.useCallback)(function (shape) {
281
+ const pasteShape = (0, _react.useCallback)(shape => {
371
282
  addShape(shape);
372
283
  selectShape(shape);
373
284
  }, [addShape, selectShape]);
374
- var exportCanvasInFile = (0, _react.useCallback)(function () {
285
+ const exportCanvasInFile = (0, _react.useCallback)(() => {
375
286
  setIsLoading(true);
376
287
 
377
288
  try {
378
- var dataURL = canvasRef.current && (0, _file.getCanvasImage)(shapesRef.current, canvasOffset, canvasWidth, canvasHeight, canvasSelectionPadding);
289
+ const dataURL = canvasRef.current && (0, _file.getCanvasImage)(shapesRef.current, canvasOffset, canvasWidth, canvasHeight, canvasSelectionPadding);
379
290
 
380
291
  if (!dataURL) {
381
292
  throw new Error();
@@ -396,11 +307,11 @@ var App = function App(_ref5) {
396
307
  setIsLoading(false);
397
308
  }
398
309
  }, [addSnackbar, shapesRef, canvasOffset, canvasWidth, canvasHeight, canvasSelectionPadding]);
399
- var saveFile = (0, _react.useCallback)(function () {
310
+ const saveFile = (0, _react.useCallback)(() => {
400
311
  setIsLoading(true);
401
312
 
402
313
  try {
403
- var content = (0, _file.encodeShapesInString)(shapesRef.current, canvasWidth, canvasHeight);
314
+ const content = (0, _file.encodeShapesInString)(shapesRef.current, canvasWidth, canvasHeight);
404
315
 
405
316
  if (!content) {
406
317
  throw new Error("L'encodage a échoué");
@@ -421,155 +332,94 @@ var App = function App(_ref5) {
421
332
  setIsLoading(false);
422
333
  }
423
334
  }, [shapesRef, addSnackbar, canvasWidth, canvasHeight]);
424
- var loadFile = (0, _react.useCallback)( /*#__PURE__*/function () {
425
- var _ref7 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(file) {
426
- var json;
427
- return _regenerator["default"].wrap(function _callee2$(_context2) {
428
- while (1) {
429
- switch (_context2.prev = _context2.next) {
430
- case 0:
431
- setIsLoading(true);
432
- _context2.prev = 1;
433
- _context2.next = 4;
434
- return (0, _file.decodeJson)(file);
435
-
436
- case 4:
437
- json = _context2.sent;
438
- _context2.next = 7;
439
- return loadImportedData(json);
440
-
441
- case 7:
442
- addSnackbar({
443
- type: _snackbar.SnackbarTypeEnum.Success,
444
- text: 'Fichier chargé !'
445
- });
446
- _context2.next = 14;
447
- break;
448
-
449
- case 10:
450
- _context2.prev = 10;
451
- _context2.t0 = _context2["catch"](1);
452
-
453
- if (_context2.t0 instanceof Error) {
454
- addSnackbar({
455
- type: _snackbar.SnackbarTypeEnum.Error,
456
- text: 'Le chargement a échoué'
457
- });
458
- }
459
-
460
- console.warn(_context2.t0);
461
-
462
- case 14:
463
- _context2.prev = 14;
464
- setIsLoading(false);
465
- return _context2.finish(14);
466
-
467
- case 17:
468
- case "end":
469
- return _context2.stop();
470
- }
471
- }
472
- }, _callee2, null, [[1, 10, 14, 17]]);
473
- }));
474
-
475
- return function (_x2) {
476
- return _ref7.apply(this, arguments);
477
- };
478
- }(), [loadImportedData, addSnackbar]);
479
- var addPicture = (0, _react.useCallback)( /*#__PURE__*/function () {
480
- var _ref8 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(fileOrUrl) {
481
- var pictureShape;
482
- return _regenerator["default"].wrap(function _callee3$(_context3) {
483
- while (1) {
484
- switch (_context3.prev = _context3.next) {
485
- case 0:
486
- setIsLoading(true);
487
- _context3.prev = 1;
488
- _context3.next = 4;
489
- return addPictureShape(fileOrUrl, canvasWidth, canvasHeight);
490
-
491
- case 4:
492
- pictureShape = _context3.sent;
493
- selectShape(pictureShape);
494
- _context3.next = 12;
495
- break;
496
-
497
- case 8:
498
- _context3.prev = 8;
499
- _context3.t0 = _context3["catch"](1);
500
-
501
- if (_context3.t0 instanceof Error) {
502
- addSnackbar({
503
- type: _snackbar.SnackbarTypeEnum.Error,
504
- text: 'Le chargement a échoué'
505
- });
506
- }
507
-
508
- console.warn(_context3.t0);
509
-
510
- case 12:
511
- _context3.prev = 12;
512
- setIsLoading(false);
513
- return _context3.finish(12);
514
-
515
- case 15:
516
- case "end":
517
- return _context3.stop();
518
- }
519
- }
520
- }, _callee3, null, [[1, 8, 12, 15]]);
521
- }));
522
-
523
- return function (_x3) {
524
- return _ref8.apply(this, arguments);
525
- };
526
- }(), [addPictureShape, selectShape, addSnackbar, canvasWidth, canvasHeight]);
527
- var onResized = (0, _react.useCallback)(function (measuredWidth) {
528
- var scaleRatio = measuredWidth / canvasWidth;
335
+ const loadFile = (0, _react.useCallback)(async file => {
336
+ setIsLoading(true);
337
+
338
+ try {
339
+ const json = await (0, _file.decodeJson)(file);
340
+ await loadImportedData(json);
341
+ addSnackbar({
342
+ type: _snackbar.SnackbarTypeEnum.Success,
343
+ text: 'Fichier chargé !'
344
+ });
345
+ } catch (e) {
346
+ if (e instanceof Error) {
347
+ addSnackbar({
348
+ type: _snackbar.SnackbarTypeEnum.Error,
349
+ text: 'Le chargement a échoué'
350
+ });
351
+ }
352
+
353
+ console.warn(e);
354
+ } finally {
355
+ setIsLoading(false);
356
+ }
357
+ }, [loadImportedData, addSnackbar]);
358
+ const addPicture = (0, _react.useCallback)(async fileOrUrl => {
359
+ setIsLoading(true);
360
+
361
+ try {
362
+ const pictureShape = await addPictureShape(fileOrUrl, canvasWidth, canvasHeight);
363
+ selectShape(pictureShape);
364
+ } catch (e) {
365
+ if (e instanceof Error) {
366
+ addSnackbar({
367
+ type: _snackbar.SnackbarTypeEnum.Error,
368
+ text: 'Le chargement a échoué'
369
+ });
370
+ }
371
+
372
+ console.warn(e);
373
+ } finally {
374
+ setIsLoading(false);
375
+ }
376
+ }, [addPictureShape, selectShape, addSnackbar, canvasWidth, canvasHeight]);
377
+ const onResized = (0, _react.useCallback)(measuredWidth => {
378
+ const scaleRatio = measuredWidth / canvasWidth;
529
379
  setCanvasSize({
530
380
  width: measuredWidth,
531
381
  height: canvasHeight * scaleRatio,
532
- scaleRatio: scaleRatio
382
+ scaleRatio
533
383
  });
534
384
  }, [canvasWidth, canvasHeight]);
535
- (0, _useKeyboard["default"])({
536
- isInsideComponent: isInsideComponent,
385
+ (0, _useKeyboard.default)({
386
+ isInsideComponent,
537
387
  isEditingText: selectionMode.mode === _Mode.SelectionModeLib.textedition,
538
- selectedShape: selectedShape,
539
- setSelectedShape: setSelectedShape,
540
- removeShape: removeShape,
541
- pasteShape: pasteShape,
542
- updateShape: updateShape,
543
- backwardShape: backwardShape,
544
- forwardShape: forwardShape
388
+ selectedShape,
389
+ setSelectedShape,
390
+ removeShape,
391
+ pasteShape,
392
+ updateShape,
393
+ backwardShape,
394
+ forwardShape
545
395
  });
546
- (0, _useResizeObserver["default"])({
396
+ (0, _useResizeObserver.default)({
547
397
  element: componentRef,
548
- onResized: onResized
398
+ onResized
549
399
  });
550
- (0, _react.useEffect)(function () {
400
+ (0, _react.useEffect)(() => {
551
401
  if (!isInsideComponent) setSelectedShape(undefined);
552
402
  }, [isInsideComponent, setSelectedShape]);
553
- (0, _react.useEffect)(function () {
403
+ (0, _react.useEffect)(() => {
554
404
  if (shapesFromProps !== undefined) {
555
405
  void loadImportedData({
556
406
  shapes: shapesFromProps
557
407
  });
558
408
  }
559
409
  }, [loadImportedData, shapesFromProps]);
560
- (0, _react.useEffect)(function () {
410
+ (0, _react.useEffect)(() => {
561
411
  if (!apiRef) return;
562
412
  apiRef.current = {
563
- getCurrentImage: function getCurrentImage() {
413
+ getCurrentImage: () => {
564
414
  return canvasRef.current ? (0, _file.getCanvasImage)(shapesRef.current, canvasOffset, canvasWidth, canvasHeight, canvasSelectionPadding) : undefined;
565
415
  },
566
- getCurrentData: function getCurrentData() {
416
+ getCurrentData: () => {
567
417
  return (0, _data.buildDataToExport)(shapesRef.current, canvasWidth, canvasHeight);
568
418
  }
569
419
  };
570
420
  }, [apiRef, shapesRef, canvasOffset, canvasWidth, canvasHeight, canvasSelectionPadding]);
571
- var className = "".concat(classNameFromProps !== null && classNameFromProps !== void 0 ? classNameFromProps : '', " ").concat(isLayoutPanelShown ? 'layoutPanelOpened' : '');
572
- return /*#__PURE__*/_react["default"].createElement(StyledApp, {
421
+ const className = "".concat(classNameFromProps !== null && classNameFromProps !== void 0 ? classNameFromProps : '', " ").concat(isLayoutPanelShown ? 'layoutPanelOpened' : '');
422
+ return /*#__PURE__*/_react.default.createElement(StyledApp, {
573
423
  ref: componentRef,
574
424
  className: className,
575
425
  "data-grow": canGrow,
@@ -587,7 +437,7 @@ var App = function App(_ref5) {
587
437
  fontHoverColor: fontHoverColor,
588
438
  fontHoverBackgroundColor: fontHoverBackgroundColor,
589
439
  canvasBackgroundColor: canvasBackgroundColor
590
- }, isEditMode && /*#__PURE__*/_react["default"].createElement(_Toolbar["default"], {
440
+ }, isEditMode && /*#__PURE__*/_react.default.createElement(_Toolbar.default, {
591
441
  width: canvasSize.width,
592
442
  disabled: disabled,
593
443
  activeTool: activeTool,
@@ -607,11 +457,11 @@ var App = function App(_ref5) {
607
457
  withLoadAndSave: withLoadAndSave,
608
458
  withUploadPicture: withUploadPicture,
609
459
  withUrlPicture: withUrlPicture
610
- }), /*#__PURE__*/_react["default"].createElement(StyledRow, {
460
+ }), /*#__PURE__*/_react.default.createElement(StyledRow, {
611
461
  "data-grow": canGrow,
612
462
  width: canvasSize.width,
613
463
  aspectRatio: "calc(".concat(canvasSize.width, " / ").concat(canvasSize.height, ")")
614
- }, /*#__PURE__*/_react["default"].createElement(_Canvas["default"], {
464
+ }, /*#__PURE__*/_react.default.createElement(_Canvas.default, {
615
465
  canGrow: canGrow,
616
466
  withGrid: withGrid,
617
467
  disabled: disabled,
@@ -636,7 +486,7 @@ var App = function App(_ref5) {
636
486
  selectionWidth: canvasSelectionWidth,
637
487
  selectionPadding: canvasSelectionPadding,
638
488
  isEditMode: isEditMode
639
- }), isEditMode && layersManipulation && /*#__PURE__*/_react["default"].createElement(_Layouts["default"], {
489
+ }), isEditMode && layersManipulation && /*#__PURE__*/_react.default.createElement(_Layouts.default, {
640
490
  withGrid: withGrid,
641
491
  setWithGrid: setWithGrid,
642
492
  disabled: disabled,
@@ -648,7 +498,7 @@ var App = function App(_ref5) {
648
498
  toggleShapeVisibility: toggleShapeVisibility,
649
499
  toggleShapeLock: toggleShapeLock,
650
500
  isLayoutPanelShown: isLayoutPanelShown
651
- })), isEditMode && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_SettingsBar["default"], {
501
+ })), isEditMode && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_SettingsBar.default, {
652
502
  width: canvasSize.width,
653
503
  disabled: disabled,
654
504
  activeTool: activeTool,
@@ -658,18 +508,16 @@ var App = function App(_ref5) {
658
508
  updateShape: updateShape,
659
509
  canvas: canvasRef.current,
660
510
  layersManipulation: layersManipulation,
661
- toggleLayoutPanel: function toggleLayoutPanel() {
662
- setIsLayoutPanelShown(function (prev) {
663
- return !prev;
664
- });
511
+ toggleLayoutPanel: () => {
512
+ setIsLayoutPanelShown(prev => !prev);
665
513
  },
666
514
  updateToolSettings: updateToolSettings
667
- }), /*#__PURE__*/_react["default"].createElement(_Loading["default"], {
515
+ }), /*#__PURE__*/_react.default.createElement(_Loading.default, {
668
516
  isLoading: isLoading
669
- }), /*#__PURE__*/_react["default"].createElement(_Snackbar["default"], {
517
+ }), /*#__PURE__*/_react.default.createElement(_Snackbar.default, {
670
518
  snackbarList: snackbarList
671
519
  })));
672
520
  };
673
521
 
674
522
  var _default = App;
675
- exports["default"] = _default;
523
+ exports.default = _default;