@plait/core 0.23.0 → 0.24.0-next.1
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/constants/index.d.ts +0 -1
- package/esm2020/board/board.component.interface.mjs +1 -1
- package/esm2020/board/board.component.mjs +55 -6
- package/esm2020/constants/index.mjs +1 -2
- package/esm2020/constants/keycodes.mjs +1 -1
- package/esm2020/constants/resize.mjs +1 -1
- package/esm2020/constants/selection.mjs +1 -1
- package/esm2020/core/children/children.component.mjs +1 -1
- package/esm2020/core/children/effect.mjs +1 -1
- package/esm2020/core/element/context-change.mjs +1 -1
- package/esm2020/core/element/context.mjs +1 -1
- package/esm2020/core/element/element.component.mjs +1 -1
- package/esm2020/core/element/plugin-element.mjs +1 -1
- package/esm2020/core/island/island-base.component.mjs +1 -1
- package/esm2020/interfaces/board.mjs +5 -1
- package/esm2020/interfaces/custom-types.mjs +1 -1
- package/esm2020/interfaces/element.mjs +1 -1
- package/esm2020/interfaces/history.mjs +1 -1
- package/esm2020/interfaces/index.mjs +1 -1
- package/esm2020/interfaces/node.mjs +1 -1
- package/esm2020/interfaces/operation.mjs +1 -1
- package/esm2020/interfaces/path-ref.mjs +1 -1
- package/esm2020/interfaces/path.mjs +1 -1
- package/esm2020/interfaces/plugin-key.mjs +1 -1
- package/esm2020/interfaces/plugin.mjs +1 -1
- package/esm2020/interfaces/point.mjs +1 -1
- package/esm2020/interfaces/pointer.mjs +1 -1
- package/esm2020/interfaces/rectangle-client.mjs +1 -1
- package/esm2020/interfaces/selection.mjs +1 -1
- package/esm2020/interfaces/theme.mjs +1 -1
- package/esm2020/interfaces/viewport.mjs +1 -1
- package/esm2020/plait-core.mjs +1 -1
- package/esm2020/plait.module.mjs +1 -1
- package/esm2020/plugins/create-board.mjs +10 -2
- package/esm2020/plugins/with-board.mjs +1 -1
- package/esm2020/plugins/with-hand.mjs +1 -1
- package/esm2020/plugins/with-history.mjs +1 -1
- package/esm2020/plugins/with-hotkey.mjs +1 -1
- package/esm2020/plugins/with-moving.mjs +6 -4
- package/esm2020/plugins/with-options.mjs +1 -1
- package/esm2020/plugins/with-selection.mjs +13 -11
- package/esm2020/plugins/with-viewport.mjs +1 -1
- package/esm2020/public-api.mjs +1 -1
- package/esm2020/services/image-context.service.mjs +1 -1
- package/esm2020/testing/core/create-board.mjs +1 -1
- package/esm2020/testing/core/fake-weak-map.mjs +1 -1
- package/esm2020/testing/core/index.mjs +1 -1
- package/esm2020/testing/fake-events/event-objects.mjs +1 -1
- package/esm2020/testing/fake-events/index.mjs +1 -1
- package/esm2020/testing/index.mjs +1 -1
- package/esm2020/testing/test-element.mjs +1 -1
- package/esm2020/transforms/board.mjs +1 -1
- package/esm2020/transforms/general.mjs +1 -1
- package/esm2020/transforms/index.mjs +1 -1
- package/esm2020/transforms/node.mjs +1 -1
- package/esm2020/transforms/selection.mjs +1 -1
- package/esm2020/transforms/theme.mjs +1 -1
- package/esm2020/transforms/viewport.mjs +1 -1
- package/esm2020/utils/board.mjs +1 -1
- package/esm2020/utils/clipboard.mjs +45 -0
- package/esm2020/utils/common.mjs +1 -1
- package/esm2020/utils/dom/common.mjs +1 -1
- package/esm2020/utils/dom/environment.mjs +1 -1
- package/esm2020/utils/dom/foreign.mjs +1 -1
- package/esm2020/utils/dom/index.mjs +1 -1
- package/esm2020/utils/draw/arrow.mjs +1 -1
- package/esm2020/utils/draw/circle.mjs +1 -1
- package/esm2020/utils/draw/line.mjs +1 -1
- package/esm2020/utils/draw/rectangle.mjs +1 -1
- package/esm2020/utils/element.mjs +1 -1
- package/esm2020/utils/environment.mjs +1 -1
- package/esm2020/utils/helper.mjs +1 -1
- package/esm2020/utils/history.mjs +1 -1
- package/esm2020/utils/hotkeys.mjs +1 -1
- package/esm2020/utils/id-creator.mjs +1 -1
- package/esm2020/utils/index.mjs +3 -1
- package/esm2020/utils/math.mjs +1 -1
- package/esm2020/utils/moving-element.mjs +1 -1
- package/esm2020/utils/selected-element.mjs +1 -1
- package/esm2020/utils/to-image.mjs +1 -1
- package/esm2020/utils/touch.mjs +8 -0
- package/esm2020/utils/tree.mjs +1 -1
- package/esm2020/utils/viewport.mjs +1 -1
- package/esm2020/utils/weak-maps.mjs +2 -1
- package/fesm2015/plait-core.mjs +134 -22
- package/fesm2015/plait-core.mjs.map +1 -1
- package/fesm2020/plait-core.mjs +134 -19
- package/fesm2020/plait-core.mjs.map +1 -1
- package/interfaces/board.d.ts +13 -4
- package/interfaces/operation.d.ts +1 -1
- package/package.json +1 -1
- package/styles/styles.scss +7 -1
- package/utils/clipboard.d.ts +8 -0
- package/utils/index.d.ts +2 -0
- package/utils/touch.d.ts +3 -0
- package/utils/weak-maps.d.ts +1 -0
package/fesm2020/plait-core.mjs
CHANGED
|
@@ -27,6 +27,7 @@ const BOARD_TO_IS_SELECTION_MOVING = new WeakMap();
|
|
|
27
27
|
// save no standard selected elements
|
|
28
28
|
const BOARD_TO_TEMPORARY_ELEMENTS = new WeakMap();
|
|
29
29
|
const BOARD_TO_MOVING_ELEMENT = new WeakMap();
|
|
30
|
+
const IS_PREVENT_TOUCH_MOVE = new WeakMap();
|
|
30
31
|
const PATH_REFS = new WeakMap();
|
|
31
32
|
|
|
32
33
|
function depthFirstRecursion(node, callback, recursion, isReverse) {
|
|
@@ -266,6 +267,10 @@ const PlaitBoard = {
|
|
|
266
267
|
isPointer(board, pointer) {
|
|
267
268
|
return board.pointer === pointer;
|
|
268
269
|
},
|
|
270
|
+
isInPointer(board, pointers) {
|
|
271
|
+
const point = board.pointer;
|
|
272
|
+
return pointers.includes(point);
|
|
273
|
+
},
|
|
269
274
|
getMovingPointInBoard(board) {
|
|
270
275
|
return BOARD_TO_MOVING_POINT_IN_BOARD.get(board);
|
|
271
276
|
},
|
|
@@ -869,7 +874,6 @@ var ResizeCursorClass;
|
|
|
869
874
|
const ATTACHED_ELEMENT_CLASS_NAME = 'plait-board-attached';
|
|
870
875
|
|
|
871
876
|
const CLIP_BOARD_FORMAT_KEY = 'x-plait-fragment';
|
|
872
|
-
const CLIP_BOARD_IMAGE_FORMAT_KEY = 'x-plait-image-fragment';
|
|
873
877
|
const HOST_CLASS_NAME = 'plait-board-container';
|
|
874
878
|
const SCROLL_BAR_WIDTH = 20;
|
|
875
879
|
const MAX_RADIUS = 16;
|
|
@@ -1568,6 +1572,57 @@ function downloadImage(url, name) {
|
|
|
1568
1572
|
a.remove();
|
|
1569
1573
|
}
|
|
1570
1574
|
|
|
1575
|
+
const getClipboardByKey = (key) => {
|
|
1576
|
+
return `application/x-plait-${key}-fragment`;
|
|
1577
|
+
};
|
|
1578
|
+
const setClipboardData = (data, elements) => {
|
|
1579
|
+
const result = [...elements];
|
|
1580
|
+
const pluginContextResult = getDataFromClipboard(data);
|
|
1581
|
+
if (pluginContextResult) {
|
|
1582
|
+
result.push(...pluginContextResult);
|
|
1583
|
+
}
|
|
1584
|
+
const stringObj = JSON.stringify(result);
|
|
1585
|
+
const encoded = window.btoa(encodeURIComponent(stringObj));
|
|
1586
|
+
data?.setData(`application/${CLIP_BOARD_FORMAT_KEY}`, encoded);
|
|
1587
|
+
};
|
|
1588
|
+
const setClipboardDataByText = (data, text) => {
|
|
1589
|
+
const pluginContextResult = getTextFromClipboard(data);
|
|
1590
|
+
data?.setData(`text/plain`, text + '\n' + pluginContextResult);
|
|
1591
|
+
};
|
|
1592
|
+
const setClipboardDataByMedia = (data, media, key) => {
|
|
1593
|
+
const stringObj = JSON.stringify(media);
|
|
1594
|
+
const encoded = window.btoa(encodeURIComponent(stringObj));
|
|
1595
|
+
data?.setData(getClipboardByKey(key), encoded);
|
|
1596
|
+
};
|
|
1597
|
+
const getDataFromClipboard = (data) => {
|
|
1598
|
+
const encoded = data?.getData(`application/${CLIP_BOARD_FORMAT_KEY}`);
|
|
1599
|
+
let nodesData = [];
|
|
1600
|
+
if (encoded) {
|
|
1601
|
+
const decoded = decodeURIComponent(window.atob(encoded));
|
|
1602
|
+
nodesData = JSON.parse(decoded);
|
|
1603
|
+
}
|
|
1604
|
+
return nodesData;
|
|
1605
|
+
};
|
|
1606
|
+
const getTextFromClipboard = (data) => {
|
|
1607
|
+
return (data ? data.getData(`text/plain`) : '');
|
|
1608
|
+
};
|
|
1609
|
+
const getClipboardDataByMedia = (data, key) => {
|
|
1610
|
+
const encoded = data?.getData(getClipboardByKey(key));
|
|
1611
|
+
let imageItem = null;
|
|
1612
|
+
if (encoded) {
|
|
1613
|
+
const decoded = decodeURIComponent(window.atob(encoded));
|
|
1614
|
+
imageItem = JSON.parse(decoded);
|
|
1615
|
+
}
|
|
1616
|
+
return imageItem;
|
|
1617
|
+
};
|
|
1618
|
+
|
|
1619
|
+
const isPreventTouchMove = (board) => {
|
|
1620
|
+
return !!IS_PREVENT_TOUCH_MOVE.get(board);
|
|
1621
|
+
};
|
|
1622
|
+
const preventTouchMove = (board, state) => {
|
|
1623
|
+
IS_PREVENT_TOUCH_MOVE.set(board, state);
|
|
1624
|
+
};
|
|
1625
|
+
|
|
1571
1626
|
const PlaitElement = {
|
|
1572
1627
|
isRootElement(value) {
|
|
1573
1628
|
const parent = NODE_TO_PARENT.get(value);
|
|
@@ -2102,7 +2157,15 @@ function createBoard(children, options) {
|
|
|
2102
2157
|
isRecursion: element => true,
|
|
2103
2158
|
isMovable: element => false,
|
|
2104
2159
|
getRectangle: element => null,
|
|
2105
|
-
applyTheme: (element) => { }
|
|
2160
|
+
applyTheme: (element) => { },
|
|
2161
|
+
pointerDown: (pointer) => { },
|
|
2162
|
+
pointerMove: (pointer) => { },
|
|
2163
|
+
pointerUp: (pointer) => { },
|
|
2164
|
+
pointerCancel: (pointer) => { },
|
|
2165
|
+
pointerOut: (pointer) => { },
|
|
2166
|
+
pointerLeave: (pointer) => { },
|
|
2167
|
+
globalPointerMove: (pointer) => { },
|
|
2168
|
+
globalPointerUp: (pointer) => { },
|
|
2106
2169
|
};
|
|
2107
2170
|
return board;
|
|
2108
2171
|
}
|
|
@@ -2258,7 +2321,7 @@ function withHandPointer(board) {
|
|
|
2258
2321
|
}
|
|
2259
2322
|
|
|
2260
2323
|
function withSelection(board) {
|
|
2261
|
-
const {
|
|
2324
|
+
const { pointerDown, globalPointerMove, globalPointerUp, onChange } = board;
|
|
2262
2325
|
let start = null;
|
|
2263
2326
|
let end = null;
|
|
2264
2327
|
let selectionMovingG;
|
|
@@ -2266,12 +2329,12 @@ function withSelection(board) {
|
|
|
2266
2329
|
let previousSelectedElements;
|
|
2267
2330
|
// prevent text from being selected when user pressed main pointer and is moving
|
|
2268
2331
|
let needPreventNativeSelectionWhenMoving = false;
|
|
2269
|
-
board.
|
|
2332
|
+
board.pointerDown = (event) => {
|
|
2270
2333
|
if (event.target instanceof Element && !event.target.closest('.plait-richtext-container')) {
|
|
2271
2334
|
needPreventNativeSelectionWhenMoving = true;
|
|
2272
2335
|
}
|
|
2273
2336
|
if (!isMainPointer(event)) {
|
|
2274
|
-
|
|
2337
|
+
pointerDown(event);
|
|
2275
2338
|
return;
|
|
2276
2339
|
}
|
|
2277
2340
|
const options = board.getPluginOptions(PlaitPluginKey.withSelection);
|
|
@@ -2280,7 +2343,7 @@ function withSelection(board) {
|
|
|
2280
2343
|
const hitElements = getHitElements(board, { ranges: [range] });
|
|
2281
2344
|
const selectedElements = getSelectedElements(board);
|
|
2282
2345
|
if (hitElements.length === 1 && selectedElements.includes(hitElements[0]) && !options.isDisabledSelect) {
|
|
2283
|
-
|
|
2346
|
+
pointerDown(event);
|
|
2284
2347
|
return;
|
|
2285
2348
|
}
|
|
2286
2349
|
if (PlaitBoard.isPointer(board, PlaitPointerType.selection) &&
|
|
@@ -2288,11 +2351,12 @@ function withSelection(board) {
|
|
|
2288
2351
|
options.isMultiple &&
|
|
2289
2352
|
!options.isDisabledSelect) {
|
|
2290
2353
|
start = point;
|
|
2354
|
+
preventTouchMove(board, true);
|
|
2291
2355
|
}
|
|
2292
2356
|
Transforms.setSelection(board, { ranges: [range] });
|
|
2293
|
-
|
|
2357
|
+
pointerDown(event);
|
|
2294
2358
|
};
|
|
2295
|
-
board.
|
|
2359
|
+
board.globalPointerMove = (event) => {
|
|
2296
2360
|
if (needPreventNativeSelectionWhenMoving) {
|
|
2297
2361
|
// prevent text from being selected
|
|
2298
2362
|
event.preventDefault();
|
|
@@ -2319,9 +2383,9 @@ function withSelection(board) {
|
|
|
2319
2383
|
PlaitBoard.getHost(board).append(selectionMovingG);
|
|
2320
2384
|
}
|
|
2321
2385
|
}
|
|
2322
|
-
|
|
2386
|
+
globalPointerMove(event);
|
|
2323
2387
|
};
|
|
2324
|
-
board.
|
|
2388
|
+
board.globalPointerUp = (event) => {
|
|
2325
2389
|
if (start && end) {
|
|
2326
2390
|
selectionMovingG?.remove();
|
|
2327
2391
|
clearSelectionMoving(board);
|
|
@@ -2340,7 +2404,8 @@ function withSelection(board) {
|
|
|
2340
2404
|
start = null;
|
|
2341
2405
|
end = null;
|
|
2342
2406
|
needPreventNativeSelectionWhenMoving = false;
|
|
2343
|
-
|
|
2407
|
+
preventTouchMove(board, false);
|
|
2408
|
+
globalPointerUp(event);
|
|
2344
2409
|
};
|
|
2345
2410
|
board.onChange = () => {
|
|
2346
2411
|
const options = board.getPluginOptions(PlaitPluginKey.withSelection);
|
|
@@ -2480,7 +2545,7 @@ function withMoving(board) {
|
|
|
2480
2545
|
mousedown(event);
|
|
2481
2546
|
};
|
|
2482
2547
|
board.mousemove = event => {
|
|
2483
|
-
if (startPoint && activeElements
|
|
2548
|
+
if (startPoint && activeElements.length && !PlaitBoard.hasBeenTextEditing(board)) {
|
|
2484
2549
|
if (!isPreventDefault) {
|
|
2485
2550
|
isPreventDefault = true;
|
|
2486
2551
|
}
|
|
@@ -2492,10 +2557,12 @@ function withMoving(board) {
|
|
|
2492
2557
|
if (Math.abs(offsetX) > offsetBuffer || Math.abs(offsetY) > offsetBuffer) {
|
|
2493
2558
|
throttleRAF(() => {
|
|
2494
2559
|
const currentElements = activeElements.map(activeElement => {
|
|
2495
|
-
const
|
|
2560
|
+
const points = activeElement.points || [];
|
|
2561
|
+
const [x, y] = activeElement.points[0];
|
|
2562
|
+
const newPoints = points.map(p => [p[0] + offsetX, p[1] + offsetY]);
|
|
2496
2563
|
const index = board.children.findIndex(item => item.id === activeElement.id);
|
|
2497
2564
|
Transforms.setNode(board, {
|
|
2498
|
-
points:
|
|
2565
|
+
points: newPoints
|
|
2499
2566
|
}, [index]);
|
|
2500
2567
|
MERGING.set(board, true);
|
|
2501
2568
|
return PlaitNode.get(board, [index]);
|
|
@@ -2978,34 +3045,67 @@ class PlaitBoardComponent {
|
|
|
2978
3045
|
.subscribe((event) => {
|
|
2979
3046
|
this.board.mousedown(event);
|
|
2980
3047
|
});
|
|
3048
|
+
fromEvent(this.host, 'pointerdown')
|
|
3049
|
+
.pipe(takeUntil(this.destroy$))
|
|
3050
|
+
.subscribe((event) => {
|
|
3051
|
+
this.board.pointerDown(event);
|
|
3052
|
+
});
|
|
2981
3053
|
fromEvent(this.host, 'mousemove')
|
|
2982
3054
|
.pipe(takeUntil(this.destroy$))
|
|
2983
3055
|
.subscribe((event) => {
|
|
2984
3056
|
BOARD_TO_MOVING_POINT_IN_BOARD.set(this.board, [event.x, event.y]);
|
|
2985
3057
|
this.board.mousemove(event);
|
|
2986
3058
|
});
|
|
3059
|
+
fromEvent(this.host, 'pointermove')
|
|
3060
|
+
.pipe(takeUntil(this.destroy$))
|
|
3061
|
+
.subscribe((event) => {
|
|
3062
|
+
BOARD_TO_MOVING_POINT_IN_BOARD.set(this.board, [event.x, event.y]);
|
|
3063
|
+
this.board.pointerMove(event);
|
|
3064
|
+
});
|
|
2987
3065
|
fromEvent(this.host, 'mouseleave')
|
|
2988
3066
|
.pipe(takeUntil(this.destroy$))
|
|
2989
3067
|
.subscribe((event) => {
|
|
2990
3068
|
BOARD_TO_MOVING_POINT_IN_BOARD.delete(this.board);
|
|
2991
3069
|
this.board.mouseleave(event);
|
|
2992
3070
|
});
|
|
3071
|
+
fromEvent(this.host, 'pointerleave')
|
|
3072
|
+
.pipe(takeUntil(this.destroy$))
|
|
3073
|
+
.subscribe((event) => {
|
|
3074
|
+
BOARD_TO_MOVING_POINT_IN_BOARD.delete(this.board);
|
|
3075
|
+
this.board.pointerLeave(event);
|
|
3076
|
+
});
|
|
2993
3077
|
fromEvent(document, 'mousemove')
|
|
2994
3078
|
.pipe(takeUntil(this.destroy$))
|
|
2995
3079
|
.subscribe((event) => {
|
|
2996
3080
|
BOARD_TO_MOVING_POINT.set(this.board, [event.x, event.y]);
|
|
2997
3081
|
this.board.globalMousemove(event);
|
|
2998
3082
|
});
|
|
3083
|
+
fromEvent(document, 'pointermove')
|
|
3084
|
+
.pipe(takeUntil(this.destroy$))
|
|
3085
|
+
.subscribe((event) => {
|
|
3086
|
+
BOARD_TO_MOVING_POINT.set(this.board, [event.x, event.y]);
|
|
3087
|
+
this.board.globalPointerMove(event);
|
|
3088
|
+
});
|
|
2999
3089
|
fromEvent(this.host, 'mouseup')
|
|
3000
3090
|
.pipe(takeUntil(this.destroy$))
|
|
3001
3091
|
.subscribe((event) => {
|
|
3002
3092
|
this.board.mouseup(event);
|
|
3003
3093
|
});
|
|
3094
|
+
fromEvent(this.host, 'pointerup')
|
|
3095
|
+
.pipe(takeUntil(this.destroy$))
|
|
3096
|
+
.subscribe((event) => {
|
|
3097
|
+
this.board.pointerUp(event);
|
|
3098
|
+
});
|
|
3004
3099
|
fromEvent(document, 'mouseup')
|
|
3005
3100
|
.pipe(takeUntil(this.destroy$))
|
|
3006
3101
|
.subscribe((event) => {
|
|
3007
3102
|
this.board.globalMouseup(event);
|
|
3008
3103
|
});
|
|
3104
|
+
fromEvent(document, 'pointerup')
|
|
3105
|
+
.pipe(takeUntil(this.destroy$))
|
|
3106
|
+
.subscribe((event) => {
|
|
3107
|
+
this.board.globalPointerUp(event);
|
|
3108
|
+
});
|
|
3009
3109
|
fromEvent(this.host, 'dblclick')
|
|
3010
3110
|
.pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.hasBeenTextEditing(this.board)))
|
|
3011
3111
|
.subscribe((event) => {
|
|
@@ -3016,7 +3116,11 @@ class PlaitBoardComponent {
|
|
|
3016
3116
|
this.board.globalKeydown(event);
|
|
3017
3117
|
}), filter(event => this.isFocused && !PlaitBoard.hasBeenTextEditing(this.board) && !hasInputOrTextareaTarget(event.target)))
|
|
3018
3118
|
.subscribe((event) => {
|
|
3019
|
-
this.board
|
|
3119
|
+
const selectedElements = getSelectedElements(this.board);
|
|
3120
|
+
if (selectedElements.length > 0 && (hotkeys.isDeleteBackward(event) || hotkeys.isDeleteForward(event))) {
|
|
3121
|
+
this.board.deleteFragment(null);
|
|
3122
|
+
}
|
|
3123
|
+
this.board.keydown(event);
|
|
3020
3124
|
});
|
|
3021
3125
|
fromEvent(document, 'keyup')
|
|
3022
3126
|
.pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.hasBeenTextEditing(this.board)))
|
|
@@ -3026,8 +3130,10 @@ class PlaitBoardComponent {
|
|
|
3026
3130
|
fromEvent(document, 'copy')
|
|
3027
3131
|
.pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.hasBeenTextEditing(this.board)))
|
|
3028
3132
|
.subscribe((event) => {
|
|
3133
|
+
const selectedElements = getSelectedElements(this.board);
|
|
3029
3134
|
event.preventDefault();
|
|
3030
|
-
this.board
|
|
3135
|
+
const rectangle = getRectangleByElements(this.board, selectedElements, false);
|
|
3136
|
+
this.board.setFragment(event.clipboardData, rectangle);
|
|
3031
3137
|
});
|
|
3032
3138
|
fromEvent(document, 'paste')
|
|
3033
3139
|
.pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.isReadonly(this.board) && !PlaitBoard.hasBeenTextEditing(this.board)))
|
|
@@ -3041,9 +3147,11 @@ class PlaitBoardComponent {
|
|
|
3041
3147
|
fromEvent(document, 'cut')
|
|
3042
3148
|
.pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.isReadonly(this.board) && !PlaitBoard.hasBeenTextEditing(this.board)))
|
|
3043
3149
|
.subscribe((event) => {
|
|
3150
|
+
const selectedElements = getSelectedElements(this.board);
|
|
3044
3151
|
event.preventDefault();
|
|
3045
|
-
this.board
|
|
3046
|
-
this.board
|
|
3152
|
+
const rectangle = getRectangleByElements(this.board, selectedElements, false);
|
|
3153
|
+
this.board.setFragment(event.clipboardData, rectangle);
|
|
3154
|
+
this.board.deleteFragment(event.clipboardData);
|
|
3047
3155
|
});
|
|
3048
3156
|
}
|
|
3049
3157
|
viewportScrollListener() {
|
|
@@ -3068,6 +3176,13 @@ class PlaitBoardComponent {
|
|
|
3068
3176
|
setIsFromScrolling(this.board, true);
|
|
3069
3177
|
});
|
|
3070
3178
|
});
|
|
3179
|
+
this.ngZone.runOutsideAngular(() => {
|
|
3180
|
+
fromEvent(this.viewportContainer.nativeElement, 'touchmove', { passive: false }).subscribe((event) => {
|
|
3181
|
+
if (isPreventTouchMove(this.board)) {
|
|
3182
|
+
event.preventDefault();
|
|
3183
|
+
}
|
|
3184
|
+
});
|
|
3185
|
+
});
|
|
3071
3186
|
}
|
|
3072
3187
|
elementResizeListener() {
|
|
3073
3188
|
this.resizeObserver = new ResizeObserver(() => {
|
|
@@ -3358,5 +3473,5 @@ function createModModifierKeys() {
|
|
|
3358
3473
|
* Generated bundle index. Do not edit.
|
|
3359
3474
|
*/
|
|
3360
3475
|
|
|
3361
|
-
export { A, ALT, APOSTROPHE, ATTACHED_ELEMENT_CLASS_NAME, AT_SIGN, B, BACKSLASH, BACKSPACE, BOARD_TO_COMPONENT, BOARD_TO_ELEMENT_HOST, BOARD_TO_HOST, BOARD_TO_IS_SELECTION_MOVING, BOARD_TO_MOVING_ELEMENT, BOARD_TO_MOVING_POINT, BOARD_TO_MOVING_POINT_IN_BOARD, BOARD_TO_ON_CHANGE, BOARD_TO_ROUGH_SVG, BOARD_TO_SELECTED_ELEMENT, BOARD_TO_TEMPORARY_ELEMENTS, BOARD_TO_VIEWPORT_ORIGINATION, BoardTransforms, C, CAPS_LOCK, CLIP_BOARD_FORMAT_KEY,
|
|
3476
|
+
export { A, ALT, APOSTROPHE, ATTACHED_ELEMENT_CLASS_NAME, AT_SIGN, B, BACKSLASH, BACKSPACE, BOARD_TO_COMPONENT, BOARD_TO_ELEMENT_HOST, BOARD_TO_HOST, BOARD_TO_IS_SELECTION_MOVING, BOARD_TO_MOVING_ELEMENT, BOARD_TO_MOVING_POINT, BOARD_TO_MOVING_POINT_IN_BOARD, BOARD_TO_ON_CHANGE, BOARD_TO_ROUGH_SVG, BOARD_TO_SELECTED_ELEMENT, BOARD_TO_TEMPORARY_ELEMENTS, BOARD_TO_VIEWPORT_ORIGINATION, BoardTransforms, C, CAPS_LOCK, CLIP_BOARD_FORMAT_KEY, CLOSE_SQUARE_BRACKET, COMMA, CONTEXT_MENU, CONTROL, ColorfulThemeColor, D, DASH, DELETE, DOWN_ARROW, DarkThemeColor, DefaultThemeColor, E, EIGHT, ELEMENT_TO_COMPONENT, END, ENTER, EQUALS, ESCAPE, F, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, FF_EQUALS, FF_MINUS, FF_MUTE, FF_SEMICOLON, FF_VOLUME_DOWN, FF_VOLUME_UP, FIRST_MEDIA, FIVE, FLUSHING, FOUR, G, H, HOME, HOST_CLASS_NAME, I, INSERT, IS_APPLE, IS_BOARD_CACHE, IS_CHROME, IS_CHROME_LEGACY, IS_EDGE_LEGACY, IS_FIREFOX, IS_IOS, IS_MAC, IS_PREVENT_TOUCH_MOVE, IS_SAFARI, IS_TEXT_EDITABLE, J, K, L, LAST_MEDIA, LEFT_ARROW, M, MAC_ENTER, MAC_META, MAC_WK_CMD_LEFT, MAC_WK_CMD_RIGHT, MAX_RADIUS, MERGING, META, MUTE, N, NINE, NODE_TO_INDEX, NODE_TO_PARENT, NS, NUMPAD_DIVIDE, NUMPAD_EIGHT, NUMPAD_FIVE, NUMPAD_FOUR, NUMPAD_MINUS, NUMPAD_MULTIPLY, NUMPAD_NINE, NUMPAD_ONE, NUMPAD_PERIOD, NUMPAD_PLUS, NUMPAD_SEVEN, NUMPAD_SIX, NUMPAD_THREE, NUMPAD_TWO, NUMPAD_ZERO, NUM_CENTER, NUM_LOCK, O, ONE, OPEN_SQUARE_BRACKET, P, PAGE_DOWN, PAGE_UP, PATH_REFS, PAUSE, PERIOD, PLUS_SIGN, POINTER_BUTTON, PRESS_AND_MOVE_BUFFER, PRINT_SCREEN, Path, PlaitBoard, PlaitBoardComponent, PlaitChildrenElement, PlaitContextService, PlaitElement, PlaitElementComponent, PlaitHistoryBoard, PlaitIslandBaseComponent, PlaitIslandPopoverBaseComponent, PlaitModule, PlaitNode, PlaitOperation, PlaitPluginElementComponent, PlaitPluginKey, PlaitPointerType, Point, Q, QUESTION_MARK, R, RIGHT_ARROW, RectangleClient, ResizeCursorClass, RetroThemeColor, S, SAVING, SCROLL_BAR_WIDTH, SCROLL_LOCK, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR, SEMICOLON, SEVEN, SHIFT, SINGLE_QUOTE, SIX, SLASH, SPACE, Selection, SoftThemeColor, StarryThemeColor, T, TAB, THREE, TILDE, TWO, ThemeColorMode, ThemeColors, Transforms, U, UP_ARROW, V, VOLUME_DOWN, VOLUME_UP, Viewport, W, X, Y, Z, ZERO, addMovingElements, addSelectedElement, arrowPoints, cacheMovingElements, cacheSelectedElements, clampZoomLevel, clearNodeWeakMap, clearSelectedElement, clearSelectionMoving, clearViewportOrigination, createFakeEvent, createForeignObject, createG, createKeyboardEvent, createModModifierKeys, createMouseEvent, createPath, createPointerEvent, createSVG, createSelectionOuterG, createTestingBoard, createText, createTouchEvent, debounce, deleteTemporaryElements, depthFirstRecursion, distanceBetweenPointAndPoint, distanceBetweenPointAndRectangle, distanceBetweenPointAndSegment, downloadImage, drawArrow, drawBezierPath, drawCircle, drawLine, drawLinearPath, drawRoundRectangle, fakeNodeWeakMap, getBoardRectangle, getClipboardByKey, getClipboardDataByMedia, getDataFromClipboard, getElementHostBBox, getHitElementOfRoot, getHitElements, getIsRecursionFunc, getMovingElements, getRealScrollBarWidth, getRectangleByElements, getSelectedElements, getTemporaryElements, getTextFromClipboard, getViewBox, getViewBoxCenterPoint, getViewportContainerRect, getViewportOrigination, hasBeforeContextChange, hasInputOrTextareaTarget, hasOnBoardChange, hasOnContextChanged, hotkeys, idCreator, initializeViewBox, initializeViewportContainer, initializeViewportOffset, inverse, isDOMElement, isDOMNode, isFromScrolling, isFromViewportChange, isHitElements, isInPlaitBoard, isMainPointer, isNullOrUndefined, isPreventTouchMove, isSecondaryPointer, isSelectedElement, isSelectionMoving, isSetViewportOperation, normalizePoint, preventTouchMove, removeMovingElements, removeSelectedElement, rotate, scrollToRectangle, setClipboardData, setClipboardDataByMedia, setClipboardDataByText, setIsFromScrolling, setIsFromViewportChange, setSVGViewBox, setSelectionMoving, shouldClear, shouldMerge, shouldSave, throttleRAF, toImage, toPoint, transformPoint, transformPoints, updateForeignObject, updateViewportContainerScroll, updateViewportOffset, updateViewportOrigination, withMoving, withOptions, withSelection };
|
|
3362
3477
|
//# sourceMappingURL=plait-core.mjs.map
|