@yorab/react-paint 0.6.3 → 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 -1
- package/dist/components/App.js +235 -387
- 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 +25 -20
- 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 +65 -40
- 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 +5 -4
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,
|
|
@@ -143,6 +113,7 @@ var DEFAULT_OPTIONS = {
|
|
|
143
113
|
withUploadPicture: true,
|
|
144
114
|
withUrlPicture: false,
|
|
145
115
|
availableTools: _tools.DEFAULT_SHAPE_TOOLS,
|
|
116
|
+
clearCallback: 'empty',
|
|
146
117
|
uiStyle: {
|
|
147
118
|
toolbarBackgroundColor: 'white',
|
|
148
119
|
dividerColor: '#36418129',
|
|
@@ -162,220 +133,160 @@ var DEFAULT_OPTIONS = {
|
|
|
162
133
|
}
|
|
163
134
|
};
|
|
164
135
|
|
|
165
|
-
|
|
136
|
+
const App = _ref5 => {
|
|
166
137
|
var _options$uiStyle;
|
|
167
138
|
|
|
168
|
-
|
|
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
|
-
|
|
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)({
|
|
216
188
|
width: canvasWidth,
|
|
217
189
|
height: canvasHeight,
|
|
218
190
|
scaleRatio: 1
|
|
219
|
-
})
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
setCanvasSize = _useState2[1];
|
|
223
|
-
|
|
224
|
-
var _useState3 = (0, _react.useState)((0, _toolbar.sanitizeTools)(availableToolsFromProps, withUploadPicture || withUrlPicture)),
|
|
225
|
-
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
226
|
-
availableTools = _useState4[0],
|
|
227
|
-
setAvailableTools = _useState4[1];
|
|
228
|
-
|
|
229
|
-
(0, _react.useEffect)(function () {
|
|
191
|
+
});
|
|
192
|
+
const [availableTools, setAvailableTools] = (0, _react.useState)((0, _toolbar.sanitizeTools)(availableToolsFromProps, withUploadPicture || withUrlPicture));
|
|
193
|
+
(0, _react.useEffect)(() => {
|
|
230
194
|
setAvailableTools((0, _toolbar.sanitizeTools)(availableToolsFromProps, withUploadPicture || withUrlPicture));
|
|
231
195
|
}, [availableToolsFromProps, withUploadPicture, withUrlPicture]);
|
|
232
|
-
|
|
233
|
-
|
|
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
|
-
var _useState17 = (0, _react.useState)(gridVisible),
|
|
272
|
-
_useState18 = (0, _slicedToArray2["default"])(_useState17, 2),
|
|
273
|
-
withGrid = _useState18[0],
|
|
274
|
-
setWithGrid = _useState18[1];
|
|
275
|
-
|
|
276
|
-
var _useShapes = (0, _useShapes2["default"])(onDataChanged),
|
|
277
|
-
shapesRef = _useShapes.shapesRef,
|
|
278
|
-
selectedShape = _useShapes.selectedShape,
|
|
279
|
-
addShape = _useShapes.addShape,
|
|
280
|
-
addPictureShape = _useShapes.addPictureShape,
|
|
281
|
-
moveShapes = _useShapes.moveShapes,
|
|
282
|
-
setSelectedShape = _useShapes.setSelectedShape,
|
|
283
|
-
removeShape = _useShapes.removeShape,
|
|
284
|
-
updateShape = _useShapes.updateShape,
|
|
285
|
-
backwardShape = _useShapes.backwardShape,
|
|
286
|
-
forwardShape = _useShapes.forwardShape,
|
|
287
|
-
clearShapes = _useShapes.clearShapes,
|
|
288
|
-
saveShapes = _useShapes.saveShapes,
|
|
289
|
-
toggleShapeVisibility = _useShapes.toggleShapeVisibility,
|
|
290
|
-
toggleShapeLock = _useShapes.toggleShapeLock,
|
|
291
|
-
canGoBackward = _useShapes.canGoBackward,
|
|
292
|
-
canGoForward = _useShapes.canGoForward,
|
|
293
|
-
canClear = _useShapes.canClear;
|
|
294
|
-
|
|
295
|
-
var _useSnackbar = (0, _useSnackbar2["default"])(),
|
|
296
|
-
snackbarList = _useSnackbar.snackbarList,
|
|
297
|
-
addSnackbar = _useSnackbar.addSnackbar;
|
|
298
|
-
|
|
299
|
-
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 => {
|
|
300
235
|
setSelectedShape(undefined);
|
|
301
236
|
setActiveTool(tool);
|
|
302
237
|
}, [setSelectedShape]);
|
|
303
|
-
|
|
304
|
-
setAvailableTools(
|
|
305
|
-
|
|
306
|
-
return tool.id === toolId ? _fp["default"].set(['settings', field, 'default'], value, tool) : tool;
|
|
307
|
-
});
|
|
308
|
-
});
|
|
309
|
-
setActiveTool(function (activeTool) {
|
|
310
|
-
return activeTool.id === toolId ? _fp["default"].set(['settings', field, 'default'], value, activeTool) : activeTool;
|
|
311
|
-
});
|
|
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);
|
|
312
241
|
}, []);
|
|
313
|
-
|
|
242
|
+
const undoAction = (0, _react.useCallback)(() => {
|
|
314
243
|
selectTool(_tools.SELECTION_TOOL);
|
|
315
244
|
backwardShape();
|
|
316
245
|
}, [selectTool, backwardShape]);
|
|
317
|
-
|
|
246
|
+
const redoAction = (0, _react.useCallback)(() => {
|
|
318
247
|
selectTool(_tools.SELECTION_TOOL);
|
|
319
248
|
forwardShape();
|
|
320
249
|
}, [selectTool, forwardShape]);
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
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;
|
|
324
253
|
clearShapes(shapesToInit, clearHistory);
|
|
325
254
|
selectTool(_tools.SELECTION_TOOL);
|
|
326
255
|
setCanvasOffset([0, 0]);
|
|
327
256
|
}, [selectTool, clearShapes]);
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
switch (_context.prev = _context.next) {
|
|
336
|
-
case 0:
|
|
337
|
-
clearHistory = _args.length > 1 && _args[1] !== undefined ? _args[1] : true;
|
|
338
|
-
_context.next = 3;
|
|
339
|
-
return (0, _file.decodeImportedData)(json);
|
|
340
|
-
|
|
341
|
-
case 3:
|
|
342
|
-
shapes = _context.sent;
|
|
343
|
-
resetCanvas(shapes, clearHistory);
|
|
344
|
-
|
|
345
|
-
case 5:
|
|
346
|
-
case "end":
|
|
347
|
-
return _context.stop();
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
}, _callee);
|
|
351
|
-
}));
|
|
352
|
-
|
|
353
|
-
return function (_x) {
|
|
354
|
-
return _ref6.apply(this, arguments);
|
|
355
|
-
};
|
|
356
|
-
}(), [resetCanvas]);
|
|
357
|
-
var clearCanvas = (0, _react.useCallback)(function () {
|
|
358
|
-
if (shapesFromProps !== undefined) {
|
|
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)(() => {
|
|
263
|
+
if (typeof clearCallback !== 'string') {
|
|
359
264
|
void loadImportedData({
|
|
360
|
-
shapes:
|
|
265
|
+
shapes: clearCallback()
|
|
361
266
|
}, false);
|
|
362
267
|
} else {
|
|
363
|
-
|
|
268
|
+
if (clearCallback === 'defaultShapes' && shapesFromProps !== undefined) {
|
|
269
|
+
void loadImportedData({
|
|
270
|
+
shapes: shapesFromProps
|
|
271
|
+
}, false);
|
|
272
|
+
} else {
|
|
273
|
+
resetCanvas();
|
|
274
|
+
}
|
|
364
275
|
}
|
|
365
|
-
}, [resetCanvas, loadImportedData, shapesFromProps]);
|
|
366
|
-
|
|
276
|
+
}, [resetCanvas, loadImportedData, shapesFromProps, clearCallback]);
|
|
277
|
+
const selectShape = (0, _react.useCallback)(shape => {
|
|
367
278
|
setActiveTool(_tools.SELECTION_TOOL);
|
|
368
279
|
setSelectedShape(shape);
|
|
369
280
|
}, [setSelectedShape]);
|
|
370
|
-
|
|
281
|
+
const pasteShape = (0, _react.useCallback)(shape => {
|
|
371
282
|
addShape(shape);
|
|
372
283
|
selectShape(shape);
|
|
373
284
|
}, [addShape, selectShape]);
|
|
374
|
-
|
|
285
|
+
const exportCanvasInFile = (0, _react.useCallback)(() => {
|
|
375
286
|
setIsLoading(true);
|
|
376
287
|
|
|
377
288
|
try {
|
|
378
|
-
|
|
289
|
+
const dataURL = canvasRef.current && (0, _file.getCanvasImage)(shapesRef.current, canvasOffset, canvasWidth, canvasHeight, canvasSelectionPadding);
|
|
379
290
|
|
|
380
291
|
if (!dataURL) {
|
|
381
292
|
throw new Error();
|
|
@@ -396,11 +307,11 @@ var App = function App(_ref5) {
|
|
|
396
307
|
setIsLoading(false);
|
|
397
308
|
}
|
|
398
309
|
}, [addSnackbar, shapesRef, canvasOffset, canvasWidth, canvasHeight, canvasSelectionPadding]);
|
|
399
|
-
|
|
310
|
+
const saveFile = (0, _react.useCallback)(() => {
|
|
400
311
|
setIsLoading(true);
|
|
401
312
|
|
|
402
313
|
try {
|
|
403
|
-
|
|
314
|
+
const content = (0, _file.encodeShapesInString)(shapesRef.current, canvasWidth, canvasHeight);
|
|
404
315
|
|
|
405
316
|
if (!content) {
|
|
406
317
|
throw new Error("L'encodage a échoué");
|
|
@@ -421,155 +332,94 @@ var App = function App(_ref5) {
|
|
|
421
332
|
setIsLoading(false);
|
|
422
333
|
}
|
|
423
334
|
}, [shapesRef, addSnackbar, canvasWidth, canvasHeight]);
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
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
|
-
case "end":
|
|
469
|
-
return _context2.stop();
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
}, _callee2, null, [[1, 10, 14, 17]]);
|
|
473
|
-
}));
|
|
474
|
-
|
|
475
|
-
return function (_x2) {
|
|
476
|
-
return _ref7.apply(this, arguments);
|
|
477
|
-
};
|
|
478
|
-
}(), [loadImportedData, addSnackbar]);
|
|
479
|
-
var addPicture = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
480
|
-
var _ref8 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(fileOrUrl) {
|
|
481
|
-
var pictureShape;
|
|
482
|
-
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
483
|
-
while (1) {
|
|
484
|
-
switch (_context3.prev = _context3.next) {
|
|
485
|
-
case 0:
|
|
486
|
-
setIsLoading(true);
|
|
487
|
-
_context3.prev = 1;
|
|
488
|
-
_context3.next = 4;
|
|
489
|
-
return addPictureShape(fileOrUrl, canvasWidth, canvasHeight);
|
|
490
|
-
|
|
491
|
-
case 4:
|
|
492
|
-
pictureShape = _context3.sent;
|
|
493
|
-
selectShape(pictureShape);
|
|
494
|
-
_context3.next = 12;
|
|
495
|
-
break;
|
|
496
|
-
|
|
497
|
-
case 8:
|
|
498
|
-
_context3.prev = 8;
|
|
499
|
-
_context3.t0 = _context3["catch"](1);
|
|
500
|
-
|
|
501
|
-
if (_context3.t0 instanceof Error) {
|
|
502
|
-
addSnackbar({
|
|
503
|
-
type: _snackbar.SnackbarTypeEnum.Error,
|
|
504
|
-
text: 'Le chargement a échoué'
|
|
505
|
-
});
|
|
506
|
-
}
|
|
507
|
-
|
|
508
|
-
console.warn(_context3.t0);
|
|
509
|
-
|
|
510
|
-
case 12:
|
|
511
|
-
_context3.prev = 12;
|
|
512
|
-
setIsLoading(false);
|
|
513
|
-
return _context3.finish(12);
|
|
514
|
-
|
|
515
|
-
case 15:
|
|
516
|
-
case "end":
|
|
517
|
-
return _context3.stop();
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
}, _callee3, null, [[1, 8, 12, 15]]);
|
|
521
|
-
}));
|
|
522
|
-
|
|
523
|
-
return function (_x3) {
|
|
524
|
-
return _ref8.apply(this, arguments);
|
|
525
|
-
};
|
|
526
|
-
}(), [addPictureShape, selectShape, addSnackbar, canvasWidth, canvasHeight]);
|
|
527
|
-
var onResized = (0, _react.useCallback)(function (measuredWidth) {
|
|
528
|
-
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;
|
|
529
379
|
setCanvasSize({
|
|
530
380
|
width: measuredWidth,
|
|
531
381
|
height: canvasHeight * scaleRatio,
|
|
532
|
-
scaleRatio
|
|
382
|
+
scaleRatio
|
|
533
383
|
});
|
|
534
384
|
}, [canvasWidth, canvasHeight]);
|
|
535
|
-
(0, _useKeyboard
|
|
536
|
-
isInsideComponent
|
|
385
|
+
(0, _useKeyboard.default)({
|
|
386
|
+
isInsideComponent,
|
|
537
387
|
isEditingText: selectionMode.mode === _Mode.SelectionModeLib.textedition,
|
|
538
|
-
selectedShape
|
|
539
|
-
setSelectedShape
|
|
540
|
-
removeShape
|
|
541
|
-
pasteShape
|
|
542
|
-
updateShape
|
|
543
|
-
backwardShape
|
|
544
|
-
forwardShape
|
|
388
|
+
selectedShape,
|
|
389
|
+
setSelectedShape,
|
|
390
|
+
removeShape,
|
|
391
|
+
pasteShape,
|
|
392
|
+
updateShape,
|
|
393
|
+
backwardShape,
|
|
394
|
+
forwardShape
|
|
545
395
|
});
|
|
546
|
-
(0, _useResizeObserver
|
|
396
|
+
(0, _useResizeObserver.default)({
|
|
547
397
|
element: componentRef,
|
|
548
|
-
onResized
|
|
398
|
+
onResized
|
|
549
399
|
});
|
|
550
|
-
(0, _react.useEffect)(
|
|
400
|
+
(0, _react.useEffect)(() => {
|
|
551
401
|
if (!isInsideComponent) setSelectedShape(undefined);
|
|
552
402
|
}, [isInsideComponent, setSelectedShape]);
|
|
553
|
-
(0, _react.useEffect)(
|
|
403
|
+
(0, _react.useEffect)(() => {
|
|
554
404
|
if (shapesFromProps !== undefined) {
|
|
555
405
|
void loadImportedData({
|
|
556
406
|
shapes: shapesFromProps
|
|
557
407
|
});
|
|
558
408
|
}
|
|
559
409
|
}, [loadImportedData, shapesFromProps]);
|
|
560
|
-
(0, _react.useEffect)(
|
|
410
|
+
(0, _react.useEffect)(() => {
|
|
561
411
|
if (!apiRef) return;
|
|
562
412
|
apiRef.current = {
|
|
563
|
-
getCurrentImage:
|
|
413
|
+
getCurrentImage: () => {
|
|
564
414
|
return canvasRef.current ? (0, _file.getCanvasImage)(shapesRef.current, canvasOffset, canvasWidth, canvasHeight, canvasSelectionPadding) : undefined;
|
|
565
415
|
},
|
|
566
|
-
getCurrentData:
|
|
416
|
+
getCurrentData: () => {
|
|
567
417
|
return (0, _data.buildDataToExport)(shapesRef.current, canvasWidth, canvasHeight);
|
|
568
418
|
}
|
|
569
419
|
};
|
|
570
420
|
}, [apiRef, shapesRef, canvasOffset, canvasWidth, canvasHeight, canvasSelectionPadding]);
|
|
571
|
-
|
|
572
|
-
return /*#__PURE__*/_react
|
|
421
|
+
const className = "".concat(classNameFromProps !== null && classNameFromProps !== void 0 ? classNameFromProps : '', " ").concat(isLayoutPanelShown ? 'layoutPanelOpened' : '');
|
|
422
|
+
return /*#__PURE__*/_react.default.createElement(StyledApp, {
|
|
573
423
|
ref: componentRef,
|
|
574
424
|
className: className,
|
|
575
425
|
"data-grow": canGrow,
|
|
@@ -587,7 +437,7 @@ var App = function App(_ref5) {
|
|
|
587
437
|
fontHoverColor: fontHoverColor,
|
|
588
438
|
fontHoverBackgroundColor: fontHoverBackgroundColor,
|
|
589
439
|
canvasBackgroundColor: canvasBackgroundColor
|
|
590
|
-
}, isEditMode && /*#__PURE__*/_react
|
|
440
|
+
}, isEditMode && /*#__PURE__*/_react.default.createElement(_Toolbar.default, {
|
|
591
441
|
width: canvasSize.width,
|
|
592
442
|
disabled: disabled,
|
|
593
443
|
activeTool: activeTool,
|
|
@@ -607,11 +457,11 @@ var App = function App(_ref5) {
|
|
|
607
457
|
withLoadAndSave: withLoadAndSave,
|
|
608
458
|
withUploadPicture: withUploadPicture,
|
|
609
459
|
withUrlPicture: withUrlPicture
|
|
610
|
-
}), /*#__PURE__*/_react
|
|
460
|
+
}), /*#__PURE__*/_react.default.createElement(StyledRow, {
|
|
611
461
|
"data-grow": canGrow,
|
|
612
462
|
width: canvasSize.width,
|
|
613
463
|
aspectRatio: "calc(".concat(canvasSize.width, " / ").concat(canvasSize.height, ")")
|
|
614
|
-
}, /*#__PURE__*/_react
|
|
464
|
+
}, /*#__PURE__*/_react.default.createElement(_Canvas.default, {
|
|
615
465
|
canGrow: canGrow,
|
|
616
466
|
withGrid: withGrid,
|
|
617
467
|
disabled: disabled,
|
|
@@ -636,7 +486,7 @@ var App = function App(_ref5) {
|
|
|
636
486
|
selectionWidth: canvasSelectionWidth,
|
|
637
487
|
selectionPadding: canvasSelectionPadding,
|
|
638
488
|
isEditMode: isEditMode
|
|
639
|
-
}), isEditMode && layersManipulation && /*#__PURE__*/_react
|
|
489
|
+
}), isEditMode && layersManipulation && /*#__PURE__*/_react.default.createElement(_Layouts.default, {
|
|
640
490
|
withGrid: withGrid,
|
|
641
491
|
setWithGrid: setWithGrid,
|
|
642
492
|
disabled: disabled,
|
|
@@ -648,7 +498,7 @@ var App = function App(_ref5) {
|
|
|
648
498
|
toggleShapeVisibility: toggleShapeVisibility,
|
|
649
499
|
toggleShapeLock: toggleShapeLock,
|
|
650
500
|
isLayoutPanelShown: isLayoutPanelShown
|
|
651
|
-
})), isEditMode && /*#__PURE__*/_react
|
|
501
|
+
})), isEditMode && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_SettingsBar.default, {
|
|
652
502
|
width: canvasSize.width,
|
|
653
503
|
disabled: disabled,
|
|
654
504
|
activeTool: activeTool,
|
|
@@ -658,18 +508,16 @@ var App = function App(_ref5) {
|
|
|
658
508
|
updateShape: updateShape,
|
|
659
509
|
canvas: canvasRef.current,
|
|
660
510
|
layersManipulation: layersManipulation,
|
|
661
|
-
toggleLayoutPanel:
|
|
662
|
-
setIsLayoutPanelShown(
|
|
663
|
-
return !prev;
|
|
664
|
-
});
|
|
511
|
+
toggleLayoutPanel: () => {
|
|
512
|
+
setIsLayoutPanelShown(prev => !prev);
|
|
665
513
|
},
|
|
666
514
|
updateToolSettings: updateToolSettings
|
|
667
|
-
}), /*#__PURE__*/_react
|
|
515
|
+
}), /*#__PURE__*/_react.default.createElement(_Loading.default, {
|
|
668
516
|
isLoading: isLoading
|
|
669
|
-
}), /*#__PURE__*/_react
|
|
517
|
+
}), /*#__PURE__*/_react.default.createElement(_Snackbar.default, {
|
|
670
518
|
snackbarList: snackbarList
|
|
671
519
|
})));
|
|
672
520
|
};
|
|
673
521
|
|
|
674
522
|
var _default = App;
|
|
675
|
-
exports
|
|
523
|
+
exports.default = _default;
|