@yorab/react-paint 0.6.4 → 0.7.1

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