@plait/draw 0.51.2 → 0.51.3

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.
@@ -1,6 +1,6 @@
1
- import { RectangleClient, isPolylineHitRectangle, distanceBetweenPointAndSegments, distanceBetweenPointAndPoint, HIT_DISTANCE_BUFFER } from '@plait/core';
1
+ import { RectangleClient, isPolylineHitRectangle, distanceBetweenPointAndSegments, distanceBetweenPointAndPoint, HIT_DISTANCE_BUFFER, rotate } from '@plait/core';
2
2
  import { PlaitDrawElement } from '../interfaces';
3
- import { TRANSPARENT } from '@plait/common';
3
+ import { TRANSPARENT, rotatePoints } from '@plait/common';
4
4
  import { getTextRectangle } from './geometry';
5
5
  import { getLinePoints } from './line/line-basic';
6
6
  import { getFillByElement } from './style/stroke';
@@ -31,15 +31,18 @@ export const isRectangleHitDrawElement = (board, element, selection) => {
31
31
  const rangeRectangle = RectangleClient.getRectangleByPoints([selection.anchor, selection.focus]);
32
32
  if (PlaitDrawElement.isGeometry(element)) {
33
33
  const client = RectangleClient.getRectangleByPoints(element.points);
34
+ const centerPoint = RectangleClient.getCenterPoint(client);
35
+ let rotatedCornerPoints = rotatePoints(RectangleClient.getCornerPoints(client), centerPoint, element.angle);
34
36
  if (isTextExceedingBounds(element)) {
35
37
  const textClient = getTextRectangle(element);
36
- return RectangleClient.isHit(rangeRectangle, client) || RectangleClient.isHit(rangeRectangle, textClient);
38
+ rotatedCornerPoints = rotatePoints(RectangleClient.getCornerPoints(textClient), centerPoint, element.angle);
37
39
  }
38
- return RectangleClient.isHit(rangeRectangle, client);
40
+ return isPolylineHitRectangle(rotatedCornerPoints, rangeRectangle);
39
41
  }
40
42
  if (PlaitDrawElement.isImage(element)) {
41
43
  const client = RectangleClient.getRectangleByPoints(element.points);
42
- return RectangleClient.isHit(rangeRectangle, client);
44
+ const rotatedCornerPoints = rotatePoints(RectangleClient.getCornerPoints(client), RectangleClient.getCenterPoint(client), element.angle);
45
+ return isPolylineHitRectangle(rotatedCornerPoints, client);
43
46
  }
44
47
  if (PlaitDrawElement.isLine(element)) {
45
48
  const points = getLinePoints(board, element);
@@ -48,10 +51,14 @@ export const isRectangleHitDrawElement = (board, element, selection) => {
48
51
  return null;
49
52
  };
50
53
  export const isHitDrawElement = (board, element, point) => {
54
+ const rectangle = board.getRectangle(element);
55
+ const centerPoint = RectangleClient.getCenterPoint(rectangle);
56
+ if (element.angle) {
57
+ point = rotate(point[0], point[1], centerPoint[0], centerPoint[1], -element.angle);
58
+ }
51
59
  if (PlaitDrawElement.isGeometry(element)) {
52
60
  const fill = getFillByElement(board, element);
53
61
  const engine = getEngine(getShape(element));
54
- const rectangle = board.getRectangle(element);
55
62
  const nearestPoint = engine.getNearestPoint(rectangle, point);
56
63
  const distance = distanceBetweenPointAndPoint(nearestPoint[0], nearestPoint[1], point[0], point[1]);
57
64
  const isHitEdge = distance <= HIT_DISTANCE_BUFFER;
@@ -89,9 +96,13 @@ export const isHitDrawElement = (board, element, point) => {
89
96
  return null;
90
97
  };
91
98
  export const isHitElementInside = (board, element, point) => {
99
+ const rectangle = board.getRectangle(element);
100
+ const centerPoint = RectangleClient.getCenterPoint(rectangle);
101
+ if (element.angle) {
102
+ point = rotate(point[0], point[1], centerPoint[0], centerPoint[1], -element.angle);
103
+ }
92
104
  if (PlaitDrawElement.isGeometry(element)) {
93
105
  const engine = getEngine(getShape(element));
94
- const rectangle = board.getRectangle(element);
95
106
  const isHitInside = engine.isInsidePoint(rectangle, point);
96
107
  if (isHitInside) {
97
108
  return isHitInside;
@@ -112,4 +123,4 @@ export const isHitElementInside = (board, element, point) => {
112
123
  }
113
124
  return null;
114
125
  };
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdXRpbHMvaGl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxlQUFlLEVBR2Ysc0JBQXNCLEVBRXRCLCtCQUErQixFQUMvQiw0QkFBNEIsRUFDNUIsbUJBQW1CLEVBQ3RCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0RCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFFBQXVCLEVBQUUsRUFBRTtJQUM3RCxNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JFLElBQUksUUFBUSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFO1FBQ3JDLE9BQU8sSUFBSSxDQUFDO0tBQ2Y7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQWtCLEVBQUUsS0FB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LGtCQUFrQixDQUFDO2FBQzdCO1NBQ0o7S0FDSjtJQUNELElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ25DLE9BQU8seUJBQXlCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDckY7SUFFRCxJQUFJLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQzNDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIFNlbGVjdGlvbixcbiAgICBQbGFpdEJvYXJkLFxuICAgIGlzUG9seWxpbmVIaXRSZWN0YW5nbGUsXG4gICAgUG9pbnQsXG4gICAgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyxcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50LFxuICAgIEhJVF9ESVNUQU5DRV9CVUZGRVJcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXREcmF3RWxlbWVudCwgUGxhaXRHZW9tZXRyeSwgUGxhaXRMaW5lIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUUkFOU1BBUkVOVCB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgZ2V0VGV4dFJlY3RhbmdsZSB9IGZyb20gJy4vZ2VvbWV0cnknO1xuaW1wb3J0IHsgZ2V0TGluZVBvaW50cyB9IGZyb20gJy4vbGluZS9saW5lLWJhc2ljJztcbmltcG9ydCB7IGdldEZpbGxCeUVsZW1lbnQgfSBmcm9tICcuL3N0eWxlL3N0cm9rZSc7XG5pbXBvcnQgeyBEZWZhdWx0R2VvbWV0cnlTdHlsZSB9IGZyb20gJy4uL2NvbnN0YW50cy9nZW9tZXRyeSc7XG5pbXBvcnQgeyBnZXRFbmdpbmUgfSBmcm9tICcuLi9lbmdpbmVzJztcbmltcG9ydCB7IGdldFNoYXBlIH0gZnJvbSAnLi9zaGFwZSc7XG5pbXBvcnQgeyBnZXRIaXRMaW5lVGV4dEluZGV4IH0gZnJvbSAnLi9wb3NpdGlvbi9saW5lJztcblxuZXhwb3J0IGNvbnN0IGlzVGV4dEV4Y2VlZGluZ0JvdW5kcyA9IChnZW9tZXRyeTogUGxhaXRHZW9tZXRyeSkgPT4ge1xuICAgIGNvbnN0IGNsaWVudCA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhnZW9tZXRyeS5wb2ludHMpO1xuICAgIGlmIChnZW9tZXRyeS50ZXh0SGVpZ2h0ID4gY2xpZW50LmhlaWdodCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzSGl0TGluZVRleHQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSwgcG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgcmV0dXJuIGdldEhpdExpbmVUZXh0SW5kZXgoYm9hcmQsIGVsZW1lbnQsIHBvaW50KSAhPT0gLTE7XG59O1xuXG5leHBvcnQgY29uc3QgaXNIaXRQb2x5TGluZSA9IChwYXRoUG9pbnRzOiBQb2ludFtdLCBwb2ludDogUG9pbnQpID0+IHtcbiAgICBjb25zdCBkaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kU2VnbWVudHMocGF0aFBvaW50cywgcG9pbnQpO1xuICAgIHJldHVybiBkaXN0YW5jZSA8PSBISVRfRElTVEFOQ0VfQlVGRkVSO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzSGl0TGluZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lLCBwb2ludDogUG9pbnQpID0+IHtcbiAgICBjb25zdCBwb2ludHMgPSBnZXRMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCBpc0hpdFRleHQgPSBpc0hpdExpbmVUZXh0KGJvYXJkLCBlbGVtZW50LCBwb2ludCk7XG4gICAgcmV0dXJuIGlzSGl0VGV4dCB8fCBpc0hpdFBvbHlMaW5lKHBvaW50cywgcG9pbnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUmVjdGFuZ2xlSGl0RHJhd0VsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCwgc2VsZWN0aW9uOiBTZWxlY3Rpb24pID0+IHtcbiAgICBjb25zdCByYW5nZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbc2VsZWN0aW9uLmFuY2hvciwgc2VsZWN0aW9uLmZvY3VzXSk7XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeShlbGVtZW50KSkge1xuICAgICAgICBjb25zdCBjbGllbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICBpZiAoaXNUZXh0RXhjZWVkaW5nQm91bmRzKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCB0ZXh0Q2xpZW50ID0gZ2V0VGV4dFJlY3RhbmdsZShlbGVtZW50KTtcbiAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuaXNIaXQocmFuZ2VSZWN0YW5nbGUsIGNsaWVudCkgfHwgUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHJhbmdlUmVjdGFuZ2xlLCB0ZXh0Q2xpZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHJhbmdlUmVjdGFuZ2xlLCBjbGllbnQpO1xuICAgIH1cbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0ltYWdlKGVsZW1lbnQpKSB7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyk7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuaXNIaXQocmFuZ2VSZWN0YW5nbGUsIGNsaWVudCk7XG4gICAgfVxuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzTGluZShlbGVtZW50KSkge1xuICAgICAgICBjb25zdCBwb2ludHMgPSBnZXRMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgcmV0dXJuIGlzUG9seWxpbmVIaXRSZWN0YW5nbGUocG9pbnRzLCByYW5nZVJlY3RhbmdsZSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzSGl0RHJhd0VsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCwgcG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeShlbGVtZW50KSkge1xuICAgICAgICBjb25zdCBmaWxsID0gZ2V0RmlsbEJ5RWxlbWVudChib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGVuZ2luZSA9IGdldEVuZ2luZShnZXRTaGFwZShlbGVtZW50KSk7XG4gICAgICAgIGNvbnN0IHJlY3RhbmdsZSA9IGJvYXJkLmdldFJlY3RhbmdsZShlbGVtZW50KTtcbiAgICAgICAgY29uc3QgbmVhcmVzdFBvaW50ID0gZW5naW5lLmdldE5lYXJlc3RQb2ludChyZWN0YW5nbGUhLCBwb2ludCk7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludChuZWFyZXN0UG9pbnRbMF0sIG5lYXJlc3RQb2ludFsxXSwgcG9pbnRbMF0sIHBvaW50WzFdKTtcbiAgICAgICAgY29uc3QgaXNIaXRFZGdlID0gZGlzdGFuY2UgPD0gSElUX0RJU1RBTkNFX0JVRkZFUjtcbiAgICAgICAgaWYgKGlzSGl0RWRnZSkge1xuICAgICAgICAgICAgcmV0dXJuIGlzSGl0RWRnZTtcbiAgICAgICAgfVxuICAgICAgICAvLyB3aGVuIHNoYXBlIGVxdWFscyB0ZXh0LCBmaWxsIGlzIG5vdCBhbGxvd2VkXG4gICAgICAgIGlmIChmaWxsICE9PSBEZWZhdWx0R2VvbWV0cnlTdHlsZS5maWxsICYmIGZpbGwgIT09IFRSQU5TUEFSRU5UICYmICFQbGFpdERyYXdFbGVtZW50LmlzVGV4dChlbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3QgaXNIaXRJbnNpZGUgPSBlbmdpbmUuaXNJbnNpZGVQb2ludChyZWN0YW5nbGUhLCBwb2ludCk7XG4gICAgICAgICAgICBpZiAoaXNIaXRJbnNpZGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNIaXRJbnNpZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBpZiBzaGFwZSBlcXVhbHMgdGV4dCwgb25seSBjaGVjayB0ZXh0IHJlY3RhbmdsZVxuICAgICAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNUZXh0KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGV4dENsaWVudCA9IGdldFRleHRSZWN0YW5nbGUoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgbGV0IGlzSGl0VGV4dCA9IFJlY3RhbmdsZUNsaWVudC5pc1BvaW50SW5SZWN0YW5nbGUodGV4dENsaWVudCwgcG9pbnQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0hpdFRleHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGNoZWNrIHRleHRSZWN0YW5nbGUgb2YgZWxlbWVudFxuICAgICAgICAgICAgY29uc3QgdGV4dENsaWVudCA9IGVuZ2luZS5nZXRUZXh0UmVjdGFuZ2xlID8gZW5naW5lLmdldFRleHRSZWN0YW5nbGUoZWxlbWVudCkgOiBnZXRUZXh0UmVjdGFuZ2xlKGVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgaXNIaXRUZXh0UmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZSh0ZXh0Q2xpZW50LCBwb2ludCk7XG4gICAgICAgICAgICBpZiAoaXNIaXRUZXh0UmVjdGFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzSGl0VGV4dFJlY3RhbmdsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0ltYWdlKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBpc1JlY3RhbmdsZUhpdERyYXdFbGVtZW50KGJvYXJkLCBlbGVtZW50LCB7IGFuY2hvcjogcG9pbnQsIGZvY3VzOiBwb2ludCB9KTtcbiAgICB9XG5cbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0xpbmUoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIGlzSGl0TGluZShib2FyZCwgZWxlbWVudCwgcG9pbnQpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0hpdEVsZW1lbnRJbnNpZGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCwgcG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeShlbGVtZW50KSkge1xuICAgICAgICBjb25zdCBlbmdpbmUgPSBnZXRFbmdpbmUoZ2V0U2hhcGUoZWxlbWVudCkpO1xuICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBib2FyZC5nZXRSZWN0YW5nbGUoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGlzSGl0SW5zaWRlID0gZW5naW5lLmlzSW5zaWRlUG9pbnQocmVjdGFuZ2xlISwgcG9pbnQpO1xuICAgICAgICBpZiAoaXNIaXRJbnNpZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBpc0hpdEluc2lkZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbmdpbmUuZ2V0VGV4dFJlY3RhbmdsZSkge1xuICAgICAgICAgICAgY29uc3QgdGV4dENsaWVudCA9IGVuZ2luZS5nZXRUZXh0UmVjdGFuZ2xlKGVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgaXNIaXRUZXh0UmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZSh0ZXh0Q2xpZW50LCBwb2ludCk7XG4gICAgICAgICAgICBpZiAoaXNIaXRUZXh0UmVjdGFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzSGl0VGV4dFJlY3RhbmdsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0ltYWdlKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBpc1JlY3RhbmdsZUhpdERyYXdFbGVtZW50KGJvYXJkLCBlbGVtZW50LCB7IGFuY2hvcjogcG9pbnQsIGZvY3VzOiBwb2ludCB9KTtcbiAgICB9XG5cbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0xpbmUoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIGlzSGl0TGluZShib2FyZCwgZWxlbWVudCwgcG9pbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xufTtcbiJdfQ==
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdXRpbHMvaGl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxlQUFlLEVBR2Ysc0JBQXNCLEVBRXRCLCtCQUErQixFQUMvQiw0QkFBNEIsRUFDNUIsbUJBQW1CLEVBQ25CLE1BQU0sRUFDVCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsZ0JBQWdCLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsUUFBdUIsRUFBRSxFQUFFO0lBQzdELE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckUsSUFBSSxRQUFRLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDckMsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQWlC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TyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztLQUNyRjtJQUVELElBQUksZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ2xDLE9BQU8sU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDM0M7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFBsYWl0RWxlbWVudCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgU2VsZWN0aW9uLFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgaXNQb2x5bGluZUhpdFJlY3RhbmdsZSxcbiAgICBQb2ludCxcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFNlZ21lbnRzLFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQsXG4gICAgSElUX0RJU1RBTkNFX0JVRkZFUixcbiAgICByb3RhdGVcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXREcmF3RWxlbWVudCwgUGxhaXRHZW9tZXRyeSwgUGxhaXRMaW5lIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUUkFOU1BBUkVOVCwgcm90YXRlUG9pbnRzIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRUZXh0UmVjdGFuZ2xlIH0gZnJvbSAnLi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBnZXRMaW5lUG9pbnRzIH0gZnJvbSAnLi9saW5lL2xpbmUtYmFzaWMnO1xuaW1wb3J0IHsgZ2V0RmlsbEJ5RWxlbWVudCB9IGZyb20gJy4vc3R5bGUvc3Ryb2tlJztcbmltcG9ydCB7IERlZmF1bHRHZW9tZXRyeVN0eWxlIH0gZnJvbSAnLi4vY29uc3RhbnRzL2dlb21ldHJ5JztcbmltcG9ydCB7IGdldEVuZ2luZSB9IGZyb20gJy4uL2VuZ2luZXMnO1xuaW1wb3J0IHsgZ2V0U2hhcGUgfSBmcm9tICcuL3NoYXBlJztcbmltcG9ydCB7IGdldEhpdExpbmVUZXh0SW5kZXggfSBmcm9tICcuL3Bvc2l0aW9uL2xpbmUnO1xuXG5leHBvcnQgY29uc3QgaXNUZXh0RXhjZWVkaW5nQm91bmRzID0gKGdlb21ldHJ5OiBQbGFpdEdlb21ldHJ5KSA9PiB7XG4gICAgY29uc3QgY2xpZW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGdlb21ldHJ5LnBvaW50cyk7XG4gICAgaWYgKGdlb21ldHJ5LnRleHRIZWlnaHQgPiBjbGllbnQuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgaXNIaXRMaW5lVGV4dCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lLCBwb2ludDogUG9pbnQpID0+IHtcbiAgICByZXR1cm4gZ2V0SGl0TGluZVRleHRJbmRleChib2FyZCwgZWxlbWVudCwgcG9pbnQpICE9PSAtMTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0hpdFBvbHlMaW5lID0gKHBhdGhQb2ludHM6IFBvaW50W10sIHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyhwYXRoUG9pbnRzLCBwb2ludCk7XG4gICAgcmV0dXJuIGRpc3RhbmNlIDw9IEhJVF9ESVNUQU5DRV9CVUZGRVI7XG59O1xuXG5leHBvcnQgY29uc3QgaXNIaXRMaW5lID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUsIHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IHBvaW50cyA9IGdldExpbmVQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IGlzSGl0VGV4dCA9IGlzSGl0TGluZVRleHQoYm9hcmQsIGVsZW1lbnQsIHBvaW50KTtcbiAgICByZXR1cm4gaXNIaXRUZXh0IHx8IGlzSGl0UG9seUxpbmUocG9pbnRzLCBwb2ludCk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNSZWN0YW5nbGVIaXREcmF3RWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRFbGVtZW50LCBzZWxlY3Rpb246IFNlbGVjdGlvbikgPT4ge1xuICAgIGNvbnN0IHJhbmdlUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKFtzZWxlY3Rpb24uYW5jaG9yLCBzZWxlY3Rpb24uZm9jdXNdKTtcbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KGVsZW1lbnQpKSB7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyk7XG4gICAgICAgIGNvbnN0IGNlbnRlclBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KGNsaWVudCk7XG4gICAgICAgIGxldCByb3RhdGVkQ29ybmVyUG9pbnRzID0gcm90YXRlUG9pbnRzKFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMoY2xpZW50KSwgY2VudGVyUG9pbnQsIGVsZW1lbnQuYW5nbGUpO1xuICAgICAgICBpZiAoaXNUZXh0RXhjZWVkaW5nQm91bmRzKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCB0ZXh0Q2xpZW50ID0gZ2V0VGV4dFJlY3RhbmdsZShlbGVtZW50KTtcbiAgICAgICAgICAgIHJvdGF0ZWRDb3JuZXJQb2ludHMgPSByb3RhdGVQb2ludHMoUmVjdGFuZ2xlQ2xpZW50LmdldENvcm5lclBvaW50cyh0ZXh0Q2xpZW50KSwgY2VudGVyUG9pbnQsIGVsZW1lbnQuYW5nbGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc1BvbHlsaW5lSGl0UmVjdGFuZ2xlKHJvdGF0ZWRDb3JuZXJQb2ludHMsIHJhbmdlUmVjdGFuZ2xlKTtcbiAgICB9XG5cbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0ltYWdlKGVsZW1lbnQpKSB7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyk7XG4gICAgICAgIGNvbnN0IHJvdGF0ZWRDb3JuZXJQb2ludHMgPSByb3RhdGVQb2ludHMoXG4gICAgICAgICAgICBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKGNsaWVudCksXG4gICAgICAgICAgICBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQoY2xpZW50KSxcbiAgICAgICAgICAgIGVsZW1lbnQuYW5nbGVcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGlzUG9seWxpbmVIaXRSZWN0YW5nbGUocm90YXRlZENvcm5lclBvaW50cywgY2xpZW50KTtcbiAgICB9XG5cbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0xpbmUoZWxlbWVudCkpIHtcbiAgICAgICAgY29uc3QgcG9pbnRzID0gZ2V0TGluZVBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIHJldHVybiBpc1BvbHlsaW5lSGl0UmVjdGFuZ2xlKHBvaW50cywgcmFuZ2VSZWN0YW5nbGUpO1xuICAgIH1cbiAgIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzSGl0RHJhd0VsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCwgcG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gYm9hcmQuZ2V0UmVjdGFuZ2xlKGVsZW1lbnQpO1xuICAgIGNvbnN0IGNlbnRlclBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KHJlY3RhbmdsZSEpO1xuICAgIGlmIChlbGVtZW50LmFuZ2xlKSB7XG4gICAgICAgIHBvaW50ID0gcm90YXRlKHBvaW50WzBdLCBwb2ludFsxXSwgY2VudGVyUG9pbnRbMF0sIGNlbnRlclBvaW50WzFdLCAtZWxlbWVudC5hbmdsZSkgYXMgUG9pbnQ7XG4gICAgfVxuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkoZWxlbWVudCkpIHtcbiAgICAgICAgY29uc3QgZmlsbCA9IGdldEZpbGxCeUVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBlbmdpbmUgPSBnZXRFbmdpbmUoZ2V0U2hhcGUoZWxlbWVudCkpO1xuICAgICAgICBjb25zdCBuZWFyZXN0UG9pbnQgPSBlbmdpbmUuZ2V0TmVhcmVzdFBvaW50KHJlY3RhbmdsZSEsIHBvaW50KTtcbiAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KG5lYXJlc3RQb2ludFswXSwgbmVhcmVzdFBvaW50WzFdLCBwb2ludFswXSwgcG9pbnRbMV0pO1xuICAgICAgICBjb25zdCBpc0hpdEVkZ2UgPSBkaXN0YW5jZSA8PSBISVRfRElTVEFOQ0VfQlVGRkVSO1xuICAgICAgICBpZiAoaXNIaXRFZGdlKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNIaXRFZGdlO1xuICAgICAgICB9XG4gICAgICAgIC8vIHdoZW4gc2hhcGUgZXF1YWxzIHRleHQsIGZpbGwgaXMgbm90IGFsbG93ZWRcbiAgICAgICAgaWYgKGZpbGwgIT09IERlZmF1bHRHZW9tZXRyeVN0eWxlLmZpbGwgJiYgZmlsbCAhPT0gVFJBTlNQQVJFTlQgJiYgIVBsYWl0RHJhd0VsZW1lbnQuaXNUZXh0KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCBpc0hpdEluc2lkZSA9IGVuZ2luZS5pc0luc2lkZVBvaW50KHJlY3RhbmdsZSEsIHBvaW50KTtcbiAgICAgICAgICAgIGlmIChpc0hpdEluc2lkZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0hpdEluc2lkZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGlmIHNoYXBlIGVxdWFscyB0ZXh0LCBvbmx5IGNoZWNrIHRleHQgcmVjdGFuZ2xlXG4gICAgICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc1RleHQoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0Q2xpZW50ID0gZ2V0VGV4dFJlY3RhbmdsZShlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBsZXQgaXNIaXRUZXh0ID0gUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZSh0ZXh0Q2xpZW50LCBwb2ludCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzSGl0VGV4dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gY2hlY2sgdGV4dFJlY3RhbmdsZSBvZiBlbGVtZW50XG4gICAgICAgICAgICBjb25zdCB0ZXh0Q2xpZW50ID0gZW5naW5lLmdldFRleHRSZWN0YW5nbGUgPyBlbmdpbmUuZ2V0VGV4dFJlY3RhbmdsZShlbGVtZW50KSA6IGdldFRleHRSZWN0YW5nbGUoZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBpc0hpdFRleHRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuaXNQb2ludEluUmVjdGFuZ2xlKHRleHRDbGllbnQsIHBvaW50KTtcbiAgICAgICAgICAgIGlmIChpc0hpdFRleHRSZWN0YW5nbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNIaXRUZXh0UmVjdGFuZ2xlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzSW1hZ2UoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIGlzUmVjdGFuZ2xlSGl0RHJhd0VsZW1lbnQoYm9hcmQsIGVsZW1lbnQsIHsgYW5jaG9yOiBwb2ludCwgZm9jdXM6IHBvaW50IH0pO1xuICAgIH1cblxuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzTGluZShlbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gaXNIaXRMaW5lKGJvYXJkLCBlbGVtZW50LCBwb2ludCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzSGl0RWxlbWVudEluc2lkZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRFbGVtZW50LCBwb2ludDogUG9pbnQpID0+IHtcbiAgICBjb25zdCByZWN0YW5nbGUgPSBib2FyZC5nZXRSZWN0YW5nbGUoZWxlbWVudCk7XG4gICAgY29uc3QgY2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQocmVjdGFuZ2xlISk7XG4gICAgaWYgKGVsZW1lbnQuYW5nbGUpIHtcbiAgICAgICAgcG9pbnQgPSByb3RhdGUocG9pbnRbMF0sIHBvaW50WzFdLCBjZW50ZXJQb2ludFswXSwgY2VudGVyUG9pbnRbMV0sIC1lbGVtZW50LmFuZ2xlKSBhcyBQb2ludDtcbiAgICB9XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeShlbGVtZW50KSkge1xuICAgICAgICBjb25zdCBlbmdpbmUgPSBnZXRFbmdpbmUoZ2V0U2hhcGUoZWxlbWVudCkpO1xuICAgICAgICBjb25zdCBpc0hpdEluc2lkZSA9IGVuZ2luZS5pc0luc2lkZVBvaW50KHJlY3RhbmdsZSEsIHBvaW50KTtcbiAgICAgICAgaWYgKGlzSGl0SW5zaWRlKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNIaXRJbnNpZGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZW5naW5lLmdldFRleHRSZWN0YW5nbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHRleHRDbGllbnQgPSBlbmdpbmUuZ2V0VGV4dFJlY3RhbmdsZShlbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGlzSGl0VGV4dFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pc1BvaW50SW5SZWN0YW5nbGUodGV4dENsaWVudCwgcG9pbnQpO1xuICAgICAgICAgICAgaWYgKGlzSGl0VGV4dFJlY3RhbmdsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0hpdFRleHRSZWN0YW5nbGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZShlbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gaXNSZWN0YW5nbGVIaXREcmF3RWxlbWVudChib2FyZCwgZWxlbWVudCwgeyBhbmNob3I6IHBvaW50LCBmb2N1czogcG9pbnQgfSk7XG4gICAgfVxuXG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNMaW5lKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBpc0hpdExpbmUoYm9hcmQsIGVsZW1lbnQsIHBvaW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn07XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { RectangleClient, getRectangleByElements } from '@plait/core';
2
2
  import { getResizeZoom, movePointByZoomAndOriginPoint } from '../plugins/with-draw-resize';
3
- import { getDirectionFactorByVectorComponent, getUnitVectorByPointAndPoint } from '@plait/common';
3
+ import { getDirectionFactorByDirectionComponent, getUnitVectorByPointAndPoint } from '@plait/common';
4
4
  import { ResizeAlignReaction } from './resize-align-reaction';
5
5
  export function getResizeAlignRef(board, resizeRef, resizeState, resizeOriginPointAndHandlePoint, isAspectRatio, isFromCorner) {
6
6
  const { originPoint, handlePoint } = resizeOriginPointAndHandlePoint;
@@ -29,9 +29,9 @@ export function getResizeAlignRef(board, resizeRef, resizeState, resizeOriginPoi
29
29
  activeRectangle,
30
30
  originPoint,
31
31
  handlePoint,
32
- directionFactors: [getDirectionFactorByVectorComponent(x), getDirectionFactorByVectorComponent(y)],
32
+ directionFactors: [getDirectionFactorByDirectionComponent(x), getDirectionFactorByDirectionComponent(y)],
33
33
  isAspectRatio,
34
34
  isFromCorner
35
35
  });
36
36
  }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLWFsaWduLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdXRpbHMvcmVzaXplLWFsaWduLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsZUFBZSxFQUFFLHNCQUFzQixFQUFpQyxNQUFNLGFBQWEsQ0FBQztBQUN4SCxPQUFPLEVBQUUsYUFBYSxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0YsT0FBTyxFQUEwQixtQ0FBbUMsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxSCxPQUFPLEVBQUUsbUJBQW1CLEVBQWtCLE1BQU0seUJBQXlCLENBQUM7QUFFOUUsTUFBTSxVQUFVLGlCQUFpQixDQUM3QixLQUFpQixFQUNqQixTQUEyRCxFQUMzRCxXQUF3QixFQUN4QiwrQkFHQyxFQUNELGFBQXNCLEVBQ3RCLFlBQXFCO0lBRXJCLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEdBQUcsK0JBQStCLENBQUM7SUFDckUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxhQUFhLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRTNHLElBQUksY0FBOEIsQ0FBQztJQUNuQyxJQUFJLGtCQUFrQixHQUFZLEVBQUUsQ0FBQztJQUNyQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ2xDLGNBQWMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO1FBQ25DLE1BQU0sU0FBUyxHQUFHLHNCQUFzQixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFFLGtCQUFrQixHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDN0Q7U0FBTTtRQUNILGNBQWMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxrQkFBa0IsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztLQUNqRDtJQUVELE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUN0QyxPQUFPLDZCQUE2QixDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZFLENBQUMsQ0FBbUIsQ0FBQztJQUNyQixNQUFNLGVBQWUsR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFckUsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLG1CQUFtQixDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMzRSxNQUFNLGlCQUFpQixHQUFHLDZCQUE2QixDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsNEJBQTRCLENBQUMsV0FBVyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFFNUUsT0FBTyxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQztRQUN6QyxXQUFXO1FBQ1gsa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZixXQUFXO1FBQ1gsV0FBVztRQUNYLGdCQUFnQixFQUFFLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxDQUFDLEVBQUUsbUNBQW1DLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEcsYUFBYTtRQUNiLFlBQVk7S0FDZixDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCwgZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cywgUGxhaXRFbGVtZW50LCBEaXJlY3Rpb25GYWN0b3IgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBnZXRSZXNpemVab29tLCBtb3ZlUG9pbnRCeVpvb21BbmRPcmlnaW5Qb2ludCB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1kcmF3LXJlc2l6ZSc7XG5pbXBvcnQgeyBSZXNpemVSZWYsIFJlc2l6ZVN0YXRlLCBnZXREaXJlY3Rpb25GYWN0b3JCeVZlY3RvckNvbXBvbmVudCwgZ2V0VW5pdFZlY3RvckJ5UG9pbnRBbmRQb2ludCB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgUGxhaXREcmF3RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUmVzaXplQWxpZ25SZWFjdGlvbiwgUmVzaXplQWxpZ25SZWYgfSBmcm9tICcuL3Jlc2l6ZS1hbGlnbi1yZWFjdGlvbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXNpemVBbGlnblJlZihcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICByZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdERyYXdFbGVtZW50IHwgUGxhaXREcmF3RWxlbWVudFtdPixcbiAgICByZXNpemVTdGF0ZTogUmVzaXplU3RhdGUsXG4gICAgcmVzaXplT3JpZ2luUG9pbnRBbmRIYW5kbGVQb2ludDoge1xuICAgICAgICBvcmlnaW5Qb2ludDogUG9pbnQ7XG4gICAgICAgIGhhbmRsZVBvaW50OiBQb2ludDtcbiAgICB9LFxuICAgIGlzQXNwZWN0UmF0aW86IGJvb2xlYW4sXG4gICAgaXNGcm9tQ29ybmVyOiBib29sZWFuXG4pOiBSZXNpemVBbGlnblJlZiB7XG4gICAgY29uc3QgeyBvcmlnaW5Qb2ludCwgaGFuZGxlUG9pbnQgfSA9IHJlc2l6ZU9yaWdpblBvaW50QW5kSGFuZGxlUG9pbnQ7XG4gICAgY29uc3QgeyB4Wm9vbSwgeVpvb20gfSA9IGdldFJlc2l6ZVpvb20ocmVzaXplU3RhdGUsIG9yaWdpblBvaW50LCBoYW5kbGVQb2ludCwgaXNGcm9tQ29ybmVyLCBpc0FzcGVjdFJhdGlvKTtcblxuICAgIGxldCBhY3RpdmVFbGVtZW50czogUGxhaXRFbGVtZW50W107XG4gICAgbGV0IHJlc2l6ZU9yaWdpblBvaW50czogUG9pbnRbXSA9IFtdO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJlc2l6ZVJlZi5lbGVtZW50KSkge1xuICAgICAgICBhY3RpdmVFbGVtZW50cyA9IHJlc2l6ZVJlZi5lbGVtZW50O1xuICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCByZXNpemVSZWYuZWxlbWVudCwgZmFsc2UpO1xuICAgICAgICByZXNpemVPcmlnaW5Qb2ludHMgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgYWN0aXZlRWxlbWVudHMgPSBbcmVzaXplUmVmLmVsZW1lbnRdO1xuICAgICAgICByZXNpemVPcmlnaW5Qb2ludHMgPSByZXNpemVSZWYuZWxlbWVudC5wb2ludHM7XG4gICAgfVxuXG4gICAgY29uc3QgcG9pbnRzID0gcmVzaXplT3JpZ2luUG9pbnRzLm1hcChwID0+IHtcbiAgICAgICAgcmV0dXJuIG1vdmVQb2ludEJ5Wm9vbUFuZE9yaWdpblBvaW50KHAsIG9yaWdpblBvaW50LCB4Wm9vbSwgeVpvb20pO1xuICAgIH0pIGFzIFtQb2ludCwgUG9pbnRdO1xuICAgIGNvbnN0IGFjdGl2ZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhwb2ludHMpO1xuXG4gICAgY29uc3QgcmVzaXplQWxpZ25SZWFjdGlvbiA9IG5ldyBSZXNpemVBbGlnblJlYWN0aW9uKGJvYXJkLCBhY3RpdmVFbGVtZW50cyk7XG4gICAgY29uc3QgcmVzaXplSGFuZGxlUG9pbnQgPSBtb3ZlUG9pbnRCeVpvb21BbmRPcmlnaW5Qb2ludChoYW5kbGVQb2ludCwgb3JpZ2luUG9pbnQsIHhab29tLCB5Wm9vbSk7XG4gICAgY29uc3QgW3gsIHldID0gZ2V0VW5pdFZlY3RvckJ5UG9pbnRBbmRQb2ludChvcmlnaW5Qb2ludCwgcmVzaXplSGFuZGxlUG9pbnQpO1xuXG4gICAgcmV0dXJuIHJlc2l6ZUFsaWduUmVhY3Rpb24uaGFuZGxlUmVzaXplQWxpZ24oe1xuICAgICAgICByZXNpemVTdGF0ZSxcbiAgICAgICAgcmVzaXplT3JpZ2luUG9pbnRzLFxuICAgICAgICBhY3RpdmVSZWN0YW5nbGUsXG4gICAgICAgIG9yaWdpblBvaW50LFxuICAgICAgICBoYW5kbGVQb2ludCxcbiAgICAgICAgZGlyZWN0aW9uRmFjdG9yczogW2dldERpcmVjdGlvbkZhY3RvckJ5VmVjdG9yQ29tcG9uZW50KHgpLCBnZXREaXJlY3Rpb25GYWN0b3JCeVZlY3RvckNvbXBvbmVudCh5KV0sXG4gICAgICAgIGlzQXNwZWN0UmF0aW8sXG4gICAgICAgIGlzRnJvbUNvcm5lclxuICAgIH0pO1xufVxuIl19
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLWFsaWduLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdXRpbHMvcmVzaXplLWFsaWduLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsZUFBZSxFQUFFLHNCQUFzQixFQUFpQyxNQUFNLGFBQWEsQ0FBQztBQUN4SCxPQUFPLEVBQUUsYUFBYSxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0YsT0FBTyxFQUEwQixzQ0FBc0MsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3SCxPQUFPLEVBQUUsbUJBQW1CLEVBQWtCLE1BQU0seUJBQXlCLENBQUM7QUFFOUUsTUFBTSxVQUFVLGlCQUFpQixDQUM3QixLQUFpQixFQUNqQixTQUEyRCxFQUMzRCxXQUF3QixFQUN4QiwrQkFHQyxFQUNELGFBQXNCLEVBQ3RCLFlBQXFCO0lBRXJCLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEdBQUcsK0JBQStCLENBQUM7SUFDckUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxhQUFhLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRTNHLElBQUksY0FBOEIsQ0FBQztJQUNuQyxJQUFJLGtCQUFrQixHQUFZLEVBQUUsQ0FBQztJQUNyQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ2xDLGNBQWMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO1FBQ25DLE1BQU0sU0FBUyxHQUFHLHNCQUFzQixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFFLGtCQUFrQixHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDN0Q7U0FBTTtRQUNILGNBQWMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxrQkFBa0IsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztLQUNqRDtJQUVELE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUN0QyxPQUFPLDZCQUE2QixDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZFLENBQUMsQ0FBbUIsQ0FBQztJQUNyQixNQUFNLGVBQWUsR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFckUsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLG1CQUFtQixDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMzRSxNQUFNLGlCQUFpQixHQUFHLDZCQUE2QixDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsNEJBQTRCLENBQUMsV0FBVyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFFNUUsT0FBTyxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQztRQUN6QyxXQUFXO1FBQ1gsa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZixXQUFXO1FBQ1gsV0FBVztRQUNYLGdCQUFnQixFQUFFLENBQUMsc0NBQXNDLENBQUMsQ0FBQyxDQUFDLEVBQUUsc0NBQXNDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEcsYUFBYTtRQUNiLFlBQVk7S0FDZixDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCwgZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cywgUGxhaXRFbGVtZW50LCBEaXJlY3Rpb25GYWN0b3IgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBnZXRSZXNpemVab29tLCBtb3ZlUG9pbnRCeVpvb21BbmRPcmlnaW5Qb2ludCB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1kcmF3LXJlc2l6ZSc7XG5pbXBvcnQgeyBSZXNpemVSZWYsIFJlc2l6ZVN0YXRlLCBnZXREaXJlY3Rpb25GYWN0b3JCeURpcmVjdGlvbkNvbXBvbmVudCwgZ2V0VW5pdFZlY3RvckJ5UG9pbnRBbmRQb2ludCB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgUGxhaXREcmF3RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUmVzaXplQWxpZ25SZWFjdGlvbiwgUmVzaXplQWxpZ25SZWYgfSBmcm9tICcuL3Jlc2l6ZS1hbGlnbi1yZWFjdGlvbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXNpemVBbGlnblJlZihcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICByZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdERyYXdFbGVtZW50IHwgUGxhaXREcmF3RWxlbWVudFtdPixcbiAgICByZXNpemVTdGF0ZTogUmVzaXplU3RhdGUsXG4gICAgcmVzaXplT3JpZ2luUG9pbnRBbmRIYW5kbGVQb2ludDoge1xuICAgICAgICBvcmlnaW5Qb2ludDogUG9pbnQ7XG4gICAgICAgIGhhbmRsZVBvaW50OiBQb2ludDtcbiAgICB9LFxuICAgIGlzQXNwZWN0UmF0aW86IGJvb2xlYW4sXG4gICAgaXNGcm9tQ29ybmVyOiBib29sZWFuXG4pOiBSZXNpemVBbGlnblJlZiB7XG4gICAgY29uc3QgeyBvcmlnaW5Qb2ludCwgaGFuZGxlUG9pbnQgfSA9IHJlc2l6ZU9yaWdpblBvaW50QW5kSGFuZGxlUG9pbnQ7XG4gICAgY29uc3QgeyB4Wm9vbSwgeVpvb20gfSA9IGdldFJlc2l6ZVpvb20ocmVzaXplU3RhdGUsIG9yaWdpblBvaW50LCBoYW5kbGVQb2ludCwgaXNGcm9tQ29ybmVyLCBpc0FzcGVjdFJhdGlvKTtcblxuICAgIGxldCBhY3RpdmVFbGVtZW50czogUGxhaXRFbGVtZW50W107XG4gICAgbGV0IHJlc2l6ZU9yaWdpblBvaW50czogUG9pbnRbXSA9IFtdO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJlc2l6ZVJlZi5lbGVtZW50KSkge1xuICAgICAgICBhY3RpdmVFbGVtZW50cyA9IHJlc2l6ZVJlZi5lbGVtZW50O1xuICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCByZXNpemVSZWYuZWxlbWVudCwgZmFsc2UpO1xuICAgICAgICByZXNpemVPcmlnaW5Qb2ludHMgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgYWN0aXZlRWxlbWVudHMgPSBbcmVzaXplUmVmLmVsZW1lbnRdO1xuICAgICAgICByZXNpemVPcmlnaW5Qb2ludHMgPSByZXNpemVSZWYuZWxlbWVudC5wb2ludHM7XG4gICAgfVxuXG4gICAgY29uc3QgcG9pbnRzID0gcmVzaXplT3JpZ2luUG9pbnRzLm1hcChwID0+IHtcbiAgICAgICAgcmV0dXJuIG1vdmVQb2ludEJ5Wm9vbUFuZE9yaWdpblBvaW50KHAsIG9yaWdpblBvaW50LCB4Wm9vbSwgeVpvb20pO1xuICAgIH0pIGFzIFtQb2ludCwgUG9pbnRdO1xuICAgIGNvbnN0IGFjdGl2ZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhwb2ludHMpO1xuXG4gICAgY29uc3QgcmVzaXplQWxpZ25SZWFjdGlvbiA9IG5ldyBSZXNpemVBbGlnblJlYWN0aW9uKGJvYXJkLCBhY3RpdmVFbGVtZW50cyk7XG4gICAgY29uc3QgcmVzaXplSGFuZGxlUG9pbnQgPSBtb3ZlUG9pbnRCeVpvb21BbmRPcmlnaW5Qb2ludChoYW5kbGVQb2ludCwgb3JpZ2luUG9pbnQsIHhab29tLCB5Wm9vbSk7XG4gICAgY29uc3QgW3gsIHldID0gZ2V0VW5pdFZlY3RvckJ5UG9pbnRBbmRQb2ludChvcmlnaW5Qb2ludCwgcmVzaXplSGFuZGxlUG9pbnQpO1xuXG4gICAgcmV0dXJuIHJlc2l6ZUFsaWduUmVhY3Rpb24uaGFuZGxlUmVzaXplQWxpZ24oe1xuICAgICAgICByZXNpemVTdGF0ZSxcbiAgICAgICAgcmVzaXplT3JpZ2luUG9pbnRzLFxuICAgICAgICBhY3RpdmVSZWN0YW5nbGUsXG4gICAgICAgIG9yaWdpblBvaW50LFxuICAgICAgICBoYW5kbGVQb2ludCxcbiAgICAgICAgZGlyZWN0aW9uRmFjdG9yczogW2dldERpcmVjdGlvbkZhY3RvckJ5RGlyZWN0aW9uQ29tcG9uZW50KHgpLCBnZXREaXJlY3Rpb25GYWN0b3JCeURpcmVjdGlvbkNvbXBvbmVudCh5KV0sXG4gICAgICAgIGlzQXNwZWN0UmF0aW8sXG4gICAgICAgIGlzRnJvbUNvcm5lclxuICAgIH0pO1xufVxuIl19
@@ -1,5 +1,5 @@
1
- import { ACTIVE_STROKE_WIDTH, ThemeColorMode, Point, RectangleClient, getElementById, createG, arrowPoints, createPath, distanceBetweenPointAndPoint, drawLinearPath, rotate, depthFirstRecursion, getIsRecursionFunc, idCreator, catmullRomFitting, PlaitBoard, findElements, createMask, createRect, getSelectedElements, distanceBetweenPointAndSegments, HIT_DISTANCE_BUFFER, isPolylineHitRectangle, setStrokeLinecap, isPointInPolygon, getNearestPointBetweenPointAndSegments, isPointInEllipse, getEllipseTangentSlope, getVectorFromPointAndSlope, drawRectangle, drawRoundRectangle, isPointInRoundRectangle, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR, drawCircle, Transforms, clearSelectedElement, addSelectedElement, BoardTransforms, PlaitPointerType, Direction, Path, PlaitNode, toViewBoxPoint, toHostPoint, isSelectionMoving, RgbaToHEX, PlaitElement, preventTouchMove, createClipboardContext, WritableClipboardType, addClipboardContext, getRectangleByElements, getHitElementByPoint, CursorClass, temporaryDisableSelection, PRESS_AND_MOVE_BUFFER } from '@plait/core';
2
- import { removeDuplicatePoints, generateElbowLineRoute, simplifyOrthogonalPoints, isSourceAndTargetIntersect, getPoints, getPointByVector, getExtendPoint, getUnitVectorByPointAndPoint, Generator, getRectangleResizeHandleRefs, RESIZE_HANDLE_DIAMETER, getMemorizedLatest, memorizeLatest, getPointOnPolyline, TRANSPARENT, getCrossingPointsBetweenPointAndSegment, isPointOnSegment, getDirectionByVector, getOppositeDirection, getDirectionFactor, getDirectionByPointOfRectangle, rotateVectorAnti90, getSourceAndTargetOuterRectangle, getNextPoint, normalizeShapePoints, getFirstTextEditor, PRIMARY_COLOR, CommonPluginElement, ActiveGenerator, WithTextPluginKey, drawPrimaryHandle, drawFillPrimaryHandle, isVirtualKey, isDelete, isSpaceHotkey, isDndMode, isDrawingMode, getElementsText, acceptImageTypes, getElementOfFocusedImage, buildImage, getDirectionFactorByVectorComponent, isCornerHandle, getFirstTextManage, withResize, drawHandle, getIndexByResizeHandle, getSymmetricHandleIndex, getResizeHandlePointByIndex, isResizingByCondition, getRatioByPoint, ImageGenerator, ResizeHandle } from '@plait/common';
1
+ import { ACTIVE_STROKE_WIDTH, ThemeColorMode, Point, RectangleClient, getElementById, createG, arrowPoints, createPath, distanceBetweenPointAndPoint, drawLinearPath, rotate, depthFirstRecursion, getIsRecursionFunc, idCreator, catmullRomFitting, PlaitBoard, findElements, createMask, createRect, getSelectedElements, distanceBetweenPointAndSegments, HIT_DISTANCE_BUFFER, isPolylineHitRectangle, setStrokeLinecap, isPointInPolygon, getNearestPointBetweenPointAndSegments, isPointInEllipse, getEllipseTangentSlope, getVectorFromPointAndSlope, drawRectangle, drawRoundRectangle, isPointInRoundRectangle, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR, drawCircle, Transforms, clearSelectedElement, addSelectedElement, BoardTransforms, PlaitPointerType, Direction, Path, PlaitNode, toViewBoxPoint, toHostPoint, isSelectionMoving, RgbaToHEX, PlaitElement, preventTouchMove, createClipboardContext, WritableClipboardType, addClipboardContext, getRectangleByElements, getHitElementByPoint, CursorClass, temporaryDisableSelection, PRESS_AND_MOVE_BUFFER, getRectangleByGroup, getElementsInGroup, isSelectedElementOrGroup, PlaitGroupElement } from '@plait/core';
2
+ import { removeDuplicatePoints, generateElbowLineRoute, simplifyOrthogonalPoints, isSourceAndTargetIntersect, getPoints, getPointByVector, getExtendPoint, getUnitVectorByPointAndPoint, Generator, getRectangleResizeHandleRefs, RESIZE_HANDLE_DIAMETER, getMemorizedLatest, memorizeLatest, getPointOnPolyline, rotatePoints, TRANSPARENT, getCrossingPointsBetweenPointAndSegment, isPointOnSegment, getDirectionByVector, getOppositeDirection, getDirectionFactor, getDirectionByPointOfRectangle, rotateVectorAnti90, getSourceAndTargetOuterRectangle, getNextPoint, normalizeShapePoints, getFirstTextEditor, PRIMARY_COLOR, CommonPluginElement, ActiveGenerator, WithTextPluginKey, drawPrimaryHandle, drawFillPrimaryHandle, isVirtualKey, isDelete, isSpaceHotkey, isDndMode, isDrawingMode, getElementsText, acceptImageTypes, getElementOfFocusedImage, buildImage, getDirectionFactorByDirectionComponent, isCornerHandle, getFirstTextManage, withResize, drawHandle, getIndexByResizeHandle, getSymmetricHandleIndex, getResizeHandlePointByIndex, isResizingByCondition, getRatioByPoint, ImageGenerator, ResizeHandle } from '@plait/common';
3
3
  import { Alignment, buildText, DEFAULT_FONT_SIZE, getTextSize, AlignEditor, TextManage } from '@plait/text';
4
4
  import { pointsOnBezierCurves } from 'points-on-curve';
5
5
  import * as i0 from '@angular/core';
@@ -1146,15 +1146,18 @@ const isRectangleHitDrawElement = (board, element, selection) => {
1146
1146
  const rangeRectangle = RectangleClient.getRectangleByPoints([selection.anchor, selection.focus]);
1147
1147
  if (PlaitDrawElement.isGeometry(element)) {
1148
1148
  const client = RectangleClient.getRectangleByPoints(element.points);
1149
+ const centerPoint = RectangleClient.getCenterPoint(client);
1150
+ let rotatedCornerPoints = rotatePoints(RectangleClient.getCornerPoints(client), centerPoint, element.angle);
1149
1151
  if (isTextExceedingBounds(element)) {
1150
1152
  const textClient = getTextRectangle(element);
1151
- return RectangleClient.isHit(rangeRectangle, client) || RectangleClient.isHit(rangeRectangle, textClient);
1153
+ rotatedCornerPoints = rotatePoints(RectangleClient.getCornerPoints(textClient), centerPoint, element.angle);
1152
1154
  }
1153
- return RectangleClient.isHit(rangeRectangle, client);
1155
+ return isPolylineHitRectangle(rotatedCornerPoints, rangeRectangle);
1154
1156
  }
1155
1157
  if (PlaitDrawElement.isImage(element)) {
1156
1158
  const client = RectangleClient.getRectangleByPoints(element.points);
1157
- return RectangleClient.isHit(rangeRectangle, client);
1159
+ const rotatedCornerPoints = rotatePoints(RectangleClient.getCornerPoints(client), RectangleClient.getCenterPoint(client), element.angle);
1160
+ return isPolylineHitRectangle(rotatedCornerPoints, client);
1158
1161
  }
1159
1162
  if (PlaitDrawElement.isLine(element)) {
1160
1163
  const points = getLinePoints(board, element);
@@ -1163,10 +1166,14 @@ const isRectangleHitDrawElement = (board, element, selection) => {
1163
1166
  return null;
1164
1167
  };
1165
1168
  const isHitDrawElement = (board, element, point) => {
1169
+ const rectangle = board.getRectangle(element);
1170
+ const centerPoint = RectangleClient.getCenterPoint(rectangle);
1171
+ if (element.angle) {
1172
+ point = rotate(point[0], point[1], centerPoint[0], centerPoint[1], -element.angle);
1173
+ }
1166
1174
  if (PlaitDrawElement.isGeometry(element)) {
1167
1175
  const fill = getFillByElement(board, element);
1168
1176
  const engine = getEngine(getShape(element));
1169
- const rectangle = board.getRectangle(element);
1170
1177
  const nearestPoint = engine.getNearestPoint(rectangle, point);
1171
1178
  const distance = distanceBetweenPointAndPoint(nearestPoint[0], nearestPoint[1], point[0], point[1]);
1172
1179
  const isHitEdge = distance <= HIT_DISTANCE_BUFFER;
@@ -1204,9 +1211,13 @@ const isHitDrawElement = (board, element, point) => {
1204
1211
  return null;
1205
1212
  };
1206
1213
  const isHitElementInside = (board, element, point) => {
1214
+ const rectangle = board.getRectangle(element);
1215
+ const centerPoint = RectangleClient.getCenterPoint(rectangle);
1216
+ if (element.angle) {
1217
+ point = rotate(point[0], point[1], centerPoint[0], centerPoint[1], -element.angle);
1218
+ }
1207
1219
  if (PlaitDrawElement.isGeometry(element)) {
1208
1220
  const engine = getEngine(getShape(element));
1209
- const rectangle = board.getRectangle(element);
1210
1221
  const isHitInside = engine.isInsidePoint(rectangle, point);
1211
1222
  if (isHitInside) {
1212
1223
  return isHitInside;
@@ -3090,10 +3101,14 @@ class GeometryComponent extends CommonPluginElement {
3090
3101
  drawText() {
3091
3102
  this.textManage.draw(this.element.text);
3092
3103
  this.g.append(this.textManage.g);
3104
+ const centerPoint = RectangleClient.getCenterPoint(this.board.getRectangle(this.element));
3105
+ this.textManage.updateAngle(centerPoint, this.element.angle);
3093
3106
  }
3094
3107
  updateText() {
3095
3108
  this.textManage.updateText(this.element.text);
3096
3109
  this.textManage.updateRectangle();
3110
+ const centerPoint = RectangleClient.getCenterPoint(this.board.getRectangle(this.element));
3111
+ this.textManage.updateAngle(centerPoint, this.element.angle);
3097
3112
  }
3098
3113
  initializeTextManage() {
3099
3114
  const plugins = (this.board.getPluginOptions(WithTextPluginKey) || {}).textPlugins;
@@ -3136,10 +3151,10 @@ class GeometryComponent extends CommonPluginElement {
3136
3151
  this.activeGenerator.destroy();
3137
3152
  this.lineAutoCompleteGenerator.destroy();
3138
3153
  }
3139
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GeometryComponent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
3140
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GeometryComponent, isStandalone: true, selector: "plait-draw-geometry", usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3154
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: GeometryComponent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
3155
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.8", type: GeometryComponent, isStandalone: true, selector: "plait-draw-geometry", usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3141
3156
  }
3142
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GeometryComponent, decorators: [{
3157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: GeometryComponent, decorators: [{
3143
3158
  type: Component,
3144
3159
  args: [{
3145
3160
  selector: 'plait-draw-geometry',
@@ -3381,10 +3396,10 @@ class LineComponent extends CommonPluginElement {
3381
3396
  this.destroy$.complete();
3382
3397
  this.destroyTextManages();
3383
3398
  }
3384
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LineComponent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
3385
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LineComponent, isStandalone: true, selector: "plait-draw-line", usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3399
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: LineComponent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
3400
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.8", type: LineComponent, isStandalone: true, selector: "plait-draw-line", usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3386
3401
  }
3387
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LineComponent, decorators: [{
3402
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: LineComponent, decorators: [{
3388
3403
  type: Component,
3389
3404
  args: [{
3390
3405
  selector: 'plait-draw-line',
@@ -4101,7 +4116,7 @@ function getResizeAlignRef(board, resizeRef, resizeState, resizeOriginPointAndHa
4101
4116
  activeRectangle,
4102
4117
  originPoint,
4103
4118
  handlePoint,
4104
- directionFactors: [getDirectionFactorByVectorComponent(x), getDirectionFactorByVectorComponent(y)],
4119
+ directionFactors: [getDirectionFactorByDirectionComponent(x), getDirectionFactorByDirectionComponent(y)],
4105
4120
  isAspectRatio,
4106
4121
  isFromCorner
4107
4122
  });
@@ -4615,10 +4630,10 @@ class ImageComponent extends CommonPluginElement {
4615
4630
  this.imageGenerator.destroy();
4616
4631
  this.lineAutoCompleteGenerator.destroy();
4617
4632
  }
4618
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImageComponent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
4619
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ImageComponent, isStandalone: true, selector: "plait-draw-geometry", usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4633
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ImageComponent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
4634
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.8", type: ImageComponent, isStandalone: true, selector: "plait-draw-geometry", usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4620
4635
  }
4621
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImageComponent, decorators: [{
4636
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ImageComponent, decorators: [{
4622
4637
  type: Component,
4623
4638
  args: [{
4624
4639
  selector: 'plait-draw-geometry',
@@ -4772,6 +4787,66 @@ const withLineTextMove = (board) => {
4772
4787
  return board;
4773
4788
  };
4774
4789
 
4790
+ class GroupGenerator extends Generator {
4791
+ canDraw(element) {
4792
+ return true;
4793
+ }
4794
+ draw(element, partialSelected) {
4795
+ const options = {
4796
+ stroke: '',
4797
+ strokeWidth: ACTIVE_STROKE_WIDTH,
4798
+ strokeLineDash: [5]
4799
+ };
4800
+ if (partialSelected) {
4801
+ options.stroke = '#999';
4802
+ }
4803
+ const rectangle = getRectangleByGroup(this.board, element, true);
4804
+ return drawRectangle(this.board, rectangle, options);
4805
+ }
4806
+ }
4807
+
4808
+ class GroupComponent extends CommonPluginElement {
4809
+ constructor(viewContainerRef, cdr) {
4810
+ super(cdr);
4811
+ this.viewContainerRef = viewContainerRef;
4812
+ this.cdr = cdr;
4813
+ }
4814
+ initializeGenerator() {
4815
+ this.activeGenerator = new ActiveGenerator(this.board, {
4816
+ getRectangle: (element) => {
4817
+ return getRectangleByGroup(this.board, element);
4818
+ },
4819
+ getStrokeWidth: () => 0,
4820
+ getStrokeOpacity: () => 0,
4821
+ hasResizeHandle: () => {
4822
+ return !isSelectionMoving(this.board);
4823
+ }
4824
+ });
4825
+ this.groupGenerator = new GroupGenerator(this.board);
4826
+ }
4827
+ ngOnInit() {
4828
+ super.ngOnInit();
4829
+ this.initializeGenerator();
4830
+ }
4831
+ onContextChanged(value, previous) {
4832
+ const elementsInGroup = getElementsInGroup(this.board, value.element, false, true);
4833
+ const isPartialSelectGroup = elementsInGroup.some(item => isSelectedElementOrGroup(this.board, item)) &&
4834
+ !elementsInGroup.every(item => isSelectedElementOrGroup(this.board, item));
4835
+ this.groupGenerator.processDrawing(value.element, this.g, isPartialSelectGroup);
4836
+ }
4837
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: GroupComponent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
4838
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.8", type: GroupComponent, isStandalone: true, selector: "plait-group", usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4839
+ }
4840
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: GroupComponent, decorators: [{
4841
+ type: Component,
4842
+ args: [{
4843
+ selector: 'plait-group',
4844
+ template: ``,
4845
+ changeDetection: ChangeDetectionStrategy.OnPush,
4846
+ standalone: true
4847
+ }]
4848
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; } });
4849
+
4775
4850
  const withDraw = (board) => {
4776
4851
  const { drawElement, getRectangle, isRectangleHit, isHit, isInsidePoint, isMovable, isAlign, getRelatedFragment } = board;
4777
4852
  board.drawElement = (context) => {
@@ -4784,6 +4859,9 @@ const withDraw = (board) => {
4784
4859
  else if (PlaitDrawElement.isImage(context.element)) {
4785
4860
  return ImageComponent;
4786
4861
  }
4862
+ else if (PlaitGroupElement.isGroup(context.element)) {
4863
+ return GroupComponent;
4864
+ }
4787
4865
  return drawElement(context);
4788
4866
  };
4789
4867
  board.getRectangle = (element) => {
@@ -4802,6 +4880,9 @@ const withDraw = (board) => {
4802
4880
  if (PlaitDrawElement.isImage(element)) {
4803
4881
  return RectangleClient.getRectangleByPoints(element.points);
4804
4882
  }
4883
+ if (PlaitGroupElement.isGroup(element)) {
4884
+ return getRectangleByGroup(board, element);
4885
+ }
4805
4886
  return getRectangle(element);
4806
4887
  };
4807
4888
  board.isRectangleHit = (element, selection) => {