@arbisoft/react-design-tool 1.0.20 → 1.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -36,7 +36,7 @@ yarn add @arbisoft/react-design-tool
36
36
  #### ⚠️ Important: Installation Guide for React 18 and Below
37
37
 
38
38
  ```bash
39
- npm install @arbisoft/react-design-tool@1.0.19
39
+ npm install @arbisoft/react-design-tool@1.0.21
40
40
  ```
41
41
  OR
42
42
  ```bash
package/dist/cjs/index.js CHANGED
@@ -961,7 +961,7 @@ var COLLAPSE$6 = "Collapse";
961
961
  var TEXT$6 = "Text";
962
962
  var STROKE_WIDTH_AND_COLOR$6 = "Stroke Width & Color";
963
963
  var NEW_TEMPLATE$6 = "New Template";
964
- var CUSTOM_TEMPLATES$6 = "Custom Templates";
964
+ var CUSTOM_TEMPLATES$6 = "My Designs";
965
965
  var PAGE_SIZE$6 = "Page size";
966
966
  var BACKGROUND_COLOR$6 = "Background Color";
967
967
  var BACKGROUND_IMAGE$6 = "Background Image";
@@ -1090,7 +1090,7 @@ var COLLAPSE$5 = "Свернуть";
1090
1090
  var TEXT$5 = "Текст";
1091
1091
  var STROKE_WIDTH_AND_COLOR$5 = "Толщина и цвет обводки";
1092
1092
  var NEW_TEMPLATE$5 = "Новый шаблон";
1093
- var CUSTOM_TEMPLATES$5 = "Пользовательские шаблоны";
1093
+ var CUSTOM_TEMPLATES$5 = "Мои дизайны";
1094
1094
  var PAGE_SIZE$5 = "Размер страницы";
1095
1095
  var BACKGROUND_COLOR$5 = "Цвет фона";
1096
1096
  var BACKGROUND_IMAGE$5 = "Фоновое изображение";
@@ -1219,7 +1219,7 @@ var COLLAPSE$4 = "Zwiń";
1219
1219
  var TEXT$4 = "Tekst";
1220
1220
  var STROKE_WIDTH_AND_COLOR$4 = "Szerokość i kolor obramowania";
1221
1221
  var NEW_TEMPLATE$4 = "Nowy szablon";
1222
- var CUSTOM_TEMPLATES$4 = "Niestandardowe szablony";
1222
+ var CUSTOM_TEMPLATES$4 = "Moje projekty";
1223
1223
  var PAGE_SIZE$4 = "Rozmiar strony";
1224
1224
  var BACKGROUND_COLOR$4 = "Kolor tła";
1225
1225
  var BACKGROUND_IMAGE$4 = "Obraz tła";
@@ -1348,7 +1348,7 @@ var COLLAPSE$3 = "Einklappen";
1348
1348
  var TEXT$3 = "Text";
1349
1349
  var STROKE_WIDTH_AND_COLOR$3 = "Strichbreite und -farbe";
1350
1350
  var NEW_TEMPLATE$3 = "Neue Vorlage";
1351
- var CUSTOM_TEMPLATES$3 = "Benutzerdefinierte Vorlagen";
1351
+ var CUSTOM_TEMPLATES$3 = "Meine Designs";
1352
1352
  var PAGE_SIZE$3 = "Seitengröße";
1353
1353
  var BACKGROUND_COLOR$3 = "Hintergrundfarbe";
1354
1354
  var BACKGROUND_IMAGE$3 = "Hintergrundbild";
@@ -1477,7 +1477,7 @@ var COLLAPSE$2 = "Colapsar";
1477
1477
  var TEXT$2 = "Texto";
1478
1478
  var STROKE_WIDTH_AND_COLOR$2 = "Grosor y color del trazo";
1479
1479
  var NEW_TEMPLATE$2 = "Nueva plantilla";
1480
- var CUSTOM_TEMPLATES$2 = "Plantillas personalizadas";
1480
+ var CUSTOM_TEMPLATES$2 = "Mis diseños";
1481
1481
  var PAGE_SIZE$2 = "Tamaño de página";
1482
1482
  var BACKGROUND_COLOR$2 = "Color de fondo";
1483
1483
  var BACKGROUND_IMAGE$2 = "Imagen de fondo";
@@ -1606,7 +1606,7 @@ var COLLAPSE$1 = "Réduire";
1606
1606
  var TEXT$1 = "Texte";
1607
1607
  var STROKE_WIDTH_AND_COLOR$1 = "Largeur et couleur du trait";
1608
1608
  var NEW_TEMPLATE$1 = "Nouveau modèle";
1609
- var CUSTOM_TEMPLATES$1 = "Modèles personnalisés";
1609
+ var CUSTOM_TEMPLATES$1 = "Mes créations";
1610
1610
  var PAGE_SIZE$1 = "Taille de page";
1611
1611
  var BACKGROUND_COLOR$1 = "Couleur d’arrière-plan";
1612
1612
  var BACKGROUND_IMAGE$1 = "Image d’arrière-plan";
@@ -1735,7 +1735,7 @@ var COLLAPSE = "Comprimi";
1735
1735
  var TEXT = "Testo";
1736
1736
  var STROKE_WIDTH_AND_COLOR = "Spessore e colore del tratto";
1737
1737
  var NEW_TEMPLATE = "Nuovo modello";
1738
- var CUSTOM_TEMPLATES = "Modelli personalizzati";
1738
+ var CUSTOM_TEMPLATES = "I miei progetti";
1739
1739
  var PAGE_SIZE = "Dimensione della pagina";
1740
1740
  var BACKGROUND_COLOR = "Colore di sfondo";
1741
1741
  var BACKGROUND_IMAGE = "Immagine di sfondo";
@@ -5375,7 +5375,7 @@ var TemplateSideBar = function TemplateSideBar(_ref) {
5375
5375
  }), /*#__PURE__*/React.createElement(Collapsable, {
5376
5376
  title: TEXT_DICTIONARY === null || TEXT_DICTIONARY === void 0 || (_TEXT_DICTIONARY$lang2 = TEXT_DICTIONARY[languageLocale]) === null || _TEXT_DICTIONARY$lang2 === void 0 ? void 0 : _TEXT_DICTIONARY$lang2.DEFAULT,
5377
5377
  content: renderDefaultContent
5378
- }), /*#__PURE__*/React.createElement(Collapsable, {
5378
+ }), customTemplatesList.length > 0 && /*#__PURE__*/React.createElement(Collapsable, {
5379
5379
  title: TEXT_DICTIONARY === null || TEXT_DICTIONARY === void 0 || (_TEXT_DICTIONARY$lang3 = TEXT_DICTIONARY[languageLocale]) === null || _TEXT_DICTIONARY$lang3 === void 0 ? void 0 : _TEXT_DICTIONARY$lang3.CUSTOM_TEMPLATES,
5380
5380
  content: renderCustomContent
5381
5381
  }));
@@ -5935,110 +5935,132 @@ var Studio = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
5935
5935
  _ref$locale = _ref.locale,
5936
5936
  locale = _ref$locale === void 0 ? 'en' : _ref$locale;
5937
5937
  var stageRef = React.useRef(null);
5938
- var _useState = React.useState(sideBarpillsList.template),
5938
+ var _useState = React.useState(null),
5939
5939
  _useState2 = _slicedToArray(_useState, 2),
5940
- selectedTab = _useState2[0],
5941
- setSelectedTab = _useState2[1];
5942
- var _useState3 = React.useState(validateLocale(locale)),
5940
+ copiedElement = _useState2[0],
5941
+ setCopiedElement = _useState2[1];
5942
+ var _useState3 = React.useState(sideBarpillsList.template),
5943
5943
  _useState4 = _slicedToArray(_useState3, 2),
5944
- languageLocale = _useState4[0],
5945
- setLanguageLocale = _useState4[1];
5946
- var _useState5 = React.useState(true),
5944
+ selectedTab = _useState4[0],
5945
+ setSelectedTab = _useState4[1];
5946
+ var _useState5 = React.useState(validateLocale(locale)),
5947
5947
  _useState6 = _slicedToArray(_useState5, 2),
5948
- loadingFonts = _useState6[0],
5949
- setLoadingFonts = _useState6[1];
5948
+ languageLocale = _useState6[0],
5949
+ setLanguageLocale = _useState6[1];
5950
5950
  var _useState7 = React.useState(true),
5951
5951
  _useState8 = _slicedToArray(_useState7, 2),
5952
- loadingImages = _useState8[0],
5953
- setLoadingImages = _useState8[1];
5954
- var _useState9 = React.useState(false),
5952
+ loadingFonts = _useState8[0],
5953
+ setLoadingFonts = _useState8[1];
5954
+ var _useState9 = React.useState(true),
5955
5955
  _useState10 = _slicedToArray(_useState9, 2),
5956
- loading = _useState10[0],
5957
- setLoading = _useState10[1];
5956
+ loadingImages = _useState10[0],
5957
+ setLoadingImages = _useState10[1];
5958
5958
  var _useState11 = React.useState(false),
5959
5959
  _useState12 = _slicedToArray(_useState11, 2),
5960
- loadingUploadImage = _useState12[0],
5961
- setLoadingUploadImage = _useState12[1];
5962
- var _useState13 = React.useState(true),
5960
+ loading = _useState12[0],
5961
+ setLoading = _useState12[1];
5962
+ var _useState13 = React.useState(false),
5963
5963
  _useState14 = _slicedToArray(_useState13, 2),
5964
- helperSideBarVisible = _useState14[0],
5965
- setHelperSideBarVisible = _useState14[1];
5966
- var _useState15 = React.useState(100),
5964
+ loadingUploadImage = _useState14[0],
5965
+ setLoadingUploadImage = _useState14[1];
5966
+ var _useState15 = React.useState(true),
5967
5967
  _useState16 = _slicedToArray(_useState15, 2),
5968
- zoomPercentage = _useState16[0],
5969
- setZoomPercentage = _useState16[1];
5970
- var _useState17 = React.useState(elementsList),
5968
+ helperSideBarVisible = _useState16[0],
5969
+ setHelperSideBarVisible = _useState16[1];
5970
+ var _useState17 = React.useState(100),
5971
5971
  _useState18 = _slicedToArray(_useState17, 2),
5972
- elements = _useState18[0],
5973
- setElements = _useState18[1];
5974
- var _useState19 = React.useState(1),
5972
+ zoomPercentage = _useState18[0],
5973
+ setZoomPercentage = _useState18[1];
5974
+ var _useState19 = React.useState(elementsList),
5975
5975
  _useState20 = _slicedToArray(_useState19, 2),
5976
- backgroundImageOpacity = _useState20[0],
5977
- setBackgroundImageOpacity = _useState20[1];
5978
- var _useState21 = React.useState([]),
5976
+ elements = _useState20[0],
5977
+ setElements = _useState20[1];
5978
+ var _useState21 = React.useState(1),
5979
5979
  _useState22 = _slicedToArray(_useState21, 2),
5980
- history = _useState22[0],
5981
- setHistory = _useState22[1];
5980
+ backgroundImageOpacity = _useState22[0],
5981
+ setBackgroundImageOpacity = _useState22[1];
5982
5982
  var _useState23 = React.useState([]),
5983
5983
  _useState24 = _slicedToArray(_useState23, 2),
5984
- redoStack = _useState24[0],
5985
- setRedoStack = _useState24[1];
5986
- var _useState25 = React.useState(theme.color.white),
5984
+ history = _useState24[0],
5985
+ setHistory = _useState24[1];
5986
+ var _useState25 = React.useState([]),
5987
5987
  _useState26 = _slicedToArray(_useState25, 2),
5988
- shapeFillColor = _useState26[0],
5989
- setShapeFillColor = _useState26[1];
5990
- var _useState27 = React.useState(1),
5988
+ redoStack = _useState26[0],
5989
+ setRedoStack = _useState26[1];
5990
+ var _useState27 = React.useState(theme.color.white),
5991
5991
  _useState28 = _slicedToArray(_useState27, 2),
5992
- shapeStrokeWidth = _useState28[0],
5993
- setShapeStrokeWidth = _useState28[1];
5994
- var _useState29 = React.useState(theme.color.black),
5992
+ shapeFillColor = _useState28[0],
5993
+ setShapeFillColor = _useState28[1];
5994
+ var _useState29 = React.useState(1),
5995
5995
  _useState30 = _slicedToArray(_useState29, 2),
5996
- shapeStrokeColor = _useState30[0],
5997
- setShapeStrokeColor = _useState30[1];
5998
- var _useState31 = React.useState(1),
5996
+ shapeStrokeWidth = _useState30[0],
5997
+ setShapeStrokeWidth = _useState30[1];
5998
+ var _useState31 = React.useState(theme.color.black),
5999
5999
  _useState32 = _slicedToArray(_useState31, 2),
6000
- shapeOpacity = _useState32[0],
6001
- setShapeOpacity = _useState32[1];
6002
- var _useState33 = React.useState(0),
6000
+ shapeStrokeColor = _useState32[0],
6001
+ setShapeStrokeColor = _useState32[1];
6002
+ var _useState33 = React.useState(1),
6003
6003
  _useState34 = _slicedToArray(_useState33, 2),
6004
- imageStrokeWidth = _useState34[0],
6005
- setImageStrokeWidth = _useState34[1];
6006
- var _useState35 = React.useState(theme.color.black),
6004
+ shapeOpacity = _useState34[0],
6005
+ setShapeOpacity = _useState34[1];
6006
+ var _useState35 = React.useState(0),
6007
6007
  _useState36 = _slicedToArray(_useState35, 2),
6008
- imageStrokeColor = _useState36[0],
6009
- setImageStrokeColor = _useState36[1];
6010
- var _useState37 = React.useState(1),
6008
+ imageStrokeWidth = _useState36[0],
6009
+ setImageStrokeWidth = _useState36[1];
6010
+ var _useState37 = React.useState(theme.color.black),
6011
6011
  _useState38 = _slicedToArray(_useState37, 2),
6012
- imageOpacity = _useState38[0],
6013
- setImageOpacity = _useState38[1];
6014
- var _useState39 = React.useState(2),
6012
+ imageStrokeColor = _useState38[0],
6013
+ setImageStrokeColor = _useState38[1];
6014
+ var _useState39 = React.useState(1),
6015
6015
  _useState40 = _slicedToArray(_useState39, 2),
6016
- qrStrokeWidth = _useState40[0],
6017
- setQrStrokeWidth = _useState40[1];
6018
- var _useState41 = React.useState(theme.color.black),
6016
+ imageOpacity = _useState40[0],
6017
+ setImageOpacity = _useState40[1];
6018
+ var _useState41 = React.useState(2),
6019
6019
  _useState42 = _slicedToArray(_useState41, 2),
6020
- qrStrokeColor = _useState42[0],
6021
- setQrStrokeColor = _useState42[1];
6022
- var _useState43 = React.useState(1),
6020
+ qrStrokeWidth = _useState42[0],
6021
+ setQrStrokeWidth = _useState42[1];
6022
+ var _useState43 = React.useState(theme.color.black),
6023
6023
  _useState44 = _slicedToArray(_useState43, 2),
6024
- qrOpacity = _useState44[0],
6025
- setQrOpacity = _useState44[1];
6026
- var _useState45 = React.useState(null),
6024
+ qrStrokeColor = _useState44[0],
6025
+ setQrStrokeColor = _useState44[1];
6026
+ var _useState45 = React.useState(1),
6027
6027
  _useState46 = _slicedToArray(_useState45, 2),
6028
- selectedElement = _useState46[0],
6029
- setSelectedElement = _useState46[1];
6030
- var _useState47 = React.useState(customImages || []),
6028
+ qrOpacity = _useState46[0],
6029
+ setQrOpacity = _useState46[1];
6030
+ var _useState47 = React.useState(null),
6031
6031
  _useState48 = _slicedToArray(_useState47, 2),
6032
- customImagesList = _useState48[0],
6033
- setCustomImagesList = _useState48[1];
6034
- var _useState49 = React.useState(null),
6032
+ selectedElement = _useState48[0],
6033
+ setSelectedElement = _useState48[1];
6034
+ var _useState49 = React.useState(customImages || []),
6035
6035
  _useState50 = _slicedToArray(_useState49, 2),
6036
- qrLogo = _useState50[0],
6037
- setQrLogo = _useState50[1];
6038
- var _useState51 = React.useState(basicTextProps),
6036
+ customImagesList = _useState50[0],
6037
+ setCustomImagesList = _useState50[1];
6038
+ var _useState51 = React.useState(null),
6039
6039
  _useState52 = _slicedToArray(_useState51, 2),
6040
- defaultTextProps = _useState52[0],
6041
- setDefaultTextProps = _useState52[1];
6040
+ qrLogo = _useState52[0],
6041
+ setQrLogo = _useState52[1];
6042
+ var _useState53 = React.useState(basicTextProps),
6043
+ _useState54 = _slicedToArray(_useState53, 2),
6044
+ defaultTextProps = _useState54[0],
6045
+ setDefaultTextProps = _useState54[1];
6046
+ var undo = React.useCallback(function () {
6047
+ if (history.length > 0) {
6048
+ setSelectedElement(null);
6049
+ var previousState = history[history.length - 1];
6050
+ setRedoStack([elements].concat(_toConsumableArray(redoStack)));
6051
+ setHistory(history.slice(0, -1));
6052
+ setElements(previousState);
6053
+ }
6054
+ }, [history, elements, redoStack, setRedoStack, setHistory, setElements]);
6055
+ var redo = React.useCallback(function () {
6056
+ if (redoStack.length > 0) {
6057
+ setSelectedElement(null);
6058
+ var nextState = redoStack[0];
6059
+ setHistory([].concat(_toConsumableArray(history), [elements]));
6060
+ setRedoStack(redoStack.slice(1));
6061
+ setElements(nextState);
6062
+ }
6063
+ }, [history, elements, redoStack, setHistory, setRedoStack, setElements]);
6042
6064
  React.useImperativeHandle(ref, function () {
6043
6065
  return {
6044
6066
  onSave: function () {
@@ -6078,6 +6100,61 @@ var Studio = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
6078
6100
  }()
6079
6101
  };
6080
6102
  });
6103
+ React.useEffect(function () {
6104
+ var handleKeyDown = function handleKeyDown(e) {
6105
+ var isMac = navigator.platform.toUpperCase().includes('MAC');
6106
+ var ctrlOrCmd = isMac ? e.metaKey : e.ctrlKey;
6107
+ var shiftKey = e.shiftKey;
6108
+
6109
+ // Delete
6110
+ if ((e.key === 'Delete' || e.key === 'Backspace') && selectedElement && (selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.draggable) !== false && !['INPUT', 'TEXTAREA'].includes(document.activeElement.tagName) && !document.activeElement.isContentEditable) {
6111
+ e.preventDefault();
6112
+ onDeleteSelectedElement();
6113
+ }
6114
+
6115
+ // Copy
6116
+ if (ctrlOrCmd && e.key.toLowerCase() === 'c') {
6117
+ if (selectedElement) {
6118
+ e.preventDefault();
6119
+ var copied = _objectSpread2({}, selectedElement);
6120
+ delete copied.ref;
6121
+ setCopiedElement(copied);
6122
+ }
6123
+ }
6124
+
6125
+ // Paste
6126
+ if (ctrlOrCmd && e.key.toLowerCase() === 'v') {
6127
+ if (copiedElement) {
6128
+ e.preventDefault();
6129
+ var newElement = _objectSpread2(_objectSpread2({}, copiedElement), {}, {
6130
+ id: "element".concat(Date.now()),
6131
+ x: copiedElement.x + 10,
6132
+ y: copiedElement.y + 10,
6133
+ draggable: true
6134
+ });
6135
+ addElement(newElement);
6136
+ setSelectedElement(newElement);
6137
+ }
6138
+ }
6139
+
6140
+ // Undo: Ctrl/Cmd + Z
6141
+ if (ctrlOrCmd && !shiftKey && e.key.toLowerCase() === 'z') {
6142
+ e.preventDefault();
6143
+ undo();
6144
+ }
6145
+
6146
+ // Redo: Ctrl/Cmd + Shift + Z or Ctrl + Y
6147
+ if (ctrlOrCmd && shiftKey && e.key.toLowerCase() === 'z' || ctrlOrCmd && e.key.toLowerCase() === 'y') {
6148
+ e.preventDefault();
6149
+ redo();
6150
+ }
6151
+ };
6152
+ window.addEventListener('keydown', handleKeyDown);
6153
+ return function () {
6154
+ window.removeEventListener('keydown', handleKeyDown);
6155
+ };
6156
+ }, [selectedElement, copiedElement, undo, redo]);
6157
+
6081
6158
  // console.log(isPropValid('onClick'));
6082
6159
  React.useEffect(function () {
6083
6160
  setLanguageLocale(validateLocale(locale));
@@ -6324,27 +6401,6 @@ var Studio = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
6324
6401
  }
6325
6402
  setBackgroundImageOpacity(val);
6326
6403
  };
6327
- var undo = React.useCallback(function () {
6328
- if (history.length > 0) {
6329
- // if (history.length === 1) {
6330
- // setSelectedElement(null);
6331
- // }
6332
- setSelectedElement(null);
6333
- var previousState = history[history.length - 1];
6334
- setRedoStack([elements].concat(_toConsumableArray(redoStack)));
6335
- setHistory(history.slice(0, -1));
6336
- setElements(previousState);
6337
- }
6338
- }, [history, elements, redoStack, setRedoStack, setHistory, setElements]);
6339
- var redo = React.useCallback(function () {
6340
- if (redoStack.length > 0) {
6341
- setSelectedElement(null);
6342
- var nextState = redoStack[0];
6343
- setHistory([].concat(_toConsumableArray(history), [elements]));
6344
- setRedoStack(redoStack.slice(1));
6345
- setElements(nextState);
6346
- }
6347
- }, [history, elements, redoStack, setHistory, setRedoStack, setElements]);
6348
6404
  var onSelectElement = function onSelectElement(element) {
6349
6405
  if (isElementShape(element)) {
6350
6406
  setSelectedTab(sideBarpillsList === null || sideBarpillsList === void 0 ? void 0 : sideBarpillsList.shape);
@@ -6444,7 +6500,22 @@ var Studio = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
6444
6500
  saveHistory(_toConsumableArray(copyElements));
6445
6501
  };
6446
6502
  var createNewTemplate = function createNewTemplate() {
6447
- var elems = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _toConsumableArray(defaultElements);
6503
+ var elems = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [].concat(_toConsumableArray(defaultElements), [{
6504
+ type: elementTypes.qr,
6505
+ id: "element".concat(Date.now() + 1),
6506
+ width: 110,
6507
+ height: 110,
6508
+ x: 194.5,
6509
+ y: 280,
6510
+ fill: theme.color.green_80D965,
6511
+ stroke: theme.color.black,
6512
+ strokeWidth: 2,
6513
+ draggable: true,
6514
+ qrLogo: null,
6515
+ qrText: qrLink,
6516
+ opacity: 1,
6517
+ logoVisible: false
6518
+ }]);
6448
6519
  setElements(_toConsumableArray(elems));
6449
6520
  setHistory([]);
6450
6521
  setRedoStack([]);