@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,238 +0,0 @@
1
- import { RectangleClient, isLineHitRectangle, distanceBetweenPointAndSegments, distanceBetweenPointAndPoint, HIT_DISTANCE_BUFFER, rotateAntiPointsByElement, isPointInPolygon, rotatePointsByAngle, createDebugGenerator, getNearestPointBetweenPointAndArc, getEllipseArcCenter } from '@plait/core';
2
- import { BasicShapes, PlaitDrawElement } from '../interfaces';
3
- import { getNearestPoint } from './geometry';
4
- import { getArrowLinePoints } from './arrow-line/arrow-line-basic';
5
- import { getFillByElement } from './style/stroke';
6
- import { getEngine } from '../engines';
7
- import { getElementShape } from './shape';
8
- import { getHitArrowLineTextIndex } from './position/arrow-line';
9
- import { getTextRectangle, isClosedCustomGeometry, isClosedDrawElement, isClosedPoints, isDrawElementIncludeText } from './common';
10
- import { isMultipleTextGeometry } from './multi-text-geometry';
11
- import { getFirstTextEditor, isFilled, sortElementsByArea } from '@plait/common';
12
- import { getVectorLinePoints } from './vector-line';
13
- import { Editor } from 'slate';
14
- import { generateCloudPath } from '../engines/basic-shapes/cloud';
15
- export const isTextExceedingBounds = (geometry) => {
16
- const client = RectangleClient.getRectangleByPoints(geometry.points);
17
- if (geometry.textHeight && geometry.textHeight > client.height) {
18
- return true;
19
- }
20
- return false;
21
- };
22
- export const isHitArrowLineText = (board, element, point) => {
23
- return getHitArrowLineTextIndex(board, element, point) !== -1;
24
- };
25
- export const isHitPolyLine = (pathPoints, point) => {
26
- const distance = distanceBetweenPointAndSegments(point, pathPoints);
27
- return distance <= HIT_DISTANCE_BUFFER;
28
- };
29
- export const isHitArrowLine = (board, element, point) => {
30
- const points = getArrowLinePoints(board, element);
31
- const isHitText = isHitArrowLineText(board, element, point);
32
- return isHitText || isHitPolyLine(points, point);
33
- };
34
- export const isHitVectorLine = (board, element, point) => {
35
- const points = getVectorLinePoints(board, element);
36
- if (isClosedPoints(element.points)) {
37
- return isPointInPolygon(point, points) || isHitPolyLine(points, point);
38
- }
39
- else {
40
- return isHitPolyLine(points, point);
41
- }
42
- };
43
- export const isRectangleHitElementText = (element, rectangle) => {
44
- const engine = getEngine(element.shape);
45
- if (isMultipleTextGeometry(element)) {
46
- const texts = element.texts;
47
- return texts.some((item) => {
48
- const textClient = engine.getTextRectangle(element, { id: item.id });
49
- return isRectangleHitRotatedPoints(rectangle, RectangleClient.getCornerPoints(textClient), element.angle);
50
- });
51
- }
52
- else {
53
- const textClient = engine.getTextRectangle ? engine.getTextRectangle(element) : getTextRectangle(element);
54
- return isRectangleHitRotatedPoints(rectangle, RectangleClient.getCornerPoints(textClient), element.angle);
55
- }
56
- };
57
- export const isHitElementText = (element, point) => {
58
- const engine = getEngine(element.shape);
59
- if (isMultipleTextGeometry(element)) {
60
- const texts = element.texts;
61
- return texts.some((item) => {
62
- const textClient = engine.getTextRectangle(element, { id: item.id });
63
- return RectangleClient.isPointInRectangle(textClient, point);
64
- });
65
- }
66
- else {
67
- const textClient = engine.getTextRectangle ? engine.getTextRectangle(element) : getTextRectangle(element);
68
- return RectangleClient.isPointInRectangle(textClient, point);
69
- }
70
- };
71
- export const isEmptyTextElement = (element) => {
72
- if (!isDrawElementIncludeText(element)) {
73
- return true;
74
- }
75
- const editor = getFirstTextEditor(element);
76
- return Editor.isEmpty(editor, editor.children[0]);
77
- };
78
- export const isRectangleHitDrawElement = (board, element, selection) => {
79
- const rangeRectangle = RectangleClient.getRectangleByPoints([selection.anchor, selection.focus]);
80
- if (PlaitDrawElement.isGeometry(element)) {
81
- const isHitElement = isRectangleHitRotatedElement(board, rangeRectangle, element);
82
- if (isHitElement) {
83
- return isHitElement;
84
- }
85
- return !isEmptyTextElement(element) && isRectangleHitElementText(element, rangeRectangle);
86
- }
87
- if (PlaitDrawElement.isImage(element)) {
88
- return isRectangleHitRotatedElement(board, rangeRectangle, element);
89
- }
90
- if (PlaitDrawElement.isArrowLine(element)) {
91
- const points = getArrowLinePoints(board, element);
92
- return isLineHitRectangle(points, rangeRectangle);
93
- }
94
- if (PlaitDrawElement.isVectorLine(element)) {
95
- const points = getVectorLinePoints(board, element);
96
- return isLineHitRectangle(points, rangeRectangle);
97
- }
98
- return null;
99
- };
100
- export const isRectangleHitRotatedElement = (board, rectangle, element) => {
101
- const client = RectangleClient.getRectangleByPoints(element.points);
102
- return isRectangleHitRotatedPoints(rectangle, RectangleClient.getCornerPoints(client), element.angle);
103
- };
104
- export const isRectangleHitRotatedPoints = (rectangle, points, angle) => {
105
- let rotatedPoints = rotatePointsByAngle(points, angle) || points;
106
- return isLineHitRectangle(rotatedPoints, rectangle);
107
- };
108
- export const getHitDrawElement = (board, elements) => {
109
- let firstFilledElement = getFirstFilledDrawElement(board, elements);
110
- let endIndex = elements.length;
111
- if (firstFilledElement) {
112
- endIndex = elements.indexOf(firstFilledElement) + 1;
113
- }
114
- const newElements = elements.slice(0, endIndex);
115
- const solidElements = getSolidElements(newElements);
116
- if (solidElements) {
117
- return solidElements[0];
118
- }
119
- const sortElements = sortElementsByArea(board, newElements, 'asc');
120
- return sortElements[0];
121
- };
122
- export const getFirstFilledDrawElement = (board, elements) => {
123
- let filledElement = null;
124
- for (let i = 0; i < elements.length; i++) {
125
- const element = elements[i];
126
- if (isClosedCustomGeometry(board, element) || isClosedDrawElement(element)) {
127
- const fill = getFillByElement(board, element);
128
- if (isFilled(fill)) {
129
- filledElement = element;
130
- break;
131
- }
132
- }
133
- }
134
- return filledElement;
135
- };
136
- export const isFilledDrawElement = (board, element) => {
137
- return getFirstFilledDrawElement(board, [element]) !== null;
138
- };
139
- export const getSolidElements = (elements) => {
140
- const solidElements = elements.filter((item) => PlaitDrawElement.isText(item) || PlaitDrawElement.isLine(item) || elements.filter((item) => PlaitDrawElement.isImage(item)));
141
- if (solidElements.length) {
142
- return solidElements;
143
- }
144
- return null;
145
- };
146
- const debugKey = 'debug:plait:hit:shape:edge:sample-points';
147
- const debugGenerator = createDebugGenerator(debugKey);
148
- const shapes = [BasicShapes.cloud];
149
- export const isHitDrawElement = (board, element, point, isStrict = true) => {
150
- const rectangle = board.getRectangle(element);
151
- point = rotateAntiPointsByElement(board, point, element) || point;
152
- if (PlaitDrawElement.isGeometry(element) && rectangle) {
153
- if (debugGenerator.isDebug() && shapes.includes(element.shape)) {
154
- debugGenerator.clear();
155
- const { startPoint, arcCommands } = generateCloudPath(rectangle);
156
- const points = [startPoint, ...arcCommands.map((arc) => [arc.endX, arc.endY])];
157
- debugGenerator.drawCircles(board, points, 5, false);
158
- let minDistance = Infinity;
159
- let nearestPoint = point;
160
- let currentStart = startPoint;
161
- for (const arc of arcCommands) {
162
- const arcNearestPoint = getNearestPointBetweenPointAndArc(point, currentStart, arc);
163
- const distance = distanceBetweenPointAndPoint(point[0], point[1], arcNearestPoint[0], arcNearestPoint[1]);
164
- const { center } = getEllipseArcCenter(currentStart, arc);
165
- debugGenerator.drawCircles(board, [center], 8, false, { fill: 'yellow' });
166
- if (distance < minDistance) {
167
- minDistance = distance;
168
- nearestPoint = arcNearestPoint;
169
- }
170
- currentStart = [arc.endX, arc.endY];
171
- }
172
- debugGenerator.drawCircles(board, [point], 12, false, { fill: 'black', stroke: 'black' });
173
- debugGenerator.drawCircles(board, [nearestPoint], 12, false, { fill: 'green', stroke: 'green' });
174
- }
175
- if (isHitEdgeOfShape(board, element, point, HIT_DISTANCE_BUFFER)) {
176
- return true;
177
- }
178
- const engine = getEngine(getElementShape(element));
179
- if (PlaitDrawElement.isText(element)) {
180
- const textClient = getTextRectangle(element);
181
- return RectangleClient.isPointInRectangle(textClient, point);
182
- }
183
- if (!!isStrict && isEmptyTextElement(element) && !isFilledDrawElement(board, element)) {
184
- return false;
185
- }
186
- const isHitText = isHitElementText(element, point);
187
- return isHitText || engine.isInsidePoint(rectangle, point);
188
- }
189
- if (PlaitDrawElement.isImage(element)) {
190
- const client = RectangleClient.getRectangleByPoints(element.points);
191
- return RectangleClient.isPointInRectangle(client, point);
192
- }
193
- if (PlaitDrawElement.isArrowLine(element)) {
194
- return isHitArrowLine(board, element, point);
195
- }
196
- if (PlaitDrawElement.isVectorLine(element)) {
197
- return isHitVectorLine(board, element, point);
198
- }
199
- return null;
200
- };
201
- export const isHitEdgeOfShape = (board, element, point, hitDistanceBuffer) => {
202
- const nearestPoint = getNearestPoint(element, point);
203
- const distance = distanceBetweenPointAndPoint(nearestPoint[0], nearestPoint[1], point[0], point[1]);
204
- return distance <= hitDistanceBuffer;
205
- };
206
- export const isInsideOfShape = (board, element, point, hitDistanceBuffer) => {
207
- const client = RectangleClient.inflate(RectangleClient.getRectangleByPoints(element.points), hitDistanceBuffer);
208
- return getEngine(getElementShape(element)).isInsidePoint(client, point);
209
- };
210
- export const isHitElementInside = (board, element, point) => {
211
- const rectangle = board.getRectangle(element);
212
- point = rotateAntiPointsByElement(board, point, element) || point;
213
- if (PlaitDrawElement.isGeometry(element) && !PlaitDrawElement.isGeometryByTable(element)) {
214
- const engine = getEngine(getElementShape(element));
215
- const isHitInside = engine.isInsidePoint(rectangle, point);
216
- if (isHitInside) {
217
- return isHitInside;
218
- }
219
- if (engine.getTextRectangle) {
220
- const isHitText = isHitElementText(element, point);
221
- if (isHitText) {
222
- return isHitText;
223
- }
224
- }
225
- }
226
- if (PlaitDrawElement.isImage(element)) {
227
- const client = RectangleClient.getRectangleByPoints(element.points);
228
- return RectangleClient.isPointInRectangle(client, point);
229
- }
230
- if (PlaitDrawElement.isArrowLine(element)) {
231
- return isHitArrowLine(board, element, point);
232
- }
233
- if (PlaitDrawElement.isVectorLine(element)) {
234
- return isHitVectorLine(board, element, point);
235
- }
236
- return null;
237
- };
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdXRpbHMvaGl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxlQUFlLEVBR2Ysa0JBQWtCLEVBRWxCLCtCQUErQixFQUMvQiw0QkFBNEIsRUFDNUIsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixpQ0FBaUMsRUFDakMsbUJBQW1CLEVBQ3RCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFDSCxXQUFXLEVBS1gsZ0JBQWdCLEVBSW5CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbkksT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBVyxNQUFNLE9BQU8sQ0FBQztBQUN4QyxPQUFP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Q0FBQztRQUN2QixDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbkQsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDWixPQUFPLFNBQVMsQ0FBQztZQUNyQixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFDRCxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEUsT0FBTyxlQUFlLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUFJLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sY0FBYyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksZ0JBQWdCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDekMsT0FBTyxlQUFlLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIFNlbGVjdGlvbixcbiAgICBQbGFpdEJvYXJkLFxuICAgIGlzTGluZUhpdFJlY3RhbmdsZSxcbiAgICBQb2ludCxcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFNlZ21lbnRzLFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQsXG4gICAgSElUX0RJU1RBTkNFX0JVRkZFUixcbiAgICByb3RhdGVBbnRpUG9pbnRzQnlFbGVtZW50LFxuICAgIGlzUG9pbnRJblBvbHlnb24sXG4gICAgcm90YXRlUG9pbnRzQnlBbmdsZSxcbiAgICBjcmVhdGVEZWJ1Z0dlbmVyYXRvcixcbiAgICBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRBcmMsXG4gICAgZ2V0RWxsaXBzZUFyY0NlbnRlclxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQge1xuICAgIEJhc2ljU2hhcGVzLFxuICAgIEdlb21ldHJ5U2hhcGVzLFxuICAgIFBsYWl0QXJyb3dMaW5lLFxuICAgIFBsYWl0Q29tbW9uR2VvbWV0cnksXG4gICAgUGxhaXRDdXN0b21HZW9tZXRyeSxcbiAgICBQbGFpdERyYXdFbGVtZW50LFxuICAgIFBsYWl0R2VvbWV0cnksXG4gICAgUGxhaXRTaGFwZUVsZW1lbnQsXG4gICAgUGxhaXRWZWN0b3JMaW5lXG59IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0TmVhcmVzdFBvaW50IH0gZnJvbSAnLi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBnZXRBcnJvd0xpbmVQb2ludHMgfSBmcm9tICcuL2Fycm93LWxpbmUvYXJyb3ctbGluZS1iYXNpYyc7XG5pbXBvcnQgeyBnZXRGaWxsQnlFbGVtZW50IH0gZnJvbSAnLi9zdHlsZS9zdHJva2UnO1xuaW1wb3J0IHsgZ2V0RW5naW5lIH0gZnJvbSAnLi4vZW5naW5lcyc7XG5pbXBvcnQgeyBnZXRFbGVtZW50U2hhcGUgfSBmcm9tICcuL3NoYXBlJztcbmltcG9ydCB7IGdldEhpdEFycm93TGluZVRleHRJbmRleCB9IGZyb20gJy4vcG9zaXRpb24vYXJyb3ctbGluZSc7XG5pbXBvcnQgeyBnZXRUZXh0UmVjdGFuZ2xlLCBpc0Nsb3NlZEN1c3RvbUdlb21ldHJ5LCBpc0Nsb3NlZERyYXdFbGVtZW50LCBpc0Nsb3NlZFBvaW50cywgaXNEcmF3RWxlbWVudEluY2x1ZGVUZXh0IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgaXNNdWx0aXBsZVRleHRHZW9tZXRyeSB9IGZyb20gJy4vbXVsdGktdGV4dC1nZW9tZXRyeSc7XG5pbXBvcnQgeyBnZXRGaXJzdFRleHRFZGl0b3IsIGlzRmlsbGVkLCBzb3J0RWxlbWVudHNCeUFyZWEgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGdldFZlY3RvckxpbmVQb2ludHMgfSBmcm9tICcuL3ZlY3Rvci1saW5lJztcbmltcG9ydCB7IEVkaXRvciwgRWxlbWVudCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IGdlbmVyYXRlQ2xvdWRQYXRoIH0gZnJvbSAnLi4vZW5naW5lcy9iYXNpYy1zaGFwZXMvY2xvdWQnO1xuXG5leHBvcnQgY29uc3QgaXNUZXh0RXhjZWVkaW5nQm91bmRzID0gKGdlb21ldHJ5OiBQbGFpdEdlb21ldHJ5KSA9PiB7XG4gICAgY29uc3QgY2xpZW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGdlb21ldHJ5LnBvaW50cyk7XG4gICAgaWYgKGdlb21ldHJ5LnRleHRIZWlnaHQgJiYgZ2VvbWV0cnkudGV4dEhlaWdodCA+IGNsaWVudC5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0hpdEFycm93TGluZVRleHQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0QXJyb3dMaW5lLCBwb2ludDogUG9pbnQpID0+IHtcbiAgICByZXR1cm4gZ2V0SGl0QXJyb3dMaW5lVGV4dEluZGV4KGJvYXJkLCBlbGVtZW50LCBwb2ludCkgIT09IC0xO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzSGl0UG9seUxpbmUgPSAocGF0aFBvaW50czogUG9pbnRbXSwgcG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFNlZ21lbnRzKHBvaW50LCBwYXRoUG9pbnRzKTtcbiAgICByZXR1cm4gZGlzdGFuY2UgPD0gSElUX0RJU1RBTkNFX0JVRkZFUjtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0hpdEFycm93TGluZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRBcnJvd0xpbmUsIHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IHBvaW50cyA9IGdldEFycm93TGluZVBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgY29uc3QgaXNIaXRUZXh0ID0gaXNIaXRBcnJvd0xpbmVUZXh0KGJvYXJkLCBlbGVtZW50IGFzIFBsYWl0QXJyb3dMaW5lLCBwb2ludCk7XG4gICAgcmV0dXJuIGlzSGl0VGV4dCB8fCBpc0hpdFBvbHlMaW5lKHBvaW50cywgcG9pbnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzSGl0VmVjdG9yTGluZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRWZWN0b3JMaW5lLCBwb2ludDogUG9pbnQpID0+IHtcbiAgICBjb25zdCBwb2ludHMgPSBnZXRWZWN0b3JMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KSE7XG4gICAgaWYgKGlzQ2xvc2VkUG9pbnRzKGVsZW1lbnQucG9pbnRzKSkge1xuICAgICAgICByZXR1cm4gaXNQb2ludEluUG9seWdvbihwb2ludCwgcG9pbnRzKSB8fCBpc0hpdFBvbHlMaW5lKHBvaW50cywgcG9pbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpc0hpdFBvbHlMaW5lKHBvaW50cywgcG9pbnQpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBpc1JlY3RhbmdsZUhpdEVsZW1lbnRUZXh0ID0gKGVsZW1lbnQ6IFBsYWl0Q29tbW9uR2VvbWV0cnksIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSA9PiB7XG4gICAgY29uc3QgZW5naW5lID0gZ2V0RW5naW5lPFBsYWl0Q29tbW9uR2VvbWV0cnk+KGVsZW1lbnQuc2hhcGUpO1xuICAgIGlmIChpc011bHRpcGxlVGV4dEdlb21ldHJ5KGVsZW1lbnQpKSB7XG4gICAgICAgIGNvbnN0IHRleHRzID0gZWxlbWVudC50ZXh0cztcbiAgICAgICAgcmV0dXJuIHRleHRzLnNvbWUoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRleHRDbGllbnQgPSBlbmdpbmUuZ2V0VGV4dFJlY3RhbmdsZSEoZWxlbWVudCwgeyBpZDogaXRlbS5pZCB9KTtcbiAgICAgICAgICAgIHJldHVybiBpc1JlY3RhbmdsZUhpdFJvdGF0ZWRQb2ludHMocmVjdGFuZ2xlLCBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHRleHRDbGllbnQpLCBlbGVtZW50LmFuZ2xlKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdGV4dENsaWVudCA9IGVuZ2luZS5nZXRUZXh0UmVjdGFuZ2xlID8gZW5naW5lLmdldFRleHRSZWN0YW5nbGUoZWxlbWVudCkgOiBnZXRUZXh0UmVjdGFuZ2xlKGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gaXNSZWN0YW5nbGVIaXRSb3RhdGVkUG9pbnRzKHJlY3RhbmdsZSwgUmVjdGFuZ2xlQ2xpZW50LmdldENvcm5lclBvaW50cyh0ZXh0Q2xpZW50KSwgZWxlbWVudC5hbmdsZSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGlzSGl0RWxlbWVudFRleHQgPSAoZWxlbWVudDogUGxhaXRDb21tb25HZW9tZXRyeSwgcG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgY29uc3QgZW5naW5lID0gZ2V0RW5naW5lPFBsYWl0Q29tbW9uR2VvbWV0cnk+KGVsZW1lbnQuc2hhcGUpO1xuICAgIGlmIChpc011bHRpcGxlVGV4dEdlb21ldHJ5KGVsZW1lbnQpKSB7XG4gICAgICAgIGNvbnN0IHRleHRzID0gZWxlbWVudC50ZXh0cztcbiAgICAgICAgcmV0dXJuIHRleHRzLnNvbWUoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRleHRDbGllbnQgPSBlbmdpbmUuZ2V0VGV4dFJlY3RhbmdsZSEoZWxlbWVudCwgeyBpZDogaXRlbS5pZCB9KTtcbiAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuaXNQb2ludEluUmVjdGFuZ2xlKHRleHRDbGllbnQsIHBvaW50KTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdGV4dENsaWVudCA9IGVuZ2luZS5nZXRUZXh0UmVjdGFuZ2xlID8gZW5naW5lLmdldFRleHRSZWN0YW5nbGUoZWxlbWVudCkgOiBnZXRUZXh0UmVjdGFuZ2xlKGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZSh0ZXh0Q2xpZW50LCBwb2ludCk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGlzRW1wdHlUZXh0RWxlbWVudCA9IChlbGVtZW50OiBQbGFpdENvbW1vbkdlb21ldHJ5KSA9PiB7XG4gICAgaWYgKCFpc0RyYXdFbGVtZW50SW5jbHVkZVRleHQoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGVkaXRvciA9IGdldEZpcnN0VGV4dEVkaXRvcihlbGVtZW50KTtcbiAgICByZXR1cm4gRWRpdG9yLmlzRW1wdHkoZWRpdG9yLCBlZGl0b3IuY2hpbGRyZW5bMF0gYXMgRWxlbWVudCk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNSZWN0YW5nbGVIaXREcmF3RWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRFbGVtZW50LCBzZWxlY3Rpb246IFNlbGVjdGlvbikgPT4ge1xuICAgIGNvbnN0IHJhbmdlUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKFtzZWxlY3Rpb24uYW5jaG9yLCBzZWxlY3Rpb24uZm9jdXNdKTtcbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KGVsZW1lbnQpKSB7XG4gICAgICAgIGNvbnN0IGlzSGl0RWxlbWVudCA9IGlzUmVjdGFuZ2xlSGl0Um90YXRlZEVsZW1lbnQoYm9hcmQsIHJhbmdlUmVjdGFuZ2xlLCBlbGVtZW50KTtcbiAgICAgICAgaWYgKGlzSGl0RWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGlzSGl0RWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIWlzRW1wdHlUZXh0RWxlbWVudChlbGVtZW50KSAmJiBpc1JlY3RhbmdsZUhpdEVsZW1lbnRUZXh0KGVsZW1lbnQsIHJhbmdlUmVjdGFuZ2xlKTtcbiAgICB9XG5cbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0ltYWdlKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBpc1JlY3RhbmdsZUhpdFJvdGF0ZWRFbGVtZW50KGJvYXJkLCByYW5nZVJlY3RhbmdsZSwgZWxlbWVudCk7XG4gICAgfVxuXG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNBcnJvd0xpbmUoZWxlbWVudCkpIHtcbiAgICAgICAgY29uc3QgcG9pbnRzID0gZ2V0QXJyb3dMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgcmV0dXJuIGlzTGluZUhpdFJlY3RhbmdsZShwb2ludHMsIHJhbmdlUmVjdGFuZ2xlKTtcbiAgICB9XG5cbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc1ZlY3RvckxpbmUoZWxlbWVudCkpIHtcbiAgICAgICAgY29uc3QgcG9pbnRzID0gZ2V0VmVjdG9yTGluZVBvaW50cyhib2FyZCwgZWxlbWVudCkhO1xuICAgICAgICByZXR1cm4gaXNMaW5lSGl0UmVjdGFuZ2xlKHBvaW50cywgcmFuZ2VSZWN0YW5nbGUpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUmVjdGFuZ2xlSGl0Um90YXRlZEVsZW1lbnQgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsXG4gICAgZWxlbWVudDogUGxhaXRFbGVtZW50ICYgeyBwb2ludHM6IFBvaW50W10gfVxuKSA9PiB7XG4gICAgY29uc3QgY2xpZW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzKTtcbiAgICByZXR1cm4gaXNSZWN0YW5nbGVIaXRSb3RhdGVkUG9pbnRzKHJlY3RhbmdsZSwgUmVjdGFuZ2xlQ2xpZW50LmdldENvcm5lclBvaW50cyhjbGllbnQpLCBlbGVtZW50LmFuZ2xlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1JlY3RhbmdsZUhpdFJvdGF0ZWRQb2ludHMgPSAocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50czogUG9pbnRbXSwgYW5nbGU6IG51bWJlciB8IHVuZGVmaW5lZCkgPT4ge1xuICAgIGxldCByb3RhdGVkUG9pbnRzID0gcm90YXRlUG9pbnRzQnlBbmdsZShwb2ludHMsIGFuZ2xlKSB8fCBwb2ludHM7XG4gICAgcmV0dXJuIGlzTGluZUhpdFJlY3RhbmdsZShyb3RhdGVkUG9pbnRzLCByZWN0YW5nbGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpdERyYXdFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50czogKFBsYWl0RHJhd0VsZW1lbnQgfCBQbGFpdEN1c3RvbUdlb21ldHJ5KVtdKSA9PiB7XG4gICAgbGV0IGZpcnN0RmlsbGVkRWxlbWVudCA9IGdldEZpcnN0RmlsbGVkRHJhd0VsZW1lbnQoYm9hcmQsIGVsZW1lbnRzKTtcbiAgICBsZXQgZW5kSW5kZXggPSBlbGVtZW50cy5sZW5ndGg7XG4gICAgaWYgKGZpcnN0RmlsbGVkRWxlbWVudCkge1xuICAgICAgICBlbmRJbmRleCA9IGVsZW1lbnRzLmluZGV4T2YoZmlyc3RGaWxsZWRFbGVtZW50KSArIDE7XG4gICAgfVxuICAgIGNvbnN0IG5ld0VsZW1lbnRzID0gZWxlbWVudHMuc2xpY2UoMCwgZW5kSW5kZXgpO1xuICAgIGNvbnN0IHNvbGlkRWxlbWVudHMgPSBnZXRTb2xpZEVsZW1lbnRzKG5ld0VsZW1lbnRzKTtcbiAgICBpZiAoc29saWRFbGVtZW50cykge1xuICAgICAgICByZXR1cm4gc29saWRFbGVtZW50c1swXTtcbiAgICB9XG4gICAgY29uc3Qgc29ydEVsZW1lbnRzID0gc29ydEVsZW1lbnRzQnlBcmVhKGJvYXJkLCBuZXdFbGVtZW50cywgJ2FzYycpO1xuICAgIHJldHVybiBzb3J0RWxlbWVudHNbMF07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rmlyc3RGaWxsZWREcmF3RWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IChQbGFpdERyYXdFbGVtZW50IHwgUGxhaXRDdXN0b21HZW9tZXRyeSlbXSkgPT4ge1xuICAgIGxldCBmaWxsZWRFbGVtZW50OiBQbGFpdEdlb21ldHJ5IHwgUGxhaXRDdXN0b21HZW9tZXRyeSB8IG51bGwgPSBudWxsO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2ldO1xuICAgICAgICBpZiAoaXNDbG9zZWRDdXN0b21HZW9tZXRyeShib2FyZCwgZWxlbWVudCkgfHwgaXNDbG9zZWREcmF3RWxlbWVudChlbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3QgZmlsbCA9IGdldEZpbGxCeUVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKGlzRmlsbGVkKGZpbGwpKSB7XG4gICAgICAgICAgICAgICAgZmlsbGVkRWxlbWVudCA9IGVsZW1lbnQgYXMgUGxhaXRHZW9tZXRyeTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmlsbGVkRWxlbWVudDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0ZpbGxlZERyYXdFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdERyYXdFbGVtZW50IHwgUGxhaXRDdXN0b21HZW9tZXRyeSkgPT4ge1xuICAgIHJldHVybiBnZXRGaXJzdEZpbGxlZERyYXdFbGVtZW50KGJvYXJkLCBbZWxlbWVudF0pICE9PSBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNvbGlkRWxlbWVudHMgPSAoZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgY29uc3Qgc29saWRFbGVtZW50cyA9IGVsZW1lbnRzLmZpbHRlcihcbiAgICAgICAgKGl0ZW0pID0+XG4gICAgICAgICAgICBQbGFpdERyYXdFbGVtZW50LmlzVGV4dChpdGVtKSB8fCBQbGFpdERyYXdFbGVtZW50LmlzTGluZShpdGVtKSB8fCBlbGVtZW50cy5maWx0ZXIoKGl0ZW0pID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZShpdGVtKSlcbiAgICApO1xuICAgIGlmIChzb2xpZEVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gc29saWRFbGVtZW50cztcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG5jb25zdCBkZWJ1Z0tleSA9ICdkZWJ1ZzpwbGFpdDpoaXQ6c2hhcGU6ZWRnZTpzYW1wbGUtcG9pbnRzJztcbmNvbnN0IGRlYnVnR2VuZXJhdG9yID0gY3JlYXRlRGVidWdHZW5lcmF0b3IoZGVidWdLZXkpO1xuY29uc3Qgc2hhcGVzOiBHZW9tZXRyeVNoYXBlc1tdID0gW0Jhc2ljU2hhcGVzLmNsb3VkXTtcblxuZXhwb3J0IGNvbnN0IGlzSGl0RHJhd0VsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCwgcG9pbnQ6IFBvaW50LCBpc1N0cmljdDogYm9vbGVhbiA9IHRydWUpID0+IHtcbiAgICBjb25zdCByZWN0YW5nbGUgPSBib2FyZC5nZXRSZWN0YW5nbGUoZWxlbWVudCk7XG4gICAgcG9pbnQgPSByb3RhdGVBbnRpUG9pbnRzQnlFbGVtZW50KGJvYXJkLCBwb2ludCwgZWxlbWVudCkgfHwgcG9pbnQ7XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeShlbGVtZW50KSAmJiByZWN0YW5nbGUpIHtcbiAgICAgICAgaWYgKGRlYnVnR2VuZXJhdG9yLmlzRGVidWcoKSAmJiBzaGFwZXMuaW5jbHVkZXMoZWxlbWVudC5zaGFwZSkpIHtcbiAgICAgICAgICAgIGRlYnVnR2VuZXJhdG9yLmNsZWFyKCk7XG4gICAgICAgICAgICBjb25zdCB7IHN0YXJ0UG9pbnQsIGFyY0NvbW1hbmRzIH0gPSBnZW5lcmF0ZUNsb3VkUGF0aChyZWN0YW5nbGUpO1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gW3N0YXJ0UG9pbnQsIC4uLmFyY0NvbW1hbmRzLm1hcCgoYXJjKSA9PiBbYXJjLmVuZFgsIGFyYy5lbmRZXSldIGFzIFBvaW50W107XG4gICAgICAgICAgICBkZWJ1Z0dlbmVyYXRvci5kcmF3Q2lyY2xlcyhib2FyZCwgcG9pbnRzLCA1LCBmYWxzZSk7XG4gICAgICAgICAgICBsZXQgbWluRGlzdGFuY2UgPSBJbmZpbml0eTtcbiAgICAgICAgICAgIGxldCBuZWFyZXN0UG9pbnQgPSBwb2ludDtcbiAgICAgICAgICAgIGxldCBjdXJyZW50U3RhcnQgPSBzdGFydFBvaW50O1xuICAgICAgICAgICAgZm9yIChjb25zdCBhcmMgb2YgYXJjQ29tbWFuZHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhcmNOZWFyZXN0UG9pbnQgPSBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRBcmMocG9pbnQsIGN1cnJlbnRTdGFydCwgYXJjKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQocG9pbnRbMF0sIHBvaW50WzFdLCBhcmNOZWFyZXN0UG9pbnRbMF0sIGFyY05lYXJlc3RQb2ludFsxXSk7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBjZW50ZXIgfSA9IGdldEVsbGlwc2VBcmNDZW50ZXIoY3VycmVudFN0YXJ0LCBhcmMpO1xuICAgICAgICAgICAgICAgIGRlYnVnR2VuZXJhdG9yLmRyYXdDaXJjbGVzKGJvYXJkLCBbY2VudGVyXSwgOCwgZmFsc2UsIHsgZmlsbDogJ3llbGxvdycgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGRpc3RhbmNlIDwgbWluRGlzdGFuY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZTtcbiAgICAgICAgICAgICAgICAgICAgbmVhcmVzdFBvaW50ID0gYXJjTmVhcmVzdFBvaW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjdXJyZW50U3RhcnQgPSBbYXJjLmVuZFgsIGFyYy5lbmRZXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlYnVnR2VuZXJhdG9yLmRyYXdDaXJjbGVzKGJvYXJkLCBbcG9pbnRdLCAxMiwgZmFsc2UsIHsgZmlsbDogJ2JsYWNrJywgc3Ryb2tlOiAnYmxhY2snIH0pO1xuICAgICAgICAgICAgZGVidWdHZW5lcmF0b3IuZHJhd0NpcmNsZXMoYm9hcmQsIFtuZWFyZXN0UG9pbnRdLCAxMiwgZmFsc2UsIHsgZmlsbDogJ2dyZWVuJywgc3Ryb2tlOiAnZ3JlZW4nIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0hpdEVkZ2VPZlNoYXBlKGJvYXJkLCBlbGVtZW50LCBwb2ludCwgSElUX0RJU1RBTkNFX0JVRkZFUikpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVuZ2luZSA9IGdldEVuZ2luZShnZXRFbGVtZW50U2hhcGUoZWxlbWVudCkpO1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc1RleHQoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHRleHRDbGllbnQgPSBnZXRUZXh0UmVjdGFuZ2xlKGVsZW1lbnQpO1xuICAgICAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5pc1BvaW50SW5SZWN0YW5nbGUodGV4dENsaWVudCwgcG9pbnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghIWlzU3RyaWN0ICYmIGlzRW1wdHlUZXh0RWxlbWVudChlbGVtZW50KSAmJiAhaXNGaWxsZWREcmF3RWxlbWVudChib2FyZCwgZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc0hpdFRleHQgPSBpc0hpdEVsZW1lbnRUZXh0KGVsZW1lbnQsIHBvaW50KTtcbiAgICAgICAgcmV0dXJuIGlzSGl0VGV4dCB8fCBlbmdpbmUuaXNJbnNpZGVQb2ludChyZWN0YW5nbGUhLCBwb2ludCk7XG4gICAgfVxuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzSW1hZ2UoZWxlbWVudCkpIHtcbiAgICAgICAgY29uc3QgY2xpZW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzKTtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5pc1BvaW50SW5SZWN0YW5nbGUoY2xpZW50LCBwb2ludCk7XG4gICAgfVxuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzQXJyb3dMaW5lKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBpc0hpdEFycm93TGluZShib2FyZCwgZWxlbWVudCwgcG9pbnQpO1xuICAgIH1cblxuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzVmVjdG9yTGluZShlbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gaXNIaXRWZWN0b3JMaW5lKGJvYXJkLCBlbGVtZW50LCBwb2ludCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzSGl0RWRnZU9mU2hhcGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0U2hhcGVFbGVtZW50LCBwb2ludDogUG9pbnQsIGhpdERpc3RhbmNlQnVmZmVyOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBuZWFyZXN0UG9pbnQgPSBnZXROZWFyZXN0UG9pbnQoZWxlbWVudCwgcG9pbnQpO1xuICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludChuZWFyZXN0UG9pbnRbMF0sIG5lYXJlc3RQb2ludFsxXSwgcG9pbnRbMF0sIHBvaW50WzFdKTtcbiAgICByZXR1cm4gZGlzdGFuY2UgPD0gaGl0RGlzdGFuY2VCdWZmZXI7XG59O1xuXG5leHBvcnQgY29uc3QgaXNJbnNpZGVPZlNoYXBlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdFNoYXBlRWxlbWVudCwgcG9pbnQ6IFBvaW50LCBoaXREaXN0YW5jZUJ1ZmZlcjogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgY2xpZW50ID0gUmVjdGFuZ2xlQ2xpZW50LmluZmxhdGUoUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzKSwgaGl0RGlzdGFuY2VCdWZmZXIpO1xuICAgIHJldHVybiBnZXRFbmdpbmUoZ2V0RWxlbWVudFNoYXBlKGVsZW1lbnQpKS5pc0luc2lkZVBvaW50KGNsaWVudCwgcG9pbnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzSGl0RWxlbWVudEluc2lkZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRFbGVtZW50LCBwb2ludDogUG9pbnQpID0+IHtcbiAgICBjb25zdCByZWN0YW5nbGUgPSBib2FyZC5nZXRSZWN0YW5nbGUoZWxlbWVudCk7XG4gICAgcG9pbnQgPSByb3RhdGVBbnRpUG9pbnRzQnlFbGVtZW50KGJvYXJkLCBwb2ludCwgZWxlbWVudCkgfHwgcG9pbnQ7XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeShlbGVtZW50KSAmJiAhUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5QnlUYWJsZShlbGVtZW50KSkge1xuICAgICAgICBjb25zdCBlbmdpbmUgPSBnZXRFbmdpbmUoZ2V0RWxlbWVudFNoYXBlKGVsZW1lbnQpKTtcbiAgICAgICAgY29uc3QgaXNIaXRJbnNpZGUgPSBlbmdpbmUuaXNJbnNpZGVQb2ludChyZWN0YW5nbGUhLCBwb2ludCk7XG4gICAgICAgIGlmIChpc0hpdEluc2lkZSkge1xuICAgICAgICAgICAgcmV0dXJuIGlzSGl0SW5zaWRlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmdpbmUuZ2V0VGV4dFJlY3RhbmdsZSkge1xuICAgICAgICAgICAgY29uc3QgaXNIaXRUZXh0ID0gaXNIaXRFbGVtZW50VGV4dChlbGVtZW50LCBwb2ludCk7XG4gICAgICAgICAgICBpZiAoaXNIaXRUZXh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzSGl0VGV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0ltYWdlKGVsZW1lbnQpKSB7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyk7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuaXNQb2ludEluUmVjdGFuZ2xlKGNsaWVudCwgcG9pbnQpO1xuICAgIH1cblxuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzQXJyb3dMaW5lKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBpc0hpdEFycm93TGluZShib2FyZCwgZWxlbWVudCwgcG9pbnQpO1xuICAgIH1cblxuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzVmVjdG9yTGluZShlbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gaXNIaXRWZWN0b3JMaW5lKGJvYXJkLCBlbGVtZW50LCBwb2ludCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG59O1xuIl19
@@ -1,17 +0,0 @@
1
- export * from './arrow-line/index';
2
- export * from './geometry';
3
- export * from './multi-text-geometry';
4
- export * from './uml';
5
- export * from './selected';
6
- export * from './style';
7
- export * from './hit';
8
- export * from './memorize';
9
- export * from './common';
10
- export * from './snap-resizing';
11
- export * from './table';
12
- export * from './table-selected';
13
- export * from './swimlane';
14
- export * from './line';
15
- export * from './vector-line';
16
- export * from './clipboard';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxPQUFPLENBQUM7QUFDdEIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxPQUFPLENBQUM7QUFDdEIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hcnJvdy1saW5lL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZ2VvbWV0cnknO1xuZXhwb3J0ICogZnJvbSAnLi9tdWx0aS10ZXh0LWdlb21ldHJ5JztcbmV4cG9ydCAqIGZyb20gJy4vdW1sJztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0ZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9zdHlsZSc7XG5leHBvcnQgKiBmcm9tICcuL2hpdCc7XG5leHBvcnQgKiBmcm9tICcuL21lbW9yaXplJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uJztcbmV4cG9ydCAqIGZyb20gJy4vc25hcC1yZXNpemluZyc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUtc2VsZWN0ZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9zd2ltbGFuZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpbmUnO1xuZXhwb3J0ICogZnJvbSAnLi92ZWN0b3ItbGluZSc7XG5leHBvcnQgKiBmcm9tICcuL2NsaXBib2FyZCc7XG4iXX0=
@@ -1,64 +0,0 @@
1
- import { Point, distanceBetweenPointAndPoint } from '@plait/core';
2
- import { ArrowLineShape, PlaitArrowLine, PlaitDrawElement } from '../interfaces';
3
- import { getCurvePoints, getElbowLineRouteOptions, getElbowPoints, getNextSourceAndTargetPoints, isUseDefaultOrthogonalRoute } from './arrow-line';
4
- import { getVectorLinePoints } from './vector-line';
5
- export function getMiddlePoints(board, element) {
6
- const result = [];
7
- const shape = element.shape;
8
- const hideBuffer = 10;
9
- if (shape === ArrowLineShape.straight) {
10
- const points = PlaitDrawElement.isArrowLine(element)
11
- ? PlaitArrowLine.getPoints(board, element)
12
- : element.points;
13
- for (let i = 0; i < points.length - 1; i++) {
14
- const distance = distanceBetweenPointAndPoint(...points[i], ...points[i + 1]);
15
- if (distance < hideBuffer)
16
- continue;
17
- result.push([(points[i][0] + points[i + 1][0]) / 2, (points[i][1] + points[i + 1][1]) / 2]);
18
- }
19
- }
20
- if (shape === ArrowLineShape.curve) {
21
- const points = PlaitDrawElement.isArrowLine(element)
22
- ? PlaitArrowLine.getPoints(board, element)
23
- : element.points;
24
- const pointsOnBezier = PlaitDrawElement.isArrowLine(element)
25
- ? getCurvePoints(board, element)
26
- : getVectorLinePoints(board, element);
27
- if (points.length === 2) {
28
- const start = 0;
29
- const endIndex = pointsOnBezier.length - 1;
30
- const middleIndex = Math.round((start + endIndex) / 2);
31
- result.push(pointsOnBezier[middleIndex]);
32
- }
33
- else {
34
- for (let i = 0; i < points.length - 1; i++) {
35
- const startIndex = pointsOnBezier.findIndex(point => point[0] === points[i][0] && point[1] === points[i][1]);
36
- const endIndex = pointsOnBezier.findIndex(point => point[0] === points[i + 1][0] && point[1] === points[i + 1][1]);
37
- const middleIndex = Math.round((startIndex + endIndex) / 2);
38
- const distance = distanceBetweenPointAndPoint(...points[i], ...points[i + 1]);
39
- if (distance < hideBuffer)
40
- continue;
41
- result.push(pointsOnBezier[middleIndex]);
42
- }
43
- }
44
- }
45
- if (shape === ArrowLineShape.elbow) {
46
- const renderPoints = getElbowPoints(board, element);
47
- const options = getElbowLineRouteOptions(board, element);
48
- if (!isUseDefaultOrthogonalRoute(element, options)) {
49
- const [nextSourcePoint, nextTargetPoint] = getNextSourceAndTargetPoints(board, element);
50
- for (let i = 0; i < renderPoints.length - 1; i++) {
51
- if ((i == 0 && Point.isEquals(renderPoints[i + 1], nextSourcePoint)) ||
52
- (i === renderPoints.length - 2 && Point.isEquals(renderPoints[renderPoints.length - 2], nextTargetPoint))) {
53
- continue;
54
- }
55
- const [currentX, currentY] = renderPoints[i];
56
- const [nextX, nextY] = renderPoints[i + 1];
57
- const middlePoint = [(currentX + nextX) / 2, (currentY + nextY) / 2];
58
- result.push(middlePoint);
59
- }
60
- }
61
- }
62
- return result;
63
- }
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3V0aWxzL2xpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLEtBQUssRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUNILGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIsY0FBYyxFQUNkLDRCQUE0QixFQUM1QiwyQkFBMkIsRUFDOUIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBELE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBaUIsRUFBRSxPQUFrQjtJQUNqRSxNQUFNLE1BQU0sR0FBWSxFQUFFLENBQUM7SUFDM0IsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUM1QixNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDdEIsSUFBSSxLQUFLLEtBQUssY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7WUFDaEQsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztZQUMxQyxDQUFDLENBQUUsT0FBMkIsQ0FBQyxNQUFNLENBQUM7UUFDMUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDekMsTUFBTSxRQUFRLEdBQUcsNEJBQTRCLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENB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R0FBRyxDQUFDLENBQVUsQ0FBQztnQkFDOUUsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM3QixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUG9pbnQsIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdExpbmUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2xpbmUnO1xuaW1wb3J0IHsgQXJyb3dMaW5lU2hhcGUsIFBsYWl0QXJyb3dMaW5lLCBQbGFpdERyYXdFbGVtZW50LCBQbGFpdFZlY3RvckxpbmUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gICAgZ2V0Q3VydmVQb2ludHMsXG4gICAgZ2V0RWxib3dMaW5lUm91dGVPcHRpb25zLFxuICAgIGdldEVsYm93UG9pbnRzLFxuICAgIGdldE5leHRTb3VyY2VBbmRUYXJnZXRQb2ludHMsXG4gICAgaXNVc2VEZWZhdWx0T3J0aG9nb25hbFJvdXRlXG59IGZyb20gJy4vYXJyb3ctbGluZSc7XG5pbXBvcnQgeyBnZXRWZWN0b3JMaW5lUG9pbnRzIH0gZnJvbSAnLi92ZWN0b3ItbGluZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNaWRkbGVQb2ludHMoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSkge1xuICAgIGNvbnN0IHJlc3VsdDogUG9pbnRbXSA9IFtdO1xuICAgIGNvbnN0IHNoYXBlID0gZWxlbWVudC5zaGFwZTtcbiAgICBjb25zdCBoaWRlQnVmZmVyID0gMTA7XG4gICAgaWYgKHNoYXBlID09PSBBcnJvd0xpbmVTaGFwZS5zdHJhaWdodCkge1xuICAgICAgICBjb25zdCBwb2ludHMgPSBQbGFpdERyYXdFbGVtZW50LmlzQXJyb3dMaW5lKGVsZW1lbnQpXG4gICAgICAgICAgICA/IFBsYWl0QXJyb3dMaW5lLmdldFBvaW50cyhib2FyZCwgZWxlbWVudClcbiAgICAgICAgICAgIDogKGVsZW1lbnQgYXMgUGxhaXRWZWN0b3JMaW5lKS5wb2ludHM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnBvaW50c1tpXSwgLi4ucG9pbnRzW2kgKyAxXSk7XG4gICAgICAgICAgICBpZiAoZGlzdGFuY2UgPCBoaWRlQnVmZmVyKSBjb250aW51ZTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFsocG9pbnRzW2ldWzBdICsgcG9pbnRzW2kgKyAxXVswXSkgLyAyLCAocG9pbnRzW2ldWzFdICsgcG9pbnRzW2kgKyAxXVsxXSkgLyAyXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNoYXBlID09PSBBcnJvd0xpbmVTaGFwZS5jdXJ2ZSkge1xuICAgICAgICBjb25zdCBwb2ludHMgPSBQbGFpdERyYXdFbGVtZW50LmlzQXJyb3dMaW5lKGVsZW1lbnQpXG4gICAgICAgICAgICA/IFBsYWl0QXJyb3dMaW5lLmdldFBvaW50cyhib2FyZCwgZWxlbWVudClcbiAgICAgICAgICAgIDogKGVsZW1lbnQgYXMgUGxhaXRWZWN0b3JMaW5lKS5wb2ludHM7XG4gICAgICAgIGNvbnN0IHBvaW50c09uQmV6aWVyID0gUGxhaXREcmF3RWxlbWVudC5pc0Fycm93TGluZShlbGVtZW50KVxuICAgICAgICAgICAgPyBnZXRDdXJ2ZVBvaW50cyhib2FyZCwgZWxlbWVudClcbiAgICAgICAgICAgIDogZ2V0VmVjdG9yTGluZVBvaW50cyhib2FyZCwgZWxlbWVudCkhO1xuICAgICAgICBpZiAocG9pbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSAwO1xuICAgICAgICAgICAgY29uc3QgZW5kSW5kZXggPSBwb2ludHNPbkJlemllci5sZW5ndGggLSAxO1xuICAgICAgICAgICAgY29uc3QgbWlkZGxlSW5kZXggPSBNYXRoLnJvdW5kKChzdGFydCArIGVuZEluZGV4KSAvIDIpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2gocG9pbnRzT25CZXppZXJbbWlkZGxlSW5kZXhdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBwb2ludHNPbkJlemllci5maW5kSW5kZXgocG9pbnQgPT4gcG9pbnRbMF0gPT09IHBvaW50c1tpXVswXSAmJiBwb2ludFsxXSA9PT0gcG9pbnRzW2ldWzFdKTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmRJbmRleCA9IHBvaW50c09uQmV6aWVyLmZpbmRJbmRleChwb2ludCA9PiBwb2ludFswXSA9PT0gcG9pbnRzW2kgKyAxXVswXSAmJiBwb2ludFsxXSA9PT0gcG9pbnRzW2kgKyAxXVsxXSk7XG4gICAgICAgICAgICAgICAgY29uc3QgbWlkZGxlSW5kZXggPSBNYXRoLnJvdW5kKChzdGFydEluZGV4ICsgZW5kSW5kZXgpIC8gMik7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnBvaW50c1tpXSwgLi4ucG9pbnRzW2kgKyAxXSk7XG4gICAgICAgICAgICAgICAgaWYgKGRpc3RhbmNlIDwgaGlkZUJ1ZmZlcikgY29udGludWU7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocG9pbnRzT25CZXppZXJbbWlkZGxlSW5kZXhdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoc2hhcGUgPT09IEFycm93TGluZVNoYXBlLmVsYm93KSB7XG4gICAgICAgIGNvbnN0IHJlbmRlclBvaW50cyA9IGdldEVsYm93UG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGdldEVsYm93TGluZVJvdXRlT3B0aW9ucyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGlmICghaXNVc2VEZWZhdWx0T3J0aG9nb25hbFJvdXRlKGVsZW1lbnQsIG9wdGlvbnMpKSB7XG4gICAgICAgICAgICBjb25zdCBbbmV4dFNvdXJjZVBvaW50LCBuZXh0VGFyZ2V0UG9pbnRdID0gZ2V0TmV4dFNvdXJjZUFuZFRhcmdldFBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlbmRlclBvaW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIChpID09IDAgJiYgUG9pbnQuaXNFcXVhbHMocmVuZGVyUG9pbnRzW2kgKyAxXSwgbmV4dFNvdXJjZVBvaW50KSkgfHxcbiAgICAgICAgICAgICAgICAgICAgKGkgPT09IHJlbmRlclBvaW50cy5sZW5ndGggLSAyICYmIFBvaW50LmlzRXF1YWxzKHJlbmRlclBvaW50c1tyZW5kZXJQb2ludHMubGVuZ3RoIC0gMl0sIG5leHRUYXJnZXRQb2ludCkpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBbY3VycmVudFgsIGN1cnJlbnRZXSA9IHJlbmRlclBvaW50c1tpXTtcbiAgICAgICAgICAgICAgICBjb25zdCBbbmV4dFgsIG5leHRZXSA9IHJlbmRlclBvaW50c1tpICsgMV07XG4gICAgICAgICAgICAgICAgY29uc3QgbWlkZGxlUG9pbnQgPSBbKGN1cnJlbnRYICsgbmV4dFgpIC8gMiwgKGN1cnJlbnRZICsgbmV4dFkpIC8gMl0gYXMgUG9pbnQ7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobWlkZGxlUG9pbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
@@ -1,93 +0,0 @@
1
- import { BasicShapes, MemorizeKey, PlaitDrawElement } from '../interfaces';
2
- import { getMemorizedLatest, memorizeLatest } from '@plait/common';
3
- const SHAPE_MAX_LENGTH = 6;
4
- const memorizedShape = new WeakMap();
5
- export const getMemorizeKey = (element) => {
6
- let key = '';
7
- switch (true) {
8
- case PlaitDrawElement.isText(element): {
9
- key = MemorizeKey.text;
10
- break;
11
- }
12
- case PlaitDrawElement.isBasicShape(element): {
13
- key = MemorizeKey.basicShape;
14
- break;
15
- }
16
- case PlaitDrawElement.isFlowchart(element): {
17
- key = MemorizeKey.flowchart;
18
- break;
19
- }
20
- case PlaitDrawElement.isArrowLine(element): {
21
- key = MemorizeKey.arrowLine;
22
- break;
23
- }
24
- case PlaitDrawElement.isUML(element): {
25
- key = MemorizeKey.UML;
26
- }
27
- }
28
- return key;
29
- };
30
- export const getLineMemorizedLatest = () => {
31
- const properties = getMemorizedLatest(MemorizeKey.arrowLine);
32
- return { ...properties } || {};
33
- };
34
- export const getMemorizedLatestByPointer = (pointer) => {
35
- let memorizeKey = '';
36
- if (PlaitDrawElement.isBasicShape({ shape: pointer })) {
37
- memorizeKey = pointer === BasicShapes.text ? MemorizeKey.text : MemorizeKey.basicShape;
38
- }
39
- else if (PlaitDrawElement.isUML({ shape: pointer })) {
40
- memorizeKey = MemorizeKey.UML;
41
- }
42
- else {
43
- memorizeKey = MemorizeKey.flowchart;
44
- }
45
- const properties = { ...getMemorizedLatest(memorizeKey) } || {};
46
- const textProperties = { ...properties.text } || {};
47
- delete properties.text;
48
- return { textProperties, geometryProperties: properties };
49
- };
50
- export const memorizeLatestText = (element, operations) => {
51
- const memorizeKey = getMemorizeKey(element);
52
- let textMemory = getMemorizedLatest(memorizeKey)?.text || {};
53
- const setNodeOperation = operations.find(operation => operation.type === 'set_node');
54
- if (setNodeOperation) {
55
- const { properties, newProperties } = setNodeOperation;
56
- for (const key in newProperties) {
57
- const value = newProperties[key];
58
- if (value == null) {
59
- delete textMemory[key];
60
- }
61
- else {
62
- textMemory[key] = value;
63
- }
64
- }
65
- for (const key in properties) {
66
- if (!newProperties.hasOwnProperty(key)) {
67
- delete textMemory[key];
68
- }
69
- }
70
- memorizeLatest(memorizeKey, 'text', textMemory);
71
- }
72
- };
73
- export const memorizeLatestShape = (board, shape) => {
74
- const shapes = memorizedShape.has(board) ? memorizedShape.get(board) : [];
75
- const shapeIndex = shapes.indexOf(shape);
76
- if (shape === BasicShapes.text || shapeIndex === 0) {
77
- return;
78
- }
79
- if (shapeIndex !== -1) {
80
- shapes.splice(shapeIndex, 1);
81
- }
82
- else {
83
- if (shapes.length === SHAPE_MAX_LENGTH) {
84
- shapes.pop();
85
- }
86
- }
87
- shapes.unshift(shape);
88
- memorizedShape.set(board, shapes);
89
- };
90
- export const getMemorizedLatestShape = (board) => {
91
- return memorizedShape.get(board);
92
- };
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3JpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9tZW1vcml6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFrQixXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUluRSxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQUMzQixNQUFNLGNBQWMsR0FBMEMsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFxQixFQUFFLEVBQUU7SUFDcEQsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ2IsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNYLEtBQUssZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxHQUFHLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztZQUN2QixNQUFNO1FBQ1YsQ0FBQztRQUNELEtBQUssZ0JBQWdCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxHQUFHLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztZQUM3QixNQUFNO1FBQ1YsQ0FBQztRQUNELEtBQUssZ0JBQWdCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxHQUFHLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztZQUM1QixNQUFNO1FBQ1YsQ0FBQztRQUNELEtBQUssZ0JBQWdCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxHQUFHLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztZQUM1QixNQUFNO1FBQ1YsQ0FBQztRQUNELEtBQUss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Q0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBaUIsRUFBRSxLQUFxQixFQUFFLEVBQUU7SUFDNUUsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNFLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsSUFBSSxLQUFLLEtBQUssV0FBVyxDQUFDLElBQUksSUFBSSxVQUFVLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDakQsT0FBTztJQUNYLENBQUM7SUFDRCxJQUFJLFVBQVUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7U0FBTSxDQUFDO1FBQ0osSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLGdCQUFnQixFQUFFLENBQUM7WUFDckMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLENBQUM7SUFDTCxDQUFDO0lBQ0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QixjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUN6RCxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgQmFzaWNTaGFwZXMsIEdlb21ldHJ5U2hhcGVzLCBNZW1vcml6ZUtleSwgUGxhaXREcmF3RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0TWVtb3JpemVkTGF0ZXN0LCBtZW1vcml6ZUxhdGVzdCB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgRHJhd1BvaW50ZXJUeXBlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEJhc2VPcGVyYXRpb24sIEJhc2VTZXROb2RlT3BlcmF0aW9uLCBOb2RlIH0gZnJvbSAnc2xhdGUnO1xuXG5jb25zdCBTSEFQRV9NQVhfTEVOR1RIID0gNjtcbmNvbnN0IG1lbW9yaXplZFNoYXBlOiBXZWFrTWFwPFBsYWl0Qm9hcmQsIEdlb21ldHJ5U2hhcGVzW10+ID0gbmV3IFdlYWtNYXAoKTtcblxuZXhwb3J0IGNvbnN0IGdldE1lbW9yaXplS2V5ID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIGxldCBrZXkgPSAnJztcbiAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgY2FzZSBQbGFpdERyYXdFbGVtZW50LmlzVGV4dChlbGVtZW50KToge1xuICAgICAgICAgICAga2V5ID0gTWVtb3JpemVLZXkudGV4dDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgUGxhaXREcmF3RWxlbWVudC5pc0Jhc2ljU2hhcGUoZWxlbWVudCk6IHtcbiAgICAgICAgICAgIGtleSA9IE1lbW9yaXplS2V5LmJhc2ljU2hhcGU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFBsYWl0RHJhd0VsZW1lbnQuaXNGbG93Y2hhcnQoZWxlbWVudCk6IHtcbiAgICAgICAgICAgIGtleSA9IE1lbW9yaXplS2V5LmZsb3djaGFydDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgUGxhaXREcmF3RWxlbWVudC5pc0Fycm93TGluZShlbGVtZW50KToge1xuICAgICAgICAgICAga2V5ID0gTWVtb3JpemVLZXkuYXJyb3dMaW5lO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBQbGFpdERyYXdFbGVtZW50LmlzVU1MKGVsZW1lbnQpOiB7XG4gICAgICAgICAgICBrZXkgPSBNZW1vcml6ZUtleS5VTUw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGtleTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMaW5lTWVtb3JpemVkTGF0ZXN0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBnZXRNZW1vcml6ZWRMYXRlc3QoTWVtb3JpemVLZXkuYXJyb3dMaW5lKTtcbiAgICByZXR1cm4geyAuLi5wcm9wZXJ0aWVzIH0gfHwge307XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWVtb3JpemVkTGF0ZXN0QnlQb2ludGVyID0gKHBvaW50ZXI6IERyYXdQb2ludGVyVHlwZSkgPT4ge1xuICAgIGxldCBtZW1vcml6ZUtleSA9ICcnO1xuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzQmFzaWNTaGFwZSh7IHNoYXBlOiBwb2ludGVyIH0pKSB7XG4gICAgICAgIG1lbW9yaXplS2V5ID0gcG9pbnRlciA9PT0gQmFzaWNTaGFwZXMudGV4dCA/IE1lbW9yaXplS2V5LnRleHQgOiBNZW1vcml6ZUtleS5iYXNpY1NoYXBlO1xuICAgIH0gZWxzZSBpZiAoUGxhaXREcmF3RWxlbWVudC5pc1VNTCh7IHNoYXBlOiBwb2ludGVyIH0pKSB7XG4gICAgICAgIG1lbW9yaXplS2V5ID0gTWVtb3JpemVLZXkuVU1MO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG1lbW9yaXplS2V5ID0gTWVtb3JpemVLZXkuZmxvd2NoYXJ0O1xuICAgIH1cbiAgICBjb25zdCBwcm9wZXJ0aWVzID0geyAuLi5nZXRNZW1vcml6ZWRMYXRlc3QobWVtb3JpemVLZXkpIH0gfHwge307XG4gICAgY29uc3QgdGV4dFByb3BlcnRpZXMgPSB7IC4uLnByb3BlcnRpZXMudGV4dCB9IHx8IHt9O1xuICAgIGRlbGV0ZSBwcm9wZXJ0aWVzLnRleHQ7XG4gICAgcmV0dXJuIHsgdGV4dFByb3BlcnRpZXMsIGdlb21ldHJ5UHJvcGVydGllczogcHJvcGVydGllcyB9O1xufTtcblxuZXhwb3J0IGNvbnN0IG1lbW9yaXplTGF0ZXN0VGV4dCA9IDxUIGV4dGVuZHMgUGxhaXRFbGVtZW50ID0gUGxhaXREcmF3RWxlbWVudD4oZWxlbWVudDogVCwgb3BlcmF0aW9uczogQmFzZU9wZXJhdGlvbltdKSA9PiB7XG4gICAgY29uc3QgbWVtb3JpemVLZXkgPSBnZXRNZW1vcml6ZUtleShlbGVtZW50KTtcbiAgICBsZXQgdGV4dE1lbW9yeSA9IGdldE1lbW9yaXplZExhdGVzdChtZW1vcml6ZUtleSk/LnRleHQgfHwge307XG4gICAgY29uc3Qgc2V0Tm9kZU9wZXJhdGlvbiA9IG9wZXJhdGlvbnMuZmluZChvcGVyYXRpb24gPT4gb3BlcmF0aW9uLnR5cGUgPT09ICdzZXRfbm9kZScpO1xuICAgIGlmIChzZXROb2RlT3BlcmF0aW9uKSB7XG4gICAgICAgIGNvbnN0IHsgcHJvcGVydGllcywgbmV3UHJvcGVydGllcyB9ID0gc2V0Tm9kZU9wZXJhdGlvbiBhcyBCYXNlU2V0Tm9kZU9wZXJhdGlvbjtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbmV3UHJvcGVydGllcykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBuZXdQcm9wZXJ0aWVzW2tleSBhcyBrZXlvZiBQYXJ0aWFsPE5vZGU+XTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRleHRNZW1vcnlba2V5XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGV4dE1lbW9yeVtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcGVydGllcykge1xuICAgICAgICAgICAgaWYgKCFuZXdQcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgdGV4dE1lbW9yeVtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG1lbW9yaXplTGF0ZXN0KG1lbW9yaXplS2V5LCAndGV4dCcsIHRleHRNZW1vcnkpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBtZW1vcml6ZUxhdGVzdFNoYXBlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzaGFwZTogR2VvbWV0cnlTaGFwZXMpID0+IHtcbiAgICBjb25zdCBzaGFwZXMgPSBtZW1vcml6ZWRTaGFwZS5oYXMoYm9hcmQpID8gbWVtb3JpemVkU2hhcGUuZ2V0KGJvYXJkKSEgOiBbXTtcbiAgICBjb25zdCBzaGFwZUluZGV4ID0gc2hhcGVzLmluZGV4T2Yoc2hhcGUpO1xuICAgIGlmIChzaGFwZSA9PT0gQmFzaWNTaGFwZXMudGV4dCB8fCBzaGFwZUluZGV4ID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHNoYXBlSW5kZXggIT09IC0xKSB7XG4gICAgICAgIHNoYXBlcy5zcGxpY2Uoc2hhcGVJbmRleCwgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHNoYXBlcy5sZW5ndGggPT09IFNIQVBFX01BWF9MRU5HVEgpIHtcbiAgICAgICAgICAgIHNoYXBlcy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzaGFwZXMudW5zaGlmdChzaGFwZSk7XG4gICAgbWVtb3JpemVkU2hhcGUuc2V0KGJvYXJkLCBzaGFwZXMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1lbW9yaXplZExhdGVzdFNoYXBlID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgcmV0dXJuIG1lbW9yaXplZFNoYXBlLmdldChib2FyZCk7XG59O1xuIl19
@@ -1,61 +0,0 @@
1
- import { RectangleClient, idCreator } from '@plait/core';
2
- import { DefaultTextProperty, GEOMETRY_WITH_MULTIPLE_TEXT, MultipleTextGeometryTextKeys } from '../constants';
3
- import { getEngine } from '../engines';
4
- import { getMemorizedLatestByPointer } from './memorize';
5
- import { getDefaultGeometryProperty } from './geometry';
6
- import { PlaitDrawElement } from '../interfaces';
7
- import { Alignment, buildText } from '@plait/common';
8
- export const isMultipleTextShape = (shape) => {
9
- return GEOMETRY_WITH_MULTIPLE_TEXT.includes(shape);
10
- };
11
- export const isMultipleTextGeometry = (geometry) => {
12
- return PlaitDrawElement.isGeometry(geometry) && isMultipleTextShape(geometry.shape);
13
- };
14
- export const getMultipleTextGeometryTextKeys = (shape) => {
15
- return MultipleTextGeometryTextKeys[shape];
16
- };
17
- export const createMultipleTextGeometryElement = (shape, points, options = {}) => {
18
- const id = idCreator();
19
- const drawShapeTexts = buildDefaultTextsByShape(shape);
20
- return {
21
- id,
22
- type: 'geometry',
23
- shape,
24
- angle: 0,
25
- opacity: 1,
26
- texts: drawShapeTexts,
27
- points,
28
- ...options
29
- };
30
- };
31
- export const buildDefaultTextsByShape = (shape) => {
32
- const memorizedLatest = getMemorizedLatestByPointer(shape);
33
- const textProperties = { ...memorizedLatest.textProperties };
34
- const alignment = textProperties?.align;
35
- const textHeight = textProperties?.textHeight || DefaultTextProperty.height;
36
- delete textProperties?.align;
37
- delete textProperties?.textHeight;
38
- const defaultTexts = getDefaultGeometryProperty(shape)?.texts || [];
39
- const textKeys = getMultipleTextGeometryTextKeys(shape);
40
- return (textKeys || []).map((textKey) => {
41
- const text = defaultTexts?.find((item) => item?.key === textKey);
42
- return {
43
- id: textKey,
44
- text: buildText(text?.text || '', alignment || text?.align || Alignment.center, textProperties),
45
- textHeight: textHeight
46
- };
47
- });
48
- };
49
- export const getHitMultipleGeometryText = (element, point) => {
50
- const engine = getEngine(element.shape);
51
- const rectangle = RectangleClient.getRectangleByPoints([point, point]);
52
- let hitText;
53
- if (engine.getTextRectangle) {
54
- hitText = element.texts.find(text => {
55
- const textRectangle = engine.getTextRectangle(element, { id: text.id });
56
- return RectangleClient.isHit(rectangle, textRectangle);
57
- });
58
- }
59
- return hitText;
60
- };
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktdGV4dC1nZW9tZXRyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3V0aWxzL211bHRpLXRleHQtZ2VvbWV0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5RyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV6RCxPQUFPLEVBQXdCLDBCQUEwQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEtBQXFCLEVBQUUsRUFBRTtJQUN6RCxPQUFPLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxLQUFtQixDQUFDLENBQUM7QUFDckUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxRQUFzQixFQUF5QyxFQUFFO0lBQ3BHLE9BQU8sZ0JBQWdCLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4RixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxDQUFDLEtBQXFCLEVBQUUsRUFBRTtJQUNyRSxPQUFPLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHLENBQzdDLEtBQXFCLEVBQ3JCLE1BQXNCLEVBQ3RCLFVBQWdDLEVBQUUsRUFDVCxFQUFFO0lBQzNCLE1BQU0sRUFBRSxHQUFHLFNBQVMsRUFBRSxDQUFDO0lBQ3ZCLE1BQU0sY0FBYyxHQUFtQix3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RSxPQUFPO1FBQ0gsRUFBRTtRQUNGLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUs7UUFDTCxLQUFLLEVBQUUsQ0FBQztRQUNSLE9BQU8sRUFBRSxDQUFDO1FBQ1YsS0FBSyxFQUFFLGNBQWM7UUFDckIsTUFBTTtRQUNOLEdBQUcsT0FBTztLQUNiLENBQUM7QUFDTixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLEtBQXFCLEVBQWtCLEVBQUU7SUFDOUUsTUFBTSxlQUFlLEdBQUcsMkJBQTJCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0QsTUFBTSxjQUFjLEdBQUcsRUFBRSxHQUFHLGVBQWUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM3RCxNQUFNLFNBQVMsR0FBRyxjQUFjLEVBQUUsS0FBSyxDQUFDO0lBQ3hDLE1BQU0sVUFBVSxHQUFHLGNBQWMsRUFBRSxVQUFVLElBQUksbUJBQW1CLENBQUMsTUFBTSxDQUFDO0lBQzVFLE9BQU8sY0FBYyxFQUFFLEtBQUssQ0FBQztJQUM3QixPQUFPLGNBQWMsRUFBRSxVQUFVLENBQUM7SUFDbEMsTUFBTSxZQUFZLEdBQUksMEJBQTBCLENBQUMsS0FBSyxDQUFTLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUM3RSxNQUFNLFFBQVEsR0FBRywrQkFBK0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4RCxPQUFPLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQWUsRUFBRSxFQUFFO1FBQzVDLE1BQU0sSUFBSSxHQUFHLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFxQixFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQ2xGLE9BQU87WUFDSCxFQUFFLEVBQUUsT0FBTztZQUNYLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsU0FBUyxJQUFJLElBQUksRUFBRSxLQUFLLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUM7WUFDL0YsVUFBVSxFQUFFLFVBQVU7U0FDekIsQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxPQUFrQyxFQUFFLEtBQVksRUFBRSxFQUFFO0lBQzNGLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBNEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25FLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLElBQUksT0FBTyxDQUFDO0lBQ1osSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMxQixPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFpQixDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN6RSxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0RWxlbWVudCwgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCwgaWRDcmVhdG9yIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgR2VvbWV0cnlTaGFwZXMsIFVNTFN5bWJvbHMsIFBsYWl0TXVsdGlwbGVUZXh0R2VvbWV0cnkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2dlb21ldHJ5JztcbmltcG9ydCB7IERlZmF1bHRUZXh0UHJvcGVydHksIEdFT01FVFJZX1dJVEhfTVVMVElQTEVfVEVYVCwgTXVsdGlwbGVUZXh0R2VvbWV0cnlUZXh0S2V5cyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXRFbmdpbmUgfSBmcm9tICcuLi9lbmdpbmVzJztcbmltcG9ydCB7IGdldE1lbW9yaXplZExhdGVzdEJ5UG9pbnRlciB9IGZyb20gJy4vbWVtb3JpemUnO1xuaW1wb3J0IHsgRHJhd1RleHRJbmZvIH0gZnJvbSAnLi4vZ2VuZXJhdG9ycy90ZXh0LmdlbmVyYXRvcic7XG5pbXBvcnQgeyBHZW9tZXRyeVN0eWxlT3B0aW9ucywgZ2V0RGVmYXVsdEdlb21ldHJ5UHJvcGVydHkgfSBmcm9tICcuL2dlb21ldHJ5JztcbmltcG9ydCB7IFBsYWl0RHJhd0VsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFsaWdubWVudCwgYnVpbGRUZXh0IH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBpc011bHRpcGxlVGV4dFNoYXBlID0gKHNoYXBlOiBHZW9tZXRyeVNoYXBlcykgPT4ge1xuICAgIHJldHVybiBHRU9NRVRSWV9XSVRIX01VTFRJUExFX1RFWFQuaW5jbHVkZXMoc2hhcGUgYXMgVU1MU3ltYm9scyk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNNdWx0aXBsZVRleHRHZW9tZXRyeSA9IChnZW9tZXRyeTogUGxhaXRFbGVtZW50KTogZ2VvbWV0cnkgaXMgUGxhaXRNdWx0aXBsZVRleHRHZW9tZXRyeSA9PiB7XG4gICAgcmV0dXJuIFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeShnZW9tZXRyeSkgJiYgaXNNdWx0aXBsZVRleHRTaGFwZShnZW9tZXRyeS5zaGFwZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TXVsdGlwbGVUZXh0R2VvbWV0cnlUZXh0S2V5cyA9IChzaGFwZTogR2VvbWV0cnlTaGFwZXMpID0+IHtcbiAgICByZXR1cm4gTXVsdGlwbGVUZXh0R2VvbWV0cnlUZXh0S2V5c1tzaGFwZV07XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTXVsdGlwbGVUZXh0R2VvbWV0cnlFbGVtZW50ID0gKFxuICAgIHNoYXBlOiBHZW9tZXRyeVNoYXBlcyxcbiAgICBwb2ludHM6IFtQb2ludCwgUG9pbnRdLFxuICAgIG9wdGlvbnM6IEdlb21ldHJ5U3R5bGVPcHRpb25zID0ge31cbik6IFBsYWl0TXVsdGlwbGVUZXh0R2VvbWV0cnkgPT4ge1xuICAgIGNvbnN0IGlkID0gaWRDcmVhdG9yKCk7XG4gICAgY29uc3QgZHJhd1NoYXBlVGV4dHM6IERyYXdUZXh0SW5mb1tdID0gYnVpbGREZWZhdWx0VGV4dHNCeVNoYXBlKHNoYXBlKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBpZCxcbiAgICAgICAgdHlwZTogJ2dlb21ldHJ5JyxcbiAgICAgICAgc2hhcGUsXG4gICAgICAgIGFuZ2xlOiAwLFxuICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICB0ZXh0czogZHJhd1NoYXBlVGV4dHMsXG4gICAgICAgIHBvaW50cyxcbiAgICAgICAgLi4ub3B0aW9uc1xuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGREZWZhdWx0VGV4dHNCeVNoYXBlID0gKHNoYXBlOiBHZW9tZXRyeVNoYXBlcyk6IERyYXdUZXh0SW5mb1tdID0+IHtcbiAgICBjb25zdCBtZW1vcml6ZWRMYXRlc3QgPSBnZXRNZW1vcml6ZWRMYXRlc3RCeVBvaW50ZXIoc2hhcGUpO1xuICAgIGNvbnN0IHRleHRQcm9wZXJ0aWVzID0geyAuLi5tZW1vcml6ZWRMYXRlc3QudGV4dFByb3BlcnRpZXMgfTtcbiAgICBjb25zdCBhbGlnbm1lbnQgPSB0ZXh0UHJvcGVydGllcz8uYWxpZ247XG4gICAgY29uc3QgdGV4dEhlaWdodCA9IHRleHRQcm9wZXJ0aWVzPy50ZXh0SGVpZ2h0IHx8IERlZmF1bHRUZXh0UHJvcGVydHkuaGVpZ2h0O1xuICAgIGRlbGV0ZSB0ZXh0UHJvcGVydGllcz8uYWxpZ247XG4gICAgZGVsZXRlIHRleHRQcm9wZXJ0aWVzPy50ZXh0SGVpZ2h0O1xuICAgIGNvbnN0IGRlZmF1bHRUZXh0cyA9IChnZXREZWZhdWx0R2VvbWV0cnlQcm9wZXJ0eShzaGFwZSkgYXMgYW55KT8udGV4dHMgfHwgW107XG4gICAgY29uc3QgdGV4dEtleXMgPSBnZXRNdWx0aXBsZVRleHRHZW9tZXRyeVRleHRLZXlzKHNoYXBlKTtcbiAgICByZXR1cm4gKHRleHRLZXlzIHx8IFtdKS5tYXAoKHRleHRLZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0ZXh0ID0gZGVmYXVsdFRleHRzPy5maW5kKChpdGVtOiB7IGtleTogc3RyaW5nIH0pID0+IGl0ZW0/LmtleSA9PT0gdGV4dEtleSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZDogdGV4dEtleSxcbiAgICAgICAgICAgIHRleHQ6IGJ1aWxkVGV4dCh0ZXh0Py50ZXh0IHx8ICcnLCBhbGlnbm1lbnQgfHwgdGV4dD8uYWxpZ24gfHwgQWxpZ25tZW50LmNlbnRlciwgdGV4dFByb3BlcnRpZXMpLFxuICAgICAgICAgICAgdGV4dEhlaWdodDogdGV4dEhlaWdodFxuICAgICAgICB9O1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpdE11bHRpcGxlR2VvbWV0cnlUZXh0ID0gKGVsZW1lbnQ6IFBsYWl0TXVsdGlwbGVUZXh0R2VvbWV0cnksIHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IGVuZ2luZSA9IGdldEVuZ2luZTxQbGFpdE11bHRpcGxlVGV4dEdlb21ldHJ5PihlbGVtZW50LnNoYXBlKTtcbiAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3BvaW50LCBwb2ludF0pO1xuICAgIGxldCBoaXRUZXh0O1xuICAgIGlmIChlbmdpbmUuZ2V0VGV4dFJlY3RhbmdsZSkge1xuICAgICAgICBoaXRUZXh0ID0gZWxlbWVudC50ZXh0cy5maW5kKHRleHQgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGV4dFJlY3RhbmdsZSA9IGVuZ2luZS5nZXRUZXh0UmVjdGFuZ2xlIShlbGVtZW50LCB7IGlkOiB0ZXh0LmlkIH0pO1xuICAgICAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5pc0hpdChyZWN0YW5nbGUsIHRleHRSZWN0YW5nbGUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGhpdFRleHQ7XG59O1xuIl19
@@ -1,30 +0,0 @@
1
- import { getCrossingPointsBetweenPointAndSegment, isPointOnSegment } from '@plait/common';
2
- export const getCenterPointsOnPolygon = (points) => {
3
- const centerPoints = [];
4
- for (let i = 0; i < points.length; i++) {
5
- let j = i == points.length - 1 ? 0 : i + 1;
6
- centerPoints.push([(points[i][0] + points[j][0]) / 2, (points[i][1] + points[j][1]) / 2]);
7
- }
8
- return centerPoints;
9
- };
10
- export const getCrossingPointBetweenPointAndPolygon = (corners, point) => {
11
- const result = [];
12
- for (let index = 1; index <= corners.length; index++) {
13
- let start = corners[index - 1];
14
- let end = index === corners.length ? corners[0] : corners[index];
15
- const crossingPoint = getCrossingPointsBetweenPointAndSegment(point, start, end);
16
- result.push(...crossingPoint);
17
- }
18
- return result;
19
- };
20
- export const getPolygonEdgeByConnectionPoint = (corners, point) => {
21
- for (let index = 1; index <= corners.length; index++) {
22
- let start = corners[index - 1];
23
- let end = index === corners.length ? corners[0] : corners[index];
24
- if (isPointOnSegment(point, start, end)) {
25
- return [start, end];
26
- }
27
- }
28
- return null;
29
- };
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9seWdvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3V0aWxzL3BvbHlnb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzFGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsTUFBZSxFQUFFLEVBQUU7SUFDeEQsTUFBTSxZQUFZLEdBQVksRUFBRSxDQUFDO0lBQ2pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFDRCxPQUFPLFlBQVksQ0FBQztBQUN4QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRyxDQUFDLE9BQWdCLEVBQUUsS0FBWSxFQUFFLEVBQUU7SUFDckYsTUFBTSxNQUFNLEdBQVksRUFBRSxDQUFDO0lBQzNCLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDbkQsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvQixJQUFJLEdBQUcsR0FBRyxLQUFLLEtBQUssT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakUsTUFBTSxhQUFhLEdBQUcsdUNBQXVDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqRixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLENBQUMsT0FBZ0IsRUFBRSxLQUFZLEVBQUUsRUFBRTtJQUM5RSxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ25ELElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0IsSUFBSSxHQUFHLEdBQUcsS0FBSyxLQUFLLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFtQixDQUFDO1FBQzFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0Q3Jvc3NpbmdQb2ludHNCZXR3ZWVuUG9pbnRBbmRTZWdtZW50LCBpc1BvaW50T25TZWdtZW50IH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcblxuZXhwb3J0IGNvbnN0IGdldENlbnRlclBvaW50c09uUG9seWdvbiA9IChwb2ludHM6IFBvaW50W10pID0+IHtcbiAgICBjb25zdCBjZW50ZXJQb2ludHM6IFBvaW50W10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgaiA9IGkgPT0gcG9pbnRzLmxlbmd0aCAtIDEgPyAwIDogaSArIDE7XG4gICAgICAgIGNlbnRlclBvaW50cy5wdXNoKFsocG9pbnRzW2ldWzBdICsgcG9pbnRzW2pdWzBdKSAvIDIsIChwb2ludHNbaV1bMV0gKyBwb2ludHNbal1bMV0pIC8gMl0pO1xuICAgIH1cbiAgICByZXR1cm4gY2VudGVyUG9pbnRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENyb3NzaW5nUG9pbnRCZXR3ZWVuUG9pbnRBbmRQb2x5Z29uID0gKGNvcm5lcnM6IFBvaW50W10sIHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdDogUG9pbnRbXSA9IFtdO1xuICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPD0gY29ybmVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgbGV0IHN0YXJ0ID0gY29ybmVyc1tpbmRleCAtIDFdO1xuICAgICAgICBsZXQgZW5kID0gaW5kZXggPT09IGNvcm5lcnMubGVuZ3RoID8gY29ybmVyc1swXSA6IGNvcm5lcnNbaW5kZXhdO1xuICAgICAgICBjb25zdCBjcm9zc2luZ1BvaW50ID0gZ2V0Q3Jvc3NpbmdQb2ludHNCZXR3ZWVuUG9pbnRBbmRTZWdtZW50KHBvaW50LCBzdGFydCwgZW5kKTtcbiAgICAgICAgcmVzdWx0LnB1c2goLi4uY3Jvc3NpbmdQb2ludCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UG9seWdvbkVkZ2VCeUNvbm5lY3Rpb25Qb2ludCA9IChjb3JuZXJzOiBQb2ludFtdLCBwb2ludDogUG9pbnQpID0+IHtcbiAgICBmb3IgKGxldCBpbmRleCA9IDE7IGluZGV4IDw9IGNvcm5lcnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGxldCBzdGFydCA9IGNvcm5lcnNbaW5kZXggLSAxXTtcbiAgICAgICAgbGV0IGVuZCA9IGluZGV4ID09PSBjb3JuZXJzLmxlbmd0aCA/IGNvcm5lcnNbMF0gOiBjb3JuZXJzW2luZGV4XTtcbiAgICAgICAgaWYgKGlzUG9pbnRPblNlZ21lbnQocG9pbnQsIHN0YXJ0LCBlbmQpKSB7XG4gICAgICAgICAgICByZXR1cm4gW3N0YXJ0LCBlbmRdIGFzIFtQb2ludCwgUG9pbnRdO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcbiJdfQ==