@yorab/react-paint 0.7.6 → 0.9.0

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 (153) hide show
  1. package/README.md +1 -11
  2. package/dist/components/App.d.ts +20 -0
  3. package/dist/components/Canvas.d.ts +38 -0
  4. package/dist/components/common/Button.d.ts +16 -0
  5. package/dist/components/common/Loading.d.ts +7 -0
  6. package/dist/components/common/Modal.d.ts +10 -0
  7. package/dist/components/common/Panel.d.ts +13 -0
  8. package/dist/components/common/Snackbar.d.ts +8 -0
  9. package/dist/components/settings/ColorField.d.ts +15 -0
  10. package/dist/components/settings/DeleteButton.d.ts +9 -0
  11. package/dist/components/settings/FontFamilyField.d.ts +12 -0
  12. package/dist/components/settings/LayoutButton.d.ts +8 -0
  13. package/dist/components/settings/Layouts.d.ts +19 -0
  14. package/dist/components/settings/LineArrowField.d.ts +12 -0
  15. package/dist/components/settings/LineTypeField.d.ts +16 -0
  16. package/dist/components/settings/PointsNumberField.d.ts +13 -0
  17. package/dist/components/settings/RangeField.d.ts +18 -0
  18. package/dist/components/settings/SelectField.d.ts +18 -0
  19. package/dist/components/settings/SettingsBar.d.ts +21 -0
  20. package/dist/components/settings/ToggleField.d.ts +12 -0
  21. package/dist/components/toolbox/EditTextBox.d.ts +14 -0
  22. package/dist/components/toolbox/LoadFileTool.d.ts +12 -0
  23. package/dist/components/toolbox/MenuGroup.d.ts +35 -0
  24. package/dist/components/toolbox/PictureUrlInput.d.ts +8 -0
  25. package/dist/components/toolbox/Tool.d.ts +12 -0
  26. package/dist/components/toolbox/Toolbar.d.ts +27 -0
  27. package/dist/components/toolbox/ToolbarGroup.d.ts +18 -0
  28. package/dist/constants/app.d.ts +41 -0
  29. package/dist/constants/icons.d.ts +41 -0
  30. package/dist/constants/loading.d.ts +1 -0
  31. package/dist/constants/picture.d.ts +1 -0
  32. package/dist/constants/shapes.d.ts +8 -0
  33. package/dist/constants/snackbar.d.ts +7 -0
  34. package/dist/constants/style.d.ts +17 -0
  35. package/dist/constants/tools.d.ts +32 -0
  36. package/dist/hooks/useComponent.d.ts +9 -0
  37. package/dist/hooks/useDoubleClick.d.ts +5 -0
  38. package/dist/hooks/useDrag.d.ts +15 -0
  39. package/dist/hooks/useDrawableCanvas.d.ts +37 -0
  40. package/dist/hooks/useKeyboard.d.ts +20 -0
  41. package/dist/hooks/useResizeObserver.d.ts +7 -0
  42. package/dist/hooks/useShapes.d.ts +26 -0
  43. package/dist/hooks/useSnackbar.d.ts +10 -0
  44. package/dist/react-paint.css +1 -0
  45. package/dist/react-paint.js +8887 -0
  46. package/dist/react-paint.umd.cjs +27 -0
  47. package/dist/types/Mode.d.ts +43 -0
  48. package/dist/types/Shapes.d.ts +128 -0
  49. package/dist/types/react.d.ts +7 -0
  50. package/dist/types/snackbar.d.ts +7 -0
  51. package/dist/types/tools.d.ts +125 -0
  52. package/dist/types/utils.d.ts +4 -0
  53. package/dist/utils/canvas.d.ts +10 -0
  54. package/dist/utils/data.d.ts +4 -0
  55. package/dist/utils/dom.d.ts +1 -0
  56. package/dist/utils/file.d.ts +10 -0
  57. package/dist/utils/grid.d.ts +3 -0
  58. package/dist/utils/intersect.d.ts +6 -0
  59. package/dist/utils/migration.d.ts +147 -0
  60. package/dist/utils/selection/lineSelection.d.ts +12 -0
  61. package/dist/utils/selection/rectSelection.d.ts +13 -0
  62. package/dist/utils/selection.d.ts +7 -0
  63. package/dist/utils/shapes/brush.d.ts +20 -0
  64. package/dist/utils/shapes/circle.d.ts +17 -0
  65. package/dist/utils/shapes/curve.d.ts +16 -0
  66. package/dist/utils/shapes/ellipse.d.ts +17 -0
  67. package/dist/utils/shapes/index.d.ts +29 -0
  68. package/dist/utils/shapes/line.d.ts +17 -0
  69. package/dist/utils/shapes/path.d.ts +9 -0
  70. package/dist/utils/shapes/picture.d.ts +12 -0
  71. package/dist/utils/shapes/polygon.d.ts +17 -0
  72. package/dist/utils/shapes/rectangle.d.ts +20 -0
  73. package/dist/utils/shapes/text.d.ts +19 -0
  74. package/dist/utils/shapes/triangle.d.ts +3 -0
  75. package/dist/utils/string.d.ts +3 -0
  76. package/dist/utils/style.d.ts +2 -0
  77. package/dist/utils/toolbar.d.ts +13 -0
  78. package/dist/utils/transform.d.ts +9 -0
  79. package/dist/utils/trigo.d.ts +16 -0
  80. package/package.json +52 -57
  81. package/dist/components/App.js +0 -496
  82. package/dist/components/Canvas.js +0 -194
  83. package/dist/components/common/Button.js +0 -88
  84. package/dist/components/common/Loading.js +0 -57
  85. package/dist/components/common/Modal.js +0 -46
  86. package/dist/components/common/Panel.js +0 -43
  87. package/dist/components/common/Snackbar.js +0 -68
  88. package/dist/components/settings/ColorField.js +0 -125
  89. package/dist/components/settings/DeleteButton.js +0 -37
  90. package/dist/components/settings/FontFamilyField.js +0 -67
  91. package/dist/components/settings/LayoutButton.js +0 -39
  92. package/dist/components/settings/Layouts.js +0 -214
  93. package/dist/components/settings/LineArrowField.js +0 -67
  94. package/dist/components/settings/LineTypeField.js +0 -65
  95. package/dist/components/settings/PointsNumberField.js +0 -45
  96. package/dist/components/settings/RangeField.js +0 -82
  97. package/dist/components/settings/SelectField.js +0 -81
  98. package/dist/components/settings/SettingsBar.js +0 -383
  99. package/dist/components/settings/ToggleField.js +0 -49
  100. package/dist/components/toolbox/EditTextBox.js +0 -138
  101. package/dist/components/toolbox/LoadFileTool.js +0 -58
  102. package/dist/components/toolbox/MenuGroup.js +0 -173
  103. package/dist/components/toolbox/PictureUrlInput.js +0 -68
  104. package/dist/components/toolbox/Tool.js +0 -41
  105. package/dist/components/toolbox/Toolbar.js +0 -203
  106. package/dist/components/toolbox/ToolbarGroup.js +0 -134
  107. package/dist/constants/app.js +0 -51
  108. package/dist/constants/icons.js +0 -88
  109. package/dist/constants/loading.js +0 -8
  110. package/dist/constants/picture.js +0 -8
  111. package/dist/constants/shapes.js +0 -20
  112. package/dist/constants/snackbar.js +0 -15
  113. package/dist/constants/style.js +0 -35
  114. package/dist/constants/tools.js +0 -424
  115. package/dist/hooks/useComponent.js +0 -47
  116. package/dist/hooks/useDoubleClick.js +0 -46
  117. package/dist/hooks/useDrag.js +0 -92
  118. package/dist/hooks/useDrawableCanvas.js +0 -230
  119. package/dist/hooks/useKeyboard.js +0 -142
  120. package/dist/hooks/useResizeObserver.js +0 -42
  121. package/dist/hooks/useShapes.js +0 -184
  122. package/dist/hooks/useSnackbar.js +0 -56
  123. package/dist/styles.css +0 -91
  124. package/dist/types/Mode.js +0 -5
  125. package/dist/types/Shapes.js +0 -5
  126. package/dist/types/snackbar.js +0 -5
  127. package/dist/types/tools.js +0 -5
  128. package/dist/types/utils.js +0 -5
  129. package/dist/utils/canvas.js +0 -49
  130. package/dist/utils/data.js +0 -49
  131. package/dist/utils/dom.js +0 -12
  132. package/dist/utils/file.js +0 -177
  133. package/dist/utils/intersect.js +0 -122
  134. package/dist/utils/migration.js +0 -59
  135. package/dist/utils/selection.js +0 -86
  136. package/dist/utils/shapes/brush.js +0 -135
  137. package/dist/utils/shapes/circle.js +0 -93
  138. package/dist/utils/shapes/curve.js +0 -55
  139. package/dist/utils/shapes/default.js +0 -73
  140. package/dist/utils/shapes/ellipse.js +0 -101
  141. package/dist/utils/shapes/grid.js +0 -36
  142. package/dist/utils/shapes/index.js +0 -341
  143. package/dist/utils/shapes/line.js +0 -179
  144. package/dist/utils/shapes/picture.js +0 -109
  145. package/dist/utils/shapes/polygon.js +0 -69
  146. package/dist/utils/shapes/rectangle.js +0 -100
  147. package/dist/utils/shapes/text.js +0 -128
  148. package/dist/utils/shapes/triangle.js +0 -24
  149. package/dist/utils/string.js +0 -36
  150. package/dist/utils/style.js +0 -46
  151. package/dist/utils/toolbar.js +0 -78
  152. package/dist/utils/transform.js +0 -109
  153. package/dist/utils/trigo.js +0 -42
@@ -1,496 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _react = _interopRequireWildcard(require("react"));
11
-
12
- var _Canvas = _interopRequireDefault(require("./Canvas"));
13
-
14
- var _Layouts = _interopRequireDefault(require("./settings/Layouts"));
15
-
16
- var _Toolbar = _interopRequireDefault(require("./toolbox/Toolbar"));
17
-
18
- var _react2 = require("@linaria/react");
19
-
20
- var _SettingsBar = _interopRequireDefault(require("./settings/SettingsBar"));
21
-
22
- var _style = require("../constants/style");
23
-
24
- var _useKeyboard = _interopRequireDefault(require("../hooks/useKeyboard"));
25
-
26
- var _file = require("../utils/file");
27
-
28
- var _useComponent = _interopRequireDefault(require("../hooks/useComponent"));
29
-
30
- var _useShapes = _interopRequireDefault(require("../hooks/useShapes"));
31
-
32
- var _Snackbar = _interopRequireDefault(require("./common/Snackbar"));
33
-
34
- var _useSnackbar = _interopRequireDefault(require("../hooks/useSnackbar"));
35
-
36
- var _Loading = _interopRequireDefault(require("./common/Loading"));
37
-
38
- var _data = require("../utils/data");
39
-
40
- var _useResizeObserver = _interopRequireDefault(require("../hooks/useResizeObserver"));
41
-
42
- var _toolbar = require("../utils/toolbar");
43
-
44
- var _tools = require("../constants/tools");
45
-
46
- var _fp = _interopRequireDefault(require("lodash/fp"));
47
-
48
- var _app = require("../constants/app");
49
-
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); }
51
-
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; }
53
-
54
- const StyledApp = /*#__PURE__*/(0, _react2.styled)('div')({
55
- name: "StyledApp",
56
- class: "s1v9piyg",
57
- vars: {
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;
74
- return "min(100%, ".concat(canvasWidth, "px)");
75
- }],
76
- "s1v9piyg-13": [_ref2 => {
77
- let {
78
- canvasWidth
79
- } = _ref2;
80
- return canvasWidth;
81
- }, "px"]
82
- }
83
- });
84
- const StyledRow = /*#__PURE__*/(0, _react2.styled)('div')({
85
- name: "StyledRow",
86
- class: "s6o5tmu",
87
- vars: {
88
- "s6o5tmu-0": [_ref3 => {
89
- let {
90
- width
91
- } = _ref3;
92
- return width;
93
- }, "px"],
94
- "s6o5tmu-1": [_ref4 => {
95
- let {
96
- aspectRatio
97
- } = _ref4;
98
- return aspectRatio;
99
- }]
100
- }
101
- });
102
-
103
- const App = _ref5 => {
104
- var _options$uiStyle;
105
-
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)({
155
- width: canvasWidth,
156
- height: canvasHeight,
157
- scaleRatio: 1
158
- });
159
- const canvasSelectionPadding = 0; // selection padding should not be larger than 0 until shape resizing is refactored
160
-
161
- const [availableTools, setAvailableTools] = (0, _react.useState)((0, _toolbar.sanitizeTools)(availableToolsFromProps, withUploadPicture || withUrlPicture));
162
- (0, _react.useEffect)(() => {
163
- setAvailableTools((0, _toolbar.sanitizeTools)(availableToolsFromProps, withUploadPicture || withUrlPicture));
164
- }, [availableToolsFromProps, withUploadPicture, withUrlPicture]);
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 => {
205
- setSelectedShape(undefined);
206
- setActiveTool(tool);
207
- }, [setSelectedShape]);
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);
211
- }, []);
212
- const undoAction = (0, _react.useCallback)(() => {
213
- selectTool(_tools.SELECTION_TOOL);
214
- backwardShape();
215
- }, [selectTool, backwardShape]);
216
- const redoAction = (0, _react.useCallback)(() => {
217
- selectTool(_tools.SELECTION_TOOL);
218
- forwardShape();
219
- }, [selectTool, forwardShape]);
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;
223
- clearShapes(shapesToInit, clearHistory);
224
- selectTool(_tools.SELECTION_TOOL);
225
- setCanvasOffset([0, 0]);
226
- }, [selectTool, clearShapes]);
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)(() => {
233
- if (typeof clearCallback !== 'string') {
234
- void loadImportedData({
235
- shapes: clearCallback()
236
- }, false);
237
- } else {
238
- if (clearCallback === 'defaultShapes' && shapesFromProps !== undefined) {
239
- void loadImportedData({
240
- shapes: shapesFromProps
241
- }, false);
242
- } else {
243
- resetCanvas();
244
- }
245
- }
246
- }, [resetCanvas, loadImportedData, shapesFromProps, clearCallback]);
247
- const selectShape = (0, _react.useCallback)(shape => {
248
- setActiveTool(_tools.SELECTION_TOOL);
249
- setSelectedShape(shape);
250
- }, [setSelectedShape]);
251
- const pasteShape = (0, _react.useCallback)(shape => {
252
- addShape(shape);
253
- selectShape(shape);
254
- }, [addShape, selectShape]);
255
- const exportCanvasInFile = (0, _react.useCallback)(() => {
256
- setIsLoading(true);
257
-
258
- try {
259
- const dataURL = canvasRef.current && (0, _file.getCanvasImage)(shapesRef.current, canvasOffset, canvasWidth, canvasHeight, canvasSelectionPadding);
260
-
261
- if (!dataURL) {
262
- throw new Error();
263
- }
264
-
265
- (0, _file.downloadFile)(dataURL, 'drawing.png');
266
- setIsLoading(false);
267
- } catch (e) {
268
- if (e instanceof Error) {
269
- addSnackbar({
270
- type: 'error',
271
- text: "L'export a échoué"
272
- });
273
- }
274
-
275
- console.warn(e);
276
- } finally {
277
- setIsLoading(false);
278
- }
279
- }, [addSnackbar, shapesRef, canvasOffset, canvasWidth, canvasHeight, canvasSelectionPadding]);
280
- const saveFile = (0, _react.useCallback)(() => {
281
- setIsLoading(true);
282
-
283
- try {
284
- const content = (0, _file.encodeShapesInString)(shapesRef.current, canvasWidth, canvasHeight);
285
-
286
- if (!content) {
287
- throw new Error("L'encodage a échoué");
288
- }
289
-
290
- (0, _file.downloadFile)(content, 'drawing.json');
291
- setIsLoading(false);
292
- } catch (e) {
293
- if (e instanceof Error) {
294
- addSnackbar({
295
- type: 'error',
296
- text: "L'enregistrement a échoué"
297
- });
298
- }
299
-
300
- console.warn(e);
301
- } finally {
302
- setIsLoading(false);
303
- }
304
- }, [shapesRef, addSnackbar, canvasWidth, canvasHeight]);
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;
349
- setCanvasSize({
350
- width: measuredWidth,
351
- height: canvasHeight * scaleRatio,
352
- scaleRatio
353
- });
354
- }, [canvasWidth, canvasHeight]);
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
367
- });
368
- (0, _useResizeObserver.default)({
369
- element: componentRef,
370
- onResized
371
- });
372
- (0, _react.useEffect)(() => {
373
- if (!isInsideComponent) setSelectedShape(undefined);
374
- }, [isInsideComponent, setSelectedShape]);
375
- (0, _react.useEffect)(() => {
376
- if (shapesFromProps !== undefined) {
377
- void loadImportedData({
378
- shapes: shapesFromProps
379
- });
380
- }
381
- }, [loadImportedData, shapesFromProps]);
382
- (0, _react.useEffect)(() => {
383
- if (!apiRef) return;
384
- apiRef.current = {
385
- getCurrentImage: () => {
386
- return canvasRef.current ? (0, _file.getCanvasImage)(shapesRef.current, canvasOffset, canvasWidth, canvasHeight, canvasSelectionPadding) : undefined;
387
- },
388
- getCurrentData: () => {
389
- return (0, _data.buildDataToExport)(shapesRef.current, canvasWidth, canvasHeight);
390
- }
391
- };
392
- }, [apiRef, shapesRef, canvasOffset, canvasWidth, canvasHeight, canvasSelectionPadding]);
393
- const className = "".concat(classNameFromProps !== null && classNameFromProps !== void 0 ? classNameFromProps : '', " ").concat(isLayoutPanelShown ? 'layoutPanelOpened' : '');
394
- return /*#__PURE__*/_react.default.createElement(StyledApp, {
395
- ref: componentRef,
396
- className: className,
397
- "data-grow": canGrow,
398
- "data-shrink": canShrink,
399
- canvasWidth: canvasWidth,
400
- toolbarBackgroundColor: toolbarBackgroundColor,
401
- dividerColor: dividerColor,
402
- fontRadius: fontRadius,
403
- fontDisabledColor: fontDisabledColor,
404
- fontDisabledBackgroundColor: fontDisabledBackgroundColor,
405
- fontColor: fontColor,
406
- fontBackgroundColor: fontBackgroundColor,
407
- fontSelectedColor: fontSelectedColor,
408
- fontSelectedBackgroundColor: fontSelectedBackgroundColor,
409
- fontHoverColor: fontHoverColor,
410
- fontHoverBackgroundColor: fontHoverBackgroundColor,
411
- canvasBackgroundColor: canvasBackgroundColor
412
- }, isEditMode && /*#__PURE__*/_react.default.createElement(_Toolbar.default, {
413
- width: canvasSize.width,
414
- disabled: disabled,
415
- activeTool: activeTool,
416
- clearCanvas: clearCanvas,
417
- setActiveTool: selectTool,
418
- exportCanvasInFile: exportCanvasInFile,
419
- saveFile: saveFile,
420
- loadFile: loadFile,
421
- addPicture: addPicture,
422
- hasActionToUndo: canGoBackward,
423
- hasActionToRedo: canGoForward,
424
- hasActionToClear: canClear,
425
- undoAction: undoAction,
426
- redoAction: redoAction,
427
- availableTools: availableTools,
428
- withExport: withExport,
429
- withLoadAndSave: withLoadAndSave,
430
- withUploadPicture: withUploadPicture,
431
- withUrlPicture: withUrlPicture
432
- }), /*#__PURE__*/_react.default.createElement(StyledRow, {
433
- "data-grow": canGrow,
434
- width: canvasSize.width,
435
- aspectRatio: "calc(".concat(canvasSize.width, " / ").concat(canvasSize.height, ")")
436
- }, /*#__PURE__*/_react.default.createElement(_Canvas.default, {
437
- canGrow: canGrow,
438
- gridFormat: gridFormat,
439
- disabled: disabled,
440
- isInsideComponent: isInsideComponent,
441
- activeTool: activeTool,
442
- setActiveTool: setActiveTool,
443
- canvasOffsetStartPosition: canvasOffsetStartPosition,
444
- setCanvasOffsetStartPosition: setCanvasOffsetStartPosition,
445
- shapes: shapesRef.current,
446
- addShape: addShape,
447
- updateSingleShape: updateShape,
448
- selectedShape: selectedShape,
449
- setSelectedShape: setSelectedShape,
450
- canvasOffset: canvasOffset,
451
- setCanvasOffset: setCanvasOffset,
452
- saveShapes: saveShapes,
453
- ref: canvasRef,
454
- canvasSize: canvasSize,
455
- selectionMode: selectionMode,
456
- setSelectionMode: setSelectionMode,
457
- selectionColor: canvasSelectionColor,
458
- selectionWidth: canvasSelectionWidth,
459
- selectionPadding: canvasSelectionPadding,
460
- isEditMode: isEditMode,
461
- isShiftPressed: isShiftPressed
462
- }), isEditMode && layersManipulation && /*#__PURE__*/_react.default.createElement(_Layouts.default, {
463
- gridFormat: gridFormat,
464
- setGridFormat: setGridFormat,
465
- disabled: disabled,
466
- shapes: shapesRef.current,
467
- moveShapes: moveShapes,
468
- selectedShape: selectedShape,
469
- removeShape: removeShape,
470
- selectShape: selectShape,
471
- toggleShapeVisibility: toggleShapeVisibility,
472
- toggleShapeLock: toggleShapeLock,
473
- isLayoutPanelShown: isLayoutPanelShown
474
- })), isEditMode && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_SettingsBar.default, {
475
- width: canvasSize.width,
476
- disabled: disabled,
477
- activeTool: activeTool,
478
- availableTools: availableTools,
479
- selectedShape: selectedShape,
480
- removeShape: removeShape,
481
- updateShape: updateShape,
482
- canvas: canvasRef.current,
483
- layersManipulation: layersManipulation,
484
- toggleLayoutPanel: () => {
485
- setIsLayoutPanelShown(prev => !prev);
486
- },
487
- updateToolSettings: updateToolSettings
488
- }), /*#__PURE__*/_react.default.createElement(_Loading.default, {
489
- isLoading: isLoading
490
- }), /*#__PURE__*/_react.default.createElement(_Snackbar.default, {
491
- snackbarList: snackbarList
492
- })));
493
- };
494
-
495
- var _default = App;
496
- exports.default = _default;
@@ -1,194 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _react = _interopRequireWildcard(require("react"));
11
-
12
- var _react2 = require("@linaria/react");
13
-
14
- var _canvas = require("../utils/canvas");
15
-
16
- var _EditTextBox = _interopRequireDefault(require("./toolbox/EditTextBox"));
17
-
18
- var _useDrawableCanvas = _interopRequireDefault(require("../hooks/useDrawableCanvas"));
19
-
20
- var _shapes = require("../utils/shapes");
21
-
22
- var _text = require("../utils/shapes/text");
23
-
24
- var _grid = require("../utils/shapes/grid");
25
-
26
- 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); }
27
-
28
- 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; }
29
-
30
- const renderDrawCanvas = (drawCtx, selectionMode, canvasSize, gridFormat, canvasOffset, shapes, selectionPadding, selectedShape) => {
31
- const {
32
- width,
33
- height,
34
- scaleRatio
35
- } = canvasSize;
36
- drawCtx.clearRect(0, 0, width, height);
37
- (0, _canvas.initCanvasContext)(drawCtx);
38
- gridFormat && (0, _grid.drawGrid)(drawCtx, width, height, scaleRatio, canvasOffset, gridFormat);
39
-
40
- for (let i = shapes.length - 1; i >= 0; i--) {
41
- if (selectionMode.mode !== 'textedition' || shapes[i] !== selectedShape) {
42
- (0, _shapes.drawShape)(drawCtx, shapes[i], scaleRatio, canvasOffset, selectionPadding);
43
- }
44
- }
45
- };
46
-
47
- const renderSelectionCanvas = (selectionCtx, selectionMode, canvasSize, activeTool, canvasOffset, selectionPadding, selectionWidth, selectionColor, selectedShape) => {
48
- const {
49
- width,
50
- height,
51
- scaleRatio
52
- } = canvasSize;
53
- selectionCtx.clearRect(0, 0, width, height);
54
- selectedShape && activeTool.type !== 'brush' && (0, _shapes.drawShapeSelection)({
55
- ctx: selectionCtx,
56
- shape: selectedShape,
57
- scaleRatio,
58
- canvasOffset,
59
- selectionPadding,
60
- selectionWidth,
61
- selectionColor,
62
- withAnchors: selectionMode.mode !== 'textedition'
63
- });
64
- };
65
-
66
- const StyledCanvasBox = /*#__PURE__*/(0, _react2.styled)('div')({
67
- name: "StyledCanvasBox",
68
- class: "s9czb9p"
69
- });
70
- const StyledCanvasContainer = /*#__PURE__*/(0, _react2.styled)('div')({
71
- name: "StyledCanvasContainer",
72
- class: "s1538eht"
73
- });
74
- const StyledDrawCanvas = /*#__PURE__*/(0, _react2.styled)('canvas')({
75
- name: "StyledDrawCanvas",
76
- class: "s101qxdc"
77
- });
78
- const StyledSelectionCanvas = /*#__PURE__*/(0, _react2.styled)('canvas')({
79
- name: "StyledSelectionCanvas",
80
- class: "sa4oq48",
81
- vars: {
82
- "sa4oq48-0": [_ref => {
83
- let {
84
- cursor
85
- } = _ref;
86
- return cursor;
87
- }]
88
- }
89
- });
90
-
91
- const Canvas = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
92
- let {
93
- gridFormat,
94
- canGrow,
95
- disabled = false,
96
- canvasSize,
97
- shapes,
98
- addShape,
99
- updateSingleShape,
100
- selectedShape,
101
- setSelectedShape,
102
- saveShapes,
103
- activeTool,
104
- setActiveTool,
105
- canvasOffsetStartPosition,
106
- setCanvasOffsetStartPosition,
107
- canvasOffset,
108
- setCanvasOffset,
109
- isInsideComponent,
110
- selectionMode,
111
- setSelectionMode,
112
- selectionWidth,
113
- selectionColor,
114
- selectionPadding,
115
- isEditMode,
116
- isShiftPressed
117
- } = _ref2;
118
- const drawCanvasRef = (0, _react.useRef)(null);
119
- const selectionCanvasRef = (0, _react.useRef)(null); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
120
-
121
- (0, _react.useImperativeHandle)(ref, () => drawCanvasRef.current);
122
- const {
123
- hoverMode
124
- } = (0, _useDrawableCanvas.default)({
125
- disabled,
126
- addShape,
127
- canvasSize,
128
- drawCanvasRef,
129
- setActiveTool,
130
- shapes,
131
- selectionMode,
132
- activeTool,
133
- isInsideComponent,
134
- setCanvasOffset,
135
- selectedShape,
136
- selectionCanvasRef,
137
- canvasOffsetStartPosition,
138
- setSelectedShape,
139
- setCanvasOffsetStartPosition,
140
- updateSingleShape,
141
- gridFormat,
142
- canvasOffset,
143
- saveShapes,
144
- setSelectionMode,
145
- selectionPadding,
146
- isShiftPressed
147
- });
148
- const updateSelectedShapeText = (0, _react.useCallback)(newText => {
149
- var _drawCanvasRef$curren;
150
-
151
- if ((selectedShape === null || selectedShape === void 0 ? void 0 : selectedShape.type) !== 'text') return;
152
- const ctx = (_drawCanvasRef$curren = drawCanvasRef.current) === null || _drawCanvasRef$curren === void 0 ? void 0 : _drawCanvasRef$curren.getContext('2d');
153
- if (!ctx) return;
154
- const newShape = (0, _text.resizeTextShapeWithNewContent)(ctx, selectedShape, newText, canvasOffset);
155
- updateSingleShape(newShape);
156
- }, [updateSingleShape, selectedShape, canvasOffset]);
157
- (0, _react.useEffect)(() => {
158
- var _drawCanvasRef$curren2;
159
-
160
- const drawCtx = (_drawCanvasRef$curren2 = drawCanvasRef.current) === null || _drawCanvasRef$curren2 === void 0 ? void 0 : _drawCanvasRef$curren2.getContext('2d');
161
- drawCtx && window.requestAnimationFrame(() => renderDrawCanvas(drawCtx, selectionMode, canvasSize, gridFormat, canvasOffset, shapes, selectionPadding, selectedShape));
162
- }, [shapes, gridFormat, selectionMode, selectedShape, canvasOffset, canvasSize, selectionPadding]);
163
- (0, _react.useEffect)(() => {
164
- var _selectionCanvasRef$c;
165
-
166
- const selectionCtx = (_selectionCanvasRef$c = selectionCanvasRef.current) === null || _selectionCanvasRef$c === void 0 ? void 0 : _selectionCanvasRef$c.getContext('2d');
167
- selectionCtx && window.requestAnimationFrame(() => renderSelectionCanvas(selectionCtx, selectionMode, canvasSize, activeTool, canvasOffset, selectionPadding, selectionWidth, selectionColor, selectedShape));
168
- }, [selectionMode, selectedShape, activeTool, canvasOffset, canvasSize, selectionPadding, selectionWidth, selectionColor]);
169
- return /*#__PURE__*/_react.default.createElement(StyledCanvasBox, null, /*#__PURE__*/_react.default.createElement(StyledCanvasContainer, {
170
- "data-grow": canGrow
171
- }, /*#__PURE__*/_react.default.createElement(StyledDrawCanvas, {
172
- ref: drawCanvasRef,
173
- "data-grow": canGrow,
174
- width: canvasSize.width,
175
- height: canvasSize.height
176
- }), isEditMode && /*#__PURE__*/_react.default.createElement(StyledSelectionCanvas, {
177
- ref: selectionCanvasRef,
178
- width: canvasSize.width,
179
- height: canvasSize.height,
180
- "data-grow": canGrow,
181
- cursor: activeTool.type !== 'selection' && activeTool.type !== 'move' || hoverMode.mode === 'resize' ? 'crosshair' : activeTool.type === 'move' || hoverMode.mode === 'translate' ? 'move' : hoverMode.mode === 'rotate' ? 'grab' : 'default'
182
- }), isEditMode && selectionMode.mode === 'textedition' && (selectedShape === null || selectedShape === void 0 ? void 0 : selectedShape.type) === 'text' && /*#__PURE__*/_react.default.createElement(_EditTextBox.default, {
183
- scaleRatio: canvasSize.scaleRatio,
184
- disabled: disabled,
185
- shape: selectedShape,
186
- defaultValue: selectionMode.defaultValue,
187
- updateValue: updateSelectedShapeText,
188
- saveShapes: saveShapes,
189
- selectionPadding: selectionPadding
190
- })));
191
- });
192
-
193
- var _default = Canvas;
194
- exports.default = _default;