@plait/draw 0.41.0 → 0.43.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
@@ -1918,14 +1920,20 @@ const getConnectionPoint = (geometry, connection, direction, delta) => {
1918
1920
  return RectangleClient.getConnectionPoint(rectangle, connection);
1919
1921
  }
1920
1922
  };
1921
- const transformPointToConnection = (board, point, hitElement, tolerance = ACTIVE_STROKE_WIDTH) => {
1923
+ const transformPointToConnection = (board, point, hitElement) => {
1922
1924
  let rectangle = getRectangleByPoints(hitElement.points);
1923
- rectangle = RectangleClient.inflate(rectangle, tolerance);
1924
- let nearestPoint = getNearestPoint(hitElement, point, tolerance);
1925
+ rectangle = RectangleClient.inflate(rectangle, ACTIVE_STROKE_WIDTH);
1926
+ let nearestPoint = getNearestPoint(hitElement, point, ACTIVE_STROKE_WIDTH);
1925
1927
  const hitConnector = getHitConnectorPoint(nearestPoint, hitElement, rectangle);
1926
1928
  nearestPoint = hitConnector ? hitConnector : nearestPoint;
1927
1929
  return [(nearestPoint[0] - rectangle.x) / rectangle.width, (nearestPoint[1] - rectangle.y) / rectangle.height];
1928
1930
  };
1931
+ // export const getConnectionByPointOnRectangleEdge = (board: PlaitBoard, point: Point, hitElement: PlaitShape): Point => {
1932
+ // let rectangle = getRectangleByPoints(hitElement.points);
1933
+ // const hitConnector = getHitConnectorPoint(point, hitElement, rectangle);
1934
+ // const newPoint = hitConnector ?? point;
1935
+ // return [(newPoint[0] - rectangle.x) / rectangle.width, (newPoint[1] - rectangle.y) / rectangle.height];
1936
+ // };
1929
1937
  const getHitConnectorPoint = (movingPoint, hitElement, rectangle) => {
1930
1938
  const shape = getShape(hitElement);
1931
1939
  const connector = getEngine(shape).getConnectorPoints(rectangle);
@@ -2303,7 +2311,7 @@ const collectLineUpdatedRefsByGeometry = (board, geometry, refs) => {
2303
2311
  const connectLineToGeometry = (board, lineElement, handle, geometryElement) => {
2304
2312
  const linePoints = PlaitLine.getPoints(board, lineElement);
2305
2313
  const point = handle === LineHandleKey.source ? linePoints[0] : linePoints[linePoints.length - 1];
2306
- const connection = transformPointToConnection(board, point, geometryElement, Math.max(geometryElement.width, geometryElement.height));
2314
+ const connection = transformPointToConnection(board, point, geometryElement);
2307
2315
  if (connection) {
2308
2316
  let source = lineElement.source;
2309
2317
  let target = lineElement.target;
@@ -2348,8 +2356,11 @@ const insertGeometryByVector = (board, point, shape, vector) => {
2348
2356
  }
2349
2357
  return null;
2350
2358
  };
2351
- const insertText = (board, points, text = '文本') => {
2352
- const newElement = createDefaultText(board, points);
2359
+ const insertText = (board, point, text) => {
2360
+ const memorizedLatest = getMemorizedLatestByPointer(BasicShapes.text);
2361
+ const property = getTextShapeProperty(board, text, memorizedLatest.textProperties['font-size']);
2362
+ const points = [point, [point[0] + property.width, point[1] + property.height]];
2363
+ const newElement = createTextElement(board, points, text);
2353
2364
  insertElement(board, newElement);
2354
2365
  };
2355
2366
  const resizeGeometry = (board, points, textHeight, path) => {
@@ -2934,9 +2945,9 @@ const withGeometryCreateByDrag = (board) => {
2934
2945
  if (dragMode) {
2935
2946
  const memorizedLatest = getMemorizedLatestByPointer(pointer);
2936
2947
  if (pointer === BasicShapes.text) {
2937
- const property = getDefaultTextShapeProperty(board, memorizedLatest.textProperties['font-size']);
2948
+ const property = getTextShapeProperty(board, DefaultTextProperty.text, memorizedLatest.textProperties['font-size']);
2938
2949
  const points = getPointsByCenterPoint(movingPoint, property.width, property.height);
2939
- temporaryElement = createDefaultText(board, points);
2950
+ temporaryElement = createTextElement(board, points);
2940
2951
  if (!fakeCreateTextRef) {
2941
2952
  const textManage = new TextManage(board, PlaitBoard.getComponent(board).viewContainerRef, {
2942
2953
  getRectangle: () => {
@@ -3010,9 +3021,9 @@ const withGeometryCreateByDrawing = (board) => {
3010
3021
  preventTouchMove(board, event, true);
3011
3022
  if (pointer === BasicShapes.text) {
3012
3023
  const memorizedLatest = getMemorizedLatestByPointer(pointer);
3013
- const property = getDefaultTextShapeProperty(board, memorizedLatest.textProperties['font-size']);
3024
+ const property = getTextShapeProperty(board, DefaultTextProperty.text, memorizedLatest.textProperties['font-size']);
3014
3025
  const points = getPointsByCenterPoint(point, property.width, property.height);
3015
- const textElement = createDefaultText(board, points);
3026
+ const textElement = createTextElement(board, points);
3016
3027
  insertElement(board, textElement);
3017
3028
  start = null;
3018
3029
  }
@@ -3161,8 +3172,7 @@ const withDrawFragment = (baseBoard) => {
3161
3172
  const insertAsChildren = selectedElements.length === 1 && selectedElements[0].children;
3162
3173
  const insertAsFreeText = !insertAsChildren;
3163
3174
  if (text && insertAsFreeText) {
3164
- const { width, height } = getTextSize(board, text);
3165
- DrawTransforms.insertText(board, [targetPoint, [targetPoint[0] + width, targetPoint[1] + height]], text);
3175
+ DrawTransforms.insertText(board, targetPoint, text);
3166
3176
  return;
3167
3177
  }
3168
3178
  }
@@ -3831,5 +3841,5 @@ const withDraw = (board) => {
3831
3841
  * Generated bundle index. Do not edit.
3832
3842
  */
3833
3843
 
3834
- 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 };
3844
+ 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 };
3835
3845
  //# sourceMappingURL=plait-draw.mjs.map