@plait/draw 0.39.0 → 0.41.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/esm2022/engines/flowchart/stored-data.mjs +2 -2
- package/esm2022/generators/line-active.generator.mjs +9 -2
- package/esm2022/geometry.component.mjs +1 -1
- package/esm2022/line.component.mjs +1 -1
- package/esm2022/plugins/with-draw.mjs +3 -2
- package/esm2022/plugins/with-line-auto-complete.mjs +3 -3
- package/esm2022/plugins/with-line-resize.mjs +15 -11
- package/esm2022/plugins/with-line-text-move.mjs +52 -0
- package/esm2022/public-api.mjs +2 -1
- package/esm2022/transforms/geometry.mjs +40 -7
- package/esm2022/transforms/index.mjs +6 -4
- package/esm2022/transforms/line.mjs +63 -3
- package/esm2022/utils/line.mjs +54 -41
- package/fesm2022/plait-draw.mjs +242 -80
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/package.json +1 -1
- package/plugins/with-line-auto-complete.d.ts +1 -1
- package/plugins/with-line-text-move.d.ts +2 -0
- package/public-api.d.ts +1 -0
- package/styles/styles.scss +4 -0
- package/transforms/geometry.d.ts +5 -4
- package/transforms/index.d.ts +4 -2
- package/transforms/line.d.ts +6 -1
- package/utils/clipboard.d.ts +1 -1
- package/utils/geometry.d.ts +1 -1
- package/utils/line.d.ts +1 -1
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { PlaitElement, distanceBetweenPointAndSegments, getHitElementByPoint, getNearestPointBetweenPointAndSegments } from '@plait/core';
|
|
2
|
+
import { PlaitDrawElement } from '../interfaces';
|
|
3
|
+
import { getHitLineTextIndex, getLinePoints } from '../utils';
|
|
4
|
+
import { ResizeHandle, getRatioByPoint, withResize } from '@plait/common';
|
|
5
|
+
import { DrawTransforms } from '../transforms';
|
|
6
|
+
export const withLineTextMove = (board) => {
|
|
7
|
+
let textIndex = 0;
|
|
8
|
+
const movableBuffer = 100;
|
|
9
|
+
const options = {
|
|
10
|
+
key: 'line-text',
|
|
11
|
+
canResize: () => {
|
|
12
|
+
return true;
|
|
13
|
+
},
|
|
14
|
+
detect: (point) => {
|
|
15
|
+
let result = null;
|
|
16
|
+
const line = getHitElementByPoint(board, point, (element) => {
|
|
17
|
+
return PlaitDrawElement.isLine(element);
|
|
18
|
+
});
|
|
19
|
+
if (line) {
|
|
20
|
+
const index = getHitLineTextIndex(board, line, point);
|
|
21
|
+
const hitComponent = PlaitElement.getComponent(line);
|
|
22
|
+
const textManage = hitComponent.textManages[index];
|
|
23
|
+
if (index !== -1 && !textManage.isEditing) {
|
|
24
|
+
textIndex = index;
|
|
25
|
+
return { element: line, handle: ResizeHandle.e };
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return result;
|
|
29
|
+
},
|
|
30
|
+
onResize: (resizeRef, resizeState) => {
|
|
31
|
+
const element = resizeRef.element;
|
|
32
|
+
if (element) {
|
|
33
|
+
const movingPoint = resizeState.endTransformPoint;
|
|
34
|
+
const points = getLinePoints(board, element);
|
|
35
|
+
const distance = distanceBetweenPointAndSegments(points, movingPoint);
|
|
36
|
+
if (distance <= movableBuffer) {
|
|
37
|
+
const point = getNearestPointBetweenPointAndSegments(movingPoint, points, false);
|
|
38
|
+
const position = getRatioByPoint(points, point);
|
|
39
|
+
const texts = [...element.texts];
|
|
40
|
+
texts[textIndex] = {
|
|
41
|
+
...texts[textIndex],
|
|
42
|
+
position
|
|
43
|
+
};
|
|
44
|
+
DrawTransforms.setLineTexts(board, element, texts);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
withResize(board, options);
|
|
50
|
+
return board;
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLXRleHQtbW92ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC1saW5lLXRleHQtbW92ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsWUFBWSxFQUVaLCtCQUErQixFQUMvQixvQkFBb0IsRUFDcEIsc0NBQXNDLEVBQ3pDLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQTZDLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUNsRCxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDbEIsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO0lBQzFCLE1BQU0sT0FBTyxHQUFpQztRQUMxQyxHQUFHLEVBQUUsV0FBVztRQUNoQixTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ1osT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUNELE1BQU0sRUFBRSxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ3JCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztZQUNsQixNQUFNLElBQUksR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsT0FBcUIsRUFBRSxFQUFFO2dCQUN0RSxPQUFPLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1QyxDQUFDLENBQTBCLENBQUM7WUFDNUIsSUFBSSxJQUFJLEVBQUU7Z0JBQ04sTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDdEQsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQWtCLENBQUM7Z0JBQ3RFLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ25ELElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRTtvQkFDdkMsU0FBUyxHQUFHLEtBQUssQ0FBQztvQkFDbEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQztpQkFDcEQ7YUFDSjtZQUNELE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUM7UUFDRCxRQUFRLEVBQUUsQ0FBQyxTQUErQixFQUFFLFdBQXdCLEVBQUUsRUFBRTtZQUNwRSxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO1lBQ2xDLElBQUksT0FBTyxFQUFFO2dCQUNULE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDbEQsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDN0MsTUFBTSxRQUFRLEdBQUcsK0JBQStCLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLFFBQVEsSUFBSSxhQUFhLEVBQUU7b0JBQzNCLE1BQU0sS0FBSyxHQUFHLHNDQUFzQyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ2pGLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ2hELE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2pDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRzt3QkFDZixHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7d0JBQ25CLFFBQVE7cUJBQ1gsQ0FBQztvQkFDRixjQUFjLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7aUJBQ3REO2FBQ0o7UUFDTCxDQUFDO0tBQ0osQ0FBQztJQUVGLFVBQVUsQ0FBWSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFdEMsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBQb2ludCxcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFNlZ21lbnRzLFxuICAgIGdldEhpdEVsZW1lbnRCeVBvaW50LFxuICAgIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0RHJhd0VsZW1lbnQsIFBsYWl0TGluZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0SGl0TGluZVRleHRJbmRleCwgZ2V0TGluZVBvaW50cyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFJlc2l6ZUhhbmRsZSwgUmVzaXplUmVmLCBSZXNpemVTdGF0ZSwgV2l0aFJlc2l6ZU9wdGlvbnMsIGdldFJhdGlvQnlQb2ludCwgd2l0aFJlc2l6ZSB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgRHJhd1RyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IExpbmVDb21wb25lbnQgfSBmcm9tICcuLi9saW5lLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCB3aXRoTGluZVRleHRNb3ZlID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgbGV0IHRleHRJbmRleCA9IDA7XG4gICAgY29uc3QgbW92YWJsZUJ1ZmZlciA9IDEwMDtcbiAgICBjb25zdCBvcHRpb25zOiBXaXRoUmVzaXplT3B0aW9uczxQbGFpdExpbmU+ID0ge1xuICAgICAgICBrZXk6ICdsaW5lLXRleHQnLFxuICAgICAgICBjYW5SZXNpemU6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBkZXRlY3Q6IChwb2ludDogUG9pbnQpID0+IHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBudWxsO1xuICAgICAgICAgICAgY29uc3QgbGluZSA9IGdldEhpdEVsZW1lbnRCeVBvaW50KGJvYXJkLCBwb2ludCwgKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBQbGFpdERyYXdFbGVtZW50LmlzTGluZShlbGVtZW50KTtcbiAgICAgICAgICAgIH0pIGFzIHVuZGVmaW5lZCB8IFBsYWl0TGluZTtcbiAgICAgICAgICAgIGlmIChsaW5lKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBnZXRIaXRMaW5lVGV4dEluZGV4KGJvYXJkLCBsaW5lLCBwb2ludCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaGl0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChsaW5lKSBhcyBMaW5lQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRleHRNYW5hZ2UgPSBoaXRDb21wb25lbnQudGV4dE1hbmFnZXNbaW5kZXhdO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEgJiYgIXRleHRNYW5hZ2UuaXNFZGl0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRleHRJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBlbGVtZW50OiBsaW5lLCBoYW5kbGU6IFJlc2l6ZUhhbmRsZS5lIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcbiAgICAgICAgb25SZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdExpbmU+LCByZXNpemVTdGF0ZTogUmVzaXplU3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSByZXNpemVSZWYuZWxlbWVudDtcbiAgICAgICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbW92aW5nUG9pbnQgPSByZXNpemVTdGF0ZS5lbmRUcmFuc2Zvcm1Qb2ludDtcbiAgICAgICAgICAgICAgICBjb25zdCBwb2ludHMgPSBnZXRMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kU2VnbWVudHMocG9pbnRzLCBtb3ZpbmdQb2ludCk7XG4gICAgICAgICAgICAgICAgaWYgKGRpc3RhbmNlIDw9IG1vdmFibGVCdWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9pbnQgPSBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyhtb3ZpbmdQb2ludCwgcG9pbnRzLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gZ2V0UmF0aW9CeVBvaW50KHBvaW50cywgcG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXh0cyA9IFsuLi5lbGVtZW50LnRleHRzXTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dHNbdGV4dEluZGV4XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRleHRzW3RleHRJbmRleF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5zZXRMaW5lVGV4dHMoYm9hcmQsIGVsZW1lbnQsIHRleHRzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgd2l0aFJlc2l6ZTxQbGFpdExpbmU+KGJvYXJkLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export * from './interfaces';
|
|
2
2
|
export * from './plugins/with-draw';
|
|
3
|
+
export * from './plugins/with-line-auto-complete';
|
|
3
4
|
export * from './constants';
|
|
4
5
|
export * from './utils';
|
|
5
6
|
export * from './geometry.component';
|
|
6
7
|
export * from './line.component';
|
|
7
8
|
export * from './transforms';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL3BsdWdpbnMvd2l0aC1kcmF3JztcbmV4cG9ydCAqIGZyb20gJy4vcGx1Z2lucy93aXRoLWxpbmUtYXV0by1jb21wbGV0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vZ2VvbWV0cnkuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGluZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2Zvcm1zJztcbiJdfQ==
|
|
@@ -1,10 +1,31 @@
|
|
|
1
|
-
import { PlaitBoard, Transforms, PlaitNode } from '@plait/core';
|
|
1
|
+
import { PlaitBoard, Transforms, PlaitNode, getSelectedElements, Direction } from '@plait/core';
|
|
2
2
|
import { PlaitDrawElement } from '../interfaces';
|
|
3
|
-
import { createDefaultGeometry, createDefaultText, insertElement } from '../utils';
|
|
4
|
-
import { normalizeShapePoints } from '@plait/common';
|
|
3
|
+
import { createDefaultGeometry, createDefaultText, getPointsByCenterPoint, insertElement } from '../utils';
|
|
4
|
+
import { getDirectionByVector, getPointByVector, normalizeShapePoints } from '@plait/common';
|
|
5
|
+
import { DrawTransforms } from '.';
|
|
6
|
+
import { collectLineUpdatedRefsByGeometry } from './line';
|
|
7
|
+
import { DefaultBasicShapeProperty, DefaultFlowchartPropertyMap } from '../constants';
|
|
5
8
|
export const insertGeometry = (board, points, shape) => {
|
|
6
9
|
const newElement = createDefaultGeometry(board, points, shape);
|
|
7
10
|
insertElement(board, newElement);
|
|
11
|
+
return newElement;
|
|
12
|
+
};
|
|
13
|
+
export const insertGeometryByVector = (board, point, shape, vector) => {
|
|
14
|
+
const shapeProperty = DefaultFlowchartPropertyMap[shape] || DefaultBasicShapeProperty;
|
|
15
|
+
const direction = getDirectionByVector(vector);
|
|
16
|
+
if (direction) {
|
|
17
|
+
let offset = 0;
|
|
18
|
+
if ([Direction.left, Direction.right].includes(direction)) {
|
|
19
|
+
offset = -shapeProperty.width / 2;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
offset = -shapeProperty.height / 2;
|
|
23
|
+
}
|
|
24
|
+
const vectorPoint = getPointByVector(point, vector, offset);
|
|
25
|
+
const points = getPointsByCenterPoint(vectorPoint, shapeProperty.width, shapeProperty.height);
|
|
26
|
+
return insertGeometry(board, points, shape);
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
8
29
|
};
|
|
9
30
|
export const insertText = (board, points, text = '文本') => {
|
|
10
31
|
const newElement = createDefaultText(board, points);
|
|
@@ -20,8 +41,20 @@ export const resizeGeometry = (board, points, textHeight, path) => {
|
|
|
20
41
|
}
|
|
21
42
|
Transforms.setNode(board, newProperties, path);
|
|
22
43
|
};
|
|
23
|
-
export const
|
|
24
|
-
const
|
|
25
|
-
|
|
44
|
+
export const switchGeometryShape = (board, shape) => {
|
|
45
|
+
const selectedElements = getSelectedElements(board);
|
|
46
|
+
const refs = [];
|
|
47
|
+
selectedElements.forEach(item => {
|
|
48
|
+
if (PlaitDrawElement.isGeometry(item) && !PlaitDrawElement.isText(item)) {
|
|
49
|
+
const path = PlaitBoard.findPath(board, item);
|
|
50
|
+
Transforms.setNode(board, { shape }, path);
|
|
51
|
+
collectLineUpdatedRefsByGeometry(board, { ...item, shape }, refs);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
if (refs.length) {
|
|
55
|
+
refs.forEach(ref => {
|
|
56
|
+
DrawTransforms.resizeLine(board, ref.property, ref.path);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
26
59
|
};
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy90cmFuc2Zvcm1zL2dlb21ldHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFlLFNBQVMsRUFBRSxtQkFBbUIsRUFBVSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckgsT0FBTyxFQUFFLGdCQUFnQixFQUEwRCxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTNHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sR0FBRyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMxRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdEYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBaUIsRUFBRSxNQUFzQixFQUFFLEtBQXFCLEVBQUUsRUFBRTtJQUMvRixNQUFNLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9ELGFBQWEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDakMsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEtBQVksRUFBRSxLQUFxQixFQUFFLE1BQWMsRUFBRSxFQUFFO0lBQzdHLE1BQU0sYUFBYSxHQUFHLDJCQUEyQixDQUFDLEtBQXlCLENBQUMsSUFB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Q0gsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNmLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO0tBQ047QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBUcmFuc2Zvcm1zLCBQb2ludCwgUGF0aCwgUGxhaXROb2RlLCBnZXRTZWxlY3RlZEVsZW1lbnRzLCBWZWN0b3IsIERpcmVjdGlvbiB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0RHJhd0VsZW1lbnQsIEdlb21ldHJ5U2hhcGVzLCBQbGFpdFRleHQsIFBsYWl0TGluZSwgRmxvd2NoYXJ0U3ltYm9scyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgY3JlYXRlRGVmYXVsdEdlb21ldHJ5LCBjcmVhdGVEZWZhdWx0VGV4dCwgZ2V0UG9pbnRzQnlDZW50ZXJQb2ludCwgaW5zZXJ0RWxlbWVudCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBnZXREaXJlY3Rpb25CeVZlY3RvciwgZ2V0UG9pbnRCeVZlY3Rvciwgbm9ybWFsaXplU2hhcGVQb2ludHMgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IERyYXdUcmFuc2Zvcm1zIH0gZnJvbSAnLic7XG5pbXBvcnQgeyBjb2xsZWN0TGluZVVwZGF0ZWRSZWZzQnlHZW9tZXRyeSB9IGZyb20gJy4vbGluZSc7XG5pbXBvcnQgeyBEZWZhdWx0QmFzaWNTaGFwZVByb3BlcnR5LCBEZWZhdWx0Rmxvd2NoYXJ0UHJvcGVydHlNYXAgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0R2VvbWV0cnkgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50czogW1BvaW50LCBQb2ludF0sIHNoYXBlOiBHZW9tZXRyeVNoYXBlcykgPT4ge1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBjcmVhdGVEZWZhdWx0R2VvbWV0cnkoYm9hcmQsIHBvaW50cywgc2hhcGUpO1xuICAgIGluc2VydEVsZW1lbnQoYm9hcmQsIG5ld0VsZW1lbnQpO1xuICAgIHJldHVybiBuZXdFbGVtZW50O1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydEdlb21ldHJ5QnlWZWN0b3IgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50OiBQb2ludCwgc2hhcGU6IEdlb21ldHJ5U2hhcGVzLCB2ZWN0b3I6IFZlY3RvcikgPT4ge1xuICAgIGNvbnN0IHNoYXBlUHJvcGVydHkgPSBEZWZhdWx0Rmxvd2NoYXJ0UHJvcGVydHlNYXBbc2hhcGUgYXMgRmxvd2NoYXJ0U3ltYm9sc10gfHwgRGVmYXVsdEJhc2ljU2hhcGVQcm9wZXJ0eTtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSBnZXREaXJlY3Rpb25CeVZlY3Rvcih2ZWN0b3IpO1xuICAgIGlmIChkaXJlY3Rpb24pIHtcbiAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgIGlmIChbRGlyZWN0aW9uLmxlZnQsIERpcmVjdGlvbi5yaWdodF0uaW5jbHVkZXMoZGlyZWN0aW9uKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gLXNoYXBlUHJvcGVydHkud2lkdGggLyAyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2Zmc2V0ID0gLXNoYXBlUHJvcGVydHkuaGVpZ2h0IC8gMjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2ZWN0b3JQb2ludCA9IGdldFBvaW50QnlWZWN0b3IocG9pbnQsIHZlY3Rvciwgb2Zmc2V0KTtcbiAgICAgICAgY29uc3QgcG9pbnRzID0gZ2V0UG9pbnRzQnlDZW50ZXJQb2ludCh2ZWN0b3JQb2ludCwgc2hhcGVQcm9wZXJ0eS53aWR0aCwgc2hhcGVQcm9wZXJ0eS5oZWlnaHQpO1xuICAgICAgICByZXR1cm4gaW5zZXJ0R2VvbWV0cnkoYm9hcmQsIHBvaW50cywgc2hhcGUpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRUZXh0ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBwb2ludHM6IFtQb2ludCwgUG9pbnRdLCB0ZXh0OiBzdHJpbmcgfCBFbGVtZW50ID0gJ+aWh+acrCcpID0+IHtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0gY3JlYXRlRGVmYXVsdFRleHQoYm9hcmQsIHBvaW50cyk7XG4gICAgaW5zZXJ0RWxlbWVudChib2FyZCwgbmV3RWxlbWVudCk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzaXplR2VvbWV0cnkgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50czogW1BvaW50LCBQb2ludF0sIHRleHRIZWlnaHQ6IG51bWJlciwgcGF0aDogUGF0aCkgPT4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZVBvaW50cyA9IG5vcm1hbGl6ZVNoYXBlUG9pbnRzKHBvaW50cyk7XG4gICAgY29uc3QgZWxlbWVudCA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIHBhdGgpO1xuICAgIGNvbnN0IG5ld0hlaWdodCA9IHRleHRIZWlnaHQgLyBib2FyZC52aWV3cG9ydC56b29tO1xuICAgIGNvbnN0IG5ld1Byb3BlcnRpZXMgPSB7IHBvaW50czogbm9ybWFsaXplUG9pbnRzLCB0ZXh0SGVpZ2h0OiBuZXdIZWlnaHQgfTtcbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc1RleHQoZWxlbWVudCkgJiYgZWxlbWVudC5hdXRvU2l6ZSkge1xuICAgICAgICAobmV3UHJvcGVydGllcyBhcyBQYXJ0aWFsPFBsYWl0VGV4dD4pLmF1dG9TaXplID0gZmFsc2U7XG4gICAgfVxuICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgbmV3UHJvcGVydGllcywgcGF0aCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc3dpdGNoR2VvbWV0cnlTaGFwZSA9IChib2FyZDogUGxhaXRCb2FyZCwgc2hhcGU6IEdlb21ldHJ5U2hhcGVzKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIGNvbnN0IHJlZnM6IHsgcHJvcGVydHk6IFBhcnRpYWw8UGxhaXRMaW5lPjsgcGF0aDogUGF0aCB9W10gPSBbXTtcbiAgICBzZWxlY3RlZEVsZW1lbnRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkoaXRlbSkgJiYgIVBsYWl0RHJhd0VsZW1lbnQuaXNUZXh0KGl0ZW0pKSB7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgaXRlbSk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgc2hhcGUgfSwgcGF0aCk7XG4gICAgICAgICAgICBjb2xsZWN0TGluZVVwZGF0ZWRSZWZzQnlHZW9tZXRyeShib2FyZCwgeyAuLi5pdGVtLCBzaGFwZSB9LCByZWZzKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChyZWZzLmxlbmd0aCkge1xuICAgICAgICByZWZzLmZvckVhY2gocmVmID0+IHtcbiAgICAgICAgICAgIERyYXdUcmFuc2Zvcm1zLnJlc2l6ZUxpbmUoYm9hcmQsIHJlZi5wcm9wZXJ0eSwgcmVmLnBhdGgpO1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { insertText, insertGeometry, resizeGeometry,
|
|
1
|
+
import { insertText, insertGeometry, resizeGeometry, switchGeometryShape, insertGeometryByVector } from './geometry';
|
|
2
2
|
import { setText, setTextSize } from './geometry-text';
|
|
3
3
|
import { insertImage } from './image';
|
|
4
|
-
import { removeLineText, resizeLine, setLineMark, setLineTexts } from './line';
|
|
4
|
+
import { connectLineToGeometry, removeLineText, resizeLine, setLineMark, setLineTexts } from './line';
|
|
5
5
|
export const DrawTransforms = {
|
|
6
6
|
setText,
|
|
7
7
|
insertGeometry,
|
|
@@ -13,6 +13,8 @@ export const DrawTransforms = {
|
|
|
13
13
|
removeLineText,
|
|
14
14
|
setLineMark,
|
|
15
15
|
insertImage,
|
|
16
|
-
|
|
16
|
+
switchGeometryShape,
|
|
17
|
+
connectLineToGeometry,
|
|
18
|
+
insertGeometryByVector
|
|
17
19
|
};
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy90cmFuc2Zvcm1zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNySCxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUV0RyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDMUIsT0FBTztJQUNQLGNBQWM7SUFDZCxjQUFjO0lBQ2QsVUFBVTtJQUNWLFdBQVc7SUFDWCxVQUFVO0lBQ1YsWUFBWTtJQUNaLGNBQWM7SUFDZCxXQUFXO0lBQ1gsV0FBVztJQUNYLG1CQUFtQjtJQUNuQixxQkFBcUI7SUFDckIsc0JBQXNCO0NBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnNlcnRUZXh0LCBpbnNlcnRHZW9tZXRyeSwgcmVzaXplR2VvbWV0cnksIHN3aXRjaEdlb21ldHJ5U2hhcGUsIGluc2VydEdlb21ldHJ5QnlWZWN0b3IgfSBmcm9tICcuL2dlb21ldHJ5JztcbmltcG9ydCB7IHNldFRleHQsIHNldFRleHRTaXplIH0gZnJvbSAnLi9nZW9tZXRyeS10ZXh0JztcbmltcG9ydCB7IGluc2VydEltYWdlIH0gZnJvbSAnLi9pbWFnZSc7XG5pbXBvcnQgeyBjb25uZWN0TGluZVRvR2VvbWV0cnksIHJlbW92ZUxpbmVUZXh0LCByZXNpemVMaW5lLCBzZXRMaW5lTWFyaywgc2V0TGluZVRleHRzIH0gZnJvbSAnLi9saW5lJztcblxuZXhwb3J0IGNvbnN0IERyYXdUcmFuc2Zvcm1zID0ge1xuICAgIHNldFRleHQsXG4gICAgaW5zZXJ0R2VvbWV0cnksXG4gICAgcmVzaXplR2VvbWV0cnksXG4gICAgaW5zZXJ0VGV4dCxcbiAgICBzZXRUZXh0U2l6ZSxcbiAgICByZXNpemVMaW5lLFxuICAgIHNldExpbmVUZXh0cyxcbiAgICByZW1vdmVMaW5lVGV4dCxcbiAgICBzZXRMaW5lTWFyayxcbiAgICBpbnNlcnRJbWFnZSxcbiAgICBzd2l0Y2hHZW9tZXRyeVNoYXBlLFxuICAgIGNvbm5lY3RMaW5lVG9HZW9tZXRyeSxcbiAgICBpbnNlcnRHZW9tZXRyeUJ5VmVjdG9yXG59O1xuIl19
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { PlaitBoard, Transforms } from '@plait/core';
|
|
2
|
-
import { LineHandleKey, MemorizeKey } from '../interfaces';
|
|
1
|
+
import { Path, PlaitBoard, Transforms, findElements } from '@plait/core';
|
|
2
|
+
import { LineHandleKey, MemorizeKey, PlaitDrawElement, PlaitLine } from '../interfaces';
|
|
3
3
|
import { memorizeLatest } from '@plait/common';
|
|
4
|
+
import { getLinePoints, transformPointToConnection } from '../utils';
|
|
4
5
|
export const resizeLine = (board, options, path) => {
|
|
5
6
|
Transforms.setNode(board, options, path);
|
|
6
7
|
};
|
|
@@ -22,4 +23,63 @@ export const setLineMark = (board, element, handleKey, marker) => {
|
|
|
22
23
|
memorizeLatest(MemorizeKey.line, handleKey, marker);
|
|
23
24
|
Transforms.setNode(board, { [handleKey]: handle }, path);
|
|
24
25
|
};
|
|
25
|
-
|
|
26
|
+
export const collectLineUpdatedRefsByGeometry = (board, geometry, refs) => {
|
|
27
|
+
const lines = findElements(board, {
|
|
28
|
+
match: (element) => {
|
|
29
|
+
if (PlaitDrawElement.isLine(element)) {
|
|
30
|
+
return element.source.boundId === geometry.id || element.target.boundId === geometry.id;
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
},
|
|
34
|
+
recursion: element => true
|
|
35
|
+
});
|
|
36
|
+
if (lines.length) {
|
|
37
|
+
lines.forEach(line => {
|
|
38
|
+
const isSourceBound = line.source.boundId === geometry.id;
|
|
39
|
+
const handle = isSourceBound ? 'source' : 'target';
|
|
40
|
+
const object = { ...line[handle] };
|
|
41
|
+
const linePoints = getLinePoints(board, line);
|
|
42
|
+
const point = isSourceBound ? linePoints[0] : linePoints[linePoints.length - 1];
|
|
43
|
+
object.connection = transformPointToConnection(board, point, geometry);
|
|
44
|
+
const path = PlaitBoard.findPath(board, line);
|
|
45
|
+
const index = refs.findIndex(obj => Path.equals(obj.path, path));
|
|
46
|
+
if (index === -1) {
|
|
47
|
+
refs.push({
|
|
48
|
+
property: {
|
|
49
|
+
[handle]: object
|
|
50
|
+
},
|
|
51
|
+
path
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
refs[index].property = { ...refs[index].property, [handle]: object };
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
export const connectLineToGeometry = (board, lineElement, handle, geometryElement) => {
|
|
61
|
+
const linePoints = PlaitLine.getPoints(board, lineElement);
|
|
62
|
+
const point = handle === LineHandleKey.source ? linePoints[0] : linePoints[linePoints.length - 1];
|
|
63
|
+
const connection = transformPointToConnection(board, point, geometryElement, Math.max(geometryElement.width, geometryElement.height));
|
|
64
|
+
if (connection) {
|
|
65
|
+
let source = lineElement.source;
|
|
66
|
+
let target = lineElement.target;
|
|
67
|
+
if (handle === LineHandleKey.source) {
|
|
68
|
+
source = {
|
|
69
|
+
...source,
|
|
70
|
+
boundId: geometryElement.id,
|
|
71
|
+
connection
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
target = {
|
|
76
|
+
...target,
|
|
77
|
+
boundId: geometryElement.id,
|
|
78
|
+
connection
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
const path = PlaitBoard.findPath(board, lineElement);
|
|
82
|
+
resizeLine(board, { source, target }, path);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3RyYW5zZm9ybXMvbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBa0MsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6RyxPQUFPLEVBRUgsYUFBYSxFQUdiLFdBQVcsRUFDWCxnQkFBZ0IsRUFFaEIsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVyRSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQTJCLEVBQUUsSUFBVSxFQUFFLEVBQUU7SUFDckYsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBa0IsRUFBRSxLQUFpQixFQUFFLEVBQUU7SUFDckYsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMvQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQWtCLEVBQUUsS0FBYSxFQUFFLEVBQUU7SUFDbkYsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsTUFBTSxLQUFL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LENBQUM7UUFDNUMsSUFBSSxNQUFNLEdBQWUsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUM1QyxJQUFJLE1BQU0sS0FBSyxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQ2pDLE1BQU0sR0FBRztnQkFDTCxHQUFHLE1BQU07Z0JBQ1QsT0FBTyxFQUFFLGVBQWUsQ0FBQyxFQUFFO2dCQUMzQixVQUFVO2FBQ2IsQ0FBQztTQUNMO2FBQU07WUFDSCxNQUFNLEdBQUc7Z0JBQ0wsR0FBRyxNQUFNO2dCQUNULE9BQU8sRUFBRSxlQUFlLENBQUMsRUFBRTtnQkFDM0IsVUFBVTthQUNiLENBQUM7U0FDTDtRQUNELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3JELFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDL0M7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXRoLCBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFBvaW50T2ZSZWN0YW5nbGUsIFRyYW5zZm9ybXMsIGZpbmRFbGVtZW50cyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7XG4gICAgTGluZUhhbmRsZSxcbiAgICBMaW5lSGFuZGxlS2V5LFxuICAgIExpbmVNYXJrZXJUeXBlLFxuICAgIExpbmVUZXh0LFxuICAgIE1lbW9yaXplS2V5LFxuICAgIFBsYWl0RHJhd0VsZW1lbnQsXG4gICAgUGxhaXRHZW9tZXRyeSxcbiAgICBQbGFpdExpbmVcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBtZW1vcml6ZUxhdGVzdCB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgZ2V0TGluZVBvaW50cywgdHJhbnNmb3JtUG9pbnRUb0Nvbm5lY3Rpb24gfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCByZXNpemVMaW5lID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBvcHRpb25zOiBQYXJ0aWFsPFBsYWl0TGluZT4sIHBhdGg6IFBhdGgpID0+IHtcbiAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIG9wdGlvbnMsIHBhdGgpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldExpbmVUZXh0cyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lLCB0ZXh0czogTGluZVRleHRbXSkgPT4ge1xuICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgdGV4dHMgfSwgcGF0aCk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlTGluZVRleHQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCB0ZXh0cyA9IGVsZW1lbnQudGV4dHM/Lmxlbmd0aCA/IFsuLi5lbGVtZW50LnRleHRzXSA6IFtdO1xuICAgIGNvbnN0IG5ld1RleHRzID0gWy4uLnRleHRzXTtcbiAgICBuZXdUZXh0cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyB0ZXh0czogbmV3VGV4dHMgfSwgcGF0aCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0TGluZU1hcmsgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSwgaGFuZGxlS2V5OiBMaW5lSGFuZGxlS2V5LCBtYXJrZXI6IExpbmVNYXJrZXJUeXBlKSA9PiB7XG4gICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGxldCBoYW5kbGUgPSBoYW5kbGVLZXkgPT09IExpbmVIYW5kbGVLZXkuc291cmNlID8gZWxlbWVudC5zb3VyY2UgOiBlbGVtZW50LnRhcmdldDtcbiAgICBoYW5kbGUgPSB7IC4uLmhhbmRsZSwgbWFya2VyIH07XG4gICAgbWVtb3JpemVMYXRlc3QoTWVtb3JpemVLZXkubGluZSwgaGFuZGxlS2V5LCBtYXJrZXIpO1xuICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBbaGFuZGxlS2V5XTogaGFuZGxlIH0sIHBhdGgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbGxlY3RMaW5lVXBkYXRlZFJlZnNCeUdlb21ldHJ5ID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIGdlb21ldHJ5OiBQbGFpdEdlb21ldHJ5LFxuICAgIHJlZnM6IHsgcHJvcGVydHk6IFBhcnRpYWw8UGxhaXRMaW5lPjsgcGF0aDogUGF0aCB9W11cbikgPT4ge1xuICAgIGNvbnN0IGxpbmVzID0gZmluZEVsZW1lbnRzKGJvYXJkLCB7XG4gICAgICAgIG1hdGNoOiAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0xpbmUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudC5zb3VyY2UuYm91bmRJZCA9PT0gZ2VvbWV0cnkuaWQgfHwgZWxlbWVudC50YXJnZXQuYm91bmRJZCA9PT0gZ2VvbWV0cnkuaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIHJlY3Vyc2lvbjogZWxlbWVudCA9PiB0cnVlXG4gICAgfSkgYXMgUGxhaXRMaW5lW107XG4gICAgaWYgKGxpbmVzLmxlbmd0aCkge1xuICAgICAgICBsaW5lcy5mb3JFYWNoKGxpbmUgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNTb3VyY2VCb3VuZCA9IGxpbmUuc291cmNlLmJvdW5kSWQgPT09IGdlb21ldHJ5LmlkO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlID0gaXNTb3VyY2VCb3VuZCA/ICdzb3VyY2UnIDogJ3RhcmdldCc7XG4gICAgICAgICAgICBjb25zdCBvYmplY3QgPSB7IC4uLmxpbmVbaGFuZGxlXSB9O1xuICAgICAgICAgICAgY29uc3QgbGluZVBvaW50cyA9IGdldExpbmVQb2ludHMoYm9hcmQsIGxpbmUpO1xuICAgICAgICAgICAgY29uc3QgcG9pbnQgPSBpc1NvdXJjZUJvdW5kID8gbGluZVBvaW50c1swXSA6IGxpbmVQb2ludHNbbGluZVBvaW50cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIG9iamVjdC5jb25uZWN0aW9uID0gdHJhbnNmb3JtUG9pbnRUb0Nvbm5lY3Rpb24oYm9hcmQsIHBvaW50LCBnZW9tZXRyeSk7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgbGluZSk7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHJlZnMuZmluZEluZGV4KG9iaiA9PiBQYXRoLmVxdWFscyhvYmoucGF0aCwgcGF0aCkpO1xuICAgICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHJlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBbaGFuZGxlXTogb2JqZWN0XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHBhdGhcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVmc1tpbmRleF0ucHJvcGVydHkgPSB7IC4uLnJlZnNbaW5kZXhdLnByb3BlcnR5LCBbaGFuZGxlXTogb2JqZWN0IH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjb25uZWN0TGluZVRvR2VvbWV0cnkgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGxpbmVFbGVtZW50OiBQbGFpdExpbmUsIGhhbmRsZTogTGluZUhhbmRsZUtleSwgZ2VvbWV0cnlFbGVtZW50OiBQbGFpdEdlb21ldHJ5KSA9PiB7XG4gICAgY29uc3QgbGluZVBvaW50cyA9IFBsYWl0TGluZS5nZXRQb2ludHMoYm9hcmQsIGxpbmVFbGVtZW50KTtcbiAgICBjb25zdCBwb2ludCA9IGhhbmRsZSA9PT0gTGluZUhhbmRsZUtleS5zb3VyY2UgPyBsaW5lUG9pbnRzWzBdIDogbGluZVBvaW50c1tsaW5lUG9pbnRzLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGNvbm5lY3Rpb246IFBvaW50T2ZSZWN0YW5nbGUgPSB0cmFuc2Zvcm1Qb2ludFRvQ29ubmVjdGlvbihcbiAgICAgICAgYm9hcmQsXG4gICAgICAgIHBvaW50LFxuICAgICAgICBnZW9tZXRyeUVsZW1lbnQsXG4gICAgICAgIE1hdGgubWF4KGdlb21ldHJ5RWxlbWVudC53aWR0aCwgZ2VvbWV0cnlFbGVtZW50LmhlaWdodClcbiAgICApO1xuICAgIGlmIChjb25uZWN0aW9uKSB7XG4gICAgICAgIGxldCBzb3VyY2U6IExpbmVIYW5kbGUgPSBsaW5lRWxlbWVudC5zb3VyY2U7XG4gICAgICAgIGxldCB0YXJnZXQ6IExpbmVIYW5kbGUgPSBsaW5lRWxlbWVudC50YXJnZXQ7XG4gICAgICAgIGlmIChoYW5kbGUgPT09IExpbmVIYW5kbGVLZXkuc291cmNlKSB7XG4gICAgICAgICAgICBzb3VyY2UgPSB7XG4gICAgICAgICAgICAgICAgLi4uc291cmNlLFxuICAgICAgICAgICAgICAgIGJvdW5kSWQ6IGdlb21ldHJ5RWxlbWVudC5pZCxcbiAgICAgICAgICAgICAgICBjb25uZWN0aW9uXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGFyZ2V0ID0ge1xuICAgICAgICAgICAgICAgIC4uLnRhcmdldCxcbiAgICAgICAgICAgICAgICBib3VuZElkOiBnZW9tZXRyeUVsZW1lbnQuaWQsXG4gICAgICAgICAgICAgICAgY29ubmVjdGlvblxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgbGluZUVsZW1lbnQpO1xuICAgICAgICByZXNpemVMaW5lKGJvYXJkLCB7IHNvdXJjZSwgdGFyZ2V0IH0sIHBhdGgpO1xuICAgIH1cbn07XG4iXX0=
|