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