@plait/core 0.24.0-next.1 → 0.24.0-next.11
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/board/board.component.d.ts +1 -1
- package/board/board.component.interface.d.ts +3 -1
- package/constants/selection.d.ts +2 -0
- package/core/children/children.component.d.ts +1 -1
- package/core/element/element.component.d.ts +1 -1
- package/core/element/plugin-element.d.ts +1 -1
- package/core/island/island-base.component.d.ts +4 -2
- package/esm2022/board/board.component.interface.mjs +2 -0
- package/esm2022/board/board.component.mjs +405 -0
- package/esm2022/constants/selection.mjs +4 -0
- package/{esm2020 → esm2022}/core/children/children.component.mjs +6 -6
- package/{esm2020 → esm2022}/core/element/element.component.mjs +4 -4
- package/{esm2020 → esm2022}/core/element/plugin-element.mjs +4 -4
- package/esm2022/core/island/island-base.component.mjs +72 -0
- package/{esm2020 → esm2022}/interfaces/board.mjs +1 -1
- package/esm2022/interfaces/direction.mjs +8 -0
- package/{esm2020 → esm2022}/interfaces/index.mjs +2 -1
- package/esm2022/interfaces/rectangle-client.mjs +68 -0
- package/{esm2020 → esm2022}/plait.module.mjs +5 -5
- package/esm2022/plugins/create-board.mjs +106 -0
- package/esm2022/plugins/with-hotkey.mjs +62 -0
- package/esm2022/plugins/with-moving.mjs +116 -0
- package/esm2022/plugins/with-selection.mjs +193 -0
- package/{esm2020 → esm2022}/services/image-context.service.mjs +4 -4
- package/esm2022/transforms/element.mjs +22 -0
- package/esm2022/transforms/index.mjs +13 -0
- package/esm2022/transforms/selection.mjs +26 -0
- package/esm2022/utils/dom/common.mjs +76 -0
- package/esm2022/utils/dom/foreign.mjs +25 -0
- package/esm2022/utils/draw/line.mjs +47 -0
- package/esm2022/utils/draw/rectangle.mjs +34 -0
- package/esm2022/utils/element.mjs +71 -0
- package/esm2022/utils/math.mjs +176 -0
- package/esm2022/utils/reaction-manager.mjs +340 -0
- package/esm2022/utils/touch.mjs +35 -0
- package/esm2022/utils/weak-maps.mjs +21 -0
- package/{fesm2020 → fesm2022}/plait-core.mjs +2587 -1933
- package/fesm2022/plait-core.mjs.map +1 -0
- package/interfaces/board.d.ts +2 -1
- package/interfaces/direction.d.ts +7 -0
- package/interfaces/index.d.ts +1 -0
- package/interfaces/rectangle-client.d.ts +14 -0
- package/package.json +15 -14
- package/plugins/with-selection.d.ts +5 -1
- package/styles/styles.scss +1 -1
- package/transforms/element.d.ts +6 -0
- package/transforms/index.d.ts +1 -0
- package/transforms/selection.d.ts +2 -2
- package/utils/dom/common.d.ts +6 -0
- package/utils/dom/foreign.d.ts +2 -1
- package/utils/draw/line.d.ts +1 -1
- package/utils/draw/rectangle.d.ts +3 -0
- package/utils/element.d.ts +5 -0
- package/utils/math.d.ts +9 -0
- package/utils/reaction-manager.d.ts +41 -0
- package/utils/touch.d.ts +14 -1
- package/utils/weak-maps.d.ts +4 -2
- package/esm2020/board/board.component.interface.mjs +0 -2
- package/esm2020/board/board.component.mjs +0 -407
- package/esm2020/constants/selection.mjs +0 -2
- package/esm2020/core/island/island-base.component.mjs +0 -69
- package/esm2020/interfaces/rectangle-client.mjs +0 -40
- package/esm2020/plugins/create-board.mjs +0 -101
- package/esm2020/plugins/with-hotkey.mjs +0 -57
- package/esm2020/plugins/with-moving.mjs +0 -97
- package/esm2020/plugins/with-selection.mjs +0 -183
- package/esm2020/transforms/index.mjs +0 -12
- package/esm2020/transforms/selection.mjs +0 -16
- package/esm2020/utils/dom/common.mjs +0 -53
- package/esm2020/utils/dom/foreign.mjs +0 -19
- package/esm2020/utils/draw/line.mjs +0 -43
- package/esm2020/utils/draw/rectangle.mjs +0 -26
- package/esm2020/utils/element.mjs +0 -44
- package/esm2020/utils/math.mjs +0 -48
- package/esm2020/utils/touch.mjs +0 -8
- package/esm2020/utils/weak-maps.mjs +0 -22
- package/fesm2015/plait-core.mjs +0 -3454
- package/fesm2015/plait-core.mjs.map +0 -1
- package/fesm2020/plait-core.mjs.map +0 -1
- /package/{esm2020 → esm2022}/constants/index.mjs +0 -0
- /package/{esm2020 → esm2022}/constants/keycodes.mjs +0 -0
- /package/{esm2020 → esm2022}/constants/resize.mjs +0 -0
- /package/{esm2020 → esm2022}/core/children/effect.mjs +0 -0
- /package/{esm2020 → esm2022}/core/element/context-change.mjs +0 -0
- /package/{esm2020 → esm2022}/core/element/context.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/custom-types.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/element.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/history.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/node.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/operation.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/path-ref.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/path.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/plugin-key.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/plugin.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/point.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/pointer.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/selection.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/theme.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/viewport.mjs +0 -0
- /package/{esm2020 → esm2022}/plait-core.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-board.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-hand.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-history.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-options.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-viewport.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/core/create-board.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/core/fake-weak-map.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/core/index.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/fake-events/event-objects.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/fake-events/index.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/index.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/test-element.mjs +0 -0
- /package/{esm2020 → esm2022}/transforms/board.mjs +0 -0
- /package/{esm2020 → esm2022}/transforms/general.mjs +0 -0
- /package/{esm2020 → esm2022}/transforms/node.mjs +0 -0
- /package/{esm2020 → esm2022}/transforms/theme.mjs +0 -0
- /package/{esm2020 → esm2022}/transforms/viewport.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/board.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/clipboard.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/common.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/dom/environment.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/dom/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/draw/arrow.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/draw/circle.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/environment.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/helper.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/history.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/hotkeys.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/id-creator.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/moving-element.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/selected-element.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/to-image.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/tree.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/viewport.mjs +0 -0
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { PlaitPointerType } from '../interfaces/pointer';
|
|
2
|
-
import { Transforms } from '../transforms';
|
|
3
|
-
import { FLUSHING, PATH_REFS } from '../utils/weak-maps';
|
|
4
|
-
import { PathRef } from '../interfaces/path-ref';
|
|
5
|
-
import { ThemeColorMode } from '../interfaces/theme';
|
|
6
|
-
export function createBoard(children, options) {
|
|
7
|
-
const board = {
|
|
8
|
-
viewport: {
|
|
9
|
-
zoom: 1
|
|
10
|
-
},
|
|
11
|
-
children,
|
|
12
|
-
theme: { themeColorMode: ThemeColorMode.default },
|
|
13
|
-
operations: [],
|
|
14
|
-
history: {
|
|
15
|
-
redos: [],
|
|
16
|
-
undos: []
|
|
17
|
-
},
|
|
18
|
-
selection: null,
|
|
19
|
-
options: options || {
|
|
20
|
-
readonly: false,
|
|
21
|
-
hideScrollbar: false,
|
|
22
|
-
disabledScrollOnNonFocus: false
|
|
23
|
-
},
|
|
24
|
-
pointer: options?.readonly ? PlaitPointerType.hand : PlaitPointerType.selection,
|
|
25
|
-
undo: () => { },
|
|
26
|
-
redo: () => { },
|
|
27
|
-
apply: (operation) => {
|
|
28
|
-
for (const ref of board.pathRefs()) {
|
|
29
|
-
PathRef.transform(ref, operation);
|
|
30
|
-
}
|
|
31
|
-
board.operations.push(operation);
|
|
32
|
-
Transforms.transform(board, operation);
|
|
33
|
-
if (!FLUSHING.get(board)) {
|
|
34
|
-
FLUSHING.set(board, true);
|
|
35
|
-
Promise.resolve().then(() => {
|
|
36
|
-
FLUSHING.set(board, false);
|
|
37
|
-
board.onChange();
|
|
38
|
-
board.operations = [];
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
pathRef: (path, options) => {
|
|
43
|
-
const affinity = options?.affinity || 'forward';
|
|
44
|
-
const ref = {
|
|
45
|
-
current: path,
|
|
46
|
-
affinity,
|
|
47
|
-
unref() {
|
|
48
|
-
const { current } = ref;
|
|
49
|
-
const pathRefs = board.pathRefs();
|
|
50
|
-
pathRefs.delete(ref);
|
|
51
|
-
ref.current = null;
|
|
52
|
-
return current;
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
const refs = board.pathRefs();
|
|
56
|
-
refs.add(ref);
|
|
57
|
-
return ref;
|
|
58
|
-
},
|
|
59
|
-
pathRefs: () => {
|
|
60
|
-
let refs = PATH_REFS.get(board);
|
|
61
|
-
if (!refs) {
|
|
62
|
-
refs = new Set();
|
|
63
|
-
PATH_REFS.set(board, refs);
|
|
64
|
-
}
|
|
65
|
-
return refs;
|
|
66
|
-
},
|
|
67
|
-
onChange: () => { },
|
|
68
|
-
mousedown: (event) => { },
|
|
69
|
-
mousemove: (event) => { },
|
|
70
|
-
mouseleave: (event) => { },
|
|
71
|
-
globalMousemove: (event) => { },
|
|
72
|
-
mouseup: (event) => { },
|
|
73
|
-
globalMouseup: (event) => { },
|
|
74
|
-
keydown: (event) => { },
|
|
75
|
-
globalKeydown: (event) => { },
|
|
76
|
-
keyup: (event) => { },
|
|
77
|
-
dblclick: (event) => { },
|
|
78
|
-
setFragment: (data) => { },
|
|
79
|
-
insertFragment: (data) => { },
|
|
80
|
-
deleteFragment: (data) => { },
|
|
81
|
-
drawElement: (context) => [],
|
|
82
|
-
redrawElement: (context, previousContext) => { },
|
|
83
|
-
destroyElement: (context) => { },
|
|
84
|
-
isWithinSelection: element => false,
|
|
85
|
-
isHitSelection: element => false,
|
|
86
|
-
isRecursion: element => true,
|
|
87
|
-
isMovable: element => false,
|
|
88
|
-
getRectangle: element => null,
|
|
89
|
-
applyTheme: (element) => { },
|
|
90
|
-
pointerDown: (pointer) => { },
|
|
91
|
-
pointerMove: (pointer) => { },
|
|
92
|
-
pointerUp: (pointer) => { },
|
|
93
|
-
pointerCancel: (pointer) => { },
|
|
94
|
-
pointerOut: (pointer) => { },
|
|
95
|
-
pointerLeave: (pointer) => { },
|
|
96
|
-
globalPointerMove: (pointer) => { },
|
|
97
|
-
globalPointerUp: (pointer) => { },
|
|
98
|
-
};
|
|
99
|
-
return board;
|
|
100
|
-
}
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvcGx1Z2lucy9jcmVhdGUtYm9hcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQWtCLE1BQU0sd0JBQXdCLENBQUM7QUFFakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE1BQU0sVUFBVSxXQUFXLENBQUMsUUFBd0IsRUFBRSxPQUEyQjtJQUM3RSxNQUFNLEtBQUssR0FBZTtRQUN0QixRQUFRLEVBQUU7WUFDTixJQUFJLEVBQUUsQ0FBQztTQUNWO1FBQ0QsUUFBUTtRQUNSLEtBQUssRUFBRSxFQUFFLGNBQWMsRUFBRSxjQUFjLENBQUMsT0FBTyxFQUFFO1FBQ2pELFVBQVUsRUFBRSxFQUFFO1FBQ2QsT0FBTyxFQUFFO1lBQ0wsS0FBSyxFQUFFLEVBQUU7WUFDVCxLQUFLLEVBQUUsRUFBRTtTQUNaO1FBQ0QsU0FBUyxFQUFFLElBQUk7UUFDZixPQUFPLEVBQUUsT0FBTyxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsYUFBYSxFQUFFLEtBQUs7WUFDcEIsd0JBQXdCLEVBQUUsS0FBSztTQUNsQztRQUNELE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFNBQVM7UUFDL0UsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7UUFDZCxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQztRQUNk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QyxDQUFDO0lBQ0YsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0Qm9hcmRPcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBQbGFpdFBvaW50ZXJUeXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludGVyJztcbmltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0IH0gZnJvbSAnLi4vY29yZS9lbGVtZW50L2NvbnRleHQnO1xuaW1wb3J0IHsgUGxhaXRPcGVyYXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL29wZXJhdGlvbic7XG5pbXBvcnQgeyBUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBGTFVTSElORywgUEFUSF9SRUZTIH0gZnJvbSAnLi4vdXRpbHMvd2Vhay1tYXBzJztcbmltcG9ydCB7IFBhdGhSZWYsIFBhdGhSZWZPcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wYXRoLXJlZic7XG5pbXBvcnQgeyBQYXRoIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wYXRoJztcbmltcG9ydCB7IFRoZW1lQ29sb3JNb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90aGVtZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCb2FyZChjaGlsZHJlbjogUGxhaXRFbGVtZW50W10sIG9wdGlvbnM/OiBQbGFpdEJvYXJkT3B0aW9ucyk6IFBsYWl0Qm9hcmQge1xuICAgIGNvbnN0IGJvYXJkOiBQbGFpdEJvYXJkID0ge1xuICAgICAgICB2aWV3cG9ydDoge1xuICAgICAgICAgICAgem9vbTogMVxuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgdGhlbWU6IHsgdGhlbWVDb2xvck1vZGU6IFRoZW1lQ29sb3JNb2RlLmRlZmF1bHQgfSxcbiAgICAgICAgb3BlcmF0aW9uczogW10sXG4gICAgICAgIGhpc3Rvcnk6IHtcbiAgICAgICAgICAgIHJlZG9zOiBbXSxcbiAgICAgICAgICAgIHVuZG9zOiBbXVxuICAgICAgICB9LFxuICAgICAgICBzZWxlY3Rpb246IG51bGwsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnMgfHwge1xuICAgICAgICAgICAgcmVhZG9ubHk6IGZhbHNlLFxuICAgICAgICAgICAgaGlkZVNjcm9sbGJhcjogZmFsc2UsXG4gICAgICAgICAgICBkaXNhYmxlZFNjcm9sbE9uTm9uRm9jdXM6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHBvaW50ZXI6IG9wdGlvbnM/LnJlYWRvbmx5ID8gUGxhaXRQb2ludGVyVHlwZS5oYW5kIDogUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24sXG4gICAgICAgIHVuZG86ICgpID0+IHt9LFxuICAgICAgICByZWRvOiAoKSA9PiB7fSxcbiAgICAgICAgYXBwbHk6IChvcGVyYXRpb246IFBsYWl0T3BlcmF0aW9uKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlZiBvZiBib2FyZC5wYXRoUmVmcygpKSB7XG4gICAgICAgICAgICAgICAgUGF0aFJlZi50cmFuc2Zvcm0ocmVmLCBvcGVyYXRpb24pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBib2FyZC5vcGVyYXRpb25zLnB1c2gob3BlcmF0aW9uKTtcblxuICAgICAgICAgICAgVHJhbnNmb3Jtcy50cmFuc2Zvcm0oYm9hcmQsIG9wZXJhdGlvbik7XG5cbiAgICAgICAgICAgIGlmICghRkxVU0hJTkcuZ2V0KGJvYXJkKSkge1xuICAgICAgICAgICAgICAgIEZMVVNISU5HLnNldChib2FyZCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgRkxVU0hJTkcuc2V0KGJvYXJkLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIGJvYXJkLm9uQ2hhbmdlKCk7XG4gICAgICAgICAgICAgICAgICAgIGJvYXJkLm9wZXJhdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcGF0aFJlZjogKHBhdGg6IFBhdGgsIG9wdGlvbnM/OiBQYXRoUmVmT3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWZmaW5pdHkgPSBvcHRpb25zPy5hZmZpbml0eSB8fCAnZm9yd2FyZCc7XG4gICAgICAgICAgICBjb25zdCByZWY6IFBhdGhSZWYgPSB7XG4gICAgICAgICAgICAgICAgY3VycmVudDogcGF0aCxcbiAgICAgICAgICAgICAgICBhZmZpbml0eSxcbiAgICAgICAgICAgICAgICB1bnJlZigpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjdXJyZW50IH0gPSByZWY7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdGhSZWZzID0gYm9hcmQucGF0aFJlZnMoKTtcbiAgICAgICAgICAgICAgICAgICAgcGF0aFJlZnMuZGVsZXRlKHJlZik7XG4gICAgICAgICAgICAgICAgICAgIHJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgcmVmcyA9IGJvYXJkLnBhdGhSZWZzKCk7XG4gICAgICAgICAgICByZWZzLmFkZChyZWYpO1xuICAgICAgICAgICAgcmV0dXJuIHJlZjtcbiAgICAgICAgfSxcbiAgICAgICAgcGF0aFJlZnM6ICgpID0+IHtcbiAgICAgICAgICAgIGxldCByZWZzID0gUEFUSF9SRUZTLmdldChib2FyZCk7XG5cbiAgICAgICAgICAgIGlmICghcmVmcykge1xuICAgICAgICAgICAgICAgIHJlZnMgPSBuZXcgU2V0KCk7XG4gICAgICAgICAgICAgICAgUEFUSF9SRUZTLnNldChib2FyZCwgcmVmcyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZWZzO1xuICAgICAgICB9LFxuICAgICAgICBvbkNoYW5nZTogKCkgPT4ge30sXG4gICAgICAgIG1vdXNlZG93bjogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7fSxcbiAgICAgICAgbW91c2Vtb3ZlOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHt9LFxuICAgICAgICBtb3VzZWxlYXZlOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHt9LFxuICAgICAgICBnbG9iYWxNb3VzZW1vdmU6IChldmVudDogTW91c2VFdmVudCkgPT4ge30sXG4gICAgICAgIG1vdXNldXA6IChldmVudDogTW91c2VFdmVudCkgPT4ge30sXG4gICAgICAgIGdsb2JhbE1vdXNldXA6IChldmVudDogTW91c2VFdmVudCkgPT4ge30sXG4gICAgICAgIGtleWRvd246IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge30sXG4gICAgICAgIGdsb2JhbEtleWRvd246IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge30sXG4gICAgICAgIGtleXVwOiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHt9LFxuICAgICAgICBkYmxjbGljazogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7fSxcbiAgICAgICAgc2V0RnJhZ21lbnQ6IChkYXRhOiBEYXRhVHJhbnNmZXIgfCBudWxsKSA9PiB7fSxcbiAgICAgICAgaW5zZXJ0RnJhZ21lbnQ6IChkYXRhOiBEYXRhVHJhbnNmZXIgfCBudWxsKSA9PiB7fSxcbiAgICAgICAgZGVsZXRlRnJhZ21lbnQ6IChkYXRhOiBEYXRhVHJhbnNmZXIgfCBudWxsKSA9PiB7fSxcbiAgICAgICAgZHJhd0VsZW1lbnQ6IChjb250ZXh0OiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0KSA9PiBbXSxcbiAgICAgICAgcmVkcmF3RWxlbWVudDogKGNvbnRleHQ6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQsIHByZXZpb3VzQ29udGV4dCkgPT4ge30sXG4gICAgICAgIGRlc3Ryb3lFbGVtZW50OiAoY29udGV4dDogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCkgPT4ge30sXG4gICAgICAgIGlzV2l0aGluU2VsZWN0aW9uOiBlbGVtZW50ID0+IGZhbHNlLFxuICAgICAgICBpc0hpdFNlbGVjdGlvbjogZWxlbWVudCA9PiBmYWxzZSxcbiAgICAgICAgaXNSZWN1cnNpb246IGVsZW1lbnQgPT4gdHJ1ZSxcbiAgICAgICAgaXNNb3ZhYmxlOiBlbGVtZW50ID0+IGZhbHNlLFxuICAgICAgICBnZXRSZWN0YW5nbGU6IGVsZW1lbnQgPT4gbnVsbCxcbiAgICAgICAgYXBwbHlUaGVtZTogKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge30sXG4gICAgICAgIHBvaW50ZXJEb3duOiAocG9pbnRlcikgPT4ge30sXG4gICAgICAgIHBvaW50ZXJNb3ZlOiAocG9pbnRlcikgPT4ge30sXG4gICAgICAgIHBvaW50ZXJVcDogKHBvaW50ZXIpID0+IHt9LFxuICAgICAgICBwb2ludGVyQ2FuY2VsOiAocG9pbnRlcikgPT4ge30sXG4gICAgICAgIHBvaW50ZXJPdXQ6IChwb2ludGVyKSA9PiB7fSxcbiAgICAgICAgcG9pbnRlckxlYXZlOiAocG9pbnRlcikgPT4ge30sXG4gICAgICAgIGdsb2JhbFBvaW50ZXJNb3ZlOiAocG9pbnRlcikgPT4ge30sXG4gICAgICAgIGdsb2JhbFBvaW50ZXJVcDogKHBvaW50ZXIpID0+IHt9LFxuICAgIH07XG4gICAgcmV0dXJuIGJvYXJkO1xufVxuIl19
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { isHotkey } from 'is-hotkey';
|
|
2
|
-
import { PlaitBoard, PlaitPluginKey } from '../interfaces';
|
|
3
|
-
import { BoardTransforms, Transforms } from '../transforms';
|
|
4
|
-
import { depthFirstRecursion } from '../utils';
|
|
5
|
-
export const withHotkey = (board) => {
|
|
6
|
-
const { keydown, globalKeydown } = board;
|
|
7
|
-
board.keydown = (event) => {
|
|
8
|
-
const options = board.getPluginOptions(PlaitPluginKey.withSelection);
|
|
9
|
-
if (!PlaitBoard.isReadonly(board) && options.isMultiple && isHotkey('mod+a', event)) {
|
|
10
|
-
event.preventDefault();
|
|
11
|
-
let elements = [];
|
|
12
|
-
depthFirstRecursion(board, node => {
|
|
13
|
-
if (PlaitBoard.isBoard(node)) {
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
elements.push(node);
|
|
17
|
-
}, node => {
|
|
18
|
-
if (PlaitBoard.isBoard(node) || board.isRecursion(node)) {
|
|
19
|
-
return true;
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
}, true);
|
|
25
|
-
Transforms.setSelectionWithTemporaryElements(board, elements);
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
keydown(event);
|
|
29
|
-
};
|
|
30
|
-
board.globalKeydown = (event) => {
|
|
31
|
-
if (PlaitBoard.getMovingPointInBoard(board) || PlaitBoard.isMovingPointInBoard(board)) {
|
|
32
|
-
if (isHotkey(['mod+=', 'mod++'], { byKey: true })(event)) {
|
|
33
|
-
event.preventDefault();
|
|
34
|
-
BoardTransforms.updateZoom(board, board.viewport.zoom + 0.1, false);
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
if (isHotkey(['mod+shift+=', 'mod+shift++'], { byKey: true })(event)) {
|
|
38
|
-
event.preventDefault();
|
|
39
|
-
BoardTransforms.fitViewport(board);
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
if (isHotkey(['mod+-', 'mod+shift+-'])(event)) {
|
|
43
|
-
event.preventDefault();
|
|
44
|
-
BoardTransforms.updateZoom(board, board.viewport.zoom - 0.1);
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
if (isHotkey(['mod+0', 'mod+shift+0'], { byKey: true })(event)) {
|
|
48
|
-
event.preventDefault();
|
|
49
|
-
BoardTransforms.updateZoom(board, 1);
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
globalKeydown(event);
|
|
54
|
-
};
|
|
55
|
-
return board;
|
|
56
|
-
};
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1ob3RrZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtaG90a2V5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUFZLFVBQVUsRUFBZ0IsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUkvQyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDNUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFekMsS0FBSyxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtRQUNyQyxNQUFNLE9BQU8sR0FBSSxLQUEyQixDQUFDLGdCQUFnQixDQUFvQixjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFL0csSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ2pGLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLFFBQVEsR0FBbUIsRUFBRSxDQUFDO1lBQ2xDLG1CQUFtQixDQUNmLEtBQUssRUFDTCxJQUFJLENBQUMsRUFBRTtnQkFDSCxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzFCLE9BQU87aUJBQ1Y7Z0JBQ0QsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFvQixDQUFDLENBQUM7WUFDeEMsQ0FBQyxFQUNELElBQUksQ0FBQyxFQUFFO2dCQUNILElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNyRCxPQUFPLElBQUksQ0FBQztpQkFDZjtxQkFBTTtvQkFDSCxPQUFPLEtBQUssQ0FBQztpQkFDaEI7WUFDTCxDQUFDLEVBQ0QsSUFBSSxDQUNQLENBQUM7WUFFRixVQUFVLENBQUMsaUNBQWlDLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzlELE9BQU87U0FDVjtRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQixDQUFDLENBQUM7SUFFRixLQUFLLENBQUMsYUFBYSxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFO1FBQzNDLElBQUksVUFBVSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxJQUFJLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNuRixJQUFJLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN0RCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLGVBQWUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDcEUsT0FBTzthQUNWO1lBQ0QsSUFBSSxRQUFRLENBQUMsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDbEUsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixlQUFlLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNuQyxPQUFPO2FBQ1Y7WUFDRCxJQUFJLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUMzQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLGVBQWUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUM3RCxPQUFPO2FBQ1Y7WUFDRCxJQUFJLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUM1RCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLGVBQWUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNyQyxPQUFPO2FBQ1Y7U0FDSjtRQUNELGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDLENBQUM7SUFFRixPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0hvdGtleSB9IGZyb20gJ2lzLWhvdGtleSc7XG5pbXBvcnQgeyBBbmNlc3RvciwgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBQbGFpdFBsdWdpbktleSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQm9hcmRUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBkZXB0aEZpcnN0UmVjdXJzaW9uIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUGxhaXRPcHRpb25zQm9hcmQgfSBmcm9tICcuL3dpdGgtb3B0aW9ucyc7XG5pbXBvcnQgeyBXaXRoUGx1Z2luT3B0aW9ucyB9IGZyb20gJy4vd2l0aC1zZWxlY3Rpb24nO1xuXG5leHBvcnQgY29uc3Qgd2l0aEhvdGtleSA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHsga2V5ZG93biwgZ2xvYmFsS2V5ZG93biB9ID0gYm9hcmQ7XG5cbiAgICBib2FyZC5rZXlkb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSAoYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpLmdldFBsdWdpbk9wdGlvbnM8V2l0aFBsdWdpbk9wdGlvbnM+KFBsYWl0UGx1Z2luS2V5LndpdGhTZWxlY3Rpb24pO1xuXG4gICAgICAgIGlmICghUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSAmJiBvcHRpb25zLmlzTXVsdGlwbGUgJiYgaXNIb3RrZXkoJ21vZCthJywgZXZlbnQpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgbGV0IGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuICAgICAgICAgICAgZGVwdGhGaXJzdFJlY3Vyc2lvbjxBbmNlc3Rvcj4oXG4gICAgICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICAgICAgbm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChQbGFpdEJvYXJkLmlzQm9hcmQobm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKG5vZGUgYXMgUGxhaXRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc0JvYXJkKG5vZGUpIHx8IGJvYXJkLmlzUmVjdXJzaW9uKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb25XaXRoVGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQsIGVsZW1lbnRzKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBrZXlkb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2xvYmFsS2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXRCb2FyZC5nZXRNb3ZpbmdQb2ludEluQm9hcmQoYm9hcmQpIHx8IFBsYWl0Qm9hcmQuaXNNb3ZpbmdQb2ludEluQm9hcmQoYm9hcmQpKSB7XG4gICAgICAgICAgICBpZiAoaXNIb3RrZXkoWydtb2QrPScsICdtb2QrKyddLCB7IGJ5S2V5OiB0cnVlIH0pKGV2ZW50KSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgQm9hcmRUcmFuc2Zvcm1zLnVwZGF0ZVpvb20oYm9hcmQsIGJvYXJkLnZpZXdwb3J0Lnpvb20gKyAwLjEsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNIb3RrZXkoWydtb2Qrc2hpZnQrPScsICdtb2Qrc2hpZnQrKyddLCB7IGJ5S2V5OiB0cnVlIH0pKGV2ZW50KSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgQm9hcmRUcmFuc2Zvcm1zLmZpdFZpZXdwb3J0KGJvYXJkKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNIb3RrZXkoWydtb2QrLScsICdtb2Qrc2hpZnQrLSddKShldmVudCkpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVab29tKGJvYXJkLCBib2FyZC52aWV3cG9ydC56b29tIC0gMC4xKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNIb3RrZXkoWydtb2QrMCcsICdtb2Qrc2hpZnQrMCddLCB7IGJ5S2V5OiB0cnVlIH0pKGV2ZW50KSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgQm9hcmRUcmFuc2Zvcm1zLnVwZGF0ZVpvb20oYm9hcmQsIDEpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBnbG9iYWxLZXlkb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufTtcbiJdfQ==
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { BOARD_TO_HOST } from '../utils/weak-maps';
|
|
2
|
-
import { PlaitBoard } from '../interfaces/board';
|
|
3
|
-
import { isInPlaitBoard, transformPoint } from '../utils/board';
|
|
4
|
-
import { toPoint } from '../utils/dom/common';
|
|
5
|
-
import { Transforms } from '../transforms';
|
|
6
|
-
import { getHitElementOfRoot, getSelectedElements } from '../utils/selected-element';
|
|
7
|
-
import { PlaitNode } from '../interfaces/node';
|
|
8
|
-
import { throttleRAF } from '../utils/common';
|
|
9
|
-
import { addMovingElements, removeMovingElements } from '../utils/moving-element';
|
|
10
|
-
import { MERGING } from '../interfaces/history';
|
|
11
|
-
export function withMoving(board) {
|
|
12
|
-
const { mousedown, mousemove, globalMouseup, globalMousemove } = board;
|
|
13
|
-
let offsetX = 0;
|
|
14
|
-
let offsetY = 0;
|
|
15
|
-
let isPreventDefault = false;
|
|
16
|
-
let startPoint;
|
|
17
|
-
let activeElements = [];
|
|
18
|
-
board.mousedown = event => {
|
|
19
|
-
const host = BOARD_TO_HOST.get(board);
|
|
20
|
-
const point = transformPoint(board, toPoint(event.x, event.y, host));
|
|
21
|
-
const range = { anchor: point, focus: point };
|
|
22
|
-
let movableElements = board.children.filter(item => board.isMovable(item));
|
|
23
|
-
if (movableElements.length) {
|
|
24
|
-
startPoint = point;
|
|
25
|
-
const selectedRootElements = getSelectedElements(board).filter(item => movableElements.includes(item));
|
|
26
|
-
const hitElement = getHitElementOfRoot(board, movableElements, range);
|
|
27
|
-
if (hitElement && selectedRootElements.includes(hitElement)) {
|
|
28
|
-
activeElements = selectedRootElements;
|
|
29
|
-
}
|
|
30
|
-
else if (hitElement) {
|
|
31
|
-
activeElements = [hitElement];
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
mousedown(event);
|
|
35
|
-
};
|
|
36
|
-
board.mousemove = event => {
|
|
37
|
-
if (startPoint && activeElements.length && !PlaitBoard.hasBeenTextEditing(board)) {
|
|
38
|
-
if (!isPreventDefault) {
|
|
39
|
-
isPreventDefault = true;
|
|
40
|
-
}
|
|
41
|
-
const host = BOARD_TO_HOST.get(board);
|
|
42
|
-
const endPoint = transformPoint(board, toPoint(event.x, event.y, host));
|
|
43
|
-
offsetX = endPoint[0] - startPoint[0];
|
|
44
|
-
offsetY = endPoint[1] - startPoint[1];
|
|
45
|
-
const offsetBuffer = 5;
|
|
46
|
-
if (Math.abs(offsetX) > offsetBuffer || Math.abs(offsetY) > offsetBuffer) {
|
|
47
|
-
throttleRAF(() => {
|
|
48
|
-
const currentElements = activeElements.map(activeElement => {
|
|
49
|
-
const points = activeElement.points || [];
|
|
50
|
-
const [x, y] = activeElement.points[0];
|
|
51
|
-
const newPoints = points.map(p => [p[0] + offsetX, p[1] + offsetY]);
|
|
52
|
-
const index = board.children.findIndex(item => item.id === activeElement.id);
|
|
53
|
-
Transforms.setNode(board, {
|
|
54
|
-
points: newPoints
|
|
55
|
-
}, [index]);
|
|
56
|
-
MERGING.set(board, true);
|
|
57
|
-
return PlaitNode.get(board, [index]);
|
|
58
|
-
});
|
|
59
|
-
PlaitBoard.getBoardContainer(board).classList.add('element-moving');
|
|
60
|
-
addMovingElements(board, currentElements);
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
if (isPreventDefault) {
|
|
65
|
-
// 阻止 move 过程中触发画布滚动行为
|
|
66
|
-
event.preventDefault();
|
|
67
|
-
}
|
|
68
|
-
mousemove(event);
|
|
69
|
-
};
|
|
70
|
-
board.globalMousemove = event => {
|
|
71
|
-
if (startPoint) {
|
|
72
|
-
const inPlaitBoardElement = isInPlaitBoard(board, event.x, event.y);
|
|
73
|
-
if (!inPlaitBoardElement) {
|
|
74
|
-
cancelMove(board);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
globalMousemove(event);
|
|
78
|
-
};
|
|
79
|
-
board.globalMouseup = event => {
|
|
80
|
-
isPreventDefault = false;
|
|
81
|
-
if (startPoint) {
|
|
82
|
-
cancelMove(board);
|
|
83
|
-
}
|
|
84
|
-
globalMouseup(event);
|
|
85
|
-
};
|
|
86
|
-
function cancelMove(board) {
|
|
87
|
-
startPoint = null;
|
|
88
|
-
offsetX = 0;
|
|
89
|
-
offsetY = 0;
|
|
90
|
-
activeElements = [];
|
|
91
|
-
removeMovingElements(board);
|
|
92
|
-
MERGING.set(board, false);
|
|
93
|
-
PlaitBoard.getBoardContainer(board).classList.remove('element-moving');
|
|
94
|
-
}
|
|
95
|
-
return board;
|
|
96
|
-
}
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1tb3ZpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtbW92aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQWlCLE1BQU0sMkJBQTJCLENBQUM7QUFDcEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHaEQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFpQjtJQUN4QyxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRXZFLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNoQixJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDaEIsSUFBSSxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFDN0IsSUFBSSxVQUF3QixDQUFDO0lBQzdCLElBQUksY0FBYyxHQUFtQixFQUFFLENBQUM7SUFFeEMsS0FBSyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsRUFB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LENBQUMsRUFBRTtRQUMxQixnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxVQUFVLEVBQUU7WUFDWixVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDckI7UUFDRCxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQyxDQUFDO0lBRUYsU0FBUyxVQUFVLENBQUMsS0FBaUI7UUFDakMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ1osT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNaLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUIsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJPQVJEX1RPX0hPU1QgfSBmcm9tICcuLi91dGlscy93ZWFrLW1hcHMnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgaXNJblBsYWl0Qm9hcmQsIHRyYW5zZm9ybVBvaW50IH0gZnJvbSAnLi4vdXRpbHMvYm9hcmQnO1xuaW1wb3J0IHsgdG9Qb2ludCB9IGZyb20gJy4uL3V0aWxzL2RvbS9jb21tb24nO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50JztcbmltcG9ydCB7IFRyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBnZXRIaXRFbGVtZW50T2ZSb290LCBnZXRTZWxlY3RlZEVsZW1lbnRzLCBpc0hpdEVsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQtZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdE5vZGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgdGhyb3R0bGVSQUYgfSBmcm9tICcuLi91dGlscy9jb21tb24nO1xuaW1wb3J0IHsgYWRkTW92aW5nRWxlbWVudHMsIHJlbW92ZU1vdmluZ0VsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvbW92aW5nLWVsZW1lbnQnO1xuaW1wb3J0IHsgTUVSR0lORyB9IGZyb20gJy4uL2ludGVyZmFjZXMvaGlzdG9yeSc7XG5pbXBvcnQgeyBSYW5nZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aE1vdmluZyhib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IHsgbW91c2Vkb3duLCBtb3VzZW1vdmUsIGdsb2JhbE1vdXNldXAsIGdsb2JhbE1vdXNlbW92ZSB9ID0gYm9hcmQ7XG5cbiAgICBsZXQgb2Zmc2V0WCA9IDA7XG4gICAgbGV0IG9mZnNldFkgPSAwO1xuICAgIGxldCBpc1ByZXZlbnREZWZhdWx0ID0gZmFsc2U7XG4gICAgbGV0IHN0YXJ0UG9pbnQ6IFBvaW50IHwgbnVsbDtcbiAgICBsZXQgYWN0aXZlRWxlbWVudHM6IFBsYWl0RWxlbWVudFtdID0gW107XG5cbiAgICBib2FyZC5tb3VzZWRvd24gPSBldmVudCA9PiB7XG4gICAgICAgIGNvbnN0IGhvc3QgPSBCT0FSRF9UT19IT1NULmdldChib2FyZCk7XG4gICAgICAgIGNvbnN0IHBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgaG9zdCEpKTtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSB7IGFuY2hvcjogcG9pbnQsIGZvY3VzOiBwb2ludCB9IGFzIFJhbmdlO1xuICAgICAgICBsZXQgbW92YWJsZUVsZW1lbnRzID0gYm9hcmQuY2hpbGRyZW4uZmlsdGVyKGl0ZW0gPT4gYm9hcmQuaXNNb3ZhYmxlKGl0ZW0pKTtcbiAgICAgICAgaWYgKG1vdmFibGVFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSBwb2ludDtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUm9vdEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCkuZmlsdGVyKGl0ZW0gPT4gbW92YWJsZUVsZW1lbnRzLmluY2x1ZGVzKGl0ZW0pKTtcbiAgICAgICAgICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBnZXRIaXRFbGVtZW50T2ZSb290KGJvYXJkLCBtb3ZhYmxlRWxlbWVudHMsIHJhbmdlKTtcbiAgICAgICAgICAgIGlmIChoaXRFbGVtZW50ICYmIHNlbGVjdGVkUm9vdEVsZW1lbnRzLmluY2x1ZGVzKGhpdEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgYWN0aXZlRWxlbWVudHMgPSBzZWxlY3RlZFJvb3RFbGVtZW50cztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaGl0RWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnRzID0gW2hpdEVsZW1lbnRdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbW91c2Vkb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQubW91c2Vtb3ZlID0gZXZlbnQgPT4ge1xuICAgICAgICBpZiAoc3RhcnRQb2ludCAmJiBhY3RpdmVFbGVtZW50cy5sZW5ndGggJiYgIVBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgaWYgKCFpc1ByZXZlbnREZWZhdWx0KSB7XG4gICAgICAgICAgICAgICAgaXNQcmV2ZW50RGVmYXVsdCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBob3N0ID0gQk9BUkRfVE9fSE9TVC5nZXQoYm9hcmQpO1xuICAgICAgICAgICAgY29uc3QgZW5kUG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBob3N0ISkpO1xuICAgICAgICAgICAgb2Zmc2V0WCA9IGVuZFBvaW50WzBdIC0gc3RhcnRQb2ludFswXTtcbiAgICAgICAgICAgIG9mZnNldFkgPSBlbmRQb2ludFsxXSAtIHN0YXJ0UG9pbnRbMV07XG4gICAgICAgICAgICBjb25zdCBvZmZzZXRCdWZmZXIgPSA1O1xuICAgICAgICAgICAgaWYgKE1hdGguYWJzKG9mZnNldFgpID4gb2Zmc2V0QnVmZmVyIHx8IE1hdGguYWJzKG9mZnNldFkpID4gb2Zmc2V0QnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgdGhyb3R0bGVSQUYoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RWxlbWVudHMgPSBhY3RpdmVFbGVtZW50cy5tYXAoYWN0aXZlRWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwb2ludHMgPSBhY3RpdmVFbGVtZW50LnBvaW50cyB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFt4LCB5XSA9IGFjdGl2ZUVsZW1lbnQucG9pbnRzIVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1BvaW50cyA9IHBvaW50cy5tYXAocCA9PiBbcFswXSArIG9mZnNldFgsIHBbMV0gKyBvZmZzZXRZXSkgYXMgUG9pbnRbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gYm9hcmQuY2hpbGRyZW4uZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PT0gYWN0aXZlRWxlbWVudC5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHM6IG5ld1BvaW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIE1FUkdJTkcuc2V0KGJvYXJkLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBbaW5kZXhdKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5hZGQoJ2VsZW1lbnQtbW92aW5nJyk7XG4gICAgICAgICAgICAgICAgICAgIGFkZE1vdmluZ0VsZW1lbnRzKGJvYXJkLCBjdXJyZW50RWxlbWVudHMgYXMgUGxhaXRFbGVtZW50W10pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpc1ByZXZlbnREZWZhdWx0KSB7XG4gICAgICAgICAgICAvLyDpmLvmraIgbW92ZSDov4fnqIvkuK3op6blj5HnlLvluIPmu5rliqjooYzkuLpcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgbW91c2Vtb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2xvYmFsTW91c2Vtb3ZlID0gZXZlbnQgPT4ge1xuICAgICAgICBpZiAoc3RhcnRQb2ludCkge1xuICAgICAgICAgICAgY29uc3QgaW5QbGFpdEJvYXJkRWxlbWVudCA9IGlzSW5QbGFpdEJvYXJkKGJvYXJkLCBldmVudC54LCBldmVudC55KTtcbiAgICAgICAgICAgIGlmICghaW5QbGFpdEJvYXJkRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGNhbmNlbE1vdmUoYm9hcmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGdsb2JhbE1vdXNlbW92ZShldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmdsb2JhbE1vdXNldXAgPSBldmVudCA9PiB7XG4gICAgICAgIGlzUHJldmVudERlZmF1bHQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHN0YXJ0UG9pbnQpIHtcbiAgICAgICAgICAgIGNhbmNlbE1vdmUoYm9hcmQpO1xuICAgICAgICB9XG4gICAgICAgIGdsb2JhbE1vdXNldXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBjYW5jZWxNb3ZlKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgICAgIHN0YXJ0UG9pbnQgPSBudWxsO1xuICAgICAgICBvZmZzZXRYID0gMDtcbiAgICAgICAgb2Zmc2V0WSA9IDA7XG4gICAgICAgIGFjdGl2ZUVsZW1lbnRzID0gW107XG4gICAgICAgIHJlbW92ZU1vdmluZ0VsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgTUVSR0lORy5zZXQoYm9hcmQsIGZhbHNlKTtcbiAgICAgICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LnJlbW92ZSgnZWxlbWVudC1tb3ZpbmcnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59XG4iXX0=
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
import { PlaitBoard } from '../interfaces/board';
|
|
2
|
-
import { Transforms } from '../transforms';
|
|
3
|
-
import { transformPoint } from '../utils/board';
|
|
4
|
-
import { isMainPointer, toPoint } from '../utils/dom/common';
|
|
5
|
-
import { RectangleClient } from '../interfaces/rectangle-client';
|
|
6
|
-
import { cacheSelectedElements, clearSelectedElement, getHitElements, getSelectedElements } from '../utils/selected-element';
|
|
7
|
-
import { PlaitPointerType, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR } from '../interfaces';
|
|
8
|
-
import { getRectangleByElements } from '../utils/element';
|
|
9
|
-
import { BOARD_TO_IS_SELECTION_MOVING, BOARD_TO_TEMPORARY_ELEMENTS } from '../utils/weak-maps';
|
|
10
|
-
import { ATTACHED_ELEMENT_CLASS_NAME } from '../constants/selection';
|
|
11
|
-
import { preventTouchMove, throttleRAF } from '../utils';
|
|
12
|
-
import { PlaitPluginKey } from '../interfaces/plugin-key';
|
|
13
|
-
export function withSelection(board) {
|
|
14
|
-
const { pointerDown, globalPointerMove, globalPointerUp, onChange } = board;
|
|
15
|
-
let start = null;
|
|
16
|
-
let end = null;
|
|
17
|
-
let selectionMovingG;
|
|
18
|
-
let selectionOuterG;
|
|
19
|
-
let previousSelectedElements;
|
|
20
|
-
// prevent text from being selected when user pressed main pointer and is moving
|
|
21
|
-
let needPreventNativeSelectionWhenMoving = false;
|
|
22
|
-
board.pointerDown = (event) => {
|
|
23
|
-
if (event.target instanceof Element && !event.target.closest('.plait-richtext-container')) {
|
|
24
|
-
needPreventNativeSelectionWhenMoving = true;
|
|
25
|
-
}
|
|
26
|
-
if (!isMainPointer(event)) {
|
|
27
|
-
pointerDown(event);
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
const options = board.getPluginOptions(PlaitPluginKey.withSelection);
|
|
31
|
-
const point = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
|
|
32
|
-
const range = { anchor: point, focus: point };
|
|
33
|
-
const hitElements = getHitElements(board, { ranges: [range] });
|
|
34
|
-
const selectedElements = getSelectedElements(board);
|
|
35
|
-
if (hitElements.length === 1 && selectedElements.includes(hitElements[0]) && !options.isDisabledSelect) {
|
|
36
|
-
pointerDown(event);
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
if (PlaitBoard.isPointer(board, PlaitPointerType.selection) &&
|
|
40
|
-
hitElements.length === 0 &&
|
|
41
|
-
options.isMultiple &&
|
|
42
|
-
!options.isDisabledSelect) {
|
|
43
|
-
start = point;
|
|
44
|
-
preventTouchMove(board, true);
|
|
45
|
-
}
|
|
46
|
-
Transforms.setSelection(board, { ranges: [range] });
|
|
47
|
-
pointerDown(event);
|
|
48
|
-
};
|
|
49
|
-
board.globalPointerMove = (event) => {
|
|
50
|
-
if (needPreventNativeSelectionWhenMoving) {
|
|
51
|
-
// prevent text from being selected
|
|
52
|
-
event.preventDefault();
|
|
53
|
-
}
|
|
54
|
-
if (start) {
|
|
55
|
-
const movedTarget = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
|
|
56
|
-
const { x, y, width, height } = RectangleClient.toRectangleClient([start, movedTarget]);
|
|
57
|
-
selectionMovingG?.remove();
|
|
58
|
-
if (Math.hypot(width, height) > 5) {
|
|
59
|
-
end = movedTarget;
|
|
60
|
-
throttleRAF(() => {
|
|
61
|
-
if (start && end) {
|
|
62
|
-
Transforms.setSelection(board, { ranges: [{ anchor: start, focus: end }] });
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
setSelectionMoving(board);
|
|
66
|
-
const rough = PlaitBoard.getRoughSVG(board);
|
|
67
|
-
selectionMovingG = rough.rectangle(x, y, width, height, {
|
|
68
|
-
stroke: SELECTION_BORDER_COLOR,
|
|
69
|
-
strokeWidth: 1,
|
|
70
|
-
fill: SELECTION_FILL_COLOR,
|
|
71
|
-
fillStyle: 'solid'
|
|
72
|
-
});
|
|
73
|
-
PlaitBoard.getHost(board).append(selectionMovingG);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
globalPointerMove(event);
|
|
77
|
-
};
|
|
78
|
-
board.globalPointerUp = (event) => {
|
|
79
|
-
if (start && end) {
|
|
80
|
-
selectionMovingG?.remove();
|
|
81
|
-
clearSelectionMoving(board);
|
|
82
|
-
Transforms.setSelection(board, { ranges: [{ anchor: start, focus: end }] });
|
|
83
|
-
}
|
|
84
|
-
if (PlaitBoard.isFocus(board)) {
|
|
85
|
-
const isInBoard = event.target instanceof Node && PlaitBoard.getBoardContainer(board).contains(event.target);
|
|
86
|
-
const isInDocument = event.target instanceof Node && document.contains(event.target);
|
|
87
|
-
const isAttachedElement = event.target instanceof Element && event.target.closest(`.${ATTACHED_ELEMENT_CLASS_NAME}`);
|
|
88
|
-
// Clear selection when mouse board outside area
|
|
89
|
-
// The framework needs to determine whether the board is focused through selection
|
|
90
|
-
if (!isInBoard && !start && !isAttachedElement && isInDocument) {
|
|
91
|
-
Transforms.setSelection(board, null);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
start = null;
|
|
95
|
-
end = null;
|
|
96
|
-
needPreventNativeSelectionWhenMoving = false;
|
|
97
|
-
preventTouchMove(board, false);
|
|
98
|
-
globalPointerUp(event);
|
|
99
|
-
};
|
|
100
|
-
board.onChange = () => {
|
|
101
|
-
const options = board.getPluginOptions(PlaitPluginKey.withSelection);
|
|
102
|
-
if (options.isDisabledSelect) {
|
|
103
|
-
selectionOuterG?.remove();
|
|
104
|
-
clearSelectedElement(board);
|
|
105
|
-
}
|
|
106
|
-
// calc selected elements entry
|
|
107
|
-
if (board.pointer !== PlaitPointerType.hand && !options.isDisabledSelect) {
|
|
108
|
-
try {
|
|
109
|
-
if (board.operations.find(value => value.type === 'set_selection')) {
|
|
110
|
-
selectionOuterG?.remove();
|
|
111
|
-
const temporaryElements = getTemporaryElements(board);
|
|
112
|
-
let elements = temporaryElements ? temporaryElements : getHitElements(board);
|
|
113
|
-
if (!options.isMultiple && elements.length > 1) {
|
|
114
|
-
elements = [elements[0]];
|
|
115
|
-
}
|
|
116
|
-
cacheSelectedElements(board, elements);
|
|
117
|
-
previousSelectedElements = elements;
|
|
118
|
-
const { width, height } = getRectangleByElements(board, elements, false);
|
|
119
|
-
if (width > 0 && height > 0 && elements.length > 1) {
|
|
120
|
-
selectionOuterG = createSelectionOuterG(board, elements);
|
|
121
|
-
selectionOuterG.classList.add('selection-outer');
|
|
122
|
-
PlaitBoard.getHost(board).append(selectionOuterG);
|
|
123
|
-
}
|
|
124
|
-
deleteTemporaryElements(board);
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
// wait node destroy and remove selected element state
|
|
128
|
-
setTimeout(() => {
|
|
129
|
-
const currentSelectedElements = getSelectedElements(board);
|
|
130
|
-
if (currentSelectedElements.length && currentSelectedElements.length > 1) {
|
|
131
|
-
const selectedElementChange = currentSelectedElements.some(item => !previousSelectedElements.includes(item));
|
|
132
|
-
if (selectedElementChange) {
|
|
133
|
-
selectionOuterG?.remove();
|
|
134
|
-
selectionOuterG = createSelectionOuterG(board, currentSelectedElements);
|
|
135
|
-
selectionOuterG.classList.add('selection-outer');
|
|
136
|
-
PlaitBoard.getHost(board).append(selectionOuterG);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
selectionOuterG?.remove();
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
catch (error) {
|
|
146
|
-
console.error(error);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
onChange();
|
|
150
|
-
};
|
|
151
|
-
board.setPluginOptions(PlaitPluginKey.withSelection, {
|
|
152
|
-
isMultiple: true,
|
|
153
|
-
isDisabledSelect: false
|
|
154
|
-
});
|
|
155
|
-
return board;
|
|
156
|
-
}
|
|
157
|
-
export function getTemporaryElements(board) {
|
|
158
|
-
return BOARD_TO_TEMPORARY_ELEMENTS.get(board);
|
|
159
|
-
}
|
|
160
|
-
export function deleteTemporaryElements(board) {
|
|
161
|
-
BOARD_TO_TEMPORARY_ELEMENTS.delete(board);
|
|
162
|
-
}
|
|
163
|
-
export function isSelectionMoving(board) {
|
|
164
|
-
return !!BOARD_TO_IS_SELECTION_MOVING.get(board);
|
|
165
|
-
}
|
|
166
|
-
export function setSelectionMoving(board) {
|
|
167
|
-
PlaitBoard.getBoardContainer(board).classList.add('selection-moving');
|
|
168
|
-
BOARD_TO_IS_SELECTION_MOVING.set(board, true);
|
|
169
|
-
}
|
|
170
|
-
export function clearSelectionMoving(board) {
|
|
171
|
-
PlaitBoard.getBoardContainer(board).classList.remove('selection-moving');
|
|
172
|
-
BOARD_TO_IS_SELECTION_MOVING.delete(board);
|
|
173
|
-
}
|
|
174
|
-
export function createSelectionOuterG(board, selectElements) {
|
|
175
|
-
const { x, y, width, height } = getRectangleByElements(board, selectElements, false);
|
|
176
|
-
const rough = PlaitBoard.getRoughSVG(board);
|
|
177
|
-
return rough.rectangle(x - 2.5, y - 2.5, width + 5, height + 5, {
|
|
178
|
-
stroke: SELECTION_BORDER_COLOR,
|
|
179
|
-
strokeWidth: 1,
|
|
180
|
-
fillStyle: 'solid'
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zZWxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0gsT0FBTyxFQUFnQixnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXpELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQU8xRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEtBQWlCO0lBQzNDLE1BQU0sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUU1RSxJQUFJLEtBQUssR0FBaUIsSUFBSSxDQUFDO0lB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U0FBUyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDNUQsTUFBTSxFQUFFLHNCQUFzQjtRQUM5QixXQUFXLEVBQUUsQ0FBQztRQUNkLFNBQVMsRUFBRSxPQUFPO0tBQ3JCLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQnO1xuaW1wb3J0IHsgVHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgdHJhbnNmb3JtUG9pbnQgfSBmcm9tICcuLi91dGlscy9ib2FyZCc7XG5pbXBvcnQgeyBpc01haW5Qb2ludGVyLCB0b1BvaW50IH0gZnJvbSAnLi4vdXRpbHMvZG9tL2NvbW1vbic7XG5pbXBvcnQgeyBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlY3RhbmdsZS1jbGllbnQnO1xuaW1wb3J0IHsgY2FjaGVTZWxlY3RlZEVsZW1lbnRzLCBjbGVhclNlbGVjdGVkRWxlbWVudCwgZ2V0SGl0RWxlbWVudHMsIGdldFNlbGVjdGVkRWxlbWVudHMgfSBmcm9tICcuLi91dGlscy9zZWxlY3RlZC1lbGVtZW50JztcbmltcG9ydCB7IFBsYWl0RWxlbWVudCwgUGxhaXRQb2ludGVyVHlwZSwgU0VMRUNUSU9OX0JPUkRFUl9DT0xPUiwgU0VMRUNUSU9OX0ZJTExfQ09MT1IgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMgfSBmcm9tICcuLi91dGlscy9lbGVtZW50JztcbmltcG9ydCB7IEJPQVJEX1RPX0lTX1NFTEVDVElPTl9NT1ZJTkcsIEJPQVJEX1RPX1RFTVBPUkFSWV9FTEVNRU5UUyB9IGZyb20gJy4uL3V0aWxzL3dlYWstbWFwcyc7XG5pbXBvcnQgeyBBVFRBQ0hFRF9FTEVNRU5UX0NMQVNTX05BTUUgfSBmcm9tICcuLi9jb25zdGFudHMvc2VsZWN0aW9uJztcbmltcG9ydCB7IHByZXZlbnRUb3VjaE1vdmUsIHRocm90dGxlUkFGIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUGxhaXRPcHRpb25zQm9hcmQsIFBsYWl0UGx1Z2luT3B0aW9ucyB9IGZyb20gJy4vd2l0aC1vcHRpb25zJztcbmltcG9ydCB7IFBsYWl0UGx1Z2luS2V5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wbHVnaW4ta2V5JztcblxuZXhwb3J0IGludGVyZmFjZSBXaXRoUGx1Z2luT3B0aW9ucyBleHRlbmRzIFBsYWl0UGx1Z2luT3B0aW9ucyB7XG4gICAgaXNNdWx0aXBsZTogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkU2VsZWN0OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFNlbGVjdGlvbihib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IHsgcG9pbnRlckRvd24sIGdsb2JhbFBvaW50ZXJNb3ZlLCBnbG9iYWxQb2ludGVyVXAsIG9uQ2hhbmdlIH0gPSBib2FyZDtcblxuICAgIGxldCBzdGFydDogUG9pbnQgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgZW5kOiBQb2ludCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBzZWxlY3Rpb25Nb3ZpbmdHOiBTVkdHRWxlbWVudDtcbiAgICBsZXQgc2VsZWN0aW9uT3V0ZXJHOiBTVkdHRWxlbWVudDtcbiAgICBsZXQgcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXTtcblxuICAgIC8vIHByZXZlbnQgdGV4dCBmcm9tIGJlaW5nIHNlbGVjdGVkIHdoZW4gdXNlciBwcmVzc2VkIG1haW4gcG9pbnRlciBhbmQgaXMgbW92aW5nXG4gICAgbGV0IG5lZWRQcmV2ZW50TmF0aXZlU2VsZWN0aW9uV2hlbk1vdmluZyA9IGZhbHNlO1xuXG4gICAgYm9hcmQucG9pbnRlckRvd24gPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCAmJiAhZXZlbnQudGFyZ2V0LmNsb3Nlc3QoJy5wbGFpdC1yaWNodGV4dC1jb250YWluZXInKSkge1xuICAgICAgICAgICAgbmVlZFByZXZlbnROYXRpdmVTZWxlY3Rpb25XaGVuTW92aW5nID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNNYWluUG9pbnRlcihldmVudCkpIHtcbiAgICAgICAgICAgIHBvaW50ZXJEb3duKGV2ZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSAoYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpLmdldFBsdWdpbk9wdGlvbnM8V2l0aFBsdWdpbk9wdGlvbnM+KFBsYWl0UGx1Z2luS2V5LndpdGhTZWxlY3Rpb24pO1xuXG4gICAgICAgIGNvbnN0IHBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICBjb25zdCByYW5nZSA9IHsgYW5jaG9yOiBwb2ludCwgZm9jdXM6IHBvaW50IH07XG4gICAgICAgIGNvbnN0IGhpdEVsZW1lbnRzID0gZ2V0SGl0RWxlbWVudHMoYm9hcmQsIHsgcmFuZ2VzOiBbcmFuZ2VdIH0pO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG5cbiAgICAgICAgaWYgKGhpdEVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJiBzZWxlY3RlZEVsZW1lbnRzLmluY2x1ZGVzKGhpdEVsZW1lbnRzWzBdKSAmJiAhb3B0aW9ucy5pc0Rpc2FibGVkU2VsZWN0KSB7XG4gICAgICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pICYmXG4gICAgICAgICAgICBoaXRFbGVtZW50cy5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIG9wdGlvbnMuaXNNdWx0aXBsZSAmJlxuICAgICAgICAgICAgIW9wdGlvbnMuaXNEaXNhYmxlZFNlbGVjdFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHN0YXJ0ID0gcG9pbnQ7XG4gICAgICAgICAgICBwcmV2ZW50VG91Y2hNb3ZlKGJvYXJkLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIFRyYW5zZm9ybXMuc2V0U2VsZWN0aW9uKGJvYXJkLCB7IHJhbmdlczogW3JhbmdlXSB9KTtcblxuICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmdsb2JhbFBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKG5lZWRQcmV2ZW50TmF0aXZlU2VsZWN0aW9uV2hlbk1vdmluZykge1xuICAgICAgICAgICAgLy8gcHJldmVudCB0ZXh0IGZyb20gYmVpbmcgc2VsZWN0ZWRcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhcnQpIHtcbiAgICAgICAgICAgIGNvbnN0IG1vdmVkVGFyZ2V0ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICAgICAgY29uc3QgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0gPSBSZWN0YW5nbGVDbGllbnQudG9SZWN0YW5nbGVDbGllbnQoW3N0YXJ0LCBtb3ZlZFRhcmdldF0pO1xuICAgICAgICAgICAgc2VsZWN0aW9uTW92aW5nRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBpZiAoTWF0aC5oeXBvdCh3aWR0aCwgaGVpZ2h0KSA+IDUpIHtcbiAgICAgICAgICAgICAgICBlbmQgPSBtb3ZlZFRhcmdldDtcbiAgICAgICAgICAgICAgICB0aHJvdHRsZVJBRigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydCAmJiBlbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0U2VsZWN0aW9uKGJvYXJkLCB7IHJhbmdlczogW3sgYW5jaG9yOiBzdGFydCwgZm9jdXM6IGVuZCB9XSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGlvbk1vdmluZyhib2FyZCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm91Z2ggPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25Nb3ZpbmdHID0gcm91Z2gucmVjdGFuZ2xlKHgsIHksIHdpZHRoLCBoZWlnaHQsIHtcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMSxcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogU0VMRUNUSU9OX0ZJTExfQ09MT1IsXG4gICAgICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkuYXBwZW5kKHNlbGVjdGlvbk1vdmluZ0cpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGdsb2JhbFBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2xvYmFsUG9pbnRlclVwID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkge1xuICAgICAgICAgICAgc2VsZWN0aW9uTW92aW5nRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBjbGVhclNlbGVjdGlvbk1vdmluZyhib2FyZCk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNldFNlbGVjdGlvbihib2FyZCwgeyByYW5nZXM6IFt7IGFuY2hvcjogc3RhcnQsIGZvY3VzOiBlbmQgfV0gfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc0ZvY3VzKGJvYXJkKSkge1xuICAgICAgICAgICAgY29uc3QgaXNJbkJvYXJkID0gZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSAmJiBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgaXNJbkRvY3VtZW50ID0gZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSAmJiBkb2N1bWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgaXNBdHRhY2hlZEVsZW1lbnQgPSBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50ICYmIGV2ZW50LnRhcmdldC5jbG9zZXN0KGAuJHtBVFRBQ0hFRF9FTEVNRU5UX0NMQVNTX05BTUV9YCk7XG4gICAgICAgICAgICAvLyBDbGVhciBzZWxlY3Rpb24gd2hlbiBtb3VzZSBib2FyZCBvdXRzaWRlIGFyZWFcbiAgICAgICAgICAgIC8vIFRoZSBmcmFtZXdvcmsgbmVlZHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGJvYXJkIGlzIGZvY3VzZWQgdGhyb3VnaCBzZWxlY3Rpb25cbiAgICAgICAgICAgIGlmICghaXNJbkJvYXJkICYmICFzdGFydCAmJiAhaXNBdHRhY2hlZEVsZW1lbnQgJiYgaXNJbkRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnQgPSBudWxsO1xuICAgICAgICBlbmQgPSBudWxsO1xuICAgICAgICBuZWVkUHJldmVudE5hdGl2ZVNlbGVjdGlvbldoZW5Nb3ZpbmcgPSBmYWxzZTtcbiAgICAgICAgcHJldmVudFRvdWNoTW92ZShib2FyZCwgZmFsc2UpO1xuICAgICAgICBnbG9iYWxQb2ludGVyVXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5vbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IChib2FyZCBhcyBQbGFpdE9wdGlvbnNCb2FyZCkuZ2V0UGx1Z2luT3B0aW9uczxXaXRoUGx1Z2luT3B0aW9ucz4oUGxhaXRQbHVnaW5LZXkud2l0aFNlbGVjdGlvbik7XG4gICAgICAgIGlmIChvcHRpb25zLmlzRGlzYWJsZWRTZWxlY3QpIHtcbiAgICAgICAgICAgIHNlbGVjdGlvbk91dGVyRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBjbGVhclNlbGVjdGVkRWxlbWVudChib2FyZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjYWxjIHNlbGVjdGVkIGVsZW1lbnRzIGVudHJ5XG4gICAgICAgIGlmIChib2FyZC5wb2ludGVyICE9PSBQbGFpdFBvaW50ZXJUeXBlLmhhbmQgJiYgIW9wdGlvbnMuaXNEaXNhYmxlZFNlbGVjdCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoYm9hcmQub3BlcmF0aW9ucy5maW5kKHZhbHVlID0+IHZhbHVlLnR5cGUgPT09ICdzZXRfc2VsZWN0aW9uJykpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uT3V0ZXJHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVtcG9yYXJ5RWxlbWVudHMgPSBnZXRUZW1wb3JhcnlFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlbGVtZW50cyA9IHRlbXBvcmFyeUVsZW1lbnRzID8gdGVtcG9yYXJ5RWxlbWVudHMgOiBnZXRIaXRFbGVtZW50cyhib2FyZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLmlzTXVsdGlwbGUgJiYgZWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBbZWxlbWVudHNbMF1dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgZWxlbWVudHMpO1xuICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1NlbGVjdGVkRWxlbWVudHMgPSBlbGVtZW50cztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBlbGVtZW50cywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPiAwICYmIGhlaWdodCA+IDAgJiYgZWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uT3V0ZXJHID0gY3JlYXRlU2VsZWN0aW9uT3V0ZXJHKGJvYXJkLCBlbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25PdXRlckcuY2xhc3NMaXN0LmFkZCgnc2VsZWN0aW9uLW91dGVyJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpLmFwcGVuZChzZWxlY3Rpb25PdXRlckcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZVRlbXBvcmFyeUVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyB3YWl0IG5vZGUgZGVzdHJveSBhbmQgcmVtb3ZlIHNlbGVjdGVkIGVsZW1lbnQgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCAmJiBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50Q2hhbmdlID0gY3VycmVudFNlbGVjdGVkRWxlbWVudHMuc29tZShpdGVtID0+ICFwcmV2aW91c1NlbGVjdGVkRWxlbWVudHMuaW5jbHVkZXMoaXRlbSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnRDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uT3V0ZXJHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uT3V0ZXJHID0gY3JlYXRlU2VsZWN0aW9uT3V0ZXJHKGJvYXJkLCBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbk91dGVyRy5jbGFzc0xpc3QuYWRkKCdzZWxlY3Rpb24tb3V0ZXInKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKS5hcHBlbmQoc2VsZWN0aW9uT3V0ZXJHKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbk91dGVyRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2UoKTtcbiAgICB9O1xuXG4gICAgKGJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5zZXRQbHVnaW5PcHRpb25zPFdpdGhQbHVnaW5PcHRpb25zPihQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uLCB7XG4gICAgICAgIGlzTXVsdGlwbGU6IHRydWUsXG4gICAgICAgIGlzRGlzYWJsZWRTZWxlY3Q6IGZhbHNlXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZW1wb3JhcnlFbGVtZW50cyhib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIHJldHVybiBCT0FSRF9UT19URU1QT1JBUllfRUxFTUVOVFMuZ2V0KGJvYXJkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZVRlbXBvcmFyeUVsZW1lbnRzKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgQk9BUkRfVE9fVEVNUE9SQVJZX0VMRU1FTlRTLmRlbGV0ZShib2FyZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NlbGVjdGlvbk1vdmluZyhib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIHJldHVybiAhIUJPQVJEX1RPX0lTX1NFTEVDVElPTl9NT1ZJTkcuZ2V0KGJvYXJkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNlbGVjdGlvbk1vdmluZyhib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGlvbi1tb3ZpbmcnKTtcbiAgICBCT0FSRF9UT19JU19TRUxFQ1RJT05fTU9WSU5HLnNldChib2FyZCwgdHJ1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhclNlbGVjdGlvbk1vdmluZyhib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGlvbi1tb3ZpbmcnKTtcbiAgICBCT0FSRF9UT19JU19TRUxFQ1RJT05fTU9WSU5HLmRlbGV0ZShib2FyZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZWxlY3Rpb25PdXRlckcoYm9hcmQ6IFBsYWl0Qm9hcmQsIHNlbGVjdEVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSkge1xuICAgIGNvbnN0IHsgeCwgeSwgd2lkdGgsIGhlaWdodCB9ID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgc2VsZWN0RWxlbWVudHMsIGZhbHNlKTtcbiAgICBjb25zdCByb3VnaCA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpO1xuICAgIHJldHVybiByb3VnaC5yZWN0YW5nbGUoeCAtIDIuNSwgeSAtIDIuNSwgd2lkdGggKyA1LCBoZWlnaHQgKyA1LCB7XG4gICAgICAgIHN0cm9rZTogU0VMRUNUSU9OX0JPUkRFUl9DT0xPUixcbiAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXG4gICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgIH0pO1xufVxuIl19
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { GeneralTransforms } from './general';
|
|
2
|
-
import { NodeTransforms } from './node';
|
|
3
|
-
import { SelectionTransforms } from './selection';
|
|
4
|
-
import { ViewportTransforms } from './viewport';
|
|
5
|
-
export { BoardTransforms } from './board';
|
|
6
|
-
export const Transforms = {
|
|
7
|
-
...GeneralTransforms,
|
|
8
|
-
...ViewportTransforms,
|
|
9
|
-
...SelectionTransforms,
|
|
10
|
-
...NodeTransforms
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy90cmFuc2Zvcm1zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMxQyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQWtGO0lBQ3JHLEdBQUcsaUJBQWlCO0lBQ3BCLEdBQUcsa0JBQWtCO0lBQ3JCLEdBQUcsbUJBQW1CO0lBQ3RCLEdBQUcsY0FBYztDQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2VuZXJhbFRyYW5zZm9ybXMgfSBmcm9tICcuL2dlbmVyYWwnO1xuaW1wb3J0IHsgTm9kZVRyYW5zZm9ybXMgfSBmcm9tICcuL25vZGUnO1xuaW1wb3J0IHsgU2VsZWN0aW9uVHJhbnNmb3JtcyB9IGZyb20gJy4vc2VsZWN0aW9uJztcbmltcG9ydCB7IFZpZXdwb3J0VHJhbnNmb3JtcyB9IGZyb20gJy4vdmlld3BvcnQnO1xuXG5leHBvcnQgeyBCb2FyZFRyYW5zZm9ybXMgfSBmcm9tICcuL2JvYXJkJztcbmV4cG9ydCBjb25zdCBUcmFuc2Zvcm1zOiBHZW5lcmFsVHJhbnNmb3JtcyAmIFZpZXdwb3J0VHJhbnNmb3JtcyAmIFNlbGVjdGlvblRyYW5zZm9ybXMgJiBOb2RlVHJhbnNmb3JtcyA9IHtcbiAgICAuLi5HZW5lcmFsVHJhbnNmb3JtcyxcbiAgICAuLi5WaWV3cG9ydFRyYW5zZm9ybXMsXG4gICAgLi4uU2VsZWN0aW9uVHJhbnNmb3JtcyxcbiAgICAuLi5Ob2RlVHJhbnNmb3Jtc1xufTtcbiJdfQ==
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { BOARD_TO_TEMPORARY_ELEMENTS } from '../utils/weak-maps';
|
|
2
|
-
export function setSelection(board, selection) {
|
|
3
|
-
const operation = { type: 'set_selection', properties: board.selection, newProperties: selection };
|
|
4
|
-
board.apply(operation);
|
|
5
|
-
}
|
|
6
|
-
export const SelectionTransforms = {
|
|
7
|
-
setSelection,
|
|
8
|
-
setSelectionWithTemporaryElements
|
|
9
|
-
};
|
|
10
|
-
export function setSelectionWithTemporaryElements(board, elements) {
|
|
11
|
-
setTimeout(() => {
|
|
12
|
-
BOARD_TO_TEMPORARY_ELEMENTS.set(board, elements);
|
|
13
|
-
setSelection(board, { ranges: [] });
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdHJhbnNmb3Jtcy9zZWxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHakUsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFpQixFQUFFLFNBQTJCO0lBQ3ZFLE1BQU0sU0FBUyxHQUEwQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQzFILEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQU9ELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUF3QjtJQUNwRCxZQUFZO0lBQ1osaUNBQWlDO0NBQ3BDLENBQUM7QUFHRixNQUFNLFVBQVUsaUNBQWlDLENBQUMsS0FBaUIsRUFBRSxRQUF3QjtJQUN6RixVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ1osMkJBQTJCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNqRCxZQUFZLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2V0U2VsZWN0aW9uT3BlcmF0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9vcGVyYXRpb24nO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgU2VsZWN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgQk9BUkRfVE9fVEVNUE9SQVJZX0VMRU1FTlRTIH0gZnJvbSAnLi4vdXRpbHMvd2Vhay1tYXBzJztcbmltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRTZWxlY3Rpb24oYm9hcmQ6IFBsYWl0Qm9hcmQsIHNlbGVjdGlvbjogU2VsZWN0aW9uIHwgbnVsbCkge1xuICAgIGNvbnN0IG9wZXJhdGlvbjogU2V0U2VsZWN0aW9uT3BlcmF0aW9uID0geyB0eXBlOiAnc2V0X3NlbGVjdGlvbicsIHByb3BlcnRpZXM6IGJvYXJkLnNlbGVjdGlvbiwgbmV3UHJvcGVydGllczogc2VsZWN0aW9uIH07XG4gICAgYm9hcmQuYXBwbHkob3BlcmF0aW9uKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3Rpb25UcmFuc2Zvcm1zIHtcbiAgICBzZXRTZWxlY3Rpb246IChib2FyZDogUGxhaXRCb2FyZCwgc2VsZWN0aW9uOiBTZWxlY3Rpb24gfCBudWxsKSA9PiB2b2lkO1xuICAgIHNldFNlbGVjdGlvbldpdGhUZW1wb3JhcnlFbGVtZW50czogKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50czogUGxhaXRFbGVtZW50W10pID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBTZWxlY3Rpb25UcmFuc2Zvcm1zOiBTZWxlY3Rpb25UcmFuc2Zvcm1zID0ge1xuICAgIHNldFNlbGVjdGlvbixcbiAgICBzZXRTZWxlY3Rpb25XaXRoVGVtcG9yYXJ5RWxlbWVudHNcbn07XG5cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNlbGVjdGlvbldpdGhUZW1wb3JhcnlFbGVtZW50cyhib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIEJPQVJEX1RPX1RFTVBPUkFSWV9FTEVNRU5UUy5zZXQoYm9hcmQsIGVsZW1lbnRzKTtcbiAgICAgICAgc2V0U2VsZWN0aW9uKGJvYXJkLCB7IHJhbmdlczogW10gfSk7XG4gICAgfSk7XG59Il19
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { POINTER_BUTTON } from '../../constants';
|
|
2
|
-
export const NS = 'http://www.w3.org/2000/svg';
|
|
3
|
-
export function toPoint(x, y, container) {
|
|
4
|
-
const rect = container.getBoundingClientRect();
|
|
5
|
-
return [x - rect.x, y - rect.y];
|
|
6
|
-
}
|
|
7
|
-
export function createG() {
|
|
8
|
-
const newG = document.createElementNS(NS, 'g');
|
|
9
|
-
return newG;
|
|
10
|
-
}
|
|
11
|
-
export function createPath() {
|
|
12
|
-
const newG = document.createElementNS(NS, 'path');
|
|
13
|
-
return newG;
|
|
14
|
-
}
|
|
15
|
-
export function createSVG() {
|
|
16
|
-
const svg = document.createElementNS(NS, 'svg');
|
|
17
|
-
return svg;
|
|
18
|
-
}
|
|
19
|
-
export function createText(x, y, fill, textContent) {
|
|
20
|
-
var text = document.createElementNS(NS, 'text');
|
|
21
|
-
text.setAttribute('x', `${x}`);
|
|
22
|
-
text.setAttribute('y', `${y}`);
|
|
23
|
-
text.setAttribute('fill', fill);
|
|
24
|
-
text.textContent = textContent;
|
|
25
|
-
return text;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Check if a DOM node is an element node.
|
|
29
|
-
*/
|
|
30
|
-
export const isDOMElement = (value) => {
|
|
31
|
-
return isDOMNode(value) && value.nodeType === 1;
|
|
32
|
-
};
|
|
33
|
-
/**
|
|
34
|
-
* Check if a value is a DOM node.
|
|
35
|
-
*/
|
|
36
|
-
export const isDOMNode = (value) => {
|
|
37
|
-
return value instanceof window.Node;
|
|
38
|
-
};
|
|
39
|
-
export const hasInputOrTextareaTarget = (target) => {
|
|
40
|
-
if (isDOMElement(target)) {
|
|
41
|
-
if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA') {
|
|
42
|
-
return true;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return false;
|
|
46
|
-
};
|
|
47
|
-
export const isSecondaryPointer = (event) => {
|
|
48
|
-
return event.button === POINTER_BUTTON.SECONDARY;
|
|
49
|
-
};
|
|
50
|
-
export const isMainPointer = (event) => {
|
|
51
|
-
return event.button === POINTER_BUTTON.MAIN;
|
|
52
|
-
};
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdXRpbHMvZG9tL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHakQsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLDRCQUE0QixDQUFDO0FBRS9DLE1BQU0sVUFBVSxPQUFPLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxTQUFxQjtJQUMvRCxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQyxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU87SUFDbkIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDL0MsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVO0lBQ3RCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUztJQUNyQixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRCxPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsSUFBWSxFQUFFLFdBQW1CO0lBQzlFLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDL0IsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBVSxFQUFvQixFQUFFO0lBQ3pELE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBVSxFQUFpQixFQUFFO0lBQ25ELE9BQU8sS0FBSyxZQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDeEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxNQUEwQixFQUFFLEVBQUU7SUFDbkUsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdEIsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBRTtZQUM3RCxPQUFPLElBQUksQ0FBQztTQUNmO0tBQ0o7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUNwRCxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssY0FBYyxDQUFDLFNBQVMsQ0FBQztBQUNyRCxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDL0MsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLGNBQWMsQ0FBQyxJQUFJLENBQUM7QUFDaEQsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUE9JTlRFUl9CVVRUT04gfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BvaW50JztcblxuZXhwb3J0IGNvbnN0IE5TID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRvUG9pbnQoeDogbnVtYmVyLCB5OiBudW1iZXIsIGNvbnRhaW5lcjogU1ZHRWxlbWVudCk6IFBvaW50IHtcbiAgICBjb25zdCByZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHJldHVybiBbeCAtIHJlY3QueCwgeSAtIHJlY3QueV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHKCkge1xuICAgIGNvbnN0IG5ld0cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdnJyk7XG4gICAgcmV0dXJuIG5ld0c7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQYXRoKCkge1xuICAgIGNvbnN0IG5ld0cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdwYXRoJyk7XG4gICAgcmV0dXJuIG5ld0c7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTVkcoKSB7XG4gICAgY29uc3Qgc3ZnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAnc3ZnJyk7XG4gICAgcmV0dXJuIHN2Zztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRleHQoeDogbnVtYmVyLCB5OiBudW1iZXIsIGZpbGw6IHN0cmluZywgdGV4dENvbnRlbnQ6IHN0cmluZykge1xuICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAndGV4dCcpO1xuICAgIHRleHQuc2V0QXR0cmlidXRlKCd4JywgYCR7eH1gKTtcbiAgICB0ZXh0LnNldEF0dHJpYnV0ZSgneScsIGAke3l9YCk7XG4gICAgdGV4dC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCBmaWxsKTtcbiAgICB0ZXh0LnRleHRDb250ZW50ID0gdGV4dENvbnRlbnQ7XG4gICAgcmV0dXJuIHRleHQ7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBET00gbm9kZSBpcyBhbiBlbGVtZW50IG5vZGUuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RPTUVsZW1lbnQgPSAodmFsdWU6IGFueSk6IHZhbHVlIGlzIEVsZW1lbnQgPT4ge1xuICAgIHJldHVybiBpc0RPTU5vZGUodmFsdWUpICYmIHZhbHVlLm5vZGVUeXBlID09PSAxO1xufTtcblxuLyoqXG4gKiBDaGVjayBpZiBhIHZhbHVlIGlzIGEgRE9NIG5vZGUuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RPTU5vZGUgPSAodmFsdWU6IGFueSk6IHZhbHVlIGlzIE5vZGUgPT4ge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIHdpbmRvdy5Ob2RlO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhc0lucHV0T3JUZXh0YXJlYVRhcmdldCA9ICh0YXJnZXQ6IEV2ZW50VGFyZ2V0IHwgbnVsbCkgPT4ge1xuICAgIGlmIChpc0RPTUVsZW1lbnQodGFyZ2V0KSkge1xuICAgICAgICBpZiAodGFyZ2V0LnRhZ05hbWUgPT09ICdJTlBVVCcgfHwgdGFyZ2V0LnRhZ05hbWUgPT09ICdURVhUQVJFQScpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1NlY29uZGFyeVBvaW50ZXIgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICByZXR1cm4gZXZlbnQuYnV0dG9uID09PSBQT0lOVEVSX0JVVFRPTi5TRUNPTkRBUlk7XG59XG5cbmV4cG9ydCBjb25zdCBpc01haW5Qb2ludGVyID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgcmV0dXJuIGV2ZW50LmJ1dHRvbiA9PT0gUE9JTlRFUl9CVVRUT04uTUFJTjtcbn1cbiJdfQ==
|