@yorab/react-paint 0.4.1 → 0.6.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.
- package/Changelog.md +26 -0
- package/README.md +0 -6
- package/dist/components/App.js +45 -38
- package/dist/components/Canvas.js +6 -6
- package/dist/components/settings/ColorField.js +5 -5
- package/dist/components/settings/FontFamilyField.js +6 -4
- package/dist/components/settings/Layouts.js +17 -8
- package/dist/components/settings/LineArrowField.js +6 -4
- package/dist/components/settings/LineTypeField.js +6 -4
- package/dist/components/settings/PointsNumberField.js +20 -30
- package/dist/components/settings/RangeField.js +1 -0
- package/dist/components/settings/SelectField.js +1 -0
- package/dist/components/settings/SettingsBar.js +141 -88
- package/dist/components/settings/ToggleField.js +56 -0
- package/dist/components/toolbox/EditTextBox.js +17 -10
- package/dist/components/toolbox/LoadFileTool.js +5 -3
- package/dist/components/toolbox/MenuGroup.js +37 -44
- package/dist/components/toolbox/Tool.js +4 -4
- package/dist/components/toolbox/Toolbar.js +81 -69
- package/dist/components/toolbox/ToolbarGroup.js +29 -31
- package/dist/constants/icons.js +6 -2
- package/dist/constants/style.js +3 -1
- package/dist/constants/tools.js +428 -0
- package/dist/hooks/useComponent.js +6 -2
- package/dist/hooks/useDoubleClick.js +46 -0
- package/dist/hooks/useDrawableCanvas.js +48 -55
- package/dist/styles.css +11 -11
- package/dist/types/Shapes.js +2 -16
- package/dist/types/tools.js +22 -0
- package/dist/utils/data.js +106 -28
- package/dist/utils/draw.js +3 -3
- package/dist/utils/file.js +15 -14
- package/dist/utils/selection.js +1 -1
- package/dist/utils/style.js +4 -2
- package/dist/utils/toolbar.js +66 -11
- package/dist/utils/transform.js +24 -11
- package/package.json +1 -1
|
@@ -25,16 +25,14 @@ var _Panel = _interopRequireDefault(require("../common/Panel"));
|
|
|
25
25
|
|
|
26
26
|
var _react2 = require("@linaria/react");
|
|
27
27
|
|
|
28
|
-
var _Shapes = require("../../types/Shapes");
|
|
29
|
-
|
|
30
|
-
var _style = require("../../utils/style");
|
|
31
|
-
|
|
32
28
|
var _Tool = _interopRequireDefault(require("./Tool"));
|
|
33
29
|
|
|
34
30
|
var _LoadFileTool = _interopRequireDefault(require("./LoadFileTool"));
|
|
35
31
|
|
|
36
32
|
var _icons = require("../../constants/icons");
|
|
37
33
|
|
|
34
|
+
var _tools = require("../../constants/tools");
|
|
35
|
+
|
|
38
36
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
39
37
|
|
|
40
38
|
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; }
|
|
@@ -75,13 +73,18 @@ var MenuGroup = function MenuGroup(_ref) {
|
|
|
75
73
|
togglePictureUrlModal = _ref.togglePictureUrlModal,
|
|
76
74
|
saveFile = _ref.saveFile,
|
|
77
75
|
exportCanvasInFile = _ref.exportCanvasInFile,
|
|
78
|
-
|
|
76
|
+
withUploadPicture = _ref.withUploadPicture,
|
|
77
|
+
withUrlPicture = _ref.withUrlPicture;
|
|
79
78
|
|
|
80
79
|
var _useState = (0, _react.useState)(false),
|
|
81
80
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
82
81
|
isOpen = _useState2[0],
|
|
83
82
|
setIsOpen = _useState2[1];
|
|
84
83
|
|
|
84
|
+
var _useTransition = (0, _react.useTransition)(),
|
|
85
|
+
_useTransition2 = (0, _slicedToArray2["default"])(_useTransition, 2),
|
|
86
|
+
startTransition = _useTransition2[1];
|
|
87
|
+
|
|
85
88
|
var loadFile = function loadFile(file) {
|
|
86
89
|
setIsOpen(false);
|
|
87
90
|
loadFileFromProps(file);
|
|
@@ -111,12 +114,14 @@ var MenuGroup = function MenuGroup(_ref) {
|
|
|
111
114
|
}();
|
|
112
115
|
|
|
113
116
|
var openPanel = function openPanel() {
|
|
114
|
-
|
|
117
|
+
startTransition(function () {
|
|
118
|
+
setIsOpen(true);
|
|
119
|
+
});
|
|
115
120
|
};
|
|
116
121
|
|
|
117
|
-
var isActive = _fp["default"].includes(activeTool, group === null || group === void 0 ? void 0 : group.tools);
|
|
122
|
+
var isActive = _fp["default"].includes(activeTool.type, group === null || group === void 0 ? void 0 : group.tools);
|
|
118
123
|
|
|
119
|
-
var groupIcon = (_ref3 = isActive ?
|
|
124
|
+
var groupIcon = (_ref3 = isActive ? activeTool.icon : group.img) !== null && _ref3 !== void 0 ? _ref3 : group.title;
|
|
120
125
|
(0, _react.useEffect)(function () {
|
|
121
126
|
if (!isOpen) return;
|
|
122
127
|
|
|
@@ -124,19 +129,12 @@ var MenuGroup = function MenuGroup(_ref) {
|
|
|
124
129
|
setIsOpen(false);
|
|
125
130
|
};
|
|
126
131
|
|
|
127
|
-
|
|
128
|
-
//TODO find a better fix than settimeout for react18
|
|
129
|
-
document.addEventListener('click', closePanel);
|
|
130
|
-
}, 0);
|
|
132
|
+
document.addEventListener('click', closePanel);
|
|
131
133
|
return function () {
|
|
132
|
-
clearTimeout(timeoutId);
|
|
133
134
|
document.removeEventListener('click', closePanel);
|
|
134
135
|
};
|
|
135
136
|
}, [isOpen]);
|
|
136
|
-
|
|
137
|
-
var withPicture = _fp["default"].includes(_Shapes.ShapeEnum.picture, availableTools);
|
|
138
|
-
|
|
139
|
-
var withMenu = withActionsInMenu || withPicture || withLoadAndSave || withExport;
|
|
137
|
+
var withMenu = withActionsInMenu || withUploadPicture || withUrlPicture || withLoadAndSave || withExport;
|
|
140
138
|
return withMenu ? /*#__PURE__*/_react["default"].createElement(StyledRelative, null, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
141
139
|
selected: isActive,
|
|
142
140
|
title: group.title,
|
|
@@ -148,66 +146,61 @@ var MenuGroup = function MenuGroup(_ref) {
|
|
|
148
146
|
alignment: alignment
|
|
149
147
|
}, withActionsInMenu && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Tool["default"], {
|
|
150
148
|
withText: true,
|
|
151
|
-
type:
|
|
149
|
+
type: _tools.UNDO_TOOL,
|
|
152
150
|
disabled: disabled || !hasActionToUndo,
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
isActive: activeTool === _Shapes.ToolEnum.undo,
|
|
151
|
+
img: _tools.UNDO_TOOL.icon,
|
|
152
|
+
isActive: activeTool.id === _tools.UNDO_TOOL.id,
|
|
156
153
|
setActive: undoAction
|
|
157
154
|
}), /*#__PURE__*/_react["default"].createElement(_Tool["default"], {
|
|
158
155
|
withText: true,
|
|
159
|
-
type:
|
|
156
|
+
type: _tools.REDO_TOOL,
|
|
160
157
|
disabled: disabled || !hasActionToRedo,
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
isActive: activeTool === _Shapes.ToolEnum.redo,
|
|
158
|
+
img: _tools.REDO_TOOL.icon,
|
|
159
|
+
isActive: activeTool.id === _tools.REDO_TOOL.id,
|
|
164
160
|
setActive: redoAction
|
|
165
161
|
}), /*#__PURE__*/_react["default"].createElement(_Tool["default"], {
|
|
166
162
|
withText: true,
|
|
167
|
-
type:
|
|
163
|
+
type: _tools.CLEAR_TOOL,
|
|
168
164
|
disabled: disabled || !hasActionToClear,
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
isActive: activeTool === _Shapes.ToolEnum.clear,
|
|
165
|
+
img: _tools.CLEAR_TOOL.icon,
|
|
166
|
+
isActive: activeTool.id === _tools.CLEAR_TOOL.id,
|
|
172
167
|
setActive: function setActive() {
|
|
173
168
|
return clearCanvas();
|
|
174
169
|
}
|
|
175
|
-
}), (
|
|
170
|
+
}), (withUploadPicture || withUrlPicture || withLoadAndSave) && /*#__PURE__*/_react["default"].createElement("hr", null)), withUploadPicture && /*#__PURE__*/_react["default"].createElement(_LoadFileTool["default"], {
|
|
176
171
|
withText: true,
|
|
172
|
+
type: _tools.UPLOAD_PICTURE_TOOL,
|
|
177
173
|
disabled: disabled,
|
|
178
174
|
loadFile: addPicture,
|
|
179
|
-
|
|
180
|
-
img: _icons.pictureIcon,
|
|
175
|
+
img: _tools.UPLOAD_PICTURE_TOOL.icon,
|
|
181
176
|
accept: "image/png, image/gif, image/jpeg"
|
|
182
|
-
}), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
177
|
+
}), withUrlPicture && /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
183
178
|
disabled: disabled,
|
|
184
179
|
selected: false,
|
|
185
180
|
onClick: togglePictureUrlModal,
|
|
186
181
|
title: "Add picture from URL",
|
|
187
182
|
icon: _icons.publicIcon,
|
|
188
183
|
children: "Add picture from URL"
|
|
189
|
-
}), withLoadAndSave && /*#__PURE__*/_react["default"].createElement("hr", null)
|
|
184
|
+
}), (withUploadPicture || withUrlPicture) && withLoadAndSave && /*#__PURE__*/_react["default"].createElement("hr", null), withLoadAndSave && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_LoadFileTool["default"], {
|
|
190
185
|
withText: true,
|
|
186
|
+
type: _tools.LOAD_TOOL,
|
|
191
187
|
disabled: disabled,
|
|
192
188
|
loadFile: loadFile,
|
|
193
|
-
|
|
194
|
-
img: _icons.openFileIcon,
|
|
189
|
+
img: _tools.LOAD_TOOL.icon,
|
|
195
190
|
accept: "application/JSON"
|
|
196
191
|
}), /*#__PURE__*/_react["default"].createElement(_Tool["default"], {
|
|
197
192
|
withText: true,
|
|
198
193
|
disabled: disabled,
|
|
199
|
-
type:
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
isActive: activeTool === _Shapes.ToolEnum.saveFile,
|
|
194
|
+
type: _tools.SAVE_TOOL,
|
|
195
|
+
img: _tools.SAVE_TOOL.icon,
|
|
196
|
+
isActive: activeTool.id === _tools.SAVE_TOOL.id,
|
|
203
197
|
setActive: saveFile
|
|
204
198
|
})), withExport && /*#__PURE__*/_react["default"].createElement(_Tool["default"], {
|
|
205
199
|
withText: true,
|
|
206
200
|
disabled: disabled,
|
|
207
|
-
type:
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
isActive: activeTool === _Shapes.ToolEnum["export"],
|
|
201
|
+
type: _tools.EXPORT_TOOL,
|
|
202
|
+
img: _tools.EXPORT_TOOL.icon,
|
|
203
|
+
isActive: activeTool.id === _tools.EXPORT_TOOL.id,
|
|
211
204
|
setActive: exportCanvasInFile
|
|
212
205
|
}))) : null;
|
|
213
206
|
};
|
|
@@ -12,9 +12,9 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
12
12
|
var _Button = _interopRequireDefault(require("../common/Button"));
|
|
13
13
|
|
|
14
14
|
var Tool = function Tool(_ref) {
|
|
15
|
+
var _type$lib;
|
|
16
|
+
|
|
15
17
|
var type = _ref.type,
|
|
16
|
-
_ref$lib = _ref.lib,
|
|
17
|
-
lib = _ref$lib === void 0 ? '' : _ref$lib,
|
|
18
18
|
img = _ref.img,
|
|
19
19
|
isActive = _ref.isActive,
|
|
20
20
|
_ref$withText = _ref.withText,
|
|
@@ -31,9 +31,9 @@ var Tool = function Tool(_ref) {
|
|
|
31
31
|
disabled: disabled,
|
|
32
32
|
selected: isActive,
|
|
33
33
|
onClick: handleClick,
|
|
34
|
-
title: lib,
|
|
34
|
+
title: (_type$lib = type.lib) !== null && _type$lib !== void 0 ? _type$lib : type.type,
|
|
35
35
|
icon: img,
|
|
36
|
-
children: withText ? lib : undefined
|
|
36
|
+
children: withText ? type.lib : undefined
|
|
37
37
|
});
|
|
38
38
|
};
|
|
39
39
|
|
|
@@ -29,18 +29,19 @@ var _MenuGroup = _interopRequireDefault(require("./MenuGroup"));
|
|
|
29
29
|
|
|
30
30
|
var _Tool = _interopRequireDefault(require("./Tool"));
|
|
31
31
|
|
|
32
|
-
var _style = require("../../utils/style");
|
|
33
|
-
|
|
34
32
|
var _Modal = _interopRequireDefault(require("../common/Modal"));
|
|
35
33
|
|
|
36
34
|
var _PictureUrlInput = _interopRequireDefault(require("./PictureUrlInput"));
|
|
37
35
|
|
|
36
|
+
var _fp = _interopRequireDefault(require("lodash/fp"));
|
|
37
|
+
|
|
38
|
+
var _tools = require("../../constants/tools");
|
|
39
|
+
|
|
38
40
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
39
41
|
|
|
40
42
|
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; }
|
|
41
43
|
|
|
42
|
-
var
|
|
43
|
-
var TOOLS_MENU_BREAKPOINT = 280;
|
|
44
|
+
var TOOL_WIDTH = 40;
|
|
44
45
|
var StyledShrinkableTools = /*#__PURE__*/(0, _react2.styled)("div")({
|
|
45
46
|
name: "StyledShrinkableTools",
|
|
46
47
|
"class": "so6hnjf"
|
|
@@ -55,15 +56,15 @@ var StyledToolsModal = /*#__PURE__*/(0, _react2.styled)(_Modal["default"])({
|
|
|
55
56
|
});
|
|
56
57
|
var TOOLBAR_STRUCTURE = [{
|
|
57
58
|
title: 'brush',
|
|
58
|
-
|
|
59
|
+
toolsType: [_Shapes.ShapeEnum.brush],
|
|
59
60
|
vertical: false
|
|
60
61
|
}, {
|
|
61
62
|
title: 'lines',
|
|
62
|
-
|
|
63
|
+
toolsType: [_Shapes.ShapeEnum.line, _Shapes.ShapeEnum.curve, _Shapes.ShapeEnum.polygon],
|
|
63
64
|
vertical: false
|
|
64
65
|
}, {
|
|
65
66
|
title: 'shapes',
|
|
66
|
-
|
|
67
|
+
toolsType: [_Shapes.ShapeEnum.rect, _Shapes.ShapeEnum.square, _Shapes.ShapeEnum.circle, _Shapes.ShapeEnum.ellipse],
|
|
67
68
|
vertical: false
|
|
68
69
|
}, _Shapes.ShapeEnum.text];
|
|
69
70
|
|
|
@@ -88,7 +89,12 @@ var Toolbar = function Toolbar(_ref) {
|
|
|
88
89
|
loadFile = _ref.loadFile,
|
|
89
90
|
saveFile = _ref.saveFile,
|
|
90
91
|
exportCanvasInFile = _ref.exportCanvasInFile,
|
|
91
|
-
availableTools = _ref.availableTools
|
|
92
|
+
availableTools = _ref.availableTools,
|
|
93
|
+
withUrlPicture = _ref.withUrlPicture,
|
|
94
|
+
withUploadPicture = _ref.withUploadPicture;
|
|
95
|
+
var currentStructure = (0, _toolbar.getCurrentStructure)(availableTools, TOOLBAR_STRUCTURE);
|
|
96
|
+
var fullToolbarSize = (5 + currentStructure.length) * TOOL_WIDTH;
|
|
97
|
+
var withMenuToolbarSize = (2 + currentStructure.length) * TOOL_WIDTH;
|
|
92
98
|
|
|
93
99
|
var _useState = (0, _react.useState)(false),
|
|
94
100
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
@@ -100,12 +106,12 @@ var Toolbar = function Toolbar(_ref) {
|
|
|
100
106
|
isPictureUrlModalOpen = _useState4[0],
|
|
101
107
|
setIsPictureUrlModalOpen = _useState4[1];
|
|
102
108
|
|
|
103
|
-
var _useState5 = (0, _react.useState)(width <
|
|
109
|
+
var _useState5 = (0, _react.useState)(width < fullToolbarSize),
|
|
104
110
|
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
105
111
|
actionsInMenu = _useState6[0],
|
|
106
112
|
setActionsInMenu = _useState6[1];
|
|
107
113
|
|
|
108
|
-
var _useState7 = (0, _react.useState)(width <
|
|
114
|
+
var _useState7 = (0, _react.useState)(width < withMenuToolbarSize),
|
|
109
115
|
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
110
116
|
toolsInMenu = _useState8[0],
|
|
111
117
|
setToolsInMenu = _useState8[1];
|
|
@@ -131,17 +137,67 @@ var Toolbar = function Toolbar(_ref) {
|
|
|
131
137
|
setIsMenuOpen(false);
|
|
132
138
|
};
|
|
133
139
|
|
|
140
|
+
var setActiveToolFromId = function setActiveToolFromId(toolId) {
|
|
141
|
+
var _availableTools$find;
|
|
142
|
+
|
|
143
|
+
setActiveTool((_availableTools$find = availableTools.find(function (tool) {
|
|
144
|
+
return tool.id === toolId;
|
|
145
|
+
})) !== null && _availableTools$find !== void 0 ? _availableTools$find : activeTool);
|
|
146
|
+
}; //360 240
|
|
147
|
+
|
|
148
|
+
|
|
134
149
|
(0, _react.useEffect)(function () {
|
|
135
|
-
setActionsInMenu(width <
|
|
136
|
-
setToolsInMenu(width <
|
|
137
|
-
}, [width]);
|
|
138
|
-
var
|
|
139
|
-
|
|
140
|
-
|
|
150
|
+
setActionsInMenu(width < fullToolbarSize);
|
|
151
|
+
setToolsInMenu(width < withMenuToolbarSize);
|
|
152
|
+
}, [width, fullToolbarSize, withMenuToolbarSize]);
|
|
153
|
+
var isAnyToolSelected = _fp["default"].find({
|
|
154
|
+
type: activeTool
|
|
155
|
+
}, availableTools) !== undefined;
|
|
156
|
+
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(StyledToolbox, null, /*#__PURE__*/_react["default"].createElement(StyledShrinkableTools, null, /*#__PURE__*/_react["default"].createElement(_Tool["default"], {
|
|
157
|
+
type: _tools.SELECTION_TOOL,
|
|
158
|
+
disabled: disabled,
|
|
159
|
+
img: _tools.SELECTION_TOOL.icon,
|
|
160
|
+
isActive: activeTool.id === _tools.SELECTION_TOOL.id,
|
|
161
|
+
setActive: setActiveTool
|
|
162
|
+
}), toolsInMenu ? /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
163
|
+
disabled: disabled,
|
|
164
|
+
onClick: toggleTools,
|
|
165
|
+
title: "Toggle tools",
|
|
166
|
+
icon: _icons.shapesIcon,
|
|
167
|
+
selected: isAnyToolSelected
|
|
168
|
+
}) : currentStructure.map(function (group, i) {
|
|
169
|
+
return /*#__PURE__*/_react["default"].createElement(_ToolbarGroup["default"], {
|
|
170
|
+
disabled: disabled,
|
|
171
|
+
key: i,
|
|
172
|
+
activeTool: activeTool,
|
|
173
|
+
group: group,
|
|
174
|
+
setActiveToolFromId: setActiveToolFromId
|
|
175
|
+
});
|
|
176
|
+
})), !actionsInMenu && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Tool["default"], {
|
|
177
|
+
type: _tools.UNDO_TOOL,
|
|
178
|
+
disabled: disabled || !hasActionToUndo,
|
|
179
|
+
img: _tools.UNDO_TOOL.icon,
|
|
180
|
+
isActive: activeTool.id === _tools.UNDO_TOOL.id,
|
|
181
|
+
setActive: undoAction
|
|
182
|
+
}), /*#__PURE__*/_react["default"].createElement(_Tool["default"], {
|
|
183
|
+
type: _tools.REDO_TOOL,
|
|
184
|
+
disabled: disabled || !hasActionToRedo,
|
|
185
|
+
img: _tools.REDO_TOOL.icon,
|
|
186
|
+
isActive: activeTool.id === _tools.REDO_TOOL.id,
|
|
187
|
+
setActive: redoAction
|
|
188
|
+
}), /*#__PURE__*/_react["default"].createElement(_Tool["default"], {
|
|
189
|
+
type: _tools.CLEAR_TOOL,
|
|
190
|
+
disabled: disabled || !hasActionToClear,
|
|
191
|
+
img: _tools.CLEAR_TOOL.icon,
|
|
192
|
+
isActive: activeTool.id === _tools.CLEAR_TOOL.id,
|
|
193
|
+
setActive: function setActive() {
|
|
194
|
+
return clearCanvas();
|
|
195
|
+
}
|
|
196
|
+
})), /*#__PURE__*/_react["default"].createElement(_MenuGroup["default"], {
|
|
141
197
|
withActionsInMenu: actionsInMenu,
|
|
142
198
|
disabled: disabled,
|
|
143
199
|
vertical: true,
|
|
144
|
-
alignment: "
|
|
200
|
+
alignment: "right",
|
|
145
201
|
group: {
|
|
146
202
|
title: 'Menu',
|
|
147
203
|
img: _icons.menuIcon
|
|
@@ -152,7 +208,8 @@ var Toolbar = function Toolbar(_ref) {
|
|
|
152
208
|
saveFile: saveFile,
|
|
153
209
|
togglePictureUrlModal: openPictureUrlModal,
|
|
154
210
|
exportCanvasInFile: exportCanvasInFile,
|
|
155
|
-
|
|
211
|
+
withUploadPicture: withUploadPicture,
|
|
212
|
+
withUrlPicture: withUrlPicture,
|
|
156
213
|
withLoadAndSave: withLoadAndSave,
|
|
157
214
|
withExport: withExport,
|
|
158
215
|
hasActionToUndo: hasActionToUndo,
|
|
@@ -161,61 +218,16 @@ var Toolbar = function Toolbar(_ref) {
|
|
|
161
218
|
undoAction: undoAction,
|
|
162
219
|
redoAction: redoAction,
|
|
163
220
|
clearCanvas: clearCanvas
|
|
164
|
-
}), /*#__PURE__*/_react["default"].createElement(
|
|
165
|
-
type: _Shapes.ToolEnum.selection,
|
|
166
|
-
disabled: disabled,
|
|
167
|
-
lib: "selection",
|
|
168
|
-
img: _icons.selectIcon,
|
|
169
|
-
isActive: activeTool === _Shapes.ToolEnum.selection,
|
|
170
|
-
setActive: setActiveTool
|
|
171
|
-
}), !actionsInMenu && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Tool["default"], {
|
|
172
|
-
type: _Shapes.ToolEnum.undo,
|
|
173
|
-
disabled: disabled || !hasActionToUndo,
|
|
174
|
-
lib: "Undo",
|
|
175
|
-
img: _icons.undoIcon,
|
|
176
|
-
isActive: activeTool === _Shapes.ToolEnum.undo,
|
|
177
|
-
setActive: undoAction
|
|
178
|
-
}), /*#__PURE__*/_react["default"].createElement(_Tool["default"], {
|
|
179
|
-
type: _Shapes.ToolEnum.redo,
|
|
180
|
-
disabled: disabled || !hasActionToRedo,
|
|
181
|
-
lib: "Redo",
|
|
182
|
-
img: _icons.redoIcon,
|
|
183
|
-
isActive: activeTool === _Shapes.ToolEnum.redo,
|
|
184
|
-
setActive: redoAction
|
|
185
|
-
}), /*#__PURE__*/_react["default"].createElement(_Tool["default"], {
|
|
186
|
-
type: _Shapes.ToolEnum.clear,
|
|
187
|
-
disabled: disabled || !hasActionToClear,
|
|
188
|
-
lib: "Clear",
|
|
189
|
-
img: _icons.clearIcon,
|
|
190
|
-
isActive: activeTool === _Shapes.ToolEnum.clear,
|
|
191
|
-
setActive: function setActive() {
|
|
192
|
-
return clearCanvas();
|
|
193
|
-
}
|
|
194
|
-
})), /*#__PURE__*/_react["default"].createElement(StyledShrinkableTools, null, toolsInMenu ? /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
195
|
-
disabled: disabled,
|
|
196
|
-
onClick: toggleTools,
|
|
197
|
-
title: "Toggle tools",
|
|
198
|
-
icon: _icons.shapesIcon,
|
|
199
|
-
selected: isAnyToolSelected
|
|
200
|
-
}) : currentStructure.map(function (group, i) {
|
|
201
|
-
return /*#__PURE__*/_react["default"].createElement(_ToolbarGroup["default"], {
|
|
202
|
-
disabled: disabled,
|
|
203
|
-
key: i,
|
|
204
|
-
activeTool: activeTool,
|
|
205
|
-
group: group,
|
|
206
|
-
setActiveTool: setActiveTool
|
|
207
|
-
});
|
|
208
|
-
}))), isMenuOpen && /*#__PURE__*/_react["default"].createElement(StyledToolsModal, {
|
|
221
|
+
})), isMenuOpen && /*#__PURE__*/_react["default"].createElement(StyledToolsModal, {
|
|
209
222
|
onClose: toggleTools
|
|
210
|
-
}, availableTools.map(function (toolType) {
|
|
211
|
-
return toolType === _Shapes.ShapeEnum.picture ? null : /*#__PURE__*/_react["default"].createElement(_Tool["default"], {
|
|
223
|
+
}, availableTools.map(function (toolType, index) {
|
|
224
|
+
return toolType.type === _Shapes.ShapeEnum.picture ? null : /*#__PURE__*/_react["default"].createElement(_Tool["default"], {
|
|
212
225
|
disabled: disabled,
|
|
213
|
-
key:
|
|
226
|
+
key: index,
|
|
214
227
|
type: toolType,
|
|
215
|
-
|
|
228
|
+
img: toolType.icon,
|
|
216
229
|
withText: false,
|
|
217
|
-
|
|
218
|
-
isActive: activeTool === toolType,
|
|
230
|
+
isActive: activeTool.id === toolType.id,
|
|
219
231
|
setActive: setActiveTool
|
|
220
232
|
});
|
|
221
233
|
})), isPictureUrlModalOpen && /*#__PURE__*/_react["default"].createElement(_PictureUrlInput["default"], {
|
|
@@ -21,8 +21,6 @@ var _Panel = _interopRequireDefault(require("../common/Panel"));
|
|
|
21
21
|
|
|
22
22
|
var _react2 = require("@linaria/react");
|
|
23
23
|
|
|
24
|
-
var _style = require("../../utils/style");
|
|
25
|
-
|
|
26
24
|
var _Tool = _interopRequireDefault(require("./Tool"));
|
|
27
25
|
|
|
28
26
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -39,20 +37,24 @@ var StyledRelative = /*#__PURE__*/(0, _react2.styled)("div")({
|
|
|
39
37
|
});
|
|
40
38
|
|
|
41
39
|
var ToolbarGroup = function ToolbarGroup(_ref) {
|
|
42
|
-
var _group$
|
|
40
|
+
var _group$toolsType, _ref2;
|
|
43
41
|
|
|
44
42
|
var activeTool = _ref.activeTool,
|
|
45
43
|
alignment = _ref.alignment,
|
|
46
44
|
group = _ref.group,
|
|
47
45
|
_ref$disabled = _ref.disabled,
|
|
48
46
|
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
49
|
-
|
|
47
|
+
setActiveToolFromId = _ref.setActiveToolFromId;
|
|
50
48
|
|
|
51
49
|
var _useState = (0, _react.useState)(false),
|
|
52
50
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
53
51
|
isOpen = _useState2[0],
|
|
54
52
|
setIsOpen = _useState2[1];
|
|
55
53
|
|
|
54
|
+
var _useTransition = (0, _react.useTransition)(),
|
|
55
|
+
_useTransition2 = (0, _slicedToArray2["default"])(_useTransition, 2),
|
|
56
|
+
startTransition = _useTransition2[1];
|
|
57
|
+
|
|
56
58
|
var _useState3 = (0, _react.useState)(undefined),
|
|
57
59
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
58
60
|
localActiveTool = _useState4[0],
|
|
@@ -60,7 +62,7 @@ var ToolbarGroup = function ToolbarGroup(_ref) {
|
|
|
60
62
|
|
|
61
63
|
var setActiveTool = function setActiveTool(tool) {
|
|
62
64
|
setLocalActiveTool(tool);
|
|
63
|
-
|
|
65
|
+
setActiveToolFromId(tool.id);
|
|
64
66
|
};
|
|
65
67
|
|
|
66
68
|
(0, _react.useEffect)(function () {
|
|
@@ -70,47 +72,44 @@ var ToolbarGroup = function ToolbarGroup(_ref) {
|
|
|
70
72
|
setIsOpen(false);
|
|
71
73
|
};
|
|
72
74
|
|
|
73
|
-
|
|
74
|
-
//TODO find a better fix than settimeout for react18
|
|
75
|
-
document.addEventListener('click', closePanel);
|
|
76
|
-
}, 0);
|
|
75
|
+
document.addEventListener('click', closePanel);
|
|
77
76
|
return function () {
|
|
78
|
-
clearTimeout(timeoutId);
|
|
79
77
|
document.removeEventListener('click', closePanel);
|
|
80
78
|
};
|
|
81
79
|
}, [isOpen]);
|
|
82
80
|
|
|
83
|
-
if (
|
|
81
|
+
if ('type' in group) {
|
|
84
82
|
return /*#__PURE__*/_react["default"].createElement(_Tool["default"], {
|
|
85
83
|
disabled: disabled,
|
|
86
84
|
type: group,
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
isActive: activeTool === group,
|
|
85
|
+
img: group.icon,
|
|
86
|
+
isActive: activeTool.id === group.id,
|
|
90
87
|
setActive: setActiveTool
|
|
91
88
|
});
|
|
92
89
|
}
|
|
93
90
|
|
|
94
|
-
if (_fp["default"].isEmpty(group.
|
|
91
|
+
if (_fp["default"].isEmpty(group.toolsType)) return null;
|
|
95
92
|
|
|
96
|
-
if (((_group$
|
|
93
|
+
if (((_group$toolsType = group.toolsType) === null || _group$toolsType === void 0 ? void 0 : _group$toolsType.length) === 1) {
|
|
97
94
|
return /*#__PURE__*/_react["default"].createElement(_Tool["default"], {
|
|
98
95
|
disabled: disabled,
|
|
99
|
-
type: group.
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
isActive: activeTool === group.tools[0],
|
|
96
|
+
type: group.toolsType[0],
|
|
97
|
+
img: group.toolsType[0].icon,
|
|
98
|
+
isActive: activeTool.id === group.toolsType[0].id,
|
|
103
99
|
setActive: setActiveTool
|
|
104
100
|
});
|
|
105
101
|
}
|
|
106
102
|
|
|
107
|
-
var isActive = _fp["default"].
|
|
108
|
-
|
|
109
|
-
|
|
103
|
+
var isActive = _fp["default"].find({
|
|
104
|
+
type: activeTool.type
|
|
105
|
+
}, group === null || group === void 0 ? void 0 : group.toolsType) !== undefined;
|
|
106
|
+
var groupIcon = (_ref2 = localActiveTool ? localActiveTool.icon : group.toolsType && group.toolsType[0] && group.toolsType[0].icon) !== null && _ref2 !== void 0 ? _ref2 : group.title;
|
|
110
107
|
|
|
111
108
|
var openPanel = function openPanel() {
|
|
112
|
-
if (localActiveTool)
|
|
113
|
-
|
|
109
|
+
if (localActiveTool) setActiveToolFromId(localActiveTool.id);else group.toolsType && group.toolsType[0] && setActiveTool(group.toolsType[0]);
|
|
110
|
+
startTransition(function () {
|
|
111
|
+
setIsOpen(true);
|
|
112
|
+
});
|
|
114
113
|
};
|
|
115
114
|
|
|
116
115
|
return /*#__PURE__*/_react["default"].createElement(StyledRelative, null, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
@@ -122,17 +121,16 @@ var ToolbarGroup = function ToolbarGroup(_ref) {
|
|
|
122
121
|
}), isOpen && /*#__PURE__*/_react["default"].createElement(StyledPanel, {
|
|
123
122
|
vertical: group.vertical,
|
|
124
123
|
alignment: alignment
|
|
125
|
-
},
|
|
124
|
+
}, group.toolsType.map(function (toolType, i) {
|
|
126
125
|
return /*#__PURE__*/_react["default"].createElement(_Tool["default"], {
|
|
127
126
|
disabled: disabled,
|
|
128
|
-
key:
|
|
127
|
+
key: i,
|
|
129
128
|
type: toolType,
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
isActive: activeTool === toolType,
|
|
129
|
+
img: toolType.icon,
|
|
130
|
+
isActive: activeTool.id === toolType.id,
|
|
133
131
|
setActive: setActiveTool
|
|
134
132
|
});
|
|
135
|
-
}
|
|
133
|
+
})));
|
|
136
134
|
};
|
|
137
135
|
|
|
138
136
|
var _default = ToolbarGroup;
|
package/dist/constants/icons.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.visibilityOffIcon = exports.visibilityIcon = exports.unlockedIcon = exports.undoIcon = exports.trashIcon = exports.textIcon = exports.squareIcon = exports.shapesIcon = exports.selectIcon = exports.saveIcon = exports.redoIcon = exports.recIcon = exports.publicIcon = exports.polygonIcon = exports.pictureIcon = exports.penIcon = exports.paletteIcon = exports.paintIcon = exports.openFileIcon = exports.opacityIcon = exports.menuIcon = exports.lockedIcon = exports.layersIcon = exports.gridOnIcon = exports.gridOffIcon = exports.gestureIcon = exports.exportFileIcon = exports.encodedTransparentIcon = exports.ellipseIcon = exports.dragIcon = exports.dotsIcon = exports.curveIcon = exports.clearIcon = exports.circleIcon = exports.brushIcon = exports.arrowIcon = void 0;
|
|
6
|
+
exports.visibilityOffIcon = exports.visibilityIcon = exports.unlockedIcon = exports.undoIcon = exports.trashIcon = exports.textIcon = exports.squareIcon = exports.shapesIcon = exports.selectIcon = exports.saveIcon = exports.redoIcon = exports.recIcon = exports.publicIcon = exports.polygonIcon = exports.pictureIcon = exports.penIcon = exports.paletteIcon = exports.paintIcon = exports.openFileIcon = exports.opacityIcon = exports.menuIcon = exports.lockedIcon = exports.layersIcon = exports.italicIcon = exports.gridOnIcon = exports.gridOffIcon = exports.gestureIcon = exports.exportFileIcon = exports.encodedTransparentIcon = exports.ellipseIcon = exports.dragIcon = exports.dotsIcon = exports.curveIcon = exports.clearIcon = exports.circleIcon = exports.brushIcon = exports.boldIcon = exports.arrowIcon = void 0;
|
|
7
7
|
var brushIcon = '<svg><path d="M5.146 17.5Q4.146 17.5 3.208 17Q2.271 16.5 1.667 15.708Q2.208 15.75 2.802 15.344Q3.396 14.938 3.396 14.104Q3.396 13.042 4.135 12.292Q4.875 11.542 5.958 11.542Q7.021 11.542 7.76 12.292Q8.5 13.042 8.5 14.104Q8.5 15.5 7.51 16.5Q6.521 17.5 5.146 17.5ZM9.917 12.5 7.562 10.146 14.917 2.729Q15.146 2.5 15.469 2.5Q15.792 2.5 16.021 2.729L17.271 3.958Q17.5 4.188 17.5 4.531Q17.5 4.875 17.271 5.125Z"/></svg>';
|
|
8
8
|
exports.brushIcon = brushIcon;
|
|
9
9
|
var squareIcon = '<svg><path d="M2.5 17.5V2.5H17.5V17.5ZM4.25 15.75H15.75V4.25H4.25ZM4.25 15.75V4.25V15.75Z"/></svg>';
|
|
@@ -77,4 +77,8 @@ exports.ellipseIcon = ellipseIcon;
|
|
|
77
77
|
var selectIcon = '<svg><path d="M8.854 17.5Q8.5 17.5 8.188 17.354Q7.875 17.208 7.604 16.958L3.271 12.646L4.5 11.375Q4.812 11.042 5.24 10.906Q5.667 10.771 6.104 10.875L7.479 11.188V4.667Q7.479 3.771 8.115 3.135Q8.75 2.5 9.646 2.5Q10.542 2.5 11.177 3.135Q11.812 3.771 11.812 4.667V8.062H12.188Q12.333 8.062 12.458 8.094Q12.583 8.125 12.708 8.188L15.812 9.708Q16.292 9.938 16.542 10.406Q16.792 10.875 16.688 11.417L15.917 16.042Q15.812 16.688 15.323 17.094Q14.833 17.5 14.167 17.5ZM8.854 15.75H14.167L14.958 11.229Q14.958 11.229 14.958 11.229Q14.958 11.229 14.958 11.229L11.5 9.562H10.062V4.667Q10.062 4.479 9.948 4.365Q9.833 4.25 9.646 4.25Q9.458 4.25 9.344 4.365Q9.229 4.479 9.229 4.667V13.333L5.708 12.604ZM8.854 15.75H9.229Q9.229 15.75 9.344 15.75Q9.458 15.75 9.646 15.75Q9.833 15.75 9.948 15.75Q10.062 15.75 10.062 15.75H11.521H14.167Q14.167 15.75 14.167 15.75Q14.167 15.75 14.167 15.75Z"/></svg>';
|
|
78
78
|
exports.selectIcon = selectIcon;
|
|
79
79
|
var curveIcon = '<svg><path d="M7.521 17.5Q6.125 17.5 5.146 16.51Q4.167 15.521 4.167 14.125V7.417Q3.438 7.125 2.969 6.49Q2.5 5.854 2.5 5.042Q2.5 3.979 3.24 3.24Q3.979 2.5 5.042 2.5Q6.104 2.5 6.844 3.24Q7.583 3.979 7.583 5.042Q7.583 5.854 7.115 6.49Q6.646 7.125 5.917 7.417V14.125Q5.917 14.792 6.385 15.271Q6.854 15.75 7.521 15.75Q8.188 15.75 8.656 15.271Q9.125 14.792 9.125 14.125V5.875Q9.125 4.479 10.104 3.49Q11.083 2.5 12.479 2.5Q13.875 2.5 14.854 3.49Q15.833 4.479 15.833 5.875V12.583Q16.562 12.875 17.031 13.51Q17.5 14.146 17.5 14.958Q17.5 16.021 16.76 16.76Q16.021 17.5 14.958 17.5Q13.896 17.5 13.156 16.76Q12.417 16.021 12.417 14.958Q12.417 14.146 12.885 13.5Q13.354 12.854 14.083 12.583V5.875Q14.083 5.208 13.615 4.729Q13.146 4.25 12.479 4.25Q11.812 4.25 11.344 4.729Q10.875 5.208 10.875 5.875V14.125Q10.875 15.521 9.896 16.51Q8.917 17.5 7.521 17.5Z"/></svg>';
|
|
80
|
-
exports.curveIcon = curveIcon;
|
|
80
|
+
exports.curveIcon = curveIcon;
|
|
81
|
+
var boldIcon = '<svg><path d="M5.833 15V3.333H10.375Q11.812 3.333 12.885 4.156Q13.958 4.979 13.958 6.375Q13.958 7.375 13.49 7.969Q13.021 8.562 12.396 8.875V9.042Q13.312 9.354 13.844 10.021Q14.375 10.688 14.375 11.75Q14.375 13.312 13.229 14.156Q12.083 15 10.5 15ZM8.125 8.042H10.188Q10.854 8.042 11.302 7.656Q11.75 7.271 11.75 6.708Q11.75 6.167 11.302 5.771Q10.854 5.375 10.188 5.375H8.125ZM8.125 12.917H10.354Q11.167 12.917 11.625 12.51Q12.083 12.104 12.083 11.458Q12.083 10.812 11.625 10.406Q11.167 10 10.354 10H8.125Z"/></svg>';
|
|
82
|
+
exports.boldIcon = boldIcon;
|
|
83
|
+
var italicIcon = '<svg><path d="M4.167 16.667V14.083H6.979L10.229 5.917H7.5V3.333H15.833V5.917H13.021L9.771 14.083H12.5V16.667Z"/></svg>';
|
|
84
|
+
exports.italicIcon = italicIcon;
|
package/dist/constants/style.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.STYLE_ZINDEX_SNACKBAR = exports.STYLE_ZINDEX_PANEL = exports.STYLE_ZINDEX_LOADING = exports.STYLE_ZINDEX_APP = exports.STYLE_LINE_WITH_ARROW = exports.STYLE_LINE_DASH = exports.STYLE_FONT_DEFAULT = exports.STYLE_FONTS = exports.STYLE_COLORS = exports.POLYGON_POINTS_VALUES = exports.LINE_DASH_DATA = exports.CURVE_POINTS_VALUES = void 0;
|
|
6
|
+
exports.STYLE_ZINDEX_SNACKBAR = exports.STYLE_ZINDEX_PANEL = exports.STYLE_ZINDEX_LOADING = exports.STYLE_ZINDEX_APP = exports.STYLE_LINE_WITH_ARROW = exports.STYLE_LINE_DASH = exports.STYLE_FONT_SIZE_DEFAULT = exports.STYLE_FONT_DEFAULT = exports.STYLE_FONTS = exports.STYLE_COLORS = exports.POLYGON_POINTS_VALUES = exports.LINE_DASH_DATA = exports.CURVE_POINTS_VALUES = void 0;
|
|
7
7
|
var POLYGON_POINTS_VALUES = [3, 4, 5, 6, 7, 8, 9, 10];
|
|
8
8
|
exports.POLYGON_POINTS_VALUES = POLYGON_POINTS_VALUES;
|
|
9
9
|
var CURVE_POINTS_VALUES = [3, 4, 5, 6, 7, 8, 9];
|
|
@@ -20,6 +20,8 @@ var STYLE_FONTS = ['arial', 'serif', 'monospace'];
|
|
|
20
20
|
exports.STYLE_FONTS = STYLE_FONTS;
|
|
21
21
|
var STYLE_FONT_DEFAULT = 'serif';
|
|
22
22
|
exports.STYLE_FONT_DEFAULT = STYLE_FONT_DEFAULT;
|
|
23
|
+
var STYLE_FONT_SIZE_DEFAULT = 36;
|
|
24
|
+
exports.STYLE_FONT_SIZE_DEFAULT = STYLE_FONT_SIZE_DEFAULT;
|
|
23
25
|
var STYLE_ZINDEX_APP = 1;
|
|
24
26
|
exports.STYLE_ZINDEX_APP = STYLE_ZINDEX_APP;
|
|
25
27
|
var STYLE_ZINDEX_LOADING = 2;
|