@plait/core 0.77.3 → 0.78.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/fesm2022/plait-core.mjs.map +1 -1
- package/package.json +1 -3
- package/esm2022/constants/cursor.mjs +0 -13
- package/esm2022/constants/index.mjs +0 -20
- package/esm2022/constants/keycodes.mjs +0 -127
- package/esm2022/constants/selection.mjs +0 -6
- package/esm2022/constants/zoom.mjs +0 -4
- package/esm2022/context.mjs +0 -23
- package/esm2022/core/element/context-change.mjs +0 -13
- package/esm2022/core/element/context.mjs +0 -2
- package/esm2022/core/element/element-flavour.mjs +0 -140
- package/esm2022/core/element/element-ref.mjs +0 -2
- package/esm2022/core/list-render.mjs +0 -217
- package/esm2022/differs/default_iterable_differ.mjs +0 -614
- package/esm2022/differs/iterable_differs.mjs +0 -9
- package/esm2022/interfaces/board.mjs +0 -108
- package/esm2022/interfaces/custom-types.mjs +0 -5
- package/esm2022/interfaces/direction.mjs +0 -8
- package/esm2022/interfaces/element.mjs +0 -43
- package/esm2022/interfaces/group.mjs +0 -6
- package/esm2022/interfaces/history.mjs +0 -5
- package/esm2022/interfaces/index.mjs +0 -19
- package/esm2022/interfaces/node.mjs +0 -57
- package/esm2022/interfaces/operation.mjs +0 -96
- package/esm2022/interfaces/path-ref.mjs +0 -15
- package/esm2022/interfaces/path.mjs +0 -183
- package/esm2022/interfaces/plugin.mjs +0 -6
- package/esm2022/interfaces/point.mjs +0 -27
- package/esm2022/interfaces/pointer.mjs +0 -6
- package/esm2022/interfaces/rectangle-client.mjs +0 -171
- package/esm2022/interfaces/selection.mjs +0 -13
- package/esm2022/interfaces/svg-arc-command.mjs +0 -2
- package/esm2022/interfaces/theme.mjs +0 -49
- package/esm2022/interfaces/viewport.mjs +0 -7
- package/esm2022/plait-core.mjs +0 -5
- package/esm2022/plugins/create-board.mjs +0 -122
- package/esm2022/plugins/index.mjs +0 -11
- package/esm2022/plugins/with-board.mjs +0 -20
- package/esm2022/plugins/with-hand.mjs +0 -113
- package/esm2022/plugins/with-history.mjs +0 -91
- package/esm2022/plugins/with-hotkey.mjs +0 -96
- package/esm2022/plugins/with-i18n.mjs +0 -13
- package/esm2022/plugins/with-moving.mjs +0 -282
- package/esm2022/plugins/with-options.mjs +0 -13
- package/esm2022/plugins/with-related-fragment.mjs +0 -23
- package/esm2022/plugins/with-selection.mjs +0 -230
- package/esm2022/public-api.mjs +0 -16
- package/esm2022/testing/core/create-board.mjs +0 -15
- package/esm2022/testing/core/fake-weak-map.mjs +0 -18
- package/esm2022/testing/core/index.mjs +0 -3
- package/esm2022/testing/fake-events/event-objects.mjs +0 -131
- package/esm2022/testing/fake-events/index.mjs +0 -2
- package/esm2022/testing/index.mjs +0 -3
- package/esm2022/testing/test-element.mjs +0 -9
- package/esm2022/transforms/board.mjs +0 -137
- package/esm2022/transforms/element.mjs +0 -22
- package/esm2022/transforms/general.mjs +0 -146
- package/esm2022/transforms/group.mjs +0 -64
- package/esm2022/transforms/index.mjs +0 -17
- package/esm2022/transforms/node.mjs +0 -37
- package/esm2022/transforms/selection.mjs +0 -26
- package/esm2022/transforms/theme.mjs +0 -8
- package/esm2022/transforms/viewport.mjs +0 -8
- package/esm2022/transforms/z-index.mjs +0 -20
- package/esm2022/utils/angle.mjs +0 -164
- package/esm2022/utils/board.mjs +0 -18
- package/esm2022/utils/clipboard/clipboard.mjs +0 -40
- package/esm2022/utils/clipboard/common.mjs +0 -82
- package/esm2022/utils/clipboard/data-transfer.mjs +0 -33
- package/esm2022/utils/clipboard/index.mjs +0 -3
- package/esm2022/utils/clipboard/navigator-clipboard.mjs +0 -71
- package/esm2022/utils/clipboard/types.mjs +0 -13
- package/esm2022/utils/common.mjs +0 -79
- package/esm2022/utils/debug.mjs +0 -91
- package/esm2022/utils/dnd.mjs +0 -8
- package/esm2022/utils/dom/common.mjs +0 -75
- package/esm2022/utils/dom/environment.mjs +0 -2
- package/esm2022/utils/dom/foreign.mjs +0 -26
- package/esm2022/utils/dom/index.mjs +0 -4
- package/esm2022/utils/drawing/arrow.mjs +0 -23
- package/esm2022/utils/drawing/circle.mjs +0 -4
- package/esm2022/utils/drawing/line.mjs +0 -47
- package/esm2022/utils/drawing/rectangle.mjs +0 -36
- package/esm2022/utils/element.mjs +0 -90
- package/esm2022/utils/environment.mjs +0 -14
- package/esm2022/utils/fragment.mjs +0 -27
- package/esm2022/utils/group.mjs +0 -239
- package/esm2022/utils/helper.mjs +0 -68
- package/esm2022/utils/history.mjs +0 -96
- package/esm2022/utils/hotkeys.mjs +0 -109
- package/esm2022/utils/id-creator.mjs +0 -11
- package/esm2022/utils/index.mjs +0 -35
- package/esm2022/utils/iterable.mjs +0 -32
- package/esm2022/utils/math.mjs +0 -480
- package/esm2022/utils/mobile.mjs +0 -6
- package/esm2022/utils/moving-element.mjs +0 -17
- package/esm2022/utils/pointer.mjs +0 -13
- package/esm2022/utils/position.mjs +0 -9
- package/esm2022/utils/selected-element.mjs +0 -145
- package/esm2022/utils/selection.mjs +0 -151
- package/esm2022/utils/snap/snap-moving.mjs +0 -199
- package/esm2022/utils/snap/snap.mjs +0 -211
- package/esm2022/utils/to-image.mjs +0 -204
- package/esm2022/utils/to-point.mjs +0 -74
- package/esm2022/utils/tree.mjs +0 -22
- package/esm2022/utils/viewport.mjs +0 -227
- package/esm2022/utils/weak-maps.mjs +0 -27
- package/esm2022/utils/z-index.mjs +0 -166
package/esm2022/utils/angle.mjs
DELETED
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
import { PlaitBoard, RectangleClient } from '../interfaces';
|
|
2
|
-
import { Transforms } from '../transforms';
|
|
3
|
-
import { getRectangleByElements } from './element';
|
|
4
|
-
import { approximately, rotate } from './math';
|
|
5
|
-
import { toActiveRectangleFromViewBoxRectangle } from './to-point';
|
|
6
|
-
export const rotatePoints = (points, centerPoint, angle) => {
|
|
7
|
-
if (!angle) {
|
|
8
|
-
angle = 0;
|
|
9
|
-
}
|
|
10
|
-
if (Array.isArray(points) && typeof points[0] === 'number') {
|
|
11
|
-
return rotate(points[0], points[1], centerPoint[0], centerPoint[1], angle);
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
return points.map((point) => {
|
|
15
|
-
return rotate(point[0], point[1], centerPoint[0], centerPoint[1], angle || 0);
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
export const getSelectionAngle = (elements) => {
|
|
20
|
-
let angle = elements[0]?.angle || 0;
|
|
21
|
-
elements.forEach((item) => {
|
|
22
|
-
if (item.angle !== angle && !approximately(((item.angle || 0) % (Math.PI / 2)) - (angle % (Math.PI / 2)), 0)) {
|
|
23
|
-
angle = 0;
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
return angle;
|
|
27
|
-
};
|
|
28
|
-
export const hasSameAngle = (elements) => {
|
|
29
|
-
if (!elements.length) {
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
const angle = elements[0].angle;
|
|
33
|
-
if (angle === undefined) {
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
36
|
-
return !elements.some((item) => item.angle !== angle);
|
|
37
|
-
};
|
|
38
|
-
export const getRotatedBoundingRectangle = (rectanglesCornerPoints, angle) => {
|
|
39
|
-
let rectanglesFromOrigin = [];
|
|
40
|
-
for (let i = 0; i < rectanglesCornerPoints.length; i++) {
|
|
41
|
-
const cornerPoints = rectanglesCornerPoints[i];
|
|
42
|
-
const invertCornerPointsFromOrigin = rotatePoints(cornerPoints, [0, 0], -angle);
|
|
43
|
-
rectanglesFromOrigin.push(RectangleClient.getRectangleByPoints(invertCornerPointsFromOrigin));
|
|
44
|
-
}
|
|
45
|
-
const selectionRectangleFromOrigin = RectangleClient.getBoundingRectangle(rectanglesFromOrigin);
|
|
46
|
-
const selectionCornerPoints = RectangleClient.getCornerPoints(selectionRectangleFromOrigin);
|
|
47
|
-
const cornerPointsFromOrigin = rotatePoints(selectionCornerPoints, [0, 0], angle);
|
|
48
|
-
const centerPoint = RectangleClient.getCenterPoint(RectangleClient.getRectangleByPoints(cornerPointsFromOrigin));
|
|
49
|
-
return RectangleClient.getRectangleByPoints(rotatePoints(cornerPointsFromOrigin, centerPoint, -angle));
|
|
50
|
-
};
|
|
51
|
-
export const getOffsetAfterRotate = (rectangle, rotateCenterPoint, angle) => {
|
|
52
|
-
const targetCenterPoint = RectangleClient.getCenterPoint(rectangle);
|
|
53
|
-
const [rotatedCenterPoint] = rotatePoints([targetCenterPoint], rotateCenterPoint, angle);
|
|
54
|
-
const offsetX = rotatedCenterPoint[0] - targetCenterPoint[0];
|
|
55
|
-
const offsetY = rotatedCenterPoint[1] - targetCenterPoint[1];
|
|
56
|
-
return { offsetX, offsetY };
|
|
57
|
-
};
|
|
58
|
-
export const rotatedDataPoints = (points, rotateCenterPoint, angle) => {
|
|
59
|
-
const { offsetX, offsetY } = getOffsetAfterRotate(RectangleClient.getRectangleByPoints(points), rotateCenterPoint, angle);
|
|
60
|
-
return points.map((p) => [p[0] + offsetX, p[1] + offsetY]);
|
|
61
|
-
};
|
|
62
|
-
export const hasValidAngle = (node) => {
|
|
63
|
-
return isValidAngle(node.angle);
|
|
64
|
-
};
|
|
65
|
-
export const isValidAngle = (angle) => {
|
|
66
|
-
return angle && angle !== 0;
|
|
67
|
-
};
|
|
68
|
-
export const rotatePointsByElement = (points, element) => {
|
|
69
|
-
if (hasValidAngle(element)) {
|
|
70
|
-
let rectangle = RectangleClient.getRectangleByPoints(element.points);
|
|
71
|
-
const centerPoint = RectangleClient.getCenterPoint(rectangle);
|
|
72
|
-
return rotatePoints(points, centerPoint, element.angle);
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
return null;
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
export const rotatePointsByAngle = (points, angle) => {
|
|
79
|
-
if (isValidAngle(angle)) {
|
|
80
|
-
let rectangle = RectangleClient.getRectangleByPoints(points);
|
|
81
|
-
const centerPoint = RectangleClient.getCenterPoint(rectangle);
|
|
82
|
-
return rotatePoints(points, centerPoint, angle);
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
return null;
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
export const rotateAntiPointsByElement = (board, points, element, isToActive = false) => {
|
|
89
|
-
if (hasValidAngle(element)) {
|
|
90
|
-
let rectangle = RectangleClient.getRectangleByPoints(element.points);
|
|
91
|
-
const activeRectangle = isToActive ? toActiveRectangleFromViewBoxRectangle(board, rectangle) : rectangle;
|
|
92
|
-
const centerPoint = RectangleClient.getCenterPoint(activeRectangle);
|
|
93
|
-
return rotatePoints(points, centerPoint, element.angle ? -element.angle : 0);
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
export const getRectangleByAngle = (rectangle, angle) => {
|
|
100
|
-
if (angle) {
|
|
101
|
-
const cornerPoints = RectangleClient.getCornerPoints(rectangle);
|
|
102
|
-
const centerPoint = RectangleClient.getCenterPoint(rectangle);
|
|
103
|
-
return RectangleClient.getRectangleByPoints(rotatePoints(cornerPoints, centerPoint, angle));
|
|
104
|
-
}
|
|
105
|
-
return rectangle;
|
|
106
|
-
};
|
|
107
|
-
export const isAxisChangedByAngle = (angle) => {
|
|
108
|
-
const unitAngle = Math.abs(angle) % Math.PI;
|
|
109
|
-
return unitAngle >= (1 / 4) * Math.PI && unitAngle <= (3 / 4) * Math.PI;
|
|
110
|
-
};
|
|
111
|
-
export function degreesToRadians(d) {
|
|
112
|
-
return (d / 180) * Math.PI;
|
|
113
|
-
}
|
|
114
|
-
export function radiansToDegrees(r) {
|
|
115
|
-
return (r / Math.PI) * 180;
|
|
116
|
-
}
|
|
117
|
-
export function rotateElements(board, elements, angle) {
|
|
118
|
-
const selectionRectangle = getRectangleByElements(board, elements, false);
|
|
119
|
-
const selectionCenterPoint = RectangleClient.getCenterPoint(selectionRectangle);
|
|
120
|
-
elements.forEach((item) => {
|
|
121
|
-
const originAngle = item.angle;
|
|
122
|
-
const points = rotatedDataPoints(item.points, selectionCenterPoint, normalizeAngle(angle));
|
|
123
|
-
const path = PlaitBoard.findPath(board, item);
|
|
124
|
-
Transforms.setNode(board, { points, angle: normalizeAngle((originAngle || 0) + angle) }, path);
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
export const normalizeAngle = (angle) => {
|
|
128
|
-
if (angle < 0) {
|
|
129
|
-
return angle + 2 * Math.PI;
|
|
130
|
-
}
|
|
131
|
-
if (angle >= 2 * Math.PI) {
|
|
132
|
-
return angle - 2 * Math.PI;
|
|
133
|
-
}
|
|
134
|
-
return angle;
|
|
135
|
-
};
|
|
136
|
-
export const getAngleBetweenPoints = (startPoint, endPoint, centerPoint) => {
|
|
137
|
-
const startAngle = (5 * Math.PI) / 2 + Math.atan2(startPoint[1] - centerPoint[1], startPoint[0] - centerPoint[0]);
|
|
138
|
-
const endAngle = (5 * Math.PI) / 2 + Math.atan2(endPoint[1] - centerPoint[1], endPoint[0] - centerPoint[0]);
|
|
139
|
-
return normalizeAngle(endAngle - startAngle);
|
|
140
|
-
};
|
|
141
|
-
export const getAngleByElement = (element) => {
|
|
142
|
-
return element?.angle;
|
|
143
|
-
};
|
|
144
|
-
export const setAngleForG = (g, centerPoint, angle) => {
|
|
145
|
-
if (angle === 0) {
|
|
146
|
-
g.removeAttribute('transform');
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
var centerX = centerPoint[0];
|
|
150
|
-
var centerY = centerPoint[1];
|
|
151
|
-
let cosTheta = Math.cos(angle);
|
|
152
|
-
let sinTheta = Math.sin(angle);
|
|
153
|
-
let transformMatrix = [
|
|
154
|
-
cosTheta,
|
|
155
|
-
sinTheta,
|
|
156
|
-
-sinTheta,
|
|
157
|
-
cosTheta,
|
|
158
|
-
centerX * (1 - cosTheta) + centerY * sinTheta,
|
|
159
|
-
centerY * (1 - cosTheta) - centerX * sinTheta
|
|
160
|
-
];
|
|
161
|
-
let matrix = 'matrix(' + transformMatrix.join(',') + ')';
|
|
162
|
-
g.setAttribute('transform', `${matrix}`);
|
|
163
|
-
};
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5nbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy9hbmdsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUF1QixlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFJLE1BQVMsRUFBRSxXQUFrQixFQUFFLEtBQWMsRUFBSyxFQUFFO0lBQ2hGLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNULEtBQUssR0FBRyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3pELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQU0sQ0FBQztJQUNwRixDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQVEsTUFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNyQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMs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S0FBSyxDQUFDO0FBQzFCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLENBQWMsRUFBRSxXQUFrQixFQUFFLEtBQWEsRUFBRSxFQUFFO0lBQzlFLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQixPQUFPO0lBQ1gsQ0FBQztJQUNELElBQUksT0FBTyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixJQUFJLE9BQU8sR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFN0IsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRS9CLElBQUksZUFBZSxHQUFHO1FBQ2xCLFFBQVE7UUFDUixRQUFRO1FBQ1IsQ0FBQyxRQUFRO1FBQ1QsUUFBUTtRQUNSLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxPQUFPLEdBQUcsUUFBUTtRQUM3QyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsT0FBTyxHQUFHLFFBQVE7S0FDaEQsQ0FBQztJQUVGLElBQUksTUFBTSxHQUFHLFNBQVMsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUN6RCxDQUFDLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBQb2ludCwgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzIH0gZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCB7IGFwcHJveGltYXRlbHksIHJvdGF0ZSB9IGZyb20gJy4vbWF0aCc7XG5pbXBvcnQgeyB0b0FjdGl2ZVJlY3RhbmdsZUZyb21WaWV3Qm94UmVjdGFuZ2xlIH0gZnJvbSAnLi90by1wb2ludCc7XG5cbmV4cG9ydCBjb25zdCByb3RhdGVQb2ludHMgPSA8VD4ocG9pbnRzOiBULCBjZW50ZXJQb2ludDogUG9pbnQsIGFuZ2xlPzogbnVtYmVyKTogVCA9PiB7XG4gICAgaWYgKCFhbmdsZSkge1xuICAgICAgICBhbmdsZSA9IDA7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHBvaW50cykgJiYgdHlwZW9mIHBvaW50c1swXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIHJvdGF0ZShwb2ludHNbMF0sIHBvaW50c1sxXSwgY2VudGVyUG9pbnRbMF0sIGNlbnRlclBvaW50WzFdLCBhbmdsZSkgYXMgVDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gKHBvaW50cyBhcyBQb2ludFtdKS5tYXAoKHBvaW50KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcm90YXRlKHBvaW50WzBdLCBwb2ludFsxXSwgY2VudGVyUG9pbnRbMF0sIGNlbnRlclBvaW50WzFdLCBhbmdsZSB8fCAwKTtcbiAgICAgICAgfSkgYXMgVDtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0aW9uQW5nbGUgPSAoZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgbGV0IGFuZ2xlID0gZWxlbWVudHNbMF0/LmFuZ2xlIHx8IDA7XG4gICAgZWxlbWVudHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpZiAoaXRlbS5hbmdsZSAhPT0gYW5nbGUgJiYgIWFwcHJveGltYXRlbHkoKChpdGVtLmFuZ2xlIHx8IDApICUgKE1hdGguUEkgLyAyKSkgLSAoYW5nbGUgJSAoTWF0aC5QSSAvIDIpKSwgMCkpIHtcbiAgICAgICAgICAgIGFuZ2xlID0gMDtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhbmdsZTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYXNTYW1lQW5nbGUgPSAoZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgaWYgKCFlbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGFuZ2xlID0gZWxlbWVudHNbMF0uYW5nbGU7XG4gICAgaWYgKGFuZ2xlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiAhZWxlbWVudHMuc29tZSgoaXRlbSkgPT4gaXRlbS5hbmdsZSAhPT0gYW5nbGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJvdGF0ZWRCb3VuZGluZ1JlY3RhbmdsZSA9IChyZWN0YW5nbGVzQ29ybmVyUG9pbnRzOiBbUG9pbnQsIFBvaW50LCBQb2ludCwgUG9pbnRdW10sIGFuZ2xlOiBudW1iZXIpID0+IHtcbiAgICBsZXQgcmVjdGFuZ2xlc0Zyb21PcmlnaW46IFJlY3RhbmdsZUNsaWVudFtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZWN0YW5nbGVzQ29ybmVyUG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNvcm5lclBvaW50cyA9IHJlY3RhbmdsZXNDb3JuZXJQb2ludHNbaV07XG4gICAgICAgIGNvbnN0IGludmVydENvcm5lclBvaW50c0Zyb21PcmlnaW4gPSByb3RhdGVQb2ludHMoY29ybmVyUG9pbnRzLCBbMCwgMF0sIC1hbmdsZSk7XG4gICAgICAgIHJlY3RhbmdsZXNGcm9tT3JpZ2luLnB1c2goUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGludmVydENvcm5lclBvaW50c0Zyb21PcmlnaW4pKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3Rpb25SZWN0YW5nbGVGcm9tT3JpZ2luID0gUmVjdGFuZ2xlQ2xpZW50LmdldEJvdW5kaW5nUmVjdGFuZ2xlKHJlY3RhbmdsZXNGcm9tT3JpZ2luKTtcbiAgICBjb25zdCBzZWxlY3Rpb25Db3JuZXJQb2ludHMgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHNlbGVjdGlvblJlY3RhbmdsZUZyb21PcmlnaW4pO1xuICAgIGNvbnN0IGNvcm5lclBvaW50c0Zyb21PcmlnaW4gPSByb3RhdGVQb2ludHMoc2VsZWN0aW9uQ29ybmVyUG9pbnRzLCBbMCwgMF0sIGFuZ2xlKTtcbiAgICBjb25zdCBjZW50ZXJQb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoY29ybmVyUG9pbnRzRnJvbU9yaWdpbikpO1xuICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocm90YXRlUG9pbnRzKGNvcm5lclBvaW50c0Zyb21PcmlnaW4sIGNlbnRlclBvaW50LCAtYW5nbGUpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPZmZzZXRBZnRlclJvdGF0ZSA9IChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcm90YXRlQ2VudGVyUG9pbnQ6IFBvaW50LCBhbmdsZTogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0Q2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQocmVjdGFuZ2xlKTtcbiAgICBjb25zdCBbcm90YXRlZENlbnRlclBvaW50XSA9IHJvdGF0ZVBvaW50cyhbdGFyZ2V0Q2VudGVyUG9pbnRdLCByb3RhdGVDZW50ZXJQb2ludCwgYW5nbGUpO1xuICAgIGNvbnN0IG9mZnNldFggPSByb3RhdGVkQ2VudGVyUG9pbnRbMF0gLSB0YXJnZXRDZW50ZXJQb2ludFswXTtcbiAgICBjb25zdCBvZmZzZXRZID0gcm90YXRlZENlbnRlclBvaW50WzFdIC0gdGFyZ2V0Q2VudGVyUG9pbnRbMV07XG4gICAgcmV0dXJuIHsgb2Zmc2V0WCwgb2Zmc2V0WSB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHJvdGF0ZWREYXRhUG9pbnRzID0gKHBvaW50czogUG9pbnRbXSwgcm90YXRlQ2VudGVyUG9pbnQ6IFBvaW50LCBhbmdsZTogbnVtYmVyKTogUG9pbnRbXSA9PiB7XG4gICAgY29uc3QgeyBvZmZzZXRYLCBvZmZzZXRZIH0gPSBnZXRPZmZzZXRBZnRlclJvdGF0ZShSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKSwgcm90YXRlQ2VudGVyUG9pbnQsIGFuZ2xlKTtcbiAgICByZXR1cm4gcG9pbnRzLm1hcCgocCkgPT4gW3BbMF0gKyBvZmZzZXRYLCBwWzFdICsgb2Zmc2V0WV0pIGFzIFBvaW50W107XG59O1xuXG5leHBvcnQgY29uc3QgaGFzVmFsaWRBbmdsZSA9IChub2RlOiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gaXNWYWxpZEFuZ2xlKG5vZGUuYW5nbGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVmFsaWRBbmdsZSA9IChhbmdsZTogdW5kZWZpbmVkIHwgbnVtYmVyKSA9PiB7XG4gICAgcmV0dXJuIGFuZ2xlICYmIGFuZ2xlICE9PSAwO1xufTtcblxuZXhwb3J0IGNvbnN0IHJvdGF0ZVBvaW50c0J5RWxlbWVudCA9IDxUPihwb2ludHM6IFQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCk6IFQgfCBudWxsID0+IHtcbiAgICBpZiAoaGFzVmFsaWRBbmdsZShlbGVtZW50KSkge1xuICAgICAgICBsZXQgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzISk7XG4gICAgICAgIGNvbnN0IGNlbnRlclBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KHJlY3RhbmdsZSk7XG4gICAgICAgIHJldHVybiByb3RhdGVQb2ludHMocG9pbnRzLCBjZW50ZXJQb2ludCwgZWxlbWVudC5hbmdsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHJvdGF0ZVBvaW50c0J5QW5nbGUgPSAocG9pbnRzOiBQb2ludFtdLCBhbmdsZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogUG9pbnRbXSB8IG51bGwgPT4ge1xuICAgIGlmIChpc1ZhbGlkQW5nbGUoYW5nbGUpKSB7XG4gICAgICAgIGxldCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKTtcbiAgICAgICAgY29uc3QgY2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQocmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIHJvdGF0ZVBvaW50cyhwb2ludHMsIGNlbnRlclBvaW50LCBhbmdsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHJvdGF0ZUFudGlQb2ludHNCeUVsZW1lbnQgPSA8VD4oXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgcG9pbnRzOiBULFxuICAgIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCxcbiAgICBpc1RvQWN0aXZlOiBib29sZWFuID0gZmFsc2Vcbik6IFQgfCBudWxsID0+IHtcbiAgICBpZiAoaGFzVmFsaWRBbmdsZShlbGVtZW50KSkge1xuICAgICAgICBsZXQgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzISk7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVJlY3RhbmdsZSA9IGlzVG9BY3RpdmUgPyB0b0FjdGl2ZVJlY3RhbmdsZUZyb21WaWV3Qm94UmVjdGFuZ2xlKGJvYXJkLCByZWN0YW5nbGUpIDogcmVjdGFuZ2xlO1xuICAgICAgICBjb25zdCBjZW50ZXJQb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChhY3RpdmVSZWN0YW5nbGUpO1xuICAgICAgICByZXR1cm4gcm90YXRlUG9pbnRzKHBvaW50cywgY2VudGVyUG9pbnQsIGVsZW1lbnQuYW5nbGUgPyAtZWxlbWVudC5hbmdsZSA6IDApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWN0YW5nbGVCeUFuZ2xlID0gKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBhbmdsZTogbnVtYmVyKSA9PiB7XG4gICAgaWYgKGFuZ2xlKSB7XG4gICAgICAgIGNvbnN0IGNvcm5lclBvaW50cyA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICAgICAgY29uc3QgY2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQocmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhyb3RhdGVQb2ludHMoY29ybmVyUG9pbnRzLCBjZW50ZXJQb2ludCwgYW5nbGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlY3RhbmdsZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0F4aXNDaGFuZ2VkQnlBbmdsZSA9IChhbmdsZTogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgdW5pdEFuZ2xlID0gTWF0aC5hYnMoYW5nbGUpICUgTWF0aC5QSTtcbiAgICByZXR1cm4gdW5pdEFuZ2xlID49ICgxIC8gNCkgKiBNYXRoLlBJICYmIHVuaXRBbmdsZSA8PSAoMyAvIDQpICogTWF0aC5QSTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWdyZWVzVG9SYWRpYW5zKGQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIChkIC8gMTgwKSAqIE1hdGguUEk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByYWRpYW5zVG9EZWdyZWVzKHI6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIChyIC8gTWF0aC5QSSkgKiAxODA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGVFbGVtZW50cyhib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdLCBhbmdsZTogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgZWxlbWVudHMsIGZhbHNlKTtcbiAgICBjb25zdCBzZWxlY3Rpb25DZW50ZXJQb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChzZWxlY3Rpb25SZWN0YW5nbGUpO1xuICAgIGVsZW1lbnRzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luQW5nbGUgPSBpdGVtLmFuZ2xlO1xuICAgICAgICBjb25zdCBwb2ludHMgPSByb3RhdGVkRGF0YVBvaW50cyhpdGVtLnBvaW50cyEsIHNlbGVjdGlvbkNlbnRlclBvaW50LCBub3JtYWxpemVBbmdsZShhbmdsZSkpO1xuICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgaXRlbSk7XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBwb2ludHMsIGFuZ2xlOiBub3JtYWxpemVBbmdsZSgob3JpZ2luQW5nbGUgfHwgMCkgKyBhbmdsZSkgfSwgcGF0aCk7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCBub3JtYWxpemVBbmdsZSA9IChhbmdsZTogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgICBpZiAoYW5nbGUgPCAwKSB7XG4gICAgICAgIHJldHVybiBhbmdsZSArIDIgKiBNYXRoLlBJO1xuICAgIH1cbiAgICBpZiAoYW5nbGUgPj0gMiAqIE1hdGguUEkpIHtcbiAgICAgICAgcmV0dXJuIGFuZ2xlIC0gMiAqIE1hdGguUEk7XG4gICAgfVxuICAgIHJldHVybiBhbmdsZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBbmdsZUJldHdlZW5Qb2ludHMgPSAoc3RhcnRQb2ludDogUG9pbnQsIGVuZFBvaW50OiBQb2ludCwgY2VudGVyUG9pbnQ6IFBvaW50KTogbnVtYmVyID0+IHtcbiAgICBjb25zdCBzdGFydEFuZ2xlID0gKDUgKiBNYXRoLlBJKSAvIDIgKyBNYXRoLmF0YW4yKHN0YXJ0UG9pbnRbMV0gLSBjZW50ZXJQb2ludFsxXSwgc3RhcnRQb2ludFswXSAtIGNlbnRlclBvaW50WzBdKTtcbiAgICBjb25zdCBlbmRBbmdsZSA9ICg1ICogTWF0aC5QSSkgLyAyICsgTWF0aC5hdGFuMihlbmRQb2ludFsxXSAtIGNlbnRlclBvaW50WzFdLCBlbmRQb2ludFswXSAtIGNlbnRlclBvaW50WzBdKTtcbiAgICByZXR1cm4gbm9ybWFsaXplQW5nbGUoZW5kQW5nbGUgLSBzdGFydEFuZ2xlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBbmdsZUJ5RWxlbWVudCA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpOiBudW1iZXIgfCB1bmRlZmluZWQgPT4ge1xuICAgIHJldHVybiBlbGVtZW50Py5hbmdsZTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRBbmdsZUZvckcgPSAoZzogU1ZHR0VsZW1lbnQsIGNlbnRlclBvaW50OiBQb2ludCwgYW5nbGU6IG51bWJlcikgPT4ge1xuICAgIGlmIChhbmdsZSA9PT0gMCkge1xuICAgICAgICBnLnJlbW92ZUF0dHJpYnV0ZSgndHJhbnNmb3JtJyk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGNlbnRlclggPSBjZW50ZXJQb2ludFswXTtcbiAgICB2YXIgY2VudGVyWSA9IGNlbnRlclBvaW50WzFdO1xuXG4gICAgbGV0IGNvc1RoZXRhID0gTWF0aC5jb3MoYW5nbGUpO1xuICAgIGxldCBzaW5UaGV0YSA9IE1hdGguc2luKGFuZ2xlKTtcblxuICAgIGxldCB0cmFuc2Zvcm1NYXRyaXggPSBbXG4gICAgICAgIGNvc1RoZXRhLFxuICAgICAgICBzaW5UaGV0YSxcbiAgICAgICAgLXNpblRoZXRhLFxuICAgICAgICBjb3NUaGV0YSxcbiAgICAgICAgY2VudGVyWCAqICgxIC0gY29zVGhldGEpICsgY2VudGVyWSAqIHNpblRoZXRhLFxuICAgICAgICBjZW50ZXJZICogKDEgLSBjb3NUaGV0YSkgLSBjZW50ZXJYICogc2luVGhldGFcbiAgICBdO1xuXG4gICAgbGV0IG1hdHJpeCA9ICdtYXRyaXgoJyArIHRyYW5zZm9ybU1hdHJpeC5qb2luKCcsJykgKyAnKSc7XG4gICAgZy5zZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScsIGAke21hdHJpeH1gKTtcbn07XG4iXX0=
|
package/esm2022/utils/board.mjs
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { PlaitBoard } from '../interfaces/board';
|
|
2
|
-
import { distanceBetweenPointAndRectangle } from './math';
|
|
3
|
-
export function isInPlaitBoard(board, x, y) {
|
|
4
|
-
const plaitBoardElement = PlaitBoard.getBoardContainer(board);
|
|
5
|
-
const plaitBoardRect = plaitBoardElement.getBoundingClientRect();
|
|
6
|
-
const distances = distanceBetweenPointAndRectangle(x, y, plaitBoardRect);
|
|
7
|
-
return distances === 0;
|
|
8
|
-
}
|
|
9
|
-
export function getRealScrollBarWidth(board) {
|
|
10
|
-
const { hideScrollbar } = board.options;
|
|
11
|
-
let scrollBarWidth = 0;
|
|
12
|
-
if (!hideScrollbar) {
|
|
13
|
-
const viewportContainer = PlaitBoard.getViewportContainer(board);
|
|
14
|
-
scrollBarWidth = viewportContainer.offsetWidth - viewportContainer.clientWidth;
|
|
15
|
-
}
|
|
16
|
-
return scrollBarWidth;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy9ib2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBVzFELE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBaUIsRUFBRSxDQUFTLEVBQUUsQ0FBUztJQUNsRSxNQUFNLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5RCxNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ2pFLE1BQU0sU0FBUyxHQUFHLGdDQUFnQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDekUsT0FBTyxTQUFTLEtBQUssQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUMsS0FBaUI7SUFDbkQsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDeEMsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNqQixNQUFNLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxjQUFjLEdBQUcsaUJBQWlCLENBQUMsV0FBVyxHQUFHLGlCQUFpQixDQUFDLFdBQVcsQ0FBQztJQUNuRixDQUFDO0lBQ0QsT0FBTyxjQUFjLENBQUM7QUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUmVjdGFuZ2xlIH0gZnJvbSAnLi9tYXRoJztcblxuZXhwb3J0IHR5cGUgVmlld0JveCA9IHtcbiAgICBtaW5YOiBudW1iZXI7XG4gICAgbWluWTogbnVtYmVyO1xuICAgIHdpZHRoOiBudW1iZXI7XG4gICAgaGVpZ2h0OiBudW1iZXI7XG4gICAgdmlld3BvcnRXaWR0aDogbnVtYmVyO1xuICAgIHZpZXdwb3J0SGVpZ2h0OiBudW1iZXI7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaXNJblBsYWl0Qm9hcmQoYm9hcmQ6IFBsYWl0Qm9hcmQsIHg6IG51bWJlciwgeTogbnVtYmVyKSB7XG4gICAgY29uc3QgcGxhaXRCb2FyZEVsZW1lbnQgPSBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKTtcbiAgICBjb25zdCBwbGFpdEJvYXJkUmVjdCA9IHBsYWl0Qm9hcmRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGRpc3RhbmNlcyA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUmVjdGFuZ2xlKHgsIHksIHBsYWl0Qm9hcmRSZWN0KTtcbiAgICByZXR1cm4gZGlzdGFuY2VzID09PSAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVhbFNjcm9sbEJhcldpZHRoKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBoaWRlU2Nyb2xsYmFyIH0gPSBib2FyZC5vcHRpb25zO1xuICAgIGxldCBzY3JvbGxCYXJXaWR0aCA9IDA7XG4gICAgaWYgKCFoaWRlU2Nyb2xsYmFyKSB7XG4gICAgICAgIGNvbnN0IHZpZXdwb3J0Q29udGFpbmVyID0gUGxhaXRCb2FyZC5nZXRWaWV3cG9ydENvbnRhaW5lcihib2FyZCk7XG4gICAgICAgIHNjcm9sbEJhcldpZHRoID0gdmlld3BvcnRDb250YWluZXIub2Zmc2V0V2lkdGggLSB2aWV3cG9ydENvbnRhaW5lci5jbGllbnRXaWR0aDtcbiAgICB9XG4gICAgcmV0dXJuIHNjcm9sbEJhcldpZHRoO1xufVxuIl19
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { buildPlaitHtml, getProbablySupportsClipboardRead, getProbablySupportsClipboardWrite, getProbablySupportsClipboardWriteText } from './common';
|
|
2
|
-
import { getDataTransferClipboard, getDataTransferClipboardText, setDataTransferClipboard, setDataTransferClipboardText } from './data-transfer';
|
|
3
|
-
import { getNavigatorClipboard, setNavigatorClipboard } from './navigator-clipboard';
|
|
4
|
-
export const getClipboardData = async (dataTransfer) => {
|
|
5
|
-
let clipboardData = {};
|
|
6
|
-
if (dataTransfer) {
|
|
7
|
-
if (dataTransfer.files.length) {
|
|
8
|
-
return { files: Array.from(dataTransfer.files) };
|
|
9
|
-
}
|
|
10
|
-
clipboardData = getDataTransferClipboard(dataTransfer);
|
|
11
|
-
if (Object.keys(clipboardData).length === 0) {
|
|
12
|
-
clipboardData = getDataTransferClipboardText(dataTransfer);
|
|
13
|
-
}
|
|
14
|
-
return clipboardData;
|
|
15
|
-
}
|
|
16
|
-
if (getProbablySupportsClipboardRead()) {
|
|
17
|
-
return await getNavigatorClipboard();
|
|
18
|
-
}
|
|
19
|
-
return clipboardData;
|
|
20
|
-
};
|
|
21
|
-
export const setClipboardData = async (dataTransfer, clipboardContext) => {
|
|
22
|
-
if (!clipboardContext) {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
const { type, elements, text } = clipboardContext;
|
|
26
|
-
if (getProbablySupportsClipboardWrite()) {
|
|
27
|
-
return await setNavigatorClipboard(type, elements, text);
|
|
28
|
-
}
|
|
29
|
-
if (dataTransfer) {
|
|
30
|
-
setDataTransferClipboard(dataTransfer, type, elements);
|
|
31
|
-
setDataTransferClipboardText(dataTransfer, text);
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
// Compatible with situations where navigator.clipboard.write is not supported and dataTransfer is empty
|
|
35
|
-
// Such as contextmenu copy in Firefox.
|
|
36
|
-
if (getProbablySupportsClipboardWriteText()) {
|
|
37
|
-
return await navigator.clipboard.writeText(buildPlaitHtml(type, elements));
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdXRpbHMvY2xpcGJvYXJkL2NsaXBib2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsY0FBYyxFQUNkLGdDQUFnQyxFQUNoQyxpQ0FBaUMsRUFDakMscUNBQXFDLEVBQ3hDLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFDSCx3QkFBd0IsRUFDeEIsNEJBQTRCLEVBQzVCLHdCQUF3QixFQUN4Qiw0QkFBNEIsRUFDL0IsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdyRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLEVBQUUsWUFBaUMsRUFBMEIsRUFBRTtJQUNoRyxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDdkIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNmLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDckQsQ0FBQztRQUNELGFBQWEsR0FBRyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2RCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFDLGFBQWEsR0FBRyw0QkFBNEIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUksZ0NBQWdDLEVBQUUsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sTUFBTSxxQkFBcUIsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFDRCxPQUFPLGFBQWEsQ0FBQztBQUN6QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLEVBQUUsWUFBaUMsRUFBRSxnQkFBaUQsRUFBRSxFQUFFO0lBQzNILElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3BCLE9BQU87SUFDWCxDQUFDO0lBQ0QsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsZ0JBQWdCLENBQUM7SUFFbEQsSUFBSSxpQ0FBaUMsRUFBRSxFQUFFLENBQUM7UUFDdEMsT0FBTyxNQUFNLHFCQUFxQixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELElBQUksWUFBWSxFQUFFLENBQUM7UUFDZix3QkFBd0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELDRCQUE0QixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqRCxPQUFPO0lBQ1gsQ0FBQztJQUVELHdHQUF3RztJQUN4Ryx1Q0FBdUM7SUFDdkMsSUFBSSxxQ0FBcUMsRUFBRSxFQUFFLENBQUM7UUFDMUMsT0FBTyxNQUFNLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBidWlsZFBsYWl0SHRtbCxcbiAgICBnZXRQcm9iYWJseVN1cHBvcnRzQ2xpcGJvYXJkUmVhZCxcbiAgICBnZXRQcm9iYWJseVN1cHBvcnRzQ2xpcGJvYXJkV3JpdGUsXG4gICAgZ2V0UHJvYmFibHlTdXBwb3J0c0NsaXBib2FyZFdyaXRlVGV4dFxufSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIGdldERhdGFUcmFuc2ZlckNsaXBib2FyZCxcbiAgICBnZXREYXRhVHJhbnNmZXJDbGlwYm9hcmRUZXh0LFxuICAgIHNldERhdGFUcmFuc2ZlckNsaXBib2FyZCxcbiAgICBzZXREYXRhVHJhbnNmZXJDbGlwYm9hcmRUZXh0XG59IGZyb20gJy4vZGF0YS10cmFuc2Zlcic7XG5pbXBvcnQgeyBnZXROYXZpZ2F0b3JDbGlwYm9hcmQsIHNldE5hdmlnYXRvckNsaXBib2FyZCB9IGZyb20gJy4vbmF2aWdhdG9yLWNsaXBib2FyZCc7XG5pbXBvcnQgeyBDbGlwYm9hcmREYXRhLCBXcml0YWJsZUNsaXBib2FyZENvbnRleHQgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IGdldENsaXBib2FyZERhdGEgPSBhc3luYyAoZGF0YVRyYW5zZmVyOiBEYXRhVHJhbnNmZXIgfCBudWxsKTogUHJvbWlzZTxDbGlwYm9hcmREYXRhPiA9PiB7XG4gICAgbGV0IGNsaXBib2FyZERhdGEgPSB7fTtcbiAgICBpZiAoZGF0YVRyYW5zZmVyKSB7XG4gICAgICAgIGlmIChkYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4geyBmaWxlczogQXJyYXkuZnJvbShkYXRhVHJhbnNmZXIuZmlsZXMpIH07XG4gICAgICAgIH1cbiAgICAgICAgY2xpcGJvYXJkRGF0YSA9IGdldERhdGFUcmFuc2ZlckNsaXBib2FyZChkYXRhVHJhbnNmZXIpO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMoY2xpcGJvYXJkRGF0YSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjbGlwYm9hcmREYXRhID0gZ2V0RGF0YVRyYW5zZmVyQ2xpcGJvYXJkVGV4dChkYXRhVHJhbnNmZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjbGlwYm9hcmREYXRhO1xuICAgIH1cbiAgICBpZiAoZ2V0UHJvYmFibHlTdXBwb3J0c0NsaXBib2FyZFJlYWQoKSkge1xuICAgICAgICByZXR1cm4gYXdhaXQgZ2V0TmF2aWdhdG9yQ2xpcGJvYXJkKCk7XG4gICAgfVxuICAgIHJldHVybiBjbGlwYm9hcmREYXRhO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldENsaXBib2FyZERhdGEgPSBhc3luYyAoZGF0YVRyYW5zZmVyOiBEYXRhVHJhbnNmZXIgfCBudWxsLCBjbGlwYm9hcmRDb250ZXh0OiBXcml0YWJsZUNsaXBib2FyZENvbnRleHQgfCBudWxsKSA9PiB7XG4gICAgaWYgKCFjbGlwYm9hcmRDb250ZXh0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgeyB0eXBlLCBlbGVtZW50cywgdGV4dCB9ID0gY2xpcGJvYXJkQ29udGV4dDtcblxuICAgIGlmIChnZXRQcm9iYWJseVN1cHBvcnRzQ2xpcGJvYXJkV3JpdGUoKSkge1xuICAgICAgICByZXR1cm4gYXdhaXQgc2V0TmF2aWdhdG9yQ2xpcGJvYXJkKHR5cGUsIGVsZW1lbnRzLCB0ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YVRyYW5zZmVyKSB7XG4gICAgICAgIHNldERhdGFUcmFuc2ZlckNsaXBib2FyZChkYXRhVHJhbnNmZXIsIHR5cGUsIGVsZW1lbnRzKTtcbiAgICAgICAgc2V0RGF0YVRyYW5zZmVyQ2xpcGJvYXJkVGV4dChkYXRhVHJhbnNmZXIsIHRleHQpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ29tcGF0aWJsZSB3aXRoIHNpdHVhdGlvbnMgd2hlcmUgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZSBpcyBub3Qgc3VwcG9ydGVkIGFuZCBkYXRhVHJhbnNmZXIgaXMgZW1wdHlcbiAgICAvLyBTdWNoIGFzIGNvbnRleHRtZW51IGNvcHkgaW4gRmlyZWZveC5cbiAgICBpZiAoZ2V0UHJvYmFibHlTdXBwb3J0c0NsaXBib2FyZFdyaXRlVGV4dCgpKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChidWlsZFBsYWl0SHRtbCh0eXBlLCBlbGVtZW50cykpO1xuICAgIH1cbn07XG4iXX0=
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { WritableClipboardType } from './types';
|
|
2
|
-
export const buildPlaitHtml = (type, data) => {
|
|
3
|
-
const stringifiedClipboard = replaceAngleBrackets(JSON.stringify({
|
|
4
|
-
type,
|
|
5
|
-
data
|
|
6
|
-
}));
|
|
7
|
-
return `<plait>${stringifiedClipboard}</plait>`;
|
|
8
|
-
};
|
|
9
|
-
export const getClipboardFromHtml = (html) => {
|
|
10
|
-
let plaitString = html?.match(/<plait[^>]*>(.*)<\/plait>/)?.[1];
|
|
11
|
-
if (plaitString) {
|
|
12
|
-
plaitString = reverseReplaceAngleBrackets(plaitString);
|
|
13
|
-
try {
|
|
14
|
-
const plaitJson = JSON.parse(plaitString);
|
|
15
|
-
if (plaitJson) {
|
|
16
|
-
if (plaitJson.type === WritableClipboardType.elements) {
|
|
17
|
-
return {
|
|
18
|
-
elements: plaitJson.data
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
else if (plaitJson.type === WritableClipboardType.medias) {
|
|
22
|
-
return {
|
|
23
|
-
medias: plaitJson.data
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
catch (error) {
|
|
29
|
-
console.error(error);
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
return null;
|
|
34
|
-
};
|
|
35
|
-
export const stripHtml = (html) => {
|
|
36
|
-
// See <https://github.com/developit/preact-markup/blob/4788b8d61b4e24f83688710746ee36e7464f7bbc/src/parse-markup.js#L60-L69>
|
|
37
|
-
const doc = document.implementation.createHTMLDocument('');
|
|
38
|
-
doc.documentElement.innerHTML = html.trim();
|
|
39
|
-
return doc.body.textContent || doc.body.innerText || '';
|
|
40
|
-
};
|
|
41
|
-
export const getProbablySupportsClipboardWrite = () => {
|
|
42
|
-
return 'clipboard' in navigator && 'write' in navigator.clipboard;
|
|
43
|
-
};
|
|
44
|
-
export const getProbablySupportsClipboardWriteText = () => {
|
|
45
|
-
return 'clipboard' in navigator && 'writeText' in navigator.clipboard;
|
|
46
|
-
};
|
|
47
|
-
export const getProbablySupportsClipboardRead = () => {
|
|
48
|
-
return 'clipboard' in navigator && 'read' in navigator.clipboard;
|
|
49
|
-
};
|
|
50
|
-
export const createClipboardContext = (type, elements, text) => {
|
|
51
|
-
return {
|
|
52
|
-
type,
|
|
53
|
-
elements,
|
|
54
|
-
text
|
|
55
|
-
};
|
|
56
|
-
};
|
|
57
|
-
export const addClipboardContext = (clipboardContext, addition) => {
|
|
58
|
-
const { type, elements, text } = clipboardContext;
|
|
59
|
-
if (type === addition.type) {
|
|
60
|
-
return {
|
|
61
|
-
type,
|
|
62
|
-
elements: elements.concat(addition.elements),
|
|
63
|
-
text: text + ' ' + addition.text
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
return clipboardContext;
|
|
67
|
-
};
|
|
68
|
-
export const addOrCreateClipboardContext = (clipboardContext, addition) => {
|
|
69
|
-
if (!clipboardContext) {
|
|
70
|
-
return addition;
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
return addClipboardContext(clipboardContext, addition);
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
export const replaceAngleBrackets = (str) => {
|
|
77
|
-
return str.replace(/</g, '<').replace(/>/g, '>');
|
|
78
|
-
};
|
|
79
|
-
export const reverseReplaceAngleBrackets = (str) => {
|
|
80
|
-
return str.replace(/</g, '<').replace(/>/g, '>');
|
|
81
|
-
};
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdXRpbHMvY2xpcGJvYXJkL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtFLHFCQUFxQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWhILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQTJCLEVBQUUsSUFBMkIsRUFBRSxFQUFFO0lBQ3ZGLE1BQU0sb0JBQW9CLEdBQUcsb0JBQW9CLENBQzdDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDWCxJQUFJO1FBQ0osSUFBSTtLQUNQLENBQUMsQ0FDTCxDQUFDO0lBQ0YsT0FBTyxVQUFVLG9CQUFvQixVQUFVLENBQUM7QUFDcEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxJQUFZLEVBQXdCLEVBQUU7SUFDdkUsSUFBSSxXQUFXLEdBQUcsSUFBSSxFQUFFLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNkLFdBQVcsR0FBRywyQkFBMkIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUM7WUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzFDLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ1osSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNwRCxPQUFPO3dCQUNILFFBQVEsRUFBRSxTQUFTLENBQUMsSUFBSTtxQkFDM0IsQ0FBQztnQkFDTixDQUFDO3FCQUFNLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDekQsT0FBTzt3QkFDSCxNQUFNLEVBQUUs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QUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2xpcGJvYXJkRGF0YSwgV3JpdGFibGVDbGlwYm9hcmRDb250ZXh0LCBXcml0YWJsZUNsaXBib2FyZERhdGEsIFdyaXRhYmxlQ2xpcGJvYXJkVHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgYnVpbGRQbGFpdEh0bWwgPSAodHlwZTogV3JpdGFibGVDbGlwYm9hcmRUeXBlLCBkYXRhOiBXcml0YWJsZUNsaXBib2FyZERhdGEpID0+IHtcbiAgICBjb25zdCBzdHJpbmdpZmllZENsaXBib2FyZCA9IHJlcGxhY2VBbmdsZUJyYWNrZXRzKFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgZGF0YVxuICAgICAgICB9KVxuICAgICk7XG4gICAgcmV0dXJuIGA8cGxhaXQ+JHtzdHJpbmdpZmllZENsaXBib2FyZH08L3BsYWl0PmA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q2xpcGJvYXJkRnJvbUh0bWwgPSAoaHRtbDogc3RyaW5nKTogQ2xpcGJvYXJkRGF0YSB8IG51bGwgPT4ge1xuICAgIGxldCBwbGFpdFN0cmluZyA9IGh0bWw/Lm1hdGNoKC88cGxhaXRbXj5dKj4oLiopPFxcL3BsYWl0Pi8pPy5bMV07XG4gICAgaWYgKHBsYWl0U3RyaW5nKSB7XG4gICAgICAgIHBsYWl0U3RyaW5nID0gcmV2ZXJzZVJlcGxhY2VBbmdsZUJyYWNrZXRzKHBsYWl0U3RyaW5nKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHBsYWl0SnNvbiA9IEpTT04ucGFyc2UocGxhaXRTdHJpbmcpO1xuICAgICAgICAgICAgaWYgKHBsYWl0SnNvbikge1xuICAgICAgICAgICAgICAgIGlmIChwbGFpdEpzb24udHlwZSA9PT0gV3JpdGFibGVDbGlwYm9hcmRUeXBlLmVsZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50czogcGxhaXRKc29uLmRhdGFcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBsYWl0SnNvbi50eXBlID09PSBXcml0YWJsZUNsaXBib2FyZFR5cGUubWVkaWFzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZWRpYXM6IHBsYWl0SnNvbi5kYXRhXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBzdHJpcEh0bWwgPSAoaHRtbDogc3RyaW5nKSA9PiB7XG4gICAgLy8gU2VlIDxodHRwczovL2dpdGh1Yi5jb20vZGV2ZWxvcGl0L3ByZWFjdC1tYXJrdXAvYmxvYi80Nzg4YjhkNjFiNGUyNGY4MzY4ODcxMDc0NmVlMzZlNzQ2NGY3YmJjL3NyYy9wYXJzZS1tYXJrdXAuanMjTDYwLUw2OT5cbiAgICBjb25zdCBkb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoJycpO1xuICAgIGRvYy5kb2N1bWVudEVsZW1lbnQuaW5uZXJIVE1MID0gaHRtbC50cmltKCk7XG4gICAgcmV0dXJuIGRvYy5ib2R5LnRleHRDb250ZW50IHx8IGRvYy5ib2R5LmlubmVyVGV4dCB8fCAnJztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRQcm9iYWJseVN1cHBvcnRzQ2xpcGJvYXJkV3JpdGUgPSAoKSA9PiB7XG4gICAgcmV0dXJuICdjbGlwYm9hcmQnIGluIG5hdmlnYXRvciAmJiAnd3JpdGUnIGluIG5hdmlnYXRvci5jbGlwYm9hcmQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UHJvYmFibHlTdXBwb3J0c0NsaXBib2FyZFdyaXRlVGV4dCA9ICgpID0+IHtcbiAgICByZXR1cm4gJ2NsaXBib2FyZCcgaW4gbmF2aWdhdG9yICYmICd3cml0ZVRleHQnIGluIG5hdmlnYXRvci5jbGlwYm9hcmQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UHJvYmFibHlTdXBwb3J0c0NsaXBib2FyZFJlYWQgPSAoKSA9PiB7XG4gICAgcmV0dXJuICdjbGlwYm9hcmQnIGluIG5hdmlnYXRvciAmJiAncmVhZCcgaW4gbmF2aWdhdG9yLmNsaXBib2FyZDtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDbGlwYm9hcmRDb250ZXh0ID0gKFxuICAgIHR5cGU6IFdyaXRhYmxlQ2xpcGJvYXJkVHlwZSxcbiAgICBlbGVtZW50czogV3JpdGFibGVDbGlwYm9hcmREYXRhLFxuICAgIHRleHQ6IHN0cmluZ1xuKTogV3JpdGFibGVDbGlwYm9hcmRDb250ZXh0ID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlLFxuICAgICAgICBlbGVtZW50cyxcbiAgICAgICAgdGV4dFxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgYWRkQ2xpcGJvYXJkQ29udGV4dCA9IChcbiAgICBjbGlwYm9hcmRDb250ZXh0OiBXcml0YWJsZUNsaXBib2FyZENvbnRleHQsXG4gICAgYWRkaXRpb246IFdyaXRhYmxlQ2xpcGJvYXJkQ29udGV4dFxuKTogV3JpdGFibGVDbGlwYm9hcmRDb250ZXh0ID0+IHtcbiAgICBjb25zdCB7IHR5cGUsIGVsZW1lbnRzLCB0ZXh0IH0gPSBjbGlwYm9hcmRDb250ZXh0O1xuICAgIGlmICh0eXBlID09PSBhZGRpdGlvbi50eXBlKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgZWxlbWVudHM6IGVsZW1lbnRzLmNvbmNhdChhZGRpdGlvbi5lbGVtZW50cyksXG4gICAgICAgICAgICB0ZXh0OiB0ZXh0ICsgJyAnICsgYWRkaXRpb24udGV4dFxuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gY2xpcGJvYXJkQ29udGV4dDtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRPckNyZWF0ZUNsaXBib2FyZENvbnRleHQgPSAoY2xpcGJvYXJkQ29udGV4dDogV3JpdGFibGVDbGlwYm9hcmRDb250ZXh0IHwgbnVsbCwgYWRkaXRpb246IFdyaXRhYmxlQ2xpcGJvYXJkQ29udGV4dCkgPT4ge1xuICAgIGlmICghY2xpcGJvYXJkQ29udGV4dCkge1xuICAgICAgICByZXR1cm4gYWRkaXRpb247XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGFkZENsaXBib2FyZENvbnRleHQoY2xpcGJvYXJkQ29udGV4dCwgYWRkaXRpb24pO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCByZXBsYWNlQW5nbGVCcmFja2V0cyA9IChzdHI6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4vZywgJyZndDsnKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXZlcnNlUmVwbGFjZUFuZ2xlQnJhY2tldHMgPSAoc3RyOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoLyZsdDsvZywgJzwnKS5yZXBsYWNlKC8mZ3Q7L2csICc+Jyk7XG59O1xuIl19
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { buildPlaitHtml, getClipboardFromHtml } from './common';
|
|
2
|
-
export const setDataTransferClipboard = (dataTransfer, type, data) => {
|
|
3
|
-
dataTransfer?.setData(`text/html`, buildPlaitHtml(type, data));
|
|
4
|
-
};
|
|
5
|
-
export const setDataTransferClipboardText = (data, text) => {
|
|
6
|
-
data?.setData(`text/plain`, text);
|
|
7
|
-
};
|
|
8
|
-
export const getDataTransferClipboard = (data) => {
|
|
9
|
-
const html = data?.getData(`text/html`);
|
|
10
|
-
if (html) {
|
|
11
|
-
const htmlClipboardData = getClipboardFromHtml(html);
|
|
12
|
-
if (htmlClipboardData) {
|
|
13
|
-
return htmlClipboardData;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
return {};
|
|
17
|
-
};
|
|
18
|
-
export const getDataTransferClipboardText = (data) => {
|
|
19
|
-
if (!data) {
|
|
20
|
-
return {};
|
|
21
|
-
}
|
|
22
|
-
const text = data?.getData(`text/plain`);
|
|
23
|
-
if (text) {
|
|
24
|
-
const htmlClipboardData = getClipboardFromHtml(text);
|
|
25
|
-
if (htmlClipboardData) {
|
|
26
|
-
return htmlClipboardData;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
return {
|
|
30
|
-
text
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10cmFuc2Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3V0aWxzL2NsaXBib2FyZC9kYXRhLXRyYW5zZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHaEUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxZQUFpQyxFQUFFLElBQTJCLEVBQUUsSUFBMkIsRUFBRSxFQUFFO0lBQ3BJLFlBQVksRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNuRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLElBQXlCLEVBQUUsSUFBWSxFQUFFLEVBQUU7SUFDcEYsSUFBSSxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxJQUF5QixFQUFpQixFQUFFO0lBQ2pGLE1BQU0sSUFBSSxHQUFHLElBQUksRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNQLE1BQU0saUJBQWlCLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckQsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLE9BQU8saUJBQWlCLENBQUM7UUFDN0IsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLEVBQUUsQ0FBQztBQUNkLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUMsSUFBeUIsRUFBRSxFQUFFO0lBQ3RFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLElBQUksRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNQLE1BQU0saUJBQWlCLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckQsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLE9BQU8saUJBQWlCLENBQUM7UUFDN0IsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPO1FBQ0gsSUFBSTtLQUNQLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBidWlsZFBsYWl0SHRtbCwgZ2V0Q2xpcGJvYXJkRnJvbUh0bWwgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBDbGlwYm9hcmREYXRhLCBXcml0YWJsZUNsaXBib2FyZERhdGEsIFdyaXRhYmxlQ2xpcGJvYXJkVHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3Qgc2V0RGF0YVRyYW5zZmVyQ2xpcGJvYXJkID0gKGRhdGFUcmFuc2ZlcjogRGF0YVRyYW5zZmVyIHwgbnVsbCwgdHlwZTogV3JpdGFibGVDbGlwYm9hcmRUeXBlLCBkYXRhOiBXcml0YWJsZUNsaXBib2FyZERhdGEpID0+IHtcbiAgICBkYXRhVHJhbnNmZXI/LnNldERhdGEoYHRleHQvaHRtbGAsIGJ1aWxkUGxhaXRIdG1sKHR5cGUsIGRhdGEpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXREYXRhVHJhbnNmZXJDbGlwYm9hcmRUZXh0ID0gKGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwsIHRleHQ6IHN0cmluZykgPT4ge1xuICAgIGRhdGE/LnNldERhdGEoYHRleHQvcGxhaW5gLCB0ZXh0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREYXRhVHJhbnNmZXJDbGlwYm9hcmQgPSAoZGF0YTogRGF0YVRyYW5zZmVyIHwgbnVsbCk6IENsaXBib2FyZERhdGEgPT4ge1xuICAgIGNvbnN0IGh0bWwgPSBkYXRhPy5nZXREYXRhKGB0ZXh0L2h0bWxgKTtcbiAgICBpZiAoaHRtbCkge1xuICAgICAgICBjb25zdCBodG1sQ2xpcGJvYXJkRGF0YSA9IGdldENsaXBib2FyZEZyb21IdG1sKGh0bWwpO1xuICAgICAgICBpZiAoaHRtbENsaXBib2FyZERhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBodG1sQ2xpcGJvYXJkRGF0YTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7fTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREYXRhVHJhbnNmZXJDbGlwYm9hcmRUZXh0ID0gKGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwpID0+IHtcbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCB0ZXh0ID0gZGF0YT8uZ2V0RGF0YShgdGV4dC9wbGFpbmApO1xuICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGNvbnN0IGh0bWxDbGlwYm9hcmREYXRhID0gZ2V0Q2xpcGJvYXJkRnJvbUh0bWwodGV4dCk7XG4gICAgICAgIGlmIChodG1sQ2xpcGJvYXJkRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIGh0bWxDbGlwYm9hcmREYXRhO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHRleHRcbiAgICB9O1xufTtcbiJdfQ==
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from './data-transfer';
|
|
2
|
-
export * from './types';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy9jbGlwYm9hcmQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGF0YS10cmFuc2Zlcic7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbiJdfQ==
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { buildPlaitHtml, getClipboardFromHtml, getProbablySupportsClipboardRead, getProbablySupportsClipboardWrite, stripHtml } from './common';
|
|
2
|
-
export const setNavigatorClipboard = async (type, data, text = '') => {
|
|
3
|
-
let textClipboard = text;
|
|
4
|
-
if (getProbablySupportsClipboardWrite()) {
|
|
5
|
-
await navigator.clipboard.write([
|
|
6
|
-
new ClipboardItem({
|
|
7
|
-
'text/html': new Blob([buildPlaitHtml(type, data)], {
|
|
8
|
-
type: 'text/html'
|
|
9
|
-
}),
|
|
10
|
-
'text/plain': new Blob([textClipboard ?? JSON.stringify(data)], { type: 'text/plain' })
|
|
11
|
-
})
|
|
12
|
-
]);
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
export const getNavigatorClipboard = async () => {
|
|
16
|
-
if (!getProbablySupportsClipboardRead()) {
|
|
17
|
-
return {};
|
|
18
|
-
}
|
|
19
|
-
const clipboardItems = await navigator.clipboard.read();
|
|
20
|
-
let clipboardData = {};
|
|
21
|
-
if (Array.isArray(clipboardItems) && clipboardItems[0] instanceof ClipboardItem) {
|
|
22
|
-
for (const item of clipboardItems) {
|
|
23
|
-
if (isFile(item)) {
|
|
24
|
-
const clipboardFiles = item.types.filter(type => type.match(/^image\//));
|
|
25
|
-
const fileBlobs = await Promise.all(clipboardFiles.map(type => item.getType(type)));
|
|
26
|
-
const urls = fileBlobs.filter(Boolean).map(blob => URL.createObjectURL(blob));
|
|
27
|
-
const files = await Promise.all(urls.map(async (url) => {
|
|
28
|
-
const blob = await (await fetch(url)).blob();
|
|
29
|
-
return new File([blob], 'plait-file', { type: blob.type });
|
|
30
|
-
}));
|
|
31
|
-
return {
|
|
32
|
-
files
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
if (item.types.includes('text/html')) {
|
|
36
|
-
const htmlContent = await blobAsString(await item.getType('text/html'));
|
|
37
|
-
const htmlClipboardData = getClipboardFromHtml(htmlContent);
|
|
38
|
-
if (htmlClipboardData) {
|
|
39
|
-
return htmlClipboardData;
|
|
40
|
-
}
|
|
41
|
-
if (htmlContent && htmlContent.trim()) {
|
|
42
|
-
clipboardData = { text: stripHtml(htmlContent) };
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
if (item.types.includes('text/plain')) {
|
|
46
|
-
const textContent = await blobAsString(await item.getType('text/plain'));
|
|
47
|
-
clipboardData = {
|
|
48
|
-
text: stripHtml(textContent)
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return clipboardData;
|
|
54
|
-
};
|
|
55
|
-
const isFile = (item) => {
|
|
56
|
-
return item.types.find(i => i.match(/^image\//));
|
|
57
|
-
};
|
|
58
|
-
const blobAsString = (blob) => {
|
|
59
|
-
return new Promise((resolve, reject) => {
|
|
60
|
-
const reader = new FileReader();
|
|
61
|
-
reader.addEventListener('loadend', () => {
|
|
62
|
-
const text = reader.result;
|
|
63
|
-
resolve(text);
|
|
64
|
-
});
|
|
65
|
-
reader.addEventListener('error', () => {
|
|
66
|
-
reject(reader.error);
|
|
67
|
-
});
|
|
68
|
-
reader.readAsText(blob);
|
|
69
|
-
});
|
|
70
|
-
};
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLWNsaXBib2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3V0aWxzL2NsaXBib2FyZC9uYXZpZ2F0b3ItY2xpcGJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLGdDQUFnQyxFQUNoQyxpQ0FBaUMsRUFDakMsU0FBUyxFQUNaLE1BQU0sVUFBVSxDQUFDO0FBR2xCLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLEtBQUssRUFBRSxJQUEyQixFQUFFLElBQTJCLEVBQUUsT0FBZSxFQUFFLEVBQUUsRUFBRTtJQUN2SCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDekIsSUFBSSxpQ0FBaUMsRUFBRSxFQUFFLENBQUM7UUFDdEMsTUFBTSxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUM1QixJQUFJLGFBQWEsQ0FBQztnQkFDZCxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7b0JBQ2hELElBQUksRUFBRSxXQUFXO2lCQUNwQixDQUFDO2dCQUNGLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUM7YUFDMUYsQ0FBQztTQUNMLENBQUMsQ0FBQztJQUNQLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLElBQTRCLEVBQUU7SUFDcEUsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLEVBQUUsQ0FBQztRQUN0QyxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFDRCxNQUFNLGNBQWMsR0FBRyxNQUFNLFNBQVMsQ0FBQyxT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LEVBQUU7SUFDaEMsT0FBTyxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ3BDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDM0IsT0FBTyxDQUFDLElBQWMsQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDbEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIGJ1aWxkUGxhaXRIdG1sLFxuICAgIGdldENsaXBib2FyZEZyb21IdG1sLFxuICAgIGdldFByb2JhYmx5U3VwcG9ydHNDbGlwYm9hcmRSZWFkLFxuICAgIGdldFByb2JhYmx5U3VwcG9ydHNDbGlwYm9hcmRXcml0ZSxcbiAgICBzdHJpcEh0bWxcbn0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgQ2xpcGJvYXJkRGF0YSwgV3JpdGFibGVDbGlwYm9hcmREYXRhLCBXcml0YWJsZUNsaXBib2FyZFR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IHNldE5hdmlnYXRvckNsaXBib2FyZCA9IGFzeW5jICh0eXBlOiBXcml0YWJsZUNsaXBib2FyZFR5cGUsIGRhdGE6IFdyaXRhYmxlQ2xpcGJvYXJkRGF0YSwgdGV4dDogc3RyaW5nID0gJycpID0+IHtcbiAgICBsZXQgdGV4dENsaXBib2FyZCA9IHRleHQ7XG4gICAgaWYgKGdldFByb2JhYmx5U3VwcG9ydHNDbGlwYm9hcmRXcml0ZSgpKSB7XG4gICAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGUoW1xuICAgICAgICAgICAgbmV3IENsaXBib2FyZEl0ZW0oe1xuICAgICAgICAgICAgICAgICd0ZXh0L2h0bWwnOiBuZXcgQmxvYihbYnVpbGRQbGFpdEh0bWwodHlwZSwgZGF0YSldLCB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0L2h0bWwnXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgJ3RleHQvcGxhaW4nOiBuZXcgQmxvYihbdGV4dENsaXBib2FyZCA/PyBKU09OLnN0cmluZ2lmeShkYXRhKV0sIHsgdHlwZTogJ3RleHQvcGxhaW4nIH0pXG4gICAgICAgICAgICB9KVxuICAgICAgICBdKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TmF2aWdhdG9yQ2xpcGJvYXJkID0gYXN5bmMgKCk6IFByb21pc2U8Q2xpcGJvYXJkRGF0YT4gPT4ge1xuICAgIGlmICghZ2V0UHJvYmFibHlTdXBwb3J0c0NsaXBib2FyZFJlYWQoKSkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IGNsaXBib2FyZEl0ZW1zID0gYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkKCk7XG4gICAgbGV0IGNsaXBib2FyZERhdGE6IENsaXBib2FyZERhdGEgPSB7fTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGNsaXBib2FyZEl0ZW1zKSAmJiBjbGlwYm9hcmRJdGVtc1swXSBpbnN0YW5jZW9mIENsaXBib2FyZEl0ZW0pIHtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGNsaXBib2FyZEl0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoaXNGaWxlKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xpcGJvYXJkRmlsZXMgPSBpdGVtLnR5cGVzLmZpbHRlcih0eXBlID0+IHR5cGUubWF0Y2goL15pbWFnZVxcLy8pKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlQmxvYnMgPSBhd2FpdCBQcm9taXNlLmFsbChjbGlwYm9hcmRGaWxlcy5tYXAodHlwZSA9PiBpdGVtLmdldFR5cGUodHlwZSkhKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXJscyA9IChmaWxlQmxvYnMuZmlsdGVyKEJvb2xlYW4pIGFzIChGaWxlIHwgQmxvYilbXSkubWFwKGJsb2IgPT4gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgICAgICAgdXJscy5tYXAoYXN5bmMgdXJsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCAoYXdhaXQgZmV0Y2godXJsKSkuYmxvYigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlKFtibG9iXSwgJ3BsYWl0LWZpbGUnLCB7IHR5cGU6IGJsb2IudHlwZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVzXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLnR5cGVzLmluY2x1ZGVzKCd0ZXh0L2h0bWwnKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGh0bWxDb250ZW50ID0gYXdhaXQgYmxvYkFzU3RyaW5nKGF3YWl0IGl0ZW0uZ2V0VHlwZSgndGV4dC9odG1sJykpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGh0bWxDbGlwYm9hcmREYXRhID0gZ2V0Q2xpcGJvYXJkRnJvbUh0bWwoaHRtbENvbnRlbnQpO1xuICAgICAgICAgICAgICAgIGlmIChodG1sQ2xpcGJvYXJkRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaHRtbENsaXBib2FyZERhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChodG1sQ29udGVudCAmJiBodG1sQ29udGVudC50cmltKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xpcGJvYXJkRGF0YSA9IHsgdGV4dDogc3RyaXBIdG1sKGh0bWxDb250ZW50KSB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLnR5cGVzLmluY2x1ZGVzKCd0ZXh0L3BsYWluJykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0Q29udGVudCA9IGF3YWl0IGJsb2JBc1N0cmluZyhhd2FpdCBpdGVtLmdldFR5cGUoJ3RleHQvcGxhaW4nKSk7XG4gICAgICAgICAgICAgICAgY2xpcGJvYXJkRGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogc3RyaXBIdG1sKHRleHRDb250ZW50KVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNsaXBib2FyZERhdGE7XG59O1xuXG5jb25zdCBpc0ZpbGUgPSAoaXRlbTogQ2xpcGJvYXJkSXRlbSkgPT4ge1xuICAgIHJldHVybiBpdGVtLnR5cGVzLmZpbmQoaSA9PiBpLm1hdGNoKC9eaW1hZ2VcXC8vKSk7XG59O1xuXG5jb25zdCBibG9iQXNTdHJpbmcgPSAoYmxvYjogQmxvYikgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlbmQnLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZXh0ID0gcmVhZGVyLnJlc3VsdDtcbiAgICAgICAgICAgIHJlc29sdmUodGV4dCBhcyBzdHJpbmcpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgKCkgPT4ge1xuICAgICAgICAgICAgcmVqZWN0KHJlYWRlci5lcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgICByZWFkZXIucmVhZEFzVGV4dChibG9iKTtcbiAgICB9KTtcbn07XG4iXX0=
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export var WritableClipboardType;
|
|
2
|
-
(function (WritableClipboardType) {
|
|
3
|
-
WritableClipboardType["medias"] = "medias";
|
|
4
|
-
WritableClipboardType["elements"] = "elements";
|
|
5
|
-
})(WritableClipboardType || (WritableClipboardType = {}));
|
|
6
|
-
export var WritableClipboardOperationType;
|
|
7
|
-
(function (WritableClipboardOperationType) {
|
|
8
|
-
WritableClipboardOperationType["copy"] = "copy";
|
|
9
|
-
WritableClipboardOperationType["cut"] = "cut";
|
|
10
|
-
WritableClipboardOperationType["duplicate"] = "duplicate";
|
|
11
|
-
WritableClipboardOperationType["paste"] = "paste";
|
|
12
|
-
})(WritableClipboardOperationType || (WritableClipboardOperationType = {}));
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy9jbGlwYm9hcmQvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFOLElBQVkscUJBR1g7QUFIRCxXQUFZLHFCQUFxQjtJQUM3QiwwQ0FBbUIsQ0FBQTtJQUNuQiw4Q0FBdUIsQ0FBQTtBQUMzQixDQUFDLEVBSFcscUJBQXFCLEtBQXJCLHFCQUFxQixRQUdoQztBQUVELE1BQU0sQ0FBTixJQUFZLDhCQUtYO0FBTEQsV0FBWSw4QkFBOEI7SUFDdEMsK0NBQWUsQ0FBQTtJQUNmLDZDQUFhLENBQUE7SUFDYix5REFBeUIsQ0FBQTtJQUN6QixpREFBaUIsQ0FBQTtBQUNyQixDQUFDLEVBTFcsOEJBQThCLEtBQTlCLDhCQUE4QixRQUt6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgZW51bSBXcml0YWJsZUNsaXBib2FyZFR5cGUge1xuICAgICdtZWRpYXMnID0gJ21lZGlhcycsXG4gICAgJ2VsZW1lbnRzJyA9ICdlbGVtZW50cydcbn1cblxuZXhwb3J0IGVudW0gV3JpdGFibGVDbGlwYm9hcmRPcGVyYXRpb25UeXBlIHtcbiAgICAnY29weScgPSAnY29weScsXG4gICAgJ2N1dCcgPSAnY3V0JyxcbiAgICAnZHVwbGljYXRlJyA9ICdkdXBsaWNhdGUnLFxuICAgICdwYXN0ZScgPSAncGFzdGUnXG59XG5cbmV4cG9ydCB0eXBlIFdyaXRhYmxlQ2xpcGJvYXJkRGF0YSA9IFBsYWl0RWxlbWVudFtdIHwgYW55W107XG5cbmV4cG9ydCBpbnRlcmZhY2UgV3JpdGFibGVDbGlwYm9hcmRDb250ZXh0IHtcbiAgICB0ZXh0OiBzdHJpbmc7XG4gICAgdHlwZTogV3JpdGFibGVDbGlwYm9hcmRUeXBlO1xuICAgIGVsZW1lbnRzOiBXcml0YWJsZUNsaXBib2FyZERhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpcGJvYXJkRGF0YSB7XG4gICAgZmlsZXM/OiBGaWxlW107XG4gICAgZWxlbWVudHM/OiBQbGFpdEVsZW1lbnRbXTtcbiAgICBtZWRpYXM/OiBhbnlbXTtcbiAgICB0ZXh0Pzogc3RyaW5nO1xuICAgIG9wZXJhdGlvblR5cGU/OiBXcml0YWJsZUNsaXBib2FyZE9wZXJhdGlvblR5cGU7XG59XG4iXX0=
|
package/esm2022/utils/common.mjs
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { PlaitBoard } from '../interfaces/board';
|
|
2
|
-
import { NodeTransforms } from '../transforms/node';
|
|
3
|
-
import { sortElements } from './position';
|
|
4
|
-
const BOARD_TO_RAF = new WeakMap();
|
|
5
|
-
const getTimerId = (board, key) => {
|
|
6
|
-
const state = getRAFState(board);
|
|
7
|
-
return state[key] || null;
|
|
8
|
-
};
|
|
9
|
-
const getRAFState = (board) => {
|
|
10
|
-
return BOARD_TO_RAF.get(board) || {};
|
|
11
|
-
};
|
|
12
|
-
export const throttleRAF = (board, key, fn) => {
|
|
13
|
-
const scheduleFunc = () => {
|
|
14
|
-
let timerId = requestAnimationFrame(() => {
|
|
15
|
-
const value = BOARD_TO_RAF.get(board) || {};
|
|
16
|
-
value[key] = null;
|
|
17
|
-
BOARD_TO_RAF.set(board, value);
|
|
18
|
-
PlaitBoard.isAlive(board) && fn();
|
|
19
|
-
});
|
|
20
|
-
const state = getRAFState(board);
|
|
21
|
-
state[key] = timerId;
|
|
22
|
-
BOARD_TO_RAF.set(board, state);
|
|
23
|
-
};
|
|
24
|
-
let timerId = getTimerId(board, key);
|
|
25
|
-
if (timerId !== null) {
|
|
26
|
-
cancelAnimationFrame(timerId);
|
|
27
|
-
}
|
|
28
|
-
scheduleFunc();
|
|
29
|
-
};
|
|
30
|
-
export const debounce = (func, wait, options) => {
|
|
31
|
-
let timeoutId = null;
|
|
32
|
-
return (args) => {
|
|
33
|
-
if (timeoutId !== null) {
|
|
34
|
-
clearTimeout(timeoutId);
|
|
35
|
-
timeoutId = setTimeout(() => {
|
|
36
|
-
func(args);
|
|
37
|
-
timeoutId = null;
|
|
38
|
-
}, wait);
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
if (options?.leading) {
|
|
42
|
-
func(args);
|
|
43
|
-
}
|
|
44
|
-
timeoutId = setTimeout(() => {
|
|
45
|
-
timeoutId = null;
|
|
46
|
-
if (!options?.leading) {
|
|
47
|
-
func(args);
|
|
48
|
-
}
|
|
49
|
-
}, wait);
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
};
|
|
53
|
-
export const getElementsIndices = (board, elements) => {
|
|
54
|
-
sortElements(board, elements);
|
|
55
|
-
return elements
|
|
56
|
-
.map(item => {
|
|
57
|
-
return board.children.map(item => item.id).indexOf(item.id);
|
|
58
|
-
})
|
|
59
|
-
.filter(item => item >= 0);
|
|
60
|
-
};
|
|
61
|
-
export const getHighestIndexOfElement = (board, elements) => {
|
|
62
|
-
const indices = getElementsIndices(board, elements);
|
|
63
|
-
return indices[indices.length - 1];
|
|
64
|
-
};
|
|
65
|
-
export const moveElementsToNewPath = (board, moveOptions) => {
|
|
66
|
-
moveOptions
|
|
67
|
-
.map(item => {
|
|
68
|
-
const path = PlaitBoard.findPath(board, item.element);
|
|
69
|
-
const ref = board.pathRef(path);
|
|
70
|
-
return () => {
|
|
71
|
-
ref.current && NodeTransforms.moveNode(board, ref.current, item.newPath);
|
|
72
|
-
ref.unref();
|
|
73
|
-
};
|
|
74
|
-
})
|
|
75
|
-
.forEach(action => {
|
|
76
|
-
action();
|
|
77
|
-
});
|
|
78
|
-
};
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdXRpbHMvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUxQyxNQUFNLFlBQVksR0FBRyxJQUFJLE9BQU8sRUFBZ0QsQ0FBQztBQU9qRixNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQWlCLEVBQUUsR0FBVyxFQUFFLEVBQUU7SUFDbEQsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUM5QixDQUFDLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUN0QyxPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3pDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWlCLEVBQUUsR0FBVyxFQUFFLEVBQWMsRUFBRSxFQUFFO0lBQzFFLE1BQU0sWUFBWSxHQUFHLEdBQUcsRUFBRTtRQUN0QixJQUFJLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7WUFDckMsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNsQixZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMvQixVQUFVLENBQUMsT0FBTyxDQUFD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QUFDLENBQUM7UUFDaEMsT0FBTyxHQUFHLEVBQUU7WUFDUixHQUFHLENBQUMsT0FBTyxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQixDQUFDLENBQUM7SUFDTixDQUFDLENBQUM7U0FDRCxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDZCxNQUFNLEVBQUUsQ0FBQztJQUNiLENBQUMsQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF0aCwgUGxhaXRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBOb2RlVHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMvbm9kZSc7XG5pbXBvcnQgeyBzb3J0RWxlbWVudHMgfSBmcm9tICcuL3Bvc2l0aW9uJztcblxuY29uc3QgQk9BUkRfVE9fUkFGID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfCBudWxsIH0+KCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW92ZU5vZGVPcHRpb24ge1xuICAgIGVsZW1lbnQ6IFBsYWl0RWxlbWVudDtcbiAgICBuZXdQYXRoOiBQYXRoO1xufVxuXG5jb25zdCBnZXRUaW1lcklkID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBrZXk6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0UkFGU3RhdGUoYm9hcmQpO1xuICAgIHJldHVybiBzdGF0ZVtrZXldIHx8IG51bGw7XG59O1xuXG5jb25zdCBnZXRSQUZTdGF0ZSA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIHJldHVybiBCT0FSRF9UT19SQUYuZ2V0KGJvYXJkKSB8fCB7fTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aHJvdHRsZVJBRiA9IChib2FyZDogUGxhaXRCb2FyZCwga2V5OiBzdHJpbmcsIGZuOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgY29uc3Qgc2NoZWR1bGVGdW5jID0gKCkgPT4ge1xuICAgICAgICBsZXQgdGltZXJJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IEJPQVJEX1RPX1JBRi5nZXQoYm9hcmQpIHx8IHt9O1xuICAgICAgICAgICAgdmFsdWVba2V5XSA9IG51bGw7XG4gICAgICAgICAgICBCT0FSRF9UT19SQUYuc2V0KGJvYXJkLCB2YWx1ZSk7XG4gICAgICAgICAgICBQbGFpdEJvYXJkLmlzQWxpdmUoYm9hcmQpICYmIGZuKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzdGF0ZSA9IGdldFJBRlN0YXRlKGJvYXJkKTtcbiAgICAgICAgc3RhdGVba2V5XSA9IHRpbWVySWQ7XG4gICAgICAgIEJPQVJEX1RPX1JBRi5zZXQoYm9hcmQsIHN0YXRlKTtcbiAgICB9O1xuICAgIGxldCB0aW1lcklkID0gZ2V0VGltZXJJZChib2FyZCwga2V5KTtcbiAgICBpZiAodGltZXJJZCAhPT0gbnVsbCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aW1lcklkKTtcbiAgICB9XG4gICAgc2NoZWR1bGVGdW5jKCk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVib3VuY2UgPSA8VD4oZnVuYzogKGFyZ3M/OiBUKSA9PiB2b2lkLCB3YWl0OiBudW1iZXIsIG9wdGlvbnM/OiB7IGxlYWRpbmc6IGJvb2xlYW4gfSkgPT4ge1xuICAgIGxldCB0aW1lb3V0SWQ6IGFueSA9IG51bGw7XG4gICAgcmV0dXJuIChhcmdzPzogVCkgPT4ge1xuICAgICAgICBpZiAodGltZW91dElkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGZ1bmMoYXJncyk7XG4gICAgICAgICAgICAgICAgdGltZW91dElkID0gbnVsbDtcbiAgICAgICAgICAgIH0sIHdhaXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnM/LmxlYWRpbmcpIHtcbiAgICAgICAgICAgICAgICBmdW5jKGFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGltZW91dElkID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnM/LmxlYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgZnVuYyhhcmdzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB3YWl0KTtcbiAgICAgICAgfVxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RWxlbWVudHNJbmRpY2VzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50czogUGxhaXRFbGVtZW50W10pOiBudW1iZXJbXSA9PiB7XG4gICAgc29ydEVsZW1lbnRzKGJvYXJkLCBlbGVtZW50cyk7XG4gICAgcmV0dXJuIGVsZW1lbnRzXG4gICAgICAgIC5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYm9hcmQuY2hpbGRyZW4ubWFwKGl0ZW0gPT4gaXRlbS5pZCkuaW5kZXhPZihpdGVtLmlkKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0gPj0gMCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SGlnaGVzdEluZGV4T2ZFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50czogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBpbmRpY2VzID0gZ2V0RWxlbWVudHNJbmRpY2VzKGJvYXJkLCBlbGVtZW50cyk7XG4gICAgcmV0dXJuIGluZGljZXNbaW5kaWNlcy5sZW5ndGggLSAxXTtcbn07XG5cbmV4cG9ydCBjb25zdCBtb3ZlRWxlbWVudHNUb05ld1BhdGggPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIG1vdmVPcHRpb25zOiBNb3ZlTm9kZU9wdGlvbltdKSA9PiB7XG4gICAgbW92ZU9wdGlvbnNcbiAgICAgICAgLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBpdGVtLmVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgcmVmID0gYm9hcmQucGF0aFJlZihwYXRoKTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVmLmN1cnJlbnQgJiYgTm9kZVRyYW5zZm9ybXMubW92ZU5vZGUoYm9hcmQsIHJlZi5jdXJyZW50LCBpdGVtLm5ld1BhdGgpO1xuICAgICAgICAgICAgICAgIHJlZi51bnJlZigpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZvckVhY2goYWN0aW9uID0+IHtcbiAgICAgICAgICAgIGFjdGlvbigpO1xuICAgICAgICB9KTtcbn07XG4iXX0=
|