@plait/draw 0.77.2 → 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 (156) hide show
  1. package/fesm2022/plait-draw.mjs +21 -14
  2. package/fesm2022/plait-draw.mjs.map +1 -1
  3. package/package.json +1 -3
  4. package/transforms/image.d.ts +6 -0
  5. package/utils/hit.d.ts +1 -1
  6. package/esm2022/arrow-line.component.mjs +0 -165
  7. package/esm2022/constants/default.mjs +0 -7
  8. package/esm2022/constants/geometry.mjs +0 -272
  9. package/esm2022/constants/image.mjs +0 -2
  10. package/esm2022/constants/index.mjs +0 -9
  11. package/esm2022/constants/line.mjs +0 -12
  12. package/esm2022/constants/pointer.mjs +0 -23
  13. package/esm2022/constants/swimlane.mjs +0 -25
  14. package/esm2022/constants/text.mjs +0 -2
  15. package/esm2022/constants/theme.mjs +0 -28
  16. package/esm2022/engines/basic-shapes/cloud.mjs +0 -146
  17. package/esm2022/engines/basic-shapes/comment.mjs +0 -56
  18. package/esm2022/engines/basic-shapes/cross.mjs +0 -33
  19. package/esm2022/engines/basic-shapes/diamond.mjs +0 -16
  20. package/esm2022/engines/basic-shapes/ellipse.mjs +0 -53
  21. package/esm2022/engines/basic-shapes/hexagon.mjs +0 -27
  22. package/esm2022/engines/basic-shapes/left-arrow.mjs +0 -30
  23. package/esm2022/engines/basic-shapes/octagon.mjs +0 -29
  24. package/esm2022/engines/basic-shapes/parallelogram.mjs +0 -26
  25. package/esm2022/engines/basic-shapes/pentagon-arrow.mjs +0 -27
  26. package/esm2022/engines/basic-shapes/pentagon.mjs +0 -30
  27. package/esm2022/engines/basic-shapes/polygon.mjs +0 -56
  28. package/esm2022/engines/basic-shapes/process-arrow.mjs +0 -26
  29. package/esm2022/engines/basic-shapes/rectangle.mjs +0 -26
  30. package/esm2022/engines/basic-shapes/right-arrow.mjs +0 -28
  31. package/esm2022/engines/basic-shapes/round-comment.mjs +0 -82
  32. package/esm2022/engines/basic-shapes/round-rectangle.mjs +0 -58
  33. package/esm2022/engines/basic-shapes/star.mjs +0 -39
  34. package/esm2022/engines/basic-shapes/trapezoid.mjs +0 -26
  35. package/esm2022/engines/basic-shapes/triangle.mjs +0 -34
  36. package/esm2022/engines/basic-shapes/two-way-arrow.mjs +0 -25
  37. package/esm2022/engines/flowchart/database.mjs +0 -84
  38. package/esm2022/engines/flowchart/delay.mjs +0 -44
  39. package/esm2022/engines/flowchart/display.mjs +0 -74
  40. package/esm2022/engines/flowchart/document.mjs +0 -81
  41. package/esm2022/engines/flowchart/hard-disk.mjs +0 -84
  42. package/esm2022/engines/flowchart/internal-storage.mjs +0 -47
  43. package/esm2022/engines/flowchart/manual-input.mjs +0 -33
  44. package/esm2022/engines/flowchart/manual-loop.mjs +0 -26
  45. package/esm2022/engines/flowchart/merge.mjs +0 -34
  46. package/esm2022/engines/flowchart/multi-document.mjs +0 -143
  47. package/esm2022/engines/flowchart/note-curly-left.mjs +0 -86
  48. package/esm2022/engines/flowchart/note-curly-right.mjs +0 -89
  49. package/esm2022/engines/flowchart/note-square.mjs +0 -46
  50. package/esm2022/engines/flowchart/off-page.mjs +0 -32
  51. package/esm2022/engines/flowchart/or.mjs +0 -20
  52. package/esm2022/engines/flowchart/predefined-process.mjs +0 -47
  53. package/esm2022/engines/flowchart/preparation.mjs +0 -27
  54. package/esm2022/engines/flowchart/stored-data.mjs +0 -79
  55. package/esm2022/engines/flowchart/summing-junction.mjs +0 -23
  56. package/esm2022/engines/flowchart/terminal.mjs +0 -68
  57. package/esm2022/engines/index.mjs +0 -130
  58. package/esm2022/engines/table/table.mjs +0 -101
  59. package/esm2022/engines/uml/activity-class.mjs +0 -47
  60. package/esm2022/engines/uml/actor.mjs +0 -119
  61. package/esm2022/engines/uml/assembly.mjs +0 -105
  62. package/esm2022/engines/uml/combined-fragment.mjs +0 -66
  63. package/esm2022/engines/uml/component-box.mjs +0 -61
  64. package/esm2022/engines/uml/component.mjs +0 -117
  65. package/esm2022/engines/uml/container.mjs +0 -44
  66. package/esm2022/engines/uml/deletion.mjs +0 -54
  67. package/esm2022/engines/uml/note.mjs +0 -58
  68. package/esm2022/engines/uml/package.mjs +0 -105
  69. package/esm2022/engines/uml/provided-interface.mjs +0 -92
  70. package/esm2022/engines/uml/required-interface.mjs +0 -81
  71. package/esm2022/engines/uml/template.mjs +0 -47
  72. package/esm2022/generators/arrow-line-auto-complete.generator.mjs +0 -46
  73. package/esm2022/generators/arrow-line.generator.mjs +0 -13
  74. package/esm2022/generators/geometry-shape.generator.mjs +0 -29
  75. package/esm2022/generators/index.mjs +0 -7
  76. package/esm2022/generators/line-active.generator.mjs +0 -84
  77. package/esm2022/generators/single-text.generator.mjs +0 -16
  78. package/esm2022/generators/table.generator.mjs +0 -25
  79. package/esm2022/generators/text.generator.mjs +0 -131
  80. package/esm2022/generators/vector-line-generator.mjs +0 -13
  81. package/esm2022/geometry.component.mjs +0 -145
  82. package/esm2022/image.component.mjs +0 -67
  83. package/esm2022/interfaces/arrow-line.mjs +0 -70
  84. package/esm2022/interfaces/element.mjs +0 -9
  85. package/esm2022/interfaces/engine.mjs +0 -2
  86. package/esm2022/interfaces/geometry.mjs +0 -82
  87. package/esm2022/interfaces/image.mjs +0 -2
  88. package/esm2022/interfaces/index.mjs +0 -92
  89. package/esm2022/interfaces/line.mjs +0 -2
  90. package/esm2022/interfaces/options.mjs +0 -2
  91. package/esm2022/interfaces/swimlane.mjs +0 -13
  92. package/esm2022/interfaces/table.mjs +0 -13
  93. package/esm2022/interfaces/text.mjs +0 -2
  94. package/esm2022/interfaces/vector-line.mjs +0 -10
  95. package/esm2022/plait-draw.mjs +0 -5
  96. package/esm2022/plugins/with-arrow-line-auto-complete-reaction.mjs +0 -43
  97. package/esm2022/plugins/with-arrow-line-auto-complete.mjs +0 -76
  98. package/esm2022/plugins/with-arrow-line-bound-reaction.mjs +0 -53
  99. package/esm2022/plugins/with-arrow-line-create.mjs +0 -51
  100. package/esm2022/plugins/with-arrow-line-resize.mjs +0 -158
  101. package/esm2022/plugins/with-arrow-line-text-move.mjs +0 -53
  102. package/esm2022/plugins/with-arrow-line-text.mjs +0 -73
  103. package/esm2022/plugins/with-draw-fragment.mjs +0 -98
  104. package/esm2022/plugins/with-draw-hotkey.mjs +0 -45
  105. package/esm2022/plugins/with-draw-resize.mjs +0 -269
  106. package/esm2022/plugins/with-draw-rotate.mjs +0 -132
  107. package/esm2022/plugins/with-draw.mjs +0 -144
  108. package/esm2022/plugins/with-geometry-create.mjs +0 -182
  109. package/esm2022/plugins/with-swimlane-create.mjs +0 -127
  110. package/esm2022/plugins/with-swimlane.mjs +0 -21
  111. package/esm2022/plugins/with-table-resize.mjs +0 -135
  112. package/esm2022/plugins/with-table.mjs +0 -109
  113. package/esm2022/plugins/with-vector-line-create.mjs +0 -85
  114. package/esm2022/plugins/with-vector-line-resize.mjs +0 -61
  115. package/esm2022/public-api.mjs +0 -11
  116. package/esm2022/table.component.mjs +0 -162
  117. package/esm2022/transforms/arrow-line.mjs +0 -66
  118. package/esm2022/transforms/common.mjs +0 -36
  119. package/esm2022/transforms/geometry-text.mjs +0 -59
  120. package/esm2022/transforms/geometry.mjs +0 -43
  121. package/esm2022/transforms/image.mjs +0 -22
  122. package/esm2022/transforms/index.mjs +0 -36
  123. package/esm2022/transforms/multi-text-geometry-text.mjs +0 -15
  124. package/esm2022/transforms/swimlane.mjs +0 -164
  125. package/esm2022/transforms/table-text.mjs +0 -44
  126. package/esm2022/transforms/table.mjs +0 -36
  127. package/esm2022/transforms/vector-line.mjs +0 -13
  128. package/esm2022/utils/arrow-line/arrow-line-arrow.mjs +0 -123
  129. package/esm2022/utils/arrow-line/arrow-line-basic.mjs +0 -205
  130. package/esm2022/utils/arrow-line/arrow-line-common.mjs +0 -162
  131. package/esm2022/utils/arrow-line/arrow-line-resize.mjs +0 -309
  132. package/esm2022/utils/arrow-line/elbow.mjs +0 -114
  133. package/esm2022/utils/arrow-line/index.mjs +0 -6
  134. package/esm2022/utils/clipboard.mjs +0 -55
  135. package/esm2022/utils/common.mjs +0 -184
  136. package/esm2022/utils/geometry.mjs +0 -178
  137. package/esm2022/utils/hit.mjs +0 -242
  138. package/esm2022/utils/index.mjs +0 -17
  139. package/esm2022/utils/line.mjs +0 -64
  140. package/esm2022/utils/memorize.mjs +0 -93
  141. package/esm2022/utils/multi-text-geometry.mjs +0 -61
  142. package/esm2022/utils/polygon.mjs +0 -30
  143. package/esm2022/utils/position/arrow-line.mjs +0 -20
  144. package/esm2022/utils/position/geometry.mjs +0 -30
  145. package/esm2022/utils/position/line.mjs +0 -51
  146. package/esm2022/utils/selected.mjs +0 -39
  147. package/esm2022/utils/shape.mjs +0 -11
  148. package/esm2022/utils/snap-resizing.mjs +0 -185
  149. package/esm2022/utils/style/index.mjs +0 -2
  150. package/esm2022/utils/style/stroke.mjs +0 -21
  151. package/esm2022/utils/swimlane.mjs +0 -124
  152. package/esm2022/utils/table-selected.mjs +0 -21
  153. package/esm2022/utils/table.mjs +0 -172
  154. package/esm2022/utils/uml.mjs +0 -90
  155. package/esm2022/utils/vector-line.mjs +0 -71
  156. package/esm2022/vector-line.component.mjs +0 -55
@@ -1,61 +0,0 @@
1
- import { PlaitBoard, RectangleClient, getNearestPointBetweenPointAndSegments, setStrokeLinecap } from '@plait/core';
2
- import { getPolygonEdgeByConnectionPoint } from '../../utils/polygon';
3
- import { RectangleEngine } from '../basic-shapes/rectangle';
4
- import { getStrokeWidthByElement } from '../../utils';
5
- import { ShapeDefaultSpace } from '../../constants';
6
- import { ComponentEngine } from './component';
7
- export const ComponentBoxEngine = {
8
- draw(board, rectangle, options) {
9
- const rs = PlaitBoard.getRoughSVG(board);
10
- const componentWidth = rectangle.width - 45 * 2 - 18 > 1 ? 45 : rectangle.width * 0.25;
11
- const componentHeight = rectangle.height - 30 - 8 * 2 > 1 ? 30 : rectangle.height * 0.2;
12
- const componentRectangle = {
13
- x: rectangle.x + rectangle.width - 18 - componentWidth,
14
- y: rectangle.y + 8,
15
- width: componentWidth,
16
- height: componentHeight
17
- };
18
- const shape = rs.path(`M${rectangle.x} ${rectangle.y}
19
- H${rectangle.x + rectangle.width}
20
- V${rectangle.y + rectangle.height}
21
- H${rectangle.x} Z
22
-
23
- `, { ...options, fillStyle: 'solid' });
24
- const componentShape = ComponentEngine.draw(board, componentRectangle, options);
25
- shape.append(componentShape);
26
- setStrokeLinecap(shape, 'round');
27
- return shape;
28
- },
29
- isInsidePoint(rectangle, point) {
30
- const rangeRectangle = RectangleClient.getRectangleByPoints([point, point]);
31
- return RectangleClient.isHit(rectangle, rangeRectangle);
32
- },
33
- getCornerPoints(rectangle) {
34
- return RectangleClient.getCornerPoints(rectangle);
35
- },
36
- getNearestPoint(rectangle, point) {
37
- return getNearestPointBetweenPointAndSegments(point, RectangleEngine.getCornerPoints(rectangle));
38
- },
39
- getEdgeByConnectionPoint(rectangle, pointOfRectangle) {
40
- const corners = RectangleEngine.getCornerPoints(rectangle);
41
- const point = RectangleClient.getConnectionPoint(rectangle, pointOfRectangle);
42
- return getPolygonEdgeByConnectionPoint(corners, point);
43
- },
44
- getConnectorPoints(rectangle) {
45
- return RectangleClient.getEdgeCenterPoints(rectangle);
46
- },
47
- getTextRectangle(element) {
48
- const elementRectangle = RectangleClient.getRectangleByPoints(element.points);
49
- const strokeWidth = getStrokeWidthByElement(element);
50
- const height = element.textHeight;
51
- const componentWidth = elementRectangle.width - 45 * 2 - 18 > 1 ? 45 : elementRectangle.width * 0.25;
52
- const width = elementRectangle.width - 18 - componentWidth - ShapeDefaultSpace.rectangleAndText - strokeWidth * 2;
53
- return {
54
- height,
55
- width: width > 0 ? width : 0,
56
- x: elementRectangle.x + ShapeDefaultSpace.rectangleAndText + strokeWidth,
57
- y: elementRectangle.y + (elementRectangle.height - height) / 2
58
- };
59
- }
60
- };
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL2VuZ2luZXMvdW1sL2NvbXBvbmVudC1ib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFVBQVUsRUFHVixlQUFlLEVBQ2Ysc0NBQXNDLEVBQ3RDLGdCQUFnQixFQUNuQixNQUFNLGFBQWEsQ0FBQztBQUdyQixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFOUMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQWdCO0lBQzNDLElBQUksQ0FBQyxLQUFpQixFQUFFLFNBQTBCLEVBQUUsT0FBZ0I7UUFDaEUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUN2RixNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUV4RixNQUFNLGtCQUFrQixHQUFHO1lBQ3ZCLENBQUMsRUFB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RSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsV0FBVztZQUN4RSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7U0FDakUsQ0FBQztJQUNOLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBvaW50LFxuICAgIFBvaW50T2ZSZWN0YW5nbGUsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzLFxuICAgIHNldFN0cm9rZUxpbmVjYXBcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRHZW9tZXRyeSwgU2hhcGVFbmdpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IGdldFBvbHlnb25FZGdlQnlDb25uZWN0aW9uUG9pbnQgfSBmcm9tICcuLi8uLi91dGlscy9wb2x5Z29uJztcbmltcG9ydCB7IFJlY3RhbmdsZUVuZ2luZSB9IGZyb20gJy4uL2Jhc2ljLXNoYXBlcy9yZWN0YW5nbGUnO1xuaW1wb3J0IHsgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBTaGFwZURlZmF1bHRTcGFjZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFbmdpbmUgfSBmcm9tICcuL2NvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBDb21wb25lbnRCb3hFbmdpbmU6IFNoYXBlRW5naW5lID0ge1xuICAgIGRyYXcoYm9hcmQ6IFBsYWl0Qm9hcmQsIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHJzID0gUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFdpZHRoID0gcmVjdGFuZ2xlLndpZHRoIC0gNDUgKiAyIC0gMTggPiAxID8gNDUgOiByZWN0YW5nbGUud2lkdGggKiAwLjI1O1xuICAgICAgICBjb25zdCBjb21wb25lbnRIZWlnaHQgPSByZWN0YW5nbGUuaGVpZ2h0IC0gMzAgLSA4ICogMiA+IDEgPyAzMCA6IHJlY3RhbmdsZS5oZWlnaHQgKiAwLjI7XG5cbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVjdGFuZ2xlID0ge1xuICAgICAgICAgICAgeDogcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLSAxOCAtIGNvbXBvbmVudFdpZHRoLFxuICAgICAgICAgICAgeTogcmVjdGFuZ2xlLnkgKyA4LFxuICAgICAgICAgICAgd2lkdGg6IGNvbXBvbmVudFdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBjb21wb25lbnRIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgc2hhcGUgPSBycy5wYXRoKFxuICAgICAgICAgICAgYE0ke3JlY3RhbmdsZS54fSAke3JlY3RhbmdsZS55fSBcbiAgICAgICAgICAgIEgke3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRofSBcbiAgICAgICAgICAgIFYke3JlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodH0gXG4gICAgICAgICAgICBIJHtyZWN0YW5nbGUueH0gWlxuXG4gICAgICAgICAgICBgLFxuICAgICAgICAgICAgeyAuLi5vcHRpb25zLCBmaWxsU3R5bGU6ICdzb2xpZCcgfVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFNoYXBlID0gQ29tcG9uZW50RW5naW5lLmRyYXcoYm9hcmQsIGNvbXBvbmVudFJlY3RhbmdsZSwgb3B0aW9ucyk7XG4gICAgICAgIHNoYXBlLmFwcGVuZChjb21wb25lbnRTaGFwZSk7XG4gICAgICAgIHNldFN0cm9rZUxpbmVjYXAoc2hhcGUsICdyb3VuZCcpO1xuXG4gICAgICAgIHJldHVybiBzaGFwZTtcbiAgICB9LFxuICAgIGlzSW5zaWRlUG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkge1xuICAgICAgICBjb25zdCByYW5nZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbcG9pbnQsIHBvaW50XSk7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuaXNIaXQocmVjdGFuZ2xlLCByYW5nZVJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICB9LFxuICAgIGdldE5lYXJlc3RQb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIHJldHVybiBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyhwb2ludCwgUmVjdGFuZ2xlRW5naW5lLmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpKTtcbiAgICB9LFxuICAgIGdldEVkZ2VCeUNvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnRPZlJlY3RhbmdsZTogUG9pbnRPZlJlY3RhbmdsZSk6IFtQb2ludCwgUG9pbnRdIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGNvcm5lcnMgPSBSZWN0YW5nbGVFbmdpbmUuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgICAgIGNvbnN0IHBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGUsIHBvaW50T2ZSZWN0YW5nbGUpO1xuICAgICAgICByZXR1cm4gZ2V0UG9seWdvbkVkZ2VCeUNvbm5lY3Rpb25Qb2ludChjb3JuZXJzLCBwb2ludCk7XG4gICAgfSxcbiAgICBnZXRDb25uZWN0b3JQb2ludHMocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRFZGdlQ2VudGVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXRUZXh0UmVjdGFuZ2xlKGVsZW1lbnQ6IFBsYWl0R2VvbWV0cnkpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyEpO1xuICAgICAgICBjb25zdCBzdHJva2VXaWR0aCA9IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LnRleHRIZWlnaHQhO1xuICAgICAgICBjb25zdCBjb21wb25lbnRXaWR0aCA9IGVsZW1lbnRSZWN0YW5nbGUud2lkdGggLSA0NSAqIDIgLSAxOCA+IDEgPyA0NSA6IGVsZW1lbnRSZWN0YW5nbGUud2lkdGggKiAwLjI1O1xuICAgICAgICBjb25zdCB3aWR0aCA9IGVsZW1lbnRSZWN0YW5nbGUud2lkdGggLSAxOCAtIGNvbXBvbmVudFdpZHRoIC0gU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCAtIHN0cm9rZVdpZHRoICogMjtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHdpZHRoOiB3aWR0aCA+IDAgPyB3aWR0aCA6IDAsXG4gICAgICAgICAgICB4OiBlbGVtZW50UmVjdGFuZ2xlLnggKyBTaGFwZURlZmF1bHRTcGFjZS5yZWN0YW5nbGVBbmRUZXh0ICsgc3Ryb2tlV2lkdGgsXG4gICAgICAgICAgICB5OiBlbGVtZW50UmVjdGFuZ2xlLnkgKyAoZWxlbWVudFJlY3RhbmdsZS5oZWlnaHQgLSBoZWlnaHQpIC8gMlxuICAgICAgICB9O1xuICAgIH1cbn07XG4iXX0=
@@ -1,117 +0,0 @@
1
- import { PlaitBoard, RectangleClient, getNearestPointBetweenPointAndDiscreteSegments, setStrokeLinecap } from '@plait/core';
2
- import { getStrokeWidthByElement } from '../../utils';
3
- import { ShapeDefaultSpace } from '../../constants';
4
- import { getUnitVectorByPointAndPoint } from '@plait/common';
5
- function generateComponentPath(rectangle) {
6
- const mainLineX = rectangle.x + 12;
7
- const boxWidth = rectangle.width > 70 ? 24 : rectangle.width * 0.2;
8
- const boxHeight = rectangle.height - 28 - rectangle.height * 0.35 > 1 ? 14 : rectangle.height * 0.175;
9
- const topBoxY = rectangle.y + rectangle.height * 0.175;
10
- const bottomBoxY = rectangle.y + rectangle.height - rectangle.height * 0.175 - boxHeight;
11
- return {
12
- boxSize: {
13
- width: boxWidth,
14
- height: boxHeight
15
- },
16
- points: {
17
- mainStart: [mainLineX, rectangle.y],
18
- topBoxStart: [mainLineX, topBoxY],
19
- topBoxEnd: [mainLineX, topBoxY + boxHeight],
20
- bottomBoxStart: [mainLineX, bottomBoxY],
21
- bottomBoxEnd: [mainLineX, bottomBoxY + boxHeight],
22
- mainEnd: [mainLineX, rectangle.y + rectangle.height],
23
- rightTop: [rectangle.x + rectangle.width, rectangle.y],
24
- rightBottom: [rectangle.x + rectangle.width, rectangle.y + rectangle.height]
25
- }
26
- };
27
- }
28
- export const ComponentEngine = {
29
- draw(board, rectangle, options) {
30
- const rs = PlaitBoard.getRoughSVG(board);
31
- const { boxSize, points } = generateComponentPath(rectangle);
32
- const pathData = [
33
- // 主矩形轮廓
34
- `M${points.mainStart[0]} ${points.mainStart[1]}`,
35
- `H${points.rightTop[0]}`,
36
- `V${points.rightBottom[1]}`,
37
- `H${points.mainEnd[0]}`,
38
- // 上方小矩形
39
- `M${points.topBoxStart[0]} ${points.topBoxStart[1]}`,
40
- `h${boxSize.width / 2} v${boxSize.height} h${-boxSize.width} v${-boxSize.height} h${boxSize.width / 2}`,
41
- // 下方小矩形
42
- `M${points.bottomBoxStart[0]} ${points.bottomBoxStart[1]}`,
43
- `h${boxSize.width / 2} v${boxSize.height} h${-boxSize.width} v${-boxSize.height} h${boxSize.width / 2}`,
44
- // 连接线
45
- `M${points.mainStart[0]} ${points.mainStart[1]}`,
46
- `V${points.topBoxStart[1]}`,
47
- `M${points.topBoxEnd[0]} ${points.topBoxEnd[1]}`,
48
- `V${points.bottomBoxStart[1]}`,
49
- `M${points.bottomBoxEnd[0]} ${points.bottomBoxEnd[1]}`,
50
- `V${points.mainEnd[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 { boxSize, points } = generateComponentPath(rectangle);
58
- const segments = [
59
- // 主矩形轮廓
60
- [points.mainStart, [points.rightTop[0], points.mainStart[1]]],
61
- [[points.rightTop[0], points.mainStart[1]], points.rightBottom],
62
- [points.rightBottom, [points.mainEnd[0], points.rightBottom[1]]],
63
- [[points.mainEnd[0], points.rightBottom[1]], points.mainStart],
64
- // 上方小矩形
65
- [points.topBoxStart, [points.topBoxStart[0] + boxSize.width / 2, points.topBoxStart[1]]],
66
- [[points.topBoxStart[0] + boxSize.width / 2, points.topBoxStart[1]], [points.topBoxStart[0] + boxSize.width / 2, points.topBoxEnd[1]]],
67
- [[points.topBoxStart[0] + boxSize.width / 2, points.topBoxEnd[1]], [points.topBoxStart[0] - boxSize.width / 2, points.topBoxEnd[1]]],
68
- [[points.topBoxStart[0] - boxSize.width / 2, points.topBoxEnd[1]], [points.topBoxStart[0] - boxSize.width / 2, points.topBoxStart[1]]],
69
- [[points.topBoxStart[0] - boxSize.width / 2, points.topBoxStart[1]], points.topBoxStart],
70
- // 下方小矩形
71
- [points.bottomBoxStart, [points.bottomBoxStart[0] + boxSize.width / 2, points.bottomBoxStart[1]]],
72
- [[points.bottomBoxStart[0] + boxSize.width / 2, points.bottomBoxStart[1]], [points.bottomBoxStart[0] + boxSize.width / 2, points.bottomBoxEnd[1]]],
73
- [[points.bottomBoxStart[0] + boxSize.width / 2, points.bottomBoxEnd[1]], [points.bottomBoxStart[0] - boxSize.width / 2, points.bottomBoxEnd[1]]],
74
- [[points.bottomBoxStart[0] - boxSize.width / 2, points.bottomBoxEnd[1]], [points.bottomBoxStart[0] - boxSize.width / 2, points.bottomBoxStart[1]]],
75
- [[points.bottomBoxStart[0] - boxSize.width / 2, points.bottomBoxStart[1]], points.bottomBoxStart],
76
- // 连接线
77
- [points.mainStart, points.topBoxStart],
78
- [points.topBoxEnd, points.bottomBoxStart],
79
- [points.bottomBoxEnd, points.mainEnd]
80
- ];
81
- return getNearestPointBetweenPointAndDiscreteSegments(point, segments);
82
- },
83
- isInsidePoint(rectangle, point) {
84
- const rangeRectangle = RectangleClient.getRectangleByPoints([point, point]);
85
- return RectangleClient.isHit(rectangle, rangeRectangle);
86
- },
87
- getCornerPoints(rectangle) {
88
- return RectangleClient.getCornerPoints(rectangle);
89
- },
90
- getTangentVectorByConnectionPoint(rectangle, pointOfRectangle) {
91
- const { points } = generateComponentPath(rectangle);
92
- const connectionPoint = RectangleClient.getConnectionPoint(rectangle, pointOfRectangle);
93
- return getUnitVectorByPointAndPoint(points.mainStart, connectionPoint);
94
- },
95
- getConnectorPoints(rectangle) {
96
- const { points } = generateComponentPath(rectangle);
97
- return [
98
- [rectangle.x + rectangle.width / 2, rectangle.y],
99
- [rectangle.x + rectangle.width, rectangle.y + rectangle.height / 2],
100
- [rectangle.x + rectangle.width / 2, rectangle.y + rectangle.height],
101
- [points.mainStart[0], rectangle.y + rectangle.height / 2]
102
- ];
103
- },
104
- getTextRectangle(element) {
105
- const elementRectangle = RectangleClient.getRectangleByPoints(element.points);
106
- const strokeWidth = getStrokeWidthByElement(element);
107
- const height = element.textHeight;
108
- const width = elementRectangle.width - 24 - ShapeDefaultSpace.rectangleAndText * 2 - strokeWidth * 2;
109
- return {
110
- height,
111
- width: width > 0 ? width : 0,
112
- x: elementRectangle.x + 24 + ShapeDefaultSpace.rectangleAndText + strokeWidth,
113
- y: elementRectangle.y + (elementRectangle.height - height) / 2
114
- };
115
- }
116
- };
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZW5naW5lcy91bWwvY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBR1YsZUFBZSxFQUNmLDhDQUE4QyxFQUM5QyxnQkFBZ0IsRUFDbkIsTUFBTSxhQUFhLENBQUM7QUFJckIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQW1CN0QsU0FBUyxxQkFBcUIsQ0FBQyxTQUEwQjtJQUNyRCxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNuQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztJQUNuRSxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEcsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN2RCxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLEdBQUcsU0FBUyxDQUFDO0lBRXpGLE9BQU87UUFDSCxPQUFPLEVBQUU7WUFDTCxL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QUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxHQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEYsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxHQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxHQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxHQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUM7WUFFdEYsUUFBUTtZQUNSLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9GLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEdBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlJLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEdBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVJLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEdBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlJLENBQUMsQ0FB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Q0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1NBQ2pFLENBQUM7SUFDTixDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUGxhaXRCb2FyZCxcbiAgICBQb2ludCxcbiAgICBQb2ludE9mUmVjdGFuZ2xlLFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmREaXNjcmV0ZVNlZ21lbnRzLFxuICAgIHNldFN0cm9rZUxpbmVjYXBcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRHZW9tZXRyeSwgU2hhcGVFbmdpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IFJlY3RhbmdsZUVuZ2luZSB9IGZyb20gJy4uL2Jhc2ljLXNoYXBlcy9yZWN0YW5nbGUnO1xuaW1wb3J0IHsgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBTaGFwZURlZmF1bHRTcGFjZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXRVbml0VmVjdG9yQnlQb2ludEFuZFBvaW50IH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5cbmludGVyZmFjZSBDb21wb25lbnRQYXRoRGF0YSB7XG4gICAgYm94U2l6ZToge1xuICAgICAgICB3aWR0aDogbnVtYmVyO1xuICAgICAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICB9O1xuICAgIHBvaW50czoge1xuICAgICAgICBtYWluU3RhcnQ6IFBvaW50O1xuICAgICAgICB0b3BCb3hTdGFydDogUG9pbnQ7XG4gICAgICAgIHRvcEJveEVuZDogUG9pbnQ7XG4gICAgICAgIGJvdHRvbUJveFN0YXJ0OiBQb2ludDtcbiAgICAgICAgYm90dG9tQm94RW5kOiBQb2ludDtcbiAgICAgICAgbWFpbkVuZDogUG9pbnQ7XG4gICAgICAgIHJpZ2h0VG9wOiBQb2ludDtcbiAgICAgICAgcmlnaHRCb3R0b206IFBvaW50O1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlQ29tcG9uZW50UGF0aChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCk6IENvbXBvbmVudFBhdGhEYXRhIHtcbiAgICBjb25zdCBtYWluTGluZVggPSByZWN0YW5nbGUueCArIDEyO1xuICAgIGNvbnN0IGJveFdpZHRoID0gcmVjdGFuZ2xlLndpZHRoID4gNzAgPyAyNCA6IHJlY3RhbmdsZS53aWR0aCAqIDAuMjtcbiAgICBjb25zdCBib3hIZWlnaHQgPSByZWN0YW5nbGUuaGVpZ2h0IC0gMjggLSByZWN0YW5nbGUuaGVpZ2h0ICogMC4zNSA+IDEgPyAxNCA6IHJlY3RhbmdsZS5oZWlnaHQgKiAwLjE3NTtcbiAgICBjb25zdCB0b3BCb3hZID0gcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0ICogMC4xNzU7XG4gICAgY29uc3QgYm90dG9tQm94WSA9IHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAtIHJlY3RhbmdsZS5oZWlnaHQgKiAwLjE3NSAtIGJveEhlaWdodDtcbiAgICBcbiAgICByZXR1cm4ge1xuICAgICAgICBib3hTaXplOiB7XG4gICAgICAgICAgICB3aWR0aDogYm94V2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IGJveEhlaWdodFxuICAgICAgICB9LFxuICAgICAgICBwb2ludHM6IHtcbiAgICAgICAgICAgIG1haW5TdGFydDogW21haW5MaW5lWCwgcmVjdGFuZ2xlLnldLFxuICAgICAgICAgICAgdG9wQm94U3RhcnQ6IFttYWluTGluZVgsIHRvcEJveFldLFxuICAgICAgICAgICAgdG9wQm94RW5kOiBbbWFpbkxpbmVYLCB0b3BCb3hZICsgYm94SGVpZ2h0XSxcbiAgICAgICAgICAgIGJvdHRvbUJveFN0YXJ0OiBbbWFpbkxpbmVYLCBib3R0b21Cb3hZXSxcbiAgICAgICAgICAgIGJvdHRvbUJveEVuZDogW21haW5MaW5lWCwgYm90dG9tQm94WSArIGJveEhlaWdodF0sXG4gICAgICAgICAgICBtYWluRW5kOiBbbWFpbkxpbmVYLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHRdLFxuICAgICAgICAgICAgcmlnaHRUb3A6IFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLnldLFxuICAgICAgICAgICAgcmlnaHRCb3R0b206IFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0XVxuICAgICAgICB9XG4gICAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IENvbXBvbmVudEVuZ2luZTogU2hhcGVFbmdpbmUgPSB7XG4gICAgZHJhdyhib2FyZDogUGxhaXRCb2FyZCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcnMgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKTtcbiAgICAgICAgY29uc3QgeyBib3hTaXplLCBwb2ludHMgfSA9IGdlbmVyYXRlQ29tcG9uZW50UGF0aChyZWN0YW5nbGUpO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgcGF0aERhdGEgPSBbXG4gICAgICAgICAgICAvLyDkuLvnn6nlvaLova7lu5NcbiAgICAgICAgICAgIGBNJHtwb2ludHMubWFpblN0YXJ0WzBdfSAke3BvaW50cy5tYWluU3RhcnRbMV19YCxcbiAgICAgICAgICAgIGBIJHtwb2ludHMucmlnaHRUb3BbMF19YCxcbiAgICAgICAgICAgIGBWJHtwb2ludHMucmlnaHRCb3R0b21bMV19YCxcbiAgICAgICAgICAgIGBIJHtwb2ludHMubWFpbkVuZFswXX1gLFxuXG4gICAgICAgICAgICAvLyDkuIrmlrnlsI/nn6nlvaJcbiAgICAgICAgICAgIGBNJHtwb2ludHMudG9wQm94U3RhcnRbMF19ICR7cG9pbnRzLnRvcEJveFN0YXJ0WzFdfWAsXG4gICAgICAgICAgICBgaCR7Ym94U2l6ZS53aWR0aCAvIDJ9IHYke2JveFNpemUuaGVpZ2h0fSBoJHstYm94U2l6ZS53aWR0aH0gdiR7LWJveFNpemUuaGVpZ2h0fSBoJHtib3hTaXplLndpZHRoIC8gMn1gLFxuXG4gICAgICAgICAgICAvLyDkuIvmlrnlsI/nn6nlvaJcbiAgICAgICAgICAgIGBNJHtwb2ludHMuYm90dG9tQm94U3RhcnRbMF19ICR7cG9pbnRzLmJvdHRvbUJveFN0YXJ0WzFdfWAsXG4gICAgICAgICAgICBgaCR7Ym94U2l6ZS53aWR0aCAvIDJ9IHYke2JveFNpemUuaGVpZ2h0fSBoJHstYm94U2l6ZS53aWR0aH0gdiR7LWJveFNpemUuaGVpZ2h0fSBoJHtib3hTaXplLndpZHRoIC8gMn1gLFxuXG4gICAgICAgICAgICAvLyDov57mjqXnur9cbiAgICAgICAgICAgIGBNJHtwb2ludHMubWFpblN0YXJ0WzBdfSAke3BvaW50cy5tYWluU3RhcnRbMV19YCxcbiAgICAgICAgICAgIGBWJHtwb2ludHMudG9wQm94U3RhcnRbMV19YCxcbiAgICAgICAgICAgIGBNJHtwb2ludHMudG9wQm94RW5kWzBdfSAke3BvaW50cy50b3BCb3hFbmRbMV19YCxcbiAgICAgICAgICAgIGBWJHtwb2ludHMuYm90dG9tQm94U3RhcnRbMV19YCxcbiAgICAgICAgICAgIGBNJHtwb2ludHMuYm90dG9tQm94RW5kWzBdfSAke3BvaW50cy5ib3R0b21Cb3hFbmRbMV19YCxcbiAgICAgICAgICAgIGBWJHtwb2ludHMubWFpbkVuZFsxXX1gXG4gICAgICAgIF0uam9pbignICcpO1xuXG4gICAgICAgIGNvbnN0IHNoYXBlID0gcnMucGF0aChwYXRoRGF0YSwgeyAuLi5vcHRpb25zLCBmaWxsU3R5bGU6ICdzb2xpZCcgfSk7XG4gICAgICAgIHNldFN0cm9rZUxpbmVjYXAoc2hhcGUsICdyb3VuZCcpO1xuICAgICAgICByZXR1cm4gc2hhcGU7XG4gICAgfSxcblxuICAgIGdldE5lYXJlc3RQb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIGNvbnN0IHsgYm94U2l6ZSwgcG9pbnRzIH0gPSBnZW5lcmF0ZUNvbXBvbmVudFBhdGgocmVjdGFuZ2xlKTtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IHNlZ21lbnRzOiBbUG9pbnQsIFBvaW50XVtdID0gW1xuICAgICAgICAgICAgLy8g5Li755+p5b2i6L2u5buTXG4gICAgICAgICAgICBbcG9pbnRzLm1haW5TdGFydCwgW3BvaW50cy5yaWdodFRvcFswXSwgcG9pbnRzLm1haW5TdGFydFsxXV1dLFxuICAgICAgICAgICAgW1twb2ludHMucmlnaHRUb3BbMF0sIHBvaW50cy5tYWluU3RhcnRbMV1dLCBwb2ludHMucmlnaHRCb3R0b21dLFxuICAgICAgICAgICAgW3BvaW50cy5yaWdodEJvdHRvbSwgW3BvaW50cy5tYWluRW5kWzBdLCBwb2ludHMucmlnaHRCb3R0b21bMV1dXSxcbiAgICAgICAgICAgIFtbcG9pbnRzLm1haW5FbmRbMF0sIHBvaW50cy5yaWdodEJvdHRvbVsxXV0sIHBvaW50cy5tYWluU3RhcnRdLFxuXG4gICAgICAgICAgICAvLyDkuIrmlrnlsI/nn6nlvaJcbiAgICAgICAgICAgIFtwb2ludHMudG9wQm94U3RhcnQsIFtwb2ludHMudG9wQm94U3RhcnRbMF0gKyBib3hTaXplLndpZHRoLzIsIHBvaW50cy50b3BCb3hTdGFydFsxXV1dLFxuICAgICAgICAgICAgW1twb2ludHMudG9wQm94U3RhcnRbMF0gKyBib3hTaXplLndpZHRoLzIsIHBvaW50cy50b3BCb3hTdGFydFsxXV0sIFtwb2ludHMudG9wQm94U3RhcnRbMF0gKyBib3hTaXplLndpZHRoLzIsIHBvaW50cy50b3BCb3hFbmRbMV1dXSxcbiAgICAgICAgICAgIFtbcG9pbnRzLnRvcEJveFN0YXJ0WzBdICsgYm94U2l6ZS53aWR0aC8yLCBwb2ludHMudG9wQm94RW5kWzFdXSwgW3BvaW50cy50b3BCb3hTdGFydFswXSAtIGJveFNpemUud2lkdGgvMiwgcG9pbnRzLnRvcEJveEVuZFsxXV1dLFxuICAgICAgICAgICAgW1twb2ludHMudG9wQm94U3RhcnRbMF0gLSBib3hTaXplLndpZHRoLzIsIHBvaW50cy50b3BCb3hFbmRbMV1dLCBbcG9pbnRzLnRvcEJveFN0YXJ0WzBdIC0gYm94U2l6ZS53aWR0aC8yLCBwb2ludHMudG9wQm94U3RhcnRbMV1dXSxcbiAgICAgICAgICAgIFtbcG9pbnRzLnRvcEJveFN0YXJ0WzBdIC0gYm94U2l6ZS53aWR0aC8yLCBwb2ludHMudG9wQm94U3RhcnRbMV1dLCBwb2ludHMudG9wQm94U3RhcnRdLFxuXG4gICAgICAgICAgICAvLyDkuIvmlrnlsI/nn6nlvaJcbiAgICAgICAgICAgIFtwb2ludHMuYm90dG9tQm94U3RhcnQsIFtwb2ludHMuYm90dG9tQm94U3RhcnRbMF0gKyBib3hTaXplLndpZHRoLzIsIHBvaW50cy5ib3R0b21Cb3hTdGFydFsxXV1dLFxuICAgICAgICAgICAgW1twb2ludHMuYm90dG9tQm94U3RhcnRbMF0gKyBib3hTaXplLndpZHRoLzIsIHBvaW50cy5ib3R0b21Cb3hTdGFydFsxXV0sIFtwb2ludHMuYm90dG9tQm94U3RhcnRbMF0gKyBib3hTaXplLndpZHRoLzIsIHBvaW50cy5ib3R0b21Cb3hFbmRbMV1dXSxcbiAgICAgICAgICAgIFtbcG9pbnRzLmJvdHRvbUJveFN0YXJ0WzBdICsgYm94U2l6ZS53aWR0aC8yLCBwb2ludHMuYm90dG9tQm94RW5kWzFdXSwgW3BvaW50cy5ib3R0b21Cb3hTdGFydFswXSAtIGJveFNpemUud2lkdGgvMiwgcG9pbnRzLmJvdHRvbUJveEVuZFsxXV1dLFxuICAgICAgICAgICAgW1twb2ludHMuYm90dG9tQm94U3RhcnRbMF0gLSBib3hTaXplLndpZHRoLzIsIHBvaW50cy5ib3R0b21Cb3hFbmRbMV1dLCBbcG9pbnRzLmJvdHRvbUJveFN0YXJ0WzBdIC0gYm94U2l6ZS53aWR0aC8yLCBwb2ludHMuYm90dG9tQm94U3RhcnRbMV1dXSxcbiAgICAgICAgICAgIFtbcG9pbnRzLmJvdHRvbUJveFN0YXJ0WzBdIC0gYm94U2l6ZS53aWR0aC8yLCBwb2ludHMuYm90dG9tQm94U3RhcnRbMV1dLCBwb2ludHMuYm90dG9tQm94U3RhcnRdLFxuXG4gICAgICAgICAgICAvLyDov57mjqXnur9cbiAgICAgICAgICAgIFtwb2ludHMubWFpblN0YXJ0LCBwb2ludHMudG9wQm94U3RhcnRdLFxuICAgICAgICAgICAgW3BvaW50cy50b3BCb3hFbmQsIHBvaW50cy5ib3R0b21Cb3hTdGFydF0sXG4gICAgICAgICAgICBbcG9pbnRzLmJvdHRvbUJveEVuZCwgcG9pbnRzLm1haW5FbmRdXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZERpc2NyZXRlU2VnbWVudHMocG9pbnQsIHNlZ21lbnRzKTtcbiAgICB9LFxuXG4gICAgaXNJbnNpZGVQb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIGNvbnN0IHJhbmdlUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKFtwb2ludCwgcG9pbnRdKTtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5pc0hpdChyZWN0YW5nbGUsIHJhbmdlUmVjdGFuZ2xlKTtcbiAgICB9LFxuXG4gICAgZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSxcblxuICAgIGdldFRhbmdlbnRWZWN0b3JCeUNvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnRPZlJlY3RhbmdsZTogUG9pbnRPZlJlY3RhbmdsZSkge1xuICAgICAgICBjb25zdCB7IHBvaW50cyB9ID0gZ2VuZXJhdGVDb21wb25lbnRQYXRoKHJlY3RhbmdsZSk7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25Qb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBwb2ludE9mUmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQocG9pbnRzLm1haW5TdGFydCwgY29ubmVjdGlvblBvaW50KTtcbiAgICB9LFxuXG4gICAgZ2V0Q29ubmVjdG9yUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIGNvbnN0IHsgcG9pbnRzIH0gPSBnZW5lcmF0ZUNvbXBvbmVudFBhdGgocmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAvIDIsIHJlY3RhbmdsZS55XSxcbiAgICAgICAgICAgIFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMl0sXG4gICAgICAgICAgICBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLyAyLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHRdLFxuICAgICAgICAgICAgW3BvaW50cy5tYWluU3RhcnRbMF0sIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDJdXG4gICAgICAgIF0gYXMgW1BvaW50LCBQb2ludCwgUG9pbnQsIFBvaW50XTtcbiAgICB9LFxuXG4gICAgZ2V0VGV4dFJlY3RhbmdsZShlbGVtZW50OiBQbGFpdEdlb21ldHJ5KSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMhKTtcbiAgICAgICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC50ZXh0SGVpZ2h0ITtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBlbGVtZW50UmVjdGFuZ2xlLndpZHRoIC0gMjQgLSBTaGFwZURlZmF1bHRTcGFjZS5yZWN0YW5nbGVBbmRUZXh0ICogMiAtIHN0cm9rZVdpZHRoICogMjtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHdpZHRoOiB3aWR0aCA+IDAgPyB3aWR0aCA6IDAsXG4gICAgICAgICAgICB4OiBlbGVtZW50UmVjdGFuZ2xlLnggKyAyNCArIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKyBzdHJva2VXaWR0aCxcbiAgICAgICAgICAgIHk6IGVsZW1lbnRSZWN0YW5nbGUueSArIChlbGVtZW50UmVjdGFuZ2xlLmhlaWdodCAtIGhlaWdodCkgLyAyXG4gICAgICAgIH07XG4gICAgfVxufTtcbiJdfQ==
@@ -1,44 +0,0 @@
1
- import { PlaitBoard, RectangleClient, getNearestPointBetweenPointAndSegments, setStrokeLinecap } from '@plait/core';
2
- import { getPolygonEdgeByConnectionPoint } from '../../utils/polygon';
3
- import { RectangleEngine } from '../basic-shapes/rectangle';
4
- import { getStrokeWidthByElement } from '../../utils';
5
- import { ShapeDefaultSpace } from '../../constants';
6
- export const ContainerEngine = {
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 + 40} ${rectangle.y} L${rectangle.x + 40} ${rectangle.y + rectangle.height} `, { ...options, fillStyle: 'solid' });
10
- setStrokeLinecap(shape, 'round');
11
- return shape;
12
- },
13
- isInsidePoint(rectangle, point) {
14
- const rangeRectangle = RectangleClient.getRectangleByPoints([point, point]);
15
- return RectangleClient.isHit(rectangle, rangeRectangle);
16
- },
17
- getCornerPoints(rectangle) {
18
- return RectangleClient.getCornerPoints(rectangle);
19
- },
20
- getNearestPoint(rectangle, point) {
21
- return getNearestPointBetweenPointAndSegments(point, RectangleEngine.getCornerPoints(rectangle));
22
- },
23
- getEdgeByConnectionPoint(rectangle, pointOfRectangle) {
24
- const corners = RectangleEngine.getCornerPoints(rectangle);
25
- const point = RectangleClient.getConnectionPoint(rectangle, pointOfRectangle);
26
- return getPolygonEdgeByConnectionPoint(corners, point);
27
- },
28
- getConnectorPoints(rectangle) {
29
- return RectangleClient.getEdgeCenterPoints(rectangle);
30
- },
31
- getTextRectangle(element) {
32
- const elementRectangle = RectangleClient.getRectangleByPoints(element.points);
33
- const strokeWidth = getStrokeWidthByElement(element);
34
- const height = element.textHeight;
35
- const width = 40 - ShapeDefaultSpace.rectangleAndText * 2 - strokeWidth * 2;
36
- return {
37
- height,
38
- width: width > 0 ? width : 0,
39
- x: elementRectangle.x + ShapeDefaultSpace.rectangleAndText + strokeWidth,
40
- y: elementRectangle.y + (elementRectangle.height - height) / 2
41
- };
42
- }
43
- };
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZW5naW5lcy91bWwvY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBR1YsZUFBZSxFQUNmLHNDQUFzQyxFQUN0QyxnQkFBZ0IsRUFDbkIsTUFBTSxhQUFhLENBQUM7QUFHckIsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQWdCO0lBQ3hDLElBQUksQ0FBQyxLQUFpQixFQUFFLFNBQTBCLEVBQUUsT0FBZ0I7UUFDaEUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxDQUNqQixJQUFJLFNBQVMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxLQUMvRixTQUFTLENBQUMsQ0FDZCxPQUFPLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLFNBQVMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLEVBQ2hHLEVBQUUsR0FBRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUNyQyxDQUFDO1FBQ0YsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWpDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxhQUFhLENBQUMsU0FBMEIsRUFBRSxLQUFZO1FBQ2xELE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzVFLE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUNELGVBQWUsQ0FBQyxTQUEwQjtRQUN0QyxPQUFPLGVBQWUsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELGVBQWUsQ0FBQyxTQUEwQixFQUFFLEtBQVk7UUFDcEQsT0FBTyxzQ0FBc0MsQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFDRCx3QkFBd0IsQ0FBQyxTQUEwQixFQUFFLGdCQUFrQztRQUNuRixNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNELE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUM5RSxPQUFPLCtCQUErQixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBQ0Qsa0JBQWtCLENBQUMsU0FBMEI7UUFDekMsT0FBTyxlQUFlLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNELGdCQUFnQixDQUFDLE9BQXNCO1FBQ25DLE1BQU0sZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxNQUFPLENBQUMsQ0FBQztRQUMvRSxNQUFNLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVyxDQUFDO1FBQ25DLE1BQU0sS0FBSyxHQUFHLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUM1RSxPQUFPO1lBQ0gsTUFBTTtZQUNOLEtBQUssRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUIsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXO1lBQ3hFLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztTQUNqRSxDQUFDO0lBQ04sQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFBsYWl0Qm9hcmQsXG4gICAgUG9pbnQsXG4gICAgUG9pbnRPZlJlY3RhbmdsZSxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMsXG4gICAgc2V0U3Ryb2tlTGluZWNhcFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdEdlb21ldHJ5LCBTaGFwZUVuZ2luZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgZ2V0UG9seWdvbkVkZ2VCeUNvbm5lY3Rpb25Qb2ludCB9IGZyb20gJy4uLy4uL3V0aWxzL3BvbHlnb24nO1xuaW1wb3J0IHsgUmVjdGFuZ2xlRW5naW5lIH0gZnJvbSAnLi4vYmFzaWMtc2hhcGVzL3JlY3RhbmdsZSc7XG5pbXBvcnQgeyBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IFNoYXBlRGVmYXVsdFNwYWNlIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcblxuZXhwb3J0IGNvbnN0IENvbnRhaW5lckVuZ2luZTogU2hhcGVFbmdpbmUgPSB7XG4gICAgZHJhdyhib2FyZDogUGxhaXRCb2FyZCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcnMgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKTtcbiAgICAgICAgY29uc3Qgc2hhcGUgPSBycy5wYXRoKFxuICAgICAgICAgICAgYE0ke3JlY3RhbmdsZS54fSAke3JlY3RhbmdsZS55fSBIJHtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aH0gViR7cmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0fSBIJHtcbiAgICAgICAgICAgICAgICByZWN0YW5nbGUueFxuICAgICAgICAgICAgfSBaIE0ke3JlY3RhbmdsZS54ICsgNDB9ICR7cmVjdGFuZ2xlLnl9IEwke3JlY3RhbmdsZS54ICsgNDB9ICR7cmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0fSBgLFxuICAgICAgICAgICAgeyAuLi5vcHRpb25zLCBmaWxsU3R5bGU6ICdzb2xpZCcgfVxuICAgICAgICApO1xuICAgICAgICBzZXRTdHJva2VMaW5lY2FwKHNoYXBlLCAncm91bmQnKTtcblxuICAgICAgICByZXR1cm4gc2hhcGU7XG4gICAgfSxcbiAgICBpc0luc2lkZVBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgY29uc3QgcmFuZ2VSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3BvaW50LCBwb2ludF0pO1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHJlY3RhbmdsZSwgcmFuZ2VSZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXROZWFyZXN0UG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkge1xuICAgICAgICByZXR1cm4gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMocG9pbnQsIFJlY3RhbmdsZUVuZ2luZS5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKSk7XG4gICAgfSxcbiAgICBnZXRFZGdlQnlDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50T2ZSZWN0YW5nbGU6IFBvaW50T2ZSZWN0YW5nbGUpOiBbUG9pbnQsIFBvaW50XSB8IG51bGwge1xuICAgICAgICBjb25zdCBjb3JuZXJzID0gUmVjdGFuZ2xlRW5naW5lLmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpO1xuICAgICAgICBjb25zdCBwb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBwb2ludE9mUmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIGdldFBvbHlnb25FZGdlQnlDb25uZWN0aW9uUG9pbnQoY29ybmVycywgcG9pbnQpO1xuICAgIH0sXG4gICAgZ2V0Q29ubmVjdG9yUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0RWRnZUNlbnRlclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0VGV4dFJlY3RhbmdsZShlbGVtZW50OiBQbGFpdEdlb21ldHJ5KSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMhKTtcbiAgICAgICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC50ZXh0SGVpZ2h0ITtcbiAgICAgICAgY29uc3Qgd2lkdGggPSA0MCAtIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKiAyIC0gc3Ryb2tlV2lkdGggKiAyO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgd2lkdGg6IHdpZHRoID4gMCA/IHdpZHRoIDogMCxcbiAgICAgICAgICAgIHg6IGVsZW1lbnRSZWN0YW5nbGUueCArIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKyBzdHJva2VXaWR0aCxcbiAgICAgICAgICAgIHk6IGVsZW1lbnRSZWN0YW5nbGUueSArIChlbGVtZW50UmVjdGFuZ2xlLmhlaWdodCAtIGhlaWdodCkgLyAyXG4gICAgICAgIH07XG4gICAgfVxufTtcbiJdfQ==
@@ -1,54 +0,0 @@
1
- import { PlaitBoard, RectangleClient, distanceBetweenPointAndPoint, getNearestPointBetweenPointAndSegment, setStrokeLinecap } from '@plait/core';
2
- import { getPolygonEdgeByConnectionPoint } from '../../utils/polygon';
3
- import { RectangleEngine } from '../basic-shapes/rectangle';
4
- function getDeletionLines(rectangle) {
5
- return [
6
- [
7
- [rectangle.x, rectangle.y],
8
- [rectangle.x + rectangle.width, rectangle.y + rectangle.height]
9
- ],
10
- [
11
- [rectangle.x + rectangle.width, rectangle.y],
12
- [rectangle.x, rectangle.y + rectangle.height]
13
- ]
14
- ];
15
- }
16
- export const DeletionEngine = {
17
- draw(board, rectangle, options) {
18
- const rs = PlaitBoard.getRoughSVG(board);
19
- const lines = getDeletionLines(rectangle);
20
- const shape = rs.path(lines.map(([from, to]) => `M${from[0]} ${from[1]} L${to[0]} ${to[1]}`).join(' '), { ...options, fillStyle: 'solid', strokeWidth: 4 });
21
- setStrokeLinecap(shape, 'round');
22
- return shape;
23
- },
24
- isInsidePoint(rectangle, point) {
25
- const rangeRectangle = RectangleClient.getRectangleByPoints([point, point]);
26
- return RectangleClient.isHit(rectangle, rangeRectangle);
27
- },
28
- getCornerPoints(rectangle) {
29
- return RectangleClient.getCornerPoints(rectangle);
30
- },
31
- getNearestPoint(rectangle, point) {
32
- const lines = getDeletionLines(rectangle);
33
- let minDistance = Infinity;
34
- let nearestPoint = point;
35
- lines.forEach(line => {
36
- const currentPoint = getNearestPointBetweenPointAndSegment(point, line);
37
- const distance = distanceBetweenPointAndPoint(point[0], point[1], currentPoint[0], currentPoint[1]);
38
- if (distance < minDistance) {
39
- minDistance = distance;
40
- nearestPoint = currentPoint;
41
- }
42
- });
43
- return nearestPoint;
44
- },
45
- getEdgeByConnectionPoint(rectangle, pointOfRectangle) {
46
- const corners = RectangleEngine.getCornerPoints(rectangle);
47
- const point = RectangleClient.getConnectionPoint(rectangle, pointOfRectangle);
48
- return getPolygonEdgeByConnectionPoint(corners, point);
49
- },
50
- getConnectorPoints(rectangle) {
51
- return RectangleClient.getEdgeCenterPoints(rectangle);
52
- }
53
- };
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9lbmdpbmVzL3VtbC9kZWxldGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUdWLGVBQWUsRUFDZiw0QkFBNEIsRUFDNUIscUNBQXFDLEVBRXJDLGdCQUFnQixFQUNuQixNQUFNLGFBQWEsQ0FBQztBQUdyQixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFNUQsU0FBUyxnQkFBZ0IsQ0FBQyxTQUEwQjtJQUNoRCxPQUFPO1FBQ0g7WUFDSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUMxQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7U0FDbEU7UUFDRDtZQUNJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztTQUNoRDtLQUNKLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFnQjtJQUN2QyxJQUFJLENBQUMsS0FBaUIsRUFBRSxTQUEwQixFQUFFLE9BQWdCO1FBQ2hFLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FDakIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUNoRixFQUFFLEdBQUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUNyRCxDQUFDO1FBQ0YsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxhQUFhLENBQUMsU0FBMEIsRUFBRSxLQUFZO1FBQ2xELE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzVFLE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUNELGVBQWUsQ0FBQyxTQUEwQjtRQUN0QyxPQUFPLGVBQWUsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELGVBQWUsQ0FBQyxTQUEwQixFQUFFLEtBQVk7UUFDcEQsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUMsSUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDO1FBQzNCLElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pCLE1BQU0sWUFBWSxHQUFHLHFDQUFxQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN4RSxNQUFNLFFBQVEsR0FBRyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRyxJQUFJLFFBQVEsR0FBRyxXQUFXLEVBQUUsQ0FBQztnQkFDekIsV0FBVyxHQUFHLFFBQVEsQ0FBQztnQkFDdkIsWUFBWSxHQUFHLFlBQVksQ0FBQztZQUNoQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBQ0Qsd0JBQXdCLENBQUMsU0FBMEIsRUFBRSxnQkFBa0M7UUFDbkYsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzRCxNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDOUUsT0FBTywrQkFBK0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUNELGtCQUFrQixDQUFDLFNBQTBCO1FBQ3pDLE9BQU8sZUFBZSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFELENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBvaW50LFxuICAgIFBvaW50T2ZSZWN0YW5nbGUsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQsXG4gICAgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudCxcbiAgICBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyxcbiAgICBzZXRTdHJva2VMaW5lY2FwXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFNoYXBlRW5naW5lIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAncm91Z2hqcy9iaW4vY29yZSc7XG5pbXBvcnQgeyBnZXRQb2x5Z29uRWRnZUJ5Q29ubmVjdGlvblBvaW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9seWdvbic7XG5pbXBvcnQgeyBSZWN0YW5nbGVFbmdpbmUgfSBmcm9tICcuLi9iYXNpYy1zaGFwZXMvcmVjdGFuZ2xlJztcblxuZnVuY3Rpb24gZ2V0RGVsZXRpb25MaW5lcyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCk6IEFycmF5PFtQb2ludCwgUG9pbnRdPiB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgW1xuICAgICAgICAgICAgW3JlY3RhbmdsZS54LCByZWN0YW5nbGUueV0sXG4gICAgICAgICAgICBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGgsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodF1cbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgICAgW3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoLCByZWN0YW5nbGUueV0sXG4gICAgICAgICAgICBbcmVjdGFuZ2xlLngsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodF1cbiAgICAgICAgXVxuICAgIF07XG59XG5cbmV4cG9ydCBjb25zdCBEZWxldGlvbkVuZ2luZTogU2hhcGVFbmdpbmUgPSB7XG4gICAgZHJhdyhib2FyZDogUGxhaXRCb2FyZCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcnMgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKTtcbiAgICAgICAgY29uc3QgbGluZXMgPSBnZXREZWxldGlvbkxpbmVzKHJlY3RhbmdsZSk7XG4gICAgICAgIGNvbnN0IHNoYXBlID0gcnMucGF0aChcbiAgICAgICAgICAgIGxpbmVzLm1hcCgoW2Zyb20sIHRvXSkgPT4gYE0ke2Zyb21bMF19ICR7ZnJvbVsxXX0gTCR7dG9bMF19ICR7dG9bMV19YCkuam9pbignICcpLFxuICAgICAgICAgICAgeyAuLi5vcHRpb25zLCBmaWxsU3R5bGU6ICdzb2xpZCcsIHN0cm9rZVdpZHRoOiA0IH1cbiAgICAgICAgKTtcbiAgICAgICAgc2V0U3Ryb2tlTGluZWNhcChzaGFwZSwgJ3JvdW5kJyk7XG4gICAgICAgIHJldHVybiBzaGFwZTtcbiAgICB9LFxuICAgIGlzSW5zaWRlUG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkge1xuICAgICAgICBjb25zdCByYW5nZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbcG9pbnQsIHBvaW50XSk7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuaXNIaXQocmVjdGFuZ2xlLCByYW5nZVJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICB9LFxuICAgIGdldE5lYXJlc3RQb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gZ2V0RGVsZXRpb25MaW5lcyhyZWN0YW5nbGUpO1xuICAgICAgICBsZXQgbWluRGlzdGFuY2UgPSBJbmZpbml0eTtcbiAgICAgICAgbGV0IG5lYXJlc3RQb2ludCA9IHBvaW50O1xuICAgICAgICBsaW5lcy5mb3JFYWNoKGxpbmUgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFBvaW50ID0gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudChwb2ludCwgbGluZSk7XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQocG9pbnRbMF0sIHBvaW50WzFdLCBjdXJyZW50UG9pbnRbMF0sIGN1cnJlbnRQb2ludFsxXSk7XG4gICAgICAgICAgICBpZiAoZGlzdGFuY2UgPCBtaW5EaXN0YW5jZSkge1xuICAgICAgICAgICAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgICAgICAgICAgICAgbmVhcmVzdFBvaW50ID0gY3VycmVudFBvaW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG5lYXJlc3RQb2ludDtcbiAgICB9LFxuICAgIGdldEVkZ2VCeUNvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnRPZlJlY3RhbmdsZTogUG9pbnRPZlJlY3RhbmdsZSk6IFtQb2ludCwgUG9pbnRdIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGNvcm5lcnMgPSBSZWN0YW5nbGVFbmdpbmUuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgICAgIGNvbnN0IHBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGUsIHBvaW50T2ZSZWN0YW5nbGUpO1xuICAgICAgICByZXR1cm4gZ2V0UG9seWdvbkVkZ2VCeUNvbm5lY3Rpb25Qb2ludChjb3JuZXJzLCBwb2ludCk7XG4gICAgfSxcbiAgICBnZXRDb25uZWN0b3JQb2ludHMocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRFZGdlQ2VudGVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfVxufTtcbiJdfQ==
@@ -1,58 +0,0 @@
1
- import { PlaitBoard, RectangleClient, getEllipseTangentSlope, getNearestPointBetweenPointAndSegments, getVectorFromPointAndSlope, setStrokeLinecap, getNearestPointBetweenPointAndEllipse } from '@plait/core';
2
- import { RectangleEngine } from '../basic-shapes/rectangle';
3
- import { getStrokeWidthByElement } from '../../utils';
4
- import { ShapeDefaultSpace } from '../../constants';
5
- export const NoteEngine = {
6
- draw(board, rectangle, options) {
7
- const rs = PlaitBoard.getRoughSVG(board);
8
- const shape = rs.path(`M${rectangle.x} ${rectangle.y}
9
- h${rectangle.width - 16}
10
- v16
11
- h16
12
- v${rectangle.height - 16}
13
- h${-rectangle.width}
14
- Z
15
- M${rectangle.x + rectangle.width - 16} ${rectangle.y}
16
- A16 16, 0,0,1, ${rectangle.x + rectangle.width} ${rectangle.y + 16}
17
- `, { ...options, fillStyle: 'solid' });
18
- setStrokeLinecap(shape, 'round');
19
- return shape;
20
- },
21
- isInsidePoint(rectangle, point) {
22
- const rangeRectangle = RectangleClient.getRectangleByPoints([point, point]);
23
- return RectangleClient.isHit(rectangle, rangeRectangle);
24
- },
25
- getCornerPoints(rectangle) {
26
- return RectangleClient.getCornerPoints(rectangle);
27
- },
28
- getNearestPoint(rectangle, point) {
29
- const nearestPoint = getNearestPointBetweenPointAndSegments(point, RectangleEngine.getCornerPoints(rectangle));
30
- if (nearestPoint[0] > rectangle.x + rectangle.width - 16 && nearestPoint[1] < rectangle.y + 16) {
31
- return getNearestPointBetweenPointAndEllipse(point, [rectangle.x + rectangle.width - 16, rectangle.y + 16], 16, 16);
32
- }
33
- return nearestPoint;
34
- },
35
- getTangentVectorByConnectionPoint(rectangle, pointOfRectangle) {
36
- const connectionPoint = RectangleClient.getConnectionPoint(rectangle, pointOfRectangle);
37
- const centerPoint = [rectangle.x + (rectangle.width * 3) / 4, rectangle.y + rectangle.height / 2];
38
- const point = [connectionPoint[0] - centerPoint[0], -(connectionPoint[1] - centerPoint[1])];
39
- const slope = getEllipseTangentSlope(point[0], point[1], 16, 16);
40
- return getVectorFromPointAndSlope(point[0], point[1], slope);
41
- },
42
- getConnectorPoints(rectangle) {
43
- return RectangleClient.getEdgeCenterPoints(rectangle);
44
- },
45
- getTextRectangle: (element) => {
46
- const elementRectangle = RectangleClient.getRectangleByPoints(element.points);
47
- const strokeWidth = getStrokeWidthByElement(element);
48
- const height = element.textHeight;
49
- const width = elementRectangle.width - ShapeDefaultSpace.rectangleAndText * 2 - strokeWidth - 15;
50
- return {
51
- height,
52
- width: width > 0 ? width : 0,
53
- x: elementRectangle.x + ShapeDefaultSpace.rectangleAndText + strokeWidth,
54
- y: elementRectangle.y + (elementRectangle.height - height) / 2
55
- };
56
- }
57
- };
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL2VuZ2luZXMvdW1sL25vdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFVBQVUsRUFHVixlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3RCLHNDQUFzQyxFQUN0QywwQkFBMEIsRUFDMUIsZ0JBQWdCLEVBQ2hCLHFDQUFxQyxFQUN4QyxNQUFNLGFBQWEsQ0FBQztBQUdyQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBZ0I7SUFDbkMsSUFBSSxDQUFDLEtBQWlCLEVBQUUsU0FBMEIsRUFBRSxPQUFnQjtRQUNoRSxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQ2pCLElBQUksU0FBUyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQztlQUMzQixTQUFTLENBQUMsS0FBSyxHQUFHLEVBQUU7OztlQUdwQixTQUFTLENBQUMsTUFBTSxHQUFHLEVBQUU7ZUFDckIsQ0FBQyxTQUFTLENBQUMsS0FBSzs7ZUFFaEIsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLEVBQUUsSUFBSSxTQUFTLENBQUMsQ0FBQzs2QkFDbkMsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRTthQUNqRSxFQUNELEVBQUUsR0FBRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUNyQyxDQUFDO1FBQ0YsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWpDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxhQUFhLENBQUMsU0FBMEIsRUFBRSxLQUFZO1FBQ2xELE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzVFLE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUNELGVBQWUsQ0FBQyxTQUEwQjtRQUN0QyxPQUFPLGVBQWUsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELGVBQWUsQ0FBQyxTQUEwQixFQUFFLEtBQVk7UUFDcEQsTUFBTSxZQUFZLEdBQUcsc0NBQXNDLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUMvRyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQzdGLE9BQU8scUNBQXFDLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4SCxDQUFDO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUNELGlDQUFpQyxDQUFDLFNBQTBCLEVBQUUsZ0JBQWtDO1FBQzVGLE1BQU0sZUFBZSxHQUFHLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUN4RixNQUFNLFdBQVcsR0FBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekcsTUFBTSxLQUFLLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RixNQUFNLEtBQUssR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQVEsQ0FBQztRQUN4RSxPQUFPLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUNELGtCQUFrQixDQUFDLFNBQTBCO1FBQ3pDLE9BQU8sZUFBZSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFDRCxnQkFBZ0IsRUFBRSxDQUFDLE9BQXNCLEVBQUUsRUFBRTtRQUN6QyxNQUFNLGdCQUFnQixHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsTUFBTyxDQUFDLENBQUM7UUFDL0UsTUFBTSxXQUFXLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFVBQVcsQ0FBQztRQUNuQyxNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDakcsT0FBTztZQUNILE1BQU07WUFDTixLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsV0FBVztZQUN4RSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7U0FDakUsQ0FBQztJQUNOLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBvaW50LFxuICAgIFBvaW50T2ZSZWN0YW5nbGUsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIGdldEVsbGlwc2VUYW5nZW50U2xvcGUsXG4gICAgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMsXG4gICAgZ2V0VmVjdG9yRnJvbVBvaW50QW5kU2xvcGUsXG4gICAgc2V0U3Ryb2tlTGluZWNhcCxcbiAgICBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRFbGxpcHNlXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0R2VvbWV0cnksIFNoYXBlRW5naW5lIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAncm91Z2hqcy9iaW4vY29yZSc7XG5pbXBvcnQgeyBSZWN0YW5nbGVFbmdpbmUgfSBmcm9tICcuLi9iYXNpYy1zaGFwZXMvcmVjdGFuZ2xlJztcbmltcG9ydCB7IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgU2hhcGVEZWZhdWx0U3BhY2UgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgTm90ZUVuZ2luZTogU2hhcGVFbmdpbmUgPSB7XG4gICAgZHJhdyhib2FyZDogUGxhaXRCb2FyZCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcnMgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKTtcbiAgICAgICAgY29uc3Qgc2hhcGUgPSBycy5wYXRoKFxuICAgICAgICAgICAgYE0ke3JlY3RhbmdsZS54fSAke3JlY3RhbmdsZS55fSBcbiAgICAgICAgICAgIGgke3JlY3RhbmdsZS53aWR0aCAtIDE2fVxuICAgICAgICAgICAgdjE2XG4gICAgICAgICAgICBoMTZcbiAgICAgICAgICAgIHYke3JlY3RhbmdsZS5oZWlnaHQgLSAxNn1cbiAgICAgICAgICAgIGgkey1yZWN0YW5nbGUud2lkdGh9XG4gICAgICAgICAgICBaXG4gICAgICAgICAgICBNJHtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAtIDE2fSAke3JlY3RhbmdsZS55fSBcbiAgICAgICAgICAgIEExNiAxNiwgMCwwLDEsICR7cmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGh9ICR7cmVjdGFuZ2xlLnkgKyAxNn1cbiAgICAgICAgICAgIGAsXG4gICAgICAgICAgICB7IC4uLm9wdGlvbnMsIGZpbGxTdHlsZTogJ3NvbGlkJyB9XG4gICAgICAgICk7XG4gICAgICAgIHNldFN0cm9rZUxpbmVjYXAoc2hhcGUsICdyb3VuZCcpO1xuXG4gICAgICAgIHJldHVybiBzaGFwZTtcbiAgICB9LFxuICAgIGlzSW5zaWRlUG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkge1xuICAgICAgICBjb25zdCByYW5nZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbcG9pbnQsIHBvaW50XSk7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuaXNIaXQocmVjdGFuZ2xlLCByYW5nZVJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICB9LFxuICAgIGdldE5lYXJlc3RQb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIGNvbnN0IG5lYXJlc3RQb2ludCA9IGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzKHBvaW50LCBSZWN0YW5nbGVFbmdpbmUuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSkpO1xuICAgICAgICBpZiAobmVhcmVzdFBvaW50WzBdID4gcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLSAxNiAmJiBuZWFyZXN0UG9pbnRbMV0gPCByZWN0YW5nbGUueSArIDE2KSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kRWxsaXBzZShwb2ludCwgW3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoIC0gMTYsIHJlY3RhbmdsZS55ICsgMTZdLCAxNiwgMTYpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZWFyZXN0UG9pbnQ7XG4gICAgfSxcbiAgICBnZXRUYW5nZW50VmVjdG9yQnlDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50T2ZSZWN0YW5nbGU6IFBvaW50T2ZSZWN0YW5nbGUpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdGlvblBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGUsIHBvaW50T2ZSZWN0YW5nbGUpO1xuICAgICAgICBjb25zdCBjZW50ZXJQb2ludDogUG9pbnQgPSBbcmVjdGFuZ2xlLnggKyAocmVjdGFuZ2xlLndpZHRoICogMykgLyA0LCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyXTtcbiAgICAgICAgY29uc3QgcG9pbnQgPSBbY29ubmVjdGlvblBvaW50WzBdIC0gY2VudGVyUG9pbnRbMF0sIC0oY29ubmVjdGlvblBvaW50WzFdIC0gY2VudGVyUG9pbnRbMV0pXTtcbiAgICAgICAgY29uc3Qgc2xvcGUgPSBnZXRFbGxpcHNlVGFuZ2VudFNsb3BlKHBvaW50WzBdLCBwb2ludFsxXSwgMTYsIDE2KSBhcyBhbnk7XG4gICAgICAgIHJldHVybiBnZXRWZWN0b3JGcm9tUG9pbnRBbmRTbG9wZShwb2ludFswXSwgcG9pbnRbMV0sIHNsb3BlKTtcbiAgICB9LFxuICAgIGdldENvbm5lY3RvclBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldEVkZ2VDZW50ZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICB9LFxuICAgIGdldFRleHRSZWN0YW5nbGU6IChlbGVtZW50OiBQbGFpdEdlb21ldHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMhKTtcbiAgICAgICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC50ZXh0SGVpZ2h0ITtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBlbGVtZW50UmVjdGFuZ2xlLndpZHRoIC0gU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCAqIDIgLSBzdHJva2VXaWR0aCAtIDE1O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgd2lkdGg6IHdpZHRoID4gMCA/IHdpZHRoIDogMCxcbiAgICAgICAgICAgIHg6IGVsZW1lbnRSZWN0YW5nbGUueCArIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKyBzdHJva2VXaWR0aCxcbiAgICAgICAgICAgIHk6IGVsZW1lbnRSZWN0YW5nbGUueSArIChlbGVtZW50UmVjdGFuZ2xlLmhlaWdodCAtIGhlaWdodCkgLyAyXG4gICAgICAgIH07XG4gICAgfVxufTtcbiJdfQ==
@@ -1,105 +0,0 @@
1
- import { PlaitBoard, RectangleClient, getNearestPointBetweenPointAndDiscreteSegments, setStrokeLinecap } from '@plait/core';
2
- import { getUnitVectorByPointAndPoint } from '@plait/common';
3
- import { GeometryCommonTextKeys } from '../../interfaces';
4
- import { getStrokeWidthByElement } from '../../utils';
5
- import { ShapeDefaultSpace } from '../../constants';
6
- function generatePackagePath(rectangle) {
7
- const headerHeight = 25;
8
- const topWidth = rectangle.width * 0.7;
9
- const cornerX = rectangle.x + rectangle.width * 0.8;
10
- return {
11
- headerHeight,
12
- points: {
13
- leftTop: [rectangle.x, rectangle.y + headerHeight],
14
- topStart: [rectangle.x, rectangle.y],
15
- topEnd: [rectangle.x + topWidth, rectangle.y],
16
- cornerPoint: [cornerX, rectangle.y + headerHeight],
17
- rightTop: [rectangle.x + rectangle.width, rectangle.y + headerHeight],
18
- rightBottom: [rectangle.x + rectangle.width, rectangle.y + rectangle.height],
19
- leftBottom: [rectangle.x, rectangle.y + rectangle.height],
20
- leftMiddle: [rectangle.x, rectangle.y + headerHeight],
21
- middlePoint: [cornerX, rectangle.y + headerHeight]
22
- }
23
- };
24
- }
25
- export const PackageEngine = {
26
- draw(board, rectangle, options) {
27
- const rs = PlaitBoard.getRoughSVG(board);
28
- const { points } = generatePackagePath(rectangle);
29
- const pathData = [
30
- `M${points.leftTop[0]} ${points.leftTop[1]}`,
31
- `V${points.topStart[1]}`,
32
- `H${points.topEnd[0]}`,
33
- `L${points.cornerPoint[0]} ${points.cornerPoint[1]}`,
34
- `H${points.rightTop[0]}`,
35
- `V${points.rightBottom[1]}`,
36
- `H${points.leftBottom[0]}`,
37
- `V${points.leftMiddle[1]}`,
38
- `H${points.middlePoint[0]}`
39
- ].join(' ');
40
- const shape = rs.path(pathData, { ...options, fillStyle: 'solid' });
41
- setStrokeLinecap(shape, 'round');
42
- return shape;
43
- },
44
- isInsidePoint(rectangle, point) {
45
- const rangeRectangle = RectangleClient.getRectangleByPoints([point, point]);
46
- return RectangleClient.isHit(rectangle, rangeRectangle);
47
- },
48
- getCornerPoints(rectangle) {
49
- return RectangleClient.getCornerPoints(rectangle);
50
- },
51
- getNearestPoint(rectangle, point) {
52
- const { points } = generatePackagePath(rectangle);
53
- const segments = [
54
- // 左边竖线
55
- [points.topStart, points.leftTop],
56
- [points.leftTop, points.leftBottom],
57
- // 底边
58
- [points.leftBottom, points.rightBottom],
59
- // 右边竖线
60
- [points.rightBottom, points.rightTop],
61
- // 顶部折线
62
- [points.topStart, points.topEnd],
63
- [points.topEnd, points.cornerPoint],
64
- [points.cornerPoint, points.rightTop],
65
- // 中间横线
66
- [points.leftMiddle, points.middlePoint]
67
- ];
68
- return getNearestPointBetweenPointAndDiscreteSegments(point, segments);
69
- },
70
- getConnectorPoints(rectangle) {
71
- return RectangleClient.getEdgeCenterPoints(rectangle);
72
- },
73
- getTangentVectorByConnectionPoint(rectangle, pointOfRectangle) {
74
- const connectionPoint = RectangleClient.getConnectionPoint(rectangle, pointOfRectangle);
75
- if (connectionPoint[0] > rectangle.x + rectangle.width * 0.7 && connectionPoint[1] < rectangle.y + 25) {
76
- return getUnitVectorByPointAndPoint([rectangle.x + rectangle.width * 0.7, rectangle.y], connectionPoint);
77
- }
78
- return getUnitVectorByPointAndPoint([rectangle.x + rectangle.width * 0.8, rectangle.y + 25], connectionPoint);
79
- },
80
- getTextRectangle(element, options) {
81
- const elementRectangle = RectangleClient.getRectangleByPoints(element.points);
82
- const strokeWidth = getStrokeWidthByElement(element);
83
- const textHeight = element.texts?.find(item => item.id === options?.id)?.textHeight;
84
- if (options?.id === GeometryCommonTextKeys.name) {
85
- const width = elementRectangle.width * 0.7 - ShapeDefaultSpace.rectangleAndText - strokeWidth;
86
- return {
87
- height: textHeight,
88
- width: width > 0 ? width : 0,
89
- x: elementRectangle.x + ShapeDefaultSpace.rectangleAndText + strokeWidth,
90
- y: elementRectangle.y + (25 - textHeight) / 2
91
- };
92
- }
93
- if (options?.id === GeometryCommonTextKeys.content) {
94
- const width = elementRectangle.width - ShapeDefaultSpace.rectangleAndText * 2 - strokeWidth * 2;
95
- return {
96
- height: textHeight,
97
- width: width > 0 ? width : 0,
98
- x: elementRectangle.x + ShapeDefaultSpace.rectangleAndText + strokeWidth,
99
- y: elementRectangle.y + 25 + (elementRectangle.height - 25 - textHeight) / 2
100
- };
101
- }
102
- return elementRectangle;
103
- }
104
- };
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL2VuZ2luZXMvdW1sL3BhY2thZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFVBQVUsRUFHVixlQUFlLEVBQ2YsOENBQThDLEVBRTlDLGdCQUFnQixFQUNuQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFlLHNCQUFzQixFQUEwQyxNQUFNLGtCQUFrQixDQUFDO0FBRy9HLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQWtCcEQsU0FBUyxtQkFBbUIsQ0FBQyxTQUEwQjtJQUNuRCxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDeEIsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7SUFDdkMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztJQUVwRCxPQUFPO1FBQ0gsWUFBWTtRQUNaLE1BQU0sRUFBRTtZQUNKLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUM7WUFDbEQsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDN0MsV0FBVyxFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDO1lBQ2xELFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQztZQUNyRSxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1lBQzVFLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1lBQ3pELFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUM7WUFDckQsV0FBVyxFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDO1NBQ3JEO0tBQ0osQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQXNFO0lBQzVGLElBQUksQ0FBQyxLQUFpQixFQUFFLFNBQTBCLEVBQUUsT0FBZ0I7UUFDaEUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFbEQsTUFBTSxRQUFRLEdBQUc7WUFDYixJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM1QyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDeEIsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3RCLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3BELElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN4QixJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDM0IsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzFCLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMxQixJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDOUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFWixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLGdCQUFnQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqQyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsYUFBYSxDQUFDLFNBQTBCLEVBQUUsS0FBWTtRQUNsRCxNQUFNLGNBQWMsR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM1RSxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCxlQUFlLENBQUMsU0FBMEI7UUFDdEMsT0FBTyxlQUFlLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCxlQUFlLENBQUMsU0FBMEIsRUFBRSxLQUFZO1FBQ3BELE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVsRCxNQUFNLFFBQVEsR0FBcUI7WUFDL0IsT0FBTztZQUNQLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQ2pDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDO1lBQ25DLEtBQUs7WUFDTCxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUN2QyxPQUFPO1lBQ1AsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDckMsT0FBTztZQUNQLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ2hDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDO1lBQ25DLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDO1lBQ3JDLE9BQU87WUFDUCxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQztTQUMxQyxDQUFDO1FBRUYsT0FBTyw4Q0FBOEMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUNELGtCQUFrQixDQUFDLFNBQTBCO1FBQ3pDLE9BQU8sZUFBZSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFDRCxpQ0FBaUMsQ0FBQyxTQUEwQixFQUFFLGdCQUFrQztRQUM1RixNQUFNLGVBQWUsR0FBRyxlQUFlLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDeEYsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLEdBQUcsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUNwRyxPQUFPLDRCQUE0QixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDN0csQ0FBQztRQUNELE9BQU8sNEJBQTRCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDbEgsQ0FBQztJQUNELGdCQUFnQixDQUFDLE9BQWtDLEVBQUUsT0FBc0I7UUFDdkUsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLE1BQU8sQ0FBQyxDQUFDO1FBQy9FLE1BQU0sV0FBVyxHQUFHLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxPQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsVUFBVyxDQUFDO1FBQ3JGLElBQUksT0FBTyxFQUFFLEVBQUUsS0FBSyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5QyxNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixDQUFDLGdCQUFnQixHQUFHLFdBQVcsQ0FBQztZQUM5RixPQUFPO2dCQUNILE1BQU0sRUFBRSxVQUFVO2dCQUNsQixLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLGdCQUFnQixHQUFHLFdBQVc7Z0JBQ3hFLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQzthQUNoRCxDQUFDO1FBQ04sQ0FBQztRQUNELElBQUksT0FBTyxFQUFFLEVBQUUsS0FBSyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqRCxNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDaEcsT0FBTztnQkFDSCxNQUFNLEVBQUUsVUFBVTtnQkFDbEIsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUIsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXO2dCQUN4RSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQzthQUMvRSxDQUFDO1FBQ04sQ0FBQztRQUNELE9BQU8sZ0JBQWdCLENBQUM7SUFDNUIsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFBsYWl0Qm9hcmQsXG4gICAgUG9pbnQsXG4gICAgUG9pbnRPZlJlY3RhbmdsZSxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kRGlzY3JldGVTZWdtZW50cyxcbiAgICBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyxcbiAgICBzZXRTdHJva2VMaW5lY2FwXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IERyYXdPcHRpb25zLCBHZW9tZXRyeUNvbW1vblRleHRLZXlzLCBQbGFpdE11bHRpcGxlVGV4dEdlb21ldHJ5LCBTaGFwZUVuZ2luZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgUmVjdGFuZ2xlRW5naW5lIH0gZnJvbSAnLi4vYmFzaWMtc2hhcGVzL3JlY3RhbmdsZSc7XG5pbXBvcnQgeyBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IFNoYXBlRGVmYXVsdFNwYWNlIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IERyYXdUZXh0SW5mbyB9IGZyb20gJy4uLy4uL2dlbmVyYXRvcnMvdGV4dC5nZW5lcmF0b3InO1xuXG5pbnRlcmZhY2UgUGFja2FnZVBhdGhEYXRhIHtcbiAgICBoZWFkZXJIZWlnaHQ6IG51bWJlcjtcbiAgICBwb2ludHM6IHtcbiAgICAgICAgbGVmdFRvcDogUG9pbnQ7XG4gICAgICAgIHRvcFN0YXJ0OiBQb2ludDtcbiAgICAgICAgdG9wRW5kOiBQb2ludDtcbiAgICAgICAgY29ybmVyUG9pbnQ6IFBvaW50O1xuICAgICAgICByaWdodFRvcDogUG9pbnQ7XG4gICAgICAgIHJpZ2h0Qm90dG9tOiBQb2ludDtcbiAgICAgICAgbGVmdEJvdHRvbTogUG9pbnQ7XG4gICAgICAgIGxlZnRNaWRkbGU6IFBvaW50O1xuICAgICAgICBtaWRkbGVQb2ludDogUG9pbnQ7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVQYWNrYWdlUGF0aChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCk6IFBhY2thZ2VQYXRoRGF0YSB7XG4gICAgY29uc3QgaGVhZGVySGVpZ2h0ID0gMjU7XG4gICAgY29uc3QgdG9wV2lkdGggPSByZWN0YW5nbGUud2lkdGggKiAwLjc7XG4gICAgY29uc3QgY29ybmVyWCA9IHJlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoICogMC44O1xuICAgIFxuICAgIHJldHVybiB7XG4gICAgICAgIGhlYWRlckhlaWdodCxcbiAgICAgICAgcG9pbnRzOiB7XG4gICAgICAgICAgICBsZWZ0VG9wOiBbcmVjdGFuZ2xlLngsIHJlY3RhbmdsZS55ICsgaGVhZGVySGVpZ2h0XSxcbiAgICAgICAgICAgIHRvcFN0YXJ0OiBbcmVjdGFuZ2xlLngsIHJlY3RhbmdsZS55XSxcbiAgICAgICAgICAgIHRvcEVuZDogW3JlY3RhbmdsZS54ICsgdG9wV2lkdGgsIHJlY3RhbmdsZS55XSxcbiAgICAgICAgICAgIGNvcm5lclBvaW50OiBbY29ybmVyWCwgcmVjdGFuZ2xlLnkgKyBoZWFkZXJIZWlnaHRdLFxuICAgICAgICAgICAgcmlnaHRUb3A6IFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLnkgKyBoZWFkZXJIZWlnaHRdLFxuICAgICAgICAgICAgcmlnaHRCb3R0b206IFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0XSxcbiAgICAgICAgICAgIGxlZnRCb3R0b206IFtyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0XSxcbiAgICAgICAgICAgIGxlZnRNaWRkbGU6IFtyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnkgKyBoZWFkZXJIZWlnaHRdLFxuICAgICAgICAgICAgbWlkZGxlUG9pbnQ6IFtjb3JuZXJYLCByZWN0YW5nbGUueSArIGhlYWRlckhlaWdodF1cbiAgICAgICAgfVxuICAgIH07XG59XG5cbmV4cG9ydCBjb25zdCBQYWNrYWdlRW5naW5lOiBTaGFwZUVuZ2luZTxQbGFpdE11bHRpcGxlVGV4dEdlb21ldHJ5LCBEcmF3T3B0aW9ucywgRHJhd1RleHRJbmZvPiA9IHtcbiAgICBkcmF3KGJvYXJkOiBQbGFpdEJvYXJkLCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgb3B0aW9uczogT3B0aW9ucykge1xuICAgICAgICBjb25zdCBycyA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpO1xuICAgICAgICBjb25zdCB7IHBvaW50cyB9ID0gZ2VuZXJhdGVQYWNrYWdlUGF0aChyZWN0YW5nbGUpO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgcGF0aERhdGEgPSBbXG4gICAgICAgICAgICBgTSR7cG9pbnRzLmxlZnRUb3BbMF19ICR7cG9pbnRzLmxlZnRUb3BbMV19YCxcbiAgICAgICAgICAgIGBWJHtwb2ludHMudG9wU3RhcnRbMV19YCxcbiAgICAgICAgICAgIGBIJHtwb2ludHMudG9wRW5kWzBdfWAsXG4gICAgICAgICAgICBgTCR7cG9pbnRzLmNvcm5lclBvaW50WzBdfSAke3BvaW50cy5jb3JuZXJQb2ludFsxXX1gLFxuICAgICAgICAgICAgYEgke3BvaW50cy5yaWdodFRvcFswXX1gLFxuICAgICAgICAgICAgYFYke3BvaW50cy5yaWdodEJvdHRvbVsxXX1gLFxuICAgICAgICAgICAgYEgke3BvaW50cy5sZWZ0Qm90dG9tWzBdfWAsXG4gICAgICAgICAgICBgViR7cG9pbnRzLmxlZnRNaWRkbGVbMV19YCxcbiAgICAgICAgICAgIGBIJHtwb2ludHMubWlkZGxlUG9pbnRbMF19YFxuICAgICAgICBdLmpvaW4oJyAnKTtcblxuICAgICAgICBjb25zdCBzaGFwZSA9IHJzLnBhdGgocGF0aERhdGEsIHsgLi4ub3B0aW9ucywgZmlsbFN0eWxlOiAnc29saWQnIH0pO1xuICAgICAgICBzZXRTdHJva2VMaW5lY2FwKHNoYXBlLCAncm91bmQnKTtcbiAgICAgICAgcmV0dXJuIHNoYXBlO1xuICAgIH0sXG4gICAgaXNJbnNpZGVQb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIGNvbnN0IHJhbmdlUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKFtwb2ludCwgcG9pbnRdKTtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5pc0hpdChyZWN0YW5nbGUsIHJhbmdlUmVjdGFuZ2xlKTtcbiAgICB9LFxuICAgIGdldENvcm5lclBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0TmVhcmVzdFBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgY29uc3QgeyBwb2ludHMgfSA9IGdlbmVyYXRlUGFja2FnZVBhdGgocmVjdGFuZ2xlKTtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IHNlZ21lbnRzOiBbUG9pbnQsIFBvaW50XVtdID0gW1xuICAgICAgICAgICAgLy8g5bem6L6556uW57q/XG4gICAgICAgICAgICBbcG9pbnRzLnRvcFN0YXJ0LCBwb2ludHMubGVmdFRvcF0sXG4gICAgICAgICAgICBbcG9pbnRzLmxlZnRUb3AsIHBvaW50cy5sZWZ0Qm90dG9tXSxcbiAgICAgICAgICAgIC8vIOW6lei+uVxuICAgICAgICAgICAgW3BvaW50cy5sZWZ0Qm90dG9tLCBwb2ludHMucmlnaHRCb3R0b21dLFxuICAgICAgICAgICAgLy8g5Y+z6L6556uW57q/XG4gICAgICAgICAgICBbcG9pbnRzLnJpZ2h0Qm90dG9tLCBwb2ludHMucmlnaHRUb3BdLFxuICAgICAgICAgICAgLy8g6aG26YOo5oqY57q/XG4gICAgICAgICAgICBbcG9pbnRzLnRvcFN0YXJ0LCBwb2ludHMudG9wRW5kXSxcbiAgICAgICAgICAgIFtwb2ludHMudG9wRW5kLCBwb2ludHMuY29ybmVyUG9pbnRdLFxuICAgICAgICAgICAgW3BvaW50cy5jb3JuZXJQb2ludCwgcG9pbnRzLnJpZ2h0VG9wXSxcbiAgICAgICAgICAgIC8vIOS4remXtOaoque6v1xuICAgICAgICAgICAgW3BvaW50cy5sZWZ0TWlkZGxlLCBwb2ludHMubWlkZGxlUG9pbnRdXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZERpc2NyZXRlU2VnbWVudHMocG9pbnQsIHNlZ21lbnRzKTtcbiAgICB9LFxuICAgIGdldENvbm5lY3RvclBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldEVkZ2VDZW50ZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICB9LFxuICAgIGdldFRhbmdlbnRWZWN0b3JCeUNvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnRPZlJlY3RhbmdsZTogUG9pbnRPZlJlY3RhbmdsZSkge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZSwgcG9pbnRPZlJlY3RhbmdsZSk7XG4gICAgICAgIGlmIChjb25uZWN0aW9uUG9pbnRbMF0gPiByZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAqIDAuNyAmJiBjb25uZWN0aW9uUG9pbnRbMV0gPCByZWN0YW5nbGUueSArIDI1KSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0VW5pdFZlY3RvckJ5UG9pbnRBbmRQb2ludChbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggKiAwLjcsIHJlY3RhbmdsZS55XSwgY29ubmVjdGlvblBvaW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0VW5pdFZlY3RvckJ5UG9pbnRBbmRQb2ludChbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggKiAwLjgsIHJlY3RhbmdsZS55ICsgMjVdLCBjb25uZWN0aW9uUG9pbnQpO1xuICAgIH0sXG4gICAgZ2V0VGV4dFJlY3RhbmdsZShlbGVtZW50OiBQbGFpdE11bHRpcGxlVGV4dEdlb21ldHJ5LCBvcHRpb25zPzogRHJhd1RleHRJbmZvKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMhKTtcbiAgICAgICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3QgdGV4dEhlaWdodCA9IGVsZW1lbnQudGV4dHM/LmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBvcHRpb25zPy5pZCk/LnRleHRIZWlnaHQhO1xuICAgICAgICBpZiAob3B0aW9ucz8uaWQgPT09IEdlb21ldHJ5Q29tbW9uVGV4dEtleXMubmFtZSkge1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBlbGVtZW50UmVjdGFuZ2xlLndpZHRoICogMC43IC0gU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCAtIHN0cm9rZVdpZHRoO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHRleHRIZWlnaHQsXG4gICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoID4gMCA/IHdpZHRoIDogMCxcbiAgICAgICAgICAgICAgICB4OiBlbGVtZW50UmVjdGFuZ2xlLnggKyBTaGFwZURlZmF1bHRTcGFjZS5yZWN0YW5nbGVBbmRUZXh0ICsgc3Ryb2tlV2lkdGgsXG4gICAgICAgICAgICAgICAgeTogZWxlbWVudFJlY3RhbmdsZS55ICsgKDI1IC0gdGV4dEhlaWdodCkgLyAyXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zPy5pZCA9PT0gR2VvbWV0cnlDb21tb25UZXh0S2V5cy5jb250ZW50KSB7XG4gICAgICAgICAgICBjb25zdCB3aWR0aCA9IGVsZW1lbnRSZWN0YW5nbGUud2lkdGggLSBTaGFwZURlZmF1bHRTcGFjZS5yZWN0YW5nbGVBbmRUZXh0ICogMiAtIHN0cm9rZVdpZHRoICogMjtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiB0ZXh0SGVpZ2h0LFxuICAgICAgICAgICAgICAgIHdpZHRoOiB3aWR0aCA+IDAgPyB3aWR0aCA6IDAsXG4gICAgICAgICAgICAgICAgeDogZWxlbWVudFJlY3RhbmdsZS54ICsgU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCArIHN0cm9rZVdpZHRoLFxuICAgICAgICAgICAgICAgIHk6IGVsZW1lbnRSZWN0YW5nbGUueSArIDI1ICsgKGVsZW1lbnRSZWN0YW5nbGUuaGVpZ2h0IC0gMjUgLSB0ZXh0SGVpZ2h0KSAvIDJcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVsZW1lbnRSZWN0YW5nbGU7XG4gICAgfVxufTtcbiJdfQ==