@arbisoft/react-design-tool 1.0.18 → 1.0.20

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,11 +36,11 @@ 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.17
39
+ npm install @arbisoft/react-design-tool@1.0.19
40
40
  ```
41
41
  OR
42
42
  ```bash
43
- yarn add @arbisoft/react-design-tool@1.0.17
43
+ yarn add @arbisoft/react-design-tool@1.0.19
44
44
 
45
45
  ```
46
46
  ## 🚀 Quick Start
package/dist/cjs/index.js CHANGED
@@ -2767,7 +2767,7 @@ var OpacityPicker = function OpacityPicker(_ref) {
2767
2767
  src: IconOpacity
2768
2768
  })), /*#__PURE__*/React.createElement(StyledText, {
2769
2769
  fontFamily: fontFamily
2770
- }, varient === 'opacity' ? "".concat(value * 100, "%") : value), rightChild && rightChild), opacityPickerVisible && /*#__PURE__*/React.createElement("div", {
2770
+ }, varient === 'opacity' ? "".concat(value * 100, "%") : Math.round(value)), rightChild && rightChild), opacityPickerVisible && /*#__PURE__*/React.createElement("div", {
2771
2771
  style: {
2772
2772
  position: 'absolute',
2773
2773
  bottom: -50,
@@ -4204,31 +4204,35 @@ TextEditor.propTypes = propTypes$c;
4204
4204
 
4205
4205
  var EditableText = function EditableText(_ref) {
4206
4206
  var element = _ref.element,
4207
+ trRef = _ref.trRef,
4207
4208
  onClick = _ref.onClick,
4208
4209
  _onDragEnd = _ref.onDragEnd,
4209
4210
  onTransformEnd = _ref.onTransformEnd,
4210
4211
  id = _ref.id,
4211
4212
  onTransform = _ref.onTransform,
4212
4213
  onChangeTextContent = _ref.onChangeTextContent,
4213
- onChangeTextProperty = _ref.onChangeTextProperty,
4214
4214
  onDragMove = _ref.onDragMove;
4215
4215
  var textRef = React.useRef();
4216
4216
  var _useState = React.useState(element === null || element === void 0 ? void 0 : element.width),
4217
4217
  _useState2 = _slicedToArray(_useState, 2),
4218
4218
  textWidth = _useState2[0],
4219
4219
  setTextWidth = _useState2[1];
4220
- var _useState3 = React.useState(false),
4220
+ var _useState3 = React.useState(element === null || element === void 0 ? void 0 : element.fontSize),
4221
4221
  _useState4 = _slicedToArray(_useState3, 2),
4222
- isEditing = _useState4[0],
4223
- setIsEditing = _useState4[1];
4224
- var _useState5 = React.useState(element === null || element === void 0 ? void 0 : element.text),
4222
+ textFontSize = _useState4[0],
4223
+ setTextFontSize = _useState4[1];
4224
+ var _useState5 = React.useState(false),
4225
4225
  _useState6 = _slicedToArray(_useState5, 2),
4226
- text = _useState6[0],
4227
- setText = _useState6[1];
4228
- var _useState7 = React.useState(false),
4226
+ isEditing = _useState6[0],
4227
+ setIsEditing = _useState6[1];
4228
+ var _useState7 = React.useState(element === null || element === void 0 ? void 0 : element.text),
4229
4229
  _useState8 = _slicedToArray(_useState7, 2),
4230
- isFontLoaded = _useState8[0],
4231
- setIsFontLoaded = _useState8[1];
4230
+ text = _useState8[0],
4231
+ setText = _useState8[1];
4232
+ var _useState9 = React.useState(false),
4233
+ _useState10 = _slicedToArray(_useState9, 2),
4234
+ isFontLoaded = _useState10[0],
4235
+ setIsFontLoaded = _useState10[1];
4232
4236
  React.useEffect(function () {
4233
4237
  setIsFontLoaded(false);
4234
4238
  setTimeout(function () {
@@ -4238,23 +4242,49 @@ var EditableText = function EditableText(_ref) {
4238
4242
  React.useEffect(function () {
4239
4243
  setTextWidth(element === null || element === void 0 ? void 0 : element.width);
4240
4244
  setText(element === null || element === void 0 ? void 0 : element.text);
4245
+ setTextFontSize(element === null || element === void 0 ? void 0 : element.fontSize);
4241
4246
  }, [element]);
4242
4247
  var tranform = function tranform(e) {
4243
- var node = e.target;
4248
+ var transformer = trRef.current;
4249
+ var activeAnchor = transformer.getActiveAnchor();
4250
+ if (activeAnchor === 'middle-right' || activeAnchor === 'middle-left') {
4251
+ var node = e.target;
4252
+ var scaleX = sanitizeNumber(node.scaleX(), 1);
4253
+ var updatedWidth = sanitizeNumber(node.width() * scaleX, element.width);
4254
+ var updatedObject = _objectSpread2(_objectSpread2({}, node.attrs), {}, {
4255
+ width: updatedWidth,
4256
+ scaleX: 1,
4257
+ scaleY: 1
4258
+ });
4259
+ delete updatedObject['ref'];
4260
+ setTextWidth(updatedWidth);
4261
+ onTransform && onTransform(updatedObject);
4262
+ node.scaleX(1);
4263
+ node.scaleY(1);
4264
+ }
4265
+ };
4266
+ var handleTransformEnd = function handleTransformEnd(e) {
4267
+ var transformer = trRef.current;
4268
+ var activeAnchor = transformer.getActiveAnchor();
4269
+ if (activeAnchor === 'middle-right' || activeAnchor === 'middle-left') {
4270
+ onTransformEnd && onTransformEnd(e);
4271
+ return;
4272
+ }
4273
+ var node = textRef.current;
4274
+ var nodeAttrs = node.attrs;
4244
4275
  var scaleX = sanitizeNumber(node.scaleX(), 1);
4245
- var updatedWidth = sanitizeNumber(node.width() * scaleX, element.width);
4246
- var updatedObject = _objectSpread2(_objectSpread2({}, node.attrs), {}, {
4276
+ var newFontSize = nodeAttrs.fontSize * scaleX;
4277
+ var updatedWidth = sanitizeNumber(node.width() * scaleX, nodeAttrs.width);
4278
+ node.scaleX(1);
4279
+ node.scaleY(1);
4280
+ var updatedObject = _objectSpread2(_objectSpread2({}, nodeAttrs), {}, {
4247
4281
  width: updatedWidth,
4248
- scaleX: 1,
4249
- scaleY: 1
4282
+ fontSize: newFontSize
4250
4283
  });
4251
- delete updatedObject['ref'];
4284
+ setTextFontSize(newFontSize);
4252
4285
  setTextWidth(updatedWidth);
4286
+ delete updatedObject['ref'];
4253
4287
  onTransform && onTransform(updatedObject);
4254
- node.scaleX(1);
4255
- node.scaleY(1);
4256
- };
4257
- var transformEnd = function transformEnd(e) {
4258
4288
  onTransformEnd && onTransformEnd(e);
4259
4289
  };
4260
4290
  var handleTextDblClick = function handleTextDblClick() {
@@ -4270,7 +4300,7 @@ var EditableText = function EditableText(_ref) {
4270
4300
  var width = textRef === null || textRef === void 0 || (_textRef$current = textRef.current) === null || _textRef$current === void 0 ? void 0 : _textRef$current.getWidth();
4271
4301
  if (width) {
4272
4302
  setTextWidth(width);
4273
- onChangeTextProperty('width', width);
4303
+ // onChangeTextProperty('width', width);
4274
4304
  }
4275
4305
  // const scaleX = sanitizeNumber(node?.scaleX(), 1);
4276
4306
  // const updatedWidth = sanitizeNumber(node?.width() * scaleX, element?.width);
@@ -4287,6 +4317,7 @@ var EditableText = function EditableText(_ref) {
4287
4317
  fontVariant: element === null || element === void 0 ? void 0 : element.fontWeight,
4288
4318
  align: element === null || element === void 0 ? void 0 : element.textAlign,
4289
4319
  width: textWidth,
4320
+ fontSize: textFontSize,
4290
4321
  text: text,
4291
4322
  fill: element === null || element === void 0 ? void 0 : element.color,
4292
4323
  opacity: 0,
@@ -4301,6 +4332,7 @@ var EditableText = function EditableText(_ref) {
4301
4332
  fontVariant: element === null || element === void 0 ? void 0 : element.fontWeight,
4302
4333
  align: element === null || element === void 0 ? void 0 : element.textAlign,
4303
4334
  width: textWidth,
4335
+ fontSize: textFontSize,
4304
4336
  text: text,
4305
4337
  fill: element === null || element === void 0 ? void 0 : element.color,
4306
4338
  onClick: function onClick() {
@@ -4313,7 +4345,7 @@ var EditableText = function EditableText(_ref) {
4313
4345
  return _onDragEnd && _onDragEnd(e);
4314
4346
  },
4315
4347
  onTransformEnd: function onTransformEnd(e) {
4316
- transformEnd(e);
4348
+ handleTransformEnd(e);
4317
4349
  },
4318
4350
  onDragMove: onDragMove,
4319
4351
  onDblClick: handleTextDblClick,
@@ -4963,6 +4995,7 @@ var Editor = function Editor(_ref) {
4963
4995
  });
4964
4996
  case elementTypes.text:
4965
4997
  return /*#__PURE__*/React.createElement(EditableText, {
4998
+ trRef: transformerRef,
4966
4999
  key: el.id,
4967
5000
  id: el.id,
4968
5001
  element: el,
@@ -4977,8 +5010,7 @@ var Editor = function Editor(_ref) {
4977
5010
  handleDragEnd(e);
4978
5011
  },
4979
5012
  onDragMove: handleDragging,
4980
- onChangeTextContent: onChangeTextContent,
4981
- onChangeTextProperty: onChangeTextProperty
5013
+ onChangeTextContent: onChangeTextContent
4982
5014
  });
4983
5015
  default:
4984
5016
  return null;
@@ -5067,7 +5099,7 @@ var Editor = function Editor(_ref) {
5067
5099
  ref: transformerRef,
5068
5100
  onTransform: handleResizing,
5069
5101
  onTransformEnd: handleResizeEnd,
5070
- enabledAnchors: selectedElement !== null && selectedElement !== void 0 && selectedElement.draggable ? (selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.type) === (elementTypes === null || elementTypes === void 0 ? void 0 : elementTypes.text) ? ['middle-left', 'middle-right'] : ['top-left', 'top-right', 'bottom-left', 'bottom-right', 'middle-left', 'middle-right', 'top-center', 'bottom-center'] : [],
5102
+ enabledAnchors: selectedElement !== null && selectedElement !== void 0 && selectedElement.draggable ? (selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.type) === (elementTypes === null || elementTypes === void 0 ? void 0 : elementTypes.text) ? ['top-left', 'top-right', 'bottom-left', 'bottom-right', 'middle-left', 'middle-right'] : ['top-left', 'top-right', 'bottom-left', 'bottom-right', 'middle-left', 'middle-right', 'top-center', 'bottom-center'] : [],
5071
5103
  borderStroke: theme.color.primary,
5072
5104
  borderStrokeWidth: 2
5073
5105
  // add anchors
@@ -5082,7 +5114,9 @@ var Editor = function Editor(_ref) {
5082
5114
  ,
5083
5115
  boundBoxFunc: function boundBoxFunc(oldBox, newBox) {
5084
5116
  // limit resize
5085
- if (!(selectedElement !== null && selectedElement !== void 0 && selectedElement.draggable)) {
5117
+ if (!(selectedElement !== null && selectedElement !== void 0 && selectedElement.draggable) ||
5118
+ // Handle element flliping
5119
+ newBox.width < 1 || newBox.height < 1) {
5086
5120
  return oldBox;
5087
5121
  }
5088
5122
  return newBox;