@plait/common 0.1.0-next.2 → 0.1.0-next.4
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/esm2022/generator/active.generator.mjs +46 -0
- package/esm2022/generator/generator.mjs +41 -0
- package/esm2022/plugins/with-resize.mjs +101 -0
- package/esm2022/shape/common.mjs +14 -0
- package/esm2022/utils/line-path.mjs +173 -0
- package/esm2022/utils/rectangle.mjs +16 -0
- package/esm2022/utils/resize.mjs +61 -0
- package/{fesm2020 → fesm2022}/plait-common.mjs +146 -38
- package/fesm2022/plait-common.mjs.map +1 -0
- package/generator/active.generator.d.ts +3 -1
- package/package.json +5 -11
- package/plugins/with-resize.d.ts +1 -0
- package/shape/common.d.ts +1 -1
- package/utils/line-path.d.ts +5 -0
- package/utils/rectangle.d.ts +7 -4
- package/utils/resize.d.ts +4 -3
- package/esm2020/generator/active.generator.mjs +0 -40
- package/esm2020/generator/generator.mjs +0 -29
- package/esm2020/plugins/with-resize.mjs +0 -100
- package/esm2020/shape/common.mjs +0 -6
- package/esm2020/utils/line-path.mjs +0 -96
- package/esm2020/utils/rectangle.mjs +0 -16
- package/esm2020/utils/resize.mjs +0 -58
- package/fesm2015/plait-common.mjs +0 -421
- package/fesm2015/plait-common.mjs.map +0 -1
- package/fesm2020/plait-common.mjs.map +0 -1
- /package/{esm2020 → esm2022}/constants/default.mjs +0 -0
- /package/{esm2020 → esm2022}/constants/index.mjs +0 -0
- /package/{esm2020 → esm2022}/constants/media.mjs +0 -0
- /package/{esm2020 → esm2022}/constants/resize.mjs +0 -0
- /package/{esm2020 → esm2022}/generator/index.mjs +0 -0
- /package/{esm2020 → esm2022}/plait-common.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/index.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/shape/index.mjs +0 -0
- /package/{esm2020 → esm2022}/transforms/element.mjs +0 -0
- /package/{esm2020 → esm2022}/transforms/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/hot-key.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/index.mjs +0 -0
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { MERGING, PRESS_AND_MOVE_BUFFER, PlaitBoard, PlaitPointerType, distanceBetweenPointAndPoint, isMainPointer, preventTouchMove, throttleRAF, toPoint, transformPoint } from '@plait/core';
|
|
2
|
-
import { addResizing, isResizing, removeResizing } from '../utils/resize';
|
|
3
|
-
const generalCanResize = (board, event) => {
|
|
4
|
-
return (PlaitBoard.isReadonly(board) ||
|
|
5
|
-
PlaitBoard.hasBeenTextEditing(board) ||
|
|
6
|
-
!PlaitBoard.isPointer(board, PlaitPointerType.hand) ||
|
|
7
|
-
!isMainPointer(event));
|
|
8
|
-
};
|
|
9
|
-
export const withResize = (board, options) => {
|
|
10
|
-
const { pointerDown, pointerMove, globalPointerUp } = board;
|
|
11
|
-
let resizeDetectResult = null;
|
|
12
|
-
let resizeRef = null;
|
|
13
|
-
let startPoint = null;
|
|
14
|
-
let hoveDetectResult = null;
|
|
15
|
-
board.pointerDown = (event) => {
|
|
16
|
-
if (!options.canResize() || !generalCanResize(board, event)) {
|
|
17
|
-
pointerDown(event);
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
const point = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
|
|
21
|
-
resizeDetectResult = options.detect(point);
|
|
22
|
-
if (resizeDetectResult) {
|
|
23
|
-
if (resizeDetectResult.cursorClass) {
|
|
24
|
-
PlaitBoard.getBoardContainer(board).classList.add(`${resizeDetectResult.cursorClass}`);
|
|
25
|
-
}
|
|
26
|
-
startPoint = [event.x, event.y];
|
|
27
|
-
resizeRef = {
|
|
28
|
-
path: PlaitBoard.findPath(board, resizeDetectResult.element),
|
|
29
|
-
element: resizeDetectResult.element,
|
|
30
|
-
handle: resizeDetectResult.handle
|
|
31
|
-
};
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
pointerDown(event);
|
|
35
|
-
};
|
|
36
|
-
board.pointerMove = (event) => {
|
|
37
|
-
if (!options.canResize() || !generalCanResize(board, event)) {
|
|
38
|
-
pointerMove(event);
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
if (startPoint && resizeDetectResult && !isResizing(board)) {
|
|
42
|
-
// prevent text from being selected
|
|
43
|
-
event.preventDefault();
|
|
44
|
-
preventTouchMove(board, true);
|
|
45
|
-
const endPoint = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
|
|
46
|
-
const distance = distanceBetweenPointAndPoint(startPoint[0], startPoint[1], endPoint[0], endPoint[1]);
|
|
47
|
-
if (distance > PRESS_AND_MOVE_BUFFER) {
|
|
48
|
-
addResizing(board, options.key);
|
|
49
|
-
MERGING.set(board, true);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
if (isResizing(board) && startPoint) {
|
|
53
|
-
// prevent text from being selected
|
|
54
|
-
event.preventDefault();
|
|
55
|
-
preventTouchMove(board, true);
|
|
56
|
-
const endTransformPoint = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
|
|
57
|
-
throttleRAF(() => {
|
|
58
|
-
const endPoint = [event.x, event.y];
|
|
59
|
-
if (startPoint && resizeRef) {
|
|
60
|
-
const offsetX = endPoint[0] - startPoint[0];
|
|
61
|
-
const offsetY = endPoint[1] - startPoint[1];
|
|
62
|
-
options.onResize(resizeRef, { offsetX, offsetY, endTransformPoint });
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
const point = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
|
|
69
|
-
const resizeDetectResult = options.detect(point);
|
|
70
|
-
if (resizeDetectResult) {
|
|
71
|
-
hoveDetectResult = resizeDetectResult;
|
|
72
|
-
if (hoveDetectResult.cursorClass) {
|
|
73
|
-
PlaitBoard.getBoardContainer(board).classList.add(`${hoveDetectResult.cursorClass}`);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
if (hoveDetectResult) {
|
|
78
|
-
if (hoveDetectResult.cursorClass) {
|
|
79
|
-
PlaitBoard.getBoardContainer(board).classList.remove(`${hoveDetectResult.cursorClass}`);
|
|
80
|
-
}
|
|
81
|
-
hoveDetectResult = null;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
pointerMove(event);
|
|
86
|
-
};
|
|
87
|
-
board.globalPointerUp = (event) => {
|
|
88
|
-
globalPointerUp(event);
|
|
89
|
-
if (isResizing(board) || resizeDetectResult) {
|
|
90
|
-
removeResizing(board, options.key);
|
|
91
|
-
startPoint = null;
|
|
92
|
-
resizeDetectResult = null;
|
|
93
|
-
resizeRef = null;
|
|
94
|
-
MERGING.set(board, false);
|
|
95
|
-
preventTouchMove(board, false);
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
return board;
|
|
99
|
-
};
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1yZXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3BsdWdpbnMvd2l0aC1yZXNpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILE9BQU8sRUFDUCxxQkFBcUIsRUFFckIsVUFBVSxFQUVWLGdCQUFnQixFQUVoQiw0QkFBNEIsRUFDNUIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsT0FBTyxFQUNQLGNBQWMsRUFDakIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUEyQjFFLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEtBQW1CLEVBQUUsRUFBRTtJQUNoRSxPQUFPLENBQ0gsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDNUIsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztRQUNwQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQztRQUNuRCxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FDeEIsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUEwRCxLQUFpQixFQUFFLE9BQWdDLEVBQUUsRUFBRTtJQUN2SSxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDNUQsSUFBSSxrQkFBa0IsR0FBb0MsSUFBSSxDQUFDO0lBQy9ELElBQUksU0FBUyxHQUEyQixJQUFJLENBQUM7SUFDN0MsSUFBSSxVQUFVLEdBQWlCLElBQUksQ0FBQztJQUNwQyxJQUFJLGdCQUFnQixHQUFvQyxJQUFJLENBQUM7SUFFN0QsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLEtB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LENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7cUJBQzNGO29CQUNELGdCQUFnQixHQUFHLElBQUksQ0FBQztpQkFDM0I7YUFDSjtTQUNKO1FBQ0QsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxlQUFlLEdBQUcsQ0FBQyxLQUFtQixFQUFFLEVBQUU7UUFDNUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLGtCQUFrQixFQUFFO1lBQ3pDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDbEIsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1lBQzFCLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDMUIsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQyxDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBNRVJHSU5HLFxuICAgIFBSRVNTX0FORF9NT1ZFX0JVRkZFUixcbiAgICBQYXRoLFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIFBsYWl0UG9pbnRlclR5cGUsXG4gICAgUG9pbnQsXG4gICAgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCxcbiAgICBpc01haW5Qb2ludGVyLFxuICAgIHByZXZlbnRUb3VjaE1vdmUsXG4gICAgdGhyb3R0bGVSQUYsXG4gICAgdG9Qb2ludCxcbiAgICB0cmFuc2Zvcm1Qb2ludFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBSZXNpemVIYW5kbGUsIFJlc2l6ZUN1cnNvckNsYXNzIH0gZnJvbSAnLi4vY29uc3RhbnRzL3Jlc2l6ZSc7XG5pbXBvcnQgeyBhZGRSZXNpemluZywgaXNSZXNpemluZywgcmVtb3ZlUmVzaXppbmcgfSBmcm9tICcuLi91dGlscy9yZXNpemUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhSZXNpemVPcHRpb25zPFQgZXh0ZW5kcyBQbGFpdEVsZW1lbnQgPSBQbGFpdEVsZW1lbnQsIEsgPSBSZXNpemVIYW5kbGU+IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBjYW5SZXNpemU6ICgpID0+IGJvb2xlYW47XG4gICAgZGV0ZWN0OiAocG9pbnQ6IFBvaW50KSA9PiBSZXNpemVEZXRlY3RSZXN1bHQ8VCwgSz4gfCBudWxsO1xuICAgIG9uUmVzaXplOiAocmVzaXplUmVmOiBSZXNpemVSZWY8VCwgSz4sIHJlc2l6ZVN0YXRlOiBSZXNpemVTdGF0ZSkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNpemVEZXRlY3RSZXN1bHQ8VCBleHRlbmRzIFBsYWl0RWxlbWVudCA9IFBsYWl0RWxlbWVudCwgSyA9IFJlc2l6ZUhhbmRsZT4ge1xuICAgIGVsZW1lbnQ6IFQ7XG4gICAgaGFuZGxlOiBLO1xuICAgIGN1cnNvckNsYXNzPzogUmVzaXplQ3Vyc29yQ2xhc3M7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzaXplUmVmPFQgZXh0ZW5kcyBQbGFpdEVsZW1lbnQgPSBQbGFpdEVsZW1lbnQsIEsgPSBSZXNpemVIYW5kbGU+IHtcbiAgICBlbGVtZW50OiBUO1xuICAgIHBhdGg6IFBhdGg7XG4gICAgaGFuZGxlOiBLO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc2l6ZVN0YXRlIHtcbiAgICBvZmZzZXRYOiBudW1iZXI7XG4gICAgb2Zmc2V0WTogbnVtYmVyO1xuICAgIGVuZFRyYW5zZm9ybVBvaW50OiBQb2ludDtcbn1cblxuY29uc3QgZ2VuZXJhbENhblJlc2l6ZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICAgIFBsYWl0Qm9hcmQuaXNSZWFkb25seShib2FyZCkgfHxcbiAgICAgICAgUGxhaXRCb2FyZC5oYXNCZWVuVGV4dEVkaXRpbmcoYm9hcmQpIHx8XG4gICAgICAgICFQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5oYW5kKSB8fFxuICAgICAgICAhaXNNYWluUG9pbnRlcihldmVudClcbiAgICApO1xufTtcblxuZXhwb3J0IGNvbnN0IHdpdGhSZXNpemUgPSA8VCBleHRlbmRzIFBsYWl0RWxlbWVudCA9IFBsYWl0RWxlbWVudCwgSyA9IFJlc2l6ZUhhbmRsZT4oYm9hcmQ6IFBsYWl0Qm9hcmQsIG9wdGlvbnM6IFdpdGhSZXNpemVPcHRpb25zPFQsIEs+KSA9PiB7XG4gICAgY29uc3QgeyBwb2ludGVyRG93biwgcG9pbnRlck1vdmUsIGdsb2JhbFBvaW50ZXJVcCB9ID0gYm9hcmQ7XG4gICAgbGV0IHJlc2l6ZURldGVjdFJlc3VsdDogUmVzaXplRGV0ZWN0UmVzdWx0PFQsIEs+IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IHJlc2l6ZVJlZjogUmVzaXplUmVmPFQsIEs+IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IHN0YXJ0UG9pbnQ6IFBvaW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGhvdmVEZXRlY3RSZXN1bHQ6IFJlc2l6ZURldGVjdFJlc3VsdDxULCBLPiB8IG51bGwgPSBudWxsO1xuXG4gICAgYm9hcmQucG9pbnRlckRvd24gPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIW9wdGlvbnMuY2FuUmVzaXplKCkgfHwgIWdlbmVyYWxDYW5SZXNpemUoYm9hcmQsIGV2ZW50KSkge1xuICAgICAgICAgICAgcG9pbnRlckRvd24oZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICByZXNpemVEZXRlY3RSZXN1bHQgPSBvcHRpb25zLmRldGVjdChwb2ludCk7XG4gICAgICAgIGlmIChyZXNpemVEZXRlY3RSZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChyZXNpemVEZXRlY3RSZXN1bHQuY3Vyc29yQ2xhc3MpIHtcbiAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jbGFzc0xpc3QuYWRkKGAke3Jlc2l6ZURldGVjdFJlc3VsdC5jdXJzb3JDbGFzc31gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSBbZXZlbnQueCwgZXZlbnQueV07XG4gICAgICAgICAgICByZXNpemVSZWYgPSB7XG4gICAgICAgICAgICAgICAgcGF0aDogUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgcmVzaXplRGV0ZWN0UmVzdWx0LmVsZW1lbnQpLFxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHJlc2l6ZURldGVjdFJlc3VsdC5lbGVtZW50LFxuICAgICAgICAgICAgICAgIGhhbmRsZTogcmVzaXplRGV0ZWN0UmVzdWx0LmhhbmRsZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFvcHRpb25zLmNhblJlc2l6ZSgpIHx8ICFnZW5lcmFsQ2FuUmVzaXplKGJvYXJkLCBldmVudCkpIHtcbiAgICAgICAgICAgIHBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnRQb2ludCAmJiByZXNpemVEZXRlY3RSZXN1bHQgJiYgIWlzUmVzaXppbmcoYm9hcmQpKSB7XG4gICAgICAgICAgICAvLyBwcmV2ZW50IHRleHQgZnJvbSBiZWluZyBzZWxlY3RlZFxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHByZXZlbnRUb3VjaE1vdmUoYm9hcmQsIHRydWUpO1xuXG4gICAgICAgICAgICBjb25zdCBlbmRQb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludChzdGFydFBvaW50WzBdLCBzdGFydFBvaW50WzFdLCBlbmRQb2ludFswXSwgZW5kUG9pbnRbMV0pO1xuICAgICAgICAgICAgaWYgKGRpc3RhbmNlID4gUFJFU1NfQU5EX01PVkVfQlVGRkVSKSB7XG4gICAgICAgICAgICAgICAgYWRkUmVzaXppbmcoYm9hcmQsIG9wdGlvbnMua2V5KTtcbiAgICAgICAgICAgICAgICBNRVJHSU5HLnNldChib2FyZCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNSZXNpemluZyhib2FyZCkgJiYgc3RhcnRQb2ludCkge1xuICAgICAgICAgICAgLy8gcHJldmVudCB0ZXh0IGZyb20gYmVpbmcgc2VsZWN0ZWRcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBwcmV2ZW50VG91Y2hNb3ZlKGJvYXJkLCB0cnVlKTtcbiAgICAgICAgICAgIGNvbnN0IGVuZFRyYW5zZm9ybVBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICAgICAgdGhyb3R0bGVSQUYoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZFBvaW50ID0gW2V2ZW50LngsIGV2ZW50LnldO1xuICAgICAgICAgICAgICAgIGlmIChzdGFydFBvaW50ICYmIHJlc2l6ZVJlZikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvZmZzZXRYID0gZW5kUG9pbnRbMF0gLSBzdGFydFBvaW50WzBdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvZmZzZXRZID0gZW5kUG9pbnRbMV0gLSBzdGFydFBvaW50WzFdO1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLm9uUmVzaXplKHJlc2l6ZVJlZiwgeyBvZmZzZXRYLCBvZmZzZXRZLCBlbmRUcmFuc2Zvcm1Qb2ludCB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICAgICAgY29uc3QgcmVzaXplRGV0ZWN0UmVzdWx0ID0gb3B0aW9ucy5kZXRlY3QocG9pbnQpO1xuICAgICAgICAgICAgaWYgKHJlc2l6ZURldGVjdFJlc3VsdCkge1xuICAgICAgICAgICAgICAgIGhvdmVEZXRlY3RSZXN1bHQgPSByZXNpemVEZXRlY3RSZXN1bHQ7XG4gICAgICAgICAgICAgICAgaWYgKGhvdmVEZXRlY3RSZXN1bHQuY3Vyc29yQ2xhc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LmFkZChgJHtob3ZlRGV0ZWN0UmVzdWx0LmN1cnNvckNsYXNzfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGhvdmVEZXRlY3RSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhvdmVEZXRlY3RSZXN1bHQuY3Vyc29yQ2xhc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5yZW1vdmUoYCR7aG92ZURldGVjdFJlc3VsdC5jdXJzb3JDbGFzc31gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBob3ZlRGV0ZWN0UmVzdWx0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nbG9iYWxQb2ludGVyVXAgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBnbG9iYWxQb2ludGVyVXAoZXZlbnQpO1xuICAgICAgICBpZiAoaXNSZXNpemluZyhib2FyZCkgfHwgcmVzaXplRGV0ZWN0UmVzdWx0KSB7XG4gICAgICAgICAgICByZW1vdmVSZXNpemluZyhib2FyZCwgb3B0aW9ucy5rZXkpO1xuICAgICAgICAgICAgc3RhcnRQb2ludCA9IG51bGw7XG4gICAgICAgICAgICByZXNpemVEZXRlY3RSZXN1bHQgPSBudWxsO1xuICAgICAgICAgICAgcmVzaXplUmVmID0gbnVsbDtcbiAgICAgICAgICAgIE1FUkdJTkcuc2V0KGJvYXJkLCBmYWxzZSk7XG4gICAgICAgICAgICBwcmV2ZW50VG91Y2hNb3ZlKGJvYXJkLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufTtcbiJdfQ==
|
package/esm2020/shape/common.mjs
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export const normalizeShapePoints = (points) => {
|
|
2
|
-
const leftTopPoint = [Math.min(points[0][0], points[1][0]), Math.min(points[0][1], points[1][1])];
|
|
3
|
-
const rightBottomPoint = [Math.max(points[0][0], points[1][0]), Math.max(points[0][1], points[1][1])];
|
|
4
|
-
return [leftTopPoint, rightBottomPoint];
|
|
5
|
-
};
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9zaGFwZS9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFzQixFQUFrQixFQUFFO0lBQzNFLE1BQU0sWUFBWSxHQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RyxNQUFNLGdCQUFnQixHQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RyxPQUFPLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9pbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBub3JtYWxpemVTaGFwZVBvaW50cyA9IChwb2ludHM6IFtQb2ludCwgUG9pbnRdKTogW1BvaW50LCBQb2ludF0gPT4ge1xuICAgIGNvbnN0IGxlZnRUb3BQb2ludDogUG9pbnQgPSBbTWF0aC5taW4ocG9pbnRzWzBdWzBdLCBwb2ludHNbMV1bMF0pLCBNYXRoLm1pbihwb2ludHNbMF1bMV0sIHBvaW50c1sxXVsxXSldO1xuICAgIGNvbnN0IHJpZ2h0Qm90dG9tUG9pbnQ6IFBvaW50ID0gW01hdGgubWF4KHBvaW50c1swXVswXSwgcG9pbnRzWzFdWzBdKSwgTWF0aC5tYXgocG9pbnRzWzBdWzFdLCBwb2ludHNbMV1bMV0pXTtcbiAgICByZXR1cm4gW2xlZnRUb3BQb2ludCwgcmlnaHRCb3R0b21Qb2ludF07XG59O1xuIl19
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
export const getPoints = (source, sourcePosition, target, targetPosition, offset) => {
|
|
2
|
-
const sourceDir = handleDirections[sourcePosition];
|
|
3
|
-
const targetDir = handleDirections[targetPosition];
|
|
4
|
-
const sourceGapped = [source[0] + sourceDir.x * offset, source[1] + sourceDir.y * offset];
|
|
5
|
-
const targetGapped = [target[0] + targetDir.x * offset, target[1] + targetDir.y * offset];
|
|
6
|
-
const dir = getDirection(sourceGapped, sourcePosition, targetGapped);
|
|
7
|
-
const dirAccessor = dir.x !== 0 ? 'x' : 'y';
|
|
8
|
-
const currDir = dir[dirAccessor];
|
|
9
|
-
let points = [];
|
|
10
|
-
let centerX, centerY;
|
|
11
|
-
const [defaultCenterX, defaultCenterY] = getEdgeCenter({
|
|
12
|
-
sourceX: source[0],
|
|
13
|
-
sourceY: source[1],
|
|
14
|
-
targetX: target[0],
|
|
15
|
-
targetY: target[1]
|
|
16
|
-
});
|
|
17
|
-
// opposite handle positions, default case
|
|
18
|
-
if (sourceDir[dirAccessor] * targetDir[dirAccessor] === -1) {
|
|
19
|
-
centerX = defaultCenterX;
|
|
20
|
-
centerY = defaultCenterY;
|
|
21
|
-
// --->
|
|
22
|
-
// |
|
|
23
|
-
// >---
|
|
24
|
-
const verticalSplit = [
|
|
25
|
-
[centerX, sourceGapped[1]],
|
|
26
|
-
[centerX, targetGapped[1]]
|
|
27
|
-
];
|
|
28
|
-
// |
|
|
29
|
-
// ---
|
|
30
|
-
// |
|
|
31
|
-
const horizontalSplit = [
|
|
32
|
-
[sourceGapped[0], centerY],
|
|
33
|
-
[targetGapped[0], centerY]
|
|
34
|
-
];
|
|
35
|
-
if (sourceDir[dirAccessor] === currDir) {
|
|
36
|
-
points = dirAccessor === 'x' ? verticalSplit : horizontalSplit;
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
points = dirAccessor === 'x' ? horizontalSplit : verticalSplit;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
// sourceTarget means we take x from source and y from target, targetSource is the opposite
|
|
44
|
-
const sourceTarget = [[sourceGapped[0], targetGapped[1]]];
|
|
45
|
-
const targetSource = [[targetGapped[0], sourceGapped[1]]];
|
|
46
|
-
// this handles edges with same handle positions
|
|
47
|
-
if (dirAccessor === 'x') {
|
|
48
|
-
points = sourceDir.x === currDir ? targetSource : sourceTarget;
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
points = sourceDir.y === currDir ? sourceTarget : targetSource;
|
|
52
|
-
}
|
|
53
|
-
// these are conditions for handling mixed handle positions like right -> bottom for example
|
|
54
|
-
let flipSourceTarget;
|
|
55
|
-
if (sourcePosition !== targetPosition) {
|
|
56
|
-
const dirAccessorOpposite = dirAccessor === 'x' ? 1 : 0;
|
|
57
|
-
const isSameDir = sourceDir[dirAccessor] === targetDir[dirAccessor === 'x' ? 'y' : 'x'];
|
|
58
|
-
const sourceGtTargetOppo = sourceGapped[dirAccessorOpposite] > targetGapped[dirAccessorOpposite];
|
|
59
|
-
const sourceLtTargetOppo = sourceGapped[dirAccessorOpposite] < targetGapped[dirAccessorOpposite];
|
|
60
|
-
flipSourceTarget =
|
|
61
|
-
(sourceDir[dirAccessor] === 1 && ((!isSameDir && sourceGtTargetOppo) || (isSameDir && sourceLtTargetOppo))) ||
|
|
62
|
-
(sourceDir[dirAccessor] !== 1 && ((!isSameDir && sourceLtTargetOppo) || (isSameDir && sourceGtTargetOppo)));
|
|
63
|
-
if (flipSourceTarget) {
|
|
64
|
-
points = dirAccessor === 'x' ? sourceTarget : targetSource;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return [source, ...points, target];
|
|
69
|
-
};
|
|
70
|
-
const getDirection = (source, sourcePosition = Direction.bottom, target) => {
|
|
71
|
-
if (sourcePosition === Direction.left || sourcePosition === Direction.right) {
|
|
72
|
-
return source[0] < target[0] ? { x: 1, y: 0 } : { x: -1, y: 0 };
|
|
73
|
-
}
|
|
74
|
-
return source[1] < target[1] ? { x: 0, y: 1 } : { x: 0, y: -1 };
|
|
75
|
-
};
|
|
76
|
-
export var Direction;
|
|
77
|
-
(function (Direction) {
|
|
78
|
-
Direction["left"] = "left";
|
|
79
|
-
Direction["top"] = "top";
|
|
80
|
-
Direction["right"] = "right";
|
|
81
|
-
Direction["bottom"] = "bottom";
|
|
82
|
-
})(Direction || (Direction = {}));
|
|
83
|
-
const handleDirections = {
|
|
84
|
-
[Direction.left]: { x: -1, y: 0 },
|
|
85
|
-
[Direction.right]: { x: 1, y: 0 },
|
|
86
|
-
[Direction.top]: { x: 0, y: -1 },
|
|
87
|
-
[Direction.bottom]: { x: 0, y: 1 }
|
|
88
|
-
};
|
|
89
|
-
export function getEdgeCenter({ sourceX, sourceY, targetX, targetY }) {
|
|
90
|
-
const xOffset = Math.abs(targetX - sourceX) / 2;
|
|
91
|
-
const centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset;
|
|
92
|
-
const yOffset = Math.abs(targetY - sourceY) / 2;
|
|
93
|
-
const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;
|
|
94
|
-
return [centerX, centerY, xOffset, yOffset];
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1wYXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy91dGlscy9saW5lLXBhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBYSxFQUFFLGNBQXlCLEVBQUUsTUFBYSxFQUFFLGNBQXlCLEVBQUUsTUFBYyxFQUFFLEVBQUU7SUFDNUgsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbkQsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbkQsTUFBTSxZQUFZLEdBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDakcsTUFBTSxZQUFZLEdBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDakcsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDckUsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzVDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVqQyxJQUFJLE1BQU0sR0FBWSxFQUFFLENBQUM7SUFDekIsSUFBSSxPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQ3JCLE1BQU0sQ0FBQyxjQUFjLEVBQUUs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QUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFFMUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb2ludCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcblxuZXhwb3J0IGNvbnN0IGdldFBvaW50cyA9IChzb3VyY2U6IFBvaW50LCBzb3VyY2VQb3NpdGlvbjogRGlyZWN0aW9uLCB0YXJnZXQ6IFBvaW50LCB0YXJnZXRQb3NpdGlvbjogRGlyZWN0aW9uLCBvZmZzZXQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHNvdXJjZURpciA9IGhhbmRsZURpcmVjdGlvbnNbc291cmNlUG9zaXRpb25dO1xuICAgIGNvbnN0IHRhcmdldERpciA9IGhhbmRsZURpcmVjdGlvbnNbdGFyZ2V0UG9zaXRpb25dO1xuICAgIGNvbnN0IHNvdXJjZUdhcHBlZDogUG9pbnQgPSBbc291cmNlWzBdICsgc291cmNlRGlyLnggKiBvZmZzZXQsIHNvdXJjZVsxXSArIHNvdXJjZURpci55ICogb2Zmc2V0XTtcbiAgICBjb25zdCB0YXJnZXRHYXBwZWQ6IFBvaW50ID0gW3RhcmdldFswXSArIHRhcmdldERpci54ICogb2Zmc2V0LCB0YXJnZXRbMV0gKyB0YXJnZXREaXIueSAqIG9mZnNldF07XG4gICAgY29uc3QgZGlyID0gZ2V0RGlyZWN0aW9uKHNvdXJjZUdhcHBlZCwgc291cmNlUG9zaXRpb24sIHRhcmdldEdhcHBlZCk7XG4gICAgY29uc3QgZGlyQWNjZXNzb3IgPSBkaXIueCAhPT0gMCA/ICd4JyA6ICd5JztcbiAgICBjb25zdCBjdXJyRGlyID0gZGlyW2RpckFjY2Vzc29yXTtcblxuICAgIGxldCBwb2ludHM6IFBvaW50W10gPSBbXTtcbiAgICBsZXQgY2VudGVyWCwgY2VudGVyWTtcbiAgICBjb25zdCBbZGVmYXVsdENlbnRlclgsIGRlZmF1bHRDZW50ZXJZXSA9IGdldEVkZ2VDZW50ZXIoe1xuICAgICAgICBzb3VyY2VYOiBzb3VyY2VbMF0sXG4gICAgICAgIHNvdXJjZVk6IHNvdXJjZVsxXSxcbiAgICAgICAgdGFyZ2V0WDogdGFyZ2V0WzBdLFxuICAgICAgICB0YXJnZXRZOiB0YXJnZXRbMV1cbiAgICB9KTtcbiAgICAvLyBvcHBvc2l0ZSBoYW5kbGUgcG9zaXRpb25zLCBkZWZhdWx0IGNhc2VcbiAgICBpZiAoc291cmNlRGlyW2RpckFjY2Vzc29yXSAqIHRhcmdldERpcltkaXJBY2Nlc3Nvcl0gPT09IC0xKSB7XG4gICAgICAgIGNlbnRlclggPSBkZWZhdWx0Q2VudGVyWDtcbiAgICAgICAgY2VudGVyWSA9IGRlZmF1bHRDZW50ZXJZO1xuICAgICAgICAvLyAgICAtLS0+XG4gICAgICAgIC8vICAgIHxcbiAgICAgICAgLy8gPi0tLVxuICAgICAgICBjb25zdCB2ZXJ0aWNhbFNwbGl0OiBQb2ludFtdID0gW1xuICAgICAgICAgICAgW2NlbnRlclgsIHNvdXJjZUdhcHBlZFsxXV0sXG4gICAgICAgICAgICBbY2VudGVyWCwgdGFyZ2V0R2FwcGVkWzFdXVxuICAgICAgICBdO1xuICAgICAgICAvLyAgICB8XG4gICAgICAgIC8vICAtLS1cbiAgICAgICAgLy8gIHxcbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbFNwbGl0OiBQb2ludFtdID0gW1xuICAgICAgICAgICAgW3NvdXJjZUdhcHBlZFswXSwgY2VudGVyWV0sXG4gICAgICAgICAgICBbdGFyZ2V0R2FwcGVkWzBdLCBjZW50ZXJZXVxuICAgICAgICBdO1xuICAgICAgICBpZiAoc291cmNlRGlyW2RpckFjY2Vzc29yXSA9PT0gY3VyckRpcikge1xuICAgICAgICAgICAgcG9pbnRzID0gZGlyQWNjZXNzb3IgPT09ICd4JyA/IHZlcnRpY2FsU3BsaXQgOiBob3Jpem9udGFsU3BsaXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwb2ludHMgPSBkaXJBY2Nlc3NvciA9PT0gJ3gnID8gaG9yaXpvbnRhbFNwbGl0IDogdmVydGljYWxTcGxpdDtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHNvdXJjZVRhcmdldCBtZWFucyB3ZSB0YWtlIHggZnJvbSBzb3VyY2UgYW5kIHkgZnJvbSB0YXJnZXQsIHRhcmdldFNvdXJjZSBpcyB0aGUgb3Bwb3NpdGVcbiAgICAgICAgY29uc3Qgc291cmNlVGFyZ2V0OiBQb2ludFtdID0gW1tzb3VyY2VHYXBwZWRbMF0sIHRhcmdldEdhcHBlZFsxXV1dO1xuICAgICAgICBjb25zdCB0YXJnZXRTb3VyY2U6IFBvaW50W10gPSBbW3RhcmdldEdhcHBlZFswXSwgc291cmNlR2FwcGVkWzFdXV07XG4gICAgICAgIC8vIHRoaXMgaGFuZGxlcyBlZGdlcyB3aXRoIHNhbWUgaGFuZGxlIHBvc2l0aW9uc1xuICAgICAgICBpZiAoZGlyQWNjZXNzb3IgPT09ICd4Jykge1xuICAgICAgICAgICAgcG9pbnRzID0gc291cmNlRGlyLnggPT09IGN1cnJEaXIgPyB0YXJnZXRTb3VyY2UgOiBzb3VyY2VUYXJnZXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwb2ludHMgPSBzb3VyY2VEaXIueSA9PT0gY3VyckRpciA/IHNvdXJjZVRhcmdldCA6IHRhcmdldFNvdXJjZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRoZXNlIGFyZSBjb25kaXRpb25zIGZvciBoYW5kbGluZyBtaXhlZCBoYW5kbGUgcG9zaXRpb25zIGxpa2UgcmlnaHQgLT4gYm90dG9tIGZvciBleGFtcGxlXG4gICAgICAgIGxldCBmbGlwU291cmNlVGFyZ2V0O1xuICAgICAgICBpZiAoc291cmNlUG9zaXRpb24gIT09IHRhcmdldFBvc2l0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBkaXJBY2Nlc3Nvck9wcG9zaXRlID0gZGlyQWNjZXNzb3IgPT09ICd4JyA/IDEgOiAwO1xuICAgICAgICAgICAgY29uc3QgaXNTYW1lRGlyID0gc291cmNlRGlyW2RpckFjY2Vzc29yXSA9PT0gdGFyZ2V0RGlyW2RpckFjY2Vzc29yID09PSAneCcgPyAneScgOiAneCddO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlR3RUYXJnZXRPcHBvID0gc291cmNlR2FwcGVkW2RpckFjY2Vzc29yT3Bwb3NpdGVdID4gdGFyZ2V0R2FwcGVkW2RpckFjY2Vzc29yT3Bwb3NpdGVdO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlTHRUYXJnZXRPcHBvID0gc291cmNlR2FwcGVkW2RpckFjY2Vzc29yT3Bwb3NpdGVdIDwgdGFyZ2V0R2FwcGVkW2RpckFjY2Vzc29yT3Bwb3NpdGVdO1xuICAgICAgICAgICAgZmxpcFNvdXJjZVRhcmdldCA9XG4gICAgICAgICAgICAgICAgKHNvdXJjZURpcltkaXJBY2Nlc3Nvcl0gPT09IDEgJiYgKCghaXNTYW1lRGlyICYmIHNvdXJjZUd0VGFyZ2V0T3BwbykgfHwgKGlzU2FtZURpciAmJiBzb3VyY2VMdFRhcmdldE9wcG8pKSkgfHxcbiAgICAgICAgICAgICAgICAoc291cmNlRGlyW2RpckFjY2Vzc29yXSAhPT0gMSAmJiAoKCFpc1NhbWVEaXIgJiYgc291cmNlTHRUYXJnZXRPcHBvKSB8fCAoaXNTYW1lRGlyICYmIHNvdXJjZUd0VGFyZ2V0T3BwbykpKTtcblxuICAgICAgICAgICAgaWYgKGZsaXBTb3VyY2VUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICBwb2ludHMgPSBkaXJBY2Nlc3NvciA9PT0gJ3gnID8gc291cmNlVGFyZ2V0IDogdGFyZ2V0U291cmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbc291cmNlLCAuLi5wb2ludHMsIHRhcmdldF07XG59O1xuXG5jb25zdCBnZXREaXJlY3Rpb24gPSAoc291cmNlOiBQb2ludCwgc291cmNlUG9zaXRpb24gPSBEaXJlY3Rpb24uYm90dG9tLCB0YXJnZXQ6IFBvaW50KSA9PiB7XG4gICAgaWYgKHNvdXJjZVBvc2l0aW9uID09PSBEaXJlY3Rpb24ubGVmdCB8fCBzb3VyY2VQb3NpdGlvbiA9PT0gRGlyZWN0aW9uLnJpZ2h0KSB7XG4gICAgICAgIHJldHVybiBzb3VyY2VbMF0gPCB0YXJnZXRbMF0gPyB7IHg6IDEsIHk6IDAgfSA6IHsgeDogLTEsIHk6IDAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHNvdXJjZVsxXSA8IHRhcmdldFsxXSA/IHsgeDogMCwgeTogMSB9IDogeyB4OiAwLCB5OiAtMSB9O1xufTtcblxuZXhwb3J0IGVudW0gRGlyZWN0aW9uIHtcbiAgICBsZWZ0ID0gJ2xlZnQnLFxuICAgIHRvcCA9ICd0b3AnLFxuICAgIHJpZ2h0ID0gJ3JpZ2h0JyxcbiAgICBib3R0b20gPSAnYm90dG9tJ1xufVxuXG5jb25zdCBoYW5kbGVEaXJlY3Rpb25zID0ge1xuICAgIFtEaXJlY3Rpb24ubGVmdF06IHsgeDogLTEsIHk6IDAgfSxcbiAgICBbRGlyZWN0aW9uLnJpZ2h0XTogeyB4OiAxLCB5OiAwIH0sXG4gICAgW0RpcmVjdGlvbi50b3BdOiB7IHg6IDAsIHk6IC0xIH0sXG4gICAgW0RpcmVjdGlvbi5ib3R0b21dOiB7IHg6IDAsIHk6IDEgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVkZ2VDZW50ZXIoe1xuICAgIHNvdXJjZVgsXG4gICAgc291cmNlWSxcbiAgICB0YXJnZXRYLFxuICAgIHRhcmdldFlcbn06IHtcbiAgICBzb3VyY2VYOiBudW1iZXI7XG4gICAgc291cmNlWTogbnVtYmVyO1xuICAgIHRhcmdldFg6IG51bWJlcjtcbiAgICB0YXJnZXRZOiBudW1iZXI7XG59KTogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0ge1xuICAgIGNvbnN0IHhPZmZzZXQgPSBNYXRoLmFicyh0YXJnZXRYIC0gc291cmNlWCkgLyAyO1xuICAgIGNvbnN0IGNlbnRlclggPSB0YXJnZXRYIDwgc291cmNlWCA/IHRhcmdldFggKyB4T2Zmc2V0IDogdGFyZ2V0WCAtIHhPZmZzZXQ7XG5cbiAgICBjb25zdCB5T2Zmc2V0ID0gTWF0aC5hYnModGFyZ2V0WSAtIHNvdXJjZVkpIC8gMjtcbiAgICBjb25zdCBjZW50ZXJZID0gdGFyZ2V0WSA8IHNvdXJjZVkgPyB0YXJnZXRZICsgeU9mZnNldCA6IHRhcmdldFkgLSB5T2Zmc2V0O1xuXG4gICAgcmV0dXJuIFtjZW50ZXJYLCBjZW50ZXJZLCB4T2Zmc2V0LCB5T2Zmc2V0XTtcbn1cbiJdfQ==
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { PlaitBoard } from '@plait/core';
|
|
2
|
-
export const drawRectangle = (board, rectangle, options) => {
|
|
3
|
-
const roughSVG = PlaitBoard.getRoughSVG(board);
|
|
4
|
-
const rectangleG = roughSVG.rectangle(rectangle.x, rectangle.y, rectangle.width, rectangle.height, options);
|
|
5
|
-
rectangleG.querySelector('path').setAttribute('stroke-linecap', 'square');
|
|
6
|
-
return rectangleG;
|
|
7
|
-
};
|
|
8
|
-
export const getRectangleByPoints = (points) => {
|
|
9
|
-
return {
|
|
10
|
-
x: points[0][0],
|
|
11
|
-
y: points[0][1],
|
|
12
|
-
width: Math.abs(points[1][0] - points[0][0]),
|
|
13
|
-
height: Math.abs(points[1][1] - points[0][1])
|
|
14
|
-
};
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjdGFuZ2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy91dGlscy9yZWN0YW5nbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBMEIsTUFBTSxhQUFhLENBQUM7QUFHakUsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBaUIsRUFBRSxTQUEwQixFQUFFLE9BQWdCLEVBQUUsRUFBRTtJQUM3RixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1RyxVQUFVLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBRSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMzRSxPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE1BQXNCLEVBQUUsRUFBRTtJQUMzRCxPQUFPO1FBQ0gsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUM3QixDQUFDO0FBQ3pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAncm91Z2hqcy9iaW4vY29yZSc7XG5cbmV4cG9ydCBjb25zdCBkcmF3UmVjdGFuZ2xlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgb3B0aW9uczogT3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHJvdWdoU1ZHID0gUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCk7XG4gICAgY29uc3QgcmVjdGFuZ2xlRyA9IHJvdWdoU1ZHLnJlY3RhbmdsZShyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnksIHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLmhlaWdodCwgb3B0aW9ucyk7XG4gICAgcmVjdGFuZ2xlRy5xdWVyeVNlbGVjdG9yKCdwYXRoJykhLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLWxpbmVjYXAnLCAnc3F1YXJlJyk7XG4gICAgcmV0dXJuIHJlY3RhbmdsZUc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVjdGFuZ2xlQnlQb2ludHMgPSAocG9pbnRzOiBbUG9pbnQsIFBvaW50XSkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAgIHg6IHBvaW50c1swXVswXSxcbiAgICAgICAgeTogcG9pbnRzWzBdWzFdLFxuICAgICAgICB3aWR0aDogTWF0aC5hYnMocG9pbnRzWzFdWzBdIC0gcG9pbnRzWzBdWzBdKSxcbiAgICAgICAgaGVpZ2h0OiBNYXRoLmFicyhwb2ludHNbMV1bMV0gLSBwb2ludHNbMF1bMV0pXG4gICAgfSBhcyBSZWN0YW5nbGVDbGllbnQ7XG59O1xuIl19
|
package/esm2020/utils/resize.mjs
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { PlaitBoard, RectangleClient } from '@plait/core';
|
|
2
|
-
import { ResizeCursorClass, ResizeHandle } from '../constants/resize';
|
|
3
|
-
const getResizeHandleByIndex = (index) => {
|
|
4
|
-
switch (index) {
|
|
5
|
-
case 0:
|
|
6
|
-
return ResizeHandle.nw;
|
|
7
|
-
case 1:
|
|
8
|
-
return ResizeHandle.ne;
|
|
9
|
-
case 2:
|
|
10
|
-
return ResizeHandle.se;
|
|
11
|
-
case 3:
|
|
12
|
-
return ResizeHandle.sw;
|
|
13
|
-
default:
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
const getResizeCursorClassByIndex = (index) => {
|
|
18
|
-
switch (index) {
|
|
19
|
-
case 0:
|
|
20
|
-
return ResizeCursorClass.nwse;
|
|
21
|
-
case 1:
|
|
22
|
-
return ResizeCursorClass.nesw;
|
|
23
|
-
case 2:
|
|
24
|
-
return ResizeCursorClass.nwse;
|
|
25
|
-
case 3:
|
|
26
|
-
return ResizeCursorClass.nesw;
|
|
27
|
-
default:
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
export const getRectangleResizeHandleRefs = (rectangle, diameter) => {
|
|
32
|
-
const centers = RectangleClient.getCornerPoints(rectangle);
|
|
33
|
-
return centers.map((center, index) => {
|
|
34
|
-
return {
|
|
35
|
-
rectangle: {
|
|
36
|
-
x: center[0] - diameter / 2,
|
|
37
|
-
y: center[1] - diameter / 2,
|
|
38
|
-
width: diameter,
|
|
39
|
-
height: diameter
|
|
40
|
-
},
|
|
41
|
-
handle: getResizeHandleByIndex(index),
|
|
42
|
-
cursorClass: getResizeCursorClassByIndex(index)
|
|
43
|
-
};
|
|
44
|
-
});
|
|
45
|
-
};
|
|
46
|
-
export const IS_RESIZING = new WeakMap();
|
|
47
|
-
export const isResizing = (board) => {
|
|
48
|
-
return !!IS_RESIZING.get(board);
|
|
49
|
-
};
|
|
50
|
-
export const addResizing = (board, key) => {
|
|
51
|
-
PlaitBoard.getBoardContainer(board).classList.add(`${key}-resizing`);
|
|
52
|
-
IS_RESIZING.set(board, true);
|
|
53
|
-
};
|
|
54
|
-
export const removeResizing = (board, key) => {
|
|
55
|
-
PlaitBoard.getBoardContainer(board).classList.remove(`${key}-resizing`);
|
|
56
|
-
IS_RESIZING.set(board, false);
|
|
57
|
-
};
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy91dGlscy9yZXNpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBUyxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRFLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTtJQUM3QyxRQUFRLEtBQUssRUFBRTtRQUNYLEtBQUssQ0FBQztZQUNGLE9BQU8sWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUMzQixLQUFLLENBQUM7WUFDRixPQUFPLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDM0IsS0FBSyxDQUFDO1lBQ0YsT0FBTyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQzNCLEtBQUssQ0FBQztZQUNGLE9BQU8sWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUMzQjtZQUNJLE9BQU8sSUFBSSxDQUFDO0tBQ25CO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO0lBQ2xELFFBQVEsS0FBSyxFQUFFO1FBQ1gsS0FBSyxDQUFDO1lBQ0YsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7UUFDbEMsS0FBSyxDQUFDO1lBQ0YsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7UUFDbEMsS0FBSyxDQUFDO1lBQ0YsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7UUFDbEMsS0FBSyxDQUFDO1lBQ0YsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7UUFDbEM7WUFDSSxPQUFPLElBQUksQ0FBQztLQUNuQjtBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUMsU0FBMEIsRUFBRSxRQUFnQixFQUFFLEVBQUU7SUFDekYsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBYSxFQUFFLEVBQUU7UUFDekMsT0FBTztZQUNILFNBQVMsRUFBRTtnQkFDUCxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDO2dCQUMzQixDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDO2dCQUMzQixLQUFLLEVBQUUsUUFBUTtnQkFDZixNQUFNLEVBQUUsUUFBUTthQUNuQjtZQUNELE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxLQUFLLENBQWlCO1lBQ3JELFdBQVcsRUFBRSwyQkFBMkIsQ0FBQyxLQUFLLENBQXNCO1NBQ3ZFLENBQUM7SUFDTixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztBQUU5RCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDNUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEdBQVcsRUFBRSxFQUFFO0lBQzFELFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsQ0FBQztJQUNyRSxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEdBQVcsRUFBRSxFQUFFO0lBQzdELFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsQ0FBQztJQUN4RSxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQb2ludCwgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUmVzaXplQ3Vyc29yQ2xhc3MsIFJlc2l6ZUhhbmRsZSB9IGZyb20gJy4uL2NvbnN0YW50cy9yZXNpemUnO1xuXG5jb25zdCBnZXRSZXNpemVIYW5kbGVCeUluZGV4ID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBzd2l0Y2ggKGluZGV4KSB7XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIHJldHVybiBSZXNpemVIYW5kbGUubnc7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHJldHVybiBSZXNpemVIYW5kbGUubmU7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHJldHVybiBSZXNpemVIYW5kbGUuc2U7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHJldHVybiBSZXNpemVIYW5kbGUuc3c7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59O1xuXG5jb25zdCBnZXRSZXNpemVDdXJzb3JDbGFzc0J5SW5kZXggPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIHN3aXRjaCAoaW5kZXgpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgcmV0dXJuIFJlc2l6ZUN1cnNvckNsYXNzLm53c2U7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHJldHVybiBSZXNpemVDdXJzb3JDbGFzcy5uZXN3O1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICByZXR1cm4gUmVzaXplQ3Vyc29yQ2xhc3MubndzZTtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIFJlc2l6ZUN1cnNvckNsYXNzLm5lc3c7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVjdGFuZ2xlUmVzaXplSGFuZGxlUmVmcyA9IChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgZGlhbWV0ZXI6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGNlbnRlcnMgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgcmV0dXJuIGNlbnRlcnMubWFwKChjZW50ZXIsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlY3RhbmdsZToge1xuICAgICAgICAgICAgICAgIHg6IGNlbnRlclswXSAtIGRpYW1ldGVyIC8gMixcbiAgICAgICAgICAgICAgICB5OiBjZW50ZXJbMV0gLSBkaWFtZXRlciAvIDIsXG4gICAgICAgICAgICAgICAgd2lkdGg6IGRpYW1ldGVyLFxuICAgICAgICAgICAgICAgIGhlaWdodDogZGlhbWV0ZXJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYW5kbGU6IGdldFJlc2l6ZUhhbmRsZUJ5SW5kZXgoaW5kZXgpIGFzIFJlc2l6ZUhhbmRsZSxcbiAgICAgICAgICAgIGN1cnNvckNsYXNzOiBnZXRSZXNpemVDdXJzb3JDbGFzc0J5SW5kZXgoaW5kZXgpIGFzIFJlc2l6ZUN1cnNvckNsYXNzXG4gICAgICAgIH07XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgSVNfUkVTSVpJTkcgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBib29sZWFuPigpO1xuXG5leHBvcnQgY29uc3QgaXNSZXNpemluZyA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIHJldHVybiAhIUlTX1JFU0laSU5HLmdldChib2FyZCk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkUmVzaXppbmcgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LmFkZChgJHtrZXl9LXJlc2l6aW5nYCk7XG4gICAgSVNfUkVTSVpJTkcuc2V0KGJvYXJkLCB0cnVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVSZXNpemluZyA9IChib2FyZDogUGxhaXRCb2FyZCwga2V5OiBzdHJpbmcpID0+IHtcbiAgICBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jbGFzc0xpc3QucmVtb3ZlKGAke2tleX0tcmVzaXppbmdgKTtcbiAgICBJU19SRVNJWklORy5zZXQoYm9hcmQsIGZhbHNlKTtcbn07XG4iXX0=
|