@plait/draw 0.77.3 → 0.78.0-next.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.
Files changed (154) hide show
  1. package/fesm2022/plait-draw.mjs +2 -2
  2. package/fesm2022/plait-draw.mjs.map +1 -1
  3. package/package.json +1 -3
  4. package/esm2022/arrow-line.component.mjs +0 -165
  5. package/esm2022/constants/default.mjs +0 -7
  6. package/esm2022/constants/geometry.mjs +0 -272
  7. package/esm2022/constants/image.mjs +0 -2
  8. package/esm2022/constants/index.mjs +0 -9
  9. package/esm2022/constants/line.mjs +0 -12
  10. package/esm2022/constants/pointer.mjs +0 -23
  11. package/esm2022/constants/swimlane.mjs +0 -25
  12. package/esm2022/constants/text.mjs +0 -2
  13. package/esm2022/constants/theme.mjs +0 -28
  14. package/esm2022/engines/basic-shapes/cloud.mjs +0 -146
  15. package/esm2022/engines/basic-shapes/comment.mjs +0 -56
  16. package/esm2022/engines/basic-shapes/cross.mjs +0 -33
  17. package/esm2022/engines/basic-shapes/diamond.mjs +0 -16
  18. package/esm2022/engines/basic-shapes/ellipse.mjs +0 -53
  19. package/esm2022/engines/basic-shapes/hexagon.mjs +0 -27
  20. package/esm2022/engines/basic-shapes/left-arrow.mjs +0 -30
  21. package/esm2022/engines/basic-shapes/octagon.mjs +0 -29
  22. package/esm2022/engines/basic-shapes/parallelogram.mjs +0 -26
  23. package/esm2022/engines/basic-shapes/pentagon-arrow.mjs +0 -27
  24. package/esm2022/engines/basic-shapes/pentagon.mjs +0 -30
  25. package/esm2022/engines/basic-shapes/polygon.mjs +0 -56
  26. package/esm2022/engines/basic-shapes/process-arrow.mjs +0 -26
  27. package/esm2022/engines/basic-shapes/rectangle.mjs +0 -26
  28. package/esm2022/engines/basic-shapes/right-arrow.mjs +0 -28
  29. package/esm2022/engines/basic-shapes/round-comment.mjs +0 -82
  30. package/esm2022/engines/basic-shapes/round-rectangle.mjs +0 -58
  31. package/esm2022/engines/basic-shapes/star.mjs +0 -39
  32. package/esm2022/engines/basic-shapes/trapezoid.mjs +0 -26
  33. package/esm2022/engines/basic-shapes/triangle.mjs +0 -34
  34. package/esm2022/engines/basic-shapes/two-way-arrow.mjs +0 -25
  35. package/esm2022/engines/flowchart/database.mjs +0 -84
  36. package/esm2022/engines/flowchart/delay.mjs +0 -44
  37. package/esm2022/engines/flowchart/display.mjs +0 -74
  38. package/esm2022/engines/flowchart/document.mjs +0 -81
  39. package/esm2022/engines/flowchart/hard-disk.mjs +0 -84
  40. package/esm2022/engines/flowchart/internal-storage.mjs +0 -47
  41. package/esm2022/engines/flowchart/manual-input.mjs +0 -33
  42. package/esm2022/engines/flowchart/manual-loop.mjs +0 -26
  43. package/esm2022/engines/flowchart/merge.mjs +0 -34
  44. package/esm2022/engines/flowchart/multi-document.mjs +0 -143
  45. package/esm2022/engines/flowchart/note-curly-left.mjs +0 -86
  46. package/esm2022/engines/flowchart/note-curly-right.mjs +0 -89
  47. package/esm2022/engines/flowchart/note-square.mjs +0 -46
  48. package/esm2022/engines/flowchart/off-page.mjs +0 -32
  49. package/esm2022/engines/flowchart/or.mjs +0 -20
  50. package/esm2022/engines/flowchart/predefined-process.mjs +0 -47
  51. package/esm2022/engines/flowchart/preparation.mjs +0 -27
  52. package/esm2022/engines/flowchart/stored-data.mjs +0 -79
  53. package/esm2022/engines/flowchart/summing-junction.mjs +0 -23
  54. package/esm2022/engines/flowchart/terminal.mjs +0 -68
  55. package/esm2022/engines/index.mjs +0 -130
  56. package/esm2022/engines/table/table.mjs +0 -101
  57. package/esm2022/engines/uml/activity-class.mjs +0 -47
  58. package/esm2022/engines/uml/actor.mjs +0 -119
  59. package/esm2022/engines/uml/assembly.mjs +0 -105
  60. package/esm2022/engines/uml/combined-fragment.mjs +0 -66
  61. package/esm2022/engines/uml/component-box.mjs +0 -61
  62. package/esm2022/engines/uml/component.mjs +0 -117
  63. package/esm2022/engines/uml/container.mjs +0 -44
  64. package/esm2022/engines/uml/deletion.mjs +0 -54
  65. package/esm2022/engines/uml/note.mjs +0 -58
  66. package/esm2022/engines/uml/package.mjs +0 -105
  67. package/esm2022/engines/uml/provided-interface.mjs +0 -92
  68. package/esm2022/engines/uml/required-interface.mjs +0 -81
  69. package/esm2022/engines/uml/template.mjs +0 -47
  70. package/esm2022/generators/arrow-line-auto-complete.generator.mjs +0 -46
  71. package/esm2022/generators/arrow-line.generator.mjs +0 -13
  72. package/esm2022/generators/geometry-shape.generator.mjs +0 -29
  73. package/esm2022/generators/index.mjs +0 -7
  74. package/esm2022/generators/line-active.generator.mjs +0 -84
  75. package/esm2022/generators/single-text.generator.mjs +0 -16
  76. package/esm2022/generators/table.generator.mjs +0 -25
  77. package/esm2022/generators/text.generator.mjs +0 -131
  78. package/esm2022/generators/vector-line-generator.mjs +0 -13
  79. package/esm2022/geometry.component.mjs +0 -145
  80. package/esm2022/image.component.mjs +0 -67
  81. package/esm2022/interfaces/arrow-line.mjs +0 -70
  82. package/esm2022/interfaces/element.mjs +0 -9
  83. package/esm2022/interfaces/engine.mjs +0 -2
  84. package/esm2022/interfaces/geometry.mjs +0 -82
  85. package/esm2022/interfaces/image.mjs +0 -2
  86. package/esm2022/interfaces/index.mjs +0 -92
  87. package/esm2022/interfaces/line.mjs +0 -2
  88. package/esm2022/interfaces/options.mjs +0 -2
  89. package/esm2022/interfaces/swimlane.mjs +0 -13
  90. package/esm2022/interfaces/table.mjs +0 -13
  91. package/esm2022/interfaces/text.mjs +0 -2
  92. package/esm2022/interfaces/vector-line.mjs +0 -10
  93. package/esm2022/plait-draw.mjs +0 -5
  94. package/esm2022/plugins/with-arrow-line-auto-complete-reaction.mjs +0 -43
  95. package/esm2022/plugins/with-arrow-line-auto-complete.mjs +0 -76
  96. package/esm2022/plugins/with-arrow-line-bound-reaction.mjs +0 -53
  97. package/esm2022/plugins/with-arrow-line-create.mjs +0 -51
  98. package/esm2022/plugins/with-arrow-line-resize.mjs +0 -158
  99. package/esm2022/plugins/with-arrow-line-text-move.mjs +0 -53
  100. package/esm2022/plugins/with-arrow-line-text.mjs +0 -73
  101. package/esm2022/plugins/with-draw-fragment.mjs +0 -98
  102. package/esm2022/plugins/with-draw-hotkey.mjs +0 -45
  103. package/esm2022/plugins/with-draw-resize.mjs +0 -269
  104. package/esm2022/plugins/with-draw-rotate.mjs +0 -132
  105. package/esm2022/plugins/with-draw.mjs +0 -144
  106. package/esm2022/plugins/with-geometry-create.mjs +0 -182
  107. package/esm2022/plugins/with-swimlane-create.mjs +0 -127
  108. package/esm2022/plugins/with-swimlane.mjs +0 -21
  109. package/esm2022/plugins/with-table-resize.mjs +0 -135
  110. package/esm2022/plugins/with-table.mjs +0 -109
  111. package/esm2022/plugins/with-vector-line-create.mjs +0 -85
  112. package/esm2022/plugins/with-vector-line-resize.mjs +0 -61
  113. package/esm2022/public-api.mjs +0 -11
  114. package/esm2022/table.component.mjs +0 -162
  115. package/esm2022/transforms/arrow-line.mjs +0 -66
  116. package/esm2022/transforms/common.mjs +0 -36
  117. package/esm2022/transforms/geometry-text.mjs +0 -59
  118. package/esm2022/transforms/geometry.mjs +0 -43
  119. package/esm2022/transforms/image.mjs +0 -33
  120. package/esm2022/transforms/index.mjs +0 -36
  121. package/esm2022/transforms/multi-text-geometry-text.mjs +0 -15
  122. package/esm2022/transforms/swimlane.mjs +0 -164
  123. package/esm2022/transforms/table-text.mjs +0 -44
  124. package/esm2022/transforms/table.mjs +0 -36
  125. package/esm2022/transforms/vector-line.mjs +0 -13
  126. package/esm2022/utils/arrow-line/arrow-line-arrow.mjs +0 -123
  127. package/esm2022/utils/arrow-line/arrow-line-basic.mjs +0 -205
  128. package/esm2022/utils/arrow-line/arrow-line-common.mjs +0 -162
  129. package/esm2022/utils/arrow-line/arrow-line-resize.mjs +0 -309
  130. package/esm2022/utils/arrow-line/elbow.mjs +0 -114
  131. package/esm2022/utils/arrow-line/index.mjs +0 -6
  132. package/esm2022/utils/clipboard.mjs +0 -55
  133. package/esm2022/utils/common.mjs +0 -184
  134. package/esm2022/utils/geometry.mjs +0 -178
  135. package/esm2022/utils/hit.mjs +0 -238
  136. package/esm2022/utils/index.mjs +0 -17
  137. package/esm2022/utils/line.mjs +0 -64
  138. package/esm2022/utils/memorize.mjs +0 -93
  139. package/esm2022/utils/multi-text-geometry.mjs +0 -61
  140. package/esm2022/utils/polygon.mjs +0 -30
  141. package/esm2022/utils/position/arrow-line.mjs +0 -20
  142. package/esm2022/utils/position/geometry.mjs +0 -30
  143. package/esm2022/utils/position/line.mjs +0 -51
  144. package/esm2022/utils/selected.mjs +0 -39
  145. package/esm2022/utils/shape.mjs +0 -11
  146. package/esm2022/utils/snap-resizing.mjs +0 -185
  147. package/esm2022/utils/style/index.mjs +0 -2
  148. package/esm2022/utils/style/stroke.mjs +0 -21
  149. package/esm2022/utils/swimlane.mjs +0 -124
  150. package/esm2022/utils/table-selected.mjs +0 -21
  151. package/esm2022/utils/table.mjs +0 -172
  152. package/esm2022/utils/uml.mjs +0 -90
  153. package/esm2022/utils/vector-line.mjs +0 -71
  154. package/esm2022/vector-line.component.mjs +0 -55
@@ -1,101 +0,0 @@
1
- import { PlaitBoard, RectangleClient, createG, drawLine, setStrokeLinecap, drawRectangle, ACTIVE_STROKE_WIDTH } from '@plait/core';
2
- import { getCellsWithPoints, getCellWithPoints } from '../../utils/table';
3
- import { PlaitTableElement } from '../../interfaces/table';
4
- import { getStrokeWidthByElement } from '../../utils';
5
- import { ShapeDefaultSpace } from '../../constants';
6
- import { getNearestPointBetweenPointAndRoundRectangle, getRoundRectangleRadius } from '../basic-shapes/round-rectangle';
7
- export const TableEngine = {
8
- draw(board, rectangle, roughOptions, options) {
9
- const g = createG();
10
- try {
11
- const pointCells = getCellsWithPoints(board, { ...options?.element });
12
- if (pointCells) {
13
- const rs = PlaitBoard.getRoughSVG(board);
14
- const { x, y, width, height } = rectangle;
15
- const tableTopBorder = drawLine(rs, [x, y], [x + width, y], roughOptions);
16
- const tableLeftBorder = drawLine(rs, [x, y], [x, y + height], roughOptions);
17
- g.append(tableTopBorder, tableLeftBorder);
18
- pointCells.forEach(cell => {
19
- const rectangle = RectangleClient.getRectangleByPoints(cell.points);
20
- const { x, y, width, height } = rectangle;
21
- const cellRectangle = drawRectangle(board, {
22
- x: x + ACTIVE_STROKE_WIDTH,
23
- y: y + ACTIVE_STROKE_WIDTH,
24
- width: width - ACTIVE_STROKE_WIDTH * 2,
25
- height: height - ACTIVE_STROKE_WIDTH * 2
26
- }, { fill: cell.fill, fillStyle: 'solid', strokeWidth: 0 });
27
- const cellRightBorder = drawLine(rs, [x + width, y], [x + width, y + height], roughOptions);
28
- const cellBottomBorder = drawLine(rs, [x, y + height], [x + width, y + height], roughOptions);
29
- g.append(cellRectangle, cellRightBorder, cellBottomBorder);
30
- });
31
- setStrokeLinecap(g, 'round');
32
- }
33
- }
34
- catch (error) {
35
- console.error(error);
36
- }
37
- return g;
38
- },
39
- isInsidePoint(rectangle, point) {
40
- const rangeRectangle = RectangleClient.getRectangleByPoints([point, point]);
41
- return RectangleClient.isHit(rectangle, rangeRectangle);
42
- },
43
- getCornerPoints(rectangle) {
44
- return RectangleClient.getCornerPoints(rectangle);
45
- },
46
- getNearestPoint(rectangle, point) {
47
- return getNearestPointBetweenPointAndRoundRectangle(point, rectangle, getRoundRectangleRadius(rectangle));
48
- },
49
- getConnectorPoints(rectangle) {
50
- return RectangleClient.getEdgeCenterPoints(rectangle);
51
- },
52
- getTextRectangle(element, options) {
53
- try {
54
- if (options && options.id) {
55
- const cell = getCellWithPoints(options?.board, element, options.id);
56
- if (cell) {
57
- if (PlaitTableElement.isVerticalText(cell)) {
58
- return getVerticalTextRectangle(cell);
59
- }
60
- else {
61
- return getHorizontalTextRectangle(cell);
62
- }
63
- }
64
- }
65
- }
66
- catch (error) {
67
- console.error(error);
68
- }
69
- return {
70
- x: 0,
71
- y: 0,
72
- width: 0,
73
- height: 0
74
- };
75
- }
76
- };
77
- export function getVerticalTextRectangle(cell) {
78
- const cellRectangle = RectangleClient.getRectangleByPoints(cell.points);
79
- const strokeWidth = getStrokeWidthByElement(cell);
80
- const height = cell.textHeight || 0;
81
- const width = cellRectangle.height - ShapeDefaultSpace.rectangleAndText * 2 - strokeWidth * 2;
82
- return {
83
- width: width > 0 ? width : 0,
84
- height,
85
- x: cellRectangle.x - width / 2 + cellRectangle.width / 2,
86
- y: cellRectangle.y + (cellRectangle.height - height) / 2
87
- };
88
- }
89
- export function getHorizontalTextRectangle(cell) {
90
- const cellRectangle = RectangleClient.getRectangleByPoints(cell.points);
91
- const strokeWidth = getStrokeWidthByElement(cell);
92
- const height = cell.textHeight || 0;
93
- const width = cellRectangle.width - ShapeDefaultSpace.rectangleAndText * 2 - strokeWidth * 2;
94
- return {
95
- height,
96
- width: width > 0 ? width : 0,
97
- x: cellRectangle.x + ShapeDefaultSpace.rectangleAndText + strokeWidth,
98
- y: cellRectangle.y + (cellRectangle.height - height) / 2
99
- };
100
- }
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9lbmdpbmVzL3RhYmxlL3RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFTLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTFJLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzFFLE9BQU8sRUFBK0QsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4SCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLDRDQUE0QyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFeEgsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFpRTtJQUNyRixJQUFJLENBQUMsS0FBaUIsRUFBRSxTQUEwQixFQUFFLFlBQXFCLEVBQUUsT0FBK0I7UUFDdEcsTUFBTSxDQUFDLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDO1lBQ0QsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsT0FBTyxFQUFnQixDQUFDLENBQUM7WUFDcEYsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDYixNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN6QyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDO2dCQUMxQyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMs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LENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsTUFBTTtRQUNOLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLEtBQUssR0FBRyxDQUFDO1FBQ3hELENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO0tBQzNELENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLElBQThCO0lBQ3JFLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEUsTUFBTSxXQUFXLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUM7SUFDcEMsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUM3RixPQUFPO1FBQ0gsTUFBTTtRQUNOLEtBQUssRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsV0FBVztRQUNyRSxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztLQUMzRCxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFJlY3RhbmdsZUNsaWVudCwgUG9pbnQsIGNyZWF0ZUcsIGRyYXdMaW5lLCBzZXRTdHJva2VMaW5lY2FwLCBkcmF3UmVjdGFuZ2xlLCBBQ1RJVkVfU1RST0tFX1dJRFRIIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgZ2V0Q2VsbHNXaXRoUG9pbnRzLCBnZXRDZWxsV2l0aFBvaW50cyB9IGZyb20gJy4uLy4uL3V0aWxzL3RhYmxlJztcbmltcG9ydCB7IFNoYXBlRW5naW5lIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBEcmF3VGV4dEluZm8gfSBmcm9tICcuLi8uLi9nZW5lcmF0b3JzL3RleHQuZ2VuZXJhdG9yJztcbmltcG9ydCB7IFBsYWl0VGFibGUsIFBsYWl0VGFibGVDZWxsV2l0aFBvaW50cywgUGxhaXRUYWJsZURyYXdPcHRpb25zLCBQbGFpdFRhYmxlRWxlbWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdGFibGUnO1xuaW1wb3J0IHsgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBTaGFwZURlZmF1bHRTcGFjZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRSb3VuZFJlY3RhbmdsZSwgZ2V0Um91bmRSZWN0YW5nbGVSYWRpdXMgfSBmcm9tICcuLi9iYXNpYy1zaGFwZXMvcm91bmQtcmVjdGFuZ2xlJztcblxuZXhwb3J0IGNvbnN0IFRhYmxlRW5naW5lOiBTaGFwZUVuZ2luZTxQbGFpdFRhYmxlLCBQbGFpdFRhYmxlRHJhd09wdGlvbnMsIERyYXdUZXh0SW5mbz4gPSB7XG4gICAgZHJhdyhib2FyZDogUGxhaXRCb2FyZCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHJvdWdoT3B0aW9uczogT3B0aW9ucywgb3B0aW9ucz86IFBsYWl0VGFibGVEcmF3T3B0aW9ucykge1xuICAgICAgICBjb25zdCBnID0gY3JlYXRlRygpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcG9pbnRDZWxscyA9IGdldENlbGxzV2l0aFBvaW50cyhib2FyZCwgeyAuLi5vcHRpb25zPy5lbGVtZW50IH0gYXMgUGxhaXRUYWJsZSk7XG4gICAgICAgICAgICBpZiAocG9pbnRDZWxscykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJzID0gUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCk7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0gPSByZWN0YW5nbGU7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFibGVUb3BCb3JkZXIgPSBkcmF3TGluZShycywgW3gsIHldLCBbeCArIHdpZHRoLCB5XSwgcm91Z2hPcHRpb25zKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YWJsZUxlZnRCb3JkZXIgPSBkcmF3TGluZShycywgW3gsIHldLCBbeCwgeSArIGhlaWdodF0sIHJvdWdoT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgZy5hcHBlbmQodGFibGVUb3BCb3JkZXIsIHRhYmxlTGVmdEJvcmRlcik7XG4gICAgICAgICAgICAgICAgcG9pbnRDZWxscy5mb3JFYWNoKGNlbGwgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoY2VsbC5wb2ludHMhKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0gPSByZWN0YW5nbGU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxSZWN0YW5nbGUgPSBkcmF3UmVjdGFuZ2xlKFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogeCArIEFDVElWRV9TVFJPS0VfV0lEVEgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogeSArIEFDVElWRV9TVFJPS0VfV0lEVEgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoIC0gQUNUSVZFX1NUUk9LRV9XSURUSCAqIDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQgLSBBQ1RJVkVfU1RST0tFX1dJRFRIICogMlxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgZmlsbDogY2VsbC5maWxsLCBmaWxsU3R5bGU6ICdzb2xpZCcsIHN0cm9rZVdpZHRoOiAwIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VsbFJpZ2h0Qm9yZGVyID0gZHJhd0xpbmUocnMsIFt4ICsgd2lkdGgsIHldLCBbeCArIHdpZHRoLCB5ICsgaGVpZ2h0XSwgcm91Z2hPcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VsbEJvdHRvbUJvcmRlciA9IGRyYXdMaW5lKHJzLCBbeCwgeSArIGhlaWdodF0sIFt4ICsgd2lkdGgsIHkgKyBoZWlnaHRdLCByb3VnaE9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICBnLmFwcGVuZChjZWxsUmVjdGFuZ2xlLCBjZWxsUmlnaHRCb3JkZXIsIGNlbGxCb3R0b21Cb3JkZXIpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHNldFN0cm9rZUxpbmVjYXAoZywgJ3JvdW5kJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZztcbiAgICB9LFxuICAgIGlzSW5zaWRlUG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkge1xuICAgICAgICBjb25zdCByYW5nZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbcG9pbnQsIHBvaW50XSk7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuaXNIaXQocmVjdGFuZ2xlLCByYW5nZVJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICB9LFxuICAgIGdldE5lYXJlc3RQb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIHJldHVybiBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRSb3VuZFJlY3RhbmdsZShwb2ludCwgcmVjdGFuZ2xlLCBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyhyZWN0YW5nbGUpKTtcbiAgICB9LFxuICAgIGdldENvbm5lY3RvclBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldEVkZ2VDZW50ZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICB9LFxuICAgIGdldFRleHRSZWN0YW5nbGUoZWxlbWVudDogUGxhaXRUYWJsZSwgb3B0aW9ucz86IERyYXdUZXh0SW5mbykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5pZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGwgPSBnZXRDZWxsV2l0aFBvaW50cyhvcHRpb25zPy5ib2FyZCEsIGVsZW1lbnQsIG9wdGlvbnMhLmlkKTtcbiAgICAgICAgICAgICAgICBpZiAoY2VsbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoUGxhaXRUYWJsZUVsZW1lbnQuaXNWZXJ0aWNhbFRleHQoY2VsbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRWZXJ0aWNhbFRleHRSZWN0YW5nbGUoY2VsbCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SG9yaXpvbnRhbFRleHRSZWN0YW5nbGUoY2VsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICAgIGhlaWdodDogMFxuICAgICAgICB9O1xuICAgIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJ0aWNhbFRleHRSZWN0YW5nbGUoY2VsbDogUGxhaXRUYWJsZUNlbGxXaXRoUG9pbnRzKSB7XG4gICAgY29uc3QgY2VsbFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhjZWxsLnBvaW50cyk7XG4gICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChjZWxsKTtcbiAgICBjb25zdCBoZWlnaHQgPSBjZWxsLnRleHRIZWlnaHQgfHwgMDtcbiAgICBjb25zdCB3aWR0aCA9IGNlbGxSZWN0YW5nbGUuaGVpZ2h0IC0gU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCAqIDIgLSBzdHJva2VXaWR0aCAqIDI7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IHdpZHRoID4gMCA/IHdpZHRoIDogMCxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICB4OiBjZWxsUmVjdGFuZ2xlLnggLSB3aWR0aCAvIDIgKyBjZWxsUmVjdGFuZ2xlLndpZHRoIC8gMixcbiAgICAgICAgeTogY2VsbFJlY3RhbmdsZS55ICsgKGNlbGxSZWN0YW5nbGUuaGVpZ2h0IC0gaGVpZ2h0KSAvIDJcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SG9yaXpvbnRhbFRleHRSZWN0YW5nbGUoY2VsbDogUGxhaXRUYWJsZUNlbGxXaXRoUG9pbnRzKSB7XG4gICAgY29uc3QgY2VsbFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhjZWxsLnBvaW50cyk7XG4gICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChjZWxsKTtcbiAgICBjb25zdCBoZWlnaHQgPSBjZWxsLnRleHRIZWlnaHQgfHwgMDtcbiAgICBjb25zdCB3aWR0aCA9IGNlbGxSZWN0YW5nbGUud2lkdGggLSBTaGFwZURlZmF1bHRTcGFjZS5yZWN0YW5nbGVBbmRUZXh0ICogMiAtIHN0cm9rZVdpZHRoICogMjtcbiAgICByZXR1cm4ge1xuICAgICAgICBoZWlnaHQsXG4gICAgICAgIHdpZHRoOiB3aWR0aCA+IDAgPyB3aWR0aCA6IDAsXG4gICAgICAgIHg6IGNlbGxSZWN0YW5nbGUueCArIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKyBzdHJva2VXaWR0aCxcbiAgICAgICAgeTogY2VsbFJlY3RhbmdsZS55ICsgKGNlbGxSZWN0YW5nbGUuaGVpZ2h0IC0gaGVpZ2h0KSAvIDJcbiAgICB9O1xufVxuIl19
@@ -1,47 +0,0 @@
1
- import { PlaitBoard, RectangleClient, getNearestPointBetweenPointAndSegments, setStrokeLinecap } from '@plait/core';
2
- import { RectangleEngine } from '../basic-shapes/rectangle';
3
- import { getPolygonEdgeByConnectionPoint } from '../../utils/polygon';
4
- import { getStrokeWidthByElement } from '../../utils';
5
- import { ShapeDefaultSpace } from '../../constants';
6
- export const ActiveClassEngine = {
7
- draw(board, rectangle, options) {
8
- const rs = PlaitBoard.getRoughSVG(board);
9
- const shape = rs.path(`M${rectangle.x} ${rectangle.y} H${rectangle.x + rectangle.width} V${rectangle.y + rectangle.height} H${rectangle.x} Z M${rectangle.x + rectangle.width * 0.125} ${rectangle.y} L${rectangle.x + rectangle.width * 0.125} ${rectangle.y +
10
- rectangle.height} M${rectangle.x + rectangle.width - rectangle.width * 0.125} ${rectangle.y} L${rectangle.x +
11
- rectangle.width -
12
- rectangle.width * 0.125} ${rectangle.y + rectangle.height}`, { ...options, fillStyle: 'solid' });
13
- setStrokeLinecap(shape, 'round');
14
- return shape;
15
- },
16
- isInsidePoint(rectangle, point) {
17
- const rangeRectangle = RectangleClient.getRectangleByPoints([point, point]);
18
- return RectangleClient.isHit(rectangle, rangeRectangle);
19
- },
20
- getCornerPoints(rectangle) {
21
- return RectangleClient.getCornerPoints(rectangle);
22
- },
23
- getNearestPoint(rectangle, point) {
24
- return getNearestPointBetweenPointAndSegments(point, RectangleEngine.getCornerPoints(rectangle));
25
- },
26
- getEdgeByConnectionPoint(rectangle, pointOfRectangle) {
27
- const corners = RectangleEngine.getCornerPoints(rectangle);
28
- const point = RectangleClient.getConnectionPoint(rectangle, pointOfRectangle);
29
- return getPolygonEdgeByConnectionPoint(corners, point);
30
- },
31
- getConnectorPoints(rectangle) {
32
- return RectangleClient.getEdgeCenterPoints(rectangle);
33
- },
34
- getTextRectangle: (element) => {
35
- const elementRectangle = RectangleClient.getRectangleByPoints(element.points);
36
- const strokeWidth = getStrokeWidthByElement(element);
37
- const height = element.textHeight;
38
- const width = elementRectangle.width - ShapeDefaultSpace.rectangleAndText * 2 - strokeWidth * 2 - elementRectangle.width * 0.125 * 2;
39
- return {
40
- height,
41
- width: width > 0 ? width : 0,
42
- x: elementRectangle.x + ShapeDefaultSpace.rectangleAndText + strokeWidth + elementRectangle.width * 0.125,
43
- y: elementRectangle.y + (elementRectangle.height - height) / 2
44
- };
45
- }
46
- };
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9lbmdpbmVzL3VtbC9hY3Rpdml0eS1jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUdWLGVBQWUsRUFDZixzQ0FBc0MsRUFDdEMsZ0JBQWdCLEVBQ25CLE1BQU0sYUFBYSxDQUFDO0FBR3JCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFcEQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQWdCO0lBQzFDLElBQUksQ0FBQyxLQUFpQixFQUFFLFNBQTBCLEVBQUUsT0FBZ0I7UUFDaEUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxDQUNqQixJQUFJLFNBQVMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxLQUMvRixTQUFTLENBQUMsQ0FDZCxPQUFPLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxLQUFLLElBQUksU0FBUyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxJQUFJLFNBQVMsQ0FBQyxDQUFDO1lBQ2hILFNBQVMsQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxJQUFJLFNBQVMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUM7WUFDM0csU0FBUyxDQUFDLEtBQUs7WUFDZixTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssSUFBSSxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFDL0QsRUFBRSxHQUFHLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQ3JDLENBQUM7UUFDRixnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFakMsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUNELGFBQWEsQ0FBQyxTQUEwQixFQUFFLEtBQVk7UUFDbEQsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDNUUsT0FBTyxlQUFlLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBQ0QsZUFBZSxDQUFDLFNBQTBCO1FBQ3RDLE9BQU8sZUFBZSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsZUFBZSxDQUFDLFNBQTBCLEVBQUUsS0FBWTtRQUNwRCxPQUFPLHNDQUFzQyxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUNELHdCQUF3QixDQUFDLFNBQTBCLEVBQUUsZ0JBQWtDO1FBQ25GLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0QsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzlFLE9BQU8sK0JBQStCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxTQUEwQjtRQUN6QyxPQUFPLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsZ0JBQWdCLEVBQUUsQ0FBQyxPQUFzQixFQUFFLEVBQUU7UUFDekMsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLE1BQU8sQ0FBQyxDQUFDO1FBQy9FLE1BQU0sV0FBVyxHQUFHLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFXLENBQUM7UUFDbkMsTUFBTSxLQUFLLEdBQ1AsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLGlCQUFpQixDQUFDLGdCQUFnQixHQUFHLENBQUMsR0FBRyxXQUFXLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQzNILE9BQU87WUFDSCxNQUFNO1lBQ04sS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QixDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLGdCQUFnQixHQUFHLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsS0FBSztZQUN6RyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7U0FDakUsQ0FBQztJQUNOLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBvaW50LFxuICAgIFBvaW50T2ZSZWN0YW5nbGUsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzLFxuICAgIHNldFN0cm9rZUxpbmVjYXBcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRHZW9tZXRyeSwgU2hhcGVFbmdpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IFJlY3RhbmdsZUVuZ2luZSB9IGZyb20gJy4uL2Jhc2ljLXNoYXBlcy9yZWN0YW5nbGUnO1xuaW1wb3J0IHsgZ2V0UG9seWdvbkVkZ2VCeUNvbm5lY3Rpb25Qb2ludCB9IGZyb20gJy4uLy4uL3V0aWxzL3BvbHlnb24nO1xuaW1wb3J0IHsgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBTaGFwZURlZmF1bHRTcGFjZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjb25zdCBBY3RpdmVDbGFzc0VuZ2luZTogU2hhcGVFbmdpbmUgPSB7XG4gICAgZHJhdyhib2FyZDogUGxhaXRCb2FyZCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcnMgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKTtcbiAgICAgICAgY29uc3Qgc2hhcGUgPSBycy5wYXRoKFxuICAgICAgICAgICAgYE0ke3JlY3RhbmdsZS54fSAke3JlY3RhbmdsZS55fSBIJHtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aH0gViR7cmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0fSBIJHtcbiAgICAgICAgICAgICAgICByZWN0YW5nbGUueFxuICAgICAgICAgICAgfSBaIE0ke3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoICogMC4xMjV9ICR7cmVjdGFuZ2xlLnl9IEwke3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoICogMC4xMjV9ICR7cmVjdGFuZ2xlLnkgK1xuICAgICAgICAgICAgICAgIHJlY3RhbmdsZS5oZWlnaHR9IE0ke3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoIC0gcmVjdGFuZ2xlLndpZHRoICogMC4xMjV9ICR7cmVjdGFuZ2xlLnl9IEwke3JlY3RhbmdsZS54ICtcbiAgICAgICAgICAgICAgICByZWN0YW5nbGUud2lkdGggLVxuICAgICAgICAgICAgICAgIHJlY3RhbmdsZS53aWR0aCAqIDAuMTI1fSAke3JlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodH1gLFxuICAgICAgICAgICAgeyAuLi5vcHRpb25zLCBmaWxsU3R5bGU6ICdzb2xpZCcgfVxuICAgICAgICApO1xuICAgICAgICBzZXRTdHJva2VMaW5lY2FwKHNoYXBlLCAncm91bmQnKTtcblxuICAgICAgICByZXR1cm4gc2hhcGU7XG4gICAgfSxcbiAgICBpc0luc2lkZVBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgY29uc3QgcmFuZ2VSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3BvaW50LCBwb2ludF0pO1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHJlY3RhbmdsZSwgcmFuZ2VSZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXROZWFyZXN0UG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkge1xuICAgICAgICByZXR1cm4gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMocG9pbnQsIFJlY3RhbmdsZUVuZ2luZS5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKSk7XG4gICAgfSxcbiAgICBnZXRFZGdlQnlDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50T2ZSZWN0YW5nbGU6IFBvaW50T2ZSZWN0YW5nbGUpOiBbUG9pbnQsIFBvaW50XSB8IG51bGwge1xuICAgICAgICBjb25zdCBjb3JuZXJzID0gUmVjdGFuZ2xlRW5naW5lLmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpO1xuICAgICAgICBjb25zdCBwb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBwb2ludE9mUmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIGdldFBvbHlnb25FZGdlQnlDb25uZWN0aW9uUG9pbnQoY29ybmVycywgcG9pbnQpO1xuICAgIH0sXG4gICAgZ2V0Q29ubmVjdG9yUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0RWRnZUNlbnRlclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIH0sXG5cbiAgICBnZXRUZXh0UmVjdGFuZ2xlOiAoZWxlbWVudDogUGxhaXRHZW9tZXRyeSkgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50UmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzISk7XG4gICAgICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQudGV4dEhlaWdodCE7XG4gICAgICAgIGNvbnN0IHdpZHRoID1cbiAgICAgICAgICAgIGVsZW1lbnRSZWN0YW5nbGUud2lkdGggLSBTaGFwZURlZmF1bHRTcGFjZS5yZWN0YW5nbGVBbmRUZXh0ICogMiAtIHN0cm9rZVdpZHRoICogMiAtIGVsZW1lbnRSZWN0YW5nbGUud2lkdGggKiAwLjEyNSAqIDI7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB3aWR0aDogd2lkdGggPiAwID8gd2lkdGggOiAwLFxuICAgICAgICAgICAgeDogZWxlbWVudFJlY3RhbmdsZS54ICsgU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCArIHN0cm9rZVdpZHRoICsgZWxlbWVudFJlY3RhbmdsZS53aWR0aCAqIDAuMTI1LFxuICAgICAgICAgICAgeTogZWxlbWVudFJlY3RhbmdsZS55ICsgKGVsZW1lbnRSZWN0YW5nbGUuaGVpZ2h0IC0gaGVpZ2h0KSAvIDJcbiAgICAgICAgfTtcbiAgICB9XG59O1xuIl19
@@ -1,119 +0,0 @@
1
- import { PlaitBoard, RectangleClient, distanceBetweenPointAndPoint, getEllipseTangentSlope, getNearestPointBetweenPointAndDiscreteSegments, getNearestPointBetweenPointAndEllipse, getVectorFromPointAndSlope, setStrokeLinecap } from '@plait/core';
2
- import { getUnitVectorByPointAndPoint, rotateVector } from '@plait/common';
3
- function generateActorPath(rectangle) {
4
- const centerX = rectangle.x + rectangle.width / 2;
5
- const headRadius = { width: rectangle.width / 3 / 2, height: rectangle.height / 4 / 2 };
6
- const centerY = rectangle.y + rectangle.height / 4 / 2;
7
- return {
8
- headArcCommand: {
9
- rx: headRadius.width,
10
- ry: headRadius.height,
11
- xAxisRotation: 0,
12
- largeArcFlag: 0,
13
- sweepFlag: 1,
14
- endX: centerX,
15
- endY: rectangle.y
16
- },
17
- bodyLine: [
18
- [centerX, rectangle.y + rectangle.height / 4],
19
- [centerX, rectangle.y + (rectangle.height / 4) * 3]
20
- ],
21
- armsLine: [
22
- [rectangle.x, rectangle.y + rectangle.height / 2],
23
- [rectangle.x + rectangle.width, rectangle.y + rectangle.height / 2]
24
- ],
25
- leftLegLine: [
26
- [centerX, rectangle.y + (rectangle.height / 4) * 3],
27
- [rectangle.x + rectangle.width / 12, rectangle.y + rectangle.height]
28
- ],
29
- rightLegLine: [
30
- [centerX, rectangle.y + (rectangle.height / 4) * 3],
31
- [rectangle.x + (rectangle.width / 12) * 11, rectangle.y + rectangle.height]
32
- ]
33
- };
34
- }
35
- export const ActorEngine = {
36
- draw(board, rectangle, options) {
37
- const rs = PlaitBoard.getRoughSVG(board);
38
- const { headArcCommand, bodyLine, armsLine, leftLegLine, rightLegLine } = generateActorPath(rectangle);
39
- const pathData = [
40
- // 头部(从中间开始画)
41
- `M${bodyLine[0][0]} ${bodyLine[0][1]}`,
42
- `A${headArcCommand.rx} ${headArcCommand.ry} ${headArcCommand.xAxisRotation} ${headArcCommand.largeArcFlag} ${headArcCommand.sweepFlag} ${headArcCommand.endX} ${headArcCommand.endY}`,
43
- `A${headArcCommand.rx} ${headArcCommand.ry} ${headArcCommand.xAxisRotation} ${headArcCommand.largeArcFlag} ${headArcCommand.sweepFlag} ${bodyLine[0][0]} ${bodyLine[0][1]}`,
44
- // 身体
45
- `V${bodyLine[1][1]}`,
46
- // 手臂
47
- `M${armsLine[0][0]} ${armsLine[0][1]} H${armsLine[1][0]}`,
48
- // 腿
49
- `M${leftLegLine[0][0]} ${leftLegLine[0][1]} L${leftLegLine[1][0]} ${leftLegLine[1][1]}`,
50
- `M${rightLegLine[0][0]} ${rightLegLine[0][1]} L${rightLegLine[1][0]} ${rightLegLine[1][1]}`
51
- ].join(' ');
52
- const shape = rs.path(pathData, { ...options, fillStyle: 'solid' });
53
- setStrokeLinecap(shape, 'round');
54
- return shape;
55
- },
56
- getNearestPoint(rectangle, point) {
57
- const { headArcCommand, bodyLine, armsLine, leftLegLine, rightLegLine } = generateActorPath(rectangle);
58
- // 检查头部椭圆
59
- const headCenter = [rectangle.x + rectangle.width / 2, rectangle.y + rectangle.height / 4 / 2];
60
- const nearestPointForHead = getNearestPointBetweenPointAndEllipse(point, headCenter, headArcCommand.rx, headArcCommand.ry);
61
- const distanceForHead = distanceBetweenPointAndPoint(...point, ...nearestPointForHead);
62
- // 检查所有线段
63
- const allSegments = [bodyLine, armsLine, leftLegLine, rightLegLine];
64
- const nearestPointForLines = getNearestPointBetweenPointAndDiscreteSegments(point, allSegments);
65
- const distanceForLines = distanceBetweenPointAndPoint(...point, ...nearestPointForLines);
66
- return distanceForHead < distanceForLines ? nearestPointForHead : nearestPointForLines;
67
- },
68
- isInsidePoint(rectangle, point) {
69
- const rangeRectangle = RectangleClient.getRectangleByPoints([point, point]);
70
- return RectangleClient.isHit(rectangle, rangeRectangle);
71
- },
72
- getCornerPoints(rectangle) {
73
- return RectangleClient.getCornerPoints(rectangle);
74
- },
75
- getConnectorPoints(rectangle) {
76
- return RectangleClient.getEdgeCenterPoints(rectangle);
77
- },
78
- getTangentVectorByConnectionPoint(rectangle, pointOfRectangle) {
79
- const connectionPoint = RectangleClient.getConnectionPoint(rectangle, pointOfRectangle);
80
- if (connectionPoint[1] >= rectangle.y && connectionPoint[1] <= rectangle.y + rectangle.height / 4) {
81
- const centerPoint = [rectangle.x + rectangle.width / 2, rectangle.y + rectangle.height / 4 / 2];
82
- const point = [connectionPoint[0] - centerPoint[0], -(connectionPoint[1] - centerPoint[1])];
83
- const a = rectangle.width / 2;
84
- const b = rectangle.height / 2;
85
- const slope = getEllipseTangentSlope(point[0], point[1], a, b);
86
- const vector = getVectorFromPointAndSlope(point[0], point[1], slope);
87
- return vector;
88
- }
89
- if (connectionPoint[1] >= rectangle.y + rectangle.height / 4 && connectionPoint[1] < rectangle.y + (rectangle.height / 4) * 3) {
90
- if (connectionPoint[0] < rectangle.x + rectangle.width / 2) {
91
- return rotateVector(getUnitVectorByPointAndPoint([rectangle.x, rectangle.y + rectangle.height / 2], connectionPoint), -(Math.PI / 2));
92
- }
93
- else {
94
- return rotateVector(getUnitVectorByPointAndPoint([rectangle.x + rectangle.width, rectangle.y + rectangle.height / 2], connectionPoint), -(Math.PI / 2));
95
- }
96
- }
97
- if (connectionPoint[1] >= rectangle.y + (rectangle.height / 4) * 3) {
98
- if (connectionPoint[0] < rectangle.x + rectangle.width / 2) {
99
- return getUnitVectorByPointAndPoint(connectionPoint, [rectangle.x + rectangle.width / 12, rectangle.y + rectangle.height]);
100
- }
101
- else {
102
- return getUnitVectorByPointAndPoint([rectangle.x + (rectangle.width / 12) * 11, rectangle.y + rectangle.height], connectionPoint);
103
- }
104
- }
105
- return getUnitVectorByPointAndPoint(connectionPoint, [rectangle.x + rectangle.width / 4, rectangle.y + rectangle.height]);
106
- },
107
- getTextRectangle: (element) => {
108
- const elementRectangle = RectangleClient.getRectangleByPoints(element.points);
109
- const height = element.textHeight;
110
- const width = elementRectangle.width + 40;
111
- return {
112
- height,
113
- width: width > 0 ? width : 0,
114
- x: elementRectangle.x - 20,
115
- y: elementRectangle.y + elementRectangle.height + 4
116
- };
117
- }
118
- };
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9lbmdpbmVzL3VtbC9hY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUdWLGVBQWUsRUFHZiw0QkFBNEIsRUFDNUIsc0JBQXNCLEVBQ3RCLDhDQUE4QyxFQUM5QyxxQ0FBcUMsRUFHckMsMEJBQTBCLEVBQzFCLGdCQUFnQixFQUNuQixNQUFNLGFBQWEsQ0FBQztBQUtyQixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBVTNFLFNBQVMsaUJBQWlCLENBQUMsU0FBMEI7SUFDakQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNsRCxNQUFNLFVBQVUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ3hGLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXZELE9BQU87UUFDSCxjQUFjLEVBQUU7WUFDWixFQUFFLEVBQUUsVUFBVSxDQUFDLEtBQUs7WUFDcEIsRUFBRSxFQUFFLFVBQVUsQ0FBQyxNQUFNO1lBQ3JCLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLFlBQVksRUFBRSxDQUFDO1lBQ2YsU0FBUyxFQUFFLENBQUM7WUFDWixJQUFJLEVBQUUsT0FBTztZQUNiLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztTQUNwQjtRQUNELFFBQVEsRUFBRTtZQUNOLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFD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LGVBQWUsQ0FDbEIsQ0FBQztZQUNOLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyw0QkFBNEIsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDOUgsQ0FBQztJQUNELGdCQUFnQixFQUFFLENBQUMsT0FBc0IsRUFBRSxFQUFFO1FBQ3pDLE1BQU0sZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxNQUFPLENBQUMsQ0FBQztRQUMvRSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVyxDQUFDO1FBQ25DLE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDMUMsT0FBTztZQUNILE1BQU07WUFDTixLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsRUFBRTtZQUMxQixDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDO1NBQ3RELENBQUM7SUFDTixDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUGxhaXRCb2FyZCxcbiAgICBQb2ludCxcbiAgICBQb2ludE9mUmVjdGFuZ2xlLFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBTVkdBcmNDb21tYW5kLFxuICAgIFcsXG4gICAgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCxcbiAgICBnZXRFbGxpcHNlVGFuZ2VudFNsb3BlLFxuICAgIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZERpc2NyZXRlU2VnbWVudHMsXG4gICAgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kRWxsaXBzZSxcbiAgICBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50LFxuICAgIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzLFxuICAgIGdldFZlY3RvckZyb21Qb2ludEFuZFNsb3BlLFxuICAgIHNldFN0cm9rZUxpbmVjYXBcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRHZW9tZXRyeSwgU2hhcGVFbmdpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IGdldFBvbHlnb25FZGdlQnlDb25uZWN0aW9uUG9pbnQgfSBmcm9tICcuLi8uLi91dGlscy9wb2x5Z29uJztcbmltcG9ydCB7IFJlY3RhbmdsZUVuZ2luZSB9IGZyb20gJy4uL2Jhc2ljLXNoYXBlcy9yZWN0YW5nbGUnO1xuaW1wb3J0IHsgZ2V0VW5pdFZlY3RvckJ5UG9pbnRBbmRQb2ludCwgcm90YXRlVmVjdG9yIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5cbmludGVyZmFjZSBBY3RvclBhdGhEYXRhIHtcbiAgICBoZWFkQXJjQ29tbWFuZDogU1ZHQXJjQ29tbWFuZDtcbiAgICBib2R5TGluZTogW1BvaW50LCBQb2ludF07XG4gICAgYXJtc0xpbmU6IFtQb2ludCwgUG9pbnRdO1xuICAgIGxlZnRMZWdMaW5lOiBbUG9pbnQsIFBvaW50XTtcbiAgICByaWdodExlZ0xpbmU6IFtQb2ludCwgUG9pbnRdO1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZUFjdG9yUGF0aChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCk6IEFjdG9yUGF0aERhdGEge1xuICAgIGNvbnN0IGNlbnRlclggPSByZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAvIDI7XG4gICAgY29uc3QgaGVhZFJhZGl1cyA9IHsgd2lkdGg6IHJlY3RhbmdsZS53aWR0aCAvIDMgLyAyLCBoZWlnaHQ6IHJlY3RhbmdsZS5oZWlnaHQgLyA0IC8gMiB9O1xuICAgIGNvbnN0IGNlbnRlclkgPSByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyA0IC8gMjtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGhlYWRBcmNDb21tYW5kOiB7XG4gICAgICAgICAgICByeDogaGVhZFJhZGl1cy53aWR0aCxcbiAgICAgICAgICAgIHJ5OiBoZWFkUmFkaXVzLmhlaWdodCxcbiAgICAgICAgICAgIHhBeGlzUm90YXRpb246IDAsXG4gICAgICAgICAgICBsYXJnZUFyY0ZsYWc6IDAsXG4gICAgICAgICAgICBzd2VlcEZsYWc6IDEsXG4gICAgICAgICAgICBlbmRYOiBjZW50ZXJYLFxuICAgICAgICAgICAgZW5kWTogcmVjdGFuZ2xlLnlcbiAgICAgICAgfSxcbiAgICAgICAgYm9keUxpbmU6IFtcbiAgICAgICAgICAgIFtjZW50ZXJYLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyA0XSxcbiAgICAgICAgICAgIFtjZW50ZXJYLCByZWN0YW5nbGUueSArIChyZWN0YW5nbGUuaGVpZ2h0IC8gNCkgKiAzXVxuICAgICAgICBdLFxuICAgICAgICBhcm1zTGluZTogW1xuICAgICAgICAgICAgW3JlY3RhbmdsZS54LCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyXSxcbiAgICAgICAgICAgIFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMl1cbiAgICAgICAgXSxcbiAgICAgICAgbGVmdExlZ0xpbmU6IFtcbiAgICAgICAgICAgIFtjZW50ZXJYLCByZWN0YW5nbGUueSArIChyZWN0YW5nbGUuaGVpZ2h0IC8gNCkgKiAzXSxcbiAgICAgICAgICAgIFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAvIDEyLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHRdXG4gICAgICAgIF0sXG4gICAgICAgIHJpZ2h0TGVnTGluZTogW1xuICAgICAgICAgICAgW2NlbnRlclgsIHJlY3RhbmdsZS55ICsgKHJlY3RhbmdsZS5oZWlnaHQgLyA0KSAqIDNdLFxuICAgICAgICAgICAgW3JlY3RhbmdsZS54ICsgKHJlY3RhbmdsZS53aWR0aCAvIDEyKSAqIDExLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHRdXG4gICAgICAgIF1cbiAgICB9O1xufVxuXG5leHBvcnQgY29uc3QgQWN0b3JFbmdpbmU6IFNoYXBlRW5naW5lID0ge1xuICAgIGRyYXcoYm9hcmQ6IFBsYWl0Qm9hcmQsIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHJzID0gUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCk7XG4gICAgICAgIGNvbnN0IHsgaGVhZEFyY0NvbW1hbmQsIGJvZHlMaW5lLCBhcm1zTGluZSwgbGVmdExlZ0xpbmUsIHJpZ2h0TGVnTGluZSB9ID0gZ2VuZXJhdGVBY3RvclBhdGgocmVjdGFuZ2xlKTtcblxuICAgICAgICBjb25zdCBwYXRoRGF0YSA9IFtcbiAgICAgICAgICAgIC8vIOWktOmDqO+8iOS7juS4remXtOW8gOWni+eUu++8iVxuICAgICAgICAgICAgYE0ke2JvZHlMaW5lWzBdWzBdfSAke2JvZHlMaW5lWzBdWzFdfWAsXG4gICAgICAgICAgICBgQSR7aGVhZEFyY0NvbW1hbmQucnh9ICR7aGVhZEFyY0NvbW1hbmQucnl9ICR7aGVhZEFyY0NvbW1hbmQueEF4aXNSb3RhdGlvbn0gJHtoZWFkQXJjQ29tbWFuZC5sYXJnZUFyY0ZsYWd9ICR7aGVhZEFyY0NvbW1hbmQuc3dlZXBGbGFnfSAke2hlYWRBcmNDb21tYW5kLmVuZFh9ICR7aGVhZEFyY0NvbW1hbmQuZW5kWX1gLFxuICAgICAgICAgICAgYEEke2hlYWRBcmNDb21tYW5kLnJ4fSAke2hlYWRBcmNDb21tYW5kLnJ5fSAke2hlYWRBcmNDb21tYW5kLnhBeGlzUm90YXRpb259ICR7aGVhZEFyY0NvbW1hbmQubGFyZ2VBcmNGbGFnfSAke2hlYWRBcmNDb21tYW5kLnN3ZWVwRmxhZ30gJHtib2R5TGluZVswXVswXX0gJHtib2R5TGluZVswXVsxXX1gLFxuICAgICAgICAgICAgLy8g6Lqr5L2TXG4gICAgICAgICAgICBgViR7Ym9keUxpbmVbMV1bMV19YCxcbiAgICAgICAgICAgIC8vIOaJi+iHglxuICAgICAgICAgICAgYE0ke2FybXNMaW5lWzBdWzBdfSAke2FybXNMaW5lWzBdWzFdfSBIJHthcm1zTGluZVsxXVswXX1gLFxuICAgICAgICAgICAgLy8g6IW/XG4gICAgICAgICAgICBgTSR7bGVmdExlZ0xpbmVbMF1bMF19ICR7bGVmdExlZ0xpbmVbMF1bMV19IEwke2xlZnRMZWdMaW5lWzFdWzBdfSAke2xlZnRMZWdMaW5lWzFdWzFdfWAsXG4gICAgICAgICAgICBgTSR7cmlnaHRMZWdMaW5lWzBdWzBdfSAke3JpZ2h0TGVnTGluZVswXVsxXX0gTCR7cmlnaHRMZWdMaW5lWzFdWzBdfSAke3JpZ2h0TGVnTGluZVsxXVsxXX1gXG4gICAgICAgIF0uam9pbignICcpO1xuXG4gICAgICAgIGNvbnN0IHNoYXBlID0gcnMucGF0aChwYXRoRGF0YSwgeyAuLi5vcHRpb25zLCBmaWxsU3R5bGU6ICdzb2xpZCcgfSk7XG4gICAgICAgIHNldFN0cm9rZUxpbmVjYXAoc2hhcGUsICdyb3VuZCcpO1xuICAgICAgICByZXR1cm4gc2hhcGU7XG4gICAgfSxcblxuICAgIGdldE5lYXJlc3RQb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIGNvbnN0IHsgaGVhZEFyY0NvbW1hbmQsIGJvZHlMaW5lLCBhcm1zTGluZSwgbGVmdExlZ0xpbmUsIHJpZ2h0TGVnTGluZSB9ID0gZ2VuZXJhdGVBY3RvclBhdGgocmVjdGFuZ2xlKTtcblxuICAgICAgICAvLyDmo4Dmn6XlpLTpg6jmpK3lnIZcbiAgICAgICAgY29uc3QgaGVhZENlbnRlcjogUG9pbnQgPSBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLyAyLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyA0IC8gMl07XG4gICAgICAgIGNvbnN0IG5lYXJlc3RQb2ludEZvckhlYWQgPSBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRFbGxpcHNlKHBvaW50LCBoZWFkQ2VudGVyLCBoZWFkQXJjQ29tbWFuZC5yeCwgaGVhZEFyY0NvbW1hbmQucnkpO1xuICAgICAgICBjb25zdCBkaXN0YW5jZUZvckhlYWQgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnBvaW50LCAuLi5uZWFyZXN0UG9pbnRGb3JIZWFkKTtcblxuICAgICAgICAvLyDmo4Dmn6XmiYDmnInnur/mrrVcbiAgICAgICAgY29uc3QgYWxsU2VnbWVudHMgPSBbYm9keUxpbmUsIGFybXNMaW5lLCBsZWZ0TGVnTGluZSwgcmlnaHRMZWdMaW5lXTtcbiAgICAgICAgY29uc3QgbmVhcmVzdFBvaW50Rm9yTGluZXMgPSBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmREaXNjcmV0ZVNlZ21lbnRzKHBvaW50LCBhbGxTZWdtZW50cyk7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlRm9yTGluZXMgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnBvaW50LCAuLi5uZWFyZXN0UG9pbnRGb3JMaW5lcyk7XG5cbiAgICAgICAgcmV0dXJuIGRpc3RhbmNlRm9ySGVhZCA8IGRpc3RhbmNlRm9yTGluZXMgPyBuZWFyZXN0UG9pbnRGb3JIZWFkIDogbmVhcmVzdFBvaW50Rm9yTGluZXM7XG4gICAgfSxcbiAgICBpc0luc2lkZVBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgY29uc3QgcmFuZ2VSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3BvaW50LCBwb2ludF0pO1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHJlY3RhbmdsZSwgcmFuZ2VSZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXRDb25uZWN0b3JQb2ludHMocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRFZGdlQ2VudGVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXRUYW5nZW50VmVjdG9yQnlDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50T2ZSZWN0YW5nbGU6IFBvaW50T2ZSZWN0YW5nbGUpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdGlvblBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGUsIHBvaW50T2ZSZWN0YW5nbGUpO1xuICAgICAgICBpZiAoY29ubmVjdGlvblBvaW50WzFdID49IHJlY3RhbmdsZS55ICYmIGNvbm5lY3Rpb25Qb2ludFsxXSA8PSByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyA0KSB7XG4gICAgICAgICAgICBjb25zdCBjZW50ZXJQb2ludDogUG9pbnQgPSBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLyAyLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyA0IC8gMl07XG4gICAgICAgICAgICBjb25zdCBwb2ludCA9IFtjb25uZWN0aW9uUG9pbnRbMF0gLSBjZW50ZXJQb2ludFswXSwgLShjb25uZWN0aW9uUG9pbnRbMV0gLSBjZW50ZXJQb2ludFsxXSldO1xuICAgICAgICAgICAgY29uc3QgYSA9IHJlY3RhbmdsZS53aWR0aCAvIDI7XG4gICAgICAgICAgICBjb25zdCBiID0gcmVjdGFuZ2xlLmhlaWdodCAvIDI7XG4gICAgICAgICAgICBjb25zdCBzbG9wZSA9IGdldEVsbGlwc2VUYW5nZW50U2xvcGUocG9pbnRbMF0sIHBvaW50WzFdLCBhLCBiKSBhcyBhbnk7XG4gICAgICAgICAgICBjb25zdCB2ZWN0b3IgPSBnZXRWZWN0b3JGcm9tUG9pbnRBbmRTbG9wZShwb2ludFswXSwgcG9pbnRbMV0sIHNsb3BlKTtcbiAgICAgICAgICAgIHJldHVybiB2ZWN0b3I7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29ubmVjdGlvblBvaW50WzFdID49IHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDQgJiYgY29ubmVjdGlvblBvaW50WzFdIDwgcmVjdGFuZ2xlLnkgKyAocmVjdGFuZ2xlLmhlaWdodCAvIDQpICogMykge1xuICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb25Qb2ludFswXSA8IHJlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoIC8gMikge1xuICAgICAgICAgICAgICAgIHJldHVybiByb3RhdGVWZWN0b3IoXG4gICAgICAgICAgICAgICAgICAgIGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQoW3JlY3RhbmdsZS54LCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyXSwgY29ubmVjdGlvblBvaW50KSxcbiAgICAgICAgICAgICAgICAgICAgLShNYXRoLlBJIC8gMilcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm90YXRlVmVjdG9yKFxuICAgICAgICAgICAgICAgICAgICBnZXRVbml0VmVjdG9yQnlQb2ludEFuZFBvaW50KFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMl0sIGNvbm5lY3Rpb25Qb2ludCksXG4gICAgICAgICAgICAgICAgICAgIC0oTWF0aC5QSSAvIDIpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25uZWN0aW9uUG9pbnRbMV0gPj0gcmVjdGFuZ2xlLnkgKyAocmVjdGFuZ2xlLmhlaWdodCAvIDQpICogMykge1xuICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb25Qb2ludFswXSA8IHJlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoIC8gMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXRVbml0VmVjdG9yQnlQb2ludEFuZFBvaW50KGNvbm5lY3Rpb25Qb2ludCwgW3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoIC8gMTIsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0VW5pdFZlY3RvckJ5UG9pbnRBbmRQb2ludChcbiAgICAgICAgICAgICAgICAgICAgW3JlY3RhbmdsZS54ICsgKHJlY3RhbmdsZS53aWR0aCAvIDEyKSAqIDExLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHRdLFxuICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uUG9pbnRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQoY29ubmVjdGlvblBvaW50LCBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLyA0LCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHRdKTtcbiAgICB9LFxuICAgIGdldFRleHRSZWN0YW5nbGU6IChlbGVtZW50OiBQbGFpdEdlb21ldHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMhKTtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC50ZXh0SGVpZ2h0ITtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBlbGVtZW50UmVjdGFuZ2xlLndpZHRoICsgNDA7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB3aWR0aDogd2lkdGggPiAwID8gd2lkdGggOiAwLFxuICAgICAgICAgICAgeDogZWxlbWVudFJlY3RhbmdsZS54IC0gMjAsXG4gICAgICAgICAgICB5OiBlbGVtZW50UmVjdGFuZ2xlLnkgKyBlbGVtZW50UmVjdGFuZ2xlLmhlaWdodCArIDRcbiAgICAgICAgfTtcbiAgICB9XG59O1xuIl19
@@ -1,105 +0,0 @@
1
- import { PlaitBoard, RectangleClient, distanceBetweenPointAndPoint, getNearestPointBetweenPointAndArc, getNearestPointBetweenPointAndEllipse, getNearestPointBetweenPointAndSegments, setStrokeLinecap } from '@plait/core';
2
- import { getUnitVectorByPointAndPoint, rotateVector } from '@plait/common';
3
- function generateAssemblyPath(rectangle) {
4
- const centerY = rectangle.y + rectangle.height / 2;
5
- const firstLineEndX = rectangle.x + rectangle.width * 0.3;
6
- const circleWidth = rectangle.width * 0.13;
7
- const circleHeight = rectangle.height * 0.285;
8
- const verticalX = firstLineEndX + circleWidth;
9
- const verticalRadius = rectangle.width * 0.233;
10
- return {
11
- startPoint: [rectangle.x, centerY],
12
- line1: [
13
- [rectangle.x, centerY],
14
- [firstLineEndX, centerY]
15
- ],
16
- circleArcCommand: {
17
- rx: circleWidth,
18
- ry: circleHeight,
19
- xAxisRotation: 0,
20
- largeArcFlag: 1,
21
- sweepFlag: 1,
22
- endX: firstLineEndX,
23
- endY: centerY
24
- },
25
- verticalArcCommand: {
26
- rx: verticalRadius,
27
- ry: rectangle.height / 2,
28
- xAxisRotation: 0,
29
- largeArcFlag: 0,
30
- sweepFlag: 1,
31
- endX: verticalX,
32
- endY: rectangle.y + rectangle.height
33
- },
34
- line2: [
35
- [verticalX + verticalRadius, centerY],
36
- [rectangle.x + rectangle.width, centerY]
37
- ]
38
- };
39
- }
40
- export const AssemblyEngine = {
41
- draw(board, rectangle, options) {
42
- const rs = PlaitBoard.getRoughSVG(board);
43
- const { startPoint, line1, circleArcCommand, verticalArcCommand, line2 } = generateAssemblyPath(rectangle);
44
- const pathData = [
45
- `M${startPoint[0]} ${startPoint[1]}`,
46
- `H${line1[1][0]}`,
47
- // 画完整的圆形:先画一个半圆,再画另一个半圆
48
- `A${circleArcCommand.rx} ${circleArcCommand.ry} ${circleArcCommand.xAxisRotation} ${circleArcCommand.largeArcFlag} ${circleArcCommand.sweepFlag} ${line1[1][0] + circleArcCommand.rx * 2} ${circleArcCommand.endY}`,
49
- `A${circleArcCommand.rx} ${circleArcCommand.ry} ${circleArcCommand.xAxisRotation} ${circleArcCommand.largeArcFlag} ${circleArcCommand.sweepFlag} ${circleArcCommand.endX} ${circleArcCommand.endY}`,
50
- // 垂直椭圆
51
- `M${verticalArcCommand.endX} ${rectangle.y}`,
52
- `A${verticalArcCommand.rx} ${verticalArcCommand.ry} ${verticalArcCommand.xAxisRotation} ${verticalArcCommand.largeArcFlag} ${verticalArcCommand.sweepFlag} ${verticalArcCommand.endX} ${verticalArcCommand.endY}`,
53
- // 最后一条线
54
- `M${line2[0][0]} ${line2[0][1]} H${line2[1][0]}`
55
- ].join(' ');
56
- const shape = rs.path(pathData, {
57
- ...options,
58
- fillStyle: 'solid'
59
- });
60
- setStrokeLinecap(shape, 'round');
61
- return shape;
62
- },
63
- isInsidePoint(rectangle, point) {
64
- const rangeRectangle = RectangleClient.getRectangleByPoints([point, point]);
65
- return RectangleClient.isHit(rectangle, rangeRectangle);
66
- },
67
- getCornerPoints(rectangle) {
68
- return RectangleClient.getCornerPoints(rectangle);
69
- },
70
- getConnectorPoints(rectangle) {
71
- return RectangleClient.getEdgeCenterPoints(rectangle);
72
- },
73
- getNearestPoint(rectangle, point) {
74
- const { line1, line2, circleArcCommand, verticalArcCommand } = generateAssemblyPath(rectangle);
75
- // 检查直线段
76
- const nearestPointForLines = getNearestPointBetweenPointAndSegments(point, [...line1, ...line2]);
77
- const distanceForLines = distanceBetweenPointAndPoint(...point, ...nearestPointForLines);
78
- // 检查中间圆形
79
- const circleCenter = [line1[1][0] + circleArcCommand.rx, line1[1][1]];
80
- const nearestPointForCircle = getNearestPointBetweenPointAndEllipse(point, circleCenter, circleArcCommand.rx, circleArcCommand.ry);
81
- const distanceForCircle = distanceBetweenPointAndPoint(...point, ...nearestPointForCircle);
82
- // 检查垂直椭圆(使用 getNearestPointBetweenPointAndArc 处理半圆弧)
83
- const arcStartPoint = [verticalArcCommand.endX, rectangle.y];
84
- const nearestPointForEllipse = getNearestPointBetweenPointAndArc(point, arcStartPoint, verticalArcCommand);
85
- const distanceForEllipse = distanceBetweenPointAndPoint(...point, ...nearestPointForEllipse);
86
- // 返回最近的点
87
- const minDistance = Math.min(distanceForLines, distanceForCircle, distanceForEllipse);
88
- if (minDistance === distanceForLines)
89
- return nearestPointForLines;
90
- if (minDistance === distanceForCircle)
91
- return nearestPointForCircle;
92
- return nearestPointForEllipse;
93
- },
94
- getTangentVectorByConnectionPoint(rectangle, pointOfRectangle) {
95
- const connectionPoint = RectangleClient.getConnectionPoint(rectangle, pointOfRectangle);
96
- if (connectionPoint[0] > rectangle.x + rectangle.width * 0.43 && connectionPoint[1] < rectangle.y + rectangle.height / 2) {
97
- return rotateVector(getUnitVectorByPointAndPoint(connectionPoint, [rectangle.x, rectangle.y + rectangle.height / 2]), -Math.PI);
98
- }
99
- if (connectionPoint[0] > rectangle.x + rectangle.width * 0.43 && connectionPoint[1] > rectangle.y + rectangle.height / 2) {
100
- return getUnitVectorByPointAndPoint(connectionPoint, [rectangle.x, rectangle.y + rectangle.height / 2]);
101
- }
102
- return getUnitVectorByPointAndPoint(connectionPoint, [rectangle.x, rectangle.y + rectangle.height / 2]);
103
- }
104
- };
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZW1ibHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9lbmdpbmVzL3VtbC9hc3NlbWJseS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUdWLGVBQWUsRUFFZiw0QkFBNEIsRUFDNUIsaUNBQWlDLEVBQ2pDLHFDQUFxQyxFQUNyQyxzQ0FBc0MsRUFDdEMsZ0JBQWdCLEVBQ25CLE1BQU0sYUFBYSxDQUFDO0FBSXJCLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVM0UsU0FBUyxvQkFBb0IsQ0FBQyxTQUEwQjtJQUNwRCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7SUFDMUQsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDM0MsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDOUMsTUFBTSxTQUFTLEdBQUcsYUFBYSxHQUFHLFdBQVcsQ0FBQztJQUM5QyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUUvQyxPQUFPO1FBQ0gsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUM7UUFDbEMsS0FBSyxFQUFFO1lBQ0gsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztZQUN0QixDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUM7U0FDM0I7UUFDRCxnQkFBZ0IsRUFBRTtZQUNkLEVBQUUsRUFBRSxXQUFXO1lBQ2YsRUFBRSxFQUFFLFlBQVk7WUFDaEIsYUFBYSxFQUFFLENBQUM7WUFDaEIsWUFBWSxFQUFFLENBQUM7WUFDZixTQUFTLEVBQUUsQ0FBQztZQUNaLElBQUksRUFBRSxhQUFhO1lBQ25CLElBQUksRUFBRSxPQUFPO1NBQ2hCO1FBQ0Qsa0JBQWtCLEVBQUU7WUFDaEIsRUFBRSxFQUFFLGNBQWM7WUFDbEIsRUFBRSxFQUFFLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUN4QixhQUFhLEVBQUUsQ0FBQztZQUNoQixZQUFZLEVBQUUsQ0FBQztZQUNmLFNBQVMsRUFBRSxDQUFDO1lBQ1osSUFBSSxFQUFFLFNBQVM7WUFDZixJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTTtTQUN2QztRQUNELEtBQUssRUFBRTtZQUNILENBQUMsU0FBUyxHQUFHLGNBQWMsRUFBRSxPQUFPLENBQUM7WUFDckMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO1NBQzNDO0tBQ0osQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQWdCO0lBQ3ZDLElBQUksQ0FBQyxLQUFpQixFQUFFLFNBQTBCLEVBQUUsT0FBZ0I7UUFDaEUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxNQUFNLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUzRyxNQUFNLFFBQVEsR0FBRztZQUNiLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNwQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNqQix3QkFBd0I7WUFDeEIsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksZ0JBQWdCLENBQUMsRUFBRSxJQUFJLGdCQUFnQixDQUFDLGFBQWEsSUFBSSxnQkFBZ0IsQ0FBQyxZQUFZLElBQUksZ0JBQWdCLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLElBQUksRUFBRTtZQUNuTixJQUFJLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksZ0JBQWdCLENBQUMsYUFBYSxJQUFJLGdCQUFnQixDQUFDLFlBQVksSUFBSSxnQkFBZ0IsQ0FBQyxTQUFTLElBQUksZ0JBQWdCLENBQUMsSUFBSSxJQUFJLGdCQUFnQixDQUFDLElBQUksRUFBRTtZQUNuTSxPQUFPO1lBQ1AsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLENBQUMsRUFBRTtZQUM1QyxJQUFJLGtCQUFrQixDQUFDLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLElBQUksa0JBQWtCLENBQUMsYUFBYSxJQUFJLGtCQUFrQixDQUFDLFlBQVksSUFBSSxrQkFBa0IsQ0FBQyxTQUFTLElBQUksa0JBQWtCLENBQUMsSUFBSSxJQUFJLGtCQUFrQixDQUFDLElBQUksRUFBRTtZQUNqTixRQUFRO1lBQ1IsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUNuRCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVaLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzVCLEdBQUcsT0FBTztZQUNWLFNBQVMsRUFBRSxPQUFPO1NBQ3JCLENBQUMsQ0FBQztRQUNILGdCQUFnQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqQyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsYUFBYSxDQUFDLFNBQTBCLEVBQUUsS0FBWTtRQUNsRCxNQUFNLGNBQWMsR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM1RSxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCxlQUFlLENBQUMsU0FBMEI7UUFDdEMsT0FBTyxlQUFlLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxTQUEwQjtRQUN6QyxPQUFPLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ0QsZUFBZSxDQUFDLFNBQTBCLEVBQUUsS0FBWTtRQUNwRCxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRS9GLFFBQVE7UUFDUixNQUFNLG9CQUFvQixHQUFHLHNDQUFzQyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNqRyxNQUFNLGdCQUFnQixHQUFHLDRCQUE0QixDQUFDLEdBQUcsS0FBSyxFQUFFLEdBQUcsb0JBQW9CLENBQUMsQ0FBQztRQUV6RixTQUFTO1FBQ1QsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBVSxDQUFDO1FBQy9FLE1BQU0scUJBQXFCLEdBQUcscUNBQXFDLENBQy9ELEtBQUssRUFDTCxZQUFZLEVBQ1osZ0JBQWdCLENBQUMsRUFBRSxFQUNuQixnQkFBZ0IsQ0FBQyxFQUFFLENBQ3RCLENBQUM7UUFDRixNQUFNLGlCQUFpQixHQUFHLDRCQUE0QixDQUFDLEdBQUcsS0FBSyxFQUFFLEdBQUcscUJBQXFCLENBQUMsQ0FBQztRQUUzRixxREFBcUQ7UUFDckQsTUFBTSxhQUFhLEdBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sc0JBQXNCLEdBQUcsaUNBQWlDLENBQzVELEtBQUssRUFDTCxhQUFhLEVBQ2Isa0JBQWtCLENBQ3JCLENBQUM7UUFDRixNQUFNLGtCQUFrQixHQUFHLDRCQUE0QixDQUFDLEdBQUcsS0FBSyxFQUFFLEdBQUcsc0JBQXNCLENBQUMsQ0FBQztRQUU3RixTQUFTO1FBQ1QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RGLElBQUksV0FBVyxLQUFLLGdCQUFnQjtZQUFFLE9BQU8sb0JBQW9CLENBQUM7UUFDbEUsSUFBSSxXQUFXLEtBQUssaUJBQWlCO1lBQUUsT0FBTyxxQkFBcUIsQ0FBQztRQUNwRSxPQUFPLHNCQUFzQixDQUFDO0lBQ2xDLENBQUM7SUFDRCxpQ0FBaUMsQ0FBQyxTQUEwQixFQUFFLGdCQUFrQztRQUM1RixNQUFNLGVBQWUsR0FBRyxlQUFlLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDeEYsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZILE9BQU8sWUFBWSxDQUFDLDRCQUE0QixDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEksQ0FBQztRQUNELElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN2SCxPQUFPLDRCQUE0QixDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUcsQ0FBQztRQUNELE9BQU8sNEJBQTRCLENBQUMsZUFBZSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RyxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUGxhaXRCb2FyZCxcbiAgICBQb2ludCxcbiAgICBQb2ludE9mUmVjdGFuZ2xlLFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBTVkdBcmNDb21tYW5kLFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQsXG4gICAgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kQXJjLFxuICAgIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZEVsbGlwc2UsXG4gICAgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMsXG4gICAgc2V0U3Ryb2tlTGluZWNhcFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBTaGFwZUVuZ2luZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgUmVjdGFuZ2xlRW5naW5lIH0gZnJvbSAnLi4vYmFzaWMtc2hhcGVzL3JlY3RhbmdsZSc7XG5pbXBvcnQgeyBnZXRVbml0VmVjdG9yQnlQb2ludEFuZFBvaW50LCByb3RhdGVWZWN0b3IgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcblxuaW50ZXJmYWNlIEFzc2VtYmx5UGF0aERhdGEge1xuICAgIHN0YXJ0UG9pbnQ6IFBvaW50O1xuICAgIGxpbmUxOiBbUG9pbnQsIFBvaW50XTtcbiAgICBjaXJjbGVBcmNDb21tYW5kOiBTVkdBcmNDb21tYW5kO1xuICAgIHZlcnRpY2FsQXJjQ29tbWFuZDogU1ZHQXJjQ29tbWFuZDtcbiAgICBsaW5lMjogW1BvaW50LCBQb2ludF07XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlQXNzZW1ibHlQYXRoKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KTogQXNzZW1ibHlQYXRoRGF0YSB7XG4gICAgY29uc3QgY2VudGVyWSA9IHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDI7XG4gICAgY29uc3QgZmlyc3RMaW5lRW5kWCA9IHJlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoICogMC4zO1xuICAgIGNvbnN0IGNpcmNsZVdpZHRoID0gcmVjdGFuZ2xlLndpZHRoICogMC4xMztcbiAgICBjb25zdCBjaXJjbGVIZWlnaHQgPSByZWN0YW5nbGUuaGVpZ2h0ICogMC4yODU7XG4gICAgY29uc3QgdmVydGljYWxYID0gZmlyc3RMaW5lRW5kWCArIGNpcmNsZVdpZHRoO1xuICAgIGNvbnN0IHZlcnRpY2FsUmFkaXVzID0gcmVjdGFuZ2xlLndpZHRoICogMC4yMzM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBzdGFydFBvaW50OiBbcmVjdGFuZ2xlLngsIGNlbnRlclldLFxuICAgICAgICBsaW5lMTogW1xuICAgICAgICAgICAgW3JlY3RhbmdsZS54LCBjZW50ZXJZXSxcbiAgICAgICAgICAgIFtmaXJzdExpbmVFbmRYLCBjZW50ZXJZXVxuICAgICAgICBdLFxuICAgICAgICBjaXJjbGVBcmNDb21tYW5kOiB7XG4gICAgICAgICAgICByeDogY2lyY2xlV2lkdGgsXG4gICAgICAgICAgICByeTogY2lyY2xlSGVpZ2h0LFxuICAgICAgICAgICAgeEF4aXNSb3RhdGlvbjogMCxcbiAgICAgICAgICAgIGxhcmdlQXJjRmxhZzogMSxcbiAgICAgICAgICAgIHN3ZWVwRmxhZzogMSxcbiAgICAgICAgICAgIGVuZFg6IGZpcnN0TGluZUVuZFgsXG4gICAgICAgICAgICBlbmRZOiBjZW50ZXJZXG4gICAgICAgIH0sXG4gICAgICAgIHZlcnRpY2FsQXJjQ29tbWFuZDoge1xuICAgICAgICAgICAgcng6IHZlcnRpY2FsUmFkaXVzLFxuICAgICAgICAgICAgcnk6IHJlY3RhbmdsZS5oZWlnaHQgLyAyLFxuICAgICAgICAgICAgeEF4aXNSb3RhdGlvbjogMCxcbiAgICAgICAgICAgIGxhcmdlQXJjRmxhZzogMCxcbiAgICAgICAgICAgIHN3ZWVwRmxhZzogMSxcbiAgICAgICAgICAgIGVuZFg6IHZlcnRpY2FsWCxcbiAgICAgICAgICAgIGVuZFk6IHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodFxuICAgICAgICB9LFxuICAgICAgICBsaW5lMjogW1xuICAgICAgICAgICAgW3ZlcnRpY2FsWCArIHZlcnRpY2FsUmFkaXVzLCBjZW50ZXJZXSxcbiAgICAgICAgICAgIFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCwgY2VudGVyWV1cbiAgICAgICAgXVxuICAgIH07XG59XG5cbmV4cG9ydCBjb25zdCBBc3NlbWJseUVuZ2luZTogU2hhcGVFbmdpbmUgPSB7XG4gICAgZHJhdyhib2FyZDogUGxhaXRCb2FyZCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcnMgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKTtcbiAgICAgICAgY29uc3QgeyBzdGFydFBvaW50LCBsaW5lMSwgY2lyY2xlQXJjQ29tbWFuZCwgdmVydGljYWxBcmNDb21tYW5kLCBsaW5lMiB9ID0gZ2VuZXJhdGVBc3NlbWJseVBhdGgocmVjdGFuZ2xlKTtcblxuICAgICAgICBjb25zdCBwYXRoRGF0YSA9IFtcbiAgICAgICAgICAgIGBNJHtzdGFydFBvaW50WzBdfSAke3N0YXJ0UG9pbnRbMV19YCxcbiAgICAgICAgICAgIGBIJHtsaW5lMVsxXVswXX1gLFxuICAgICAgICAgICAgLy8g55S75a6M5pW055qE5ZyG5b2i77ya5YWI55S75LiA5Liq5Y2K5ZyG77yM5YaN55S75Y+m5LiA5Liq5Y2K5ZyGXG4gICAgICAgICAgICBgQSR7Y2lyY2xlQXJjQ29tbWFuZC5yeH0gJHtjaXJjbGVBcmNDb21tYW5kLnJ5fSAke2NpcmNsZUFyY0NvbW1hbmQueEF4aXNSb3RhdGlvbn0gJHtjaXJjbGVBcmNDb21tYW5kLmxhcmdlQXJjRmxhZ30gJHtjaXJjbGVBcmNDb21tYW5kLnN3ZWVwRmxhZ30gJHtsaW5lMVsxXVswXSArIGNpcmNsZUFyY0NvbW1hbmQucnggKiAyfSAke2NpcmNsZUFyY0NvbW1hbmQuZW5kWX1gLFxuICAgICAgICAgICAgYEEke2NpcmNsZUFyY0NvbW1hbmQucnh9ICR7Y2lyY2xlQXJjQ29tbWFuZC5yeX0gJHtjaXJjbGVBcmNDb21tYW5kLnhBeGlzUm90YXRpb259ICR7Y2lyY2xlQXJjQ29tbWFuZC5sYXJnZUFyY0ZsYWd9ICR7Y2lyY2xlQXJjQ29tbWFuZC5zd2VlcEZsYWd9ICR7Y2lyY2xlQXJjQ29tbWFuZC5lbmRYfSAke2NpcmNsZUFyY0NvbW1hbmQuZW5kWX1gLFxuICAgICAgICAgICAgLy8g5Z6C55u05qSt5ZyGXG4gICAgICAgICAgICBgTSR7dmVydGljYWxBcmNDb21tYW5kLmVuZFh9ICR7cmVjdGFuZ2xlLnl9YCxcbiAgICAgICAgICAgIGBBJHt2ZXJ0aWNhbEFyY0NvbW1hbmQucnh9ICR7dmVydGljYWxBcmNDb21tYW5kLnJ5fSAke3ZlcnRpY2FsQXJjQ29tbWFuZC54QXhpc1JvdGF0aW9ufSAke3ZlcnRpY2FsQXJjQ29tbWFuZC5sYXJnZUFyY0ZsYWd9ICR7dmVydGljYWxBcmNDb21tYW5kLnN3ZWVwRmxhZ30gJHt2ZXJ0aWNhbEFyY0NvbW1hbmQuZW5kWH0gJHt2ZXJ0aWNhbEFyY0NvbW1hbmQuZW5kWX1gLFxuICAgICAgICAgICAgLy8g5pyA5ZCO5LiA5p2h57q/XG4gICAgICAgICAgICBgTSR7bGluZTJbMF1bMF19ICR7bGluZTJbMF1bMV19IEgke2xpbmUyWzFdWzBdfWBcbiAgICAgICAgXS5qb2luKCcgJyk7XG5cbiAgICAgICAgY29uc3Qgc2hhcGUgPSBycy5wYXRoKHBhdGhEYXRhLCB7XG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgIH0pO1xuICAgICAgICBzZXRTdHJva2VMaW5lY2FwKHNoYXBlLCAncm91bmQnKTtcbiAgICAgICAgcmV0dXJuIHNoYXBlO1xuICAgIH0sXG4gICAgaXNJbnNpZGVQb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIGNvbnN0IHJhbmdlUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKFtwb2ludCwgcG9pbnRdKTtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5pc0hpdChyZWN0YW5nbGUsIHJhbmdlUmVjdGFuZ2xlKTtcbiAgICB9LFxuICAgIGdldENvcm5lclBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0Q29ubmVjdG9yUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0RWRnZUNlbnRlclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0TmVhcmVzdFBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgY29uc3QgeyBsaW5lMSwgbGluZTIsIGNpcmNsZUFyY0NvbW1hbmQsIHZlcnRpY2FsQXJjQ29tbWFuZCB9ID0gZ2VuZXJhdGVBc3NlbWJseVBhdGgocmVjdGFuZ2xlKTtcblxuICAgICAgICAvLyDmo4Dmn6Xnm7Tnur/mrrVcbiAgICAgICAgY29uc3QgbmVhcmVzdFBvaW50Rm9yTGluZXMgPSBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyhwb2ludCwgWy4uLmxpbmUxLCAuLi5saW5lMl0pO1xuICAgICAgICBjb25zdCBkaXN0YW5jZUZvckxpbmVzID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCguLi5wb2ludCwgLi4ubmVhcmVzdFBvaW50Rm9yTGluZXMpO1xuXG4gICAgICAgIC8vIOajgOafpeS4remXtOWchuW9olxuICAgICAgICBjb25zdCBjaXJjbGVDZW50ZXIgPSBbbGluZTFbMV1bMF0gKyBjaXJjbGVBcmNDb21tYW5kLnJ4LCBsaW5lMVsxXVsxXV0gYXMgUG9pbnQ7XG4gICAgICAgIGNvbnN0IG5lYXJlc3RQb2ludEZvckNpcmNsZSA9IGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZEVsbGlwc2UoXG4gICAgICAgICAgICBwb2ludCxcbiAgICAgICAgICAgIGNpcmNsZUNlbnRlcixcbiAgICAgICAgICAgIGNpcmNsZUFyY0NvbW1hbmQucngsXG4gICAgICAgICAgICBjaXJjbGVBcmNDb21tYW5kLnJ5XG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlRm9yQ2lyY2xlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCguLi5wb2ludCwgLi4ubmVhcmVzdFBvaW50Rm9yQ2lyY2xlKTtcblxuICAgICAgICAvLyDmo4Dmn6XlnoLnm7TmpK3lnIbvvIjkvb/nlKggZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kQXJjIOWkhOeQhuWNiuWchuW8p++8iVxuICAgICAgICBjb25zdCBhcmNTdGFydFBvaW50OiBQb2ludCA9IFt2ZXJ0aWNhbEFyY0NvbW1hbmQuZW5kWCwgcmVjdGFuZ2xlLnldO1xuICAgICAgICBjb25zdCBuZWFyZXN0UG9pbnRGb3JFbGxpcHNlID0gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kQXJjKFxuICAgICAgICAgICAgcG9pbnQsXG4gICAgICAgICAgICBhcmNTdGFydFBvaW50LFxuICAgICAgICAgICAgdmVydGljYWxBcmNDb21tYW5kXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlRm9yRWxsaXBzZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoLi4ucG9pbnQsIC4uLm5lYXJlc3RQb2ludEZvckVsbGlwc2UpO1xuXG4gICAgICAgIC8vIOi/lOWbnuacgOi/keeahOeCuVxuICAgICAgICBjb25zdCBtaW5EaXN0YW5jZSA9IE1hdGgubWluKGRpc3RhbmNlRm9yTGluZXMsIGRpc3RhbmNlRm9yQ2lyY2xlLCBkaXN0YW5jZUZvckVsbGlwc2UpO1xuICAgICAgICBpZiAobWluRGlzdGFuY2UgPT09IGRpc3RhbmNlRm9yTGluZXMpIHJldHVybiBuZWFyZXN0UG9pbnRGb3JMaW5lcztcbiAgICAgICAgaWYgKG1pbkRpc3RhbmNlID09PSBkaXN0YW5jZUZvckNpcmNsZSkgcmV0dXJuIG5lYXJlc3RQb2ludEZvckNpcmNsZTtcbiAgICAgICAgcmV0dXJuIG5lYXJlc3RQb2ludEZvckVsbGlwc2U7XG4gICAgfSxcbiAgICBnZXRUYW5nZW50VmVjdG9yQnlDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50T2ZSZWN0YW5nbGU6IFBvaW50T2ZSZWN0YW5nbGUpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdGlvblBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGUsIHBvaW50T2ZSZWN0YW5nbGUpO1xuICAgICAgICBpZiAoY29ubmVjdGlvblBvaW50WzBdID4gcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggKiAwLjQzICYmIGNvbm5lY3Rpb25Qb2ludFsxXSA8IHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDIpIHtcbiAgICAgICAgICAgIHJldHVybiByb3RhdGVWZWN0b3IoZ2V0VW5pdFZlY3RvckJ5UG9pbnRBbmRQb2ludChjb25uZWN0aW9uUG9pbnQsIFtyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMl0pLCAtTWF0aC5QSSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbm5lY3Rpb25Qb2ludFswXSA+IHJlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoICogMC40MyAmJiBjb25uZWN0aW9uUG9pbnRbMV0gPiByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0VW5pdFZlY3RvckJ5UG9pbnRBbmRQb2ludChjb25uZWN0aW9uUG9pbnQsIFtyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMl0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRVbml0VmVjdG9yQnlQb2ludEFuZFBvaW50KGNvbm5lY3Rpb25Qb2ludCwgW3JlY3RhbmdsZS54LCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyXSk7XG4gICAgfVxufTtcbiJdfQ==
@@ -1,66 +0,0 @@
1
- import { PlaitBoard, RectangleClient, getNearestPointBetweenPointAndSegments, setStrokeLinecap } from '@plait/core';
2
- import { GeometryCommonTextKeys } from '../../interfaces';
3
- import { getPolygonEdgeByConnectionPoint } from '../../utils/polygon';
4
- import { RectangleEngine } from '../basic-shapes/rectangle';
5
- import { getStrokeWidthByElement } from '../../utils';
6
- import { ShapeDefaultSpace } from '../../constants';
7
- export const CombinedFragmentEngine = {
8
- draw(board, rectangle, options) {
9
- const rs = PlaitBoard.getRoughSVG(board);
10
- const shape = rs.path(`M${rectangle.x} ${rectangle.y + 25}
11
- V${rectangle.y}
12
- H${rectangle.x + rectangle.width}
13
- V${rectangle.y + rectangle.height}
14
- H${rectangle.x}
15
- V${rectangle.y + 25}
16
- H${rectangle.x + rectangle.width / 3 - 8}
17
- L${rectangle.x + rectangle.width / 3} ${rectangle.y + 16}
18
- V${rectangle.y}
19
- `, { ...options, fillStyle: 'solid' });
20
- setStrokeLinecap(shape, 'round');
21
- return shape;
22
- },
23
- isInsidePoint(rectangle, point) {
24
- const rangeRectangle = RectangleClient.getRectangleByPoints([point, point]);
25
- return RectangleClient.isHit(rectangle, rangeRectangle);
26
- },
27
- getCornerPoints(rectangle) {
28
- return RectangleClient.getCornerPoints(rectangle);
29
- },
30
- getNearestPoint(rectangle, point) {
31
- return getNearestPointBetweenPointAndSegments(point, RectangleEngine.getCornerPoints(rectangle));
32
- },
33
- getEdgeByConnectionPoint(rectangle, pointOfRectangle) {
34
- const corners = RectangleEngine.getCornerPoints(rectangle);
35
- const point = RectangleClient.getConnectionPoint(rectangle, pointOfRectangle);
36
- return getPolygonEdgeByConnectionPoint(corners, point);
37
- },
38
- getConnectorPoints(rectangle) {
39
- return RectangleClient.getEdgeCenterPoints(rectangle);
40
- },
41
- getTextRectangle(element, options) {
42
- const elementRectangle = RectangleClient.getRectangleByPoints(element.points);
43
- const strokeWidth = getStrokeWidthByElement(element);
44
- const textHeight = element.texts?.find(item => item.id === options?.id)?.textHeight;
45
- if (options?.id === GeometryCommonTextKeys.name) {
46
- const width = elementRectangle.width / 3 - 8 - ShapeDefaultSpace.rectangleAndText - strokeWidth;
47
- return {
48
- height: textHeight,
49
- width: width > 0 ? width : 0,
50
- x: elementRectangle.x + ShapeDefaultSpace.rectangleAndText + strokeWidth,
51
- y: elementRectangle.y + (25 - textHeight) / 2
52
- };
53
- }
54
- if (options?.id === GeometryCommonTextKeys.content) {
55
- const width = elementRectangle.width - ShapeDefaultSpace.rectangleAndText * 2 - strokeWidth * 2;
56
- return {
57
- height: textHeight,
58
- width: width > 0 ? width : 0,
59
- x: elementRectangle.x + ShapeDefaultSpace.rectangleAndText + strokeWidth,
60
- y: elementRectangle.y + 25 + ShapeDefaultSpace.rectangleAndText + strokeWidth
61
- };
62
- }
63
- return elementRectangle;
64
- }
65
- };
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYmluZWQtZnJhZ21lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9lbmdpbmVzL3VtbC9jb21iaW5lZC1mcmFnbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUdWLGVBQWUsRUFDZixzQ0FBc0MsRUFDdEMsZ0JBQWdCLEVBQ25CLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBZSxzQkFBc0IsRUFBMEMsTUFBTSxrQkFBa0IsQ0FBQztBQUUvRyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3BELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFzRTtJQUNyRyxJQUFJLENBQUMsS0FBaUIsRUFBRSxTQUEwQixFQUFFLE9BQWdCO1FBQ2hFLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FDakIsSUFBSSxTQUFTLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRTtlQUNoQyxTQUFTLENBQUMsQ0FBQztlQUNYLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUs7ZUFDN0IsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTTtlQUM5QixTQUFTLENBQUMsQ0FBQztlQUNYLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRTtlQUNoQixTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUM7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LEtBQUssRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsV0FBVztnQkFDeEUsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsV0FBVzthQUNoRixDQUFDO1FBQ04sQ0FBQztRQUNELE9BQU8sZ0JBQWdCLENBQUM7SUFDNUIsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFBsYWl0Qm9hcmQsXG4gICAgUG9pbnQsXG4gICAgUG9pbnRPZlJlY3RhbmdsZSxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMsXG4gICAgc2V0U3Ryb2tlTGluZWNhcFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBEcmF3T3B0aW9ucywgR2VvbWV0cnlDb21tb25UZXh0S2V5cywgUGxhaXRNdWx0aXBsZVRleHRHZW9tZXRyeSwgU2hhcGVFbmdpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IGdldFBvbHlnb25FZGdlQnlDb25uZWN0aW9uUG9pbnQgfSBmcm9tICcuLi8uLi91dGlscy9wb2x5Z29uJztcbmltcG9ydCB7IFJlY3RhbmdsZUVuZ2luZSB9IGZyb20gJy4uL2Jhc2ljLXNoYXBlcy9yZWN0YW5nbGUnO1xuaW1wb3J0IHsgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBTaGFwZURlZmF1bHRTcGFjZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBEcmF3VGV4dEluZm8gfSBmcm9tICcuLi8uLi9nZW5lcmF0b3JzL3RleHQuZ2VuZXJhdG9yJztcblxuZXhwb3J0IGNvbnN0IENvbWJpbmVkRnJhZ21lbnRFbmdpbmU6IFNoYXBlRW5naW5lPFBsYWl0TXVsdGlwbGVUZXh0R2VvbWV0cnksIERyYXdPcHRpb25zLCBEcmF3VGV4dEluZm8+ID0ge1xuICAgIGRyYXcoYm9hcmQ6IFBsYWl0Qm9hcmQsIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHJzID0gUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCk7XG4gICAgICAgIGNvbnN0IHNoYXBlID0gcnMucGF0aChcbiAgICAgICAgICAgIGBNJHtyZWN0YW5nbGUueH0gJHtyZWN0YW5nbGUueSArIDI1fSBcbiAgICAgICAgICAgIFYke3JlY3RhbmdsZS55fVxuICAgICAgICAgICAgSCR7cmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGh9IFxuICAgICAgICAgICAgViR7cmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0fVxuICAgICAgICAgICAgSCR7cmVjdGFuZ2xlLnh9XG4gICAgICAgICAgICBWJHtyZWN0YW5nbGUueSArIDI1fVxuICAgICAgICAgICAgSCR7cmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLyAzIC0gOH1cbiAgICAgICAgICAgIEwke3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoIC8gM30gJHtyZWN0YW5nbGUueSArIDE2fVxuICAgICAgICAgICAgViR7cmVjdGFuZ2xlLnl9XG4gICAgICAgICAgICBgLFxuXG4gICAgICAgICAgICB7IC4uLm9wdGlvbnMsIGZpbGxTdHlsZTogJ3NvbGlkJyB9XG4gICAgICAgICk7XG4gICAgICAgIHNldFN0cm9rZUxpbmVjYXAoc2hhcGUsICdyb3VuZCcpO1xuXG4gICAgICAgIHJldHVybiBzaGFwZTtcbiAgICB9LFxuICAgIGlzSW5zaWRlUG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkge1xuICAgICAgICBjb25zdCByYW5nZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbcG9pbnQsIHBvaW50XSk7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuaXNIaXQocmVjdGFuZ2xlLCByYW5nZVJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICB9LFxuICAgIGdldE5lYXJlc3RQb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIHJldHVybiBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyhwb2ludCwgUmVjdGFuZ2xlRW5naW5lLmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpKTtcbiAgICB9LFxuICAgIGdldEVkZ2VCeUNvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnRPZlJlY3RhbmdsZTogUG9pbnRPZlJlY3RhbmdsZSk6IFtQb2ludCwgUG9pbnRdIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGNvcm5lcnMgPSBSZWN0YW5nbGVFbmdpbmUuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgICAgIGNvbnN0IHBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGUsIHBvaW50T2ZSZWN0YW5nbGUpO1xuICAgICAgICByZXR1cm4gZ2V0UG9seWdvbkVkZ2VCeUNvbm5lY3Rpb25Qb2ludChjb3JuZXJzLCBwb2ludCk7XG4gICAgfSxcbiAgICBnZXRDb25uZWN0b3JQb2ludHMocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRFZGdlQ2VudGVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXRUZXh0UmVjdGFuZ2xlKGVsZW1lbnQ6IFBsYWl0TXVsdGlwbGVUZXh0R2VvbWV0cnksIG9wdGlvbnM/OiBEcmF3VGV4dEluZm8pIHtcbiAgICAgICAgY29uc3QgZWxlbWVudFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyEpO1xuICAgICAgICBjb25zdCBzdHJva2VXaWR0aCA9IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICBjb25zdCB0ZXh0SGVpZ2h0ID0gZWxlbWVudC50ZXh0cz8uZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IG9wdGlvbnM/LmlkKT8udGV4dEhlaWdodCE7XG4gICAgICAgIGlmIChvcHRpb25zPy5pZCA9PT0gR2VvbWV0cnlDb21tb25UZXh0S2V5cy5uYW1lKSB7XG4gICAgICAgICAgICBjb25zdCB3aWR0aCA9IGVsZW1lbnRSZWN0YW5nbGUud2lkdGggLyAzIC0gOCAtIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgLSBzdHJva2VXaWR0aDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiB0ZXh0SGVpZ2h0LFxuICAgICAgICAgICAgICAgIHdpZHRoOiB3aWR0aCA+IDAgPyB3aWR0aCA6IDAsXG4gICAgICAgICAgICAgICAgeDogZWxlbWVudFJlY3RhbmdsZS54ICsgU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCArIHN0cm9rZVdpZHRoLFxuICAgICAgICAgICAgICAgIHk6IGVsZW1lbnRSZWN0YW5nbGUueSArICgyNSAtIHRleHRIZWlnaHQpIC8gMlxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucz8uaWQgPT09IEdlb21ldHJ5Q29tbW9uVGV4dEtleXMuY29udGVudCkge1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBlbGVtZW50UmVjdGFuZ2xlLndpZHRoIC0gU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCAqIDIgLSBzdHJva2VXaWR0aCAqIDI7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGhlaWdodDogdGV4dEhlaWdodCxcbiAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGggPiAwID8gd2lkdGggOiAwLFxuICAgICAgICAgICAgICAgIHg6IGVsZW1lbnRSZWN0YW5nbGUueCArIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKyBzdHJva2VXaWR0aCxcbiAgICAgICAgICAgICAgICB5OiBlbGVtZW50UmVjdGFuZ2xlLnkgKyAyNSArIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKyBzdHJva2VXaWR0aFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZWxlbWVudFJlY3RhbmdsZTtcbiAgICB9XG59O1xuIl19