@plait/draw 0.1.0-next.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.
Files changed (91) hide show
  1. package/README.md +3 -0
  2. package/constants/geometry.d.ts +27 -0
  3. package/constants/index.d.ts +2 -0
  4. package/constants/line.d.ts +4 -0
  5. package/constants/pointer.d.ts +10 -0
  6. package/esm2022/constants/geometry.mjs +28 -0
  7. package/esm2022/constants/index.mjs +3 -0
  8. package/esm2022/constants/line.mjs +5 -0
  9. package/esm2022/constants/pointer.mjs +19 -0
  10. package/esm2022/generator/geometry-shape.generator.mjs +22 -0
  11. package/esm2022/generator/line-active.generator.mjs +36 -0
  12. package/esm2022/generator/line.generator.mjs +43 -0
  13. package/esm2022/geometry.component.mjs +118 -0
  14. package/esm2022/interfaces/geometry.mjs +20 -0
  15. package/esm2022/interfaces/index.mjs +24 -0
  16. package/esm2022/interfaces/line.mjs +12 -0
  17. package/esm2022/interfaces/text.mjs +2 -0
  18. package/esm2022/line.component.mjs +152 -0
  19. package/esm2022/plait-draw.mjs +5 -0
  20. package/esm2022/plugins/with-draw-fragment.mjs +51 -0
  21. package/esm2022/plugins/with-draw-hotkey.mjs +19 -0
  22. package/esm2022/plugins/with-draw.mjs +76 -0
  23. package/esm2022/plugins/with-geometry-create.mjs +164 -0
  24. package/esm2022/plugins/with-geometry-resize.mjs +71 -0
  25. package/esm2022/plugins/with-line-bound-reaction.mjs +45 -0
  26. package/esm2022/plugins/with-line-create.mjs +66 -0
  27. package/esm2022/plugins/with-line-resize.mjs +52 -0
  28. package/esm2022/plugins/with-line-text.mjs +55 -0
  29. package/esm2022/public-api.mjs +5 -0
  30. package/esm2022/transforms/geometry-text.mjs +54 -0
  31. package/esm2022/transforms/geometry.mjs +31 -0
  32. package/esm2022/transforms/index.mjs +14 -0
  33. package/esm2022/transforms/line.mjs +16 -0
  34. package/esm2022/utils/clipboard.mjs +23 -0
  35. package/esm2022/utils/create-mode.mjs +13 -0
  36. package/esm2022/utils/engine/diamond.mjs +20 -0
  37. package/esm2022/utils/engine/ellipse.mjs +55 -0
  38. package/esm2022/utils/engine/index.mjs +18 -0
  39. package/esm2022/utils/engine/parallelogram.mjs +30 -0
  40. package/esm2022/utils/engine/rectangle.mjs +18 -0
  41. package/esm2022/utils/engine/round-rectangle.mjs +49 -0
  42. package/esm2022/utils/geometry-style/stroke.mjs +17 -0
  43. package/esm2022/utils/geometry.mjs +84 -0
  44. package/esm2022/utils/index.mjs +5 -0
  45. package/esm2022/utils/line.mjs +145 -0
  46. package/esm2022/utils/position/geometry.mjs +28 -0
  47. package/esm2022/utils/position/line.mjs +34 -0
  48. package/esm2022/utils/selected.mjs +15 -0
  49. package/fesm2022/plait-draw.mjs +1602 -0
  50. package/fesm2022/plait-draw.mjs.map +1 -0
  51. package/generator/geometry-shape.generator.d.ts +8 -0
  52. package/generator/line-active.generator.d.ts +9 -0
  53. package/generator/line.generator.d.ts +8 -0
  54. package/geometry.component.d.ts +27 -0
  55. package/index.d.ts +5 -0
  56. package/interfaces/geometry.d.ts +43 -0
  57. package/interfaces/index.d.ts +13 -0
  58. package/interfaces/line.d.ts +44 -0
  59. package/interfaces/text.d.ts +5 -0
  60. package/line.component.d.ts +36 -0
  61. package/package.json +25 -0
  62. package/plugins/with-draw-fragment.d.ts +2 -0
  63. package/plugins/with-draw-hotkey.d.ts +2 -0
  64. package/plugins/with-draw.d.ts +2 -0
  65. package/plugins/with-geometry-create.d.ts +3 -0
  66. package/plugins/with-geometry-resize.d.ts +2 -0
  67. package/plugins/with-line-bound-reaction.d.ts +2 -0
  68. package/plugins/with-line-create.d.ts +2 -0
  69. package/plugins/with-line-resize.d.ts +2 -0
  70. package/plugins/with-line-text.d.ts +2 -0
  71. package/public-api.d.ts +4 -0
  72. package/styles/styles.scss +16 -0
  73. package/transforms/geometry-text.d.ts +5 -0
  74. package/transforms/geometry.d.ts +6 -0
  75. package/transforms/index.d.ts +10 -0
  76. package/transforms/line.d.ts +5 -0
  77. package/utils/clipboard.d.ts +4 -0
  78. package/utils/create-mode.d.ts +7 -0
  79. package/utils/engine/diamond.d.ts +2 -0
  80. package/utils/engine/ellipse.d.ts +4 -0
  81. package/utils/engine/index.d.ts +3 -0
  82. package/utils/engine/parallelogram.d.ts +4 -0
  83. package/utils/engine/rectangle.d.ts +2 -0
  84. package/utils/engine/round-rectangle.d.ts +5 -0
  85. package/utils/geometry-style/stroke.d.ts +5 -0
  86. package/utils/geometry.d.ts +16 -0
  87. package/utils/index.d.ts +4 -0
  88. package/utils/line.d.ts +16 -0
  89. package/utils/position/geometry.d.ts +13 -0
  90. package/utils/position/line.d.ts +10 -0
  91. package/utils/selected.d.ts +5 -0
package/package.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "@plait/draw",
3
+ "version": "0.1.0-next.3",
4
+ "peerDependencies": {
5
+ "@angular/common": "^16.0.0",
6
+ "@angular/core": "^16.0.0"
7
+ },
8
+ "dependencies": {
9
+ "tslib": "^2.3.0"
10
+ },
11
+ "module": "fesm2022/plait-draw.mjs",
12
+ "typings": "index.d.ts",
13
+ "exports": {
14
+ "./package.json": {
15
+ "default": "./package.json"
16
+ },
17
+ ".": {
18
+ "types": "./index.d.ts",
19
+ "esm2022": "./esm2022/plait-draw.mjs",
20
+ "esm": "./esm2022/plait-draw.mjs",
21
+ "default": "./fesm2022/plait-draw.mjs"
22
+ }
23
+ },
24
+ "sideEffects": false
25
+ }
@@ -0,0 +1,2 @@
1
+ import { PlaitBoard } from '@plait/core';
2
+ export declare const withDrawFragment: (baseBoard: PlaitBoard) => PlaitBoard;
@@ -0,0 +1,2 @@
1
+ import { PlaitBoard } from '@plait/core';
2
+ export declare const withDrawHotkey: (board: PlaitBoard) => PlaitBoard;
@@ -0,0 +1,2 @@
1
+ import { PlaitBoard } from '@plait/core';
2
+ export declare const withDraw: (board: PlaitBoard) => PlaitBoard;
@@ -0,0 +1,3 @@
1
+ import { PlaitBoard } from '@plait/core';
2
+ export declare const withGeometryCreateByDrag: (board: PlaitBoard) => PlaitBoard;
3
+ export declare const withGeometryCreateByDraw: (board: PlaitBoard) => PlaitBoard;
@@ -0,0 +1,2 @@
1
+ import { PlaitBoard } from '@plait/core';
2
+ export declare const withGeometryResize: (board: PlaitBoard) => PlaitBoard;
@@ -0,0 +1,2 @@
1
+ import { PlaitBoard } from '@plait/core';
2
+ export declare const withLineBoundReaction: (board: PlaitBoard) => PlaitBoard;
@@ -0,0 +1,2 @@
1
+ import { PlaitBoard } from '@plait/core';
2
+ export declare const withLineCreateByDraw: (board: PlaitBoard) => PlaitBoard;
@@ -0,0 +1,2 @@
1
+ import { PlaitBoard } from '@plait/core';
2
+ export declare const withLineResize: (board: PlaitBoard) => PlaitBoard;
@@ -0,0 +1,2 @@
1
+ import { PlaitBoard } from '@plait/core';
2
+ export declare const withLineText: (board: PlaitBoard) => PlaitBoard;
@@ -0,0 +1,4 @@
1
+ export * from './interfaces';
2
+ export * from './plugins/with-draw';
3
+ export * from './constants';
4
+ export * from './utils';
@@ -0,0 +1,16 @@
1
+ .plait-board-container {
2
+ &.pointer-text {
3
+ .board-host-svg {
4
+ cursor: default;
5
+ }
6
+ }
7
+ &.pointer-rectangle,
8
+ &.pointer-line {
9
+ .board-host-svg {
10
+ cursor: crosshair;
11
+ }
12
+ }
13
+ &.draw-line-resizing .element-active-host .line-handle {
14
+ display: none;
15
+ }
16
+ }
@@ -0,0 +1,5 @@
1
+ import { PlaitBoard } from '@plait/core';
2
+ import { Element } from 'slate';
3
+ import { PlaitGeometry } from '../interfaces';
4
+ export declare const setText: (board: PlaitBoard, element: PlaitGeometry, text: Element, width: number, textHeight: number) => void;
5
+ export declare const setTextSize: (board: PlaitBoard, element: PlaitGeometry, textWidth: number, textHeight: number) => void;
@@ -0,0 +1,6 @@
1
+ import { PlaitBoard, Point, Path } from '@plait/core';
2
+ import { GeometryShape } from '../interfaces';
3
+ import { Element } from 'slate';
4
+ export declare const insertGeometry: (board: PlaitBoard, points: [Point, Point], shape: GeometryShape) => void;
5
+ export declare const insertText: (board: PlaitBoard, points: [Point, Point], text?: string | Element) => void;
6
+ export declare const resizeGeometry: (board: PlaitBoard, points: [Point, Point], textHeight: number, path: Path) => void;
@@ -0,0 +1,10 @@
1
+ export declare const DrawTransforms: {
2
+ setText: (board: import("@plait/core").PlaitBoard, element: import("@plait/draw").PlaitGeometry, text: import("slate").BaseElement, width: number, textHeight: number) => void;
3
+ insertGeometry: (board: import("@plait/core").PlaitBoard, points: [import("@plait/core").Point, import("@plait/core").Point], shape: import("@plait/draw").GeometryShape) => void;
4
+ resizeGeometry: (board: import("@plait/core").PlaitBoard, points: [import("@plait/core").Point, import("@plait/core").Point], textHeight: number, path: import("@plait/core").Path) => void;
5
+ insertText: (board: import("@plait/core").PlaitBoard, points: [import("@plait/core").Point, import("@plait/core").Point], text?: string | import("slate").BaseElement) => void;
6
+ setTextSize: (board: import("@plait/core").PlaitBoard, element: import("@plait/draw").PlaitGeometry, textWidth: number, textHeight: number) => void;
7
+ resizeLine: (board: import("@plait/core").PlaitBoard, options: Partial<import("@plait/draw").PlaitLine>, path: import("@plait/core").Path) => void;
8
+ setLineTexts: (board: import("@plait/core").PlaitBoard, element: import("@plait/draw").PlaitLine, texts: import("@plait/draw").LineText[]) => void;
9
+ removeLineText: (board: import("@plait/core").PlaitBoard, element: import("@plait/draw").PlaitLine, index: number) => void;
10
+ };
@@ -0,0 +1,5 @@
1
+ import { Path, PlaitBoard } from '@plait/core';
2
+ import { LineText, PlaitLine } from '../interfaces';
3
+ export declare const resizeLine: (board: PlaitBoard, options: Partial<PlaitLine>, path: Path) => void;
4
+ export declare const setLineTexts: (board: PlaitBoard, element: PlaitLine, texts: LineText[]) => void;
5
+ export declare const removeLineText: (board: PlaitBoard, element: PlaitLine, index: number) => void;
@@ -0,0 +1,4 @@
1
+ import { PlaitBoard, Point } from '@plait/core';
2
+ import { PlaitDrawElement, PlaitGeometry, PlaitLine } from '../interfaces';
3
+ export declare const buildClipboardData: (board: PlaitBoard, elements: PlaitDrawElement[], startPoint: Point) => (PlaitGeometry | PlaitLine)[];
4
+ export declare const insertClipboardData: (board: PlaitBoard, elements: PlaitDrawElement[], startPoint: Point) => void;
@@ -0,0 +1,7 @@
1
+ import { PlaitBoard } from '@plait/core';
2
+ export declare enum DrawCreateMode {
3
+ 'drag' = "drag",
4
+ 'draw' = "draw"
5
+ }
6
+ export declare const getCreateMode: (board: PlaitBoard) => DrawCreateMode | undefined;
7
+ export declare const setCreateMode: (board: PlaitBoard, mode: DrawCreateMode) => void;
@@ -0,0 +1,2 @@
1
+ import { ShapeEngine } from '../../interfaces';
2
+ export declare const DiamondEngine: ShapeEngine;
@@ -0,0 +1,4 @@
1
+ import { Point } from '@plait/core';
2
+ import { ShapeEngine } from '../../interfaces';
3
+ export declare const EllipseEngine: ShapeEngine;
4
+ export declare function getNearestPointBetweenPointAndEllipse(point: Point, center: Point, rx: number, ry: number, rotation?: number): Point;
@@ -0,0 +1,3 @@
1
+ import { GeometryShape, ShapeEngine } from '../../interfaces';
2
+ export declare const ShapeEngineMap: Record<GeometryShape, ShapeEngine>;
3
+ export declare const getEngine: (shape: GeometryShape) => ShapeEngine;
@@ -0,0 +1,4 @@
1
+ import { Point, RectangleClient } from '@plait/core';
2
+ import { ShapeEngine } from '../../interfaces';
3
+ export declare const ParallelogramEngine: ShapeEngine;
4
+ export declare const getParallelogramPoints: (rectangle: RectangleClient) => Point[];
@@ -0,0 +1,2 @@
1
+ import { ShapeEngine } from '../../interfaces';
2
+ export declare const RectangleEngine: ShapeEngine;
@@ -0,0 +1,5 @@
1
+ import { Point, RectangleClient } from '@plait/core';
2
+ import { ShapeEngine } from '../../interfaces';
3
+ export declare const RoundRectangleEngine: ShapeEngine;
4
+ export declare const getRoundRectangleRadius: (rectangle: RectangleClient) => number;
5
+ export declare function getNearestPointBetweenPointAndRoundRectangle(point: Point, rectangle: RectangleClient, radius: number): Point;
@@ -0,0 +1,5 @@
1
+ import { PlaitGeometry, PlaitLine } from '../../interfaces';
2
+ export declare const getStrokeWidthByElement: (element: PlaitGeometry | PlaitLine) => number;
3
+ export declare const getStrokeColorByElement: (element: PlaitGeometry | PlaitLine) => string;
4
+ export declare const getFillByElement: (element: PlaitGeometry | PlaitLine) => any;
5
+ export declare const getLineDashByElement: (element: PlaitGeometry | PlaitLine) => number[] | undefined;
@@ -0,0 +1,16 @@
1
+ import { PlaitBoard, Point, RectangleClient } from '@plait/core';
2
+ import { GeometryShape, PlaitGeometry } from '../interfaces/geometry';
3
+ import { Element } from 'slate';
4
+ import { Options } from 'roughjs/bin/core';
5
+ export declare const createGeometryElement: (shape: GeometryShape, points: [Point, Point], text: string | Element, options?: Pick<PlaitGeometry, 'fill' | 'strokeColor' | 'strokeWidth'>) => PlaitGeometry;
6
+ export declare const getPointsByCenterPoint: (point: Point, width: number, height: number) => [Point, Point];
7
+ export declare const getTextRectangle: (element: PlaitGeometry) => {
8
+ height: number;
9
+ width: number;
10
+ x: number;
11
+ y: number;
12
+ };
13
+ export declare const drawBoundMask: (board: PlaitBoard, element: PlaitGeometry) => SVGGElement;
14
+ export declare const drawGeometry: (board: PlaitBoard, outerRectangle: RectangleClient, shape: GeometryShape, options: Options) => SVGGElement;
15
+ export declare const getNearestPoint: (element: PlaitGeometry, point: Point, offset?: number) => Point;
16
+ export declare const getCenterPointsOnPolygon: (points: Point[]) => Point[];
@@ -0,0 +1,4 @@
1
+ export * from './line';
2
+ export * from './geometry';
3
+ export * from './create-mode';
4
+ export * from './selected';
@@ -0,0 +1,16 @@
1
+ import { Point, PlaitBoard, RectangleClient } from '@plait/core';
2
+ import { LineHandle, LineShape, PlaitGeometry, PlaitLine } from '../interfaces';
3
+ import { Options } from 'roughjs/bin/core';
4
+ export declare const createLineElement: (shape: LineShape, points: [Point, Point], source: LineHandle, target: LineHandle, options?: Pick<PlaitLine, 'strokeColor' | 'strokeWidth'>) => PlaitLine;
5
+ export declare const getElbowPoints: (board: PlaitBoard, element: PlaitLine) => Point[];
6
+ export declare const isHitPolyLine: (pathPoints: Point[], point: Point, strokeWidth: number, expand?: number) => boolean;
7
+ export declare const getHitLineTextIndex: (board: PlaitBoard, element: PlaitLine, point: Point) => number;
8
+ export declare const isHitLineText: (board: PlaitBoard, element: PlaitLine, point: Point) => boolean;
9
+ export declare const drawElbowLine: (board: PlaitBoard, element: PlaitLine) => SVGGElement;
10
+ export declare const drawLineArrow: (element: PlaitLine, points: Point[], options: Options) => SVGGElement | null;
11
+ export declare const getSourcePoint: (board: PlaitBoard, element: PlaitLine) => Point;
12
+ export declare const getTargetPoint: (board: PlaitBoard, element: PlaitLine) => Point;
13
+ export declare const normalizeConnection: (geometry: PlaitGeometry, connection: Point) => Point;
14
+ export declare const transformPointToConnection: (board: PlaitBoard, point: Point, hitElement: PlaitGeometry) => Point;
15
+ export declare const getHitConnectorPoint: (movingPoint: Point, hitElement: PlaitGeometry, rectangle: RectangleClient) => Point | undefined;
16
+ export declare const getLineTextRectangle: (board: PlaitBoard, element: PlaitLine, index: number) => RectangleClient;
@@ -0,0 +1,13 @@
1
+ import { PlaitBoard, Point } from '@plait/core';
2
+ import { PlaitGeometry } from '../../interfaces';
3
+ export declare const getHitGeometryResizeHandleRef: (board: PlaitBoard, element: PlaitGeometry, point: Point) => {
4
+ rectangle: {
5
+ x: number;
6
+ y: number;
7
+ width: number;
8
+ height: number;
9
+ };
10
+ handle: import("@plait/common").ResizeHandle;
11
+ cursorClass: import("@plait/common").ResizeCursorClass;
12
+ } | undefined;
13
+ export declare const getHitOutlineGeometry: (board: PlaitBoard, point: Point, offset?: number) => PlaitGeometry | null;
@@ -0,0 +1,10 @@
1
+ import { PlaitBoard, Point, RectangleClient } from '@plait/core';
2
+ import { PlaitLine } from '../../interfaces';
3
+ export declare enum LineResizeHandle {
4
+ 'source' = "source",
5
+ 'target' = "target"
6
+ }
7
+ export declare const getHitLineResizeHandleRef: (board: PlaitBoard, element: PlaitLine, point: Point) => {
8
+ rectangle: RectangleClient;
9
+ handle: LineResizeHandle;
10
+ } | undefined;
@@ -0,0 +1,5 @@
1
+ import { PlaitBoard } from '@plait/core';
2
+ import { PlaitDrawElement, PlaitGeometry, PlaitLine } from '../interfaces';
3
+ export declare const getSelectedDrawElements: (board: PlaitBoard) => PlaitDrawElement[];
4
+ export declare const getSelectedGeometryElements: (board: PlaitBoard) => PlaitGeometry[];
5
+ export declare const getSelectedLineElements: (board: PlaitBoard) => PlaitLine[];