@yorab/react-paint 0.4.2 → 0.6.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 (36) hide show
  1. package/Changelog.md +25 -0
  2. package/README.md +0 -6
  3. package/dist/components/App.js +52 -43
  4. package/dist/components/Canvas.js +6 -6
  5. package/dist/components/settings/ColorField.js +5 -5
  6. package/dist/components/settings/FontFamilyField.js +6 -4
  7. package/dist/components/settings/Layouts.js +17 -8
  8. package/dist/components/settings/LineArrowField.js +6 -4
  9. package/dist/components/settings/LineTypeField.js +6 -4
  10. package/dist/components/settings/PointsNumberField.js +20 -30
  11. package/dist/components/settings/RangeField.js +1 -0
  12. package/dist/components/settings/SelectField.js +1 -0
  13. package/dist/components/settings/SettingsBar.js +141 -88
  14. package/dist/components/settings/ToggleField.js +56 -0
  15. package/dist/components/toolbox/EditTextBox.js +17 -10
  16. package/dist/components/toolbox/LoadFileTool.js +5 -3
  17. package/dist/components/toolbox/MenuGroup.js +37 -44
  18. package/dist/components/toolbox/Tool.js +4 -4
  19. package/dist/components/toolbox/Toolbar.js +81 -69
  20. package/dist/components/toolbox/ToolbarGroup.js +29 -31
  21. package/dist/constants/icons.js +6 -2
  22. package/dist/constants/style.js +3 -1
  23. package/dist/constants/tools.js +428 -0
  24. package/dist/hooks/useDoubleClick.js +46 -0
  25. package/dist/hooks/useDrawableCanvas.js +42 -53
  26. package/dist/styles.css +10 -10
  27. package/dist/types/Shapes.js +2 -16
  28. package/dist/types/tools.js +22 -0
  29. package/dist/utils/data.js +106 -28
  30. package/dist/utils/draw.js +3 -3
  31. package/dist/utils/file.js +15 -14
  32. package/dist/utils/selection.js +1 -1
  33. package/dist/utils/style.js +4 -2
  34. package/dist/utils/toolbar.js +66 -11
  35. package/dist/utils/transform.js +24 -11
  36. package/package.json +1 -1
@@ -0,0 +1,428 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.UPLOAD_PICTURE_TOOL = exports.UNDO_TOOL = exports.SETTINGS_DEFAULT_TEXT = exports.SETTINGS_DEFAULT_SQUARE = exports.SETTINGS_DEFAULT_RECT = exports.SETTINGS_DEFAULT_POLYGON = exports.SETTINGS_DEFAULT_PICTURE = exports.SETTINGS_DEFAULT_LINE = exports.SETTINGS_DEFAULT_ELLIPSE = exports.SETTINGS_DEFAULT_CURVE = exports.SETTINGS_DEFAULT_CIRCLE = exports.SETTINGS_DEFAULT_BRUSH = exports.SELECTION_TOOL = exports.SAVE_TOOL = exports.REDO_TOOL = exports.MOVE_TOOL = exports.LOAD_TOOL = exports.EXPORT_TOOL = exports.DEFAULT_SHAPE_TOOLS = exports.DEFAULT_SHAPE_TEXT = exports.DEFAULT_SHAPE_SQUARE = exports.DEFAULT_SHAPE_RECT = exports.DEFAULT_SHAPE_POLYGON = exports.DEFAULT_SHAPE_PICTURE = exports.DEFAULT_SHAPE_LINE = exports.DEFAULT_SHAPE_ELLIPSE = exports.DEFAULT_SHAPE_CURVE = exports.DEFAULT_SHAPE_CIRCLE = exports.DEFAULT_SHAPE_BRUSH = exports.CLEAR_TOOL = exports.ADD_URL_PICTURE_TOOL = void 0;
7
+
8
+ var _Shapes = require("../types/Shapes");
9
+
10
+ var _tools = require("../types/tools");
11
+
12
+ var _icons = require("./icons");
13
+
14
+ var _style = require("./style");
15
+
16
+ var PREFIX_ID = 'react-paint-';
17
+ var SETTINGS_DEFAULT_RECT = {
18
+ strokeColor: {
19
+ values: _style.STYLE_COLORS,
20
+ "default": 'black'
21
+ },
22
+ fillColor: {
23
+ values: _style.STYLE_COLORS,
24
+ "default": 'transparent'
25
+ },
26
+ opacity: {
27
+ min: 0,
28
+ max: 100,
29
+ step: 1,
30
+ "default": 100
31
+ },
32
+ lineWidth: {
33
+ min: 1,
34
+ max: 20,
35
+ step: 1,
36
+ "default": 1
37
+ },
38
+ lineDash: {
39
+ values: _style.STYLE_LINE_DASH,
40
+ "default": 0
41
+ }
42
+ };
43
+ exports.SETTINGS_DEFAULT_RECT = SETTINGS_DEFAULT_RECT;
44
+ var SETTINGS_DEFAULT_SQUARE = {
45
+ strokeColor: {
46
+ values: _style.STYLE_COLORS,
47
+ "default": 'black'
48
+ },
49
+ fillColor: {
50
+ values: _style.STYLE_COLORS,
51
+ "default": 'transparent'
52
+ },
53
+ opacity: {
54
+ min: 0,
55
+ max: 100,
56
+ step: 1,
57
+ "default": 100
58
+ },
59
+ lineWidth: {
60
+ min: 1,
61
+ max: 20,
62
+ step: 1,
63
+ "default": 1
64
+ },
65
+ lineDash: {
66
+ values: _style.STYLE_LINE_DASH,
67
+ "default": 0
68
+ }
69
+ };
70
+ exports.SETTINGS_DEFAULT_SQUARE = SETTINGS_DEFAULT_SQUARE;
71
+ var SETTINGS_DEFAULT_CIRCLE = {
72
+ strokeColor: {
73
+ values: _style.STYLE_COLORS,
74
+ "default": 'black'
75
+ },
76
+ fillColor: {
77
+ values: _style.STYLE_COLORS,
78
+ "default": 'transparent'
79
+ },
80
+ opacity: {
81
+ min: 0,
82
+ max: 100,
83
+ step: 1,
84
+ "default": 100
85
+ },
86
+ lineWidth: {
87
+ min: 1,
88
+ max: 20,
89
+ step: 1,
90
+ "default": 1
91
+ },
92
+ lineDash: {
93
+ values: _style.STYLE_LINE_DASH,
94
+ "default": 0
95
+ }
96
+ };
97
+ exports.SETTINGS_DEFAULT_CIRCLE = SETTINGS_DEFAULT_CIRCLE;
98
+ var SETTINGS_DEFAULT_ELLIPSE = {
99
+ strokeColor: {
100
+ values: _style.STYLE_COLORS,
101
+ "default": 'black'
102
+ },
103
+ fillColor: {
104
+ values: _style.STYLE_COLORS,
105
+ "default": 'transparent'
106
+ },
107
+ opacity: {
108
+ min: 0,
109
+ max: 100,
110
+ step: 1,
111
+ "default": 100
112
+ },
113
+ lineWidth: {
114
+ min: 1,
115
+ max: 20,
116
+ step: 1,
117
+ "default": 1
118
+ },
119
+ lineDash: {
120
+ values: _style.STYLE_LINE_DASH,
121
+ "default": 0
122
+ }
123
+ };
124
+ exports.SETTINGS_DEFAULT_ELLIPSE = SETTINGS_DEFAULT_ELLIPSE;
125
+ var SETTINGS_DEFAULT_PICTURE = {
126
+ opacity: {
127
+ min: 0,
128
+ max: 100,
129
+ step: 1,
130
+ "default": 100
131
+ }
132
+ };
133
+ exports.SETTINGS_DEFAULT_PICTURE = SETTINGS_DEFAULT_PICTURE;
134
+ var SETTINGS_DEFAULT_TEXT = {
135
+ strokeColor: {
136
+ values: _style.STYLE_COLORS,
137
+ "default": 'black'
138
+ },
139
+ opacity: {
140
+ min: 0,
141
+ max: 100,
142
+ step: 1,
143
+ "default": 100
144
+ },
145
+ fontFamily: {
146
+ values: _style.STYLE_FONTS,
147
+ "default": _style.STYLE_FONT_DEFAULT
148
+ },
149
+ fontBold: {
150
+ values: [false, true],
151
+ "default": false
152
+ },
153
+ fontItalic: {
154
+ values: [false, true],
155
+ "default": false
156
+ }
157
+ };
158
+ exports.SETTINGS_DEFAULT_TEXT = SETTINGS_DEFAULT_TEXT;
159
+ var SETTINGS_DEFAULT_BRUSH = {
160
+ strokeColor: {
161
+ values: _style.STYLE_COLORS,
162
+ "default": 'black'
163
+ },
164
+ opacity: {
165
+ min: 0,
166
+ max: 100,
167
+ step: 1,
168
+ "default": 100
169
+ },
170
+ lineWidth: {
171
+ min: 6,
172
+ max: 20,
173
+ step: 2,
174
+ "default": 10
175
+ },
176
+ lineDash: {
177
+ values: _style.STYLE_LINE_DASH,
178
+ "default": 0
179
+ }
180
+ };
181
+ exports.SETTINGS_DEFAULT_BRUSH = SETTINGS_DEFAULT_BRUSH;
182
+ var SETTINGS_DEFAULT_LINE = {
183
+ strokeColor: {
184
+ values: _style.STYLE_COLORS,
185
+ "default": 'black'
186
+ },
187
+ opacity: {
188
+ min: 0,
189
+ max: 100,
190
+ step: 1,
191
+ "default": 100
192
+ },
193
+ lineWidth: {
194
+ min: 1,
195
+ max: 20,
196
+ step: 1,
197
+ "default": 1
198
+ },
199
+ lineDash: {
200
+ values: _style.STYLE_LINE_DASH,
201
+ "default": 0
202
+ },
203
+ lineArrow: {
204
+ values: _style.STYLE_LINE_WITH_ARROW,
205
+ "default": 0
206
+ }
207
+ };
208
+ exports.SETTINGS_DEFAULT_LINE = SETTINGS_DEFAULT_LINE;
209
+ var SETTINGS_DEFAULT_POLYGON = {
210
+ strokeColor: {
211
+ values: _style.STYLE_COLORS,
212
+ "default": 'black'
213
+ },
214
+ fillColor: {
215
+ values: _style.STYLE_COLORS,
216
+ "default": 'black'
217
+ },
218
+ opacity: {
219
+ min: 0,
220
+ max: 100,
221
+ step: 1,
222
+ "default": 100
223
+ },
224
+ lineWidth: {
225
+ min: 1,
226
+ max: 20,
227
+ step: 1,
228
+ "default": 1
229
+ },
230
+ lineDash: {
231
+ values: _style.STYLE_LINE_DASH,
232
+ "default": 0
233
+ },
234
+ pointsCount: {
235
+ min: 3,
236
+ max: 10,
237
+ step: 1,
238
+ "default": 3
239
+ }
240
+ };
241
+ exports.SETTINGS_DEFAULT_POLYGON = SETTINGS_DEFAULT_POLYGON;
242
+ var SETTINGS_DEFAULT_CURVE = {
243
+ strokeColor: {
244
+ values: _style.STYLE_COLORS,
245
+ "default": 'black'
246
+ },
247
+ fillColor: {
248
+ values: _style.STYLE_COLORS,
249
+ "default": 'black'
250
+ },
251
+ opacity: {
252
+ min: 0,
253
+ max: 100,
254
+ step: 1,
255
+ "default": 100
256
+ },
257
+ lineWidth: {
258
+ min: 1,
259
+ max: 20,
260
+ step: 1,
261
+ "default": 1
262
+ },
263
+ lineDash: {
264
+ values: _style.STYLE_LINE_DASH,
265
+ "default": 0
266
+ },
267
+ pointsCount: {
268
+ min: 3,
269
+ max: 10,
270
+ step: 1,
271
+ "default": 3
272
+ }
273
+ };
274
+ exports.SETTINGS_DEFAULT_CURVE = SETTINGS_DEFAULT_CURVE;
275
+ var DEFAULT_SHAPE_PICTURE = {
276
+ type: _Shapes.ShapeEnum.picture,
277
+ id: "".concat(PREFIX_ID, "picture"),
278
+ icon: _icons.pictureIcon,
279
+ lib: 'Image',
280
+ settings: SETTINGS_DEFAULT_PICTURE
281
+ };
282
+ exports.DEFAULT_SHAPE_PICTURE = DEFAULT_SHAPE_PICTURE;
283
+ var DEFAULT_SHAPE_BRUSH = {
284
+ type: _Shapes.ShapeEnum.brush,
285
+ id: "".concat(PREFIX_ID, "brush"),
286
+ icon: _icons.brushIcon,
287
+ lib: 'Brosse',
288
+ settings: SETTINGS_DEFAULT_BRUSH
289
+ };
290
+ exports.DEFAULT_SHAPE_BRUSH = DEFAULT_SHAPE_BRUSH;
291
+ var DEFAULT_SHAPE_LINE = {
292
+ type: _Shapes.ShapeEnum.line,
293
+ id: "".concat(PREFIX_ID, "line"),
294
+ icon: _icons.arrowIcon,
295
+ lib: 'Ligne',
296
+ settings: SETTINGS_DEFAULT_LINE
297
+ };
298
+ exports.DEFAULT_SHAPE_LINE = DEFAULT_SHAPE_LINE;
299
+ var DEFAULT_SHAPE_POLYGON = {
300
+ type: _Shapes.ShapeEnum.polygon,
301
+ id: "".concat(PREFIX_ID, "polygon"),
302
+ icon: _icons.polygonIcon,
303
+ lib: 'Polygone',
304
+ settings: SETTINGS_DEFAULT_POLYGON
305
+ };
306
+ exports.DEFAULT_SHAPE_POLYGON = DEFAULT_SHAPE_POLYGON;
307
+ var DEFAULT_SHAPE_CURVE = {
308
+ type: _Shapes.ShapeEnum.curve,
309
+ id: "".concat(PREFIX_ID, "curve"),
310
+ icon: _icons.curveIcon,
311
+ lib: 'Courbe',
312
+ settings: SETTINGS_DEFAULT_CURVE
313
+ };
314
+ exports.DEFAULT_SHAPE_CURVE = DEFAULT_SHAPE_CURVE;
315
+ var DEFAULT_SHAPE_RECT = {
316
+ type: _Shapes.ShapeEnum.rect,
317
+ id: "".concat(PREFIX_ID, "rect"),
318
+ icon: _icons.squareIcon,
319
+ // temporary
320
+ lib: 'Rectangle',
321
+ settings: SETTINGS_DEFAULT_RECT
322
+ };
323
+ exports.DEFAULT_SHAPE_RECT = DEFAULT_SHAPE_RECT;
324
+ var DEFAULT_SHAPE_SQUARE = {
325
+ type: _Shapes.ShapeEnum.square,
326
+ id: "".concat(PREFIX_ID, "square"),
327
+ icon: _icons.squareIcon,
328
+ lib: 'Carré',
329
+ settings: SETTINGS_DEFAULT_SQUARE
330
+ };
331
+ exports.DEFAULT_SHAPE_SQUARE = DEFAULT_SHAPE_SQUARE;
332
+ var DEFAULT_SHAPE_CIRCLE = {
333
+ type: _Shapes.ShapeEnum.circle,
334
+ id: "".concat(PREFIX_ID, "circle"),
335
+ icon: _icons.circleIcon,
336
+ lib: 'Cercle',
337
+ settings: SETTINGS_DEFAULT_CIRCLE
338
+ };
339
+ exports.DEFAULT_SHAPE_CIRCLE = DEFAULT_SHAPE_CIRCLE;
340
+ var DEFAULT_SHAPE_ELLIPSE = {
341
+ type: _Shapes.ShapeEnum.ellipse,
342
+ id: "".concat(PREFIX_ID, "ellipse"),
343
+ icon: _icons.circleIcon,
344
+ // temporary
345
+ lib: 'Ellipse',
346
+ settings: SETTINGS_DEFAULT_ELLIPSE
347
+ };
348
+ exports.DEFAULT_SHAPE_ELLIPSE = DEFAULT_SHAPE_ELLIPSE;
349
+ var DEFAULT_SHAPE_TEXT = {
350
+ type: _Shapes.ShapeEnum.text,
351
+ id: "".concat(PREFIX_ID, "text"),
352
+ icon: _icons.textIcon,
353
+ lib: 'Texte',
354
+ settings: SETTINGS_DEFAULT_TEXT
355
+ };
356
+ exports.DEFAULT_SHAPE_TEXT = DEFAULT_SHAPE_TEXT;
357
+ var DEFAULT_SHAPE_TOOLS = [DEFAULT_SHAPE_BRUSH, DEFAULT_SHAPE_LINE, DEFAULT_SHAPE_POLYGON, DEFAULT_SHAPE_CURVE, DEFAULT_SHAPE_RECT, DEFAULT_SHAPE_SQUARE, DEFAULT_SHAPE_CIRCLE, DEFAULT_SHAPE_ELLIPSE, DEFAULT_SHAPE_PICTURE, DEFAULT_SHAPE_TEXT];
358
+ exports.DEFAULT_SHAPE_TOOLS = DEFAULT_SHAPE_TOOLS;
359
+ var SELECTION_TOOL = {
360
+ id: "".concat(PREFIX_ID, "selection"),
361
+ type: _tools.ActionsEnum.selection,
362
+ icon: _icons.selectIcon,
363
+ lib: 'Sélection'
364
+ };
365
+ exports.SELECTION_TOOL = SELECTION_TOOL;
366
+ var UNDO_TOOL = {
367
+ id: "".concat(PREFIX_ID, "undo"),
368
+ type: _tools.ActionsEnum.undo,
369
+ icon: _icons.undoIcon,
370
+ lib: 'Undo'
371
+ };
372
+ exports.UNDO_TOOL = UNDO_TOOL;
373
+ var REDO_TOOL = {
374
+ id: "".concat(PREFIX_ID, "redo"),
375
+ type: _tools.ActionsEnum.redo,
376
+ icon: _icons.redoIcon,
377
+ lib: 'Redo'
378
+ };
379
+ exports.REDO_TOOL = REDO_TOOL;
380
+ var CLEAR_TOOL = {
381
+ id: "".concat(PREFIX_ID, "clear"),
382
+ type: _tools.ActionsEnum.clear,
383
+ icon: _icons.clearIcon,
384
+ lib: 'Clear'
385
+ };
386
+ exports.CLEAR_TOOL = CLEAR_TOOL;
387
+ var EXPORT_TOOL = {
388
+ id: "".concat(PREFIX_ID, "export"),
389
+ type: _tools.ActionsEnum["export"],
390
+ icon: _icons.exportFileIcon,
391
+ lib: 'Export PNG'
392
+ };
393
+ exports.EXPORT_TOOL = EXPORT_TOOL;
394
+ var LOAD_TOOL = {
395
+ id: "".concat(PREFIX_ID, "load"),
396
+ type: _tools.ActionsEnum.loadFile,
397
+ icon: _icons.openFileIcon,
398
+ lib: 'Load project'
399
+ };
400
+ exports.LOAD_TOOL = LOAD_TOOL;
401
+ var SAVE_TOOL = {
402
+ id: "".concat(PREFIX_ID, "save"),
403
+ type: _tools.ActionsEnum.saveFile,
404
+ icon: _icons.saveIcon,
405
+ lib: 'Save project'
406
+ };
407
+ exports.SAVE_TOOL = SAVE_TOOL;
408
+ var MOVE_TOOL = {
409
+ id: "".concat(PREFIX_ID, "move"),
410
+ type: _tools.ActionsEnum.move,
411
+ icon: _icons.selectIcon,
412
+ lib: 'Move'
413
+ };
414
+ exports.MOVE_TOOL = MOVE_TOOL;
415
+ var UPLOAD_PICTURE_TOOL = {
416
+ id: "".concat(PREFIX_ID, "upload-picture"),
417
+ type: _tools.ActionsEnum.uploadPicture,
418
+ icon: _icons.pictureIcon,
419
+ lib: 'Upload picture'
420
+ };
421
+ exports.UPLOAD_PICTURE_TOOL = UPLOAD_PICTURE_TOOL;
422
+ var ADD_URL_PICTURE_TOOL = {
423
+ id: "".concat(PREFIX_ID, "upload-picture"),
424
+ type: _tools.ActionsEnum.addUrlPicture,
425
+ icon: _icons.pictureIcon,
426
+ lib: 'Add picture from URL'
427
+ };
428
+ exports.ADD_URL_PICTURE_TOOL = ADD_URL_PICTURE_TOOL;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var DELTA_TIME_THRESHOLD_MS = 300;
11
+
12
+ var useDoubleClick = function useDoubleClick() {
13
+ var lastClickTimestampRef = (0, _react.useRef)(undefined);
14
+ var callbackRef = (0, _react.useRef)(undefined);
15
+
16
+ var onClick = function onClick(e) {
17
+ var currentTimestamp = new Date().getTime();
18
+
19
+ if (lastClickTimestampRef.current && currentTimestamp < lastClickTimestampRef.current + DELTA_TIME_THRESHOLD_MS) {
20
+ var _callbackRef$current;
21
+
22
+ (_callbackRef$current = callbackRef.current) === null || _callbackRef$current === void 0 ? void 0 : _callbackRef$current.call(callbackRef, e);
23
+ }
24
+
25
+ lastClickTimestampRef.current = new Date().getTime();
26
+ };
27
+
28
+ var registerDoubleClickEvent = function registerDoubleClickEvent(element, callback) {
29
+ callbackRef.current = callback;
30
+ element.addEventListener('click', onClick);
31
+ element.addEventListener('touchend', onClick);
32
+ };
33
+
34
+ var unRegisterDoubleClickEvent = function unRegisterDoubleClickEvent(element) {
35
+ element.removeEventListener('click', onClick);
36
+ element.removeEventListener('touchend', onClick);
37
+ };
38
+
39
+ return {
40
+ registerDoubleClickEvent: registerDoubleClickEvent,
41
+ unRegisterDoubleClickEvent: unRegisterDoubleClickEvent
42
+ };
43
+ };
44
+
45
+ var _default = useDoubleClick;
46
+ exports["default"] = _default;
@@ -25,8 +25,14 @@ var _transform = require("../utils/transform");
25
25
 
26
26
  var _data = require("../utils/data");
27
27
 
28
+ var _tools = require("../types/tools");
29
+
30
+ var _tools2 = require("../constants/tools");
31
+
32
+ var _useDoubleClick2 = _interopRequireDefault(require("./useDoubleClick"));
33
+
28
34
  var handleMove = function handleMove(e, canvasRef, activeTool, canvasOffset, selectedShape, selectionMode, canvasOffsetStartPosition, width, height, scaleRatio, setHoverMode, updateSingleShape, setCanvasOffset, setSelectedShape, selectionPadding) {
29
- if (activeTool === _Shapes.ToolEnum.move && canvasOffsetStartPosition !== undefined) {
35
+ if (activeTool.type === _tools.ActionsEnum.move && canvasOffsetStartPosition !== undefined) {
30
36
  var _cursorPosition = (0, _intersect.getCursorPosition)(e, canvasRef.current, width, height, scaleRatio);
31
37
 
32
38
  setCanvasOffset([_cursorPosition[0] - canvasOffsetStartPosition[0], _cursorPosition[1] - canvasOffsetStartPosition[1]]);
@@ -36,7 +42,7 @@ var handleMove = function handleMove(e, canvasRef, activeTool, canvasOffset, sel
36
42
  if (selectedShape.locked) return;
37
43
  var cursorPosition = (0, _intersect.getCursorPosition)(e, canvasRef.current, width, height, scaleRatio);
38
44
 
39
- if (selectionMode.mode === _Mode.SelectionModeLib["default"]) {
45
+ if (selectionMode.mode === _Mode.SelectionModeLib["default"] || selectionMode.mode === _Mode.SelectionModeLib.textedition) {
40
46
  var positionIntersection = (0, _intersect.checkPositionIntersection)(selectedShape, cursorPosition, canvasOffset, selectionPadding, scaleRatio, true) || {
41
47
  mode: _Mode.SelectionModeLib["default"]
42
48
  };
@@ -62,7 +68,6 @@ var useDrawableCanvas = function useDrawableCanvas(_ref) {
62
68
  drawCanvasRef = _ref.drawCanvasRef,
63
69
  setActiveTool = _ref.setActiveTool,
64
70
  shapes = _ref.shapes,
65
- defaultConf = _ref.defaultConf,
66
71
  selectionMode = _ref.selectionMode,
67
72
  activeTool = _ref.activeTool,
68
73
  isInsideComponent = _ref.isInsideComponent,
@@ -88,6 +93,10 @@ var useDrawableCanvas = function useDrawableCanvas(_ref) {
88
93
  hoverMode = _useState2[0],
89
94
  setHoverMode = _useState2[1];
90
95
 
96
+ var _useDoubleClick = (0, _useDoubleClick2["default"])(),
97
+ registerDoubleClickEvent = _useDoubleClick.registerDoubleClickEvent,
98
+ unRegisterDoubleClickEvent = _useDoubleClick.unRegisterDoubleClickEvent;
99
+
91
100
  (0, _react.useEffect)(function () {
92
101
  var handleMouseMove = function handleMouseMove(e) {
93
102
  return window.requestAnimationFrame(function () {
@@ -108,28 +117,9 @@ var useDrawableCanvas = function useDrawableCanvas(_ref) {
108
117
  };
109
118
  }, [isInsideComponent, selectionCanvasRef, selectedShape, selectionMode, setHoverMode, canvasOffset, canvasOffsetStartPosition, width, height, scaleRatio, updateSingleShape, activeTool, setCanvasOffset, setSelectedShape, selectionPadding]);
110
119
  (0, _react.useEffect)(function () {
111
- var handleMouseUp = function handleMouseUp(e) {
120
+ var handleMouseUp = function handleMouseUp() {
112
121
  if (selectionMode.mode === _Mode.SelectionModeLib.textedition) return;
113
122
 
114
- if (activeTool === _Shapes.ShapeEnum.text) {
115
- var _drawCanvasRef$curren;
116
-
117
- var cursorPosition = (0, _intersect.getCursorPosition)(e, selectionCanvasRef.current, width, height, scaleRatio);
118
- var drawCtx = (_drawCanvasRef$curren = drawCanvasRef.current) === null || _drawCanvasRef$curren === void 0 ? void 0 : _drawCanvasRef$curren.getContext('2d');
119
- if (!drawCtx) return;
120
-
121
- var _newShape2 = (0, _data.createShape)(drawCtx, activeTool, cursorPosition, defaultConf);
122
-
123
- addShape(_newShape2);
124
- setActiveTool(_Shapes.ToolEnum.selection);
125
- setSelectedShape(_newShape2);
126
- setSelectionMode({
127
- mode: _Mode.SelectionModeLib.textedition,
128
- defaultValue: _newShape2.value
129
- });
130
- return;
131
- }
132
-
133
123
  if (selectionMode.mode !== _Mode.SelectionModeLib["default"]) {
134
124
  setSelectionMode({
135
125
  mode: _Mode.SelectionModeLib["default"]
@@ -149,7 +139,7 @@ var useDrawableCanvas = function useDrawableCanvas(_ref) {
149
139
  document.removeEventListener('touchend', handleMouseUp);
150
140
  }
151
141
  };
152
- }, [isInsideComponent, selectionCanvasRef, drawCanvasRef, selectionMode, saveShapes, activeTool, addShape, defaultConf, width, height, scaleRatio, setActiveTool, setSelectedShape, setSelectionMode]);
142
+ }, [isInsideComponent, selectionMode, saveShapes, setSelectionMode]);
153
143
  (0, _react.useEffect)(function () {
154
144
  var ref = selectionCanvasRef.current;
155
145
  if (!ref) return;
@@ -159,50 +149,52 @@ var useDrawableCanvas = function useDrawableCanvas(_ref) {
159
149
  e.preventDefault();
160
150
  var cursorPosition = (0, _intersect.getCursorPosition)(e, selectionCanvasRef.current, width, height, scaleRatio);
161
151
 
162
- if (activeTool === _Shapes.ToolEnum.selection) {
152
+ if (activeTool.type === _tools.ActionsEnum.selection) {
163
153
  var _selectShape = (0, _selection.selectShape)(shapes, cursorPosition, scaleRatio, canvasOffset, selectedShape, selectionPadding),
164
154
  shape = _selectShape.shape,
165
155
  mode = _selectShape.mode;
166
156
 
167
157
  setSelectedShape(shape);
168
158
  setSelectionMode(mode);
169
- } else if (activeTool === _Shapes.ToolEnum.move) {
159
+ } else if (activeTool.type === _tools.ActionsEnum.move) {
170
160
  setCanvasOffsetStartPosition(cursorPosition);
171
161
  }
172
162
 
173
- if (_fp["default"].includes(activeTool, _Shapes.ShapeEnum)) {
174
- var _drawCanvasRef$curren2;
163
+ if (_fp["default"].includes(activeTool.type, _Shapes.ShapeEnum)) {
164
+ var _drawCanvasRef$curren;
175
165
 
176
- var drawCtx = (_drawCanvasRef$curren2 = drawCanvasRef.current) === null || _drawCanvasRef$curren2 === void 0 ? void 0 : _drawCanvasRef$curren2.getContext('2d');
166
+ var drawCtx = (_drawCanvasRef$curren = drawCanvasRef.current) === null || _drawCanvasRef$curren === void 0 ? void 0 : _drawCanvasRef$curren.getContext('2d');
177
167
  if (!drawCtx) return;
178
168
 
179
- if (activeTool === _Shapes.ShapeEnum.brush) {
169
+ if (activeTool.type === _Shapes.ShapeEnum.brush) {
180
170
  if (!!selectedShape) {
181
- var _newShape3 = (0, _transform.createNewPointGroupToShape)(selectedShape, cursorPosition);
171
+ var _newShape2 = (0, _transform.createNewPointGroupToShape)(selectedShape, cursorPosition);
182
172
 
183
- updateSingleShape(_newShape3);
184
- setSelectedShape(_newShape3);
173
+ updateSingleShape(_newShape2);
174
+ setSelectedShape(_newShape2);
185
175
  } else {
186
- var _newShape4 = (0, _data.createShape)(drawCtx, activeTool, cursorPosition, defaultConf);
176
+ var _newShape3 = (0, _data.createShape)(drawCtx, activeTool, cursorPosition);
187
177
 
188
- addShape(_newShape4);
189
- setSelectedShape(_newShape4);
178
+ if (!_newShape3) return;
179
+ addShape(_newShape3);
180
+ setSelectedShape(_newShape3);
190
181
  }
191
182
 
192
183
  setSelectionMode({
193
184
  mode: _Mode.SelectionModeLib.brush
194
185
  });
195
- } else if (activeTool !== _Shapes.ShapeEnum.text) {
196
- var _newShape5 = (0, _data.createShape)(drawCtx, activeTool, cursorPosition, defaultConf);
186
+ } else {
187
+ var _newShape4 = (0, _data.createShape)(drawCtx, activeTool, cursorPosition);
197
188
 
198
- addShape(_newShape5);
199
- setActiveTool(_Shapes.ToolEnum.selection);
200
- setSelectedShape(_newShape5);
189
+ if (!_newShape4) return;
190
+ addShape(_newShape4);
191
+ setActiveTool(_tools2.SELECTION_TOOL);
192
+ setSelectedShape(_newShape4);
201
193
  setSelectionMode({
202
194
  mode: _Mode.SelectionModeLib.resize,
203
195
  cursorStartPosition: cursorPosition,
204
- originalShape: _newShape5,
205
- anchor: activeTool === _Shapes.ShapeEnum.line || activeTool === _Shapes.ShapeEnum.polygon || activeTool === _Shapes.ShapeEnum.curve ? 0 : [1, 1]
196
+ originalShape: _newShape4,
197
+ anchor: activeTool.type === _Shapes.ShapeEnum.line || activeTool.type === _Shapes.ShapeEnum.polygon || activeTool.type === _Shapes.ShapeEnum.curve ? 0 : [1, 1]
206
198
  });
207
199
  }
208
200
  }
@@ -218,13 +210,13 @@ var useDrawableCanvas = function useDrawableCanvas(_ref) {
218
210
  ref.removeEventListener('mousedown', handleMouseDown);
219
211
  ref.removeEventListener('touchstart', handleMouseDown);
220
212
  };
221
- }, [disabled, selectionCanvasRef, drawCanvasRef, selectedShape, activeTool, canvasOffset, setCanvasOffsetStartPosition, shapes, defaultConf, width, height, scaleRatio, updateSingleShape, addShape, setActiveTool, setSelectedShape, setSelectionMode, selectionPadding]);
213
+ }, [disabled, selectionCanvasRef, drawCanvasRef, selectedShape, activeTool, canvasOffset, setCanvasOffsetStartPosition, shapes, width, height, scaleRatio, updateSingleShape, addShape, setActiveTool, setSelectedShape, setSelectionMode, selectionPadding]);
222
214
  (0, _react.useEffect)(function () {
223
215
  var ref = selectionCanvasRef.current;
224
216
  if (!ref) return;
225
217
 
226
218
  var handleDoubleClick = function handleDoubleClick(e) {
227
- if (activeTool === _Shapes.ToolEnum.selection) {
219
+ if (activeTool.type === _tools.ActionsEnum.selection) {
228
220
  if ((selectedShape === null || selectedShape === void 0 ? void 0 : selectedShape.type) === _Shapes.ShapeEnum.text) {
229
221
  var cursorPosition = (0, _intersect.getCursorPosition)(e, selectionCanvasRef.current, width, height, scaleRatio);
230
222
 
@@ -239,15 +231,12 @@ var useDrawableCanvas = function useDrawableCanvas(_ref) {
239
231
  };
240
232
 
241
233
  if (isInsideComponent) {
242
- ref.addEventListener('dblclick', handleDoubleClick);
234
+ registerDoubleClickEvent(ref, handleDoubleClick);
235
+ return function () {
236
+ unRegisterDoubleClickEvent(ref);
237
+ };
243
238
  }
244
-
245
- return function () {
246
- if (isInsideComponent) {
247
- ref.removeEventListener('dblclick', handleDoubleClick);
248
- }
249
- };
250
- }, [isInsideComponent, selectionCanvasRef, activeTool, selectedShape, width, height, scaleRatio, canvasOffset, setSelectionMode, selectionPadding]);
239
+ }, [registerDoubleClickEvent, unRegisterDoubleClickEvent, isInsideComponent, selectionCanvasRef, activeTool, selectedShape, width, height, scaleRatio, canvasOffset, setSelectionMode, selectionPadding]);
251
240
  return {
252
241
  hoverMode: hoverMode
253
242
  };