@plait/core 0.49.0 → 0.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/constants/index.d.ts +0 -1
- package/esm2022/board/board.component.mjs +7 -6
- package/esm2022/constants/index.mjs +1 -2
- package/esm2022/interfaces/board.mjs +1 -1
- package/esm2022/plugins/create-board.mjs +5 -2
- package/esm2022/utils/clipboard/clipboard.mjs +36 -0
- package/esm2022/utils/clipboard/common.mjs +64 -0
- package/esm2022/utils/clipboard/data-transfer.mjs +21 -0
- package/esm2022/utils/clipboard/index.mjs +3 -0
- package/esm2022/utils/clipboard/navigator-clipboard.mjs +73 -0
- package/esm2022/utils/clipboard/types.mjs +6 -0
- package/esm2022/utils/index.mjs +4 -1
- package/fesm2022/plait-core.mjs +194 -42
- package/fesm2022/plait-core.mjs.map +1 -1
- package/interfaces/board.d.ts +3 -2
- package/package.json +1 -1
- package/utils/clipboard/clipboard.d.ts +3 -0
- package/utils/clipboard/common.d.ts +8 -0
- package/utils/clipboard/data-transfer.d.ts +5 -0
- package/utils/clipboard/index.d.ts +2 -0
- package/utils/clipboard/navigator-clipboard.d.ts +3 -0
- package/utils/clipboard/types.d.ts +17 -0
- package/utils/index.d.ts +3 -0
- package/esm2022/utils/clipboard.mjs +0 -45
- package/utils/clipboard.d.ts +0 -8
package/interfaces/board.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ import { PathRef, PathRefOptions } from './path-ref';
|
|
|
14
14
|
import { PlaitNode } from './node';
|
|
15
15
|
import { Path } from './path';
|
|
16
16
|
import { PlaitTheme, ThemeColor } from './theme';
|
|
17
|
+
import { ClipboardData, WritableClipboardContext } from '../utils';
|
|
17
18
|
export interface PlaitBoard {
|
|
18
19
|
viewport: Viewport;
|
|
19
20
|
children: PlaitElement[];
|
|
@@ -37,8 +38,8 @@ export interface PlaitBoard {
|
|
|
37
38
|
keydown: (event: KeyboardEvent) => void;
|
|
38
39
|
globalKeydown: (event: KeyboardEvent) => void;
|
|
39
40
|
keyup: (event: KeyboardEvent) => void;
|
|
40
|
-
setFragment: (data: DataTransfer | null, rectangle: RectangleClient | null, type: 'copy' | 'cut') => void;
|
|
41
|
-
insertFragment: (data: DataTransfer | null, targetPoint: Point) => void;
|
|
41
|
+
setFragment: (data: DataTransfer | null, clipboardContext: WritableClipboardContext | null, rectangle: RectangleClient | null, type: 'copy' | 'cut') => void;
|
|
42
|
+
insertFragment: (data: DataTransfer | null, clipboardData: ClipboardData | null, targetPoint: Point) => void;
|
|
42
43
|
deleteFragment: (data: DataTransfer | null) => void;
|
|
43
44
|
getDeletedFragment: (data: PlaitElement[]) => PlaitElement[];
|
|
44
45
|
getRelatedFragment: (data: PlaitElement[]) => PlaitElement[];
|
package/package.json
CHANGED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { ClipboardData, WritableClipboardContext } from './types';
|
|
2
|
+
export declare const getClipboardData: (dataTransfer: DataTransfer | null) => Promise<ClipboardData>;
|
|
3
|
+
export declare const setClipboardData: (dataTransfer: DataTransfer | null, clipboardContext: WritableClipboardContext | null) => Promise<void>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ClipboardData, WritableClipboardContext, WritableClipboardData, WritableClipboardType } from './types';
|
|
2
|
+
export declare const buildPlaitHtml: (type: WritableClipboardType, data: WritableClipboardData) => string;
|
|
3
|
+
export declare const getClipboardFromHtml: (html: string) => ClipboardData | null;
|
|
4
|
+
export declare const stripHtml: (html: string) => string;
|
|
5
|
+
export declare const getProbablySupportsClipboardWrite: () => boolean;
|
|
6
|
+
export declare const getProbablySupportsClipboardRead: () => boolean;
|
|
7
|
+
export declare const createClipboardContext: (type: WritableClipboardType, data: WritableClipboardData, text: string) => WritableClipboardContext;
|
|
8
|
+
export declare const addClipboardContext: (clipboardContext: WritableClipboardContext, addition: WritableClipboardContext) => WritableClipboardContext;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ClipboardData, WritableClipboardData, WritableClipboardType } from './types';
|
|
2
|
+
export declare const setDataTransferClipboard: (dataTransfer: DataTransfer | null, type: WritableClipboardType, data: WritableClipboardData) => void;
|
|
3
|
+
export declare const setDataTransferClipboardText: (data: DataTransfer | null, text: string) => void;
|
|
4
|
+
export declare const getDataTransferClipboard: (data: DataTransfer | null) => ClipboardData;
|
|
5
|
+
export declare const getDataTransferClipboardText: (data: DataTransfer | null) => string;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { ClipboardData, WritableClipboardData, WritableClipboardType } from './types';
|
|
2
|
+
export declare const setNavigatorClipboard: (type: WritableClipboardType, data: WritableClipboardData, text?: string) => Promise<void>;
|
|
3
|
+
export declare const getNavigatorClipboard: () => Promise<ClipboardData>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { PlaitElement } from '../../interfaces';
|
|
2
|
+
export declare enum WritableClipboardType {
|
|
3
|
+
'medias' = "medias",
|
|
4
|
+
'elements' = "elements"
|
|
5
|
+
}
|
|
6
|
+
export type WritableClipboardData = PlaitElement[] | any[];
|
|
7
|
+
export interface WritableClipboardContext {
|
|
8
|
+
text: string;
|
|
9
|
+
type: WritableClipboardType;
|
|
10
|
+
data: WritableClipboardData;
|
|
11
|
+
}
|
|
12
|
+
export interface ClipboardData {
|
|
13
|
+
files?: File[];
|
|
14
|
+
elements?: PlaitElement[];
|
|
15
|
+
medias?: any[];
|
|
16
|
+
text?: string;
|
|
17
|
+
}
|
package/utils/index.d.ts
CHANGED
|
@@ -18,6 +18,9 @@ export * from './viewport';
|
|
|
18
18
|
export * from './common';
|
|
19
19
|
export * from './moving-element';
|
|
20
20
|
export * from './to-image';
|
|
21
|
+
export * from './clipboard/types';
|
|
22
|
+
export * from './clipboard/clipboard';
|
|
23
|
+
export * from './clipboard/common';
|
|
21
24
|
export * from './clipboard';
|
|
22
25
|
export * from './touch';
|
|
23
26
|
export * from './dnd';
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { CLIP_BOARD_FORMAT_KEY } from '../constants';
|
|
2
|
-
export const getClipboardByKey = (key) => {
|
|
3
|
-
return `application/x-plait-${key}-fragment`;
|
|
4
|
-
};
|
|
5
|
-
export const setClipboardData = (data, elements) => {
|
|
6
|
-
const result = [...elements];
|
|
7
|
-
const pluginContextResult = getDataFromClipboard(data);
|
|
8
|
-
if (pluginContextResult) {
|
|
9
|
-
result.push(...pluginContextResult);
|
|
10
|
-
}
|
|
11
|
-
const stringObj = JSON.stringify(result);
|
|
12
|
-
const encoded = window.btoa(encodeURIComponent(stringObj));
|
|
13
|
-
data?.setData(`application/${CLIP_BOARD_FORMAT_KEY}`, encoded);
|
|
14
|
-
};
|
|
15
|
-
export const setClipboardDataByText = (data, text) => {
|
|
16
|
-
const pluginContextResult = getTextFromClipboard(data);
|
|
17
|
-
data?.setData(`text/plain`, text + '\n' + pluginContextResult);
|
|
18
|
-
};
|
|
19
|
-
export const setClipboardDataByMedia = (data, media, key) => {
|
|
20
|
-
const stringObj = JSON.stringify(media);
|
|
21
|
-
const encoded = window.btoa(encodeURIComponent(stringObj));
|
|
22
|
-
data?.setData(getClipboardByKey(key), encoded);
|
|
23
|
-
};
|
|
24
|
-
export const getDataFromClipboard = (data) => {
|
|
25
|
-
const encoded = data?.getData(`application/${CLIP_BOARD_FORMAT_KEY}`);
|
|
26
|
-
let nodesData = [];
|
|
27
|
-
if (encoded) {
|
|
28
|
-
const decoded = decodeURIComponent(window.atob(encoded));
|
|
29
|
-
nodesData = JSON.parse(decoded);
|
|
30
|
-
}
|
|
31
|
-
return nodesData;
|
|
32
|
-
};
|
|
33
|
-
export const getTextFromClipboard = (data) => {
|
|
34
|
-
return (data ? data.getData(`text/plain`) : '');
|
|
35
|
-
};
|
|
36
|
-
export const getClipboardDataByMedia = (data, key) => {
|
|
37
|
-
const encoded = data?.getData(getClipboardByKey(key));
|
|
38
|
-
let imageItem = null;
|
|
39
|
-
if (encoded) {
|
|
40
|
-
const decoded = decodeURIComponent(window.atob(encoded));
|
|
41
|
-
imageItem = JSON.parse(decoded);
|
|
42
|
-
}
|
|
43
|
-
return imageItem;
|
|
44
|
-
};
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdXRpbHMvY2xpcGJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUdyRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFO0lBQzdDLE9BQU8sdUJBQXVCLEdBQUcsV0FBVyxDQUFDO0FBQ2pELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsSUFBeUIsRUFBRSxRQUF3QixFQUFFLEVBQUU7SUFDcEYsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQzdCLE1BQU0sbUJBQW1CLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkQsSUFBSSxtQkFBbUIsRUFBRTtRQUNyQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsbUJBQW1CLENBQUMsQ0FBQztLQUN2QztJQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzNELElBQUksRUFBRSxPQUFPLENBQUMsZUFBZSxxQkFBcUIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25FLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsSUFBeUIsRUFBRSxJQUFZLEVBQUUsRUFBRTtJQUM5RSxNQUFNLG1CQUFtQixHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZELElBQUksRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsbUJBQW1CLENBQUMsQ0FBQztBQUNuRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFtQixJQUF5QixFQUFFLEtBQVEsRUFBRSxHQUFXLEVBQUUsRUFBRTtJQUMxRyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUMzRCxJQUFJLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25ELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsSUFBeUIsRUFBRSxFQUFFO0lBQzlELE1BQU0sT0FBTyxHQUFHLElBQUksRUFBRSxPQUFPLENBQUMsZUFBZSxxQkFBcUIsRUFBRSxDQUFDLENBQUM7SUFDdEUsSUFBSSxTQUFTLEdBQW1CLEVBQUUsQ0FBQztJQUNuQyxJQUFJLE9BQU8sRUFBRTtRQUNULE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN6RCxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUNuQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsSUFBeUIsRUFBRSxFQUFFO0lBQzlELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBVyxDQUFDO0FBQzlELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsSUFBeUIsRUFBRSxHQUFXLEVBQUUsRUFBRTtJQUM5RSxNQUFNLE9BQU8sR0FBRyxJQUFJLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLElBQUksT0FBTyxFQUFFO1FBQ1QsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3pELFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ25DO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ0xJUF9CT0FSRF9GT1JNQVRfS0VZIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgY29uc3QgZ2V0Q2xpcGJvYXJkQnlLZXkgPSAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gYGFwcGxpY2F0aW9uL3gtcGxhaXQtJHtrZXl9LWZyYWdtZW50YDtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRDbGlwYm9hcmREYXRhID0gKGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwsIGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IFsuLi5lbGVtZW50c107XG4gICAgY29uc3QgcGx1Z2luQ29udGV4dFJlc3VsdCA9IGdldERhdGFGcm9tQ2xpcGJvYXJkKGRhdGEpO1xuICAgIGlmIChwbHVnaW5Db250ZXh0UmVzdWx0KSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKC4uLnBsdWdpbkNvbnRleHRSZXN1bHQpO1xuICAgIH1cbiAgICBjb25zdCBzdHJpbmdPYmogPSBKU09OLnN0cmluZ2lmeShyZXN1bHQpO1xuICAgIGNvbnN0IGVuY29kZWQgPSB3aW5kb3cuYnRvYShlbmNvZGVVUklDb21wb25lbnQoc3RyaW5nT2JqKSk7XG4gICAgZGF0YT8uc2V0RGF0YShgYXBwbGljYXRpb24vJHtDTElQX0JPQVJEX0ZPUk1BVF9LRVl9YCwgZW5jb2RlZCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0Q2xpcGJvYXJkRGF0YUJ5VGV4dCA9IChkYXRhOiBEYXRhVHJhbnNmZXIgfCBudWxsLCB0ZXh0OiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBwbHVnaW5Db250ZXh0UmVzdWx0ID0gZ2V0VGV4dEZyb21DbGlwYm9hcmQoZGF0YSk7XG4gICAgZGF0YT8uc2V0RGF0YShgdGV4dC9wbGFpbmAsIHRleHQgKyAnXFxuJyArIHBsdWdpbkNvbnRleHRSZXN1bHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldENsaXBib2FyZERhdGFCeU1lZGlhID0gPFQgZXh0ZW5kcyBPYmplY3Q+KGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwsIG1lZGlhOiBULCBrZXk6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHN0cmluZ09iaiA9IEpTT04uc3RyaW5naWZ5KG1lZGlhKTtcbiAgICBjb25zdCBlbmNvZGVkID0gd2luZG93LmJ0b2EoZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ09iaikpO1xuICAgIGRhdGE/LnNldERhdGEoZ2V0Q2xpcGJvYXJkQnlLZXkoa2V5KSwgZW5jb2RlZCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGF0YUZyb21DbGlwYm9hcmQgPSAoZGF0YTogRGF0YVRyYW5zZmVyIHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IGVuY29kZWQgPSBkYXRhPy5nZXREYXRhKGBhcHBsaWNhdGlvbi8ke0NMSVBfQk9BUkRfRk9STUFUX0tFWX1gKTtcbiAgICBsZXQgbm9kZXNEYXRhOiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuICAgIGlmIChlbmNvZGVkKSB7XG4gICAgICAgIGNvbnN0IGRlY29kZWQgPSBkZWNvZGVVUklDb21wb25lbnQod2luZG93LmF0b2IoZW5jb2RlZCkpO1xuICAgICAgICBub2Rlc0RhdGEgPSBKU09OLnBhcnNlKGRlY29kZWQpO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZXNEYXRhO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRleHRGcm9tQ2xpcGJvYXJkID0gKGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwpID0+IHtcbiAgICByZXR1cm4gKGRhdGEgPyBkYXRhLmdldERhdGEoYHRleHQvcGxhaW5gKSA6ICcnKSBhcyBzdHJpbmc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q2xpcGJvYXJkRGF0YUJ5TWVkaWEgPSAoZGF0YTogRGF0YVRyYW5zZmVyIHwgbnVsbCwga2V5OiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBlbmNvZGVkID0gZGF0YT8uZ2V0RGF0YShnZXRDbGlwYm9hcmRCeUtleShrZXkpKTtcbiAgICBsZXQgaW1hZ2VJdGVtID0gbnVsbDtcbiAgICBpZiAoZW5jb2RlZCkge1xuICAgICAgICBjb25zdCBkZWNvZGVkID0gZGVjb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5hdG9iKGVuY29kZWQpKTtcbiAgICAgICAgaW1hZ2VJdGVtID0gSlNPTi5wYXJzZShkZWNvZGVkKTtcbiAgICB9XG4gICAgcmV0dXJuIGltYWdlSXRlbTtcbn07XG4iXX0=
|
package/utils/clipboard.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { PlaitElement } from '../interfaces';
|
|
2
|
-
export declare const getClipboardByKey: (key: string) => string;
|
|
3
|
-
export declare const setClipboardData: (data: DataTransfer | null, elements: PlaitElement[]) => void;
|
|
4
|
-
export declare const setClipboardDataByText: (data: DataTransfer | null, text: string) => void;
|
|
5
|
-
export declare const setClipboardDataByMedia: <T extends Object>(data: DataTransfer | null, media: T, key: string) => void;
|
|
6
|
-
export declare const getDataFromClipboard: (data: DataTransfer | null) => PlaitElement[];
|
|
7
|
-
export declare const getTextFromClipboard: (data: DataTransfer | null) => string;
|
|
8
|
-
export declare const getClipboardDataByMedia: (data: DataTransfer | null, key: string) => any;
|