@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,20 +0,0 @@
1
- import { RectangleClient } from '@plait/core';
2
- import { getPointOnPolyline } from '@plait/common';
3
- import { getArrowLinePoints } from '../arrow-line/arrow-line-basic';
4
- export const getHitArrowLineTextIndex = (board, element, point) => {
5
- const texts = element.texts;
6
- if (!texts.length)
7
- return -1;
8
- const points = getArrowLinePoints(board, element);
9
- return texts.findIndex(text => {
10
- const center = getPointOnPolyline(points, text.position);
11
- const rectangle = {
12
- x: center[0] - text.width / 2,
13
- y: center[1] - text.height / 2,
14
- width: text.width,
15
- height: text.height
16
- };
17
- return RectangleClient.isHit(rectangle, RectangleClient.getRectangleByPoints([point, point]));
18
- });
19
- };
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyb3ctbGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3V0aWxzL3Bvc2l0aW9uL2Fycm93LWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUF1QixFQUFFLEtBQVksRUFBRSxFQUFFO0lBQ2pHLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1FBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUU3QixNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbEQsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzFCLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekQsTUFBTSxTQUFTLEdBQUc7WUFDZCxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFNLEdBQUcsQ0FBQztZQUM5QixDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFPLEdBQUcsQ0FBQztZQUMvQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQU07WUFDbEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFPO1NBQ3ZCLENBQUM7UUFDRixPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEcsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQb2ludCwgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRBcnJvd0xpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldFBvaW50T25Qb2x5bGluZSB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgZ2V0QXJyb3dMaW5lUG9pbnRzIH0gZnJvbSAnLi4vYXJyb3ctbGluZS9hcnJvdy1saW5lLWJhc2ljJztcblxuZXhwb3J0IGNvbnN0IGdldEhpdEFycm93TGluZVRleHRJbmRleCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRBcnJvd0xpbmUsIHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IHRleHRzID0gZWxlbWVudC50ZXh0cztcbiAgICBpZiAoIXRleHRzLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgY29uc3QgcG9pbnRzID0gZ2V0QXJyb3dMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICByZXR1cm4gdGV4dHMuZmluZEluZGV4KHRleHQgPT4ge1xuICAgICAgICBjb25zdCBjZW50ZXIgPSBnZXRQb2ludE9uUG9seWxpbmUocG9pbnRzLCB0ZXh0LnBvc2l0aW9uKTtcbiAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0ge1xuICAgICAgICAgICAgeDogY2VudGVyWzBdIC0gdGV4dC53aWR0aCEgLyAyLFxuICAgICAgICAgICAgeTogY2VudGVyWzFdIC0gdGV4dC5oZWlnaHQhIC8gMixcbiAgICAgICAgICAgIHdpZHRoOiB0ZXh0LndpZHRoISxcbiAgICAgICAgICAgIGhlaWdodDogdGV4dC5oZWlnaHQhXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuaXNIaXQocmVjdGFuZ2xlLCBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3BvaW50LCBwb2ludF0pKTtcbiAgICB9KTtcbn07XG4iXX0=
@@ -1,30 +0,0 @@
1
- import { RectangleClient, rotatePoints } from '@plait/core';
2
- import { RESIZE_HANDLE_DIAMETER, getRectangleResizeHandleRefs, getRotatedResizeCursorClassByAngle, ROTATE_HANDLE_SIZE, ROTATE_HANDLE_DISTANCE_TO_ELEMENT } from '@plait/common';
3
- export const getHitRectangleResizeHandleRef = (board, rectangle, point, angle = 0) => {
4
- const centerPoint = RectangleClient.getCenterPoint(rectangle);
5
- const resizeHandleRefs = getRectangleResizeHandleRefs(rectangle, RESIZE_HANDLE_DIAMETER);
6
- if (angle) {
7
- const rotatedPoint = rotatePoints([point], centerPoint, -angle)[0];
8
- let result = resizeHandleRefs.find(resizeHandleRef => {
9
- return RectangleClient.isHit(RectangleClient.getRectangleByPoints([rotatedPoint, rotatedPoint]), resizeHandleRef.rectangle);
10
- });
11
- if (result) {
12
- result.cursorClass = getRotatedResizeCursorClassByAngle(result.cursorClass, angle);
13
- }
14
- return result;
15
- }
16
- else {
17
- return resizeHandleRefs.find(resizeHandleRef => {
18
- return RectangleClient.isHit(RectangleClient.getRectangleByPoints([point, point]), resizeHandleRef.rectangle);
19
- });
20
- }
21
- };
22
- export const getRotateHandleRectangle = (rectangle) => {
23
- return {
24
- x: rectangle.x - ROTATE_HANDLE_DISTANCE_TO_ELEMENT - ROTATE_HANDLE_SIZE,
25
- y: rectangle.y + rectangle.height + ROTATE_HANDLE_DISTANCE_TO_ELEMENT,
26
- width: ROTATE_HANDLE_SIZE,
27
- height: ROTATE_HANDLE_SIZE
28
- };
29
- };
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9wb3NpdGlvbi9nZW9tZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUgsZUFBZSxFQUdmLFlBQVksRUFHZixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0gsc0JBQXNCLEVBQ3RCLDRCQUE0QixFQUM1QixrQ0FBa0MsRUFDbEMsa0JBQWtCLEVBQ2xCLGlDQUFpQyxFQUVwQyxNQUFNLGVBQWUsQ0FBQztBQWN2QixNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxDQUMxQyxLQUFpQixFQUNqQixTQUEwQixFQUMxQixLQUFZLEVBQ1osUUFBZ0IsQ0FBQyxFQUNVLEVBQUU7SUFDN0IsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5RCxNQUFNLGdCQUFnQixHQUFHLDRCQUE0QixDQUFDLFNBQVMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3pGLElBQUksS0FBSyxFQUFFLENBQUM7UUFDUixNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRSxJQUFJLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDakQsT0FBTyxlQUFlLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoSSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksTUFBTSxFQUFFLENBQUM7WUFDVCxNQUFNLENBQUMsV0FBVyxHQUFHLGtDQUFrQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkYsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDM0MsT0FBTyxlQUFlLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLFNBQTBCLEVBQUUsRUFBRTtJQUNuRSxPQUFPO1FBQ0gsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsaUNBQWlDLEdBQUcsa0JBQWtCO1FBQ3ZFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsaUNBQWlDO1FBQ3JFLEtBQUssRUFBRSxrQkFBa0I7UUFDekIsTUFBTSxFQUFFLGtCQUFrQjtLQUM3QixDQUFDO0FBQ04sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBbmNlc3RvcixcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBvaW50LFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBkZXB0aEZpcnN0UmVjdXJzaW9uLFxuICAgIGdldElzUmVjdXJzaW9uRnVuYyxcbiAgICByb3RhdGVQb2ludHMsXG4gICAgcm90YXRlQW50aVBvaW50c0J5RWxlbWVudCxcbiAgICBSZXNpemVDdXJzb3JDbGFzc1xufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQge1xuICAgIFJFU0laRV9IQU5ETEVfRElBTUVURVIsXG4gICAgZ2V0UmVjdGFuZ2xlUmVzaXplSGFuZGxlUmVmcyxcbiAgICBnZXRSb3RhdGVkUmVzaXplQ3Vyc29yQ2xhc3NCeUFuZ2xlLFxuICAgIFJPVEFURV9IQU5ETEVfU0laRSxcbiAgICBST1RBVEVfSEFORExFX0RJU1RBTkNFX1RPX0VMRU1FTlQsXG4gICAgUmVzaXplSGFuZGxlXG59IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgUGxhaXREcmF3RWxlbWVudCwgUGxhaXRHZW9tZXRyeSwgUGxhaXRTaGFwZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGlzSGl0RWRnZU9mU2hhcGUsIGlzSW5zaWRlT2ZTaGFwZSB9IGZyb20gJy4uL2hpdCc7XG5pbXBvcnQgeyBMSU5FX0hJVF9HRU9NRVRSWV9CVUZGRVIsIExJTkVfU05BUFBJTkdfQlVGRkVSIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2dlb21ldHJ5JztcbmltcG9ydCB7IGdldE5lYXJlc3RQb2ludCB9IGZyb20gJy4uL2dlb21ldHJ5JztcbmltcG9ydCB7IGdldEhpdENvbm5lY3RvclBvaW50IH0gZnJvbSAnLi4vYXJyb3ctbGluZS9hcnJvdy1saW5lLWJhc2ljJztcbmltcG9ydCB7IGdldEhpdFNoYXBlIH0gZnJvbSAnLi4vY29tbW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBSZXNpemVIYW5kbGVSZWYge1xuICAgIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50O1xuICAgIGhhbmRsZTogUmVzaXplSGFuZGxlO1xuICAgIGN1cnNvckNsYXNzOiBSZXNpemVDdXJzb3JDbGFzcztcbn1cblxuZXhwb3J0IGNvbnN0IGdldEhpdFJlY3RhbmdsZVJlc2l6ZUhhbmRsZVJlZiA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCxcbiAgICBwb2ludDogUG9pbnQsXG4gICAgYW5nbGU6IG51bWJlciA9IDBcbik6IFJlc2l6ZUhhbmRsZVJlZiB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgY2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQocmVjdGFuZ2xlKTtcbiAgICBjb25zdCByZXNpemVIYW5kbGVSZWZzID0gZ2V0UmVjdGFuZ2xlUmVzaXplSGFuZGxlUmVmcyhyZWN0YW5nbGUsIFJFU0laRV9IQU5ETEVfRElBTUVURVIpO1xuICAgIGlmIChhbmdsZSkge1xuICAgICAgICBjb25zdCByb3RhdGVkUG9pbnQgPSByb3RhdGVQb2ludHMoW3BvaW50XSwgY2VudGVyUG9pbnQsIC1hbmdsZSlbMF07XG4gICAgICAgIGxldCByZXN1bHQgPSByZXNpemVIYW5kbGVSZWZzLmZpbmQocmVzaXplSGFuZGxlUmVmID0+IHtcbiAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuaXNIaXQoUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKFtyb3RhdGVkUG9pbnQsIHJvdGF0ZWRQb2ludF0pLCByZXNpemVIYW5kbGVSZWYucmVjdGFuZ2xlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgIHJlc3VsdC5jdXJzb3JDbGFzcyA9IGdldFJvdGF0ZWRSZXNpemVDdXJzb3JDbGFzc0J5QW5nbGUocmVzdWx0LmN1cnNvckNsYXNzLCBhbmdsZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzaXplSGFuZGxlUmVmcy5maW5kKHJlc2l6ZUhhbmRsZVJlZiA9PiB7XG4gICAgICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbcG9pbnQsIHBvaW50XSksIHJlc2l6ZUhhbmRsZVJlZi5yZWN0YW5nbGUpO1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Um90YXRlSGFuZGxlUmVjdGFuZ2xlID0gKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogcmVjdGFuZ2xlLnggLSBST1RBVEVfSEFORExFX0RJU1RBTkNFX1RPX0VMRU1FTlQgLSBST1RBVEVfSEFORExFX1NJWkUsXG4gICAgICAgIHk6IHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCArIFJPVEFURV9IQU5ETEVfRElTVEFOQ0VfVE9fRUxFTUVOVCxcbiAgICAgICAgd2lkdGg6IFJPVEFURV9IQU5ETEVfU0laRSxcbiAgICAgICAgaGVpZ2h0OiBST1RBVEVfSEFORExFX1NJWkVcbiAgICB9O1xufTtcbiJdfQ==
@@ -1,51 +0,0 @@
1
- import { RectangleClient } from '@plait/core';
2
- import { ArrowLineShape, PlaitArrowLine, PlaitDrawElement } from '../../interfaces';
3
- import { RESIZE_HANDLE_DIAMETER } from '@plait/common';
4
- import { getMiddlePoints } from '../line';
5
- export var LineResizeHandle;
6
- (function (LineResizeHandle) {
7
- LineResizeHandle["source"] = "source";
8
- LineResizeHandle["target"] = "target";
9
- LineResizeHandle["addHandle"] = "addHandle";
10
- })(LineResizeHandle || (LineResizeHandle = {}));
11
- export const getHitLineResizeHandleRef = (board, element, point) => {
12
- let dataPoints = PlaitDrawElement.isArrowLine(element) ? PlaitArrowLine.getPoints(board, element) : element.points;
13
- const index = getHitPointIndex(dataPoints, point);
14
- if (index !== -1) {
15
- const handleIndex = index;
16
- if (index === 0) {
17
- return { handle: LineResizeHandle.source, handleIndex };
18
- }
19
- if (index === dataPoints.length - 1) {
20
- return { handle: LineResizeHandle.target, handleIndex };
21
- }
22
- // elbow line, data points only verify source connection point and target connection point
23
- if (element.shape !== ArrowLineShape.elbow) {
24
- return { handleIndex };
25
- }
26
- }
27
- const middlePoints = getMiddlePoints(board, element);
28
- const indexOfMiddlePoints = getHitPointIndex(middlePoints, point);
29
- if (indexOfMiddlePoints !== -1) {
30
- return {
31
- handle: LineResizeHandle.addHandle,
32
- handleIndex: indexOfMiddlePoints
33
- };
34
- }
35
- return undefined;
36
- };
37
- export function getHitPointIndex(points, movingPoint) {
38
- const rectangles = points.map(point => {
39
- return {
40
- x: point[0] - RESIZE_HANDLE_DIAMETER / 2,
41
- y: point[1] - RESIZE_HANDLE_DIAMETER / 2,
42
- width: RESIZE_HANDLE_DIAMETER,
43
- height: RESIZE_HANDLE_DIAMETER
44
- };
45
- });
46
- const rectangle = rectangles.find(rectangle => {
47
- return RectangleClient.isHit(RectangleClient.getRectangleByPoints([movingPoint, movingPoint]), rectangle);
48
- });
49
- return rectangle ? rectangles.indexOf(rectangle) : -1;
50
- }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3V0aWxzL3Bvc2l0aW9uL2xpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUUxQyxNQUFNLENBQU4sSUFBWSxnQkFJWDtBQUpELFdBQVksZ0JBQWdCO0lBQ3hCLHFDQUFtQixDQUFBO0lBQ25CLHFDQUFtQixDQUFBO0lBQ25CLDJDQUF5QixDQUFBO0FBQzdCLENBQUMsRUFKVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBSTNCO0FBRUQsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQWtCLEVBQUUsS0FBWSxFQUFFLEVBQUU7SUFDN0YsSUFBSSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUNuSCxNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNmLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNkLE9BQU8sRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzVELENBQUM7UUFDRCxJQUFJLEtBQUssS0FBSyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzVELENBQUM7UUFDRCwwRkFBMEY7UUFDMUYsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDM0IsQ0FBQztJQUNMLENBQUM7SUFDRCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELE1BQU0sbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2xFLElBQUksbUJBQW1CLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3QixPQUFPO1lBQ0gsTUFBTSxFQUFFLGdCQUFnQixDQUFDLFNBQVM7WUFDbEMsV0FBVyxFQUFFLG1CQUFtQjtTQUNuQyxDQUFDO0lBQ04sQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxNQUFlLEVBQUUsV0FBa0I7SUFDaEUsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNsQyxPQUFPO1lBQ0gsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxzQkFBc0IsR0FBRyxDQUFDO1lBQ3hDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsc0JBQXNCLEdBQUcsQ0FBQztZQUN4QyxLQUFLLEVBQUUsc0JBQXNCO1lBQzdCLE1BQU0sRUFBRSxzQkFBc0I7U0FDakMsQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUMxQyxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDOUcsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBBcnJvd0xpbmVTaGFwZSwgUGxhaXRBcnJvd0xpbmUsIFBsYWl0RHJhd0VsZW1lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFJFU0laRV9IQU5ETEVfRElBTUVURVIgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IFBsYWl0TGluZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbGluZSc7XG5pbXBvcnQgeyBnZXRNaWRkbGVQb2ludHMgfSBmcm9tICcuLi9saW5lJztcblxuZXhwb3J0IGVudW0gTGluZVJlc2l6ZUhhbmRsZSB7XG4gICAgJ3NvdXJjZScgPSAnc291cmNlJyxcbiAgICAndGFyZ2V0JyA9ICd0YXJnZXQnLFxuICAgICdhZGRIYW5kbGUnID0gJ2FkZEhhbmRsZSdcbn1cblxuZXhwb3J0IGNvbnN0IGdldEhpdExpbmVSZXNpemVIYW5kbGVSZWYgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSwgcG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgbGV0IGRhdGFQb2ludHMgPSBQbGFpdERyYXdFbGVtZW50LmlzQXJyb3dMaW5lKGVsZW1lbnQpID8gUGxhaXRBcnJvd0xpbmUuZ2V0UG9pbnRzKGJvYXJkLCBlbGVtZW50KSA6IGVsZW1lbnQucG9pbnRzO1xuICAgIGNvbnN0IGluZGV4ID0gZ2V0SGl0UG9pbnRJbmRleChkYXRhUG9pbnRzLCBwb2ludCk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBjb25zdCBoYW5kbGVJbmRleCA9IGluZGV4O1xuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB7IGhhbmRsZTogTGluZVJlc2l6ZUhhbmRsZS5zb3VyY2UsIGhhbmRsZUluZGV4IH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluZGV4ID09PSBkYXRhUG9pbnRzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHJldHVybiB7IGhhbmRsZTogTGluZVJlc2l6ZUhhbmRsZS50YXJnZXQsIGhhbmRsZUluZGV4IH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gZWxib3cgbGluZSwgZGF0YSBwb2ludHMgb25seSB2ZXJpZnkgc291cmNlIGNvbm5lY3Rpb24gcG9pbnQgYW5kIHRhcmdldCBjb25uZWN0aW9uIHBvaW50XG4gICAgICAgIGlmIChlbGVtZW50LnNoYXBlICE9PSBBcnJvd0xpbmVTaGFwZS5lbGJvdykge1xuICAgICAgICAgICAgcmV0dXJuIHsgaGFuZGxlSW5kZXggfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBtaWRkbGVQb2ludHMgPSBnZXRNaWRkbGVQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IGluZGV4T2ZNaWRkbGVQb2ludHMgPSBnZXRIaXRQb2ludEluZGV4KG1pZGRsZVBvaW50cywgcG9pbnQpO1xuICAgIGlmIChpbmRleE9mTWlkZGxlUG9pbnRzICE9PSAtMSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGFuZGxlOiBMaW5lUmVzaXplSGFuZGxlLmFkZEhhbmRsZSxcbiAgICAgICAgICAgIGhhbmRsZUluZGV4OiBpbmRleE9mTWlkZGxlUG9pbnRzXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGl0UG9pbnRJbmRleChwb2ludHM6IFBvaW50W10sIG1vdmluZ1BvaW50OiBQb2ludCkge1xuICAgIGNvbnN0IHJlY3RhbmdsZXMgPSBwb2ludHMubWFwKHBvaW50ID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHBvaW50WzBdIC0gUkVTSVpFX0hBTkRMRV9ESUFNRVRFUiAvIDIsXG4gICAgICAgICAgICB5OiBwb2ludFsxXSAtIFJFU0laRV9IQU5ETEVfRElBTUVURVIgLyAyLFxuICAgICAgICAgICAgd2lkdGg6IFJFU0laRV9IQU5ETEVfRElBTUVURVIsXG4gICAgICAgICAgICBoZWlnaHQ6IFJFU0laRV9IQU5ETEVfRElBTUVURVJcbiAgICAgICAgfTtcbiAgICB9KTtcbiAgICBjb25zdCByZWN0YW5nbGUgPSByZWN0YW5nbGVzLmZpbmQocmVjdGFuZ2xlID0+IHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5pc0hpdChSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW21vdmluZ1BvaW50LCBtb3ZpbmdQb2ludF0pLCByZWN0YW5nbGUpO1xuICAgIH0pO1xuICAgIHJldHVybiByZWN0YW5nbGUgPyByZWN0YW5nbGVzLmluZGV4T2YocmVjdGFuZ2xlKSA6IC0xO1xufVxuIl19
@@ -1,39 +0,0 @@
1
- import { getSelectedElements } from '@plait/core';
2
- import { PlaitDrawElement } from '../interfaces';
3
- export const getSelectedDrawElements = (board, elements) => {
4
- const selectedElements = elements?.length ? elements : getSelectedElements(board);
5
- return selectedElements.filter(value => PlaitDrawElement.isDrawElement(value));
6
- };
7
- export const getSelectedGeometryElements = (board) => {
8
- const selectedElements = getSelectedElements(board).filter(value => PlaitDrawElement.isGeometry(value));
9
- return selectedElements;
10
- };
11
- export const getSelectedCustomGeometryElements = (board) => {
12
- const selectedElements = getSelectedElements(board).filter(value => PlaitDrawElement.isCustomGeometryElement(board, value));
13
- return selectedElements;
14
- };
15
- export const getSelectedArrowLineElements = (board) => {
16
- const selectedElements = getSelectedElements(board).filter(value => PlaitDrawElement.isArrowLine(value));
17
- return selectedElements;
18
- };
19
- export const getSelectedVectorLineElements = (board) => {
20
- const selectedElements = getSelectedElements(board).filter(value => PlaitDrawElement.isVectorLine(value));
21
- return selectedElements;
22
- };
23
- export const getSelectedImageElements = (board) => {
24
- const selectedElements = getSelectedElements(board).filter(value => PlaitDrawElement.isImage(value));
25
- return selectedElements;
26
- };
27
- export const isSingleSelectSwimlane = (board) => {
28
- const selectedElements = getSelectedElements(board);
29
- return selectedElements && selectedElements.length === 1 && PlaitDrawElement.isSwimlane(selectedElements[0]);
30
- };
31
- export const isSingleSelectLine = (board) => {
32
- const selectedElements = getSelectedElements(board);
33
- return selectedElements && selectedElements.length === 1 && PlaitDrawElement.isLine(selectedElements[0]);
34
- };
35
- export const getSelectedSwimlane = (board) => {
36
- const selectedElements = getSelectedElements(board);
37
- return selectedElements.find(item => PlaitDrawElement.isSwimlane(item));
38
- };
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9zZWxlY3RlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTRCLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVFLE9BQU8sRUFBdUMsZ0JBQWdCLEVBQWlELE1BQU0sZUFBZSxDQUFDO0FBR3JJLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsS0FBaUIsRUFBRSxRQUF5QixFQUFFLEVBQUU7SUFDcEYsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xGLE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUF1QixDQUFDO0FBQ3pHLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQzdELE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFvQixDQUFDO0lBQzNILE9BQU8sZ0JBQWdCLENBQUM7QUFDNUIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDbkUsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDL0QsZ0JBQWdCLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUNoQyxDQUFDO0lBQzNCLE9BQU8sZ0JBQWdCLENBQUM7QUFDNUIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDOUQsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQXFCLENBQUM7SUFDN0gsT0FBTyxnQkFBZ0IsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUMvRCxNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBc0IsQ0FBQztJQUMvSCxPQUFPLGdCQUFnQixDQUFDO0FBQzVCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQzFELE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFpQixDQUFDO0lBQ3JILE9BQU8sZ0JBQWdCLENBQUM7QUFDNUIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDeEQsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxPQUFPLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksZ0JBQWdCLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakgsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDcEQsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxPQUFPLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksZ0JBQWdCLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0csQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFpQixFQUFpQixFQUFFO0lBQ3BFLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQWtCLENBQUM7QUFDN0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBnZXRTZWxlY3RlZEVsZW1lbnRzIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRBcnJvd0xpbmUsIFBsYWl0Q3VzdG9tR2VvbWV0cnksIFBsYWl0RHJhd0VsZW1lbnQsIFBsYWl0R2VvbWV0cnksIFBsYWl0U3dpbWxhbmUsIFBsYWl0VmVjdG9yTGluZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUGxhaXRJbWFnZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvaW1hZ2UnO1xuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0ZWREcmF3RWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZWxlbWVudHM/Lmxlbmd0aCA/IGVsZW1lbnRzIDogZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgcmV0dXJuIHNlbGVjdGVkRWxlbWVudHMuZmlsdGVyKHZhbHVlID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNEcmF3RWxlbWVudCh2YWx1ZSkpIGFzIFBsYWl0RHJhd0VsZW1lbnRbXTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RlZEdlb21ldHJ5RWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCkuZmlsdGVyKHZhbHVlID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeSh2YWx1ZSkpIGFzIFBsYWl0R2VvbWV0cnlbXTtcbiAgICByZXR1cm4gc2VsZWN0ZWRFbGVtZW50cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RlZEN1c3RvbUdlb21ldHJ5RWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCkuZmlsdGVyKHZhbHVlID0+XG4gICAgICAgIFBsYWl0RHJhd0VsZW1lbnQuaXNDdXN0b21HZW9tZXRyeUVsZW1lbnQoYm9hcmQsIHZhbHVlKVxuICAgICkgYXMgUGxhaXRDdXN0b21HZW9tZXRyeVtdO1xuICAgIHJldHVybiBzZWxlY3RlZEVsZW1lbnRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlbGVjdGVkQXJyb3dMaW5lRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCkuZmlsdGVyKHZhbHVlID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNBcnJvd0xpbmUodmFsdWUpKSBhcyBQbGFpdEFycm93TGluZVtdO1xuICAgIHJldHVybiBzZWxlY3RlZEVsZW1lbnRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlbGVjdGVkVmVjdG9yTGluZUVsZW1lbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpLmZpbHRlcih2YWx1ZSA9PiBQbGFpdERyYXdFbGVtZW50LmlzVmVjdG9yTGluZSh2YWx1ZSkpIGFzIFBsYWl0VmVjdG9yTGluZVtdO1xuICAgIHJldHVybiBzZWxlY3RlZEVsZW1lbnRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlbGVjdGVkSW1hZ2VFbGVtZW50cyA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKS5maWx0ZXIodmFsdWUgPT4gUGxhaXREcmF3RWxlbWVudC5pc0ltYWdlKHZhbHVlKSkgYXMgUGxhaXRJbWFnZVtdO1xuICAgIHJldHVybiBzZWxlY3RlZEVsZW1lbnRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2luZ2xlU2VsZWN0U3dpbWxhbmUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgcmV0dXJuIHNlbGVjdGVkRWxlbWVudHMgJiYgc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDEgJiYgUGxhaXREcmF3RWxlbWVudC5pc1N3aW1sYW5lKHNlbGVjdGVkRWxlbWVudHNbMF0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2luZ2xlU2VsZWN0TGluZSA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICByZXR1cm4gc2VsZWN0ZWRFbGVtZW50cyAmJiBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJiBQbGFpdERyYXdFbGVtZW50LmlzTGluZShzZWxlY3RlZEVsZW1lbnRzWzBdKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RlZFN3aW1sYW5lID0gKGJvYXJkOiBQbGFpdEJvYXJkKTogUGxhaXRTd2ltbGFuZSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIHJldHVybiBzZWxlY3RlZEVsZW1lbnRzLmZpbmQoaXRlbSA9PiBQbGFpdERyYXdFbGVtZW50LmlzU3dpbWxhbmUoaXRlbSkpIGFzIFBsYWl0U3dpbWxhbmU7XG59O1xuIl19
@@ -1,11 +0,0 @@
1
- import { BasicShapes, PlaitDrawElement, TableSymbols } from '../interfaces';
2
- export const getElementShape = (value) => {
3
- if (PlaitDrawElement.isImage(value)) {
4
- return BasicShapes.rectangle;
5
- }
6
- if (PlaitDrawElement.isTable(value)) {
7
- return TableSymbols.table;
8
- }
9
- return value.shape;
10
- };
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9zaGFwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFxQixZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0YsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBd0IsRUFBRSxFQUFFO0lBQ3hELElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEMsT0FBTyxXQUFXLENBQUMsU0FBUyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2ljU2hhcGVzLCBQbGFpdERyYXdFbGVtZW50LCBQbGFpdFNoYXBlRWxlbWVudCwgVGFibGVTeW1ib2xzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50U2hhcGUgPSAodmFsdWU6IFBsYWl0U2hhcGVFbGVtZW50KSA9PiB7XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVzLnJlY3RhbmdsZTtcbiAgICB9XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNUYWJsZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIFRhYmxlU3ltYm9scy50YWJsZTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlLnNoYXBlO1xufTtcbiJdfQ==
@@ -1,185 +0,0 @@
1
- import { getDirectionFactorByDirectionComponent, getUnitVectorByPointAndPoint, resetPointsAfterResize } from '@plait/common';
2
- import { RectangleClient, createDebugGenerator, createG, getSelectionAngle, getRectangleByAngle, getRectangleByElements, getSnapRectangles, SNAP_TOLERANCE, drawSolidLines, drawPointSnapLines, getTripleAxis, getMinPointDelta } from '@plait/core';
3
- import { getResizeZoom, movePointByZoomAndOriginPoint } from '../plugins/with-draw-resize';
4
- const debugKey = 'debug:plait:point-for-geometry';
5
- export const debugGenerator = createDebugGenerator(debugKey);
6
- const EQUAL_SPACING = 10;
7
- export function getSnapResizingRefOptions(board, resizeRef, resizeState, resizeOriginPointAndHandlePoint, isAspectRatio, isFromCorner) {
8
- const { originPoint, handlePoint } = resizeOriginPointAndHandlePoint;
9
- const resizePoints = [resizeState.startPoint, resizeState.endPoint];
10
- const { xZoom, yZoom } = getResizeZoom(resizePoints, originPoint, handlePoint, isFromCorner, isAspectRatio);
11
- let activeElements;
12
- let resizeOriginPoint = [];
13
- if (Array.isArray(resizeRef.element)) {
14
- activeElements = resizeRef.element;
15
- const rectangle = getRectangleByElements(board, resizeRef.element, false);
16
- resizeOriginPoint = RectangleClient.getPoints(rectangle);
17
- }
18
- else {
19
- activeElements = [resizeRef.element];
20
- resizeOriginPoint = resizeRef.element.points;
21
- }
22
- const points = resizeOriginPoint.map(p => {
23
- return movePointByZoomAndOriginPoint(p, originPoint, xZoom, yZoom);
24
- });
25
- const rectangle = RectangleClient.getRectangleByPoints(points);
26
- const activeRectangle = getRectangleByAngle(rectangle, getSelectionAngle(activeElements));
27
- const resizeHandlePoint = movePointByZoomAndOriginPoint(handlePoint, originPoint, xZoom, yZoom);
28
- const [x, y] = getUnitVectorByPointAndPoint(originPoint, resizeHandlePoint);
29
- return {
30
- resizePoints,
31
- resizeOriginPoint,
32
- activeRectangle,
33
- originPoint,
34
- handlePoint,
35
- directionFactors: [getDirectionFactorByDirectionComponent(x), getDirectionFactorByDirectionComponent(y)],
36
- isAspectRatio,
37
- isFromCorner
38
- };
39
- }
40
- export function getSnapResizingRef(board, activeElements, resizeSnapOptions) {
41
- const snapG = createG();
42
- const snapRectangles = getSnapRectangles(board, activeElements);
43
- let snapLineDelta = getIsometricLineDelta(snapRectangles, resizeSnapOptions);
44
- if (snapLineDelta.deltaX === 0 && snapLineDelta.deltaY === 0) {
45
- snapLineDelta = getSnapPointDelta(snapRectangles, resizeSnapOptions);
46
- }
47
- const angle = getSelectionAngle(activeElements);
48
- const activePointAndZoom = getActivePointAndZoom(snapLineDelta, resizeSnapOptions, angle);
49
- const isometricLinesG = drawIsometricSnapLines(board, activePointAndZoom.activePoints, snapRectangles, resizeSnapOptions, angle);
50
- const pointLinesG = drawResizingPointSnapLines(board, activePointAndZoom.activePoints, snapRectangles, resizeSnapOptions, angle);
51
- snapG.append(isometricLinesG, pointLinesG);
52
- return { ...activePointAndZoom, ...snapLineDelta, snapG };
53
- }
54
- function getSnapPointDelta(snapRectangles, resizeSnapOptions) {
55
- let pointLineDelta = {
56
- deltaX: 0,
57
- deltaY: 0
58
- };
59
- const { isAspectRatio, activeRectangle, directionFactors } = resizeSnapOptions;
60
- const drawHorizontal = directionFactors[0] !== 0 || isAspectRatio;
61
- const drawVertical = directionFactors[1] !== 0 || isAspectRatio;
62
- if (drawHorizontal) {
63
- const xSnapAxis = getTripleAxis(activeRectangle, true);
64
- const pointX = directionFactors[0] === -1 ? xSnapAxis[0] : xSnapAxis[2];
65
- const deltaX = getMinPointDelta(snapRectangles, pointX, true);
66
- if (Math.abs(deltaX) < SNAP_TOLERANCE) {
67
- pointLineDelta.deltaX = deltaX;
68
- if (pointLineDelta.deltaX !== 0 && isAspectRatio) {
69
- pointLineDelta.deltaY = pointLineDelta.deltaX / (activeRectangle.width / activeRectangle.height);
70
- return pointLineDelta;
71
- }
72
- }
73
- }
74
- if (drawVertical) {
75
- const ySnapAxis = getTripleAxis(activeRectangle, false);
76
- const pointY = directionFactors[1] === -1 ? ySnapAxis[0] : ySnapAxis[2];
77
- const deltaY = getMinPointDelta(snapRectangles, pointY, false);
78
- if (Math.abs(deltaY) < SNAP_TOLERANCE) {
79
- pointLineDelta.deltaY = deltaY;
80
- if (pointLineDelta.deltaY !== 0 && isAspectRatio) {
81
- pointLineDelta.deltaX = pointLineDelta.deltaY * (activeRectangle.width / activeRectangle.height);
82
- return pointLineDelta;
83
- }
84
- }
85
- }
86
- return pointLineDelta;
87
- }
88
- function getActivePointAndZoom(resizeSnapDelta, resizeSnapOptions, angle) {
89
- const { deltaX, deltaY } = resizeSnapDelta;
90
- const { resizePoints, isCreate } = resizeSnapOptions;
91
- const newResizePoints = [resizePoints[0], [resizePoints[1][0] + deltaX, resizePoints[1][1] + deltaY]];
92
- let activePoints = newResizePoints;
93
- let xZoom = 0;
94
- let yZoom = 0;
95
- if (!isCreate) {
96
- const { originPoint, handlePoint, isFromCorner, isAspectRatio, resizeOriginPoint } = resizeSnapOptions;
97
- const resizeZoom = getResizeZoom(newResizePoints, originPoint, handlePoint, isFromCorner, isAspectRatio);
98
- xZoom = resizeZoom.xZoom;
99
- yZoom = resizeZoom.yZoom;
100
- activePoints = resizeOriginPoint.map(p => {
101
- return movePointByZoomAndOriginPoint(p, originPoint, xZoom, yZoom);
102
- });
103
- if (angle) {
104
- activePoints = resetPointsAfterResize(RectangleClient.getRectangleByPoints(resizeOriginPoint), RectangleClient.getRectangleByPoints(activePoints), RectangleClient.getCenterPoint(RectangleClient.getRectangleByPoints(resizeOriginPoint)), RectangleClient.getCenterPoint(RectangleClient.getRectangleByPoints(activePoints)), angle);
105
- }
106
- }
107
- return {
108
- xZoom,
109
- yZoom,
110
- activePoints
111
- };
112
- }
113
- function getIsometricLineDelta(snapRectangles, resizeSnapOptions) {
114
- let isometricLineDelta = {
115
- deltaX: 0,
116
- deltaY: 0
117
- };
118
- const { isAspectRatio, activeRectangle } = resizeSnapOptions;
119
- const widthSnapRectangle = snapRectangles.find(item => Math.abs(item.width - activeRectangle.width) < SNAP_TOLERANCE);
120
- if (widthSnapRectangle) {
121
- const deltaWidth = widthSnapRectangle.width - activeRectangle.width;
122
- isometricLineDelta.deltaX = deltaWidth * resizeSnapOptions.directionFactors[0];
123
- if (isAspectRatio) {
124
- const deltaHeight = deltaWidth / (activeRectangle.width / activeRectangle.height);
125
- isometricLineDelta.deltaY = deltaHeight * resizeSnapOptions.directionFactors[1];
126
- return isometricLineDelta;
127
- }
128
- }
129
- const heightSnapRectangle = snapRectangles.find(item => Math.abs(item.height - activeRectangle.height) < SNAP_TOLERANCE);
130
- if (heightSnapRectangle) {
131
- const deltaHeight = heightSnapRectangle.height - activeRectangle.height;
132
- isometricLineDelta.deltaY = deltaHeight * resizeSnapOptions.directionFactors[1];
133
- if (isAspectRatio) {
134
- const deltaWidth = deltaHeight * (activeRectangle.width / activeRectangle.height);
135
- isometricLineDelta.deltaX = deltaWidth * resizeSnapOptions.directionFactors[0];
136
- return isometricLineDelta;
137
- }
138
- }
139
- return isometricLineDelta;
140
- }
141
- function getIsometricLinePoints(rectangle, isHorizontal) {
142
- return isHorizontal
143
- ? [
144
- [rectangle.x, rectangle.y - EQUAL_SPACING],
145
- [rectangle.x + rectangle.width, rectangle.y - EQUAL_SPACING]
146
- ]
147
- : [
148
- [rectangle.x - EQUAL_SPACING, rectangle.y],
149
- [rectangle.x - EQUAL_SPACING, rectangle.y + rectangle.height]
150
- ];
151
- }
152
- function drawResizingPointSnapLines(board, activePoints, snapRectangles, resizeSnapOptions, angle) {
153
- debugGenerator.isDebug() && debugGenerator.clear();
154
- const rectangle = RectangleClient.getRectangleByPoints(activePoints);
155
- const activeRectangle = getRectangleByAngle(rectangle, angle);
156
- const { isAspectRatio, directionFactors } = resizeSnapOptions;
157
- const drawHorizontal = directionFactors[0] !== 0 || isAspectRatio;
158
- const drawVertical = directionFactors[1] !== 0 || isAspectRatio;
159
- return drawPointSnapLines(board, activeRectangle, snapRectangles, drawHorizontal, drawVertical);
160
- }
161
- function drawIsometricSnapLines(board, activePoints, snapRectangles, resizeSnapOptions, angle) {
162
- let widthIsometricPoints = [];
163
- let heightIsometricPoints = [];
164
- const drawHorizontalLine = resizeSnapOptions.directionFactors[0] !== 0 || resizeSnapOptions.isAspectRatio;
165
- const drawVerticalLine = resizeSnapOptions.directionFactors[1] !== 0 || resizeSnapOptions.isAspectRatio;
166
- const rectangle = RectangleClient.getRectangleByPoints(activePoints);
167
- const activeRectangle = getRectangleByAngle(rectangle, angle);
168
- for (let snapRectangle of snapRectangles) {
169
- if (activeRectangle.width === snapRectangle.width && drawHorizontalLine) {
170
- widthIsometricPoints.push(getIsometricLinePoints(snapRectangle, true));
171
- }
172
- if (activeRectangle.height === snapRectangle.height && drawVerticalLine) {
173
- heightIsometricPoints.push(getIsometricLinePoints(snapRectangle, false));
174
- }
175
- }
176
- if (widthIsometricPoints.length && drawHorizontalLine) {
177
- widthIsometricPoints.push(getIsometricLinePoints(activeRectangle, true));
178
- }
179
- if (heightIsometricPoints.length && drawVerticalLine) {
180
- heightIsometricPoints.push(getIsometricLinePoints(activeRectangle, false));
181
- }
182
- const isometricLines = [...widthIsometricPoints, ...heightIsometricPoints];
183
- return drawSolidLines(board, isometricLines);
184
- }
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcC1yZXNpemluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3V0aWxzL3NuYXAtcmVzaXppbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILHNDQUFzQyxFQUN0Qyw0QkFBNEIsRUFDNUIsc0JBQXNCLEVBQ3pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFLSCxlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLE9BQU8sRUFDUCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUd0QixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLGdCQUFnQixFQUNuQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsYUFBYSxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHM0YsTUFBTSxRQUFRLEdBQUcsZ0NBQWdDLENBQUM7QUFDbEQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBb0I3RCxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFFekIsTUFBTSxVQUFVLHlCQUF5QixDQUNyQyxLQUFpQixFQUNqQixTQUF5RyxFQUN6RyxXQUF3QixFQUN4QiwrQkFHQyxFQUNELGFBQXNCLEVBQ3RCLFlBQXFCO0lBRXJCLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEdBQUcsK0JBQStCLENBQUM7SUFDckUsTUFBTSxZQUFZLEdBQW1CLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEYsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxhQUFhLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRTVHLElBQUksY0FBOEIsQ0FBQztJQUNuQyxJQUFJLGlCQUFpQixHQUFZLEVBQUUsQ0FBQztJQUNwQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDbkMsY0FBYyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUM7UUFDbkMsTUFBTSxTQUFTLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUUsaUJBQWlCLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3RCxDQUFDO1NBQU0sQ0FBQztRQUNKLGNBQWMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxpQkFBaUIsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUNqRCxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ3JDLE9BQU8sNkJBQTZCLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkUsQ0FBQyxDQUFtQixDQUFDO0lBQ3JCLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvRCxNQUFNLGVBQWUsR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUMxRixNQUFNLGlCQUFpQixHQUFHLDZCQUE2QixDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsNEJBQTRCLENBQUMsV0FBVyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDNUUsT0FBTztRQUNILFlBQVk7UUFDWixpQkFBaUI7UUFDakIsZUFBZTtRQUNmLFdBQVc7UUFDWCxXQUFXO1FBQ1gsZ0JBQWdCLEVBQUUsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDLENBQUMsRUFBRSxzQ0FBc0MsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RyxhQUFhO1FBQ2IsWUFBWTtLQUNmLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQWlCLEVBQUUsY0FBOEIsRUFBRSxpQkFBb0M7SUFDdEgsTUFBTSxLQUFLLEdBQUcsT0FBTyxFQUFFLENBQUM7SUFDeEIsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ2hFLElBQUksYUFBYSxHQUFHLHFCQUFxQixDQUFDLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzdFLElBQUksYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMzRCxhQUFhLEdBQUcsaUJBQWlCLENBQUMsY0FBYyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDekUsQ0FBQztJQUNELE1BQU0sS0FBSyxHQUFHLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sa0JBQWtCLEdBQUcscUJBQXFCLENBQUMsYUFBYSxFQUFFLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFGLE1BQU0sZUFBZSxHQUFHLHNCQUFzQixDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pJLE1BQU0sV0FBVyxHQUFHLDBCQUEwQixDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pJLEtBQUssQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLE9BQU8sRUFBRSxHQUFHLGtCQUFrQixFQUFFLEdBQUcsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQzlELENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLGNBQWlDLEVBQUUsaUJBQW9DO0lBQzlGLElBQUksY0FBYyxHQUFjO1FBQzVCLE1BQU0sRUFBRSxDQUFDO1FBQ1QsTUFBTSxFQUFFLENBQUM7S0FDWixDQUFDO0lBQ0YsTUFBTSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQztJQUMvRSxNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksYUFBYSxDQUFDO0lBQ2xFLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxhQUFhLENBQUM7SUFFaEUsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUNqQixNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sTUFBTSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RSxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxjQUFjLEVBQUUsQ0FBQztZQUNwQyxjQUFjLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUMvQixJQUFJLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUMvQyxjQUFjLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDakcsT0FBTyxjQUFjLENBQUM7WUFDMUIsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNmLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEQsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sTUFBTSxHQUFHLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0QsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLGNBQWMsRUFBRSxDQUFDO1lBQ3BDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQy9CLElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQy9DLGNBQWMsQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNqRyxPQUFPLGNBQWMsQ0FBQztZQUMxQixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLGNBQWMsQ0FBQztBQUMxQixDQUFDO0FBRUQsU0FBUyxxQkFBcUIsQ0FBQyxlQUEwQixFQUFFLGlCQUFvQyxFQUFFLEtBQWE7SUFDMUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxlQUFlLENBQUM7SUFDM0MsTUFBTSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQztJQUNyRCxNQUFNLGVBQWUsR0FBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3RILElBQUksWUFBWSxHQUFHLGVBQWUsQ0FBQztJQUNuQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDZCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDZCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDWixNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLEdBQUcsaUJBQWlCLENBQUM7UUFDdkcsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLGVBQWUsRUFBRSxXQUFZLEVBQUUsV0FBWSxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUMzRyxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUN6QixLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUN6QixZQUFZLEdBQUcsaUJBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3RDLE9BQU8sNkJBQTZCLENBQUMsQ0FBQyxFQUFFLFdBQVksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFtQixDQUFDO1FBQ3JCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixZQUFZLEdBQUcsc0JBQXNCLENBQ2pDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBa0IsQ0FBQyxFQUN4RCxlQUFlLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLEVBQ2xELGVBQWUsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLGlCQUFrQixDQUFDLENBQUMsRUFDeEYsZUFBZSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLENBQUMsRUFDbEYsS0FBSyxDQUNSLENBQUM7UUFDTixDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU87UUFDSCxLQUFLO1FBQ0wsS0FBSztRQUNMLFlBQVk7S0FDZixDQUFDO0FBQ04sQ0FBQztBQUVELFNBQVMscUJBQXFCLENBQUMsY0FBaUMsRUFBRSxpQkFBb0M7SUFDbEcsSUFBSSxrQkFBa0IsR0FBYztRQUNoQyxNQUFNLEVBQUUsQ0FBQztRQUNULE1BQU0sRUFBRSxDQUFDO0tBQ1osQ0FBQztJQUNGLE1BQU0sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLEdBQUcsaUJBQWlCLENBQUM7SUFDN0QsTUFBTSxrQkFBa0IsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQztJQUN0SCxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDckIsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUM7UUFDcEUsa0JBQWtCLENBQUMsTUFBTSxHQUFHLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRSxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sV0FBVyxHQUFHLFVBQVUsR0FBRyxDQUFDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xGLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxXQUFXLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEYsT0FBTyxrQkFBa0IsQ0FBQztRQUM5QixDQUFDO0lBQ0wsQ0FBQztJQUNELE1BQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUM7SUFDekgsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sV0FBVyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDO1FBQ3hFLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxXQUFXLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEYsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNoQixNQUFNLFVBQVUsR0FBRyxXQUFXLEdBQUcsQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsRixrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsVUFBVSxHQUFHLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9FLE9BQU8sa0JBQWtCLENBQUM7UUFDOUIsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLGtCQUFrQixDQUFDO0FBQzlCLENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUFDLFNBQTBCLEVBQUUsWUFBcUI7SUFDN0UsT0FBTyxZQUFZO1FBQ2YsQ0FBQyxDQUFDO1lBQ0ksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDO1lBQzFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDO1NBQy9EO1FBQ0gsQ0FBQyxDQUFDO1lBQ0ksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQzFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1NBQ2hFLENBQUM7QUFDWixDQUFDO0FBRUQsU0FBUywwQkFBMEIsQ0FDL0IsS0FBaUIsRUFDakIsWUFBcUIsRUFDckIsY0FBaUMsRUFDakMsaUJBQW9DLEVBQ3BDLEtBQWE7SUFFYixjQUFjLENBQUMsT0FBTyxFQUFFLElBQUksY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ25ELE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyRSxNQUFNLGVBQWUsR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUQsTUFBTSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLGlCQUFpQixDQUFDO0lBQzlELE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxhQUFhLENBQUM7SUFDbEUsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLGFBQWEsQ0FBQztJQUNoRSxPQUFPLGtCQUFrQixDQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUNwRyxDQUFDO0FBRUQsU0FBUyxzQkFBc0IsQ0FDM0IsS0FBaUIsRUFDakIsWUFBcUIsRUFDckIsY0FBaUMsRUFDakMsaUJBQW9DLEVBQ3BDLEtBQWE7SUFFYixJQUFJLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztJQUM5QixJQUFJLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztJQUUvQixNQUFNLGtCQUFrQixHQUFHLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxhQUFhLENBQUM7SUFDMUcsTUFBTSxnQkFBZ0IsR0FBRyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksaUJBQWlCLENBQUMsYUFBYSxDQUFDO0lBQ3hHLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyRSxNQUFNLGVBQWUsR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUQsS0FBSyxJQUFJLGFBQWEsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUN2QyxJQUFJLGVBQWUsQ0FBQyxLQUFLLEtBQUssYUFBYSxDQUFDLEtBQUssSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQ3RFLG9CQUFvQixDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBQ0QsSUFBSSxlQUFlLENBQUMsTUFBTSxLQUFLLGFBQWEsQ0FBQyxNQUFNLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUN0RSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDN0UsQ0FBQztJQUNMLENBQUM7SUFDRCxJQUFJLG9CQUFvQixDQUFDLE1BQU0sSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQ3BELG9CQUFvQixDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBQ0QsSUFBSSxxQkFBcUIsQ0FBQyxNQUFNLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUNuRCxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBRyxvQkFBb0IsRUFBRSxHQUFHLHFCQUFxQixDQUFDLENBQUM7SUFDM0UsT0FBTyxjQUFjLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ2pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFJlc2l6ZVJlZixcbiAgICBSZXNpemVTdGF0ZSxcbiAgICBnZXREaXJlY3Rpb25GYWN0b3JCeURpcmVjdGlvbkNvbXBvbmVudCxcbiAgICBnZXRVbml0VmVjdG9yQnlQb2ludEFuZFBvaW50LFxuICAgIHJlc2V0UG9pbnRzQWZ0ZXJSZXNpemVcbn0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQge1xuICAgIERpcmVjdGlvbkZhY3RvcnMsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgUG9pbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIGNyZWF0ZURlYnVnR2VuZXJhdG9yLFxuICAgIGNyZWF0ZUcsXG4gICAgZ2V0U2VsZWN0aW9uQW5nbGUsXG4gICAgZ2V0UmVjdGFuZ2xlQnlBbmdsZSxcbiAgICBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzLFxuICAgIFNuYXBEZWx0YSxcbiAgICBTbmFwUmVmLFxuICAgIGdldFNuYXBSZWN0YW5nbGVzLFxuICAgIFNOQVBfVE9MRVJBTkNFLFxuICAgIGRyYXdTb2xpZExpbmVzLFxuICAgIGRyYXdQb2ludFNuYXBMaW5lcyxcbiAgICBnZXRUcmlwbGVBeGlzLFxuICAgIGdldE1pblBvaW50RGVsdGFcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgZ2V0UmVzaXplWm9vbSwgbW92ZVBvaW50Qnlab29tQW5kT3JpZ2luUG9pbnQgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtZHJhdy1yZXNpemUnO1xuaW1wb3J0IHsgUGxhaXRDdXN0b21HZW9tZXRyeSwgUGxhaXREcmF3RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5jb25zdCBkZWJ1Z0tleSA9ICdkZWJ1ZzpwbGFpdDpwb2ludC1mb3ItZ2VvbWV0cnknO1xuZXhwb3J0IGNvbnN0IGRlYnVnR2VuZXJhdG9yID0gY3JlYXRlRGVidWdHZW5lcmF0b3IoZGVidWdLZXkpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc2l6ZVNuYXBSZWYgZXh0ZW5kcyBTbmFwUmVmIHtcbiAgICB4Wm9vbTogbnVtYmVyO1xuICAgIHlab29tOiBudW1iZXI7XG4gICAgYWN0aXZlUG9pbnRzOiBQb2ludFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc2l6ZVNuYXBPcHRpb25zIHtcbiAgICByZXNpemVQb2ludHM6IFBvaW50W107XG4gICAgYWN0aXZlUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQ7XG4gICAgZGlyZWN0aW9uRmFjdG9yczogRGlyZWN0aW9uRmFjdG9ycztcbiAgICBpc0Zyb21Db3JuZXI6IGJvb2xlYW47XG4gICAgaXNBc3BlY3RSYXRpbzogYm9vbGVhbjtcbiAgICByZXNpemVPcmlnaW5Qb2ludD86IFBvaW50W107XG4gICAgb3JpZ2luUG9pbnQ/OiBQb2ludDtcbiAgICBoYW5kbGVQb2ludD86IFBvaW50O1xuICAgIGlzQ3JlYXRlPzogYm9vbGVhbjtcbn1cblxuY29uc3QgRVFVQUxfU1BBQ0lORyA9IDEwO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U25hcFJlc2l6aW5nUmVmT3B0aW9ucyhcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICByZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdERyYXdFbGVtZW50IHwgUGxhaXRDdXN0b21HZW9tZXRyeSB8IChQbGFpdERyYXdFbGVtZW50IHwgUGxhaXRDdXN0b21HZW9tZXRyeSlbXT4sXG4gICAgcmVzaXplU3RhdGU6IFJlc2l6ZVN0YXRlLFxuICAgIHJlc2l6ZU9yaWdpblBvaW50QW5kSGFuZGxlUG9pbnQ6IHtcbiAgICAgICAgb3JpZ2luUG9pbnQ6IFBvaW50O1xuICAgICAgICBoYW5kbGVQb2ludDogUG9pbnQ7XG4gICAgfSxcbiAgICBpc0FzcGVjdFJhdGlvOiBib29sZWFuLFxuICAgIGlzRnJvbUNvcm5lcjogYm9vbGVhblxuKTogUmVzaXplU25hcE9wdGlvbnMge1xuICAgIGNvbnN0IHsgb3JpZ2luUG9pbnQsIGhhbmRsZVBvaW50IH0gPSByZXNpemVPcmlnaW5Qb2ludEFuZEhhbmRsZVBvaW50O1xuICAgIGNvbnN0IHJlc2l6ZVBvaW50czogW1BvaW50LCBQb2ludF0gPSBbcmVzaXplU3RhdGUuc3RhcnRQb2ludCwgcmVzaXplU3RhdGUuZW5kUG9pbnRdO1xuICAgIGNvbnN0IHsgeFpvb20sIHlab29tIH0gPSBnZXRSZXNpemVab29tKHJlc2l6ZVBvaW50cywgb3JpZ2luUG9pbnQsIGhhbmRsZVBvaW50LCBpc0Zyb21Db3JuZXIsIGlzQXNwZWN0UmF0aW8pO1xuXG4gICAgbGV0IGFjdGl2ZUVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXTtcbiAgICBsZXQgcmVzaXplT3JpZ2luUG9pbnQ6IFBvaW50W10gPSBbXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZXNpemVSZWYuZWxlbWVudCkpIHtcbiAgICAgICAgYWN0aXZlRWxlbWVudHMgPSByZXNpemVSZWYuZWxlbWVudDtcbiAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgcmVzaXplUmVmLmVsZW1lbnQsIGZhbHNlKTtcbiAgICAgICAgcmVzaXplT3JpZ2luUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgYWN0aXZlRWxlbWVudHMgPSBbcmVzaXplUmVmLmVsZW1lbnRdO1xuICAgICAgICByZXNpemVPcmlnaW5Qb2ludCA9IHJlc2l6ZVJlZi5lbGVtZW50LnBvaW50cztcbiAgICB9XG5cbiAgICBjb25zdCBwb2ludHMgPSByZXNpemVPcmlnaW5Qb2ludC5tYXAocCA9PiB7XG4gICAgICAgIHJldHVybiBtb3ZlUG9pbnRCeVpvb21BbmRPcmlnaW5Qb2ludChwLCBvcmlnaW5Qb2ludCwgeFpvb20sIHlab29tKTtcbiAgICB9KSBhcyBbUG9pbnQsIFBvaW50XTtcbiAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKTtcbiAgICBjb25zdCBhY3RpdmVSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUFuZ2xlKHJlY3RhbmdsZSwgZ2V0U2VsZWN0aW9uQW5nbGUoYWN0aXZlRWxlbWVudHMpKTtcbiAgICBjb25zdCByZXNpemVIYW5kbGVQb2ludCA9IG1vdmVQb2ludEJ5Wm9vbUFuZE9yaWdpblBvaW50KGhhbmRsZVBvaW50LCBvcmlnaW5Qb2ludCwgeFpvb20sIHlab29tKTtcbiAgICBjb25zdCBbeCwgeV0gPSBnZXRVbml0VmVjdG9yQnlQb2ludEFuZFBvaW50KG9yaWdpblBvaW50LCByZXNpemVIYW5kbGVQb2ludCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcmVzaXplUG9pbnRzLFxuICAgICAgICByZXNpemVPcmlnaW5Qb2ludCxcbiAgICAgICAgYWN0aXZlUmVjdGFuZ2xlLFxuICAgICAgICBvcmlnaW5Qb2ludCxcbiAgICAgICAgaGFuZGxlUG9pbnQsXG4gICAgICAgIGRpcmVjdGlvbkZhY3RvcnM6IFtnZXREaXJlY3Rpb25GYWN0b3JCeURpcmVjdGlvbkNvbXBvbmVudCh4KSwgZ2V0RGlyZWN0aW9uRmFjdG9yQnlEaXJlY3Rpb25Db21wb25lbnQoeSldLFxuICAgICAgICBpc0FzcGVjdFJhdGlvLFxuICAgICAgICBpc0Zyb21Db3JuZXJcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U25hcFJlc2l6aW5nUmVmKGJvYXJkOiBQbGFpdEJvYXJkLCBhY3RpdmVFbGVtZW50czogUGxhaXRFbGVtZW50W10sIHJlc2l6ZVNuYXBPcHRpb25zOiBSZXNpemVTbmFwT3B0aW9ucyk6IFJlc2l6ZVNuYXBSZWYge1xuICAgIGNvbnN0IHNuYXBHID0gY3JlYXRlRygpO1xuICAgIGNvbnN0IHNuYXBSZWN0YW5nbGVzID0gZ2V0U25hcFJlY3RhbmdsZXMoYm9hcmQsIGFjdGl2ZUVsZW1lbnRzKTtcbiAgICBsZXQgc25hcExpbmVEZWx0YSA9IGdldElzb21ldHJpY0xpbmVEZWx0YShzbmFwUmVjdGFuZ2xlcywgcmVzaXplU25hcE9wdGlvbnMpO1xuICAgIGlmIChzbmFwTGluZURlbHRhLmRlbHRhWCA9PT0gMCAmJiBzbmFwTGluZURlbHRhLmRlbHRhWSA9PT0gMCkge1xuICAgICAgICBzbmFwTGluZURlbHRhID0gZ2V0U25hcFBvaW50RGVsdGEoc25hcFJlY3RhbmdsZXMsIHJlc2l6ZVNuYXBPcHRpb25zKTtcbiAgICB9XG4gICAgY29uc3QgYW5nbGUgPSBnZXRTZWxlY3Rpb25BbmdsZShhY3RpdmVFbGVtZW50cyk7XG4gICAgY29uc3QgYWN0aXZlUG9pbnRBbmRab29tID0gZ2V0QWN0aXZlUG9pbnRBbmRab29tKHNuYXBMaW5lRGVsdGEsIHJlc2l6ZVNuYXBPcHRpb25zLCBhbmdsZSk7XG4gICAgY29uc3QgaXNvbWV0cmljTGluZXNHID0gZHJhd0lzb21ldHJpY1NuYXBMaW5lcyhib2FyZCwgYWN0aXZlUG9pbnRBbmRab29tLmFjdGl2ZVBvaW50cywgc25hcFJlY3RhbmdsZXMsIHJlc2l6ZVNuYXBPcHRpb25zLCBhbmdsZSk7XG4gICAgY29uc3QgcG9pbnRMaW5lc0cgPSBkcmF3UmVzaXppbmdQb2ludFNuYXBMaW5lcyhib2FyZCwgYWN0aXZlUG9pbnRBbmRab29tLmFjdGl2ZVBvaW50cywgc25hcFJlY3RhbmdsZXMsIHJlc2l6ZVNuYXBPcHRpb25zLCBhbmdsZSk7XG4gICAgc25hcEcuYXBwZW5kKGlzb21ldHJpY0xpbmVzRywgcG9pbnRMaW5lc0cpO1xuICAgIHJldHVybiB7IC4uLmFjdGl2ZVBvaW50QW5kWm9vbSwgLi4uc25hcExpbmVEZWx0YSwgc25hcEcgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U25hcFBvaW50RGVsdGEoc25hcFJlY3RhbmdsZXM6IFJlY3RhbmdsZUNsaWVudFtdLCByZXNpemVTbmFwT3B0aW9uczogUmVzaXplU25hcE9wdGlvbnMpIHtcbiAgICBsZXQgcG9pbnRMaW5lRGVsdGE6IFNuYXBEZWx0YSA9IHtcbiAgICAgICAgZGVsdGFYOiAwLFxuICAgICAgICBkZWx0YVk6IDBcbiAgICB9O1xuICAgIGNvbnN0IHsgaXNBc3BlY3RSYXRpbywgYWN0aXZlUmVjdGFuZ2xlLCBkaXJlY3Rpb25GYWN0b3JzIH0gPSByZXNpemVTbmFwT3B0aW9ucztcbiAgICBjb25zdCBkcmF3SG9yaXpvbnRhbCA9IGRpcmVjdGlvbkZhY3RvcnNbMF0gIT09IDAgfHwgaXNBc3BlY3RSYXRpbztcbiAgICBjb25zdCBkcmF3VmVydGljYWwgPSBkaXJlY3Rpb25GYWN0b3JzWzFdICE9PSAwIHx8IGlzQXNwZWN0UmF0aW87XG5cbiAgICBpZiAoZHJhd0hvcml6b250YWwpIHtcbiAgICAgICAgY29uc3QgeFNuYXBBeGlzID0gZ2V0VHJpcGxlQXhpcyhhY3RpdmVSZWN0YW5nbGUsIHRydWUpO1xuICAgICAgICBjb25zdCBwb2ludFggPSBkaXJlY3Rpb25GYWN0b3JzWzBdID09PSAtMSA/IHhTbmFwQXhpc1swXSA6IHhTbmFwQXhpc1syXTtcbiAgICAgICAgY29uc3QgZGVsdGFYID0gZ2V0TWluUG9pbnREZWx0YShzbmFwUmVjdGFuZ2xlcywgcG9pbnRYLCB0cnVlKTtcbiAgICAgICAgaWYgKE1hdGguYWJzKGRlbHRhWCkgPCBTTkFQX1RPTEVSQU5DRSkge1xuICAgICAgICAgICAgcG9pbnRMaW5lRGVsdGEuZGVsdGFYID0gZGVsdGFYO1xuICAgICAgICAgICAgaWYgKHBvaW50TGluZURlbHRhLmRlbHRhWCAhPT0gMCAmJiBpc0FzcGVjdFJhdGlvKSB7XG4gICAgICAgICAgICAgICAgcG9pbnRMaW5lRGVsdGEuZGVsdGFZID0gcG9pbnRMaW5lRGVsdGEuZGVsdGFYIC8gKGFjdGl2ZVJlY3RhbmdsZS53aWR0aCAvIGFjdGl2ZVJlY3RhbmdsZS5oZWlnaHQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBwb2ludExpbmVEZWx0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkcmF3VmVydGljYWwpIHtcbiAgICAgICAgY29uc3QgeVNuYXBBeGlzID0gZ2V0VHJpcGxlQXhpcyhhY3RpdmVSZWN0YW5nbGUsIGZhbHNlKTtcbiAgICAgICAgY29uc3QgcG9pbnRZID0gZGlyZWN0aW9uRmFjdG9yc1sxXSA9PT0gLTEgPyB5U25hcEF4aXNbMF0gOiB5U25hcEF4aXNbMl07XG4gICAgICAgIGNvbnN0IGRlbHRhWSA9IGdldE1pblBvaW50RGVsdGEoc25hcFJlY3RhbmdsZXMsIHBvaW50WSwgZmFsc2UpO1xuICAgICAgICBpZiAoTWF0aC5hYnMoZGVsdGFZKSA8IFNOQVBfVE9MRVJBTkNFKSB7XG4gICAgICAgICAgICBwb2ludExpbmVEZWx0YS5kZWx0YVkgPSBkZWx0YVk7XG4gICAgICAgICAgICBpZiAocG9pbnRMaW5lRGVsdGEuZGVsdGFZICE9PSAwICYmIGlzQXNwZWN0UmF0aW8pIHtcbiAgICAgICAgICAgICAgICBwb2ludExpbmVEZWx0YS5kZWx0YVggPSBwb2ludExpbmVEZWx0YS5kZWx0YVkgKiAoYWN0aXZlUmVjdGFuZ2xlLndpZHRoIC8gYWN0aXZlUmVjdGFuZ2xlLmhlaWdodCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBvaW50TGluZURlbHRhO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvaW50TGluZURlbHRhO1xufVxuXG5mdW5jdGlvbiBnZXRBY3RpdmVQb2ludEFuZFpvb20ocmVzaXplU25hcERlbHRhOiBTbmFwRGVsdGEsIHJlc2l6ZVNuYXBPcHRpb25zOiBSZXNpemVTbmFwT3B0aW9ucywgYW5nbGU6IG51bWJlcikge1xuICAgIGNvbnN0IHsgZGVsdGFYLCBkZWx0YVkgfSA9IHJlc2l6ZVNuYXBEZWx0YTtcbiAgICBjb25zdCB7IHJlc2l6ZVBvaW50cywgaXNDcmVhdGUgfSA9IHJlc2l6ZVNuYXBPcHRpb25zO1xuICAgIGNvbnN0IG5ld1Jlc2l6ZVBvaW50czogW1BvaW50LCBQb2ludF0gPSBbcmVzaXplUG9pbnRzWzBdLCBbcmVzaXplUG9pbnRzWzFdWzBdICsgZGVsdGFYLCByZXNpemVQb2ludHNbMV1bMV0gKyBkZWx0YVldXTtcbiAgICBsZXQgYWN0aXZlUG9pbnRzID0gbmV3UmVzaXplUG9pbnRzO1xuICAgIGxldCB4Wm9vbSA9IDA7XG4gICAgbGV0IHlab29tID0gMDtcbiAgICBpZiAoIWlzQ3JlYXRlKSB7XG4gICAgICAgIGNvbnN0IHsgb3JpZ2luUG9pbnQsIGhhbmRsZVBvaW50LCBpc0Zyb21Db3JuZXIsIGlzQXNwZWN0UmF0aW8sIHJlc2l6ZU9yaWdpblBvaW50IH0gPSByZXNpemVTbmFwT3B0aW9ucztcbiAgICAgICAgY29uc3QgcmVzaXplWm9vbSA9IGdldFJlc2l6ZVpvb20obmV3UmVzaXplUG9pbnRzLCBvcmlnaW5Qb2ludCEsIGhhbmRsZVBvaW50ISwgaXNGcm9tQ29ybmVyLCBpc0FzcGVjdFJhdGlvKTtcbiAgICAgICAgeFpvb20gPSByZXNpemVab29tLnhab29tO1xuICAgICAgICB5Wm9vbSA9IHJlc2l6ZVpvb20ueVpvb207XG4gICAgICAgIGFjdGl2ZVBvaW50cyA9IHJlc2l6ZU9yaWdpblBvaW50IS5tYXAocCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbW92ZVBvaW50Qnlab29tQW5kT3JpZ2luUG9pbnQocCwgb3JpZ2luUG9pbnQhLCB4Wm9vbSwgeVpvb20pO1xuICAgICAgICB9KSBhcyBbUG9pbnQsIFBvaW50XTtcbiAgICAgICAgaWYgKGFuZ2xlKSB7XG4gICAgICAgICAgICBhY3RpdmVQb2ludHMgPSByZXNldFBvaW50c0FmdGVyUmVzaXplKFxuICAgICAgICAgICAgICAgIFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhyZXNpemVPcmlnaW5Qb2ludCEpLFxuICAgICAgICAgICAgICAgIFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhhY3RpdmVQb2ludHMpLFxuICAgICAgICAgICAgICAgIFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocmVzaXplT3JpZ2luUG9pbnQhKSksXG4gICAgICAgICAgICAgICAgUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhhY3RpdmVQb2ludHMpKSxcbiAgICAgICAgICAgICAgICBhbmdsZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIHhab29tLFxuICAgICAgICB5Wm9vbSxcbiAgICAgICAgYWN0aXZlUG9pbnRzXG4gICAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0SXNvbWV0cmljTGluZURlbHRhKHNuYXBSZWN0YW5nbGVzOiBSZWN0YW5nbGVDbGllbnRbXSwgcmVzaXplU25hcE9wdGlvbnM6IFJlc2l6ZVNuYXBPcHRpb25zKSB7XG4gICAgbGV0IGlzb21ldHJpY0xpbmVEZWx0YTogU25hcERlbHRhID0ge1xuICAgICAgICBkZWx0YVg6IDAsXG4gICAgICAgIGRlbHRhWTogMFxuICAgIH07XG4gICAgY29uc3QgeyBpc0FzcGVjdFJhdGlvLCBhY3RpdmVSZWN0YW5nbGUgfSA9IHJlc2l6ZVNuYXBPcHRpb25zO1xuICAgIGNvbnN0IHdpZHRoU25hcFJlY3RhbmdsZSA9IHNuYXBSZWN0YW5nbGVzLmZpbmQoaXRlbSA9PiBNYXRoLmFicyhpdGVtLndpZHRoIC0gYWN0aXZlUmVjdGFuZ2xlLndpZHRoKSA8IFNOQVBfVE9MRVJBTkNFKTtcbiAgICBpZiAod2lkdGhTbmFwUmVjdGFuZ2xlKSB7XG4gICAgICAgIGNvbnN0IGRlbHRhV2lkdGggPSB3aWR0aFNuYXBSZWN0YW5nbGUud2lkdGggLSBhY3RpdmVSZWN0YW5nbGUud2lkdGg7XG4gICAgICAgIGlzb21ldHJpY0xpbmVEZWx0YS5kZWx0YVggPSBkZWx0YVdpZHRoICogcmVzaXplU25hcE9wdGlvbnMuZGlyZWN0aW9uRmFjdG9yc1swXTtcbiAgICAgICAgaWYgKGlzQXNwZWN0UmF0aW8pIHtcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhSGVpZ2h0ID0gZGVsdGFXaWR0aCAvIChhY3RpdmVSZWN0YW5nbGUud2lkdGggLyBhY3RpdmVSZWN0YW5nbGUuaGVpZ2h0KTtcbiAgICAgICAgICAgIGlzb21ldHJpY0xpbmVEZWx0YS5kZWx0YVkgPSBkZWx0YUhlaWdodCAqIHJlc2l6ZVNuYXBPcHRpb25zLmRpcmVjdGlvbkZhY3RvcnNbMV07XG4gICAgICAgICAgICByZXR1cm4gaXNvbWV0cmljTGluZURlbHRhO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGhlaWdodFNuYXBSZWN0YW5nbGUgPSBzbmFwUmVjdGFuZ2xlcy5maW5kKGl0ZW0gPT4gTWF0aC5hYnMoaXRlbS5oZWlnaHQgLSBhY3RpdmVSZWN0YW5nbGUuaGVpZ2h0KSA8IFNOQVBfVE9MRVJBTkNFKTtcbiAgICBpZiAoaGVpZ2h0U25hcFJlY3RhbmdsZSkge1xuICAgICAgICBjb25zdCBkZWx0YUhlaWdodCA9IGhlaWdodFNuYXBSZWN0YW5nbGUuaGVpZ2h0IC0gYWN0aXZlUmVjdGFuZ2xlLmhlaWdodDtcbiAgICAgICAgaXNvbWV0cmljTGluZURlbHRhLmRlbHRhWSA9IGRlbHRhSGVpZ2h0ICogcmVzaXplU25hcE9wdGlvbnMuZGlyZWN0aW9uRmFjdG9yc1sxXTtcbiAgICAgICAgaWYgKGlzQXNwZWN0UmF0aW8pIHtcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhV2lkdGggPSBkZWx0YUhlaWdodCAqIChhY3RpdmVSZWN0YW5nbGUud2lkdGggLyBhY3RpdmVSZWN0YW5nbGUuaGVpZ2h0KTtcbiAgICAgICAgICAgIGlzb21ldHJpY0xpbmVEZWx0YS5kZWx0YVggPSBkZWx0YVdpZHRoICogcmVzaXplU25hcE9wdGlvbnMuZGlyZWN0aW9uRmFjdG9yc1swXTtcbiAgICAgICAgICAgIHJldHVybiBpc29tZXRyaWNMaW5lRGVsdGE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlzb21ldHJpY0xpbmVEZWx0YTtcbn1cblxuZnVuY3Rpb24gZ2V0SXNvbWV0cmljTGluZVBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgaXNIb3Jpem9udGFsOiBib29sZWFuKTogUG9pbnRbXSB7XG4gICAgcmV0dXJuIGlzSG9yaXpvbnRhbFxuICAgICAgICA/IFtcbiAgICAgICAgICAgICAgW3JlY3RhbmdsZS54LCByZWN0YW5nbGUueSAtIEVRVUFMX1NQQUNJTkddLFxuICAgICAgICAgICAgICBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGgsIHJlY3RhbmdsZS55IC0gRVFVQUxfU1BBQ0lOR11cbiAgICAgICAgICBdXG4gICAgICAgIDogW1xuICAgICAgICAgICAgICBbcmVjdGFuZ2xlLnggLSBFUVVBTF9TUEFDSU5HLCByZWN0YW5nbGUueV0sXG4gICAgICAgICAgICAgIFtyZWN0YW5nbGUueCAtIEVRVUFMX1NQQUNJTkcsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodF1cbiAgICAgICAgICBdO1xufVxuXG5mdW5jdGlvbiBkcmF3UmVzaXppbmdQb2ludFNuYXBMaW5lcyhcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBhY3RpdmVQb2ludHM6IFBvaW50W10sXG4gICAgc25hcFJlY3RhbmdsZXM6IFJlY3RhbmdsZUNsaWVudFtdLFxuICAgIHJlc2l6ZVNuYXBPcHRpb25zOiBSZXNpemVTbmFwT3B0aW9ucyxcbiAgICBhbmdsZTogbnVtYmVyXG4pIHtcbiAgICBkZWJ1Z0dlbmVyYXRvci5pc0RlYnVnKCkgJiYgZGVidWdHZW5lcmF0b3IuY2xlYXIoKTtcbiAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoYWN0aXZlUG9pbnRzKTtcbiAgICBjb25zdCBhY3RpdmVSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUFuZ2xlKHJlY3RhbmdsZSwgYW5nbGUpO1xuICAgIGNvbnN0IHsgaXNBc3BlY3RSYXRpbywgZGlyZWN0aW9uRmFjdG9ycyB9ID0gcmVzaXplU25hcE9wdGlvbnM7XG4gICAgY29uc3QgZHJhd0hvcml6b250YWwgPSBkaXJlY3Rpb25GYWN0b3JzWzBdICE9PSAwIHx8IGlzQXNwZWN0UmF0aW87XG4gICAgY29uc3QgZHJhd1ZlcnRpY2FsID0gZGlyZWN0aW9uRmFjdG9yc1sxXSAhPT0gMCB8fCBpc0FzcGVjdFJhdGlvO1xuICAgIHJldHVybiBkcmF3UG9pbnRTbmFwTGluZXMoYm9hcmQsIGFjdGl2ZVJlY3RhbmdsZSwgc25hcFJlY3RhbmdsZXMsIGRyYXdIb3Jpem9udGFsLCBkcmF3VmVydGljYWwpO1xufVxuXG5mdW5jdGlvbiBkcmF3SXNvbWV0cmljU25hcExpbmVzKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIGFjdGl2ZVBvaW50czogUG9pbnRbXSxcbiAgICBzbmFwUmVjdGFuZ2xlczogUmVjdGFuZ2xlQ2xpZW50W10sXG4gICAgcmVzaXplU25hcE9wdGlvbnM6IFJlc2l6ZVNuYXBPcHRpb25zLFxuICAgIGFuZ2xlOiBudW1iZXJcbikge1xuICAgIGxldCB3aWR0aElzb21ldHJpY1BvaW50cyA9IFtdO1xuICAgIGxldCBoZWlnaHRJc29tZXRyaWNQb2ludHMgPSBbXTtcblxuICAgIGNvbnN0IGRyYXdIb3Jpem9udGFsTGluZSA9IHJlc2l6ZVNuYXBPcHRpb25zLmRpcmVjdGlvbkZhY3RvcnNbMF0gIT09IDAgfHwgcmVzaXplU25hcE9wdGlvbnMuaXNBc3BlY3RSYXRpbztcbiAgICBjb25zdCBkcmF3VmVydGljYWxMaW5lID0gcmVzaXplU25hcE9wdGlvbnMuZGlyZWN0aW9uRmFjdG9yc1sxXSAhPT0gMCB8fCByZXNpemVTbmFwT3B0aW9ucy5pc0FzcGVjdFJhdGlvO1xuICAgIGNvbnN0IHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhhY3RpdmVQb2ludHMpO1xuICAgIGNvbnN0IGFjdGl2ZVJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5QW5nbGUocmVjdGFuZ2xlLCBhbmdsZSk7XG4gICAgZm9yIChsZXQgc25hcFJlY3RhbmdsZSBvZiBzbmFwUmVjdGFuZ2xlcykge1xuICAgICAgICBpZiAoYWN0aXZlUmVjdGFuZ2xlLndpZHRoID09PSBzbmFwUmVjdGFuZ2xlLndpZHRoICYmIGRyYXdIb3Jpem9udGFsTGluZSkge1xuICAgICAgICAgICAgd2lkdGhJc29tZXRyaWNQb2ludHMucHVzaChnZXRJc29tZXRyaWNMaW5lUG9pbnRzKHNuYXBSZWN0YW5nbGUsIHRydWUpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aXZlUmVjdGFuZ2xlLmhlaWdodCA9PT0gc25hcFJlY3RhbmdsZS5oZWlnaHQgJiYgZHJhd1ZlcnRpY2FsTGluZSkge1xuICAgICAgICAgICAgaGVpZ2h0SXNvbWV0cmljUG9pbnRzLnB1c2goZ2V0SXNvbWV0cmljTGluZVBvaW50cyhzbmFwUmVjdGFuZ2xlLCBmYWxzZSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh3aWR0aElzb21ldHJpY1BvaW50cy5sZW5ndGggJiYgZHJhd0hvcml6b250YWxMaW5lKSB7XG4gICAgICAgIHdpZHRoSXNvbWV0cmljUG9pbnRzLnB1c2goZ2V0SXNvbWV0cmljTGluZVBvaW50cyhhY3RpdmVSZWN0YW5nbGUsIHRydWUpKTtcbiAgICB9XG4gICAgaWYgKGhlaWdodElzb21ldHJpY1BvaW50cy5sZW5ndGggJiYgZHJhd1ZlcnRpY2FsTGluZSkge1xuICAgICAgICBoZWlnaHRJc29tZXRyaWNQb2ludHMucHVzaChnZXRJc29tZXRyaWNMaW5lUG9pbnRzKGFjdGl2ZVJlY3RhbmdsZSwgZmFsc2UpKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc29tZXRyaWNMaW5lcyA9IFsuLi53aWR0aElzb21ldHJpY1BvaW50cywgLi4uaGVpZ2h0SXNvbWV0cmljUG9pbnRzXTtcbiAgICByZXR1cm4gZHJhd1NvbGlkTGluZXMoYm9hcmQsIGlzb21ldHJpY0xpbmVzKTtcbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export * from './stroke';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9zdHlsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3Ryb2tlJztcbiJdfQ==
@@ -1,21 +0,0 @@
1
- import { PlaitDrawElement } from '../../interfaces';
2
- import { DefaultDrawStyle } from '../../constants';
3
- import { getDrawDefaultStrokeColor, getFlowchartDefaultFill } from '../geometry';
4
- import { isClosedDrawElement } from '../common';
5
- import { StrokeStyle } from '@plait/common';
6
- export const getStrokeColorByElement = (board, element) => {
7
- const defaultColor = getDrawDefaultStrokeColor(board.theme.themeColorMode);
8
- const strokeColor = element.strokeColor || defaultColor;
9
- return strokeColor;
10
- };
11
- export const getFillByElement = (board, element) => {
12
- const defaultFill = PlaitDrawElement.isFlowchart(element) && isClosedDrawElement(element)
13
- ? getFlowchartDefaultFill(board.theme.themeColorMode)
14
- : DefaultDrawStyle.fill;
15
- const fill = element.fill || defaultFill;
16
- return fill;
17
- };
18
- export const getStrokeStyleByElement = (board, element) => {
19
- return element.strokeStyle || StrokeStyle.solid;
20
- };
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Ryb2tlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdXRpbHMvc3R5bGUvc3Ryb2tlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRW5ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1QyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBcUIsRUFBRSxFQUFFO0lBQ2hGLE1BQU0sWUFBWSxHQUFHLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDM0UsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxZQUFZLENBQUM7SUFDeEQsT0FBTyxXQUFXLENBQUM7QUFDdkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQXFCLEVBQUUsRUFBRTtJQUN6RSxNQUFNLFdBQVcsR0FDYixnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksbUJBQW1CLENBQUMsT0FBMkIsQ0FBQztRQUNyRixDQUFDLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDckQsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztJQUNoQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLFdBQVcsQ0FBQztJQUN6QyxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBcUIsRUFBRSxFQUFFO0lBQ2hGLE9BQU8sT0FBTyxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDO0FBQ3BELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0RHJhd0VsZW1lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERlZmF1bHREcmF3U3R5bGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgZ2V0RHJhd0RlZmF1bHRTdHJva2VDb2xvciwgZ2V0Rmxvd2NoYXJ0RGVmYXVsdEZpbGwgfSBmcm9tICcuLi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBpc0Nsb3NlZERyYXdFbGVtZW50IH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IFN0cm9rZVN0eWxlIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBnZXRTdHJva2VDb2xvckJ5RWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdENvbG9yID0gZ2V0RHJhd0RlZmF1bHRTdHJva2VDb2xvcihib2FyZC50aGVtZS50aGVtZUNvbG9yTW9kZSk7XG4gICAgY29uc3Qgc3Ryb2tlQ29sb3IgPSBlbGVtZW50LnN0cm9rZUNvbG9yIHx8IGRlZmF1bHRDb2xvcjtcbiAgICByZXR1cm4gc3Ryb2tlQ29sb3I7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmlsbEJ5RWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdEZpbGwgPVxuICAgICAgICBQbGFpdERyYXdFbGVtZW50LmlzRmxvd2NoYXJ0KGVsZW1lbnQpICYmIGlzQ2xvc2VkRHJhd0VsZW1lbnQoZWxlbWVudCBhcyBQbGFpdERyYXdFbGVtZW50KVxuICAgICAgICAgICAgPyBnZXRGbG93Y2hhcnREZWZhdWx0RmlsbChib2FyZC50aGVtZS50aGVtZUNvbG9yTW9kZSlcbiAgICAgICAgICAgIDogRGVmYXVsdERyYXdTdHlsZS5maWxsO1xuICAgIGNvbnN0IGZpbGwgPSBlbGVtZW50LmZpbGwgfHwgZGVmYXVsdEZpbGw7XG4gICAgcmV0dXJuIGZpbGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3Ryb2tlU3R5bGVCeUVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIHJldHVybiBlbGVtZW50LnN0cm9rZVN0eWxlIHx8IFN0cm9rZVN0eWxlLnNvbGlkO1xufTtcbiJdfQ==
@@ -1,124 +0,0 @@
1
- import { idCreator, PlaitBoard, RectangleClient } from '@plait/core';
2
- import { DefaultSwimlanePropertyMap, getSwimlanePointers, SWIMLANE_HEADER_SIZE } from '../constants';
3
- import { PlaitDrawElement, SwimlaneDrawSymbols, SwimlaneSymbols } from '../interfaces';
4
- import { createCell } from './table';
5
- export function buildSwimlaneTable(element) {
6
- const swimlaneElement = { ...element };
7
- if (PlaitDrawElement.isHorizontalSwimlane(element)) {
8
- swimlaneElement.cells = element.cells.map((item, index) => {
9
- if (index === 0 && element.header) {
10
- item = {
11
- ...element.cells[0],
12
- rowspan: element.rows.length
13
- };
14
- }
15
- if (item.text && item.textHeight && !item.text.direction) {
16
- item = {
17
- ...item,
18
- text: {
19
- ...item.text,
20
- direction: 'vertical'
21
- }
22
- };
23
- }
24
- return item;
25
- });
26
- return swimlaneElement;
27
- }
28
- if (element.header) {
29
- swimlaneElement.cells = [
30
- {
31
- ...element.cells[0],
32
- colspan: element.columns.length
33
- },
34
- ...element.cells.slice(1, element.cells.length)
35
- ];
36
- }
37
- return swimlaneElement;
38
- }
39
- export const getDefaultSwimlanePoints = (pointer, centerPoint) => {
40
- const property = DefaultSwimlanePropertyMap[pointer];
41
- return RectangleClient.getPoints(RectangleClient.getRectangleByCenterPoint(centerPoint, property.width, property.height));
42
- };
43
- export const createDefaultSwimlane = (shape, points) => {
44
- const header = isSwimlaneWithHeader(shape);
45
- const dataShape = adjustSwimlaneShape(shape);
46
- const width = points[1][0] - points[0][0];
47
- const height = points[1][1] - points[0][1];
48
- const rows = createDefaultRowsOrColumns(dataShape, 'row', header, height);
49
- const columns = createDefaultRowsOrColumns(dataShape, 'column', header, width);
50
- const swimlane = {
51
- id: idCreator(),
52
- type: 'swimlane',
53
- shape: dataShape,
54
- points,
55
- rows,
56
- columns,
57
- header,
58
- cells: createDefaultCells(dataShape, rows, columns, header)
59
- };
60
- return swimlane;
61
- };
62
- export const createDefaultRowsOrColumns = (shape, type, header, size) => {
63
- const createItems = (count) => new Array(count).fill('').map(() => ({ id: idCreator() }));
64
- let data = createItems(3);
65
- if ((type === 'row' && shape === SwimlaneSymbols.swimlaneVertical) ||
66
- (type === 'column' && shape === SwimlaneSymbols.swimlaneHorizontal)) {
67
- data = header ? data : createItems(2);
68
- const dimension = type === 'row' ? 'height' : 'width';
69
- let defaultSize = SWIMLANE_HEADER_SIZE;
70
- if (size < SWIMLANE_HEADER_SIZE * data.length) {
71
- defaultSize = Math.min((size / data.length / SWIMLANE_HEADER_SIZE) * SWIMLANE_HEADER_SIZE, SWIMLANE_HEADER_SIZE);
72
- }
73
- data = data.map((item, index) => {
74
- if (index === 0 || (index === 1 && header)) {
75
- return {
76
- ...item,
77
- [dimension]: defaultSize
78
- };
79
- }
80
- return item;
81
- });
82
- }
83
- return data;
84
- };
85
- export const createDefaultCells = (shape, rows, columns, header) => {
86
- let headerCell = [];
87
- let startIndex = 0;
88
- if (header) {
89
- headerCell = [createCell(rows[0].id, columns[0].id, 'New Swimlane')];
90
- startIndex = 1;
91
- }
92
- const cells = new Array(6).fill('').map((_, index) => {
93
- if (index < 3) {
94
- const rowId = shape === SwimlaneSymbols.swimlaneVertical ? rows[startIndex].id : rows[index].id;
95
- const columnId = shape === SwimlaneSymbols.swimlaneVertical ? columns[index].id : columns[startIndex].id;
96
- return createCell(rowId, columnId, header ? 'Lane' : 'New Swimlane');
97
- }
98
- const rowId = shape === SwimlaneSymbols.swimlaneVertical ? rows[startIndex + 1].id : rows[index - 3].id;
99
- const columnId = shape === SwimlaneSymbols.swimlaneVertical ? columns[index - 3].id : columns[startIndex + 1].id;
100
- return createCell(rowId, columnId);
101
- });
102
- return [...headerCell, ...cells];
103
- };
104
- export const getSwimlaneCount = (swimlane) => {
105
- if (PlaitDrawElement.isHorizontalSwimlane(swimlane)) {
106
- return swimlane.rows.length;
107
- }
108
- if (PlaitDrawElement.isVerticalSwimlane(swimlane)) {
109
- return swimlane.columns.length;
110
- }
111
- return 0;
112
- };
113
- export const isSwimlaneWithHeader = (shape) => {
114
- return [SwimlaneDrawSymbols.swimlaneHorizontalWithHeader, SwimlaneDrawSymbols.swimlaneVerticalWithHeader].includes(shape);
115
- };
116
- export const adjustSwimlaneShape = (shape) => {
117
- return [SwimlaneDrawSymbols.swimlaneHorizontalWithHeader, SwimlaneDrawSymbols.swimlaneHorizontal].includes(shape)
118
- ? SwimlaneSymbols.swimlaneHorizontal
119
- : SwimlaneSymbols.swimlaneVertical;
120
- };
121
- export const isSwimlanePointers = (board) => {
122
- return PlaitBoard.isInPointer(board, getSwimlanePointers());
123
- };
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpbWxhbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9zd2ltbGFuZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBUyxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBaUMsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFckMsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQXNCO0lBQ3JELE1BQU0sZUFBZSxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztJQUN2QyxJQUFJLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDakQsZUFBZSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN0RCxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQyxJQUFJLEdBQUc7b0JBQ0gsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDbkIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTTtpQkFDL0IsQ0FBQztZQUNOLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3ZELElBQUksR0FBRztvQkFDSCxHQUFHLElBQUk7b0JBQ1AsSUFB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QUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDN0csQ0FBQyxDQUFDLGVBQWUsQ0FBQyxrQkFBa0I7UUFDcEMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUNwRCxPQUFPLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpZENyZWF0b3IsIFBsYWl0Qm9hcmQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBEZWZhdWx0U3dpbWxhbmVQcm9wZXJ0eU1hcCwgZ2V0U3dpbWxhbmVQb2ludGVycywgU1dJTUxBTkVfSEVBREVSX1NJWkUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUGxhaXREcmF3RWxlbWVudCwgUGxhaXRTd2ltbGFuZSwgUGxhaXRUYWJsZUNlbGwsIFN3aW1sYW5lRHJhd1N5bWJvbHMsIFN3aW1sYW5lU3ltYm9scyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgY3JlYXRlQ2VsbCB9IGZyb20gJy4vdGFibGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTd2ltbGFuZVRhYmxlKGVsZW1lbnQ6IFBsYWl0U3dpbWxhbmUpIHtcbiAgICBjb25zdCBzd2ltbGFuZUVsZW1lbnQgPSB7IC4uLmVsZW1lbnQgfTtcbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0hvcml6b250YWxTd2ltbGFuZShlbGVtZW50KSkge1xuICAgICAgICBzd2ltbGFuZUVsZW1lbnQuY2VsbHMgPSBlbGVtZW50LmNlbGxzLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCAmJiBlbGVtZW50LmhlYWRlcikge1xuICAgICAgICAgICAgICAgIGl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmVsZW1lbnQuY2VsbHNbMF0sXG4gICAgICAgICAgICAgICAgICAgIHJvd3NwYW46IGVsZW1lbnQucm93cy5sZW5ndGhcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0udGV4dCAmJiBpdGVtLnRleHRIZWlnaHQgJiYgIWl0ZW0udGV4dC5kaXJlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBpdGVtID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246ICd2ZXJ0aWNhbCdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHN3aW1sYW5lRWxlbWVudDtcbiAgICB9XG4gICAgaWYgKGVsZW1lbnQuaGVhZGVyKSB7XG4gICAgICAgIHN3aW1sYW5lRWxlbWVudC5jZWxscyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi5lbGVtZW50LmNlbGxzWzBdLFxuICAgICAgICAgICAgICAgIGNvbHNwYW46IGVsZW1lbnQuY29sdW1ucy5sZW5ndGhcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAuLi5lbGVtZW50LmNlbGxzLnNsaWNlKDEsIGVsZW1lbnQuY2VsbHMubGVuZ3RoKVxuICAgICAgICBdO1xuICAgIH1cbiAgICByZXR1cm4gc3dpbWxhbmVFbGVtZW50O1xufVxuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdFN3aW1sYW5lUG9pbnRzID0gKHBvaW50ZXI6IFN3aW1sYW5lRHJhd1N5bWJvbHMsIGNlbnRlclBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gRGVmYXVsdFN3aW1sYW5lUHJvcGVydHlNYXBbcG9pbnRlcl07XG4gICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRQb2ludHMoUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5Q2VudGVyUG9pbnQoY2VudGVyUG9pbnQsIHByb3BlcnR5LndpZHRoLCBwcm9wZXJ0eS5oZWlnaHQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVEZWZhdWx0U3dpbWxhbmUgPSAoc2hhcGU6IFN3aW1sYW5lRHJhd1N5bWJvbHMsIHBvaW50czogW1BvaW50LCBQb2ludF0pID0+IHtcbiAgICBjb25zdCBoZWFkZXIgPSBpc1N3aW1sYW5lV2l0aEhlYWRlcihzaGFwZSk7XG4gICAgY29uc3QgZGF0YVNoYXBlID0gYWRqdXN0U3dpbWxhbmVTaGFwZShzaGFwZSk7XG4gICAgY29uc3Qgd2lkdGggPSBwb2ludHNbMV1bMF0gLSBwb2ludHNbMF1bMF07XG4gICAgY29uc3QgaGVpZ2h0ID0gcG9pbnRzWzFdWzFdIC0gcG9pbnRzWzBdWzFdO1xuICAgIGNvbnN0IHJvd3MgPSBjcmVhdGVEZWZhdWx0Um93c09yQ29sdW1ucyhkYXRhU2hhcGUsICdyb3cnLCBoZWFkZXIsIGhlaWdodCk7XG4gICAgY29uc3QgY29sdW1ucyA9IGNyZWF0ZURlZmF1bHRSb3dzT3JDb2x1bW5zKGRhdGFTaGFwZSwgJ2NvbHVtbicsIGhlYWRlciwgd2lkdGgpO1xuICAgIGNvbnN0IHN3aW1sYW5lID0ge1xuICAgICAgICBpZDogaWRDcmVhdG9yKCksXG4gICAgICAgIHR5cGU6ICdzd2ltbGFuZScsXG4gICAgICAgIHNoYXBlOiBkYXRhU2hhcGUsXG4gICAgICAgIHBvaW50cyxcbiAgICAgICAgcm93cyxcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgaGVhZGVyLFxuICAgICAgICBjZWxsczogY3JlYXRlRGVmYXVsdENlbGxzKGRhdGFTaGFwZSwgcm93cywgY29sdW1ucywgaGVhZGVyKVxuICAgIH0gYXMgUGxhaXRTd2ltbGFuZTtcbiAgICByZXR1cm4gc3dpbWxhbmU7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRGVmYXVsdFJvd3NPckNvbHVtbnMgPSAoc2hhcGU6IFN3aW1sYW5lU3ltYm9scywgdHlwZTogJ3JvdycgfCAnY29sdW1uJywgaGVhZGVyOiBib29sZWFuLCBzaXplOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBjcmVhdGVJdGVtcyA9IChjb3VudDogbnVtYmVyKSA9PiBuZXcgQXJyYXkoY291bnQpLmZpbGwoJycpLm1hcCgoKSA9PiAoeyBpZDogaWRDcmVhdG9yKCkgfSkpO1xuICAgIGxldCBkYXRhID0gY3JlYXRlSXRlbXMoMyk7XG4gICAgaWYgKFxuICAgICAgICAodHlwZSA9PT0gJ3JvdycgJiYgc2hhcGUgPT09IFN3aW1sYW5lU3ltYm9scy5zd2ltbGFuZVZlcnRpY2FsKSB8fFxuICAgICAgICAodHlwZSA9PT0gJ2NvbHVtbicgJiYgc2hhcGUgPT09IFN3aW1sYW5lU3ltYm9scy5zd2ltbGFuZUhvcml6b250YWwpXG4gICAgKSB7XG4gICAgICAgIGRhdGEgPSBoZWFkZXIgPyBkYXRhIDogY3JlYXRlSXRlbXMoMik7XG4gICAgICAgIGNvbnN0IGRpbWVuc2lvbiA9IHR5cGUgPT09ICdyb3cnID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgICAgICBsZXQgZGVmYXVsdFNpemUgPSBTV0lNTEFORV9IRUFERVJfU0laRTtcbiAgICAgICAgaWYgKHNpemUgPCBTV0lNTEFORV9IRUFERVJfU0laRSAqIGRhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICBkZWZhdWx0U2l6ZSA9IE1hdGgubWluKChzaXplIC8gZGF0YS5sZW5ndGggLyBTV0lNTEFORV9IRUFERVJfU0laRSkgKiBTV0lNTEFORV9IRUFERVJfU0laRSwgU1dJTUxBTkVfSEVBREVSX1NJWkUpO1xuICAgICAgICB9XG4gICAgICAgIGRhdGEgPSBkYXRhLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCB8fCAoaW5kZXggPT09IDEgJiYgaGVhZGVyKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgIFtkaW1lbnNpb25dOiBkZWZhdWx0U2l6ZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRGVmYXVsdENlbGxzID0gKFxuICAgIHNoYXBlOiBTd2ltbGFuZVN5bWJvbHMsXG4gICAgcm93czogeyBpZDogc3RyaW5nOyBoZWlnaHQ/OiBudW1iZXIgfVtdLFxuICAgIGNvbHVtbnM6IHsgaWQ6IHN0cmluZzsgd2lkdGg/OiBudW1iZXIgfVtdLFxuICAgIGhlYWRlcjogYm9vbGVhblxuKSA9PiB7XG4gICAgbGV0IGhlYWRlckNlbGw6IFBsYWl0VGFibGVDZWxsW10gPSBbXTtcbiAgICBsZXQgc3RhcnRJbmRleCA9IDA7XG4gICAgaWYgKGhlYWRlcikge1xuICAgICAgICBoZWFkZXJDZWxsID0gW2NyZWF0ZUNlbGwocm93c1swXS5pZCwgY29sdW1uc1swXS5pZCwgJ05ldyBTd2ltbGFuZScpXTtcbiAgICAgICAgc3RhcnRJbmRleCA9IDE7XG4gICAgfVxuICAgIGNvbnN0IGNlbGxzID0gbmV3IEFycmF5KDYpLmZpbGwoJycpLm1hcCgoXywgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKGluZGV4IDwgMykge1xuICAgICAgICAgICAgY29uc3Qgcm93SWQgPSBzaGFwZSA9PT0gU3dpbWxhbmVTeW1ib2xzLnN3aW1sYW5lVmVydGljYWwgPyByb3dzW3N0YXJ0SW5kZXhdLmlkIDogcm93c1tpbmRleF0uaWQ7XG4gICAgICAgICAgICBjb25zdCBjb2x1bW5JZCA9IHNoYXBlID09PSBTd2ltbGFuZVN5bWJvbHMuc3dpbWxhbmVWZXJ0aWNhbCA/IGNvbHVtbnNbaW5kZXhdLmlkIDogY29sdW1uc1tzdGFydEluZGV4XS5pZDtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVDZWxsKHJvd0lkLCBjb2x1bW5JZCwgaGVhZGVyID8gJ0xhbmUnIDogJ05ldyBTd2ltbGFuZScpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJvd0lkID0gc2hhcGUgPT09IFN3aW1sYW5lU3ltYm9scy5zd2ltbGFuZVZlcnRpY2FsID8gcm93c1tzdGFydEluZGV4ICsgMV0uaWQgOiByb3dzW2luZGV4IC0gM10uaWQ7XG4gICAgICAgIGNvbnN0IGNvbHVtbklkID0gc2hhcGUgPT09IFN3aW1sYW5lU3ltYm9scy5zd2ltbGFuZVZlcnRpY2FsID8gY29sdW1uc1tpbmRleCAtIDNdLmlkIDogY29sdW1uc1tzdGFydEluZGV4ICsgMV0uaWQ7XG4gICAgICAgIHJldHVybiBjcmVhdGVDZWxsKHJvd0lkLCBjb2x1bW5JZCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIFsuLi5oZWFkZXJDZWxsLCAuLi5jZWxsc107XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3dpbWxhbmVDb3VudCA9IChzd2ltbGFuZTogUGxhaXRTd2ltbGFuZSkgPT4ge1xuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzSG9yaXpvbnRhbFN3aW1sYW5lKHN3aW1sYW5lKSkge1xuICAgICAgICByZXR1cm4gc3dpbWxhbmUucm93cy5sZW5ndGg7XG4gICAgfVxuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzVmVydGljYWxTd2ltbGFuZShzd2ltbGFuZSkpIHtcbiAgICAgICAgcmV0dXJuIHN3aW1sYW5lLmNvbHVtbnMubGVuZ3RoO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1N3aW1sYW5lV2l0aEhlYWRlciA9IChzaGFwZTogU3dpbWxhbmVEcmF3U3ltYm9scykgPT4ge1xuICAgIHJldHVybiBbU3dpbWxhbmVEcmF3U3ltYm9scy5zd2ltbGFuZUhvcml6b250YWxXaXRoSGVhZGVyLCBTd2ltbGFuZURyYXdTeW1ib2xzLnN3aW1sYW5lVmVydGljYWxXaXRoSGVhZGVyXS5pbmNsdWRlcyhzaGFwZSk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRqdXN0U3dpbWxhbmVTaGFwZSA9IChzaGFwZTogU3dpbWxhbmVEcmF3U3ltYm9scyk6IFN3aW1sYW5lU3ltYm9scyA9PiB7XG4gICAgcmV0dXJuIFtTd2ltbGFuZURyYXdTeW1ib2xzLnN3aW1sYW5lSG9yaXpvbnRhbFdpdGhIZWFkZXIsIFN3aW1sYW5lRHJhd1N5bWJvbHMuc3dpbWxhbmVIb3Jpem9udGFsXS5pbmNsdWRlcyhzaGFwZSlcbiAgICAgICAgPyBTd2ltbGFuZVN5bWJvbHMuc3dpbWxhbmVIb3Jpem9udGFsXG4gICAgICAgIDogU3dpbWxhbmVTeW1ib2xzLnN3aW1sYW5lVmVydGljYWw7XG59O1xuXG5leHBvcnQgY29uc3QgaXNTd2ltbGFuZVBvaW50ZXJzID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgcmV0dXJuIFBsYWl0Qm9hcmQuaXNJblBvaW50ZXIoYm9hcmQsIGdldFN3aW1sYW5lUG9pbnRlcnMoKSk7XG59O1xuIl19