@plait/common 0.50.1 → 0.51.1

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 (37) hide show
  1. package/README.md +7 -6
  2. package/constants/default.d.ts +1 -1
  3. package/constants/resize.d.ts +8 -8
  4. package/esm2022/constants/default.mjs +2 -2
  5. package/esm2022/constants/resize.mjs +9 -9
  6. package/esm2022/core/image-base.component.mjs +4 -4
  7. package/esm2022/generators/active.generator.mjs +9 -10
  8. package/esm2022/generators/generator.mjs +6 -1
  9. package/esm2022/plugins/with-resize.mjs +53 -44
  10. package/esm2022/public-api.mjs +2 -1
  11. package/esm2022/types/resize.mjs +2 -0
  12. package/esm2022/utils/direction.mjs +5 -25
  13. package/esm2022/utils/drawing/index.mjs +2 -0
  14. package/esm2022/utils/drawing/resize-handle.mjs +23 -0
  15. package/esm2022/utils/elbow-line-route.mjs +38 -36
  16. package/esm2022/utils/index.mjs +4 -2
  17. package/esm2022/utils/line-path.mjs +23 -12
  18. package/esm2022/utils/math.mjs +24 -0
  19. package/esm2022/utils/resize.mjs +36 -23
  20. package/esm2022/utils/vector.mjs +33 -0
  21. package/fesm2022/plait-common.mjs +242 -165
  22. package/fesm2022/plait-common.mjs.map +1 -1
  23. package/package.json +1 -1
  24. package/plugins/with-resize.d.ts +3 -21
  25. package/public-api.d.ts +1 -0
  26. package/types/resize.d.ts +30 -0
  27. package/utils/direction.d.ts +2 -7
  28. package/utils/drawing/index.d.ts +1 -0
  29. package/utils/drawing/resize-handle.d.ts +4 -0
  30. package/utils/elbow-line-route.d.ts +17 -2
  31. package/utils/index.d.ts +3 -1
  32. package/utils/line-path.d.ts +1 -1
  33. package/utils/math.d.ts +3 -0
  34. package/utils/resize.d.ts +10 -8
  35. package/utils/vector.d.ts +5 -0
  36. package/esm2022/utils/rectangle.mjs +0 -16
  37. package/utils/rectangle.d.ts +0 -7
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plait/common",
3
- "version": "0.50.1",
3
+ "version": "0.51.1",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^15.2.0",
6
6
  "@angular/core": "^15.2.0",
@@ -1,22 +1,4 @@
1
- import { PlaitBoard, PlaitElement, Point, ResizeCursorClass } from '@plait/core';
1
+ import { PlaitBoard } from '@plait/core';
2
2
  import { ResizeHandle } from '../constants/resize';
3
- import { ResizeRef } from '../utils/resize';
4
- export interface WithResizeOptions<T extends PlaitElement = PlaitElement, K = ResizeHandle> {
5
- key: string;
6
- canResize: () => boolean;
7
- detect: (point: Point) => ResizeDetectResult<T, K> | null;
8
- onResize: (resizeRef: ResizeRef<T, K>, resizeState: ResizeState) => void;
9
- afterResize?: (resizeRef: ResizeRef<T, K>) => void;
10
- beforeResize?: (resizeRef: ResizeRef<T, K>) => void;
11
- }
12
- export interface ResizeDetectResult<T extends PlaitElement = PlaitElement, K = ResizeHandle> {
13
- element: T;
14
- handle: K;
15
- cursorClass?: ResizeCursorClass;
16
- }
17
- export interface ResizeState {
18
- offsetX: number;
19
- offsetY: number;
20
- endTransformPoint: Point;
21
- }
22
- export declare const withResize: <T extends PlaitElement = PlaitElement, K = ResizeHandle>(board: PlaitBoard, options: WithResizeOptions<T, K>) => PlaitBoard;
3
+ import { PlaitElementOrArray, WithResizeOptions } from '../types/resize';
4
+ export declare const withResize: <T extends PlaitElementOrArray = PlaitElementOrArray, K = ResizeHandle>(board: PlaitBoard, options: WithResizeOptions<T, K>) => PlaitBoard;
package/public-api.d.ts CHANGED
@@ -7,3 +7,4 @@ export * from './utils';
7
7
  export * from './core/plugin-element';
8
8
  export * from './core/image-base.component';
9
9
  export * from './algorithms';
10
+ export * from './types/resize';
@@ -0,0 +1,30 @@
1
+ import { Path, PlaitElement, Point, RectangleClient, ResizeCursorClass } from '@plait/core';
2
+ import { ResizeHandle } from '../constants/resize';
3
+ export type PlaitElementOrArray = PlaitElement | PlaitElement[];
4
+ export interface WithResizeOptions<T extends PlaitElementOrArray = PlaitElementOrArray, K = ResizeHandle> {
5
+ key: string;
6
+ canResize: () => boolean;
7
+ hitTest: (point: Point) => ResizeHitTestRef<T, K> | null;
8
+ onResize: (resizeRef: ResizeRef<T, K>, resizeState: ResizeState) => void;
9
+ afterResize?: (resizeRef: ResizeRef<T, K>) => void;
10
+ beforeResize?: (resizeRef: ResizeRef<T, K>) => void;
11
+ }
12
+ export interface ResizeHitTestRef<T extends PlaitElementOrArray = PlaitElementOrArray, K = ResizeHandle> {
13
+ element: T;
14
+ rectangle?: RectangleClient;
15
+ handle: K;
16
+ handleIndex?: number;
17
+ cursorClass?: ResizeCursorClass;
18
+ }
19
+ export interface ResizeState {
20
+ startPoint: Point;
21
+ endPoint: Point;
22
+ isShift: boolean;
23
+ }
24
+ export interface ResizeRef<T extends PlaitElementOrArray = PlaitElementOrArray, K = ResizeHandle> {
25
+ element: T;
26
+ rectangle?: RectangleClient;
27
+ path: Path | Path[];
28
+ handle: K;
29
+ handleIndex?: number;
30
+ }
@@ -1,4 +1,4 @@
1
- import { Direction, Point, PointOfRectangle, Vector } from '@plait/core';
1
+ import { Direction, DirectionFactor, Point, PointOfRectangle, Vector } from '@plait/core';
2
2
  export declare function getDirectionByPointOfRectangle(point: PointOfRectangle): Direction | undefined;
3
3
  /**
4
4
  * this function accepts vector parameter, the vector parameter vector is based on the screen coordinate system
@@ -7,8 +7,6 @@ export declare function getDirectionByPointOfRectangle(point: PointOfRectangle):
7
7
  * if the vector has two directions, the function will return the string in which direction it is closer.
8
8
  */
9
9
  export declare function getDirectionByVector(vector: Vector): Direction | null;
10
- export declare function getPointByVector(point: Point, vector: Vector, offset: number): Point;
11
- export declare function rotateVectorAnti90(vector: Vector): Vector;
12
10
  export declare function getDirectionBetweenPointAndPoint(source: Point, target: Point): Direction;
13
11
  export declare function getDirectionFactor(direction: Direction): {
14
12
  x: number;
@@ -23,7 +21,4 @@ export declare function getDirectionFactor(direction: Direction): {
23
21
  x: number;
24
22
  y: number;
25
23
  };
26
- export declare function getFactorByPoints(source: Point, target: Point): {
27
- x: number;
28
- y: number;
29
- };
24
+ export declare function getDirectionFactorByVectorComponent(vectorComponent: number): DirectionFactor;
@@ -0,0 +1 @@
1
+ export * from './resize-handle';
@@ -0,0 +1,4 @@
1
+ import { PlaitBoard, Point } from '@plait/core';
2
+ export declare const drawHandle: (board: PlaitBoard, centerPoint: Point) => SVGGElement;
3
+ export declare function drawFillPrimaryHandle(board: PlaitBoard, point: Point): SVGGElement;
4
+ export declare function drawPrimaryHandle(board: PlaitBoard, point: Point): SVGGElement;
@@ -11,8 +11,8 @@ export interface ElbowLineRouteOptions {
11
11
  targetRectangle: RectangleClient;
12
12
  }
13
13
  export interface RouteAdjustOptions {
14
- xAxis?: number;
15
- yAxis?: number;
14
+ centerX?: number;
15
+ centerY?: number;
16
16
  sourceRectangle: RectangleClient;
17
17
  targetRectangle: RectangleClient;
18
18
  }
@@ -31,3 +31,18 @@ export declare const reduceRouteMargin: (sourceRectangle: RectangleClient, targe
31
31
  targetOffset: number[];
32
32
  };
33
33
  export declare const getNextPoint: (point: Point, outerRectangle: RectangleClient, direction: Direction) => Point;
34
+ export declare const getSourceAndTargetOuterRectangle: (sourceRectangle: RectangleClient, targetRectangle: RectangleClient) => {
35
+ sourceOuterRectangle: {
36
+ x: number;
37
+ y: number;
38
+ width: number;
39
+ height: number;
40
+ };
41
+ targetOuterRectangle: {
42
+ x: number;
43
+ y: number;
44
+ width: number;
45
+ height: number;
46
+ };
47
+ };
48
+ export declare const isSourceAndTargetIntersect: (options: ElbowLineRouteOptions) => boolean;
package/utils/index.d.ts CHANGED
@@ -1,10 +1,12 @@
1
1
  export * from './resize';
2
2
  export * from './line-path';
3
3
  export * from './hot-key';
4
- export * from './rectangle';
5
4
  export * from './creation-mode';
6
5
  export * from './direction';
7
6
  export * from './text';
8
7
  export * from './image';
9
8
  export * from './elbow-line-route';
10
9
  export * from './memorize';
10
+ export * from './vector';
11
+ export * from './math';
12
+ export * from './drawing';
@@ -14,6 +14,6 @@ export declare function getEdgeCenter({ sourceX, sourceY, targetX, targetY }: {
14
14
  export declare function getPointOnPolyline(points: Point[], ratio: number): number[];
15
15
  export declare function calculatePolylineLength(points: Point[]): number;
16
16
  export declare function getRatioByPoint(points: Point[], point: Point): number;
17
- export declare function isPointOnLineSegment(point: Point, startPoint: Point, endPoint: Point): boolean;
18
17
  export declare const removeDuplicatePoints: (points: Point[]) => Point[];
18
+ export declare function simplifyOrthogonalPoints(points: Point[]): Point[];
19
19
  export declare const getExtendPoint: (source: Point, target: Point, extendDistance: number) => Point;
@@ -0,0 +1,3 @@
1
+ import { Point } from '@plait/core';
2
+ export declare function isPointOnSegment(point: Point, startPoint: Point, endPoint: Point): boolean;
3
+ export declare const getCrossingPointsBetweenPointAndSegment: (point: Point, startPoint: Point, endPoint: Point) => Point[];
package/utils/resize.d.ts CHANGED
@@ -1,10 +1,9 @@
1
- import { Path, PlaitBoard, PlaitElement, RectangleClient, ResizeCursorClass } from '@plait/core';
1
+ import { PlaitBoard, Point, RectangleClient, ResizeCursorClass } from '@plait/core';
2
2
  import { ResizeHandle } from '../constants/resize';
3
- export interface ResizeRef<T extends PlaitElement = PlaitElement, K = ResizeHandle> {
4
- element: T;
5
- path: Path;
6
- handle: K;
7
- }
3
+ import { PlaitElementOrArray, ResizeRef } from '../types/resize';
4
+ export declare const getResizeHandleByIndex: (index: number) => ResizeHandle;
5
+ export declare const getIndexByResizeHandle: (resizeHandle: ResizeHandle) => number;
6
+ export declare const getSymmetricHandleIndex: (board: PlaitBoard, index: number) => number;
8
7
  export declare const getRectangleResizeHandleRefs: (rectangle: RectangleClient, diameter: number) => {
9
8
  rectangle: {
10
9
  x: number;
@@ -15,8 +14,11 @@ export declare const getRectangleResizeHandleRefs: (rectangle: RectangleClient,
15
14
  handle: ResizeHandle;
16
15
  cursorClass: ResizeCursorClass;
17
16
  }[];
17
+ export declare const getResizeHandlePointByIndex: (rectangle: RectangleClient, index: number) => Point;
18
18
  export declare const IS_RESIZING: WeakMap<PlaitBoard, ResizeRef<any, any>>;
19
19
  export declare const isResizing: (board: PlaitBoard) => boolean;
20
- export declare const isResizingByCondition: <T extends PlaitElement, K>(board: PlaitBoard, match: (resizeRef: ResizeRef<T, K>) => boolean) => boolean;
21
- export declare const addResizing: <T extends PlaitElement, K>(board: PlaitBoard, resizeRef: ResizeRef<T, K>, key: string) => void;
20
+ export declare const isResizingByCondition: <T extends PlaitElementOrArray, K>(board: PlaitBoard, match: (resizeRef: ResizeRef<T, K>) => boolean) => boolean;
21
+ export declare const addResizing: <T extends PlaitElementOrArray, K>(board: PlaitBoard, resizeRef: ResizeRef<T, K>, key: string) => void;
22
22
  export declare const removeResizing: (board: PlaitBoard, key: string) => void;
23
+ export declare const isEdgeHandle: (board: PlaitBoard, handle: ResizeHandle) => boolean;
24
+ export declare const isCornerHandle: (board: PlaitBoard, handle: ResizeHandle) => boolean;
@@ -0,0 +1,5 @@
1
+ import { Point, Vector } from '@plait/core';
2
+ export declare function getUnitVectorByPointAndPoint(point1: Point, point2: Point): Point;
3
+ export declare function getPointByVector(point: Point, vector: Vector, component: number): Point;
4
+ export declare function getPointByUnitVectorAndVectorComponent(point: Point, unitVector: Vector, vectorComponent: number, isHorizontal: boolean): Point;
5
+ export declare function rotateVectorAnti90(vector: Vector): Vector;
@@ -1,16 +0,0 @@
1
- export const getRectangleByPoints = (points) => {
2
- let minX = Infinity, maxX = -Infinity, minY = Infinity, maxY = -Infinity;
3
- points.forEach(point => {
4
- minX = Math.min(point[0], minX);
5
- maxX = Math.max(point[0], maxX);
6
- minY = Math.min(point[1], minY);
7
- maxY = Math.max(point[1], maxY);
8
- });
9
- return {
10
- x: minX,
11
- y: minY,
12
- width: maxX - minX,
13
- height: maxY - minY
14
- };
15
- };
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjdGFuZ2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy91dGlscy9yZWN0YW5nbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFlLEVBQUUsRUFBRTtJQUNwRCxJQUFJLElBQUksR0FBRyxRQUFRLEVBQ2YsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUNoQixJQUFJLEdBQUcsUUFBUSxFQUNmLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQztJQUNyQixNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ25CLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU87UUFDSCxDQUFDLEVBQUUsSUFBSTtRQUNQLENBQUMsRUFBRSxJQUFJO1FBQ1AsS0FBSyxFQUFFLElBQUksR0FBRyxJQUFJO1FBQ2xCLE1BQU0sRUFBRSxJQUFJLEdBQUcsSUFBSTtLQUN0QixDQUFDO0FBQ04sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9pbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBnZXRSZWN0YW5nbGVCeVBvaW50cyA9IChwb2ludHM6IFBvaW50W10pID0+IHtcbiAgICBsZXQgbWluWCA9IEluZmluaXR5LFxuICAgICAgICBtYXhYID0gLUluZmluaXR5LFxuICAgICAgICBtaW5ZID0gSW5maW5pdHksXG4gICAgICAgIG1heFkgPSAtSW5maW5pdHk7XG4gICAgcG9pbnRzLmZvckVhY2gocG9pbnQgPT4ge1xuICAgICAgICBtaW5YID0gTWF0aC5taW4ocG9pbnRbMF0sIG1pblgpO1xuICAgICAgICBtYXhYID0gTWF0aC5tYXgocG9pbnRbMF0sIG1heFgpO1xuICAgICAgICBtaW5ZID0gTWF0aC5taW4ocG9pbnRbMV0sIG1pblkpO1xuICAgICAgICBtYXhZID0gTWF0aC5tYXgocG9pbnRbMV0sIG1heFkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogbWluWCxcbiAgICAgICAgeTogbWluWSxcbiAgICAgICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgICAgICBoZWlnaHQ6IG1heFkgLSBtaW5ZXG4gICAgfTtcbn07XG4iXX0=
@@ -1,7 +0,0 @@
1
- import { Point } from '@plait/core';
2
- export declare const getRectangleByPoints: (points: Point[]) => {
3
- x: number;
4
- y: number;
5
- width: number;
6
- height: number;
7
- };