@plait/draw 0.1.0-next.11 → 0.1.0-next.12

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.
@@ -0,0 +1,45 @@
1
+ import { PlaitBoard, RectangleClient, getNearestPointBetweenPointAndSegments, isPointInPolygon, setStrokeLinecap } from '@plait/core';
2
+ import { getEdgeOnPolygonByPoint } from '../geometry';
3
+ export const RightArrowEngine = {
4
+ draw(board, rectangle, options) {
5
+ const points = getRightArrowPoints(rectangle);
6
+ const rs = PlaitBoard.getRoughSVG(board);
7
+ const polygon = rs.polygon(points, { ...options, fillStyle: 'solid' });
8
+ setStrokeLinecap(polygon, 'round');
9
+ return polygon;
10
+ },
11
+ getCornerPoints(rectangle) {
12
+ return getRightArrowPoints(rectangle);
13
+ },
14
+ isHit(rectangle, point) {
15
+ const points = getRightArrowPoints(rectangle);
16
+ return isPointInPolygon(point, points);
17
+ },
18
+ getNearestPoint(rectangle, point) {
19
+ const cornerPoints = getRightArrowPoints(rectangle);
20
+ return getNearestPointBetweenPointAndSegments(point, cornerPoints);
21
+ },
22
+ getEdgeByConnectionPoint(rectangle, pointOfRectangle) {
23
+ const corners = getRightArrowPoints(rectangle);
24
+ const point = RectangleClient.getConnectionPoint(rectangle, pointOfRectangle);
25
+ return getEdgeOnPolygonByPoint(corners, point);
26
+ },
27
+ getConnectorPoints(rectangle) {
28
+ return [
29
+ [rectangle.x, rectangle.y + rectangle.height / 2],
30
+ [rectangle.x + rectangle.width, rectangle.y + rectangle.height / 2]
31
+ ];
32
+ }
33
+ };
34
+ export const getRightArrowPoints = (rectangle) => {
35
+ return [
36
+ [rectangle.x, rectangle.y + rectangle.height * 0.2],
37
+ [rectangle.x + rectangle.width * 0.68, rectangle.y + rectangle.height * 0.2],
38
+ [rectangle.x + rectangle.width * 0.68, rectangle.y],
39
+ [rectangle.x + rectangle.width, rectangle.y + rectangle.height / 2],
40
+ [rectangle.x + rectangle.width * 0.68, rectangle.y + rectangle.height],
41
+ [rectangle.x + rectangle.width * 0.68, rectangle.y + rectangle.height * 0.8],
42
+ [rectangle.x, rectangle.y + rectangle.height * 0.8]
43
+ ];
44
+ };
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlnaHQtYXJyb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9lbmdpbmUvcmlnaHQtYXJyb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFVBQVUsRUFHVixlQUFlLEVBQ2Ysc0NBQXNDLEVBQ3RDLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDbkIsTUFBTSxhQUFhLENBQUM7QUFHckIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFnQjtJQUN6QyxJQUFJLENBQUMsS0FBaUIsRUFBRSxTQUEwQixFQUFFLE9BQWdCO1FBQ2hFLE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN2RSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkMsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUNELGVBQWUsQ0FBQyxTQUEwQjtRQUN0QyxPQUFPLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxLQUFLLENBQUMsU0FBMEIsRUFBRSxLQUFZO1FBQzFDLE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFDRCxlQUFlLENBQUMsU0FBMEIsRUFBRSxLQUFZO1FBQ3BELE1BQU0sWUFBWSxHQUFHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sc0NBQXNDLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFDRCx3QkFBd0IsQ0FBQyxTQUEwQixFQUFFLGdCQUFrQztRQUNuRixNQUFNLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQyxNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDOUUsT0FBTyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUNELGtCQUFrQixDQUFDLFNBQTBCO1FBQ3pDLE9BQU87WUFDSCxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNqRCxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ3RFLENBQUM7SUFDTixDQUFDO0NBQ0osQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsU0FBMEIsRUFBVyxFQUFFO0lBQ3ZFLE9BQU87UUFDSCxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNuRCxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUM1RSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ25FLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDdEUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDNUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7S0FDdEQsQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUGxhaXRCb2FyZCxcbiAgICBQb2ludCxcbiAgICBQb2ludE9mUmVjdGFuZ2xlLFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyxcbiAgICBpc1BvaW50SW5Qb2x5Z29uLFxuICAgIHNldFN0cm9rZUxpbmVjYXBcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgU2hhcGVFbmdpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IGdldEVkZ2VPblBvbHlnb25CeVBvaW50IH0gZnJvbSAnLi4vZ2VvbWV0cnknO1xuXG5leHBvcnQgY29uc3QgUmlnaHRBcnJvd0VuZ2luZTogU2hhcGVFbmdpbmUgPSB7XG4gICAgZHJhdyhib2FyZDogUGxhaXRCb2FyZCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcG9pbnRzID0gZ2V0UmlnaHRBcnJvd1BvaW50cyhyZWN0YW5nbGUpO1xuICAgICAgICBjb25zdCBycyA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpO1xuICAgICAgICBjb25zdCBwb2x5Z29uID0gcnMucG9seWdvbihwb2ludHMsIHsgLi4ub3B0aW9ucywgZmlsbFN0eWxlOiAnc29saWQnIH0pO1xuICAgICAgICBzZXRTdHJva2VMaW5lY2FwKHBvbHlnb24sICdyb3VuZCcpO1xuICAgICAgICByZXR1cm4gcG9seWdvbjtcbiAgICB9LFxuICAgIGdldENvcm5lclBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICByZXR1cm4gZ2V0UmlnaHRBcnJvd1BvaW50cyhyZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgaXNIaXQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkge1xuICAgICAgICBjb25zdCBwb2ludHMgPSBnZXRSaWdodEFycm93UG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgICAgIHJldHVybiBpc1BvaW50SW5Qb2x5Z29uKHBvaW50LCBwb2ludHMpO1xuICAgIH0sXG4gICAgZ2V0TmVhcmVzdFBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgY29uc3QgY29ybmVyUG9pbnRzID0gZ2V0UmlnaHRBcnJvd1BvaW50cyhyZWN0YW5nbGUpO1xuICAgICAgICByZXR1cm4gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMocG9pbnQsIGNvcm5lclBvaW50cyk7XG4gICAgfSxcbiAgICBnZXRFZGdlQnlDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50T2ZSZWN0YW5nbGU6IFBvaW50T2ZSZWN0YW5nbGUpOiBbUG9pbnQsIFBvaW50XSB8IG51bGwge1xuICAgICAgICBjb25zdCBjb3JuZXJzID0gZ2V0UmlnaHRBcnJvd1BvaW50cyhyZWN0YW5nbGUpO1xuICAgICAgICBjb25zdCBwb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBwb2ludE9mUmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIGdldEVkZ2VPblBvbHlnb25CeVBvaW50KGNvcm5lcnMsIHBvaW50KTtcbiAgICB9LFxuICAgIGdldENvbm5lY3RvclBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgW3JlY3RhbmdsZS54LCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyXSxcbiAgICAgICAgICAgIFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMl1cbiAgICAgICAgXTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmlnaHRBcnJvd1BvaW50cyA9IChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCk6IFBvaW50W10gPT4ge1xuICAgIHJldHVybiBbXG4gICAgICAgIFtyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0ICogMC4yXSxcbiAgICAgICAgW3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoICogMC42OCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0ICogMC4yXSxcbiAgICAgICAgW3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoICogMC42OCwgcmVjdGFuZ2xlLnldLFxuICAgICAgICBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGgsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDJdLFxuICAgICAgICBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggKiAwLjY4LCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHRdLFxuICAgICAgICBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggKiAwLjY4LCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgKiAwLjhdLFxuICAgICAgICBbcmVjdGFuZ2xlLngsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAqIDAuOF1cbiAgICBdO1xufTtcbiJdfQ==
@@ -1,5 +1,7 @@
1
1
  import { PlaitBoard, RectangleClient, drawRoundRectangle, getNearestPointBetweenPointAndSegments, isPointInRoundRectangle } from '@plait/core';
2
2
  import { getNearestPointBetweenPointAndEllipse } from './ellipse';
3
+ import { RectangleEngine } from './rectangle';
4
+ import { getEdgeOnPolygonByPoint } from '../geometry';
3
5
  export const RoundRectangleEngine = {
4
6
  draw(board, rectangle, options) {
5
7
  return drawRoundRectangle(PlaitBoard.getRoughSVG(board), rectangle.x, rectangle.y, rectangle.x + rectangle.width, rectangle.y + rectangle.height, { ...options, fillStyle: 'solid' }, false, getRoundRectangleRadius(rectangle));
@@ -7,9 +9,17 @@ export const RoundRectangleEngine = {
7
9
  isHit(rectangle, point) {
8
10
  return isPointInRoundRectangle(point, rectangle, getRoundRectangleRadius(rectangle));
9
11
  },
12
+ getCornerPoints(rectangle) {
13
+ return RectangleClient.getCornerPoints(rectangle);
14
+ },
10
15
  getNearestPoint(rectangle, point) {
11
16
  return getNearestPointBetweenPointAndRoundRectangle(point, rectangle, getRoundRectangleRadius(rectangle));
12
17
  },
18
+ getEdgeByConnectionPoint(rectangle, pointOfRectangle) {
19
+ const corners = RectangleEngine.getCornerPoints(rectangle);
20
+ const point = RectangleClient.getConnectionPoint(rectangle, pointOfRectangle);
21
+ return getEdgeOnPolygonByPoint(corners, point);
22
+ },
13
23
  getConnectorPoints(rectangle) {
14
24
  return RectangleClient.getEdgeCenterPoints(rectangle);
15
25
  }
@@ -46,4 +56,4 @@ export function getNearestPointBetweenPointAndRoundRectangle(point, rectangle, r
46
56
  }
47
57
  return result;
48
58
  }
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91bmQtcmVjdGFuZ2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdXRpbHMvZW5naW5lL3JvdW5kLXJlY3RhbmdsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUVWLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsc0NBQXNDLEVBQ3RDLHVCQUF1QixFQUMxQixNQUFNLGFBQWEsQ0FBQztBQUdyQixPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFbEUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQWdCO0lBQzdDLElBQUksQ0FBQyxLQUFpQixFQUFFLFNBQTBCLEVBQUUsT0FBZ0I7UUFDaEUsT0FBTyxrQkFBa0IsQ0FDckIsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFDN0IsU0FBUyxDQUFDLENBQUMsRUFDWCxTQUFTLENBQUMsQ0FBQyxFQUNYLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFDN0IsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUM5QixFQUFFLEdBQUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFDbEMsS0FBSyxFQUNMLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUNyQyxDQUFDO0lBQ04sQ0FBQztJQUNELEtBQUssQ0FBQyxTQUEwQixFQUFFLEtBQVk7UUFDMUMsT0FBTyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUNELGVBQWUsQ0FBQyxTQUEwQixFQUFFLEtBQVk7UUFDcEQsT0FBTyw0Q0FBNEMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUNELGtCQUFrQixDQUFD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WUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztLQUN2RjtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFBsYWl0Qm9hcmQsXG4gICAgUG9pbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIGRyYXdSb3VuZFJlY3RhbmdsZSxcbiAgICBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyxcbiAgICBpc1BvaW50SW5Sb3VuZFJlY3RhbmdsZVxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBTaGFwZUVuZ2luZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kRWxsaXBzZSB9IGZyb20gJy4vZWxsaXBzZSc7XG5cbmV4cG9ydCBjb25zdCBSb3VuZFJlY3RhbmdsZUVuZ2luZTogU2hhcGVFbmdpbmUgPSB7XG4gICAgZHJhdyhib2FyZDogUGxhaXRCb2FyZCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIGRyYXdSb3VuZFJlY3RhbmdsZShcbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLFxuICAgICAgICAgICAgcmVjdGFuZ2xlLngsXG4gICAgICAgICAgICByZWN0YW5nbGUueSxcbiAgICAgICAgICAgIHJlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoLFxuICAgICAgICAgICAgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0LFxuICAgICAgICAgICAgeyAuLi5vcHRpb25zLCBmaWxsU3R5bGU6ICdzb2xpZCcgfSxcbiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgZ2V0Um91bmRSZWN0YW5nbGVSYWRpdXMocmVjdGFuZ2xlKVxuICAgICAgICApO1xuICAgIH0sXG4gICAgaXNIaXQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkge1xuICAgICAgICByZXR1cm4gaXNQb2ludEluUm91bmRSZWN0YW5nbGUocG9pbnQsIHJlY3RhbmdsZSwgZ2V0Um91bmRSZWN0YW5nbGVSYWRpdXMocmVjdGFuZ2xlKSk7XG4gICAgfSxcbiAgICBnZXROZWFyZXN0UG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkge1xuICAgICAgICByZXR1cm4gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kUm91bmRSZWN0YW5nbGUocG9pbnQsIHJlY3RhbmdsZSwgZ2V0Um91bmRSZWN0YW5nbGVSYWRpdXMocmVjdGFuZ2xlKSk7XG4gICAgfSxcbiAgICBnZXRDb25uZWN0b3JQb2ludHMocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRFZGdlQ2VudGVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFJvdW5kUmVjdGFuZ2xlUmFkaXVzID0gKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSA9PiB7XG4gICAgcmV0dXJuIE1hdGgubWluKHJlY3RhbmdsZS53aWR0aCAqIDAuMSwgcmVjdGFuZ2xlLmhlaWdodCAqIDAuMSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kUm91bmRSZWN0YW5nbGUocG9pbnQ6IFBvaW50LCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcmFkaXVzOiBudW1iZXIpIHtcbiAgICBjb25zdCB7IHg6IHJlY3RYLCB5OiByZWN0WSwgd2lkdGgsIGhlaWdodCB9ID0gcmVjdGFuZ2xlO1xuICAgIGNvbnN0IGNvcm5lclBvaW50cyA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICBsZXQgcmVzdWx0ID0gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMocG9pbnQsIGNvcm5lclBvaW50cyk7XG4gICAgbGV0IGNpcmNsZUNlbnRlcjogUG9pbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0IGluTGVmdFRvcCA9IHBvaW50WzBdID49IHJlY3RYICYmIHBvaW50WzBdIDw9IHJlY3RYICsgcmFkaXVzICYmIHBvaW50WzFdID49IHJlY3RZICYmIHBvaW50WzFdIDw9IHJlY3RZICsgcmFkaXVzO1xuICAgIGlmIChpbkxlZnRUb3ApIHtcbiAgICAgICAgY2lyY2xlQ2VudGVyID0gW3JlY3RYICsgcmFkaXVzLCByZWN0WSArIHJhZGl1c107XG4gICAgfVxuICAgIGNvbnN0IGluTGVmdEJvdHRvbSA9XG4gICAgICAgIHBvaW50WzBdID49IHJlY3RYICYmIHBvaW50WzBdIDw9IHJlY3RYICsgcmFkaXVzICYmIHBvaW50WzFdID49IHJlY3RZICsgaGVpZ2h0ICYmIHBvaW50WzFdIDw9IHJlY3RZICsgaGVpZ2h0IC0gcmFkaXVzO1xuICAgIGlmIChpbkxlZnRCb3R0b20pIHtcbiAgICAgICAgY2lyY2xlQ2VudGVyID0gW3JlY3RYICsgcmFkaXVzLCByZWN0WSArIGhlaWdodCAtIHJhZGl1c107XG4gICAgfVxuICAgIGNvbnN0IGluUmlnaHRUb3AgPSBwb2ludFswXSA+PSByZWN0WCArIHdpZHRoIC0gcmFkaXVzICYmIHBvaW50WzBdIDw9IHJlY3RYICsgd2lkdGggJiYgcG9pbnRbMV0gPj0gcmVjdFkgJiYgcG9pbnRbMV0gPD0gcmVjdFkgKyByYWRpdXM7XG4gICAgaWYgKGluUmlnaHRUb3ApIHtcbiAgICAgICAgY2lyY2xlQ2VudGVyID0gW3JlY3RYICsgd2lkdGggLSByYWRpdXMsIHJlY3RZICsgcmFkaXVzXTtcbiAgICB9XG4gICAgY29uc3QgaW5SaWdodEJvdHRvbSA9XG4gICAgICAgIHBvaW50WzBdID49IHJlY3RYICsgd2lkdGggLSByYWRpdXMgJiZcbiAgICAgICAgcG9pbnRbMF0gPD0gcmVjdFggKyB3aWR0aCAmJlxuICAgICAgICBwb2ludFsxXSA+PSByZWN0WSArIGhlaWdodCAtIHJhZGl1cyAmJlxuICAgICAgICBwb2ludFsxXSA8PSByZWN0WSArIGhlaWdodDtcbiAgICBpZiAoaW5SaWdodEJvdHRvbSkge1xuICAgICAgICBjaXJjbGVDZW50ZXIgPSBbcmVjdFggKyB3aWR0aCAtIHJhZGl1cywgcmVjdFkgKyBoZWlnaHQgLSByYWRpdXNdO1xuICAgIH1cbiAgICBpZiAoY2lyY2xlQ2VudGVyKSB7XG4gICAgICAgIHJlc3VsdCA9IGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZEVsbGlwc2UocG9pbnQsIGNpcmNsZUNlbnRlciwgcmFkaXVzLCByYWRpdXMpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuIl19
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91bmQtcmVjdGFuZ2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdXRpbHMvZW5naW5lL3JvdW5kLXJlY3RhbmdsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUdWLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsc0NBQXNDLEVBQ3RDLHVCQUF1QixFQUMxQixNQUFNLGFBQWEsQ0FBQztBQUdyQixPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQWdCO0lBQzdDLElBQUksQ0FBQyxLQUFpQixFQUFFLFNBQTBCLEVBQUUsT0FBZ0I7UUFDaEUsT0FBTyxrQkFBa0IsQ0FDckIsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFDN0IsU0FBUyxDQUFDLENBQUMsRUFDWCxTQUFTLENBQUMsQ0FBQyxFQUNYLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFDN0IsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUM5QixFQUFFLEdBQUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFDbEMsS0FBSyxFQUNMLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUNyQyxDQUFDO0lBQ04sQ0FBQztJQUNELEtBQUssQ0FBQyxTQUEwQixFQUFFLEtBQVk7UUFDMUMsT0FBTyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUNELGVBQWUsQ0FBQyxTQUEwQjtRQUN0QyxPQUFPLGVBQWUsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELGVBQWUsQ0FBQyxTQUEwQixFQUFFLEtBQVk7UUFDcEQsT0FBTyw0Q0FBNEMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUNELHdCQUF3QixDQUFDLFNBQTBCLEVBQUUsZ0JBQWtDO1FBQ25GLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0QsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzlFLE9BQU8sdUJBQXVCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxTQUEwQjtRQUN6QyxPQUFPLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0osQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsU0FBMEIsRUFBRSxFQUFFO0lBQ2xFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLEdBQUcsRUFBRSxTQUFTLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ25FLENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSw0Q0FBNEMsQ0FBQyxLQUFZLEVBQUUsU0FBMEIsRUFBRSxNQUFjO0lBQ2pILE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQztJQUN4RCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hFLElBQUksTUFBTSxHQUFHLHNDQUFzQyxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN6RSxJQUFJLFlBQVksR0FBaUIsSUFBSSxDQUFDO0lBRXRDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQztJQUNySCxJQUFJLFNBQVMsRUFBRTtRQUNYLFlBQVksR0FBRyxDQUFDLEtBQUssR0FBRyxNQUFNLEVBQUUsS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0tBQ25EO0lBQ0QsTUFBTSxZQUFZLEdBQ2QsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDekgsSUFBSSxZQUFZLEVBQUU7UUFDZCxZQUFZLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxFQUFFLEtBQUssR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUM7S0FDNUQ7SUFDRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLEtBQUssR0FBRyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxLQUFLLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQztJQUN0SSxJQUFJLFVBQVUsRUFBRTtRQUNaLFlBQVksR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsTUFBTSxFQUFFLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQztLQUMzRDtJQUNELE1BQU0sYUFBYSxHQUNmLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsS0FBSyxHQUFHLE1BQU07UUFDbEMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxLQUFLO1FBQ3pCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsTUFBTSxHQUFHLE1BQU07UUFDbkMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUM7SUFDL0IsSUFBSSxhQUFhLEVBQUU7UUFDZixZQUFZLEdBQUcsQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLE1BQU0sRUFBRSxLQUFLLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0tBQ3BFO0lBQ0QsSUFBSSxZQUFZLEVBQUU7UUFDZCxNQUFNLEdBQUcscUNBQXFDLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDdkY7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBvaW50LFxuICAgIFBvaW50T2ZSZWN0YW5nbGUsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIGRyYXdSb3VuZFJlY3RhbmdsZSxcbiAgICBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyxcbiAgICBpc1BvaW50SW5Sb3VuZFJlY3RhbmdsZVxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBTaGFwZUVuZ2luZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kRWxsaXBzZSB9IGZyb20gJy4vZWxsaXBzZSc7XG5pbXBvcnQgeyBSZWN0YW5nbGVFbmdpbmUgfSBmcm9tICcuL3JlY3RhbmdsZSc7XG5pbXBvcnQgeyBnZXRFZGdlT25Qb2x5Z29uQnlQb2ludCB9IGZyb20gJy4uL2dlb21ldHJ5JztcblxuZXhwb3J0IGNvbnN0IFJvdW5kUmVjdGFuZ2xlRW5naW5lOiBTaGFwZUVuZ2luZSA9IHtcbiAgICBkcmF3KGJvYXJkOiBQbGFpdEJvYXJkLCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgb3B0aW9uczogT3B0aW9ucykge1xuICAgICAgICByZXR1cm4gZHJhd1JvdW5kUmVjdGFuZ2xlKFxuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCksXG4gICAgICAgICAgICByZWN0YW5nbGUueCxcbiAgICAgICAgICAgIHJlY3RhbmdsZS55LFxuICAgICAgICAgICAgcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGgsXG4gICAgICAgICAgICByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQsXG4gICAgICAgICAgICB7IC4uLm9wdGlvbnMsIGZpbGxTdHlsZTogJ3NvbGlkJyB9LFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyhyZWN0YW5nbGUpXG4gICAgICAgICk7XG4gICAgfSxcbiAgICBpc0hpdChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIHJldHVybiBpc1BvaW50SW5Sb3VuZFJlY3RhbmdsZShwb2ludCwgcmVjdGFuZ2xlLCBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyhyZWN0YW5nbGUpKTtcbiAgICB9LFxuICAgIGdldENvcm5lclBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0TmVhcmVzdFBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgcmV0dXJuIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFJvdW5kUmVjdGFuZ2xlKHBvaW50LCByZWN0YW5nbGUsIGdldFJvdW5kUmVjdGFuZ2xlUmFkaXVzKHJlY3RhbmdsZSkpO1xuICAgIH0sXG4gICAgZ2V0RWRnZUJ5Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludE9mUmVjdGFuZ2xlOiBQb2ludE9mUmVjdGFuZ2xlKTogW1BvaW50LCBQb2ludF0gfCBudWxsIHtcbiAgICAgICAgY29uc3QgY29ybmVycyA9IFJlY3RhbmdsZUVuZ2luZS5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICAgICAgY29uc3QgcG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZSwgcG9pbnRPZlJlY3RhbmdsZSk7XG4gICAgICAgIHJldHVybiBnZXRFZGdlT25Qb2x5Z29uQnlQb2ludChjb3JuZXJzLCBwb2ludCk7XG4gICAgfSxcbiAgICBnZXRDb25uZWN0b3JQb2ludHMocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRFZGdlQ2VudGVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFJvdW5kUmVjdGFuZ2xlUmFkaXVzID0gKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSA9PiB7XG4gICAgcmV0dXJuIE1hdGgubWluKHJlY3RhbmdsZS53aWR0aCAqIDAuMSwgcmVjdGFuZ2xlLmhlaWdodCAqIDAuMSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kUm91bmRSZWN0YW5nbGUocG9pbnQ6IFBvaW50LCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcmFkaXVzOiBudW1iZXIpIHtcbiAgICBjb25zdCB7IHg6IHJlY3RYLCB5OiByZWN0WSwgd2lkdGgsIGhlaWdodCB9ID0gcmVjdGFuZ2xlO1xuICAgIGNvbnN0IGNvcm5lclBvaW50cyA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICBsZXQgcmVzdWx0ID0gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMocG9pbnQsIGNvcm5lclBvaW50cyk7XG4gICAgbGV0IGNpcmNsZUNlbnRlcjogUG9pbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0IGluTGVmdFRvcCA9IHBvaW50WzBdID49IHJlY3RYICYmIHBvaW50WzBdIDw9IHJlY3RYICsgcmFkaXVzICYmIHBvaW50WzFdID49IHJlY3RZICYmIHBvaW50WzFdIDw9IHJlY3RZICsgcmFkaXVzO1xuICAgIGlmIChpbkxlZnRUb3ApIHtcbiAgICAgICAgY2lyY2xlQ2VudGVyID0gW3JlY3RYICsgcmFkaXVzLCByZWN0WSArIHJhZGl1c107XG4gICAgfVxuICAgIGNvbnN0IGluTGVmdEJvdHRvbSA9XG4gICAgICAgIHBvaW50WzBdID49IHJlY3RYICYmIHBvaW50WzBdIDw9IHJlY3RYICsgcmFkaXVzICYmIHBvaW50WzFdID49IHJlY3RZICsgaGVpZ2h0ICYmIHBvaW50WzFdIDw9IHJlY3RZICsgaGVpZ2h0IC0gcmFkaXVzO1xuICAgIGlmIChpbkxlZnRCb3R0b20pIHtcbiAgICAgICAgY2lyY2xlQ2VudGVyID0gW3JlY3RYICsgcmFkaXVzLCByZWN0WSArIGhlaWdodCAtIHJhZGl1c107XG4gICAgfVxuICAgIGNvbnN0IGluUmlnaHRUb3AgPSBwb2ludFswXSA+PSByZWN0WCArIHdpZHRoIC0gcmFkaXVzICYmIHBvaW50WzBdIDw9IHJlY3RYICsgd2lkdGggJiYgcG9pbnRbMV0gPj0gcmVjdFkgJiYgcG9pbnRbMV0gPD0gcmVjdFkgKyByYWRpdXM7XG4gICAgaWYgKGluUmlnaHRUb3ApIHtcbiAgICAgICAgY2lyY2xlQ2VudGVyID0gW3JlY3RYICsgd2lkdGggLSByYWRpdXMsIHJlY3RZICsgcmFkaXVzXTtcbiAgICB9XG4gICAgY29uc3QgaW5SaWdodEJvdHRvbSA9XG4gICAgICAgIHBvaW50WzBdID49IHJlY3RYICsgd2lkdGggLSByYWRpdXMgJiZcbiAgICAgICAgcG9pbnRbMF0gPD0gcmVjdFggKyB3aWR0aCAmJlxuICAgICAgICBwb2ludFsxXSA+PSByZWN0WSArIGhlaWdodCAtIHJhZGl1cyAmJlxuICAgICAgICBwb2ludFsxXSA8PSByZWN0WSArIGhlaWdodDtcbiAgICBpZiAoaW5SaWdodEJvdHRvbSkge1xuICAgICAgICBjaXJjbGVDZW50ZXIgPSBbcmVjdFggKyB3aWR0aCAtIHJhZGl1cywgcmVjdFkgKyBoZWlnaHQgLSByYWRpdXNdO1xuICAgIH1cbiAgICBpZiAoY2lyY2xlQ2VudGVyKSB7XG4gICAgICAgIHJlc3VsdCA9IGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZEVsbGlwc2UocG9pbnQsIGNpcmNsZUNlbnRlciwgcmFkaXVzLCByYWRpdXMpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuIl19
@@ -0,0 +1,40 @@
1
+ import { PlaitBoard, RectangleClient, getNearestPointBetweenPointAndSegments, isPointInPolygon, setStrokeLinecap } from '@plait/core';
2
+ import { getCenterPointsOnPolygon, getEdgeOnPolygonByPoint } from '../geometry';
3
+ export const TrapezoidEngine = {
4
+ draw(board, rectangle, options) {
5
+ const points = getTrapezoidPoints(rectangle);
6
+ const rs = PlaitBoard.getRoughSVG(board);
7
+ const polygon = rs.polygon(points, { ...options, fillStyle: 'solid' });
8
+ setStrokeLinecap(polygon, 'round');
9
+ return polygon;
10
+ },
11
+ isHit(rectangle, point) {
12
+ const points = getTrapezoidPoints(rectangle);
13
+ return isPointInPolygon(point, points);
14
+ },
15
+ getNearestPoint(rectangle, point) {
16
+ const cornerPoints = getTrapezoidPoints(rectangle);
17
+ return getNearestPointBetweenPointAndSegments(point, cornerPoints);
18
+ },
19
+ getConnectorPoints(rectangle) {
20
+ const points = getTrapezoidPoints(rectangle);
21
+ return getCenterPointsOnPolygon(points);
22
+ },
23
+ getEdgeByConnectionPoint(rectangle, pointOfRectangle) {
24
+ const corners = getTrapezoidPoints(rectangle);
25
+ const point = RectangleClient.getConnectionPoint(rectangle, pointOfRectangle);
26
+ return getEdgeOnPolygonByPoint(corners, point);
27
+ },
28
+ getCornerPoints(rectangle) {
29
+ return getTrapezoidPoints(rectangle);
30
+ }
31
+ };
32
+ export const getTrapezoidPoints = (rectangle) => {
33
+ return [
34
+ [rectangle.x + rectangle.width * 0.15, rectangle.y],
35
+ [rectangle.x + rectangle.width * 0.85, rectangle.y],
36
+ [rectangle.x + rectangle.width, rectangle.y + rectangle.height],
37
+ [rectangle.x, rectangle.y + rectangle.height]
38
+ ];
39
+ };
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhcGV6b2lkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdXRpbHMvZW5naW5lL3RyYXBlem9pZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUdWLGVBQWUsRUFDZixzQ0FBc0MsRUFDdEMsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNuQixNQUFNLGFBQWEsQ0FBQztBQUdyQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFaEYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFnQjtJQUN4QyxJQUFJLENBQUMsS0FBaUIsRUFBRSxTQUEwQixFQUFFLE9BQWdCO1FBQ2hFLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN2RSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkMsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUNELEtBQUssQ0FBQyxTQUEwQixFQUFFLEtBQVk7UUFDMUMsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0MsT0FBTyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELGVBQWUsQ0FBQyxTQUEwQixFQUFFLEtBQVk7UUFDcEQsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkQsT0FBTyxzQ0FBc0MsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUNELGtCQUFrQixDQUFDLFNBQTBCO1FBQ3pDLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLE9BQU8sd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELHdCQUF3QixDQUFDLFNBQTBCLEVBQUUsZ0JBQWtDO1FBQ25GLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUM5RSxPQUFPLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBQ0QsZUFBZSxDQUFDLFNBQTBCO1FBQ3RDLE9BQU8sa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekMsQ0FBQztDQUNKLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFNBQTBCLEVBQVcsRUFBRTtJQUN0RSxPQUFPO1FBQ0gsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDbkQsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDbkQsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQy9ELENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7S0FDaEQsQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUGxhaXRCb2FyZCxcbiAgICBQb2ludCxcbiAgICBQb2ludE9mUmVjdGFuZ2xlLFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyxcbiAgICBpc1BvaW50SW5Qb2x5Z29uLFxuICAgIHNldFN0cm9rZUxpbmVjYXBcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgU2hhcGVFbmdpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IGdldENlbnRlclBvaW50c09uUG9seWdvbiwgZ2V0RWRnZU9uUG9seWdvbkJ5UG9pbnQgfSBmcm9tICcuLi9nZW9tZXRyeSc7XG5cbmV4cG9ydCBjb25zdCBUcmFwZXpvaWRFbmdpbmU6IFNoYXBlRW5naW5lID0ge1xuICAgIGRyYXcoYm9hcmQ6IFBsYWl0Qm9hcmQsIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHBvaW50cyA9IGdldFRyYXBlem9pZFBvaW50cyhyZWN0YW5nbGUpO1xuICAgICAgICBjb25zdCBycyA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpO1xuICAgICAgICBjb25zdCBwb2x5Z29uID0gcnMucG9seWdvbihwb2ludHMsIHsgLi4ub3B0aW9ucywgZmlsbFN0eWxlOiAnc29saWQnIH0pO1xuICAgICAgICBzZXRTdHJva2VMaW5lY2FwKHBvbHlnb24sICdyb3VuZCcpO1xuICAgICAgICByZXR1cm4gcG9seWdvbjtcbiAgICB9LFxuICAgIGlzSGl0KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgY29uc3QgcG9pbnRzID0gZ2V0VHJhcGV6b2lkUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgICAgIHJldHVybiBpc1BvaW50SW5Qb2x5Z29uKHBvaW50LCBwb2ludHMpO1xuICAgIH0sXG4gICAgZ2V0TmVhcmVzdFBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgY29uc3QgY29ybmVyUG9pbnRzID0gZ2V0VHJhcGV6b2lkUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgICAgIHJldHVybiBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyhwb2ludCwgY29ybmVyUG9pbnRzKTtcbiAgICB9LFxuICAgIGdldENvbm5lY3RvclBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICBjb25zdCBwb2ludHMgPSBnZXRUcmFwZXpvaWRQb2ludHMocmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIGdldENlbnRlclBvaW50c09uUG9seWdvbihwb2ludHMpO1xuICAgIH0sXG4gICAgZ2V0RWRnZUJ5Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludE9mUmVjdGFuZ2xlOiBQb2ludE9mUmVjdGFuZ2xlKTogW1BvaW50LCBQb2ludF0gfCBudWxsIHtcbiAgICAgICAgY29uc3QgY29ybmVycyA9IGdldFRyYXBlem9pZFBvaW50cyhyZWN0YW5nbGUpO1xuICAgICAgICBjb25zdCBwb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBwb2ludE9mUmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIGdldEVkZ2VPblBvbHlnb25CeVBvaW50KGNvcm5lcnMsIHBvaW50KTtcbiAgICB9LFxuICAgIGdldENvcm5lclBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICByZXR1cm4gZ2V0VHJhcGV6b2lkUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFRyYXBlem9pZFBvaW50cyA9IChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCk6IFBvaW50W10gPT4ge1xuICAgIHJldHVybiBbXG4gICAgICAgIFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAqIDAuMTUsIHJlY3RhbmdsZS55XSxcbiAgICAgICAgW3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoICogMC44NSwgcmVjdGFuZ2xlLnldLFxuICAgICAgICBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGgsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodF0sXG4gICAgICAgIFtyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0XVxuICAgIF07XG59O1xuIl19
@@ -0,0 +1,40 @@
1
+ import { PlaitBoard, RectangleClient, getNearestPointBetweenPointAndSegments, isPointInPolygon, setStrokeLinecap } from '@plait/core';
2
+ import { getCenterPointsOnPolygon, getEdgeOnPolygonByPoint } from '../geometry';
3
+ export const TriangleEngine = {
4
+ draw(board, rectangle, options) {
5
+ const points = getTrianglePoints(rectangle);
6
+ const rs = PlaitBoard.getRoughSVG(board);
7
+ const polygon = rs.polygon(points, { ...options, fillStyle: 'solid' });
8
+ setStrokeLinecap(polygon, 'round');
9
+ return polygon;
10
+ },
11
+ isHit(rectangle, point) {
12
+ const points = getTrianglePoints(rectangle);
13
+ return isPointInPolygon(point, points);
14
+ },
15
+ getNearestPoint(rectangle, point) {
16
+ const cornerPoints = getTrianglePoints(rectangle);
17
+ return getNearestPointBetweenPointAndSegments(point, cornerPoints);
18
+ },
19
+ getConnectorPoints(rectangle) {
20
+ const cornerPoints = getTrianglePoints(rectangle);
21
+ const lineCenterPoints = getCenterPointsOnPolygon(cornerPoints);
22
+ return [...lineCenterPoints, ...cornerPoints];
23
+ },
24
+ getEdgeByConnectionPoint(rectangle, pointOfRectangle) {
25
+ const corners = getTrianglePoints(rectangle);
26
+ const point = RectangleClient.getConnectionPoint(rectangle, pointOfRectangle);
27
+ return getEdgeOnPolygonByPoint(corners, point);
28
+ },
29
+ getCornerPoints(rectangle) {
30
+ return getTrianglePoints(rectangle);
31
+ }
32
+ };
33
+ export const getTrianglePoints = (rectangle) => {
34
+ return [
35
+ [rectangle.x + rectangle.width / 2, rectangle.y],
36
+ [rectangle.x + rectangle.width, rectangle.y + rectangle.height],
37
+ [rectangle.x, rectangle.y + rectangle.height]
38
+ ];
39
+ };
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpYW5nbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9lbmdpbmUvdHJpYW5nbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFVBQVUsRUFHVixlQUFlLEVBQ2Ysc0NBQXNDLEVBQ3RDLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDbkIsTUFBTSxhQUFhLENBQUM7QUFHckIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBZ0I7SUFDdkMsSUFBSSxDQUFDLEtBQWlCLEVBQUUsU0FBMEIsRUFBRSxPQUFnQjtRQUNoRSxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QyxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdkUsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFDRCxLQUFLLENBQUMsU0FBMEIsRUFBRSxLQUFZO1FBQzFDLE1BQU0sTUFBTSxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFDRCxlQUFlLENBQUMsU0FBMEIsRUFBRSxLQUFZO1FBQ3BELE1BQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sc0NBQXNDLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxTQUEwQjtRQUN6QyxNQUFNLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRCxNQUFNLGdCQUFnQixHQUFHLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sQ0FBQyxHQUFHLGdCQUFnQixFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNELHdCQUF3QixDQUFDLFNBQTBCLEVBQUUsZ0JBQWtDO1FBQ25GLE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUM5RSxPQUFPLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBQ0QsZUFBZSxDQUFDLFNBQTBCO1FBQ3RDLE9BQU8saUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUNKLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFNBQTBCLEVBQVcsRUFBRTtJQUNyRSxPQUFPO1FBQ0gsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQy9ELENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7S0FDaEQsQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUGxhaXRCb2FyZCxcbiAgICBQb2ludCxcbiAgICBQb2ludE9mUmVjdGFuZ2xlLFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyxcbiAgICBpc1BvaW50SW5Qb2x5Z29uLFxuICAgIHNldFN0cm9rZUxpbmVjYXBcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgU2hhcGVFbmdpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IGdldENlbnRlclBvaW50c09uUG9seWdvbiwgZ2V0RWRnZU9uUG9seWdvbkJ5UG9pbnQgfSBmcm9tICcuLi9nZW9tZXRyeSc7XG5cbmV4cG9ydCBjb25zdCBUcmlhbmdsZUVuZ2luZTogU2hhcGVFbmdpbmUgPSB7XG4gICAgZHJhdyhib2FyZDogUGxhaXRCb2FyZCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcG9pbnRzID0gZ2V0VHJpYW5nbGVQb2ludHMocmVjdGFuZ2xlKTtcbiAgICAgICAgY29uc3QgcnMgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKTtcbiAgICAgICAgY29uc3QgcG9seWdvbiA9IHJzLnBvbHlnb24ocG9pbnRzLCB7IC4uLm9wdGlvbnMsIGZpbGxTdHlsZTogJ3NvbGlkJyB9KTtcbiAgICAgICAgc2V0U3Ryb2tlTGluZWNhcChwb2x5Z29uLCAncm91bmQnKTtcbiAgICAgICAgcmV0dXJuIHBvbHlnb247XG4gICAgfSxcbiAgICBpc0hpdChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIGNvbnN0IHBvaW50cyA9IGdldFRyaWFuZ2xlUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgICAgIHJldHVybiBpc1BvaW50SW5Qb2x5Z29uKHBvaW50LCBwb2ludHMpO1xuICAgIH0sXG4gICAgZ2V0TmVhcmVzdFBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgY29uc3QgY29ybmVyUG9pbnRzID0gZ2V0VHJpYW5nbGVQb2ludHMocmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzKHBvaW50LCBjb3JuZXJQb2ludHMpO1xuICAgIH0sXG4gICAgZ2V0Q29ubmVjdG9yUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIGNvbnN0IGNvcm5lclBvaW50cyA9IGdldFRyaWFuZ2xlUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgICAgIGNvbnN0IGxpbmVDZW50ZXJQb2ludHMgPSBnZXRDZW50ZXJQb2ludHNPblBvbHlnb24oY29ybmVyUG9pbnRzKTtcbiAgICAgICAgcmV0dXJuIFsuLi5saW5lQ2VudGVyUG9pbnRzLCAuLi5jb3JuZXJQb2ludHNdO1xuICAgIH0sXG4gICAgZ2V0RWRnZUJ5Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludE9mUmVjdGFuZ2xlOiBQb2ludE9mUmVjdGFuZ2xlKTogW1BvaW50LCBQb2ludF0gfCBudWxsIHtcbiAgICAgICAgY29uc3QgY29ybmVycyA9IGdldFRyaWFuZ2xlUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgICAgIGNvbnN0IHBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGUsIHBvaW50T2ZSZWN0YW5nbGUpO1xuICAgICAgICByZXR1cm4gZ2V0RWRnZU9uUG9seWdvbkJ5UG9pbnQoY29ybmVycywgcG9pbnQpO1xuICAgIH0sXG4gICAgZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBnZXRUcmlhbmdsZVBvaW50cyhyZWN0YW5nbGUpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUcmlhbmdsZVBvaW50cyA9IChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCk6IFBvaW50W10gPT4ge1xuICAgIHJldHVybiBbXG4gICAgICAgIFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAvIDIsIHJlY3RhbmdsZS55XSxcbiAgICAgICAgW3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHRdLFxuICAgICAgICBbcmVjdGFuZ2xlLngsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodF1cbiAgICBdO1xufTtcbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { ACTIVE_STROKE_WIDTH, PlaitBoard, RectangleClient, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR, createG, drawCircle, idCreator } from '@plait/core';
1
+ import { ACTIVE_STROKE_WIDTH, PlaitBoard, RectangleClient, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR, createG, distanceBetweenPointAndSegment, drawCircle, idCreator } from '@plait/core';
2
2
  import { GeometryShape } from '../interfaces/geometry';
3
3
  import { Alignment, buildText } from '@plait/text';
4
4
  import { DefaultTextProperty, ShapeDefaultSpace } from '../constants';
@@ -81,4 +81,15 @@ export const getCenterPointsOnPolygon = (points) => {
81
81
  }
82
82
  return centerPoint;
83
83
  };
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9nZW9tZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLFVBQVUsRUFFVixlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUNwQixPQUFPLEVBQ1AsVUFBVSxFQUNWLFNBQVMsRUFDWixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsYUFBYSxFQUFpQixNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVyQyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUNqQyxLQUFvQixFQUNwQixNQUFzQixFQUN0QixJQUFzQixFQUN0QixPQUFxRSxFQUN4RCxFQUFFO0lBQ2YsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLElBQUksU0FBUyxHQUEwQixTQUFTLENBQUMsTUFBTSxDQUFDO0lBQ3hELElBQUksS0FBSyxLQUFLLGFBQWEsQ0FBQyxJQUFJLEVBQUU7UUFDOUIsV0FBVyxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ2pDLFNBQVMsR0FBRyxTQUFTLENBQUM7S0FDekI7SUFFRCxPQUFPO1FBQ0gsRUFBRSxFQUFFLFNBQVMsRUFBRTtRQUNmLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUs7UUFDTCxLQUFLLEVBQUUsQ0FB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Q0FBQyxDQUFDO1FBQzNDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUM1RjtJQUNELE9BQU8sV0FBVyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQUNUSVZFX1NUUk9LRV9XSURUSCxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBvaW50LFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgIFNFTEVDVElPTl9GSUxMX0NPTE9SLFxuICAgIGNyZWF0ZUcsXG4gICAgZHJhd0NpcmNsZSxcbiAgICBpZENyZWF0b3Jcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgR2VvbWV0cnlTaGFwZSwgUGxhaXRHZW9tZXRyeSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZ2VvbWV0cnknO1xuaW1wb3J0IHsgQWxpZ25tZW50LCBidWlsZFRleHQgfSBmcm9tICdAcGxhaXQvdGV4dCc7XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgRGVmYXVsdFRleHRQcm9wZXJ0eSwgU2hhcGVEZWZhdWx0U3BhY2UgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlQb2ludHMgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50IH0gZnJvbSAnLi9zdHlsZS9zdHJva2UnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgZ2V0RW5naW5lIH0gZnJvbSAnLi9lbmdpbmUnO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlR2VvbWV0cnlFbGVtZW50ID0gKFxuICAgIHNoYXBlOiBHZW9tZXRyeVNoYXBlLFxuICAgIHBvaW50czogW1BvaW50LCBQb2ludF0sXG4gICAgdGV4dDogc3RyaW5nIHwgRWxlbWVudCxcbiAgICBvcHRpb25zPzogUGljazxQbGFpdEdlb21ldHJ5LCAnZmlsbCcgfCAnc3Ryb2tlQ29sb3InIHwgJ3N0cm9rZVdpZHRoJz5cbik6IFBsYWl0R2VvbWV0cnkgPT4ge1xuICAgIGxldCB0ZXh0T3B0aW9ucyA9IHt9O1xuICAgIGxldCBhbGlnbm1lbnQ6IHVuZGVmaW5lZCB8IEFsaWdubWVudCA9IEFsaWdubWVudC5jZW50ZXI7XG4gICAgaWYgKHNoYXBlID09PSBHZW9tZXRyeVNoYXBlLnRleHQpIHtcbiAgICAgICAgdGV4dE9wdGlvbnMgPSB7IGF1dG9TaXplOiB0cnVlIH07XG4gICAgICAgIGFsaWdubWVudCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogaWRDcmVhdG9yKCksXG4gICAgICAgIHR5cGU6ICdnZW9tZXRyeScsXG4gICAgICAgIHNoYXBlLFxuICAgICAgICBhbmdsZTogMCxcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgdGV4dEhlaWdodDogRGVmYXVsdFRleHRQcm9wZXJ0eS5oZWlnaHQsXG4gICAgICAgIHRleHQ6IGJ1aWxkVGV4dCh0ZXh0LCBhbGlnbm1lbnQpLFxuICAgICAgICBwb2ludHMsXG4gICAgICAgIC4uLnRleHRPcHRpb25zLFxuICAgICAgICAuLi5vcHRpb25zXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRQb2ludHNCeUNlbnRlclBvaW50ID0gKHBvaW50OiBQb2ludCwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpOiBbUG9pbnQsIFBvaW50XSA9PiB7XG4gICAgY29uc3QgbGVmdFRvcFBvaW50OiBQb2ludCA9IFtwb2ludFswXSAtIHdpZHRoIC8gMiwgcG9pbnRbMV0gLSBoZWlnaHQgLyAyXTtcbiAgICBjb25zdCByaWdodEJvdHRvbVBvaW50OiBQb2ludCA9IFtwb2ludFswXSArIHdpZHRoIC8gMiwgcG9pbnRbMV0gKyBoZWlnaHQgLyAyXTtcblxuICAgIHJldHVybiBbbGVmdFRvcFBvaW50LCByaWdodEJvdHRvbVBvaW50XTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0UmVjdGFuZ2xlID0gKGVsZW1lbnQ6IFBsYWl0R2VvbWV0cnkpID0+IHtcbiAgICBjb25zdCBlbGVtZW50UmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMhKTtcbiAgICBjb25zdCBzdHJva2VXaWR0aCA9IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQudGV4dEhlaWdodDtcbiAgICBjb25zdCB3aWR0aCA9IGVsZW1lbnRSZWN0YW5nbGUud2lkdGggLSBTaGFwZURlZmF1bHRTcGFjZS5yZWN0YW5nbGVBbmRUZXh0ICogMiAtIHN0cm9rZVdpZHRoICogMjtcbiAgICByZXR1cm4ge1xuICAgICAgICBoZWlnaHQsXG4gICAgICAgIHdpZHRoOiB3aWR0aCA+IDAgPyB3aWR0aCA6IDAsXG4gICAgICAgIHg6IGVsZW1lbnRSZWN0YW5nbGUueCArIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKyBzdHJva2VXaWR0aCxcbiAgICAgICAgeTogZWxlbWVudFJlY3RhbmdsZS55ICsgKGVsZW1lbnRSZWN0YW5nbGUuaGVpZ2h0IC0gaGVpZ2h0KSAvIDJcbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRyYXdCb3VuZE1hc2sgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0R2VvbWV0cnkpID0+IHtcbiAgICBjb25zdCBHID0gY3JlYXRlRygpO1xuICAgIGNvbnN0IHJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzKTtcbiAgICBjb25zdCBhY3RpdmVSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuaW5mbGF0ZShyZWN0YW5nbGUsIEFDVElWRV9TVFJPS0VfV0lEVEgpO1xuICAgIGNvbnN0IG1hc2tHID0gZHJhd0dlb21ldHJ5KGJvYXJkLCBhY3RpdmVSZWN0YW5nbGUsIGVsZW1lbnQuc2hhcGUsIHtcbiAgICAgICAgc3Ryb2tlOiBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgICAgICBzdHJva2VXaWR0aDogMSxcbiAgICAgICAgZmlsbDogU0VMRUNUSU9OX0ZJTExfQ09MT1IsXG4gICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgIH0pO1xuICAgIEcuYXBwZW5kQ2hpbGQobWFza0cpO1xuXG4gICAgY29uc3QgY29ubmVjdG9yUG9pbnRzID0gZ2V0RW5naW5lKGVsZW1lbnQuc2hhcGUpLmdldENvbm5lY3RvclBvaW50cyhhY3RpdmVSZWN0YW5nbGUpO1xuICAgIGNvbm5lY3RvclBvaW50cy5mb3JFYWNoKHBvaW50ID0+IHtcbiAgICAgICAgY29uc3QgY2lyY2xlRyA9IGRyYXdDaXJjbGUoUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCksIHBvaW50LCA2LCB7XG4gICAgICAgICAgICBzdHJva2U6ICcjOTk5OTk5JyxcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgICAgZmlsbDogJyNGRkYnLFxuICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgIH0pO1xuICAgICAgICBHLmFwcGVuZENoaWxkKGNpcmNsZUcpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIEc7XG59O1xuXG5leHBvcnQgY29uc3QgZHJhd0dlb21ldHJ5ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBvdXRlclJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBzaGFwZTogR2VvbWV0cnlTaGFwZSwgb3B0aW9uczogT3B0aW9ucykgPT4ge1xuICAgIHJldHVybiBnZXRFbmdpbmUoc2hhcGUpLmRyYXcoYm9hcmQsIG91dGVyUmVjdGFuZ2xlLCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXROZWFyZXN0UG9pbnQgPSAoZWxlbWVudDogUGxhaXRHZW9tZXRyeSwgcG9pbnQ6IFBvaW50LCBpbmZsYXRlRGVsdGEgPSAwKSA9PiB7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgIGNvbnN0IGFjdGl2ZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKHJlY3RhbmdsZSwgaW5mbGF0ZURlbHRhKTtcbiAgICByZXR1cm4gZ2V0RW5naW5lKGVsZW1lbnQuc2hhcGUpLmdldE5lYXJlc3RQb2ludChhY3RpdmVSZWN0YW5nbGUsIHBvaW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDZW50ZXJQb2ludHNPblBvbHlnb24gPSAocG9pbnRzOiBQb2ludFtdKSA9PiB7XG4gICAgY29uc3QgY2VudGVyUG9pbnQ6IFBvaW50W10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgaiA9IGkgPT0gcG9pbnRzLmxlbmd0aCAtIDEgPyAwIDogaSArIDE7XG4gICAgICAgIGNlbnRlclBvaW50LnB1c2goWyhwb2ludHNbaV1bMF0gKyBwb2ludHNbal1bMF0pIC8gMiwgKHBvaW50c1tpXVsxXSArIHBvaW50c1tqXVsxXSkgLyAyXSk7XG4gICAgfVxuICAgIHJldHVybiBjZW50ZXJQb2ludDtcbn07XG4iXX0=
84
+ export const getEdgeOnPolygonByPoint = (corners, point) => {
85
+ for (let index = 1; index <= corners.length; index++) {
86
+ let start = corners[index - 1];
87
+ let end = index === corners.length ? corners[0] : corners[index];
88
+ const distance = distanceBetweenPointAndSegment(point[0], point[1], start[0], start[1], end[0], end[1]);
89
+ if (distance < 1) {
90
+ return [start, end];
91
+ }
92
+ }
93
+ return null;
94
+ };
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9nZW9tZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLFVBQVUsRUFFVixlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUNwQixPQUFPLEVBQ1AsOEJBQThCLEVBQzlCLFVBQVUsRUFDVixTQUFTLEVBQ1osTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGFBQWEsRUFBaUIsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFckMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FDakMsS0FBb0IsRUFDcEIsTUFBc0IsRUFDdEIsSUFBc0IsRUFDdEIsT0FBcUUsRUFDeEQsRUFBRTtJQUNmLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUNyQixJQUFJLFNBQVMsR0FBMEIsU0FBUyxDQUFDLE1BQU0sQ0FBQztJQUN4RCxJQUFJLEtBQUssS0FBSyxhQUFhLENBQUMsSUFBSSxFQUFFO1FBQzlCLFdBQVcsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNqQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0tBQ3pCO0lBRUQsT0FBTztRQUNILEVBQUUsRUFBRSxTQUFTLEVBQUU7UUFDZixJQUFJLEVBQUUsVUFBVTtRQUNoQixLQUFLO1FBQ0ws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Q0QsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBQ1RJVkVfU1RST0tFX1dJRFRILFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgUG9pbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgU0VMRUNUSU9OX0ZJTExfQ09MT1IsXG4gICAgY3JlYXRlRyxcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFNlZ21lbnQsXG4gICAgZHJhd0NpcmNsZSxcbiAgICBpZENyZWF0b3Jcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgR2VvbWV0cnlTaGFwZSwgUGxhaXRHZW9tZXRyeSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZ2VvbWV0cnknO1xuaW1wb3J0IHsgQWxpZ25tZW50LCBidWlsZFRleHQgfSBmcm9tICdAcGxhaXQvdGV4dCc7XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgRGVmYXVsdFRleHRQcm9wZXJ0eSwgU2hhcGVEZWZhdWx0U3BhY2UgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlQb2ludHMgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50IH0gZnJvbSAnLi9zdHlsZS9zdHJva2UnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgZ2V0RW5naW5lIH0gZnJvbSAnLi9lbmdpbmUnO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlR2VvbWV0cnlFbGVtZW50ID0gKFxuICAgIHNoYXBlOiBHZW9tZXRyeVNoYXBlLFxuICAgIHBvaW50czogW1BvaW50LCBQb2ludF0sXG4gICAgdGV4dDogc3RyaW5nIHwgRWxlbWVudCxcbiAgICBvcHRpb25zPzogUGljazxQbGFpdEdlb21ldHJ5LCAnZmlsbCcgfCAnc3Ryb2tlQ29sb3InIHwgJ3N0cm9rZVdpZHRoJz5cbik6IFBsYWl0R2VvbWV0cnkgPT4ge1xuICAgIGxldCB0ZXh0T3B0aW9ucyA9IHt9O1xuICAgIGxldCBhbGlnbm1lbnQ6IHVuZGVmaW5lZCB8IEFsaWdubWVudCA9IEFsaWdubWVudC5jZW50ZXI7XG4gICAgaWYgKHNoYXBlID09PSBHZW9tZXRyeVNoYXBlLnRleHQpIHtcbiAgICAgICAgdGV4dE9wdGlvbnMgPSB7IGF1dG9TaXplOiB0cnVlIH07XG4gICAgICAgIGFsaWdubWVudCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogaWRDcmVhdG9yKCksXG4gICAgICAgIHR5cGU6ICdnZW9tZXRyeScsXG4gICAgICAgIHNoYXBlLFxuICAgICAgICBhbmdsZTogMCxcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgdGV4dEhlaWdodDogRGVmYXVsdFRleHRQcm9wZXJ0eS5oZWlnaHQsXG4gICAgICAgIHRleHQ6IGJ1aWxkVGV4dCh0ZXh0LCBhbGlnbm1lbnQpLFxuICAgICAgICBwb2ludHMsXG4gICAgICAgIC4uLnRleHRPcHRpb25zLFxuICAgICAgICAuLi5vcHRpb25zXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRQb2ludHNCeUNlbnRlclBvaW50ID0gKHBvaW50OiBQb2ludCwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpOiBbUG9pbnQsIFBvaW50XSA9PiB7XG4gICAgY29uc3QgbGVmdFRvcFBvaW50OiBQb2ludCA9IFtwb2ludFswXSAtIHdpZHRoIC8gMiwgcG9pbnRbMV0gLSBoZWlnaHQgLyAyXTtcbiAgICBjb25zdCByaWdodEJvdHRvbVBvaW50OiBQb2ludCA9IFtwb2ludFswXSArIHdpZHRoIC8gMiwgcG9pbnRbMV0gKyBoZWlnaHQgLyAyXTtcblxuICAgIHJldHVybiBbbGVmdFRvcFBvaW50LCByaWdodEJvdHRvbVBvaW50XTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0UmVjdGFuZ2xlID0gKGVsZW1lbnQ6IFBsYWl0R2VvbWV0cnkpID0+IHtcbiAgICBjb25zdCBlbGVtZW50UmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMhKTtcbiAgICBjb25zdCBzdHJva2VXaWR0aCA9IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQudGV4dEhlaWdodDtcbiAgICBjb25zdCB3aWR0aCA9IGVsZW1lbnRSZWN0YW5nbGUud2lkdGggLSBTaGFwZURlZmF1bHRTcGFjZS5yZWN0YW5nbGVBbmRUZXh0ICogMiAtIHN0cm9rZVdpZHRoICogMjtcbiAgICByZXR1cm4ge1xuICAgICAgICBoZWlnaHQsXG4gICAgICAgIHdpZHRoOiB3aWR0aCA+IDAgPyB3aWR0aCA6IDAsXG4gICAgICAgIHg6IGVsZW1lbnRSZWN0YW5nbGUueCArIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKyBzdHJva2VXaWR0aCxcbiAgICAgICAgeTogZWxlbWVudFJlY3RhbmdsZS55ICsgKGVsZW1lbnRSZWN0YW5nbGUuaGVpZ2h0IC0gaGVpZ2h0KSAvIDJcbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRyYXdCb3VuZE1hc2sgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0R2VvbWV0cnkpID0+IHtcbiAgICBjb25zdCBHID0gY3JlYXRlRygpO1xuICAgIGNvbnN0IHJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzKTtcbiAgICBjb25zdCBhY3RpdmVSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuaW5mbGF0ZShyZWN0YW5nbGUsIEFDVElWRV9TVFJPS0VfV0lEVEgpO1xuICAgIGNvbnN0IG1hc2tHID0gZHJhd0dlb21ldHJ5KGJvYXJkLCBhY3RpdmVSZWN0YW5nbGUsIGVsZW1lbnQuc2hhcGUsIHtcbiAgICAgICAgc3Ryb2tlOiBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgICAgICBzdHJva2VXaWR0aDogMSxcbiAgICAgICAgZmlsbDogU0VMRUNUSU9OX0ZJTExfQ09MT1IsXG4gICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgIH0pO1xuICAgIEcuYXBwZW5kQ2hpbGQobWFza0cpO1xuXG4gICAgY29uc3QgY29ubmVjdG9yUG9pbnRzID0gZ2V0RW5naW5lKGVsZW1lbnQuc2hhcGUpLmdldENvbm5lY3RvclBvaW50cyhhY3RpdmVSZWN0YW5nbGUpO1xuICAgIGNvbm5lY3RvclBvaW50cy5mb3JFYWNoKHBvaW50ID0+IHtcbiAgICAgICAgY29uc3QgY2lyY2xlRyA9IGRyYXdDaXJjbGUoUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCksIHBvaW50LCA2LCB7XG4gICAgICAgICAgICBzdHJva2U6ICcjOTk5OTk5JyxcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgICAgZmlsbDogJyNGRkYnLFxuICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgIH0pO1xuICAgICAgICBHLmFwcGVuZENoaWxkKGNpcmNsZUcpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIEc7XG59O1xuXG5leHBvcnQgY29uc3QgZHJhd0dlb21ldHJ5ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBvdXRlclJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBzaGFwZTogR2VvbWV0cnlTaGFwZSwgb3B0aW9uczogT3B0aW9ucykgPT4ge1xuICAgIHJldHVybiBnZXRFbmdpbmUoc2hhcGUpLmRyYXcoYm9hcmQsIG91dGVyUmVjdGFuZ2xlLCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXROZWFyZXN0UG9pbnQgPSAoZWxlbWVudDogUGxhaXRHZW9tZXRyeSwgcG9pbnQ6IFBvaW50LCBpbmZsYXRlRGVsdGEgPSAwKSA9PiB7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgIGNvbnN0IGFjdGl2ZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKHJlY3RhbmdsZSwgaW5mbGF0ZURlbHRhKTtcbiAgICByZXR1cm4gZ2V0RW5naW5lKGVsZW1lbnQuc2hhcGUpLmdldE5lYXJlc3RQb2ludChhY3RpdmVSZWN0YW5nbGUsIHBvaW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDZW50ZXJQb2ludHNPblBvbHlnb24gPSAocG9pbnRzOiBQb2ludFtdKSA9PiB7XG4gICAgY29uc3QgY2VudGVyUG9pbnQ6IFBvaW50W10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgaiA9IGkgPT0gcG9pbnRzLmxlbmd0aCAtIDEgPyAwIDogaSArIDE7XG4gICAgICAgIGNlbnRlclBvaW50LnB1c2goWyhwb2ludHNbaV1bMF0gKyBwb2ludHNbal1bMF0pIC8gMiwgKHBvaW50c1tpXVsxXSArIHBvaW50c1tqXVsxXSkgLyAyXSk7XG4gICAgfVxuICAgIHJldHVybiBjZW50ZXJQb2ludDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFZGdlT25Qb2x5Z29uQnlQb2ludCA9IChjb3JuZXJzOiBQb2ludFtdLCBwb2ludDogUG9pbnQpID0+IHtcbiAgICBmb3IgKGxldCBpbmRleCA9IDE7IGluZGV4IDw9IGNvcm5lcnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGxldCBzdGFydCA9IGNvcm5lcnNbaW5kZXggLSAxXTtcbiAgICAgICAgbGV0IGVuZCA9IGluZGV4ID09PSBjb3JuZXJzLmxlbmd0aCA/IGNvcm5lcnNbMF0gOiBjb3JuZXJzW2luZGV4XTtcbiAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFNlZ21lbnQocG9pbnRbMF0sIHBvaW50WzFdLCBzdGFydFswXSwgc3RhcnRbMV0sIGVuZFswXSwgZW5kWzFdKTtcbiAgICAgICAgaWYgKGRpc3RhbmNlIDwgMSkge1xuICAgICAgICAgICAgcmV0dXJuIFtzdGFydCwgZW5kXSBhcyBbUG9pbnQsIFBvaW50XTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG4iXX0=
@@ -1,6 +1,6 @@
1
- import { idCreator, distanceBetweenPointAndSegments, createG, getElementById, RectangleClient, findElements, drawLinearPath, createMask, createRect, ACTIVE_STROKE_WIDTH } from '@plait/core';
2
- import { getPoints, Direction, getRectangleByPoints, getDirectionByPoint, getPointOnPolyline, getDirectionFactor } from '@plait/common';
3
- import { LineMarkerType, LineShape, PlaitDrawElement, PlaitLine } from '../interfaces';
1
+ import { idCreator, distanceBetweenPointAndSegments, createG, getElementById, RectangleClient, findElements, drawLinearPath, createMask, createRect, ACTIVE_STROKE_WIDTH, Direction } from '@plait/core';
2
+ import { getPoints, getRectangleByPoints, getPointOnPolyline, getDirectionFactor, rotateVector90, getDirectionByVector, getDirectionByPointOfRectangle } from '@plait/common';
3
+ import { LineHandleKey, LineMarkerType, LineShape, PlaitDrawElement, PlaitLine } from '../interfaces';
4
4
  import { getPointsByCenterPoint, getNearestPoint } from './geometry';
5
5
  import { getLineDashByElement, getStrokeColorByElement, getStrokeWidthByElement } from './style/stroke';
6
6
  import { getEngine } from './engine';
@@ -22,21 +22,48 @@ export const getLinePoints = (board, element) => {
22
22
  return element.shape === LineShape.elbow ? getElbowPoints(board, element) : getStraightPoints(board, element);
23
23
  };
24
24
  export const getStraightPoints = (board, element) => {
25
- return [getSourcePoint(board, element), getTargetPoint(board, element)];
25
+ return getLineHandlePoints(board, element);
26
+ };
27
+ export const getLineHandlePoints = (board, element) => {
28
+ const handleRefPair = getLineHandleRefPair(board, element);
29
+ return [handleRefPair.source.point, handleRefPair.target.point];
30
+ };
31
+ export const getLineHandleRefPair = (board, element) => {
32
+ const strokeWidth = getStrokeWidthByElement(element);
33
+ const sourceBoundElement = element.source.boundId ? getElementById(board, element.source.boundId) : undefined;
34
+ const targetBoundElement = element.target.boundId ? getElementById(board, element.target.boundId) : undefined;
35
+ let sourcePoint = sourceBoundElement ? getConnectionPoint(sourceBoundElement, element.source.connection) : element.points[0];
36
+ let targetPoint = targetBoundElement
37
+ ? getConnectionPoint(targetBoundElement, element.target.connection)
38
+ : element.points[element.points.length - 1];
39
+ let sourceDirection = sourcePoint[0] < targetPoint[0] ? Direction.right : Direction.left;
40
+ let targetDirection = sourcePoint[0] < targetPoint[0] ? Direction.left : Direction.right;
41
+ const sourceHandleRef = { key: LineHandleKey.source, point: sourcePoint, direction: sourceDirection };
42
+ const targetHandleRef = { key: LineHandleKey.target, point: targetPoint, direction: targetDirection };
43
+ if (sourceBoundElement) {
44
+ const connectionOffset = PlaitLine.isSourceMarkOrTargetMark(element, LineMarkerType.none, LineHandleKey.source) ? 0 : strokeWidth;
45
+ const direction = getDirectionByBoundElementAndConnection(board, sourceBoundElement, element.source.connection);
46
+ sourceDirection = direction ? direction : sourceDirection;
47
+ sourcePoint = getConnectionPoint(sourceBoundElement, element.source.connection, sourceDirection, connectionOffset);
48
+ sourceHandleRef.boundElement = sourceBoundElement;
49
+ sourceHandleRef.direction = sourceDirection;
50
+ sourceHandleRef.point = sourcePoint;
51
+ }
52
+ if (targetBoundElement) {
53
+ const connectionOffset = PlaitLine.isSourceMarkOrTargetMark(element, LineMarkerType.none, LineHandleKey.target) ? 0 : strokeWidth;
54
+ const direction = getDirectionByBoundElementAndConnection(board, targetBoundElement, element.target.connection);
55
+ targetDirection = direction ? direction : targetDirection;
56
+ targetPoint = getConnectionPoint(targetBoundElement, element.target.connection, targetDirection, connectionOffset);
57
+ targetHandleRef.boundElement = sourceBoundElement;
58
+ targetHandleRef.direction = targetDirection;
59
+ targetHandleRef.point = targetPoint;
60
+ }
61
+ return { source: sourceHandleRef, target: targetHandleRef };
26
62
  };
27
63
  export const getElbowPoints = (board, element) => {
28
64
  if (element.points.length === 2) {
29
- const source = getSourcePoint(board, element);
30
- const target = getTargetPoint(board, element);
31
- let sourceDirection = source[0] < target[0] ? Direction.right : Direction.left;
32
- let targetDirection = source[0] < target[0] ? Direction.left : Direction.right;
33
- if (element.source.connection) {
34
- sourceDirection = getDirectionByPoint(element.source.connection, sourceDirection);
35
- }
36
- if (element.target.connection) {
37
- targetDirection = getDirectionByPoint(element.target.connection, targetDirection);
38
- }
39
- const points = getPoints(source, sourceDirection, target, targetDirection, 30);
65
+ const handleRefPair = getLineHandleRefPair(board, element);
66
+ const points = getPoints(handleRefPair.source.point, handleRefPair.source.direction, handleRefPair.target.point, handleRefPair.target.direction, 30);
40
67
  return points;
41
68
  }
42
69
  return element.points;
@@ -105,33 +132,42 @@ function drawMask(board, element, id) {
105
132
  maskTargetFillRect.setAttribute('opacity', '0');
106
133
  return { mask, maskTargetFillRect };
107
134
  }
108
- export const getSourcePoint = (board, element) => {
109
- if (element.source.boundId) {
110
- const strokeWidth = getStrokeWidthByElement(element);
111
- const connectionOffset = PlaitLine.isSourceMark(element, LineMarkerType.none) ? 0 : strokeWidth;
112
- const boundElement = getElementById(board, element.source.boundId);
113
- return boundElement ? getConnectionPoint(boundElement, element.source.connection, connectionOffset) : element.points[0];
135
+ export const getDirectionByBoundElementAndConnection = (board, boundElement, connection) => {
136
+ const rectangle = getRectangleByPoints(boundElement.points);
137
+ const engine = getEngine(boundElement.shape);
138
+ const direction = getDirectionByPointOfRectangle(connection);
139
+ if (direction) {
140
+ return direction;
141
+ }
142
+ if (engine.getEdgeByConnectionPoint) {
143
+ const edge = engine.getEdgeByConnectionPoint(rectangle, connection);
144
+ if (edge) {
145
+ const vector = [edge[1][0] - edge[0][0], edge[1][1] - edge[0][1]];
146
+ const vector90 = rotateVector90(vector);
147
+ const direction = getDirectionByVector(vector90);
148
+ return direction;
149
+ }
114
150
  }
115
- return element.points[0];
116
- };
117
- export const getTargetPoint = (board, element) => {
118
- if (element.target.boundId) {
119
- const strokeWidth = getStrokeWidthByElement(element);
120
- const connectionOffset = PlaitLine.isTargetMark(element, LineMarkerType.none) ? 0 : strokeWidth;
121
- const boundElement = getElementById(board, element.target.boundId);
122
- return boundElement
123
- ? getConnectionPoint(boundElement, element.target.connection, connectionOffset)
124
- : element.points[element.points.length - 1];
151
+ if (engine.getTangentVectorByConnectionPoint) {
152
+ const vector = engine.getTangentVectorByConnectionPoint(rectangle, connection);
153
+ if (vector) {
154
+ const vector90 = rotateVector90(vector);
155
+ const direction = getDirectionByVector(vector90);
156
+ return direction;
157
+ }
125
158
  }
126
- return element.points[element.points.length - 1];
159
+ return null;
127
160
  };
128
- export const getConnectionPoint = (geometry, connection, offset) => {
161
+ export const getConnectionPoint = (geometry, connection, direction, delta) => {
129
162
  const rectangle = getRectangleByPoints(geometry.points);
130
- const directionFactor = getDirectionFactor(getDirectionByPoint(connection, Direction.bottom));
131
- return [
132
- rectangle.x + rectangle.width * connection[0] + directionFactor.x * offset,
133
- rectangle.y + rectangle.height * connection[1] + directionFactor.y * offset
134
- ];
163
+ if (direction && delta) {
164
+ const directionFactor = getDirectionFactor(direction);
165
+ const point = RectangleClient.getConnectionPoint(rectangle, connection);
166
+ return [point[0] + directionFactor.x * delta, point[1] + directionFactor.y * delta];
167
+ }
168
+ else {
169
+ return RectangleClient.getConnectionPoint(rectangle, connection);
170
+ }
135
171
  };
136
172
  export const transformPointToConnection = (board, point, hitElement) => {
137
173
  let rectangle = getRectangleByPoints(hitElement.points);
@@ -166,4 +202,4 @@ export const getBoardLines = (board) => {
166
202
  recursion: (element) => PlaitDrawElement.isDrawElement(element)
167
203
  });
168
204
  };
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3V0aWxzL2xpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFDVCwrQkFBK0IsRUFFL0IsT0FBTyxFQUNQLGNBQWMsRUFDZCxlQUFlLEVBQ2YsWUFBWSxFQUVaLGNBQWMsRUFDZCxVQUFVLEVBQ1YsVUFBVSxFQUNWLG1CQUFtQixFQUN0QixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQWMsY0FBYyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBaUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQzdCLEtBQWdCLEVBQ2hCLE1BQXNCLEVBQ3RCLE1BQWtCLEVBQ2xCLE1BQWtCLEVBQ2xCLE9BQXdELEVBQy9DLEVBQUU7SUFDWCxPQUFPO1FBQ0gsRUFBRSxFQUFFLFNBQVMsRUFBRTtRQUNmLElBQUksRUFBRSxNQUFNO1FBQ1osS0FBSztRQUNMLE1BQU07UUFDTixLQUFLLEVBQUUsRUFBRTtRQUNULE1BQU07UUFDTixPQUFPLEVBQUUsQ0FBQztRQUNWLE1BQU07UUFDTixHQUFHLE9BQU87S0FDYixD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LENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTyxHQUFHLENBQUM7UUFDOUIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFNO1FBQ2xCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTztLQUN2QixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQy9DLE9BQU8sWUFBWSxDQUFDLEtBQUssRUFBRTtRQUN2QixLQUFLLEVBQUUsQ0FBQyxPQUFxQixFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ2xFLFNBQVMsRUFBRSxDQUFDLE9BQXFCLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7S0FDaEYsQ0FBZ0IsQ0FBQztBQUN0QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFBvaW50LFxuICAgIGlkQ3JlYXRvcixcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFNlZ21lbnRzLFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgY3JlYXRlRyxcbiAgICBnZXRFbGVtZW50QnlJZCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgZmluZEVsZW1lbnRzLFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBkcmF3TGluZWFyUGF0aCxcbiAgICBjcmVhdGVNYXNrLFxuICAgIGNyZWF0ZVJlY3QsXG4gICAgQUNUSVZFX1NUUk9LRV9XSURUSFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBnZXRQb2ludHMsIERpcmVjdGlvbiwgZ2V0UmVjdGFuZ2xlQnlQb2ludHMsIGdldERpcmVjdGlvbkJ5UG9pbnQsIGdldFBvaW50T25Qb2x5bGluZSwgZ2V0RGlyZWN0aW9uRmFjdG9yIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBMaW5lSGFuZGxlLCBMaW5lTWFya2VyVHlwZSwgTGluZVNoYXBlLCBQbGFpdERyYXdFbGVtZW50LCBQbGFpdEdlb21ldHJ5LCBQbGFpdExpbmUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldFBvaW50c0J5Q2VudGVyUG9pbnQsIGdldE5lYXJlc3RQb2ludCB9IGZyb20gJy4vZ2VvbWV0cnknO1xuaW1wb3J0IHsgZ2V0TGluZURhc2hCeUVsZW1lbnQsIGdldFN0cm9rZUNvbG9yQnlFbGVtZW50LCBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCB9IGZyb20gJy4vc3R5bGUvc3Ryb2tlJztcbmltcG9ydCB7IGdldEVuZ2luZSB9IGZyb20gJy4vZW5naW5lJztcbmltcG9ydCB7IGRyYXdMaW5lQXJyb3cgfSBmcm9tICcuL2xpbmUtYXJyb3cnO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTGluZUVsZW1lbnQgPSAoXG4gICAgc2hhcGU6IExpbmVTaGFwZSxcbiAgICBwb2ludHM6IFtQb2ludCwgUG9pbnRdLFxuICAgIHNvdXJjZTogTGluZUhhbmRsZSxcbiAgICB0YXJnZXQ6IExpbmVIYW5kbGUsXG4gICAgb3B0aW9ucz86IFBpY2s8UGxhaXRMaW5lLCAnc3Ryb2tlQ29sb3InIHwgJ3N0cm9rZVdpZHRoJz5cbik6IFBsYWl0TGluZSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGlkQ3JlYXRvcigpLFxuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIHNoYXBlLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIHRleHRzOiBbXSxcbiAgICAgICAgdGFyZ2V0LFxuICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICBwb2ludHMsXG4gICAgICAgIC4uLm9wdGlvbnNcbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExpbmVQb2ludHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSkgPT4ge1xuICAgIHJldHVybiBlbGVtZW50LnNoYXBlID09PSBMaW5lU2hhcGUuZWxib3cgPyBnZXRFbGJvd1BvaW50cyhib2FyZCwgZWxlbWVudCkgOiBnZXRTdHJhaWdodFBvaW50cyhib2FyZCwgZWxlbWVudCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3RyYWlnaHRQb2ludHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSkgPT4ge1xuICAgIHJldHVybiBbZ2V0U291cmNlUG9pbnQoYm9hcmQsIGVsZW1lbnQpLCBnZXRUYXJnZXRQb2ludChib2FyZCwgZWxlbWVudCldO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVsYm93UG9pbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUpID0+IHtcbiAgICBpZiAoZWxlbWVudC5wb2ludHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IGdldFNvdXJjZVBvaW50KGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0VGFyZ2V0UG9pbnQoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBsZXQgc291cmNlRGlyZWN0aW9uID0gc291cmNlWzBdIDwgdGFyZ2V0WzBdID8gRGlyZWN0aW9uLnJpZ2h0IDogRGlyZWN0aW9uLmxlZnQ7XG4gICAgICAgIGxldCB0YXJnZXREaXJlY3Rpb24gPSBzb3VyY2VbMF0gPCB0YXJnZXRbMF0gPyBEaXJlY3Rpb24ubGVmdCA6IERpcmVjdGlvbi5yaWdodDtcbiAgICAgICAgaWYgKGVsZW1lbnQuc291cmNlLmNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgIHNvdXJjZURpcmVjdGlvbiA9IGdldERpcmVjdGlvbkJ5UG9pbnQoZWxlbWVudC5zb3VyY2UuY29ubmVjdGlvbiwgc291cmNlRGlyZWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudC50YXJnZXQuY29ubmVjdGlvbikge1xuICAgICAgICAgICAgdGFyZ2V0RGlyZWN0aW9uID0gZ2V0RGlyZWN0aW9uQnlQb2ludChlbGVtZW50LnRhcmdldC5jb25uZWN0aW9uLCB0YXJnZXREaXJlY3Rpb24pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBvaW50czogUG9pbnRbXSA9IGdldFBvaW50cyhzb3VyY2UsIHNvdXJjZURpcmVjdGlvbiwgdGFyZ2V0LCB0YXJnZXREaXJlY3Rpb24sIDMwKTtcbiAgICAgICAgcmV0dXJuIHBvaW50cztcbiAgICB9XG4gICAgcmV0dXJuIGVsZW1lbnQucG9pbnRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzSGl0UG9seUxpbmUgPSAocGF0aFBvaW50czogUG9pbnRbXSwgcG9pbnQ6IFBvaW50LCBzdHJva2VXaWR0aDogbnVtYmVyLCBleHBhbmQ6IG51bWJlciA9IDApID0+IHtcbiAgICBjb25zdCBkaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kU2VnbWVudHMocGF0aFBvaW50cywgcG9pbnQpO1xuICAgIHJldHVybiBkaXN0YW5jZSA8PSBzdHJva2VXaWR0aCArIGV4cGFuZDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIaXRMaW5lVGV4dEluZGV4ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUsIHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IHRleHRzID0gZWxlbWVudC50ZXh0cztcbiAgICBpZiAoIXRleHRzLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgY29uc3QgcG9pbnRzID0gZ2V0RWxib3dQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgIHJldHVybiB0ZXh0cy5maW5kSW5kZXgodGV4dCA9PiB7XG4gICAgICAgIGNvbnN0IGNlbnRlciA9IGdldFBvaW50T25Qb2x5bGluZShwb2ludHMsIHRleHQucG9zaXRpb24pO1xuICAgICAgICBjb25zdCByZWN0YW5nbGUgPSB7XG4gICAgICAgICAgICB4OiBjZW50ZXJbMF0gLSB0ZXh0LndpZHRoISAvIDIsXG4gICAgICAgICAgICB5OiBjZW50ZXJbMV0gLSB0ZXh0LmhlaWdodCEgLyAyLFxuICAgICAgICAgICAgd2lkdGg6IHRleHQud2lkdGghLFxuICAgICAgICAgICAgaGVpZ2h0OiB0ZXh0LmhlaWdodCFcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5pc0hpdChyZWN0YW5nbGUsIFJlY3RhbmdsZUNsaWVudC50b1JlY3RhbmdsZUNsaWVudChbcG9pbnQsIHBvaW50XSkpO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzSGl0TGluZVRleHQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSwgcG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgcmV0dXJuIGdldEhpdExpbmVUZXh0SW5kZXgoYm9hcmQsIGVsZW1lbnQsIHBvaW50KSAhPT0gLTE7XG59O1xuXG5leHBvcnQgY29uc3QgZHJhd0xpbmUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSkgPT4ge1xuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgY29uc3Qgc3Ryb2tlQ29sb3IgPSBnZXRTdHJva2VDb2xvckJ5RWxlbWVudChlbGVtZW50KTtcbiAgICBjb25zdCBzdHJva2VMaW5lRGFzaCA9IGdldExpbmVEYXNoQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7IHN0cm9rZTogc3Ryb2tlQ29sb3IsIHN0cm9rZVdpZHRoLCBzdHJva2VMaW5lRGFzaCB9O1xuICAgIGNvbnN0IGxpbmVHID0gY3JlYXRlRygpO1xuICAgIGNvbnN0IHBvaW50cyA9IGdldExpbmVQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IGxpbmUgPSBkcmF3TGluZWFyUGF0aChwb2ludHMsIG9wdGlvbnMpO1xuICAgIGNvbnN0IGlkID0gaWRDcmVhdG9yKCk7XG4gICAgbGluZS5zZXRBdHRyaWJ1dGUoJ21hc2snLCBgdXJsKCMke2lkfSlgKTtcbiAgICBsaW5lRy5hcHBlbmRDaGlsZChsaW5lKTtcbiAgICBjb25zdCB7IG1hc2ssIG1hc2tUYXJnZXRGaWxsUmVjdCB9ID0gZHJhd01hc2soYm9hcmQsIGVsZW1lbnQsIGlkKTtcbiAgICBsaW5lRy5hcHBlbmRDaGlsZChtYXNrKTtcbiAgICBsaW5lLmFwcGVuZENoaWxkKG1hc2tUYXJnZXRGaWxsUmVjdCk7XG4gICAgY29uc3QgYXJyb3cgPSBkcmF3TGluZUFycm93KGVsZW1lbnQsIHBvaW50cywgeyBzdHJva2U6IHN0cm9rZUNvbG9yLCBzdHJva2VXaWR0aCB9KTtcbiAgICBhcnJvdyAmJiBsaW5lRy5hcHBlbmRDaGlsZChhcnJvdyk7XG4gICAgcmV0dXJuIGxpbmVHO1xufTtcblxuZnVuY3Rpb24gZHJhd01hc2soYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSwgaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IG1hc2sgPSBjcmVhdGVNYXNrKCk7XG4gICAgbWFzay5zZXRBdHRyaWJ1dGUoJ2lkJywgaWQpO1xuICAgIGNvbnN0IHBvaW50cyA9IGdldExpbmVQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGxldCByZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeVBvaW50cyhwb2ludHMpO1xuICAgIHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRPdXRsaW5lUmVjdGFuZ2xlKHJlY3RhbmdsZSwgLTMwKTtcbiAgICBjb25zdCBtYXNrRmlsbFJlY3QgPSBjcmVhdGVSZWN0KHJlY3RhbmdsZSwge1xuICAgICAgICBmaWxsOiAnd2hpdGUnXG4gICAgfSk7XG4gICAgbWFzay5hcHBlbmRDaGlsZChtYXNrRmlsbFJlY3QpO1xuXG4gICAgY29uc3QgdGV4dHMgPSBlbGVtZW50LnRleHRzO1xuICAgIHRleHRzLmZvckVhY2goKHRleHQsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHRleHRSZWN0YW5nbGUgPSBnZXRMaW5lVGV4dFJlY3RhbmdsZShib2FyZCwgZWxlbWVudCwgaW5kZXgpO1xuICAgICAgICBjb25zdCByZWN0ID0gY3JlYXRlUmVjdCh0ZXh0UmVjdGFuZ2xlLCB7XG4gICAgICAgICAgICBmaWxsOiAnYmxhY2snXG4gICAgICAgIH0pO1xuICAgICAgICBtYXNrLmFwcGVuZENoaWxkKHJlY3QpO1xuICAgIH0pO1xuICAgIC8v5pKR5byAIGxpbmVcbiAgICBjb25zdCBtYXNrVGFyZ2V0RmlsbFJlY3QgPSBjcmVhdGVSZWN0KHJlY3RhbmdsZSk7XG4gICAgbWFza1RhcmdldEZpbGxSZWN0LnNldEF0dHJpYnV0ZSgnb3BhY2l0eScsICcwJyk7XG4gICAgcmV0dXJuIHsgbWFzaywgbWFza1RhcmdldEZpbGxSZWN0IH07XG59XG5cbmV4cG9ydCBjb25zdCBnZXRTb3VyY2VQb2ludCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lKSA9PiB7XG4gICAgaWYgKGVsZW1lbnQuc291cmNlLmJvdW5kSWQpIHtcbiAgICAgICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3QgY29ubmVjdGlvbk9mZnNldCA9IFBsYWl0TGluZS5pc1NvdXJjZU1hcmsoZWxlbWVudCwgTGluZU1hcmtlclR5cGUubm9uZSkgPyAwIDogc3Ryb2tlV2lkdGg7XG4gICAgICAgIGNvbnN0IGJvdW5kRWxlbWVudCA9IGdldEVsZW1lbnRCeUlkPFBsYWl0R2VvbWV0cnk+KGJvYXJkLCBlbGVtZW50LnNvdXJjZS5ib3VuZElkKTtcbiAgICAgICAgcmV0dXJuIGJvdW5kRWxlbWVudCA/IGdldENvbm5lY3Rpb25Qb2ludChib3VuZEVsZW1lbnQsIGVsZW1lbnQuc291cmNlLmNvbm5lY3Rpb24hLCBjb25uZWN0aW9uT2Zmc2V0KSA6IGVsZW1lbnQucG9pbnRzWzBdO1xuICAgIH1cbiAgICByZXR1cm4gZWxlbWVudC5wb2ludHNbMF07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGFyZ2V0UG9pbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSkgPT4ge1xuICAgIGlmIChlbGVtZW50LnRhcmdldC5ib3VuZElkKSB7XG4gICAgICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25PZmZzZXQgPSBQbGFpdExpbmUuaXNUYXJnZXRNYXJrKGVsZW1lbnQsIExpbmVNYXJrZXJUeXBlLm5vbmUpID8gMCA6IHN0cm9rZVdpZHRoO1xuICAgICAgICBjb25zdCBib3VuZEVsZW1lbnQgPSBnZXRFbGVtZW50QnlJZDxQbGFpdEdlb21ldHJ5Pihib2FyZCwgZWxlbWVudC50YXJnZXQuYm91bmRJZCk7XG4gICAgICAgIHJldHVybiBib3VuZEVsZW1lbnRcbiAgICAgICAgICAgID8gZ2V0Q29ubmVjdGlvblBvaW50KGJvdW5kRWxlbWVudCwgZWxlbWVudC50YXJnZXQuY29ubmVjdGlvbiEsIGNvbm5lY3Rpb25PZmZzZXQpXG4gICAgICAgICAgICA6IGVsZW1lbnQucG9pbnRzW2VsZW1lbnQucG9pbnRzLmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgICByZXR1cm4gZWxlbWVudC5wb2ludHNbZWxlbWVudC5wb2ludHMubGVuZ3RoIC0gMV07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29ubmVjdGlvblBvaW50ID0gKGdlb21ldHJ5OiBQbGFpdEdlb21ldHJ5LCBjb25uZWN0aW9uOiBQb2ludCwgb2Zmc2V0OiBudW1iZXIpOiBQb2ludCA9PiB7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZ2VvbWV0cnkucG9pbnRzKTtcbiAgICBjb25zdCBkaXJlY3Rpb25GYWN0b3IgPSBnZXREaXJlY3Rpb25GYWN0b3IoZ2V0RGlyZWN0aW9uQnlQb2ludChjb25uZWN0aW9uLCBEaXJlY3Rpb24uYm90dG9tKSk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggKiBjb25uZWN0aW9uWzBdICsgZGlyZWN0aW9uRmFjdG9yLnggKiBvZmZzZXQsXG4gICAgICAgIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAqIGNvbm5lY3Rpb25bMV0gKyBkaXJlY3Rpb25GYWN0b3IueSAqIG9mZnNldFxuICAgIF07XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtUG9pbnRUb0Nvbm5lY3Rpb24gPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50OiBQb2ludCwgaGl0RWxlbWVudDogUGxhaXRHZW9tZXRyeSk6IFBvaW50ID0+IHtcbiAgICBsZXQgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMoaGl0RWxlbWVudC5wb2ludHMpO1xuICAgIHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKHJlY3RhbmdsZSwgQUNUSVZFX1NUUk9LRV9XSURUSCk7XG4gICAgbGV0IG5lYXJlc3RQb2ludCA9IGdldE5lYXJlc3RQb2ludChoaXRFbGVtZW50LCBwb2ludCwgQUNUSVZFX1NUUk9LRV9XSURUSCk7XG4gICAgY29uc3QgaGl0Q29ubmVjdG9yID0gZ2V0SGl0Q29ubmVjdG9yUG9pbnQobmVhcmVzdFBvaW50LCBoaXRFbGVtZW50LCByZWN0YW5nbGUpO1xuICAgIG5lYXJlc3RQb2ludCA9IGhpdENvbm5lY3RvciA/IGhpdENvbm5lY3RvciA6IG5lYXJlc3RQb2ludDtcbiAgICByZXR1cm4gWyhuZWFyZXN0UG9pbnRbMF0gLSByZWN0YW5nbGUueCkgLyByZWN0YW5nbGUud2lkdGgsIChuZWFyZXN0UG9pbnRbMV0gLSByZWN0YW5nbGUueSkgLyByZWN0YW5nbGUuaGVpZ2h0XTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIaXRDb25uZWN0b3JQb2ludCA9IChtb3ZpbmdQb2ludDogUG9pbnQsIGhpdEVsZW1lbnQ6IFBsYWl0R2VvbWV0cnksIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSA9PiB7XG4gICAgY29uc3QgY29ubmVjdG9yID0gZ2V0RW5naW5lKGhpdEVsZW1lbnQuc2hhcGUpLmdldENvbm5lY3RvclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIGNvbnN0IHBvaW50cyA9IGdldFBvaW50c0J5Q2VudGVyUG9pbnQobW92aW5nUG9pbnQsIDUsIDUpO1xuICAgIGNvbnN0IHBvaW50UmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKTtcbiAgICByZXR1cm4gY29ubmVjdG9yLmZpbmQocG9pbnQgPT4ge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHBvaW50UmVjdGFuZ2xlLCBSZWN0YW5nbGVDbGllbnQudG9SZWN0YW5nbGVDbGllbnQoW3BvaW50LCBwb2ludF0pKTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMaW5lVGV4dFJlY3RhbmdsZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lLCBpbmRleDogbnVtYmVyKTogUmVjdGFuZ2xlQ2xpZW50ID0+IHtcbiAgICBjb25zdCB0ZXh0ID0gZWxlbWVudC50ZXh0c1tpbmRleF07XG4gICAgY29uc3QgZWxib3dQb2ludHMgPSBnZXRMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCBwb2ludCA9IGdldFBvaW50T25Qb2x5bGluZShlbGJvd1BvaW50cywgdGV4dC5wb3NpdGlvbik7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogcG9pbnRbMF0gLSB0ZXh0LndpZHRoISAvIDIsXG4gICAgICAgIHk6IHBvaW50WzFdIC0gdGV4dC5oZWlnaHQhIC8gMixcbiAgICAgICAgd2lkdGg6IHRleHQud2lkdGghLFxuICAgICAgICBoZWlnaHQ6IHRleHQuaGVpZ2h0IVxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Qm9hcmRMaW5lcyA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIHJldHVybiBmaW5kRWxlbWVudHMoYm9hcmQsIHtcbiAgICAgICAgbWF0Y2g6IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNMaW5lKGVsZW1lbnQpLFxuICAgICAgICByZWN1cnNpb246IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNEcmF3RWxlbWVudChlbGVtZW50KVxuICAgIH0pIGFzIFBsYWl0TGluZVtdO1xufTtcbiJdfQ==
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3V0aWxzL2xpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFDVCwrQkFBK0IsRUFFL0IsT0FBTyxFQUNQLGNBQWMsRUFDZCxlQUFlLEVBQ2YsWUFBWSxFQUVaLGNBQWMsRUFDZCxVQUFVLEVBQ1YsVUFBVSxFQUNWLG1CQUFtQixFQUVuQixTQUFTLEVBRVosTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNILFNBQVMsRUFDVCxvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLDhCQUE4QixFQUNqQyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUgsYUFBYSxFQUViLGNBQWMsRUFDZCxTQUFTLEVBQ1QsZ0JBQWdCLEVBRWhCLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDckMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUM3QixLQUFnQixFQUNoQixNQUFzQixFQUN0QixNQUFrQixFQUNsQixNQUFrQixFQUNsQixPQUF3RCxFQUMvQyxFQUFFO0lBQ1gsT0FBTztRQUNILEVBQUUsRUFBRSxTQUFTLEVBQUU7UUFDZixJQUFJLEVBQUUsTUFBTTtRQUNaLEtBQUs7UUFDTCxNQUFNO1FBQ04sS0FBSyxFQUFFLEVBQUU7UUFDVCxNQUFNO1FBQ04sT0FBTyxFQUFF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RyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdELE9BQU87UUFDSCxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFNLEdBQUcsQ0FBQztRQUM3QixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFPLEdBQUcsQ0FBQztRQUM5QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQU07UUFDbEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFPO0tBQ3ZCLENBQUM7QUFDTixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDL0MsT0FBTyxZQUFZLENBQUMsS0FBSyxFQUFFO1FBQ3ZCLEtBQUssRUFBRSxDQUFDLE9BQXFCLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDbEUsU0FBUyxFQUFFLENBQUMsT0FBcUIsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztLQUNoRixDQUFnQixDQUFDO0FBQ3RCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUG9pbnQsXG4gICAgaWRDcmVhdG9yLFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kU2VnbWVudHMsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBjcmVhdGVHLFxuICAgIGdldEVsZW1lbnRCeUlkLFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBmaW5kRWxlbWVudHMsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIGRyYXdMaW5lYXJQYXRoLFxuICAgIGNyZWF0ZU1hc2ssXG4gICAgY3JlYXRlUmVjdCxcbiAgICBBQ1RJVkVfU1RST0tFX1dJRFRILFxuICAgIFBvaW50T2ZSZWN0YW5nbGUsXG4gICAgRGlyZWN0aW9uLFxuICAgIFZlY3RvclxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQge1xuICAgIGdldFBvaW50cyxcbiAgICBnZXRSZWN0YW5nbGVCeVBvaW50cyxcbiAgICBnZXRQb2ludE9uUG9seWxpbmUsXG4gICAgZ2V0RGlyZWN0aW9uRmFjdG9yLFxuICAgIHJvdGF0ZVZlY3RvcjkwLFxuICAgIGdldERpcmVjdGlvbkJ5VmVjdG9yLFxuICAgIGdldERpcmVjdGlvbkJ5UG9pbnRPZlJlY3RhbmdsZVxufSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7XG4gICAgTGluZUhhbmRsZSxcbiAgICBMaW5lSGFuZGxlS2V5LFxuICAgIExpbmVIYW5kbGVSZWYsXG4gICAgTGluZU1hcmtlclR5cGUsXG4gICAgTGluZVNoYXBlLFxuICAgIFBsYWl0RHJhd0VsZW1lbnQsXG4gICAgUGxhaXRHZW9tZXRyeSxcbiAgICBQbGFpdExpbmVcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRQb2ludHNCeUNlbnRlclBvaW50LCBnZXROZWFyZXN0UG9pbnQgfSBmcm9tICcuL2dlb21ldHJ5JztcbmltcG9ydCB7IGdldExpbmVEYXNoQnlFbGVtZW50LCBnZXRTdHJva2VDb2xvckJ5RWxlbWVudCwgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQgfSBmcm9tICcuL3N0eWxlL3N0cm9rZSc7XG5pbXBvcnQgeyBnZXRFbmdpbmUgfSBmcm9tICcuL2VuZ2luZSc7XG5pbXBvcnQgeyBkcmF3TGluZUFycm93IH0gZnJvbSAnLi9saW5lLWFycm93JztcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUxpbmVFbGVtZW50ID0gKFxuICAgIHNoYXBlOiBMaW5lU2hhcGUsXG4gICAgcG9pbnRzOiBbUG9pbnQsIFBvaW50XSxcbiAgICBzb3VyY2U6IExpbmVIYW5kbGUsXG4gICAgdGFyZ2V0OiBMaW5lSGFuZGxlLFxuICAgIG9wdGlvbnM/OiBQaWNrPFBsYWl0TGluZSwgJ3N0cm9rZUNvbG9yJyB8ICdzdHJva2VXaWR0aCc+XG4pOiBQbGFpdExpbmUgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBpZENyZWF0b3IoKSxcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBzaGFwZSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICB0ZXh0czogW10sXG4gICAgICAgIHRhcmdldCxcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgcG9pbnRzLFxuICAgICAgICAuLi5vcHRpb25zXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMaW5lUG9pbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUpID0+IHtcbiAgICByZXR1cm4gZWxlbWVudC5zaGFwZSA9PT0gTGluZVNoYXBlLmVsYm93ID8gZ2V0RWxib3dQb2ludHMoYm9hcmQsIGVsZW1lbnQpIDogZ2V0U3RyYWlnaHRQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN0cmFpZ2h0UG9pbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUpID0+IHtcbiAgICByZXR1cm4gZ2V0TGluZUhhbmRsZVBvaW50cyhib2FyZCwgZWxlbWVudCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGluZUhhbmRsZVBvaW50cyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlUmVmUGFpciA9IGdldExpbmVIYW5kbGVSZWZQYWlyKGJvYXJkLCBlbGVtZW50KTtcbiAgICByZXR1cm4gW2hhbmRsZVJlZlBhaXIuc291cmNlLnBvaW50LCBoYW5kbGVSZWZQYWlyLnRhcmdldC5wb2ludF07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGluZUhhbmRsZVJlZlBhaXIgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSkgPT4ge1xuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgY29uc3Qgc291cmNlQm91bmRFbGVtZW50ID0gZWxlbWVudC5zb3VyY2UuYm91bmRJZCA/IGdldEVsZW1lbnRCeUlkPFBsYWl0R2VvbWV0cnk+KGJvYXJkLCBlbGVtZW50LnNvdXJjZS5ib3VuZElkKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCB0YXJnZXRCb3VuZEVsZW1lbnQgPSBlbGVtZW50LnRhcmdldC5ib3VuZElkID8gZ2V0RWxlbWVudEJ5SWQ8UGxhaXRHZW9tZXRyeT4oYm9hcmQsIGVsZW1lbnQudGFyZ2V0LmJvdW5kSWQpIDogdW5kZWZpbmVkO1xuICAgIGxldCBzb3VyY2VQb2ludCA9IHNvdXJjZUJvdW5kRWxlbWVudCA/IGdldENvbm5lY3Rpb25Qb2ludChzb3VyY2VCb3VuZEVsZW1lbnQsIGVsZW1lbnQuc291cmNlLmNvbm5lY3Rpb24hKSA6IGVsZW1lbnQucG9pbnRzWzBdO1xuICAgIGxldCB0YXJnZXRQb2ludCA9IHRhcmdldEJvdW5kRWxlbWVudFxuICAgICAgICA/IGdldENvbm5lY3Rpb25Qb2ludCh0YXJnZXRCb3VuZEVsZW1lbnQsIGVsZW1lbnQudGFyZ2V0LmNvbm5lY3Rpb24hKVxuICAgICAgICA6IGVsZW1lbnQucG9pbnRzW2VsZW1lbnQucG9pbnRzLmxlbmd0aCAtIDFdO1xuICAgIGxldCBzb3VyY2VEaXJlY3Rpb24gPSBzb3VyY2VQb2ludFswXSA8IHRhcmdldFBvaW50WzBdID8gRGlyZWN0aW9uLnJpZ2h0IDogRGlyZWN0aW9uLmxlZnQ7XG4gICAgbGV0IHRhcmdldERpcmVjdGlvbiA9IHNvdXJjZVBvaW50WzBdIDwgdGFyZ2V0UG9pbnRbMF0gPyBEaXJlY3Rpb24ubGVmdCA6IERpcmVjdGlvbi5yaWdodDtcbiAgICBjb25zdCBzb3VyY2VIYW5kbGVSZWY6IExpbmVIYW5kbGVSZWYgPSB7IGtleTogTGluZUhhbmRsZUtleS5zb3VyY2UsIHBvaW50OiBzb3VyY2VQb2ludCwgZGlyZWN0aW9uOiBzb3VyY2VEaXJlY3Rpb24gfTtcbiAgICBjb25zdCB0YXJnZXRIYW5kbGVSZWY6IExpbmVIYW5kbGVSZWYgPSB7IGtleTogTGluZUhhbmRsZUtleS50YXJnZXQsIHBvaW50OiB0YXJnZXRQb2ludCwgZGlyZWN0aW9uOiB0YXJnZXREaXJlY3Rpb24gfTtcbiAgICBpZiAoc291cmNlQm91bmRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25PZmZzZXQgPSBQbGFpdExpbmUuaXNTb3VyY2VNYXJrT3JUYXJnZXRNYXJrKGVsZW1lbnQsIExpbmVNYXJrZXJUeXBlLm5vbmUsIExpbmVIYW5kbGVLZXkuc291cmNlKSA/IDAgOiBzdHJva2VXaWR0aDtcbiAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gZ2V0RGlyZWN0aW9uQnlCb3VuZEVsZW1lbnRBbmRDb25uZWN0aW9uKGJvYXJkLCBzb3VyY2VCb3VuZEVsZW1lbnQsIGVsZW1lbnQuc291cmNlLmNvbm5lY3Rpb24hKTtcbiAgICAgICAgc291cmNlRGlyZWN0aW9uID0gZGlyZWN0aW9uID8gZGlyZWN0aW9uIDogc291cmNlRGlyZWN0aW9uO1xuICAgICAgICBzb3VyY2VQb2ludCA9IGdldENvbm5lY3Rpb25Qb2ludChzb3VyY2VCb3VuZEVsZW1lbnQsIGVsZW1lbnQuc291cmNlLmNvbm5lY3Rpb24hLCBzb3VyY2VEaXJlY3Rpb24sIGNvbm5lY3Rpb25PZmZzZXQpO1xuICAgICAgICBzb3VyY2VIYW5kbGVSZWYuYm91bmRFbGVtZW50ID0gc291cmNlQm91bmRFbGVtZW50O1xuICAgICAgICBzb3VyY2VIYW5kbGVSZWYuZGlyZWN0aW9uID0gc291cmNlRGlyZWN0aW9uO1xuICAgICAgICBzb3VyY2VIYW5kbGVSZWYucG9pbnQgPSBzb3VyY2VQb2ludDtcbiAgICB9XG4gICAgaWYgKHRhcmdldEJvdW5kRWxlbWVudCkge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uT2Zmc2V0ID0gUGxhaXRMaW5lLmlzU291cmNlTWFya09yVGFyZ2V0TWFyayhlbGVtZW50LCBMaW5lTWFya2VyVHlwZS5ub25lLCBMaW5lSGFuZGxlS2V5LnRhcmdldCkgPyAwIDogc3Ryb2tlV2lkdGg7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGdldERpcmVjdGlvbkJ5Qm91bmRFbGVtZW50QW5kQ29ubmVjdGlvbihib2FyZCwgdGFyZ2V0Qm91bmRFbGVtZW50LCBlbGVtZW50LnRhcmdldC5jb25uZWN0aW9uISk7XG4gICAgICAgIHRhcmdldERpcmVjdGlvbiA9IGRpcmVjdGlvbiA/IGRpcmVjdGlvbiA6IHRhcmdldERpcmVjdGlvbjtcbiAgICAgICAgdGFyZ2V0UG9pbnQgPSBnZXRDb25uZWN0aW9uUG9pbnQodGFyZ2V0Qm91bmRFbGVtZW50LCBlbGVtZW50LnRhcmdldC5jb25uZWN0aW9uISwgdGFyZ2V0RGlyZWN0aW9uLCBjb25uZWN0aW9uT2Zmc2V0KTtcbiAgICAgICAgdGFyZ2V0SGFuZGxlUmVmLmJvdW5kRWxlbWVudCA9IHNvdXJjZUJvdW5kRWxlbWVudDtcbiAgICAgICAgdGFyZ2V0SGFuZGxlUmVmLmRpcmVjdGlvbiA9IHRhcmdldERpcmVjdGlvbjtcbiAgICAgICAgdGFyZ2V0SGFuZGxlUmVmLnBvaW50ID0gdGFyZ2V0UG9pbnQ7XG4gICAgfVxuICAgIHJldHVybiB7IHNvdXJjZTogc291cmNlSGFuZGxlUmVmLCB0YXJnZXQ6IHRhcmdldEhhbmRsZVJlZiB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVsYm93UG9pbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUpID0+IHtcbiAgICBpZiAoZWxlbWVudC5wb2ludHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGNvbnN0IGhhbmRsZVJlZlBhaXIgPSBnZXRMaW5lSGFuZGxlUmVmUGFpcihib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHBvaW50czogUG9pbnRbXSA9IGdldFBvaW50cyhcbiAgICAgICAgICAgIGhhbmRsZVJlZlBhaXIuc291cmNlLnBvaW50LFxuICAgICAgICAgICAgaGFuZGxlUmVmUGFpci5zb3VyY2UuZGlyZWN0aW9uLFxuICAgICAgICAgICAgaGFuZGxlUmVmUGFpci50YXJnZXQucG9pbnQsXG4gICAgICAgICAgICBoYW5kbGVSZWZQYWlyLnRhcmdldC5kaXJlY3Rpb24sXG4gICAgICAgICAgICAzMFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gcG9pbnRzO1xuICAgIH1cbiAgICByZXR1cm4gZWxlbWVudC5wb2ludHM7XG59O1xuXG5leHBvcnQgY29uc3QgaXNIaXRQb2x5TGluZSA9IChwYXRoUG9pbnRzOiBQb2ludFtdLCBwb2ludDogUG9pbnQsIHN0cm9rZVdpZHRoOiBudW1iZXIsIGV4cGFuZDogbnVtYmVyID0gMCkgPT4ge1xuICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyhwYXRoUG9pbnRzLCBwb2ludCk7XG4gICAgcmV0dXJuIGRpc3RhbmNlIDw9IHN0cm9rZVdpZHRoICsgZXhwYW5kO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpdExpbmVUZXh0SW5kZXggPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSwgcG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgY29uc3QgdGV4dHMgPSBlbGVtZW50LnRleHRzO1xuICAgIGlmICghdGV4dHMubGVuZ3RoKSByZXR1cm4gLTE7XG5cbiAgICBjb25zdCBwb2ludHMgPSBnZXRFbGJvd1BvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgcmV0dXJuIHRleHRzLmZpbmRJbmRleCh0ZXh0ID0+IHtcbiAgICAgICAgY29uc3QgY2VudGVyID0gZ2V0UG9pbnRPblBvbHlsaW5lKHBvaW50cywgdGV4dC5wb3NpdGlvbik7XG4gICAgICAgIGNvbnN0IHJlY3RhbmdsZSA9IHtcbiAgICAgICAgICAgIHg6IGNlbnRlclswXSAtIHRleHQud2lkdGghIC8gMixcbiAgICAgICAgICAgIHk6IGNlbnRlclsxXSAtIHRleHQuaGVpZ2h0ISAvIDIsXG4gICAgICAgICAgICB3aWR0aDogdGV4dC53aWR0aCEsXG4gICAgICAgICAgICBoZWlnaHQ6IHRleHQuaGVpZ2h0IVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHJlY3RhbmdsZSwgUmVjdGFuZ2xlQ2xpZW50LnRvUmVjdGFuZ2xlQ2xpZW50KFtwb2ludCwgcG9pbnRdKSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNIaXRMaW5lVGV4dCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lLCBwb2ludDogUG9pbnQpID0+IHtcbiAgICByZXR1cm4gZ2V0SGl0TGluZVRleHRJbmRleChib2FyZCwgZWxlbWVudCwgcG9pbnQpICE9PSAtMTtcbn07XG5cbmV4cG9ydCBjb25zdCBkcmF3TGluZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lKSA9PiB7XG4gICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICBjb25zdCBzdHJva2VDb2xvciA9IGdldFN0cm9rZUNvbG9yQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IHN0cm9rZUxpbmVEYXNoID0gZ2V0TGluZURhc2hCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgc3Ryb2tlOiBzdHJva2VDb2xvciwgc3Ryb2tlV2lkdGgsIHN0cm9rZUxpbmVEYXNoIH07XG4gICAgY29uc3QgbGluZUcgPSBjcmVhdGVHKCk7XG4gICAgY29uc3QgcG9pbnRzID0gZ2V0TGluZVBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgY29uc3QgbGluZSA9IGRyYXdMaW5lYXJQYXRoKHBvaW50cywgb3B0aW9ucyk7XG4gICAgY29uc3QgaWQgPSBpZENyZWF0b3IoKTtcbiAgICBsaW5lLnNldEF0dHJpYnV0ZSgnbWFzaycsIGB1cmwoIyR7aWR9KWApO1xuICAgIGxpbmVHLmFwcGVuZENoaWxkKGxpbmUpO1xuICAgIGNvbnN0IHsgbWFzaywgbWFza1RhcmdldEZpbGxSZWN0IH0gPSBkcmF3TWFzayhib2FyZCwgZWxlbWVudCwgaWQpO1xuICAgIGxpbmVHLmFwcGVuZENoaWxkKG1hc2spO1xuICAgIGxpbmUuYXBwZW5kQ2hpbGQobWFza1RhcmdldEZpbGxSZWN0KTtcbiAgICBjb25zdCBhcnJvdyA9IGRyYXdMaW5lQXJyb3coZWxlbWVudCwgcG9pbnRzLCB7IHN0cm9rZTogc3Ryb2tlQ29sb3IsIHN0cm9rZVdpZHRoIH0pO1xuICAgIGFycm93ICYmIGxpbmVHLmFwcGVuZENoaWxkKGFycm93KTtcbiAgICByZXR1cm4gbGluZUc7XG59O1xuXG5mdW5jdGlvbiBkcmF3TWFzayhib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lLCBpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgbWFzayA9IGNyZWF0ZU1hc2soKTtcbiAgICBtYXNrLnNldEF0dHJpYnV0ZSgnaWQnLCBpZCk7XG4gICAgY29uc3QgcG9pbnRzID0gZ2V0TGluZVBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgbGV0IHJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5UG9pbnRzKHBvaW50cyk7XG4gICAgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldE91dGxpbmVSZWN0YW5nbGUocmVjdGFuZ2xlLCAtMzApO1xuICAgIGNvbnN0IG1hc2tGaWxsUmVjdCA9IGNyZWF0ZVJlY3QocmVjdGFuZ2xlLCB7XG4gICAgICAgIGZpbGw6ICd3aGl0ZSdcbiAgICB9KTtcbiAgICBtYXNrLmFwcGVuZENoaWxkKG1hc2tGaWxsUmVjdCk7XG5cbiAgICBjb25zdCB0ZXh0cyA9IGVsZW1lbnQudGV4dHM7XG4gICAgdGV4dHMuZm9yRWFjaCgodGV4dCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgdGV4dFJlY3RhbmdsZSA9IGdldExpbmVUZXh0UmVjdGFuZ2xlKGJvYXJkLCBlbGVtZW50LCBpbmRleCk7XG4gICAgICAgIGNvbnN0IHJlY3QgPSBjcmVhdGVSZWN0KHRleHRSZWN0YW5nbGUsIHtcbiAgICAgICAgICAgIGZpbGw6ICdibGFjaydcbiAgICAgICAgfSk7XG4gICAgICAgIG1hc2suYXBwZW5kQ2hpbGQocmVjdCk7XG4gICAgfSk7XG4gICAgLy/mkpHlvIAgbGluZVxuICAgIGNvbnN0IG1hc2tUYXJnZXRGaWxsUmVjdCA9IGNyZWF0ZVJlY3QocmVjdGFuZ2xlKTtcbiAgICBtYXNrVGFyZ2V0RmlsbFJlY3Quc2V0QXR0cmlidXRlKCdvcGFjaXR5JywgJzAnKTtcbiAgICByZXR1cm4geyBtYXNrLCBtYXNrVGFyZ2V0RmlsbFJlY3QgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldERpcmVjdGlvbkJ5Qm91bmRFbGVtZW50QW5kQ29ubmVjdGlvbiA9IChib2FyZDogUGxhaXRCb2FyZCwgYm91bmRFbGVtZW50OiBQbGFpdEdlb21ldHJ5LCBjb25uZWN0aW9uOiBQb2ludE9mUmVjdGFuZ2xlKSA9PiB7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMoYm91bmRFbGVtZW50LnBvaW50cyk7XG4gICAgY29uc3QgZW5naW5lID0gZ2V0RW5naW5lKGJvdW5kRWxlbWVudC5zaGFwZSk7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gZ2V0RGlyZWN0aW9uQnlQb2ludE9mUmVjdGFuZ2xlKGNvbm5lY3Rpb24pO1xuICAgIGlmIChkaXJlY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIGRpcmVjdGlvbjtcbiAgICB9XG4gICAgaWYgKGVuZ2luZS5nZXRFZGdlQnlDb25uZWN0aW9uUG9pbnQpIHtcbiAgICAgICAgY29uc3QgZWRnZSA9IGVuZ2luZS5nZXRFZGdlQnlDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBjb25uZWN0aW9uKTtcbiAgICAgICAgaWYgKGVkZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHZlY3RvciA9IFtlZGdlWzFdWzBdIC0gZWRnZVswXVswXSwgZWRnZVsxXVsxXSAtIGVkZ2VbMF1bMV1dIGFzIFZlY3RvcjtcbiAgICAgICAgICAgIGNvbnN0IHZlY3RvcjkwID0gcm90YXRlVmVjdG9yOTAodmVjdG9yKTtcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGdldERpcmVjdGlvbkJ5VmVjdG9yKHZlY3RvcjkwKTtcbiAgICAgICAgICAgIHJldHVybiBkaXJlY3Rpb247XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVuZ2luZS5nZXRUYW5nZW50VmVjdG9yQnlDb25uZWN0aW9uUG9pbnQpIHtcbiAgICAgICAgY29uc3QgdmVjdG9yID0gZW5naW5lLmdldFRhbmdlbnRWZWN0b3JCeUNvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGUsIGNvbm5lY3Rpb24pO1xuICAgICAgICBpZiAodmVjdG9yKSB7XG4gICAgICAgICAgICBjb25zdCB2ZWN0b3I5MCA9IHJvdGF0ZVZlY3RvcjkwKHZlY3Rvcik7XG4gICAgICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSBnZXREaXJlY3Rpb25CeVZlY3Rvcih2ZWN0b3I5MCk7XG4gICAgICAgICAgICByZXR1cm4gZGlyZWN0aW9uO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbm5lY3Rpb25Qb2ludCA9IChnZW9tZXRyeTogUGxhaXRHZW9tZXRyeSwgY29ubmVjdGlvbjogUG9pbnQsIGRpcmVjdGlvbj86IERpcmVjdGlvbiwgZGVsdGE/OiBudW1iZXIpOiBQb2ludCA9PiB7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZ2VvbWV0cnkucG9pbnRzKTtcbiAgICBpZiAoZGlyZWN0aW9uICYmIGRlbHRhKSB7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbkZhY3RvciA9IGdldERpcmVjdGlvbkZhY3RvcihkaXJlY3Rpb24pO1xuICAgICAgICBjb25zdCBwb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBjb25uZWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSArIGRpcmVjdGlvbkZhY3Rvci54ICogZGVsdGEsIHBvaW50WzFdICsgZGlyZWN0aW9uRmFjdG9yLnkgKiBkZWx0YV07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBjb25uZWN0aW9uKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtUG9pbnRUb0Nvbm5lY3Rpb24gPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50OiBQb2ludCwgaGl0RWxlbWVudDogUGxhaXRHZW9tZXRyeSk6IFBvaW50ID0+IHtcbiAgICBsZXQgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMoaGl0RWxlbWVudC5wb2ludHMpO1xuICAgIHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKHJlY3RhbmdsZSwgQUNUSVZFX1NUUk9LRV9XSURUSCk7XG4gICAgbGV0IG5lYXJlc3RQb2ludCA9IGdldE5lYXJlc3RQb2ludChoaXRFbGVtZW50LCBwb2ludCwgQUNUSVZFX1NUUk9LRV9XSURUSCk7XG4gICAgY29uc3QgaGl0Q29ubmVjdG9yID0gZ2V0SGl0Q29ubmVjdG9yUG9pbnQobmVhcmVzdFBvaW50LCBoaXRFbGVtZW50LCByZWN0YW5nbGUpO1xuICAgIG5lYXJlc3RQb2ludCA9IGhpdENvbm5lY3RvciA/IGhpdENvbm5lY3RvciA6IG5lYXJlc3RQb2ludDtcbiAgICByZXR1cm4gWyhuZWFyZXN0UG9pbnRbMF0gLSByZWN0YW5nbGUueCkgLyByZWN0YW5nbGUud2lkdGgsIChuZWFyZXN0UG9pbnRbMV0gLSByZWN0YW5nbGUueSkgLyByZWN0YW5nbGUuaGVpZ2h0XTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIaXRDb25uZWN0b3JQb2ludCA9IChtb3ZpbmdQb2ludDogUG9pbnQsIGhpdEVsZW1lbnQ6IFBsYWl0R2VvbWV0cnksIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSA9PiB7XG4gICAgY29uc3QgY29ubmVjdG9yID0gZ2V0RW5naW5lKGhpdEVsZW1lbnQuc2hhcGUpLmdldENvbm5lY3RvclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIGNvbnN0IHBvaW50cyA9IGdldFBvaW50c0J5Q2VudGVyUG9pbnQobW92aW5nUG9pbnQsIDUsIDUpO1xuICAgIGNvbnN0IHBvaW50UmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKTtcbiAgICByZXR1cm4gY29ubmVjdG9yLmZpbmQocG9pbnQgPT4ge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHBvaW50UmVjdGFuZ2xlLCBSZWN0YW5nbGVDbGllbnQudG9SZWN0YW5nbGVDbGllbnQoW3BvaW50LCBwb2ludF0pKTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMaW5lVGV4dFJlY3RhbmdsZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lLCBpbmRleDogbnVtYmVyKTogUmVjdGFuZ2xlQ2xpZW50ID0+IHtcbiAgICBjb25zdCB0ZXh0ID0gZWxlbWVudC50ZXh0c1tpbmRleF07XG4gICAgY29uc3QgZWxib3dQb2ludHMgPSBnZXRMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCBwb2ludCA9IGdldFBvaW50T25Qb2x5bGluZShlbGJvd1BvaW50cywgdGV4dC5wb3NpdGlvbik7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogcG9pbnRbMF0gLSB0ZXh0LndpZHRoISAvIDIsXG4gICAgICAgIHk6IHBvaW50WzFdIC0gdGV4dC5oZWlnaHQhIC8gMixcbiAgICAgICAgd2lkdGg6IHRleHQud2lkdGghLFxuICAgICAgICBoZWlnaHQ6IHRleHQuaGVpZ2h0IVxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Qm9hcmRMaW5lcyA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIHJldHVybiBmaW5kRWxlbWVudHMoYm9hcmQsIHtcbiAgICAgICAgbWF0Y2g6IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNMaW5lKGVsZW1lbnQpLFxuICAgICAgICByZWN1cnNpb246IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNEcmF3RWxlbWVudChlbGVtZW50KVxuICAgIH0pIGFzIFBsYWl0TGluZVtdO1xufTtcbiJdfQ==
@@ -1,14 +1,13 @@
1
1
  import { RectangleClient } from '@plait/core';
2
2
  import { RESIZE_HANDLE_DIAMETER } from '@plait/common';
3
- import { getSourcePoint, getTargetPoint } from '../line';
3
+ import { getLineHandlePoints } from '../line';
4
4
  export var LineResizeHandle;
5
5
  (function (LineResizeHandle) {
6
6
  LineResizeHandle["source"] = "source";
7
7
  LineResizeHandle["target"] = "target";
8
8
  })(LineResizeHandle || (LineResizeHandle = {}));
9
9
  export const getHitLineResizeHandleRef = (board, element, point) => {
10
- const sourcePoint = getSourcePoint(board, element);
11
- const targetPoint = getTargetPoint(board, element);
10
+ const [sourcePoint, targetPoint] = getLineHandlePoints(board, element);
12
11
  const sourceRectangle = {
13
12
  x: sourcePoint[0] - RESIZE_HANDLE_DIAMETER / 2,
14
13
  y: sourcePoint[1] - RESIZE_HANDLE_DIAMETER / 2,
@@ -31,4 +30,4 @@ export const getHitLineResizeHandleRef = (board, element, point) => {
31
30
  }
32
31
  return undefined;
33
32
  };
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3V0aWxzL3Bvc2l0aW9uL2xpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFakUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXpELE1BQU0sQ0FBTixJQUFZLGdCQUdYO0FBSEQsV0FBWSxnQkFBZ0I7SUFDeEIscUNBQW1CLENBQUE7SUFDbkIscUNBQW1CLENBQUE7QUFDdkIsQ0FBQyxFQUhXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFHM0I7QUFFRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBa0IsRUFBRSxLQUFZLEVBQUUsRUFBRTtJQUM3RixNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkQsTUFBTSxlQUFlLEdBQW9CO1FBQ3JDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsc0JBQXNCLEdBQUcsQ0FBQztRQUM5QyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLHNCQUFzQixHQUFHLENBQUM7UUFDOUMsS0FBSyxFQUFFLHNCQUFzQjtRQUM3QixNQUFNLEVBQUUsc0JBQXNCO0tBQ2pDLENBQUM7SUFDRixNQUFNLGVBQWUsR0FBb0I7UUFDckMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxzQkFBc0IsR0FBRyxDQUFDO1FBQzlDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsc0JBQXNCLEdBQUcsQ0FBQztRQUM5QyxLQUFLLEVBQUUsc0JBQXNCO1FBQzdCLE1BQU0sRUFBRSxzQkFBc0I7S0FDakMsQ0FBQztJQUNGLE1BQU0sb0JBQW9CLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN2SCxNQUFNLG9CQUFvQixHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDdkgsSUFBSSxvQkFBb0IsRUFBRTtRQUN0QixPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUM7S0FDMUU7SUFDRCxJQUFJLG9CQUFvQixFQUFFO1FBQ3RCLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztLQUMxRTtJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ3JCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdExpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFJFU0laRV9IQU5ETEVfRElBTUVURVIgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGdldFNvdXJjZVBvaW50LCBnZXRUYXJnZXRQb2ludCB9IGZyb20gJy4uL2xpbmUnO1xuXG5leHBvcnQgZW51bSBMaW5lUmVzaXplSGFuZGxlIHtcbiAgICAnc291cmNlJyA9ICdzb3VyY2UnLFxuICAgICd0YXJnZXQnID0gJ3RhcmdldCdcbn1cblxuZXhwb3J0IGNvbnN0IGdldEhpdExpbmVSZXNpemVIYW5kbGVSZWYgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSwgcG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgY29uc3Qgc291cmNlUG9pbnQgPSBnZXRTb3VyY2VQb2ludChib2FyZCwgZWxlbWVudCk7XG4gICAgY29uc3QgdGFyZ2V0UG9pbnQgPSBnZXRUYXJnZXRQb2ludChib2FyZCwgZWxlbWVudCk7XG4gICAgY29uc3Qgc291cmNlUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQgPSB7XG4gICAgICAgIHg6IHNvdXJjZVBvaW50WzBdIC0gUkVTSVpFX0hBTkRMRV9ESUFNRVRFUiAvIDIsXG4gICAgICAgIHk6IHNvdXJjZVBvaW50WzFdIC0gUkVTSVpFX0hBTkRMRV9ESUFNRVRFUiAvIDIsXG4gICAgICAgIHdpZHRoOiBSRVNJWkVfSEFORExFX0RJQU1FVEVSLFxuICAgICAgICBoZWlnaHQ6IFJFU0laRV9IQU5ETEVfRElBTUVURVJcbiAgICB9O1xuICAgIGNvbnN0IHRhcmdldFJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50ID0ge1xuICAgICAgICB4OiB0YXJnZXRQb2ludFswXSAtIFJFU0laRV9IQU5ETEVfRElBTUVURVIgLyAyLFxuICAgICAgICB5OiB0YXJnZXRQb2ludFsxXSAtIFJFU0laRV9IQU5ETEVfRElBTUVURVIgLyAyLFxuICAgICAgICB3aWR0aDogUkVTSVpFX0hBTkRMRV9ESUFNRVRFUixcbiAgICAgICAgaGVpZ2h0OiBSRVNJWkVfSEFORExFX0RJQU1FVEVSXG4gICAgfTtcbiAgICBjb25zdCBpc0hpdFNvdXJjZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pc0hpdChSZWN0YW5nbGVDbGllbnQudG9SZWN0YW5nbGVDbGllbnQoW3BvaW50LCBwb2ludF0pLCBzb3VyY2VSZWN0YW5nbGUpO1xuICAgIGNvbnN0IGlzSGl0VGFyZ2V0UmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KFJlY3RhbmdsZUNsaWVudC50b1JlY3RhbmdsZUNsaWVudChbcG9pbnQsIHBvaW50XSksIHRhcmdldFJlY3RhbmdsZSk7XG4gICAgaWYgKGlzSGl0U291cmNlUmVjdGFuZ2xlKSB7XG4gICAgICAgIHJldHVybiB7IHJlY3RhbmdsZTogc291cmNlUmVjdGFuZ2xlLCBoYW5kbGU6IExpbmVSZXNpemVIYW5kbGUuc291cmNlIH07XG4gICAgfVxuICAgIGlmIChpc0hpdFRhcmdldFJlY3RhbmdsZSkge1xuICAgICAgICByZXR1cm4geyByZWN0YW5nbGU6IHRhcmdldFJlY3RhbmdsZSwgaGFuZGxlOiBMaW5lUmVzaXplSGFuZGxlLnRhcmdldCB9O1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbiJdfQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3V0aWxzL3Bvc2l0aW9uL2xpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFakUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUU5QyxNQUFNLENBQU4sSUFBWSxnQkFHWDtBQUhELFdBQVksZ0JBQWdCO0lBQ3hCLHFDQUFtQixDQUFBO0lBQ25CLHFDQUFtQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBRzNCO0FBRUQsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQWtCLEVBQUUsS0FBWSxFQUFFLEVBQUU7SUFDN0YsTUFBTSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkUsTUFBTSxlQUFlLEdBQW9CO1FBQ3JDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsc0JBQXNCLEdBQUcsQ0FBQztRQUM5QyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLHNCQUFzQixHQUFHLENBQUM7UUFDOUMsS0FBSyxFQUFFLHNCQUFzQjtRQUM3QixNQUFNLEVBQUUsc0JBQXNCO0tBQ2pDLENBQUM7SUFDRixNQUFNLGVBQWUsR0FBb0I7UUFDckMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxzQkFBc0IsR0FBRyxDQUFDO1FBQzlDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsc0JBQXNCLEdBQUcsQ0FBQztRQUM5QyxLQUFLLEVBQUUsc0JBQXNCO1FBQzdCLE1BQU0sRUFBRSxzQkFBc0I7S0FDakMsQ0FBQztJQUNGLE1BQU0sb0JBQW9CLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN2SCxNQUFNLG9CQUFvQixHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDdkgsSUFBSSxvQkFBb0IsRUFBRTtRQUN0QixPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUM7S0FDMUU7SUFDRCxJQUFJLG9CQUFvQixFQUFFO1FBQ3RCLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztLQUMxRTtJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ3JCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdExpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFJFU0laRV9IQU5ETEVfRElBTUVURVIgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGdldExpbmVIYW5kbGVQb2ludHMgfSBmcm9tICcuLi9saW5lJztcblxuZXhwb3J0IGVudW0gTGluZVJlc2l6ZUhhbmRsZSB7XG4gICAgJ3NvdXJjZScgPSAnc291cmNlJyxcbiAgICAndGFyZ2V0JyA9ICd0YXJnZXQnXG59XG5cbmV4cG9ydCBjb25zdCBnZXRIaXRMaW5lUmVzaXplSGFuZGxlUmVmID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUsIHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IFtzb3VyY2VQb2ludCwgdGFyZ2V0UG9pbnRdID0gZ2V0TGluZUhhbmRsZVBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgY29uc3Qgc291cmNlUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQgPSB7XG4gICAgICAgIHg6IHNvdXJjZVBvaW50WzBdIC0gUkVTSVpFX0hBTkRMRV9ESUFNRVRFUiAvIDIsXG4gICAgICAgIHk6IHNvdXJjZVBvaW50WzFdIC0gUkVTSVpFX0hBTkRMRV9ESUFNRVRFUiAvIDIsXG4gICAgICAgIHdpZHRoOiBSRVNJWkVfSEFORExFX0RJQU1FVEVSLFxuICAgICAgICBoZWlnaHQ6IFJFU0laRV9IQU5ETEVfRElBTUVURVJcbiAgICB9O1xuICAgIGNvbnN0IHRhcmdldFJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50ID0ge1xuICAgICAgICB4OiB0YXJnZXRQb2ludFswXSAtIFJFU0laRV9IQU5ETEVfRElBTUVURVIgLyAyLFxuICAgICAgICB5OiB0YXJnZXRQb2ludFsxXSAtIFJFU0laRV9IQU5ETEVfRElBTUVURVIgLyAyLFxuICAgICAgICB3aWR0aDogUkVTSVpFX0hBTkRMRV9ESUFNRVRFUixcbiAgICAgICAgaGVpZ2h0OiBSRVNJWkVfSEFORExFX0RJQU1FVEVSXG4gICAgfTtcbiAgICBjb25zdCBpc0hpdFNvdXJjZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pc0hpdChSZWN0YW5nbGVDbGllbnQudG9SZWN0YW5nbGVDbGllbnQoW3BvaW50LCBwb2ludF0pLCBzb3VyY2VSZWN0YW5nbGUpO1xuICAgIGNvbnN0IGlzSGl0VGFyZ2V0UmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KFJlY3RhbmdsZUNsaWVudC50b1JlY3RhbmdsZUNsaWVudChbcG9pbnQsIHBvaW50XSksIHRhcmdldFJlY3RhbmdsZSk7XG4gICAgaWYgKGlzSGl0U291cmNlUmVjdGFuZ2xlKSB7XG4gICAgICAgIHJldHVybiB7IHJlY3RhbmdsZTogc291cmNlUmVjdGFuZ2xlLCBoYW5kbGU6IExpbmVSZXNpemVIYW5kbGUuc291cmNlIH07XG4gICAgfVxuICAgIGlmIChpc0hpdFRhcmdldFJlY3RhbmdsZSkge1xuICAgICAgICByZXR1cm4geyByZWN0YW5nbGU6IHRhcmdldFJlY3RhbmdsZSwgaGFuZGxlOiBMaW5lUmVzaXplSGFuZGxlLnRhcmdldCB9O1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbiJdfQ==