@yorab/react-paint 0.5.0 → 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.
Files changed (36) hide show
  1. package/Changelog.md +96 -0
  2. package/README.md +0 -7
  3. package/dist/components/App.js +69 -49
  4. package/dist/components/Canvas.js +7 -7
  5. package/dist/components/common/Button.js +4 -4
  6. package/dist/components/common/Loading.js +3 -3
  7. package/dist/components/common/Modal.js +3 -3
  8. package/dist/components/common/Panel.js +2 -2
  9. package/dist/components/common/Snackbar.js +2 -2
  10. package/dist/components/settings/ColorField.js +4 -4
  11. package/dist/components/settings/FontFamilyField.js +3 -3
  12. package/dist/components/settings/LayoutButton.js +1 -1
  13. package/dist/components/settings/Layouts.js +18 -9
  14. package/dist/components/settings/LineArrowField.js +4 -4
  15. package/dist/components/settings/LineTypeField.js +3 -3
  16. package/dist/components/settings/PointsNumberField.js +1 -1
  17. package/dist/components/settings/RangeField.js +1 -1
  18. package/dist/components/settings/SelectField.js +1 -1
  19. package/dist/components/settings/SettingsBar.js +105 -79
  20. package/dist/components/settings/ToggleField.js +56 -0
  21. package/dist/components/toolbox/EditTextBox.js +23 -16
  22. package/dist/components/toolbox/MenuGroup.js +10 -8
  23. package/dist/components/toolbox/PictureUrlInput.js +1 -1
  24. package/dist/components/toolbox/Toolbar.js +12 -4
  25. package/dist/components/toolbox/ToolbarGroup.js +13 -11
  26. package/dist/constants/icons.js +6 -2
  27. package/dist/constants/tools.js +8 -0
  28. package/dist/hooks/useDoubleClick.js +46 -0
  29. package/dist/hooks/useDrawableCanvas.js +29 -45
  30. package/dist/styles.css +52 -51
  31. package/dist/utils/data.js +27 -5
  32. package/dist/utils/draw.js +3 -3
  33. package/dist/utils/file.js +15 -14
  34. package/dist/utils/selection.js +1 -1
  35. package/dist/utils/transform.js +23 -10
  36. package/package.json +1 -1
@@ -17,11 +17,11 @@ var _fp = _interopRequireDefault(require("lodash/fp"));
17
17
 
18
18
  var StyledLine = /*#__PURE__*/(0, _react2.styled)("span")({
19
19
  name: "StyledLine",
20
- "class": "s1yz5lc1"
20
+ "class": "s1qssg4n"
21
21
  });
22
22
  var StyledOption = /*#__PURE__*/(0, _react2.styled)("span")({
23
23
  name: "StyledOption",
24
- "class": "s1k64iv7"
24
+ "class": "se26iq6"
25
25
  });
26
26
 
27
27
  var LineTypeOption = function LineTypeOption(_ref) {
@@ -48,7 +48,7 @@ var LineTypeField = function LineTypeField(_ref2) {
48
48
  CustomOption: LineTypeOption,
49
49
  title: "Type de traits",
50
50
  disabled: disabled,
51
- field: "style.lineDash",
51
+ field: "lineDash",
52
52
  values: values,
53
53
  defaultValue: defaultValue,
54
54
  valueChanged: valueChanged
@@ -27,7 +27,7 @@ var PointsNumberField = function PointsNumberField(_ref) {
27
27
  setSelectedSettings: setSelectedSettings,
28
28
  title: "Nombre de points",
29
29
  disabled: disabled,
30
- field: "style.pointsCount",
30
+ field: "pointsCount",
31
31
  min: min,
32
32
  max: max,
33
33
  step: step,
@@ -27,7 +27,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
27
27
 
28
28
  var StyledLabel = /*#__PURE__*/(0, _react2.styled)("label")({
29
29
  name: "StyledLabel",
30
- "class": "s4h1871"
30
+ "class": "s9mugpt"
31
31
  });
32
32
 
33
33
  var RangeField = function RangeField(_ref) {
@@ -27,7 +27,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
27
27
 
28
28
  var StyledButton = /*#__PURE__*/(0, _react2.styled)(_Button["default"])({
29
29
  name: "StyledButton",
30
- "class": "sfr849o"
30
+ "class": "s1ktxhkr"
31
31
  });
32
32
 
33
33
  var SelectField = function SelectField(_ref) {
@@ -37,6 +37,10 @@ var _LineTypeField = _interopRequireDefault(require("./LineTypeField"));
37
37
 
38
38
  var _LineArrowField = _interopRequireDefault(require("./LineArrowField"));
39
39
 
40
+ var _ToggleField = _interopRequireDefault(require("./ToggleField"));
41
+
42
+ var _icons = require("../../constants/icons");
43
+
40
44
  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); }
41
45
 
42
46
  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; }
@@ -47,19 +51,20 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
47
51
 
48
52
  var StyledSettingsBar = /*#__PURE__*/(0, _react2.styled)("div")({
49
53
  name: "StyledSettingsBar",
50
- "class": "s17kh6p4"
54
+ "class": "s16z54di"
51
55
  });
52
56
  var StyledSeparator = /*#__PURE__*/(0, _react2.styled)("div")({
53
57
  name: "StyledSeparator",
54
- "class": "s1fluhcn"
58
+ "class": "sa7lzh9"
55
59
  });
56
60
 
57
61
  var SettingsBar = function SettingsBar(_ref) {
58
- var _selectedShape$style, _selectedShape$style2, _selectedShape$style3, _selectedShape$style4, _selectedShape$style5, _selectedShape$style6, _selectedShape$style7, _selectedShape$style$, _selectedShape$style8;
62
+ var _selectedShape$style, _selectedShape$style2, _selectedShape$style3, _selectedShape$style4, _selectedShape$style5, _selectedShape$style6, _selectedShape$style7, _selectedShape$style8, _selectedShape$style9, _selectedShape$style$, _selectedShape$style10;
59
63
 
60
64
  var _ref$disabled = _ref.disabled,
61
65
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
62
66
  availableTools = _ref.availableTools,
67
+ updateToolSettings = _ref.updateToolSettings,
63
68
  layersManipulation = _ref.layersManipulation,
64
69
  toggleLayoutPanel = _ref.toggleLayoutPanel,
65
70
  activeTool = _ref.activeTool,
@@ -68,17 +73,6 @@ var SettingsBar = function SettingsBar(_ref) {
68
73
  updateShape = _ref.updateShape,
69
74
  removeShape = _ref.removeShape;
70
75
 
71
- // const shapes = [
72
- // ShapeEnum.brush,
73
- // ShapeEnum.ellipse,
74
- // ShapeEnum.circle,
75
- // ShapeEnum.rect,
76
- // ShapeEnum.square,
77
- // ShapeEnum.line,
78
- // ShapeEnum.polygon,
79
- // ShapeEnum.curve,
80
- // ShapeEnum.text
81
- // ]
82
76
  var _useState = (0, _react.useState)(undefined),
83
77
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
84
78
  selectedSettings = _useState2[0],
@@ -86,23 +80,23 @@ var SettingsBar = function SettingsBar(_ref) {
86
80
 
87
81
  var handleShapeStyleChange = function handleShapeStyleChange(field, value) {
88
82
  if (selectedShape) {
89
- updateShape(_fp["default"].set(field, value, selectedShape), true);
90
- } // } else {
91
- // setDefaultConf(prevDefaultConf => _.set(field, value, prevDefaultConf))
92
- // }
93
-
83
+ updateShape(_fp["default"].set(['style', field], value, selectedShape), true);
84
+ updateToolSettings(selectedShape.toolId, field, value);
85
+ } else {
86
+ updateToolSettings(activeTool.id, field, value);
87
+ }
94
88
  };
95
89
 
96
90
  var handleShapeFontFamilyChange = function handleShapeFontFamilyChange(field, value) {
97
91
  if (selectedShape) {
98
- var _newShape$style;
92
+ var _newShape$style$fontB, _newShape$style, _newShape$style$fontI, _newShape$style2, _newShape$style3;
99
93
 
100
94
  var ctx = canvas === null || canvas === void 0 ? void 0 : canvas.getContext('2d');
101
95
  if (!ctx) return;
102
96
 
103
- var newShape = _fp["default"].set(field, value, selectedShape);
97
+ var newShape = _fp["default"].set(['style', field], value, selectedShape);
104
98
 
105
- var fontSize = (0, _transform.calculateTextFontSize)(ctx, newShape.value, newShape.width, (_newShape$style = newShape.style) === null || _newShape$style === void 0 ? void 0 : _newShape$style.fontFamily);
99
+ var fontSize = (0, _transform.calculateTextFontSize)(ctx, newShape.value, newShape.width, (_newShape$style$fontB = (_newShape$style = newShape.style) === null || _newShape$style === void 0 ? void 0 : _newShape$style.fontBold) !== null && _newShape$style$fontB !== void 0 ? _newShape$style$fontB : false, (_newShape$style$fontI = (_newShape$style2 = newShape.style) === null || _newShape$style2 === void 0 ? void 0 : _newShape$style2.fontItalic) !== null && _newShape$style$fontI !== void 0 ? _newShape$style$fontI : false, (_newShape$style3 = newShape.style) === null || _newShape$style3 === void 0 ? void 0 : _newShape$style3.fontFamily);
106
100
 
107
101
  var resizedShape = _objectSpread(_objectSpread({}, newShape), {}, {
108
102
  fontSize: fontSize,
@@ -110,19 +104,19 @@ var SettingsBar = function SettingsBar(_ref) {
110
104
  });
111
105
 
112
106
  updateShape(resizedShape, true);
113
- } // else {
114
- // setDefaultConf(prevDefaultConf => _.set(field, value, prevDefaultConf))
115
- // }
116
-
107
+ updateToolSettings(selectedShape.toolId, field, value);
108
+ } else {
109
+ updateToolSettings(activeTool.id, field, value);
110
+ }
117
111
  };
118
112
 
119
113
  var handlePolygonLinesCount = function handlePolygonLinesCount(field, value) {
120
114
  if (selectedShape) {
121
115
  updateShape((0, _transform.updatePolygonLinesCount)(selectedShape, value), true);
122
- } // else {
123
- // setDefaultConf(prevDefaultConf => _.set(field, value, prevDefaultConf))
124
- // }
125
-
116
+ updateToolSettings(selectedShape.toolId, field, value);
117
+ } else {
118
+ updateToolSettings(activeTool.id, field, value);
119
+ }
126
120
  };
127
121
 
128
122
  var selectedShapeTool = selectedShape ? _fp["default"].find({
@@ -130,28 +124,30 @@ var SettingsBar = function SettingsBar(_ref) {
130
124
  }, availableTools) || _fp["default"].find({
131
125
  type: selectedShape.type
132
126
  }, availableTools) : undefined;
133
- return /*#__PURE__*/_react["default"].createElement(StyledSettingsBar, null, selectedShape ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, selectedShapeTool && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, 'pointsCount' in selectedShapeTool.settings && /*#__PURE__*/_react["default"].createElement(_PointsNumberField["default"], {
127
+ return /*#__PURE__*/_react["default"].createElement(StyledSettingsBar, null, selectedShape ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, selectedShapeTool && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, 'strokeColor' in selectedShapeTool.settings && /*#__PURE__*/_react["default"].createElement(_ColorField["default"], {
134
128
  selectedSettings: selectedSettings,
135
129
  setSelectedSettings: setSelectedSettings,
130
+ title: "Couleur du trait",
136
131
  disabled: disabled,
137
- valueChanged: handlePolygonLinesCount,
138
- min: selectedShapeTool.settings.pointsCount.min,
139
- max: selectedShapeTool.settings.pointsCount.max,
140
- step: selectedShapeTool.settings.pointsCount.step,
141
- value: (_selectedShape$style = selectedShape.style) === null || _selectedShape$style === void 0 ? void 0 : _selectedShape$style.pointsCount
142
- }), 'fontFamily' in selectedShapeTool.settings && /*#__PURE__*/_react["default"].createElement(_FontFamilyField["default"], {
132
+ field: "strokeColor",
133
+ value: (_selectedShape$style = selectedShape.style) === null || _selectedShape$style === void 0 ? void 0 : _selectedShape$style.strokeColor,
134
+ valueChanged: handleShapeStyleChange,
135
+ values: selectedShapeTool.settings.strokeColor.values
136
+ }), 'fillColor' in selectedShapeTool.settings && /*#__PURE__*/_react["default"].createElement(_ColorField["default"], {
143
137
  selectedSettings: selectedSettings,
144
138
  setSelectedSettings: setSelectedSettings,
139
+ title: "Couleur de fond",
145
140
  disabled: disabled,
146
- valueChanged: handleShapeFontFamilyChange,
147
- values: selectedShapeTool.settings.fontFamily.values,
148
- defaultValue: (_selectedShape$style2 = selectedShape.style) === null || _selectedShape$style2 === void 0 ? void 0 : _selectedShape$style2.fontFamily
141
+ field: "fillColor",
142
+ value: (_selectedShape$style2 = selectedShape.style) === null || _selectedShape$style2 === void 0 ? void 0 : _selectedShape$style2.fillColor,
143
+ valueChanged: handleShapeStyleChange,
144
+ values: selectedShapeTool.settings.fillColor.values
149
145
  }), 'lineWidth' in selectedShapeTool.settings && /*#__PURE__*/_react["default"].createElement(_RangeField["default"], {
150
146
  selectedSettings: selectedSettings,
151
147
  setSelectedSettings: setSelectedSettings,
152
148
  title: "Epaisseur du trait",
153
149
  disabled: disabled,
154
- field: "style.lineWidth",
150
+ field: "lineWidth",
155
151
  value: (_selectedShape$style3 = selectedShape.style) === null || _selectedShape$style3 === void 0 ? void 0 : _selectedShape$style3.lineWidth,
156
152
  valueChanged: handleShapeStyleChange,
157
153
  unity: "px",
@@ -172,24 +168,38 @@ var SettingsBar = function SettingsBar(_ref) {
172
168
  defaultValue: (_selectedShape$style5 = selectedShape.style) === null || _selectedShape$style5 === void 0 ? void 0 : _selectedShape$style5.lineArrow,
173
169
  valueChanged: handleShapeStyleChange,
174
170
  values: selectedShapeTool.settings.lineArrow.values
175
- }), 'strokeColor' in selectedShapeTool.settings && /*#__PURE__*/_react["default"].createElement(_ColorField["default"], {
171
+ }), 'pointsCount' in selectedShapeTool.settings && /*#__PURE__*/_react["default"].createElement(_PointsNumberField["default"], {
176
172
  selectedSettings: selectedSettings,
177
173
  setSelectedSettings: setSelectedSettings,
178
- title: "Couleur du trait",
179
174
  disabled: disabled,
180
- field: "style.strokeColor",
181
- value: (_selectedShape$style6 = selectedShape.style) === null || _selectedShape$style6 === void 0 ? void 0 : _selectedShape$style6.strokeColor,
182
- valueChanged: handleShapeStyleChange,
183
- values: selectedShapeTool.settings.strokeColor.values
184
- }), 'fillColor' in selectedShapeTool.settings && /*#__PURE__*/_react["default"].createElement(_ColorField["default"], {
175
+ valueChanged: handlePolygonLinesCount,
176
+ min: selectedShapeTool.settings.pointsCount.min,
177
+ max: selectedShapeTool.settings.pointsCount.max,
178
+ step: selectedShapeTool.settings.pointsCount.step,
179
+ value: (_selectedShape$style6 = selectedShape.style) === null || _selectedShape$style6 === void 0 ? void 0 : _selectedShape$style6.pointsCount
180
+ }), 'fontFamily' in selectedShapeTool.settings && /*#__PURE__*/_react["default"].createElement(_FontFamilyField["default"], {
185
181
  selectedSettings: selectedSettings,
186
182
  setSelectedSettings: setSelectedSettings,
187
- title: "Couleur de fond",
188
183
  disabled: disabled,
189
- field: "style.fillColor",
190
- value: (_selectedShape$style7 = selectedShape.style) === null || _selectedShape$style7 === void 0 ? void 0 : _selectedShape$style7.fillColor,
191
- valueChanged: handleShapeStyleChange,
192
- values: selectedShapeTool.settings.fillColor.values
184
+ valueChanged: handleShapeFontFamilyChange,
185
+ values: selectedShapeTool.settings.fontFamily.values,
186
+ defaultValue: (_selectedShape$style7 = selectedShape.style) === null || _selectedShape$style7 === void 0 ? void 0 : _selectedShape$style7.fontFamily
187
+ }), 'fontBold' in selectedShapeTool.settings && /*#__PURE__*/_react["default"].createElement(_ToggleField["default"], {
188
+ setSelectedSettings: setSelectedSettings,
189
+ disabled: disabled,
190
+ field: "fontBold",
191
+ icon: _icons.boldIcon,
192
+ valueChanged: handleShapeFontFamilyChange,
193
+ values: selectedShapeTool.settings.fontBold.values,
194
+ value: (_selectedShape$style8 = selectedShape.style) === null || _selectedShape$style8 === void 0 ? void 0 : _selectedShape$style8.fontBold
195
+ }), 'fontItalic' in selectedShapeTool.settings && /*#__PURE__*/_react["default"].createElement(_ToggleField["default"], {
196
+ setSelectedSettings: setSelectedSettings,
197
+ disabled: disabled,
198
+ field: "fontItalic",
199
+ icon: _icons.italicIcon,
200
+ valueChanged: handleShapeFontFamilyChange,
201
+ values: selectedShapeTool.settings.fontItalic.values,
202
+ value: (_selectedShape$style9 = selectedShape.style) === null || _selectedShape$style9 === void 0 ? void 0 : _selectedShape$style9.fontItalic
193
203
  }), 'opacity' in selectedShapeTool.settings && /*#__PURE__*/_react["default"].createElement(_RangeField["default"], {
194
204
  selectedSettings: selectedSettings,
195
205
  setSelectedSettings: setSelectedSettings,
@@ -199,35 +209,37 @@ var SettingsBar = function SettingsBar(_ref) {
199
209
  step: selectedShapeTool.settings.opacity.step,
200
210
  unity: "%",
201
211
  disabled: disabled,
202
- field: "style.globalAlpha",
203
- value: (_selectedShape$style$ = (_selectedShape$style8 = selectedShape.style) === null || _selectedShape$style8 === void 0 ? void 0 : _selectedShape$style8.globalAlpha) !== null && _selectedShape$style$ !== void 0 ? _selectedShape$style$ : 100,
212
+ field: "globalAlpha",
213
+ value: (_selectedShape$style$ = (_selectedShape$style10 = selectedShape.style) === null || _selectedShape$style10 === void 0 ? void 0 : _selectedShape$style10.globalAlpha) !== null && _selectedShape$style$ !== void 0 ? _selectedShape$style$ : 100,
204
214
  valueChanged: handleShapeStyleChange
205
215
  })), /*#__PURE__*/_react["default"].createElement(_DeleteButton["default"], {
206
216
  disabled: disabled,
207
217
  selectedShape: selectedShape,
208
218
  removeShape: removeShape
209
- })) : 'settings' in activeTool && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, 'pointsCount' in activeTool.settings && /*#__PURE__*/_react["default"].createElement(_PointsNumberField["default"], {
219
+ })) : 'settings' in activeTool && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, 'strokeColor' in activeTool.settings && /*#__PURE__*/_react["default"].createElement(_ColorField["default"], {
210
220
  selectedSettings: selectedSettings,
211
221
  setSelectedSettings: setSelectedSettings,
222
+ title: "Couleur du trait",
212
223
  disabled: disabled,
213
- valueChanged: handlePolygonLinesCount,
214
- min: activeTool.settings.pointsCount.min,
215
- max: activeTool.settings.pointsCount.max,
216
- step: activeTool.settings.pointsCount.step,
217
- value: activeTool.settings.pointsCount["default"]
218
- }), 'fontFamily' in activeTool.settings && /*#__PURE__*/_react["default"].createElement(_FontFamilyField["default"], {
224
+ field: "strokeColor",
225
+ value: activeTool.settings.strokeColor["default"],
226
+ valueChanged: handleShapeStyleChange,
227
+ values: activeTool.settings.strokeColor.values
228
+ }), 'fillColor' in activeTool.settings && /*#__PURE__*/_react["default"].createElement(_ColorField["default"], {
219
229
  selectedSettings: selectedSettings,
220
230
  setSelectedSettings: setSelectedSettings,
231
+ title: "Couleur de fond",
221
232
  disabled: disabled,
222
- valueChanged: handleShapeFontFamilyChange,
223
- values: activeTool.settings.fontFamily.values,
224
- defaultValue: activeTool.settings.fontFamily["default"]
233
+ field: "fillColor",
234
+ value: activeTool.settings.fillColor["default"],
235
+ valueChanged: handleShapeStyleChange,
236
+ values: activeTool.settings.fillColor.values
225
237
  }), 'lineWidth' in activeTool.settings && /*#__PURE__*/_react["default"].createElement(_RangeField["default"], {
226
238
  selectedSettings: selectedSettings,
227
239
  setSelectedSettings: setSelectedSettings,
228
240
  title: "Epaisseur du trait",
229
241
  disabled: disabled,
230
- field: "style.lineWidth",
242
+ field: "lineWidth",
231
243
  value: activeTool.settings.lineWidth["default"],
232
244
  valueChanged: handleShapeStyleChange,
233
245
  unity: "px",
@@ -248,24 +260,38 @@ var SettingsBar = function SettingsBar(_ref) {
248
260
  defaultValue: activeTool.settings.lineArrow["default"],
249
261
  valueChanged: handleShapeStyleChange,
250
262
  values: activeTool.settings.lineArrow.values
251
- }), 'strokeColor' in activeTool.settings && /*#__PURE__*/_react["default"].createElement(_ColorField["default"], {
263
+ }), 'pointsCount' in activeTool.settings && /*#__PURE__*/_react["default"].createElement(_PointsNumberField["default"], {
252
264
  selectedSettings: selectedSettings,
253
265
  setSelectedSettings: setSelectedSettings,
254
- title: "Couleur du trait",
255
266
  disabled: disabled,
256
- field: "style.strokeColor",
257
- value: activeTool.settings.strokeColor["default"],
258
- valueChanged: handleShapeStyleChange,
259
- values: activeTool.settings.strokeColor.values
260
- }), 'fillColor' in activeTool.settings && /*#__PURE__*/_react["default"].createElement(_ColorField["default"], {
267
+ valueChanged: handlePolygonLinesCount,
268
+ min: activeTool.settings.pointsCount.min,
269
+ max: activeTool.settings.pointsCount.max,
270
+ step: activeTool.settings.pointsCount.step,
271
+ value: activeTool.settings.pointsCount["default"]
272
+ }), 'fontFamily' in activeTool.settings && /*#__PURE__*/_react["default"].createElement(_FontFamilyField["default"], {
261
273
  selectedSettings: selectedSettings,
262
274
  setSelectedSettings: setSelectedSettings,
263
- title: "Couleur de fond",
264
275
  disabled: disabled,
265
- field: "style.fillColor",
266
- value: activeTool.settings.fillColor["default"],
267
- valueChanged: handleShapeStyleChange,
268
- values: activeTool.settings.fillColor.values
276
+ valueChanged: handleShapeFontFamilyChange,
277
+ values: activeTool.settings.fontFamily.values,
278
+ defaultValue: activeTool.settings.fontFamily["default"]
279
+ }), 'fontBold' in activeTool.settings && /*#__PURE__*/_react["default"].createElement(_ToggleField["default"], {
280
+ setSelectedSettings: setSelectedSettings,
281
+ disabled: disabled,
282
+ field: "fontBold",
283
+ icon: _icons.boldIcon,
284
+ valueChanged: handleShapeFontFamilyChange,
285
+ values: activeTool.settings.fontBold.values,
286
+ value: activeTool.settings.fontBold["default"]
287
+ }), 'fontItalic' in activeTool.settings && /*#__PURE__*/_react["default"].createElement(_ToggleField["default"], {
288
+ setSelectedSettings: setSelectedSettings,
289
+ disabled: disabled,
290
+ field: "fontItalic",
291
+ icon: _icons.italicIcon,
292
+ valueChanged: handleShapeFontFamilyChange,
293
+ values: activeTool.settings.fontItalic.values,
294
+ value: activeTool.settings.fontItalic["default"]
269
295
  }), 'opacity' in activeTool.settings && /*#__PURE__*/_react["default"].createElement(_RangeField["default"], {
270
296
  selectedSettings: selectedSettings,
271
297
  setSelectedSettings: setSelectedSettings,
@@ -275,7 +301,7 @@ var SettingsBar = function SettingsBar(_ref) {
275
301
  step: activeTool.settings.opacity.step,
276
302
  unity: "%",
277
303
  disabled: disabled,
278
- field: "style.globalAlpha",
304
+ field: "globalAlpha",
279
305
  value: activeTool.settings.opacity["default"],
280
306
  valueChanged: handleShapeStyleChange
281
307
  })), /*#__PURE__*/_react["default"].createElement(StyledSeparator, null), layersManipulation && /*#__PURE__*/_react["default"].createElement(_LayoutButton["default"], {
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _fp = _interopRequireDefault(require("lodash/fp"));
15
+
16
+ var _react = _interopRequireWildcard(require("react"));
17
+
18
+ var _Button = _interopRequireDefault(require("../common/Button"));
19
+
20
+ 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); }
21
+
22
+ 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; }
23
+
24
+ var ToggleField = function ToggleField(_ref) {
25
+ var setSelectedSettings = _ref.setSelectedSettings,
26
+ _ref$disabled = _ref.disabled,
27
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
28
+ field = _ref.field,
29
+ icon = _ref.icon,
30
+ values = _ref.values,
31
+ _ref$value = _ref.value,
32
+ value = _ref$value === void 0 ? false : _ref$value,
33
+ valueChanged = _ref.valueChanged;
34
+
35
+ var _useState = (0, _react.useState)(_fp["default"].uniqueId('settings_')),
36
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
37
+ customKey = _useState2[0];
38
+
39
+ var handleClick = function handleClick() {
40
+ setSelectedSettings(function (prev) {
41
+ return prev === customKey ? undefined : customKey;
42
+ });
43
+ valueChanged(field, !value);
44
+ };
45
+
46
+ if (values.length !== 2) return null;
47
+ return /*#__PURE__*/_react["default"].createElement(_Button["default"], {
48
+ onClick: handleClick,
49
+ selected: value,
50
+ disabled: disabled,
51
+ icon: icon
52
+ });
53
+ };
54
+
55
+ var _default = ToggleField;
56
+ exports["default"] = _default;
@@ -27,41 +27,45 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
27
27
 
28
28
  var StyledEditBox = /*#__PURE__*/(0, _react2.styled)("div")({
29
29
  name: "StyledEditBox",
30
- "class": "se8ufj4",
30
+ "class": "s1unz6yq",
31
31
  vars: {
32
- "se8ufj4-0": [function (_ref) {
32
+ "s1unz6yq-0": [function (_ref) {
33
33
  var transform = _ref.transform;
34
34
  return transform;
35
35
  }],
36
- "se8ufj4-1": [function (_ref2) {
36
+ "s1unz6yq-1": [function (_ref2) {
37
37
  var color = _ref2.color;
38
38
  return color;
39
39
  }],
40
- "se8ufj4-2": [function (_ref3) {
40
+ "s1unz6yq-2": [function (_ref3) {
41
41
  var padding = _ref3.padding;
42
42
  return padding;
43
43
  }, "px"],
44
- "se8ufj4-3": [function (_ref4) {
44
+ "s1unz6yq-3": [function (_ref4) {
45
45
  var fontsize = _ref4.fontsize;
46
46
  return fontsize;
47
47
  }, "px"],
48
- "se8ufj4-5": [function (_ref5) {
48
+ "s1unz6yq-5": [function (_ref5) {
49
49
  var fontfamily = _ref5.fontfamily;
50
50
  return fontfamily;
51
+ }],
52
+ "s1unz6yq-6": [function (_ref6) {
53
+ var opacity = _ref6.opacity;
54
+ return opacity;
51
55
  }]
52
56
  }
53
57
  });
54
58
 
55
- var EditTextBox = function EditTextBox(_ref6) {
56
- var _shape$style$strokeCo, _shape$style, _shape$style$fontFami, _shape$style2;
59
+ var EditTextBox = function EditTextBox(_ref7) {
60
+ var _shape$style$strokeCo, _shape$style, _shape$style$globalAl, _shape$style2, _shape$style$fontFami, _shape$style3, _shape$style$fontBold, _shape$style4, _shape$style$fontItal, _shape$style5;
57
61
 
58
- var _ref6$disabled = _ref6.disabled,
59
- disabled = _ref6$disabled === void 0 ? false : _ref6$disabled,
60
- scaleRatio = _ref6.scaleRatio,
61
- shape = _ref6.shape,
62
- defaultValue = _ref6.defaultValue,
63
- updateValue = _ref6.updateValue,
64
- selectionPadding = _ref6.selectionPadding;
62
+ var _ref7$disabled = _ref7.disabled,
63
+ disabled = _ref7$disabled === void 0 ? false : _ref7$disabled,
64
+ scaleRatio = _ref7.scaleRatio,
65
+ shape = _ref7.shape,
66
+ defaultValue = _ref7.defaultValue,
67
+ updateValue = _ref7.updateValue,
68
+ selectionPadding = _ref7.selectionPadding;
65
69
  var ref = (0, _react.useRef)(null);
66
70
 
67
71
  var updateContentEditable = function updateContentEditable(e) {
@@ -86,7 +90,10 @@ var EditTextBox = function EditTextBox(_ref6) {
86
90
  fontsize: shape.fontSize * scaleRatio,
87
91
  padding: selectionPadding * scaleRatio,
88
92
  color: (_shape$style$strokeCo = (_shape$style = shape.style) === null || _shape$style === void 0 ? void 0 : _shape$style.strokeColor) !== null && _shape$style$strokeCo !== void 0 ? _shape$style$strokeCo : 'inherit',
89
- fontfamily: (_shape$style$fontFami = (_shape$style2 = shape.style) === null || _shape$style2 === void 0 ? void 0 : _shape$style2.fontFamily) !== null && _shape$style$fontFami !== void 0 ? _shape$style$fontFami : _style.STYLE_FONT_DEFAULT,
93
+ opacity: ((_shape$style$globalAl = (_shape$style2 = shape.style) === null || _shape$style2 === void 0 ? void 0 : _shape$style2.globalAlpha) !== null && _shape$style$globalAl !== void 0 ? _shape$style$globalAl : 100) / 100,
94
+ fontfamily: (_shape$style$fontFami = (_shape$style3 = shape.style) === null || _shape$style3 === void 0 ? void 0 : _shape$style3.fontFamily) !== null && _shape$style$fontFami !== void 0 ? _shape$style$fontFami : _style.STYLE_FONT_DEFAULT,
95
+ "data-fontbold": (_shape$style$fontBold = (_shape$style4 = shape.style) === null || _shape$style4 === void 0 ? void 0 : _shape$style4.fontBold) !== null && _shape$style$fontBold !== void 0 ? _shape$style$fontBold : false,
96
+ "data-fontitalic": (_shape$style$fontItal = (_shape$style5 = shape.style) === null || _shape$style5 === void 0 ? void 0 : _shape$style5.fontItalic) !== null && _shape$style$fontItal !== void 0 ? _shape$style$fontItal : false,
90
97
  contentEditable: !disabled,
91
98
  onInput: updateContentEditable
92
99
  });
@@ -39,11 +39,11 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
39
39
 
40
40
  var StyledPanel = /*#__PURE__*/(0, _react2.styled)(_Panel["default"])({
41
41
  name: "StyledPanel",
42
- "class": "s1qu0ers"
42
+ "class": "s1uphjfh"
43
43
  });
44
44
  var StyledRelative = /*#__PURE__*/(0, _react2.styled)("div")({
45
45
  name: "StyledRelative",
46
- "class": "s1y35t9y"
46
+ "class": "s1e5a6k5"
47
47
  });
48
48
 
49
49
  var MenuGroup = function MenuGroup(_ref) {
@@ -81,6 +81,10 @@ var MenuGroup = function MenuGroup(_ref) {
81
81
  isOpen = _useState2[0],
82
82
  setIsOpen = _useState2[1];
83
83
 
84
+ var _useTransition = (0, _react.useTransition)(),
85
+ _useTransition2 = (0, _slicedToArray2["default"])(_useTransition, 2),
86
+ startTransition = _useTransition2[1];
87
+
84
88
  var loadFile = function loadFile(file) {
85
89
  setIsOpen(false);
86
90
  loadFileFromProps(file);
@@ -110,7 +114,9 @@ var MenuGroup = function MenuGroup(_ref) {
110
114
  }();
111
115
 
112
116
  var openPanel = function openPanel() {
113
- setIsOpen(true);
117
+ startTransition(function () {
118
+ setIsOpen(true);
119
+ });
114
120
  };
115
121
 
116
122
  var isActive = _fp["default"].includes(activeTool.type, group === null || group === void 0 ? void 0 : group.tools);
@@ -123,12 +129,8 @@ var MenuGroup = function MenuGroup(_ref) {
123
129
  setIsOpen(false);
124
130
  };
125
131
 
126
- var timeoutId = setTimeout(function () {
127
- //TODO find a better fix than settimeout for react18
128
- document.addEventListener('click', closePanel);
129
- }, 0);
132
+ document.addEventListener('click', closePanel);
130
133
  return function () {
131
- clearTimeout(timeoutId);
132
134
  document.removeEventListener('click', closePanel);
133
135
  };
134
136
  }, [isOpen]);
@@ -27,7 +27,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
27
27
 
28
28
  var StyledInputModal = /*#__PURE__*/(0, _react2.styled)(_Modal["default"])({
29
29
  name: "StyledInputModal",
30
- "class": "s1rncfwv"
30
+ "class": "s95bkm9"
31
31
  });
32
32
 
33
33
  var PictureUrlModal = function PictureUrlModal(_ref) {
@@ -44,15 +44,15 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
44
44
  var TOOL_WIDTH = 40;
45
45
  var StyledShrinkableTools = /*#__PURE__*/(0, _react2.styled)("div")({
46
46
  name: "StyledShrinkableTools",
47
- "class": "s1gorp95"
47
+ "class": "so6hnjf"
48
48
  });
49
49
  var StyledToolbox = /*#__PURE__*/(0, _react2.styled)("div")({
50
50
  name: "StyledToolbox",
51
- "class": "s1ivsaf6"
51
+ "class": "s1c1dllr"
52
52
  });
53
53
  var StyledToolsModal = /*#__PURE__*/(0, _react2.styled)(_Modal["default"])({
54
54
  name: "StyledToolsModal",
55
- "class": "sv0y70r"
55
+ "class": "s1g032mh"
56
56
  });
57
57
  var TOOLBAR_STRUCTURE = [{
58
58
  title: 'brush',
@@ -135,6 +135,14 @@ var Toolbar = function Toolbar(_ref) {
135
135
  var setActiveTool = function setActiveTool(tool) {
136
136
  setActiveToolFromProps(tool);
137
137
  setIsMenuOpen(false);
138
+ };
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);
138
146
  }; //360 240
139
147
 
140
148
 
@@ -163,7 +171,7 @@ var Toolbar = function Toolbar(_ref) {
163
171
  key: i,
164
172
  activeTool: activeTool,
165
173
  group: group,
166
- setActiveTool: setActiveTool
174
+ setActiveToolFromId: setActiveToolFromId
167
175
  });
168
176
  })), !actionsInMenu && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Tool["default"], {
169
177
  type: _tools.UNDO_TOOL,