@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.
Files changed (108) hide show
  1. package/fesm2022/plait-core.mjs.map +1 -1
  2. package/package.json +1 -3
  3. package/esm2022/constants/cursor.mjs +0 -13
  4. package/esm2022/constants/index.mjs +0 -20
  5. package/esm2022/constants/keycodes.mjs +0 -127
  6. package/esm2022/constants/selection.mjs +0 -6
  7. package/esm2022/constants/zoom.mjs +0 -4
  8. package/esm2022/context.mjs +0 -23
  9. package/esm2022/core/element/context-change.mjs +0 -13
  10. package/esm2022/core/element/context.mjs +0 -2
  11. package/esm2022/core/element/element-flavour.mjs +0 -140
  12. package/esm2022/core/element/element-ref.mjs +0 -2
  13. package/esm2022/core/list-render.mjs +0 -217
  14. package/esm2022/differs/default_iterable_differ.mjs +0 -614
  15. package/esm2022/differs/iterable_differs.mjs +0 -9
  16. package/esm2022/interfaces/board.mjs +0 -108
  17. package/esm2022/interfaces/custom-types.mjs +0 -5
  18. package/esm2022/interfaces/direction.mjs +0 -8
  19. package/esm2022/interfaces/element.mjs +0 -43
  20. package/esm2022/interfaces/group.mjs +0 -6
  21. package/esm2022/interfaces/history.mjs +0 -5
  22. package/esm2022/interfaces/index.mjs +0 -19
  23. package/esm2022/interfaces/node.mjs +0 -57
  24. package/esm2022/interfaces/operation.mjs +0 -96
  25. package/esm2022/interfaces/path-ref.mjs +0 -15
  26. package/esm2022/interfaces/path.mjs +0 -183
  27. package/esm2022/interfaces/plugin.mjs +0 -6
  28. package/esm2022/interfaces/point.mjs +0 -27
  29. package/esm2022/interfaces/pointer.mjs +0 -6
  30. package/esm2022/interfaces/rectangle-client.mjs +0 -171
  31. package/esm2022/interfaces/selection.mjs +0 -13
  32. package/esm2022/interfaces/svg-arc-command.mjs +0 -2
  33. package/esm2022/interfaces/theme.mjs +0 -49
  34. package/esm2022/interfaces/viewport.mjs +0 -7
  35. package/esm2022/plait-core.mjs +0 -5
  36. package/esm2022/plugins/create-board.mjs +0 -122
  37. package/esm2022/plugins/index.mjs +0 -11
  38. package/esm2022/plugins/with-board.mjs +0 -20
  39. package/esm2022/plugins/with-hand.mjs +0 -113
  40. package/esm2022/plugins/with-history.mjs +0 -91
  41. package/esm2022/plugins/with-hotkey.mjs +0 -96
  42. package/esm2022/plugins/with-i18n.mjs +0 -13
  43. package/esm2022/plugins/with-moving.mjs +0 -282
  44. package/esm2022/plugins/with-options.mjs +0 -13
  45. package/esm2022/plugins/with-related-fragment.mjs +0 -23
  46. package/esm2022/plugins/with-selection.mjs +0 -230
  47. package/esm2022/public-api.mjs +0 -16
  48. package/esm2022/testing/core/create-board.mjs +0 -15
  49. package/esm2022/testing/core/fake-weak-map.mjs +0 -18
  50. package/esm2022/testing/core/index.mjs +0 -3
  51. package/esm2022/testing/fake-events/event-objects.mjs +0 -131
  52. package/esm2022/testing/fake-events/index.mjs +0 -2
  53. package/esm2022/testing/index.mjs +0 -3
  54. package/esm2022/testing/test-element.mjs +0 -9
  55. package/esm2022/transforms/board.mjs +0 -137
  56. package/esm2022/transforms/element.mjs +0 -22
  57. package/esm2022/transforms/general.mjs +0 -146
  58. package/esm2022/transforms/group.mjs +0 -64
  59. package/esm2022/transforms/index.mjs +0 -17
  60. package/esm2022/transforms/node.mjs +0 -37
  61. package/esm2022/transforms/selection.mjs +0 -26
  62. package/esm2022/transforms/theme.mjs +0 -8
  63. package/esm2022/transforms/viewport.mjs +0 -8
  64. package/esm2022/transforms/z-index.mjs +0 -20
  65. package/esm2022/utils/angle.mjs +0 -164
  66. package/esm2022/utils/board.mjs +0 -18
  67. package/esm2022/utils/clipboard/clipboard.mjs +0 -40
  68. package/esm2022/utils/clipboard/common.mjs +0 -82
  69. package/esm2022/utils/clipboard/data-transfer.mjs +0 -33
  70. package/esm2022/utils/clipboard/index.mjs +0 -3
  71. package/esm2022/utils/clipboard/navigator-clipboard.mjs +0 -71
  72. package/esm2022/utils/clipboard/types.mjs +0 -13
  73. package/esm2022/utils/common.mjs +0 -79
  74. package/esm2022/utils/debug.mjs +0 -91
  75. package/esm2022/utils/dnd.mjs +0 -8
  76. package/esm2022/utils/dom/common.mjs +0 -75
  77. package/esm2022/utils/dom/environment.mjs +0 -2
  78. package/esm2022/utils/dom/foreign.mjs +0 -26
  79. package/esm2022/utils/dom/index.mjs +0 -4
  80. package/esm2022/utils/drawing/arrow.mjs +0 -23
  81. package/esm2022/utils/drawing/circle.mjs +0 -4
  82. package/esm2022/utils/drawing/line.mjs +0 -47
  83. package/esm2022/utils/drawing/rectangle.mjs +0 -36
  84. package/esm2022/utils/element.mjs +0 -90
  85. package/esm2022/utils/environment.mjs +0 -14
  86. package/esm2022/utils/fragment.mjs +0 -27
  87. package/esm2022/utils/group.mjs +0 -239
  88. package/esm2022/utils/helper.mjs +0 -68
  89. package/esm2022/utils/history.mjs +0 -96
  90. package/esm2022/utils/hotkeys.mjs +0 -109
  91. package/esm2022/utils/id-creator.mjs +0 -11
  92. package/esm2022/utils/index.mjs +0 -35
  93. package/esm2022/utils/iterable.mjs +0 -32
  94. package/esm2022/utils/math.mjs +0 -480
  95. package/esm2022/utils/mobile.mjs +0 -6
  96. package/esm2022/utils/moving-element.mjs +0 -17
  97. package/esm2022/utils/pointer.mjs +0 -13
  98. package/esm2022/utils/position.mjs +0 -9
  99. package/esm2022/utils/selected-element.mjs +0 -145
  100. package/esm2022/utils/selection.mjs +0 -151
  101. package/esm2022/utils/snap/snap-moving.mjs +0 -199
  102. package/esm2022/utils/snap/snap.mjs +0 -211
  103. package/esm2022/utils/to-image.mjs +0 -204
  104. package/esm2022/utils/to-point.mjs +0 -74
  105. package/esm2022/utils/tree.mjs +0 -22
  106. package/esm2022/utils/viewport.mjs +0 -227
  107. package/esm2022/utils/weak-maps.mjs +0 -27
  108. package/esm2022/utils/z-index.mjs +0 -166
@@ -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=
@@ -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, '&lt;').replace(/>/g, '&gt;');
78
- };
79
- export const reverseReplaceAngleBrackets = (str) => {
80
- return str.replace(/&lt;/g, '<').replace(/&gt;/g, '>');
81
- };
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdXRpbHMvY2xpcGJvYXJkL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtFLHFCQUFxQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWhILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQTJCLEVBQUUsSUFBMkIsRUFBRSxFQUFFO0lBQ3ZGLE1BQU0sb0JBQW9CLEdBQUcsb0JBQW9CLENBQzdDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDWCxJQUFJO1FBQ0osSUFBSTtLQUNQLENBQUMsQ0FDTCxDQUFDO0lBQ0YsT0FBTyxVQUFVLG9CQUFvQixVQUFVLENBQUM7QUFDcEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxJQUFZLEVBQXdCLEVBQUU7SUFDdkUsSUFBSSxXQUFXLEdBQUcsSUFBSSxFQUFFLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNkLFdBQVcsR0FBRywyQkFBMkIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUM7WUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzFDLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ1osSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNwRCxPQUFPO3dCQUNILFFBQVEsRUFBRSxTQUFTLENBQUMsSUFBSTtxQkFDM0IsQ0FBQztnQkFDTixDQUFDO3FCQUFNLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDekQsT0FBTzt3QkFDSCxNQUFNLEVBQUUsU0FBUyxDQUFDLElBQUk7cUJBQ3pCLENBQUM7Z0JBQ04sQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtJQUN0Qyw2SEFBNkg7SUFDN0gsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzRCxHQUFHLENBQUMsZUFBZSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7QUFDNUQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUcsR0FBRyxFQUFFO0lBQ2xELE9BQU8sV0FBVyxJQUFJLFNBQVMsSUFBSSxPQUFPLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQztBQUN0RSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxHQUFHLEVBQUU7SUFDdEQsT0FBTyxXQUFXLElBQUksU0FBUyxJQUFJLFdBQVcsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDO0FBQzFFLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLEdBQUcsRUFBRTtJQUNqRCxPQUFPLFdBQVcsSUFBSSxTQUFTLElBQUksTUFBTSxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUM7QUFDckUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FDbEMsSUFBMkIsRUFDM0IsUUFBK0IsRUFDL0IsSUFBWSxFQUNZLEVBQUU7SUFDMUIsT0FBTztRQUNILElBQUk7UUFDSixRQUFRO1FBQ1IsSUFBSTtLQUNQLENBQUM7QUFDTixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUMvQixnQkFBMEMsRUFDMUMsUUFBa0MsRUFDVixFQUFFO0lBQzFCLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLGdCQUFnQixDQUFDO0lBQ2xELElBQUksSUFBSSxLQUFLLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixPQUFPO1lBQ0gsSUFBSTtZQUNKLFFBQVEsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFDNUMsSUFBSSxFQUFFLElBQUksR0FBRyxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUk7U0FDbkMsQ0FBQztJQUNOLENBQUM7SUFDRCxPQUFPLGdCQUFnQixDQUFDO0FBQzVCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsZ0JBQWlELEVBQUUsUUFBa0MsRUFBRSxFQUFFO0lBQ2pJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxtQkFBbUIsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMzRCxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtJQUNoRCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDM0QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtJQUN2RCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2xpcGJvYXJkRGF0YSwgV3JpdGFibGVDbGlwYm9hcmRDb250ZXh0LCBXcml0YWJsZUNsaXBib2FyZERhdGEsIFdyaXRhYmxlQ2xpcGJvYXJkVHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgYnVpbGRQbGFpdEh0bWwgPSAodHlwZTogV3JpdGFibGVDbGlwYm9hcmRUeXBlLCBkYXRhOiBXcml0YWJsZUNsaXBib2FyZERhdGEpID0+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=
@@ -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=