@plait/core 0.62.0 → 0.64.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/esm2022/interfaces/plugin.mjs +2 -1
- package/esm2022/plugins/with-hand.mjs +29 -19
- package/esm2022/transforms/board.mjs +24 -3
- package/fesm2022/plait-core.mjs +50 -18
- package/fesm2022/plait-core.mjs.map +1 -1
- package/interfaces/plugin.d.ts +5 -1
- package/package.json +1 -1
- package/transforms/board.d.ts +2 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export var PlaitPluginKey;
|
|
2
2
|
(function (PlaitPluginKey) {
|
|
3
3
|
PlaitPluginKey["withSelection"] = "withSelection";
|
|
4
|
+
PlaitPluginKey["withHand"] = "withHand";
|
|
4
5
|
})(PlaitPluginKey || (PlaitPluginKey = {}));
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvaW50ZXJmYWNlcy9wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0JBLE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDdEIsaURBQWlDLENBQUE7SUFDakMsdUNBQXVCLENBQUE7QUFDM0IsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4vYm9hcmQnO1xuXG5leHBvcnQgdHlwZSBQbGFpdFBsdWdpbiA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4gUGxhaXRCb2FyZDtcblxuZXhwb3J0IGludGVyZmFjZSBXaXRoUGx1Z2luT3B0aW9ucyB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhTZWxlY3Rpb25QbHVnaW5PcHRpb25zIGV4dGVuZHMgV2l0aFBsdWdpbk9wdGlvbnMge1xuICAgIGlzTXVsdGlwbGVTZWxlY3Rpb246IGJvb2xlYW47XG4gICAgaXNEaXNhYmxlZFNlbGVjdGlvbjogYm9vbGVhbjtcbiAgICBpc1ByZXZlbnRDbGVhclNlbGVjdGlvbjogYm9vbGVhbjsgLy8gaXMgY2xlYXIgc2VsZWN0aW9uIG9uIGNsaWNrIG91dHNpZGUgb2YgYm9hcmQgY29udGFpbmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aEhhbmRQbHVnaW5PcHRpb25zIGV4dGVuZHMgV2l0aFBsdWdpbk9wdGlvbnMge1xuICAgIGlzSGFuZE1vZGU6IChib2FyZDogUGxhaXRCb2FyZCwgZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4gYm9vbGVhbjtcbn1cblxuZXhwb3J0IGVudW0gUGxhaXRQbHVnaW5LZXkge1xuICAgICd3aXRoU2VsZWN0aW9uJyA9ICd3aXRoU2VsZWN0aW9uJyxcbiAgICAnd2l0aEhhbmQnID0gJ3dpdGhIYW5kJ1xufVxuIl19
|
|
@@ -1,40 +1,50 @@
|
|
|
1
|
-
import { PlaitPointerType, PlaitBoard } from '../interfaces';
|
|
1
|
+
import { PlaitPointerType, PlaitBoard, PlaitPluginKey } from '../interfaces';
|
|
2
2
|
import { BoardTransforms } from '../transforms';
|
|
3
3
|
import { isMainPointer } from '../utils/dom/common';
|
|
4
4
|
import { updateViewportContainerScroll } from '../utils/viewport';
|
|
5
5
|
export function withHandPointer(board) {
|
|
6
|
-
const { pointerDown, pointerMove, globalPointerUp, keyDown, keyUp } = board;
|
|
6
|
+
const { pointerDown, pointerMove, globalPointerUp, keyDown, keyUp, pointerUp } = board;
|
|
7
7
|
let isMoving = false;
|
|
8
|
-
|
|
9
|
-
x: 0,
|
|
10
|
-
y: 0
|
|
11
|
-
};
|
|
8
|
+
let movingPoint = null;
|
|
12
9
|
board.pointerDown = (event) => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
const options = board.getPluginOptions(PlaitPluginKey.withHand);
|
|
11
|
+
if ((options?.isHandMode(board, event) || PlaitBoard.isPointer(board, PlaitPointerType.hand)) && isMainPointer(event)) {
|
|
12
|
+
movingPoint = {
|
|
13
|
+
x: event.x,
|
|
14
|
+
y: event.y
|
|
15
|
+
};
|
|
18
16
|
}
|
|
19
17
|
pointerDown(event);
|
|
20
18
|
};
|
|
21
19
|
board.pointerMove = (event) => {
|
|
22
|
-
|
|
20
|
+
const options = board.getPluginOptions(PlaitPluginKey.withHand);
|
|
21
|
+
if (movingPoint && !isMoving) {
|
|
22
|
+
isMoving = true;
|
|
23
|
+
PlaitBoard.getBoardContainer(board).classList.add('viewport-moving');
|
|
24
|
+
}
|
|
25
|
+
if ((options?.isHandMode(board, event) || PlaitBoard.isPointer(board, PlaitPointerType.hand)) && isMoving && movingPoint) {
|
|
23
26
|
const viewportContainer = PlaitBoard.getViewportContainer(board);
|
|
24
|
-
const left = viewportContainer.scrollLeft - (event.x -
|
|
25
|
-
const top = viewportContainer.scrollTop - (event.y -
|
|
27
|
+
const left = viewportContainer.scrollLeft - (event.x - movingPoint.x);
|
|
28
|
+
const top = viewportContainer.scrollTop - (event.y - movingPoint.y);
|
|
26
29
|
updateViewportContainerScroll(board, left, top, false);
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
movingPoint.x = event.x;
|
|
31
|
+
movingPoint.y = event.y;
|
|
29
32
|
}
|
|
30
33
|
pointerMove(event);
|
|
31
34
|
};
|
|
35
|
+
board.pointerUp = (event) => {
|
|
36
|
+
if (isMoving) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
pointerUp(event);
|
|
40
|
+
};
|
|
32
41
|
board.globalPointerUp = (event) => {
|
|
42
|
+
if (movingPoint) {
|
|
43
|
+
movingPoint = null;
|
|
44
|
+
}
|
|
33
45
|
if (isMoving) {
|
|
34
46
|
isMoving = false;
|
|
35
47
|
PlaitBoard.getBoardContainer(board).classList.remove('viewport-moving');
|
|
36
|
-
plaitBoardMove.x = 0;
|
|
37
|
-
plaitBoardMove.y = 0;
|
|
38
48
|
}
|
|
39
49
|
globalPointerUp(event);
|
|
40
50
|
};
|
|
@@ -55,4 +65,4 @@ export function withHandPointer(board) {
|
|
|
55
65
|
};
|
|
56
66
|
return board;
|
|
57
67
|
}
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1oYW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvcGx1Z2lucy93aXRoLWhhbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBeUMsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2xFLE1BQU0sVUFBVSxlQUFlLENBQXVCLEtBQVE7SUFDMUQsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ3ZGLElBQUksUUFBUSxHQUFZLEtBQUssQ0FBQztJQUM5QixJQUFJLFdBQVcsR0FBMEIsSUFBSSxDQUFDO0lBRTlDLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxLQUFtQixFQUFFLEVBQUU7UUFDeEMsTUFBTSxPQUFPLEdBQUssS0FBdUMsQ0FBQyxnQkFBZ0IsQ0FBd0IsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNILElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BILFdBQVcsR0FBRztnQkFDVixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ1YsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ2IsQ0FBQztRQUNOLENBQUM7UUFDRCxXQUFXLENBQUMs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QUFDO1lBQ3BELGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQixDQUFDLENBQUM7SUFFRixPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRQb2ludGVyVHlwZSwgUGxhaXRCb2FyZCwgUGxhaXRCb2FyZE1vdmUsIFdpdGhIYW5kUGx1Z2luT3B0aW9ucywgUGxhaXRQbHVnaW5LZXkgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJvYXJkVHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgaXNNYWluUG9pbnRlciB9IGZyb20gJy4uL3V0aWxzL2RvbS9jb21tb24nO1xuaW1wb3J0IHsgdXBkYXRlVmlld3BvcnRDb250YWluZXJTY3JvbGwgfSBmcm9tICcuLi91dGlscy92aWV3cG9ydCc7XG5pbXBvcnQgeyBQbGFpdE9wdGlvbnNCb2FyZCB9IGZyb20gJy4vd2l0aC1vcHRpb25zJztcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhIYW5kUG9pbnRlcjxUIGV4dGVuZHMgUGxhaXRCb2FyZD4oYm9hcmQ6IFQpIHtcbiAgICBjb25zdCB7IHBvaW50ZXJEb3duLCBwb2ludGVyTW92ZSwgZ2xvYmFsUG9pbnRlclVwLCBrZXlEb3duLCBrZXlVcCwgcG9pbnRlclVwIH0gPSBib2FyZDtcbiAgICBsZXQgaXNNb3Zpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBsZXQgbW92aW5nUG9pbnQ6IFBsYWl0Qm9hcmRNb3ZlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBib2FyZC5wb2ludGVyRG93biA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSAoKGJvYXJkIGFzIHVua25vd24pIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPFdpdGhIYW5kUGx1Z2luT3B0aW9ucz4oUGxhaXRQbHVnaW5LZXkud2l0aEhhbmQpO1xuICAgICAgICBpZiAoKG9wdGlvbnM/LmlzSGFuZE1vZGUoYm9hcmQsIGV2ZW50KSB8fCBQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5oYW5kKSkgJiYgaXNNYWluUG9pbnRlcihldmVudCkpIHtcbiAgICAgICAgICAgIG1vdmluZ1BvaW50ID0ge1xuICAgICAgICAgICAgICAgIHg6IGV2ZW50LngsXG4gICAgICAgICAgICAgICAgeTogZXZlbnQueVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9ICgoYm9hcmQgYXMgdW5rbm93bikgYXMgUGxhaXRPcHRpb25zQm9hcmQpLmdldFBsdWdpbk9wdGlvbnM8V2l0aEhhbmRQbHVnaW5PcHRpb25zPihQbGFpdFBsdWdpbktleS53aXRoSGFuZCk7XG4gICAgICAgIGlmIChtb3ZpbmdQb2ludCAmJiAhaXNNb3ZpbmcpIHtcbiAgICAgICAgICAgIGlzTW92aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5hZGQoJ3ZpZXdwb3J0LW1vdmluZycpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgob3B0aW9ucz8uaXNIYW5kTW9kZShib2FyZCwgZXZlbnQpIHx8IFBsYWl0Qm9hcmQuaXNQb2ludGVyKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLmhhbmQpKSAmJiBpc01vdmluZyAmJiBtb3ZpbmdQb2ludCkge1xuICAgICAgICAgICAgY29uc3Qgdmlld3BvcnRDb250YWluZXIgPSBQbGFpdEJvYXJkLmdldFZpZXdwb3J0Q29udGFpbmVyKGJvYXJkKTtcbiAgICAgICAgICAgIGNvbnN0IGxlZnQgPSB2aWV3cG9ydENvbnRhaW5lci5zY3JvbGxMZWZ0IC0gKGV2ZW50LnggLSBtb3ZpbmdQb2ludC54KTtcbiAgICAgICAgICAgIGNvbnN0IHRvcCA9IHZpZXdwb3J0Q29udGFpbmVyLnNjcm9sbFRvcCAtIChldmVudC55IC0gbW92aW5nUG9pbnQueSk7XG4gICAgICAgICAgICB1cGRhdGVWaWV3cG9ydENvbnRhaW5lclNjcm9sbChib2FyZCwgbGVmdCwgdG9wLCBmYWxzZSk7XG4gICAgICAgICAgICBtb3ZpbmdQb2ludC54ID0gZXZlbnQueDtcbiAgICAgICAgICAgIG1vdmluZ1BvaW50LnkgPSBldmVudC55O1xuICAgICAgICB9XG4gICAgICAgIHBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQucG9pbnRlclVwID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGlzTW92aW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlclVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2xvYmFsUG9pbnRlclVwID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKG1vdmluZ1BvaW50KSB7XG4gICAgICAgICAgICBtb3ZpbmdQb2ludCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTW92aW5nKSB7XG4gICAgICAgICAgICBpc01vdmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LnJlbW92ZSgndmlld3BvcnQtbW92aW5nJyk7XG4gICAgICAgIH1cbiAgICAgICAgZ2xvYmFsUG9pbnRlclVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQua2V5RG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ1NwYWNlJykge1xuICAgICAgICAgICAgaWYgKCFQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5oYW5kKSkge1xuICAgICAgICAgICAgICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVQb2ludGVyVHlwZShib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5oYW5kKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAga2V5RG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmtleVVwID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghYm9hcmQub3B0aW9ucy5yZWFkb25seSAmJiBldmVudC5jb2RlID09PSAnU3BhY2UnKSB7XG4gICAgICAgICAgICBCb2FyZFRyYW5zZm9ybXMudXBkYXRlUG9pbnRlclR5cGUoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBrZXlVcChldmVudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBib2FyZDtcbn1cbiJdfQ==
|
|
@@ -3,7 +3,7 @@ import { getRectangleByElements } from '../utils/element';
|
|
|
3
3
|
import { distanceBetweenPointAndRectangle } from '../utils/math';
|
|
4
4
|
import { clampZoomLevel, clearViewportOrigination, getViewBoxCenterPoint, getViewportOrigination, initializeViewportContainer } from '../utils/viewport';
|
|
5
5
|
import { setViewport } from './viewport';
|
|
6
|
-
import { depthFirstRecursion, getRealScrollBarWidth } from '../utils';
|
|
6
|
+
import { depthFirstRecursion, getRealScrollBarWidth, getSelectedElements } from '../utils';
|
|
7
7
|
import { setTheme } from './theme';
|
|
8
8
|
function updateViewport(board, origination, zoom) {
|
|
9
9
|
zoom = zoom ?? board.viewport.zoom;
|
|
@@ -106,12 +106,33 @@ const updatePointerType = (board, pointer) => {
|
|
|
106
106
|
return;
|
|
107
107
|
board.pointer = pointer;
|
|
108
108
|
};
|
|
109
|
+
function moveToCenter(board, centerPoint) {
|
|
110
|
+
const plaitElement = getSelectedElements(board)?.[0];
|
|
111
|
+
if (plaitElement) {
|
|
112
|
+
const boardContainerRect = PlaitBoard.getBoardContainer(board).getBoundingClientRect();
|
|
113
|
+
const scrollBarWidth = getRealScrollBarWidth(board);
|
|
114
|
+
const oldCenterPoint = getViewBoxCenterPoint(board);
|
|
115
|
+
const left = centerPoint[0] - oldCenterPoint[0];
|
|
116
|
+
const top = centerPoint[1] - oldCenterPoint[1];
|
|
117
|
+
const zoom = board.viewport.zoom;
|
|
118
|
+
const origination = [
|
|
119
|
+
left - boardContainerRect.width / 2 / zoom + scrollBarWidth / 2 / zoom,
|
|
120
|
+
top - boardContainerRect.height / 2 / zoom + scrollBarWidth / 2 / zoom
|
|
121
|
+
];
|
|
122
|
+
setViewport(board, {
|
|
123
|
+
...board.viewport,
|
|
124
|
+
origination
|
|
125
|
+
});
|
|
126
|
+
clearViewportOrigination(board);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
109
129
|
export const BoardTransforms = {
|
|
110
130
|
updatePointerType,
|
|
111
131
|
updateViewport,
|
|
112
132
|
fitViewport,
|
|
113
133
|
updateZoom,
|
|
114
134
|
updateThemeColor,
|
|
115
|
-
fitViewportWidth
|
|
135
|
+
fitViewportWidth,
|
|
136
|
+
moveToCenter
|
|
116
137
|
};
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy90cmFuc2Zvcm1zL2JvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUNILGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDOUIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV0RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBSW5DLFNBQVMsY0FBYyxDQUFDLEtBQWlCLEVBQUUsV0FBa0IsRUFBRSxJQUFhO0lBQ3hFLElBQUksR0FBRyxJQUFJLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDbkMsV0FBVyxDQUFDLEtBQUssRUFBRTtRQUNmLEdBQUcsS0FBSyxDQUFDLFFBQVE7UUFDakIsSUFBSTtRQUNKLFdBQVc7S0FDZCxDQUFDLENBQUM7SUFDSCx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsS0FBaUIsRUFBRSxPQUFlLEVBQUUsUUFBUSxHQUFHLElBQUk7SUFDbkUsT0FBTyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVsQyxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsTUFBTSxhQUFh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SUFBSSxFQUFFLENBQUMsQ0FBQztJQUUxQyxtQkFBbUIsQ0FBRSxLQUFpQyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQzlELEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsTUFBTSxpQkFBaUIsR0FBRyxDQUFzQyxLQUFpQixFQUFFLE9BQVUsRUFBRSxFQUFFO0lBQzdGLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxPQUFPO1FBQUUsT0FBTztJQUN0QyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztBQUM1QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDM0IsaUJBQWlCO0lBQ2pCLGNBQWM7SUFDZCxXQUFXO0lBQ1gsVUFBVTtJQUNWLGdCQUFnQjtJQUNoQixnQkFBZ0I7Q0FDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRoZW1lQ29sb3JNb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90aGVtZSc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyB9IGZyb20gJy4uL3V0aWxzL2VsZW1lbnQnO1xuaW1wb3J0IHsgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRSZWN0YW5nbGUgfSBmcm9tICcuLi91dGlscy9tYXRoJztcbmltcG9ydCB7XG4gICAgY2xhbXBab29tTGV2ZWwsXG4gICAgY2xlYXJWaWV3cG9ydE9yaWdpbmF0aW9uLFxuICAgIGdldFZpZXdCb3hDZW50ZXJQb2ludCxcbiAgICBnZXRWaWV3cG9ydE9yaWdpbmF0aW9uLFxuICAgIGluaXRpYWxpemVWaWV3cG9ydENvbnRhaW5lclxufSBmcm9tICcuLi91dGlscy92aWV3cG9ydCc7XG5pbXBvcnQgeyBzZXRWaWV3cG9ydCB9IGZyb20gJy4vdmlld3BvcnQnO1xuaW1wb3J0IHsgZGVwdGhGaXJzdFJlY3Vyc2lvbiwgZ2V0UmVhbFNjcm9sbEJhcldpZHRoIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUGxhaXRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IHNldFRoZW1lIH0gZnJvbSAnLi90aGVtZSc7XG5pbXBvcnQgeyBGaXRWaWV3cG9ydE9wdGlvbnMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3ZpZXdwb3J0JztcbmltcG9ydCB7IFBsYWl0UG9pbnRlclR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50ZXInO1xuXG5mdW5jdGlvbiB1cGRhdGVWaWV3cG9ydChib2FyZDogUGxhaXRCb2FyZCwgb3JpZ2luYXRpb246IFBvaW50LCB6b29tPzogbnVtYmVyKSB7XG4gICAgem9vbSA9IHpvb20gPz8gYm9hcmQudmlld3BvcnQuem9vbTtcbiAgICBzZXRWaWV3cG9ydChib2FyZCwge1xuICAgICAgICAuLi5ib2FyZC52aWV3cG9ydCxcbiAgICAgICAgem9vbSxcbiAgICAgICAgb3JpZ2luYXRpb25cbiAgICB9KTtcbiAgICBjbGVhclZpZXdwb3J0T3JpZ2luYXRpb24oYm9hcmQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVab29tKGJvYXJkOiBQbGFpdEJvYXJkLCBuZXdab29tOiBudW1iZXIsIGlzQ2VudGVyID0gdHJ1ZSkge1xuICAgIG5ld1pvb20gPSBjbGFtcFpvb21MZXZlbChuZXdab29tKTtcblxuICAgIGNvbnN0IG1vdmluZ1BvaW50ID0gUGxhaXRCb2FyZC5nZXRNb3ZpbmdQb2ludEluQm9hcmQoYm9hcmQpO1xuICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnQgPSBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKTtcbiAgICBjb25zdCBuYXRpdmVFbGVtZW50UmVjdCA9IG5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgYm9hcmRDb250YWluZXJSZWN0ID0gUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgbGV0IGZvY3VzUG9pbnQgPSBbYm9hcmRDb250YWluZXJSZWN0LndpZHRoIC8gMiwgYm9hcmRDb250YWluZXJSZWN0LmhlaWdodCAvIDJdO1xuXG4gICAgaWYgKCFpc0NlbnRlciAmJiBtb3ZpbmdQb2ludCAmJiBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFJlY3RhbmdsZShtb3ZpbmdQb2ludFswXSwgbW92aW5nUG9pbnRbMV0sIG5hdGl2ZUVsZW1lbnRSZWN0KSA9PT0gMCkge1xuICAgICAgICBmb2N1c1BvaW50ID0gW21vdmluZ1BvaW50WzBdIC0gbmF0aXZlRWxlbWVudFJlY3QueCwgbW92aW5nUG9pbnRbMV0gLSBuYXRpdmVFbGVtZW50UmVjdC55XTtcbiAgICB9XG5cbiAgICBjb25zdCB6b29tID0gYm9hcmQudmlld3BvcnQuem9vbTtcbiAgICBjb25zdCBvcmlnaW5hdGlvbiA9IGdldFZpZXdwb3J0T3JpZ2luYXRpb24oYm9hcmQpO1xuICAgIGNvbnN0IGNlbnRlclggPSBvcmlnaW5hdGlvbiFbMF0gKyBmb2N1c1BvaW50WzBdIC8gem9vbTtcbiAgICBjb25zdCBjZW50ZXJZID0gb3JpZ2luYXRpb24hWzFdICsgZm9jdXNQb2ludFsxXSAvIHpvb207XG4gICAgY29uc3QgbmV3T3JpZ2luYXRpb24gPSBbY2VudGVyWCAtIGZvY3VzUG9pbnRbMF0gLyBuZXdab29tLCBjZW50ZXJZIC0gZm9jdXNQb2ludFsxXSAvIG5ld1pvb21dIGFzIFBvaW50O1xuICAgIHVwZGF0ZVZpZXdwb3J0KGJvYXJkLCBuZXdPcmlnaW5hdGlvbiwgbmV3Wm9vbSk7XG59XG5cbmZ1bmN0aW9uIGZpdFZpZXdwb3J0KGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgbGV0IHNjcm9sbEJhcldpZHRoID0gZ2V0UmVhbFNjcm9sbEJhcldpZHRoKGJvYXJkKTtcblxuICAgIGNvbnN0IGJvYXJkQ29udGFpbmVyUmVjdCA9IFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGVsZW1lbnRIb3N0Qm94ID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgYm9hcmQuY2hpbGRyZW4sIHRydWUpO1xuICAgIGNvbnN0IHpvb20gPSBib2FyZC52aWV3cG9ydC56b29tO1xuICAgIGNvbnN0IGF1dG9GaXRQYWRkaW5nID0gMTY7XG4gICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IGJvYXJkQ29udGFpbmVyUmVjdC53aWR0aCAtIDIgKiBhdXRvRml0UGFkZGluZztcbiAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IGJvYXJkQ29udGFpbmVyUmVjdC5oZWlnaHQgLSAyICogYXV0b0ZpdFBhZGRpbmc7XG5cbiAgICBsZXQgbmV3Wm9vbSA9IHpvb207XG4gICAgaWYgKHZpZXdwb3J0V2lkdGggPCBlbGVtZW50SG9zdEJveC53aWR0aCB8fCB2aWV3cG9ydEhlaWdodCA8IGVsZW1lbnRIb3N0Qm94LmhlaWdodCkge1xuICAgICAgICBuZXdab29tID0gTWF0aC5taW4odmlld3BvcnRXaWR0aCAvIGVsZW1lbnRIb3N0Qm94LndpZHRoLCB2aWV3cG9ydEhlaWdodCAvIGVsZW1lbnRIb3N0Qm94LmhlaWdodCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Wm9vbSA9IDE7XG4gICAgfVxuXG4gICAgY29uc3QgY2VudGVyUG9pbnQgPSBnZXRWaWV3Qm94Q2VudGVyUG9pbnQoYm9hcmQpO1xuICAgIGNvbnN0IG5ld09yaWdpbmF0aW9uID0gW1xuICAgICAgICBjZW50ZXJQb2ludFswXSAtIGJvYXJkQ29udGFpbmVyUmVjdC53aWR0aCAvIDIgLyBuZXdab29tICsgc2Nyb2xsQmFyV2lkdGggLyAyIC8gem9vbSxcbiAgICAgICAgY2VudGVyUG9pbnRbMV0gLSBib2FyZENvbnRhaW5lclJlY3QuaGVpZ2h0IC8gMiAvIG5ld1pvb20gKyBzY3JvbGxCYXJXaWR0aCAvIDIgLyB6b29tXG4gICAgXSBhcyBQb2ludDtcbiAgICB1cGRhdGVWaWV3cG9ydChib2FyZCwgbmV3T3JpZ2luYXRpb24sIG5ld1pvb20pO1xufVxuXG5mdW5jdGlvbiBmaXRWaWV3cG9ydFdpZHRoKGJvYXJkOiBQbGFpdEJvYXJkLCBvcHRpb25zOiBGaXRWaWV3cG9ydE9wdGlvbnMpIHtcbiAgICBsZXQgc2Nyb2xsQmFyV2lkdGggPSBnZXRSZWFsU2Nyb2xsQmFyV2lkdGgoYm9hcmQpO1xuXG4gICAgY29uc3QgYm9hcmRDb250YWluZXIgPSBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKTtcbiAgICBjb25zdCBib2FyZENvbnRhaW5lclJlY3RhbmdsZSA9IGJvYXJkQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgbGV0IGZpbmFsV2lkdGggPSAwO1xuICAgIGlmIChvcHRpb25zLm1heFdpZHRoKSB7XG4gICAgICAgIGZpbmFsV2lkdGggPSBvcHRpb25zLm1heFdpZHRoO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbmFsV2lkdGggPSBib2FyZENvbnRhaW5lclJlY3RhbmdsZS53aWR0aDtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50SG9zdEJveCA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGJvYXJkLmNoaWxkcmVuLCB0cnVlKTtcbiAgICBjb25zdCBjb250ZW50V2lkdGggPSBmaW5hbFdpZHRoIC0gMiAqIG9wdGlvbnMuYXV0b0ZpdFBhZGRpbmc7XG4gICAgbGV0IG5ld1pvb20gPSAwO1xuICAgIGlmIChjb250ZW50V2lkdGggPCBlbGVtZW50SG9zdEJveC53aWR0aCkge1xuICAgICAgICBuZXdab29tID0gTWF0aC5taW4oY29udGVudFdpZHRoIC8gZWxlbWVudEhvc3RCb3gud2lkdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1pvb20gPSAxO1xuICAgIH1cblxuICAgIGxldCBmaW5hbEhlaWdodCA9IGVsZW1lbnRIb3N0Qm94LmhlaWdodCAqIG5ld1pvb20gKyAyICogb3B0aW9ucy5hdXRvRml0UGFkZGluZztcbiAgICBpZiAoZmluYWxIZWlnaHQgPiBvcHRpb25zLmxpbWl0SGVpZ2h0KSB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckVsID0gYm9hcmRDb250YWluZXIuY2xvc2VzdChgLiR7b3B0aW9ucy5jb250YWluZXJDbGFzc31gKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29udGFpbmVyRWwuc3R5bGUuaGVpZ2h0ID0gYCR7ZmluYWxIZWlnaHR9cHhgO1xuICAgICAgICBpbml0aWFsaXplVmlld3BvcnRDb250YWluZXIoYm9hcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbmFsSGVpZ2h0ID0gb3B0aW9ucy5saW1pdEhlaWdodDtcbiAgICB9XG5cbiAgICBjb25zdCBjZW50ZXJYID0gZWxlbWVudEhvc3RCb3gueCArIGVsZW1lbnRIb3N0Qm94LndpZHRoIC8gMjtcbiAgICBjb25zdCBjZW50ZXJZID0gZWxlbWVudEhvc3RCb3gueSArIGVsZW1lbnRIb3N0Qm94LmhlaWdodCAvIDI7XG4gICAgY29uc3QgbmV3T3JpZ2luYXRpb24gPSBbXG4gICAgICAgIGNlbnRlclggLSBmaW5hbFdpZHRoIC8gMiAvIG5ld1pvb20gKyBzY3JvbGxCYXJXaWR0aCAvIDIgLyBuZXdab29tLFxuICAgICAgICBjZW50ZXJZIC0gZmluYWxIZWlnaHQgLyAyIC8gbmV3Wm9vbSArIHNjcm9sbEJhcldpZHRoIC8gMiAvIG5ld1pvb21cbiAgICBdIGFzIFBvaW50O1xuICAgIHVwZGF0ZVZpZXdwb3J0KGJvYXJkLCBuZXdPcmlnaW5hdGlvbiwgbmV3Wm9vbSk7XG59XG5cbi8qKlxuICogYXBwbHkgdGhlbWUgdG8gZXZlcnkgZWxlbWVudCAocmVtb3ZlIGVsZW1lbnQgY3VzdG9tIHByb3BlcnRpZXMpXG4gKiBpbnZva2UgYXBwbHlUaGVtZUNvbG9yXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZVRoZW1lQ29sb3IoYm9hcmQ6IFBsYWl0Qm9hcmQsIG1vZGU6IFRoZW1lQ29sb3JNb2RlKSB7XG4gICAgbW9kZSA9IG1vZGUgPz8gYm9hcmQudGhlbWUudGhlbWVDb2xvck1vZGU7XG4gICAgc2V0VGhlbWUoYm9hcmQsIHsgdGhlbWVDb2xvck1vZGU6IG1vZGUgfSk7XG5cbiAgICBkZXB0aEZpcnN0UmVjdXJzaW9uKChib2FyZCBhcyB1bmtub3duKSBhcyBQbGFpdEVsZW1lbnQsIGVsZW1lbnQgPT4ge1xuICAgICAgICBib2FyZC5hcHBseVRoZW1lKGVsZW1lbnQpO1xuICAgIH0pO1xufVxuXG5jb25zdCB1cGRhdGVQb2ludGVyVHlwZSA9IDxUIGV4dGVuZHMgc3RyaW5nID0gUGxhaXRQb2ludGVyVHlwZT4oYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50ZXI6IFQpID0+IHtcbiAgICBpZiAoYm9hcmQucG9pbnRlciA9PT0gcG9pbnRlcikgcmV0dXJuO1xuICAgIGJvYXJkLnBvaW50ZXIgPSBwb2ludGVyO1xufTtcblxuZXhwb3J0IGNvbnN0IEJvYXJkVHJhbnNmb3JtcyA9IHtcbiAgICB1cGRhdGVQb2ludGVyVHlwZSxcbiAgICB1cGRhdGVWaWV3cG9ydCxcbiAgICBmaXRWaWV3cG9ydCxcbiAgICB1cGRhdGVab29tLFxuICAgIHVwZGF0ZVRoZW1lQ29sb3IsXG4gICAgZml0Vmlld3BvcnRXaWR0aFxufTtcbiJdfQ==
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy90cmFuc2Zvcm1zL2JvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUNILGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDOUIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUzRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBSW5DLFNBQVMsY0FBYyxDQUFDLEtBQWlCLEVBQUUsV0FBa0IsRUFBRSxJQUFhO0lBQ3hFLElBQUksR0FBRyxJQUFJLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDbkMsV0FBVyxDQUFDLEtBQUssRUFBRTtRQUNmLEdBQUcsS0FBSyxDQUFDLFFBQVE7UUFDakIsSUFBSTtRQUNKLFdBQVc7S0FDZCxDQUFDLENBQUM7SUFDSCx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsS0FBaUIsRUFBRSxPQUFlLEVBQUUsUUFBUSxHQUFHLElBQUk7SUFDbkUsT0FBTyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVsQyxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFD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WUFDdEUsR0FBRyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLGNBQWMsR0FBRyxDQUFDLEdBQUcsSUFBSTtTQUNoRSxDQUFDO1FBRVgsV0FBVyxDQUFDLEtBQUssRUFBRTtZQUNmLEdBQUcsS0FBSyxDQUFDLFFBQVE7WUFDakIsV0FBVztTQUNkLENBQUMsQ0FBQztRQUNILHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzNCLGlCQUFpQjtJQUNqQixjQUFjO0lBQ2QsV0FBVztJQUNYLFVBQVU7SUFDVixnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLFlBQVk7Q0FDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGhlbWVDb2xvck1vZGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RoZW1lJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludCc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvZWxlbWVudCc7XG5pbXBvcnQgeyBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFJlY3RhbmdsZSB9IGZyb20gJy4uL3V0aWxzL21hdGgnO1xuaW1wb3J0IHtcbiAgICBjbGFtcFpvb21MZXZlbCxcbiAgICBjbGVhclZpZXdwb3J0T3JpZ2luYXRpb24sXG4gICAgZ2V0Vmlld0JveENlbnRlclBvaW50LFxuICAgIGdldFZpZXdwb3J0T3JpZ2luYXRpb24sXG4gICAgaW5pdGlhbGl6ZVZpZXdwb3J0Q29udGFpbmVyXG59IGZyb20gJy4uL3V0aWxzL3ZpZXdwb3J0JztcbmltcG9ydCB7IHNldFZpZXdwb3J0IH0gZnJvbSAnLi92aWV3cG9ydCc7XG5pbXBvcnQgeyBkZXB0aEZpcnN0UmVjdXJzaW9uLCBnZXRSZWFsU2Nyb2xsQmFyV2lkdGgsIGdldFNlbGVjdGVkRWxlbWVudHMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgc2V0VGhlbWUgfSBmcm9tICcuL3RoZW1lJztcbmltcG9ydCB7IEZpdFZpZXdwb3J0T3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvdmlld3BvcnQnO1xuaW1wb3J0IHsgUGxhaXRQb2ludGVyVHlwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnRlcic7XG5cbmZ1bmN0aW9uIHVwZGF0ZVZpZXdwb3J0KGJvYXJkOiBQbGFpdEJvYXJkLCBvcmlnaW5hdGlvbjogUG9pbnQsIHpvb20/OiBudW1iZXIpIHtcbiAgICB6b29tID0gem9vbSA/PyBib2FyZC52aWV3cG9ydC56b29tO1xuICAgIHNldFZpZXdwb3J0KGJvYXJkLCB7XG4gICAgICAgIC4uLmJvYXJkLnZpZXdwb3J0LFxuICAgICAgICB6b29tLFxuICAgICAgICBvcmlnaW5hdGlvblxuICAgIH0pO1xuICAgIGNsZWFyVmlld3BvcnRPcmlnaW5hdGlvbihib2FyZCk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVpvb20oYm9hcmQ6IFBsYWl0Qm9hcmQsIG5ld1pvb206IG51bWJlciwgaXNDZW50ZXIgPSB0cnVlKSB7XG4gICAgbmV3Wm9vbSA9IGNsYW1wWm9vbUxldmVsKG5ld1pvb20pO1xuXG4gICAgY29uc3QgbW92aW5nUG9pbnQgPSBQbGFpdEJvYXJkLmdldE1vdmluZ1BvaW50SW5Cb2FyZChib2FyZCk7XG4gICAgY29uc3QgbmF0aXZlRWxlbWVudCA9IFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpO1xuICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnRSZWN0ID0gbmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBib2FyZENvbnRhaW5lclJlY3QgPSBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBsZXQgZm9jdXNQb2ludCA9IFtib2FyZENvbnRhaW5lclJlY3Qud2lkdGggLyAyLCBib2FyZENvbnRhaW5lclJlY3QuaGVpZ2h0IC8gMl07XG5cbiAgICBpZiAoIWlzQ2VudGVyICYmIG1vdmluZ1BvaW50ICYmIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUmVjdGFuZ2xlKG1vdmluZ1BvaW50WzBdLCBtb3ZpbmdQb2ludFsxXSwgbmF0aXZlRWxlbWVudFJlY3QpID09PSAwKSB7XG4gICAgICAgIGZvY3VzUG9pbnQgPSBbbW92aW5nUG9pbnRbMF0gLSBuYXRpdmVFbGVtZW50UmVjdC54LCBtb3ZpbmdQb2ludFsxXSAtIG5hdGl2ZUVsZW1lbnRSZWN0LnldO1xuICAgIH1cblxuICAgIGNvbnN0IHpvb20gPSBib2FyZC52aWV3cG9ydC56b29tO1xuICAgIGNvbnN0IG9yaWdpbmF0aW9uID0gZ2V0Vmlld3BvcnRPcmlnaW5hdGlvbihib2FyZCk7XG4gICAgY29uc3QgY2VudGVyWCA9IG9yaWdpbmF0aW9uIVswXSArIGZvY3VzUG9pbnRbMF0gLyB6b29tO1xuICAgIGNvbnN0IGNlbnRlclkgPSBvcmlnaW5hdGlvbiFbMV0gKyBmb2N1c1BvaW50WzFdIC8gem9vbTtcbiAgICBjb25zdCBuZXdPcmlnaW5hdGlvbiA9IFtjZW50ZXJYIC0gZm9jdXNQb2ludFswXSAvIG5ld1pvb20sIGNlbnRlclkgLSBmb2N1c1BvaW50WzFdIC8gbmV3Wm9vbV0gYXMgUG9pbnQ7XG4gICAgdXBkYXRlVmlld3BvcnQoYm9hcmQsIG5ld09yaWdpbmF0aW9uLCBuZXdab29tKTtcbn1cblxuZnVuY3Rpb24gZml0Vmlld3BvcnQoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBsZXQgc2Nyb2xsQmFyV2lkdGggPSBnZXRSZWFsU2Nyb2xsQmFyV2lkdGgoYm9hcmQpO1xuXG4gICAgY29uc3QgYm9hcmRDb250YWluZXJSZWN0ID0gUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgZWxlbWVudEhvc3RCb3ggPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBib2FyZC5jaGlsZHJlbiwgdHJ1ZSk7XG4gICAgY29uc3Qgem9vbSA9IGJvYXJkLnZpZXdwb3J0Lnpvb207XG4gICAgY29uc3QgYXV0b0ZpdFBhZGRpbmcgPSAxNjtcbiAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gYm9hcmRDb250YWluZXJSZWN0LndpZHRoIC0gMiAqIGF1dG9GaXRQYWRkaW5nO1xuICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gYm9hcmRDb250YWluZXJSZWN0LmhlaWdodCAtIDIgKiBhdXRvRml0UGFkZGluZztcblxuICAgIGxldCBuZXdab29tID0gem9vbTtcbiAgICBpZiAodmlld3BvcnRXaWR0aCA8IGVsZW1lbnRIb3N0Qm94LndpZHRoIHx8IHZpZXdwb3J0SGVpZ2h0IDwgZWxlbWVudEhvc3RCb3guaGVpZ2h0KSB7XG4gICAgICAgIG5ld1pvb20gPSBNYXRoLm1pbih2aWV3cG9ydFdpZHRoIC8gZWxlbWVudEhvc3RCb3gud2lkdGgsIHZpZXdwb3J0SGVpZ2h0IC8gZWxlbWVudEhvc3RCb3guaGVpZ2h0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBuZXdab29tID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCBjZW50ZXJQb2ludCA9IGdldFZpZXdCb3hDZW50ZXJQb2ludChib2FyZCk7XG4gICAgY29uc3QgbmV3T3JpZ2luYXRpb24gPSBbXG4gICAgICAgIGNlbnRlclBvaW50WzBdIC0gYm9hcmRDb250YWluZXJSZWN0LndpZHRoIC8gMiAvIG5ld1pvb20gKyBzY3JvbGxCYXJXaWR0aCAvIDIgLyB6b29tLFxuICAgICAgICBjZW50ZXJQb2ludFsxXSAtIGJvYXJkQ29udGFpbmVyUmVjdC5oZWlnaHQgLyAyIC8gbmV3Wm9vbSArIHNjcm9sbEJhcldpZHRoIC8gMiAvIHpvb21cbiAgICBdIGFzIFBvaW50O1xuICAgIHVwZGF0ZVZpZXdwb3J0KGJvYXJkLCBuZXdPcmlnaW5hdGlvbiwgbmV3Wm9vbSk7XG59XG5cbmZ1bmN0aW9uIGZpdFZpZXdwb3J0V2lkdGgoYm9hcmQ6IFBsYWl0Qm9hcmQsIG9wdGlvbnM6IEZpdFZpZXdwb3J0T3B0aW9ucykge1xuICAgIGxldCBzY3JvbGxCYXJXaWR0aCA9IGdldFJlYWxTY3JvbGxCYXJXaWR0aChib2FyZCk7XG5cbiAgICBjb25zdCBib2FyZENvbnRhaW5lciA9IFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpO1xuICAgIGNvbnN0IGJvYXJkQ29udGFpbmVyUmVjdGFuZ2xlID0gYm9hcmRDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBsZXQgZmluYWxXaWR0aCA9IDA7XG4gICAgaWYgKG9wdGlvbnMubWF4V2lkdGgpIHtcbiAgICAgICAgZmluYWxXaWR0aCA9IG9wdGlvbnMubWF4V2lkdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZmluYWxXaWR0aCA9IGJvYXJkQ29udGFpbmVyUmVjdGFuZ2xlLndpZHRoO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRIb3N0Qm94ID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgYm9hcmQuY2hpbGRyZW4sIHRydWUpO1xuICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9IGZpbmFsV2lkdGggLSAyICogb3B0aW9ucy5hdXRvRml0UGFkZGluZztcbiAgICBsZXQgbmV3Wm9vbSA9IDA7XG4gICAgaWYgKGNvbnRlbnRXaWR0aCA8IGVsZW1lbnRIb3N0Qm94LndpZHRoKSB7XG4gICAgICAgIG5ld1pvb20gPSBNYXRoLm1pbihjb250ZW50V2lkdGggLyBlbGVtZW50SG9zdEJveC53aWR0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Wm9vbSA9IDE7XG4gICAgfVxuXG4gICAgbGV0IGZpbmFsSGVpZ2h0ID0gZWxlbWVudEhvc3RCb3guaGVpZ2h0ICogbmV3Wm9vbSArIDIgKiBvcHRpb25zLmF1dG9GaXRQYWRkaW5nO1xuICAgIGlmIChmaW5hbEhlaWdodCA+IG9wdGlvbnMubGltaXRIZWlnaHQpIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyRWwgPSBib2FyZENvbnRhaW5lci5jbG9zZXN0KGAuJHtvcHRpb25zLmNvbnRhaW5lckNsYXNzfWApIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb250YWluZXJFbC5zdHlsZS5oZWlnaHQgPSBgJHtmaW5hbEhlaWdodH1weGA7XG4gICAgICAgIGluaXRpYWxpemVWaWV3cG9ydENvbnRhaW5lcihib2FyZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZmluYWxIZWlnaHQgPSBvcHRpb25zLmxpbWl0SGVpZ2h0O1xuICAgIH1cblxuICAgIGNvbnN0IGNlbnRlclggPSBlbGVtZW50SG9zdEJveC54ICsgZWxlbWVudEhvc3RCb3gud2lkdGggLyAyO1xuICAgIGNvbnN0IGNlbnRlclkgPSBlbGVtZW50SG9zdEJveC55ICsgZWxlbWVudEhvc3RCb3guaGVpZ2h0IC8gMjtcbiAgICBjb25zdCBuZXdPcmlnaW5hdGlvbiA9IFtcbiAgICAgICAgY2VudGVyWCAtIGZpbmFsV2lkdGggLyAyIC8gbmV3Wm9vbSArIHNjcm9sbEJhcldpZHRoIC8gMiAvIG5ld1pvb20sXG4gICAgICAgIGNlbnRlclkgLSBmaW5hbEhlaWdodCAvIDIgLyBuZXdab29tICsgc2Nyb2xsQmFyV2lkdGggLyAyIC8gbmV3Wm9vbVxuICAgIF0gYXMgUG9pbnQ7XG4gICAgdXBkYXRlVmlld3BvcnQoYm9hcmQsIG5ld09yaWdpbmF0aW9uLCBuZXdab29tKTtcbn1cblxuLyoqXG4gKiBhcHBseSB0aGVtZSB0byBldmVyeSBlbGVtZW50IChyZW1vdmUgZWxlbWVudCBjdXN0b20gcHJvcGVydGllcylcbiAqIGludm9rZSBhcHBseVRoZW1lQ29sb3JcbiAqL1xuZnVuY3Rpb24gdXBkYXRlVGhlbWVDb2xvcihib2FyZDogUGxhaXRCb2FyZCwgbW9kZTogVGhlbWVDb2xvck1vZGUpIHtcbiAgICBtb2RlID0gbW9kZSA/PyBib2FyZC50aGVtZS50aGVtZUNvbG9yTW9kZTtcbiAgICBzZXRUaGVtZShib2FyZCwgeyB0aGVtZUNvbG9yTW9kZTogbW9kZSB9KTtcblxuICAgIGRlcHRoRmlyc3RSZWN1cnNpb24oKGJvYXJkIGFzIHVua25vd24pIGFzIFBsYWl0RWxlbWVudCwgZWxlbWVudCA9PiB7XG4gICAgICAgIGJvYXJkLmFwcGx5VGhlbWUoZWxlbWVudCk7XG4gICAgfSk7XG59XG5cbmNvbnN0IHVwZGF0ZVBvaW50ZXJUeXBlID0gPFQgZXh0ZW5kcyBzdHJpbmcgPSBQbGFpdFBvaW50ZXJUeXBlPihib2FyZDogUGxhaXRCb2FyZCwgcG9pbnRlcjogVCkgPT4ge1xuICAgIGlmIChib2FyZC5wb2ludGVyID09PSBwb2ludGVyKSByZXR1cm47XG4gICAgYm9hcmQucG9pbnRlciA9IHBvaW50ZXI7XG59O1xuXG5mdW5jdGlvbiBtb3ZlVG9DZW50ZXIoYm9hcmQ6IFBsYWl0Qm9hcmQsIGNlbnRlclBvaW50OiBQb2ludCkge1xuICAgIGNvbnN0IHBsYWl0RWxlbWVudCA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpPy5bMF07XG4gICAgaWYgKHBsYWl0RWxlbWVudCkge1xuICAgICAgICBjb25zdCBib2FyZENvbnRhaW5lclJlY3QgPSBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgc2Nyb2xsQmFyV2lkdGggPSBnZXRSZWFsU2Nyb2xsQmFyV2lkdGgoYm9hcmQpO1xuICAgICAgICBjb25zdCBvbGRDZW50ZXJQb2ludCA9IGdldFZpZXdCb3hDZW50ZXJQb2ludChib2FyZCk7XG4gICAgICAgIGNvbnN0IGxlZnQgPSBjZW50ZXJQb2ludFswXSAtIG9sZENlbnRlclBvaW50WzBdO1xuICAgICAgICBjb25zdCB0b3AgPSBjZW50ZXJQb2ludFsxXSAtIG9sZENlbnRlclBvaW50WzFdO1xuICAgICAgICBjb25zdCB6b29tID0gYm9hcmQudmlld3BvcnQuem9vbTtcblxuICAgICAgICBjb25zdCBvcmlnaW5hdGlvbiA9IFtcbiAgICAgICAgICAgIGxlZnQgLSBib2FyZENvbnRhaW5lclJlY3Qud2lkdGggLyAyIC8gem9vbSArIHNjcm9sbEJhcldpZHRoIC8gMiAvIHpvb20sXG4gICAgICAgICAgICB0b3AgLSBib2FyZENvbnRhaW5lclJlY3QuaGVpZ2h0IC8gMiAvIHpvb20gKyBzY3JvbGxCYXJXaWR0aCAvIDIgLyB6b29tXG4gICAgICAgIF0gYXMgUG9pbnQ7XG5cbiAgICAgICAgc2V0Vmlld3BvcnQoYm9hcmQsIHtcbiAgICAgICAgICAgIC4uLmJvYXJkLnZpZXdwb3J0LFxuICAgICAgICAgICAgb3JpZ2luYXRpb25cbiAgICAgICAgfSk7XG4gICAgICAgIGNsZWFyVmlld3BvcnRPcmlnaW5hdGlvbihib2FyZCk7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgQm9hcmRUcmFuc2Zvcm1zID0ge1xuICAgIHVwZGF0ZVBvaW50ZXJUeXBlLFxuICAgIHVwZGF0ZVZpZXdwb3J0LFxuICAgIGZpdFZpZXdwb3J0LFxuICAgIHVwZGF0ZVpvb20sXG4gICAgdXBkYXRlVGhlbWVDb2xvcixcbiAgICBmaXRWaWV3cG9ydFdpZHRoLFxuICAgIG1vdmVUb0NlbnRlclxufTtcbiJdfQ==
|
package/fesm2022/plait-core.mjs
CHANGED
|
@@ -1664,6 +1664,7 @@ const isDebug = (key) => {
|
|
|
1664
1664
|
var PlaitPluginKey;
|
|
1665
1665
|
(function (PlaitPluginKey) {
|
|
1666
1666
|
PlaitPluginKey["withSelection"] = "withSelection";
|
|
1667
|
+
PlaitPluginKey["withHand"] = "withHand";
|
|
1667
1668
|
})(PlaitPluginKey || (PlaitPluginKey = {}));
|
|
1668
1669
|
|
|
1669
1670
|
const getHitElementsBySelection = (board, selection, match = () => true) => {
|
|
@@ -2019,13 +2020,34 @@ const updatePointerType = (board, pointer) => {
|
|
|
2019
2020
|
return;
|
|
2020
2021
|
board.pointer = pointer;
|
|
2021
2022
|
};
|
|
2023
|
+
function moveToCenter(board, centerPoint) {
|
|
2024
|
+
const plaitElement = getSelectedElements(board)?.[0];
|
|
2025
|
+
if (plaitElement) {
|
|
2026
|
+
const boardContainerRect = PlaitBoard.getBoardContainer(board).getBoundingClientRect();
|
|
2027
|
+
const scrollBarWidth = getRealScrollBarWidth(board);
|
|
2028
|
+
const oldCenterPoint = getViewBoxCenterPoint(board);
|
|
2029
|
+
const left = centerPoint[0] - oldCenterPoint[0];
|
|
2030
|
+
const top = centerPoint[1] - oldCenterPoint[1];
|
|
2031
|
+
const zoom = board.viewport.zoom;
|
|
2032
|
+
const origination = [
|
|
2033
|
+
left - boardContainerRect.width / 2 / zoom + scrollBarWidth / 2 / zoom,
|
|
2034
|
+
top - boardContainerRect.height / 2 / zoom + scrollBarWidth / 2 / zoom
|
|
2035
|
+
];
|
|
2036
|
+
setViewport(board, {
|
|
2037
|
+
...board.viewport,
|
|
2038
|
+
origination
|
|
2039
|
+
});
|
|
2040
|
+
clearViewportOrigination(board);
|
|
2041
|
+
}
|
|
2042
|
+
}
|
|
2022
2043
|
const BoardTransforms = {
|
|
2023
2044
|
updatePointerType,
|
|
2024
2045
|
updateViewport,
|
|
2025
2046
|
fitViewport,
|
|
2026
2047
|
updateZoom,
|
|
2027
2048
|
updateThemeColor,
|
|
2028
|
-
fitViewportWidth
|
|
2049
|
+
fitViewportWidth,
|
|
2050
|
+
moveToCenter
|
|
2029
2051
|
};
|
|
2030
2052
|
|
|
2031
2053
|
const getViewBox = (board) => {
|
|
@@ -5414,38 +5436,48 @@ function withBoard(board) {
|
|
|
5414
5436
|
}
|
|
5415
5437
|
|
|
5416
5438
|
function withHandPointer(board) {
|
|
5417
|
-
const { pointerDown, pointerMove, globalPointerUp, keyDown, keyUp } = board;
|
|
5439
|
+
const { pointerDown, pointerMove, globalPointerUp, keyDown, keyUp, pointerUp } = board;
|
|
5418
5440
|
let isMoving = false;
|
|
5419
|
-
|
|
5420
|
-
x: 0,
|
|
5421
|
-
y: 0
|
|
5422
|
-
};
|
|
5441
|
+
let movingPoint = null;
|
|
5423
5442
|
board.pointerDown = (event) => {
|
|
5424
|
-
|
|
5425
|
-
|
|
5426
|
-
|
|
5427
|
-
|
|
5428
|
-
|
|
5443
|
+
const options = board.getPluginOptions(PlaitPluginKey.withHand);
|
|
5444
|
+
if ((options?.isHandMode(board, event) || PlaitBoard.isPointer(board, PlaitPointerType.hand)) && isMainPointer(event)) {
|
|
5445
|
+
movingPoint = {
|
|
5446
|
+
x: event.x,
|
|
5447
|
+
y: event.y
|
|
5448
|
+
};
|
|
5429
5449
|
}
|
|
5430
5450
|
pointerDown(event);
|
|
5431
5451
|
};
|
|
5432
5452
|
board.pointerMove = (event) => {
|
|
5433
|
-
|
|
5453
|
+
const options = board.getPluginOptions(PlaitPluginKey.withHand);
|
|
5454
|
+
if (movingPoint && !isMoving) {
|
|
5455
|
+
isMoving = true;
|
|
5456
|
+
PlaitBoard.getBoardContainer(board).classList.add('viewport-moving');
|
|
5457
|
+
}
|
|
5458
|
+
if ((options?.isHandMode(board, event) || PlaitBoard.isPointer(board, PlaitPointerType.hand)) && isMoving && movingPoint) {
|
|
5434
5459
|
const viewportContainer = PlaitBoard.getViewportContainer(board);
|
|
5435
|
-
const left = viewportContainer.scrollLeft - (event.x -
|
|
5436
|
-
const top = viewportContainer.scrollTop - (event.y -
|
|
5460
|
+
const left = viewportContainer.scrollLeft - (event.x - movingPoint.x);
|
|
5461
|
+
const top = viewportContainer.scrollTop - (event.y - movingPoint.y);
|
|
5437
5462
|
updateViewportContainerScroll(board, left, top, false);
|
|
5438
|
-
|
|
5439
|
-
|
|
5463
|
+
movingPoint.x = event.x;
|
|
5464
|
+
movingPoint.y = event.y;
|
|
5440
5465
|
}
|
|
5441
5466
|
pointerMove(event);
|
|
5442
5467
|
};
|
|
5468
|
+
board.pointerUp = (event) => {
|
|
5469
|
+
if (isMoving) {
|
|
5470
|
+
return;
|
|
5471
|
+
}
|
|
5472
|
+
pointerUp(event);
|
|
5473
|
+
};
|
|
5443
5474
|
board.globalPointerUp = (event) => {
|
|
5475
|
+
if (movingPoint) {
|
|
5476
|
+
movingPoint = null;
|
|
5477
|
+
}
|
|
5444
5478
|
if (isMoving) {
|
|
5445
5479
|
isMoving = false;
|
|
5446
5480
|
PlaitBoard.getBoardContainer(board).classList.remove('viewport-moving');
|
|
5447
|
-
plaitBoardMove.x = 0;
|
|
5448
|
-
plaitBoardMove.y = 0;
|
|
5449
5481
|
}
|
|
5450
5482
|
globalPointerUp(event);
|
|
5451
5483
|
};
|