@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/fesm2015/plait-core.mjs
CHANGED
|
@@ -28,6 +28,7 @@ const BOARD_TO_IS_SELECTION_MOVING = new WeakMap();
|
|
|
28
28
|
// save no standard selected elements
|
|
29
29
|
const BOARD_TO_TEMPORARY_ELEMENTS = new WeakMap();
|
|
30
30
|
const BOARD_TO_MOVING_ELEMENT = new WeakMap();
|
|
31
|
+
const IS_PREVENT_TOUCH_MOVE = new WeakMap();
|
|
31
32
|
const PATH_REFS = new WeakMap();
|
|
32
33
|
|
|
33
34
|
function depthFirstRecursion(node, callback, recursion, isReverse) {
|
|
@@ -270,6 +271,10 @@ const PlaitBoard = {
|
|
|
270
271
|
isPointer(board, pointer) {
|
|
271
272
|
return board.pointer === pointer;
|
|
272
273
|
},
|
|
274
|
+
isInPointer(board, pointers) {
|
|
275
|
+
const point = board.pointer;
|
|
276
|
+
return pointers.includes(point);
|
|
277
|
+
},
|
|
273
278
|
getMovingPointInBoard(board) {
|
|
274
279
|
return BOARD_TO_MOVING_POINT_IN_BOARD.get(board);
|
|
275
280
|
},
|
|
@@ -874,7 +879,6 @@ var ResizeCursorClass;
|
|
|
874
879
|
const ATTACHED_ELEMENT_CLASS_NAME = 'plait-board-attached';
|
|
875
880
|
|
|
876
881
|
const CLIP_BOARD_FORMAT_KEY = 'x-plait-fragment';
|
|
877
|
-
const CLIP_BOARD_IMAGE_FORMAT_KEY = 'x-plait-image-fragment';
|
|
878
882
|
const HOST_CLASS_NAME = 'plait-board-container';
|
|
879
883
|
const SCROLL_BAR_WIDTH = 20;
|
|
880
884
|
const MAX_RADIUS = 16;
|
|
@@ -1571,6 +1575,57 @@ function downloadImage(url, name) {
|
|
|
1571
1575
|
a.remove();
|
|
1572
1576
|
}
|
|
1573
1577
|
|
|
1578
|
+
const getClipboardByKey = (key) => {
|
|
1579
|
+
return `application/x-plait-${key}-fragment`;
|
|
1580
|
+
};
|
|
1581
|
+
const setClipboardData = (data, elements) => {
|
|
1582
|
+
const result = [...elements];
|
|
1583
|
+
const pluginContextResult = getDataFromClipboard(data);
|
|
1584
|
+
if (pluginContextResult) {
|
|
1585
|
+
result.push(...pluginContextResult);
|
|
1586
|
+
}
|
|
1587
|
+
const stringObj = JSON.stringify(result);
|
|
1588
|
+
const encoded = window.btoa(encodeURIComponent(stringObj));
|
|
1589
|
+
data === null || data === void 0 ? void 0 : data.setData(`application/${CLIP_BOARD_FORMAT_KEY}`, encoded);
|
|
1590
|
+
};
|
|
1591
|
+
const setClipboardDataByText = (data, text) => {
|
|
1592
|
+
const pluginContextResult = getTextFromClipboard(data);
|
|
1593
|
+
data === null || data === void 0 ? void 0 : data.setData(`text/plain`, text + '\n' + pluginContextResult);
|
|
1594
|
+
};
|
|
1595
|
+
const setClipboardDataByMedia = (data, media, key) => {
|
|
1596
|
+
const stringObj = JSON.stringify(media);
|
|
1597
|
+
const encoded = window.btoa(encodeURIComponent(stringObj));
|
|
1598
|
+
data === null || data === void 0 ? void 0 : data.setData(getClipboardByKey(key), encoded);
|
|
1599
|
+
};
|
|
1600
|
+
const getDataFromClipboard = (data) => {
|
|
1601
|
+
const encoded = data === null || data === void 0 ? void 0 : data.getData(`application/${CLIP_BOARD_FORMAT_KEY}`);
|
|
1602
|
+
let nodesData = [];
|
|
1603
|
+
if (encoded) {
|
|
1604
|
+
const decoded = decodeURIComponent(window.atob(encoded));
|
|
1605
|
+
nodesData = JSON.parse(decoded);
|
|
1606
|
+
}
|
|
1607
|
+
return nodesData;
|
|
1608
|
+
};
|
|
1609
|
+
const getTextFromClipboard = (data) => {
|
|
1610
|
+
return (data ? data.getData(`text/plain`) : '');
|
|
1611
|
+
};
|
|
1612
|
+
const getClipboardDataByMedia = (data, key) => {
|
|
1613
|
+
const encoded = data === null || data === void 0 ? void 0 : data.getData(getClipboardByKey(key));
|
|
1614
|
+
let imageItem = null;
|
|
1615
|
+
if (encoded) {
|
|
1616
|
+
const decoded = decodeURIComponent(window.atob(encoded));
|
|
1617
|
+
imageItem = JSON.parse(decoded);
|
|
1618
|
+
}
|
|
1619
|
+
return imageItem;
|
|
1620
|
+
};
|
|
1621
|
+
|
|
1622
|
+
const isPreventTouchMove = (board) => {
|
|
1623
|
+
return !!IS_PREVENT_TOUCH_MOVE.get(board);
|
|
1624
|
+
};
|
|
1625
|
+
const preventTouchMove = (board, state) => {
|
|
1626
|
+
IS_PREVENT_TOUCH_MOVE.set(board, state);
|
|
1627
|
+
};
|
|
1628
|
+
|
|
1574
1629
|
const PlaitElement = {
|
|
1575
1630
|
isRootElement(value) {
|
|
1576
1631
|
const parent = NODE_TO_PARENT.get(value);
|
|
@@ -2082,7 +2137,15 @@ function createBoard(children, options) {
|
|
|
2082
2137
|
isRecursion: element => true,
|
|
2083
2138
|
isMovable: element => false,
|
|
2084
2139
|
getRectangle: element => null,
|
|
2085
|
-
applyTheme: (element) => { }
|
|
2140
|
+
applyTheme: (element) => { },
|
|
2141
|
+
pointerDown: (pointer) => { },
|
|
2142
|
+
pointerMove: (pointer) => { },
|
|
2143
|
+
pointerUp: (pointer) => { },
|
|
2144
|
+
pointerCancel: (pointer) => { },
|
|
2145
|
+
pointerOut: (pointer) => { },
|
|
2146
|
+
pointerLeave: (pointer) => { },
|
|
2147
|
+
globalPointerMove: (pointer) => { },
|
|
2148
|
+
globalPointerUp: (pointer) => { },
|
|
2086
2149
|
};
|
|
2087
2150
|
return board;
|
|
2088
2151
|
}
|
|
@@ -2238,7 +2301,7 @@ function withHandPointer(board) {
|
|
|
2238
2301
|
}
|
|
2239
2302
|
|
|
2240
2303
|
function withSelection(board) {
|
|
2241
|
-
const {
|
|
2304
|
+
const { pointerDown, globalPointerMove, globalPointerUp, onChange } = board;
|
|
2242
2305
|
let start = null;
|
|
2243
2306
|
let end = null;
|
|
2244
2307
|
let selectionMovingG;
|
|
@@ -2246,12 +2309,12 @@ function withSelection(board) {
|
|
|
2246
2309
|
let previousSelectedElements;
|
|
2247
2310
|
// prevent text from being selected when user pressed main pointer and is moving
|
|
2248
2311
|
let needPreventNativeSelectionWhenMoving = false;
|
|
2249
|
-
board.
|
|
2312
|
+
board.pointerDown = (event) => {
|
|
2250
2313
|
if (event.target instanceof Element && !event.target.closest('.plait-richtext-container')) {
|
|
2251
2314
|
needPreventNativeSelectionWhenMoving = true;
|
|
2252
2315
|
}
|
|
2253
2316
|
if (!isMainPointer(event)) {
|
|
2254
|
-
|
|
2317
|
+
pointerDown(event);
|
|
2255
2318
|
return;
|
|
2256
2319
|
}
|
|
2257
2320
|
const options = board.getPluginOptions(PlaitPluginKey.withSelection);
|
|
@@ -2260,7 +2323,7 @@ function withSelection(board) {
|
|
|
2260
2323
|
const hitElements = getHitElements(board, { ranges: [range] });
|
|
2261
2324
|
const selectedElements = getSelectedElements(board);
|
|
2262
2325
|
if (hitElements.length === 1 && selectedElements.includes(hitElements[0]) && !options.isDisabledSelect) {
|
|
2263
|
-
|
|
2326
|
+
pointerDown(event);
|
|
2264
2327
|
return;
|
|
2265
2328
|
}
|
|
2266
2329
|
if (PlaitBoard.isPointer(board, PlaitPointerType.selection) &&
|
|
@@ -2268,11 +2331,12 @@ function withSelection(board) {
|
|
|
2268
2331
|
options.isMultiple &&
|
|
2269
2332
|
!options.isDisabledSelect) {
|
|
2270
2333
|
start = point;
|
|
2334
|
+
preventTouchMove(board, true);
|
|
2271
2335
|
}
|
|
2272
2336
|
Transforms.setSelection(board, { ranges: [range] });
|
|
2273
|
-
|
|
2337
|
+
pointerDown(event);
|
|
2274
2338
|
};
|
|
2275
|
-
board.
|
|
2339
|
+
board.globalPointerMove = (event) => {
|
|
2276
2340
|
if (needPreventNativeSelectionWhenMoving) {
|
|
2277
2341
|
// prevent text from being selected
|
|
2278
2342
|
event.preventDefault();
|
|
@@ -2299,9 +2363,9 @@ function withSelection(board) {
|
|
|
2299
2363
|
PlaitBoard.getHost(board).append(selectionMovingG);
|
|
2300
2364
|
}
|
|
2301
2365
|
}
|
|
2302
|
-
|
|
2366
|
+
globalPointerMove(event);
|
|
2303
2367
|
};
|
|
2304
|
-
board.
|
|
2368
|
+
board.globalPointerUp = (event) => {
|
|
2305
2369
|
if (start && end) {
|
|
2306
2370
|
selectionMovingG === null || selectionMovingG === void 0 ? void 0 : selectionMovingG.remove();
|
|
2307
2371
|
clearSelectionMoving(board);
|
|
@@ -2320,7 +2384,8 @@ function withSelection(board) {
|
|
|
2320
2384
|
start = null;
|
|
2321
2385
|
end = null;
|
|
2322
2386
|
needPreventNativeSelectionWhenMoving = false;
|
|
2323
|
-
|
|
2387
|
+
preventTouchMove(board, false);
|
|
2388
|
+
globalPointerUp(event);
|
|
2324
2389
|
};
|
|
2325
2390
|
board.onChange = () => {
|
|
2326
2391
|
const options = board.getPluginOptions(PlaitPluginKey.withSelection);
|
|
@@ -2460,7 +2525,7 @@ function withMoving(board) {
|
|
|
2460
2525
|
mousedown(event);
|
|
2461
2526
|
};
|
|
2462
2527
|
board.mousemove = event => {
|
|
2463
|
-
if (startPoint &&
|
|
2528
|
+
if (startPoint && activeElements.length && !PlaitBoard.hasBeenTextEditing(board)) {
|
|
2464
2529
|
if (!isPreventDefault) {
|
|
2465
2530
|
isPreventDefault = true;
|
|
2466
2531
|
}
|
|
@@ -2472,10 +2537,12 @@ function withMoving(board) {
|
|
|
2472
2537
|
if (Math.abs(offsetX) > offsetBuffer || Math.abs(offsetY) > offsetBuffer) {
|
|
2473
2538
|
throttleRAF(() => {
|
|
2474
2539
|
const currentElements = activeElements.map(activeElement => {
|
|
2475
|
-
const
|
|
2540
|
+
const points = activeElement.points || [];
|
|
2541
|
+
const [x, y] = activeElement.points[0];
|
|
2542
|
+
const newPoints = points.map(p => [p[0] + offsetX, p[1] + offsetY]);
|
|
2476
2543
|
const index = board.children.findIndex(item => item.id === activeElement.id);
|
|
2477
2544
|
Transforms.setNode(board, {
|
|
2478
|
-
points:
|
|
2545
|
+
points: newPoints
|
|
2479
2546
|
}, [index]);
|
|
2480
2547
|
MERGING.set(board, true);
|
|
2481
2548
|
return PlaitNode.get(board, [index]);
|
|
@@ -2958,34 +3025,67 @@ class PlaitBoardComponent {
|
|
|
2958
3025
|
.subscribe((event) => {
|
|
2959
3026
|
this.board.mousedown(event);
|
|
2960
3027
|
});
|
|
3028
|
+
fromEvent(this.host, 'pointerdown')
|
|
3029
|
+
.pipe(takeUntil(this.destroy$))
|
|
3030
|
+
.subscribe((event) => {
|
|
3031
|
+
this.board.pointerDown(event);
|
|
3032
|
+
});
|
|
2961
3033
|
fromEvent(this.host, 'mousemove')
|
|
2962
3034
|
.pipe(takeUntil(this.destroy$))
|
|
2963
3035
|
.subscribe((event) => {
|
|
2964
3036
|
BOARD_TO_MOVING_POINT_IN_BOARD.set(this.board, [event.x, event.y]);
|
|
2965
3037
|
this.board.mousemove(event);
|
|
2966
3038
|
});
|
|
3039
|
+
fromEvent(this.host, 'pointermove')
|
|
3040
|
+
.pipe(takeUntil(this.destroy$))
|
|
3041
|
+
.subscribe((event) => {
|
|
3042
|
+
BOARD_TO_MOVING_POINT_IN_BOARD.set(this.board, [event.x, event.y]);
|
|
3043
|
+
this.board.pointerMove(event);
|
|
3044
|
+
});
|
|
2967
3045
|
fromEvent(this.host, 'mouseleave')
|
|
2968
3046
|
.pipe(takeUntil(this.destroy$))
|
|
2969
3047
|
.subscribe((event) => {
|
|
2970
3048
|
BOARD_TO_MOVING_POINT_IN_BOARD.delete(this.board);
|
|
2971
3049
|
this.board.mouseleave(event);
|
|
2972
3050
|
});
|
|
3051
|
+
fromEvent(this.host, 'pointerleave')
|
|
3052
|
+
.pipe(takeUntil(this.destroy$))
|
|
3053
|
+
.subscribe((event) => {
|
|
3054
|
+
BOARD_TO_MOVING_POINT_IN_BOARD.delete(this.board);
|
|
3055
|
+
this.board.pointerLeave(event);
|
|
3056
|
+
});
|
|
2973
3057
|
fromEvent(document, 'mousemove')
|
|
2974
3058
|
.pipe(takeUntil(this.destroy$))
|
|
2975
3059
|
.subscribe((event) => {
|
|
2976
3060
|
BOARD_TO_MOVING_POINT.set(this.board, [event.x, event.y]);
|
|
2977
3061
|
this.board.globalMousemove(event);
|
|
2978
3062
|
});
|
|
3063
|
+
fromEvent(document, 'pointermove')
|
|
3064
|
+
.pipe(takeUntil(this.destroy$))
|
|
3065
|
+
.subscribe((event) => {
|
|
3066
|
+
BOARD_TO_MOVING_POINT.set(this.board, [event.x, event.y]);
|
|
3067
|
+
this.board.globalPointerMove(event);
|
|
3068
|
+
});
|
|
2979
3069
|
fromEvent(this.host, 'mouseup')
|
|
2980
3070
|
.pipe(takeUntil(this.destroy$))
|
|
2981
3071
|
.subscribe((event) => {
|
|
2982
3072
|
this.board.mouseup(event);
|
|
2983
3073
|
});
|
|
3074
|
+
fromEvent(this.host, 'pointerup')
|
|
3075
|
+
.pipe(takeUntil(this.destroy$))
|
|
3076
|
+
.subscribe((event) => {
|
|
3077
|
+
this.board.pointerUp(event);
|
|
3078
|
+
});
|
|
2984
3079
|
fromEvent(document, 'mouseup')
|
|
2985
3080
|
.pipe(takeUntil(this.destroy$))
|
|
2986
3081
|
.subscribe((event) => {
|
|
2987
3082
|
this.board.globalMouseup(event);
|
|
2988
3083
|
});
|
|
3084
|
+
fromEvent(document, 'pointerup')
|
|
3085
|
+
.pipe(takeUntil(this.destroy$))
|
|
3086
|
+
.subscribe((event) => {
|
|
3087
|
+
this.board.globalPointerUp(event);
|
|
3088
|
+
});
|
|
2989
3089
|
fromEvent(this.host, 'dblclick')
|
|
2990
3090
|
.pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.hasBeenTextEditing(this.board)))
|
|
2991
3091
|
.subscribe((event) => {
|
|
@@ -2996,8 +3096,11 @@ class PlaitBoardComponent {
|
|
|
2996
3096
|
this.board.globalKeydown(event);
|
|
2997
3097
|
}), filter(event => this.isFocused && !PlaitBoard.hasBeenTextEditing(this.board) && !hasInputOrTextareaTarget(event.target)))
|
|
2998
3098
|
.subscribe((event) => {
|
|
2999
|
-
|
|
3000
|
-
(
|
|
3099
|
+
const selectedElements = getSelectedElements(this.board);
|
|
3100
|
+
if (selectedElements.length > 0 && (hotkeys.isDeleteBackward(event) || hotkeys.isDeleteForward(event))) {
|
|
3101
|
+
this.board.deleteFragment(null);
|
|
3102
|
+
}
|
|
3103
|
+
this.board.keydown(event);
|
|
3001
3104
|
});
|
|
3002
3105
|
fromEvent(document, 'keyup')
|
|
3003
3106
|
.pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.hasBeenTextEditing(this.board)))
|
|
@@ -3008,9 +3111,10 @@ class PlaitBoardComponent {
|
|
|
3008
3111
|
fromEvent(document, 'copy')
|
|
3009
3112
|
.pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.hasBeenTextEditing(this.board)))
|
|
3010
3113
|
.subscribe((event) => {
|
|
3011
|
-
|
|
3114
|
+
const selectedElements = getSelectedElements(this.board);
|
|
3012
3115
|
event.preventDefault();
|
|
3013
|
-
|
|
3116
|
+
const rectangle = getRectangleByElements(this.board, selectedElements, false);
|
|
3117
|
+
this.board.setFragment(event.clipboardData, rectangle);
|
|
3014
3118
|
});
|
|
3015
3119
|
fromEvent(document, 'paste')
|
|
3016
3120
|
.pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.isReadonly(this.board) && !PlaitBoard.hasBeenTextEditing(this.board)))
|
|
@@ -3024,10 +3128,11 @@ class PlaitBoardComponent {
|
|
|
3024
3128
|
fromEvent(document, 'cut')
|
|
3025
3129
|
.pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.isReadonly(this.board) && !PlaitBoard.hasBeenTextEditing(this.board)))
|
|
3026
3130
|
.subscribe((event) => {
|
|
3027
|
-
|
|
3131
|
+
const selectedElements = getSelectedElements(this.board);
|
|
3028
3132
|
event.preventDefault();
|
|
3029
|
-
|
|
3030
|
-
|
|
3133
|
+
const rectangle = getRectangleByElements(this.board, selectedElements, false);
|
|
3134
|
+
this.board.setFragment(event.clipboardData, rectangle);
|
|
3135
|
+
this.board.deleteFragment(event.clipboardData);
|
|
3031
3136
|
});
|
|
3032
3137
|
}
|
|
3033
3138
|
viewportScrollListener() {
|
|
@@ -3052,6 +3157,13 @@ class PlaitBoardComponent {
|
|
|
3052
3157
|
setIsFromScrolling(this.board, true);
|
|
3053
3158
|
});
|
|
3054
3159
|
});
|
|
3160
|
+
this.ngZone.runOutsideAngular(() => {
|
|
3161
|
+
fromEvent(this.viewportContainer.nativeElement, 'touchmove', { passive: false }).subscribe((event) => {
|
|
3162
|
+
if (isPreventTouchMove(this.board)) {
|
|
3163
|
+
event.preventDefault();
|
|
3164
|
+
}
|
|
3165
|
+
});
|
|
3166
|
+
});
|
|
3055
3167
|
}
|
|
3056
3168
|
elementResizeListener() {
|
|
3057
3169
|
this.resizeObserver = new ResizeObserver(() => {
|
|
@@ -3338,5 +3450,5 @@ function createModModifierKeys() {
|
|
|
3338
3450
|
* Generated bundle index. Do not edit.
|
|
3339
3451
|
*/
|
|
3340
3452
|
|
|
3341
|
-
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,
|
|
3453
|
+
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 };
|
|
3342
3454
|
//# sourceMappingURL=plait-core.mjs.map
|