@plait/draw 0.62.0-next.7 → 0.62.0-next.9

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 (34) hide show
  1. package/constants/geometry.d.ts +1 -0
  2. package/esm2022/constants/geometry.mjs +8 -1
  3. package/esm2022/engines/basic-shapes/ellipse.mjs +5 -3
  4. package/esm2022/engines/basic-shapes/round-comment.mjs +5 -3
  5. package/esm2022/engines/flowchart/or.mjs +5 -3
  6. package/esm2022/engines/flowchart/summing-junction.mjs +5 -3
  7. package/esm2022/engines/table/table.mjs +48 -26
  8. package/esm2022/engines/uml/deletion.mjs +3 -2
  9. package/esm2022/plugins/with-swimlane-create.mjs +4 -7
  10. package/esm2022/plugins/with-table.mjs +15 -6
  11. package/esm2022/transforms/arrow-line.mjs +5 -39
  12. package/esm2022/transforms/common.mjs +36 -0
  13. package/esm2022/transforms/geometry.mjs +4 -26
  14. package/esm2022/transforms/index.mjs +7 -6
  15. package/esm2022/transforms/swimlane.mjs +1 -1
  16. package/esm2022/utils/arrow-line/arrow-line-common.mjs +38 -3
  17. package/esm2022/utils/common.mjs +12 -3
  18. package/esm2022/utils/geometry.mjs +5 -2
  19. package/esm2022/utils/style/stroke.mjs +6 -4
  20. package/esm2022/utils/swimlane.mjs +6 -3
  21. package/esm2022/utils/table.mjs +13 -5
  22. package/fesm2022/plait-draw.mjs +246 -165
  23. package/fesm2022/plait-draw.mjs.map +1 -1
  24. package/package.json +12 -4
  25. package/transforms/arrow-line.d.ts +2 -6
  26. package/transforms/common.d.ts +3 -0
  27. package/transforms/geometry.d.ts +1 -2
  28. package/transforms/index.d.ts +2 -2
  29. package/utils/arrow-line/arrow-line-common.d.ts +5 -1
  30. package/utils/clipboard.d.ts +1 -1
  31. package/utils/common.d.ts +1 -0
  32. package/utils/geometry.d.ts +17 -16
  33. package/utils/hit.d.ts +1 -1
  34. package/utils/swimlane.d.ts +2 -1
@@ -1,5 +1,5 @@
1
- import { ACTIVE_STROKE_WIDTH, ThemeColorMode, RectangleClient, getSelectedElements, idCreator, distanceBetweenPointAndSegments, HIT_DISTANCE_BUFFER, rotatePointsByElement, isPolylineHitRectangle, rotateAntiPointsByElement, distanceBetweenPointAndPoint, Transforms, clearSelectedElement, addSelectedElement, BoardTransforms, PlaitPointerType, depthFirstRecursion, PlaitBoard, getIsRecursionFunc, createG, SNAPPING_STROKE_WIDTH, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR, drawCircle, createDebugGenerator, Point, arrowPoints, createPath, drawLinearPath, rotate, catmullRomFitting, setStrokeLinecap, findElements, createMask, createRect, PlaitElement, getElementById, Path, Direction, PlaitNode, hasValidAngle, toViewBoxPoint, toHostPoint, rotatePoints, getRectangleByElements, getSelectionAngle, rotatedDataPoints, isAxisChangedByAngle, isSelectionMoving, drawRectangle, getRectangleByAngle, getSnapRectangles, getTripleAxis, getMinPointDelta, SNAP_TOLERANCE, drawPointSnapLines, drawSolidLines, isPointInPolygon, getNearestPointBetweenPointAndSegments, isPointInEllipse, getNearestPointBetweenPointAndEllipse, getEllipseTangentSlope, getVectorFromPointAndSlope, drawRoundRectangle, isPointInRoundRectangle, setPathStrokeLinecap, getCrossingPointsBetweenEllipseAndSegment, drawLine, RgbaToHEX, getHitElementByPoint, preventTouchMove, WritableClipboardOperationType, createClipboardContext, WritableClipboardType, addClipboardContext, setAngleForG, CursorClass, temporaryDisableSelection, PRESS_AND_MOVE_BUFFER, isMainPointer, throttleRAF, getAngleBetweenPoints, normalizeAngle, degreesToRadians, rotateElements, MERGING, ROTATE_HANDLE_CLASS_NAME, SELECTION_RECTANGLE_CLASS_NAME, isSelectedElement, isDragging } from '@plait/core';
2
- import { DEFAULT_FILL, Alignment, WithTextPluginKey, ELEMENT_TO_TEXT_MANAGES, TextManage, getMemorizedLatest, memorizeLatest, RESIZE_HANDLE_DIAMETER, getPointOnPolyline, buildText, sortElementsByArea, isFilled, getTextEditorsByElement, Generator, removeDuplicatePoints, generateElbowLineRoute, simplifyOrthogonalPoints, getExtendPoint, getUnitVectorByPointAndPoint, getPointByVectorComponent, measureElement, DEFAULT_FONT_FAMILY, getFirstTextManage, ActiveGenerator, isSourceAndTargetIntersect, getPoints, DEFAULT_ROUTE_MARGIN, getDirectionByVector, normalizeShapePoints, getFirstTextEditor, resetPointsAfterResize, getRectangleResizeHandleRefs, getRotatedResizeCursorClassByAngle, ROTATE_HANDLE_DISTANCE_TO_ELEMENT, ROTATE_HANDLE_SIZE, isCornerHandle, getIndexByResizeHandle, withResize, drawHandle, getSymmetricHandleIndex, getResizeHandlePointByIndex, getDirectionFactorByDirectionComponent, getCrossingPointsBetweenPointAndSegment, isPointOnSegment, getDirectionByPointOfRectangle, getDirectionFactor, rotateVector, getOppositeDirection, rotateVectorAnti90, getSourceAndTargetOuterRectangle, getNextPoint, PRIMARY_COLOR, CommonElementFlavour, canResize, drawPrimaryHandle, drawFillPrimaryHandle, isVirtualKey, isDelete, isSpaceHotkey, isDndMode, isDrawingMode, getElementsText, acceptImageTypes, getElementOfFocusedImage, buildImage, isResizingByCondition, getRatioByPoint, getTextManages, ImageGenerator, ResizeHandle, addRotating, removeRotating, drawRotateHandle } from '@plait/common';
1
+ import { ACTIVE_STROKE_WIDTH, ThemeColorMode, RectangleClient, getSelectedElements, idCreator, distanceBetweenPointAndSegments, HIT_DISTANCE_BUFFER, rotatePointsByElement, isPolylineHitRectangle, rotateAntiPointsByElement, distanceBetweenPointAndPoint, Transforms, clearSelectedElement, addSelectedElement, BoardTransforms, PlaitPointerType, depthFirstRecursion, PlaitBoard, getIsRecursionFunc, createG, SNAPPING_STROKE_WIDTH, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR, drawCircle, createDebugGenerator, Point, arrowPoints, createPath, drawLinearPath, rotate, catmullRomFitting, setStrokeLinecap, findElements, createMask, createRect, PlaitElement, getElementById, PlaitNode, hasValidAngle, toViewBoxPoint, toHostPoint, Direction, rotatePoints, getRectangleByElements, getSelectionAngle, rotatedDataPoints, isAxisChangedByAngle, isSelectionMoving, drawRectangle, getRectangleByAngle, getSnapRectangles, getTripleAxis, getMinPointDelta, SNAP_TOLERANCE, drawPointSnapLines, drawSolidLines, isPointInPolygon, getNearestPointBetweenPointAndSegments, isPointInEllipse, getNearestPointBetweenPointAndEllipse, getEllipseTangentSlope, getVectorFromPointAndSlope, drawRoundRectangle, isPointInRoundRectangle, setPathStrokeLinecap, getCrossingPointsBetweenEllipseAndSegment, drawLine, Path, RgbaToHEX, getHitElementByPoint, preventTouchMove, WritableClipboardOperationType, createClipboardContext, WritableClipboardType, addClipboardContext, setAngleForG, CursorClass, temporaryDisableSelection, PRESS_AND_MOVE_BUFFER, isMainPointer, throttleRAF, getAngleBetweenPoints, normalizeAngle, degreesToRadians, rotateElements, MERGING, ROTATE_HANDLE_CLASS_NAME, SELECTION_RECTANGLE_CLASS_NAME, isSelectedElement, isDragging } from '@plait/core';
2
+ import { DEFAULT_FILL, Alignment, WithTextPluginKey, ELEMENT_TO_TEXT_MANAGES, TextManage, getMemorizedLatest, memorizeLatest, RESIZE_HANDLE_DIAMETER, getPointOnPolyline, buildText, sortElementsByArea, isFilled, getTextEditorsByElement, Generator, removeDuplicatePoints, generateElbowLineRoute, simplifyOrthogonalPoints, getExtendPoint, getUnitVectorByPointAndPoint, getPointByVectorComponent, measureElement, DEFAULT_FONT_FAMILY, getFirstTextManage, ActiveGenerator, isSourceAndTargetIntersect, getPoints, DEFAULT_ROUTE_MARGIN, normalizeShapePoints, getFirstTextEditor, resetPointsAfterResize, getDirectionByVector, getRectangleResizeHandleRefs, getRotatedResizeCursorClassByAngle, ROTATE_HANDLE_DISTANCE_TO_ELEMENT, ROTATE_HANDLE_SIZE, isCornerHandle, getIndexByResizeHandle, withResize, drawHandle, getSymmetricHandleIndex, getResizeHandlePointByIndex, getDirectionFactorByDirectionComponent, getCrossingPointsBetweenPointAndSegment, isPointOnSegment, getDirectionByPointOfRectangle, getDirectionFactor, rotateVector, getOppositeDirection, rotateVectorAnti90, getSourceAndTargetOuterRectangle, getNextPoint, PRIMARY_COLOR, CommonElementFlavour, canResize, drawPrimaryHandle, drawFillPrimaryHandle, isVirtualKey, isDelete, isSpaceHotkey, isDndMode, isDrawingMode, getElementsText, acceptImageTypes, getElementOfFocusedImage, buildImage, isResizingByCondition, getRatioByPoint, getTextManages, ImageGenerator, ResizeHandle, addRotating, removeRotating, drawRotateHandle } from '@plait/common';
3
3
  import { pointsOnBezierCurves } from 'points-on-curve';
4
4
  import { TEXT_DEFAULT_HEIGHT, DEFAULT_FONT_SIZE, AlignEditor } from '@plait/text-plugins';
5
5
  import { isKeyHotkey } from 'is-hotkey';
@@ -374,6 +374,13 @@ const GEOMETRY_WITHOUT_TEXT = [
374
374
  UMLSymbols.requiredInterface
375
375
  ];
376
376
  const GEOMETRY_WITH_MULTIPLE_TEXT = [UMLSymbols.package, UMLSymbols.combinedFragment];
377
+ const GEOMETRY_NOT_CLOSED = [
378
+ FlowchartSymbols.noteCurlyLeft,
379
+ FlowchartSymbols.noteCurlyRight,
380
+ FlowchartSymbols.noteSquare,
381
+ UMLSymbols.requiredInterface,
382
+ UMLSymbols.deletion
383
+ ];
377
384
 
378
385
  const getGeometryPointers = () => {
379
386
  return [...Object.keys(BasicShapes), ...Object.keys(FlowchartSymbols), ...Object.keys(UMLSymbols)];
@@ -602,7 +609,10 @@ function clearSelectedCells(element) {
602
609
  }
603
610
 
604
611
  function getCellsWithPoints(board, element) {
605
- const table = board.buildTable(element);
612
+ const table = board?.buildTable(element);
613
+ if (!table || !table.points || !table.columns || !table.rows) {
614
+ throw new Error('can not get table cells points');
615
+ }
606
616
  const rectangle = RectangleClient.getRectangleByPoints(table.points);
607
617
  const columnsCount = table.columns.length;
608
618
  const rowsCount = table.rows.length;
@@ -634,9 +644,14 @@ function getCellsWithPoints(board, element) {
634
644
  return cells;
635
645
  }
636
646
  function getCellWithPoints(board, table, cellId) {
637
- const cells = getCellsWithPoints(board, table);
638
- const cellIndex = table.cells.findIndex(item => item.id === cellId);
639
- return cells[cellIndex];
647
+ try {
648
+ const cells = getCellsWithPoints(board, table);
649
+ const cellIndex = cells && table.cells.findIndex(item => item.id === cellId);
650
+ return cells[cellIndex];
651
+ }
652
+ catch (error) {
653
+ throw new Error('can not get table cell points');
654
+ }
640
655
  }
641
656
  function calculateCellsSize(items, tableSize, count, isWidth) {
642
657
  const cellSizes = [];
@@ -1187,6 +1202,15 @@ const isDrawElementsIncludeText = (elements) => {
1187
1202
  return isDrawElementIncludeText(item);
1188
1203
  });
1189
1204
  };
1205
+ const isDrawElementClosed = (element) => {
1206
+ if (PlaitDrawElement.isText(element) || PlaitDrawElement.isArrowLine(element) || PlaitDrawElement.isImage(element)) {
1207
+ return false;
1208
+ }
1209
+ if (PlaitDrawElement.isGeometry(element)) {
1210
+ return isGeometryClosed(element);
1211
+ }
1212
+ return true;
1213
+ };
1190
1214
  const getSnappingShape = (board, point) => {
1191
1215
  let hitElement = getHitShape(board, point);
1192
1216
  if (hitElement) {
@@ -1241,7 +1265,7 @@ const drawBoundReaction = (board, element, roughOptions = { hasMask: true, hasCo
1241
1265
  const maskG = drawShape(board, activeRectangle, shape, {
1242
1266
  stroke: SELECTION_BORDER_COLOR,
1243
1267
  strokeWidth: 0,
1244
- fill: SELECTION_FILL_COLOR,
1268
+ fill: isDrawElementClosed(element) ? SELECTION_FILL_COLOR : DefaultDrawStyle.fill,
1245
1269
  fillStyle: 'solid'
1246
1270
  }, drawOptions);
1247
1271
  g.appendChild(maskG);
@@ -1289,7 +1313,9 @@ const getStrokeColorByElement = (board, element) => {
1289
1313
  return strokeColor;
1290
1314
  };
1291
1315
  const getFillByElement = (board, element) => {
1292
- const defaultFill = PlaitDrawElement.isFlowchart(element) ? getFlowchartDefaultFill(board.theme.themeColorMode) : DefaultDrawStyle.fill;
1316
+ const defaultFill = PlaitDrawElement.isFlowchart(element) && isDrawElementClosed(element)
1317
+ ? getFlowchartDefaultFill(board.theme.themeColorMode)
1318
+ : DefaultDrawStyle.fill;
1293
1319
  const fill = element.fill || defaultFill;
1294
1320
  return fill;
1295
1321
  };
@@ -1298,7 +1324,7 @@ const getLineDashByElement = (element) => {
1298
1324
  case StrokeStyle.dashed:
1299
1325
  return [8, 8 + getStrokeWidthByElement(element)];
1300
1326
  case StrokeStyle.dotted:
1301
- return [0, 4 + getStrokeWidthByElement(element)];
1327
+ return [2, 4 + getStrokeWidthByElement(element)];
1302
1328
  default:
1303
1329
  return undefined;
1304
1330
  }
@@ -2306,6 +2332,9 @@ const isSingleTextShape = (shape) => {
2306
2332
  const isSingleTextGeometry = (element) => {
2307
2333
  return PlaitDrawElement.isGeometry(element) && isSingleTextShape(element.shape);
2308
2334
  };
2335
+ const isGeometryClosed = (element) => {
2336
+ return !GEOMETRY_NOT_CLOSED.includes(element.shape);
2337
+ };
2309
2338
 
2310
2339
  const isSelfLoop = (element) => {
2311
2340
  return element.source.boundId && element.source.boundId === element.target.boundId;
@@ -2439,126 +2468,11 @@ const getSelectedSwimlane = (board) => {
2439
2468
  return selectedElements.find(item => PlaitDrawElement.isSwimlane(item));
2440
2469
  };
2441
2470
 
2442
- const resizeArrowLine = (board, options, path) => {
2443
- Transforms.setNode(board, options, path);
2444
- };
2445
- const setArrowLineTexts = (board, element, texts) => {
2446
- const path = PlaitBoard.findPath(board, element);
2447
- Transforms.setNode(board, { texts }, path);
2448
- };
2449
- const removeArrowLineText = (board, element, index) => {
2450
- const path = PlaitBoard.findPath(board, element);
2451
- const texts = element.texts?.length ? [...element.texts] : [];
2452
- const newTexts = [...texts];
2453
- newTexts.splice(index, 1);
2454
- Transforms.setNode(board, { texts: newTexts }, path);
2455
- };
2456
- const setArrowLineMark = (board, handleKey, marker) => {
2457
- memorizeLatest(MemorizeKey.arrowLine, handleKey, marker);
2458
- const selectedElements = getSelectedArrowLineElements(board);
2459
- selectedElements.forEach((element) => {
2460
- const path = PlaitBoard.findPath(board, element);
2461
- let handle = handleKey === ArrowLineHandleKey.source ? element.source : element.target;
2462
- handle = { ...handle, marker };
2463
- Transforms.setNode(board, { [handleKey]: handle }, path);
2464
- });
2465
- };
2466
- const setArrowLineShape = (board, newProperties) => {
2467
- const elements = getSelectedArrowLineElements(board);
2468
- elements.map(element => {
2469
- const _properties = { ...newProperties };
2470
- if (element.shape === newProperties.shape) {
2471
- return;
2472
- }
2473
- const path = PlaitBoard.findPath(board, element);
2474
- Transforms.setNode(board, _properties, path);
2475
- });
2476
- };
2477
- const collectArrowLineUpdatedRefsByGeometry = (board, geometry, refs) => {
2478
- const lines = findElements(board, {
2479
- match: (element) => {
2480
- if (PlaitDrawElement.isArrowLine(element)) {
2481
- return element.source.boundId === geometry.id || element.target.boundId === geometry.id;
2482
- }
2483
- return false;
2484
- },
2485
- recursion: element => true
2486
- });
2487
- if (lines.length) {
2488
- lines.forEach(line => {
2489
- const isSourceBound = line.source.boundId === geometry.id;
2490
- const handle = isSourceBound ? 'source' : 'target';
2491
- const object = { ...line[handle] };
2492
- const linePoints = getArrowLinePoints(board, line);
2493
- const point = isSourceBound ? linePoints[0] : linePoints[linePoints.length - 1];
2494
- object.connection = getHitConnection(board, point, geometry);
2495
- const path = PlaitBoard.findPath(board, line);
2496
- const index = refs.findIndex(obj => Path.equals(obj.path, path));
2497
- if (index === -1) {
2498
- refs.push({
2499
- property: {
2500
- [handle]: object
2501
- },
2502
- path
2503
- });
2504
- }
2505
- else {
2506
- refs[index].property = { ...refs[index].property, [handle]: object };
2507
- }
2508
- });
2509
- }
2510
- };
2511
- const connectArrowLineToGeometry = (board, lineElement, handle, geometryElement) => {
2512
- const linePoints = PlaitArrowLine.getPoints(board, lineElement);
2513
- const point = handle === ArrowLineHandleKey.source ? linePoints[0] : linePoints[linePoints.length - 1];
2514
- const connection = getHitConnection(board, point, geometryElement);
2515
- if (connection) {
2516
- let source = lineElement.source;
2517
- let target = lineElement.target;
2518
- if (handle === ArrowLineHandleKey.source) {
2519
- source = {
2520
- ...source,
2521
- boundId: geometryElement.id,
2522
- connection
2523
- };
2524
- }
2525
- else {
2526
- target = {
2527
- ...target,
2528
- boundId: geometryElement.id,
2529
- connection
2530
- };
2531
- }
2532
- const path = PlaitBoard.findPath(board, lineElement);
2533
- resizeArrowLine(board, { source, target }, path);
2534
- }
2535
- };
2536
-
2537
2471
  const insertGeometry = (board, points, shape) => {
2538
2472
  const newElement = createDefaultGeometry(board, points, shape);
2539
2473
  insertElement(board, newElement);
2540
2474
  return newElement;
2541
2475
  };
2542
- const insertGeometryByVector = (board, point, shape, vector) => {
2543
- const shapeProperty = DefaultFlowchartPropertyMap[shape] ||
2544
- DefaultBasicShapePropertyMap[shape] ||
2545
- DefaultUMLPropertyMap[shape] ||
2546
- DefaultBasicShapeProperty;
2547
- const direction = getDirectionByVector(vector);
2548
- if (direction) {
2549
- let offset = 0;
2550
- if ([Direction.left, Direction.right].includes(direction)) {
2551
- offset = -shapeProperty.width / 2;
2552
- }
2553
- else {
2554
- offset = -shapeProperty.height / 2;
2555
- }
2556
- const vectorPoint = getPointByVectorComponent(point, vector, offset);
2557
- const points = RectangleClient.getPoints(RectangleClient.getRectangleByCenterPoint(vectorPoint, shapeProperty.width, shapeProperty.height));
2558
- return insertGeometry(board, points, shape);
2559
- }
2560
- return null;
2561
- };
2562
2476
  const insertText = (board, point, text) => {
2563
2477
  const memorizedLatest = getMemorizedLatestByPointer(BasicShapes.text);
2564
2478
  const property = getTextShapeProperty(board, text, memorizedLatest.textProperties['font-size']);
@@ -2668,6 +2582,67 @@ const insertImage = (board, imageItem, startPoint) => {
2668
2582
  Transforms.addSelectionWithTemporaryElements(board, [imageElement]);
2669
2583
  };
2670
2584
 
2585
+ const resizeArrowLine = (board, options, path) => {
2586
+ Transforms.setNode(board, options, path);
2587
+ };
2588
+ const setArrowLineTexts = (board, element, texts) => {
2589
+ const path = PlaitBoard.findPath(board, element);
2590
+ Transforms.setNode(board, { texts }, path);
2591
+ };
2592
+ const removeArrowLineText = (board, element, index) => {
2593
+ const path = PlaitBoard.findPath(board, element);
2594
+ const texts = element.texts?.length ? [...element.texts] : [];
2595
+ const newTexts = [...texts];
2596
+ newTexts.splice(index, 1);
2597
+ Transforms.setNode(board, { texts: newTexts }, path);
2598
+ };
2599
+ const setArrowLineMark = (board, handleKey, marker) => {
2600
+ memorizeLatest(MemorizeKey.arrowLine, handleKey, marker);
2601
+ const selectedElements = getSelectedArrowLineElements(board);
2602
+ selectedElements.forEach((element) => {
2603
+ const path = PlaitBoard.findPath(board, element);
2604
+ let handle = handleKey === ArrowLineHandleKey.source ? element.source : element.target;
2605
+ handle = { ...handle, marker };
2606
+ Transforms.setNode(board, { [handleKey]: handle }, path);
2607
+ });
2608
+ };
2609
+ const setArrowLineShape = (board, newProperties) => {
2610
+ const elements = getSelectedArrowLineElements(board);
2611
+ elements.map(element => {
2612
+ const _properties = { ...newProperties };
2613
+ if (element.shape === newProperties.shape) {
2614
+ return;
2615
+ }
2616
+ const path = PlaitBoard.findPath(board, element);
2617
+ Transforms.setNode(board, _properties, path);
2618
+ });
2619
+ };
2620
+ const connectArrowLineToDraw = (board, lineElement, handle, geometryElement) => {
2621
+ const linePoints = PlaitArrowLine.getPoints(board, lineElement);
2622
+ const point = handle === ArrowLineHandleKey.source ? linePoints[0] : linePoints[linePoints.length - 1];
2623
+ const connection = getHitConnection(board, point, geometryElement);
2624
+ if (connection) {
2625
+ let source = lineElement.source;
2626
+ let target = lineElement.target;
2627
+ if (handle === ArrowLineHandleKey.source) {
2628
+ source = {
2629
+ ...source,
2630
+ boundId: geometryElement.id,
2631
+ connection
2632
+ };
2633
+ }
2634
+ else {
2635
+ target = {
2636
+ ...target,
2637
+ boundId: geometryElement.id,
2638
+ connection
2639
+ };
2640
+ }
2641
+ const path = PlaitBoard.findPath(board, lineElement);
2642
+ resizeArrowLine(board, { source, target }, path);
2643
+ }
2644
+ };
2645
+
2671
2646
  function buildSwimlaneTable(element) {
2672
2647
  const swimlaneElement = { ...element };
2673
2648
  if (PlaitDrawElement.isHorizontalSwimlane(element)) {
@@ -2784,6 +2759,9 @@ const adjustSwimlaneShape = (shape) => {
2784
2759
  ? SwimlaneSymbols.swimlaneHorizontal
2785
2760
  : SwimlaneSymbols.swimlaneVertical;
2786
2761
  };
2762
+ const isSwimlanePointers = (board) => {
2763
+ return PlaitBoard.isInPointer(board, getSwimlanePointers());
2764
+ };
2787
2765
 
2788
2766
  const updateSwimlaneCount = (board, swimlane, count) => {
2789
2767
  if (count > 0 && PlaitDrawElement.isSwimlane(swimlane)) {
@@ -3026,6 +3004,37 @@ const setTableFill = (board, element, fill, path) => {
3026
3004
  Transforms.setNode(board, { cells: newCells }, path);
3027
3005
  };
3028
3006
 
3007
+ const insertDrawByVector = (board, point, shape, vector) => {
3008
+ const swimlanePointers = getSwimlanePointers();
3009
+ const isSwimlanePointer = swimlanePointers.includes(shape);
3010
+ let shapeProperty = DefaultFlowchartPropertyMap[shape] ||
3011
+ DefaultBasicShapePropertyMap[shape] ||
3012
+ DefaultUMLPropertyMap[shape] ||
3013
+ DefaultBasicShapeProperty;
3014
+ if (isSwimlanePointer) {
3015
+ shapeProperty = DefaultSwimlanePropertyMap[shape];
3016
+ }
3017
+ const direction = getDirectionByVector(vector);
3018
+ if (direction) {
3019
+ let offset = 0;
3020
+ if ([Direction.left, Direction.right].includes(direction)) {
3021
+ offset = -shapeProperty.width / 2;
3022
+ }
3023
+ else {
3024
+ offset = -shapeProperty.height / 2;
3025
+ }
3026
+ const vectorPoint = getPointByVectorComponent(point, vector, offset);
3027
+ const points = RectangleClient.getPoints(RectangleClient.getRectangleByCenterPoint(vectorPoint, shapeProperty.width, shapeProperty.height));
3028
+ if (isSwimlanePointer) {
3029
+ const swimlane = createDefaultSwimlane(shape, points);
3030
+ insertElement(board, swimlane);
3031
+ return swimlane;
3032
+ }
3033
+ return insertGeometry(board, points, shape);
3034
+ }
3035
+ return null;
3036
+ };
3037
+
3029
3038
  const DrawTransforms = {
3030
3039
  setText,
3031
3040
  setDrawShapeText,
@@ -3039,16 +3048,16 @@ const DrawTransforms = {
3039
3048
  setArrowLineMark,
3040
3049
  setArrowLineShape,
3041
3050
  insertImage,
3051
+ connectArrowLineToDraw,
3042
3052
  switchGeometryShape,
3043
- connectArrowLineToGeometry,
3044
- insertGeometryByVector,
3045
3053
  setTableText,
3046
3054
  addSwimlaneRow,
3047
3055
  addSwimlaneColumn,
3048
3056
  removeSwimlaneRow,
3049
3057
  removeSwimlaneColumn,
3050
3058
  updateSwimlaneCount,
3051
- setTableFill
3059
+ setTableFill,
3060
+ insertDrawByVector
3052
3061
  };
3053
3062
 
3054
3063
  const getHitRectangleResizeHandleRef = (board, rectangle, point, angle = 0) => {
@@ -3694,7 +3703,9 @@ function createEllipseEngine(createOptions) {
3694
3703
  draw(board, rectangle, options) {
3695
3704
  const centerPoint = [rectangle.x + rectangle.width / 2, rectangle.y + rectangle.height / 2];
3696
3705
  const rs = PlaitBoard.getRoughSVG(board);
3697
- return rs.ellipse(centerPoint[0], centerPoint[1], rectangle.width, rectangle.height, { ...options, fillStyle: 'solid' });
3706
+ const shape = rs.ellipse(centerPoint[0], centerPoint[1], rectangle.width, rectangle.height, { ...options, fillStyle: 'solid' });
3707
+ setStrokeLinecap(shape, 'round');
3708
+ return shape;
3698
3709
  },
3699
3710
  isInsidePoint(rectangle, point) {
3700
3711
  const centerPoint = [rectangle.x + rectangle.width / 2, rectangle.y + rectangle.height / 2];
@@ -4037,7 +4048,9 @@ const RoundCommentEngine = {
4037
4048
  const point9 = [x1 + rectangle.width / 4, y2];
4038
4049
  const point10 = [x1 + rectangle.width / 4, rectangle.y + rectangle.height];
4039
4050
  const point11 = [x1 + rectangle.width / 2, y2];
4040
- return rs.path(`M${point2[0]} ${point2[1]} A ${radius} ${radius}, 0, 0, 1, ${point3[0]} ${point3[1]} L ${point4[0]} ${point4[1]} A ${radius} ${radius}, 0, 0, 1, ${point5[0]} ${point5[1]} L ${point11[0]} ${point11[1]} ${point10[0]} ${point10[1]} ${point9[0]} ${point9[1]} ${point6[0]} ${point6[1]} A ${radius} ${radius}, 0, 0, 1, ${point7[0]} ${point7[1]} L ${point8[0]} ${point8[1]} A ${radius} ${radius}, 0, 0, 1, ${point1[0]} ${point1[1]} Z`, { ...options, fillStyle: 'solid' });
4051
+ const shape = rs.path(`M${point2[0]} ${point2[1]} A ${radius} ${radius}, 0, 0, 1, ${point3[0]} ${point3[1]} L ${point4[0]} ${point4[1]} A ${radius} ${radius}, 0, 0, 1, ${point5[0]} ${point5[1]} L ${point11[0]} ${point11[1]} ${point10[0]} ${point10[1]} ${point9[0]} ${point9[1]} ${point6[0]} ${point6[1]} A ${radius} ${radius}, 0, 0, 1, ${point7[0]} ${point7[1]} L ${point8[0]} ${point8[1]} A ${radius} ${radius}, 0, 0, 1, ${point1[0]} ${point1[1]} Z`, { ...options, fillStyle: 'solid' });
4052
+ setStrokeLinecap(shape, 'round');
4053
+ return shape;
4041
4054
  },
4042
4055
  isInsidePoint(rectangle, point) {
4043
4056
  const points = [
@@ -4621,13 +4634,15 @@ const OrEngine = createEllipseEngine({
4621
4634
  const rx = rectangle.width / 2;
4622
4635
  const ry = rectangle.height / 2;
4623
4636
  const startPoint = [rectangle.x + rectangle.width, rectangle.y + rectangle.height / 2];
4624
- return rs.path(`M${startPoint[0]} ${startPoint[1]}
4637
+ const shape = rs.path(`M${startPoint[0]} ${startPoint[1]}
4625
4638
  A${rx},${ry} 0 1,1 ${startPoint[0]} ${startPoint[1] - 0.01}
4626
4639
  M${rectangle.x} ${rectangle.y + rectangle.height / 2}
4627
4640
  L${rectangle.x + rectangle.width} ${rectangle.y + rectangle.height / 2}
4628
4641
  M${rectangle.x + rectangle.width / 2} ${rectangle.y}
4629
4642
  L${rectangle.x + rectangle.width / 2} ${rectangle.y + rectangle.height}
4630
4643
  `, { ...options, fillStyle: 'solid' });
4644
+ setStrokeLinecap(shape, 'round');
4645
+ return shape;
4631
4646
  }
4632
4647
  });
4633
4648
 
@@ -4640,13 +4655,15 @@ const SummingJunctionEngine = createEllipseEngine({
4640
4655
  const centerPoint = [rectangle.x + rectangle.width / 2, rectangle.y + rectangle.height / 2];
4641
4656
  const line1Points = getCrossingPointsBetweenEllipseAndSegment([rectangle.x, rectangle.y], [rectangle.x + rectangle.width, rectangle.y + rectangle.height], centerPoint[0], centerPoint[1], rx, ry);
4642
4657
  const line2Points = getCrossingPointsBetweenEllipseAndSegment([rectangle.x + rectangle.width, rectangle.y], [rectangle.x, rectangle.y + rectangle.height], centerPoint[0], centerPoint[1], rx, ry);
4643
- return rs.path(`M${startPoint[0]} ${startPoint[1]}
4658
+ const shape = rs.path(`M${startPoint[0]} ${startPoint[1]}
4644
4659
  A${rx},${ry} 0 1,1 ${startPoint[0]} ${startPoint[1] - 0.01}
4645
4660
  M${line1Points[0][0]} ${line1Points[0][1]}
4646
4661
  L${line1Points[1][0]} ${line1Points[1][1]}
4647
4662
  M${line2Points[0][0]} ${line2Points[0][1]}
4648
4663
  L${line2Points[1][0]} ${line2Points[1][1]}
4649
4664
  `, { ...options, fillStyle: 'solid' });
4665
+ setStrokeLinecap(shape, 'round');
4666
+ return shape;
4650
4667
  }
4651
4668
  });
4652
4669
 
@@ -5269,27 +5286,34 @@ const DisplayEngine = {
5269
5286
 
5270
5287
  const TableEngine = {
5271
5288
  draw(board, rectangle, roughOptions, options) {
5272
- const rs = PlaitBoard.getRoughSVG(board);
5273
5289
  const g = createG();
5274
- const { x, y, width, height } = rectangle;
5275
- const tableTopBorder = drawLine(rs, [x, y], [x + width, y], roughOptions);
5276
- const tableLeftBorder = drawLine(rs, [x, y], [x, y + height], roughOptions);
5277
- g.append(tableTopBorder, tableLeftBorder);
5278
- const pointCells = getCellsWithPoints(board, { ...options?.element });
5279
- pointCells.forEach(cell => {
5280
- const rectangle = RectangleClient.getRectangleByPoints(cell.points);
5281
- const { x, y, width, height } = rectangle;
5282
- const cellRectangle = drawRectangle(board, {
5283
- x: x + ACTIVE_STROKE_WIDTH,
5284
- y: y + ACTIVE_STROKE_WIDTH,
5285
- width: width - ACTIVE_STROKE_WIDTH * 2,
5286
- height: height - ACTIVE_STROKE_WIDTH * 2
5287
- }, { fill: cell.fill, fillStyle: 'solid', strokeWidth: 0 });
5288
- const cellRightBorder = drawLine(rs, [x + width, y], [x + width, y + height], roughOptions);
5289
- const cellBottomBorder = drawLine(rs, [x, y + height], [x + width, y + height], roughOptions);
5290
- g.append(cellRectangle, cellRightBorder, cellBottomBorder);
5291
- });
5292
- setStrokeLinecap(g, 'round');
5290
+ try {
5291
+ const pointCells = getCellsWithPoints(board, { ...options?.element });
5292
+ if (pointCells) {
5293
+ const rs = PlaitBoard.getRoughSVG(board);
5294
+ const { x, y, width, height } = rectangle;
5295
+ const tableTopBorder = drawLine(rs, [x, y], [x + width, y], roughOptions);
5296
+ const tableLeftBorder = drawLine(rs, [x, y], [x, y + height], roughOptions);
5297
+ g.append(tableTopBorder, tableLeftBorder);
5298
+ pointCells.forEach(cell => {
5299
+ const rectangle = RectangleClient.getRectangleByPoints(cell.points);
5300
+ const { x, y, width, height } = rectangle;
5301
+ const cellRectangle = drawRectangle(board, {
5302
+ x: x + ACTIVE_STROKE_WIDTH,
5303
+ y: y + ACTIVE_STROKE_WIDTH,
5304
+ width: width - ACTIVE_STROKE_WIDTH * 2,
5305
+ height: height - ACTIVE_STROKE_WIDTH * 2
5306
+ }, { fill: cell.fill, fillStyle: 'solid', strokeWidth: 0 });
5307
+ const cellRightBorder = drawLine(rs, [x + width, y], [x + width, y + height], roughOptions);
5308
+ const cellBottomBorder = drawLine(rs, [x, y + height], [x + width, y + height], roughOptions);
5309
+ g.append(cellRectangle, cellRightBorder, cellBottomBorder);
5310
+ });
5311
+ setStrokeLinecap(g, 'round');
5312
+ }
5313
+ }
5314
+ catch (error) {
5315
+ console.error(error);
5316
+ }
5293
5317
  return g;
5294
5318
  },
5295
5319
  isInsidePoint(rectangle, point) {
@@ -5306,13 +5330,28 @@ const TableEngine = {
5306
5330
  return RectangleClient.getEdgeCenterPoints(rectangle);
5307
5331
  },
5308
5332
  getTextRectangle(element, options) {
5309
- const cell = getCellWithPoints(options?.board, element, options.key);
5310
- if (PlaitTableElement.isVerticalText(cell)) {
5311
- return getVerticalTextRectangle(cell);
5333
+ try {
5334
+ if (options && options.key) {
5335
+ const cell = getCellWithPoints(options?.board, element, options.key);
5336
+ if (cell) {
5337
+ if (PlaitTableElement.isVerticalText(cell)) {
5338
+ return getVerticalTextRectangle(cell);
5339
+ }
5340
+ else {
5341
+ return getHorizontalTextRectangle(cell);
5342
+ }
5343
+ }
5344
+ }
5312
5345
  }
5313
- else {
5314
- return getHorizontalTextRectangle(cell);
5346
+ catch (error) {
5347
+ console.error(error);
5315
5348
  }
5349
+ return {
5350
+ x: 0,
5351
+ y: 0,
5352
+ width: 0,
5353
+ height: 0
5354
+ };
5316
5355
  }
5317
5356
  };
5318
5357
  function getVerticalTextRectangle(cell) {
@@ -5613,6 +5652,7 @@ const DeletionEngine = {
5613
5652
  const shape = rs.path(`M${rectangle.x} ${rectangle.y} L${rectangle.x + rectangle.width} ${rectangle.y + rectangle.height}
5614
5653
  M${rectangle.x + rectangle.width} ${rectangle.y} L${rectangle.x} ${rectangle.y + rectangle.height}
5615
5654
  `, { ...options, fillStyle: 'solid', strokeWidth: 4 });
5655
+ setStrokeLinecap(shape, 'round');
5616
5656
  return shape;
5617
5657
  },
5618
5658
  isInsidePoint(rectangle, point) {
@@ -6220,6 +6260,40 @@ const getElbowLineRouteOptions = (board, element, handleRefPair) => {
6220
6260
  targetOuterRectangle
6221
6261
  };
6222
6262
  };
6263
+ const collectArrowLineUpdatedRefsByGeometry = (board, element, refs) => {
6264
+ const lines = findElements(board, {
6265
+ match: (element) => {
6266
+ if (PlaitDrawElement.isArrowLine(element)) {
6267
+ return element.source.boundId === element.id || element.target.boundId === element.id;
6268
+ }
6269
+ return false;
6270
+ },
6271
+ recursion: element => true
6272
+ });
6273
+ if (lines.length) {
6274
+ lines.forEach(line => {
6275
+ const isSourceBound = line.source.boundId === element.id;
6276
+ const handle = isSourceBound ? 'source' : 'target';
6277
+ const object = { ...line[handle] };
6278
+ const linePoints = getArrowLinePoints(board, line);
6279
+ const point = isSourceBound ? linePoints[0] : linePoints[linePoints.length - 1];
6280
+ object.connection = getHitConnection(board, point, element);
6281
+ const path = PlaitBoard.findPath(board, line);
6282
+ const index = refs.findIndex(obj => Path.equals(obj.path, path));
6283
+ if (index === -1) {
6284
+ refs.push({
6285
+ property: {
6286
+ [handle]: object
6287
+ },
6288
+ path
6289
+ });
6290
+ }
6291
+ else {
6292
+ refs[index].property = { ...refs[index].property, [handle]: object };
6293
+ }
6294
+ });
6295
+ }
6296
+ };
6223
6297
 
6224
6298
  var ArrowLineMarkerType;
6225
6299
  (function (ArrowLineMarkerType) {
@@ -8203,12 +8277,21 @@ const withTable = (board) => {
8203
8277
  const selectedElements = getSelectedElements(board);
8204
8278
  const isSingleSelection = selectedElements.length === 1;
8205
8279
  const targetElement = selectedElements[0];
8206
- if (!PlaitBoard.isReadonly(board) && !isVirtualKey(event) && !isDelete(event) && !isSpaceHotkey(event) && isSingleSelection) {
8280
+ if (!PlaitBoard.isReadonly(board) &&
8281
+ !PlaitBoard.hasBeenTextEditing(tableBoard) &&
8282
+ !isVirtualKey(event) &&
8283
+ !isDelete(event) &&
8284
+ !isSpaceHotkey(event) &&
8285
+ isSingleSelection) {
8207
8286
  event.preventDefault();
8208
8287
  if (PlaitDrawElement.isElementByTable(targetElement)) {
8209
- const firstTextCell = targetElement.cells.find(item => item.text && item.textHeight);
8210
- if (firstTextCell) {
8211
- editCell(firstTextCell);
8288
+ const cells = getSelectedCells(targetElement);
8289
+ let cell = targetElement.cells.find(item => item.text && item.textHeight);
8290
+ if (cells?.length) {
8291
+ cell = cells.find(item => item.text && item.textHeight);
8292
+ }
8293
+ if (cell) {
8294
+ editCell(cell);
8212
8295
  return;
8213
8296
  }
8214
8297
  }
@@ -8254,14 +8337,12 @@ const withTable = (board) => {
8254
8337
  };
8255
8338
 
8256
8339
  const isSwimlaneDndMode = (board) => {
8257
- const swimlanePointers = getSwimlanePointers();
8258
- const isSwimlanePointer = PlaitBoard.isInPointer(board, swimlanePointers);
8340
+ const isSwimlanePointer = isSwimlanePointers(board);
8259
8341
  const dndMode = isSwimlanePointer && isDndMode(board);
8260
8342
  return dndMode;
8261
8343
  };
8262
8344
  const isSwimlaneDrawingMode = (board) => {
8263
- const swimlanePointers = getSwimlanePointers();
8264
- const isSwimlanePointer = PlaitBoard.isInPointer(board, swimlanePointers);
8345
+ const isSwimlanePointer = isSwimlanePointers(board);
8265
8346
  const drawingMode = isSwimlanePointer && isDrawingMode(board);
8266
8347
  return drawingMode;
8267
8348
  };
@@ -8506,5 +8587,5 @@ const withDraw = (board) => {
8506
8587
  * Generated bundle index. Do not edit.
8507
8588
  */
8508
8589
 
8509
- export { ArrowLineActiveGenerator, ArrowLineAutoCompleteGenerator, ArrowLineComponent, ArrowLineHandleKey, ArrowLineMarkerType, ArrowLineShape, BasicShapes, DEFAULT_IMAGE_WIDTH, DefaultActivationProperty, DefaultActorProperty, DefaultArrowProperty, DefaultAssemblyProperty, DefaultBasicShapeProperty, DefaultBasicShapePropertyMap, DefaultClassProperty, DefaultCloudProperty, DefaultCombinedFragmentProperty, DefaultComponentBoxProperty, DefaultConnectorProperty, DefaultContainerProperty, DefaultDataBaseProperty, DefaultDataProperty, DefaultDecisionProperty, DefaultDeletionProperty, DefaultDocumentProperty, DefaultDrawActiveStyle, DefaultDrawStyle, DefaultFlowchartProperty, DefaultFlowchartPropertyMap, DefaultInterfaceProperty, DefaultInternalStorageProperty, DefaultManualInputProperty, DefaultMergeProperty, DefaultMultiDocumentProperty, DefaultNoteProperty, DefaultObjectProperty, DefaultPackageProperty, DefaultPentagonArrowProperty, DefaultPortProperty, DefaultProvidedInterfaceProperty, DefaultRequiredInterfaceProperty, DefaultSwimlaneHorizontalProperty, DefaultSwimlaneHorizontalWithHeaderProperty, DefaultSwimlanePropertyMap, DefaultSwimlaneVerticalProperty, DefaultSwimlaneVerticalWithHeaderProperty, DefaultTextProperty, DefaultTwoWayArrowProperty, DefaultUMLPropertyMap, DrawThemeColors, DrawTransforms, FlowchartSymbols, GEOMETRY_WITHOUT_TEXT, GEOMETRY_WITH_MULTIPLE_TEXT, GeometryComponent, GeometryShapeGenerator, GeometryThreshold, KEY_TO_TEXT_MANAGE, LINE_HIT_GEOMETRY_BUFFER, LINE_SNAPPING_BUFFER, LINE_SNAPPING_CONNECTOR_BUFFER, MIN_TEXT_WIDTH, MemorizeKey, MultipleTextGeometryCommonTextKeys, MultipleTextGeometryTextKeys, PlaitArrowLine, PlaitDrawElement, PlaitGeometry, PlaitTableElement, Q2C, SELECTED_CELLS, SWIMLANE_HEADER_SIZE, ShapeDefaultSpace, SingleTextGenerator, StrokeStyle, SwimlaneDrawSymbols, SwimlaneSymbols, TableGenerator, TableSymbols, TextGenerator, UMLSymbols, VectorLineShape, WithArrowLineAutoCompletePluginKey, adjustSwimlaneShape, alignElbowSegment, alignPoints, buildDefaultTextsByShape, buildSwimlaneTable, clearSelectedCells, createArrowLineElement, createCell, createDefaultCells, createDefaultFlowchart, createDefaultGeometry, createDefaultRowsOrColumns, createDefaultSwimlane, createGeometryElement, createGeometryElementWithText, createGeometryElementWithoutText, createMultipleTextGeometryElement, createTextElement, createUMLClassOrInterfaceGeometryElement, debugGenerator$1 as debugGenerator, deleteTextManage, drawArrowLine, drawArrowLineArrow, drawBoundReaction, drawGeometry, drawShape, editCell, editText, getArrowLineHandleRefPair, getArrowLinePointers, getArrowLinePoints, getArrowLineTextRectangle, getArrowLines, getAutoCompletePoints, getBasicPointers, getCellWithPoints, getCellsRectangle, getCellsWithPoints, getCenterPointsOnPolygon$1 as getCenterPointsOnPolygon, getConnectionPoint, getCurvePoints, getDefaultBasicShapeProperty, getDefaultFlowchartProperty, getDefaultGeometryPoints, getDefaultGeometryProperty, getDefaultSwimlanePoints, getDefaultTextPoints, getDefaultUMLProperty, getDrawDefaultStrokeColor, getDrawHitElement, getElbowLineRouteOptions, getElbowPoints, getFillByElement, getFirstFilledDrawElement, getFirstTextOrLineElement, getFlowchartDefaultFill, getFlowchartPointers, getGeometryAlign, getGeometryPointers, getHitCell, getHitConnection, getHitConnectorPoint, getHitIndexOfAutoCompletePoint, getHitMultipleGeometryText, getHitShape, getIndexAndDeleteCountByKeyPoint, getLineDashByElement, getLineMemorizedLatest, getMemorizeKey, getMemorizedLatestByPointer, getMemorizedLatestShape, getMidKeyPoints, getMiddlePoints, getMirrorDataPoints, getMultipleTextGeometryTextKeys, getNearestPoint, getNextRenderPoints, getNextSourceAndTargetPoints, getResizedPreviousAndNextPoint, getSelectedArrowLineElements, getSelectedCells, getSelectedDrawElements, getSelectedGeometryElements, getSelectedImageElements, getSelectedSwimlane, getSelectedTableCellsEditor, getSelectedTableElements, getSnapResizingRef, getSnapResizingRefOptions, getSnappingRef, getSnappingShape, getSourceAndTargetRectangle, getStrokeColorByElement, getStrokeStyleByElement, getStrokeWidthByElement, getSwimlaneCount, getSwimlanePointers, getTextKey, getTextManage, getTextManageByCell, getTextRectangle, getTextShapeProperty, getUMLPointers, getVectorByConnection, handleArrowLineCreating, hasIllegalElbowPoint, insertElement, isCellIncludeText, isDrawElementIncludeText, isDrawElementsIncludeText, isGeometryIncludeText, isHitArrowLine, isHitArrowLineText, isHitDrawElement, isHitEdgeOfShape, isHitElementInside, isHitElementText, isHitPolyLine, isInsideOfShape, isMultipleTextGeometry, isMultipleTextShape, isRectangleHitDrawElement, isRectangleHitElementText, isSelfLoop, isSingleSelectElementByTable, isSingleSelectSwimlane, isSingleSelectTable, isSingleTextGeometry, isSingleTextShape, isSwimlaneWithHeader, isTextExceedingBounds, isUpdatedHandleIndex, isUseDefaultOrthogonalRoute, memorizeLatestShape, memorizeLatestText, rerenderGeometryActive, setSelectedCells, setTextManage, traverseDrawShapes, updateCellIds, updateCellIdsByRowOrColumn, updateColumns, updateRowOrColumnIds, updateRows, withArrowLineAutoComplete, withDraw };
8590
+ export { ArrowLineActiveGenerator, ArrowLineAutoCompleteGenerator, ArrowLineComponent, ArrowLineHandleKey, ArrowLineMarkerType, ArrowLineShape, BasicShapes, DEFAULT_IMAGE_WIDTH, DefaultActivationProperty, DefaultActorProperty, DefaultArrowProperty, DefaultAssemblyProperty, DefaultBasicShapeProperty, DefaultBasicShapePropertyMap, DefaultClassProperty, DefaultCloudProperty, DefaultCombinedFragmentProperty, DefaultComponentBoxProperty, DefaultConnectorProperty, DefaultContainerProperty, DefaultDataBaseProperty, DefaultDataProperty, DefaultDecisionProperty, DefaultDeletionProperty, DefaultDocumentProperty, DefaultDrawActiveStyle, DefaultDrawStyle, DefaultFlowchartProperty, DefaultFlowchartPropertyMap, DefaultInterfaceProperty, DefaultInternalStorageProperty, DefaultManualInputProperty, DefaultMergeProperty, DefaultMultiDocumentProperty, DefaultNoteProperty, DefaultObjectProperty, DefaultPackageProperty, DefaultPentagonArrowProperty, DefaultPortProperty, DefaultProvidedInterfaceProperty, DefaultRequiredInterfaceProperty, DefaultSwimlaneHorizontalProperty, DefaultSwimlaneHorizontalWithHeaderProperty, DefaultSwimlanePropertyMap, DefaultSwimlaneVerticalProperty, DefaultSwimlaneVerticalWithHeaderProperty, DefaultTextProperty, DefaultTwoWayArrowProperty, DefaultUMLPropertyMap, DrawThemeColors, DrawTransforms, FlowchartSymbols, GEOMETRY_NOT_CLOSED, GEOMETRY_WITHOUT_TEXT, GEOMETRY_WITH_MULTIPLE_TEXT, GeometryComponent, GeometryShapeGenerator, GeometryThreshold, KEY_TO_TEXT_MANAGE, LINE_HIT_GEOMETRY_BUFFER, LINE_SNAPPING_BUFFER, LINE_SNAPPING_CONNECTOR_BUFFER, MIN_TEXT_WIDTH, MemorizeKey, MultipleTextGeometryCommonTextKeys, MultipleTextGeometryTextKeys, PlaitArrowLine, PlaitDrawElement, PlaitGeometry, PlaitTableElement, Q2C, SELECTED_CELLS, SWIMLANE_HEADER_SIZE, ShapeDefaultSpace, SingleTextGenerator, StrokeStyle, SwimlaneDrawSymbols, SwimlaneSymbols, TableGenerator, TableSymbols, TextGenerator, UMLSymbols, VectorLineShape, WithArrowLineAutoCompletePluginKey, adjustSwimlaneShape, alignElbowSegment, alignPoints, buildDefaultTextsByShape, buildSwimlaneTable, clearSelectedCells, collectArrowLineUpdatedRefsByGeometry, createArrowLineElement, createCell, createDefaultCells, createDefaultFlowchart, createDefaultGeometry, createDefaultRowsOrColumns, createDefaultSwimlane, createGeometryElement, createGeometryElementWithText, createGeometryElementWithoutText, createMultipleTextGeometryElement, createTextElement, createUMLClassOrInterfaceGeometryElement, debugGenerator$1 as debugGenerator, deleteTextManage, drawArrowLine, drawArrowLineArrow, drawBoundReaction, drawGeometry, drawShape, editCell, editText, getArrowLineHandleRefPair, getArrowLinePointers, getArrowLinePoints, getArrowLineTextRectangle, getArrowLines, getAutoCompletePoints, getBasicPointers, getCellWithPoints, getCellsRectangle, getCellsWithPoints, getCenterPointsOnPolygon$1 as getCenterPointsOnPolygon, getConnectionPoint, getCurvePoints, getDefaultBasicShapeProperty, getDefaultFlowchartProperty, getDefaultGeometryPoints, getDefaultGeometryProperty, getDefaultSwimlanePoints, getDefaultTextPoints, getDefaultUMLProperty, getDrawDefaultStrokeColor, getDrawHitElement, getElbowLineRouteOptions, getElbowPoints, getFillByElement, getFirstFilledDrawElement, getFirstTextOrLineElement, getFlowchartDefaultFill, getFlowchartPointers, getGeometryAlign, getGeometryPointers, getHitCell, getHitConnection, getHitConnectorPoint, getHitIndexOfAutoCompletePoint, getHitMultipleGeometryText, getHitShape, getIndexAndDeleteCountByKeyPoint, getLineDashByElement, getLineMemorizedLatest, getMemorizeKey, getMemorizedLatestByPointer, getMemorizedLatestShape, getMidKeyPoints, getMiddlePoints, getMirrorDataPoints, getMultipleTextGeometryTextKeys, getNearestPoint, getNextRenderPoints, getNextSourceAndTargetPoints, getResizedPreviousAndNextPoint, getSelectedArrowLineElements, getSelectedCells, getSelectedDrawElements, getSelectedGeometryElements, getSelectedImageElements, getSelectedSwimlane, getSelectedTableCellsEditor, getSelectedTableElements, getSnapResizingRef, getSnapResizingRefOptions, getSnappingRef, getSnappingShape, getSourceAndTargetRectangle, getStrokeColorByElement, getStrokeStyleByElement, getStrokeWidthByElement, getSwimlaneCount, getSwimlanePointers, getTextKey, getTextManage, getTextManageByCell, getTextRectangle, getTextShapeProperty, getUMLPointers, getVectorByConnection, handleArrowLineCreating, hasIllegalElbowPoint, insertElement, isCellIncludeText, isDrawElementClosed, isDrawElementIncludeText, isDrawElementsIncludeText, isGeometryClosed, isGeometryIncludeText, isHitArrowLine, isHitArrowLineText, isHitDrawElement, isHitEdgeOfShape, isHitElementInside, isHitElementText, isHitPolyLine, isInsideOfShape, isMultipleTextGeometry, isMultipleTextShape, isRectangleHitDrawElement, isRectangleHitElementText, isSelfLoop, isSingleSelectElementByTable, isSingleSelectSwimlane, isSingleSelectTable, isSingleTextGeometry, isSingleTextShape, isSwimlanePointers, isSwimlaneWithHeader, isTextExceedingBounds, isUpdatedHandleIndex, isUseDefaultOrthogonalRoute, memorizeLatestShape, memorizeLatestText, rerenderGeometryActive, setSelectedCells, setTextManage, traverseDrawShapes, updateCellIds, updateCellIdsByRowOrColumn, updateColumns, updateRowOrColumnIds, updateRows, withArrowLineAutoComplete, withDraw };
8510
8591
  //# sourceMappingURL=plait-draw.mjs.map