@plait/draw 0.42.0 → 0.44.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.
@@ -1456,13 +1456,12 @@ const getDrawDefaultStrokeColor = (theme) => {
1456
1456
  const getFlowchartDefaultFill = (theme) => {
1457
1457
  return DrawThemeColors[theme].fill;
1458
1458
  };
1459
- const getDefaultTextShapeProperty = (board, fontSize) => {
1459
+ const getTextShapeProperty = (board, text = DefaultTextProperty.text, fontSize) => {
1460
1460
  fontSize = fontSize ? Number(fontSize) : DEFAULT_FONT_SIZE;
1461
- const textSize = getTextSize(board, '文本', 10, { fontSize });
1461
+ const textSize = getTextSize(board, text, Infinity, { fontSize });
1462
1462
  return {
1463
1463
  width: textSize.width + ShapeDefaultSpace.rectangleAndText * 2,
1464
- height: textSize.height,
1465
- text: '文本'
1464
+ height: textSize.height
1466
1465
  };
1467
1466
  };
1468
1467
  const getDefaultGeometryPoints = (pointer, centerPoint) => {
@@ -1479,7 +1478,7 @@ const getDefaultGeometryProperty = (pointer) => {
1479
1478
  }
1480
1479
  };
1481
1480
  const getDefaultTextPoints = (board, centerPoint, fontSize) => {
1482
- const property = getDefaultTextShapeProperty(board, fontSize);
1481
+ const property = getTextShapeProperty(board, DefaultTextProperty.text, fontSize);
1483
1482
  return getPointsByCenterPoint(centerPoint, property.width, property.height);
1484
1483
  };
1485
1484
  const insertElement = (board, element) => {
@@ -1489,14 +1488,17 @@ const insertElement = (board, element) => {
1489
1488
  addSelectedElement(board, element);
1490
1489
  BoardTransforms.updatePointerType(board, PlaitPointerType.selection);
1491
1490
  };
1492
- const createDefaultText = (board, points) => {
1491
+ const createTextElement = (board, points, text = DefaultTextProperty.text, textHeight) => {
1493
1492
  const memorizedLatest = getMemorizedLatestByPointer(BasicShapes.text);
1494
- const property = getDefaultTextShapeProperty(board, memorizedLatest.textProperties['font-size']);
1495
- return createGeometryElement(BasicShapes.text, points, DefaultTextProperty.text, memorizedLatest.geometryProperties, { ...memorizedLatest.textProperties, textHeight: property.height });
1493
+ textHeight = textHeight ? textHeight : getRectangleByPoints(points).height;
1494
+ return createGeometryElement(BasicShapes.text, points, text, memorizedLatest.geometryProperties, {
1495
+ ...memorizedLatest.textProperties,
1496
+ textHeight
1497
+ });
1496
1498
  };
1497
1499
  const createDefaultGeometry = (board, points, shape) => {
1498
1500
  const memorizedLatest = getMemorizedLatestByPointer(shape);
1499
- const textHeight = getDefaultTextShapeProperty(board, memorizedLatest.textProperties['font-size']).height;
1501
+ const textHeight = getTextShapeProperty(board, DefaultTextProperty.text, memorizedLatest.textProperties['font-size']).height;
1500
1502
  return createGeometryElement(shape, points, '', {
1501
1503
  strokeWidth: DefaultBasicShapeProperty.strokeWidth,
1502
1504
  ...memorizedLatest.geometryProperties
@@ -1816,7 +1818,8 @@ const getCurvePoints = (board, element) => {
1816
1818
  return pointsOnBezierCurves(curvePoints);
1817
1819
  }
1818
1820
  else {
1819
- const allPoints = PlaitLine.getPoints(board, element);
1821
+ let allPoints = PlaitLine.getPoints(board, element);
1822
+ allPoints = removeDuplicatePoints(allPoints);
1820
1823
  const points = catmullRomFitting(allPoints);
1821
1824
  return pointsOnBezierCurves(points);
1822
1825
  }
@@ -2354,8 +2357,11 @@ const insertGeometryByVector = (board, point, shape, vector) => {
2354
2357
  }
2355
2358
  return null;
2356
2359
  };
2357
- const insertText = (board, points, text = '文本') => {
2358
- const newElement = createDefaultText(board, points);
2360
+ const insertText = (board, point, text) => {
2361
+ const memorizedLatest = getMemorizedLatestByPointer(BasicShapes.text);
2362
+ const property = getTextShapeProperty(board, text, memorizedLatest.textProperties['font-size']);
2363
+ const points = [point, [point[0] + property.width, point[1] + property.height]];
2364
+ const newElement = createTextElement(board, points, text);
2359
2365
  insertElement(board, newElement);
2360
2366
  };
2361
2367
  const resizeGeometry = (board, points, textHeight, path) => {
@@ -2940,9 +2946,9 @@ const withGeometryCreateByDrag = (board) => {
2940
2946
  if (dragMode) {
2941
2947
  const memorizedLatest = getMemorizedLatestByPointer(pointer);
2942
2948
  if (pointer === BasicShapes.text) {
2943
- const property = getDefaultTextShapeProperty(board, memorizedLatest.textProperties['font-size']);
2949
+ const property = getTextShapeProperty(board, DefaultTextProperty.text, memorizedLatest.textProperties['font-size']);
2944
2950
  const points = getPointsByCenterPoint(movingPoint, property.width, property.height);
2945
- temporaryElement = createDefaultText(board, points);
2951
+ temporaryElement = createTextElement(board, points);
2946
2952
  if (!fakeCreateTextRef) {
2947
2953
  const textManage = new TextManage(board, PlaitBoard.getComponent(board).viewContainerRef, {
2948
2954
  getRectangle: () => {
@@ -3016,9 +3022,9 @@ const withGeometryCreateByDrawing = (board) => {
3016
3022
  preventTouchMove(board, event, true);
3017
3023
  if (pointer === BasicShapes.text) {
3018
3024
  const memorizedLatest = getMemorizedLatestByPointer(pointer);
3019
- const property = getDefaultTextShapeProperty(board, memorizedLatest.textProperties['font-size']);
3025
+ const property = getTextShapeProperty(board, DefaultTextProperty.text, memorizedLatest.textProperties['font-size']);
3020
3026
  const points = getPointsByCenterPoint(point, property.width, property.height);
3021
- const textElement = createDefaultText(board, points);
3027
+ const textElement = createTextElement(board, points);
3022
3028
  insertElement(board, textElement);
3023
3029
  start = null;
3024
3030
  }
@@ -3075,15 +3081,22 @@ const buildClipboardData = (board, elements, startPoint) => {
3075
3081
  if (PlaitDrawElement.isLine(element)) {
3076
3082
  let source = { ...element.source };
3077
3083
  let target = { ...element.target };
3078
- if (element.source.boundId && !getElementById(board, element.source.boundId, elements)) {
3079
- delete source.boundId;
3080
- delete source.connection;
3084
+ let points = [...element.points];
3085
+ if (element.source.boundId) {
3086
+ points[0] = getConnectionPoint(getElementById(board, element.source.boundId), element.source.connection);
3087
+ if (!getElementById(board, element.source.boundId, elements)) {
3088
+ delete source.boundId;
3089
+ delete source.connection;
3090
+ }
3081
3091
  }
3082
- if (element.target.boundId && !getElementById(board, element.target.boundId, elements)) {
3083
- delete target.boundId;
3084
- delete target.connection;
3092
+ if (element.target.boundId) {
3093
+ points[points.length - 1] = getConnectionPoint(getElementById(board, element.target.boundId), element.target.connection);
3094
+ if (!getElementById(board, element.target.boundId, elements)) {
3095
+ delete target.boundId;
3096
+ delete target.connection;
3097
+ }
3085
3098
  }
3086
- const points = element.points.map(point => [point[0] - startPoint[0], point[1] - startPoint[1]]);
3099
+ points = points.map(point => [point[0] - startPoint[0], point[1] - startPoint[1]]);
3087
3100
  return { ...element, points, source, target };
3088
3101
  }
3089
3102
  return element;
@@ -3167,8 +3180,7 @@ const withDrawFragment = (baseBoard) => {
3167
3180
  const insertAsChildren = selectedElements.length === 1 && selectedElements[0].children;
3168
3181
  const insertAsFreeText = !insertAsChildren;
3169
3182
  if (text && insertAsFreeText) {
3170
- const { width, height } = getTextSize(board, text);
3171
- DrawTransforms.insertText(board, [targetPoint, [targetPoint[0] + width, targetPoint[1] + height]], text);
3183
+ DrawTransforms.insertText(board, targetPoint, text);
3172
3184
  return;
3173
3185
  }
3174
3186
  }
@@ -3837,5 +3849,5 @@ const withDraw = (board) => {
3837
3849
  * Generated bundle index. Do not edit.
3838
3850
  */
3839
3851
 
3840
- export { BasicShapes, DEFAULT_IMAGE_WIDTH, DefaultBasicShapeProperty, DefaultConnectorProperty, DefaultDataProperty, DefaultDecisionProperty, DefaultFlowchartProperty, DefaultFlowchartPropertyMap, DefaultGeometryActiveStyle, DefaultGeometryStyle, DefaultManualInputProperty, DefaultMergeProperty, DefaultTextProperty, DrawThemeColors, DrawTransforms, FlowchartSymbols, GeometryComponent, GeometryThreshold, LineComponent, LineHandleKey, LineMarkerType, LineShape, MemorizeKey, PlaitDrawElement, PlaitGeometry, PlaitLine, Q2C, REACTION_MARGIN, ShapeDefaultSpace, StrokeStyle, WithLineAutoCompletePluginKey, alignPoints, createDefaultFlowchart, createDefaultGeometry, createDefaultText, createGeometryElement, createLineElement, drawBoundMask, drawGeometry, drawLine, getAutoCompletePoints, getBasicPointers, getBoardLines, getCenterPointsOnPolygon, getConnectionPoint, getCurvePoints, getDefaultFlowchartProperty, getDefaultGeometryPoints, getDefaultGeometryProperty, getDefaultTextPoints, getDefaultTextShapeProperty, getDrawDefaultStrokeColor, getEdgeOnPolygonByPoint, getElbowPoints, getFillByElement, getFlowchartDefaultFill, getFlowchartPointers, getGeometryPointers, getHitConnectorPoint, getHitIndexOfAutoCompletePoint, getHitLineTextIndex, getLineDashByElement, getLineHandleRefPair, getLineMemorizedLatest, getLinePointers, getLinePoints, getLineTextRectangle, getMemorizeKey, getMemorizedLatestByPointer, getMemorizedLatestShape, getNearestPoint, getPointsByCenterPoint, getSelectedDrawElements, getSelectedGeometryElements, getSelectedImageElements, getSelectedLineElements, getStrokeColorByElement, getStrokeStyleByElement, getStrokeWidthByElement, getTextRectangle, getVectorByConnection, handleLineCreating, insertElement, isHitDrawElement, isHitLineText, isHitPolyLine, isRectangleHitDrawElement, isTextExceedingBounds, memorizeLatestShape, memorizeLatestText, transformOpsToPoints, transformPointToConnection, withDraw, withLineAutoComplete };
3852
+ export { BasicShapes, DEFAULT_IMAGE_WIDTH, DefaultBasicShapeProperty, DefaultConnectorProperty, DefaultDataProperty, DefaultDecisionProperty, DefaultFlowchartProperty, DefaultFlowchartPropertyMap, DefaultGeometryActiveStyle, DefaultGeometryStyle, DefaultManualInputProperty, DefaultMergeProperty, DefaultTextProperty, DrawThemeColors, DrawTransforms, FlowchartSymbols, GeometryComponent, GeometryThreshold, LineComponent, LineHandleKey, LineMarkerType, LineShape, MemorizeKey, PlaitDrawElement, PlaitGeometry, PlaitLine, Q2C, REACTION_MARGIN, ShapeDefaultSpace, StrokeStyle, WithLineAutoCompletePluginKey, alignPoints, createDefaultFlowchart, createDefaultGeometry, createGeometryElement, createLineElement, createTextElement, drawBoundMask, drawGeometry, drawLine, getAutoCompletePoints, getBasicPointers, getBoardLines, getCenterPointsOnPolygon, getConnectionPoint, getCurvePoints, getDefaultFlowchartProperty, getDefaultGeometryPoints, getDefaultGeometryProperty, getDefaultTextPoints, getDrawDefaultStrokeColor, getEdgeOnPolygonByPoint, getElbowPoints, getFillByElement, getFlowchartDefaultFill, getFlowchartPointers, getGeometryPointers, getHitConnectorPoint, getHitIndexOfAutoCompletePoint, getHitLineTextIndex, getLineDashByElement, getLineHandleRefPair, getLineMemorizedLatest, getLinePointers, getLinePoints, getLineTextRectangle, getMemorizeKey, getMemorizedLatestByPointer, getMemorizedLatestShape, getNearestPoint, getPointsByCenterPoint, getSelectedDrawElements, getSelectedGeometryElements, getSelectedImageElements, getSelectedLineElements, getStrokeColorByElement, getStrokeStyleByElement, getStrokeWidthByElement, getTextRectangle, getTextShapeProperty, getVectorByConnection, handleLineCreating, insertElement, isHitDrawElement, isHitLineText, isHitPolyLine, isRectangleHitDrawElement, isTextExceedingBounds, memorizeLatestShape, memorizeLatestText, transformOpsToPoints, transformPointToConnection, withDraw, withLineAutoComplete };
3841
3853
  //# sourceMappingURL=plait-draw.mjs.map