@plait/draw 0.77.3 → 0.78.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.
- package/fesm2022/plait-draw.mjs +2 -2
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/package.json +1 -3
- package/esm2022/arrow-line.component.mjs +0 -165
- package/esm2022/constants/default.mjs +0 -7
- package/esm2022/constants/geometry.mjs +0 -272
- package/esm2022/constants/image.mjs +0 -2
- package/esm2022/constants/index.mjs +0 -9
- package/esm2022/constants/line.mjs +0 -12
- package/esm2022/constants/pointer.mjs +0 -23
- package/esm2022/constants/swimlane.mjs +0 -25
- package/esm2022/constants/text.mjs +0 -2
- package/esm2022/constants/theme.mjs +0 -28
- package/esm2022/engines/basic-shapes/cloud.mjs +0 -146
- package/esm2022/engines/basic-shapes/comment.mjs +0 -56
- package/esm2022/engines/basic-shapes/cross.mjs +0 -33
- package/esm2022/engines/basic-shapes/diamond.mjs +0 -16
- package/esm2022/engines/basic-shapes/ellipse.mjs +0 -53
- package/esm2022/engines/basic-shapes/hexagon.mjs +0 -27
- package/esm2022/engines/basic-shapes/left-arrow.mjs +0 -30
- package/esm2022/engines/basic-shapes/octagon.mjs +0 -29
- package/esm2022/engines/basic-shapes/parallelogram.mjs +0 -26
- package/esm2022/engines/basic-shapes/pentagon-arrow.mjs +0 -27
- package/esm2022/engines/basic-shapes/pentagon.mjs +0 -30
- package/esm2022/engines/basic-shapes/polygon.mjs +0 -56
- package/esm2022/engines/basic-shapes/process-arrow.mjs +0 -26
- package/esm2022/engines/basic-shapes/rectangle.mjs +0 -26
- package/esm2022/engines/basic-shapes/right-arrow.mjs +0 -28
- package/esm2022/engines/basic-shapes/round-comment.mjs +0 -82
- package/esm2022/engines/basic-shapes/round-rectangle.mjs +0 -58
- package/esm2022/engines/basic-shapes/star.mjs +0 -39
- package/esm2022/engines/basic-shapes/trapezoid.mjs +0 -26
- package/esm2022/engines/basic-shapes/triangle.mjs +0 -34
- package/esm2022/engines/basic-shapes/two-way-arrow.mjs +0 -25
- package/esm2022/engines/flowchart/database.mjs +0 -84
- package/esm2022/engines/flowchart/delay.mjs +0 -44
- package/esm2022/engines/flowchart/display.mjs +0 -74
- package/esm2022/engines/flowchart/document.mjs +0 -81
- package/esm2022/engines/flowchart/hard-disk.mjs +0 -84
- package/esm2022/engines/flowchart/internal-storage.mjs +0 -47
- package/esm2022/engines/flowchart/manual-input.mjs +0 -33
- package/esm2022/engines/flowchart/manual-loop.mjs +0 -26
- package/esm2022/engines/flowchart/merge.mjs +0 -34
- package/esm2022/engines/flowchart/multi-document.mjs +0 -143
- package/esm2022/engines/flowchart/note-curly-left.mjs +0 -86
- package/esm2022/engines/flowchart/note-curly-right.mjs +0 -89
- package/esm2022/engines/flowchart/note-square.mjs +0 -46
- package/esm2022/engines/flowchart/off-page.mjs +0 -32
- package/esm2022/engines/flowchart/or.mjs +0 -20
- package/esm2022/engines/flowchart/predefined-process.mjs +0 -47
- package/esm2022/engines/flowchart/preparation.mjs +0 -27
- package/esm2022/engines/flowchart/stored-data.mjs +0 -79
- package/esm2022/engines/flowchart/summing-junction.mjs +0 -23
- package/esm2022/engines/flowchart/terminal.mjs +0 -68
- package/esm2022/engines/index.mjs +0 -130
- package/esm2022/engines/table/table.mjs +0 -101
- package/esm2022/engines/uml/activity-class.mjs +0 -47
- package/esm2022/engines/uml/actor.mjs +0 -119
- package/esm2022/engines/uml/assembly.mjs +0 -105
- package/esm2022/engines/uml/combined-fragment.mjs +0 -66
- package/esm2022/engines/uml/component-box.mjs +0 -61
- package/esm2022/engines/uml/component.mjs +0 -117
- package/esm2022/engines/uml/container.mjs +0 -44
- package/esm2022/engines/uml/deletion.mjs +0 -54
- package/esm2022/engines/uml/note.mjs +0 -58
- package/esm2022/engines/uml/package.mjs +0 -105
- package/esm2022/engines/uml/provided-interface.mjs +0 -92
- package/esm2022/engines/uml/required-interface.mjs +0 -81
- package/esm2022/engines/uml/template.mjs +0 -47
- package/esm2022/generators/arrow-line-auto-complete.generator.mjs +0 -46
- package/esm2022/generators/arrow-line.generator.mjs +0 -13
- package/esm2022/generators/geometry-shape.generator.mjs +0 -29
- package/esm2022/generators/index.mjs +0 -7
- package/esm2022/generators/line-active.generator.mjs +0 -84
- package/esm2022/generators/single-text.generator.mjs +0 -16
- package/esm2022/generators/table.generator.mjs +0 -25
- package/esm2022/generators/text.generator.mjs +0 -131
- package/esm2022/generators/vector-line-generator.mjs +0 -13
- package/esm2022/geometry.component.mjs +0 -145
- package/esm2022/image.component.mjs +0 -67
- package/esm2022/interfaces/arrow-line.mjs +0 -70
- package/esm2022/interfaces/element.mjs +0 -9
- package/esm2022/interfaces/engine.mjs +0 -2
- package/esm2022/interfaces/geometry.mjs +0 -82
- package/esm2022/interfaces/image.mjs +0 -2
- package/esm2022/interfaces/index.mjs +0 -92
- package/esm2022/interfaces/line.mjs +0 -2
- package/esm2022/interfaces/options.mjs +0 -2
- package/esm2022/interfaces/swimlane.mjs +0 -13
- package/esm2022/interfaces/table.mjs +0 -13
- package/esm2022/interfaces/text.mjs +0 -2
- package/esm2022/interfaces/vector-line.mjs +0 -10
- package/esm2022/plait-draw.mjs +0 -5
- package/esm2022/plugins/with-arrow-line-auto-complete-reaction.mjs +0 -43
- package/esm2022/plugins/with-arrow-line-auto-complete.mjs +0 -76
- package/esm2022/plugins/with-arrow-line-bound-reaction.mjs +0 -53
- package/esm2022/plugins/with-arrow-line-create.mjs +0 -51
- package/esm2022/plugins/with-arrow-line-resize.mjs +0 -158
- package/esm2022/plugins/with-arrow-line-text-move.mjs +0 -53
- package/esm2022/plugins/with-arrow-line-text.mjs +0 -73
- package/esm2022/plugins/with-draw-fragment.mjs +0 -98
- package/esm2022/plugins/with-draw-hotkey.mjs +0 -45
- package/esm2022/plugins/with-draw-resize.mjs +0 -269
- package/esm2022/plugins/with-draw-rotate.mjs +0 -132
- package/esm2022/plugins/with-draw.mjs +0 -144
- package/esm2022/plugins/with-geometry-create.mjs +0 -182
- package/esm2022/plugins/with-swimlane-create.mjs +0 -127
- package/esm2022/plugins/with-swimlane.mjs +0 -21
- package/esm2022/plugins/with-table-resize.mjs +0 -135
- package/esm2022/plugins/with-table.mjs +0 -109
- package/esm2022/plugins/with-vector-line-create.mjs +0 -85
- package/esm2022/plugins/with-vector-line-resize.mjs +0 -61
- package/esm2022/public-api.mjs +0 -11
- package/esm2022/table.component.mjs +0 -162
- package/esm2022/transforms/arrow-line.mjs +0 -66
- package/esm2022/transforms/common.mjs +0 -36
- package/esm2022/transforms/geometry-text.mjs +0 -59
- package/esm2022/transforms/geometry.mjs +0 -43
- package/esm2022/transforms/image.mjs +0 -33
- package/esm2022/transforms/index.mjs +0 -36
- package/esm2022/transforms/multi-text-geometry-text.mjs +0 -15
- package/esm2022/transforms/swimlane.mjs +0 -164
- package/esm2022/transforms/table-text.mjs +0 -44
- package/esm2022/transforms/table.mjs +0 -36
- package/esm2022/transforms/vector-line.mjs +0 -13
- package/esm2022/utils/arrow-line/arrow-line-arrow.mjs +0 -123
- package/esm2022/utils/arrow-line/arrow-line-basic.mjs +0 -205
- package/esm2022/utils/arrow-line/arrow-line-common.mjs +0 -162
- package/esm2022/utils/arrow-line/arrow-line-resize.mjs +0 -309
- package/esm2022/utils/arrow-line/elbow.mjs +0 -114
- package/esm2022/utils/arrow-line/index.mjs +0 -6
- package/esm2022/utils/clipboard.mjs +0 -55
- package/esm2022/utils/common.mjs +0 -184
- package/esm2022/utils/geometry.mjs +0 -178
- package/esm2022/utils/hit.mjs +0 -238
- package/esm2022/utils/index.mjs +0 -17
- package/esm2022/utils/line.mjs +0 -64
- package/esm2022/utils/memorize.mjs +0 -93
- package/esm2022/utils/multi-text-geometry.mjs +0 -61
- package/esm2022/utils/polygon.mjs +0 -30
- package/esm2022/utils/position/arrow-line.mjs +0 -20
- package/esm2022/utils/position/geometry.mjs +0 -30
- package/esm2022/utils/position/line.mjs +0 -51
- package/esm2022/utils/selected.mjs +0 -39
- package/esm2022/utils/shape.mjs +0 -11
- package/esm2022/utils/snap-resizing.mjs +0 -185
- package/esm2022/utils/style/index.mjs +0 -2
- package/esm2022/utils/style/stroke.mjs +0 -21
- package/esm2022/utils/swimlane.mjs +0 -124
- package/esm2022/utils/table-selected.mjs +0 -21
- package/esm2022/utils/table.mjs +0 -172
- package/esm2022/utils/uml.mjs +0 -90
- package/esm2022/utils/vector-line.mjs +0 -71
- package/esm2022/vector-line.component.mjs +0 -55
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import { PlaitBoard, RectangleClient, Transforms, isSelectedElement, getSelectedElements, hasValidAngle, } from '@plait/core';
|
|
2
|
-
import { getIndexByResizeHandle, isCornerHandle, withResize, normalizeShapePoints } from '@plait/common';
|
|
3
|
-
import { getCellsWithPoints, updateColumns, updateRows } from '../utils/table';
|
|
4
|
-
import { getHitRectangleResizeHandleRef } from '../utils/position/geometry';
|
|
5
|
-
import { getResizeOriginPointAndHandlePoint, getResizeZoom, movePointByZoomAndOriginPoint } from './with-draw-resize';
|
|
6
|
-
import { getSnapResizingRef, getSnapResizingRefOptions } from '../utils/snap-resizing';
|
|
7
|
-
import { PlaitDrawElement } from '../interfaces';
|
|
8
|
-
import { isSingleSelectTable } from '../utils';
|
|
9
|
-
const MIN_CELL_SIZE = 20;
|
|
10
|
-
export function withTableResize(board) {
|
|
11
|
-
let snapG;
|
|
12
|
-
const options = {
|
|
13
|
-
key: 'draw-table',
|
|
14
|
-
canResize: () => {
|
|
15
|
-
const selectedElements = getSelectedElements(board);
|
|
16
|
-
return isSingleSelectTable(board) && !hasValidAngle(selectedElements[0]);
|
|
17
|
-
},
|
|
18
|
-
hitTest: (point) => {
|
|
19
|
-
const selectedElements = getSelectedElements(board);
|
|
20
|
-
const hitElement = selectedElements[0];
|
|
21
|
-
// debugGenerator.clear();
|
|
22
|
-
if (hitElement && PlaitDrawElement.isElementByTable(hitElement)) {
|
|
23
|
-
let rectangle = board.getRectangle(hitElement);
|
|
24
|
-
// debugGenerator.drawRectangle(board, rectangle);
|
|
25
|
-
// debugGenerator.drawCircles(board, [point], 5);
|
|
26
|
-
let handleRef = getHitRectangleResizeHandleRef(board, rectangle, point, hitElement.angle);
|
|
27
|
-
if (handleRef) {
|
|
28
|
-
const selectElement = isSelectedElement(board, hitElement);
|
|
29
|
-
if ((selectElement && isSingleSelectTable(board)) || (!selectElement && !isCornerHandle(board, handleRef.handle))) {
|
|
30
|
-
return {
|
|
31
|
-
element: hitElement,
|
|
32
|
-
handle: handleRef.handle,
|
|
33
|
-
cursorClass: handleRef.cursorClass,
|
|
34
|
-
rectangle
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
const cells = getCellsWithPoints(board, hitElement);
|
|
39
|
-
for (let i = 0; i < cells.length; i++) {
|
|
40
|
-
rectangle = RectangleClient.getRectangleByPoints(cells[i].points);
|
|
41
|
-
handleRef = getHitRectangleResizeHandleRef(board, rectangle, point, 0);
|
|
42
|
-
if (handleRef && !isCornerHandle(board, handleRef.handle)) {
|
|
43
|
-
return {
|
|
44
|
-
element: hitElement,
|
|
45
|
-
handle: handleRef.handle,
|
|
46
|
-
cursorClass: handleRef.cursorClass,
|
|
47
|
-
rectangle,
|
|
48
|
-
options: {
|
|
49
|
-
cell: cells[i]
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return null;
|
|
56
|
-
},
|
|
57
|
-
onResize: (resizeRef, resizeState) => {
|
|
58
|
-
snapG?.remove();
|
|
59
|
-
const path = PlaitBoard.findPath(board, resizeRef.element);
|
|
60
|
-
if (resizeRef.options?.cell && resizeRef.rectangle) {
|
|
61
|
-
const handleIndex = getIndexByResizeHandle(resizeRef.handle);
|
|
62
|
-
const { originPoint, handlePoint } = getResizeOriginPointAndHandlePoint(board, handleIndex, resizeRef.rectangle);
|
|
63
|
-
const resizePoints = [resizeState.startPoint, resizeState.endPoint];
|
|
64
|
-
const { xZoom, yZoom } = getResizeZoom(resizePoints, originPoint, handlePoint, false, false);
|
|
65
|
-
const originPoints = resizeRef.options?.cell.points;
|
|
66
|
-
const targetPoints = originPoints.map((p) => {
|
|
67
|
-
return movePointByZoomAndOriginPoint(p, originPoint, xZoom, yZoom);
|
|
68
|
-
});
|
|
69
|
-
const offsetX = targetPoints[1][0] - originPoints[1][0];
|
|
70
|
-
const offsetY = targetPoints[1][1] - originPoints[1][1];
|
|
71
|
-
const width = targetPoints[1][0] - targetPoints[0][0];
|
|
72
|
-
const height = targetPoints[1][1] - targetPoints[0][1];
|
|
73
|
-
if (offsetX !== 0 && width >= MIN_CELL_SIZE) {
|
|
74
|
-
const { columns, points } = updateColumns(resizeRef.element, resizeRef.options?.cell.columnId, width, offsetX);
|
|
75
|
-
Transforms.setNode(board, { columns, points }, path);
|
|
76
|
-
}
|
|
77
|
-
else if (offsetY !== 0 && height >= MIN_CELL_SIZE) {
|
|
78
|
-
const { rows, points } = updateRows(resizeRef.element, resizeRef.options?.cell.rowId, height, offsetY);
|
|
79
|
-
Transforms.setNode(board, { rows, points }, path);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
const isFromCorner = isCornerHandle(board, resizeRef.handle);
|
|
84
|
-
const isAspectRatio = resizeState.isShift;
|
|
85
|
-
const handleIndex = getIndexByResizeHandle(resizeRef.handle);
|
|
86
|
-
const { originPoint, handlePoint } = getResizeOriginPointAndHandlePoint(board, handleIndex, resizeRef.rectangle);
|
|
87
|
-
const resizeSnapRefOptions = getSnapResizingRefOptions(board, resizeRef, resizeState, {
|
|
88
|
-
originPoint,
|
|
89
|
-
handlePoint
|
|
90
|
-
}, isAspectRatio, isFromCorner);
|
|
91
|
-
const resizeSnapRef = getSnapResizingRef(board, [resizeRef.element], resizeSnapRefOptions);
|
|
92
|
-
snapG = resizeSnapRef.snapG;
|
|
93
|
-
PlaitBoard.getElementTopHost(board).append(snapG);
|
|
94
|
-
const points = resizeSnapRef.activePoints;
|
|
95
|
-
const originPoints = resizeRef.element.points;
|
|
96
|
-
const originRect = RectangleClient.getRectangleByPoints(originPoints);
|
|
97
|
-
const targetRect = RectangleClient.getRectangleByPoints(points);
|
|
98
|
-
const offsetWidth = targetRect.width - originRect.width;
|
|
99
|
-
const offsetHeight = targetRect.height - originRect.height;
|
|
100
|
-
let columns = [...resizeRef.element.columns];
|
|
101
|
-
let rows = [...resizeRef.element.rows];
|
|
102
|
-
if (offsetWidth !== 0) {
|
|
103
|
-
columns = columns.map((item) => {
|
|
104
|
-
if (item.width) {
|
|
105
|
-
return {
|
|
106
|
-
...item,
|
|
107
|
-
width: item.width + offsetWidth * (item.width / originRect.width)
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
return item;
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
if (offsetHeight !== 0) {
|
|
114
|
-
rows = rows.map((item) => {
|
|
115
|
-
if (item.height) {
|
|
116
|
-
return {
|
|
117
|
-
...item,
|
|
118
|
-
height: item.height + offsetHeight * (item.height / originRect.height)
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
return item;
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
Transforms.setNode(board, { points: normalizeShapePoints(points), columns, rows }, path);
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
afterResize: (resizeRef) => {
|
|
128
|
-
snapG?.remove();
|
|
129
|
-
snapG = null;
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
withResize(board, options);
|
|
133
|
-
return board;
|
|
134
|
-
}
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC10YWJsZS1yZXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtdGFibGUtcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBRVYsZUFBZSxFQUNmLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGFBQWEsR0FDaEIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUNILHNCQUFzQixFQUN0QixjQUFjLEVBS2QsVUFBVSxFQUVWLG9CQUFvQixFQUN2QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFDSCxrQ0FBa0MsRUFDbEMsYUFBYSxFQUNiLDZCQUE2QixFQUNoQyxNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFTL0MsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBRXpCLE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBc0I7SUFDbEQsSUFBSSxLQUF5QixDQUFDO0lBRTlCLE1BQU0sT0FBTyxHQUF3RTtRQUNqRixHQUFHLEVBQUUsWUFBWTtRQUNqQixTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ1osTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRCxPQUFPLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFB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QUFDOzZCQUNwRSxDQUFDO3dCQUNOLENBQUM7d0JBQ0QsT0FBTyxJQUFJLENBQUM7b0JBQ2hCLENBQUMsQ0FBQyxDQUFDO2dCQUNQLENBQUM7Z0JBQ0QsSUFBSSxZQUFZLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3JCLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7d0JBQ3JCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDOzRCQUNkLE9BQU87Z0NBQ0gsR0FBRyxJQUFJO2dDQUNQLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQzs2QkFDekUsQ0FBQzt3QkFDTixDQUFDO3dCQUNELE9BQU8sSUFBSSxDQUFDO29CQUNoQixDQUFDLENBQUMsQ0FBQztnQkFDUCxDQUFDO2dCQUNELFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM3RixDQUFDO1FBQ0wsQ0FBQztRQUNELFdBQVcsRUFBRSxDQUFDLFNBQXNFLEVBQUUsRUFBRTtZQUNwRixLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDaEIsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNqQixDQUFDO0tBQ0osQ0FBQztJQUVGLFVBQVUsQ0FBbUQsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRTdFLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFBsYWl0Qm9hcmQsXG4gICAgUG9pbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIFRyYW5zZm9ybXMsXG4gICAgaXNTZWxlY3RlZEVsZW1lbnQsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICBoYXNWYWxpZEFuZ2xlLFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdEJhc2VUYWJsZSwgUGxhaXRUYWJsZUJvYXJkLCBQbGFpdFRhYmxlQ2VsbFdpdGhQb2ludHMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RhYmxlJztcbmltcG9ydCB7XG4gICAgZ2V0SW5kZXhCeVJlc2l6ZUhhbmRsZSxcbiAgICBpc0Nvcm5lckhhbmRsZSxcbiAgICBSZXNpemVPcHRpb25zLFxuICAgIFJlc2l6ZUhhbmRsZSxcbiAgICBSZXNpemVSZWYsXG4gICAgUmVzaXplU3RhdGUsXG4gICAgd2l0aFJlc2l6ZSxcbiAgICBXaXRoUmVzaXplT3B0aW9ucyxcbiAgICBub3JtYWxpemVTaGFwZVBvaW50c1xufSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGdldENlbGxzV2l0aFBvaW50cywgdXBkYXRlQ29sdW1ucywgdXBkYXRlUm93cyB9IGZyb20gJy4uL3V0aWxzL3RhYmxlJztcbmltcG9ydCB7IGdldEhpdFJlY3RhbmdsZVJlc2l6ZUhhbmRsZVJlZiB9IGZyb20gJy4uL3V0aWxzL3Bvc2l0aW9uL2dlb21ldHJ5JztcbmltcG9ydCB7XG4gICAgZ2V0UmVzaXplT3JpZ2luUG9pbnRBbmRIYW5kbGVQb2ludCxcbiAgICBnZXRSZXNpemVab29tLFxuICAgIG1vdmVQb2ludEJ5Wm9vbUFuZE9yaWdpblBvaW50XG59IGZyb20gJy4vd2l0aC1kcmF3LXJlc2l6ZSc7XG5pbXBvcnQgeyBnZXRTbmFwUmVzaXppbmdSZWYsIGdldFNuYXBSZXNpemluZ1JlZk9wdGlvbnMgfSBmcm9tICcuLi91dGlscy9zbmFwLXJlc2l6aW5nJztcbmltcG9ydCB7IFBsYWl0RHJhd0VsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGlzU2luZ2xlU2VsZWN0VGFibGUgfSBmcm9tICcuLi91dGlscyc7XG5cbi8vIGNvbnN0IGRlYnVnS2V5ID0gJ2RlYnVnOnBsYWl0OnRhYmxlOnJlc2l6ZSc7XG4vLyBjb25zdCBkZWJ1Z0dlbmVyYXRvciA9IGNyZWF0ZURlYnVnR2VuZXJhdG9yKGRlYnVnS2V5KTtcblxuaW50ZXJmYWNlIFRhYmxlUmVzaXplT3B0aW9ucyBleHRlbmRzIFJlc2l6ZU9wdGlvbnMge1xuICAgIGNlbGw6IFBsYWl0VGFibGVDZWxsV2l0aFBvaW50cztcbn1cblxuY29uc3QgTUlOX0NFTExfU0laRSA9IDIwO1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFRhYmxlUmVzaXplKGJvYXJkOiBQbGFpdFRhYmxlQm9hcmQpIHtcbiAgICBsZXQgc25hcEc6IFNWR0dFbGVtZW50IHwgbnVsbDtcblxuICAgIGNvbnN0IG9wdGlvbnM6IFdpdGhSZXNpemVPcHRpb25zPFBsYWl0QmFzZVRhYmxlLCBSZXNpemVIYW5kbGUsIFRhYmxlUmVzaXplT3B0aW9ucz4gPSB7XG4gICAgICAgIGtleTogJ2RyYXctdGFibGUnLFxuICAgICAgICBjYW5SZXNpemU6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgIHJldHVybiBpc1NpbmdsZVNlbGVjdFRhYmxlKGJvYXJkKSAmJiAhaGFzVmFsaWRBbmdsZShzZWxlY3RlZEVsZW1lbnRzWzBdKTtcbiAgICAgICAgfSxcbiAgICAgICAgaGl0VGVzdDogKHBvaW50OiBQb2ludCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgY29uc3QgaGl0RWxlbWVudCA9IHNlbGVjdGVkRWxlbWVudHNbMF07XG4gICAgICAgICAgICAvLyBkZWJ1Z0dlbmVyYXRvci5jbGVhcigpO1xuICAgICAgICAgICAgaWYgKGhpdEVsZW1lbnQgJiYgUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKGhpdEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlY3RhbmdsZSA9IGJvYXJkLmdldFJlY3RhbmdsZShoaXRFbGVtZW50KSBhcyBSZWN0YW5nbGVDbGllbnQ7XG4gICAgICAgICAgICAgICAgLy8gZGVidWdHZW5lcmF0b3IuZHJhd1JlY3RhbmdsZShib2FyZCwgcmVjdGFuZ2xlKTtcbiAgICAgICAgICAgICAgICAvLyBkZWJ1Z0dlbmVyYXRvci5kcmF3Q2lyY2xlcyhib2FyZCwgW3BvaW50XSwgNSk7XG4gICAgICAgICAgICAgICAgbGV0IGhhbmRsZVJlZiA9IGdldEhpdFJlY3RhbmdsZVJlc2l6ZUhhbmRsZVJlZihib2FyZCwgcmVjdGFuZ2xlLCBwb2ludCwgaGl0RWxlbWVudC5hbmdsZSk7XG4gICAgICAgICAgICAgICAgaWYgKGhhbmRsZVJlZikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RFbGVtZW50ID0gaXNTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIGhpdEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoKHNlbGVjdEVsZW1lbnQgJiYgaXNTaW5nbGVTZWxlY3RUYWJsZShib2FyZCkpIHx8ICghc2VsZWN0RWxlbWVudCAmJiAhaXNDb3JuZXJIYW5kbGUoYm9hcmQsIGhhbmRsZVJlZi5oYW5kbGUpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBoaXRFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZTogaGFuZGxlUmVmLmhhbmRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JDbGFzczogaGFuZGxlUmVmLmN1cnNvckNsYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3RhbmdsZVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBjZWxscyA9IGdldENlbGxzV2l0aFBvaW50cyhib2FyZCwgaGl0RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjZWxscy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoY2VsbHNbaV0ucG9pbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlUmVmID0gZ2V0SGl0UmVjdGFuZ2xlUmVzaXplSGFuZGxlUmVmKGJvYXJkLCByZWN0YW5nbGUsIHBvaW50LCAwKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhbmRsZVJlZiAmJiAhaXNDb3JuZXJIYW5kbGUoYm9hcmQsIGhhbmRsZVJlZi5oYW5kbGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGhpdEVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlOiBoYW5kbGVSZWYuaGFuZGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvckNsYXNzOiBoYW5kbGVSZWYuY3Vyc29yQ2xhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdGFuZ2xlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbDogY2VsbHNbaV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0sXG4gICAgICAgIG9uUmVzaXplOiAocmVzaXplUmVmOiBSZXNpemVSZWY8UGxhaXRCYXNlVGFibGUsIFJlc2l6ZUhhbmRsZSwgVGFibGVSZXNpemVPcHRpb25zPiwgcmVzaXplU3RhdGU6IFJlc2l6ZVN0YXRlKSA9PiB7XG4gICAgICAgICAgICBzbmFwRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgcmVzaXplUmVmLmVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKHJlc2l6ZVJlZi5vcHRpb25zPy5jZWxsICYmIHJlc2l6ZVJlZi5yZWN0YW5nbGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVJbmRleCA9IGdldEluZGV4QnlSZXNpemVIYW5kbGUocmVzaXplUmVmLmhhbmRsZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBvcmlnaW5Qb2ludCwgaGFuZGxlUG9pbnQgfSA9IGdldFJlc2l6ZU9yaWdpblBvaW50QW5kSGFuZGxlUG9pbnQoYm9hcmQsIGhhbmRsZUluZGV4LCByZXNpemVSZWYucmVjdGFuZ2xlISk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzaXplUG9pbnRzOiBbUG9pbnQsIFBvaW50XSA9IFtyZXNpemVTdGF0ZS5zdGFydFBvaW50LCByZXNpemVTdGF0ZS5lbmRQb2ludF07XG4gICAgICAgICAgICAgICAgY29uc3QgeyB4Wm9vbSwgeVpvb20gfSA9IGdldFJlc2l6ZVpvb20ocmVzaXplUG9pbnRzLCBvcmlnaW5Qb2ludCwgaGFuZGxlUG9pbnQsIGZhbHNlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luUG9pbnRzID0gcmVzaXplUmVmLm9wdGlvbnM/LmNlbGwucG9pbnRzO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFBvaW50cyA9IG9yaWdpblBvaW50cy5tYXAoKHApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vdmVQb2ludEJ5Wm9vbUFuZE9yaWdpblBvaW50KHAsIG9yaWdpblBvaW50LCB4Wm9vbSwgeVpvb20pO1xuICAgICAgICAgICAgICAgIH0pIGFzIFtQb2ludCwgUG9pbnRdO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9mZnNldFggPSB0YXJnZXRQb2ludHNbMV1bMF0gLSBvcmlnaW5Qb2ludHNbMV1bMF07XG4gICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0WSA9IHRhcmdldFBvaW50c1sxXVsxXSAtIG9yaWdpblBvaW50c1sxXVsxXTtcbiAgICAgICAgICAgICAgICBjb25zdCB3aWR0aCA9IHRhcmdldFBvaW50c1sxXVswXSAtIHRhcmdldFBvaW50c1swXVswXTtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSB0YXJnZXRQb2ludHNbMV1bMV0gLSB0YXJnZXRQb2ludHNbMF1bMV07XG4gICAgICAgICAgICAgICAgaWYgKG9mZnNldFggIT09IDAgJiYgd2lkdGggPj0gTUlOX0NFTExfU0laRSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGNvbHVtbnMsIHBvaW50cyB9ID0gdXBkYXRlQ29sdW1ucyhyZXNpemVSZWYuZWxlbWVudCwgcmVzaXplUmVmLm9wdGlvbnM/LmNlbGwuY29sdW1uSWQsIHdpZHRoLCBvZmZzZXRYKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IGNvbHVtbnMsIHBvaW50cyB9LCBwYXRoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9mZnNldFkgIT09IDAgJiYgaGVpZ2h0ID49IE1JTl9DRUxMX1NJWkUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyByb3dzLCBwb2ludHMgfSA9IHVwZGF0ZVJvd3MocmVzaXplUmVmLmVsZW1lbnQsIHJlc2l6ZVJlZi5vcHRpb25zPy5jZWxsLnJvd0lkLCBoZWlnaHQsIG9mZnNldFkpO1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgcm93cywgcG9pbnRzIH0sIHBhdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNGcm9tQ29ybmVyID0gaXNDb3JuZXJIYW5kbGUoYm9hcmQsIHJlc2l6ZVJlZi5oYW5kbGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzQXNwZWN0UmF0aW8gPSByZXNpemVTdGF0ZS5pc1NoaWZ0O1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZUluZGV4ID0gZ2V0SW5kZXhCeVJlc2l6ZUhhbmRsZShyZXNpemVSZWYuaGFuZGxlKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IG9yaWdpblBvaW50LCBoYW5kbGVQb2ludCB9ID0gZ2V0UmVzaXplT3JpZ2luUG9pbnRBbmRIYW5kbGVQb2ludChib2FyZCwgaGFuZGxlSW5kZXgsIHJlc2l6ZVJlZi5yZWN0YW5nbGUhKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNpemVTbmFwUmVmT3B0aW9ucyA9IGdldFNuYXBSZXNpemluZ1JlZk9wdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgIGJvYXJkLFxuICAgICAgICAgICAgICAgICAgICByZXNpemVSZWYsXG4gICAgICAgICAgICAgICAgICAgIHJlc2l6ZVN0YXRlLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5Qb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVBvaW50XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGlzQXNwZWN0UmF0aW8sXG4gICAgICAgICAgICAgICAgICAgIGlzRnJvbUNvcm5lclxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzaXplU25hcFJlZiA9IGdldFNuYXBSZXNpemluZ1JlZihib2FyZCwgW3Jlc2l6ZVJlZi5lbGVtZW50XSwgcmVzaXplU25hcFJlZk9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIHNuYXBHID0gcmVzaXplU25hcFJlZi5zbmFwRztcbiAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEVsZW1lbnRUb3BIb3N0KGJvYXJkKS5hcHBlbmQoc25hcEcpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50cyA9IHJlc2l6ZVNuYXBSZWYuYWN0aXZlUG9pbnRzIGFzIFtQb2ludCwgUG9pbnRdO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpblBvaW50cyA9IHJlc2l6ZVJlZi5lbGVtZW50LnBvaW50cztcbiAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5SZWN0ID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKG9yaWdpblBvaW50cyk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0UmVjdCA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhwb2ludHMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9mZnNldFdpZHRoID0gdGFyZ2V0UmVjdC53aWR0aCAtIG9yaWdpblJlY3Qud2lkdGg7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0SGVpZ2h0ID0gdGFyZ2V0UmVjdC5oZWlnaHQgLSBvcmlnaW5SZWN0LmhlaWdodDtcbiAgICAgICAgICAgICAgICBsZXQgY29sdW1ucyA9IFsuLi5yZXNpemVSZWYuZWxlbWVudC5jb2x1bW5zXTtcbiAgICAgICAgICAgICAgICBsZXQgcm93cyA9IFsuLi5yZXNpemVSZWYuZWxlbWVudC5yb3dzXTtcbiAgICAgICAgICAgICAgICBpZiAob2Zmc2V0V2lkdGggIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA9IGNvbHVtbnMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS53aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBpdGVtLndpZHRoICsgb2Zmc2V0V2lkdGggKiAoaXRlbS53aWR0aCAvIG9yaWdpblJlY3Qud2lkdGgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9mZnNldEhlaWdodCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByb3dzID0gcm93cy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaXRlbS5oZWlnaHQgKyBvZmZzZXRIZWlnaHQgKiAoaXRlbS5oZWlnaHQgLyBvcmlnaW5SZWN0LmhlaWdodClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgcG9pbnRzOiBub3JtYWxpemVTaGFwZVBvaW50cyhwb2ludHMpLCBjb2x1bW5zLCByb3dzIH0sIHBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBhZnRlclJlc2l6ZTogKHJlc2l6ZVJlZjogUmVzaXplUmVmPFBsYWl0QmFzZVRhYmxlLCBSZXNpemVIYW5kbGUsIFRhYmxlUmVzaXplT3B0aW9ucz4pID0+IHtcbiAgICAgICAgICAgIHNuYXBHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIHNuYXBHID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICB3aXRoUmVzaXplPFBsYWl0QmFzZVRhYmxlLCBSZXNpemVIYW5kbGUsIFRhYmxlUmVzaXplT3B0aW9ucz4oYm9hcmQsIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufVxuIl19
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { TableComponent } from '../table.component';
|
|
2
|
-
import { PlaitBoard, RectangleClient, isLineHitRectangle, toViewBoxPoint, toHostPoint, getHitElementByPoint, getSelectedElements, PlaitPointerType, isDragging, isMainPointer, distanceBetweenPointAndPoint, HIT_DISTANCE_BUFFER } from '@plait/core';
|
|
3
|
-
import { editCell, getHitCell } from '../utils/table';
|
|
4
|
-
import { withTableResize } from './with-table-resize';
|
|
5
|
-
import { isVirtualKey, isDelete, isSpaceHotkey } from '@plait/common';
|
|
6
|
-
import { PlaitDrawElement } from '../interfaces';
|
|
7
|
-
import { getSelectedCells, getSelectedTableElements, isSingleSelectTable, setSelectedCells } from '../utils';
|
|
8
|
-
import { TableEngine } from '../engines/table/table';
|
|
9
|
-
export const withTable = (board) => {
|
|
10
|
-
const tableBoard = board;
|
|
11
|
-
const { drawElement, getRectangle, isRectangleHit, isHit, isMovable, dblClick, keyDown, pointerUp } = tableBoard;
|
|
12
|
-
tableBoard.drawElement = (context) => {
|
|
13
|
-
if (PlaitDrawElement.isElementByTable(context.element)) {
|
|
14
|
-
return TableComponent;
|
|
15
|
-
}
|
|
16
|
-
return drawElement(context);
|
|
17
|
-
};
|
|
18
|
-
tableBoard.isHit = (element, point, isStrict) => {
|
|
19
|
-
if (PlaitDrawElement.isElementByTable(element)) {
|
|
20
|
-
const client = RectangleClient.getRectangleByPoints(element.points);
|
|
21
|
-
const nearestPoint = TableEngine.getNearestPoint(client, point);
|
|
22
|
-
const distance = distanceBetweenPointAndPoint(nearestPoint[0], nearestPoint[1], point[0], point[1]);
|
|
23
|
-
return distance <= HIT_DISTANCE_BUFFER || RectangleClient.isPointInRectangle(client, point);
|
|
24
|
-
}
|
|
25
|
-
return isHit(element, point, isStrict);
|
|
26
|
-
};
|
|
27
|
-
tableBoard.getRectangle = (element) => {
|
|
28
|
-
if (PlaitDrawElement.isElementByTable(element)) {
|
|
29
|
-
return RectangleClient.getRectangleByPoints(element.points);
|
|
30
|
-
}
|
|
31
|
-
return getRectangle(element);
|
|
32
|
-
};
|
|
33
|
-
tableBoard.isMovable = (element) => {
|
|
34
|
-
if (PlaitDrawElement.isElementByTable(element)) {
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
return isMovable(element);
|
|
38
|
-
};
|
|
39
|
-
tableBoard.isRectangleHit = (element, selection) => {
|
|
40
|
-
if (PlaitDrawElement.isElementByTable(element)) {
|
|
41
|
-
const rangeRectangle = RectangleClient.getRectangleByPoints([selection.anchor, selection.focus]);
|
|
42
|
-
const client = RectangleClient.getRectangleByPoints(element.points);
|
|
43
|
-
return isLineHitRectangle(RectangleClient.getCornerPoints(client), rangeRectangle);
|
|
44
|
-
}
|
|
45
|
-
return isRectangleHit(element, selection);
|
|
46
|
-
};
|
|
47
|
-
tableBoard.keyDown = (event) => {
|
|
48
|
-
const selectedElements = getSelectedElements(board);
|
|
49
|
-
const isSingleSelection = selectedElements.length === 1;
|
|
50
|
-
const targetElement = selectedElements[0];
|
|
51
|
-
if (!PlaitBoard.isReadonly(board) &&
|
|
52
|
-
!PlaitBoard.hasBeenTextEditing(tableBoard) &&
|
|
53
|
-
!isVirtualKey(event) &&
|
|
54
|
-
!isDelete(event) &&
|
|
55
|
-
!isSpaceHotkey(event) &&
|
|
56
|
-
isSingleSelection) {
|
|
57
|
-
event.preventDefault();
|
|
58
|
-
if (PlaitDrawElement.isElementByTable(targetElement)) {
|
|
59
|
-
const cells = getSelectedCells(targetElement);
|
|
60
|
-
let cell = targetElement.cells.find((item) => item.text && item.textHeight);
|
|
61
|
-
if (cells?.length) {
|
|
62
|
-
cell = cells.find((item) => item.text && item.textHeight);
|
|
63
|
-
}
|
|
64
|
-
if (cell) {
|
|
65
|
-
editCell(board, cell);
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
keyDown(event);
|
|
71
|
-
};
|
|
72
|
-
tableBoard.dblClick = (event) => {
|
|
73
|
-
event.preventDefault();
|
|
74
|
-
if (!PlaitBoard.isReadonly(board)) {
|
|
75
|
-
const point = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
76
|
-
const hitElement = getHitElementByPoint(board, point);
|
|
77
|
-
if (hitElement && PlaitDrawElement.isElementByTable(hitElement)) {
|
|
78
|
-
const hitCell = getHitCell(tableBoard, hitElement, point);
|
|
79
|
-
if (hitCell && hitCell.text && hitCell.textHeight) {
|
|
80
|
-
editCell(board, hitCell);
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
dblClick(event);
|
|
86
|
-
};
|
|
87
|
-
tableBoard.pointerUp = (event) => {
|
|
88
|
-
const isSetSelectionPointer = PlaitBoard.isPointer(tableBoard, PlaitPointerType.selection) || PlaitBoard.isPointer(tableBoard, PlaitPointerType.hand);
|
|
89
|
-
const isSkip = !isMainPointer(event) || isDragging(tableBoard) || !isSetSelectionPointer;
|
|
90
|
-
if (isSkip) {
|
|
91
|
-
pointerUp(event);
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
if (isSingleSelectTable(tableBoard)) {
|
|
95
|
-
const point = toViewBoxPoint(tableBoard, toHostPoint(tableBoard, event.x, event.y));
|
|
96
|
-
const element = getSelectedTableElements(tableBoard)[0];
|
|
97
|
-
const hitCell = getHitCell(tableBoard, element, point);
|
|
98
|
-
if (hitCell && hitCell.text && hitCell.textHeight) {
|
|
99
|
-
setSelectedCells(element, [hitCell]);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
pointerUp(event);
|
|
103
|
-
};
|
|
104
|
-
tableBoard.buildTable = (element) => {
|
|
105
|
-
return element;
|
|
106
|
-
};
|
|
107
|
-
return withTableResize(tableBoard);
|
|
108
|
-
};
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC10YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC10YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsT0FBTyxFQUNILFVBQVUsRUFHVixlQUFlLEVBRWYsa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLGFBQWEsRUFDYiw0QkFBNEIsRUFDNUIsbUJBQW1CLEVBQ3RCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHdCQUF3QixFQUFvQixtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMvSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFckQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQzNDLE1BQU0sVUFBVSxHQUFHLEtBQXdCLENBQUM7SUFFNUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxVQUFVLENBQUM7SUFFakgsVUFBVSxDQUFDLFdBQVcsR0FBRyxDQUFD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VUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEYsTUFBTSxPQUFPLEdBQUcsd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEQsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdkQsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2hELGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNMLENBQUM7UUFDRCxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQyxDQUFDO0lBRUYsVUFBVSxDQUFDLFVBQVUsR0FBRyxDQUFDLE9BQXVCLEVBQUUsRUFBRTtRQUNoRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDLENBQUM7SUFFRixPQUFPLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN2QyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL3RhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFpdEJhc2VUYWJsZSwgUGxhaXRUYWJsZUJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90YWJsZSc7XG5pbXBvcnQge1xuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIFNlbGVjdGlvbixcbiAgICBpc0xpbmVIaXRSZWN0YW5nbGUsXG4gICAgdG9WaWV3Qm94UG9pbnQsXG4gICAgdG9Ib3N0UG9pbnQsXG4gICAgZ2V0SGl0RWxlbWVudEJ5UG9pbnQsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICBQbGFpdFBvaW50ZXJUeXBlLFxuICAgIGlzRHJhZ2dpbmcsXG4gICAgaXNNYWluUG9pbnRlcixcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50LFxuICAgIEhJVF9ESVNUQU5DRV9CVUZGRVJcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgZWRpdENlbGwsIGdldEhpdENlbGwgfSBmcm9tICcuLi91dGlscy90YWJsZSc7XG5pbXBvcnQgeyB3aXRoVGFibGVSZXNpemUgfSBmcm9tICcuL3dpdGgtdGFibGUtcmVzaXplJztcbmltcG9ydCB7IGlzVmlydHVhbEtleSwgaXNEZWxldGUsIGlzU3BhY2VIb3RrZXkgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IFBsYWl0RHJhd0VsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldFNlbGVjdGVkQ2VsbHMsIGdldFNlbGVjdGVkVGFibGVFbGVtZW50cywgaXNIaXRFZGdlT2ZTaGFwZSwgaXNTaW5nbGVTZWxlY3RUYWJsZSwgc2V0U2VsZWN0ZWRDZWxscyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFRhYmxlRW5naW5lIH0gZnJvbSAnLi4vZW5naW5lcy90YWJsZS90YWJsZSc7XG5cbmV4cG9ydCBjb25zdCB3aXRoVGFibGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCB0YWJsZUJvYXJkID0gYm9hcmQgYXMgUGxhaXRUYWJsZUJvYXJkO1xuXG4gICAgY29uc3QgeyBkcmF3RWxlbWVudCwgZ2V0UmVjdGFuZ2xlLCBpc1JlY3RhbmdsZUhpdCwgaXNIaXQsIGlzTW92YWJsZSwgZGJsQ2xpY2ssIGtleURvd24sIHBvaW50ZXJVcCB9ID0gdGFibGVCb2FyZDtcblxuICAgIHRhYmxlQm9hcmQuZHJhd0VsZW1lbnQgPSAoY29udGV4dDogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKGNvbnRleHQuZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBUYWJsZUNvbXBvbmVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZHJhd0VsZW1lbnQoY29udGV4dCk7XG4gICAgfTtcblxuICAgIHRhYmxlQm9hcmQuaXNIaXQgPSAoZWxlbWVudCwgcG9pbnQsIGlzU3RyaWN0PzogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCBjbGllbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICAgICAgY29uc3QgbmVhcmVzdFBvaW50ID0gVGFibGVFbmdpbmUuZ2V0TmVhcmVzdFBvaW50KGNsaWVudCwgcG9pbnQpO1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KG5lYXJlc3RQb2ludFswXSwgbmVhcmVzdFBvaW50WzFdLCBwb2ludFswXSwgcG9pbnRbMV0pO1xuICAgICAgICAgICAgcmV0dXJuIGRpc3RhbmNlIDw9IEhJVF9ESVNUQU5DRV9CVUZGRVIgfHwgUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZShjbGllbnQsIHBvaW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNIaXQoZWxlbWVudCwgcG9pbnQsIGlzU3RyaWN0KTtcbiAgICB9O1xuXG4gICAgdGFibGVCb2FyZC5nZXRSZWN0YW5nbGUgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzRWxlbWVudEJ5VGFibGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRSZWN0YW5nbGUoZWxlbWVudCk7XG4gICAgfTtcblxuICAgIHRhYmxlQm9hcmQuaXNNb3ZhYmxlID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc01vdmFibGUoZWxlbWVudCk7XG4gICAgfTtcblxuICAgIHRhYmxlQm9hcmQuaXNSZWN0YW5nbGVIaXQgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50LCBzZWxlY3Rpb246IFNlbGVjdGlvbikgPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCByYW5nZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbc2VsZWN0aW9uLmFuY2hvciwgc2VsZWN0aW9uLmZvY3VzXSk7XG4gICAgICAgICAgICBjb25zdCBjbGllbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICAgICAgcmV0dXJuIGlzTGluZUhpdFJlY3RhbmdsZShSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKGNsaWVudCksIHJhbmdlUmVjdGFuZ2xlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNSZWN0YW5nbGVIaXQoZWxlbWVudCwgc2VsZWN0aW9uKTtcbiAgICB9O1xuXG4gICAgdGFibGVCb2FyZC5rZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgaXNTaW5nbGVTZWxlY3Rpb24gPSBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMTtcbiAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IHNlbGVjdGVkRWxlbWVudHNbMF07XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFQbGFpdEJvYXJkLmlzUmVhZG9ubHkoYm9hcmQpICYmXG4gICAgICAgICAgICAhUGxhaXRCb2FyZC5oYXNCZWVuVGV4dEVkaXRpbmcodGFibGVCb2FyZCkgJiZcbiAgICAgICAgICAgICFpc1ZpcnR1YWxLZXkoZXZlbnQpICYmXG4gICAgICAgICAgICAhaXNEZWxldGUoZXZlbnQpICYmXG4gICAgICAgICAgICAhaXNTcGFjZUhvdGtleShldmVudCkgJiZcbiAgICAgICAgICAgIGlzU2luZ2xlU2VsZWN0aW9uXG4gICAgICAgICkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzRWxlbWVudEJ5VGFibGUodGFyZ2V0RWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxscyA9IGdldFNlbGVjdGVkQ2VsbHModGFyZ2V0RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgbGV0IGNlbGwgPSB0YXJnZXRFbGVtZW50LmNlbGxzLmZpbmQoKGl0ZW0pID0+IGl0ZW0udGV4dCAmJiBpdGVtLnRleHRIZWlnaHQpO1xuICAgICAgICAgICAgICAgIGlmIChjZWxscz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNlbGwgPSBjZWxscy5maW5kKChpdGVtKSA9PiBpdGVtLnRleHQgJiYgaXRlbS50ZXh0SGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNlbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdENlbGwoYm9hcmQsIGNlbGwpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGtleURvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICB0YWJsZUJvYXJkLmRibENsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICghUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSkge1xuICAgICAgICAgICAgY29uc3QgcG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBnZXRIaXRFbGVtZW50QnlQb2ludChib2FyZCwgcG9pbnQpO1xuICAgICAgICAgICAgaWYgKGhpdEVsZW1lbnQgJiYgUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKGhpdEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGl0Q2VsbCA9IGdldEhpdENlbGwodGFibGVCb2FyZCwgaGl0RWxlbWVudCwgcG9pbnQpO1xuICAgICAgICAgICAgICAgIGlmIChoaXRDZWxsICYmIGhpdENlbGwudGV4dCAmJiBoaXRDZWxsLnRleHRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdENlbGwoYm9hcmQsIGhpdENlbGwpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGRibENsaWNrKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgdGFibGVCb2FyZC5wb2ludGVyVXAgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBpc1NldFNlbGVjdGlvblBvaW50ZXIgPVxuICAgICAgICAgICAgUGxhaXRCb2FyZC5pc1BvaW50ZXIodGFibGVCb2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pIHx8IFBsYWl0Qm9hcmQuaXNQb2ludGVyKHRhYmxlQm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuaGFuZCk7XG4gICAgICAgIGNvbnN0IGlzU2tpcCA9ICFpc01haW5Qb2ludGVyKGV2ZW50KSB8fCBpc0RyYWdnaW5nKHRhYmxlQm9hcmQpIHx8ICFpc1NldFNlbGVjdGlvblBvaW50ZXI7XG4gICAgICAgIGlmIChpc1NraXApIHtcbiAgICAgICAgICAgIHBvaW50ZXJVcChldmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzU2luZ2xlU2VsZWN0VGFibGUodGFibGVCb2FyZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50ID0gdG9WaWV3Qm94UG9pbnQodGFibGVCb2FyZCwgdG9Ib3N0UG9pbnQodGFibGVCb2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGdldFNlbGVjdGVkVGFibGVFbGVtZW50cyh0YWJsZUJvYXJkKVswXTtcbiAgICAgICAgICAgIGNvbnN0IGhpdENlbGwgPSBnZXRIaXRDZWxsKHRhYmxlQm9hcmQsIGVsZW1lbnQsIHBvaW50KTtcbiAgICAgICAgICAgIGlmIChoaXRDZWxsICYmIGhpdENlbGwudGV4dCAmJiBoaXRDZWxsLnRleHRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZENlbGxzKGVsZW1lbnQsIFtoaXRDZWxsXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlclVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgdGFibGVCb2FyZC5idWlsZFRhYmxlID0gKGVsZW1lbnQ6IFBsYWl0QmFzZVRhYmxlKSA9PiB7XG4gICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH07XG5cbiAgICByZXR1cm4gd2l0aFRhYmxlUmVzaXplKHRhYmxlQm9hcmQpO1xufTtcbiJdfQ==
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { BoardTransforms, PlaitBoard, PlaitPointerType, Transforms, createG, distanceBetweenPointAndPoint, toHostPoint, toViewBoxPoint } from '@plait/core';
|
|
2
|
-
import { VectorLineShape, VectorLinePointerType } from '../interfaces';
|
|
3
|
-
import { LINE_HIT_GEOMETRY_BUFFER, getVectorLinePointers } from '../constants';
|
|
4
|
-
import { isDrawingMode } from '@plait/common';
|
|
5
|
-
import { vectorLineCreating } from '../utils';
|
|
6
|
-
import { isKeyHotkey } from 'is-hotkey';
|
|
7
|
-
export const withVectorLineCreateByDraw = (board) => {
|
|
8
|
-
const { pointerDown, pointerMove, dblClick, globalKeyDown } = board;
|
|
9
|
-
let lineShapeG = null;
|
|
10
|
-
let temporaryElement = null;
|
|
11
|
-
let drawPoints = [];
|
|
12
|
-
const vectorLineComplete = () => {
|
|
13
|
-
if (temporaryElement) {
|
|
14
|
-
Transforms.insertNode(board, temporaryElement, [board.children.length]);
|
|
15
|
-
}
|
|
16
|
-
PlaitBoard.getBoardContainer(board).classList.remove(`vector-line-closed`);
|
|
17
|
-
lineShapeG?.remove();
|
|
18
|
-
lineShapeG = null;
|
|
19
|
-
temporaryElement = null;
|
|
20
|
-
drawPoints = [];
|
|
21
|
-
};
|
|
22
|
-
board.pointerDown = (event) => {
|
|
23
|
-
const penPointers = getVectorLinePointers();
|
|
24
|
-
const isVectorLinePointer = PlaitBoard.isInPointer(board, penPointers);
|
|
25
|
-
if (!PlaitBoard.isReadonly(board) && isVectorLinePointer && isDrawingMode(board)) {
|
|
26
|
-
let point = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
27
|
-
if (drawPoints.length > 1) {
|
|
28
|
-
const isClosed = distanceBetweenPointAndPoint(...point, ...drawPoints[0]) <= LINE_HIT_GEOMETRY_BUFFER;
|
|
29
|
-
if (isClosed) {
|
|
30
|
-
drawPoints.push(drawPoints[0]);
|
|
31
|
-
vectorLineComplete();
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
drawPoints.push(point);
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
pointerDown(event);
|
|
39
|
-
};
|
|
40
|
-
board.pointerMove = (event) => {
|
|
41
|
-
lineShapeG?.remove();
|
|
42
|
-
lineShapeG = createG();
|
|
43
|
-
let movingPoint = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
44
|
-
const pointer = PlaitBoard.getPointer(board);
|
|
45
|
-
if (pointer === VectorLinePointerType.vectorLine) {
|
|
46
|
-
if (drawPoints.length > 0) {
|
|
47
|
-
const distance = distanceBetweenPointAndPoint(...movingPoint, ...drawPoints[0]);
|
|
48
|
-
if (distance <= LINE_HIT_GEOMETRY_BUFFER) {
|
|
49
|
-
movingPoint = drawPoints[0];
|
|
50
|
-
PlaitBoard.getBoardContainer(board).classList.add(`vector-line-closed`);
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
PlaitBoard.getBoardContainer(board).classList.remove(`vector-line-closed`);
|
|
54
|
-
}
|
|
55
|
-
temporaryElement = vectorLineCreating(board, VectorLineShape.straight, drawPoints, movingPoint, lineShapeG);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
pointerMove(event);
|
|
59
|
-
};
|
|
60
|
-
board.dblClick = (event) => {
|
|
61
|
-
if (!PlaitBoard.isReadonly(board)) {
|
|
62
|
-
if (temporaryElement) {
|
|
63
|
-
vectorLineComplete();
|
|
64
|
-
BoardTransforms.updatePointerType(board, PlaitPointerType.selection);
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
dblClick(event);
|
|
69
|
-
};
|
|
70
|
-
board.globalKeyDown = (event) => {
|
|
71
|
-
if (!PlaitBoard.isReadonly(board)) {
|
|
72
|
-
const isEsc = isKeyHotkey('esc', event);
|
|
73
|
-
const isV = isKeyHotkey('v', event);
|
|
74
|
-
if ((isEsc || isV) && temporaryElement) {
|
|
75
|
-
vectorLineComplete();
|
|
76
|
-
if (isV) {
|
|
77
|
-
BoardTransforms.updatePointerType(board, PlaitPointerType.selection);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
globalKeyDown(event);
|
|
82
|
-
};
|
|
83
|
-
return board;
|
|
84
|
-
};
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC12ZWN0b3ItbGluZS1jcmVhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtdmVjdG9yLWxpbmUtY3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxlQUFlLEVBQ2YsVUFBVSxFQUNWLGdCQUFnQixFQUVoQixVQUFVLEVBRVYsT0FBTyxFQUNQLDRCQUE0QixFQUM1QixXQUFXLEVBQ1gsY0FBYyxFQUNqQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQW1CLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQW1CLHdCQUF3QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFeEMsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDNUQsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUVwRSxJQUFJLFVBQVUsR0FBdUIsSUFBSSxDQUFDO0lBRTFDLElBQUksZ0JBQWdCLEdBQTJCLElBQUksQ0FBQztJQUVwRCxJQUFJLFVBQVUsR0FBWSxFQUFFLENBQUM7SUFFN0IsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLEVBQUU7UUFDNUIsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ25CLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzVF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XG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdFBvaW50ZXJUeXBlLFxuICAgIFBvaW50LFxuICAgIFRyYW5zZm9ybXMsXG4gICAgYWRkU2VsZWN0ZWRFbGVtZW50LFxuICAgIGNyZWF0ZUcsXG4gICAgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCxcbiAgICB0b0hvc3RQb2ludCxcbiAgICB0b1ZpZXdCb3hQb2ludFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdFZlY3RvckxpbmUsIFZlY3RvckxpbmVTaGFwZSwgVmVjdG9yTGluZVBvaW50ZXJUeXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBEcmF3UG9pbnRlclR5cGUsIExJTkVfSElUX0dFT01FVFJZX0JVRkZFUiwgZ2V0VmVjdG9yTGluZVBvaW50ZXJzIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGlzRHJhd2luZ01vZGUgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IHZlY3RvckxpbmVDcmVhdGluZyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGlzS2V5SG90a2V5IH0gZnJvbSAnaXMtaG90a2V5JztcblxuZXhwb3J0IGNvbnN0IHdpdGhWZWN0b3JMaW5lQ3JlYXRlQnlEcmF3ID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgeyBwb2ludGVyRG93biwgcG9pbnRlck1vdmUsIGRibENsaWNrLCBnbG9iYWxLZXlEb3duIH0gPSBib2FyZDtcblxuICAgIGxldCBsaW5lU2hhcGVHOiBTVkdHRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgbGV0IHRlbXBvcmFyeUVsZW1lbnQ6IFBsYWl0VmVjdG9yTGluZSB8IG51bGwgPSBudWxsO1xuXG4gICAgbGV0IGRyYXdQb2ludHM6IFBvaW50W10gPSBbXTtcblxuICAgIGNvbnN0IHZlY3RvckxpbmVDb21wbGV0ZSA9ICgpID0+IHtcbiAgICAgICAgaWYgKHRlbXBvcmFyeUVsZW1lbnQpIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZShib2FyZCwgdGVtcG9yYXJ5RWxlbWVudCwgW2JvYXJkLmNoaWxkcmVuLmxlbmd0aF0pO1xuICAgICAgICB9XG4gICAgICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5yZW1vdmUoYHZlY3Rvci1saW5lLWNsb3NlZGApO1xuICAgICAgICBsaW5lU2hhcGVHPy5yZW1vdmUoKTtcbiAgICAgICAgbGluZVNoYXBlRyA9IG51bGw7XG4gICAgICAgIHRlbXBvcmFyeUVsZW1lbnQgPSBudWxsO1xuICAgICAgICBkcmF3UG9pbnRzID0gW107XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgcGVuUG9pbnRlcnMgPSBnZXRWZWN0b3JMaW5lUG9pbnRlcnMoKTtcbiAgICAgICAgY29uc3QgaXNWZWN0b3JMaW5lUG9pbnRlciA9IFBsYWl0Qm9hcmQuaXNJblBvaW50ZXIoYm9hcmQsIHBlblBvaW50ZXJzKTtcbiAgICAgICAgaWYgKCFQbGFpdEJvYXJkLmlzUmVhZG9ubHkoYm9hcmQpICYmIGlzVmVjdG9yTGluZVBvaW50ZXIgJiYgaXNEcmF3aW5nTW9kZShib2FyZCkpIHtcbiAgICAgICAgICAgIGxldCBwb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICAgICAgaWYgKGRyYXdQb2ludHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzQ2xvc2VkID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCguLi5wb2ludCwgLi4uZHJhd1BvaW50c1swXSkgPD0gTElORV9ISVRfR0VPTUVUUllfQlVGRkVSO1xuICAgICAgICAgICAgICAgIGlmIChpc0Nsb3NlZCkge1xuICAgICAgICAgICAgICAgICAgICBkcmF3UG9pbnRzLnB1c2goZHJhd1BvaW50c1swXSk7XG4gICAgICAgICAgICAgICAgICAgIHZlY3RvckxpbmVDb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZHJhd1BvaW50cy5wdXNoKHBvaW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgbGluZVNoYXBlRz8ucmVtb3ZlKCk7XG4gICAgICAgIGxpbmVTaGFwZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgIGxldCBtb3ZpbmdQb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICBjb25zdCBwb2ludGVyID0gUGxhaXRCb2FyZC5nZXRQb2ludGVyKGJvYXJkKSBhcyBEcmF3UG9pbnRlclR5cGU7XG4gICAgICAgIGlmIChwb2ludGVyID09PSBWZWN0b3JMaW5lUG9pbnRlclR5cGUudmVjdG9yTGluZSkge1xuICAgICAgICAgICAgaWYgKGRyYXdQb2ludHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCguLi5tb3ZpbmdQb2ludCwgLi4uZHJhd1BvaW50c1swXSk7XG4gICAgICAgICAgICAgICAgaWYgKGRpc3RhbmNlIDw9IExJTkVfSElUX0dFT01FVFJZX0JVRkZFUikge1xuICAgICAgICAgICAgICAgICAgICBtb3ZpbmdQb2ludCA9IGRyYXdQb2ludHNbMF07XG4gICAgICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5hZGQoYHZlY3Rvci1saW5lLWNsb3NlZGApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5yZW1vdmUoYHZlY3Rvci1saW5lLWNsb3NlZGApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0ZW1wb3JhcnlFbGVtZW50ID0gdmVjdG9yTGluZUNyZWF0aW5nKGJvYXJkLCBWZWN0b3JMaW5lU2hhcGUuc3RyYWlnaHQsIGRyYXdQb2ludHMsIG1vdmluZ1BvaW50LCBsaW5lU2hhcGVHKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyTW92ZShldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmRibENsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSkge1xuICAgICAgICAgICAgaWYgKHRlbXBvcmFyeUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB2ZWN0b3JMaW5lQ29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICBCb2FyZFRyYW5zZm9ybXMudXBkYXRlUG9pbnRlclR5cGUoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZGJsQ2xpY2soZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nbG9iYWxLZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSkge1xuICAgICAgICAgICAgY29uc3QgaXNFc2MgPSBpc0tleUhvdGtleSgnZXNjJywgZXZlbnQpO1xuICAgICAgICAgICAgY29uc3QgaXNWID0gaXNLZXlIb3RrZXkoJ3YnLCBldmVudCk7XG4gICAgICAgICAgICBpZiAoKGlzRXNjIHx8IGlzVikgJiYgdGVtcG9yYXJ5RWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHZlY3RvckxpbmVDb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIGlmIChpc1YpIHtcbiAgICAgICAgICAgICAgICAgICAgQm9hcmRUcmFuc2Zvcm1zLnVwZGF0ZVBvaW50ZXJUeXBlKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLnNlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGdsb2JhbEtleURvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59O1xuIl19
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { Transforms, distanceBetweenPointAndPoint } from '@plait/core';
|
|
2
|
-
import { withResize } from '@plait/common';
|
|
3
|
-
import { getSelectedVectorLineElements } from '../utils/selected';
|
|
4
|
-
import { getHitLineResizeHandleRef, LineResizeHandle } from '../utils/position/line';
|
|
5
|
-
import { LINE_HIT_GEOMETRY_BUFFER } from '../constants';
|
|
6
|
-
import { isClosedPoints } from '../utils';
|
|
7
|
-
export const withVectorLineResize = (board) => {
|
|
8
|
-
const options = {
|
|
9
|
-
key: 'draw-vector-line',
|
|
10
|
-
canResize: () => {
|
|
11
|
-
return true;
|
|
12
|
-
},
|
|
13
|
-
hitTest: (point) => {
|
|
14
|
-
const selectedVectorLineElements = getSelectedVectorLineElements(board);
|
|
15
|
-
if (selectedVectorLineElements.length > 0) {
|
|
16
|
-
let result = null;
|
|
17
|
-
selectedVectorLineElements.forEach(value => {
|
|
18
|
-
const handleRef = getHitLineResizeHandleRef(board, value, point);
|
|
19
|
-
if (handleRef) {
|
|
20
|
-
result = {
|
|
21
|
-
element: value,
|
|
22
|
-
handle: handleRef.handle,
|
|
23
|
-
handleIndex: handleRef.handleIndex
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
return result;
|
|
28
|
-
}
|
|
29
|
-
return null;
|
|
30
|
-
},
|
|
31
|
-
onResize: (resizeRef, resizeState) => {
|
|
32
|
-
let points = [...resizeRef.element.points];
|
|
33
|
-
let handleIndex = resizeRef.handleIndex;
|
|
34
|
-
if (resizeRef.handle === LineResizeHandle.source || resizeRef.handle === LineResizeHandle.target) {
|
|
35
|
-
points[handleIndex] = resizeState.endPoint;
|
|
36
|
-
if (isClosedPoints(resizeRef.element.points)) {
|
|
37
|
-
points[points.length - 1] = resizeState.endPoint;
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
const targetPoint = resizeRef.handle === LineResizeHandle.source ? points[points.length - 1] : points[0];
|
|
41
|
-
const distance = distanceBetweenPointAndPoint(...resizeState.endPoint, ...targetPoint);
|
|
42
|
-
if (distance <= LINE_HIT_GEOMETRY_BUFFER) {
|
|
43
|
-
points[handleIndex] = targetPoint;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
if (resizeRef.handle === LineResizeHandle.addHandle) {
|
|
49
|
-
points.splice(handleIndex + 1, 0, resizeState.endPoint);
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
points[handleIndex] = resizeState.endPoint;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
Transforms.setNode(board, { points }, resizeRef.path);
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
withResize(board, options);
|
|
59
|
-
return board;
|
|
60
|
-
};
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC12ZWN0b3ItbGluZS1yZXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtdmVjdG9yLWxpbmUtcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMkIsVUFBVSxFQUFFLDRCQUE0QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hHLE9BQU8sRUFBNkMsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ3RELE1BQU0sT0FBTyxHQUF5RDtRQUNsRSxHQUFHLEVBQUUsa0JBQWtCO1FBQ3ZCLFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDWixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDdEIsTUFBTSwwQkFBMEIsR0FBRyw2QkFBNkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4RSxJQUFJLDBCQUEwQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNsQiwwQkFBMEIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ3ZDLE1BQU0sU0FBUyxHQUFHLHlCQUF5QixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ2pFLElBQUksU0FBUyxFQUFFLENBQUM7d0JBQ1osTUFBTSxHQUFHOzRCQUNMLE9BQU8sRUFBRSxLQUFLOzRCQUNkLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTs0QkFDeEIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxXQUFXO3lCQUNyQyxDQUFDO29CQUNOLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxNQUFNLENBQUM7WUFDbEIsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxRQUFRLEVBQUUsQ0FBQyxTQUF1RCxFQUFFLFdBQXdCLEVBQUUsRUFBRTtZQUM1RixJQUFJLE1BQU0sR0FBWSxDQUFDLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwRCxJQUFJLFdBQVcsR0FBRyxTQUFTLENBQUMsV0FBWSxDQUFDO1lBQ3pDLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxnQkFBZ0IsQ0FBQyxNQUFNLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDL0YsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7Z0JBQzNDLElBQUksY0FBYyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDM0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztnQkFDckQsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEtBQUssZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN6RyxNQUFNLFFBQVEsR0FBRyw0QkFBNEIsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxXQUFXLENBQUMsQ0FBQztvQkFDdkYsSUFBSSxRQUFRLElBQUksd0JBQXdCLEVBQUUsQ0FBQzt3QkFDdkMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFdBQVcsQ0FBQztvQkFDdEMsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDbEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzVELENBQUM7cUJBQU0sQ0FBQztvQkFDSixNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztnQkFDL0MsQ0FBQztZQUNMLENBQUM7WUFFRCxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLFNBQVMsQ0FBQyxJQUFZLENBQUMsQ0FBQztRQUNsRSxDQUFDO0tBQ0osQ0FBQztJQUVGLFVBQVUsQ0FBb0MsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRTlELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhdGgsIFBsYWl0Qm9hcmQsIFBvaW50LCBUcmFuc2Zvcm1zLCBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUmVzaXplUmVmLCBSZXNpemVTdGF0ZSwgV2l0aFJlc2l6ZU9wdGlvbnMsIHdpdGhSZXNpemUgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGdldFNlbGVjdGVkVmVjdG9yTGluZUVsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQnO1xuaW1wb3J0IHsgZ2V0SGl0TGluZVJlc2l6ZUhhbmRsZVJlZiwgTGluZVJlc2l6ZUhhbmRsZSB9IGZyb20gJy4uL3V0aWxzL3Bvc2l0aW9uL2xpbmUnO1xuaW1wb3J0IHsgUGxhaXRWZWN0b3JMaW5lIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBMSU5FX0hJVF9HRU9NRVRSWV9CVUZGRVIgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgaXNDbG9zZWRQb2ludHMgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCB3aXRoVmVjdG9yTGluZVJlc2l6ZSA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnM6IFdpdGhSZXNpemVPcHRpb25zPFBsYWl0VmVjdG9yTGluZSwgTGluZVJlc2l6ZUhhbmRsZT4gPSB7XG4gICAgICAgIGtleTogJ2RyYXctdmVjdG9yLWxpbmUnLFxuICAgICAgICBjYW5SZXNpemU6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBoaXRUZXN0OiAocG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFZlY3RvckxpbmVFbGVtZW50cyA9IGdldFNlbGVjdGVkVmVjdG9yTGluZUVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZFZlY3RvckxpbmVFbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRWZWN0b3JMaW5lRWxlbWVudHMuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZVJlZiA9IGdldEhpdExpbmVSZXNpemVIYW5kbGVSZWYoYm9hcmQsIHZhbHVlLCBwb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYW5kbGVSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU6IGhhbmRsZVJlZi5oYW5kbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlSW5kZXg6IGhhbmRsZVJlZi5oYW5kbGVJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSxcblxuICAgICAgICBvblJlc2l6ZTogKHJlc2l6ZVJlZjogUmVzaXplUmVmPFBsYWl0VmVjdG9yTGluZSwgTGluZVJlc2l6ZUhhbmRsZT4sIHJlc2l6ZVN0YXRlOiBSZXNpemVTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgbGV0IHBvaW50czogUG9pbnRbXSA9IFsuLi5yZXNpemVSZWYuZWxlbWVudC5wb2ludHNdO1xuICAgICAgICAgICAgbGV0IGhhbmRsZUluZGV4ID0gcmVzaXplUmVmLmhhbmRsZUluZGV4ITtcbiAgICAgICAgICAgIGlmIChyZXNpemVSZWYuaGFuZGxlID09PSBMaW5lUmVzaXplSGFuZGxlLnNvdXJjZSB8fCByZXNpemVSZWYuaGFuZGxlID09PSBMaW5lUmVzaXplSGFuZGxlLnRhcmdldCkge1xuICAgICAgICAgICAgICAgIHBvaW50c1toYW5kbGVJbmRleF0gPSByZXNpemVTdGF0ZS5lbmRQb2ludDtcbiAgICAgICAgICAgICAgICBpZiAoaXNDbG9zZWRQb2ludHMocmVzaXplUmVmLmVsZW1lbnQucG9pbnRzKSkge1xuICAgICAgICAgICAgICAgICAgICBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdID0gcmVzaXplU3RhdGUuZW5kUG9pbnQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0UG9pbnQgPSByZXNpemVSZWYuaGFuZGxlID09PSBMaW5lUmVzaXplSGFuZGxlLnNvdXJjZSA/IHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV0gOiBwb2ludHNbMF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCguLi5yZXNpemVTdGF0ZS5lbmRQb2ludCwgLi4udGFyZ2V0UG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPD0gTElORV9ISVRfR0VPTUVUUllfQlVGRkVSKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHNbaGFuZGxlSW5kZXhdID0gdGFyZ2V0UG9pbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChyZXNpemVSZWYuaGFuZGxlID09PSBMaW5lUmVzaXplSGFuZGxlLmFkZEhhbmRsZSkge1xuICAgICAgICAgICAgICAgICAgICBwb2ludHMuc3BsaWNlKGhhbmRsZUluZGV4ICsgMSwgMCwgcmVzaXplU3RhdGUuZW5kUG9pbnQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50c1toYW5kbGVJbmRleF0gPSByZXNpemVTdGF0ZS5lbmRQb2ludDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBwb2ludHMgfSwgcmVzaXplUmVmLnBhdGggYXMgUGF0aCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgd2l0aFJlc2l6ZTxQbGFpdFZlY3RvckxpbmUsIExpbmVSZXNpemVIYW5kbGU+KGJvYXJkLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
|
package/esm2022/public-api.mjs
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export * from './interfaces';
|
|
2
|
-
export * from './plugins/with-draw';
|
|
3
|
-
export * from './plugins/with-arrow-line-auto-complete';
|
|
4
|
-
export * from './constants';
|
|
5
|
-
export * from './utils';
|
|
6
|
-
export * from './geometry.component';
|
|
7
|
-
export * from './arrow-line.component';
|
|
8
|
-
export * from './vector-line.component';
|
|
9
|
-
export * from './transforms';
|
|
10
|
-
export * from './generators/index';
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9wbHVnaW5zL3dpdGgtZHJhdyc7XG5leHBvcnQgKiBmcm9tICcuL3BsdWdpbnMvd2l0aC1hcnJvdy1saW5lLWF1dG8tY29tcGxldGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2dlb21ldHJ5LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2Fycm93LWxpbmUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdmVjdG9yLWxpbmUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNmb3Jtcyc7XG5leHBvcnQgKiBmcm9tICcuL2dlbmVyYXRvcnMvaW5kZXgnO1xuIl19
|