@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.
Files changed (37) hide show
  1. package/Changelog.md +26 -0
  2. package/README.md +0 -6
  3. package/dist/components/App.js +45 -38
  4. package/dist/components/Canvas.js +6 -6
  5. package/dist/components/settings/ColorField.js +5 -5
  6. package/dist/components/settings/FontFamilyField.js +6 -4
  7. package/dist/components/settings/Layouts.js +17 -8
  8. package/dist/components/settings/LineArrowField.js +6 -4
  9. package/dist/components/settings/LineTypeField.js +6 -4
  10. package/dist/components/settings/PointsNumberField.js +20 -30
  11. package/dist/components/settings/RangeField.js +1 -0
  12. package/dist/components/settings/SelectField.js +1 -0
  13. package/dist/components/settings/SettingsBar.js +141 -88
  14. package/dist/components/settings/ToggleField.js +56 -0
  15. package/dist/components/toolbox/EditTextBox.js +17 -10
  16. package/dist/components/toolbox/LoadFileTool.js +5 -3
  17. package/dist/components/toolbox/MenuGroup.js +37 -44
  18. package/dist/components/toolbox/Tool.js +4 -4
  19. package/dist/components/toolbox/Toolbar.js +81 -69
  20. package/dist/components/toolbox/ToolbarGroup.js +29 -31
  21. package/dist/constants/icons.js +6 -2
  22. package/dist/constants/style.js +3 -1
  23. package/dist/constants/tools.js +428 -0
  24. package/dist/hooks/useComponent.js +6 -2
  25. package/dist/hooks/useDoubleClick.js +46 -0
  26. package/dist/hooks/useDrawableCanvas.js +48 -55
  27. package/dist/styles.css +11 -11
  28. package/dist/types/Shapes.js +2 -16
  29. package/dist/types/tools.js +22 -0
  30. package/dist/utils/data.js +106 -28
  31. package/dist/utils/draw.js +3 -3
  32. package/dist/utils/file.js +15 -14
  33. package/dist/utils/selection.js +1 -1
  34. package/dist/utils/style.js +4 -2
  35. package/dist/utils/toolbar.js +66 -11
  36. package/dist/utils/transform.js +24 -11
  37. package/package.json +1 -1
package/Changelog.md CHANGED
@@ -1,3 +1,29 @@
1
+ # V0.6.0
2
+
3
+ - Fix text opacity range dancing in edit mode
4
+ - Fix opacity not visually shown in edit mode
5
+ - add delete button in layouts panel and update style
6
+ - update shape selection priority : use layers order, unless an anchor is
7
+ - stored data format updated
8
+
9
+ # V0.5.1
10
+
11
+ - add possibility to update default settings for a tool
12
+ - fix png export not working with url pic
13
+ - fix pictures missing id
14
+ - fix text tool
15
+ - double click for editing text is now working on mobile
16
+ - add bold and italic for text
17
+
18
+ # V0.5.0
19
+
20
+ - Add tool presets feature
21
+
22
+ # V.0.4.2
23
+
24
+ - fix toolgroup not displayed
25
+ - add passive prop to event listener
26
+
1
27
  # V.0.4.1
2
28
 
3
29
  - prevent mounting selection canvas when viewer mode
package/README.md CHANGED
@@ -1,10 +1,5 @@
1
1
  # known issues :
2
2
 
3
- ## To resolve before beta release
4
-
5
- - Text tool broken since 0.2.2
6
- - double click not working with touch (fix: fake it counting delay between touch)
7
-
8
3
  ## mobile/touch
9
4
 
10
5
  - dnd layout on mobile not working (fix : use dnd lib, or add touch listener to fake dnd, or provide alt UI)
@@ -14,5 +9,4 @@
14
9
  - TextEdit cursor overflow MINOR (quick fix : edit on modale ?)
15
10
  - TextEdit copy/paste containing html breaks display
16
11
  - circle resizing only goes one direction
17
- - New text component opacity range is dancing
18
12
  - adding padding to selection result in wrong intersection calculs
@@ -19,10 +19,6 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
19
19
 
20
20
  var _react = _interopRequireWildcard(require("react"));
21
21
 
22
- var _fp = _interopRequireDefault(require("lodash/fp"));
23
-
24
- var _Shapes = require("../types/Shapes");
25
-
26
22
  var _Canvas = _interopRequireDefault(require("./Canvas"));
27
23
 
28
24
  var _Layouts = _interopRequireDefault(require("./settings/Layouts"));
@@ -59,6 +55,12 @@ var _useResizeObserver = _interopRequireDefault(require("../hooks/useResizeObser
59
55
 
60
56
  var _shapes = require("../constants/shapes");
61
57
 
58
+ var _toolbar = require("../utils/toolbar");
59
+
60
+ var _tools = require("../constants/tools");
61
+
62
+ var _fp = _interopRequireDefault(require("lodash/fp"));
63
+
62
64
  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); }
63
65
 
64
66
  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; }
@@ -131,7 +133,6 @@ var StyledRow = /*#__PURE__*/(0, _react2.styled)("div")({
131
133
  }]
132
134
  }
133
135
  });
134
- var DEFAULT_TOOLS = [_Shapes.ShapeEnum.brush, _Shapes.ShapeEnum.line, _Shapes.ShapeEnum.polygon, _Shapes.ShapeEnum.curve, _Shapes.ShapeEnum.rect, _Shapes.ShapeEnum.square, _Shapes.ShapeEnum.circle, _Shapes.ShapeEnum.ellipse, _Shapes.ShapeEnum.text, _Shapes.ShapeEnum.picture];
135
136
  var DEFAULT_OPTIONS = {
136
137
  layersManipulation: true,
137
138
  gridVisible: false,
@@ -139,7 +140,9 @@ var DEFAULT_OPTIONS = {
139
140
  canShrink: true,
140
141
  withExport: true,
141
142
  withLoadAndSave: true,
142
- availableTools: DEFAULT_TOOLS,
143
+ withUploadPicture: true,
144
+ withUrlPicture: false,
145
+ availableTools: _tools.DEFAULT_SHAPE_TOOLS,
143
146
  uiStyle: {
144
147
  toolbarBackgroundColor: 'white',
145
148
  dividerColor: '#36418129',
@@ -183,6 +186,8 @@ var App = function App(_ref5) {
183
186
  canShrink = _DEFAULT_OPTIONS$opti.canShrink,
184
187
  withExport = _DEFAULT_OPTIONS$opti.withExport,
185
188
  withLoadAndSave = _DEFAULT_OPTIONS$opti.withLoadAndSave,
189
+ withUploadPicture = _DEFAULT_OPTIONS$opti.withUploadPicture,
190
+ withUrlPicture = _DEFAULT_OPTIONS$opti.withUrlPicture,
186
191
  availableToolsFromProps = _DEFAULT_OPTIONS$opti.availableTools;
187
192
 
188
193
  var _DEFAULT_OPTIONS$uiSt = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS.uiStyle), (_options$uiStyle = options === null || options === void 0 ? void 0 : options.uiStyle) !== null && _options$uiStyle !== void 0 ? _options$uiStyle : {}),
@@ -216,7 +221,14 @@ var App = function App(_ref5) {
216
221
  canvasSize = _useState2[0],
217
222
  setCanvasSize = _useState2[1];
218
223
 
219
- var availableTools = _fp["default"].intersection(DEFAULT_TOOLS, availableToolsFromProps);
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 () {
230
+ setAvailableTools((0, _toolbar.sanitizeTools)(availableToolsFromProps, withUploadPicture || withUrlPicture));
231
+ }, [availableToolsFromProps, withUploadPicture, withUrlPicture]);
220
232
 
221
233
  var _useComponent = (0, _useComponent2["default"])({
222
234
  disabled: disabled,
@@ -224,22 +236,6 @@ var App = function App(_ref5) {
224
236
  }),
225
237
  isInsideComponent = _useComponent.isInsideComponent;
226
238
 
227
- var _useState3 = (0, _react.useState)({
228
- style: {
229
- fillColor: 'transparent',
230
- strokeColor: 'black',
231
- globalAlpha: 100,
232
- lineWidth: 1,
233
- lineDash: 0,
234
- lineArrow: 0,
235
- pointsCount: 3,
236
- fontFamily: _style.STYLE_FONT_DEFAULT
237
- }
238
- }),
239
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
240
- defaultConf = _useState4[0],
241
- setDefaultConf = _useState4[1];
242
-
243
239
  var _useState5 = (0, _react.useState)(false),
244
240
  _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
245
241
  isLoading = _useState6[0],
@@ -260,7 +256,7 @@ var App = function App(_ref5) {
260
256
  canvasOffsetStartPosition = _useState12[0],
261
257
  setCanvasOffsetStartPosition = _useState12[1];
262
258
 
263
- var _useState13 = (0, _react.useState)(_Shapes.ToolEnum.selection),
259
+ var _useState13 = (0, _react.useState)(_tools.SELECTION_TOOL),
264
260
  _useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
265
261
  activeTool = _useState14[0],
266
262
  setActiveTool = _useState14[1];
@@ -304,23 +300,33 @@ var App = function App(_ref5) {
304
300
  setSelectedShape(undefined);
305
301
  setActiveTool(tool);
306
302
  }, [setSelectedShape]);
303
+ var updateToolSettings = (0, _react.useCallback)(function (toolId, field, value) {
304
+ setAvailableTools(function (availableTools) {
305
+ return availableTools.map(function (tool) {
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
+ });
312
+ }, []);
307
313
  var undoAction = (0, _react.useCallback)(function () {
308
- selectTool(_Shapes.ToolEnum.selection);
314
+ selectTool(_tools.SELECTION_TOOL);
309
315
  backwardShape();
310
316
  }, [selectTool, backwardShape]);
311
317
  var redoAction = (0, _react.useCallback)(function () {
312
- selectTool(_Shapes.ToolEnum.selection);
318
+ selectTool(_tools.SELECTION_TOOL);
313
319
  forwardShape();
314
320
  }, [selectTool, forwardShape]);
315
321
  var clearCanvas = (0, _react.useCallback)(function () {
316
322
  var shapesToInit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
317
323
  var clearHistory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
318
324
  clearShapes(shapesToInit, clearHistory);
319
- selectTool(_Shapes.ToolEnum.selection);
325
+ selectTool(_tools.SELECTION_TOOL);
320
326
  setCanvasOffset([0, 0]);
321
327
  }, [selectTool, clearShapes]);
322
328
  var selectShape = (0, _react.useCallback)(function (shape) {
323
- setActiveTool(_Shapes.ToolEnum.selection);
329
+ setActiveTool(_tools.SELECTION_TOOL);
324
330
  setSelectedShape(shape);
325
331
  }, [setSelectedShape]);
326
332
  var pasteShape = (0, _react.useCallback)(function (shape) {
@@ -356,7 +362,7 @@ var App = function App(_ref5) {
356
362
  setIsLoading(true);
357
363
 
358
364
  try {
359
- var content = (0, _file.encodeShapesInString)(shapesRef.current);
365
+ var content = (0, _file.encodeShapesInString)(shapesRef.current, canvasWidth, canvasHeight);
360
366
 
361
367
  if (!content) {
362
368
  throw new Error("L'encodage a échoué");
@@ -376,7 +382,7 @@ var App = function App(_ref5) {
376
382
  } finally {
377
383
  setIsLoading(false);
378
384
  }
379
- }, [shapesRef, addSnackbar]);
385
+ }, [shapesRef, addSnackbar, canvasWidth, canvasHeight]);
380
386
  var loadJson = (0, _react.useCallback)( /*#__PURE__*/function () {
381
387
  var _ref6 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(json) {
382
388
  var shapes;
@@ -385,7 +391,7 @@ var App = function App(_ref5) {
385
391
  switch (_context.prev = _context.next) {
386
392
  case 0:
387
393
  _context.next = 2;
388
- return (0, _file.decodePicturesInShapes)(json);
394
+ return (0, _file.decodeImportedData)(json);
389
395
 
390
396
  case 2:
391
397
  shapes = _context.sent;
@@ -506,7 +512,7 @@ var App = function App(_ref5) {
506
512
  return _ref8.apply(this, arguments);
507
513
  };
508
514
  }(), [addPictureShape, selectShape, addSnackbar, canvasWidth, canvasHeight]);
509
- var onResized = (0, _react.useCallback)(function (measuredWidth, measuredHeight) {
515
+ var onResized = (0, _react.useCallback)(function (measuredWidth) {
510
516
  var scaleRatio = measuredWidth / canvasWidth;
511
517
  setCanvasSize({
512
518
  width: measuredWidth,
@@ -544,7 +550,7 @@ var App = function App(_ref5) {
544
550
  return canvasRef.current ? (0, _file.getCanvasImage)(shapesRef.current, canvasOffset, canvasWidth, canvasHeight, canvasSelectionPadding) : undefined;
545
551
  },
546
552
  getCurrentData: function getCurrentData() {
547
- return (0, _data.cleanShapesBeforeExport)(shapesRef.current); //TODO : create different types for stored shapes
553
+ return (0, _data.buildDataToExport)(shapesRef.current, canvasWidth, canvasHeight);
548
554
  }
549
555
  };
550
556
  }, [apiRef, shapesRef, canvasOffset, canvasWidth, canvasHeight, canvasSelectionPadding]);
@@ -584,7 +590,9 @@ var App = function App(_ref5) {
584
590
  redoAction: redoAction,
585
591
  availableTools: availableTools,
586
592
  withExport: withExport,
587
- withLoadAndSave: withLoadAndSave
593
+ withLoadAndSave: withLoadAndSave,
594
+ withUploadPicture: withUploadPicture,
595
+ withUrlPicture: withUrlPicture
588
596
  }), /*#__PURE__*/_react["default"].createElement(StyledRow, {
589
597
  "data-grow": canGrow,
590
598
  width: canvasSize.width,
@@ -605,7 +613,6 @@ var App = function App(_ref5) {
605
613
  setSelectedShape: setSelectedShape,
606
614
  canvasOffset: canvasOffset,
607
615
  setCanvasOffset: setCanvasOffset,
608
- defaultConf: defaultConf,
609
616
  saveShapes: saveShapes,
610
617
  ref: canvasRef,
611
618
  canvasSize: canvasSize,
@@ -630,18 +637,18 @@ var App = function App(_ref5) {
630
637
  })), isEditMode && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_SettingsBar["default"], {
631
638
  disabled: disabled,
632
639
  activeTool: activeTool,
640
+ availableTools: availableTools,
633
641
  selectedShape: selectedShape,
634
642
  removeShape: removeShape,
635
643
  updateShape: updateShape,
636
- defaultConf: defaultConf,
637
- setDefaultConf: setDefaultConf,
638
644
  canvas: canvasRef.current,
639
645
  layersManipulation: layersManipulation,
640
646
  toggleLayoutPanel: function toggleLayoutPanel() {
641
647
  setIsLayoutPanelShown(function (prev) {
642
648
  return !prev;
643
649
  });
644
- }
650
+ },
651
+ updateToolSettings: updateToolSettings
645
652
  }), /*#__PURE__*/_react["default"].createElement(_Loading["default"], {
646
653
  isLoading: isLoading
647
654
  }), /*#__PURE__*/_react["default"].createElement(_Snackbar["default"], {
@@ -31,6 +31,8 @@ var _useDrawableCanvas2 = _interopRequireDefault(require("../hooks/useDrawableCa
31
31
 
32
32
  var _icons = require("../constants/icons");
33
33
 
34
+ var _tools = require("../types/tools");
35
+
34
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); }
35
37
 
36
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; }
@@ -57,7 +59,7 @@ var renderSelectionCanvas = function renderSelectionCanvas(selectionCtx, selecti
57
59
  height = canvasSize.height,
58
60
  scaleRatio = canvasSize.scaleRatio;
59
61
  selectionCtx.clearRect(0, 0, width, height);
60
- selectedShape && activeTool !== _Shapes.ShapeEnum.brush && (0, _draw.drawSelection)({
62
+ selectedShape && activeTool.type !== _Shapes.ShapeEnum.brush && (0, _draw.drawSelection)({
61
63
  ctx: selectionCtx,
62
64
  shape: selectedShape,
63
65
  scaleRatio: scaleRatio,
@@ -110,7 +112,6 @@ var Canvas = /*#__PURE__*/_react["default"].forwardRef(function (_ref2, ref) {
110
112
  setCanvasOffsetStartPosition = _ref2.setCanvasOffsetStartPosition,
111
113
  canvasOffset = _ref2.canvasOffset,
112
114
  setCanvasOffset = _ref2.setCanvasOffset,
113
- defaultConf = _ref2.defaultConf,
114
115
  isInsideComponent = _ref2.isInsideComponent,
115
116
  selectionMode = _ref2.selectionMode,
116
117
  setSelectionMode = _ref2.setSelectionMode,
@@ -132,7 +133,6 @@ var Canvas = /*#__PURE__*/_react["default"].forwardRef(function (_ref2, ref) {
132
133
  drawCanvasRef: drawCanvasRef,
133
134
  setActiveTool: setActiveTool,
134
135
  shapes: shapes,
135
- defaultConf: defaultConf,
136
136
  selectionMode: selectionMode,
137
137
  activeTool: activeTool,
138
138
  isInsideComponent: isInsideComponent,
@@ -151,7 +151,7 @@ var Canvas = /*#__PURE__*/_react["default"].forwardRef(function (_ref2, ref) {
151
151
  hoverMode = _useDrawableCanvas.hoverMode;
152
152
 
153
153
  var updateSelectedShapeText = (0, _react.useCallback)(function (newText) {
154
- var _drawCanvasRef$curren, _newShape$style;
154
+ var _drawCanvasRef$curren, _newShape$style$fontB, _newShape$style, _newShape$style$fontI, _newShape$style2, _newShape$style3;
155
155
 
156
156
  if ((selectedShape === null || selectedShape === void 0 ? void 0 : selectedShape.type) !== _Shapes.ShapeEnum.text) return;
157
157
  var ctx = (_drawCanvasRef$curren = drawCanvasRef.current) === null || _drawCanvasRef$curren === void 0 ? void 0 : _drawCanvasRef$curren.getContext('2d');
@@ -159,7 +159,7 @@ var Canvas = /*#__PURE__*/_react["default"].forwardRef(function (_ref2, ref) {
159
159
 
160
160
  var newShape = _fp["default"].set('value', newText, selectedShape);
161
161
 
162
- var newWidth = (0, _transform.calculateTextWidth)(ctx, newShape.value, newShape.fontSize, (_newShape$style = newShape.style) === null || _newShape$style === void 0 ? void 0 : _newShape$style.fontFamily);
162
+ var newWidth = (0, _transform.calculateTextWidth)(ctx, newShape.value, newShape.fontSize, (_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);
163
163
 
164
164
  var resizedShape = _objectSpread(_objectSpread({}, newShape), {}, {
165
165
  width: newWidth,
@@ -197,7 +197,7 @@ var Canvas = /*#__PURE__*/_react["default"].forwardRef(function (_ref2, ref) {
197
197
  width: canvasSize.width,
198
198
  height: canvasSize.height,
199
199
  "data-grow": canGrow,
200
- cursor: activeTool !== _Shapes.ToolEnum.selection && activeTool !== _Shapes.ToolEnum.move || hoverMode.mode === _Mode.SelectionModeLib.resize ? 'crosshair' : activeTool === _Shapes.ToolEnum.move || hoverMode.mode === _Mode.SelectionModeLib.translate ? 'move' : hoverMode.mode === _Mode.SelectionModeLib.rotate ? 'grab' : 'default'
200
+ cursor: activeTool.type !== _tools.ActionsEnum.selection && activeTool.type !== _tools.ActionsEnum.move || hoverMode.mode === _Mode.SelectionModeLib.resize ? 'crosshair' : activeTool.type === _tools.ActionsEnum.move || hoverMode.mode === _Mode.SelectionModeLib.translate ? 'move' : hoverMode.mode === _Mode.SelectionModeLib.rotate ? 'grab' : 'default'
201
201
  }), isEditMode && selectionMode.mode === _Mode.SelectionModeLib.textedition && (selectedShape === null || selectedShape === void 0 ? void 0 : selectedShape.type) === _Shapes.ShapeEnum.text && /*#__PURE__*/_react["default"].createElement(_EditTextBox["default"], {
202
202
  scaleRatio: canvasSize.scaleRatio,
203
203
  disabled: disabled,
@@ -21,8 +21,6 @@ var _Button = _interopRequireDefault(require("../common/Button"));
21
21
 
22
22
  var _Panel = _interopRequireDefault(require("../common/Panel"));
23
23
 
24
- var _style = require("../../constants/style");
25
-
26
24
  var _icons = require("../../constants/icons");
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); }
@@ -57,6 +55,7 @@ var ColorField = function ColorField(_ref3) {
57
55
  title = _ref3$title === void 0 ? 'Choisissez une couleur' : _ref3$title,
58
56
  _ref3$disabled = _ref3.disabled,
59
57
  disabled = _ref3$disabled === void 0 ? false : _ref3$disabled,
58
+ values = _ref3.values,
60
59
  field = _ref3.field,
61
60
  _ref3$value = _ref3.value,
62
61
  value = _ref3$value === void 0 ? '' : _ref3$value,
@@ -83,6 +82,7 @@ var ColorField = function ColorField(_ref3) {
83
82
  };
84
83
 
85
84
  var isPanelVisible = selectedSettings === customKey;
85
+ if (_fp["default"].isEmpty(values)) return null;
86
86
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
87
87
  selected: isPanelVisible,
88
88
  title: title,
@@ -93,7 +93,7 @@ var ColorField = function ColorField(_ref3) {
93
93
  })), isPanelVisible && /*#__PURE__*/_react["default"].createElement(_Panel["default"], {
94
94
  title: title,
95
95
  alignment: "left"
96
- }, /*#__PURE__*/_react["default"].createElement("div", null, _style.STYLE_COLORS.map(function (color, index) {
96
+ }, /*#__PURE__*/_react["default"].createElement("div", null, values.map(function (color, index) {
97
97
  return /*#__PURE__*/_react["default"].createElement(_Button["default"], {
98
98
  title: color,
99
99
  key: index,
@@ -108,11 +108,11 @@ var ColorField = function ColorField(_ref3) {
108
108
  }), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
109
109
  type: "color",
110
110
  title: "Custom color",
111
- selected: !_fp["default"].includes(value, _style.STYLE_COLORS),
111
+ selected: !_fp["default"].includes(value, values),
112
112
  value: value,
113
113
  onChange: handleChange
114
114
  }, /*#__PURE__*/_react["default"].createElement(StyledCustomColor, {
115
- color: _fp["default"].includes(value, _style.STYLE_COLORS) ? 'var(--font-color)' : value
115
+ color: _fp["default"].includes(value, values) ? 'var(--font-color)' : value
116
116
  }, /*#__PURE__*/_react["default"].createElement("span", {
117
117
  dangerouslySetInnerHTML: {
118
118
  __html: _icons.paletteIcon
@@ -11,10 +11,10 @@ var _react = _interopRequireDefault(require("react"));
11
11
 
12
12
  var _SelectField = _interopRequireDefault(require("./SelectField"));
13
13
 
14
- var _style = require("../../constants/style");
15
-
16
14
  var _react2 = require("@linaria/react");
17
15
 
16
+ var _fp = _interopRequireDefault(require("lodash/fp"));
17
+
18
18
  var StyledOption = /*#__PURE__*/(0, _react2.styled)("span")({
19
19
  name: "StyledOption",
20
20
  "class": "smpmxx5",
@@ -38,16 +38,18 @@ var FontFamilyField = function FontFamilyField(_ref3) {
38
38
  setSelectedSettings = _ref3.setSelectedSettings,
39
39
  _ref3$disabled = _ref3.disabled,
40
40
  disabled = _ref3$disabled === void 0 ? false : _ref3$disabled,
41
+ values = _ref3.values,
41
42
  defaultValue = _ref3.defaultValue,
42
43
  valueChanged = _ref3.valueChanged;
44
+ if (_fp["default"].isEmpty(values)) return null;
43
45
  return /*#__PURE__*/_react["default"].createElement(_SelectField["default"], {
44
46
  selectedSettings: selectedSettings,
45
47
  setSelectedSettings: setSelectedSettings,
46
48
  CustomOption: FontFamilyOption,
47
49
  title: "Font",
48
50
  disabled: disabled,
49
- field: "style.fontFamily",
50
- values: _style.STYLE_FONTS,
51
+ field: "fontFamily",
52
+ values: values,
51
53
  defaultValue: defaultValue,
52
54
  valueChanged: valueChanged
53
55
  });
@@ -35,37 +35,41 @@ var StyledLayouts = /*#__PURE__*/(0, _react2.styled)("div")({
35
35
  name: "StyledLayouts",
36
36
  "class": "su3a8bs"
37
37
  });
38
+ var StyledRemoveButton = /*#__PURE__*/(0, _react2.styled)(_Button["default"])({
39
+ name: "StyledRemoveButton",
40
+ "class": "szboplp"
41
+ });
38
42
  var StyledLayout = /*#__PURE__*/(0, _react2.styled)("div")({
39
43
  name: "StyledLayout",
40
- "class": "szboplp"
44
+ "class": "sff5xt"
41
45
  });
42
46
  var StyledVisibleButton = /*#__PURE__*/(0, _react2.styled)(_Button["default"])({
43
47
  name: "StyledVisibleButton",
44
- "class": "sff5xt"
48
+ "class": "sj3bift"
45
49
  });
46
50
  var StyledLockedButton = /*#__PURE__*/(0, _react2.styled)(_Button["default"])({
47
51
  name: "StyledLockedButton",
48
- "class": "sj3bift"
52
+ "class": "s10ip0a4"
49
53
  });
50
54
  var StyledGridButton = /*#__PURE__*/(0, _react2.styled)(_Button["default"])({
51
55
  name: "StyledGridButton",
52
- "class": "s10ip0a4"
56
+ "class": "s1j9uq9o"
53
57
  });
54
58
  var StyledSeparator = /*#__PURE__*/(0, _react2.styled)("div")({
55
59
  name: "StyledSeparator",
56
- "class": "s1j9uq9o"
60
+ "class": "s156ddbb"
57
61
  });
58
62
  var StyledPanelLayouts = /*#__PURE__*/(0, _react2.styled)(_Panel["default"])({
59
63
  name: "StyledPanelLayouts",
60
- "class": "s156ddbb"
64
+ "class": "s11gt4hl"
61
65
  });
62
66
  var StyledScrollingContent = /*#__PURE__*/(0, _react2.styled)("div")({
63
67
  name: "StyledScrollingContent",
64
- "class": "s11gt4hl"
68
+ "class": "s13cxqhq"
65
69
  });
66
70
  var StyledPlaceholder = /*#__PURE__*/(0, _react2.styled)("div")({
67
71
  name: "StyledPlaceholder",
68
- "class": "s13cxqhq"
72
+ "class": "s1idv8qv"
69
73
  });
70
74
 
71
75
  var Layout = function Layout(_ref) {
@@ -147,6 +151,11 @@ var Layout = function Layout(_ref) {
147
151
  selected: selected,
148
152
  onClick: onToggleShapeLock,
149
153
  icon: shape.locked ? _icons.lockedIcon : _icons.unlockedIcon
154
+ }), /*#__PURE__*/_react["default"].createElement(StyledRemoveButton, {
155
+ title: "Remove",
156
+ disabled: disabled,
157
+ onClick: onRemove,
158
+ icon: _icons.trashIcon
150
159
  }));
151
160
  };
152
161
 
@@ -11,10 +11,10 @@ var _react = _interopRequireDefault(require("react"));
11
11
 
12
12
  var _SelectField = _interopRequireDefault(require("./SelectField"));
13
13
 
14
- var _style = require("../../constants/style");
15
-
16
14
  var _react2 = require("@linaria/react");
17
15
 
16
+ var _fp = _interopRequireDefault(require("lodash/fp"));
17
+
18
18
  var StyledLeftTriangle = /*#__PURE__*/(0, _react2.styled)("span")({
19
19
  name: "StyledLeftTriangle",
20
20
  "class": "s1xxj4yl"
@@ -40,16 +40,18 @@ var LineArrowField = function LineArrowField(_ref2) {
40
40
  setSelectedSettings = _ref2.setSelectedSettings,
41
41
  _ref2$disabled = _ref2.disabled,
42
42
  disabled = _ref2$disabled === void 0 ? false : _ref2$disabled,
43
+ values = _ref2.values,
43
44
  defaultValue = _ref2.defaultValue,
44
45
  valueChanged = _ref2.valueChanged;
46
+ if (_fp["default"].isEmpty(values)) return null;
45
47
  return /*#__PURE__*/_react["default"].createElement(_SelectField["default"], {
46
48
  selectedSettings: selectedSettings,
47
49
  setSelectedSettings: setSelectedSettings,
48
50
  CustomOption: LineArrowOption,
49
51
  title: "Fl\xE8ches",
50
52
  disabled: disabled,
51
- field: "style.lineArrow",
52
- values: _style.STYLE_LINE_WITH_ARROW,
53
+ field: "lineArrow",
54
+ values: values,
53
55
  defaultValue: defaultValue,
54
56
  valueChanged: valueChanged
55
57
  });
@@ -11,10 +11,10 @@ var _react = _interopRequireDefault(require("react"));
11
11
 
12
12
  var _SelectField = _interopRequireDefault(require("./SelectField"));
13
13
 
14
- var _style = require("../../constants/style");
15
-
16
14
  var _react2 = require("@linaria/react");
17
15
 
16
+ var _fp = _interopRequireDefault(require("lodash/fp"));
17
+
18
18
  var StyledLine = /*#__PURE__*/(0, _react2.styled)("span")({
19
19
  name: "StyledLine",
20
20
  "class": "s1qssg4n"
@@ -38,16 +38,18 @@ var LineTypeField = function LineTypeField(_ref2) {
38
38
  setSelectedSettings = _ref2.setSelectedSettings,
39
39
  _ref2$disabled = _ref2.disabled,
40
40
  disabled = _ref2$disabled === void 0 ? false : _ref2$disabled,
41
+ values = _ref2.values,
41
42
  defaultValue = _ref2.defaultValue,
42
43
  valueChanged = _ref2.valueChanged;
44
+ if (_fp["default"].isEmpty(values)) return null;
43
45
  return /*#__PURE__*/_react["default"].createElement(_SelectField["default"], {
44
46
  selectedSettings: selectedSettings,
45
47
  setSelectedSettings: setSelectedSettings,
46
48
  CustomOption: LineTypeOption,
47
49
  title: "Type de traits",
48
50
  disabled: disabled,
49
- field: "style.lineDash",
50
- values: _style.STYLE_LINE_DASH,
51
+ field: "lineDash",
52
+ values: values,
51
53
  defaultValue: defaultValue,
52
54
  valueChanged: valueChanged
53
55
  });
@@ -9,40 +9,30 @@ exports["default"] = void 0;
9
9
 
10
10
  var _react = _interopRequireDefault(require("react"));
11
11
 
12
- var _SelectField = _interopRequireDefault(require("./SelectField"));
13
-
14
- var _style = require("../../constants/style");
15
-
16
- var _react2 = require("@linaria/react");
17
-
18
- var StyledOption = /*#__PURE__*/(0, _react2.styled)("span")({
19
- name: "StyledOption",
20
- "class": "skv6910"
21
- });
22
-
23
- var PointsNumberOption = function PointsNumberOption(_ref) {
24
- var children = _ref.children;
25
- return /*#__PURE__*/_react["default"].createElement(StyledOption, null, children);
26
- };
27
-
28
- var PointsNumberField = function PointsNumberField(_ref2) {
29
- var selectedSettings = _ref2.selectedSettings,
30
- setSelectedSettings = _ref2.setSelectedSettings,
31
- _ref2$disabled = _ref2.disabled,
32
- disabled = _ref2$disabled === void 0 ? false : _ref2$disabled,
33
- defaultValue = _ref2.defaultValue,
34
- _ref2$values = _ref2.values,
35
- values = _ref2$values === void 0 ? _style.POLYGON_POINTS_VALUES : _ref2$values,
36
- valueChanged = _ref2.valueChanged;
37
- return /*#__PURE__*/_react["default"].createElement(_SelectField["default"], {
12
+ var _RangeField = _interopRequireDefault(require("./RangeField"));
13
+
14
+ var PointsNumberField = function PointsNumberField(_ref) {
15
+ var selectedSettings = _ref.selectedSettings,
16
+ setSelectedSettings = _ref.setSelectedSettings,
17
+ _ref$disabled = _ref.disabled,
18
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
19
+ min = _ref.min,
20
+ max = _ref.max,
21
+ step = _ref.step,
22
+ value = _ref.value,
23
+ valueChanged = _ref.valueChanged;
24
+ if (min === max) return null;
25
+ return /*#__PURE__*/_react["default"].createElement(_RangeField["default"], {
38
26
  selectedSettings: selectedSettings,
39
27
  setSelectedSettings: setSelectedSettings,
40
- CustomOption: PointsNumberOption,
41
28
  title: "Nombre de points",
42
29
  disabled: disabled,
43
- field: "style.pointsCount",
44
- values: values,
45
- defaultValue: defaultValue,
30
+ field: "pointsCount",
31
+ min: min,
32
+ max: max,
33
+ step: step,
34
+ unity: "",
35
+ value: value,
46
36
  valueChanged: valueChanged
47
37
  });
48
38
  };
@@ -68,6 +68,7 @@ var RangeField = function RangeField(_ref) {
68
68
  };
69
69
 
70
70
  var isPanelVisible = selectedSettings === customKey;
71
+ if (min === max) return null;
71
72
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
72
73
  selected: isPanelVisible,
73
74
  title: title,
@@ -58,6 +58,7 @@ var SelectField = function SelectField(_ref) {
58
58
  };
59
59
 
60
60
  var isPanelVisible = selectedSettings === customKey;
61
+ if (_fp["default"].isEmpty(values)) return null;
61
62
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
62
63
  selected: isPanelVisible,
63
64
  title: title,