@plait/draw 0.53.0 → 0.54.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/constants/geometry.d.ts +3 -1
  2. package/esm2022/constants/geometry.mjs +4 -2
  3. package/esm2022/generators/line-auto-complete.generator.mjs +1 -1
  4. package/esm2022/interfaces/index.mjs +2 -2
  5. package/esm2022/plugins/with-draw-fragment.mjs +1 -1
  6. package/esm2022/plugins/with-draw-resize.mjs +56 -9
  7. package/esm2022/plugins/with-draw.mjs +4 -4
  8. package/esm2022/plugins/with-geometry-resize.mjs +7 -14
  9. package/esm2022/plugins/with-line-auto-complete-reaction.mjs +2 -2
  10. package/esm2022/plugins/with-line-auto-complete.mjs +15 -14
  11. package/esm2022/plugins/with-line-bound-reaction.mjs +19 -21
  12. package/esm2022/plugins/with-line-create.mjs +4 -4
  13. package/esm2022/plugins/with-line-resize.mjs +11 -12
  14. package/esm2022/transforms/line.mjs +4 -4
  15. package/esm2022/utils/geometry.mjs +31 -22
  16. package/esm2022/utils/hit.mjs +26 -26
  17. package/esm2022/utils/line/elbow.mjs +11 -6
  18. package/esm2022/utils/line/line-basic.mjs +21 -29
  19. package/esm2022/utils/line/line-common.mjs +3 -3
  20. package/esm2022/utils/line/line-resize.mjs +2 -2
  21. package/esm2022/utils/position/geometry.mjs +51 -21
  22. package/esm2022/utils/resize-snap.mjs +361 -0
  23. package/esm2022/utils/shape.mjs +2 -2
  24. package/fesm2022/plait-draw.mjs +432 -344
  25. package/fesm2022/plait-draw.mjs.map +1 -1
  26. package/generators/line-auto-complete.generator.d.ts +3 -3
  27. package/interfaces/index.d.ts +2 -2
  28. package/package.json +1 -1
  29. package/plugins/with-draw-fragment.d.ts +2 -2
  30. package/plugins/with-draw-resize.d.ts +6 -0
  31. package/utils/geometry.d.ts +7 -4
  32. package/utils/hit.d.ts +3 -1
  33. package/utils/line/elbow.d.ts +3 -0
  34. package/utils/line/line-basic.d.ts +4 -4
  35. package/utils/position/geometry.d.ts +10 -2
  36. package/utils/resize-snap.d.ts +49 -0
  37. package/utils/shape.d.ts +2 -2
  38. package/esm2022/utils/resize-align-reaction.mjs +0 -316
  39. package/esm2022/utils/resize-align.mjs +0 -37
  40. package/utils/resize-align-reaction.d.ts +0 -42
  41. package/utils/resize-align.d.ts +0 -8
@@ -1,37 +0,0 @@
1
- import { RectangleClient, getRectangleByElements } from '@plait/core';
2
- import { getResizeZoom, movePointByZoomAndOriginPoint } from '../plugins/with-draw-resize';
3
- import { getDirectionFactorByDirectionComponent, getUnitVectorByPointAndPoint } from '@plait/common';
4
- import { ResizeAlignReaction } from './resize-align-reaction';
5
- export function getResizeAlignRef(board, resizeRef, resizeState, resizeOriginPointAndHandlePoint, isAspectRatio, isFromCorner) {
6
- const { originPoint, handlePoint } = resizeOriginPointAndHandlePoint;
7
- const { xZoom, yZoom } = getResizeZoom(resizeState, originPoint, handlePoint, isFromCorner, isAspectRatio);
8
- let activeElements;
9
- let resizeOriginPoints = [];
10
- if (Array.isArray(resizeRef.element)) {
11
- activeElements = resizeRef.element;
12
- const rectangle = getRectangleByElements(board, resizeRef.element, false);
13
- resizeOriginPoints = RectangleClient.getPoints(rectangle);
14
- }
15
- else {
16
- activeElements = [resizeRef.element];
17
- resizeOriginPoints = resizeRef.element.points;
18
- }
19
- const points = resizeOriginPoints.map(p => {
20
- return movePointByZoomAndOriginPoint(p, originPoint, xZoom, yZoom);
21
- });
22
- const activeRectangle = RectangleClient.getRectangleByPoints(points);
23
- const resizeAlignReaction = new ResizeAlignReaction(board, activeElements);
24
- const resizeHandlePoint = movePointByZoomAndOriginPoint(handlePoint, originPoint, xZoom, yZoom);
25
- const [x, y] = getUnitVectorByPointAndPoint(originPoint, resizeHandlePoint);
26
- return resizeAlignReaction.handleResizeAlign({
27
- resizeState,
28
- resizeOriginPoints,
29
- activeRectangle,
30
- originPoint,
31
- handlePoint,
32
- directionFactors: [getDirectionFactorByDirectionComponent(x), getDirectionFactorByDirectionComponent(y)],
33
- isAspectRatio,
34
- isFromCorner
35
- });
36
- }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLWFsaWduLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdXRpbHMvcmVzaXplLWFsaWduLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsZUFBZSxFQUFFLHNCQUFzQixFQUFpQyxNQUFNLGFBQWEsQ0FBQztBQUN4SCxPQUFPLEVBQUUsYUFBYSxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0YsT0FBTyxFQUEwQixzQ0FBc0MsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3SCxPQUFPLEVBQUUsbUJBQW1CLEVBQWtCLE1BQU0seUJBQXlCLENBQUM7QUFFOUUsTUFBTSxVQUFVLGlCQUFpQixDQUM3QixLQUFpQixFQUNqQixTQUEyRCxFQUMzRCxXQUF3QixFQUN4QiwrQkFHQyxFQUNELGFBQXNCLEVBQ3RCLFlBQXFCO0lBRXJCLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEdBQUcsK0JBQStCLENBQUM7SUFDckUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxhQUFhLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRTNHLElBQUksY0FBOEIsQ0FBQztJQUNuQyxJQUFJLGtCQUFrQixHQUFZLEVBQUUsQ0FBQztJQUNyQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDbkMsY0FBYyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUM7UUFDbkMsTUFBTSxTQUFTLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUUsa0JBQWtCLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5RCxDQUFDO1NBQU0sQ0FBQztRQUNKLGNBQWMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxrQkFBa0IsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUNsRCxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ3RDLE9BQU8sNkJBQTZCLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkUsQ0FBQyxDQUFtQixDQUFDO0lBQ3JCLE1BQU0sZUFBZSxHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVyRSxNQUFNLG1CQUFtQixHQUFHLElBQUksbUJBQW1CLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzNFLE1BQU0saUJBQWlCLEdBQUcsNkJBQTZCLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEcsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyw0QkFBNEIsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUU1RSxPQUFPLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDO1FBQ3pDLFdBQVc7UUFDWCxrQkFBa0I7UUFDbEIsZUFBZTtRQUNmLFdBQVc7UUFDWCxXQUFXO1FBQ1gsZ0JBQWdCLEVBQUUsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDLENBQUMsRUFBRSxzQ0FBc0MsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RyxhQUFhO1FBQ2IsWUFBWTtLQUNmLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQb2ludCwgUmVjdGFuZ2xlQ2xpZW50LCBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzLCBQbGFpdEVsZW1lbnQsIERpcmVjdGlvbkZhY3RvciB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IGdldFJlc2l6ZVpvb20sIG1vdmVQb2ludEJ5Wm9vbUFuZE9yaWdpblBvaW50IH0gZnJvbSAnLi4vcGx1Z2lucy93aXRoLWRyYXctcmVzaXplJztcbmltcG9ydCB7IFJlc2l6ZVJlZiwgUmVzaXplU3RhdGUsIGdldERpcmVjdGlvbkZhY3RvckJ5RGlyZWN0aW9uQ29tcG9uZW50LCBnZXRVbml0VmVjdG9yQnlQb2ludEFuZFBvaW50IH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBSZXNpemVBbGlnblJlYWN0aW9uLCBSZXNpemVBbGlnblJlZiB9IGZyb20gJy4vcmVzaXplLWFsaWduLXJlYWN0aW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc2l6ZUFsaWduUmVmKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIHJlc2l6ZVJlZjogUmVzaXplUmVmPFBsYWl0RHJhd0VsZW1lbnQgfCBQbGFpdERyYXdFbGVtZW50W10+LFxuICAgIHJlc2l6ZVN0YXRlOiBSZXNpemVTdGF0ZSxcbiAgICByZXNpemVPcmlnaW5Qb2ludEFuZEhhbmRsZVBvaW50OiB7XG4gICAgICAgIG9yaWdpblBvaW50OiBQb2ludDtcbiAgICAgICAgaGFuZGxlUG9pbnQ6IFBvaW50O1xuICAgIH0sXG4gICAgaXNBc3BlY3RSYXRpbzogYm9vbGVhbixcbiAgICBpc0Zyb21Db3JuZXI6IGJvb2xlYW5cbik6IFJlc2l6ZUFsaWduUmVmIHtcbiAgICBjb25zdCB7IG9yaWdpblBvaW50LCBoYW5kbGVQb2ludCB9ID0gcmVzaXplT3JpZ2luUG9pbnRBbmRIYW5kbGVQb2ludDtcbiAgICBjb25zdCB7IHhab29tLCB5Wm9vbSB9ID0gZ2V0UmVzaXplWm9vbShyZXNpemVTdGF0ZSwgb3JpZ2luUG9pbnQsIGhhbmRsZVBvaW50LCBpc0Zyb21Db3JuZXIsIGlzQXNwZWN0UmF0aW8pO1xuXG4gICAgbGV0IGFjdGl2ZUVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXTtcbiAgICBsZXQgcmVzaXplT3JpZ2luUG9pbnRzOiBQb2ludFtdID0gW107XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVzaXplUmVmLmVsZW1lbnQpKSB7XG4gICAgICAgIGFjdGl2ZUVsZW1lbnRzID0gcmVzaXplUmVmLmVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIHJlc2l6ZVJlZi5lbGVtZW50LCBmYWxzZSk7XG4gICAgICAgIHJlc2l6ZU9yaWdpblBvaW50cyA9IFJlY3RhbmdsZUNsaWVudC5nZXRQb2ludHMocmVjdGFuZ2xlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBhY3RpdmVFbGVtZW50cyA9IFtyZXNpemVSZWYuZWxlbWVudF07XG4gICAgICAgIHJlc2l6ZU9yaWdpblBvaW50cyA9IHJlc2l6ZVJlZi5lbGVtZW50LnBvaW50cztcbiAgICB9XG5cbiAgICBjb25zdCBwb2ludHMgPSByZXNpemVPcmlnaW5Qb2ludHMubWFwKHAgPT4ge1xuICAgICAgICByZXR1cm4gbW92ZVBvaW50Qnlab29tQW5kT3JpZ2luUG9pbnQocCwgb3JpZ2luUG9pbnQsIHhab29tLCB5Wm9vbSk7XG4gICAgfSkgYXMgW1BvaW50LCBQb2ludF07XG4gICAgY29uc3QgYWN0aXZlUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHBvaW50cyk7XG5cbiAgICBjb25zdCByZXNpemVBbGlnblJlYWN0aW9uID0gbmV3IFJlc2l6ZUFsaWduUmVhY3Rpb24oYm9hcmQsIGFjdGl2ZUVsZW1lbnRzKTtcbiAgICBjb25zdCByZXNpemVIYW5kbGVQb2ludCA9IG1vdmVQb2ludEJ5Wm9vbUFuZE9yaWdpblBvaW50KGhhbmRsZVBvaW50LCBvcmlnaW5Qb2ludCwgeFpvb20sIHlab29tKTtcbiAgICBjb25zdCBbeCwgeV0gPSBnZXRVbml0VmVjdG9yQnlQb2ludEFuZFBvaW50KG9yaWdpblBvaW50LCByZXNpemVIYW5kbGVQb2ludCk7XG5cbiAgICByZXR1cm4gcmVzaXplQWxpZ25SZWFjdGlvbi5oYW5kbGVSZXNpemVBbGlnbih7XG4gICAgICAgIHJlc2l6ZVN0YXRlLFxuICAgICAgICByZXNpemVPcmlnaW5Qb2ludHMsXG4gICAgICAgIGFjdGl2ZVJlY3RhbmdsZSxcbiAgICAgICAgb3JpZ2luUG9pbnQsXG4gICAgICAgIGhhbmRsZVBvaW50LFxuICAgICAgICBkaXJlY3Rpb25GYWN0b3JzOiBbZ2V0RGlyZWN0aW9uRmFjdG9yQnlEaXJlY3Rpb25Db21wb25lbnQoeCksIGdldERpcmVjdGlvbkZhY3RvckJ5RGlyZWN0aW9uQ29tcG9uZW50KHkpXSxcbiAgICAgICAgaXNBc3BlY3RSYXRpbyxcbiAgICAgICAgaXNGcm9tQ29ybmVyXG4gICAgfSk7XG59XG4iXX0=
@@ -1,42 +0,0 @@
1
- import { ResizeState } from '@plait/common';
2
- import { DirectionFactors, PlaitBoard, PlaitElement, Point, RectangleClient } from '@plait/core';
3
- export interface ResizeAlignDelta {
4
- deltaX: number;
5
- deltaY: number;
6
- }
7
- export interface AlignLineRef extends ResizeAlignDelta {
8
- xZoom: number;
9
- yZoom: number;
10
- activePoints: Point[];
11
- }
12
- export interface ResizeAlignRef extends AlignLineRef {
13
- alignG: SVGGElement;
14
- }
15
- export interface ResizeAlignOptions {
16
- resizeState: ResizeState;
17
- resizeOriginPoints: Point[];
18
- activeRectangle: RectangleClient;
19
- directionFactors: DirectionFactors;
20
- originPoint: Point;
21
- handlePoint: Point;
22
- isFromCorner: boolean;
23
- isAspectRatio: boolean;
24
- }
25
- type TripleAlignAxis = [number, number, number];
26
- export declare class ResizeAlignReaction {
27
- private board;
28
- private activeElements;
29
- alignRectangles: RectangleClient[];
30
- constructor(board: PlaitBoard, activeElements: PlaitElement[]);
31
- getAlignRectangle(): RectangleClient[];
32
- getAlignLineRef(resizeAlignDelta: ResizeAlignDelta, resizeAlignOptions: ResizeAlignOptions): AlignLineRef;
33
- getEqualLineDelta(resizeAlignOptions: ResizeAlignOptions): ResizeAlignDelta;
34
- drawEqualLines(activePoints: Point[], resizeAlignOptions: ResizeAlignOptions): SVGGElement;
35
- getAlignLineDelta(resizeAlignOptions: ResizeAlignOptions): ResizeAlignDelta;
36
- drawAlignLines(activePoints: Point[], resizeAlignOptions: ResizeAlignOptions): SVGGElement;
37
- handleResizeAlign(resizeAlignOptions: ResizeAlignOptions): ResizeAlignRef;
38
- }
39
- export declare const getTripleAlignAxis: (rectangle: RectangleClient, isHorizontal: boolean) => TripleAlignAxis;
40
- export declare const isAlign: (axis: number, rectangle: RectangleClient, isHorizontal: boolean) => boolean;
41
- export declare const getClosestDelta: (axis: number, rectangle: RectangleClient, isHorizontal: boolean) => number;
42
- export {};
@@ -1,8 +0,0 @@
1
- import { PlaitBoard, Point } from '@plait/core';
2
- import { ResizeRef, ResizeState } from '@plait/common';
3
- import { PlaitDrawElement } from '../interfaces';
4
- import { ResizeAlignRef } from './resize-align-reaction';
5
- export declare function getResizeAlignRef(board: PlaitBoard, resizeRef: ResizeRef<PlaitDrawElement | PlaitDrawElement[]>, resizeState: ResizeState, resizeOriginPointAndHandlePoint: {
6
- originPoint: Point;
7
- handlePoint: Point;
8
- }, isAspectRatio: boolean, isFromCorner: boolean): ResizeAlignRef;