@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.
- package/Changelog.md +25 -0
- package/README.md +0 -6
- package/dist/components/App.js +52 -43
- package/dist/components/Canvas.js +6 -6
- package/dist/components/settings/ColorField.js +5 -5
- package/dist/components/settings/FontFamilyField.js +6 -4
- package/dist/components/settings/Layouts.js +17 -8
- package/dist/components/settings/LineArrowField.js +6 -4
- package/dist/components/settings/LineTypeField.js +6 -4
- package/dist/components/settings/PointsNumberField.js +20 -30
- package/dist/components/settings/RangeField.js +1 -0
- package/dist/components/settings/SelectField.js +1 -0
- package/dist/components/settings/SettingsBar.js +141 -88
- package/dist/components/settings/ToggleField.js +56 -0
- package/dist/components/toolbox/EditTextBox.js +17 -10
- package/dist/components/toolbox/LoadFileTool.js +5 -3
- package/dist/components/toolbox/MenuGroup.js +37 -44
- package/dist/components/toolbox/Tool.js +4 -4
- package/dist/components/toolbox/Toolbar.js +81 -69
- package/dist/components/toolbox/ToolbarGroup.js +29 -31
- package/dist/constants/icons.js +6 -2
- package/dist/constants/style.js +3 -1
- package/dist/constants/tools.js +428 -0
- package/dist/hooks/useDoubleClick.js +46 -0
- package/dist/hooks/useDrawableCanvas.js +42 -53
- package/dist/styles.css +10 -10
- package/dist/types/Shapes.js +2 -16
- package/dist/types/tools.js +22 -0
- package/dist/utils/data.js +106 -28
- package/dist/utils/draw.js +3 -3
- package/dist/utils/file.js +15 -14
- package/dist/utils/selection.js +1 -1
- package/dist/utils/style.js +4 -2
- package/dist/utils/toolbar.js +66 -11
- package/dist/utils/transform.js +24 -11
- 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 ===
|
|
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(
|
|
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,
|
|
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 ===
|
|
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 ===
|
|
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$
|
|
163
|
+
if (_fp["default"].includes(activeTool.type, _Shapes.ShapeEnum)) {
|
|
164
|
+
var _drawCanvasRef$curren;
|
|
175
165
|
|
|
176
|
-
var drawCtx = (_drawCanvasRef$
|
|
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
|
|
171
|
+
var _newShape2 = (0, _transform.createNewPointGroupToShape)(selectedShape, cursorPosition);
|
|
182
172
|
|
|
183
|
-
updateSingleShape(
|
|
184
|
-
setSelectedShape(
|
|
173
|
+
updateSingleShape(_newShape2);
|
|
174
|
+
setSelectedShape(_newShape2);
|
|
185
175
|
} else {
|
|
186
|
-
var
|
|
176
|
+
var _newShape3 = (0, _data.createShape)(drawCtx, activeTool, cursorPosition);
|
|
187
177
|
|
|
188
|
-
|
|
189
|
-
|
|
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
|
|
196
|
-
var
|
|
186
|
+
} else {
|
|
187
|
+
var _newShape4 = (0, _data.createShape)(drawCtx, activeTool, cursorPosition);
|
|
197
188
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
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:
|
|
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,
|
|
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 ===
|
|
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
|
|
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
|
};
|